From 49530253cb602ca94226ef74bd5240c43de4e5e1 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 24 四月 2026 13:53:38 +0800
Subject: [PATCH] 天津宝东 1.新增客户只要客户名称,公司地址,公司电话,不需要法人 2.客户档案客户分类加个连锁店 3.客户档案客联系人联系电话也要,要加一个联系人岗位(手填) 4.客户档案客洽谈进度不要

---
 src/views/basicData/customerFileOpenSea/index.vue |  358 +++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 212 insertions(+), 146 deletions(-)

diff --git a/src/views/basicData/customerFileOpenSea/index.vue b/src/views/basicData/customerFileOpenSea/index.vue
index b2d4709..2332d04 100644
--- a/src/views/basicData/customerFileOpenSea/index.vue
+++ b/src/views/basicData/customerFileOpenSea/index.vue
@@ -19,6 +19,8 @@
                      value="闆跺敭瀹㈡埛" />
           <el-option label="杩涢攢鍟嗗鎴�"
                      value="杩涢攢鍟嗗鎴�" />
+          <el-option label="杩為攣搴�"
+                     value="杩為攣搴�" />
         </el-select>
         <el-button type="primary"
                    @click="handleQuery"
@@ -66,11 +68,18 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="绾崇◣浜鸿瘑鍒彿锛�"
-                          prop="taxpayerIdentificationNumber">
-              <el-input v-model="form.taxpayerIdentificationNumber"
-                        placeholder="璇疯緭鍏�"
-                        clearable />
+            <el-form-item label="瀹㈡埛鍒嗙被锛�"
+                          prop="customerType">
+              <el-select v-model="form.customerType"
+                         placeholder="璇烽�夋嫨"
+                         clearable>
+                <el-option label="闆跺敭瀹㈡埛"
+                           value="闆跺敭瀹㈡埛" />
+                <el-option label="杩涢攢鍟嗗鎴�"
+                           value="杩涢攢鍟嗗鎴�" />
+                <el-option label="杩為攣搴�"
+                           value="杩為攣搴�" />
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -92,51 +101,10 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="閾惰鍩烘湰鎴凤細"
-                          prop="basicBankAccount">
-              <el-input v-model="form.basicBankAccount"
-                        placeholder="璇疯緭鍏�"
-                        clearable />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="閾惰璐﹀彿锛�"
-                          prop="bankAccount">
-              <el-input v-model="form.bankAccount"
-                        placeholder="璇疯緭鍏�"
-                        clearable />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="寮�鎴疯鍙凤細"
-                          prop="bankCode">
-              <el-input v-model="form.bankCode"
-                        placeholder="璇疯緭鍏�"
-                        clearable />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="瀹㈡埛鍒嗙被锛�"
-                          prop="customerType">
-              <el-select v-model="form.customerType"
-                         placeholder="璇烽�夋嫨"
-                         clearable>
-                <el-option label="闆跺敭瀹㈡埛"
-                           value="闆跺敭瀹㈡埛" />
-                <el-option label="杩涢攢鍟嗗鎴�"
-                           value="杩涢攢鍟嗗鎴�" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
         <el-row :gutter="30"
                 v-for="(contact, index) in formYYs.contactList"
                 :key="index">
-          <el-col :span="12">
+          <el-col :span="8">
             <el-form-item label="鑱旂郴浜猴細"
                           prop="contactPerson">
               <el-input v-model="contact.contactPerson"
@@ -144,12 +112,20 @@
                         clearable />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="8">
             <el-form-item label="鑱旂郴鐢佃瘽锛�"
                           prop="contactPhone">
+              <el-input v-model="contact.contactPhone"
+                        placeholder="璇疯緭鍏�"
+                        clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鑱旂郴浜哄矖浣嶏細"
+                          prop="contactPosition">
               <div style="display: flex; align-items: center;width: 100%;">
-                <el-input v-model="contact.contactPhone"
-                          placeholder="璇疯緭鍏�"
+                <el-input v-model="contact.contactPosition"
+                          placeholder="璇疯緭鍏ヨ仈绯讳汉宀椾綅"
                           clearable />
                 <el-button @click="removeContact(index)"
                            type="danger"
@@ -165,34 +141,6 @@
         </el-row>
         <el-button @click="addNewContact"
                    style="margin-bottom: 10px;">+ 鏂板鑱旂郴浜�</el-button>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="缁存姢浜猴細"
-                          prop="maintainer">
-              <el-select v-model="form.maintainer"
-                         placeholder="璇烽�夋嫨"
-                         clearable
-                         disabled>
-                <el-option v-for="item in userList"
-                           :key="item.nickName"
-                           :label="item.nickName"
-                           :value="item.nickName" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="缁存姢鏃堕棿锛�"
-                          prop="maintenanceTime">
-              <el-date-picker style="width: 100%"
-                              v-model="form.maintenanceTime"
-                              value-format="YYYY-MM-DD"
-                              format="YYYY-MM-DD"
-                              type="date"
-                              placeholder="璇烽�夋嫨"
-                              clearable />
-            </el-form-item>
-          </el-col>
-        </el-row>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
@@ -215,15 +163,15 @@
                     disabled />
         </el-form-item>
         <el-form-item label="鍒嗛厤浜哄憳"
-                      prop="maintainer">
-          <el-select v-model="assignForm.maintainer"
+                      prop="boundId">
+          <el-select v-model="assignForm.boundId"
                      placeholder="璇烽�夋嫨鍒嗛厤浜哄憳"
                      style="width: 100%"
                      filterable>
             <el-option v-for="item in userList"
                        :key="item.userId || item.nickName"
                        :label="item.nickName"
-                       :value="item.nickName" />
+                       :value="item.userId" />
           </el-select>
         </el-form-item>
       </el-form>
@@ -232,6 +180,42 @@
           <el-button type="primary"
                      @click="submitAssignForm">纭</el-button>
           <el-button @click="closeAssignDialog">鍙栨秷</el-button>
+        </div>
+      </template>
+    </el-dialog>
+    <el-dialog v-model="shareDialogVisible"
+               title="鍏变韩瀹㈡埛"
+               width="500px"
+               @close="closeShareDialog">
+      <el-form :model="shareForm"
+               :rules="shareRules"
+               ref="shareFormRef"
+               label-width="100px">
+        <el-form-item label="瀹㈡埛鍚嶇О">
+          <el-input v-model="shareForm.customerName"
+                    disabled />
+        </el-form-item>
+        <el-form-item label="鍏变韩浜哄憳"
+                      prop="boundIds">
+          <el-select v-model="shareForm.boundIds"
+                     placeholder="璇烽�夋嫨鍏变韩浜哄憳"
+                     style="width: 100%"
+                     filterable
+                     multiple
+                     collapse-tags
+                     collapse-tags-tooltip>
+            <el-option v-for="item in userList"
+                       :key="item.userId || item.nickName"
+                       :label="item.nickName"
+                       :value="item.userId" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary"
+                     @click="submitShareForm">纭</el-button>
+          <el-button @click="closeShareDialog">鍙栨秷</el-button>
         </div>
       </template>
     </el-dialog>
@@ -317,6 +301,7 @@
     <!-- 娣诲姞/淇敼娲借皥杩涘害瀵硅瘽妗� -->
     <el-dialog :title="negotiationForm.editIndex !== undefined ? '淇敼杩涘害' : '娣诲姞杩涘害'"
                v-model="negotiationDialogVisible"
+               v-if="false"
                width="600px"
                @close="closeNegotiationDialog">
       <el-form :model="negotiationForm"
@@ -565,6 +550,7 @@
     <!-- 闄勪欢涓婁紶寮圭獥 -->
     <el-dialog title="闄勪欢绠$悊"
                v-model="attachmentDialogVisible"
+               v-if="false"
                width="600px"
                @close="closeAttachmentDialog">
       <div class="attachment-section">
@@ -646,8 +632,11 @@
   import { Search, Paperclip, Upload } from "@element-plus/icons-vue";
   import {
     addCustomer,
+    addCustomerPrivatePool,
+    delCustomerPrivatePool,
     delCustomer,
     getCustomer,
+    shareCustomer,
     listCustomer,
     updateCustomer,
     addCustomerFollow,
@@ -667,10 +656,20 @@
   const assignForm = reactive({
     id: undefined,
     customerName: "",
-    maintainer: "",
+    boundId: undefined,
   });
   const assignRules = {
-    maintainer: [{ required: true, message: "璇烽�夋嫨鍒嗛厤浜哄憳", trigger: "change" }],
+    boundId: [{ required: true, message: "璇烽�夋嫨鍒嗛厤浜哄憳", trigger: "change" }],
+  };
+  const shareDialogVisible = ref(false);
+  const shareFormRef = ref();
+  const shareForm = reactive({
+    id: undefined,
+    customerName: "",
+    boundIds: [],
+  });
+  const shareRules = {
+    boundIds: [{ required: true, message: "璇烽�夋嫨鍏变韩浜哄憳", trigger: "change" }],
   };
 
   // 鍥炶鎻愰啋鐩稿叧
@@ -782,15 +781,20 @@
       width: 150,
     },
     {
-      label: "璺熻繘杩涘害",
-      prop: "followUpLevel",
-      width: 120,
+      label: "鑱旂郴浜哄矖浣�",
+      prop: "contactPosition",
+      width: 140,
     },
-    {
-      label: "璺熻繘鏃堕棿",
-      prop: "followUpTime",
-      width: 120,
-    },
+    // {
+    //   label: "璺熻繘杩涘害",
+    //   prop: "followUpLevel",
+    //   width: 120,
+    // },
+    // {
+    //   label: "璺熻繘鏃堕棿",
+    //   prop: "followUpTime",
+    //   width: 120,
+    // },
     {
       label: "閾惰鍩烘湰鎴�",
       prop: "basicBankAccount",
@@ -810,22 +814,53 @@
       label: "缁存姢浜�",
       prop: "maintainer",
     },
+		{
+			label: "缁存姢鏃堕棿",
+			prop: "maintenanceTime",
+			width: 100,
+		},
     {
-      label: "缁存姢鏃堕棿",
-      prop: "maintenanceTime",
-      width: 100,
+      label: "棰嗙敤浜�",
+      prop: "usageUserName",
+      width: 120,
+			fixed: "right",
     },
+    {
+      label: "棰嗙敤鐘舵��",
+      prop: "usageStatus",
+      dataType: "tag",
+      width: 100,
+			fixed: "right",
+      formatData: value => {
+        if (value === 1 || value === "1") {
+          return "宸查鐢�";
+        }
+        return "鏈鐢�";
+      },
+      formatType: value => {
+        if (value === 1 || value === "1") {
+          return "success";
+        }
+        return "info";
+      },
+    },
+		{
+			label: "鍏变韩浜�",
+			prop: "togetherUserNames",
+			width: 120,
+			fixed: "right",
+		},
     {
       dataType: "action",
       label: "鎿嶄綔",
       align: "center",
       fixed: "right",
-      width: 320,
+      width: 200,
       operation: [
         {
           name: "鍒嗛厤",
           type: "text",
-          showHide: row => !row.maintainer,
+          showHide: row => row.usageStatus != 1,
           clickFun: row => {
             openAssignDialog(row);
           },
@@ -833,11 +868,19 @@
         {
           name: "鍥炴敹",
           type: "text",
-          showHide: row => !!row.maintainer,
+          showHide: row => row.usageStatus == 1,
           clickFun: row => {
             recycleCustomer(row);
           },
         },
+				{
+					name: "鍏变韩",
+					type: "text",
+					showHide: row => row.usageStatus == 1,
+					clickFun: row => {
+						openShareDialog(row);
+					},
+				},
 				{
 					name: "缂栬緫",
 					type: "text",
@@ -845,13 +888,13 @@
 						openForm("edit", row);
 					},
 				},
-        {
-          name: "璇︽儏",
-          type: "text",
-          clickFun: row => {
-            openDetailDialog(row);
-          },
-        },
+        // {
+        //   name: "璇︽儏",
+        //   type: "text",
+        //   clickFun: row => {
+        //     openDetailDialog(row);
+        //   },
+        // },
       ],
     },
   ]);
@@ -875,6 +918,7 @@
       {
         contactPerson: "",
         contactPhone: "",
+        contactPosition: "",
       },
     ],
   });
@@ -885,34 +929,17 @@
     },
     form: {
       customerName: "",
-      taxpayerIdentificationNumber: "",
       companyAddress: "",
       companyPhone: "",
       contactPerson: "",
       contactPhone: "",
-      maintainer: "",
-      maintenanceTime: "",
-      basicBankAccount: "",
-      bankAccount: "",
-      bankCode: "",
+      contactPosition: "",
       customerType: "",
     },
     rules: {
       customerName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      taxpayerIdentificationNumber: [
-        { required: true, message: "璇疯緭鍏�", trigger: "blur" },
-      ],
       companyAddress: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       companyPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      // contactPerson: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      // contactPhone: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      maintainer: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-      maintenanceTime: [
-        { required: false, message: "璇烽�夋嫨", trigger: "change" },
-      ],
-      basicBankAccount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      bankAccount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-      bankCode: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
       customerType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
     },
   });
@@ -976,6 +1003,7 @@
     formYYs.value.contactList.push({
       contactPerson: "",
       contactPhone: "",
+      contactPosition: "",
     });
   };
 
@@ -997,10 +1025,11 @@
   };
   const getList = () => {
     tableLoading.value = true;
-    listCustomer({ ...searchForm.value, ...page }).then(res => {
+    const { total, ...queryPage } = page;
+    listCustomer({ ...searchForm.value, ...queryPage }).then(res => {
       tableLoading.value = false;
-      tableData.value = res.records;
-      page.total = res.total;
+      tableData.value = res.data.records;
+      page.total = res.data.total;
     });
   };
   // 琛ㄦ牸閫夋嫨鏁版嵁
@@ -1025,28 +1054,34 @@
   const openForm = (type, row) => {
     operationType.value = type;
     form.value = {};
-    form.value.maintainer = userStore.nickName;
     formYYs.value.contactList = [
       {
         contactPerson: "",
         contactPhone: "",
+        contactPosition: "",
       },
     ];
-    form.value.maintenanceTime = getCurrentDate();
     userListNoPage().then(res => {
       userList.value = res.data;
     });
     if (type === "edit") {
       getCustomer(row.id).then(res => {
         form.value = { ...res.data };
-        formYYs.value.contactList = res.data.contactPerson
-          .split(",")
-          .map((item, index) => {
-            return {
-              contactPerson: item,
-              contactPhone: res.data.contactPhone.split(",")[index],
-            };
-          });
+        const persons = String(res.data.contactPerson || "").split(",");
+        const phones = String(res.data.contactPhone || "").split(",");
+        const positions = String(res.data.contactPosition || "").split(",");
+        formYYs.value.contactList = persons
+          .filter(item => item !== "")
+          .map((item, index) => ({
+            contactPerson: item,
+            contactPhone: phones[index] || "",
+            contactPosition: positions[index] || "",
+          }));
+        if (formYYs.value.contactList.length === 0) {
+          formYYs.value.contactList = [
+            { contactPerson: "", contactPhone: "", contactPosition: "" },
+          ];
+        }
       });
     }
     dialogFormVisible.value = true;
@@ -1074,6 +1109,9 @@
     form.value.contactPhone = formYYs.value.contactList
       .map(item => item.contactPhone)
       .join(",");
+    form.value.contactPosition = formYYs.value.contactList
+      .map(item => item.contactPosition || "")
+      .join(",");
     addCustomer(form.value).then(res => {
       proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
       closeDia();
@@ -1087,6 +1125,9 @@
       .join(",");
     form.value.contactPhone = formYYs.value.contactList
       .map(item => item.contactPhone)
+      .join(",");
+    form.value.contactPosition = formYYs.value.contactList
+      .map(item => item.contactPosition || "")
       .join(",");
     updateCustomer(form.value).then(res => {
       proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
@@ -1110,7 +1151,7 @@
   const openAssignDialog = row => {
     assignForm.id = row.id;
     assignForm.customerName = row.customerName;
-    assignForm.maintainer = row.maintainer || "";
+    assignForm.boundId = undefined;
     ensureUserList().then(() => {
       assignDialogVisible.value = true;
     });
@@ -1119,21 +1160,50 @@
     proxy.resetForm("assignFormRef");
     assignForm.id = undefined;
     assignForm.customerName = "";
-    assignForm.maintainer = "";
+    assignForm.boundId = undefined;
     assignDialogVisible.value = false;
+  };
+  const openShareDialog = row => {
+    shareForm.id = row.id;
+    shareForm.customerName = row.customerName;
+    shareForm.boundIds = [];
+    ensureUserList().then(() => {
+      shareDialogVisible.value = true;
+    });
+  };
+  const closeShareDialog = () => {
+    proxy.resetForm("shareFormRef");
+    shareForm.id = undefined;
+    shareForm.customerName = "";
+    shareForm.boundIds = [];
+    shareDialogVisible.value = false;
   };
   const submitAssignForm = () => {
     proxy.$refs.assignFormRef.validate(valid => {
       if (!valid) {
         return;
       }
-      updateCustomer({
-        id: assignForm.id,
-        maintainer: assignForm.maintainer,
-        maintenanceTime: getCurrentDate(),
+      addCustomerPrivatePool({
+        customerId: assignForm.id,
+        boundId: assignForm.boundId,
       }).then(() => {
         proxy.$modal.msgSuccess("鍒嗛厤鎴愬姛");
         closeAssignDialog();
+        getList();
+      });
+    });
+  };
+  const submitShareForm = () => {
+    proxy.$refs.shareFormRef.validate(valid => {
+      if (!valid) {
+        return;
+      }
+      shareCustomer({
+        customerId: shareForm.id,
+        boundIds: shareForm.boundIds,
+      }).then(() => {
+        proxy.$modal.msgSuccess("鍏变韩鎴愬姛");
+        closeShareDialog();
         getList();
       });
     });
@@ -1145,11 +1215,7 @@
       type: "warning",
     })
       .then(() => {
-        return updateCustomer({
-          id: row.id,
-          maintainer: "",
-          maintenanceTime: "",
-        });
+        return delCustomerPrivatePool(row.id);
       })
       .then(() => {
         proxy.$modal.msgSuccess("鍥炴敹鎴愬姛");

--
Gitblit v1.9.3