From 476a9ca89794a830b8a8279b80d9b446624a0641 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 02 六月 2026 17:50:39 +0800
Subject: [PATCH] refactor(equipment): 优化设备台账表单结构并更新质管检验选项

---
 src/views/qualityManagement/processInspection/components/formDia.vue |    4 
 src/views/qualityManagement/rawMaterial/components/formDia.vue       |  443 +++++++++------
 src/views/equipmentManagement/repair/index.vue                       |  285 +++++-----
 src/views/equipmentManagement/upkeep/Form/formDia.vue                |  639 ++++++++++++----------
 src/views/equipmentManagement/ledger/index.vue                       |  112 ++-
 src/views/equipmentManagement/ledger/Form.vue                        |  142 -----
 src/views/qualityManagement/processInspection/index.vue              |    8 
 7 files changed, 813 insertions(+), 820 deletions(-)

diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
index 72d594e..436e30f 100644
--- a/src/views/equipmentManagement/ledger/Form.vue
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -17,39 +17,8 @@
         </el-form-item>
       </el-col>
       <el-col :span="12">
-        <el-form-item label="璁惧绫诲瀷" prop="type">
-          <el-select
-            v-model="form.type"
-            placeholder="璇烽�夋嫨鎴栬緭鍏ヨ澶囩被鍨�"
-            clearable
-            filterable
-            allow-create
-            default-first-option
-            style="width: 100%"
-            @change="handleDeviceTypeChange"
-          >
-            <el-option
-              v-for="item in deviceTypeOptions"
-              :key="item"
-              :label="item"
-              :value="item"
-            />
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="渚涘簲鍟�" prop="supplierName">
-          <el-input v-model="form.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢" />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
         <el-form-item label="瀛樻斁浣嶇疆" prop="storageLocation">
           <el-input v-model="form.storageLocation" placeholder="璇疯緭鍏ュ瓨鏀句綅缃�" />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="鍗曚綅" prop="unit">
-          <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" />
         </el-form-item>
       </el-col>
       <el-col :span="12">
@@ -74,58 +43,6 @@
             v-model="form.number"
 													 disabled
             placeholder="璇疯緭鍏ユ暟閲�"
-            @change="mathNum"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="鍚◣鍗曚环" prop="taxIncludingPriceUnit">
-          <el-input-number :step="0.01" :min="0" style="width: 100%"
-            v-model="form.taxIncludingPriceUnit"
-            placeholder="璇疯緭鍏ュ惈绋庡崟浠�"
-            maxlength="10"
-            @change="mathNum"
-          />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="鍚◣鎬讳环" prop="taxIncludingPriceTotal">
-          <el-input
-            v-model="form.taxIncludingPriceTotal"
-            placeholder="鑷姩鐢熸垚"
-            type="number"
-            disabled
-          />
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="绋庣巼(%)" prop="taxRate">
-          <!-- <el-input
-            v-model="form.taxRate"
-            placeholder="璇疯緭鍏ョ◣鐜�"
-            type="number"
-          >
-            <template #append> % </template>
-          </el-input> -->
-          <el-select
-            v-model="form.taxRate"
-            placeholder="璇烽�夋嫨"
-            clearable
-            @change="mathNum"
-          >
-            <el-option label="1" :value="1" />
-            <el-option label="6" :value="6" />
-            <el-option label="13" :value="13" />
-          </el-select>
-        </el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item label="涓嶅惈绋庢�讳环" prop="unTaxIncludingPriceTotal">
-          <el-input
-            v-model="form.unTaxIncludingPriceTotal"
-            placeholder="鑷姩鐢熸垚"
-            type="number"
-            disabled
           />
         </el-form-item>
       </el-col>
@@ -169,11 +86,6 @@
 // import useUserStore from "@/store/modules/user";
 import { getLedgerById } from "@/api/equipmentManagement/ledger";
 import dayjs from "dayjs";
-import {
-  calculateTaxIncludeTotalPrice,
-  calculateTaxExclusiveTotalPrice,
-} from "@/utils/summarizeTable";
-import { ElMessage } from "element-plus";
 import {ref} from "vue";
 
 defineOptions({
@@ -181,23 +93,9 @@
 });
 const formRef = ref(null);
 const operationType = ref('');
-// 璁惧绫诲瀷鍥哄畾閫夐」
-const deviceTypeOptions = ref([
-  '鐢熶骇璁惧',
-  '鍔炲叕璁惧',
-  '妫�娴嬭澶�',
-  '杩愯緭璁惧',
-  '鍏朵粬璁惧'
-]);
 const formRules = {
 	deviceName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
 	deviceModel: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	type: [{ required: true, trigger: "change", message: "璇烽�夋嫨鎴栬緭鍏ヨ澶囩被鍨�" }],
-	supplierName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	unit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	number: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	taxIncludingPriceUnit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
-	taxRate: [{ required: true, trigger: "change", message: "璇疯緭鍏�" }],
 	planRuntimeTime: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
 	annualDepreciationAmount: [
 		{ 
@@ -217,17 +115,10 @@
   deviceName: undefined, // 璁惧鍚嶇О
   deviceModel: undefined, // 瑙勬牸鍨嬪彿
   deviceBrand: undefined, // 璁惧鍝佺墝
-  type: undefined, // 璁惧绫诲瀷
-  supplierName: undefined, // 渚涘簲鍟�
   storageLocation: undefined, // 瀛樻斁浣嶇疆
   isDepr: 2, // 鏄惁鍚敤鎶樻棫 1-鏄� 2-鍚�
   annualDepreciationAmount: undefined, // 姣忓勾鎶樻棫閲戦
-  unit: undefined, // 鍗曚綅
   number: 1, // 鏁伴噺
-  taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
-  taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
-  taxRate: undefined, // 绋庣巼
-  unTaxIncludingPriceTotal: undefined, // 涓嶅惈绋庢�讳环
   // createUser: useUserStore().nickName, // 褰曞叆浜�
   createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 褰曞叆鏃ユ湡
 	planRuntimeTime: dayjs().format("YYYY-MM-DD"), // 褰曞叆鏃ユ湡
@@ -242,17 +133,10 @@
     form.deviceName = data.deviceName;
     form.deviceModel = data.deviceModel;
     form.deviceBrand = data.deviceBrand;
-    form.type = data.type;
-    form.supplierName = data.supplierName;
     form.storageLocation = data.storageLocation;
     form.isDepr = data.isDepr;
     form.annualDepreciationAmount = data.annualDepreciationAmount;
-    form.unit = data.unit;
     form.number = 1;
-    form.taxIncludingPriceUnit = data.taxIncludingPriceUnit;
-    form.taxIncludingPriceTotal = data.taxIncludingPriceTotal;
-    form.taxRate = data.taxRate;
-    form.unTaxIncludingPriceTotal = data.unTaxIncludingPriceTotal;
     form.createTime = data.createTime;
     // 棰勮杩愯鏃堕棿锛氬悗绔繑鍥炲悗杞负 YYYY-MM-DD 浠ヤ究鏃ユ湡閫夋嫨鍣ㄦ纭睍绀�
     if (data.planRuntimeTime) {
@@ -260,30 +144,6 @@
     } else {
       form.planRuntimeTime = undefined;
     }
-  }
-};
-
-const handleDeviceTypeChange = (value) => {
-  // 濡傛灉杈撳叆鐨勬柊鍊间笉鍦ㄥ浐瀹氶�夐」涓紝鍒欐坊鍔犲埌閫夐」鍒楄〃
-  if (value && !deviceTypeOptions.value.includes(value)) {
-    deviceTypeOptions.value.push(value);
-  }
-};
-
-const mathNum = () => {
-  if (!form.taxIncludingPriceUnit) {
-    ElMessage.error("璇疯緭鍏ュ崟浠�");
-    return;
-  }
-  form.taxIncludingPriceTotal = calculateTaxIncludeTotalPrice(
-    form.taxIncludingPriceUnit,
-    form.number
-  );
-  if (form.taxRate) {
-    form.unTaxIncludingPriceTotal = calculateTaxExclusiveTotalPrice(
-      form.taxIncludingPriceTotal,
-      form.taxRate
-    );
   }
 };
 
@@ -306,4 +166,4 @@
   resetFormAndValidate,
 	formRef,
 });
-</script>
+</script>
\ No newline at end of file
diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue
index 62f0c6a..c7b4b52 100644
--- a/src/views/equipmentManagement/ledger/index.vue
+++ b/src/views/equipmentManagement/ledger/index.vue
@@ -12,25 +12,23 @@
       </el-form-item>
       <el-form-item label="瑙勬牸鍨嬪彿">
         <el-input
-            v-model="filters.deviceModel"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
-            clearable
-            @change="getTableData"
-        />
-      </el-form-item>
-      <el-form-item label="渚涘簲鍟�">
-        <el-input
-            v-model="filters.supplierName"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ヤ緵搴斿晢"
-            clearable
-            @change="getTableData"
+          v-model="filters.deviceModel"
+          style="width: 240px"
+          placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+          clearable
+          @change="getTableData"
         />
       </el-form-item>
       <el-form-item label="褰曞叆鏃ユ湡:">
-        <el-date-picker v-model="filters.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
-                        placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
+        <el-date-picker
+          v-model="filters.entryDate"
+          value-format="YYYY-MM-DD"
+          format="YYYY-MM-DD"
+          type="daterange"
+          placeholder="璇烽�夋嫨"
+          clearable
+          @change="changeDaterange"
+        />
       </el-form-item>
       <el-form-item>
         <el-button type="primary" @click="getTableData">鎼滅储</el-button>
@@ -70,10 +68,16 @@
     </div>
     <Modal ref="modalRef" @success="getTableData"></Modal>
     <el-dialog v-model="qrDialogVisible" title="浜岀淮鐮�" width="300px" draggable>
-      <div style="text-align:center;">
-        <img :src="qrCodeUrl" alt="浜岀淮鐮�" style="width:200px;height:200px;" />
-        <div style="margin:10px 0;">
-          <el-button type="primary" @click="downloadQRCode">涓嬭浇浜岀淮鐮佸浘鐗�</el-button>
+      <div style="text-align: center">
+        <img
+          :src="qrCodeUrl"
+          alt="浜岀淮鐮�"
+          style="width: 200px; height: 200px"
+        />
+        <div style="margin: 10px 0">
+          <el-button type="primary" @click="downloadQRCode"
+            >涓嬭浇浜岀淮鐮佸浘鐗�</el-button
+          >
         </div>
       </div>
     </el-dialog>
@@ -133,14 +137,14 @@
       label: "璁惧鍝佺墝",
       prop: "deviceBrand",
     },
-    {
-      label: "璁惧绫诲瀷",
-      prop: "type",
-    },
-    {
-      label: "渚涘簲鍟�",
-      prop: "supplierName",
-    },
+    // {
+    //   label: "璁惧绫诲瀷",
+    //   prop: "type",
+    // },
+    // {
+    //   label: "渚涘簲鍟�",
+    //   prop: "supplierName",
+    // },
     {
       label: "瀛樻斁浣嶇疆",
       prop: "storageLocation",
@@ -157,35 +161,35 @@
       label: "褰曞叆鏃ユ湡",
       prop: "createTime",
       formatData: (v) => {
-        if (!v) return '';
+        if (!v) return "";
         // 濡傛灉鍖呭惈鏃跺垎绉掞紝鍙彇鏃ユ湡閮ㄥ垎
-        if (v.includes(' ')) {
-          return v.split(' ')[0];
+        if (v.includes(" ")) {
+          return v.split(" ")[0];
         }
         return v;
       },
     },
-		{
-			dataType: "action",
-			label: "鎿嶄綔",
-			align: "center",
-			fixed: 'right',
-			width: 150,
-			operation: [
-				{
-					name: "缂栬緫",
-					clickFun: (row) => {
-						edit(row.id)
-					},
-				},
-				{
-					name: "鐢熸垚浜岀淮鐮�",
-					clickFun: (row) => {
-						showQRCode(row)
-					},
-				},
-			],
-		},
+    {
+      dataType: "action",
+      label: "鎿嶄綔",
+      align: "center",
+      fixed: "right",
+      width: 150,
+      operation: [
+        {
+          name: "缂栬緫",
+          clickFun: (row) => {
+            edit(row.id);
+          },
+        },
+        {
+          name: "鐢熸垚浜岀淮鐮�",
+          clickFun: (row) => {
+            showQRCode(row);
+          },
+        },
+      ],
+    },
   ]
 );
 
@@ -202,7 +206,7 @@
 };
 const changePage = ({ page, limit }) => {
   pagination.currentPage = page;
-	pagination.pageSize = limit;
+  pagination.pageSize = limit;
   onCurrentChange(page);
 };
 const deleteRow = (id) => {
@@ -249,7 +253,7 @@
 
 const showQRCode = async (row) => {
   // 鐩存帴浣跨敤URL锛屼笉瑕佺敤JSON.stringify鍖呰
-  const qrContent = proxy.javaApi + '/device-info?deviceId=' + row.id;
+  const qrContent = proxy.javaApi + "/device-info?deviceId=" + row.id;
   qrCodeUrl.value = await QRCode.toDataURL(qrContent);
   qrRowData.value = row;
   qrDialogVisible.value = true;
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index a278a5c..ea18062 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -3,60 +3,60 @@
     <el-form :model="filters" :inline="true">
       <el-form-item label="璁惧鍚嶇О">
         <el-input
-            v-model="filters.deviceName"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ヨ澶囧悕绉�"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
+          v-model="filters.deviceName"
+          style="width: 240px"
+          placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+          clearable
+          :prefix-icon="Search"
+          @change="getTableData"
         />
       </el-form-item>
       <el-form-item label="瑙勬牸鍨嬪彿">
         <el-input
-            v-model="filters.deviceModel"
-            style="width: 240px"
-            placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
+          v-model="filters.deviceModel"
+          style="width: 240px"
+          placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
+          clearable
+          :prefix-icon="Search"
+          @change="getTableData"
         />
       </el-form-item>
       <el-form-item label="鏁呴殰鐜拌薄">
         <el-input
-            v-model="filters.remark"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
+          v-model="filters.remark"
+          style="width: 240px"
+          placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
+          clearable
+          :prefix-icon="Search"
+          @change="getTableData"
         />
       </el-form-item>
       <el-form-item label="缁翠慨浜�">
         <el-input
-            v-model="filters.maintenanceName"
-            style="width: 240px"
-            placeholder="璇疯緭鍏ョ淮淇汉"
-            clearable
-            :prefix-icon="Search"
-            @change="getTableData"
+          v-model="filters.maintenanceName"
+          style="width: 240px"
+          placeholder="璇疯緭鍏ョ淮淇汉"
+          clearable
+          :prefix-icon="Search"
+          @change="getTableData"
         />
       </el-form-item>
       <el-form-item label="鎶ヤ慨鏃ユ湡">
         <el-date-picker
-            v-model="filters.repairTimeStr"
-            type="date"
-            placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
-            size="default"
-            @change="(date) => handleDateChange(date,2)"
+          v-model="filters.repairTimeStr"
+          type="date"
+          placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
+          size="default"
+          @change="(date) => handleDateChange(date, 2)"
         />
       </el-form-item>
       <el-form-item label="缁翠慨鏃ユ湡">
         <el-date-picker
-            v-model="filters.maintenanceTimeStr"
-            type="date"
-            placeholder="璇烽�夋嫨缁翠慨鏃ユ湡"
-            size="default"
-            @change="(date) => handleDateChange(date,1)"
+          v-model="filters.maintenanceTimeStr"
+          type="date"
+          placeholder="璇烽�夋嫨缁翠慨鏃ユ湡"
+          size="default"
+          @change="(date) => handleDateChange(date, 1)"
         />
       </el-form-item>
       <el-form-item>
@@ -71,9 +71,7 @@
           <el-button type="success" icon="Van" @click="addRepair">
             鏂板鎶ヤ慨
           </el-button>
-          <el-button @click="handleOut">
-            瀵煎嚭
-          </el-button>
+          <el-button @click="handleOut"> 瀵煎嚭 </el-button>
           <el-button
             type="danger"
             icon="Delete"
@@ -85,17 +83,17 @@
         </div>
       </div>
       <PIMTable
-          rowKey="id"
-          isSelection
-          :column="columns"
-          :tableData="dataList"
-          :page="{
+        rowKey="id"
+        isSelection
+        :column="columns"
+        :tableData="dataList"
+        :page="{
           current: pagination.currentPage,
           size: pagination.pageSize,
           total: pagination.total,
         }"
-          @selection-change="handleSelectionChange"
-          @pagination="changePage"
+        @selection-change="handleSelectionChange"
+        @pagination="changePage"
       >
         <template #statusRef="{ row }">
           <el-tag v-if="row.status === 2" type="danger">澶辫触</el-tag>
@@ -111,11 +109,7 @@
           >
             缂栬緫
           </el-button>
-          <el-button
-            type="info"
-            link
-            @click="viewAttachments(row)"
-          >
+          <el-button type="info" link @click="viewAttachments(row)">
             鏌ョ湅闄勪欢
           </el-button>
           <el-button
@@ -129,7 +123,7 @@
           <el-button
             type="danger"
             link
-            :disabled="row.status === 1"
+            :disabled="row.status === 1 && !isAdmin"
             @click="delRepairByIds(row.id)"
           >
             鍒犻櫎
@@ -137,8 +131,8 @@
         </template>
       </PIMTable>
     </div>
-    <RepairModal ref="repairModalRef" @ok="getTableData"/>
-    <MaintainModal ref="maintainModalRef" @ok="getTableData"/>
+    <RepairModal ref="repairModalRef" @ok="getTableData" />
+    <MaintainModal ref="maintainModalRef" @ok="getTableData" />
     <FileListDialog
       ref="fileListDialogRef"
       v-model="fileDialogVisible"
@@ -152,19 +146,26 @@
 
 <script setup>
 import { onMounted, getCurrentInstance, computed } from "vue";
-import {usePaginationApi} from "@/hooks/usePaginationApi";
-import {getRepairPage, delRepair, getRepairById} from "@/api/equipmentManagement/repair";
+import { usePaginationApi } from "@/hooks/usePaginationApi";
+import {
+  getRepairPage,
+  delRepair,
+  getRepairById,
+} from "@/api/equipmentManagement/repair";
 import RepairModal from "./Modal/RepairModal.vue";
-import {ElMessageBox, ElMessage} from "element-plus";
+import { ElMessageBox, ElMessage } from "element-plus";
 import dayjs from "dayjs";
 import MaintainModal from "./Modal/MaintainModal.vue";
 import FileListDialog from "@/components/Dialog/FileListDialog.vue";
+import useUserStore from "@/store/modules/user";
+import auth from "@/plugins/auth";
 
 defineOptions({
   name: "璁惧鎶ヤ慨",
 });
 
-const {proxy} = getCurrentInstance();
+const { proxy } = getCurrentInstance();
+const userStore = useUserStore();
 
 // 妯℃�佹瀹炰緥
 const repairModalRef = ref();
@@ -217,80 +218,80 @@
   resetFilters,
   onCurrentChange,
 } = usePaginationApi(
-    getRepairPage,
+  getRepairPage,
+  {
+    deviceName: undefined,
+    deviceModel: undefined,
+    remark: undefined,
+    maintenanceName: undefined,
+    repairTimeStr: undefined,
+    maintenanceTimeStr: undefined,
+  },
+  [
     {
-      deviceName: undefined,
-      deviceModel: undefined,
-      remark: undefined,
-      maintenanceName: undefined,
-      repairTimeStr: undefined,
-      maintenanceTimeStr: undefined,
+      label: "璁惧鍚嶇О",
+      align: "center",
+      prop: "deviceName",
     },
-    [
-      {
-        label: "璁惧鍚嶇О",
-        align: "center",
-        prop: "deviceName",
-      },
-      {
-        label: "瑙勬牸鍨嬪彿",
-        align: "center",
-        prop: "deviceModel",
-      },
-      {
-        label: "鎶ヤ慨鏃ユ湡",
-        align: "center",
-        prop: "repairTime",
-        formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
-      },
-      {
-        label: "鎶ヤ慨浜�",
-        align: "center",
-        prop: "repairName",
-      },
-      {
-        label: "鏁呴殰鐜拌薄",
-        align: "center",
-        prop: "remark",
-      },
-      {
-        label: "缁翠慨浜�",
-        align: "center",
-        prop: "maintenanceName",
-      },
-      {
-        label: "缁翠慨缁撴灉",
-        align: "center",
-        prop: "maintenanceResult",
-      },
-      {
-        label: "缁翠慨鏃ユ湡",
-        align: "center",
-        prop: "maintenanceTime",
-        formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
-      },
-      {
-        label: "鐘舵��",
-        align: "center",
-        prop: "status",
-        dataType: "slot",
-        slot: "statusRef",
-      },
-      {
-        fixed: "right",
-        label: "鎿嶄綔",
-        dataType: "slot",
-        slot: "operation",
-        align: "center",
-        width: "360px",
-      },
-    ]
+    {
+      label: "瑙勬牸鍨嬪彿",
+      align: "center",
+      prop: "deviceModel",
+    },
+    {
+      label: "鎶ヤ慨鏃ユ湡",
+      align: "center",
+      prop: "repairTime",
+      formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
+    },
+    {
+      label: "鎶ヤ慨浜�",
+      align: "center",
+      prop: "repairName",
+    },
+    {
+      label: "鏁呴殰鐜拌薄",
+      align: "center",
+      prop: "remark",
+    },
+    {
+      label: "缁翠慨浜�",
+      align: "center",
+      prop: "maintenanceName",
+    },
+    {
+      label: "缁翠慨缁撴灉",
+      align: "center",
+      prop: "maintenanceResult",
+    },
+    {
+      label: "缁翠慨鏃ユ湡",
+      align: "center",
+      prop: "maintenanceTime",
+      formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
+    },
+    {
+      label: "鐘舵��",
+      align: "center",
+      prop: "status",
+      dataType: "slot",
+      slot: "statusRef",
+    },
+    {
+      fixed: "right",
+      label: "鎿嶄綔",
+      dataType: "slot",
+      slot: "operation",
+      align: "center",
+      width: "360px",
+    },
+  ]
 );
 
 // type === 1 缁翠慨 2鎶ヤ慨闂�
 const handleDateChange = (value, type) => {
-  filters.maintenanceTimeStr = null
-  filters.c = null
+  filters.maintenanceTimeStr = null;
+  filters.c = null;
   if (type === 1) {
     if (value) {
       filters.maintenanceTimeStr = dayjs(value).format("YYYY-MM-DD");
@@ -308,10 +309,14 @@
   multipleList.value = selectionList;
 };
 
-// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+// 鏄惁鏄鐞嗗憳
+const isAdmin = computed(() => auth.hasRole("admin"));
+
+// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑锛堢鐞嗗憳鍙互鍒犻櫎瀹岀粨鐘舵�佺殑璁板綍锛�
 const hasFinishedStatus = computed(() => {
-  return multipleList.value.some(item => item.status === 1)
-})
+  if (isAdmin.value) return false;
+  return multipleList.value.some((item) => item.status === 1);
+});
 
 // 鏂板鎶ヤ慨
 const addRepair = () => {
@@ -328,7 +333,7 @@
   maintainModalRef.value.open(row.id, row);
 };
 
-const changePage = ({page, limit}) => {
+const changePage = ({ page, limit }) => {
   pagination.currentPage = page;
   pagination.pageSize = limit;
   onCurrentChange(page);
@@ -336,15 +341,15 @@
 
 // 鍗曡鍒犻櫎
 const delRepairByIds = async (ids) => {
-  // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍
+  // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍锛堢鐞嗗憳鍙互鍒犻櫎锛�
   const idsArray = Array.isArray(ids) ? ids : [ids];
-  const hasFinished = idsArray.some(id => {
-    const record = dataList.value.find(item => item.id === id);
+  const hasFinished = idsArray.some((id) => {
+    const record = dataList.value.find((item) => item.id === id);
     return record && record.status === 1;
   });
 
-  if (hasFinished) {
-    ElMessage.warning('涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�');
+  if (hasFinished && !isAdmin.value) {
+    ElMessage.warning("涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�");
     return;
   }
 
@@ -353,7 +358,7 @@
     cancelButtonText: "鍙栨秷",
     type: "warning",
   }).then(async () => {
-    const {code} = await delRepair(ids);
+    const { code } = await delRepair(ids);
     if (code === 200) {
       ElMessage.success("鍒犻櫎鎴愬姛");
       getTableData();
@@ -368,12 +373,12 @@
     cancelButtonText: "鍙栨秷",
     type: "warning",
   })
-      .then(() => {
-        proxy.download("/device/repair/export", {}, "璁惧鎶ヤ慨.xlsx");
-      })
-      .catch(() => {
-        ElMessage.info("宸插彇娑�");
-      });
+    .then(() => {
+      proxy.download("/device/repair/export", {}, "璁惧鎶ヤ慨.xlsx");
+    })
+    .catch(() => {
+      ElMessage.info("宸插彇娑�");
+    });
 };
 
 onMounted(() => {
diff --git a/src/views/equipmentManagement/upkeep/Form/formDia.vue b/src/views/equipmentManagement/upkeep/Form/formDia.vue
index 8b30fb7..205b0f0 100644
--- a/src/views/equipmentManagement/upkeep/Form/formDia.vue
+++ b/src/views/equipmentManagement/upkeep/Form/formDia.vue
@@ -1,331 +1,382 @@
 <template>
-	<FormDialog
-		v-model="dialogVisitable"
-		:title="operationType === 'add' ? '鏂板淇濆吇浠诲姟' : '缂栬緫淇濆吇浠诲姟'"
-		width="800px"
-		:operation-type="operationType"
-		@confirm="submitForm"
-		@cancel="cancel"
-		@close="cancel"
-	>
-		<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
-			<el-row>
-				<el-col :span="12">
-					<el-form-item label="浠诲姟鍚嶇О" prop="taskName">
-						<el-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�" clearable />
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="璁惧鍚嶇О" prop="deviceIds">
-						<el-select
-							v-model="form.deviceIds"
-							multiple
-							filterable
-							placeholder="璇烽�夋嫨璁惧"
-							@change="handleDeviceChange"
-						>
-							<el-option
-								v-for="(item, index) in deviceOptions"
-								:key="index"
-								:label="item.deviceName"
-								:value="item.id"
-							></el-option>
-						</el-select>
-					</el-form-item>
-				</el-col>
-				
-				<el-col :span="12">
-					<el-form-item label="褰曞叆浜�" prop="inspector">
-						<el-select
-							v-model="form.inspector"
-							filterable
-							default-first-option
-							:reserve-keyword="false"
-							placeholder="璇烽�夋嫨"
-							clearable
-						>
-							<el-option
-								v-for="item in userList"
-								:label="item.nickName"
-								:value="item.userId"
-								:key="item.userId"
-							/>
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12">
-					<el-form-item label="鐧昏鏃堕棿" prop="registrationDate">
-						<el-date-picker
-							v-model="form.registrationDate"
-							type="date"
-							placeholder="閫夋嫨鐧昏鏃ユ湡"
-							format="YYYY-MM-DD"
-							value-format="YYYY-MM-DD"
-							style="width: 100%"
-						/>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			<el-row>
-				<el-col :span="12">
-					<el-form-item label="浠诲姟棰戠巼" prop="frequencyType">
-						<el-select v-model="form.frequencyType" placeholder="璇烽�夋嫨" clearable>
-							<el-option label="姣忔棩" value="DAILY"/>
-							<el-option label="姣忓懆" value="WEEKLY"/>
-							<el-option label="姣忔湀" value="MONTHLY"/>
-							<el-option label="瀛e害" value="QUARTERLY"/>
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" v-if="form.frequencyType === 'DAILY' && form.frequencyType">
-					<el-form-item label="鏃ユ湡" prop="frequencyDetail">
-						<el-time-picker v-model="form.frequencyDetail" placeholder="閫夋嫨鏃堕棿" format="HH:mm"
-														value-format="HH:mm" />
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" v-if="form.frequencyType === 'WEEKLY' && form.frequencyType">
-					<el-form-item label="鏃ユ湡" prop="frequencyDetail">
-						<el-select v-model="form.week" placeholder="璇烽�夋嫨" clearable style="width: 50%">
-							<el-option label="鍛ㄤ竴" value="MON"/>
-							<el-option label="鍛ㄤ簩" value="TUE"/>
-							<el-option label="鍛ㄤ笁" value="WED"/>
-							<el-option label="鍛ㄥ洓" value="THU"/>
-							<el-option label="鍛ㄤ簲" value="FRI"/>
-							<el-option label="鍛ㄥ叚" value="SAT"/>
-							<el-option label="鍛ㄦ棩" value="SUN"/>
-						</el-select>
-						<el-time-picker v-model="form.time" placeholder="閫夋嫨鏃堕棿" format="HH:mm"
-														value-format="HH:mm"  style="width: 50%"/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" v-if="form.frequencyType === 'MONTHLY' && form.frequencyType">
-					<el-form-item label="鏃ユ湡" prop="frequencyDetail">
-						<el-date-picker
-							v-model="form.frequencyDetail"
-							type="datetime"
-							clearable
-							placeholder="閫夋嫨寮�濮嬫棩鏈�"
-							format="DD,HH:mm"
-							value-format="DD,HH:mm"
-						/>
-					</el-form-item>
-				</el-col>
-				<el-col :span="12" v-if="form.frequencyType === 'QUARTERLY' && form.frequencyType">
-					<el-form-item label="鏃ユ湡" prop="frequencyDetail">
-						<el-date-picker
-							v-model="form.frequencyDetail"
-							type="datetime"
-							clearable
-							placeholder="閫夋嫨寮�濮嬫棩鏈�"
-							format="MM,DD,HH:mm"
-							value-format="MM,DD,HH:mm"
-						/>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			<el-row>
-				<el-col :span="12">
-					<el-form-item label="澶囨敞" prop="remarks">
-						<el-input v-model="form.remarks" placeholder="璇疯緭鍏ュ娉�" type="textarea" />
-					</el-form-item>
-				</el-col>
-			</el-row>
-		</el-form>
-	</FormDialog>
+  <FormDialog
+    v-model="dialogVisitable"
+    :title="operationType === 'add' ? '鏂板淇濆吇浠诲姟' : '缂栬緫淇濆吇浠诲姟'"
+    width="800px"
+    :operation-type="operationType"
+    @confirm="submitForm"
+    @cancel="cancel"
+    @close="cancel"
+  >
+    <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="浠诲姟鍚嶇О" prop="taskName">
+            <el-input
+              v-model="form.taskName"
+              placeholder="璇疯緭鍏ヤ换鍔″悕绉�"
+              clearable
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="璁惧鍚嶇О" prop="deviceIds">
+            <el-select
+              v-model="form.deviceIds"
+              multiple
+              filterable
+              placeholder="璇烽�夋嫨璁惧"
+              @change="handleDeviceChange"
+            >
+              <el-option
+                v-for="(item, index) in deviceOptions"
+                :key="index"
+                :label="item.deviceName"
+                :value="item.id"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="褰曞叆浜�" prop="inspector">
+            <el-select
+              v-model="form.inspector"
+              filterable
+              default-first-option
+              :reserve-keyword="false"
+              placeholder="璇烽�夋嫨"
+              clearable
+            >
+              <el-option
+                v-for="item in userList"
+                :label="item.nickName"
+                :value="item.userId"
+                :key="item.userId"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="鐧昏鏃堕棿" prop="registrationDate">
+            <el-date-picker
+              v-model="form.registrationDate"
+              type="date"
+              placeholder="閫夋嫨鐧昏鏃ユ湡"
+              format="YYYY-MM-DD"
+              value-format="YYYY-MM-DD"
+              style="width: 100%"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="浠诲姟棰戠巼" prop="frequencyType">
+            <el-select
+              v-model="form.frequencyType"
+              placeholder="璇烽�夋嫨"
+              clearable
+            >
+              <el-option label="姣忔棩" value="DAILY" />
+              <el-option label="姣忓懆" value="WEEKLY" />
+              <el-option label="姣忔湀" value="MONTHLY" />
+              <el-option label="瀛e害" value="QUARTERLY" />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col
+          :span="12"
+          v-if="form.frequencyType === 'DAILY' && form.frequencyType"
+        >
+          <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+            <el-time-picker
+              v-model="form.frequencyDetail"
+              placeholder="閫夋嫨鏃堕棿"
+              format="HH:mm"
+              value-format="HH:mm"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col
+          :span="12"
+          v-if="form.frequencyType === 'WEEKLY' && form.frequencyType"
+        >
+          <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+            <el-select
+              v-model="form.week"
+              placeholder="璇烽�夋嫨"
+              clearable
+              style="width: 50%"
+            >
+              <el-option label="鍛ㄤ竴" value="MON" />
+              <el-option label="鍛ㄤ簩" value="TUE" />
+              <el-option label="鍛ㄤ笁" value="WED" />
+              <el-option label="鍛ㄥ洓" value="THU" />
+              <el-option label="鍛ㄤ簲" value="FRI" />
+              <el-option label="鍛ㄥ叚" value="SAT" />
+              <el-option label="鍛ㄦ棩" value="SUN" />
+            </el-select>
+            <el-time-picker
+              v-model="form.time"
+              placeholder="閫夋嫨鏃堕棿"
+              format="HH:mm"
+              value-format="HH:mm"
+              style="width: 50%"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col
+          :span="12"
+          v-if="form.frequencyType === 'MONTHLY' && form.frequencyType"
+        >
+          <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+            <el-date-picker
+              v-model="form.frequencyDetail"
+              type="datetime"
+              clearable
+              placeholder="閫夋嫨寮�濮嬫棩鏈�"
+              format="DD,HH:mm"
+              value-format="DD,HH:mm"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col
+          :span="12"
+          v-if="form.frequencyType === 'QUARTERLY' && form.frequencyType"
+        >
+          <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+            <el-date-picker
+              v-model="form.frequencyDetail"
+              type="datetime"
+              clearable
+              placeholder="閫夋嫨寮�濮嬫棩鏈�"
+              format="MM,DD,HH:mm"
+              value-format="MM,DD,HH:mm"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="澶囨敞" prop="remarks">
+            <el-input
+              v-model="form.remarks"
+              placeholder="璇疯緭鍏ュ娉�"
+              type="textarea"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+  </FormDialog>
 </template>
 
 <script setup>
 import FormDialog from "@/components/Dialog/FormDialog.vue";
 import { reactive, ref, getCurrentInstance, toRefs } from "vue";
-import {userListNoPageByTenantId} from "@/api/system/user.js";
+import { userListNoPageByTenantId } from "@/api/system/user.js";
 import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
-import { deviceMaintenanceTaskAdd, deviceMaintenanceTaskEdit } from "@/api/equipmentManagement/upkeep";
+import {
+  deviceMaintenanceTaskAdd,
+  deviceMaintenanceTaskEdit,
+} from "@/api/equipmentManagement/upkeep";
 import { getCurrentDate } from "@/utils/index.js";
 import useUserStore from "@/store/modules/user.js";
 
-const { proxy } = getCurrentInstance()
-const emit = defineEmits()
+const { proxy } = getCurrentInstance();
+const emit = defineEmits();
 const dialogVisitable = ref(false);
-const operationType = ref('add');
+const operationType = ref("add");
 const deviceOptions = ref([]);
 const userStore = useUserStore();
 const data = reactive({
-	form: {
-		taskId: undefined,
-		deviceIds: [],
-		taskName: "",
-		// 褰曞叆浜猴細鍗曢�変竴涓敤鎴� id
-		inspector: undefined,
-		remarks: '',
-		frequencyType: '',
-		frequencyDetail: '',
-		week: '',
-		time: '',
-		deviceModel: undefined, // 瑙勬牸鍨嬪彿
-		registrationDate: ''
-	},
-	rules: {
-		deviceIds: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" }],
-		taskName: [{ required: true, message: "璇疯緭鍏ヤ换鍔″悕绉�", trigger: "blur" }],
-		inspector: [{ required: true, message: "璇烽�夋嫨褰曞叆浜�", trigger: "blur" },],
-		registrationDate: [{ required: true, message: "璇烽�夋嫨鐧昏鏃堕棿", trigger: "change" }]
-	}
-})
-const { form, rules } = toRefs(data)
-const userList = ref([])
+  form: {
+    taskId: undefined,
+    deviceIds: [],
+    taskName: "",
+    // 褰曞叆浜猴細鍗曢�変竴涓敤鎴� id
+    inspector: undefined,
+    remarks: "",
+    frequencyType: "",
+    frequencyDetail: "",
+    week: "",
+    time: "",
+    deviceModel: undefined, // 瑙勬牸鍨嬪彿
+    registrationDate: "",
+  },
+  rules: {
+    deviceIds: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" }],
+    taskName: [{ required: true, message: "璇疯緭鍏ヤ换鍔″悕绉�", trigger: "blur" }],
+    inspector: [{ required: true, message: "璇烽�夋嫨褰曞叆浜�", trigger: "blur" }],
+    registrationDate: [
+      { required: true, message: "璇烽�夋嫨鐧昏鏃堕棿", trigger: "change" },
+    ],
+  },
+});
+const { form, rules } = toRefs(data);
+const userList = ref([]);
 
 const loadDeviceName = async () => {
-	const { data } = await getDeviceLedger();
-	deviceOptions.value = data;
+  const { data } = await getDeviceLedger();
+  deviceOptions.value = data;
 };
 
 const normalizeIdList = (val) => {
-	if (!val) return []
-	if (Array.isArray(val)) return val
-	if (typeof val === 'string') {
-		const s = val.trim()
-		// JSON 瀛楃涓诧細"[1,2,3]"
-		if (s.startsWith('[') && s.endsWith(']')) {
-			try {
-				const arr = JSON.parse(s)
-				return Array.isArray(arr) ? arr : []
-			} catch {
-				return []
-			}
-		}
-		// 閫楀彿鍒嗛殧锛�"1,2,3"
-		return s.split(',').map(v => v.trim()).filter(Boolean)
-	}
-	return []
-}
+  if (!val) return [];
+  if (Array.isArray(val)) return val;
+  if (typeof val === "string") {
+    const s = val.trim();
+    // JSON 瀛楃涓诧細"[1,2,3]"
+    if (s.startsWith("[") && s.endsWith("]")) {
+      try {
+        const arr = JSON.parse(s);
+        return Array.isArray(arr) ? arr : [];
+      } catch {
+        return [];
+      }
+    }
+    // 閫楀彿鍒嗛殧锛�"1,2,3"
+    return s
+      .split(",")
+      .map((v) => v.trim())
+      .filter(Boolean);
+  }
+  return [];
+};
 
 // 閫夋嫨璁惧鏃讹紝椤哄甫鍥炲~瑙勬牸鍨嬪彿锛堝閫夋椂鍙栫涓�涓澶囩殑瑙勬牸鍨嬪彿锛�
 const handleDeviceChange = () => {
-	const selectedIds = form.value.deviceIds || []
-	const firstId = Array.isArray(selectedIds) ? selectedIds[0] : undefined
-	const firstDevice = deviceOptions.value.find(d => String(d.id) === String(firstId))
-	form.value.deviceModel = firstDevice?.deviceModel || firstDevice?.model || form.value.deviceModel
-}
+  const selectedIds = form.value.deviceIds || [];
+  const firstId = Array.isArray(selectedIds) ? selectedIds[0] : undefined;
+  const firstDevice = deviceOptions.value.find(
+    (d) => String(d.id) === String(firstId)
+  );
+  form.value.deviceModel =
+    firstDevice?.deviceModel || firstDevice?.model || form.value.deviceModel;
+};
 
 // 鎵撳紑寮规
 const openDialog = async (type, row) => {
-	dialogVisitable.value = true
-	operationType.value = type
-	
-	// 閲嶇疆琛ㄥ崟
-	resetForm();
-	
-	// 鍔犺浇鐢ㄦ埛鍒楄〃
-	userListNoPageByTenantId().then((res) => {
-		userList.value = res.data;
-	});
-	
-	// 鍔犺浇璁惧鍒楄〃
-	await loadDeviceName();
-	
-	if (type === 'edit' && row) {
-		form.value = { ...form.value, ...row }
-		// 缂栬緫鏃剁敤鎺ュ彛杩斿洖鐨� registrantId 鍥炴樉褰曞叆浜�
-		if (row.registrantId) {
-			form.value.inspector = row.registrantId
-		}
+  dialogVisitable.value = true;
+  operationType.value = type;
 
-		// 缂栬緫鍥炴樉锛歞eviceIds 鍙兘鏄� JSON 瀛楃涓� / 閫楀彿鍒嗛殧 / 鏁扮粍
-		const ids = normalizeIdList(row.deviceIds ?? row.taskIds)
-		form.value.deviceIds = ids.map(v => {
-			const n = Number(v)
-			return Number.isNaN(n) ? v : n
-		})
-		handleDeviceChange()
-	} else if (type === 'add') {
-		// 鏂板鏃惰缃櫥璁版棩鏈熶负褰撳ぉ
-		form.value.registrationDate = getCurrentDate();
-		// 鏂板鏃惰缃綍鍏ヤ汉涓哄綋鍓嶇櫥褰曡处鎴�
-		form.value.inspector = userStore.id;
-	}
-}
+  // 閲嶇疆琛ㄥ崟
+  resetForm();
+
+  // 鍔犺浇鐢ㄦ埛鍒楄〃
+  userListNoPageByTenantId().then((res) => {
+    userList.value = res.data;
+  });
+
+  // 鍔犺浇璁惧鍒楄〃
+  await loadDeviceName();
+
+  if (type === "edit" && row) {
+    form.value = { ...form.value, ...row };
+    // 缂栬緫鏃剁敤鎺ュ彛杩斿洖鐨� registrantId 鍥炴樉褰曞叆浜�
+    if (row.registrantId) {
+      form.value.inspector = row.registrantId;
+    }
+
+    // 缂栬緫鍥炴樉锛歞eviceIds 鍙兘鏄� JSON 瀛楃涓� / 閫楀彿鍒嗛殧 / 鏁扮粍
+    const ids = normalizeIdList(row.deviceIds ?? row.taskIds);
+    form.value.deviceIds = ids.map((v) => {
+      const n = Number(v);
+      return Number.isNaN(n) ? v : n;
+    });
+    handleDeviceChange();
+  } else if (type === "add") {
+    // 鏂板鏃惰缃櫥璁版棩鏈熶负褰撳ぉ
+    form.value.registrationDate = getCurrentDate();
+    // 鏂板鏃惰缃綍鍏ヤ汉涓哄綋鍓嶇櫥褰曡处鎴�
+    form.value.inspector = userStore.id;
+  }
+};
 
 // 鍏抽棴瀵硅瘽妗�
 const cancel = () => {
-	resetForm()
-	dialogVisitable.value = false
-	emit('closeDia')
-}
+  resetForm();
+  dialogVisitable.value = false;
+  emit("closeDia");
+};
 
 // 閲嶇疆琛ㄥ崟鍑芥暟
 const resetForm = () => {
-	if (proxy.$refs.formRef) {
-		proxy.$refs.formRef.resetFields()
-	}
-	// 閲嶇疆琛ㄥ崟鏁版嵁纭繚璁惧淇℃伅姝g‘閲嶇疆
-	form.value = {
-		taskId: undefined,
-		deviceIds: [],
-		taskName: "",
-		inspector: undefined,
-		remarks: '',
-		frequencyType: '',
-		frequencyDetail: '',
-		week: '',
-		time: '',
-		deviceModel: undefined,
-		registrationDate: ''
-	}
-}
+  if (proxy.$refs.formRef) {
+    proxy.$refs.formRef.resetFields();
+  }
+  // 閲嶇疆琛ㄥ崟鏁版嵁纭繚璁惧淇℃伅姝g‘閲嶇疆
+  form.value = {
+    taskId: undefined,
+    deviceIds: [],
+    taskName: "",
+    inspector: undefined,
+    remarks: "",
+    frequencyType: "",
+    frequencyDetail: "",
+    week: "",
+    time: "",
+    deviceModel: undefined,
+    registrationDate: "",
+  };
+};
 
 // 鎻愪氦琛ㄥ崟
 const submitForm = () => {
-	proxy.$refs["formRef"].validate(async valid => {
-		if (valid) {
-			try {
-				const payload = { ...form.value }
-				// 鍚庣瑕佹眰锛歞eviceIds 浠� JSON.stringify([1,2,3]) 褰㈠紡浼犲弬
-				payload.deviceIds = JSON.stringify(form.value.deviceIds || [])
-				// 涓嶅啀鍚戝悗绔紶淇濆吇浜哄瓧娈碉紝浠呬娇鐢ㄦ帴鍙h姹傜殑 registrant / registrantId
-				// 鏍规嵁閫夋嫨鐨�"褰曞叆浜�"璁剧疆 registrant / registrantId
-				if (payload.inspector) {
-					const selectedUser = userList.value.find(
-						(u) => String(u.userId) === String(payload.inspector)
-					)
-					if (selectedUser) {
-						payload.registrantId = selectedUser.userId
-						payload.registrant = selectedUser.nickName
-					}
-				}
-				delete payload.inspector
-				delete payload.inspectorIds
-				delete payload.taskIds
-				
-				if (payload.frequencyType === 'WEEKLY') {
-					let frequencyDetail = ''
-					frequencyDetail = payload.week + ',' + payload.time
-					payload.frequencyDetail = frequencyDetail
-				}
-				
-				// 褰曞叆鏃ユ湡锛氱洿鎺ヤ娇鐢ㄨ〃鍗曢噷鐨� registrationDate 瀛楁
-				// 涓�浜涢粯璁ょ姸鎬佸瓧娈�
-				if (payload.status === undefined || payload.status === null || payload.status === '') {
-					payload.status = '0' // 榛樿鐘舵�侊紝鍙寜瀹為檯鏋氫妇璋冩暣
-				}
-				payload.active = true
-				payload.deleted = 0
-				
-				if (operationType.value === 'edit') {
-					await deviceMaintenanceTaskEdit(payload)
-				} else {
-					await deviceMaintenanceTaskAdd(payload)
-				}
-				cancel()
-				proxy.$modal.msgSuccess('鎻愪氦鎴愬姛')
-			} catch (error) {
-				proxy.$modal.msgError('鎻愪氦澶辫触锛岃閲嶈瘯')
-			}
-		}
-	})
-}
-defineExpose({ openDialog })
+  proxy.$refs["formRef"].validate(async (valid) => {
+    if (valid) {
+      try {
+        const payload = { ...form.value };
+        // 鍚庣瑕佹眰锛歞eviceIds 浠� JSON.stringify([1,2,3]) 褰㈠紡浼犲弬
+        payload.deviceIds = JSON.stringify(form.value.deviceIds || []);
+        // 涓嶅啀鍚戝悗绔紶淇濆吇浜哄瓧娈碉紝浠呬娇鐢ㄦ帴鍙h姹傜殑 registrant / registrantId
+        // 鏍规嵁閫夋嫨鐨�"褰曞叆浜�"璁剧疆 registrant / registrantId
+        if (payload.inspector) {
+          const selectedUser = userList.value.find(
+            (u) => String(u.userId) === String(payload.inspector)
+          );
+          if (selectedUser) {
+            payload.registrantId = selectedUser.userId;
+            payload.registrant = selectedUser.nickName;
+          }
+        }
+        delete payload.inspector;
+        delete payload.inspectorIds;
+        delete payload.taskIds;
+
+        if (payload.frequencyType === "WEEKLY") {
+          let frequencyDetail = "";
+          frequencyDetail = payload.week + "," + payload.time;
+          payload.frequencyDetail = frequencyDetail;
+        }
+
+        // 褰曞叆鏃ユ湡锛氱洿鎺ヤ娇鐢ㄨ〃鍗曢噷鐨� registrationDate 瀛楁
+        // 涓�浜涢粯璁ょ姸鎬佸瓧娈�
+        if (
+          payload.status === undefined ||
+          payload.status === null ||
+          payload.status === ""
+        ) {
+          payload.status = "0"; // 榛樿鐘舵�侊紝鍙寜瀹為檯鏋氫妇璋冩暣
+        }
+        payload.active = true;
+        payload.deleted = 0;
+
+        if (operationType.value === "edit") {
+          await deviceMaintenanceTaskEdit(payload);
+        } else {
+          await deviceMaintenanceTaskAdd(payload);
+        }
+        cancel();
+        proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+      } catch (error) {
+        proxy.$modal.msgError("鎻愪氦澶辫触锛岃閲嶈瘯");
+      }
+    }
+  });
+};
+defineExpose({ openDialog });
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>
diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue
index 9b2a7f4..c5ce2fc 100644
--- a/src/views/qualityManagement/processInspection/components/formDia.vue
+++ b/src/views/qualityManagement/processInspection/components/formDia.vue
@@ -81,8 +81,8 @@
           <el-col :span="12">
             <el-form-item label="妫�娴嬬粨鏋滐細" prop="checkResult">
               <el-select v-model="form.checkResult">
-                <el-option label="鍚堟牸" value="鍚堟牸" />
-                <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�" />
+                <el-option label="宸叉" value="宸叉" />
+                <el-option label="鏈" value="鏈" />
               </el-select>
             </el-form-item>
           </el-col>
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index cbeab71..bcdaea7 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -136,12 +136,12 @@
     prop: "checkResult",
     dataType: "tag",
     formatType: (params) => {
-      if (params == '涓嶅悎鏍�') {
+      if (params == '鏈') {
         return "danger";
-      } else if (params == '鍚堟牸') {
+      } else if (params == '宸叉') {
         return "success";
       } else {
-        return null;
+        return "danger";
       }
     },
   },
@@ -393,4 +393,4 @@
 });
 </script>
 
-<style scoped></style>
+<style scoped></style>
\ No newline at end of file
diff --git a/src/views/qualityManagement/rawMaterial/components/formDia.vue b/src/views/qualityManagement/rawMaterial/components/formDia.vue
index fdbc95c..076e918 100644
--- a/src/views/qualityManagement/rawMaterial/components/formDia.vue
+++ b/src/views/qualityManagement/rawMaterial/components/formDia.vue
@@ -1,41 +1,58 @@
 <template>
   <div>
     <el-dialog
-        v-model="dialogFormVisible"
-        :title="operationType === 'add' ? '鏂板鍘熸枡' : operationType === 'view' ? '鍘熸枡璇︽儏' : '缂栬緫鍘熸枡'"
-        width="70%"
-        @close="closeDia"
+      v-model="dialogFormVisible"
+      :title="
+        operationType === 'add'
+          ? '鏂板鍘熸枡'
+          : operationType === 'view'
+          ? '鍘熸枡璇︽儏'
+          : '缂栬緫鍘熸枡'
+      "
+      width="70%"
+      @close="closeDia"
     >
       <el-form
-          v-if="operationType !== 'view'"
-          :model="form"
-          label-width="140px"
-          label-position="top"
-          :rules="rules"
-          ref="formRef"
+        v-if="operationType !== 'view'"
+        :model="form"
+        label-width="140px"
+        label-position="top"
+        :rules="rules"
+        ref="formRef"
       >
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="浜у搧鍚嶇О锛�" prop="productId">
               <el-tree-select
-                  v-model="form.productId"
-                  placeholder="璇烽�夋嫨"
-                  clearable
-                  check-strictly
-                  @change="getModels"
-                  :data="productOptions"
-                  :render-after-expand="false"
-                  :disabled="operationType === 'edit' || operationType === 'view'"
-                  style="width: 100%"
+                v-model="form.productId"
+                placeholder="璇烽�夋嫨"
+                clearable
+                check-strictly
+                @change="getModels"
+                :data="productOptions"
+                :render-after-expand="false"
+                :disabled="operationType === 'edit' || operationType === 'view'"
+                style="width: 100%"
               />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
-              <el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable
-                         :disabled="operationType === 'edit' || operationType === 'view'"
-                         filterable readonly @change="handleChangeModel">
-                <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id"/>
+              <el-select
+                v-model="form.productModelId"
+                placeholder="璇烽�夋嫨"
+                clearable
+                :disabled="operationType === 'edit' || operationType === 'view'"
+                filterable
+                readonly
+                @change="handleChangeModel"
+              >
+                <el-option
+                  v-for="item in modelOptions"
+                  :key="item.id"
+                  :label="item.model"
+                  :value="item.id"
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -43,17 +60,17 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="鍗曚綅锛�" prop="unit">
-              <el-input v-model="form.unit" disabled/>
+              <el-input v-model="form.unit" disabled />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鎵瑰彿锛�" prop="batchNo">
               <el-input
-                  style="width: 100%"
-                  v-model="form.batchNo"
-                  placeholder="璇疯緭鍏�"
-                  clearable
-                  :disabled="operationType === 'view'"
+                style="width: 100%"
+                v-model="form.batchNo"
+                placeholder="璇疯緭鍏�"
+                clearable
+                :disabled="operationType === 'view'"
               />
             </el-form-item>
           </el-col>
@@ -61,18 +78,24 @@
         <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="妫�楠岀被鍨嬶細" prop="checkType">
-              <el-select v-model="form.checkType" :disabled="operationType === 'view'">
-                <el-option label="鍏ュ巶妫�" :value="0"/>
-                <el-option label="杞﹂棿妫�" :value="1"/>
-                <el-option label="鍑哄巶妫�" :value="2"/>
+              <el-select
+                v-model="form.checkType"
+                :disabled="operationType === 'view'"
+              >
+                <el-option label="鍏ュ巶妫�" :value="0" />
+                <el-option label="杞﹂棿妫�" :value="1" />
+                <el-option label="鍑哄巶妫�" :value="2" />
               </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="妫�娴嬬粨鏋滐細" prop="checkResult">
-              <el-select v-model="form.checkResult" :disabled="operationType === 'view'">
-                <el-option label="鍚堟牸" :value="1"/>
-                <el-option label="涓嶅悎鏍�" :value="0"/>
+              <el-select
+                v-model="form.checkResult"
+                :disabled="operationType === 'view'"
+              >
+                <el-option label="宸叉" :value="1" />
+                <el-option label="鏈" :value="0" />
               </el-select>
             </el-form-item>
           </el-col>
@@ -81,103 +104,139 @@
           <el-col :span="12">
             <el-form-item label="妫�楠屽憳锛�" prop="checkUserName">
               <el-select
-                  v-model="form.checkUserName"
-                  placeholder="璇烽�夋嫨"
-                  clearable
-                  filterable
-                  style="width: 100%"
-                  :disabled="operationType === 'view'"
+                v-model="form.checkUserName"
+                placeholder="璇烽�夋嫨"
+                clearable
+                filterable
+                style="width: 100%"
+                :disabled="operationType === 'view'"
               >
-                <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
-                           :value="item.nickName"/>
+                <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="checkTime">
               <el-date-picker
-                  v-model="form.checkTime"
-                  type="date"
-                  placeholder="璇烽�夋嫨鏃ユ湡"
-                  value-format="YYYY-MM-DD"
-                  format="YYYY-MM-DD"
-                  clearable
-                  style="width: 100%"
-                  :disabled="operationType === 'view'"
+                v-model="form.checkTime"
+                type="date"
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                value-format="YYYY-MM-DD"
+                format="YYYY-MM-DD"
+                clearable
+                style="width: 100%"
+                :disabled="operationType === 'view'"
               />
             </el-form-item>
           </el-col>
         </el-row>
       </el-form>
       <el-descriptions
-          v-else
-          :column="2"
-          border
-          size="small"
-          style="margin-bottom: 12px;"
+        v-else
+        :column="2"
+        border
+        size="small"
+        style="margin-bottom: 12px"
       >
-        <el-descriptions-item label="浜у搧鍚嶇О">{{ viewProductName }}</el-descriptions-item>
-        <el-descriptions-item label="瑙勬牸鍨嬪彿">{{ viewProductModel }}</el-descriptions-item>
-        <el-descriptions-item label="鍗曚綅">{{ form.unit || '-' }}</el-descriptions-item>
-        <el-descriptions-item label="鎵瑰彿">{{ form.batchNo || '-' }}</el-descriptions-item>
-        <el-descriptions-item label="妫�楠岀被鍨�">{{ viewCheckType }}</el-descriptions-item>
-        <el-descriptions-item label="妫�娴嬬粨鏋�">{{ viewCheckResult }}</el-descriptions-item>
-        <el-descriptions-item label="妫�楠屽憳">{{ form.checkUserName || '-' }}</el-descriptions-item>
-        <el-descriptions-item label="妫�娴嬫棩鏈�">{{ form.checkTime || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="浜у搧鍚嶇О">{{
+          viewProductName
+        }}</el-descriptions-item>
+        <el-descriptions-item label="瑙勬牸鍨嬪彿">{{
+          viewProductModel
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鍗曚綅">{{
+          form.unit || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="鎵瑰彿">{{
+          form.batchNo || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="妫�楠岀被鍨�">{{
+          viewCheckType
+        }}</el-descriptions-item>
+        <el-descriptions-item label="妫�娴嬬粨鏋�">{{
+          viewCheckResult
+        }}</el-descriptions-item>
+        <el-descriptions-item label="妫�楠屽憳">{{
+          form.checkUserName || "-"
+        }}</el-descriptions-item>
+        <el-descriptions-item label="妫�娴嬫棩鏈�">{{
+          form.checkTime || "-"
+        }}</el-descriptions-item>
       </el-descriptions>
       <div style="margin-bottom: 10px">
         <el-button
-            v-if="operationType !== 'view'"
-            type="primary"
-            @click="isShowItems = true"
-        >娣诲姞妫�娴嬮」鐩�</el-button>
+          v-if="operationType !== 'view'"
+          type="primary"
+          @click="isShowItems = true"
+          >娣诲姞妫�娴嬮」鐩�</el-button
+        >
       </div>
       <PIMTable
-          rowKey="id"
-          :column="tableColumn"
-          :tableData="tableData"
-          :tableLoading="tableLoading"
-          :is-show-pagination="false"
-          height="400"
+        rowKey="id"
+        :column="tableColumn"
+        :tableData="tableData"
+        :tableLoading="tableLoading"
+        :is-show-pagination="false"
+        height="400"
       >
         <template #slot="{ row }">
           <span v-if="operationType === 'view'">{{ row.testValue }}</span>
-          <el-input
-              v-else
-              v-model="row.testValue"
-              clearable
-          />
+          <el-input v-else v-model="row.testValue" clearable />
         </template>
       </PIMTable>
       <template #footer>
         <div class="dialog-footer">
-          <el-button v-if="operationType !== 'view'" type="primary" @click="submitForm">纭</el-button>
-          <el-button @click="closeDia">{{ operationType === 'view' ? '鍏抽棴' : '鍙栨秷' }}</el-button>
+          <el-button
+            v-if="operationType !== 'view'"
+            type="primary"
+            @click="submitForm"
+            >纭</el-button
+          >
+          <el-button @click="closeDia">{{
+            operationType === "view" ? "鍏抽棴" : "鍙栨秷"
+          }}</el-button>
         </div>
       </template>
     </el-dialog>
 
-    <item-select v-model="isShowItems" @confirm="handleItemSelect"/>
+    <item-select v-model="isShowItems" @confirm="handleItemSelect" />
   </div>
 </template>
 
 <script setup>
-import {ref, reactive, toRefs, getCurrentInstance, nextTick, computed} from "vue";
-import {modelList, productTreeList} from "@/api/basicData/product.js";
-import {qualityInspectParamInfo} from "@/api/qualityManagement/qualityInspectParam.js";
-import {qualityInspectDetailByProductId} from "@/api/qualityManagement/metricMaintenance.js";
-import {userListNoPage} from "@/api/system/user.js";
-import {createRawMaterial, findRawMaterialDetail, updateRawMaterial} from "@/api/qualityManagement/rawMaterial.js";
+import {
+  ref,
+  reactive,
+  toRefs,
+  getCurrentInstance,
+  nextTick,
+  computed,
+} from "vue";
+import { modelList, productTreeList } from "@/api/basicData/product.js";
+import { qualityInspectParamInfo } from "@/api/qualityManagement/qualityInspectParam.js";
+import { qualityInspectDetailByProductId } from "@/api/qualityManagement/metricMaintenance.js";
+import { userListNoPage } from "@/api/system/user.js";
+import {
+  createRawMaterial,
+  findRawMaterialDetail,
+  updateRawMaterial,
+} from "@/api/qualityManagement/rawMaterial.js";
 import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
 
-const {proxy} = getCurrentInstance()
-const emit = defineEmits(['close'])
-const ItemSelect = defineAsyncComponent(() => import("@/views/qualityManagement/rawMaterial/components/itemSelect.vue"));
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["close"]);
+const ItemSelect = defineAsyncComponent(() =>
+  import("@/views/qualityManagement/rawMaterial/components/itemSelect.vue")
+);
 
 const dialogFormVisible = ref(false);
-const operationType = ref('')
-const isShowItems = ref(false)
+const operationType = ref("");
+const isShowItems = ref(false);
 const data = reactive({
   form: {
     checkTime: "",
@@ -193,13 +252,21 @@
     checkUserName: "",
   },
   rules: {
-    checkTime: [{required: true, message: "璇疯緭鍏�", trigger: "blur"},],
-    checkUserName: [{required: false, message: "璇烽�夋嫨妫�楠屽憳", trigger: "blur"}],
-    productId: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
-    productModelId: [{required: true, message: "璇烽�夋嫨浜у搧鍨嬪彿", trigger: "change"}],
-    batchNo: [{required: true, message: "璇疯緭鍏ユ壒娆�", trigger: "blur"}],
-    checkType: [{required: true, message: "璇烽�夋嫨妫�楠岀被鍨�", trigger: "change"}],
-    checkResult: [{required: true, message: "璇烽�夋嫨妫�娴嬬粨鏋�", trigger: "change"}],
+    checkTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    checkUserName: [
+      { required: false, message: "璇烽�夋嫨妫�楠屽憳", trigger: "blur" },
+    ],
+    productId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    productModelId: [
+      { required: true, message: "璇烽�夋嫨浜у搧鍨嬪彿", trigger: "change" },
+    ],
+    batchNo: [{ required: true, message: "璇疯緭鍏ユ壒娆�", trigger: "blur" }],
+    checkType: [
+      { required: true, message: "璇烽�夋嫨妫�楠岀被鍨�", trigger: "change" },
+    ],
+    checkResult: [
+      { required: true, message: "璇烽�夋嫨妫�娴嬬粨鏋�", trigger: "change" },
+    ],
   },
 });
 const tableColumn = ref([
@@ -222,29 +289,29 @@
   {
     label: "鍖栭獙鍊�",
     prop: "testValue",
-    dataType: 'slot',
-    slot: 'slot',
+    dataType: "slot",
+    slot: "slot",
   },
   {
-    dataType: 'action',
-    label: '鎿嶄綔',
-    align: 'center',
-    fixed: 'right',
+    dataType: "action",
+    label: "鎿嶄綔",
+    align: "center",
+    fixed: "right",
     width: 140,
     operation: [
       {
-        name: '鍒犻櫎',
-        type: 'text',
+        name: "鍒犻櫎",
+        type: "text",
         clickFun: (row) => handleDelete(row.id),
-        disabled: () => operationType.value === 'view',
-      }
-    ]
-  }
+        disabled: () => operationType.value === "view",
+      },
+    ],
+  },
 ]);
 const tableData = ref([]);
 const tableLoading = ref(false);
 
-const {form, rules} = toRefs(data);
+const { form, rules } = toRefs(data);
 const userList = ref([]);
 const productOptions = ref([]);
 const currentProductId = ref(0);
@@ -261,9 +328,9 @@
 // 鎵撳紑寮规
 const openDialog = async (type, row) => {
   operationType.value = type;
-  userListNoPage().then(res => {
+  userListNoPage().then((res) => {
     userList.value = res.data || [];
-  })
+  });
   // 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡鈥滈棯涓�涓嬧�濓級
   form.value = {
     checkTime: getTodayStr(),
@@ -277,17 +344,17 @@
     checkResult: "",
     unit: "",
     checkUserName: "",
-  }
+  };
   tableData.value = [];
   // 鍏堢‘淇濅骇鍝佹爲宸插姞杞斤紝鍚﹀垯缂栬緫鏃朵骇鍝�/瑙勬牸鍨嬪彿鏃犳硶鍙嶆樉
   await getProductOptions();
-  if (operationType.value === 'edit') {
+  if (operationType.value === "edit") {
     await fetchData(row.id);
-    currentProductId.value = row.productId || 0
+    currentProductId.value = row.productId || 0;
     // 鍏抽敭锛氱紪杈戞椂鍔犺浇瑙勬牸鍨嬪彿涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
     if (currentProductId.value) {
       try {
-        const res = await modelList({id: currentProductId.value});
+        const res = await modelList({ id: currentProductId.value });
         modelOptions.value = res || [];
         // 鍚屾鍥炲~ model / unit锛堟湁浜涙帴鍙h繑鍥炵殑 row 閲屽彲鑳芥病甯﹀叏锛�
         if (form.value.productModelId) {
@@ -300,17 +367,16 @@
     }
     // 缂栬緫妯″紡涓嬶紝鍏堝姞杞芥寚鏍囬�夐」锛岀劧鍚庡姞杞藉弬鏁板垪琛�
     if (currentProductId.value) {
-
     } else {
       getQualityInspectParamList(row.id);
     }
   }
-  if (operationType.value === 'view') {
+  if (operationType.value === "view") {
     await fetchData(row.id);
-    currentProductId.value = row.productId || 0
+    currentProductId.value = row.productId || 0;
     if (currentProductId.value) {
       try {
-        const res = await modelList({id: currentProductId.value});
+        const res = await modelList({ id: currentProductId.value });
         modelOptions.value = res || [];
         if (form.value.productModelId) {
           handleChangeModel(form.value.productModelId);
@@ -331,7 +397,7 @@
   nextTick(() => {
     proxy.$refs?.formRef?.clearValidate?.();
   });
-}
+};
 const getProductOptions = () => {
   return productTreeList().then((res) => {
     productOptions.value = convertIdToValue(res);
@@ -342,11 +408,11 @@
   form.value.productModelId = undefined;
   form.value.unit = undefined;
   modelOptions.value = [];
-  currentProductId.value = value
+  currentProductId.value = value;
   form.value.productName = findNodeById(productOptions.value, value);
-  modelList({id: value}).then((res) => {
+  modelList({ id: value }).then((res) => {
     modelOptions.value = res;
-  })
+  });
   if (currentProductId.value) {
     getList();
   }
@@ -354,14 +420,19 @@
 
 const handleItemSelect = (value) => {
   // 杩囨护宸插瓨鍦ㄧ殑鎸囨爣
-  value = value.filter(item => !tableData.value.some(existingItem => existingItem.id === item.id));
-  tableData.value.push(...value)
-}
+  value = value.filter(
+    (item) =>
+      !tableData.value.some((existingItem) => existingItem.id === item.id)
+  );
+  tableData.value.push(...value);
+};
 
 const handleChangeModel = (value) => {
-  form.value.model = modelOptions.value.find(item => item.id == value)?.model || '';
-  form.value.unit = modelOptions.value.find(item => item.id == value)?.unit || '';
-}
+  form.value.model =
+    modelOptions.value.find((item) => item.id == value)?.model || "";
+  form.value.unit =
+    modelOptions.value.find((item) => item.id == value)?.unit || "";
+};
 
 const findNodeById = (nodes, productId) => {
   for (let i = 0; i < nodes.length; i++) {
@@ -380,35 +451,37 @@
 
 // 璇︽儏妯″紡灞曠ず瀛楁锛堜笉浣跨敤琛ㄥ崟鎺т欢锛�
 const viewProductName = computed(() => {
-  const id = form.value?.productId
-  const label = id ? findNodeById(productOptions.value || [], id) : null
-  return label || id || '-'
-})
+  const id = form.value?.productId;
+  const label = id ? findNodeById(productOptions.value || [], id) : null;
+  return label || id || "-";
+});
 
 const viewProductModel = computed(() => {
-  const modelId = form.value?.productModelId
-  const matched = (modelOptions.value || []).find((x) => String(x.id) === String(modelId))
-  return matched?.model || modelId || '-'
-})
+  const modelId = form.value?.productModelId;
+  const matched = (modelOptions.value || []).find(
+    (x) => String(x.id) === String(modelId)
+  );
+  return matched?.model || modelId || "-";
+});
 
 const viewCheckType = computed(() => {
-  const t = form.value?.checkType
-  if (t === 0 || t === '0') return '鍏ュ巶妫�'
-  if (t === 1 || t === '1') return '杞﹂棿妫�'
-  if (t === 2 || t === '2') return '鍑哄巶妫�'
-  return '-'
-})
+  const t = form.value?.checkType;
+  if (t === 0 || t === "0") return "鍏ュ巶妫�";
+  if (t === 1 || t === "1") return "杞﹂棿妫�";
+  if (t === 2 || t === "2") return "鍑哄巶妫�";
+  return "-";
+});
 
 const viewCheckResult = computed(() => {
-  const r = form.value?.checkResult
-  if (r === 1 || r === '1') return '鍚堟牸'
-  if (r === 0 || r === '0') return '涓嶅悎鏍�'
-  return '-'
-})
+  const r = form.value?.checkResult;
+  if (r === 1 || r === "1") return "鍚堟牸";
+  if (r === 0 || r === "0") return "涓嶅悎鏍�";
+  return "-";
+});
 
 function convertIdToValue(data) {
   return data.map((item) => {
-    const {id, children, ...rest} = item;
+    const { id, children, ...rest } = item;
     const newItem = {
       ...rest,
       value: id, // 灏� id 鏀逛负 value
@@ -423,24 +496,24 @@
 
 // 鎻愪氦浜у搧琛ㄥ崟
 const submitForm = () => {
-  if (operationType.value === 'view') return;
-  proxy.$refs.formRef.validate(valid => {
+  if (operationType.value === "view") return;
+  proxy.$refs.formRef.validate((valid) => {
     if (valid) {
-      const data = {...form.value, qualityInspectItem: tableData.value}
+      const data = { ...form.value, qualityInspectItem: tableData.value };
       if (operationType.value === "add") {
-        createRawMaterial(data).then(res => {
+        createRawMaterial(data).then((res) => {
           proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           closeDia();
-        })
+        });
       } else {
-        updateRawMaterial(data).then(res => {
+        updateRawMaterial(data).then((res) => {
           proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           closeDia();
-        })
+        });
       }
     }
-  })
-}
+  });
+};
 
 const getList = () => {
   if (!currentProductId.value) {
@@ -449,45 +522,45 @@
   }
   let params = {
     productId: currentProductId.value,
-  }
-  qualityInspectDetailByProductId(params).then(res => {
+  };
+  qualityInspectDetailByProductId(params).then((res) => {
     // 娓呯┖琛ㄦ牸鏁版嵁锛岀瓑寰呯敤鎴烽�夋嫨鎸囨爣
     tableData.value = [];
-  })
-}
+  });
+};
 
 const getQualityInspectParamList = (id) => {
-  qualityInspectParamInfo(id).then(res => {
+  qualityInspectParamInfo(id).then((res) => {
     tableData.value = res.data;
-  })
-}
+  });
+};
 // 鍏抽棴寮规
 const closeDia = () => {
   proxy.resetForm("formRef");
   tableData.value = [];
   dialogFormVisible.value = false;
-  emit('close')
+  emit("close");
 };
 
 const handleDelete = (id) => {
-  if (operationType.value === 'view') return;
-  tableData.value = tableData.value.filter(item => item.id !== id);
-}
+  if (operationType.value === "view") return;
+  tableData.value = tableData.value.filter((item) => item.id !== id);
+};
 
 const fetchData = (id) => {
   tableLoading.value = true;
-  findRawMaterialDetail(id).then(res => {
-    form.value = res.data;
-    tableData.value = res.data.qualityInspectItem;
-  }).finally(() => {
-    tableLoading.value = false;
-  })
-}
+  findRawMaterialDetail(id)
+    .then((res) => {
+      form.value = res.data;
+      tableData.value = res.data.qualityInspectItem;
+    })
+    .finally(() => {
+      tableLoading.value = false;
+    });
+};
 defineExpose({
   openDialog,
 });
 </script>
 
-<style scoped>
-
-</style>
+<style scoped></style>

--
Gitblit v1.9.3