From a29b23b7e52fbea3749733bda3fdd41f04acfc15 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期六, 09 五月 2026 10:57:32 +0800
Subject: [PATCH] fix(生产订单): 修正导出功能中的API路径和文件名

---
 src/views/productionManagement/workOrderManagement/index.vue |   52 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/src/views/productionManagement/workOrderManagement/index.vue b/src/views/productionManagement/workOrderManagement/index.vue
index c1b0474..a42f98c 100644
--- a/src/views/productionManagement/workOrderManagement/index.vue
+++ b/src/views/productionManagement/workOrderManagement/index.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <div class="search_form">
+    <div class="search_form mb20">
       <div class="search-row">
         <div class="search-item">
           <span class="search_title">宸ュ崟缂栧彿锛�</span>
@@ -13,7 +13,7 @@
         </div>
         <div class="search-item">
           <span class="search_title">鐢熶骇璁㈠崟鍙凤細</span>
-          <el-input v-model="searchForm.productOrderNpsNo"
+          <el-input v-model="searchForm.npsNo"
                     style="width: 240px"
                     placeholder="璇疯緭鍏�"
                     @change="handleQuery"
@@ -244,6 +244,7 @@
                     @refresh="getList" />
     <FileList v-if="fileDialogVisible"
               v-model:visible="fileDialogVisible"
+              :editable="!currentWorkOrderRow?.endOrder"
               :record-type="'production_operation_task'"
               :record-id="currentWorkOrderId" />
   </div>
@@ -258,14 +259,20 @@
     addProductMain,
     downProductWorkOrder,
   } from "@/api/productionManagement/workOrder.js";
+  import { listMaterialPickingDetail } from "@/api/productionManagement/productionOrder.js";
   import { findProcessParamListOrder } from "@/api/productionManagement/productProcessRoute.js";
   import { getUserProfile, userListNoPageByTenantId } from "@/api/system/user.js";
   import { getDicts } from "@/api/system/dict/data";
   import QRCode from "qrcode";
   import { getCurrentInstance, reactive, toRefs } from "vue";
   import MaterialDialog from "./components/MaterialDialog.vue";
-  import FileList from "@/components/Dialog/FileList.vue";
+  const FileList = defineAsyncComponent(() =>
+    import("@/components/Dialog/FileList.vue")
+  );
+
+  import useUserStore from "@/store/modules/user";
   const { proxy } = getCurrentInstance();
+  const userStore = useUserStore();
 
   const tableColumn = ref([
     {
@@ -368,7 +375,23 @@
           clickFun: row => {
             showReportDialog(row);
           },
-          disabled: row => row.planQuantity <= 0,
+          showHide: row => !row.endOrder,
+          disabled: row => {
+            if (row.planQuantity <= 0) return true;
+            if (!row.userIds) return false;
+            try {
+              const userIds =
+                typeof row.userIds === "string"
+                  ? JSON.parse(row.userIds)
+                  : row.userIds;
+              if (Array.isArray(userIds)) {
+                return !userIds.some(id => String(id) === String(userStore.id));
+              }
+              return true;
+            } catch (e) {
+              return true;
+            }
+          },
         },
       ],
     },
@@ -505,7 +528,7 @@
   const data = reactive({
     searchForm: {
       workOrderNo: "",
-      productOrderNpsNo: "",
+      npsNo: "",
     },
   });
   const { searchForm } = toRefs(data);
@@ -614,13 +637,29 @@
   const printTransferCard = () => {
     window.print();
   };
+  const currentWorkOrderRow = ref(null);
 
   const openWorkOrderFiles = row => {
     currentWorkOrderId.value = row.id;
+    currentWorkOrderRow.value = row;
     fileDialogVisible.value = true;
   };
 
-  const showReportDialog = row => {
+  const showReportDialog = async row => {
+    if (row.productionOrderId) {
+      try {
+        const res = await listMaterialPickingDetail(row.productionOrderId);
+        const records = Array.isArray(res.data)
+          ? res.data
+          : res.data?.records || [];
+        if (res.code === 200 && records.length === 0) {
+          proxy.$modal.msgError("鏈鏂欐棤娉曟姤宸�");
+          return;
+        }
+      } catch (error) {
+        console.error("鏌ヨ棰嗘枡璇︽儏澶辫触:", error);
+      }
+    }
     currentReportRowData.value = row;
     reportForm.planQuantity = row.planQuantity;
     reportForm.quantity =
@@ -801,6 +840,7 @@
   };
 
   onMounted(() => {
+    userStore.getInfo();
     getList();
     // 鑾峰彇鐢ㄦ埛鍒楄〃
     userListNoPageByTenantId().then(res => {

--
Gitblit v1.9.3