From c1bf5ebfe65ee67c64da6e9e4e6f7c7dbb3e992e Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 17 三月 2026 14:28:26 +0800
Subject: [PATCH] fix: 新增不合格原料库存时,没有皮重、毛重、净重、过磅日期、车牌号、过磅员输入框(不会存在不合格入库,把按钮屏蔽掉)

---
 src/views/equipmentManagement/repair/index.vue |  112 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 90 insertions(+), 22 deletions(-)

diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index 2443123..a278a5c 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>
@@ -104,25 +104,33 @@
         </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"
+            @click="editRepair(row.id)"
           >
             缂栬緫
           </el-button>
           <el-button
-              type="danger"
-              text
-              icon="delete"
-              @click="delRepairByIds(row.id)"
+            type="info"
+            link
+            @click="viewAttachments(row)"
+          >
+            鏌ョ湅闄勪欢
+          </el-button>
+          <el-button
+            type="success"
+            link
+            :disabled="row.status === 1"
+            @click="addMaintain(row)"
+          >
+            缁翠慨
+          </el-button>
+          <el-button
+            type="danger"
+            link
+            :disabled="row.status === 1"
+            @click="delRepairByIds(row.id)"
           >
             鍒犻櫎
           </el-button>
@@ -131,17 +139,26 @@
     </div>
     <RepairModal ref="repairModalRef" @ok="getTableData"/>
     <MaintainModal ref="maintainModalRef" @ok="getTableData"/>
+    <FileListDialog
+      ref="fileListDialogRef"
+      v-model="fileDialogVisible"
+      title="鏌ョ湅闄勪欢"
+      :show-upload-button="false"
+      :show-delete-button="false"
+      name-column-label="闄勪欢鍚嶇О"
+    />
   </div>
 </template>
 
 <script setup>
+import { onMounted, getCurrentInstance, computed } from "vue";
 import {usePaginationApi} from "@/hooks/usePaginationApi";
-import {getRepairPage, delRepair} from "@/api/equipmentManagement/repair";
-import {onMounted, getCurrentInstance} from "vue";
+import {getRepairPage, delRepair, getRepairById} from "@/api/equipmentManagement/repair";
 import RepairModal from "./Modal/RepairModal.vue";
 import {ElMessageBox, ElMessage} from "element-plus";
 import dayjs from "dayjs";
 import MaintainModal from "./Modal/MaintainModal.vue";
+import FileListDialog from "@/components/Dialog/FileListDialog.vue";
 
 defineOptions({
   name: "璁惧鎶ヤ慨",
@@ -152,6 +169,40 @@
 // 妯℃�佹瀹炰緥
 const repairModalRef = ref();
 const maintainModalRef = ref();
+const fileListDialogRef = ref();
+const fileDialogVisible = ref(false);
+
+const baseApi = import.meta.env.VITE_APP_BASE_API || "";
+const formatFileUrl = (url) => {
+  if (!url) return "";
+  if (url.startsWith("http://") || url.startsWith("https://")) return url;
+  if (url.includes(":") || url.startsWith("/")) {
+    return url;
+  }
+  const path = String(url).replace(/^\/+/, "");
+  return path ? baseApi + "/" + path : baseApi;
+};
+
+// 鏌ョ湅闄勪欢锛堜笌 APP 瀛楁涓�鑷达細fileList / commonFileList锛�
+const viewAttachments = async (row) => {
+  try {
+    const { code, data } = await getRepairById(row.id);
+    if (code === 200 && data) {
+      const list = data.fileList || data.commonFileList || [];
+      const mapped = (Array.isArray(list) ? list : []).map((f) => ({
+        id: f.id,
+        name: f.originalFilename || f.bucketFilename || f.name || "闄勪欢",
+        url: formatFileUrl(f.url || f.downloadUrl),
+        raw: f,
+      }));
+      fileListDialogRef.value?.open(mapped);
+    } else {
+      ElMessage.warning("鑾峰彇闄勪欢澶辫触");
+    }
+  } catch (e) {
+    ElMessage.error("鑾峰彇闄勪欢澶辫触");
+  }
+};
 
 // 琛ㄦ牸澶氶�夋閫変腑椤�
 const multipleList = ref([]);
@@ -231,7 +282,7 @@
         dataType: "slot",
         slot: "operation",
         align: "center",
-        width: "300px",
+        width: "360px",
       },
     ]
 );
@@ -257,6 +308,11 @@
   multipleList.value = selectionList;
 };
 
+// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+const hasFinishedStatus = computed(() => {
+  return multipleList.value.some(item => item.status === 1)
+})
+
 // 鏂板鎶ヤ慨
 const addRepair = () => {
   repairModalRef.value.openAdd();
@@ -280,6 +336,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