From 3bea59c22833ecf7679498ef29f90a3b64839ab1 Mon Sep 17 00:00:00 2001
From: 王恒 <318726284@qq.com>
Date: 星期三, 13 八月 2025 14:17:33 +0800
Subject: [PATCH] '删除多引用的http解决计划管理报错问题'

---
 src/views/system/manage/index.vue |  321 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 211 insertions(+), 110 deletions(-)

diff --git a/src/views/system/manage/index.vue b/src/views/system/manage/index.vue
index 4dfb8f7..fbcfc35 100644
--- a/src/views/system/manage/index.vue
+++ b/src/views/system/manage/index.vue
@@ -11,7 +11,7 @@
     >
       <el-form-item label="璁″垝鍚嶇О" prop="companyName">
         <el-input
-          v-model="queryParams.planName"
+          v-model="queryParams.enforceReason"
           placeholder="璇疯緭鍏ヨ鍒掑悕绉�"
           clearable
           style="width: 200px"
@@ -27,9 +27,9 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="鎵ф硶鍗曚綅" prop="executiveSection">
+      <el-form-item label="鎵ф硶鍗曚綅" prop="applyDeptIds">
         <el-input
-          v-model="queryParams.executiveSection"
+          v-model="queryParams.applyDeptIds"
           placeholder="璇疯緭鍏ユ墽娉曞崟浣�"
           clearable
           style="width: 200px"
@@ -126,16 +126,16 @@
         label="缁熶竴绀句細淇$敤浠g爜"
         width="180"
       ></el-table-column>
-      <el-table-column
-        prop="industry"
-        label="鎵�灞炶涓�"
-        width="180"
-      ></el-table-column>
-      <el-table-column
-        prop="inspectionMethod"
-        label="妫�鏌ユ柟寮�"
-        width="180"
-      ></el-table-column>
+      <el-table-column prop="industry" label="鎵�灞炶涓�" width="180">
+        <template #default="scope">{{
+          industryToText(scope.row.industry)
+        }}</template>
+      </el-table-column>
+      <el-table-column prop="inspectionMethod" label="妫�鏌ユ柟寮�" width="180">
+        <template #default="scope">{{
+          methodToText(scope.row.inspectionMethod)
+        }}</template>
+      </el-table-column>
       <el-table-column
         prop="enforceContent"
         label="妫�鏌ュ唴瀹�"
@@ -146,21 +146,19 @@
         label="鎵ц绉戝"
         width="180"
       ></el-table-column>
-      <el-table-column
-        prop="planFrequency"
-        label="璁″垝棰戞"
-        width="180"
-      ></el-table-column>
+      <el-table-column prop="planFrequency" label="璁″垝棰戞" width="180">
+        <template #default="scope">{{ frequencyToText(scope.row) }} </template>
+      </el-table-column>
       <el-table-column
         prop="planMonth"
         label="璁″垝鏈堜唤"
         width="180"
       ></el-table-column>
-      <el-table-column
-        prop="orderStatus"
-        label="鐘舵��"
-        width="180"
-      ></el-table-column>
+      <el-table-column prop="orderStatus" label="鐘舵��" width="180">
+        <template #default="scope">{{
+          statusToText(scope.row.checkStatus)
+        }}</template>
+      </el-table-column>
       <el-table-column
         label="鎿嶄綔"
         align="center"
@@ -186,31 +184,42 @@
     />
 
     <!-- 娣诲姞鎴栦慨鏀瑰璇濇 -->
-    <el-dialog :title="title" v-model="open" width="700px" append-to-body>
+    <el-dialog
+      :title="title"
+      v-model="open"
+      width="700px"
+      @close="closeUpdHandler"
+      append-to-body
+    >
       <el-form ref="deptRef" :model="form" :rules="rules" label-width="140px">
         <el-row :gutter="20">
           <el-col :span="24">
-            <el-form-item label="璁″垝鍚嶇О" prop="planName">
-              <el-input v-model="form.planName" placeholder="璇疯緭鍏ヨ鍒掑悕绉�" />
+            <el-form-item label="璁″垝鍚嶇О" prop="enforceReason">
+              <el-input
+                v-model="form.enforceReason"
+                placeholder="璇疯緭鍏ヨ鍒掑悕绉�"
+              />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="鍒跺畾璁″垝鐨勬満鏋�" prop="makeOrgId">
+            <el-form-item label="鍒跺畾璁″垝鐨勬満鏋�" prop="applyOrgId">
               <el-tree-select
-                v-model="form.makeOrgId"
+                v-model="form.applyOrgId"
                 :data="deptOptions"
                 :props="{ value: 'id', label: 'label', children: 'children' }"
                 value-key="id"
                 placeholder="璇烽�夋嫨鍒跺畾璁″垝鐨勬満鏋�"
                 check-strictly
+                :default-expanded-keys="[form.applyOrgId]"
+                :default-checked-keys="[form.applyOrgId]"
                 @node-click="changeTreeHandler"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="鎵ц绉戝" prop="executiveSection">
+            <el-form-item label="鎵ц绉戝" prop="applyDeptIds">
               <el-select
                 v-model="selectOffices"
                 multiple
@@ -231,7 +240,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row :gutter="20">
+        <el-row :gutter="20" v-if="!form.orderId">
           <el-col :span="24">
             <el-form-item label="琚鏌ョ殑瀵硅薄" prop="checkdIds">
               <el-button type="primary" @click="openFirmSelect"
@@ -240,11 +249,33 @@
             </el-form-item>
           </el-col>
         </el-row>
+        <el-row :gutter="20" v-else>
+          <el-col :span="12">
+            <el-form-item label="琚鏌ュ璞�" prop="companyName">
+              <el-input
+                v-model="form.companyName"
+                placeholder="璇疯緭鍏ヨ妫�鏌ュ璞�"
+                readonly
+                disabled
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="缁熶竴绀句細淇$敤浠g爜" prop="companyCode">
+              <el-input
+                v-model="form.companyCode"
+                placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜"
+                readonly
+                disabled
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row :gutter="20" v-if="form.checkdIds">
           <el-col :span="24">
             <el-form-item label="琚鏌ュ璞′俊鎭�">
               <el-table
-                :data="form.checkdObject"
+                :data="checkedList"
                 max-height="200px"
                 style="width: 100%"
               >
@@ -256,9 +287,9 @@
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="妫�鏌ユ柟寮�" prop="checkdType">
+            <el-form-item label="妫�鏌ユ柟寮�" prop="inspectionMethod">
               <el-select
-                v-model="form.checkdType"
+                v-model="form.inspectionMethod"
                 placeholder="璇烽�夋嫨妫�鏌ユ柟寮�"
                 style="width: 100%"
               >
@@ -290,9 +321,9 @@
         </el-row>
         <el-row :gutter="20">
           <el-col :span="24">
-            <el-form-item label="妫�鏌ュ唴瀹�" prop="checkdContent">
+            <el-form-item label="妫�鏌ュ唴瀹�" prop="enforceContent">
               <el-input
-                v-model="form.checkdContent"
+                v-model="form.enforceContent"
                 type="textarea"
                 placeholder="璇疯緭鍏ユ鏌ュ唴瀹�"
               />
@@ -301,8 +332,8 @@
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="璁″垝棰戠巼" prop="planFrequency">
-              <el-input v-model="form.planFrequency" placeholder="璇疯緭鍏ラ鐜�">
+            <el-form-item label="璁″垝棰戞" prop="planFrequency">
+              <el-input v-model="form.planFrequency" placeholder="璇疯緭鍏ラ娆�">
                 <template #append>
                   <el-select
                     v-model="form.planFrequencyUnit"
@@ -394,43 +425,43 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="璁″垝缂栧彿锛�">{{
-              planDetail.planNo
+              planDetail.orderNo
             }}</el-form-item>
             <el-form-item label="璁″垝鍚嶇О锛�">{{
-              planDetail.planName
+              planDetail.enforceReason
             }}</el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鍒跺畾璁″垝鐨勬満鏋勶細">{{
-              planDetail.makeOrgName
+              planDetail.applyOrgName
             }}</el-form-item>
             <el-form-item label="琚鏌ョ殑瀵硅薄锛�">{{
-              planDetail.checkdObject
+              planDetail.companyName
             }}</el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="缁熶竴绀句細淇$敤浠g爜锛�">{{
-              planDetail.unifiedSocialCreditCode
+              planDetail.companyCode
             }}</el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鎵�灞炶涓氾細">{{
-              planDetail.industry
+              industryToText(planDetail.industry)
             }}</el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="妫�鏌ユ柟寮忥細">{{
-              planDetail.checkdType
+              methodToText(planDetail.inspectionMethod)
             }}</el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鎵ц绉戝锛�">{{
-              planDetail.executiveSection
+              planDetail.applyDeptNames
             }}</el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="妫�鏌ュ唴瀹癸細">{{
-              planDetail.checkdContent
+              planDetail.enforceContent
             }}</el-form-item>
           </el-col>
           <el-col :span="12">
@@ -439,13 +470,13 @@
             }}</el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="璁″垝棰戠巼锛�">{{
-              planDetail.planFrequency
-            }}</el-form-item>
+            <el-form-item label="璁″垝棰戞锛�">
+              {{ frequencyToText(planDetail) }}
+            </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鐘舵�侊細">{{
-              planDetail.planStatus
+              statusToText(planDetail.checkStatus)
             }}</el-form-item>
           </el-col>
         </el-row>
@@ -504,7 +535,7 @@
         <el-table-column
           type="selection"
           width="55"
-          :reserve-selection="true"
+          :reserve-selection="false"
         />
         <el-table-column prop="companyName" label="浼佷笟鍚嶇О" />
         <el-table-column prop="companyCode" label="缁熶竴绀句細淇$敤浠g爜" />
@@ -521,6 +552,7 @@
       />
       <template #footer>
         <div class="dialog-footer">
+          <el-button type="primary" @click="closeSelect">纭� 瀹�</el-button>
           <el-button @click="closeSelect">鍏� 闂�</el-button>
         </div>
       </template>
@@ -538,6 +570,7 @@
   delManage,
   exportTemplate,
   exportManage,
+  getOrgId,
 } from "@/api/system/manage";
 import { listCompany } from "@/api/system/company/company";
 import { deptTreeSelect } from "@/api/system/user";
@@ -551,6 +584,14 @@
   "industry_type",
   "inspection_method"
 );
+const statusOptions = ref([
+  { label: "宸叉挙鍥�", value: -1 },
+  { label: "寰呮彁浜�", value: 0 },
+  { label: "宸叉彁浜�", value: 1 },
+  { label: "宸插鎵瑰緟鎵ц", value: 2 },
+  { label: "宸叉墽琛屽緟涓婃姤", value: 3 },
+  { label: "宸蹭笂鎶�", value: 4 },
+]);
 const deptList = ref([]);
 const open = ref(false);
 const loading = ref(true);
@@ -567,18 +608,20 @@
 const deptOptions = ref(undefined);
 const selectOffices = ref([]);
 const officeList = ref([]);
+let checkedList = ref([]); // 閫変腑鐨勪紒涓氬垪琛�
 const data = reactive({
   form: {
-    planName: "", // 璁″垝鍚嶇О
-    makeOrgId: "", // 鍒跺畾鏈烘瀯id
-    makeOrgName: "", // 鍒跺畾鏈烘瀯
-    executiveSection: "", // 鎵ц绉戝
-    executiveSectionName: "", // 鎵ц绉戝鍚嶇О
-    checkdObject: [], // 琚鏌ュ璞″垪琛�
-    checkdIds: "", // 琚鏌ュ璞d
-    checkdType: "", // 妫�鏌ユ柟寮�
+    enforceReason: "", // 璁″垝鍚嶇О
+    applyOrgId: "", // 鍒跺畾鏈烘瀯id
+    applyOrgName: "", // 鍒跺畾鏈烘瀯
+    applyDeptIds: "", // 鎵ц绉戝
+    applyDeptNames: "", // 鎵ц绉戝鍚嶇О
+    companyName: "", // 琚鏌ュ璞�
+    companyId: "", // 琚鏌ュ璞d
+    companyCode: "", // 缁熶竴绀句細淇$敤浠g爜
     industry: "", // 鎵�灞炶涓�
-    checkdContent: "", // 妫�鏌ュ唴瀹�
+    inspectionMethod: "", // 妫�鏌ユ柟寮�
+    enforceContent: "", // 妫�鏌ュ唴瀹�
     planFrequency: "", // 璁″垝棰戞
     planFrequencyUnit: "1", // 璁″垝棰戞鍗曚綅
     planMonth: "", // 璁″垝鏈堜唤
@@ -586,8 +629,8 @@
   queryParams: {
     orderType: 1,
     planNo: "",
-    planName: "",
-    executiveSection: "",
+    enforceReason: "",
+    applyDeptNames: "",
     value1: "",
     pageNum: 1,
     pageSize: 10,
@@ -595,25 +638,28 @@
   },
   rules: {
     planNo: [{ required: true, message: "璁″垝缂栧彿涓嶈兘涓虹┖", trigger: "blur" }],
-    planName: [
+    enforceReason: [
       { required: true, message: "璁″垝鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
     ],
-    makeOrgId: [
+    applyOrgId: [
       { required: true, message: "鍒跺畾璁″垝鐨勬満鏋勪笉鑳戒负绌�", trigger: "blur" },
     ],
     checkdIds: [
       { required: true, message: "琚鏌ュ璞′笉鑳戒负绌�", trigger: "blur" },
     ],
-    unifiedSocialCreditCode: [
+    companyName: [
+      { required: true, message: "浼佷笟鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+    ],
+    companyCode: [
       { required: true, message: "缁熶竴绀句細淇$敤浠g爜涓嶈兘涓虹┖", trigger: "blur" },
     ],
     industry: [
       { required: true, message: "鎵�灞炶涓氫笉鑳戒负绌�", trigger: "blur" },
     ],
-    checkdContent: [
+    enforceContent: [
       { required: true, message: "妫�鏌ュ唴瀹逛笉鑳戒负绌�", trigger: "blur" },
     ],
-    executiveSection: [
+    applyDeptIds: [
       { required: true, message: "鎵ц绉戝涓嶈兘涓虹┖", trigger: "blur" },
     ],
     planFrequency: [
@@ -622,10 +668,10 @@
     planMonth: [
       { required: true, message: "璁″垝鏈堜唤涓嶈兘涓虹┖", trigger: "blur" },
     ],
-    checkdType: [
+    inspectionMethod: [
       { required: true, message: "妫�鏌ユ柟寮忎笉鑳戒负绌�", trigger: "blur" },
     ],
-    planStatus: [{ required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }],
+    checkStatus: [{ required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }],
   },
   firmQueryParams: {
     pageNum: 1,
@@ -641,7 +687,7 @@
   listDept({
     pageNum: 1,
     pageSize: 1000,
-    parentId: form.value.makeOrgId,
+    parentId: form.value.applyOrgId,
   }).then((response) => {
     officeList.value = response.data;
   });
@@ -656,16 +702,15 @@
 // 璁″垝鏈堜唤閫夋嫨
 const changeMonth = (value) => {
   form.value.planMonth = value.join(",");
-  console.log(form.value.planMonth);
 };
 
 // 鏈烘瀯閫夋嫨
 const changeTreeHandler = (e) => {
-  form.value.makeOrgId = e.id;
-  form.value.makeOrgName = e.label;
+  form.value.applyOrgId = e.id;
+  form.value.applyOrgName = e.label;
   selectOffices.value = [];
-  form.value.executiveSection = "";
-  form.value.executiveSectionName = "";
+  form.value.applyDeptIds = "";
+  form.value.applyDeptNames = "";
   if (e.id) {
     getOfficeList();
   }
@@ -673,12 +718,12 @@
 
 // 绉戝閫夋嫨
 const handleSelectOffices = (value) => {
-  form.value.executiveSectionName = value.map((item) => {
-    return officeList.value.find((obj) => obj.deptId === item).deptName;
-  }).join(",");
-  form.value.executiveSection = value.join(",");
-  console.log(form.value.executiveSection);
-  console.log(form.value.executiveSectionName);
+  form.value.applyDeptNames = value
+    .map((item) => {
+      return officeList.value.find((obj) => obj.deptId === item).deptName;
+    })
+    .join(",");
+  form.value.applyDeptIds = value.join(",");
 };
 
 /*** 璁″垝瀵煎叆鍙傛暟 */
@@ -749,23 +794,34 @@
 /** 琛ㄥ崟閲嶇疆 */
 function reset() {
   form.value = {
-    planName: "", // 璁″垝鍚嶇О
-    makeOrgId: "", // 鍒跺畾鏈烘瀯id
-    makeOrgName: "", // 鍒跺畾鏈烘瀯
-    executiveSection: "", // 鎵ц绉戝
-    executiveSectionName: "", // 鎵ц绉戝鍚嶇О
-    checkdObject: [], // 琚鏌ュ璞″垪琛�
+    enforceReason: "", // 璁″垝鍚嶇О
+    applyOrgId: "", // 鍒跺畾鏈烘瀯id
+    applyOrgName: "", // 鍒跺畾鏈烘瀯
+    applyDeptIds: "", // 鎵ц绉戝id
+    applyDeptNames: "", // 鎵ц绉戝鍚嶇О
     checkdIds: "", // 琚鏌ュ璞d
-    checkdType: "", // 妫�鏌ユ柟寮�
+    companyName: "", // 琚鏌ュ璞″悕绉�
+    companyCode: "", // 缁熶竴绀句細淇$敤浠g爜
+    inspectionMethod: "", // 妫�鏌ユ柟寮�
     industry: "", // 鎵�灞炶涓�
-    checkdContent: "", // 妫�鏌ュ唴瀹�
+    enforceContent: "", // 妫�鏌ュ唴瀹�
     planFrequency: "", // 璁″垝棰戞
-    planFrequencyUnit: "", // 璁″垝棰戞鍗曚綅
+    planFrequencyUnit: "1", // 璁″垝棰戞鍗曚綅
     planMonth: "", // 璁″垝鏈堜唤
-    orderType: 1
+    orderType: 1,
   };
-  proxy.resetForm("deptRef");
+  selectOffices.value = [];
+  selectMonth.value = [];
+  checkedList.value = [];
+  proxy.$refs["deptRef"].clearValidate();
+  proxy.$refs["deptRef"].resetFields();
 }
+
+function closeUpdHandler() {
+  reset();
+  open.value = false;
+}
+
 const queryRef = ref();
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 function handleQuery() {
@@ -777,17 +833,24 @@
   dateRange.value = [];
   queryParams.value = {
     planNo: "", // 璁″垝缂栧彿
-    planName: "", // 璁″垝鍚嶇О
-    executiveSection: "", // 鎵ф硶鍗曚綅
+    enforceReason: "", // 璁″垝鍚嶇О
+    applyDeptIds: "", // 鎵ц绉戝
     planMonthStart: "", // 璁″垝寮�濮嬫湀浠�
     planMonthEnd: "", // 璁″垝缁撴潫鏈堜唤
-    orderType: 1
+    orderType: 1,
   };
   handleQuery();
 }
 function getDetails(id) {
   getManage(id).then((response) => {
-    form.value = response.data;
+    form.value = JSON.parse(JSON.stringify(response.data));
+    form.value.planFrequencyUnit = form.value.planFrequencyUnit.toString();
+    selectMonth.value = form.value.planMonth.split(",");
+    selectOffices.value = form.value.applyDeptIds
+      .split(",")
+      .map((item) => Number(item));
+
+    getOfficeList();
     open.value = true;
   });
 }
@@ -803,29 +866,40 @@
 function handleAdd(row) {
   if (row) {
     title.value = "缂栬緫璁″垝";
-    getDetails(row.id);
+    getDetails(row.orderId);
   } else {
     title.value = "娣诲姞璁″垝";
     open.value = true;
+    getUserOrgId();
   }
+  getFirmList();
 }
 
 /** 鎻愪氦鎸夐挳 */
 function submitForm() {
-  console.log(form.value);
   proxy.$refs["deptRef"].validate((valid) => {
     if (valid) {
-      if (form.value.id != undefined) {
+      if (form.value.orderId != undefined) {
         updateManage(form.value).then((response) => {
           proxy.$modal.msgSuccess("淇敼鎴愬姛");
           open.value = false;
           getList();
+          reset();
         });
       } else {
-        addManage(form.value).then((response) => {
-          proxy.$modal.msgSuccess("鏂板鎴愬姛");
-          open.value = false;
-          getList();
+        checkedList.value.forEach((item, index) => {
+          const submitForm = { ...form.value };
+          submitForm.companyId = item.companyId;
+          submitForm.companyName = item.companyName;
+          submitForm.companyCode = item.companyCode;
+          addManage(submitForm).then((response) => {
+            if (index === checkedList.value.length - 1) {
+              proxy.$modal.msgSuccess("鏂板鎴愬姛");
+              open.value = false;
+              getList();
+              reset();
+            }
+          });
         });
       }
     }
@@ -885,21 +959,18 @@
 
 function openFirmSelect() {
   selectOpen.value = true;
-  getFirmList();
 }
 
 /** 鏌ヨ浼佷笟鍒楄〃 */
 function getFirmList() {
-  loading.value = true;
   listCompany(firmQueryParams.value).then((response) => {
     firmList.value = response.rows;
     firmQueryParams.value.total = response.total;
-    loading.value = false;
   });
 }
 
 function handleSelectionChange(e) {
-  form.value.checkdObject = e;
+  checkedList.value = e;
   form.value.checkdIds = e.map((item) => item.companyId).join(",");
 }
 
@@ -907,10 +978,40 @@
   selectOpen.value = false;
 }
 
-getList();
-function selectableFun(e) {
-  console.log(e);
+function industryToText(industry) {
+  return industry_type.value.find((item) => item.key === industry).label;
 }
+
+function methodToText(inspectionMethod) {
+  return inspection_method.value.find((item) => item.key === inspectionMethod)
+    .label;
+}
+
+function frequencyToText(data) {
+  if (!data.planFrequencyUnit) {
+    return "";
+  }
+  const unit = frequency.value.find(
+    (item) => item.key == data.planFrequencyUnit
+  ).label;
+  return `${data.planFrequency}娆�/${unit}`;
+}
+
+function statusToText(status) {
+  return statusOptions.value.find((item) => item.value === status).label;
+}
+
+function getUserOrgId() {
+  getOrgId().then((response) => {
+    form.value.applyOrgId = response.data || '';
+    if (response.data) {
+      getOfficeList();
+    }
+  });
+}
+
+getList();
+function selectableFun(e) {}
 </script>
 
 <style scoped lang="scss">

--
Gitblit v1.9.1