From 5b3e02b447fb3b7f19ed26abd040d2e84b52ab6a Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Fri, 7 Jun 2024 17:01:46 +0800
Subject: [PATCH 1/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/clue/clueField.js | 40 ++++
src/api/clue/clueGetSet.js | 21 ++
src/api/clue/orderField.js | 40 ++++
src/api/clue/source.js | 31 +++
src/config/axios/service.ts | 2 +-
src/views/Clue/Set/Comp/ClueGet.vue | 86 +++----
src/views/Clue/Set/Comp/ClueSend.vue | 65 ++++--
src/views/Clue/Set/Comp/ClueSource.vue | 77 ++++---
src/views/Clue/Set/Comp/DialogSource.vue | 37 +--
src/views/Clue/Set/Comp/FieldClue.vue | 216 +++++++++++++-----
src/views/Clue/Set/Comp/FieldOrder.vue | 216 +++++++++++++-----
src/views/Clue/Set/index.vue | 45 ++--
src/views/Clue/Skill/index.vue | 28 ++-
.../Inventory/Comp/InventoryRecord.vue | 8 +-
.../MiniMall/Inventory/Comp/Warehouse.vue | 9 +-
15 files changed, 682 insertions(+), 239 deletions(-)
create mode 100644 src/api/clue/clueField.js
create mode 100644 src/api/clue/clueGetSet.js
create mode 100644 src/api/clue/orderField.js
create mode 100644 src/api/clue/source.js
diff --git a/src/api/clue/clueField.js b/src/api/clue/clueField.js
new file mode 100644
index 0000000..2d386a2
--- /dev/null
+++ b/src/api/clue/clueField.js
@@ -0,0 +1,40 @@
+import request from '@/config/axios'
+
+// 创建
+export const createField = (data) => {
+ return request.post({ url: '/admin-api/crm/clue-param/create', data })
+}
+
+// 更新
+export const updateField = (data) => {
+ return request.put({ url: '/admin-api/crm/clue-param/update', data })
+}
+
+// 删除
+export const deleteField = (id) => {
+ return request.delete({ url: `/admin-api/crm/clue-param/delete?id=${id}` })
+}
+
+// 获得
+export const getField = (id) => {
+ return request.get({ url: `/admin-api/crm/clue-param/get?id=${id}` })
+}
+
+// 获得精简信息列表
+export const getSimpleFieldList = () => {
+ return request.get({ url: '/admin-api/crm/clue-param/simple-list' })
+}
+
+// 获取自定义字段
+export const getDiyFieldList = () => {
+ return request.get({ url: '/admin-api/crm/clue-param/get-diy-param' })
+}
+
+// 状态修改
+export const updateFieldStatus = (signParamId, status) => {
+ const data = {
+ signParamId,
+ status
+ }
+ return request.put({ url: '/admin-api/crm/clue-param/status/update', data: data })
+}
diff --git a/src/api/clue/clueGetSet.js b/src/api/clue/clueGetSet.js
new file mode 100644
index 0000000..989dbe2
--- /dev/null
+++ b/src/api/clue/clueGetSet.js
@@ -0,0 +1,21 @@
+import request from '@/config/axios'
+
+// 线索获取规则
+export const getClueGainRuleList = () => {
+ return request.get({ url: '/admin-api/crm/sch-clue-gain-rule/list' })
+}
+
+// 删除
+export const deleteClueGainRule = (id) => {
+ return request.delete({ url: `/admin-api/crm/sch-clue-gain-rule/delete?id=${id}` })
+}
+
+// 线索规则
+export const getClueDistributeRuleList = () => {
+ return request.get({ url: '/admin-api/crm/sch-clue-gain-rule/list' })
+}
+
+// 删除
+export const deleteClueDistributeRule = (id) => {
+ return request.delete({ url: `/admin-api/crm/sch-clue-gain-rule/delete?id=${id}` })
+}
diff --git a/src/api/clue/orderField.js b/src/api/clue/orderField.js
new file mode 100644
index 0000000..23dd285
--- /dev/null
+++ b/src/api/clue/orderField.js
@@ -0,0 +1,40 @@
+import request from '@/config/axios'
+
+// 创建
+export const createField = (data) => {
+ return request.post({ url: '/admin-api/crm/sign-param/create', data })
+}
+
+// 更新
+export const updateField = (data) => {
+ return request.put({ url: '/admin-api/crm/sign-param/update', data })
+}
+
+// 删除
+export const deleteField = (id) => {
+ return request.delete({ url: `/admin-api/crm/sign-param/delete?id=${id}` })
+}
+
+// 获得
+export const getField = (id) => {
+ return request.get({ url: `/admin-api/crm/sign-param/get?id=${id}` })
+}
+
+// 获得精简信息列表
+export const getSimpleFieldList = () => {
+ return request.get({ url: '/admin-api/crm/sign-param/simple-list' })
+}
+
+// 获取自定义字段
+export const getDiyFieldList = () => {
+ return request.get({ url: '/admin-api/crm/sign-param/get-diy-param' })
+}
+
+// 状态修改
+export const updateFieldStatus = (signParamId, status) => {
+ const data = {
+ signParamId,
+ status
+ }
+ return request.put({ url: '/admin-api/crm/sign-param/status/update', data: data })
+}
diff --git a/src/api/clue/source.js b/src/api/clue/source.js
new file mode 100644
index 0000000..d0d3890
--- /dev/null
+++ b/src/api/clue/source.js
@@ -0,0 +1,31 @@
+import request from '@/config/axios'
+
+// 查询(精简)列表
+export const getSimpleSourceList = async () => {
+ return await request.get({ url: '/admin-api/crm/source/list-all-simple' })
+}
+
+// 查询列表
+export const getSourcePage = async (params) => {
+ return await request.get({ url: '/admin-api/crm/source/list', params })
+}
+
+// 查询详情
+export const getSource = async (id) => {
+ return await request.get({ url: '/admin-api/crm/source/get?id=' + id })
+}
+
+// 新增
+export const createSource = async (data) => {
+ return await request.post({ url: '/admin-api/crm/source/create', data: data })
+}
+
+// 修改
+export const updateSource = async (params) => {
+ return await request.put({ url: '/admin-api/crm/source/update', data: params })
+}
+
+// 删除
+export const deleteSource = async (id) => {
+ return await request.delete({ url: '/admin-api/crm/source/delete?id=' + id })
+}
diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts
index 9453910..bca3e1f 100644
--- a/src/config/axios/service.ts
+++ b/src/config/axios/service.ts
@@ -179,7 +179,7 @@ service.interceptors.response.use(
})
}
} else if (code === 500) {
- ElMessage.error(t('sys.api.errMsg500'))
+ ElMessage.error(t(msg || 'sys.api.errMsg500'))
return Promise.reject(new Error(msg))
} else if (code === 901) {
ElMessage.error({
diff --git a/src/views/Clue/Set/Comp/ClueGet.vue b/src/views/Clue/Set/Comp/ClueGet.vue
index 038a7e2..9e33da0 100644
--- a/src/views/Clue/Set/Comp/ClueGet.vue
+++ b/src/views/Clue/Set/Comp/ClueGet.vue
@@ -1,10 +1,10 @@
-
+
-
+
@@ -24,14 +24,14 @@
:value="item.value"
/>
- {{ row.resourceName }}
+ {{ row.channel }}
-
+
-
+
@@ -49,56 +49,60 @@
-
diff --git a/src/views/Clue/Set/Comp/ClueSend.vue b/src/views/Clue/Set/Comp/ClueSend.vue
index 161f7ce..358973c 100644
--- a/src/views/Clue/Set/Comp/ClueSend.vue
+++ b/src/views/Clue/Set/Comp/ClueSend.vue
@@ -2,22 +2,33 @@
-
-
-
-
+
+
+
+
+
+ {{ ['在职', '离职'][row.status] }}
+
+
@@ -65,16 +76,27 @@
-
diff --git a/src/views/Clue/Set/Comp/ClueSource.vue b/src/views/Clue/Set/Comp/ClueSource.vue
index 3968c0f..e27a7a2 100644
--- a/src/views/Clue/Set/Comp/ClueSource.vue
+++ b/src/views/Clue/Set/Comp/ClueSource.vue
@@ -1,9 +1,9 @@
-
+
-
+
-
-
+
+
+
+
+
+
-
- 修改
- 新增
- 删除
+
+ 修改
+ 新增
+ 删除
-
diff --git a/src/views/Clue/Set/Comp/DialogSource.vue b/src/views/Clue/Set/Comp/DialogSource.vue
index 524f85e..9c3c337 100644
--- a/src/views/Clue/Set/Comp/DialogSource.vue
+++ b/src/views/Clue/Set/Comp/DialogSource.vue
@@ -7,14 +7,20 @@
:rules="formRules"
label-width="80px"
>
-
+
-
-
+
+
+
+
+
+ 启用
+ 禁用
+
diff --git a/src/views/Clue/Set/Comp/FieldOrder.vue b/src/views/Clue/Set/Comp/FieldOrder.vue
index dae2103..2a8dbf9 100644
--- a/src/views/Clue/Set/Comp/FieldOrder.vue
+++ b/src/views/Clue/Set/Comp/FieldOrder.vue
@@ -2,45 +2,55 @@
新增属性
-
-
-
+
+
+
+
+
+ {{ typeOptions.find((it) => it.value == row.component).label }}
+
+
+
- 删除
-
-
-
-
+
+
+
+
-
+
+
+
+ 属性编码
+
+
+
+
+
+
-
新增选项
+
新增选项
-
- 删除
+
+ 删除
- 保存
+ 保存
-
diff --git a/src/views/Clue/Set/index.vue b/src/views/Clue/Set/index.vue
index f50f702..9718b0d 100644
--- a/src/views/Clue/Set/index.vue
+++ b/src/views/Clue/Set/index.vue
@@ -1,26 +1,34 @@
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
@@ -30,10 +38,11 @@
import FieldClue from './Comp/FieldClue.vue'
import FieldOrder from './Comp/FieldOrder.vue'
import ClueSource from './Comp/ClueSource.vue'
-import ClueGet from './Comp/ClueGet.vue'
-import ClueSend from './Comp/ClueSend.vue'
+// import ClueGet from './Comp/ClueGet.vue'
+// import ClueSend from './Comp/ClueSend.vue'
import MsgSend from './Comp/MsgSend.vue'
import GeneralSet from './Comp/GeneralSet.vue'
+import { checkPermi } from '@/utils/permission'
const tabIndex = ref(0)
diff --git a/src/views/Clue/Skill/index.vue b/src/views/Clue/Skill/index.vue
index f2c2a55..927e23f 100644
--- a/src/views/Clue/Skill/index.vue
+++ b/src/views/Clue/Skill/index.vue
@@ -11,9 +11,13 @@
/>
- 搜索
- 重置
- 新增
+
+ 搜索
+
+ 重置
+
+ 新增
+
@@ -27,8 +31,22 @@
- 修改
- 删除
+
+ 修改
+
+
+ 删除
+
diff --git a/src/views/MiniMall/Inventory/Comp/InventoryRecord.vue b/src/views/MiniMall/Inventory/Comp/InventoryRecord.vue
index 5d458e8..fb42853 100644
--- a/src/views/MiniMall/Inventory/Comp/InventoryRecord.vue
+++ b/src/views/MiniMall/Inventory/Comp/InventoryRecord.vue
@@ -51,8 +51,8 @@
-
-
+
+
{{ ['', '入库', '出库'][row.changeType] }}
@@ -61,8 +61,8 @@
-
-
+
+
修改
-
+
删除
From e35a32e985a2ebf1e6a3bf4a33d656c64d557c7c Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Tue, 11 Jun 2024 20:29:30 +0800
Subject: [PATCH 2/7] =?UTF-8?q?=E4=B8=8A=E4=BC=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/clue/clueCache.js | 11 +++
src/api/clue/index.js | 36 +++++++
src/components/Form/src/Form.vue | 8 +-
.../Form/src/components/useRenderCheckbox.tsx | 6 +-
.../Form/src/components/useRenderRadio.tsx | 6 +-
.../Form/src/components/useRenderSelect.tsx | 10 +-
src/components/SSTable/index.vue | 73 ++++++---------
src/components/Search/src/Search.vue | 87 ++++++++---------
src/hooks/web/useCrudSchemas.ts | 6 +-
src/utils/index.ts | 11 +++
src/views/Clue/Pool/Comp/DrawerClue.vue | 27 +++---
src/views/Clue/Pool/index.vue | 93 +++++++++++++++----
12 files changed, 233 insertions(+), 141 deletions(-)
create mode 100644 src/api/clue/clueCache.js
create mode 100644 src/api/clue/index.js
diff --git a/src/api/clue/clueCache.js b/src/api/clue/clueCache.js
new file mode 100644
index 0000000..9c9349e
--- /dev/null
+++ b/src/api/clue/clueCache.js
@@ -0,0 +1,11 @@
+import request from '@/config/axios'
+
+// 查询用户配置
+export const getClueCache = async (params) => {
+ return await request.get({ url: '/admin-api/crm/param-user-setting/get-by-user', params })
+}
+
+// 保存用户配置
+export const setClueCache = async (data) => {
+ return await request.post({ url: '/admin-api/crm/param-user-setting/save', data })
+}
diff --git a/src/api/clue/index.js b/src/api/clue/index.js
new file mode 100644
index 0000000..c142494
--- /dev/null
+++ b/src/api/clue/index.js
@@ -0,0 +1,36 @@
+import request from '@/config/axios'
+
+// 查询(精简)列表
+export const getSimpleClueList = async () => {
+ return await request.get({ url: '/admin-api/crm/sch-clue/list-all-simple' })
+}
+
+// 查询列表
+export const getCluePage = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sch-clue/page', params })
+}
+
+// 查询详情
+export const getClue = async (id) => {
+ return await request.get({ url: '/admin-api/crm/sch-clue/get?id=' + id })
+}
+
+// 新增
+export const createClue = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sch-clue/create', data: data })
+}
+
+// 修改
+export const updateClue = async (params) => {
+ return await request.put({ url: '/admin-api/crm/sch-clue/update', data: params })
+}
+
+// 删除
+export const deleteClue = async (id) => {
+ return await request.delete({ url: '/admin-api/crm/sch-clue/delete?id=' + id })
+}
+
+// 通用查询数量
+export const getClueCount = async () => {
+ return await request.get({ url: '/admin-api/crm/sch-clue/get-clue-num' })
+}
diff --git a/src/components/Form/src/Form.vue b/src/components/Form/src/Form.vue
index 4c2a1b3..7fc5dd1 100644
--- a/src/components/Form/src/Form.vue
+++ b/src/components/Form/src/Form.vue
@@ -181,11 +181,7 @@ export default defineComponent({
const slotsMap: Recordable = {
...setItemComponentSlots(slots, item?.componentProps?.slots, item.field)
}
- if (
- item?.component !== 'SelectV2' &&
- item?.component !== 'Cascader' &&
- item?.componentProps?.options
- ) {
+ if (item?.component !== 'SelectV2' && item?.component !== 'Cascader' && item?.options) {
slotsMap.default = () => renderOptions(item)
}
@@ -236,6 +232,8 @@ export default defineComponent({
vModel={formModel.value[item.field]}
{...(autoSetPlaceholder && setTextPlaceholder(item))}
{...setComponentProps(item)}
+ format={item.component == 'DatePicker' ? 'YYYY-MM-DD' : null}
+ value-format={item.component == 'DatePicker' ? 'YYYY-MM-DD' : null}
style={baseSty + item.componentProps?.style}
// eslint-disable-next-line prettier/prettier
{...(notRenderOptions.includes(item?.component as string) && item?.componentProps?.options
diff --git a/src/components/Form/src/components/useRenderCheckbox.tsx b/src/components/Form/src/components/useRenderCheckbox.tsx
index e151839..c3e71fb 100644
--- a/src/components/Form/src/components/useRenderCheckbox.tsx
+++ b/src/components/Form/src/components/useRenderCheckbox.tsx
@@ -5,12 +5,12 @@ import { defineComponent } from 'vue'
export const useRenderCheckbox = () => {
const renderCheckboxOptions = (item: FormSchema) => {
// 如果有别名,就取别名
- const labelAlias = item?.componentProps?.optionsAlias?.labelField
- const valueAlias = item?.componentProps?.optionsAlias?.valueField
+ const labelAlias = item?.componentProps?.optionsAlias?.labelField || 'id'
+ const valueAlias = item?.componentProps?.optionsAlias?.valueField || 'name'
const Com = (item.component === 'Checkbox' ? ElCheckbox : ElCheckboxButton) as ReturnType<
typeof defineComponent
>
- return item?.componentProps?.options?.map((option) => {
+ return item?.options?.map((option) => {
const { ...other } = option
return (
diff --git a/src/components/Form/src/components/useRenderRadio.tsx b/src/components/Form/src/components/useRenderRadio.tsx
index d1005ca..c3aae80 100644
--- a/src/components/Form/src/components/useRenderRadio.tsx
+++ b/src/components/Form/src/components/useRenderRadio.tsx
@@ -5,12 +5,12 @@ import { defineComponent } from 'vue'
export const useRenderRadio = () => {
const renderRadioOptions = (item: FormSchema) => {
// 如果有别名,就取别名
- const labelAlias = item?.componentProps?.optionsAlias?.labelField
- const valueAlias = item?.componentProps?.optionsAlias?.valueField
+ const labelAlias = item?.componentProps?.optionsAlias?.labelField || 'id'
+ const valueAlias = item?.componentProps?.optionsAlias?.valueField || 'name'
const Com = (item.component === 'Radio' ? ElRadio : ElRadioButton) as ReturnType<
typeof defineComponent
>
- return item?.componentProps?.options?.map((option) => {
+ return item?.options?.map((option) => {
const { ...other } = option
return (
diff --git a/src/components/Form/src/components/useRenderSelect.tsx b/src/components/Form/src/components/useRenderSelect.tsx
index 59b72e6..f222785 100644
--- a/src/components/Form/src/components/useRenderSelect.tsx
+++ b/src/components/Form/src/components/useRenderSelect.tsx
@@ -9,12 +9,12 @@ export const useRenderSelect = (slots: Slots) => {
const renderSelectOptions = (item: FormSchema) => {
// 如果有别名,就取别名
const labelAlias = item?.componentProps?.optionsAlias?.labelField
- return item?.componentProps?.options?.map((option) => {
- if (option?.options?.length) {
+ return item?.options?.map((option) => {
+ if (option?.length) {
return (
{() => {
- return option?.options?.map((v) => {
+ return option?.map((v) => {
return renderSelectOptionItem(item, v)
})
}}
@@ -29,8 +29,8 @@ export const useRenderSelect = (slots: Slots) => {
// 渲染 select option item
const renderSelectOptionItem = (item: FormSchema, option: ComponentOptions) => {
// 如果有别名,就取别名
- const labelAlias = item?.componentProps?.optionsAlias?.labelField
- const valueAlias = item?.componentProps?.optionsAlias?.valueField
+ const labelAlias = item?.componentProps?.optionsAlias?.labelField || 'id'
+ const valueAlias = item?.componentProps?.optionsAlias?.valueField || 'name'
const { label, value, ...other } = option
diff --git a/src/components/SSTable/index.vue b/src/components/SSTable/index.vue
index bcdfeb0..5440bf7 100644
--- a/src/components/SSTable/index.vue
+++ b/src/components/SSTable/index.vue
@@ -28,7 +28,7 @@
@end="onDragEnd"
>
-
+
{{ item.label }}
@@ -48,9 +48,8 @@
From cff4280705328f2cda4788e776d80e35149766e9 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Thu, 13 Jun 2024 10:47:12 +0800
Subject: [PATCH 3/7] =?UTF-8?q?=E4=B8=8A=E4=BC=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/clue/source.js | 2 +-
src/views/Clue/Pool/Comp/DialogClue.vue | 271 ++++++++++++++++++------
src/views/Clue/Pool/cluePool.data.js | 9 +-
src/views/Clue/Pool/index.vue | 11 +-
4 files changed, 222 insertions(+), 71 deletions(-)
diff --git a/src/api/clue/source.js b/src/api/clue/source.js
index d0d3890..b461add 100644
--- a/src/api/clue/source.js
+++ b/src/api/clue/source.js
@@ -2,7 +2,7 @@ import request from '@/config/axios'
// 查询(精简)列表
export const getSimpleSourceList = async () => {
- return await request.get({ url: '/admin-api/crm/source/list-all-simple' })
+ return await request.get({ url: '/admin-api/crm/source/list' })
}
// 查询列表
diff --git a/src/views/Clue/Pool/Comp/DialogClue.vue b/src/views/Clue/Pool/Comp/DialogClue.vue
index d25679f..3a0565b 100644
--- a/src/views/Clue/Pool/Comp/DialogClue.vue
+++ b/src/views/Clue/Pool/Comp/DialogClue.vue
@@ -2,45 +2,51 @@
-
diff --git a/src/views/Clue/Pool/Comp/follow.data.js b/src/views/Clue/Pool/Comp/follow.data.js
deleted file mode 100644
index 806de2d..0000000
--- a/src/views/Clue/Pool/Comp/follow.data.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import { dateFormatter } from '@/utils/formatTime'
-
-// 表单校验
-export const rules = reactive({
- username: [required],
- password: [required]
-})
-
-// CrudSchema:https://doc.iocoder.cn/vue3/crud-schema/
-const crudSchemas = reactive([
- {
- label: '本次跟进时间',
- field: 'createTime',
- formatter: dateFormatter,
- form: {
- component: 'DatePicker',
- componentProps: {
- type: 'datetime',
- format: 'YYYY-MM-DD HH:mm',
- valueFormat: 'YYYY-MM-DD HH:mm',
- placeholder: '本次跟进时间'
- }
- }
- },
- {
- label: '下次跟进时间',
- field: 'nextTime',
- isForm: true,
- formatter: dateFormatter,
- detail: {
- dateFormat: 'YYYY-MM-DD HH:mm'
- },
- form: {
- component: 'DatePicker',
- componentProps: {
- type: 'datetime',
- format: 'YYYY-MM-DD HH:mm',
- valueFormat: 'YYYY-MM-DD HH:mm',
- placeholder: '下次跟进时间'
- }
- }
- },
- {
- label: '跟进内容',
- field: 'remark',
- isTable: true,
- form: {
- component: 'Input',
- componentProps: {
- type: 'textarea',
- autosize: { minRows: 5, maxRows: 10 }
- },
- colProps: {
- span: 24
- }
- }
- }
-])
-export const { allSchemas } = useCrudSchemas(crudSchemas)
diff --git a/src/views/Clue/Pool/index.vue b/src/views/Clue/Pool/index.vue
index f70cde0..0310a4a 100644
--- a/src/views/Clue/Pool/index.vue
+++ b/src/views/Clue/Pool/index.vue
@@ -110,7 +110,14 @@
>
登记
- 释放
+
+ 释放
+
@@ -122,9 +129,15 @@
:schema="allSchemas.formSchema"
@sucess="getTableList"
/>
-
+
-
+
@@ -141,6 +154,8 @@ import { formatDate } from '@/utils/formatTime'
import * as ClueApi from '@/api/clue'
+const message = useMessage() // 消息弹窗
+
const searchRef = ref()
const queryType = ref('2')
@@ -190,6 +205,7 @@ function resetQuery() {
async function getTableList() {
// 查询
tableObject.value.loading = true
+ getSearchCount()
try {
const queryParams = await searchRef.value.getFormModel()
const params = {
@@ -231,7 +247,7 @@ function handleDetail(row) {
}
function handleFollow(row) {
- followRef.value.open('create', row)
+ followRef.value.open(row.clueId)
}
async function makeCall(phone) {
@@ -242,12 +258,33 @@ async function makeCall(phone) {
function handleSuccess(row) {
successRef.value.open(row)
}
+
+// 释放
+function handleRelease(id) {
+ message.prompt('请先输入释放原因', '是否确认释放线索?').then((res) => {
+ if (res.value) {
+ try {
+ ClueApi.releaseClue({
+ clueId: id,
+ publicClue: true,
+ discardReason: res.value
+ }).then(() => {
+ message.success('释放成功')
+ })
+ } finally {
+ getTableList()
+ }
+ } else {
+ message.info('请将释放原因填写完整!')
+ }
+ })
+}
+
const userOptions = ref([])
onMounted(() => {
getUserOption().then((data) => {
userOptions.value = data
})
- getSearchCount()
getCurdSchemas()
})
From f6dc5884ba370ebffb15715f8a9ee7331b4af1d8 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Thu, 13 Jun 2024 17:18:12 +0800
Subject: [PATCH 6/7] =?UTF-8?q?=E4=B8=8A=E4=BC=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/views/Clue/Pool/Comp/DrawerClue.vue | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/views/Clue/Pool/Comp/DrawerClue.vue b/src/views/Clue/Pool/Comp/DrawerClue.vue
index f1feacf..e17dc38 100644
--- a/src/views/Clue/Pool/Comp/DrawerClue.vue
+++ b/src/views/Clue/Pool/Comp/DrawerClue.vue
@@ -176,8 +176,10 @@ const operateRecordList = ref([])
const dialogMap = ref(null)
const aMap = ref(null)
+const clueId = ref('')
+
function getFollowList() {
- FollowApi.getFollowList({ clueId: id }).then((data) => {
+ FollowApi.getFollowList({ clueId: clueId.value }).then((data) => {
followRecordList.value = data.map((item) => ({
operateUserName: item.operateUserName,
centent: item.centent,
@@ -189,6 +191,7 @@ function getFollowList() {
}
async function open(id) {
+ clueId.value = id
try {
getFollowList()
ClueApi.getOpearateRecord({ clueId: id }).then((data) => {
From d22a380612ba2223360e5f9dac05f0b38d776d23 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Thu, 13 Jun 2024 17:31:52 +0800
Subject: [PATCH 7/7] =?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/clue/skill.js | 26 +++
src/views/Clue/Pool/Comp/DialogFollow.vue | 228 +++-------------------
src/views/Clue/Pool/Comp/DrawerClue.vue | 8 +-
3 files changed, 60 insertions(+), 202 deletions(-)
create mode 100644 src/api/clue/skill.js
diff --git a/src/api/clue/skill.js b/src/api/clue/skill.js
new file mode 100644
index 0000000..c970757
--- /dev/null
+++ b/src/api/clue/skill.js
@@ -0,0 +1,26 @@
+import request from '@/config/axios'
+
+// 获得列表
+export const getSkillPage = (params) => {
+ return request.get({ url: '/admin-api/crm/skill/page', params })
+}
+
+// 创建
+export const createSkill = (data) => {
+ return request.post({ url: '/admin-api/crm/skill/create', data })
+}
+
+// 更新
+export const updateSkill = (data) => {
+ return request.put({ url: '/admin-api/crm/skill/update', data })
+}
+
+// 删除
+export const deleteSkill = (id) => {
+ return request.delete({ url: `/admin-api/crm/skill/delete?id=${id}` })
+}
+
+// 获得
+export const getSkill = (id) => {
+ return request.get({ url: `/admin-api/crm/skill/get?id=${id}` })
+}
diff --git a/src/views/Clue/Pool/Comp/DialogFollow.vue b/src/views/Clue/Pool/Comp/DialogFollow.vue
index 1648d4e..3b93047 100644
--- a/src/views/Clue/Pool/Comp/DialogFollow.vue
+++ b/src/views/Clue/Pool/Comp/DialogFollow.vue
@@ -43,14 +43,14 @@
+
@@ -70,6 +78,7 @@
diff --git a/src/views/Clue/Pool/Comp/DrawerClue.vue b/src/views/Clue/Pool/Comp/DrawerClue.vue
index e17dc38..3b8f36c 100644
--- a/src/views/Clue/Pool/Comp/DrawerClue.vue
+++ b/src/views/Clue/Pool/Comp/DrawerClue.vue
@@ -50,7 +50,7 @@
{{ item.operateUserName }}
- {{ item.centent }}
+ {{ item.content }}
@@ -89,7 +89,7 @@
操作人:{{ item.operateUserName }}
- {{ item.centent }}
+ {{ item.content }}
@@ -182,7 +182,7 @@ function getFollowList() {
FollowApi.getFollowList({ clueId: clueId.value }).then((data) => {
followRecordList.value = data.map((item) => ({
operateUserName: item.operateUserName,
- centent: item.centent,
+ content: item.content,
operateDate: formatDate(item.operateTime),
followTime: formatDate(item.operateTime, 'YYYY-MM-DD HH:mm'),
nextFollowTime: formatDate(item.nextFollowTime)
@@ -197,7 +197,7 @@ async function open(id) {
ClueApi.getOpearateRecord({ clueId: id }).then((data) => {
operateRecordList.value = data.map((item) => ({
operateUserName: item.operateUserName,
- centent: item.centent,
+ content: item.content,
operateDate: formatDate(item.operateTime),
followTime: formatDate(item.operateTime, 'YYYY-MM-DD HH:mm')
}))