-
新增规则
+
新增规则
@@ -48,22 +63,52 @@
diff --git a/src/views/Clue/Set/Comp/GeneralSet.vue b/src/views/Clue/Set/Comp/GeneralSet.vue
index e2e1de8..9f0135c 100644
--- a/src/views/Clue/Set/Comp/GeneralSet.vue
+++ b/src/views/Clue/Set/Comp/GeneralSet.vue
@@ -1,21 +1,57 @@
-
-
- 是
- 否
+
+
+
+ 售后申请自动通过
+
+
+
+ {{ item.name }}
+
-
-
- 是
- 否
+
+
+
+ 发货自动发起采购
+
+
+
+ {{ item.name }}
+
-
-
- 是
- 否
+
+
+
+ 回款申请自动通过
+
+
+
+ {{ item.name }}
+
@@ -26,25 +62,42 @@
diff --git a/src/views/MiniMall/MallSet/Comp/GeneralSet.vue b/src/views/MiniMall/MallSet/Comp/GeneralSet.vue
index 1258648..c9ced81 100644
--- a/src/views/MiniMall/MallSet/Comp/GeneralSet.vue
+++ b/src/views/MiniMall/MallSet/Comp/GeneralSet.vue
@@ -1,9 +1,21 @@
-
+
+
+
+ 采购申请自动通过
+
- 是
- 否
+
+ {{ item.name }}
+
@@ -17,27 +29,31 @@ import * as ConfigApi from '@/api/system/set'
const message = useMessage()
-const form = ref({
- purchaseAuditAutoCompleteConfig: 'true'
-})
+const form = ref({})
-const info = ref({})
+const configList = ref([])
+
+function getConfig(val) {
+ return configList.value.find((it) => it.configKey == val)
+}
function getData() {
- ConfigApi.getConfigByConfigKey({ configKey: 'purchaseAuditAutoCompleteConfig' }).then((data) => {
- info.value = data
- form.value = {
- purchaseAuditAutoCompleteConfig: data.configValue
- }
+ ConfigApi.getConfigList({ module: 3 }).then((data) => {
+ configList.value = data
+ // 获取所有配置项
+ data.map((it) => {
+ form.value[it.configKey] = it.configValue
+ })
})
}
function onSubmit() {
- const data = {
- ...info,
- purchaseAuditAutoCompleteConfig: form.value.purchaseAuditAutoCompleteConfig
- }
- ConfigApi.updateConfig(data).then(() => {
+ const params = configList.value.map((it) => ({
+ configId: it.configId,
+ configKey: it.configKey,
+ configValue: form.value[it.configKey]
+ }))
+ ConfigApi.updateConfig(params).then(() => {
message.success('保存成功')
})
}
From 1c37dbc5f80cd960f7d58241a4094675a680cebe Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Mon, 17 Jun 2024 16:02:52 +0800
Subject: [PATCH 2/9] =?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/Order/index.vue | 54 +++++++++++++++++++---
src/views/Clue/Pool/Comp/DialogSuccess.vue | 28 +++++++----
src/views/Clue/Pool/index.vue | 7 ++-
3 files changed, 74 insertions(+), 15 deletions(-)
diff --git a/src/views/Clue/Order/index.vue b/src/views/Clue/Order/index.vue
index c8b7b21..9742db3 100644
--- a/src/views/Clue/Order/index.vue
+++ b/src/views/Clue/Order/index.vue
@@ -1,7 +1,7 @@
-
+
搜索
重置
@@ -9,6 +9,7 @@
diff --git a/src/views/Clue/Pool/Comp/DialogSuccess.vue b/src/views/Clue/Pool/Comp/DialogSuccess.vue
index beef045..000b5ab 100644
--- a/src/views/Clue/Pool/Comp/DialogSuccess.vue
+++ b/src/views/Clue/Pool/Comp/DialogSuccess.vue
@@ -128,11 +128,13 @@
class="mb-5px"
type="primary"
size="small"
- @click="form.signProduct.push({ productId: undefined, specsId: undefined, signNum: 0 })"
+ @click="
+ form.signProducts.push({ productId: undefined, specsId: undefined, signNum: 0 })
+ "
>
添加成交产品
-
+
@@ -189,7 +191,7 @@
@@ -255,7 +257,7 @@
取 消
- 保 存
+ 保 存
@@ -339,7 +341,7 @@ function resetForm(id) {
payAmount: 0,
remark: undefined,
extraPay: [],
- signProduct: []
+ signProducts: []
}
}
@@ -355,7 +357,7 @@ async function handleSave() {
return
}
- if (form.value.signProduct.some((it) => !it.schoolId || !item.specsId || !it.signNum)) {
+ if (form.value.signProducts.some((it) => !it.productId || !item.specsId || !it.signNum)) {
message.info('请将成交产品信息填写完整!')
return
}
@@ -363,9 +365,19 @@ async function handleSave() {
// 提交请求
formLoading.value = true
try {
- await createSign(form.value)
+ const params = { ...form.value }
+ params.diyParams = {}
+ diyFieldList.value.map((it) => {
+ params.diyParams[it.field] = undefined
+ })
+ for (const key in params.diyParams) {
+ if (Object.hasOwnProperty.call(params, key)) {
+ params.diyParams[key] = params[key]
+ }
+ }
+ await createSign(params)
message.success(t('common.createSuccess'))
- dialogVisible.value = false
+ show.value = false
// 发送操作成功的事件
emit('success')
} finally {
diff --git a/src/views/Clue/Pool/index.vue b/src/views/Clue/Pool/index.vue
index 98d9ac5..e537d39 100644
--- a/src/views/Clue/Pool/index.vue
+++ b/src/views/Clue/Pool/index.vue
@@ -187,6 +187,11 @@ async function getCurdSchemas() {
loading.value = true
try {
const data = await getSimpleFieldList()
+ data.forEach((elem) => {
+ if (elem.field == 'followUser') {
+ elem.search.options = userOptions.value
+ }
+ })
allSchemas.value = useCrudSchemas(data).allSchemas
} finally {
loading.value = false
@@ -314,8 +319,8 @@ const userOptions = ref([])
onMounted(() => {
getUserOption().then((data) => {
userOptions.value = data
+ getCurdSchemas()
})
- getCurdSchemas()
})
From e3c85cbaae6cd0187ec806c59f3d8fc568aa0cf2 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Tue, 18 Jun 2024 15:16:04 +0800
Subject: [PATCH 3/9] =?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/index.js | 5 +
src/api/clue/payment.js | 16 +
.../Descriptions/src/Descriptions.vue | 5 +-
src/views/Clue/Order/Comp/AfterSales.vue | 150 ++++++++
src/views/Clue/Order/Comp/Delivery.vue | 0
src/views/Clue/Order/Comp/DialogOrder.vue | 107 ++++++
src/views/Clue/Order/Comp/OrderList.vue | 335 ++++++++++++++++++
src/views/Clue/Order/Comp/Reback.vue | 148 ++++++++
src/views/Clue/Order/index.vue | 158 ++-------
src/views/Clue/Pool/Comp/DialogSuccess.vue | 3 +-
src/views/Clue/Pool/Comp/DrawerClue.vue | 30 +-
src/views/Clue/Pool/index.vue | 4 +-
src/views/Clue/Skill/index.vue | 4 +-
13 files changed, 801 insertions(+), 164 deletions(-)
create mode 100644 src/api/clue/payment.js
create mode 100644 src/views/Clue/Order/Comp/AfterSales.vue
create mode 100644 src/views/Clue/Order/Comp/Delivery.vue
create mode 100644 src/views/Clue/Order/Comp/DialogOrder.vue
create mode 100644 src/views/Clue/Order/Comp/OrderList.vue
create mode 100644 src/views/Clue/Order/Comp/Reback.vue
diff --git a/src/api/clue/index.js b/src/api/clue/index.js
index 3e2def3..85e4464 100644
--- a/src/api/clue/index.js
+++ b/src/api/clue/index.js
@@ -49,3 +49,8 @@ export const getOpearateRecord = async (params) => {
export const getPublicClue = async (data) => {
return await request.put({ url: '/admin-api/crm/sch-clue/public/save', data })
}
+
+// 获得线索跟进用户信息
+export const getFollowUserList = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sch-clue/get-follow-user', params })
+}
diff --git a/src/api/clue/payment.js b/src/api/clue/payment.js
new file mode 100644
index 0000000..afbb76a
--- /dev/null
+++ b/src/api/clue/payment.js
@@ -0,0 +1,16 @@
+import request from '@/config/axios'
+
+// 查询(精简)列表
+export const getPaymentList = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sign-pay-record/list', params })
+}
+
+// 新增
+export const createPayment = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-pay-record/create', data })
+}
+
+// 审核
+export const auditPayment = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-pay-record/check', data })
+}
diff --git a/src/components/Descriptions/src/Descriptions.vue b/src/components/Descriptions/src/Descriptions.vue
index 5577839..d11d4ee 100644
--- a/src/components/Descriptions/src/Descriptions.vue
+++ b/src/components/Descriptions/src/Descriptions.vue
@@ -27,7 +27,8 @@ const props = defineProps({
data: {
type: Object as PropType,
default: () => ({})
- }
+ },
+ defaultShow: propTypes.bool.def(true)
})
const { getPrefixCls } = useDesign()
@@ -57,7 +58,7 @@ const getBindItemValue = (item: DescriptionsSchema) => {
}
// 折叠
-const show = ref(true)
+const show = ref(props.defaultShow)
const toggleClick = () => {
if (props.collapse) {
diff --git a/src/views/Clue/Order/Comp/AfterSales.vue b/src/views/Clue/Order/Comp/AfterSales.vue
new file mode 100644
index 0000000..11c2d3e
--- /dev/null
+++ b/src/views/Clue/Order/Comp/AfterSales.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+ 批量审核
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 撤销
+
+
+ 审核
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/Delivery.vue b/src/views/Clue/Order/Comp/Delivery.vue
new file mode 100644
index 0000000..e69de29
diff --git a/src/views/Clue/Order/Comp/DialogOrder.vue b/src/views/Clue/Order/Comp/DialogOrder.vue
new file mode 100644
index 0000000..506672f
--- /dev/null
+++ b/src/views/Clue/Order/Comp/DialogOrder.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/OrderList.vue b/src/views/Clue/Order/Comp/OrderList.vue
new file mode 100644
index 0000000..37c2639
--- /dev/null
+++ b/src/views/Clue/Order/Comp/OrderList.vue
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 售后
+
+
+ 售后审核
+
+
+ 发货
+
+
+ 回款
+
+
+ 回款确认
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/Reback.vue b/src/views/Clue/Order/Comp/Reback.vue
new file mode 100644
index 0000000..401c37d
--- /dev/null
+++ b/src/views/Clue/Order/Comp/Reback.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+ 批量审核
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+ 撤销
+ 审核
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Clue/Order/index.vue b/src/views/Clue/Order/index.vue
index 9742db3..16bfd20 100644
--- a/src/views/Clue/Order/index.vue
+++ b/src/views/Clue/Order/index.vue
@@ -1,146 +1,28 @@
-
-
-
-
- 搜索
- 重置
-
-
-
-
-
-
-
-
- 售后
-
-
- 售后审核
-
-
- 发货(进销存)
-
-
- 回款
-
-
- 回款确认
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Clue/Pool/Comp/DialogSuccess.vue b/src/views/Clue/Pool/Comp/DialogSuccess.vue
index 000b5ab..2a9fb6e 100644
--- a/src/views/Clue/Pool/Comp/DialogSuccess.vue
+++ b/src/views/Clue/Pool/Comp/DialogSuccess.vue
@@ -1,11 +1,12 @@
diff --git a/src/views/Clue/Skill/index.vue b/src/views/Clue/Skill/index.vue
index 731266c..ccf377d 100644
--- a/src/views/Clue/Skill/index.vue
+++ b/src/views/Clue/Skill/index.vue
@@ -11,9 +11,7 @@
/>
-
- 搜索
-
+ 搜索
重置
新增
From 5aab5c0f823af3766c41a7918aad4a6ea19496d3 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Wed, 19 Jun 2024 00:31:40 +0800
Subject: [PATCH 4/9] =?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/afterSale.js | 26 ++++
src/api/clue/payment.js | 10 ++
src/views/Clue/Order/Comp/AfterSales.vue | 104 +++++++++++----
src/views/Clue/Order/Comp/DialogAfterSale.vue | 122 +++++++++++++++++
src/views/Clue/Order/Comp/DialogFeeback.vue | 101 ++++++++++++++
src/views/Clue/Order/Comp/DialogOrder.vue | 32 +++--
src/views/Clue/Order/Comp/OrderList.vue | 34 ++---
src/views/Clue/Order/Comp/Reback.vue | 125 +++++++++++++-----
8 files changed, 467 insertions(+), 87 deletions(-)
create mode 100644 src/api/clue/afterSale.js
create mode 100644 src/views/Clue/Order/Comp/DialogAfterSale.vue
create mode 100644 src/views/Clue/Order/Comp/DialogFeeback.vue
diff --git a/src/api/clue/afterSale.js b/src/api/clue/afterSale.js
new file mode 100644
index 0000000..b9b8056
--- /dev/null
+++ b/src/api/clue/afterSale.js
@@ -0,0 +1,26 @@
+import request from '@/config/axios'
+
+// 查询(精简)列表
+export const getAfterSaleList = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sign-after-sale/list', params })
+}
+
+// 查询(精简)列表
+export const getAfterSalePage = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sign-after-sale/page', params })
+}
+
+// 新增
+export const createAfterSale = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-after-sale/create', data })
+}
+
+// 审核
+export const auditAfterSale = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-after-sale/check', data })
+}
+
+// 撤销
+export const cancelApplyAfterSale = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-after-sale/revoke', data })
+}
diff --git a/src/api/clue/payment.js b/src/api/clue/payment.js
index afbb76a..5e8f613 100644
--- a/src/api/clue/payment.js
+++ b/src/api/clue/payment.js
@@ -5,6 +5,11 @@ export const getPaymentList = async (params) => {
return await request.get({ url: '/admin-api/crm/sign-pay-record/list', params })
}
+// 查询(精简)列表
+export const getPaymentPage = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sign-pay-record/page', params })
+}
+
// 新增
export const createPayment = async (data) => {
return await request.post({ url: '/admin-api/crm/sign-pay-record/create', data })
@@ -14,3 +19,8 @@ export const createPayment = async (data) => {
export const auditPayment = async (data) => {
return await request.post({ url: '/admin-api/crm/sign-pay-record/check', data })
}
+
+// 撤销
+export const cancelApplyPayment = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-pay-record/revoke', data })
+}
diff --git a/src/views/Clue/Order/Comp/AfterSales.vue b/src/views/Clue/Order/Comp/AfterSales.vue
index 11c2d3e..1c11aaa 100644
--- a/src/views/Clue/Order/Comp/AfterSales.vue
+++ b/src/views/Clue/Order/Comp/AfterSales.vue
@@ -2,13 +2,21 @@
-
+
-
+
-
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
详情
-
+
撤销
-
+
审核
@@ -90,10 +111,20 @@
diff --git a/src/views/Clue/Order/Comp/DialogAfterSale.vue b/src/views/Clue/Order/Comp/DialogAfterSale.vue
new file mode 100644
index 0000000..c8f1081
--- /dev/null
+++ b/src/views/Clue/Order/Comp/DialogAfterSale.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/DialogFeeback.vue b/src/views/Clue/Order/Comp/DialogFeeback.vue
new file mode 100644
index 0000000..2907467
--- /dev/null
+++ b/src/views/Clue/Order/Comp/DialogFeeback.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/DialogOrder.vue b/src/views/Clue/Order/Comp/DialogOrder.vue
index 506672f..6497ff6 100644
--- a/src/views/Clue/Order/Comp/DialogOrder.vue
+++ b/src/views/Clue/Order/Comp/DialogOrder.vue
@@ -15,13 +15,22 @@
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -34,7 +43,8 @@ import * as ClueApi from '@/api/clue'
import * as OrderApi from '@/api/clue/sign'
import { getSimpleFieldList as getClueFieldList } from '@/api/clue/clueField'
import { getSimpleFieldList as getOrderFieldList } from '@/api/clue/orderField'
-import { getPaymentList } from '@/api/clue/payment'
+import { getPaymentPage } from '@/api/clue/payment'
+import { getAfterSalePage } from '@/api/clue/afterSale'
import { formatDate } from '@/utils/formatTime'
@@ -42,7 +52,8 @@ const tabName = ref('clueInfo')
const show = ref(false)
const clueInfo = ref({})
const orderInfo = ref({})
-const returnRecord = ref([])
+const returnRecordList = ref([])
+const aftersaleList = ref([])
function open(clueId, orderId) {
try {
@@ -56,8 +67,11 @@ function open(clueId, orderId) {
orderInfo.value = { ...data, ...data.diyParams }
orderInfo.value.dealDate = formatDate(orderInfo.value.dealDate, 'YYYY-MM-DD HH:mm')
})
- getPaymentList({ signId: orderId }).then((data) => {
- returnRecord.value = data
+ getPaymentPage({ signId: orderId, pageNo: 1, pageSize: 100 }).then((data) => {
+ returnRecordList.value = data.list
+ })
+ getAfterSalePage({ signId: orderId, pageNo: 1, pageSize: 100 }).then((data) => {
+ aftersaleList.value = data.list
})
} catch (error) {
console.log(error)
diff --git a/src/views/Clue/Order/Comp/OrderList.vue b/src/views/Clue/Order/Comp/OrderList.vue
index 37c2639..36c2771 100644
--- a/src/views/Clue/Order/Comp/OrderList.vue
+++ b/src/views/Clue/Order/Comp/OrderList.vue
@@ -131,15 +131,6 @@
>
售后
-
- 售后审核
-
回款
-
- 回款确认
-
+
+
@@ -187,6 +172,8 @@ import { getClassTypePage } from '@/api/school/class'
import { getSimpleProductList } from '@/api/mall/product'
import DialogOrder from './DialogOrder.vue'
+import DialogFeeback from './DialogFeeback.vue'
+import DialogAfterSale from './DialogAfterSale.vue'
import { removeNullField } from '@/utils'
import { useAppStore } from '@/store/modules/app'
@@ -286,9 +273,16 @@ function handleDetail(row) {
orderDetailDialog.value.open(row.clueId, row.signId)
}
+const feedbackDialog = ref()
+const afterSaleDialog = ref()
// 售后
-function sellAfter() {
- // 方法体
+function sellAfter(row) {
+ afterSaleDialog.value.open(row.signId)
+}
+
+// 回款
+function feeBack(row) {
+ feedbackDialog.value.open(row.signId)
}
function changeSchool() {
diff --git a/src/views/Clue/Order/Comp/Reback.vue b/src/views/Clue/Order/Comp/Reback.vue
index 401c37d..427c973 100644
--- a/src/views/Clue/Order/Comp/Reback.vue
+++ b/src/views/Clue/Order/Comp/Reback.vue
@@ -2,13 +2,21 @@
-
+
-
+
-
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
- 详情
+ 详情
+
+
- 撤销
- 审核
+
+ 审核
+
@@ -88,13 +109,23 @@
From 2017baaf03917f6ab1daa825c4e1f6c3291953a3 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Wed, 19 Jun 2024 00:43:05 +0800
Subject: [PATCH 5/9] =?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/afterSale.js | 2 +-
src/api/clue/payment.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/api/clue/afterSale.js b/src/api/clue/afterSale.js
index b9b8056..9c43e6a 100644
--- a/src/api/clue/afterSale.js
+++ b/src/api/clue/afterSale.js
@@ -22,5 +22,5 @@ export const auditAfterSale = async (data) => {
// 撤销
export const cancelApplyAfterSale = async (data) => {
- return await request.post({ url: '/admin-api/crm/sign-after-sale/revoke', data })
+ return await request.post({ url: '/admin-api/crm/sign-after-sale/revoke', params: data })
}
diff --git a/src/api/clue/payment.js b/src/api/clue/payment.js
index 5e8f613..277f90d 100644
--- a/src/api/clue/payment.js
+++ b/src/api/clue/payment.js
@@ -22,5 +22,5 @@ export const auditPayment = async (data) => {
// 撤销
export const cancelApplyPayment = async (data) => {
- return await request.post({ url: '/admin-api/crm/sign-pay-record/revoke', data })
+ return await request.post({ url: '/admin-api/crm/sign-pay-record/revoke', params: data })
}
From ea7fae45e36c2afae90698a74382ae0bc6b3e064 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Wed, 19 Jun 2024 11:56:00 +0800
Subject: [PATCH 6/9] =?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/components/Form/src/Form.vue | 4 +-
src/components/Search/src/Search.vue | 2 +
src/views/Clue/Order/Comp/AfterSales.vue | 19 ++-
src/views/Clue/Order/Comp/DialogAfterSale.vue | 4 +-
.../Clue/Order/Comp/DialogAfterSaleAudit.vue | 135 ++++++++++++++++++
.../Clue/Order/Comp/DialogFeebackAudit.vue | 125 ++++++++++++++++
src/views/Clue/Order/Comp/OrderList.vue | 24 +++-
src/views/Clue/Order/Comp/Reback.vue | 16 ++-
8 files changed, 312 insertions(+), 17 deletions(-)
create mode 100644 src/views/Clue/Order/Comp/DialogAfterSaleAudit.vue
create mode 100644 src/views/Clue/Order/Comp/DialogFeebackAudit.vue
diff --git a/src/components/Form/src/Form.vue b/src/components/Form/src/Form.vue
index 7fc5dd1..f78267d 100644
--- a/src/components/Form/src/Form.vue
+++ b/src/components/Form/src/Form.vue
@@ -51,7 +51,8 @@ export default defineComponent({
// 表单label宽度
labelWidth: propTypes.oneOfType([String, Number]).def('auto'),
// 是否 loading 数据中 add by 芋艿
- vLoading: propTypes.bool.def(false)
+ vLoading: propTypes.bool.def(false),
+ inlineBlock: propTypes.bool.def(false)
},
emits: ['register'],
setup(props, { slots, expose, emit }) {
@@ -289,6 +290,7 @@ export default defineComponent({
model={props.isCustom ? props.model : formModel}
class={prefixCls}
v-loading={props.vLoading}
+ style={props.inlineBlock ? 'display: inline' : ''}
>
{{
// 如果需要自定义,就什么都不渲染,而是提供默认插槽
diff --git a/src/components/Search/src/Search.vue b/src/components/Search/src/Search.vue
index a9f2ebc..c60109b 100644
--- a/src/components/Search/src/Search.vue
+++ b/src/components/Search/src/Search.vue
@@ -38,6 +38,7 @@ const props = defineProps({
// 伸缩的界限字段
expandField: propTypes.string.def(''),
inline: propTypes.bool.def(true),
+ inlineBlock: propTypes.bool.def(false),
model: {
type: Object as PropType,
default: () => ({})
@@ -154,6 +155,7 @@ initSearch()
@@ -115,6 +120,10 @@ import * as AfterSaleApi from '@/api/clue/afterSale'
import { getSimpleUserList as getUserOption } from '@/api/system/user'
import { useUserStore } from '@/store/modules/user'
+import DialogAfterSaleAudit from './DialogAfterSaleAudit.vue'
+
+const afterSaleAuditDialog = ref()
+
const userStore = useUserStore()
const message = useMessage() // 消息弹窗
@@ -168,8 +177,8 @@ async function getList() {
}
}
-function batchAudit() {
- console.log(123)
+function batchAudit(row) {
+ afterSaleAuditDialog.value.open(row)
}
function handleDetail(id) {
@@ -188,8 +197,8 @@ async function handleCancel(id) {
console.log(err)
}
}
-function handleAudit(id) {
- console.log(id)
+function handleAudit(row) {
+ afterSaleAuditDialog.value.open(row)
}
function getOptions() {
diff --git a/src/views/Clue/Order/Comp/DialogAfterSale.vue b/src/views/Clue/Order/Comp/DialogAfterSale.vue
index c8f1081..d943a54 100644
--- a/src/views/Clue/Order/Comp/DialogAfterSale.vue
+++ b/src/views/Clue/Order/Comp/DialogAfterSale.vue
@@ -14,8 +14,8 @@
新增售后
-
-
+
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/DialogFeebackAudit.vue b/src/views/Clue/Order/Comp/DialogFeebackAudit.vue
new file mode 100644
index 0000000..e2ec956
--- /dev/null
+++ b/src/views/Clue/Order/Comp/DialogFeebackAudit.vue
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/OrderList.vue b/src/views/Clue/Order/Comp/OrderList.vue
index 36c2771..64420b8 100644
--- a/src/views/Clue/Order/Comp/OrderList.vue
+++ b/src/views/Clue/Order/Comp/OrderList.vue
@@ -2,9 +2,15 @@
-
+
-
+
-
+
-
+
-
+
搜索
重置
@@ -97,7 +109,7 @@
审核
@@ -105,6 +109,8 @@
:total="total"
@pagination="getList"
/>
+
+
@@ -113,9 +119,13 @@ import * as FeebackApi from '@/api/clue/payment'
import { getSimpleUserList as getUserOption } from '@/api/system/user'
import { useUserStore } from '@/store/modules/user'
+import DialogFeebackAudit from './DialogFeebackAudit.vue'
+
const userStore = useUserStore()
const message = useMessage() // 消息弹窗
+const feebackDialog = ref()
+
const currentUserId = userStore.getUser.id
const searchForm = ref({
@@ -186,8 +196,8 @@ async function handleCancel(id) {
console.log(err)
}
}
-function handleAudit(id) {
- console.log(id)
+function handleAudit(row) {
+ feebackDialog.value.open(row)
}
function getOptions() {
From 8df1f7d25a394277655127dc4234e0aa103b1f88 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Wed, 19 Jun 2024 15:04:20 +0800
Subject: [PATCH 7/9] =?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/afterSale.js | 9 ++
src/api/clue/payment.js | 9 ++
src/views/Clue/Order/Comp/AfterSales.vue | 29 +++-
.../Clue/Order/Comp/DialogAfterSaleDetail.vue | 137 ++++++++++++++++++
.../Clue/Order/Comp/DialogBatchAudit.vue | 87 +++++++++++
.../Clue/Order/Comp/DialogFeebackDetail.vue | 127 ++++++++++++++++
src/views/Clue/Order/Comp/Reback.vue | 29 +++-
src/views/Home/Index.vue | 4 +-
8 files changed, 421 insertions(+), 10 deletions(-)
create mode 100644 src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue
create mode 100644 src/views/Clue/Order/Comp/DialogBatchAudit.vue
create mode 100644 src/views/Clue/Order/Comp/DialogFeebackDetail.vue
diff --git a/src/api/clue/afterSale.js b/src/api/clue/afterSale.js
index 9c43e6a..685289a 100644
--- a/src/api/clue/afterSale.js
+++ b/src/api/clue/afterSale.js
@@ -20,7 +20,16 @@ export const auditAfterSale = async (data) => {
return await request.post({ url: '/admin-api/crm/sign-after-sale/check', data })
}
+export const batchAuditAfterSale = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-after-sale/batch/check', data })
+}
+
// 撤销
export const cancelApplyAfterSale = async (data) => {
return await request.post({ url: '/admin-api/crm/sign-after-sale/revoke', params: data })
}
+
+// 查询详情
+export const getAfterSaleDetail = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sign-after-sale/get', params })
+}
diff --git a/src/api/clue/payment.js b/src/api/clue/payment.js
index 277f90d..4a63fbf 100644
--- a/src/api/clue/payment.js
+++ b/src/api/clue/payment.js
@@ -20,7 +20,16 @@ export const auditPayment = async (data) => {
return await request.post({ url: '/admin-api/crm/sign-pay-record/check', data })
}
+export const batchAuditPayment = async (data) => {
+ return await request.post({ url: '/admin-api/crm/sign-pay-record/batch/check', data })
+}
+
// 撤销
export const cancelApplyPayment = async (data) => {
return await request.post({ url: '/admin-api/crm/sign-pay-record/revoke', params: data })
}
+
+// 查询详情
+export const getPaymentDetail = async (params) => {
+ return await request.get({ url: '/admin-api/crm/sign-pay-record/get', params })
+}
diff --git a/src/views/Clue/Order/Comp/AfterSales.vue b/src/views/Clue/Order/Comp/AfterSales.vue
index 29785cf..04869c9 100644
--- a/src/views/Clue/Order/Comp/AfterSales.vue
+++ b/src/views/Clue/Order/Comp/AfterSales.vue
@@ -64,7 +64,13 @@
-
+
+
@@ -112,6 +118,8 @@
@pagination="getList"
/>
+
+
@@ -121,6 +129,8 @@ import { getSimpleUserList as getUserOption } from '@/api/system/user'
import { useUserStore } from '@/store/modules/user'
import DialogAfterSaleAudit from './DialogAfterSaleAudit.vue'
+import DialogAfterSaleDetail from './DialogAfterSaleDetail.vue'
+import DialogBatchAudit from './DialogBatchAudit.vue'
const afterSaleAuditDialog = ref()
@@ -177,12 +187,23 @@ async function getList() {
}
}
-function batchAudit(row) {
- afterSaleAuditDialog.value.open(row)
+const batchIds = ref([])
+function handleSelectionChange(val) {
+ batchIds.value = val
}
+const batchAuditDialog = ref()
+function batchAudit() {
+ if (batchIds.value.length) {
+ batchAuditDialog.value.open('aftersale', batchIds.value)
+ } else {
+ message.info('请选择表格中需要审核的数据')
+ }
+}
+
+const afterSaleDetailDialog = ref()
function handleDetail(id) {
- console.log(id)
+ afterSaleDetailDialog.value.open(id)
}
async function handleCancel(id) {
try {
diff --git a/src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue b/src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue
new file mode 100644
index 0000000..83277ad
--- /dev/null
+++ b/src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue
@@ -0,0 +1,137 @@
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/DialogBatchAudit.vue b/src/views/Clue/Order/Comp/DialogBatchAudit.vue
new file mode 100644
index 0000000..4204057
--- /dev/null
+++ b/src/views/Clue/Order/Comp/DialogBatchAudit.vue
@@ -0,0 +1,87 @@
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/DialogFeebackDetail.vue b/src/views/Clue/Order/Comp/DialogFeebackDetail.vue
new file mode 100644
index 0000000..f524eb9
--- /dev/null
+++ b/src/views/Clue/Order/Comp/DialogFeebackDetail.vue
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/src/views/Clue/Order/Comp/Reback.vue b/src/views/Clue/Order/Comp/Reback.vue
index 724e2ec..26be7e2 100644
--- a/src/views/Clue/Order/Comp/Reback.vue
+++ b/src/views/Clue/Order/Comp/Reback.vue
@@ -64,7 +64,13 @@
-
+
+
@@ -111,6 +117,8 @@
/>
+
+
@@ -120,6 +128,8 @@ import { getSimpleUserList as getUserOption } from '@/api/system/user'
import { useUserStore } from '@/store/modules/user'
import DialogFeebackAudit from './DialogFeebackAudit.vue'
+import DialogFeebackDetail from './DialogFeebackDetail.vue'
+import DialogBatchAudit from './DialogBatchAudit.vue'
const userStore = useUserStore()
const message = useMessage() // 消息弹窗
@@ -176,12 +186,23 @@ async function getList() {
}
}
-function batchAudit() {
- console.log(123)
+const batchIds = ref([])
+function handleSelectionChange(val) {
+ batchIds.value = val
}
+const batchAuditDialog = ref()
+function batchAudit() {
+ if (batchIds.value.length) {
+ batchAuditDialog.value.open('aftersale', batchIds.value)
+ } else {
+ message.info('请选择表格中需要审核的数据')
+ }
+}
+
+const feebackDetailDialog = ref()
function handleDetail(id) {
- console.log(id)
+ feebackDetailDialog.value.open(id)
}
async function handleCancel(id) {
try {
diff --git a/src/views/Home/Index.vue b/src/views/Home/Index.vue
index fb08edd..0f2b5e4 100644
--- a/src/views/Home/Index.vue
+++ b/src/views/Home/Index.vue
@@ -203,7 +203,7 @@ const getMonthlySaleRate = async () => {
)
set(lineOptionsData, 'series', [
{
- name: t('analysis.estimate'),
+ name: '个人成交率',
smooth: true,
type: 'line',
data: data.map((v) => v.estimate),
@@ -211,7 +211,7 @@ const getMonthlySaleRate = async () => {
animationEasing: 'cubicInOut'
},
{
- name: t('analysis.actual'),
+ name: '平均成交率',
smooth: true,
type: 'line',
itemStyle: {},
From 37818cb1e67394d175219c33e462f5313edcef73 Mon Sep 17 00:00:00 2001
From: qsh <>
Date: Wed, 19 Jun 2024 17:16:34 +0800
Subject: [PATCH 8/9] =?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/sign.js | 5 ++++
src/views/Clue/Order/Comp/AfterSales.vue | 2 +-
.../Clue/Order/Comp/DialogAfterSaleDetail.vue | 2 +-
src/views/Clue/Order/Comp/DialogFeeback.vue | 6 ++--
.../Clue/Order/Comp/DialogFeebackDetail.vue | 2 +-
src/views/Clue/Order/Comp/OrderList.vue | 30 +++++++++++++++++--
src/views/Clue/Order/Comp/Reback.vue | 2 +-
src/views/Clue/Pool/Comp/DrawerClue.vue | 3 +-
src/views/Clue/Pool/index.vue | 1 +
src/views/Clue/Set/index.vue | 8 ++---
10 files changed, 47 insertions(+), 14 deletions(-)
diff --git a/src/api/clue/sign.js b/src/api/clue/sign.js
index 0a3fbdf..acaf215 100644
--- a/src/api/clue/sign.js
+++ b/src/api/clue/sign.js
@@ -14,3 +14,8 @@ export const getSign = async (id) => {
export const createSign = async (data) => {
return await request.post({ url: '/admin-api/crm/sign/create', data: data })
}
+
+// 取消登记
+export const cancelDeal = async (id) => {
+ return await request.delete({ url: '/admin-api/crm/sign/delete?id=' + id })
+}
diff --git a/src/views/Clue/Order/Comp/AfterSales.vue b/src/views/Clue/Order/Comp/AfterSales.vue
index 04869c9..3e5736a 100644
--- a/src/views/Clue/Order/Comp/AfterSales.vue
+++ b/src/views/Clue/Order/Comp/AfterSales.vue
@@ -189,7 +189,7 @@ async function getList() {
const batchIds = ref([])
function handleSelectionChange(val) {
- batchIds.value = val
+ batchIds.value = val.map((it) => it.id)
}
const batchAuditDialog = ref()
diff --git a/src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue b/src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue
index 83277ad..66f46ba 100644
--- a/src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue
+++ b/src/views/Clue/Order/Comp/DialogAfterSaleDetail.vue
@@ -90,7 +90,7 @@ const auditSchema = [
span: 1
},
{
- field: 'checkUserName',
+ field: 'checkUser',
label: '审核人',
span: 1
},
diff --git a/src/views/Clue/Order/Comp/DialogFeeback.vue b/src/views/Clue/Order/Comp/DialogFeeback.vue
index 2907467..72d4819 100644
--- a/src/views/Clue/Order/Comp/DialogFeeback.vue
+++ b/src/views/Clue/Order/Comp/DialogFeeback.vue
@@ -18,8 +18,8 @@
- 结清
- 未结清
+ 结清
+ 未结清
@@ -69,7 +69,7 @@ function handleAdd() {
form.value = {
signId: orderId.value,
money: undefined,
- isPayoff: '结清',
+ isPayoff: true,
remark: undefined
}
}
diff --git a/src/views/Clue/Order/Comp/DialogFeebackDetail.vue b/src/views/Clue/Order/Comp/DialogFeebackDetail.vue
index f524eb9..3f16d12 100644
--- a/src/views/Clue/Order/Comp/DialogFeebackDetail.vue
+++ b/src/views/Clue/Order/Comp/DialogFeebackDetail.vue
@@ -80,7 +80,7 @@ const auditSchema = [
span: 1
},
{
- field: 'checkUserName',
+ field: 'checkUser',
label: '审核人',
span: 1
},
diff --git a/src/views/Clue/Order/Comp/OrderList.vue b/src/views/Clue/Order/Comp/OrderList.vue
index 64420b8..c3112f4 100644
--- a/src/views/Clue/Order/Comp/OrderList.vue
+++ b/src/views/Clue/Order/Comp/OrderList.vue
@@ -121,7 +121,7 @@
:label="item.label"
min-width="120px"
/>
-
+
回款
+
+ 取消登记
+
@@ -191,6 +201,7 @@ import { removeNullField } from '@/utils'
import { useAppStore } from '@/store/modules/app'
const appStore = useAppStore()
+const message = useMessage() // 消息弹窗
const allSchemas = ref({})
@@ -297,6 +308,21 @@ function feeBack(row) {
feedbackDialog.value.open(row.signId)
}
+// 取消登记
+async function cancelDeal(row) {
+ try {
+ // 二次确认
+ await message.confirm('是否确认取消登记该线索?')
+ // 发起删除
+ await SignApi.cancelDeal(row.signId)
+ message.success('取消登记成功!')
+ // 刷新列表
+ await getTableList()
+ } catch (err) {
+ console.log(err)
+ }
+}
+
function changeSchool() {
searchForm.value.signPlace = undefined
searchForm.value.signClass = undefined
diff --git a/src/views/Clue/Order/Comp/Reback.vue b/src/views/Clue/Order/Comp/Reback.vue
index 26be7e2..74c6903 100644
--- a/src/views/Clue/Order/Comp/Reback.vue
+++ b/src/views/Clue/Order/Comp/Reback.vue
@@ -188,7 +188,7 @@ async function getList() {
const batchIds = ref([])
function handleSelectionChange(val) {
- batchIds.value = val
+ batchIds.value = val.map((it) => it.id)
}
const batchAuditDialog = ref()
diff --git a/src/views/Clue/Pool/Comp/DrawerClue.vue b/src/views/Clue/Pool/Comp/DrawerClue.vue
index 1147c6b..9bbff93 100644
--- a/src/views/Clue/Pool/Comp/DrawerClue.vue
+++ b/src/views/Clue/Pool/Comp/DrawerClue.vue
@@ -99,7 +99,8 @@
操作人:{{ item.operateUserName }}