From 1ef08126ca554a8cd4b9ba47d19dc3b790e2c018 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期二, 19 五月 2026 17:21:19 +0800
Subject: [PATCH] Merge branch 'dev-new_pro_OA' of http://114.132.189.42:9002/r/product-inventory-management into dev-new_pro_OA

---
 src/views/equipmentManagement/repair/index.vue |  109 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 89 insertions(+), 20 deletions(-)

diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index 2443123..2835356 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -75,10 +75,10 @@
             瀵煎嚭
           </el-button>
           <el-button
-              type="danger"
-              icon="Delete"
-              :disabled="multipleList.length <= 0"
-              @click="delRepairByIds(multipleList.map((item) => item.id))"
+            type="danger"
+            icon="Delete"
+            :disabled="multipleList.length <= 0 || hasFinishedStatus"
+            @click="delRepairByIds(multipleList.map((item) => item.id))"
           >
             鎵归噺鍒犻櫎
           </el-button>
@@ -100,48 +100,69 @@
         <template #statusRef="{ row }">
           <el-tag v-if="row.status === 2" type="danger">澶辫触</el-tag>
           <el-tag v-if="row.status === 1" type="success">瀹岀粨</el-tag>
+          <el-tag v-if="row.status === 3" type="info">寰呴獙鏀�</el-tag>
           <el-tag v-if="row.status === 0" type="warning">寰呯淮淇�</el-tag>
         </template>
         <template #operation="{ row }">
           <el-button
-              type="primary"
-              text
-              @click="addMaintain(row)"
-          >
-            鏂板缁翠慨
-          </el-button>
-          <el-button
-              type="primary"
-              text
-              icon="editPen"
-              @click="editRepair(row.id)"
+            type="primary"
+            link
+            :disabled="row.status === 1 || row.status === 3"
+            @click="editRepair(row.id)"
           >
             缂栬緫
           </el-button>
           <el-button
-              type="danger"
-              text
-              icon="delete"
-              @click="delRepairByIds(row.id)"
+            type="success"
+            link
+            :disabled="row.status !== 0"
+            @click="addMaintain(row)"
+          >
+            缁翠慨
+          </el-button>
+          <el-button
+            type="warning"
+            link
+            :disabled="row.status !== 3"
+            @click="openAcceptance(row)"
+          >
+            楠屾敹
+          </el-button>
+          <el-button
+            type="danger"
+            link
+            :disabled="row.status === 1 || row.status === 3"
+            @click="delRepairByIds(row.id)"
           >
             鍒犻櫎
+          </el-button>
+          <el-button
+              type="primary"
+              link
+              @click="openFileDialog(row)"
+          >
+            闄勪欢
           </el-button>
         </template>
       </PIMTable>
     </div>
     <RepairModal ref="repairModalRef" @ok="getTableData"/>
     <MaintainModal ref="maintainModalRef" @ok="getTableData"/>
+    <AcceptanceModal ref="acceptanceModalRef" @ok="getTableData"/>
+    <FileList v-if="fileDialogVisible"  v-model:visible="fileDialogVisible" :record-type="'device_repair'" :record-id="recordId"  />
   </div>
 </template>
 
 <script setup>
+import {onMounted, getCurrentInstance, computed, ref, defineAsyncComponent} from "vue";
 import {usePaginationApi} from "@/hooks/usePaginationApi";
 import {getRepairPage, delRepair} from "@/api/equipmentManagement/repair";
-import {onMounted, getCurrentInstance} from "vue";
 import RepairModal from "./Modal/RepairModal.vue";
 import {ElMessageBox, ElMessage} from "element-plus";
 import dayjs from "dayjs";
 import MaintainModal from "./Modal/MaintainModal.vue";
+import AcceptanceModal from "./Modal/AcceptanceModal.vue";
+const FileList = defineAsyncComponent(() => import("@/components/Dialog/FileList.vue"));
 
 defineOptions({
   name: "璁惧鎶ヤ慨",
@@ -152,6 +173,7 @@
 // 妯℃�佹瀹炰緥
 const repairModalRef = ref();
 const maintainModalRef = ref();
+const acceptanceModalRef = ref();
 
 // 琛ㄦ牸澶氶�夋閫変腑椤�
 const multipleList = ref([]);
@@ -187,6 +209,11 @@
         prop: "deviceModel",
       },
       {
+        label: "鎶ヤ慨椤圭洰",
+        align: "center",
+        prop: "machineryCategory",
+      },
+      {
         label: "鎶ヤ慨鏃ユ湡",
         align: "center",
         prop: "repairTime",
@@ -217,6 +244,17 @@
         align: "center",
         prop: "maintenanceTime",
         formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
+      },
+      {
+        label: "楠屾敹浜�",
+        align: "center",
+        prop: "acceptanceName",
+      },
+      {
+        label: "楠屾敹鏃堕棿",
+        align: "center",
+        prop: "acceptanceTime",
+        formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD HH:mm:ss") : ""),
       },
       {
         label: "鐘舵��",
@@ -252,10 +290,24 @@
   getTableData();
 };
 
+// 鎵撳紑闄勪欢寮圭獥
+const recordId =ref(0)
+const fileDialogVisible = ref(false)
+
+const openFileDialog = async (row) => {
+  recordId.value = row.id
+  fileDialogVisible.value = true
+}
+
 // 澶氶�夊悗鍋氫粈涔�
 const handleSelectionChange = (selectionList) => {
   multipleList.value = selectionList;
 };
+
+// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+const hasFinishedStatus = computed(() => {
+  return multipleList.value.some(item => item.status === 1)
+})
 
 // 鏂板鎶ヤ慨
 const addRepair = () => {
@@ -272,6 +324,11 @@
   maintainModalRef.value.open(row.id, row);
 };
 
+// 鎵撳紑楠屾敹寮圭獥
+const openAcceptance = (row) => {
+  acceptanceModalRef.value.open(row);
+};
+
 const changePage = ({page, limit}) => {
   pagination.currentPage = page;
   pagination.pageSize = limit;
@@ -280,6 +337,18 @@
 
 // 鍗曡鍒犻櫎
 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);
+    return record && record.status === 1;
+  });
+
+  if (hasFinished) {
+    ElMessage.warning('涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�');
+    return;
+  }
+
   ElMessageBox.confirm("纭鍒犻櫎鎶ヤ慨鏁版嵁, 姝ゆ搷浣滀笉鍙��?", "璀﹀憡", {
     confirmButtonText: "纭畾",
     cancelButtonText: "鍙栨秷",

--
Gitblit v1.9.3