From bfff831304d65d948613e3774364bb29bebaeb0c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 15 六月 2026 09:20:18 +0800
Subject: [PATCH] pro 1.数据模拟前端页面

---
 src/views/productionPlan/productionPlan/index.vue |  109 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 90 insertions(+), 19 deletions(-)

diff --git a/src/views/productionPlan/productionPlan/index.vue b/src/views/productionPlan/productionPlan/index.vue
index 0c8399c..fd6c1a3 100644
--- a/src/views/productionPlan/productionPlan/index.vue
+++ b/src/views/productionPlan/productionPlan/index.vue
@@ -13,6 +13,14 @@
                     style="width: 160px;"
                     @keyup.enter="handleQuery" />
         </el-form-item>
+        <el-form-item label="閿�鍞悎鍚屽彿:"
+                      prop="salesContractNo">
+          <el-input v-model="searchForm.salesContractNo"
+                    placeholder="璇疯緭鍏�"
+                    clearable
+                    style="width: 160px;"
+                    @keyup.enter="handleQuery" />
+        </el-form-item>
         <el-form-item label="闇�姹傛棩鏈熻寖鍥�:"
                       prop="dateRange">
           <el-date-picker v-model="searchForm.dateRange"
@@ -48,7 +56,7 @@
                     style="width: 160px;"
                     @keyup.enter="handleQuery" />
         </el-form-item>
-        <el-form-item label="浜у搧瑙勬牸:"
+        <el-form-item label="瑙勬牸鍨嬪彿:"
                       prop="model">
           <el-input v-model="searchForm.model"
                     placeholder="璇疯緭鍏�"
@@ -88,6 +96,13 @@
         <template #qtyRequired="{ row }">
           {{ row.qtyRequired || '-' }}<span style="color:rgba(12, 46, 40, 0.76)"> {{ row.unit || '鏂�' }}</span>
         </template>
+        <template #salesContractNo="{ row }">
+          <el-button type="primary"
+                     text
+                     link
+                     @click="showDetail(row)">{{ row.salesContractNo }}
+          </el-button>
+        </template>
       </PIMTable>
     </div>
     <!-- 鍚堝苟涓嬪彂寮圭獥 -->
@@ -106,7 +121,7 @@
         </el-row>
         <el-row :gutter="20">
           <el-col>
-            <el-form-item label="浜у搧瑙勬牸">
+            <el-form-item label="瑙勬牸鍨嬪彿">
               <div class="info-display">{{ mergeForm.model || '-' }}</div>
             </el-form-item>
           </el-col>
@@ -124,12 +139,18 @@
                            @change="onBlur"
                            style="width: 100%" />
         </el-form-item>
+        <el-form-item label="鍒涘缓鏃堕棿">
+          <el-date-picker v-model="mergeCreateTimeDate"
+                          type="date"
+                          value-format="YYYY-MM-DD"
+                          style="width: 100%" />
+        </el-form-item>
       </el-form>
       <template #footer>
         <span class="dialog-footer">
-          <el-button @click="isShowNewModal = false">鍙栨秷</el-button>
           <el-button type="primary"
                      @click="handleMergeSubmit">纭畾涓嬪彂</el-button>
+          <el-button @click="isShowNewModal = false">鍙栨秷</el-button>
         </span>
       </template>
     </el-dialog>
@@ -158,7 +179,7 @@
                       prop="mpsNo">
           <el-input v-model="form.mpsNo"
                     disabled
-                    placeholder="鏂板鍚庤嚜鍔ㄧ敓鎴�" />
+                    placeholder="淇濆瓨鍚庤嚜鍔ㄧ敓鎴�" />
         </el-form-item>
         <el-form-item label="浜у搧鍚嶇О"
                       prop="productId">
@@ -171,7 +192,7 @@
                           @change="handleProductChange"
                           style="width: 100%" />
         </el-form-item>
-        <el-form-item label="浜у搧瑙勬牸"
+        <el-form-item label="瑙勬牸鍨嬪彿"
                       prop="productModelId">
           <el-select v-model="form.productModelId"
                      @change="handleChangeSpecification"
@@ -212,6 +233,14 @@
                           style="width: 100%"
                           placeholder="璇烽�夋嫨鎵胯鏃ユ湡" />
         </el-form-item>
+        <el-form-item label="鍒涘缓鏃堕棿"
+                      prop="createTime">
+          <el-date-picker v-model="formCreateTimeDate"
+                          type="date"
+                          value-format="YYYY-MM-DD"
+                          style="width: 100%"
+                          placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" />
+        </el-form-item>
         <el-form-item label="澶囨敞"
                       prop="remark">
           <el-input v-model="form.remark"
@@ -221,9 +250,9 @@
       </el-form>
       <template #footer>
         <span class="dialog-footer">
-          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
           <el-button type="primary"
                      @click="handleSubmit">纭畾</el-button>
+          <el-button @click="dialogVisible = false">鍙栨秷</el-button>
         </span>
       </template>
     </el-dialog>
@@ -251,6 +280,7 @@
     productionPlanUpdate,
     productionPlanDelete,
     productionPlanCombine,
+    exportProductionPlan,
   } from "@/api/productionPlan/productionPlan.js";
   import { productTreeList, modelListPage } from "@/api/basicData/product.js";
   import PIMTable from "./components/PIMTable.vue";
@@ -262,11 +292,6 @@
   const loadProdData = () => {
     console.log("Mock loadProdData called");
     return Promise.resolve({ code: 200, msg: "鍚屾鎴愬姛" });
-  };
-
-  const exportProductionPlan = () => {
-    console.log("Mock exportProductionPlan called");
-    return Promise.resolve();
   };
 
   // const productionPlanCombine = payload => {
@@ -293,6 +318,14 @@
       },
     },
     {
+      label: "閿�鍞悎鍚屽彿",
+      prop: "salesContractNo",
+      width: "200px",
+      dataType: "slot",
+      slot: "salesContractNo",
+    },
+
+    {
       label: "浜у搧鍚嶇О",
       prop: "productName",
       width: "200px",
@@ -302,7 +335,7 @@
       },
     },
     {
-      label: "浜у搧瑙勬牸",
+      label: "瑙勬牸鍨嬪彿",
       prop: "model",
       width: "150px",
       className: "spec-cell",
@@ -316,7 +349,6 @@
       label: "鎵�闇�鏁伴噺",
       prop: "qtyRequired",
       width: "150px",
-      align: "right",
       dataType: "slot",
       slot: "qtyRequired",
       className: "volume-cell",
@@ -365,6 +397,17 @@
       className: "date-cell",
       formatData: cell => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
     },
+
+    {
+      label: "瀹㈡埛鍚嶇О",
+      prop: "customerName",
+      width: "150px",
+    },
+    {
+      label: "椤圭洰鍚嶇О",
+      prop: "projectName",
+      width: "150px",
+    },
     {
       label: "澶囨敞",
       width: "150px",
@@ -382,7 +425,7 @@
           type: "primary",
           link: true,
           showHide: row => {
-            return row.status == 0;
+            return row.status == 0 && row.source != "閿�鍞�";
           },
           clickFun: row => {
             handleEdit(row);
@@ -401,6 +444,7 @@
               Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
             mergeForm.planCompleteTime = row.requiredDate || "";
             mergeForm.productId = row.productId || "";
+            mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
             mergeForm.ids = [row.id];
             sumAssignedQuantity.value =
               Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
@@ -444,6 +488,13 @@
     totalAssignedQuantity: 0,
     planCompleteTime: "",
     productId: "",
+    createTime: "",
+  });
+  const mergeCreateTimeDate = computed({
+    get: () => (mergeForm.createTime ? String(mergeForm.createTime).split(" ")[0] : ""),
+    set: (value) => {
+      mergeForm.createTime = value ? `${value} ${dayjs().format("HH:mm:ss")}` : "";
+    },
   });
 
   // 瀵煎叆鐩稿叧
@@ -474,11 +525,18 @@
     requiredDate: "",
     promisedDeliveryDate: "",
     remark: "",
+    createTime: "",
+  });
+  const formCreateTimeDate = computed({
+    get: () => (form.createTime ? String(form.createTime).split(" ")[0] : ""),
+    set: (value) => {
+      form.createTime = value ? `${value} ${dayjs().format("HH:mm:ss")}` : "";
+    },
   });
   const rules = reactive({
     productId: [{ required: true, message: "璇烽�夋嫨浜у搧", trigger: "change" }],
     productModelId: [
-      { required: true, message: "璇烽�夋嫨浜у搧瑙勬牸", trigger: "change" },
+      { required: true, message: "璇烽�夋嫨瑙勬牸鍨嬪彿", trigger: "change" },
     ],
     qtyRequired: [{ required: true, message: "璇疯緭鍏ユ暟閲�", trigger: "blur" }],
     requiredDate: [
@@ -568,6 +626,7 @@
   const data = reactive({
     searchForm: {
       mpsNo: "",
+      salesContractNo: "",
       productName: "",
       model: "",
       status: "",
@@ -596,6 +655,7 @@
     }
     Object.assign(searchForm.value, {
       mpsNo: "",
+      salesContractNo: "",
       productName: "",
       model: "",
       status: "",
@@ -655,17 +715,17 @@
       });
   };
 
-  // 閫変腑鐨勪骇鍝佽鏍糏D
+  // 閫変腑鐨勮鏍煎瀷鍙稩D
   const selectedProductModelId = ref("");
 
   // 琛ㄦ牸閫夋嫨鏁版嵁
   const handleSelectionChange = selection => {
     selectedRows.value = selection;
-    // 濡傛灉鏈夐�変腑鐨勮锛岃褰曠涓�涓�変腑琛岀殑浜у搧瑙勬牸ID
+    // 濡傛灉鏈夐�変腑鐨勮锛岃褰曠涓�涓�変腑琛岀殑瑙勬牸鍨嬪彿ID
     if (selection.length > 0) {
       selectedProductModelId.value = selection[0].productModelId;
     } else {
-      // 濡傛灉娌℃湁閫変腑鐨勮锛屾竻绌轰骇鍝佽鏍糏D
+      // 濡傛灉娌℃湁閫変腑鐨勮锛屾竻绌鸿鏍煎瀷鍙稩D
       selectedProductModelId.value = "";
     }
   };
@@ -686,7 +746,7 @@
     if (!selectedProductModelId.value) {
       return true;
     }
-    // 濡傛灉鏈夐�変腑鐨勮锛屽彧鏈変骇鍝佽鏍糏D鐩稿悓鐨勮鎵嶅彲閫夋嫨
+    // 濡傛灉鏈夐�変腑鐨勮锛屽彧鏈夎鏍煎瀷鍙稩D鐩稿悓鐨勮鎵嶅彲閫夋嫨
     return row.productModelId === selectedProductModelId.value;
   };
   // 鎷夊彇鏁版嵁鎸夐挳鎿嶄綔
@@ -715,10 +775,19 @@
     mergeForm.totalAssignedQuantity = totalAssignedQuantity;
     mergeForm.planCompleteTime = firstRow.requiredDate || "";
     mergeForm.productId = firstRow.productId || "";
+    mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
     mergeForm.ids = selectedRows.value.map(row => row.id);
 
     // 鎵撳紑寮圭獥
     isShowNewModal.value = true;
+  };
+  const showDetail = row => {
+    router.push({
+      path: "/salesManagement/salesLedger",
+      query: {
+        salesContractNo: row.salesContractNo,
+      },
+    });
   };
 
   // 澶勭悊鍚堝苟涓嬪彂鎻愪氦
@@ -850,6 +919,7 @@
       requiredDate: "",
       promisedDeliveryDate: "",
       remark: "",
+      createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
     });
     dialogVisible.value = true;
     fetchProductOptions();
@@ -870,6 +940,7 @@
       requiredDate: row.requiredDate || "",
       promisedDeliveryDate: row.promisedDeliveryDate || "",
       remark: row.remark || "",
+      createTime: row.createTime || "",
     });
     dialogVisible.value = true;
     fetchProductOptions();

--
Gitblit v1.9.3