From 4898b385886794bf0663ec2d883ea808b78ae522 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期三, 19 七月 2023 11:37:25 +0800
Subject: [PATCH] 接口联调相关api添加

---
 src/api/serviceManage/serviceFollowup.js                      |   33 
 src/router/client/index.js                                    |   16 
 src/views/service/serviceFeeManage/index.vue                  |   47 
 src/views/client/followupRecords/AddFollowupRecordsDialog.vue |  406 +++++++
 src/api/sales/contractManage.js                               |   33 
 src/api/sales/generatePlan.js                                 |   33 
 src/views/sales/masterOrder/index.vue                         |   51 
 src/api/sales/masterOrder.js                                  |   33 
 src/api/sales/salesDetails.js                                 |   33 
 src/views/client/salesLead/index.vue                          |    4 
 src/views/sales/salesReturn/index.vue                         |   44 
 src/views/client/followupRecords/index.vue                    |   63 
 src/components/layout/components/appsidebar/index.vue         |    8 
 src/api/sales/quotation.js                                    |   33 
 src/views/service/serviceContract/index.vue                   |   45 
 src/views/service/serviceFollowup/index.vue                   |   42 
 src/api/serviceManage/serviceContract.js                      |   33 
 src/views/sales/salesDetails/index.vue                        |   30 
 src/api/client/followupRecords.js                             |   10 
 src/api/serviceManage/orderManage.js                          |   33 
 src/views/client/client/index.vue                             |  169 +-
 src/views/client/contacts/AddContactsDialog.vue               |  446 +++++++
 src/views/sales/subOrder/index.vue                            |   42 
 src/api/client/client.js                                      |   57 +
 src/api/client/salesLead.js                                   |    0 
 src/views/client/salesLead/AddSalesLeadDialog.vue             |  134 +
 src/api/serviceManage/serviceFeeManage.js                     |   33 
 src/router/index.js                                           |   12 
 src/views/client/index.vue                                    |    0 
 src/views/sales/refundForm/index.vue                          |   44 
 src/api/common/address.js                                     |   30 
 src/views/client/client/AddClientManageDialog.vue             |  750 +++++++++++++
 src/api/sales/subOrder.js                                     |   33 
 /dev/null                                                     |  333 -----
 src/views/client/contacts/index.vue                           |   20 
 src/api/sales/refundForm.js                                   |   33 
 src/views/service/orderManage/index.vue                       |   42 
 src/api/client/contacts.js                                    |   10 
 src/api/sales/salesReturn.js                                  |   33 
 src/views/sales/salesOpportunity/index.vue                    |   45 
 src/api/sales/salesOpportunity.js                             |   33 
 src/views/sales/generatePlan/index.vue                        |   40 
 src/views/sales/quotation/index.vue                           |   45 
 43 files changed, 2,712 insertions(+), 702 deletions(-)

diff --git a/src/api/client/client.js b/src/api/client/client.js
new file mode 100644
index 0000000..62efbcf
--- /dev/null
+++ b/src/api/client/client.js
@@ -0,0 +1,57 @@
+import request from "@/common/untils/request.js"
+
+// 瀹㈡埛绠$悊鍒楄〃
+export function getClientList() {
+  return request({
+    url: "/api/client/list",
+    method: "get"
+  })
+}
+// 娣诲姞瀹㈡埛绠$悊
+export function getAddClient(data) {
+  return request({
+    url: "/api/client/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎瀹㈡埛绠$悊
+export function getDeleteClient(data) {
+  return request({
+    url: "/api/client/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊瀹㈡埛绠$悊
+export function getUpdateClient(data) {
+  return request({
+    url: "/api/client/update",
+    method: "put",
+    data
+  })
+}
+
+// 鑾峰彇瀹㈡埛鏉ユ簮鍒楄〃
+export function getClientOrigin() {
+  return request({
+    url: "/api/clientOrigin/list",
+    method: "get"
+  })
+}
+
+// 鑾峰彇瀹㈡埛鐘舵�佸垪琛�
+export function getClientStatus() {
+  return request({
+    url: "/api/clientStatus/list",
+    method: "get"
+  })
+}
+
+// 鑾峰彇瀹㈡埛鏉ユ簮绛夋墍鏈夋暟鎹�
+export function getAllData() {
+  return request({
+    url: "/api/data/getAllData",
+    method: "get"
+  })
+}
diff --git a/src/api/custom/contacts.js b/src/api/client/contacts.js
similarity index 77%
rename from src/api/custom/contacts.js
rename to src/api/client/contacts.js
index 34a3971..6638248 100644
--- a/src/api/custom/contacts.js
+++ b/src/api/client/contacts.js
@@ -8,10 +8,11 @@
   })
 }
 // 娣诲姞鑱旂郴浜�
-export function getAddContact() {
+export function getAddContact(data) {
   return request({
     url: "/api/contact/add",
-    method: "post"
+    method: "post",
+    data
   })
 }
 // 鍒犻櫎鑱旂郴浜�
@@ -23,9 +24,10 @@
   })
 }
 // 鏇存柊鑱旂郴浜�
-export function getUpdateContact() {
+export function getUpdateContact(data) {
   return request({
     url: "/api/contact/update",
-    method: "put"
+    method: "put",
+    data
   })
 }
diff --git a/src/api/custom/followupRecords.js b/src/api/client/followupRecords.js
similarity index 77%
rename from src/api/custom/followupRecords.js
rename to src/api/client/followupRecords.js
index 581b719..e76bd53 100644
--- a/src/api/custom/followupRecords.js
+++ b/src/api/client/followupRecords.js
@@ -8,10 +8,11 @@
   })
 }
 // 娣诲姞璺熻繘璁板綍
-export function getAddFollowRecord() {
+export function getAddFollowRecord(data) {
   return request({
     url: "/api/followRecord/add",
-    method: "post"
+    method: "post",
+    data
   })
 }
 // 鍒犻櫎璺熻繘璁板綍
@@ -23,9 +24,10 @@
   })
 }
 // 鏇存柊璺熻繘璁板綍
-export function getUpdateFollowRecord() {
+export function getUpdateFollowRecord(data) {
   return request({
     url: "/api/followRecord/update",
-    method: "put"
+    method: "put",
+    data
   })
 }
diff --git a/src/api/custom/salesLead.js b/src/api/client/salesLead.js
similarity index 100%
rename from src/api/custom/salesLead.js
rename to src/api/client/salesLead.js
diff --git a/src/api/common/address.js b/src/api/common/address.js
index f61d263..12ecb36 100644
--- a/src/api/common/address.js
+++ b/src/api/common/address.js
@@ -8,10 +8,11 @@
   })
 }
 // 娣诲姞鍥藉
-export function getAddCountry() {
+export function getAddCountry(data) {
   return request({
     url: "/api/country/add",
-    method: "post"
+    method: "post",
+    data
   })
 }
 // 鍒犻櫎鍥藉
@@ -23,17 +24,19 @@
   })
 }
 // 璁剧疆鍥藉
-export function getSetCountry() {
+export function getSetCountry(data) {
   return request({
     url: "/api/country/set",
-    method: "put"
+    method: "put",
+    data
   })
 }
 // 鏇存柊鍥藉
-export function getUpdateCountry() {
+export function getUpdateCountry(data) {
   return request({
     url: "/api/country/update",
-    method: "put"
+    method: "put",
+    data
   })
 }
 
@@ -45,10 +48,11 @@
   })
 }
 // 娣诲姞鐪佷唤
-export function getAddProvince() {
+export function getAddProvince(data) {
   return request({
     url: "/api/province/add",
-    method: "post"
+    method: "post",
+    data
   })
 }
 // 鍒犻櫎鐪佷唤
@@ -60,16 +64,18 @@
   })
 }
 // 璁剧疆鐪佷唤
-export function getSetProvince() {
+export function getSetProvince(data) {
   return request({
     url: "/api/province/set",
-    method: "put"
+    method: "put",
+    data
   })
 }
 // 鏇存柊鐪佷唤
-export function getUpdateProvince() {
+export function getUpdateProvince(data) {
   return request({
     url: "/api/province/update",
-    method: "put"
+    method: "put",
+    data
   })
 }
diff --git a/src/api/custom/client.js b/src/api/custom/client.js
deleted file mode 100644
index 93a5be5..0000000
--- a/src/api/custom/client.js
+++ /dev/null
@@ -1,31 +0,0 @@
-import request from "@/common/untils/request.js"
-
-// 瀹㈡埛绠$悊鍒楄〃
-export function getClientList() {
-  return request({
-    url: "/api/client/list",
-    method: "get"
-  })
-}
-// 娣诲姞瀹㈡埛绠$悊
-export function getAddClient() {
-  return request({
-    url: "/api/client/add",
-    method: "post"
-  })
-}
-// 鍒犻櫎瀹㈡埛绠$悊
-export function getDeleteClient(data) {
-  return request({
-    url: "/api/client/delete",
-    method: "delete",
-    data
-  })
-}
-// 鏇存柊瀹㈡埛绠$悊
-export function getUpdateClient() {
-  return request({
-    url: "/api/client/update",
-    method: "put"
-  })
-}
diff --git a/src/api/sales/contractManage.js b/src/api/sales/contractManage.js
new file mode 100644
index 0000000..916bc06
--- /dev/null
+++ b/src/api/sales/contractManage.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 閿�鍞満浼氬垪琛�
+export function getContractList() {
+  return request({
+    url: "/api/contract/list",
+    method: "get"
+  })
+}
+// 娣诲姞閿�鍞満浼�
+export function getAddContract(data) {
+  return request({
+    url: "/api/contract/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎閿�鍞満浼�
+export function getDelContract(data) {
+  return request({
+    url: "/api/contract/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊閿�鍞満浼�
+export function getUpdateContract(data) {
+  return request({
+    url: "/api/contract/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/generatePlan.js b/src/api/sales/generatePlan.js
new file mode 100644
index 0000000..e8cc1fe
--- /dev/null
+++ b/src/api/sales/generatePlan.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 鐢熸垚璁″垝鍒楄〃
+export function getPlanList() {
+  return request({
+    url: "/api/plan/list",
+    method: "get"
+  })
+}
+// 娣诲姞鐢熸垚璁″垝
+export function getAddPlan(data) {
+  return request({
+    url: "/api/plan/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎鐢熸垚璁″垝
+export function getDelPlan(data) {
+  return request({
+    url: "/api/plan/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊鐢熸垚璁″垝
+export function getUpdatePlan(data) {
+  return request({
+    url: "/api/plan/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/masterOrder.js b/src/api/sales/masterOrder.js
new file mode 100644
index 0000000..5239ea3
--- /dev/null
+++ b/src/api/sales/masterOrder.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 涓昏鍗曞垪琛�
+export function getMasterOrderList() {
+  return request({
+    url: "/api/masterOrder/list",
+    method: "get"
+  })
+}
+// 娣诲姞涓昏鍗�
+export function getAddMasterOrder(data) {
+  return request({
+    url: "/api/masterOrder/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎涓昏鍗�
+export function getDelMasterOrder(data) {
+  return request({
+    url: "/api/masterOrder/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊涓昏鍗�
+export function getUpdateMasterOrder(data) {
+  return request({
+    url: "/api/masterOrder/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/quotation.js b/src/api/sales/quotation.js
new file mode 100644
index 0000000..9d0aa75
--- /dev/null
+++ b/src/api/sales/quotation.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 鎶ヤ环鍗曞垪琛�
+export function getQuotationList() {
+  return request({
+    url: "/api/quotation/list",
+    method: "get"
+  })
+}
+// 娣诲姞鎶ヤ环鍗�
+export function getAddQuotation(data) {
+  return request({
+    url: "/api/quotation/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎鎶ヤ环鍗�
+export function getDelQuotation(data) {
+  return request({
+    url: "/api/quotation/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊鎶ヤ环鍗�
+export function getUpdateQuotation(data) {
+  return request({
+    url: "/api/quotation/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/refundForm.js b/src/api/sales/refundForm.js
new file mode 100644
index 0000000..0d30811
--- /dev/null
+++ b/src/api/sales/refundForm.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 閿�鍞��娆惧崟鍒楄〃
+export function getSalesRefundList() {
+  return request({
+    url: "/api/salesRefund/list",
+    method: "get"
+  })
+}
+// 娣诲姞閿�鍞��娆惧崟
+export function getAddSalesRefund(data) {
+  return request({
+    url: "/api/salesRefund/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎閿�鍞��娆惧崟
+export function getDelSalesRefund(data) {
+  return request({
+    url: "/api/salesRefund/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊閿�鍞��娆惧崟
+export function getUpdateSalesRefund(data) {
+  return request({
+    url: "/api/salesRefund/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/salesDetails.js b/src/api/sales/salesDetails.js
new file mode 100644
index 0000000..626de4e
--- /dev/null
+++ b/src/api/sales/salesDetails.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 閿�鍞槑缁嗗垪琛�
+export function getSalesDetailsList() {
+  return request({
+    url: "/api/salesDetails/list",
+    method: "get"
+  })
+}
+// 娣诲姞閿�鍞槑缁�
+export function getAddSalesDetails(data) {
+  return request({
+    url: "/api/salesDetails/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎閿�鍞槑缁�
+export function getDelSalesDetails(data) {
+  return request({
+    url: "/api/salesDetails/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊閿�鍞槑缁�
+export function getUpdateSalesDetails(data) {
+  return request({
+    url: "/api/salesDetails/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/salesOpportunity.js b/src/api/sales/salesOpportunity.js
new file mode 100644
index 0000000..608ae87
--- /dev/null
+++ b/src/api/sales/salesOpportunity.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 閿�鍞満浼氬垪琛�
+export function getSaleChanceList() {
+  return request({
+    url: "/api/saleChance/list",
+    method: "get"
+  })
+}
+// 娣诲姞閿�鍞満浼�
+export function getAddSaleChance(data) {
+  return request({
+    url: "/api/saleChance/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎閿�鍞満浼�
+export function getDelSaleChance(data) {
+  return request({
+    url: "/api/saleChance/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊閿�鍞満浼�
+export function getUpdateSaleChance(data) {
+  return request({
+    url: "/api/saleChance/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/salesReturn.js b/src/api/sales/salesReturn.js
new file mode 100644
index 0000000..9b4e41e
--- /dev/null
+++ b/src/api/sales/salesReturn.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 閿�鍞��璐у崟鍒楄〃
+export function getSalesReturnList() {
+  return request({
+    url: "/api/salesReturn/list",
+    method: "get"
+  })
+}
+// 娣诲姞閿�鍞��璐у崟
+export function getAddSalesReturn(data) {
+  return request({
+    url: "/api/salesReturn/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎閿�鍞��璐у崟
+export function getDelSalesReturn(data) {
+  return request({
+    url: "/api/salesReturn/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊閿�鍞��璐у崟
+export function getUpdateSalesReturn(data) {
+  return request({
+    url: "/api/salesReturn/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/sales/subOrder.js b/src/api/sales/subOrder.js
new file mode 100644
index 0000000..e4fa7f5
--- /dev/null
+++ b/src/api/sales/subOrder.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 閿�鍞瓙鍗曞垪琛�
+export function getSubOrderList() {
+  return request({
+    url: "/api/subOrder/list",
+    method: "get"
+  })
+}
+// 娣诲姞閿�鍞瓙鍗�
+export function getAddSubOrder(data) {
+  return request({
+    url: "/api/subOrder/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎閿�鍞瓙鍗�
+export function getDelSubOrder(data) {
+  return request({
+    url: "/api/subOrder/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊閿�鍞瓙鍗�
+export function getUpdateSubOrder(data) {
+  return request({
+    url: "/api/subOrder/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/serviceManage/orderManage.js b/src/api/serviceManage/orderManage.js
new file mode 100644
index 0000000..e5ccf89
--- /dev/null
+++ b/src/api/serviceManage/orderManage.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 宸ュ崟绠$悊鍒楄〃
+export function getOrderManageList() {
+  return request({
+    url: "/api/orderManage/list",
+    method: "get"
+  })
+}
+// 娣诲姞宸ュ崟绠$悊
+export function getAddOrderManage(data) {
+  return request({
+    url: "/api/orderManage/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎宸ュ崟绠$悊
+export function getDelOrderManage(data) {
+  return request({
+    url: "/api/orderManage/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊宸ュ崟绠$悊
+export function getUpdateOrderManage(data) {
+  return request({
+    url: "/api/orderManage/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/serviceManage/serviceContract.js b/src/api/serviceManage/serviceContract.js
new file mode 100644
index 0000000..0e77798
--- /dev/null
+++ b/src/api/serviceManage/serviceContract.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 鏈嶅姟鍚堝悓鍒楄〃
+export function getServiceContractList() {
+  return request({
+    url: "/api/serviceContract/list",
+    method: "get"
+  })
+}
+// 娣诲姞鏈嶅姟鍚堝悓
+export function getAddServiceContract(data) {
+  return request({
+    url: "/api/serviceContract/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎鏈嶅姟鍚堝悓
+export function getDelServiceContract(data) {
+  return request({
+    url: "/api/serviceContract/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊鏈嶅姟鍚堝悓
+export function getUpdateServiceContract(data) {
+  return request({
+    url: "/api/serviceContract/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/serviceManage/serviceFeeManage.js b/src/api/serviceManage/serviceFeeManage.js
new file mode 100644
index 0000000..2d3667f
--- /dev/null
+++ b/src/api/serviceManage/serviceFeeManage.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 鏈嶅姟鏀惰垂绠$悊鍒楄〃
+export function getServiceFeeManageList() {
+  return request({
+    url: "/api/serviceFeeManage/list",
+    method: "get"
+  })
+}
+// 娣诲姞鏈嶅姟鏀惰垂绠$悊
+export function getAddServiceFeeManage(data) {
+  return request({
+    url: "/api/serviceFeeManage/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎鏈嶅姟鏀惰垂绠$悊
+export function getDelServiceFeeManage(data) {
+  return request({
+    url: "/api/serviceFeeManage/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊鏈嶅姟鏀惰垂绠$悊
+export function getUpdateServiceFeeManage(data) {
+  return request({
+    url: "/api/serviceFeeManage/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/api/serviceManage/serviceFollowup.js b/src/api/serviceManage/serviceFollowup.js
new file mode 100644
index 0000000..e7575be
--- /dev/null
+++ b/src/api/serviceManage/serviceFollowup.js
@@ -0,0 +1,33 @@
+import request from "@/common/untils/request.js"
+
+// 鏈嶅姟鍥炶鍗曞垪琛�
+export function getServiceFollowupList() {
+  return request({
+    url: "/api/serviceFollowup/list",
+    method: "get"
+  })
+}
+// 娣诲姞鏈嶅姟鍥炶鍗�
+export function getAddServiceFollowup(data) {
+  return request({
+    url: "/api/serviceFollowup/add",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎鏈嶅姟鍥炶鍗�
+export function getDelServiceFollowup(data) {
+  return request({
+    url: "/api/serviceFollowup/delete",
+    method: "delete",
+    data
+  })
+}
+// 鏇存柊鏈嶅姟鍥炶鍗�
+export function getUpdateServiceFollowup(data) {
+  return request({
+    url: "/api/serviceFollowup/update",
+    method: "put",
+    data
+  })
+}
diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index 27af387..ec14765 100644
--- a/src/components/layout/components/appsidebar/index.vue
+++ b/src/components/layout/components/appsidebar/index.vue
@@ -18,10 +18,10 @@
             <i class="el-icon-location"></i>
             <span>瀹㈡埛绠$悊</span>
           </template>
-          <el-menu-item index="/custom/salesLead">閿�鍞嚎绱�</el-menu-item>
-          <el-menu-item index="/custom/clientManage">瀹㈡埛绠$悊</el-menu-item>
-          <el-menu-item index="/custom/contacts">鑱旂郴浜�</el-menu-item>
-          <el-menu-item index="/custom/followupRecords">璺熻繘璁板綍</el-menu-item>
+          <el-menu-item index="/client/salesLead">閿�鍞嚎绱�</el-menu-item>
+          <el-menu-item index="/client/clientManage">瀹㈡埛绠$悊</el-menu-item>
+          <el-menu-item index="/client/contacts">鑱旂郴浜�</el-menu-item>
+          <el-menu-item index="/client/followupRecords">璺熻繘璁板綍</el-menu-item>
         </el-submenu>
         <el-submenu index="2">
           <template slot="title">
diff --git a/src/router/custom/index.js b/src/router/client/index.js
similarity index 66%
rename from src/router/custom/index.js
rename to src/router/client/index.js
index 1097fdc..5e49572 100644
--- a/src/router/custom/index.js
+++ b/src/router/client/index.js
@@ -1,13 +1,13 @@
 // const type from '@/router/deployCode'
 
-const salesLead = (resolve) => require(["@/views/custom/salesLead/index"], resolve) // 閿�鍞嚎绱�
-const clientManage = (resolve) => require(["@/views/custom/client/index"], resolve) // 瀹㈡埛绠$悊
-const contacts = (resolve) => require(["@/views/custom/contacts/index"], resolve) // 鑱旂郴浜�
-const followupRecords = (resolve) => require(["@/views/custom/followupRecords/index"], resolve) // 璺熻繘璁板綍
+const salesLead = (resolve) => require(["@/views/client/salesLead/index"], resolve) // 閿�鍞嚎绱�
+const clientManage = (resolve) => require(["@/views/client/client/index"], resolve) // 瀹㈡埛绠$悊
+const contacts = (resolve) => require(["@/views/client/contacts/index"], resolve) // 鑱旂郴浜�
+const followupRecords = (resolve) => require(["@/views/client/followupRecords/index"], resolve) // 璺熻繘璁板綍
 
 const appconfig = [
   {
-    path: "/custom/salesLead",
+    path: "/client/salesLead",
     name: "salesLead",
     component: salesLead,
     meta: {
@@ -16,7 +16,7 @@
     }
   },
   {
-    path: "/custom/clientManage",
+    path: "/client/clientManage",
     name: "clientManage",
     component: clientManage,
     meta: {
@@ -25,7 +25,7 @@
     }
   },
   {
-    path: "/custom/contacts",
+    path: "/client/contacts",
     name: "contacts",
     component: contacts,
     meta: {
@@ -34,7 +34,7 @@
     }
   },
   {
-    path: "/custom/followupRecords",
+    path: "/client/followupRecords",
     name: "followupRecords",
     component: followupRecords,
     meta: {
diff --git a/src/router/index.js b/src/router/index.js
index 0ee88e2..9ffe887 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -2,24 +2,24 @@
 import Router from "vue-router"
 // import type from "@/router/deployCode"
 
-import customRouter from "./custom/index.js"
+import clientRouter from "./client/index.js"
 import salesRouter from "./sales/index.js"
 import serviceRouter from "./service/index.js"
 import backgroundConfigRouter from "./backgroundConfig/index.js"
 
 Vue.use(Router)
 const login = (resolve) => require(["@/views/other/login/index"], resolve)
-const custom = (resolve) => require(["@/views/custom/index"], resolve)
+const client = (resolve) => require(["@/views/client/index"], resolve)
 const sales = (resolve) => require(["@/views/sales/index"], resolve)
 const service = (resolve) => require(["@/views/service/index"], resolve)
 const background = (resolve) => require(["@/views/backgroundConfig/index"], resolve)
 
 export const routes = [
   {
-    path: "custom", // 瀹㈡埛绠$悊
-    name: "custom",
-    component: custom,
-    children: customRouter,
+    path: "client", // 瀹㈡埛绠$悊
+    name: "client",
+    component: client,
+    children: clientRouter,
     meta: {
       title: "瀹㈡埛绠$悊",
       isAllways: true
diff --git a/src/views/client/client/AddClientManageDialog.vue b/src/views/client/client/AddClientManageDialog.vue
new file mode 100644
index 0000000..53bb234
--- /dev/null
+++ b/src/views/client/client/AddClientManageDialog.vue
@@ -0,0 +1,750 @@
+<template>
+  <div class="add-client-manage">
+    <el-dialog
+      :title="editClientManageConfig.title + '瀹㈡埛绠$悊'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="308px"
+        size="mini"
+        style="height: 60vh; overflow-x: hidden"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="name">
+                  <div class="client-name">
+                    <el-input v-model="editConfig.infomation.name"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-house" title="宸ュ晢鏌ヨ"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-search" title="鏌ラ噸"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛缂栧彿" prop="number">
+                  <el-input v-model="editConfig.infomation.number"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鐘舵��" prop="client_status_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.client_status_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in clientStatusOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞礋璐d汉" prop="member_id">
+                  <el-select
+                    v-model="editConfig.infomation.member_id"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 63%"
+                  >
+                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛绫诲瀷" prop="client_type_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.client_type_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in clientTypeOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鏉ユ簮" prop="client_origin_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.client_origin_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in clientSourceOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn" @click="editDropdownBox">
+                      <i class="el-icon-setting"></i>
+                    </div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閲嶈绾у埆" prop="client_level_id">
+                  <el-select
+                    v-model="editConfig.infomation.client_level_id"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 63%"
+                  >
+                    <el-option v-for="item in importantLevelOptions" :key="item.id" :label="item.name" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :span="12">
+                <el-form-item label="鏈嶅姟浠h〃" prop="service_member_id">
+                  <el-select
+                    v-model="editConfig.infomation.service_member_id"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 63%"
+                  >
+                    <el-option v-for="item in serviceAgentOptions" :key="item.id" :label="item.name" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col> -->
+              <el-col :span="12">
+                <el-form-item label="涓嬫鍥炶鏃ユ湡" prop="next_visit_time">
+                  <el-date-picker v-model="editConfig.infomation.next_visit_time" type="date" placeholder="閫夋嫨鏃ユ湡">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鏈�鏅氭湇鍔″埌鏈熸棩" prop="latest_service_time">
+                  <el-date-picker
+                    v-model="editConfig.infomation.latest_service_time"
+                    type="date"
+                    placeholder="閫夋嫨鏃ユ湡"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 瀹㈡埛棣栬鑱旂郴浜� -->
+          <div class="basic-info-title">瀹㈡埛棣栬鑱旂郴浜�</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜哄鍚�" prop="contact_name">
+                  <el-input v-model="editConfig.infomation.contact_name"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜烘墜鏈�" prop="contact_phone">
+                  <el-input v-model="editConfig.infomation.contact_phone"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜鸿亴鍔�" prop="contact_duties">
+                  <el-input v-model="editConfig.infomation.contact_duties"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜哄井淇�" prop="contact_wechat">
+                  <el-input v-model="editConfig.infomation.contact_wechat"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜篍mail" prop="contact_email">
+                  <el-input v-model="editConfig.infomation.contact_email"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 宸ュ晢淇℃伅 -->
+          <div class="basic-info-title">宸ュ晢淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鎵�灞炶涓�" prop="industry_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.industry_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in industryOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="娉曞畾浠h〃浜�" prop="representative">
+                  <el-input v-model="editConfig.infomation.representative"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="娉ㄥ唽鏃堕棿" prop="registration_time">
+                  <el-date-picker
+                    v-model="editConfig.infomation.registration_time"
+                    type="datetime"
+                    placeholder="閫夋嫨鏃ユ湡鏃堕棿"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="娉ㄥ唽璧勯噾" prop="registered_capital_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.registered_capital_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option
+                        v-for="item in registerCapitalOptions"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id"
+                      >
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍏徃鎬ц川" prop="enterprise_nature_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.enterprise_nature_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option
+                        v-for="item in enterpriseNatureOptions"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id"
+                      >
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛瑙勬ā" prop="enterprise_scale_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.enterprise_scale_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option
+                        v-for="item in enterpriseScaleOptions"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id"
+                      >
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="缁忚惀鑼冨洿" prop="business_scope">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2, maxRows: 4 }"
+                    placeholder="璇疯緭鍏ュ唴瀹�"
+                    v-model="editConfig.infomation.business_scope"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 鍦板潃淇℃伅 -->
+          <div class="basic-info-title">鍦板潃淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <!-- <el-col :span="24">
+                <el-form-item label="瀹氫綅" prop="position">
+                  <el-input v-model="editConfig.infomation.position"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="鍦板浘" prop="map">
+                  <div style="height: 100px"></div>
+                </el-form-item>
+              </el-col> -->
+              <el-col :span="12">
+                <el-form-item label="鍥藉" prop="country_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.country_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in countryOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鐪佷唤" prop="province_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.province_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in provinceOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍩庡競" prop="city_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.city_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in cityOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍖哄煙" prop="region_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.region_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in regionOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="璇︾粏鍦板潃" prop="detail_address">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2, maxRows: 4 }"
+                    placeholder="璇疯緭鍏ュ唴瀹�"
+                    v-model="editConfig.infomation.detail_address"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 澶囨敞淇℃伅 -->
+          <div class="basic-info-title">澶囨敞淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="澶囨敞" prop="remark">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2, maxRows: 4 }"
+                    placeholder="璇疯緭鍏ュ唴瀹�"
+                    v-model="editConfig.infomation.remark"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 闄勪欢淇℃伅 -->
+          <!-- <div class="basic-info-title">闄勪欢淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
+                  <div class="annex-view">
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
+                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div> -->
+          <!-- 閫夋嫨瀹℃壒娴佺▼ -->
+          <!-- <div class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒娴佺▼" prop="approvalWorkflow">
+                  <el-select
+                    v-model="editConfig.infomation.approvalWorkflow"
+                    placeholder="璇烽�夋嫨"
+                    size="mini"
+                    style="width: 100%"
+                  >
+                    <el-option
+                      v-for="item in approvalWorkflowOptions"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value"
+                    >
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒姝ラ" prop="approvalSteps">
+                  <el-input v-model="editConfig.infomation.approvalSteps"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒浜�" prop="approvalPerson">
+                  <el-input v-model="editConfig.infomation.approvalPerson"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="闇�瑕佸姞鎬ュ鎵�" prop="approvalUrgent">
+                  <el-checkbox v-model="editConfig.infomation.approvalUrgent"></el-checkbox>
+                </el-form-item>
+              </el-col>
+              <el-col :span="20">
+                <el-form-item label="瀹℃壒鎰忚" prop="approvalOpinion">
+                  <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div> -->
+        </div>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <!-- <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button> -->
+        <el-button type="primary" size="small" @click="saveClick('form')">淇濆瓨</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getAllData, getAddClient, getUpdateClient } from "@/api/client/client"
+import { dateFormat } from "@/common/config/index"
+export default {
+  name: "AddClientManageDialog",
+  props: {
+    editClientManageConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          infomation: {
+            name: "",
+            number: "AC6521",
+            client_status_id: "",
+            member_id: "5",
+            client_type_id: "",
+            clientSource: "",
+            client_level_id: "",
+            service_member_id: "",
+            next_visit_time: "",
+            latest_service_time: "",
+            contact_name: "",
+            contact_phone: "",
+            contact_duties: "",
+            contact_wechat: "1",
+            contact_email: "",
+            industry_id: "",
+            representative: "",
+            registration_time: "",
+            registered_capital_id: "",
+            enterprise_nature_id: "",
+            enterprise_scale_id: "",
+            business_scope: "",
+            country_id: "",
+            province_id: "",
+            city_id: "",
+            region_id: "",
+            detail_address: "",
+            remark: ""
+          }
+        }
+      }
+    }
+  },
+  components: {},
+  computed: {
+    searchCommonHeight() {
+      return this.$refs.searchCommonView.offsetHeight
+    }
+  },
+  data() {
+    return {
+      dialogWidth: "80%",
+      editConfig: this.editClientManageConfig,
+      rules: {
+        name: [{ required: true, message: "璇疯緭鍏ュ鎴峰悕绉�", trigger: "blur" }],
+        client_status_id: [{ required: true, message: "璇烽�夋嫨瀹㈡埛鐘舵��", trigger: "change" }],
+        member_id: [{ required: true, message: "璇烽�夋嫨閿�鍞礋璐d汉", trigger: "change" }],
+        approvalOpinion: [{ required: true, message: "璇疯緭鍏ュ鎵规剰瑙�", trigger: "blur" }]
+      },
+      memberOptions: [],
+      clientStatusOptions: [], // 瀹㈡埛鐘舵��
+      clientTypeOptions: [], // 瀹㈡埛绫诲瀷
+      clientSourceOptions: [], // 瀹㈡埛鏉ユ簮
+      importantLevelOptions: [], // 閲嶈绾у埆
+      // serviceAgentOptions: [], // 鏈嶅姟浠h〃
+      industryOptions: [], // 鎵�灞炶涓�
+      registerCapitalOptions: [], // 娉ㄥ唽璧勯噾
+      enterpriseNatureOptions: [], // 鍏徃鎬ц川
+      enterpriseScaleOptions: [], // 瀹㈡埛瑙勬ā
+      countryOptions: [], // 鍥藉
+      provinceOptions: [], // 鐪佷唤
+      cityOptions: [], // 鍩庡競
+      regionOptions: [], // 鍖哄煙
+      approvalWorkflowOptions: [] // 瀹℃壒娴佺▼
+    }
+  },
+  created() {
+    this.getCommonData()
+  },
+  methods: {
+    getCommonData() {
+      getAllData()
+        .then((res) => {
+          console.log(res)
+          this.memberOptions = res.data.member
+          this.clientSourceOptions = res.data.client_origin
+          this.clientStatusOptions = res.data.client_status
+          this.importantLevelOptions = res.data.client_level
+          this.clientTypeOptions = res.data.client_type
+          this.industryOptions = res.data.industry
+          this.registerCapitalOptions = res.data.registered_capital
+          this.enterpriseNatureOptions = res.data.enterprise_nature
+          this.enterpriseScaleOptions = res.data.enterprise_scale
+          this.countryOptions = res.data.country
+          this.provinceOptions = res.data.province
+          this.cityOptions = res.data.city
+          this.regionOptions = res.data.region
+        })
+        .catch((err) => {
+          console.log(err)
+        })
+    },
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 淇濆瓨
+    saveClick(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          console.log(this.editConfig.infomation)
+          const params = this.saveParams()
+          console.log(params)
+          if (this.editConfig.title === "鏂板缓") {
+            getAddClient(params)
+              .then((res) => {
+                console.log(res)
+                this.editConfig.visible = false
+                if (res.code === 200) {
+                  this.$message({
+                    message: "娣诲姞鎴愬姛",
+                    type: "success"
+                  })
+                  this.$parent.getData()
+                }
+              })
+              .catch((err) => {
+                console.log(err)
+              })
+          } else {
+            getUpdateClient(params)
+              .then((res) => {
+                console.log(res)
+                this.editConfig.visible = false
+                if (res.code === 200) {
+                  this.$message({
+                    message: "缂栬緫鎴愬姛",
+                    type: "success"
+                  })
+                  this.$parent.getData()
+                }
+              })
+              .catch((err) => {
+                console.log(err)
+              })
+          }
+        } else {
+          console.log("error submit")
+          return false
+        }
+      })
+    },
+    saveParams() {
+      let data = this.editConfig.infomation
+      let params = {
+        id: this.editConfig.title === "鏂板缓" ? 0 : data.id,
+        business_scope: data.business_scope,
+        city_id: 0,
+        client_level_id: data.client_level_id || 0,
+        client_origin_id: data.client_origin_id || 0,
+        client_status_id: data.client_status_id || 0,
+        client_type_id: data.client_type_id || 0,
+        contact: {
+          birthday: "1970-01-01 08:00:00",
+          city_id: 0,
+          client_id: 0,
+          country_id: 0,
+          desc: "string",
+          email: data.contact_email || "",
+          is_first: true,
+          member_id: 0,
+          name: data.contact_name || "",
+          number: "string",
+          phone: data.contact_phone || "",
+          position: data.contact_duties || "",
+          province_id: 0,
+          region_id: 0,
+          wechat: data.contact_wechat || ""
+        },
+        country_id: 0,
+        detail_address: data.detail_address || "",
+        enterprise_nature_id: data.enterprise_nature_id || 0,
+        enterprise_scale_id: data.enterprise_scale_id || 0,
+        industry_id: data.industry_id || 0,
+        latest_service_time: dateFormat("YYYY-mm-dd HH:MM:ss", data.latest_service_time) || "",
+        member_id: parseInt(data.member_id) || 0,
+        name: data.name || "",
+        next_visit_time: data.next_visit_time || "",
+        number: data.number || "",
+        province_id: 0,
+        region_id: 0,
+        registered_capital_id: data.registered_capital_id || 0,
+        registration_time: data.registration_time || "",
+        remark: data.remark || "",
+        representative: data.representative || "",
+        service_member_id: data.service_member_id || 0
+      }
+      return params
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {},
+    // 缂栬緫涓嬫媺妗�
+    editDropdownBox() {
+      console.log("aaa")
+      this.editDropdownConfig.editVisible = true
+      this.editDropdownConfig.title = "瀹㈡埛鏉ユ簮"
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-client-manage {
+  .basic-info {
+    .basic-info-title {
+      background-color: #f4f8fe;
+      padding-left: 10px;
+      font-size: 15px;
+      font-weight: bold;
+      color: #666;
+      height: 42px;
+      line-height: 42px;
+    }
+    .basic-info-view {
+      margin-top: 10px;
+      padding-right: 40px;
+      .client-name {
+        display: flex;
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 18px;
+        }
+      }
+      .common-select {
+        display: flex;
+        .common-select-sel {
+          width: 270px;
+        }
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 16px;
+          cursor: pointer;
+        }
+      }
+    }
+    // .address-view {
+    //   margin-top: 10px;
+    //   padding-right: 40px;
+    // }
+    .annex-view {
+      display: flex;
+      color: #6166d3;
+      .setFormat {
+        margin-left: 10px;
+      }
+    }
+  }
+  .unflod-collapse {
+    display: flex;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    color: #6166d3;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+</style>
diff --git a/src/views/custom/client/index.vue b/src/views/client/client/index.vue
similarity index 65%
rename from src/views/custom/client/index.vue
rename to src/views/client/client/index.vue
index 0f5da51..bb3fb91 100644
--- a/src/views/custom/client/index.vue
+++ b/src/views/client/client/index.vue
@@ -46,8 +46,8 @@
 </template>
 
 <script>
-import AddClientManageDialog from "@/views/custom/client/AddClientManageDialog"
-import { getClientList } from "@/api/custom/client"
+import AddClientManageDialog from "@/views/client/client/AddClientManageDialog.vue"
+import { getClientList } from "@/api/client/client"
 import { dateFormat } from "@/common/config/index"
 export default {
   name: "CustomManage",
@@ -103,14 +103,13 @@
         tableInfomation: [],
         tableColumn: [
           { label: "瀹㈡埛鍚嶇О", prop: "name", min: 100 }, // 瀹㈡埛鍚嶇О
-          { label: "閿�鍞礋璐d汉", prop: "service_member_id" }, // 閿�鍞礋璐d汉
-          { label: "閲嶈绾у埆", prop: "importantLevel" }, // 閲嶈绾у埆
+          { label: "閿�鍞礋璐d汉", prop: "member_id" }, // 閿�鍞礋璐d汉
+          { label: "閲嶈绾у埆", prop: "client_level_id" }, // 閲嶈绾у埆
           { label: "涓嬫鍥炶鏃ユ湡", prop: "next_visit_time", min: 90 }, // 涓嬫鍥炶鏃ユ湡
-          { label: "鎵嬫満鍙风爜", prop: "phoneNumber" }, // 鎵嬫満鍙风爜
           { label: "璇︾粏鍦板潃", prop: "detail_address", min: 200 }, // 璇︾粏鍦板潃
           { label: "瀹㈡埛鐘舵��", prop: "client_status_id" }, // 瀹㈡埛鐘舵��
           { label: "鑱旂郴浜哄鍚�", prop: "contact_name" }, // 鑱旂郴浜哄鍚�
-          { label: "鎵嬫満", prop: "phone" } // 鎵嬫満鍙风爜
+          { label: "鎵嬫満鍙风爜", prop: "contact_phone" } // 鎵嬫満鍙风爜
         ]
       }
       this.searchOptions = []
@@ -128,16 +127,22 @@
           if (res.code === 200) {
             if (res.data.list && res.data.list.length > 0) {
               const list = res.data.list.map((item) => {
+                let contact_name = ""
+                let contact_phone = ""
+                if (item.contacts.length !== 0) {
+                  for (let i = 0; i < item.contacts.length; i++) {
+                    if (item.contacts[i].is_first) {
+                      contact_name = item.contacts[i].name
+                      contact_phone = item.contacts[i].phone
+                    }
+                  }
+                }
+
                 return {
-                  name: item.name,
-                  service_member_id: item.service_member_id,
-                  importantLevel: "",
-                  next_visit_time: dateFormat("YYYY-mm-dd HH:MM", item.next_visit_time),
-                  phoneNumber: "",
-                  detail_address: item.detail_address,
-                  client_status_id: item.client_status_id,
-                  contact_name: "",
-                  phone: ""
+                  ...item,
+                  next_visit_time: dateFormat("YYYY-mm-dd HH:MM:ss", item.next_visit_time),
+                  contact_name: contact_name,
+                  contact_phone: contact_phone
                 }
               })
               this.tableList.tableInfomation = list || []
@@ -163,40 +168,34 @@
       this.editConfig.visible = true
       this.editConfig.title = "鏂板缓"
       this.editConfig.infomation = {
-        customName: "",
-        customNumber: "AC6521",
-        customStatus: "",
-        salesHead: "5",
-        customType: "",
-        customSource: "",
-        importantLevel: "",
-        serviceAgent: "",
-        nextFollowupDate: "",
-        latestServiceDate: "",
-        contactName: "",
-        phoneNumber: "",
-        duties: "",
-        wechat: "1",
-        contactsEmail: "",
-        industry: "",
-        legalPerson: "",
-        registerTime: "",
-        registerCapital: "",
-        companyNature: "",
-        customerSize: "",
-        operateRange: "",
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        notes: "",
-        approvalWorkflow: "",
-        approvalSteps: "",
-        approvalPerson: "",
-        approvalUrgent: "",
-        approvalOpinion: ""
+        name: "",
+        number: "",
+        client_status_id: "",
+        member_id: "",
+        client_type_id: "",
+        clientSource: "",
+        client_level_id: "",
+        service_member_id: "",
+        next_visit_time: "",
+        latest_service_time: "",
+        contact_name: "",
+        contact_phone: "",
+        contact_duties: "",
+        contact_wechat: "",
+        contact_email: "",
+        industry_id: "",
+        representative: "",
+        registration_time: "",
+        registered_capital_id: "",
+        enterprise_nature_id: "",
+        enterprise_scale_id: "",
+        business_scope: "",
+        country: "",
+        province: "",
+        city: "",
+        region: "",
+        detail_address: "",
+        remark: ""
       }
     },
     // 缂栬緫
@@ -204,41 +203,45 @@
       console.log(row)
       this.editConfig.visible = true
       this.editConfig.title = "缂栬緫"
+      let contactObj = {}
+      if (row.contacts.length > 0) {
+        row.contacts.forEach((ele) => {
+          if (ele.is_first) {
+            contactObj = { ...ele }
+          }
+        })
+      }
+      console.log(contactObj)
       this.editConfig.infomation = {
-        customName: row.customName,
-        customNumber: "AC6521",
-        customStatus: "",
-        salesHead: row.salesHead,
-        customType: "",
-        customSource: "",
-        importantLevel: "",
-        serviceAgent: "",
-        nextFollowupDate: row.nextFollowupDate,
-        latestServiceDate: "",
-        contactName: row.contactName,
-        phoneNumber: row.phoneNumber,
-        duties: "",
-        wechat: "1",
-        contactsEmail: "",
-        industry: "",
-        legalPerson: "",
-        registerTime: "",
-        registerCapital: "",
-        companyNature: "",
-        customerSize: "",
-        operateRange: "",
-        position: "",
-        map: "",
-        country: "1",
-        province: "1",
-        city: "1",
-        region: "1",
-        notes: "",
-        approvalWorkflow: "",
-        approvalSteps: "",
-        approvalPerson: "",
-        approvalUrgent: "",
-        approvalOpinion: ""
+        id: row.id,
+        name: row.name,
+        number: row.number,
+        client_status_id: row.client_status_id,
+        member_id: row.member_id,
+        client_type_id: row.client_type_id,
+        clientSource: row.clientSource,
+        client_level_id: row.client_level_id,
+        service_member_id: row.service_member_id,
+        next_visit_time: row.next_visit_time,
+        latest_service_time: row.latest_service_time,
+        contact_name: row.contact_name,
+        contact_phone: row.contact_phone,
+        contact_duties: "",
+        contact_wechat: contactObj.length > 0 ? contactObj.wechat : "",
+        contact_email: contactObj.length > 0 ? contactObj.email : "",
+        industry_id: row.industry_id,
+        representative: row.representative,
+        registration_time: row.registration_time,
+        registered_capital_id: row.registered_capital_id,
+        enterprise_nature_id: row.enterprise_nature_id,
+        enterprise_scale_id: row.enterprise_scale_id,
+        business_scope: row.business_scope,
+        country: row.country,
+        province: row.province,
+        city: row.city,
+        region: row.region,
+        detail_address: row.detail_address,
+        remark: row.remark
       }
     }
   }
diff --git a/src/views/client/contacts/AddContactsDialog.vue b/src/views/client/contacts/AddContactsDialog.vue
new file mode 100644
index 0000000..031c837
--- /dev/null
+++ b/src/views/client/contacts/AddContactsDialog.vue
@@ -0,0 +1,446 @@
+<template>
+  <div class="add-contacts">
+    <el-dialog
+      :title="editContactsConfig.title + '鑱旂郴浜�'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="308px"
+        size="mini"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div v-if="isUnflod" class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜哄鍚�" prop="name">
+                  <el-input v-model="editConfig.infomation.name"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12" v-if="isUnflod">
+                <el-form-item label="鑱旂郴浜虹紪鍙�" prop="number">
+                  <el-input v-model="editConfig.infomation.number"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="client_id">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.client_id"></el-input>
+                    <div class="common-select-btn">
+                      <i class="el-icon-circle-plus-outline"></i>
+                    </div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鎵嬫満" prop="phone">
+                  <el-input v-model="editConfig.infomation.phone"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱屽姟" prop="position">
+                  <el-input v-model="editConfig.infomation.position"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="isUnflod" label="閿�鍞礋璐d汉" prop="member_id">
+                  <el-select v-model="editConfig.infomation.member_id" placeholder="璇烽�夋嫨" size="mini">
+                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="isUnflod" label="棣栬鑱旂郴浜�" prop="is_first">
+                  <el-switch v-model="editConfig.infomation.is_first" active-color="#2E68DB" inactive-color="#AEB9CA">
+                  </el-switch>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="isUnflod" label="寰俊鍙�" prop="wechat">
+                  <el-input v-model="editConfig.infomation.wechat"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="isUnflod" label="鐢熸棩" prop="birthday">
+                  <el-date-picker v-model="editConfig.infomation.birthday" type="date" placeholder="閫夋嫨鏃ユ湡">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜篍mail" prop="email">
+                  <el-input v-model="editConfig.infomation.email"></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 鍦板潃淇℃伅 -->
+          <div v-if="isUnflod" class="basic-info-title">鍦板潃淇℃伅</div>
+          <div v-if="isUnflod" class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="鍥藉" prop="country_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.country_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in countryOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鐪佷唤" prop="province_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.province_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in provinceOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍩庡競" prop="city_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.city_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in cityOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍖哄煙" prop="region_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.region_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in regionOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <!-- <el-col :span="12">
+                <el-form-item label="閭紪" prop="postalCode">
+                  <el-input v-model="editConfig.infomation.postalCode"></el-input>
+                </el-form-item>
+              </el-col> -->
+            </el-row>
+          </div>
+          <!-- 澶囨敞淇℃伅 -->
+          <div v-if="isUnflod" class="basic-info-title">澶囨敞淇℃伅</div>
+          <div v-if="isUnflod" class="basic-info-view">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="澶囨敞" prop="notes">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2, maxRows: 4 }"
+                    placeholder="璇疯緭鍏ュ唴瀹�"
+                    v-model="editConfig.infomation.notes"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 闄勪欢淇℃伅 -->
+          <!-- <div v-if="isUnflod" class="basic-info-title">闄勪欢淇℃伅</div>
+          <div v-if="isUnflod" class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
+                  <div class="annex-view">
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
+                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div> -->
+        </div>
+        <!-- 灞曞紑鏀惰捣 -->
+        <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick">
+          <div>{{ unflodCollapseStr }}</div>
+          <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
+          <div v-else><i class="el-icon-arrow-down"></i></div>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="small" @click="saveClick('form')">淇� 瀛�</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getAddContact, getUpdateContact } from "@/api/client/contacts"
+import { getAllData } from "@/api/client/client"
+export default {
+  name: "AddContactsDialog",
+  props: {
+    editContactsConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          infomation: {
+            name: "",
+            number: "LEA50",
+            client_id: "",
+            phone: "",
+            position: "",
+            member_id: "5",
+            is_first: false,
+            wechat: "1",
+            birthday: "",
+            email: "",
+            nextFollowupDate: "",
+            country_id: "",
+            province_id: "",
+            city_id: "",
+            region_id: "",
+            postalCode: "",
+            notes: ""
+          }
+        }
+      }
+    }
+  },
+  components: {},
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "80%",
+      editConfig: this.editContactsConfig,
+      rules: {
+        name: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        number: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+        member_id: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }]
+      },
+      businessSourceOptions: [
+        { value: "1", label: "鍚庡彴娉ㄥ唽" },
+        { value: "2", label: "浠g悊鍟嗗鎴�" },
+        { value: "3", label: "鐢佃瘽闄岀敓鎷滆" },
+        { value: "4", label: "鐩存帴璁块棶" },
+        { value: "5", label: "椤圭洰鍚堜綔" },
+        { value: "6", label: "涓汉鑷壘" },
+        { value: "7", label: "浜屾閿�鍞�" },
+        { value: "8", label: "鍏徃鐢佃瘽" }
+      ],
+      memberOptions: [],
+      countryOptions: [], // 鍥藉
+      provinceOptions: [], // 鐪佷唤
+      cityOptions: [], // 鍩庡競
+      regionOptions: [], // 鍖哄煙
+      unflodCollapseStr: "鏀惰捣",
+      isUnflod: true
+    }
+  },
+  created() {
+    this.getCommonData()
+  },
+  methods: {
+    getCommonData() {
+      getAllData()
+        .then((res) => {
+          console.log(res)
+          this.memberOptions = res.data.member
+          this.countryOptions = res.data.country
+          this.provinceOptions = res.data.province
+          this.cityOptions = res.data.city
+          this.regionOptions = res.data.region
+        })
+        .catch((err) => {
+          console.log(err)
+        })
+    },
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 淇濆瓨
+    saveClick(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          console.log(this.editConfig.infomation)
+          const params = this.saveParams()
+          console.log(params)
+          if (this.editConfig.title === "鏂板缓") {
+            getAddContact(params)
+              .then((res) => {
+                console.log(res)
+                this.editConfig.visible = false
+                if (res.code === 200) {
+                  this.$message({
+                    message: "娣诲姞鎴愬姛",
+                    type: "success"
+                  })
+                  this.$parent.getData()
+                }
+              })
+              .catch((err) => {
+                console.log(err)
+              })
+          } else {
+            getUpdateContact(params)
+              .then((res) => {
+                console.log(res)
+                this.editConfig.visible = false
+                if (res.code === 200) {
+                  this.$message({
+                    message: "缂栬緫鎴愬姛",
+                    type: "success"
+                  })
+                  this.$parent.getData()
+                }
+              })
+              .catch((err) => {
+                console.log(err)
+              })
+          }
+        } else {
+          console.log("error submit")
+          return false
+        }
+      })
+    },
+    saveParams() {
+      let data = this.editConfig.infomation
+      let params = {
+        birthday: data.birthday || "",
+        city_id: data.city_id || 0,
+        client_id: 0,
+        country_id: data.country_id || 0,
+        desc: data.desc || "",
+        email: data.email || "",
+        is_first: data.is_first || false,
+        member_id: data.member_id || 0,
+        name: data.name || "",
+        number: data.number || "",
+        phone: data.phone || "",
+        position: data.position || "",
+        province_id: data.province_id || 0,
+        region_id: data.region_id || 0,
+        wechat: data.wechat || ""
+      }
+      return params
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {},
+    // 灞曞紑鏀惰捣
+    unflodCollapseClick() {
+      if (this.unflodCollapseStr === "鏀惰捣") {
+        this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰"
+        this.isUnflod = false
+      } else {
+        this.unflodCollapseStr = "鏀惰捣"
+        this.isUnflod = true
+      }
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-contacts {
+  .basic-info {
+    .basic-info-title {
+      background-color: #f4f8fe;
+      padding-left: 10px;
+      font-size: 15px;
+      font-weight: bold;
+      color: #666;
+      height: 42px;
+      line-height: 42px;
+    }
+    .basic-info-view {
+      margin-top: 10px;
+      padding-right: 40px;
+      .custom-name {
+        display: flex;
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 16px;
+        }
+      }
+      .common-select {
+        display: flex;
+        .common-select-sel {
+          width: 270px;
+        }
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 16px;
+          cursor: pointer;
+        }
+      }
+    }
+    .annex-view {
+      display: flex;
+      color: #6166d3;
+      .setFormat {
+        margin-left: 10px;
+      }
+    }
+  }
+  .unflod-collapse {
+    display: flex;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    color: #6166d3;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+</style>
diff --git a/src/views/custom/contacts/index.vue b/src/views/client/contacts/index.vue
similarity index 88%
rename from src/views/custom/contacts/index.vue
rename to src/views/client/contacts/index.vue
index 871f24b..00d264c 100644
--- a/src/views/custom/contacts/index.vue
+++ b/src/views/client/contacts/index.vue
@@ -21,8 +21,8 @@
 </template>
 
 <script>
-import AddContactsDialog from "@/views/custom/contacts/AddContactsDialog"
-import { getContactList } from "@/api/custom/contacts"
+import AddContactsDialog from "@/views/client/contacts/AddContactsDialog"
+import { getContactList } from "@/api/client/contacts"
 export default {
   name: "ContactsView",
   props: {},
@@ -68,13 +68,13 @@
       this.tableList = {
         tableInfomation: [],
         tableColumn: [
-          { label: "鑱旂郴浜哄鍚�", prop: "contactName", min: 100 }, // 鑱旂郴浜哄鍚�
+          { label: "鑱旂郴浜哄鍚�", prop: "name", min: 100 }, // 鑱旂郴浜哄鍚�
           { label: "瀹㈡埛鍚嶇О", prop: "client_name", min: 190 }, // 瀹㈡埛鍚嶇О
           { label: "鑱旂郴浜虹紪鍙�", prop: "number", min: 100 }, // 鑱旂郴浜虹紪鍙�
-          { label: "鑱屽姟", prop: "duties", min: 120 }, // 鑱屽姟
+          { label: "鑱屽姟", prop: "position", min: 120 }, // 鑱屽姟
           { label: "鎵嬫満", prop: "phone", min: 100 }, // 鎵嬫満鍙风爜
-          { label: "閿�鍞礋璐d汉", prop: "salesHead", min: 120 }, // 閿�鍞礋璐d汉
-          { label: "棣栬鑱旂郴浜�", prop: "name", min: 90 } // 棣栬鑱旂郴浜�
+          { label: "閿�鍞礋璐d汉", prop: "member_id", min: 120 }, // 閿�鍞礋璐d汉
+          { label: "棣栬鑱旂郴浜�", prop: "is_first", min: 90 } // 棣栬鑱旂郴浜�
         ]
       }
       this.searchOptions = []
@@ -93,13 +93,9 @@
             if (res.data.list && res.data.list.length > 0) {
               const list = res.data.list.map((item) => {
                 return {
-                  contactName: "",
+                  ...item,
                   client_name: item.Client.name,
-                  number: item.number,
-                  duties: "",
-                  phone: item.phone,
-                  salesHead: "",
-                  name: item.name
+                  is_first: item.is_first ? "鏄�" : "鍚�"
                 }
               })
               this.tableList.tableInfomation = list || []
diff --git a/src/views/client/followupRecords/AddFollowupRecordsDialog.vue b/src/views/client/followupRecords/AddFollowupRecordsDialog.vue
new file mode 100644
index 0000000..5bcefd8
--- /dev/null
+++ b/src/views/client/followupRecords/AddFollowupRecordsDialog.vue
@@ -0,0 +1,406 @@
+<template>
+  <div class="add-followup-records">
+    <el-dialog
+      :title="editContactsConfig.title + '璺熻繘璁板綍'"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <el-form
+        ref="form"
+        :model="editConfig.infomation"
+        :rules="rules"
+        label-position="right"
+        label-width="308px"
+        size="mini"
+      >
+        <!-- 淇℃伅 -->
+        <div class="basic-info">
+          <!-- 鍩烘湰淇℃伅 -->
+          <div v-if="isUnflod" class="basic-info-title">鍩烘湰淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="瀹㈡埛鍚嶇О" prop="client_id">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.client_id"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12" v-if="isUnflod">
+                <el-form-item label="璺熻繘璁板綍缂栧彿" prop="number">
+                  <el-input v-model="editConfig.infomation.number"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col v-if="isUnflod" :span="12">
+                <el-form-item label="瀹㈡埛鐘舵��" prop="client_status_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.client_status_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in clientStatusOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴浜哄鍚�" prop="contact_id">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.contact_id"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item v-if="isUnflod" label="璐熻矗浜�" prop="member_id">
+                  <el-select v-model="editConfig.infomation.member_id" placeholder="璇烽�夋嫨" size="mini">
+                    <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="涓婚" prop="topic">
+                  <el-input v-model="editConfig.infomation.topic"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="isUnflod ? 24 : 12">
+                <el-form-item label="璺熻繘璁板綍" prop="record">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2, maxRows: 4 }"
+                    v-model="editConfig.infomation.record"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴鏂瑰紡" prop="phoneNumber">
+                  <el-input v-model="editConfig.infomation.phoneNumber"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col v-if="isUnflod" :span="12">
+                <el-form-item label="閿�鍞満浼�" prop="sale_chance_id">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.sale_chance_id"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="閿�鍞嚎绱�" prop="sales_leads_id">
+                  <div class="custom-name">
+                    <el-input v-model="editConfig.infomation.sales_leads_id"></el-input>
+                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
+                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鑱旂郴鏃ユ湡" prop="follow_time">
+                  <el-date-picker v-model="editConfig.infomation.follow_time" type="date" placeholder="閫夋嫨鏃ユ湡">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="涓嬫鍥炶鏃ユ湡" prop="next_follow_time">
+                  <el-date-picker v-model="editConfig.infomation.next_follow_time" type="date" placeholder="閫夋嫨鏃ユ湡">
+                  </el-date-picker>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 澶囨敞淇℃伅 -->
+          <div v-if="isUnflod" class="basic-info-title">澶囨敞淇℃伅</div>
+          <div class="basic-info-view">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="鎷滆鐩殑" prop="purpose">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2, maxRows: 4 }"
+                    v-model="editConfig.infomation.purpose"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item label="鍐呭" prop="content">
+                  <el-input
+                    type="textarea"
+                    :autosize="{ minRows: 2, maxRows: 4 }"
+                    v-model="editConfig.infomation.content"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div>
+          <!-- 闄勪欢淇℃伅 -->
+          <!-- <div v-if="isUnflod" class="basic-info-title">闄勪欢淇℃伅</div>
+          <div v-if="isUnflod" class="basic-info-view">
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="闄勪欢" prop="">
+                  <template slot="label">
+                    <div style="display: flex; float: right">
+                      <div style="font-size: 16px">
+                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
+                      </div>
+                      <span style="margin-left: 5px">闄勪欢</span>
+                    </div>
+                  </template>
+                  <div class="annex-view">
+                    <div @click="addAnnexClick">
+                      <div style="display: flex; float: right">
+                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
+                        <span>娣诲姞</span>
+                      </div>
+                    </div>
+                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
+                  </div>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </div> -->
+        </div>
+        <!-- 灞曞紑鏀惰捣 -->
+        <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick">
+          <div>{{ unflodCollapseStr }}</div>
+          <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
+          <div v-else><i class="el-icon-arrow-down"></i></div>
+        </div>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="small" @click="saveClick('form')">淇� 瀛�</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getAllData } from "@/api/client/client"
+import { getAddFollowRecord, getUpdateFollowRecord } from "@/api/client/followupRecords"
+export default {
+  name: "AddFollowupRecordsDialog",
+  props: {
+    editContactsConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          title: "鏂板缓",
+          infomation: {
+            client_id: "",
+            number: "",
+            client_status_id: "",
+            contact_id: "",
+            member_id: "",
+            topic: "",
+            record: "",
+            phoneNumber: "",
+            sale_chance_id: "",
+            sales_leads_id: "",
+            follow_time: "",
+            next_follow_time: "",
+            purpose: "",
+            content: ""
+          }
+        }
+      }
+    }
+  },
+  components: {},
+  computed: {
+    searchCommonHeight() {
+      return this.$refs.searchCommonView.offsetHeight
+    }
+  },
+  data() {
+    return {
+      dialogWidth: "80%",
+      editConfig: this.editContactsConfig,
+      rules: {
+        number: [{ required: true, message: "璇疯緭鍏ヨ窡杩涜褰曠紪鍙�", trigger: "blur" }],
+        member_id: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }],
+        record: [{ required: true, message: "璇疯緭鍏ヨ窡杩涜褰�", trigger: "blur" }]
+      },
+      clientStatusOptions: [], // 瀹㈡埛鐘舵��
+      memberOptions: [],
+      unflodCollapseStr: "鏀惰捣",
+      isUnflod: true
+    }
+  },
+  created() {
+    this.getCommonData()
+  },
+  methods: {
+    getCommonData() {
+      getAllData()
+        .then((res) => {
+          console.log(res)
+          this.clientStatusOptions = res.data.client_status
+          this.memberOptions = res.data.member
+        })
+        .catch((err) => {
+          console.log(err)
+        })
+    },
+    handleClose() {
+      this.editConfig.visible = false
+    },
+    // 淇濆瓨
+    saveClick(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          console.log(this.editConfig.infomation)
+          const params = this.saveParams()
+          console.log(params)
+          if (this.editConfig.title === "鏂板缓") {
+            getAddFollowRecord(params)
+              .then((res) => {
+                console.log(res)
+                this.editConfig.visible = false
+                if (res.code === 200) {
+                  this.$message({
+                    message: "娣诲姞鎴愬姛",
+                    type: "success"
+                  })
+                  this.$parent.getData()
+                }
+              })
+              .catch((err) => {
+                console.log(err)
+              })
+          } else {
+            getUpdateFollowRecord(params)
+              .then((res) => {
+                console.log(res)
+                this.editConfig.visible = false
+                if (res.code === 200) {
+                  this.$message({
+                    message: "缂栬緫鎴愬姛",
+                    type: "success"
+                  })
+                  this.$parent.getData()
+                }
+              })
+              .catch((err) => {
+                console.log(err)
+              })
+          }
+        } else {
+          console.log("error submit")
+          return false
+        }
+      })
+    },
+    saveParams() {
+      let data = this.editConfig.infomation
+      let params = {
+        id: this.editConfig.title === "鏂板缓" ? 0 : data.id,
+        follow_record: {
+          client_id: data.client_id || 0,
+          client_status_id: data.client_status_id || 0,
+          contact_id: data.contact_id || 0,
+          contact_information_id: data.contact_information_id || 0,
+          content: data.content || "",
+          follow_time: data.follow_time || "",
+          member_id: data.member_id || 0,
+          next_follow_time: data.next_follow_time || "",
+          number: data.number || "",
+          purpose: data.purpose || "",
+          record: data.record || "",
+          sale_chance_id: data.sale_chance_id || 0,
+          sales_leads_id: data.sales_leads_id || 0,
+          topic: data.topic || ""
+        }
+      }
+      return params
+    },
+    // 娣诲姞闄勪欢
+    addAnnexClick() {},
+    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
+    setFormatClick() {},
+    // 灞曞紑鏀惰捣
+    unflodCollapseClick() {
+      if (this.unflodCollapseStr === "鏀惰捣") {
+        this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰"
+        this.isUnflod = false
+      } else {
+        this.unflodCollapseStr = "鏀惰捣"
+        this.isUnflod = true
+      }
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.add-followup-records {
+  .basic-info {
+    .basic-info-title {
+      background-color: #f4f8fe;
+      padding-left: 10px;
+      font-size: 15px;
+      font-weight: bold;
+      color: #666;
+      height: 42px;
+      line-height: 42px;
+    }
+    .basic-info-view {
+      margin-top: 10px;
+      padding-right: 40px;
+      .custom-name {
+        display: flex;
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 16px;
+        }
+      }
+      .common-select {
+        display: flex;
+        .common-select-sel {
+          width: 270px;
+        }
+        .common-select-btn {
+          margin-left: 5px;
+          font-size: 16px;
+          cursor: pointer;
+        }
+      }
+    }
+    .address-view {
+      margin-top: 10px;
+      padding-right: 40px;
+    }
+    .annex-view {
+      display: flex;
+      color: #6166d3;
+      .setFormat {
+        margin-left: 10px;
+      }
+    }
+  }
+  .unflod-collapse {
+    display: flex;
+    height: 30px;
+    justify-content: center;
+    align-items: center;
+    color: #6166d3;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+</style>
diff --git a/src/views/custom/followupRecords/index.vue b/src/views/client/followupRecords/index.vue
similarity index 82%
rename from src/views/custom/followupRecords/index.vue
rename to src/views/client/followupRecords/index.vue
index a73057c..264d9e0 100644
--- a/src/views/custom/followupRecords/index.vue
+++ b/src/views/client/followupRecords/index.vue
@@ -20,8 +20,8 @@
 </template>
 
 <script>
-import AddFollowupRecordsDialog from "@/views/custom/followupRecords/AddFollowupRecordsDialog"
-import { getFollowRecordList } from "@/api/custom/followupRecords.js"
+import AddFollowupRecordsDialog from "@/views/client/followupRecords/AddFollowupRecordsDialog"
+import { getFollowRecordList } from "@/api/client/followupRecords.js"
 import { dateFormat } from "@/common/config/index"
 
 export default {
@@ -101,15 +101,13 @@
             if (res.data.list && res.data.list.length > 0) {
               const list = res.data.list.map((item) => {
                 return {
-                  topic: item.topic,
+                  ...item,
                   client_name: item.client.name,
                   contact_name: item.contact.name,
                   client_status_id: item.client.client_status_id,
                   phone: item.contact.phone,
                   follow_time: dateFormat("YYYY-mm-dd HH:MM", item.follow_time),
-                  next_follow_time: dateFormat("YYYY-mm-dd HH:MM", item.next_follow_time),
-                  member_id: item.member_id,
-                  record: item.record
+                  next_follow_time: dateFormat("YYYY-mm-dd HH:MM", item.next_follow_time)
                 }
               })
               this.tableList.tableInfomation = list || []
@@ -132,19 +130,19 @@
       this.editConfig.visible = true
       this.editConfig.title = "鏂板缓"
       this.editConfig.infomation = {
-        customName: "",
-        followupRecordsNumber: "LEA50",
-        customStatus: "",
-        contactName: "",
-        owner: "",
-        theme: "",
-        followupRecords: "",
+        client_id: "",
+        number: "",
+        client_status_id: "",
+        contact_id: "",
+        member_id: "",
+        topic: "",
+        record: "",
         phoneNumber: "",
-        salesOpportunity: "",
-        salesClue: "",
-        contactDate: "",
-        nextFollowupDate: "",
-        visitPurpose: "",
+        sale_chance_id: "",
+        sales_leads_id: "",
+        follow_time: "",
+        next_follow_time: "",
+        purpose: "",
         content: ""
       }
     },
@@ -154,20 +152,21 @@
       this.editConfig.visible = true
       this.editConfig.title = "缂栬緫"
       this.editConfig.infomation = {
-        customName: row.customName,
-        followupRecordsNumber: "LEA50",
-        customStatus: row.customStatus,
-        contactName: row.contactName,
-        owner: row.owner,
-        theme: row.theme,
-        followupRecords: row.followupRecords,
-        phoneNumber: row.phoneNumber,
-        salesOpportunity: "",
-        salesClue: "",
-        contactDate: row.contactDate,
-        nextFollowupDate: row.nextFollowupDate,
-        visitPurpose: "",
-        content: ""
+        id: row.id,
+        client_id: row.client_id,
+        number: row.number,
+        client_status_id: row.client_status_id,
+        contact_id: row.contact_id,
+        member_id: row.member_id,
+        topic: row.topic,
+        record: row.record,
+        phoneNumber: "",
+        sale_chance_id: row.sale_chance_id,
+        sales_leads_id: row.sales_leads_id,
+        follow_time: row.follow_time,
+        next_follow_time: row.next_follow_time,
+        purpose: row.purpose,
+        content: row.content
       }
     }
   }
diff --git a/src/views/custom/index.vue b/src/views/client/index.vue
similarity index 100%
rename from src/views/custom/index.vue
rename to src/views/client/index.vue
diff --git a/src/views/custom/salesLead/AddSalesLeadDialog.vue b/src/views/client/salesLead/AddSalesLeadDialog.vue
similarity index 76%
rename from src/views/custom/salesLead/AddSalesLeadDialog.vue
rename to src/views/client/salesLead/AddSalesLeadDialog.vue
index e0e9680..179850f 100644
--- a/src/views/custom/salesLead/AddSalesLeadDialog.vue
+++ b/src/views/client/salesLead/AddSalesLeadDialog.vue
@@ -82,7 +82,7 @@
               <el-col :span="12">
                 <el-form-item label="璐熻矗浜�" prop="member_id">
                   <el-select v-model="editConfig.infomation.member_id" placeholder="璇烽�夋嫨" size="mini">
-                    <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value">
+                    <el-option v-for="item in ownerOptions" :key="item.id" :label="item.username" :value="item.id">
                     </el-option>
                   </el-select>
                 </el-form-item>
@@ -108,25 +108,67 @@
             </el-row> -->
             <el-row>
               <el-col :span="12">
-                <el-form-item label="鍥藉" prop="country">
-                  <CommonSelectView :common-value="editConfig.infomation.country" :common-options="countryOptions" />
+                <el-form-item label="鍥藉" prop="country_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.country_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in countryOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="鐪佷唤" prop="province">
-                  <CommonSelectView :common-value="editConfig.infomation.province" :common-options="provinceOptions" />
-                </el-form-item>
-              </el-col>
-            </el-row>
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="鍩庡競" prop="city">
-                  <CommonSelectView :common-value="editConfig.infomation.city" :common-options="cityOptions" />
+                <el-form-item label="鐪佷唤" prop="province_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.province_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in provinceOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="鍖哄煙" prop="region">
-                  <CommonSelectView :common-value="editConfig.infomation.region" :common-options="regionOptions" />
+                <el-form-item label="鍩庡競" prop="city_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.city_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in cityOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍖哄煙" prop="region_id">
+                  <div class="common-select">
+                    <el-select
+                      v-model="editConfig.infomation.region_id"
+                      placeholder="璇烽�夋嫨"
+                      class="common-select-sel"
+                      size="mini"
+                    >
+                      <el-option v-for="item in regionOptions" :key="item.id" :label="item.name" :value="item.id">
+                      </el-option>
+                    </el-select>
+                    <div class="common-select-btn"><i class="el-icon-setting"></i></div>
+                  </div>
                 </el-form-item>
               </el-col>
             </el-row>
@@ -178,9 +220,9 @@
 </template>
 
 <script>
-import CommonSelectView from "@/components/makepager/CommonSelectView"
 import EditDropdownDialog from "@/views/other/commonDialog/EditDropdownDialog"
-import { getSalesSourcesList, getAddSalesLeads, getUpdateSalesLeads } from "@/api/custom/salesLead"
+import { getAddSalesLeads, getUpdateSalesLeads } from "@/api/client/salesLead"
+import { getAllData } from "@/api/client/client"
 
 export default {
   name: "AddSalesLeadDialog",
@@ -200,10 +242,10 @@
             businessStatus: "",
             sales_sources_id: "",
             member_id: "",
-            country: "",
-            province: "",
-            city: "",
-            region: "",
+            country_id: "",
+            province_id: "",
+            city_id: "",
+            region_id: "",
             address: "",
             desc: "",
             id: ""
@@ -212,7 +254,7 @@
       }
     }
   },
-  components: { CommonSelectView, EditDropdownDialog },
+  components: { EditDropdownDialog },
   computed: {
     searchCommonHeight() {
       return this.$refs.searchCommonView.offsetHeight
@@ -228,16 +270,7 @@
         businessStatus: [{ required: true, message: "璇疯緭鍏ュ晢鏈虹姸鎬�", trigger: "blur" }],
         sales_sources_id: [{ required: true, message: "璇烽�夋嫨鍟嗘満鏉ユ簮", trigger: "change" }]
       },
-      businessSourceOptions: [
-        { id: "1", name: "鍚庡彴娉ㄥ唽" },
-        { id: "2", name: "浠g悊鍟嗗鎴�" },
-        { id: "3", name: "鐢佃瘽闄岀敓鎷滆" },
-        { id: "4", name: "鐩存帴璁块棶" },
-        { id: "5", name: "椤圭洰鍚堜綔" },
-        { id: "6", name: "涓汉鑷壘" },
-        { id: "7", name: "浜屾閿�鍞�" },
-        { id: "8", name: "鍏徃鐢佃瘽" }
-      ],
+      businessSourceOptions: [],
       ownerOptions: [
         { value: "1", label: "BOSS" },
         { value: "2", label: "Mia" },
@@ -247,25 +280,10 @@
         { value: "6", label: "閿�鍞�" },
         { value: "7", label: "閿�鍞�荤洃" }
       ],
-      countryOptions: [{ value: "1", label: "涓浗" }], // 鍥藉
-      provinceOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄鐪�" },
-        { value: "4", label: "闄曡タ鐪�" }
-      ], // 鐪佷唤
-      cityOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄甯�" },
-        { value: "4", label: "瑗垮畨甯�" }
-      ], // 鍩庡競
-      regionOptions: [
-        { value: "1", label: "鏈濋槼鍖�" },
-        { value: "2", label: "娴锋穩鍖�" },
-        { value: "3", label: "閫氬窞鍖�" },
-        { value: "4", label: "瑗垮煄鍖�" }
-      ], // 鍖哄煙
+      countryOptions: [], // 鍥藉
+      provinceOptions: [], // 鐪佷唤
+      cityOptions: [], // 鍩庡競
+      regionOptions: [], // 鍖哄煙
       unflodCollapseStr: "鏀惰捣",
       isUnflod: true,
       editDropdownConfig: {
@@ -280,10 +298,14 @@
   },
   methods: {
     getCommonData() {
-      getSalesSourcesList()
+      getAllData()
         .then((res) => {
           console.log(res)
-          this.businessSourceOptions = res.data.list
+          this.businessSourceOptions = res.data.sales_source
+          this.countryOptions = res.data.country
+          this.provinceOptions = res.data.province
+          this.cityOptions = res.data.city
+          this.regionOptions = res.data.region
         })
         .catch((err) => {
           console.log(err)
@@ -298,18 +320,18 @@
         if (valid) {
           console.log(this.editConfig.infomation)
           let params = {
-            city_id: 0,
+            city_id: this.editConfig.infomation.city_id || 0,
             contact_name: this.editConfig.infomation.contact_name || "",
             contact_phone: this.editConfig.infomation.contact_phone || "",
             contact_position: this.editConfig.infomation.contact_position || "",
-            country_id: 0,
+            country_id: this.editConfig.infomation.country_id || 0,
             id: this.editConfig.title === "鏂板缓" ? 0 : this.editConfig.infomation.id,
             desc: this.editConfig.infomation.desc || "",
             member_id: parseInt(this.editConfig.infomation.member_id) || 0,
             name: this.editConfig.infomation.name || "",
             number: this.editConfig.infomation.number || "",
-            province_id: 0,
-            region_id: 0,
+            province_id: this.editConfig.infomation.province_id || 0,
+            region_id: this.editConfig.infomation.region_id || 0,
             sales_sources_id: this.editConfig.infomation.sales_sources_id || 0
           }
           console.log(params)
diff --git a/src/views/custom/salesLead/index.vue b/src/views/client/salesLead/index.vue
similarity index 97%
rename from src/views/custom/salesLead/index.vue
rename to src/views/client/salesLead/index.vue
index e4facd7..0063ba0 100644
--- a/src/views/custom/salesLead/index.vue
+++ b/src/views/client/salesLead/index.vue
@@ -24,10 +24,10 @@
 </template>
 
 <script>
-import AddSalesLeadDialog from "@/views/custom/salesLead/AddSalesLeadDialog"
+import AddSalesLeadDialog from "@/views/client/salesLead/AddSalesLeadDialog"
 import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
 import ImportFileDialog from "@/views/other/commonDialog/ImportFileDialog"
-import { getSalesLeadsList } from "@/api/custom/salesLead"
+import { getSalesLeadsList } from "@/api/client/salesLead"
 
 export default {
   name: "SalesLead",
diff --git a/src/views/custom/client/AddClientManageDialog.vue b/src/views/custom/client/AddClientManageDialog.vue
deleted file mode 100644
index cbf31f7..0000000
--- a/src/views/custom/client/AddClientManageDialog.vue
+++ /dev/null
@@ -1,521 +0,0 @@
-<template>
-  <div class="add-client-manage">
-    <el-dialog
-      :title="editClientManageConfig.title + '瀹㈡埛绠$悊'"
-      :visible.sync="editConfig.visible"
-      :width="dialogWidth"
-      :before-close="handleClose"
-    >
-      <el-form
-        ref="form"
-        :model="editConfig.infomation"
-        :rules="rules"
-        label-position="right"
-        label-width="308px"
-        size="mini"
-        style="height: 60vh; overflow-x: hidden"
-      >
-        <!-- 淇℃伅 -->
-        <div class="basic-info">
-          <!-- 鍩烘湰淇℃伅 -->
-          <div class="basic-info-title">鍩烘湰淇℃伅</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛鍚嶇О" prop="customName">
-                  <div class="custom-name">
-                    <el-input v-model="editConfig.infomation.customName"></el-input>
-                    <div class="common-select-btn"><i class="el-icon-house" title="宸ュ晢鏌ヨ"></i></div>
-                    <div class="common-select-btn"><i class="el-icon-search" title="鏌ラ噸"></i></div>
-                  </div>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛缂栧彿" prop="customNumber">
-                  <el-input v-model="editConfig.infomation.customNumber"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛鐘舵��" prop="customStatus">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.customStatus"
-                    :common-options="customStatusOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="閿�鍞礋璐d汉" prop="salesHead">
-                  <el-select
-                    v-model="editConfig.infomation.salesHead"
-                    placeholder="璇烽�夋嫨"
-                    size="mini"
-                    style="width: 63%"
-                  >
-                    <el-option
-                      v-for="item in salesHeadOptions"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    >
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛绫诲瀷" prop="customType">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.customType"
-                    :common-options="customTypeOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛鏉ユ簮" prop="customSource">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.customSource"
-                    :common-options="customSourceOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="閲嶈绾у埆" prop="importantLevel">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.importantLevel"
-                    :common-options="importantLevelOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鏈嶅姟浠h〃" prop="serviceAgent">
-                  <el-select
-                    v-model="editConfig.infomation.serviceAgent"
-                    placeholder="璇烽�夋嫨"
-                    size="mini"
-                    style="width: 63%"
-                  >
-                    <el-option
-                      v-for="item in serviceAgentOptions"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    >
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="涓嬫鍥炶鏃ユ湡" prop="nextFollowupDate">
-                  <el-date-picker v-model="editConfig.infomation.nextFollowupDate" type="date" placeholder="閫夋嫨鏃ユ湡">
-                  </el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鏈�鏅氭湇鍔″埌鏈熸棩" prop="latestServiceDate">
-                  <el-date-picker v-model="editConfig.infomation.latestServiceDate" type="date" placeholder="閫夋嫨鏃ユ湡">
-                  </el-date-picker>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 瀹㈡埛棣栬鑱旂郴浜� -->
-          <div class="basic-info-title">瀹㈡埛棣栬鑱旂郴浜�</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜哄鍚�" prop="contactName">
-                  <el-input v-model="editConfig.infomation.contactName"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜烘墜鏈�" prop="phoneNumber">
-                  <el-input v-model="editConfig.infomation.phoneNumber"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜鸿亴鍔�" prop="duties">
-                  <el-input v-model="editConfig.infomation.duties"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜哄井淇�" prop="wechat">
-                  <el-input v-model="editConfig.infomation.wechat"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜篍mail" prop="contactsEmail">
-                  <el-input v-model="editConfig.infomation.contactsEmail"></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 宸ュ晢淇℃伅 -->
-          <div class="basic-info-title">宸ュ晢淇℃伅</div>
-          <div class="address-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="鎵�灞炶涓�" prop="industry">
-                  <CommonSelectView :common-value="editConfig.infomation.industry" :common-options="industryOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="娉曞畾浠h〃浜�" prop="legalPerson">
-                  <el-input v-model="editConfig.infomation.legalPerson"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="娉ㄥ唽鏃堕棿" prop="registerTime">
-                  <el-date-picker v-model="editConfig.infomation.registerTime" type="date" placeholder="閫夋嫨鏃ユ湡">
-                  </el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="娉ㄥ唽璧勯噾" prop="registerCapital">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.registerCapital"
-                    :common-options="registerCapitalOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鍏徃鎬ц川" prop="companyNature">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.companyNature"
-                    :common-options="companyNatureOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛瑙勬ā" prop="customerSize">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.customerSize"
-                    :common-options="customerSizeOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="24">
-                <el-form-item label="缁忚惀鑼冨洿" prop="operateRange">
-                  <el-input
-                    type="textarea"
-                    :autosize="{ minRows: 2, maxRows: 4 }"
-                    placeholder="璇疯緭鍏ュ唴瀹�"
-                    v-model="editConfig.infomation.operateRange"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 鍦板潃淇℃伅 -->
-          <div class="basic-info-title">鍦板潃淇℃伅</div>
-          <div class="address-view">
-            <el-row>
-              <el-col :span="24">
-                <el-form-item label="瀹氫綅" prop="position">
-                  <el-input v-model="editConfig.infomation.position"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24">
-                <el-form-item label="鍦板浘" prop="map">
-                  <div style="height: 100px"></div>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鍥藉" prop="country">
-                  <CommonSelectView :common-value="editConfig.infomation.country" :common-options="countryOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鐪佷唤" prop="province">
-                  <CommonSelectView :common-value="editConfig.infomation.province" :common-options="provinceOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鍩庡競" prop="city">
-                  <CommonSelectView :common-value="editConfig.infomation.city" :common-options="cityOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鍖哄煙" prop="region">
-                  <CommonSelectView :common-value="editConfig.infomation.region" :common-options="regionOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="24">
-                <el-form-item label="璇︾粏鍦板潃" prop="address">
-                  <el-input
-                    type="textarea"
-                    :autosize="{ minRows: 2, maxRows: 4 }"
-                    placeholder="璇疯緭鍏ュ唴瀹�"
-                    v-model="editConfig.infomation.address"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 澶囨敞淇℃伅 -->
-          <div class="basic-info-title">澶囨敞淇℃伅</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="24">
-                <el-form-item label="澶囨敞" prop="notes">
-                  <el-input
-                    type="textarea"
-                    :autosize="{ minRows: 2, maxRows: 4 }"
-                    placeholder="璇疯緭鍏ュ唴瀹�"
-                    v-model="editConfig.infomation.notes"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 闄勪欢淇℃伅 -->
-          <div class="basic-info-title">闄勪欢淇℃伅</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="闄勪欢" prop="">
-                  <template slot="label">
-                    <div style="display: flex; float: right">
-                      <div style="font-size: 16px">
-                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
-                      </div>
-                      <span style="margin-left: 5px">闄勪欢</span>
-                    </div>
-                  </template>
-                  <div class="annex-view">
-                    <div @click="addAnnexClick">
-                      <div style="display: flex; float: right">
-                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
-                        <span>娣诲姞</span>
-                      </div>
-                    </div>
-                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
-                  </div>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 閫夋嫨瀹℃壒娴佺▼ -->
-          <div class="basic-info-title">閫夋嫨瀹℃壒娴佺▼</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="20">
-                <el-form-item label="瀹℃壒娴佺▼" prop="approvalWorkflow">
-                  <el-select
-                    v-model="editConfig.infomation.approvalWorkflow"
-                    placeholder="璇烽�夋嫨"
-                    size="mini"
-                    style="width: 100%"
-                  >
-                    <el-option
-                      v-for="item in approvalWorkflowOptions"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    >
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :span="20">
-                <el-form-item label="瀹℃壒姝ラ" prop="approvalSteps">
-                  <el-input v-model="editConfig.infomation.approvalSteps"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="20">
-                <el-form-item label="瀹℃壒浜�" prop="approvalPerson">
-                  <el-input v-model="editConfig.infomation.approvalPerson"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="20">
-                <el-form-item label="闇�瑕佸姞鎬ュ鎵�" prop="approvalUrgent">
-                  <el-checkbox v-model="editConfig.infomation.approvalUrgent"></el-checkbox>
-                </el-form-item>
-              </el-col>
-              <el-col :span="20">
-                <el-form-item label="瀹℃壒鎰忚" prop="approvalOpinion">
-                  <el-input v-model="editConfig.infomation.approvalOpinion" type="textarea" :rows="2"></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-        </div>
-      </el-form>
-
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆苟鎻愪氦瀹℃壒</el-button>
-        <el-button type="primary" size="small" @click="editConfig.visible = false">淇濆瓨</el-button>
-        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import CommonSelectView from "@/components/makepager/CommonSelectView"
-export default {
-  name: "AddClientManageDialog",
-  props: {
-    editClientManageConfig: {
-      type: Object,
-      default: () => {
-        return {
-          visible: false,
-          title: "鏂板缓",
-          infomation: {
-            customName: "",
-            customNumber: "AC6521",
-            customStatus: "",
-            salesHead: "5",
-            customType: "",
-            customSource: "",
-            importantLevel: "",
-            serviceAgent: "",
-            nextFollowupDate: "",
-            latestServiceDate: "",
-            contactName: "",
-            phoneNumber: "",
-            duties: "",
-            wechat: "1",
-            contactsEmail: "",
-            industry: "",
-            legalPerson: "",
-            registerTime: "",
-            registerCapital: "",
-            companyNature: "",
-            customerSize: "",
-            operateRange: "",
-            position: "",
-            map: "",
-            country: "1",
-            province: "1",
-            city: "1",
-            region: "1",
-            notes: "",
-            approvalWorkflow: "",
-            approvalSteps: "",
-            approvalPerson: "",
-            approvalUrgent: "",
-            approvalOpinion: ""
-          }
-        }
-      }
-    }
-  },
-  components: { CommonSelectView },
-  computed: {
-    searchCommonHeight() {
-      return this.$refs.searchCommonView.offsetHeight
-    }
-  },
-  data() {
-    return {
-      dialogWidth: "80%",
-      editConfig: this.editClientManageConfig,
-      rules: {
-        customName: [{ required: true, message: "璇疯緭鍏ュ鎴峰悕绉�", trigger: "blur" }],
-        customStatus: [{ required: true, message: "璇烽�夋嫨瀹㈡埛鐘舵��", trigger: "change" }],
-        salesHead: [{ required: true, message: "璇烽�夋嫨閿�鍞礋璐d汉", trigger: "change" }],
-        approvalOpinion: [{ required: true, message: "璇疯緭鍏ュ鎵规剰瑙�", trigger: "blur" }]
-      },
-      salesHeadOptions: [
-        { value: "1", label: "BOSS" },
-        { value: "2", label: "Mia" },
-        { value: "3", label: "璐㈠姟" },
-        { value: "4", label: "甯傚満" },
-        { value: "5", label: "绯荤粺绠$悊鍛�" },
-        { value: "6", label: "閿�鍞�" },
-        { value: "7", label: "閿�鍞�荤洃" }
-      ],
-      customStatusOptions: [], // 瀹㈡埛鐘舵��
-      customTypeOptions: [], // 瀹㈡埛绫诲瀷
-      customSourceOptions: [], // 瀹㈡埛鏉ユ簮
-      importantLevelOptions: [], // 閲嶈绾у埆
-      serviceAgentOptions: [], // 鏈嶅姟浠h〃
-      industryOptions: [], // 鎵�灞炶涓�
-      registerCapitalOptions: [], // 娉ㄥ唽璧勯噾
-      companyNatureOptions: [], // 鍏徃鎬ц川
-      customerSizeOptions: [], // 瀹㈡埛瑙勬ā
-      countryOptions: [{ value: "1", label: "涓浗" }], // 鍥藉
-      provinceOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄鐪�" },
-        { value: "4", label: "闄曡タ鐪�" }
-      ], // 鐪佷唤
-      cityOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄甯�" },
-        { value: "4", label: "瑗垮畨甯�" }
-      ], // 鍩庡競
-      regionOptions: [
-        { value: "1", label: "鏈濋槼鍖�" },
-        { value: "2", label: "娴锋穩鍖�" },
-        { value: "3", label: "閫氬窞鍖�" },
-        { value: "4", label: "瑗垮煄鍖�" }
-      ], // 鍖哄煙
-      approvalWorkflowOptions: [] // 瀹℃壒娴佺▼
-    }
-  },
-  created() {},
-  methods: {
-    handleClose() {
-      this.editConfig.visible = false
-    },
-    // 娣诲姞闄勪欢
-    addAnnexClick() {},
-    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
-    setFormatClick() {}
-  }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style lang="scss" scoped>
-.add-client-manage {
-  .basic-info {
-    .basic-info-title {
-      background-color: #f4f8fe;
-      padding-left: 10px;
-      font-size: 15px;
-      font-weight: bold;
-      color: #666;
-      height: 42px;
-      line-height: 42px;
-    }
-    .basic-info-view {
-      margin-top: 10px;
-      padding-right: 40px;
-      .custom-name {
-        display: flex;
-        .common-select-btn {
-          margin-left: 5px;
-          font-size: 18px;
-        }
-      }
-    }
-    .address-view {
-      margin-top: 10px;
-      padding-right: 40px;
-    }
-    .annex-view {
-      display: flex;
-      color: #6166d3;
-      .setFormat {
-        margin-left: 10px;
-      }
-    }
-  }
-  .unflod-collapse {
-    display: flex;
-    height: 30px;
-    justify-content: center;
-    align-items: center;
-    color: #6166d3;
-  }
-  .dialog-footer {
-    background-color: #f5f5f5;
-    height: 55px;
-    line-height: 55px;
-  }
-}
-</style>
diff --git a/src/views/custom/contacts/AddContactsDialog.vue b/src/views/custom/contacts/AddContactsDialog.vue
deleted file mode 100644
index 3e081e0..0000000
--- a/src/views/custom/contacts/AddContactsDialog.vue
+++ /dev/null
@@ -1,348 +0,0 @@
-<template>
-  <div class="add-contacts">
-    <el-dialog
-      :title="editContactsConfig.title + '鑱旂郴浜�'"
-      :visible.sync="editConfig.visible"
-      :width="dialogWidth"
-      :before-close="handleClose"
-    >
-      <el-form
-        ref="form"
-        :model="editConfig.infomation"
-        :rules="rules"
-        label-position="right"
-        label-width="308px"
-        size="mini"
-      >
-        <!-- 淇℃伅 -->
-        <div class="basic-info">
-          <!-- 鍩烘湰淇℃伅 -->
-          <div v-if="isUnflod" class="basic-info-title">鍩烘湰淇℃伅</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜哄鍚�" prop="contactName">
-                  <el-input v-model="editConfig.infomation.contactName"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" v-if="isUnflod">
-                <el-form-item label="鑱旂郴浜虹紪鍙�" prop="contactNumber">
-                  <el-button type="text" style="color: #333; font-size: 13px">
-                    {{ editConfig.infomation.contactNumber }}
-                  </el-button>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛鍚嶇О" prop="customName">
-                  <div class="custom-name">
-                    <el-input v-model="editConfig.infomation.customName"></el-input>
-                    <div class="common-select-btn">
-                      <i class="el-icon-circle-plus-outline"></i>
-                    </div>
-                  </div>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鎵嬫満" prop="phoneNumber">
-                  <el-input v-model="editConfig.infomation.phoneNumber"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱屽姟" prop="duties">
-                  <el-input v-model="editConfig.infomation.duties"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item v-if="isUnflod" label="閿�鍞礋璐d汉" prop="salesHead">
-                  <el-select v-model="editConfig.infomation.salesHead" placeholder="璇烽�夋嫨" size="mini">
-                    <el-option
-                      v-for="item in salesHeadOptions"
-                      :key="item.value"
-                      :label="item.label"
-                      :value="item.value"
-                    >
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item v-if="isUnflod" label="棣栬鑱旂郴浜�" prop="primaryContact">
-                  <el-switch
-                    v-model="editConfig.infomation.primaryContact"
-                    active-color="#2E68DB"
-                    inactive-color="#AEB9CA"
-                  >
-                  </el-switch>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item v-if="isUnflod" label="寰俊鍙�" prop="wechat">
-                  <el-input v-model="editConfig.infomation.wechat"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item v-if="isUnflod" label="鐢熸棩" prop="birhday">
-                  <el-date-picker v-model="editConfig.infomation.birhday" type="date" placeholder="閫夋嫨鏃ユ湡">
-                  </el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜篍mail" prop="contactsEmail">
-                  <el-input v-model="editConfig.infomation.contactsEmail"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="isUnflod ? 24 : 12">
-                <el-form-item label="涓嬫鍥炶鏃ユ湡" prop="nextFollowupDate"></el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 鍦板潃淇℃伅 -->
-          <div v-if="isUnflod" class="basic-info-title">鍦板潃淇℃伅</div>
-          <div v-if="isUnflod" class="address-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="鍥藉" prop="country">
-                  <CommonSelectView :common-value="editConfig.infomation.country" :common-options="countryOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鐪佷唤" prop="province">
-                  <CommonSelectView :common-value="editConfig.infomation.province" :common-options="provinceOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鍩庡競" prop="city">
-                  <CommonSelectView :common-value="editConfig.infomation.city" :common-options="cityOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鍖哄煙" prop="region">
-                  <CommonSelectView :common-value="editConfig.infomation.region" :common-options="regionOptions" />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="閭紪" prop="postalCode">
-                  <el-input v-model="editConfig.infomation.postalCode"></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 澶囨敞淇℃伅 -->
-          <div v-if="isUnflod" class="basic-info-title">澶囨敞淇℃伅</div>
-          <div v-if="isUnflod" class="basic-info-view">
-            <el-row>
-              <el-col :span="24">
-                <el-form-item label="澶囨敞" prop="notes">
-                  <el-input
-                    type="textarea"
-                    :autosize="{ minRows: 2, maxRows: 4 }"
-                    placeholder="璇疯緭鍏ュ唴瀹�"
-                    v-model="editConfig.infomation.notes"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 闄勪欢淇℃伅 -->
-          <div v-if="isUnflod" class="basic-info-title">闄勪欢淇℃伅</div>
-          <div v-if="isUnflod" class="basic-info-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="闄勪欢" prop="">
-                  <template slot="label">
-                    <div style="display: flex; float: right">
-                      <div style="font-size: 16px">
-                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
-                      </div>
-                      <span style="margin-left: 5px">闄勪欢</span>
-                    </div>
-                  </template>
-                  <div class="annex-view">
-                    <div @click="addAnnexClick">
-                      <div style="display: flex; float: right">
-                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
-                        <span>娣诲姞</span>
-                      </div>
-                    </div>
-                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
-                  </div>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-        </div>
-        <!-- 灞曞紑鏀惰捣 -->
-        <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick">
-          <div>{{ unflodCollapseStr }}</div>
-          <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
-          <div v-else><i class="el-icon-arrow-down"></i></div>
-        </div>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" size="small" @click="editConfig.visible = false">淇� 瀛�</el-button>
-        <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import CommonSelectView from "@/components/makepager/CommonSelectView"
-export default {
-  name: "AddContactsDialog",
-  props: {
-    editContactsConfig: {
-      type: Object,
-      default: () => {
-        return {
-          visible: false,
-          title: "鏂板缓",
-          infomation: {
-            contactName: "",
-            contactNumber: "LEA50",
-            customName: "",
-            phoneNumber: "",
-            duties: "",
-            salesHead: "5",
-            primaryContact: "鏂板缓",
-            wechat: "1",
-            birhday: "",
-            contactsEmail: "",
-            nextFollowupDate: "",
-            country: "1",
-            province: "1",
-            city: "1",
-            region: "1",
-            postalCode: "",
-            notes: ""
-          }
-        }
-      }
-    }
-  },
-  components: { CommonSelectView },
-  computed: {},
-  data() {
-    return {
-      dialogWidth: "80%",
-      editConfig: this.editContactsConfig,
-      rules: {
-        contactName: [{ required: true, message: "璇疯緭鍏ヨ仈绯讳汉濮撳悕", trigger: "blur" }],
-        contactNumber: [{ required: true, message: "璇疯緭鍏ヨ仈绯讳汉缂栧彿", trigger: "blur" }],
-        salesHead: [{ required: true, message: "璇烽�夋嫨閿�鍞礋璐d汉", trigger: "change" }]
-      },
-      businessSourceOptions: [
-        { value: "1", label: "鍚庡彴娉ㄥ唽" },
-        { value: "2", label: "浠g悊鍟嗗鎴�" },
-        { value: "3", label: "鐢佃瘽闄岀敓鎷滆" },
-        { value: "4", label: "鐩存帴璁块棶" },
-        { value: "5", label: "椤圭洰鍚堜綔" },
-        { value: "6", label: "涓汉鑷壘" },
-        { value: "7", label: "浜屾閿�鍞�" },
-        { value: "8", label: "鍏徃鐢佃瘽" }
-      ],
-      salesHeadOptions: [
-        { value: "1", label: "BOSS" },
-        { value: "2", label: "Mia" },
-        { value: "3", label: "璐㈠姟" },
-        { value: "4", label: "甯傚満" },
-        { value: "5", label: "绯荤粺绠$悊鍛�" },
-        { value: "6", label: "閿�鍞�" },
-        { value: "7", label: "閿�鍞�荤洃" }
-      ],
-      countryOptions: [{ value: "1", label: "涓浗" }], // 鍥藉
-      provinceOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄鐪�" },
-        { value: "4", label: "闄曡タ鐪�" }
-      ], // 鐪佷唤
-      cityOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄甯�" },
-        { value: "4", label: "瑗垮畨甯�" }
-      ], // 鍩庡競
-      regionOptions: [
-        { value: "1", label: "鏈濋槼鍖�" },
-        { value: "2", label: "娴锋穩鍖�" },
-        { value: "3", label: "閫氬窞鍖�" },
-        { value: "4", label: "瑗垮煄鍖�" }
-      ], // 鍖哄煙
-      unflodCollapseStr: "鏀惰捣",
-      isUnflod: true
-    }
-  },
-  created() {},
-  methods: {
-    handleClose() {
-      this.editConfig.visible = false
-    },
-    // 娣诲姞闄勪欢
-    addAnnexClick() {},
-    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
-    setFormatClick() {},
-    // 灞曞紑鏀惰捣
-    unflodCollapseClick() {
-      if (this.unflodCollapseStr === "鏀惰捣") {
-        this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰"
-        this.isUnflod = false
-      } else {
-        this.unflodCollapseStr = "鏀惰捣"
-        this.isUnflod = true
-      }
-    }
-  }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style lang="scss" scoped>
-.add-contacts {
-  .basic-info {
-    .basic-info-title {
-      background-color: #f4f8fe;
-      padding-left: 10px;
-      font-size: 15px;
-      font-weight: bold;
-      color: #666;
-      height: 42px;
-      line-height: 42px;
-    }
-    .basic-info-view {
-      margin-top: 10px;
-      padding-right: 40px;
-      .custom-name {
-        display: flex;
-        .common-select-btn {
-          margin-left: 5px;
-          font-size: 16px;
-        }
-      }
-    }
-    .address-view {
-      margin-top: 10px;
-      padding-right: 40px;
-    }
-    .annex-view {
-      display: flex;
-      color: #6166d3;
-      .setFormat {
-        margin-left: 10px;
-      }
-    }
-  }
-  .unflod-collapse {
-    display: flex;
-    height: 30px;
-    justify-content: center;
-    align-items: center;
-    color: #6166d3;
-  }
-  .dialog-footer {
-    background-color: #f5f5f5;
-    height: 55px;
-    line-height: 55px;
-  }
-}
-</style>
diff --git a/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue b/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
deleted file mode 100644
index 3e1c441..0000000
--- a/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
+++ /dev/null
@@ -1,333 +0,0 @@
-<template>
-  <div class="add-followup-records">
-    <el-dialog
-      :title="editContactsConfig.title + '璺熻繘璁板綍'"
-      :visible.sync="editConfig.visible"
-      :width="dialogWidth"
-      :before-close="handleClose"
-    >
-      <el-form
-        ref="form"
-        :model="editConfig.infomation"
-        :rules="rules"
-        label-position="right"
-        label-width="308px"
-        size="mini"
-      >
-        <!-- 淇℃伅 -->
-        <div class="basic-info">
-          <!-- 鍩烘湰淇℃伅 -->
-          <div v-if="isUnflod" class="basic-info-title">鍩烘湰淇℃伅</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="瀹㈡埛鍚嶇О" prop="customName">
-                  <div class="custom-name">
-                    <el-input v-model="editConfig.infomation.customName"></el-input>
-                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
-                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
-                  </div>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12" v-if="isUnflod">
-                <el-form-item label="璺熻繘璁板綍缂栧彿" prop="followupRecordsNumber">
-                  <el-button type="text" style="color: #333; font-size: 13px">
-                    {{ editConfig.infomation.followupRecordsNumber }}
-                  </el-button>
-                </el-form-item>
-              </el-col>
-              <el-col v-if="isUnflod" :span="12">
-                <el-form-item label="瀹㈡埛鐘舵��" prop="customStatus">
-                  <CommonSelectView
-                    :common-value="editConfig.infomation.customStatus"
-                    :common-options="customStatusOptions"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴浜哄鍚�" prop="contactName">
-                  <div class="custom-name">
-                    <el-input v-model="editConfig.infomation.contactName"></el-input>
-                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
-                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
-                  </div>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item v-if="isUnflod" label="璐熻矗浜�" prop="owner">
-                  <el-select v-model="editConfig.infomation.owner" placeholder="璇烽�夋嫨" size="mini">
-                    <el-option v-for="item in ownerOptions" :key="item.value" :label="item.label" :value="item.value">
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="涓婚" prop="theme">
-                  <el-input v-model="editConfig.infomation.theme"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="isUnflod ? 24 : 12">
-                <el-form-item label="璺熻繘璁板綍" prop="followupRecords">
-                  <el-input
-                    type="textarea"
-                    :autosize="{ minRows: 2, maxRows: 4 }"
-                    v-model="editConfig.infomation.followupRecords"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴鏂瑰紡" prop="phoneNumber">
-                  <el-input v-model="editConfig.infomation.phoneNumber"></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col v-if="isUnflod" :span="12">
-                <el-form-item label="閿�鍞満浼�" prop="salesOpportunity">
-                  <div class="custom-name">
-                    <el-input v-model="editConfig.infomation.salesOpportunity"></el-input>
-                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
-                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
-                  </div>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="閿�鍞嚎绱�" prop="salesClue">
-                  <div class="custom-name">
-                    <el-input v-model="editConfig.infomation.salesClue"></el-input>
-                    <div class="common-select-btn"><i class="el-icon-circle-plus-outline"></i></div>
-                    <div class="common-select-btn"><i class="el-icon-edit-outline"></i></div>
-                  </div>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="鑱旂郴鏃ユ湡" prop="contactDate">
-                  <el-date-picker v-model="editConfig.infomation.contactDate" type="date" placeholder="閫夋嫨鏃ユ湡">
-                  </el-date-picker>
-                </el-form-item>
-              </el-col>
-              <el-col :span="12">
-                <el-form-item label="涓嬫鍥炶鏃ユ湡" prop="nextFollowupDate">
-                  <el-date-picker v-model="editConfig.infomation.nextFollowupDate" type="date" placeholder="閫夋嫨鏃ユ湡">
-                  </el-date-picker>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 澶囨敞淇℃伅 -->
-          <div v-if="isUnflod" class="basic-info-title">澶囨敞淇℃伅</div>
-          <div class="basic-info-view">
-            <el-row>
-              <el-col :span="24">
-                <el-form-item label="鎷滆鐩殑" prop="visitPurpose">
-                  <el-input
-                    type="textarea"
-                    :autosize="{ minRows: 2, maxRows: 4 }"
-                    v-model="editConfig.infomation.visitPurpose"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24">
-                <el-form-item label="鍐呭" prop="content">
-                  <el-input
-                    type="textarea"
-                    :autosize="{ minRows: 2, maxRows: 4 }"
-                    v-model="editConfig.infomation.content"
-                  ></el-input>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-          <!-- 闄勪欢淇℃伅 -->
-          <div v-if="isUnflod" class="basic-info-title">闄勪欢淇℃伅</div>
-          <div v-if="isUnflod" class="basic-info-view">
-            <el-row>
-              <el-col :span="12">
-                <el-form-item label="闄勪欢" prop="">
-                  <template slot="label">
-                    <div style="display: flex; float: right">
-                      <div style="font-size: 16px">
-                        <i class="el-icon-warning-outline" title="鏈�澶氫笂浼�20涓檮浠讹紝鏈�澶ч檺鍒�5MB"></i>
-                      </div>
-                      <span style="margin-left: 5px">闄勪欢</span>
-                    </div>
-                  </template>
-                  <div class="annex-view">
-                    <div @click="addAnnexClick">
-                      <div style="display: flex; float: right">
-                        <div style="font-size: 16px"><i class="el-icon-paperclip"></i></div>
-                        <span>娣诲姞</span>
-                      </div>
-                    </div>
-                    <div class="setFormat" @click="setFormatClick">璁剧疆鍏佽涓婁紶鐨勬枃浠舵牸寮�</div>
-                  </div>
-                </el-form-item>
-              </el-col>
-            </el-row>
-          </div>
-        </div>
-        <!-- 灞曞紑鏀惰捣 -->
-        <div v-if="editConfig.title === '鏂板缓'" class="unflod-collapse" @click="unflodCollapseClick">
-          <div>{{ unflodCollapseStr }}</div>
-          <div v-if="isUnflod"><i class="el-icon-arrow-up"></i></div>
-          <div v-else><i class="el-icon-arrow-down"></i></div>
-        </div>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" size="small" @click="editConfig.visible = false">淇� 瀛�</el-button>
-        <el-button size="small" @click="editConfig.visible = false">鍙� 娑�</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import CommonSelectView from "@/components/makepager/CommonSelectView"
-export default {
-  name: "AddFollowupRecordsDialog",
-  props: {
-    editContactsConfig: {
-      type: Object,
-      default: () => {
-        return {
-          visible: false,
-          title: "鏂板缓",
-          infomation: {
-            customName: "",
-            followupRecordsNumber: "LEA50",
-            customStatus: "",
-            contactName: "",
-            owner: "",
-            theme: "",
-            followupRecords: "",
-            phoneNumber: "",
-            salesOpportunity: "",
-            salesClue: "",
-            contactDate: "",
-            nextFollowupDate: "",
-            visitPurpose: "",
-            content: ""
-          }
-        }
-      }
-    }
-  },
-  components: { CommonSelectView },
-  computed: {
-    searchCommonHeight() {
-      return this.$refs.searchCommonView.offsetHeight
-    }
-  },
-  data() {
-    return {
-      dialogWidth: "80%",
-      editConfig: this.editContactsConfig,
-      rules: {
-        followupRecordsNumber: [{ required: true, message: "璇疯緭鍏ヨ窡杩涜褰曠紪鍙�", trigger: "blur" }],
-        owner: [{ required: true, message: "璇烽�夋嫨璐熻矗浜�", trigger: "change" }],
-        followupRecords: [{ required: true, message: "璇疯緭鍏ヨ窡杩涜褰�", trigger: "blur" }]
-      },
-      customStatusOptions: [], // 瀹㈡埛鐘舵��
-      ownerOptions: [
-        { value: "1", label: "BOSS" },
-        { value: "2", label: "Mia" },
-        { value: "3", label: "璐㈠姟" },
-        { value: "4", label: "甯傚満" },
-        { value: "5", label: "绯荤粺绠$悊鍛�" },
-        { value: "6", label: "閿�鍞�" },
-        { value: "7", label: "閿�鍞�荤洃" }
-      ],
-      countryOptions: [{ value: "1", label: "涓浗" }], // 鍥藉
-      provinceOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄鐪�" },
-        { value: "4", label: "闄曡タ鐪�" }
-      ], // 鐪佷唤
-      cityOptions: [
-        { value: "1", label: "鍖椾含甯�" },
-        { value: "2", label: "涓婃捣甯�" },
-        { value: "3", label: "鍚夋灄甯�" },
-        { value: "4", label: "瑗垮畨甯�" }
-      ], // 鍩庡競
-      regionOptions: [
-        { value: "1", label: "鏈濋槼鍖�" },
-        { value: "2", label: "娴锋穩鍖�" },
-        { value: "3", label: "閫氬窞鍖�" },
-        { value: "4", label: "瑗垮煄鍖�" }
-      ], // 鍖哄煙
-      unflodCollapseStr: "鏀惰捣",
-      isUnflod: true
-    }
-  },
-  created() {},
-  methods: {
-    handleClose() {
-      this.editConfig.visible = false
-    },
-    // 娣诲姞闄勪欢
-    addAnnexClick() {},
-    // 璁剧疆鍏佽涓婁紶鏂囦欢鏍煎紡
-    setFormatClick() {},
-    // 灞曞紑鏀惰捣
-    unflodCollapseClick() {
-      if (this.unflodCollapseStr === "鏀惰捣") {
-        this.unflodCollapseStr = "灞曞紑鏇村鏍忕洰"
-        this.isUnflod = false
-      } else {
-        this.unflodCollapseStr = "鏀惰捣"
-        this.isUnflod = true
-      }
-    }
-  }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style lang="scss" scoped>
-.add-followup-records {
-  .basic-info {
-    .basic-info-title {
-      background-color: #f4f8fe;
-      padding-left: 10px;
-      font-size: 15px;
-      font-weight: bold;
-      color: #666;
-      height: 42px;
-      line-height: 42px;
-    }
-    .basic-info-view {
-      margin-top: 10px;
-      padding-right: 40px;
-      .custom-name {
-        display: flex;
-        .common-select-btn {
-          margin-left: 5px;
-          font-size: 16px;
-        }
-      }
-    }
-    .address-view {
-      margin-top: 10px;
-      padding-right: 40px;
-    }
-    .annex-view {
-      display: flex;
-      color: #6166d3;
-      .setFormat {
-        margin-left: 10px;
-      }
-    }
-  }
-  .unflod-collapse {
-    display: flex;
-    height: 30px;
-    justify-content: center;
-    align-items: center;
-    color: #6166d3;
-  }
-  .dialog-footer {
-    background-color: #f5f5f5;
-    height: 55px;
-    line-height: 55px;
-  }
-}
-</style>
diff --git a/src/views/sales/generatePlan/index.vue b/src/views/sales/generatePlan/index.vue
index ed634cf..31df8fb 100644
--- a/src/views/sales/generatePlan/index.vue
+++ b/src/views/sales/generatePlan/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddGeneratePlanDialog from "@/views/sales/generatePlan/AddGeneratePlanDialog"
+import { getPlanList } from "@/api/sales/generatePlan"
 
 export default {
   name: "GeneratePlan",
@@ -64,19 +65,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            documentNumber: "ZDYB04-2",
-            owner: "绯荤粺绠$悊鍛�",
-            approvalStatus: "鏈彁浜�",
-            creator: "绯荤粺绠$悊鍛�",
-            createTime: "2023-0703 11:22:12"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "鍗曟嵁缂栧彿", prop: "documentNumber", min: 120 },
           { label: "璐熻矗浜�", prop: "owner", min: 90 },
@@ -91,6 +85,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getPlanList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/sales/masterOrder/index.vue b/src/views/sales/masterOrder/index.vue
index 36c9208..ec9bdd3 100644
--- a/src/views/sales/masterOrder/index.vue
+++ b/src/views/sales/masterOrder/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddMasterOrderDialog from "@/views/sales/masterOrder/AddMasterOrderDialog"
+import { getMasterOrderList } from "@/api/sales/masterOrder"
 
 export default {
   name: "MasterOrder",
@@ -65,30 +66,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            documentNumber: "ZDYBD03-1",
-            customName: "寮犱笁",
-            serviceStartTime: "2023-0703 11:22:12",
-            serviceDeadline: "2023-0703 11:22:12",
-            contractAmount: 13000.0,
-            owner: "绯荤粺绠$悊鍛�",
-            approvalStatus: "鏈彁浜�"
-          },
-          {
-            documentNumber: "",
-            customName: "",
-            serviceStartTime: "",
-            serviceDeadline: "",
-            contractAmount: 13000.0,
-            owner: "",
-            approvalStatus: ""
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "鍗曟嵁缂栧彿", prop: "documentNumber", min: 120 }, // 鍗曟嵁缂栧彿
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О
@@ -105,6 +88,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getMasterOrderList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/sales/quotation/index.vue b/src/views/sales/quotation/index.vue
index a2441fa..7d144a3 100644
--- a/src/views/sales/quotation/index.vue
+++ b/src/views/sales/quotation/index.vue
@@ -26,6 +26,7 @@
 
 <script>
 import AddQuotationDialog from "@/views/sales/quotation/AddQuotationDialog"
+import { getQuotationList } from "@/api/sales/quotation"
 
 export default {
   name: "QuotationView",
@@ -67,24 +68,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            quotationNo: "QUO109",
-            customName: "123123",
-            contactName: "椹噷濂�",
-            salesHead: "绯荤粺绠$悊鍛�",
-            modifyTime: "2023-0703 11:22:12",
-            subTotal: "锟�9,499.00",
-            total: "锟�9,499.00",
-            productName: "鑷姩鎵撳嵃鏈�",
-            number: "1.00",
-            priceTax: "锟�9499.00"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "鎶ヤ环鍗曞彿", prop: "quotationNo", min: 90 }, // 鎶ヤ环鍗曞彿
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О
@@ -104,6 +93,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getQuotationList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/sales/refundForm/index.vue b/src/views/sales/refundForm/index.vue
index 8655d4f..21546c0 100644
--- a/src/views/sales/refundForm/index.vue
+++ b/src/views/sales/refundForm/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddRefundFormDialog from "@/views/sales/refundForm/AddRefundFormDialog"
+import { getSalesRefundList } from "@/api/sales/refundForm"
 
 export default {
   name: "RefundForm",
@@ -62,23 +63,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            refundOrderNo: "TKD20220118-44",
-            customName: "涓囩鐗╂枡鍙戝睍鏈夐檺鍏徃",
-            refundDate: "2022-01-18",
-            account: "浜烘皯甯佽处鎴�",
-            whetherInvoicing: "鏈紑",
-            paymentMethod: "鐜伴噾",
-            salesHead: "绯荤粺绠$悊鍛�",
-            modifyTime: "202-01-18 13:11:05",
-            priceTax: "锟�12.00"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "閫�娆惧崟缂栧彿", prop: "refundOrderNo" },
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 },
@@ -97,6 +87,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getSalesRefundList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/sales/salesDetails/index.vue b/src/views/sales/salesDetails/index.vue
index de1a303..e80fe87 100644
--- a/src/views/sales/salesDetails/index.vue
+++ b/src/views/sales/salesDetails/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddSalesDetailsDialog from "@/views/sales/salesDetails/AddSalesDetailsDialog"
+import { getSalesDetailsList } from "@/api/sales/salesDetails"
 
 export default {
   name: "SalesDetails",
@@ -77,6 +78,7 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
@@ -124,6 +126,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getSalesDetailsList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/sales/salesOpportunity/index.vue b/src/views/sales/salesOpportunity/index.vue
index 27e9f19..eba3e09 100644
--- a/src/views/sales/salesOpportunity/index.vue
+++ b/src/views/sales/salesOpportunity/index.vue
@@ -27,6 +27,7 @@
 
 <script>
 import AddSalesOpportunityDialog from "@/views/sales/salesOpportunity/AddSalesOpportunityDialog"
+import { getSaleChanceList } from "@/api/sales/salesOpportunity"
 
 export default {
   name: "SalesOpportunity",
@@ -77,24 +78,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            opportunityName: "123123",
-            customName: "涓婃捣閾冮摏",
-            salesOpportunityNo: "POT205",
-            contactName: "鍒樻��",
-            saleStage: "鍒濇湡娌熼��",
-            possible: "A绫诲鎴�",
-            expectDealDate: "50",
-            expectContractAmount: "2023-05-28",
-            budgetAbsoluteValue: "锟�200,000.00",
-            salesHead: "绯荤粺绠$悊鍛�"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "鏈轰細鍚嶇О", prop: "opportunityName", min: 120 }, // 鏈轰細鍚嶇О
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 90 }, // 瀹㈡埛鍚嶇О
@@ -114,6 +103,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getSaleChanceList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/sales/salesReturn/index.vue b/src/views/sales/salesReturn/index.vue
index f0fa6f1..16f1078 100644
--- a/src/views/sales/salesReturn/index.vue
+++ b/src/views/sales/salesReturn/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddSalesReturnDialog from "@/views/sales/salesReturn/AddSalesReturnDialog"
+import { getSalesReturnList } from "@/api/sales/salesReturn"
 
 export default {
   name: "SalesReturn",
@@ -63,23 +64,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            salesReturnOrderNo: "THD20230607-44",
-            customName: "娆у厠绉戞妧鑲′唤鏈夐檺鍏徃",
-            returnDate: "2023-06-07",
-            state: "鏈叆搴�",
-            returnWarehouse: "鎬讳粨",
-            refundabe: "锟�9,499.00",
-            refunded: "锟�1,499.00",
-            salesHead: "绯荤粺绠$悊鍛�",
-            modifyTime: "2023-06-07 11:10:25"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "閿�鍞��璐у崟缂栧彿", prop: "salesReturnOrderNo", min: 120 },
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 90 },
@@ -98,6 +88,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getSalesReturnList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/sales/subOrder/index.vue b/src/views/sales/subOrder/index.vue
index 12861e1..3d862e9 100644
--- a/src/views/sales/subOrder/index.vue
+++ b/src/views/sales/subOrder/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddSubOrderDialog from "@/views/sales/subOrder/AddSubOrderDialog"
+import { getSubOrderList } from "@/api/sales/subOrder"
 
 export default {
   name: "SubOrder",
@@ -69,21 +70,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            documentNumber: "ZDYBD12-1",
-            customName: "涓婃捣鏈夐檺鍏徃",
-            masterOrder: "ZDYBD03-1",
-            owner: "绯荤粺绠$悊鍛�",
-            approvalStatus: "鏈彁浜�",
-            productName: "鑷姩鎵撳嵃鏈�",
-            number: "2.00"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "鍗曟嵁缂栧彿", prop: "documentNumber", min: 120 }, // 鍗曟嵁缂栧彿
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О
@@ -100,6 +92,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getSubOrderList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/service/orderManage/index.vue b/src/views/service/orderManage/index.vue
index 8e03943..5f13148 100644
--- a/src/views/service/orderManage/index.vue
+++ b/src/views/service/orderManage/index.vue
@@ -30,6 +30,7 @@
 
 <script>
 import AddOrderManageDialog from "@/views/service/orderManage/AddOrderManageDialog"
+import { getOrderManageList } from "@/api/serviceManage/orderManage"
 
 export default {
   name: "SalesLead",
@@ -73,21 +74,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            orderNumber: "LEA110",
-            customName: "涓婃捣閫氱敤鏈烘鏈夐檺鍏徃",
-            contactName: "钁e浼�",
-            servicePerson: "绯荤粺绠$悊鍛�",
-            orderStatus: "宸茬粨鍗�",
-            repairSource: "鐢佃瘽鎶ヤ慨",
-            orderType: "淇濆唴鏀惰垂"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "宸ュ崟缂栧彿", prop: "orderNumber", min: 100 }, // 宸ュ崟缂栧彿
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 130 }, // 瀹㈡埛鍚嶇О
@@ -104,6 +96,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getOrderManageList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // tab鍒囨崲
     tabsClick(tab, event) {
       console.log(tab, event)
diff --git a/src/views/service/serviceContract/index.vue b/src/views/service/serviceContract/index.vue
index 77d2356..e433765 100644
--- a/src/views/service/serviceContract/index.vue
+++ b/src/views/service/serviceContract/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddServiceContractDialog from "@/views/service/serviceContract/AddServiceContractDialog"
+import { getServiceContractList } from "@/api/serviceManage/serviceContract"
 
 export default {
   name: "ServiceContract",
@@ -64,24 +65,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            serviceContractNumber: "FWHT20230703123",
-            customName: "涓婃捣閾冮摏淇℃伅绉戞妧鏈夐檺鍏徃",
-            signDate: "2023-06-26",
-            contractType: "鎸夊勾",
-            contractStatus: "宸插垱寤�",
-            owner: "Boss",
-            productName: "杞欢",
-            startDate: "2023-06-26",
-            endDate: "2024-06-25",
-            priceTax: "楼5,000.00"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "鏈嶅姟鍚堝悓缂栧彿", prop: "serviceContractNumber", min: 100 }, // 鏈嶅姟鍚堝悓缂栧彿
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О
@@ -101,6 +90,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getServiceContractList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/service/serviceFeeManage/index.vue b/src/views/service/serviceFeeManage/index.vue
index 62cce90..d53b73c 100644
--- a/src/views/service/serviceFeeManage/index.vue
+++ b/src/views/service/serviceFeeManage/index.vue
@@ -28,6 +28,7 @@
 
 <script>
 import AddServiceFeeManageDialog from "@/views/service/serviceFeeManage/AddServiceFeeManageDialog"
+import { getServiceFeeManageList } from "@/api/serviceManage/serviceFeeManage"
 
 export default {
   name: "ServiceFeeManage",
@@ -72,26 +73,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            customName: "123123",
-            customType: "鏅�氬鎴�",
-            salesHead: "绯荤粺绠$悊鍛�",
-            modifyTime: "2023-0703 11:22:12",
-            customerSize: "499浠ヤ笂",
-            importantLevel: "A绫诲鎴�",
-            customNumber: "AC651",
-            customStatus: "娼滃湪瀹㈡埛",
-            productName: "鑷姩鎵撳嵃鏈�",
-            startDate: "2023-06-27",
-            endDate: "2024-07-15",
-            status: "blue"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 120 }, // 瀹㈡埛鍚嶇О
           { label: "瀹㈡埛绫诲瀷", prop: "customType", min: 90, status: true }, // 瀹㈡埛绫诲瀷
@@ -112,6 +99,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getServiceFeeManageList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true
diff --git a/src/views/service/serviceFollowup/index.vue b/src/views/service/serviceFollowup/index.vue
index 92d4b8c..c220f62 100644
--- a/src/views/service/serviceFollowup/index.vue
+++ b/src/views/service/serviceFollowup/index.vue
@@ -21,6 +21,7 @@
 
 <script>
 import AddServiceFollowupDialog from "@/views/service/serviceFollowup/AddServiceFollowupDialog"
+import { getServiceFollowupList } from "@/api/serviceManage/serviceFollowup"
 
 export default {
   name: "SalesLead",
@@ -57,21 +58,12 @@
   },
   created() {
     this.setTable()
+    this.getData()
   },
   methods: {
     setTable() {
       this.tableList = {
-        tableInfomation: [
-          {
-            followupNumber: "HF30",
-            customName: "涓婃捣閫氱敤鏈烘鏈夐檺鍏徃",
-            contactName: "钁e浼�",
-            customServiceForm: "TT5031",
-            visitor: "绯荤粺绠$悊鍛�",
-            satisfaction: "100%",
-            modifyTime: "2023-0703 11:22:12"
-          }
-        ],
+        tableInfomation: [],
         tableColumn: [
           { label: "鍥炶鍗曠紪鍙�", prop: "followupNumber", min: 80 }, // 鍥炶鍗曠紪鍙�
           { label: "瀹㈡埛鍚嶇О", prop: "customName", min: 130 }, // 瀹㈡埛鍚嶇О
@@ -88,6 +80,34 @@
         this.searchOptions.push({ value: (i + 1).toString(), label: label })
       }
     },
+    // 璇锋眰鏁版嵁
+    async getData() {
+      this.loading = true
+      await getServiceFollowupList()
+        .then((res) => {
+          console.log(res)
+          if (res.code === 200) {
+            if (res.data.list && res.data.list.length > 0) {
+              const list = res.data.list.map((item) => {
+                return {
+                  ...item
+                }
+              })
+              this.tableList.tableInfomation = list || []
+            } else {
+              this.tableList.tableInfomation = []
+            }
+          } else {
+            this.tableList.tableInfomation = []
+          }
+          this.loading = false
+        })
+        .catch((err) => {
+          console.log(err)
+          this.tableList.tableInfomation = []
+          this.loading = false
+        })
+    },
     // 鏂板缓
     addBtnClick() {
       this.editConfig.visible = true

--
Gitblit v1.8.0