From 759f41097324fa1ade4060fc838d700d8c8fa55f Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期五, 24 四月 2026 11:27:57 +0800
Subject: [PATCH] 提交一版

---
 src/views/productionManagement/productionOrder/index.vue |  163 +++++++++++++++++++++++++++++-------------------------
 1 files changed, 87 insertions(+), 76 deletions(-)

diff --git a/src/views/productionManagement/productionOrder/index.vue b/src/views/productionManagement/productionOrder/index.vue
index 667688e..a67130c 100644
--- a/src/views/productionManagement/productionOrder/index.vue
+++ b/src/views/productionManagement/productionOrder/index.vue
@@ -49,8 +49,10 @@
         </el-form-item>
       </el-form>
       <div class="action-buttons">
-        <el-button type="primary" @click="isShowNewModal = true">鏂板</el-button>
-        <el-button type="danger" @click="handleDelete">鍒犻櫎</el-button>
+        <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>
@@ -65,11 +67,9 @@
                 @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' : ''"
-          />
+          <el-progress :percentage="toProgressPercentage(row?.completionStatus)"
+                       :color="progressColor(toProgressPercentage(row?.completionStatus))"
+                       :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''" />
         </template>
       </PIMTable>
     </div>
@@ -98,26 +98,28 @@
         </span>
       </template>
     </el-dialog>
-
-    <MaterialLedgerDialog
-      v-model="materialDialogVisible"
-      :order-row="currentMaterialOrder"
-      @saved="getList"
-    />
-    <MaterialDetailDialog
-      v-model="materialDetailDialogVisible"
-      :order-row="currentMaterialDetailOrder"
-      @confirmed="getList"
-    />
-
+    <MaterialLedgerDialog v-model="materialDialogVisible"
+                          :order-row="currentMaterialOrder"
+                          @saved="getList" />
+    <MaterialDetailDialog v-model="materialDetailDialogVisible"
+                          :order-row="currentMaterialDetailOrder"
+                          @confirmed="getList" />
     <new-product-order v-if="isShowNewModal"
-                         v-model:visible="isShowNewModal"
-                         @completed="handleQuery" />
+                       v-model:visible="isShowNewModal"
+                       @completed="handleQuery" />
   </div>
 </template>
 
 <script setup>
-  import { computed, defineAsyncComponent, getCurrentInstance, onMounted, reactive, ref, toRefs } from "vue";
+  import {
+    computed,
+    defineAsyncComponent,
+    getCurrentInstance,
+    onMounted,
+    reactive,
+    ref,
+    toRefs,
+  } from "vue";
   import { ElMessageBox } from "element-plus";
   import dayjs from "dayjs";
   import { useRouter } from "vue-router";
@@ -125,13 +127,17 @@
     productOrderListPage,
     listProcessRoute,
     bindingRoute,
-    listProcessBom, delProductOrder,
+    listProcessBom,
+    delProductOrder,
   } from "@/api/productionManagement/productionOrder.js";
   import { listMain as getOrderProcessRouteMain } from "@/api/productionManagement/productProcessRoute.js";
   import MaterialLedgerDialog from "@/views/productionManagement/productionOrder/components/MaterialLedgerDialog.vue";
   import MaterialDetailDialog from "@/views/productionManagement/productionOrder/components/MaterialDetailDialog.vue";
   import PIMTable from "@/components/PIMTable/PIMTable.vue";
-  const NewProductOrder = defineAsyncComponent(() => import("@/views/productionManagement/productionOrder/New.vue"));
+  import { listPage } from "@/api/productionManagement/processRoute.js";
+  const NewProductOrder = defineAsyncComponent(() =>
+    import("@/views/productionManagement/productionOrder/New.vue")
+  );
 
   const { proxy } = getCurrentInstance();
 
@@ -142,32 +148,32 @@
     {
       label: "鐢熶骇璁㈠崟鍙�",
       prop: "npsNo",
-      width: '150px',
+      width: "150px",
     },
     {
       label: "閿�鍞悎鍚屽彿",
       prop: "salesContractNo",
-      width: '150px',
+      width: "150px",
     },
     {
       label: "瀹㈡埛鍚嶇О",
       prop: "customerName",
-      width: '200px',
+      width: "200px",
     },
     {
       label: "浜у搧鍚嶇О",
-      prop: "productCategory",
-      width: '120px',
+      prop: "productName",
+      width: "120px",
     },
     {
       label: "瑙勬牸",
-      prop: "specificationModel",
-      width: '120px',
+      prop: "model",
+      width: "120px",
     },
     {
       label: "宸ヨ壓璺嚎缂栧彿",
       prop: "processRouteCode",
-      width: '200px',
+      width: "200px",
     },
     {
       label: "闇�姹傛暟閲�",
@@ -197,8 +203,8 @@
       width: 120,
     },
     {
-      label: "浜や粯鏃ユ湡",
-      prop: "deliveryDate",
+      label: "璁″垝瀹屾垚鏃堕棿",
+      prop: "planCompleteTime",
       formatData: val => (val ? dayjs(val).format("YYYY-MM-DD") : ""),
       width: 120,
     },
@@ -288,18 +294,18 @@
 
   // 娣诲姞琛ㄨ绫诲悕鏂规硶
   const tableRowClassName = ({ row }) => {
-    if (!row.deliveryDate) return '';
-    if (row.isFh) return '';
+    if (!row.planCompleteTime) return "";
+    if (row.isFh) return "";
 
     const diff = row.deliveryDaysDiff;
     if (diff === 15) {
-      return 'yellow';
+      return "yellow";
     } else if (diff === 10) {
-      return 'pink';
+      return "pink";
     } else if (diff === 2) {
-      return 'purple';
+      return "purple";
     } else if (diff < 2) {
-      return 'red';
+      return "red";
     }
   };
 
@@ -329,8 +335,8 @@
     }
     bindRouteLoading.value = true;
     try {
-      const res = await listProcessRoute({ productModelId: row.productModelId });
-      routeOptions.value = res.data || [];
+      const res = await listPage({ productModelId: row.productModelId });
+      routeOptions.value = res.data.records || [];
     } catch (e) {
       console.error("鑾峰彇宸ヨ壓璺嚎鍒楄〃澶辫触锛�", e);
       proxy.$modal.msgError("鑾峰彇宸ヨ壓璺嚎鍒楄〃澶辫触");
@@ -452,14 +458,14 @@
   };
 
   // 琛ㄦ牸閫夋嫨鏁版嵁
-  const handleSelectionChange = (selection) => {
+  const handleSelectionChange = selection => {
     selectedRows.value = selection;
   };
 
   const handleDelete = () => {
     let ids = [];
     if (selectedRows.value.length > 0) {
-      ids = selectedRows.value.map((item) => item.id);
+      ids = selectedRows.value.map(item => item.id);
     } else {
       proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
       return;
@@ -468,14 +474,16 @@
       confirmButtonText: "纭",
       cancelButtonText: "鍙栨秷",
       type: "warning",
-    }).then(() => {
-      delProductOrder(ids).then((res) => {
-        proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
-        getList();
+    })
+      .then(() => {
+        delProductOrder(ids).then(res => {
+          proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+          getList();
+        });
+      })
+      .catch(() => {
+        proxy.$modal.msg("宸插彇娑�");
       });
-    }).catch(() => {
-      proxy.$modal.msg("宸插彇娑�");
-    });
   };
 
   // 瀵煎嚭
@@ -486,7 +494,11 @@
       type: "warning",
     })
       .then(() => {
-        proxy.download("/productOrder/export", {...searchForm.value}, "鐢熶骇璁㈠崟.xlsx");
+        proxy.download(
+          "/productOrder/export",
+          { ...searchForm.value },
+          "鐢熶骇璁㈠崟.xlsx"
+        );
       })
       .catch(() => {
         proxy.$modal.msg("宸插彇娑�");
@@ -501,33 +513,32 @@
 </script>
 
 <style scoped lang="scss">
-.search_form{
-  align-items: start;
-}
+  .search_form {
+    align-items: start;
+  }
 
-.action-buttons {
-  display: flex;
-  flex-wrap: nowrap;
-  gap: 8px;
-}
+  .action-buttons {
+    display: flex;
+    flex-wrap: nowrap;
+    gap: 8px;
+  }
 
-:deep(.yellow) {
-  background-color: #FAF0DE;
-}
+  :deep(.yellow) {
+    background-color: #faf0de;
+  }
 
-:deep(.pink) {
-  background-color: #FAE1DE;
-}
+  :deep(.pink) {
+    background-color: #fae1de;
+  }
 
-:deep(.red) {
-  background-color: #f80202;
-}
+  :deep(.red) {
+    background-color: #f80202;
+  }
 
-:deep(.purple){
-  background-color: #F4DEFA;
-}
-.table_list {
-	margin-top: unset;
-}
-
+  :deep(.purple) {
+    background-color: #f4defa;
+  }
+  .table_list {
+    margin-top: unset;
+  }
 </style>

--
Gitblit v1.9.3