From deb5baea0b833c619cddc85f5409137fade95dca Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 06 一月 2026 10:52:46 +0800
Subject: [PATCH] 二级套餐包改造: 1.封装公用组件

---
 src/views/basicData/customerFile/index.vue |  121 +++++++++++++++++++++-------------------
 1 files changed, 63 insertions(+), 58 deletions(-)

diff --git a/src/views/basicData/customerFile/index.vue b/src/views/basicData/customerFile/index.vue
index 76a8c68..1552587 100644
--- a/src/views/basicData/customerFile/index.vue
+++ b/src/views/basicData/customerFile/index.vue
@@ -5,12 +5,23 @@
         <span class="search_title">瀹㈡埛鍚嶇О锛�</span>
         <el-input
           v-model="searchForm.customerName"
-          style="width: 240px"
+          style="width: 240px;margin-right: 10px"
           placeholder="璇疯緭鍏�"
           @change="handleQuery"
           clearable
           :prefix-icon="Search"
         />
+         <span class="search_title">瀹㈡埛鍒嗙被锛�</span>
+         <el-select
+          v-model="searchForm.customerType"
+          placeholder="璇烽�夋嫨"
+          style="width: 240px"
+          clearable
+           @change="handleQuery"
+        >
+           <el-option  label="闆跺敭瀹㈡埛" value="闆跺敭瀹㈡埛" />
+           <el-option  label="杩涢攢鍟嗗鎴�" value="杩涢攢鍟嗗鎴�" />
+        </el-select>
         <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
           >鎼滅储</el-button
         >
@@ -36,11 +47,14 @@
         @pagination="pagination"
       ></PIMTable>
     </div>
-    <el-dialog
+    <FormDialog
       v-model="dialogFormVisible"
-      :title="operationType === 'add' ? '鏂板瀹㈡埛淇℃伅' : '缂栬緫瀹㈡埛淇℃伅'"
+      :title="(type) => type === 'add' ? '鏂板瀹㈡埛淇℃伅' : '缂栬緫瀹㈡埛淇℃伅'"
+      :operation-type="operationType"
       width="70%"
       @close="closeDia"
+      @confirm="submitForm"
+      @cancel="closeDia"
     >
       <el-form
         :model="form"
@@ -122,6 +136,14 @@
               />
             </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">
@@ -169,69 +191,36 @@
                 type="date"
                 placeholder="璇烽�夋嫨"
                 clearable
-                disabled
               />
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">纭</el-button>
-          <el-button @click="closeDia">鍙栨秷</el-button>
-        </div>
-      </template>
-    </el-dialog>
+    </FormDialog>
     <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
-    <el-dialog
-      :title="upload.title"
+    <ImportDialog
+      ref="importDialogRef"
       v-model="upload.open"
+      :title="upload.title"
       width="400px"
-      append-to-body
-    >
-      <el-upload
-        ref="uploadRef"
-        :limit="1"
-        accept=".xlsx, .xls"
-        :headers="upload.headers"
-        :action="upload.url + '?updateSupport=' + upload.updateSupport"
-        :disabled="upload.isUploading"
-        :before-upload="upload.beforeUpload"
-        :on-progress="upload.onProgress"
-        :on-success="upload.onSuccess"
-        :on-error="upload.onError"
-        :on-change="upload.onChange"
-        :auto-upload="false"
-        drag
-      >
-        <el-icon class="el-icon--upload"><upload-filled /></el-icon>
-        <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
-        <template #tip>
-          <div class="el-upload__tip text-center">
-            <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
-            <el-link
-              type="primary"
-              :underline="false"
-              style="font-size: 12px; vertical-align: baseline"
-              @click="importTemplate"
-              >涓嬭浇妯℃澘</el-link
-            >
-          </div>
-        </template>
-      </el-upload>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button>
-          <el-button @click="upload.open = false">鍙� 娑�</el-button>
-        </div>
-      </template>
-    </el-dialog>
+      :action="upload.url"
+      :headers="upload.headers"
+      :disabled="upload.isUploading"
+      :before-upload="upload.beforeUpload"
+      :on-progress="upload.onProgress"
+      :on-success="upload.onSuccess"
+      :on-error="upload.onError"
+      :on-change="upload.onChange"
+      @confirm="submitFileForm"
+      @cancel="handleImportCancel"
+      @download-template="importTemplate"
+    />
   </div>
 </template>
 
 <script setup>
 import {onMounted, ref} from "vue";
-import { Search } from "@element-plus/icons-vue";
+import { Search, Close } from "@element-plus/icons-vue";
 import {
   addCustomer,
   delCustomer,
@@ -243,10 +232,17 @@
 import { userListNoPage } from "@/api/system/user.js";
 import useUserStore from "@/store/modules/user";
 import { getToken } from "@/utils/auth.js";
+import FormDialog from "@/components/Dialog/FormDialog.vue";
+import ImportDialog from "@/components/Dialog/ImportDialog.vue";
 const { proxy } = getCurrentInstance();
 const userStore = useUserStore();
 
 const tableColumn = ref([
+  {
+    label: "瀹㈡埛鍒嗙被",
+    prop: "customerType",
+    width: 120,
+  },
   {
     label: "瀹㈡埛鍚嶇О",
     prop: "customerName",
@@ -307,9 +303,6 @@
         clickFun: (row) => {
           openForm("edit", row);
         },
-				disabled: (row) => {
-					return row.maintainer !== userStore.nickName
-				}
       },
     ],
   },
@@ -318,6 +311,7 @@
 const selectedRows = ref([]);
 const userList = ref([]);
 const tableLoading = ref(false);
+const importDialogRef = ref(null);
 const page = reactive({
   current: 1,
   size: 100,
@@ -339,6 +333,7 @@
 const data = reactive({
   searchForm: {
     customerName: "",
+    customerType: "",
   },
   form: {
     customerName: "",
@@ -352,6 +347,7 @@
     basicBankAccount: "",
     bankAccount: "",
     bankCode: "",
+    customerType: "",
   },
   rules: {
     customerName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
@@ -369,6 +365,7 @@
     basicBankAccount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     bankAccount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     bankCode: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    customerType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
   },
 });
 const upload = reactive({
@@ -403,7 +400,9 @@
     if(response.code === 200){
       proxy.$modal.msgSuccess("鏂囦欢涓婁紶鎴愬姛");
       upload.open = false;
-      proxy.$refs["uploadRef"].clearFiles();
+      if (importDialogRef.value) {
+        importDialogRef.value.clearFiles();
+      }
       getList();
     }else if(response.code === 500){
       proxy.$modal.msgError(response.msg);
@@ -461,7 +460,13 @@
 /** 鎻愪氦涓婁紶鏂囦欢 */
 function submitFileForm() {
   upload.isUploading = true;
-  proxy.$refs["uploadRef"].submit();
+  if (importDialogRef.value) {
+    importDialogRef.value.submit();
+  }
+}
+/** 鍙栨秷瀵煎叆 */
+function handleImportCancel() {
+  upload.open = false;
 }
 /** 瀵煎叆鎸夐挳鎿嶄綔 */
 function handleImport() {

--
Gitblit v1.9.3