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 @@ - + @@ -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 @@
- - - - + + + + + + @@ -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/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 @@ 新增属性 - - - + + + + + + + - - - - + + + + - + + + + +
- 新增选项 + 新增选项
- - 删除 + + 删除
- 保存 + 保存
- 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 @@ @@ -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 @@
+
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') }))