From fa701a87310e2665b563eee14efe770a357d3ca5 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 18 三月 2026 11:44:22 +0800
Subject: [PATCH] 若上一个工序没有报工,则无法报工

---
 src/views/productionManagement/productionOrder/index.vue |  116 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 96 insertions(+), 20 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/index.vue b/src/views/productionManagement/productionOrder/index.vue
index 3af5008..7018d63 100644
--- a/src/views/productionManagement/productionOrder/index.vue
+++ b/src/views/productionManagement/productionOrder/index.vue
@@ -1,24 +1,25 @@
+<!-- 鐢熶骇璁㈠崟 -->
 <template>
   <div class="app-container">
     <div class="search_form">
       <el-form :model="searchForm"
                :inline="true">
-        <el-form-item label="瀹㈡埛鍚嶇О:">
+        <!-- <el-form-item label="瀹㈡埛鍚嶇О:">
           <el-input v-model="searchForm.customerName"
                     placeholder="璇疯緭鍏�"
                     clearable
                     prefix-icon="Search"
                     style="width: 160px;"
                     @change="handleQuery" />
-        </el-form-item>
-        <el-form-item label="鍚堝悓鍙�:">
+        </el-form-item> -->
+        <!-- <el-form-item label="鍚堝悓鍙�:">
           <el-input v-model="searchForm.salesContractNo"
                     placeholder="璇疯緭鍏�"
                     clearable
                     prefix-icon="Search"
                     style="width: 160px;"
                     @change="handleQuery" />
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="浜у搧鍚嶇О:">
           <el-input v-model="searchForm.productCategory"
                     placeholder="璇疯緭鍏�"
@@ -42,6 +43,7 @@
       </el-form>
       <div>
         <el-button type="primary" @click="isShowNewModal = true">鏂板</el-button>
+        <el-button type="danger" @click="handleDelete">鍒犻櫎</el-button>
         <el-button @click="handleOut">瀵煎嚭</el-button>
       </div>
     </div>
@@ -52,13 +54,17 @@
                 :page="page"
                 :tableLoading="tableLoading"
                 :row-class-name="tableRowClassName"
+                :isSelection="true"
+                @selection-change="handleSelectionChange"
                 @pagination="pagination">
         <template #completionStatus="{ row }">
-          <el-progress
-            :percentage="toProgressPercentage(row?.completionStatus)"
-            :color="progressColor(toProgressPercentage(row?.completionStatus))"
-            :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''"
-          />
+          <div class="progress-link" @click="goProductionDetail(row)">
+            <el-progress
+              :percentage="toProgressPercentage(row?.completionStatus)"
+              :color="progressColor(toProgressPercentage(row?.completionStatus))"
+              :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''"
+            />
+          </div>
         </template>
       </PIMTable>
     </div>
@@ -103,32 +109,54 @@
     productOrderListPage,
     listProcessRoute,
     bindingRoute,
-    listProcessBom,
+    listProcessBom, delProductOrder,
   } from "@/api/productionManagement/productionOrder.js";
   import { listMain as getOrderProcessRouteMain } from "@/api/productionManagement/productProcessRoute.js";
+  import {fileDel} from "@/api/financialManagement/revenueManagement.js";
+  import PIMTable from "@/components/PIMTable/PIMTable.vue";
   const NewProductOrder = defineAsyncComponent(() => import("@/views/productionManagement/productionOrder/New.vue"));
 
   const { proxy } = getCurrentInstance();
+  const { priority_type } = proxy.useDict("priority_type");
 
   const router = useRouter();
   const isShowNewModal = ref(false);
 
   const tableColumn = ref([
     {
+      label: "浼樺厛绾�",
+      prop: "priority",
+      width: '100px',
+      dataType: "tag",
+      formatData: val => proxy.selectDictLabel(priority_type.value, val),
+      formatType: val => {
+        const v = Number(val);
+        if (v === 0) return "danger";   // 绾㈣壊
+        if (v === 1) return "warning";  // 榛勮壊
+        if (v === 2) return "success";  // 缁胯壊
+        return "";
+      },
+    },
+    {
+      label: "鐢熶骇鎵瑰彿",
+      prop: "lotNo",
+      width: '120px',
+    },
+    {
       label: "鐢熶骇璁㈠崟鍙�",
       prop: "npsNo",
       width: '120px',
     },
-    {
-      label: "閿�鍞悎鍚屽彿",
-      prop: "salesContractNo",
-      width: '150px',
-    },
-    {
-      label: "瀹㈡埛鍚嶇О",
-      prop: "customerName",
-      width: '200px',
-    },
+    // {
+    //   label: "閿�鍞悎鍚屽彿",
+    //   prop: "salesContractNo",
+    //   width: '150px',
+    // },
+    // {
+    //   label: "瀹㈡埛鍚嶇О",
+    //   prop: "customerName",
+    //   width: '200px',
+    // },
     {
       label: "浜у搧鍚嶇О",
       prop: "productCategory",
@@ -187,6 +215,7 @@
         {
           name: "宸ヨ壓璺嚎",
           type: "text",
+          showHide: row => row.processRouteCode,
           clickFun: row => {
             showRouteItemModal(row);
           },
@@ -216,6 +245,7 @@
     size: 100,
     total: 0,
   });
+  const selectedRows = ref([]);
 
   const data = reactive({
     searchForm: {
@@ -247,6 +277,7 @@
 
   // 娣诲姞琛ㄨ绫诲悕鏂规硶
   const tableRowClassName = ({ row }) => {
+    if (!row.deliveryDate) return '';
     if (row.isFh) return '';
 
     const diff = row.deliveryDaysDiff;
@@ -394,6 +425,47 @@
     });
   };
 
+  const goProductionDetail = (row) => {
+    if (!row) return;
+    router.push({
+      path: "/productionManagement/productionOrder/detail",
+      query: {
+        orderId: row.id,
+        npsNo: row.npsNo || "",
+        lotNo: row.lotNo || "",
+        productCategory: row.productCategory || "",
+        specificationModel: row.specificationModel || "",
+      },
+    });
+  };
+
+  // 琛ㄦ牸閫夋嫨鏁版嵁
+  const handleSelectionChange = (selection) => {
+    selectedRows.value = selection;
+  };
+
+  const handleDelete = () => {
+    let ids = [];
+    if (selectedRows.value.length > 0) {
+      ids = selectedRows.value.map((item) => item.id);
+    } else {
+      proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+      return;
+    }
+    ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
+      confirmButtonText: "纭",
+      cancelButtonText: "鍙栨秷",
+      type: "warning",
+    }).then(() => {
+      delProductOrder(ids).then((res) => {
+        proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+        getList();
+      });
+    }).catch(() => {
+      proxy.$modal.msg("宸插彇娑�");
+    });
+  };
+
   // 瀵煎嚭
   const handleOut = () => {
     ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
@@ -436,4 +508,8 @@
 ::v-deep .purple{
   background-color: #F4DEFA;
 }
+.progress-link {
+  cursor: pointer;
+}
+
 </style>

--
Gitblit v1.9.3