From 813837a9555ea9929c64cc5e88ef4a56d2bd7b82 Mon Sep 17 00:00:00 2001
From: 王恒 <318726284@qq.com>
Date: 星期一, 11 八月 2025 18:43:28 +0800
Subject: [PATCH] '调整新增编辑查看功能'

---
 src/api/system/manage.ts          |   12 ++
 src/views/system/manage/index.vue |  212 ++++++++++++++++++++++++++++++++++++++--------------
 2 files changed, 164 insertions(+), 60 deletions(-)

diff --git a/src/api/system/manage.ts b/src/api/system/manage.ts
index 254363e..202e961 100644
--- a/src/api/system/manage.ts
+++ b/src/api/system/manage.ts
@@ -17,10 +17,18 @@
   });
 }
 
+// 鑾峰彇褰撳墠鐢ㄦ埛鐨勬満鏋刬d
+export function getOrgId() {
+  return request({
+    url: "/enforce/order/getOrgId",
+    method: "get",
+  });
+}
+
 // 鏂板璁″垝绠$悊
 export function addManage(data: any) {
   return request({
-    url: "/enforce/order/add",
+    url: "/enforce/order/saveInsert",
     method: "post",
     data: data,
   });
@@ -29,7 +37,7 @@
 // 淇敼璁″垝绠$悊
 export function updateManage(data: any) {
   return request({
-    url: "/enforce/order/upd",
+    url: "/enforce/order/saveUpdate",
     method: "post",
     data: data,
   });
diff --git a/src/views/system/manage/index.vue b/src/views/system/manage/index.vue
index d2545aa..be03945 100644
--- a/src/views/system/manage/index.vue
+++ b/src/views/system/manage/index.vue
@@ -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,25 +184,36 @@
     />
 
     <!-- 娣诲姞鎴栦慨鏀瑰璇濇 -->
-    <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="enforceReason">
-              <el-input v-model="form.enforceReason" placeholder="璇疯緭鍏ヨ鍒掑悕绉�" />
+              <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>
@@ -231,12 +240,34 @@
             </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"
                 >閫夋嫨浼佷笟</el-button
               >
+            </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>
@@ -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,7 +425,7 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="璁″垝缂栧彿锛�">{{
-              planDetail.planNo
+              planDetail.orderNo
             }}</el-form-item>
             <el-form-item label="璁″垝鍚嶇О锛�">{{
               planDetail.enforceReason
@@ -405,22 +436,22 @@
               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.inspectionMethod
+              methodToText(planDetail.inspectionMethod)
             }}</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);
@@ -568,6 +609,16 @@
 const selectOffices = ref([]);
 const officeList = ref([]);
 let checkedList = ref([]); // 閫変腑鐨勪紒涓氬垪琛�
+
+import useUserStore from "@/store/modules/user";
+import { get } from "http";
+const userStore = useUserStore();
+const userInfo = toRefs(userStore);
+
+onMounted(() => {
+  console.log("userInfo", userInfo.value);
+});
+
 const data = reactive({
   form: {
     enforceReason: "", // 璁″垝鍚嶇О
@@ -577,7 +628,7 @@
     applyDeptNames: "", // 鎵ц绉戝鍚嶇О
     companyName: "", // 琚鏌ュ璞�
     companyId: "", // 琚鏌ュ璞d
-    companyCode: "", // 琚鏌ュ璞�
+    companyCode: "", // 缁熶竴绀句細淇$敤浠g爜
     industry: "", // 鎵�灞炶涓�
     inspectionMethod: "", // 妫�鏌ユ柟寮�
     enforceContent: "", // 妫�鏌ュ唴瀹�
@@ -606,7 +657,10 @@
     checkdIds: [
       { required: true, message: "琚鏌ュ璞′笉鑳戒负绌�", trigger: "blur" },
     ],
-    unifiedSocialCreditCode: [
+    companyName: [
+      { required: true, message: "浼佷笟鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+    ],
+    companyCode: [
       { required: true, message: "缁熶竴绀句細淇$敤浠g爜涓嶈兘涓虹┖", trigger: "blur" },
     ],
     industry: [
@@ -627,7 +681,7 @@
     inspectionMethod: [
       { required: true, message: "妫�鏌ユ柟寮忎笉鑳戒负绌�", trigger: "blur" },
     ],
-    planStatus: [{ required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }],
+    checkStatus: [{ required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }],
   },
   firmQueryParams: {
     pageNum: 1,
@@ -658,7 +712,6 @@
 // 璁″垝鏈堜唤閫夋嫨
 const changeMonth = (value) => {
   form.value.planMonth = value.join(",");
-  console.log(form.value.planMonth);
 };
 
 // 鏈烘瀯閫夋嫨
@@ -681,8 +734,6 @@
     })
     .join(",");
   form.value.applyDeptIds = value.join(",");
-  console.log(form.value.applyDeptIds);
-  console.log(form.value.applyDeptNames);
 };
 
 /*** 璁″垝瀵煎叆鍙傛暟 */
@@ -754,7 +805,7 @@
 function reset() {
   form.value = {
     enforceReason: "", // 璁″垝鍚嶇О
-    makeOrgId: "", // 鍒跺畾鏈烘瀯id
+    applyOrgId: "", // 鍒跺畾鏈烘瀯id
     applyOrgName: "", // 鍒跺畾鏈烘瀯
     applyDeptIds: "", // 鎵ц绉戝id
     applyDeptNames: "", // 鎵ц绉戝鍚嶇О
@@ -765,12 +816,22 @@
     industry: "", // 鎵�灞炶涓�
     enforceContent: "", // 妫�鏌ュ唴瀹�
     planFrequency: "", // 璁″垝棰戞
-    planFrequencyUnit: "", // 璁″垝棰戞鍗曚綅
+    planFrequencyUnit: "1", // 璁″垝棰戞鍗曚綅
     planMonth: "", // 璁″垝鏈堜唤
     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() {
@@ -783,7 +844,7 @@
   queryParams.value = {
     planNo: "", // 璁″垝缂栧彿
     enforceReason: "", // 璁″垝鍚嶇О
-    applyDeptIds: "", // 鎵ф硶鍗曚綅
+    applyDeptIds: "", // 鎵ц绉戝
     planMonthStart: "", // 璁″垝寮�濮嬫湀浠�
     planMonthEnd: "", // 璁″垝缁撴潫鏈堜唤
     orderType: 1,
@@ -792,7 +853,14 @@
 }
 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;
   });
 }
@@ -808,27 +876,28 @@
 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 {
         checkedList.value.forEach((item, index) => {
-          console.log(item);
           const submitForm = { ...form.value };
           submitForm.companyId = item.companyId;
           submitForm.companyName = item.companyName;
@@ -900,16 +969,13 @@
 
 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;
   });
 }
 
@@ -922,10 +988,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