From dc45a16c5779e249f45ff644a8c57c9c985c2c4f Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期五, 12 六月 2026 14:02:13 +0800
Subject: [PATCH] 检测页面加loading

---
 src/components/PIMTable/PIMTable.vue                        |    8 ++++++++
 src/views/qualityManagement/rawMaterialInspection/index.vue |   29 +++++++++++++++++++++--------
 2 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/src/components/PIMTable/PIMTable.vue b/src/components/PIMTable/PIMTable.vue
index d63c197..631d956 100644
--- a/src/components/PIMTable/PIMTable.vue
+++ b/src/components/PIMTable/PIMTable.vue
@@ -120,6 +120,7 @@
             <el-button v-show="o.type != 'upload'"
                        v-if="o.showHide ? o.showHide(scope.row) : true"
                        :disabled="isOperationDisabled(o, scope.row)"
+                       :loading="isOperationLoading(o, scope.row)"
                        :plain="o.plain"
                        type="primary"
                        :style="{
@@ -373,6 +374,13 @@
       : !!operation.disabled;
   };
 
+  const isOperationLoading = (operation, row) => {
+    if (!operation?.loading) return false;
+    return typeof operation.loading === "function"
+      ? !!operation.loading(row)
+      : !!operation.loading;
+  };
+
   const parseHexToRgb = hex => {
     const normalized = String(hex || "")
       .trim()
diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue
index 7ed40eb..d887989 100644
--- a/src/views/qualityManagement/rawMaterialInspection/index.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/index.vue
@@ -227,6 +227,7 @@
         clickFun: (row) => {
           submit(row.id);
         },
+        loading: (row) => submitLoadingId.value === row.id,
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
 					if (row.inspectState == 1) return true;
@@ -257,6 +258,7 @@
         clickFun: (row) => {
           downLoadFile(row);
         },
+        loading: (row) => downloadLoadingId.value === row.id,
       },
     ],
   },
@@ -264,6 +266,8 @@
 const tableData = ref([]);
 const selectedRows = ref([]);
 const tableLoading = ref(false);
+const submitLoadingId = ref(null);
+const downloadLoadingId = ref(null);
 const userList = ref([]);
 const dialogFormVisible = ref(false);
 const form = ref({
@@ -369,12 +373,17 @@
       });
 };
 
-// 鎻愪环
+// 鎻愪氦
 const submit = async (id) => {
-  const res = await submitQualityInspect({id: id})
-  if (res.code === 200) {
-    proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-    getList();
+  submitLoadingId.value = id;
+  try {
+    const res = await submitQualityInspect({ id });
+    if (res.code === 200) {
+      proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+      getList();
+    }
+  } finally {
+    submitLoadingId.value = null;
   }
 }
 
@@ -405,8 +414,10 @@
   dialogFormVisible.value = true
 }
 
-const downLoadFile = (row) => {
-  downloadQualityInspect({ id: row.id }).then((blobData) => {
+const downLoadFile = async (row) => {
+  downloadLoadingId.value = row.id;
+  try {
+    const blobData = await downloadQualityInspect({ id: row.id });
     const blob = new Blob([blobData], {
       type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
     })
@@ -420,7 +431,9 @@
 
     document.body.removeChild(link)
     window.URL.revokeObjectURL(downloadUrl)
-  })
+  } finally {
+    downloadLoadingId.value = null;
+  }
 };
 
 onMounted(() => {

--
Gitblit v1.9.3