From cac91a6a4c74d90215ebd93f787564efd651ae98 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 28 五月 2026 13:12:24 +0800
Subject: [PATCH] 富边电子 1.客户往来,销售合同号改为订单号。增加订单号查询搜索。 2.发货台账,没有时间显示, 3.指标统计改名为销售统计 4.采购台账,采购合同号改为采购单号。取消销售合同号。签订日期改为采购日期。付款方式取消显示。 5.供应商档案,取消供应商类型(甲乙丙丁),录入时也取消。 6.采购合同号改成采购单号。 7.采购报表,退款储量改成采购总价(或不显示)。 8.销售之后库存没有出库记录。 9.质量管理,检验员改成送件员。

---
 src/views/qualityManagement/processInspection/components/formDia.vue     |    2 
 src/views/salesManagement/deliveryLedger/index.vue                       |    4 
 src/views/procurementManagement/procurementReport/index.vue              |   14 
 src/views/qualityManagement/finalInspection/components/formDia.vue       |    2 
 src/views/salesManagement/receiptPaymentLedger/index.vue                 |   34 ++
 src/views/qualityManagement/rawMaterialInspection/index.vue              |   26 +-
 src/views/salesManagement/salesLedger/index.vue                          |  134 ++++++++++
 src/views/qualityManagement/finalInspection/index.vue                    |   14 
 src/views/qualityManagement/processInspection/index.vue                  |   14 
 src/views/productionManagement/workOrderManagement/index.vue             |  344 +++++++++++++++++++-------
 src/views/procurementManagement/procurementLedger/index.vue              |   55 ---
 src/views/qualityManagement/rawMaterialInspection/components/formDia.vue |    6 
 src/views/basicData/supplierManage/components/BlacklistTab.vue           |   40 ---
 src/views/basicData/supplierManage/components/HomeTab.vue                |   40 ---
 14 files changed, 461 insertions(+), 268 deletions(-)

diff --git a/src/views/basicData/supplierManage/components/BlacklistTab.vue b/src/views/basicData/supplierManage/components/BlacklistTab.vue
index 8f6204b..55f6c2f 100644
--- a/src/views/basicData/supplierManage/components/BlacklistTab.vue
+++ b/src/views/basicData/supplierManage/components/BlacklistTab.vue
@@ -147,31 +147,6 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="缁存姢鏃堕棿锛�" prop="maintainTime">
-              <el-date-picker
-                  style="width: 100%"
-                  v-model="form.maintainTime"
-                  value-format="YYYY-MM-DD"
-                  format="YYYY-MM-DD"
-                  type="date"
-                  placeholder="璇烽�夋嫨"
-                  clearable
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="渚涘簲鍟嗙被鍨嬶細" prop="supplierType">
-              <el-select v-model="form.supplierType" placeholder="璇烽�夋嫨" clearable>
-                <el-option label="鐢�" value="鐢�" />
-                <el-option label="涔�" value="涔�" />
-                <el-option label="涓�" value="涓�" />
-                <el-option label="涓�" value="涓�" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
             <el-form-item label="鏄惁鐧藉悕鍗曪細" prop="isWhite">
               <el-select v-model="form.isWhite" placeholder="璇烽�夋嫨" clearable>
                 <el-option label="鏄�" :value="0" />
@@ -260,11 +235,6 @@
     width: 250,
   },
   {
-    label: "渚涘簲鍟嗙被鍨�",
-    prop: "supplierType",
-    width: 120,
-  },
-  {
     label: "绾崇◣浜鸿瘑鍒彿",
     prop: "taxpayerIdentificationNum",
     width: 230,
@@ -301,12 +271,6 @@
   {
     label: "缁存姢浜�",
     prop: "maintainUserName",
-  },
-
-  {
-    label: "缁存姢鏃堕棿",
-    prop: "maintainTime",
-    width:100
   },
   {
     dataType: "action",
@@ -360,8 +324,6 @@
     contactUserName: "",
     contactUserPhone: "",
     maintainUserId: "",
-    maintainTime: "",
-    supplierType: "",
     isWhite: "",
   },
   rules: {
@@ -376,8 +338,6 @@
     contactUserName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     contactUserPhone: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     maintainUserId: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-    maintainTime: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-    supplierType: [{ required: true, message: "璇烽�夋嫨渚涘簲鍟嗙被鍨�", trigger: "change" }],
   },
 });
 const { searchForm, form, rules } = toRefs(data);
diff --git a/src/views/basicData/supplierManage/components/HomeTab.vue b/src/views/basicData/supplierManage/components/HomeTab.vue
index 85c3265..ec5af2e 100644
--- a/src/views/basicData/supplierManage/components/HomeTab.vue
+++ b/src/views/basicData/supplierManage/components/HomeTab.vue
@@ -153,31 +153,6 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="缁存姢鏃堕棿锛�" prop="maintainTime">
-              <el-date-picker
-                  style="width: 100%"
-                  v-model="form.maintainTime"
-                  value-format="YYYY-MM-DD"
-                  format="YYYY-MM-DD"
-                  type="date"
-                  placeholder="璇烽�夋嫨"
-                  clearable
-              />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="渚涘簲鍟嗙被鍨嬶細" prop="supplierType">
-              <el-select v-model="form.supplierType" placeholder="璇烽�夋嫨" clearable>
-                <el-option label="鐢�" value="鐢�" />
-                <el-option label="涔�" value="涔�" />
-                <el-option label="涓�" value="涓�" />
-                <el-option label="涓�" value="涓�" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
             <el-form-item label="鏄惁鐧藉悕鍗曪細" prop="isWhite">
               <el-select v-model="form.isWhite" placeholder="璇烽�夋嫨" clearable>
                 <el-option label="鏄�" :value="0" />
@@ -266,11 +241,6 @@
     width: 250,
   },
   {
-    label: "渚涘簲鍟嗙被鍨�",
-    prop: "supplierType",
-    width: 120,
-  },
-  {
     label: "绾崇◣浜鸿瘑鍒彿",
     prop: "taxpayerIdentificationNum",
     width: 230,
@@ -307,12 +277,6 @@
   {
     label: "缁存姢浜�",
     prop: "maintainUserName",
-  },
-
-  {
-    label: "缁存姢鏃堕棿",
-    prop: "maintainTime",
-    width:100
   },
   {
     dataType: "action",
@@ -366,8 +330,6 @@
     contactUserName: "",
     contactUserPhone: "",
     maintainUserId: "",
-    maintainTime: "",
-    supplierType: "",
     isWhite: "",
   },
   rules: {
@@ -382,8 +344,6 @@
     contactUserName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     contactUserPhone: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
     maintainUserId: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-    maintainTime: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
-    supplierType: [{ required: true, message: "璇烽�夋嫨渚涘簲鍟嗙被鍨�", trigger: "change" }],
   },
 });
 const { searchForm, form, rules } = toRefs(data);
diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue
index 8a293fc..8c409a7 100644
--- a/src/views/procurementManagement/procurementLedger/index.vue
+++ b/src/views/procurementManagement/procurementLedger/index.vue
@@ -11,20 +11,13 @@
                       prefix-icon="Search"
                       @change="handleQuery" />
           </el-form-item>
-          <el-form-item label="閲囪喘鍚堝悓鍙凤細">
+          <el-form-item label="閲囪喘鍗曞彿锛�">
             <el-input v-model="searchForm.purchaseContractNumber"
                       style="width: 240px"
                       placeholder="璇疯緭鍏�"
                       @change="handleQuery"
                       clearable
                       :prefix-icon="Search" />
-          </el-form-item>
-          <el-form-item label="閿�鍞悎鍚屽彿锛�">
-            <el-input v-model="searchForm.salesContractNo"
-                      placeholder="璇疯緭鍏�"
-                      clearable
-                      prefix-icon="Search"
-                      @change="handleQuery" />
           </el-form-item>
           <el-form-item label="椤圭洰鍚嶇О锛�">
             <el-input v-model="searchForm.projectName"
@@ -113,13 +106,9 @@
                          label="搴忓彿"
                          type="index"
                          width="60" />
-        <el-table-column label="閲囪喘鍚堝悓鍙�"
+        <el-table-column label="閲囪喘鍗曞彿"
                          prop="purchaseContractNumber"
                          width="160"
-                         show-overflow-tooltip />
-        <el-table-column label="閿�鍞悎鍚屽彿"
-                         prop="salesContractNo"
-                          width="160"
                          show-overflow-tooltip />
         <el-table-column label="渚涘簲鍟嗗悕绉�"
                          prop="supplierName"
@@ -141,13 +130,9 @@
             </el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="绛捐鏃ユ湡"
+        <el-table-column label="閲囪喘鏃ユ湡"
                          prop="executionDate"
                          width="100"
-                         show-overflow-tooltip />
-        <el-table-column label="浠樻鏂瑰紡"
-                         width="100"
-                         prop="paymentMethod"
                          show-overflow-tooltip />
         <el-table-column label="鍚堝悓閲戦(鍏�)"
                          prop="contractAmount"
@@ -202,30 +187,13 @@
                ref="formRef">
         <el-row :gutter="30">
           <el-col :span="12">
-            <el-form-item label="閲囪喘鍚堝悓鍙凤細"
+            <el-form-item label="閲囪喘鍗曞彿锛�"
                           prop="purchaseContractNumber">
               <el-input v-model="form.purchaseContractNumber"
                         placeholder="璇疯緭鍏�"
                         clearable />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="閿�鍞悎鍚屽彿锛�"
-                          prop="salesLedgerId">
-              <el-select v-model="form.salesLedgerId"
-                         placeholder="璇烽�夋嫨"
-                         filterable
-                         clearable
-                         @change="salesLedgerChange">
-                <el-option v-for="item in salesContractList"
-                           :key="item.id"
-                           :label="item.salesContractNo"
-                           :value="item.id" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="渚涘簲鍟嗗悕绉帮細"
                           prop="supplierId">
@@ -236,10 +204,12 @@
                 <el-option v-for="item in supplierList"
                            :key="item.id"
                            :label="item.supplierName"
-													 :value="item.id" >{{item.supplierName + '---' + item.supplierType}}</el-option>
+														 :value="item.id" >{{item.supplierName + '---' + item.supplierType}}</el-option>
               </el-select>
             </el-form-item>
           </el-col>
+        </el-row>
+        <el-row :gutter="30">
           <el-col :span="12">
             <el-form-item label="椤圭洰鍚嶇О"
                           prop="projectName">
@@ -248,17 +218,8 @@
                         clearable />
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row :gutter="30">
           <el-col :span="12">
-            <el-form-item label="浠樻鏂瑰紡">
-              <el-input v-model="form.paymentMethod"
-                        placeholder="璇疯緭鍏�"
-                        clearable />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="绛捐鏃ユ湡锛�"
+            <el-form-item label="閲囪喘鏃ユ湡锛�"
                           prop="executionDate">
               <el-date-picker style="width: 100%"
                               v-model="form.executionDate"
diff --git a/src/views/procurementManagement/procurementReport/index.vue b/src/views/procurementManagement/procurementReport/index.vue
index 93eb7d9..47691de 100644
--- a/src/views/procurementManagement/procurementReport/index.vue
+++ b/src/views/procurementManagement/procurementReport/index.vue
@@ -138,13 +138,13 @@
       return val ? `楼${parseFloat(val).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : '楼0.00'
     }
   },
-  {
-    label: '閫�娆惧偍閲�',
-    prop: 'purchaseAmount',
-    formatData: (val) => {
-      return val ? `楼${parseFloat(val).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : '楼0.00'
-    }
-  },
+  // {
+  //   label: '閫�娆惧偍閲�',
+  //   prop: 'purchaseAmount',
+  //   formatData: (val) => {
+  //     return val ? `楼${parseFloat(val).toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}` : '楼0.00'
+  //   }
+  // },
   {
     label: '閲囪喘娆℃暟',
     prop: 'purchaseTimes',
diff --git a/src/views/productionManagement/workOrderManagement/index.vue b/src/views/productionManagement/workOrderManagement/index.vue
index 6def04c..f2f7118 100644
--- a/src/views/productionManagement/workOrderManagement/index.vue
+++ b/src/views/productionManagement/workOrderManagement/index.vue
@@ -3,17 +3,26 @@
     <div class="search_form">
       <div class="search-row">
         <div class="search-item">
-          <span class="search_title">宸ュ崟缂栧彿锛�</span>
-          <el-input v-model="searchForm.workOrderNo"
+          <span class="search_title">鍏ュ簱鏃ユ湡锛�</span>
+          <el-date-picker v-model="searchForm.timeStr"
+                          type="date"
+                          placeholder="璇烽�夋嫨鏃ユ湡"
+                          value-format="YYYY-MM-DD"
+                          format="YYYY-MM-DD"
+                          clearable
+                          @change="handleQuery"/>
+        </div>
+        <div class="search-item">
+          <span class="search_title">浜у搧澶х被锛�</span>
+          <el-input v-model="searchForm.productName"
                     style="width: 240px"
                     placeholder="璇疯緭鍏�"
-                    @change="handleQuery"
-                    clearable
-                    prefix-icon="Search" />
+                    clearable/>
         </div>
         <div class="search-item">
           <el-button type="primary"
                      @click="handleQuery">鎼滅储</el-button>
+          <el-button type="primary" @click="openAddDialog" style="margin-left: 10px;">鏂板</el-button>
         </div>
       </div>
     </div>
@@ -23,13 +32,7 @@
                 :tableData="tableData"
                 :page="page"
                 :tableLoading="tableLoading"
-                @pagination="pagination">
-        <template #completionStatus="{ row }">
-          <el-progress :percentage="toProgressPercentage(row?.completionStatus)"
-                       :color="progressColor(toProgressPercentage(row?.completionStatus))"
-                       :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''" />
-        </template>
-      </PIMTable>
+                @pagination="pagination" />
     </div>
     
     <!-- 娴佽浆鍗″脊绐� -->
@@ -165,6 +168,67 @@
     </el-dialog>
     
     <FilesDia ref="workOrderFilesRef" />
+    
+    <!-- 鏂板宸ュ崟寮圭獥 -->
+    <el-dialog v-model="addDialogVisible"
+               title="鏂板宸ュ崟"
+               width="500px"
+               @close="closeAddDialog">
+      <el-form ref="addFormRef"
+               :model="addForm"
+               :rules="addFormRules"
+               label-width="120px"
+               label-position="top">
+        <el-form-item label="浜у搧鍚嶇О锛�"
+                      prop="productId">
+          <el-tree-select v-model="addForm.productId"
+                          placeholder="璇烽�夋嫨浜у搧"
+                          clearable
+                          check-strictly
+                          :data="productOptions"
+                          :render-after-expand="false"
+                          style="width: 100%"
+                          @change="handleProductChange" />
+        </el-form-item>
+        <el-form-item label="瑙勬牸鍨嬪彿锛�"
+                      prop="productModelId">
+          <el-select v-model="addForm.productModelId"
+                     placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
+                     clearable
+                     style="width: 100%"
+                     @change="handleModelChange"
+                     filterable>
+            <el-option v-for="item in modelOptions"
+                       :key="item.id"
+                       :label="item.model"
+                       :value="item.id" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鍗曚綅锛�"
+                      prop="unit">
+          <el-input v-model="addForm.unit"
+                    placeholder="鍗曚綅"
+                    disabled
+                    style="width: 100%" />
+        </el-form-item>
+        <el-form-item label="鏁伴噺锛�"
+                      prop="quantity">
+          <el-input-number v-model="addForm.quantity"
+                           :min="1"
+                           :step="1"
+                           step-strictly
+                           style="width: 100%"
+                           placeholder="璇疯緭鍏ユ暟閲�" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button type="primary"
+                     @click="handleAddSubmit">纭畾</el-button>
+          <el-button @click="closeAddDialog">鍙栨秷</el-button>
+        </span>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -178,34 +242,35 @@
     downProductWorkOrder,
   } from "@/api/productionManagement/workOrder.js";
   import { getUserProfile, userListNoPageByTenantId } from "@/api/system/user.js";
+  import { createStockInventory } from "@/api/inventoryManagement/stockInventory.js";
+  import { getStockInRecordListPage } from "@/api/inventoryManagement/stockInRecord.js";
+  import { productTreeList, modelList } from "@/api/basicData/product.js";
+  import { findAllQualifiedStockInRecordTypeOptions } from "@/api/basicData/enum.js";
   import QRCode from "qrcode";
   import { getCurrentInstance, reactive, toRefs } from "vue";
   import FilesDia from "./components/filesDia.vue";
   const { proxy } = getCurrentInstance();
 
+  // 鏉ユ簮绫诲瀷閫夐」
+  const stockRecordTypeOptions = ref([]);
+
   const tableColumn = ref([
     {
-      label: "宸ュ崟绫诲瀷",
-      prop: "workOrderType",
-      width: "80",
+      label: "鍏ュ簱鎵规",
+      prop: "inboundBatches",
+      width: "280",
     },
     {
-      label: "宸ュ崟缂栧彿",
-      prop: "workOrderNo",
-      width: "140",
+      label: "鍏ュ簱鏃堕棿",
+      prop: "createTime",
+      width: "160",
     },
     {
-      label: "鐢熶骇璁㈠崟鍙�",
-      prop: "productOrderNpsNo",
-      width: "140",
-    },
-    {
-      label: "浜у搧鍚嶇О",
+      label: "浜у搧澶х被",
       prop: "productName",
-      width: "140",
     },
     {
-      label: "瑙勬牸",
+      label: "瑙勬牸鍨嬪彿",
       prop: "model",
     },
     {
@@ -213,73 +278,19 @@
       prop: "unit",
     },
     {
-      label: "宸ュ簭鍚嶇О",
-      prop: "processName",
+      label: "鍏ュ簱鏁伴噺",
+      prop: "stockInNum",
     },
     {
-      label: "闇�姹傛暟閲�",
-      prop: "planQuantity",
-      width: "140",
+      label: "鍏ュ簱浜�",
+      prop: "createBy",
     },
     {
-      label: "瀹屾垚鏁伴噺",
-      prop: "completeQuantity",
-      width: "140",
-    },
-    {
-      label: "瀹屾垚杩涘害",
-      prop: "completionStatus",
-      dataType: "slot",
-      slot: "completionStatus",
-      width: "140",
-    },
-    {
-      label: "璁″垝寮�濮嬫椂闂�",
-      prop: "planStartTime",
-      width: "140",
-    },
-    {
-      label: "璁″垝缁撴潫鏃堕棿",
-      prop: "planEndTime",
-      width: "140",
-    },
-    {
-      label: "瀹為檯寮�濮嬫椂闂�",
-      prop: "actualStartTime",
-      width: "140",
-    },
-    {
-      label: "瀹為檯缁撴潫鏃堕棿",
-      prop: "actualEndTime",
-      width: "140",
-    },
-    {
-      label: "鎿嶄綔",
-      width: "200",
-      align: "center",
-      dataType: "action",
-      fixed: "right",
-      operation: [
-        {
-          name: "娴佽浆鍗�",
-          clickFun: row => {
-            downloadAndPrintWorkOrder(row);
-          },
-        },
-        {
-          name: "闄勪欢",
-          clickFun: row => {
-            openWorkOrderFiles(row);
-          },
-        },
-        {
-          name: "鎶ュ伐",
-          clickFun: row => {
-            showReportDialog(row);
-          },
-          disabled: row => row.planQuantity <= 0,
-        },
-      ],
+      label: "鏉ユ簮",
+      prop: "recordType",
+      formatData: (val) => {
+        return stockRecordTypeOptions.value.find(item => item.value === val)?.label || val;
+      }
     },
   ]);
   
@@ -304,6 +315,27 @@
     userId: "",
     productMainId: null,
   });
+
+  // 鏂板宸ュ崟鐩稿叧
+  const addDialogVisible = ref(false);
+  const addFormRef = ref(null);
+  const productOptions = ref([]);
+  const modelOptions = ref([]);
+  const addForm = reactive({
+    productId: null,
+    productModelId: null,
+    productName: "",
+    productModelName: "",
+    unit: "",
+    quantity: 1,
+  });
+
+  // 鏂板琛ㄥ崟鏍¢獙瑙勫垯
+  const addFormRules = {
+    productId: [{ required: true, message: "璇烽�夋嫨浜у搧", trigger: "change" }],
+    productModelId: [{ required: true, message: "璇烽�夋嫨瑙勬牸鍨嬪彿", trigger: "change" }],
+    quantity: [{ required: true, message: "璇疯緭鍏ユ暟閲�", trigger: "blur" }],
+  };
 
   // 鏈鐢熶骇鏁伴噺楠岃瘉瑙勫垯
   const validateQuantity = (rule, value, callback) => {
@@ -404,7 +436,8 @@
 
   const data = reactive({
     searchForm: {
-      workOrderNo: "",
+      timeStr: "",
+      productName: "",
     },
   });
   const { searchForm } = toRefs(data);
@@ -438,8 +471,12 @@
   
   const getList = () => {
     tableLoading.value = true;
-    const params = { ...searchForm.value, ...page };
-    productWorkOrderPage(params)
+    const params = { ...page };
+    params.timeStr = searchForm.value.timeStr;
+    params.productName = searchForm.value.productName;
+    params.recordType = 2; // 榛樿鏌ヨ recordType 涓� 2锛堢敓浜ф姤宸�-鍚堟牸鍏ュ簱锛夌殑鏁版嵁
+    params.type = '0'; // 鍚堟牸鍏ュ簱绫诲瀷
+    getStockInRecordListPage(params)
       .then(res => {
         tableLoading.value = false;
         tableData.value = res.data.records;
@@ -634,6 +671,127 @@
     reportForm.userName = user ? user.nickName : "";
   };
 
+  // 鎵撳紑鏂板寮圭獥
+  const openAddDialog = () => {
+    // 閲嶇疆琛ㄥ崟
+    addForm.productId = null;
+    addForm.productModelId = null;
+    addForm.productName = "";
+    addForm.productModelName = "";
+    addForm.unit = "";
+    addForm.quantity = 1;
+    modelOptions.value = [];
+    // 鍔犺浇浜у搧鏍�
+    getProductOptions();
+    addDialogVisible.value = true;
+  };
+
+  // 鍏抽棴鏂板寮圭獥
+  const closeAddDialog = () => {
+    addFormRef.value?.resetFields();
+    addDialogVisible.value = false;
+  };
+
+  // 鑾峰彇浜у搧鏍�
+  const getProductOptions = () => {
+    productTreeList().then((res) => {
+      productOptions.value = convertIdToValue(res);
+    });
+  };
+
+  // 杞崲浜у搧鏍戞暟鎹�
+  function convertIdToValue(data) {
+    return data.map((item) => {
+      const { id, children, ...rest } = item;
+      const newItem = {
+        ...rest,
+        value: id,
+      };
+      if (children && children.length > 0) {
+        newItem.children = convertIdToValue(children);
+      }
+      return newItem;
+    });
+  }
+
+  // 鏍规嵁ID鏌ユ壘浜у搧鍚嶇О
+  function findNodeById(nodes, productId) {
+    for (let i = 0; i < nodes.length; i++) {
+      if (nodes[i].value === productId) {
+        return nodes[i].label;
+      }
+      if (nodes[i].children && nodes[i].children.length > 0) {
+        const foundNode = findNodeById(nodes[i].children, productId);
+        if (foundNode) {
+          return foundNode;
+        }
+      }
+    }
+    return null;
+  }
+
+  // 浜у搧閫夋嫨鍙樺寲
+  const handleProductChange = (value) => {
+    addForm.productModelId = null;
+    addForm.unit = "";
+    addForm.productModelName = "";
+    if (value) {
+      addForm.productName = findNodeById(productOptions.value, value);
+      // 鍔犺浇瑙勬牸鍨嬪彿
+      modelList({ id: value }).then((res) => {
+        modelOptions.value = res;
+      });
+    } else {
+      modelOptions.value = [];
+    }
+  };
+
+  // 瑙勬牸鍨嬪彿閫夋嫨鍙樺寲
+  const handleModelChange = (value) => {
+    if (value) {
+      const model = modelOptions.value.find((item) => item.id === value);
+      if (model) {
+        addForm.unit = model.unit;
+        addForm.productModelName = model.model;
+      }
+    } else {
+      addForm.unit = "";
+      addForm.productModelName = "";
+    }
+  };
+
+  // 鎻愪氦鏂板
+  const handleAddSubmit = () => {
+    addFormRef.value?.validate((valid) => {
+      if (valid) {
+        const params = {
+          productId: addForm.productId,
+          productModelId: addForm.productModelId,
+          productName: addForm.productName,
+          productModelName: addForm.productModelName,
+          unit: addForm.unit,
+          qualitity: addForm.quantity,
+          type: "qualified",
+          warnNum: 0,
+          recordType: 2,
+        };
+        createStockInventory(params).then((res) => {
+          proxy.$modal.msgSuccess("鏂板鎴愬姛");
+          closeAddDialog();
+          getList();
+        });
+      }
+    });
+  };
+
+  // 鑾峰彇鏉ユ簮绫诲瀷閫夐」
+  const fetchStockRecordTypeOptions = () => {
+    findAllQualifiedStockInRecordTypeOptions()
+      .then(res => {
+        stockRecordTypeOptions.value = res.data;
+      });
+  };
+
   onMounted(() => {
     getList();
     // 鑾峰彇鐢ㄦ埛鍒楄〃
@@ -642,6 +800,8 @@
         userOptions.value = res.data;
       }
     });
+    // 鑾峰彇鏉ユ簮绫诲瀷閫夐」
+    fetchStockRecordTypeOptions();
   });
 </script>
 
diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 5f4c975..d2f3778 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -79,7 +79,7 @@
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
-            <el-form-item label="妫�楠屽憳锛�" prop="checkName">
+            <el-form-item label="閫佹鍛橈細" prop="checkName">
 							<el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
 								<el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
 													 :value="item.nickName"/>
diff --git a/src/views/qualityManagement/finalInspection/index.vue b/src/views/qualityManagement/finalInspection/index.vue
index eaed2e9..098bc25 100644
--- a/src/views/qualityManagement/finalInspection/index.vue
+++ b/src/views/qualityManagement/finalInspection/index.vue
@@ -41,10 +41,10 @@
     <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
     <FormDia ref="formDia" @close="handleQuery"></FormDia>
     <files-dia ref="filesDia" @close="handleQuery"></files-dia>
-    <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
+    <el-dialog v-model="dialogFormVisible" title="缂栬緫閫佹鍛�" width="30%"
                @close="closeDia">
       <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
-        <el-form-item label="妫�楠屽憳锛�" prop="checkName">
+        <el-form-item label="閫佹鍛橈細" prop="checkName">
           <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
             <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
                        :value="item.nickName"/>
@@ -107,7 +107,7 @@
     width: 120
   },
   {
-    label: "妫�楠屽憳",
+    label: "閫佹鍛�",
     prop: "checkName",
   },
   {
@@ -173,7 +173,7 @@
         disabled: (row) => {
           // 宸叉彁浜ゅ垯绂佺敤
           if (row.inspectState == 1) return true;
-          // 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳界紪杈�
+          // 濡傛灉閫佹鍛樻湁鍊硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳界紪杈�
           if (row.checkName) {
             return row.checkName !== userStore.nickName;
           }
@@ -196,7 +196,7 @@
         disabled: (row) => {
           // 宸叉彁浜ゅ垯绂佺敤
           if (row.inspectState == 1) return true;
-          // 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
+          // 濡傛灉閫佹鍛樻湁鍊硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
           if (row.checkName) {
             return row.checkName !== userStore.nickName;
           }
@@ -204,13 +204,13 @@
         }
       },
       {
-        name: "鍒嗛厤妫�楠屽憳",
+        name: "鍒嗛厤閫佹鍛�",
         type: "text",
         clickFun: (row) => {
           if (!row.checkName) {
             open(row)
           } else {
-            proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
+            proxy.$modal.msgError("閫佹鍛樺凡瀛樺湪");
           }
         },
         disabled: (row) => {
diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue
index c1185d2..1fac1c7 100644
--- a/src/views/qualityManagement/processInspection/components/formDia.vue
+++ b/src/views/qualityManagement/processInspection/components/formDia.vue
@@ -88,7 +88,7 @@
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
-            <el-form-item label="妫�楠屽憳锛�" prop="checkName">
+            <el-form-item label="閫佹鍛橈細" prop="checkName">
 							<el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
 								<el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
 													 :value="item.nickName"/>
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index cbeab71..d146cea 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -40,10 +40,10 @@
     <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
     <FormDia ref="formDia" @close="handleQuery"></FormDia>
     <files-dia ref="filesDia" @close="handleQuery"></files-dia>
-		<el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
+		<el-dialog v-model="dialogFormVisible" title="缂栬緫閫佹鍛�" width="30%"
 							 @close="closeDia">
 			<el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
-				<el-form-item label="妫�楠屽憳锛�" prop="checkName">
+				<el-form-item label="閫佹鍛橈細" prop="checkName">
 					<el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
 						<el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
 											 :value="item.nickName"/>
@@ -106,7 +106,7 @@
     width: 230
   },
   {
-    label: "妫�楠屽憳",
+    label: "閫佹鍛�",
     prop: "checkName",
   },
   {
@@ -172,7 +172,7 @@
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
 					if (row.inspectState == 1) return true;
-					// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳界紪杈�
+					// 濡傛灉閫佹鍛樻湁鍊硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳界紪杈�
 					if (row.checkName) {
 						return row.checkName !== userStore.nickName;
 					}
@@ -195,7 +195,7 @@
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
 					if (row.inspectState == 1) return true;
-					// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
+					// 濡傛灉閫佹鍛樻湁鍊硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
 					if (row.checkName) {
 						return row.checkName !== userStore.nickName;
 					}
@@ -203,13 +203,13 @@
 				}
 			},
 			{
-				name: "鍒嗛厤妫�楠屽憳",
+				name: "鍒嗛厤閫佹鍛�",
 				type: "text",
 				clickFun: (row) => {
 					if (!row.checkName) {
 						open(row)
 					} else {
-						proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
+						proxy.$modal.msgError("閫佹鍛樺凡瀛樺湪");
 					}
 				},
 				disabled: (row) => {
diff --git a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
index 7e373bf..e2c86dd 100644
--- a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
@@ -99,7 +99,7 @@
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
-            <el-form-item label="妫�楠屽憳锛�" prop="checkName">
+            <el-form-item label="閫佹鍛橈細" prop="checkName">
               <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable style="width: 100%">
                 <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/>
               </el-select>
@@ -219,7 +219,7 @@
 const currentProductId = ref(0);
 const testStandardOptions = ref([]); // 鎸囨爣閫夋嫨涓嬫媺妗嗘暟鎹�
 const modelOptions = ref([]);
-const userList = ref([]); // 妫�楠屽憳涓嬫媺鍒楄〃
+const userList = ref([]); // 閫佹鍛樹笅鎷夊垪琛�
 
 // 缂栬緫鏃讹細productMainId 鎴� purchaseLedgerId 浠讳竴鏈夊�煎垯渚涘簲鍟嗐�佹暟閲忕疆鐏�
 const supplierQuantityDisabled = computed(() => {
@@ -238,7 +238,7 @@
     const userRes = await userListNoPage();
     userList.value = userRes.data || [];
   } catch (e) {
-    console.error("鍔犺浇妫�楠屽憳鍒楄〃澶辫触", e);
+    console.error("鍔犺浇閫佹鍛樺垪琛ㄥけ璐�", e);
     userList.value = [];
   }
   // 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡鈥滈棯涓�涓嬧�濓級
diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue
index 26504b0..c7d0b4c 100644
--- a/src/views/qualityManagement/rawMaterialInspection/index.vue
+++ b/src/views/qualityManagement/rawMaterialInspection/index.vue
@@ -41,10 +41,10 @@
     <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
     <FormDia ref="formDia" @close="handleQuery"></FormDia>
     <files-dia ref="filesDia" @close="handleQuery"></files-dia>
-    <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%"
+    <el-dialog v-model="dialogFormVisible" title="缂栬緫閫佹鍛�" width="30%"
                @close="closeDia">
       <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
-        <el-form-item label="妫�楠屽憳锛�" prop="checkName">
+        <el-form-item label="閫佹鍛橈細" prop="checkName">
           <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable>
             <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
                        :value="item.nickName"/>
@@ -108,7 +108,7 @@
     width: 230
   },
   {
-    label: "妫�楠屽憳",
+    label: "閫佹鍛�",
     prop: "checkName",
   },
   {
@@ -174,10 +174,10 @@
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
 					if (row.inspectState == 1) return true;
-					// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳界紪杈�
-					if (row.checkName) {
-						return row.checkName !== userStore.nickName;
-					}
+					// 濡傛灉閫佹鍛樻湁鍊硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳界紪杈�
+				if (row.checkName) {
+					return row.checkName !== userStore.nickName;
+				}
 					return false;
 				}
       },
@@ -197,21 +197,21 @@
 				disabled: (row) => {
 					// 宸叉彁浜ゅ垯绂佺敤
 					if (row.inspectState == 1) return true;
-					// 濡傛灉妫�楠屽憳鏈夊�硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
-					if (row.checkName) {
-						return row.checkName !== userStore.nickName;
-					}
+					// 濡傛灉閫佹鍛樻湁鍊硷紝鍙湁褰撳墠鐧诲綍鐢ㄦ埛鑳芥彁浜�
+				if (row.checkName) {
+					return row.checkName !== userStore.nickName;
+				}
 					return false;
 				}
       },
       {
-        name: "鍒嗛厤妫�楠屽憳",
+        name: "鍒嗛厤閫佹鍛�",
         type: "text",
         clickFun: (row) => {
           if (!row.checkName) {
             open(row)
           } else {
-            proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�");
+            proxy.$modal.msgError("閫佹鍛樺凡瀛樺湪");
           }
         },
 				disabled: (row) => {
diff --git a/src/views/salesManagement/deliveryLedger/index.vue b/src/views/salesManagement/deliveryLedger/index.vue
index 0eb60cc..23fe97a 100644
--- a/src/views/salesManagement/deliveryLedger/index.vue
+++ b/src/views/salesManagement/deliveryLedger/index.vue
@@ -49,11 +49,11 @@
         </el-table-column>
         <el-table-column fixed="right" label="鎿嶄綔" width="220" align="center">
           <template #default="scope">
-            <el-button 
+            <!-- <el-button 
               link 
               type="primary"
               :disabled="!isApproved(scope.row.status)"
-              @click="openForm('edit', scope.row)">琛ュ厖鍙戣揣淇℃伅</el-button>
+              @click="openForm('edit', scope.row)">琛ュ厖鍙戣揣淇℃伅</el-button> -->
             <el-button
               link
               type="primary"
diff --git a/src/views/salesManagement/receiptPaymentLedger/index.vue b/src/views/salesManagement/receiptPaymentLedger/index.vue
index 7029cfc..0e8e677 100644
--- a/src/views/salesManagement/receiptPaymentLedger/index.vue
+++ b/src/views/salesManagement/receiptPaymentLedger/index.vue
@@ -11,6 +11,15 @@
           clearable
           prefix-icon="Search"
         />
+        <span class="search_title" style="margin-left: 10px">璁㈠崟鍙凤細</span>
+        <el-input
+          v-model="orderNoSearch"
+          style="width: 240px"
+          placeholder="杈撳叆璁㈠崟鍙锋悳绱�"
+          @change="filterReceiptRecord"
+          clearable
+          prefix-icon="Search"
+        />
         <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
           >鎼滅储</el-button
         >
@@ -98,7 +107,7 @@
 						width="110"
           />
           <el-table-column
-            label="閿�鍞悎鍚屽彿"
+            label="璁㈠崟鍙�"
             prop="salesContractNo"
             show-overflow-tooltip
 						width="200"
@@ -160,6 +169,7 @@
     invoiceDate: "",
   },
 });
+const orderNoSearch = ref("");
 const customerId = ref("");
 const { searchForm } = toRefs(data);
 const originReceiptRecord = ref([]);
@@ -231,8 +241,8 @@
   console.log("param", param);
   customerInteractions(param).then((res) => {
     originReceiptRecord.value = res.data;
-    handlePagination({ page: 1, limit: recordPage.size });
-    recordTotal.value = res.data.length;
+    recordPage.current = 1;
+    filterReceiptRecord();
   });
 };
 
@@ -249,11 +259,21 @@
 const handlePagination = ({ page, limit }) => {
   recordPage.current = page;
   recordPage.size = limit;
+  filterReceiptRecord();
+};
 
-  const start = (page - 1) * limit;
-  const end = start + limit;
-
-  receiptRecord.value = originReceiptRecord.value.slice(start, end);
+// 鏍规嵁璁㈠崟鍙疯繃婊ゅ彸杈硅〃鏍兼暟鎹�
+const filterReceiptRecord = () => {
+  let filteredData = originReceiptRecord.value;
+  if (orderNoSearch.value) {
+    filteredData = originReceiptRecord.value.filter(item => 
+      item.salesContractNo && item.salesContractNo.includes(orderNoSearch.value)
+    );
+  }
+  recordTotal.value = filteredData.length;
+  const start = (recordPage.current - 1) * recordPage.size;
+  const end = start + recordPage.size;
+  receiptRecord.value = filteredData.slice(start, end);
 };
 
 onMounted(() => {
diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index fa191a0..9972416 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -595,6 +595,79 @@
 						</el-form-item>
 					</el-col>
 				</el-row>
+				<el-row :gutter="30">
+					<el-col :span="24">
+						<el-form-item label="鍙戣揣鏃ユ湡锛�" prop="shippingDate">
+							<el-date-picker
+								style="width: 100%"
+								v-model="deliveryForm.shippingDate"
+								value-format="YYYY-MM-DD"
+								format="YYYY-MM-DD"
+								type="date"
+								placeholder="璇烽�夋嫨鍙戣揣鏃ユ湡"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row :gutter="30">
+					<el-col :span="24" v-if="deliveryForm.type === '璐ц溅'">
+						<el-form-item label="鍙戣揣杞︾墝鍙凤細" prop="shippingCarNumber">
+							<el-input
+								v-model="deliveryForm.shippingCarNumber"
+								placeholder="璇疯緭鍏ュ彂璐ц溅鐗屽彿"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :span="24" v-else>
+						<el-form-item label="蹇�掑叕鍙革細" prop="expressCompany">
+							<el-input
+								v-model="deliveryForm.expressCompany"
+								placeholder="璇疯緭鍏ュ揩閫掑叕鍙�"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row :gutter="30" v-if="deliveryForm.type === '蹇��'">
+					<el-col :span="24">
+						<el-form-item label="蹇�掑崟鍙凤細" prop="expressNumber">
+							<el-input
+								v-model="deliveryForm.expressNumber"
+								placeholder="璇疯緭鍏ュ揩閫掑崟鍙�"
+								clearable
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row :gutter="30">
+					<el-col :span="24">
+						<el-form-item label="鍙戣揣鍥剧墖锛�">
+							<el-upload 
+								v-model:file-list="deliveryFileList" 
+								:action="upload.url" 
+								multiple 
+								ref="deliveryFileUpload" 
+								auto-upload
+								:headers="upload.headers" 
+								:data="{ type: 9 }"
+								:on-success="handleDeliveryUploadSuccess" 
+								:on-remove="handleDeliveryRemove"
+								list-type="picture-card"
+								:limit="9"
+								accept="image/png,image/jpeg,image/jpg"
+							>
+								<el-icon class="avatar-uploader-icon"><Plus /></el-icon>
+								<template #tip>
+									<div class="el-upload__tip">
+										鏀寔 jpg銆乯peg銆乸ng 鏍煎紡锛屾渶澶氫笂浼� 9 寮狅紝鍗曞紶澶у皬涓嶈秴杩� 10MB
+									</div>
+								</template>
+							</el-upload>
+						</el-form-item>
+					</el-col>
+				</el-row>
 
         <!-- 瀹℃壒浜洪�夋嫨锛堜豢鍗忓悓瀹℃壒閲岀殑瀹℃壒浜鸿妭鐐归�夋嫨锛� -->
         <el-row>
@@ -798,17 +871,43 @@
 // 鍙戣揣鐩稿叧
 const deliveryFormVisible = ref(false);
 const currentDeliveryRow = ref(null);
+const deliveryFileList = ref([]);
 const deliveryFormData = reactive({
   deliveryForm: {
     type: "璐ц溅", // 璐ц溅, 蹇��
+    shippingDate: "",
+    shippingCarNumber: "",
+    expressCompany: "",
+    expressNumber: "",
   },
   deliveryRules: {
     type: [
       { required: true, message: "璇烽�夋嫨鍙戣揣绫诲瀷", trigger: "change" }
-    ]
+    ],
+    shippingDate: [{ required: true, message: "璇烽�夋嫨鍙戣揣鏃ユ湡", trigger: "change" }],
+    shippingCarNumber: [
+      { validator: (_, value, callback) => validateShippingCarNumber(value, callback), trigger: "blur" }
+    ],
+    expressCompany: [
+      { validator: (_, value, callback) => validateExpressCompany(value, callback), trigger: "blur" }
+    ],
   },
 });
 const { deliveryForm, deliveryRules } = toRefs(deliveryFormData);
+
+// 鍙戣揣绫诲瀷鏍¢獙锛氳揣杞︽椂瑕佹眰杞︾墝锛屽揩閫掓椂瑕佹眰蹇�掑叕鍙�
+const validateShippingCarNumber = (value, callback) => {
+  if (deliveryForm.value.type === "璐ц溅") {
+    if (!value) return callback(new Error("璇疯緭鍏ュ彂璐ц溅鐗屽彿"));
+  }
+  callback();
+};
+const validateExpressCompany = (value, callback) => {
+  if (deliveryForm.value.type === "蹇��") {
+    if (!value) return callback(new Error("璇疯緭鍏ュ揩閫掑叕鍙�"));
+  }
+  callback();
+};
 
 // 鍙戣揣瀹℃壒浜鸿妭鐐癸紙浠垮崗鍚屽鎵� infoFormDia.vue锛�
 const approverNodes = ref([{ id: 1, userId: null }]);
@@ -2114,11 +2213,31 @@
 	currentDeliveryRow.value = row;
   deliveryForm.value = {
     type: "璐ц溅",
+    shippingDate: getCurrentDate(),
+    shippingCarNumber: "",
+    expressCompany: "",
+    expressNumber: "",
   };
+  deliveryFileList.value = [];
   // 閲嶇疆瀹℃壒浜鸿妭鐐癸紙榛樿涓�涓┖鑺傜偣锛�
   approverNodes.value = [{ id: 1, userId: null }];
   nextApproverId = 2;
 	deliveryFormVisible.value = true;
+};
+
+// 鍙戣揣鍥剧墖涓婁紶鎴愬姛鍥炶皟
+const handleDeliveryUploadSuccess = (res, file, uploadFiles) => {
+	if (res.code === 200) {
+		file.tempId = res.data.tempId;
+		proxy.$modal.msgSuccess("涓婁紶鎴愬姛");
+	} else {
+		proxy.$modal.msgError(res.msg);
+	}
+};
+
+// 绉婚櫎鍙戣揣鍥剧墖
+const handleDeliveryRemove = (file) => {
+	// 鏂囦欢绉婚櫎鏃惰嚜鍔ㄤ粠 fileList 涓垹闄わ紝鏃犻渶棰濆澶勭悊
 };
 
 // 鎻愪氦鍙戣揣琛ㄥ崟
@@ -2135,10 +2254,22 @@
       // 淇濆瓨褰撳墠灞曞紑鐨勮ID锛屼互渚垮彂璐у悗閲嶆柊鍔犺浇瀛愯〃鏍兼暟鎹�
       const currentExpandedKeys = [...expandedRowKeys.value];
       const salesLedgerId = currentDeliveryRow.value.salesLedgerId;
+      
+      // 鑾峰彇涓婁紶鍥剧墖鐨勪复鏃禝D
+      let tempFileIds = [];
+      if (deliveryFileList.value !== null && deliveryFileList.value.length > 0) {
+        tempFileIds = deliveryFileList.value.map((item) => item.tempId);
+      }
+      
       addShippingInfo({
         salesLedgerId: salesLedgerId,
         salesLedgerProductId: currentDeliveryRow.value.id,
         type: deliveryForm.value.type,
+        shippingDate: deliveryForm.value.shippingDate,
+        shippingCarNumber: deliveryForm.value.type === "璐ц溅" ? deliveryForm.value.shippingCarNumber : "",
+        expressCompany: deliveryForm.value.type === "蹇��" ? deliveryForm.value.expressCompany : "",
+        expressNumber: deliveryForm.value.type === "蹇��" ? deliveryForm.value.expressNumber : "",
+        tempFileIds: tempFileIds,
 				approveUserIds,
       })
         .then(() => {
@@ -2171,6 +2302,7 @@
 // 鍏抽棴鍙戣揣寮规
 const closeDeliveryDia = () => {
   proxy.resetForm("deliveryFormRef");
+  deliveryFileList.value = [];
   deliveryFormVisible.value = false;
   currentDeliveryRow.value = null;
 };

--
Gitblit v1.9.3