From 704eb548de3b54f898e28556d91bd6e14c79cd8b Mon Sep 17 00:00:00 2001
From: felix <33110464+whdreamgithub@users.noreply.github.com>
Date: Mon, 28 Apr 2025 11:18:28 +0800
Subject: [PATCH 1/3] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E6=8A=95=E8=AF=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/crm/customer-complaints/index.ts | 39 ++
src/components/UserSelectForm/index.vue | 2 +-
src/router/modules/remaining.ts | 24 ++
src/utils/dict.ts | 3 +
src/views/crm/customer-complaints/create.vue | 287 +++++++++++++++
src/views/crm/customer-complaints/detail.vue | 115 ++++++
src/views/crm/customer-complaints/index.vue | 355 +++++++++++++++++++
src/views/crm/customer-suggestion/detail.vue | 40 +--
src/views/crm/customer-suggestion/index.vue | 19 +-
9 files changed, 841 insertions(+), 43 deletions(-)
create mode 100644 src/api/crm/customer-complaints/index.ts
create mode 100644 src/views/crm/customer-complaints/create.vue
create mode 100644 src/views/crm/customer-complaints/detail.vue
create mode 100644 src/views/crm/customer-complaints/index.vue
diff --git a/src/api/crm/customer-complaints/index.ts b/src/api/crm/customer-complaints/index.ts
new file mode 100644
index 000000000..bcbebc137
--- /dev/null
+++ b/src/api/crm/customer-complaints/index.ts
@@ -0,0 +1,39 @@
+import request from '@/config/axios'
+
+// 客户投诉 VO
+export interface CustomerComplaintsVO {
+ id:number //ID
+ customerId: number // 客户ID
+ complaintLevel: number // 投诉级别
+ complaintMethod: number // 投诉方式
+ complaintUserId: number // 投诉人ID
+ accusedComplaintUserId: number // 被投诉人ID
+ processingEfficiency: number // 处理时效:天
+ feedbackProblem: string // 事件描述
+ suggestion: string // 投诉附件
+ startUserSelectAssignees:object //发起人自选审批人 ,示例:{taskKey1:[1, 2],taskKey2:[1,2]}
+ processInstanceId:string //流程编号
+}
+
+// 客户投诉 API
+export const CustomerComplaintsApi = {
+ // 查询客户投诉分页
+ getCustomerComplaintsPage: async (params: any) => {
+ return await request.get({ url: `/crm/customer-complaints/page`, params })
+ },
+
+ // 查询客户投诉详情
+ getCustomerComplaints: async (id: number) => {
+ return await request.get({ url: `/crm/customer-complaints/get?id=` + id })
+ },
+
+ // 新增客户投诉
+ createCustomerComplaints: async (data: CustomerComplaintsVO) => {
+ return await request.post({ url: `/crm/customer-complaints/create`, data })
+ },
+
+ // 导出客户投诉 Excel
+ exportCustomerComplaints: async (params) => {
+ return await request.download({ url: `/crm/customer-complaints/export-excel`, params })
+ },
+}
diff --git a/src/components/UserSelectForm/index.vue b/src/components/UserSelectForm/index.vue
index 5ed99f86e..1c9e8bc9c 100644
--- a/src/components/UserSelectForm/index.vue
+++ b/src/components/UserSelectForm/index.vue
@@ -124,7 +124,7 @@ const filterUserList = async (deptId?: number) => {
/** 提交选择 */
const submitForm = async () => {
try {
- message.success(t('common.updateSuccess'))
+ // message.success(t('common.updateSuccess'))
dialogVisible.value = false
// 从所有用户列表中筛选出已选择的用户
const emitUserList = userList.value.filter((user: any) =>
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index 9b27642f1..4ecabc0b3 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -612,6 +612,30 @@ const remainingRouter: AppRouteRecordRaw[] = [
title: '新增客户建议',
activeMenu: '/crm/customer-suggestion'
}
+ },
+ {
+ path: 'customer-complaints/detail',
+ component: () => import('@/views/crm/customer-complaints/detail.vue'),
+ name: 'CustomerComplaintsDetail',
+ meta: {
+ noCache: true,
+ hidden: true,
+ canTo: true,
+ title: '客户投诉详情',
+ activeMenu: '/crm/customer-complaints'
+ }
+ },
+ {
+ path: 'customer-complaints/create',
+ component: () => import('@/views/crm/customer-complaints/create.vue'),
+ name: 'CustomerComplaintsCreate',
+ meta: {
+ noCache: true,
+ hidden: true,
+ canTo: true,
+ title: '新增客户投诉',
+ activeMenu: '/crm/customer-complaints'
+ }
}
]
},
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index 3dd0f01ff..310b9c7b5 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -218,6 +218,9 @@ export enum DICT_TYPE {
CRM_COOPERATION_AREA = "crm_cooperation_area", //CRM 合作地区
CRM_CUSTOMER_STSTUS = "crm_customer_status", //CRM 客户状态
CRM_RETURN_VISIT_STSTUS = "crm_return_visit_type", //CRM 回访类型
+ CRM_COMPLAINT_METHOD = "crm_complaint_method", // 投诉方式
+ CRM_COMPLAINT_LEVEL = "crm_complaint_level", // 投诉级别
+
// ========== ERP - 企业资源计划模块 ==========
ERP_AUDIT_STATUS = 'erp_audit_status', // ERP 审批状态
diff --git a/src/views/crm/customer-complaints/create.vue b/src/views/crm/customer-complaints/create.vue
new file mode 100644
index 000000000..c9508ec48
--- /dev/null
+++ b/src/views/crm/customer-complaints/create.vue
@@ -0,0 +1,287 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/crm/customer-complaints/detail.vue b/src/views/crm/customer-complaints/detail.vue
new file mode 100644
index 000000000..b4c6b3430
--- /dev/null
+++ b/src/views/crm/customer-complaints/detail.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ detailData.customerName }}
+
+
+
+ {{ detailData.feedbackProblem}}
+
+
+
+
+
+
+
+ 附件{{ index + 1 }}
+
+ ,
+
+
+
+
+
+ {{ detailData.complaintUserName }}
+
+
+
+ {{ detailData.complaintDeptName }}
+
+
+
+ {{ detailData.accusedComplaintUserName }}
+
+
+
+ {{ detailData.accusedComplaintDeptName }}
+
+
+
+
+ {{ detailData.processingEfficiency}}天
+
+
+
+ {{ detailData.creatorName}}
+
+
+
+ {{ formatDate(detailData.createTime, 'YYYY-MM-DD HH:mm:ss') }}
+
+
+
+ {{ detailData.id }}
+
+
+
+ {{ detailData.processInstanceId}}
+
+
+
+
+
+
diff --git a/src/views/crm/customer-complaints/index.vue b/src/views/crm/customer-complaints/index.vue
new file mode 100644
index 000000000..188449226
--- /dev/null
+++ b/src/views/crm/customer-complaints/index.vue
@@ -0,0 +1,355 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 详情
+
+
+ 进度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/crm/customer-suggestion/detail.vue b/src/views/crm/customer-suggestion/detail.vue
index 70d3effa5..33ede8507 100644
--- a/src/views/crm/customer-suggestion/detail.vue
+++ b/src/views/crm/customer-suggestion/detail.vue
@@ -6,11 +6,6 @@
-
- {{ detailData.id }}
-
-
-
{{ detailData.customerName }}
@@ -25,51 +20,30 @@
-
+
{{ detailData.feedbackUserName }}
-
-
-
+
{{ detailData.feedbackDeptName }}
-
- {{ detailData.processInstanceId }}
-
-
-
-
-
+
{{ detailData.creatorName }}
-
-
{{ formatDate(detailData.createTime, 'YYYY-MM-DD HH:mm:ss') }}
-
-
diff --git a/src/views/crm/customer-suggestion/index.vue b/src/views/crm/customer-suggestion/index.vue
index 33d9167f2..9168750d7 100644
--- a/src/views/crm/customer-suggestion/index.vue
+++ b/src/views/crm/customer-suggestion/index.vue
@@ -125,18 +125,17 @@
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
-
+
+
+
Date: Mon, 28 Apr 2025 11:32:29 +0800
Subject: [PATCH 2/3] =?UTF-8?q?=E5=95=86=E6=9C=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/product/index.vue | 163 ++++++++++++++
src/router/modules/remaining.ts | 11 +
.../crm/billtemplate/BillTemplateForm.vue | 166 +++++++++++---
.../crm/billtemplate/components/index.vue | 210 ++++++++++++++++++
src/views/crm/business/BusinessForm.vue | 63 +++---
.../components/BusinessProductForm.vue | 163 +++++++-------
src/views/crm/business/index.vue | 5 +-
7 files changed, 636 insertions(+), 145 deletions(-)
create mode 100644 src/components/product/index.vue
create mode 100644 src/views/crm/billtemplate/components/index.vue
diff --git a/src/components/product/index.vue b/src/components/product/index.vue
new file mode 100644
index 000000000..512c7fdbf
--- /dev/null
+++ b/src/components/product/index.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index 9b27642f1..a0aedffef 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -534,6 +534,17 @@ const remainingRouter: AppRouteRecordRaw[] = [
},
component: () => import('@/views/crm/business/detail/index.vue')
},
+ {
+ path: 'business/add/:id',
+ name: 'CrmBusinessAdd',
+ meta: {
+ title: '商机新增',
+ noCache: true,
+ hidden: true,
+ activeMenu: '/crm/business'
+ },
+ component: () => import('@/views/crm/business/BusinessForm.vue')
+ },
{
path: 'contract/detail/:id',
name: 'CrmContractDetail',
diff --git a/src/views/crm/billtemplate/BillTemplateForm.vue b/src/views/crm/billtemplate/BillTemplateForm.vue
index 04646d5ff..a1d2747a0 100644
--- a/src/views/crm/billtemplate/BillTemplateForm.vue
+++ b/src/views/crm/billtemplate/BillTemplateForm.vue
@@ -1,25 +1,43 @@
-
diff --git a/src/views/crm/business/BusinessForm.vue b/src/views/crm/business/BusinessForm.vue
index 6b8c53bc4..dee678cda 100644
--- a/src/views/crm/business/BusinessForm.vue
+++ b/src/views/crm/business/BusinessForm.vue
@@ -1,5 +1,5 @@
-
+
-
-
-
-
@@ -177,8 +173,6 @@
-
-
@@ -191,7 +185,7 @@
@@ -227,11 +221,10 @@
-
确 定
取 消
-
-
+
+
diff --git a/src/views/crm/business/components/BusinessProductForm.vue b/src/views/crm/business/components/BusinessProductForm.vue
index e8ff22258..f21f7d814 100644
--- a/src/views/crm/business/components/BusinessProductForm.vue
+++ b/src/views/crm/business/components/BusinessProductForm.vue
@@ -10,26 +10,8 @@
>
-
-
-
-
-
-
-
-
-
+
+
@@ -45,8 +27,8 @@
-
-
+
+
@@ -92,103 +74,116 @@
+ 添加产品
+
+
diff --git a/src/views/crm/business/index.vue b/src/views/crm/business/index.vue
index 16067144f..e6518a49f 100644
--- a/src/views/crm/business/index.vue
+++ b/src/views/crm/business/index.vue
@@ -161,7 +161,6 @@
-