From c586e23d7f75fbfbff0a3114956c721c8b6ebb43 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 11 七月 2025 09:31:42 +0800
Subject: [PATCH] 1.库存管理、销售出库-前端分页修改 2.销售出库,必填优化

---
 src/views/warehouseManagement/index.vue |  147 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 99 insertions(+), 48 deletions(-)

diff --git a/src/views/warehouseManagement/index.vue b/src/views/warehouseManagement/index.vue
index 706cb1d..159f2ea 100644
--- a/src/views/warehouseManagement/index.vue
+++ b/src/views/warehouseManagement/index.vue
@@ -1,18 +1,10 @@
 <template>
   <div class="app-container">
     <el-form :inline="true" :model="queryParams" class="search-form">
-      <el-form-item label="渚涘簲鍟嗗悕绉�">
+      <el-form-item label="鎼滅储">
         <el-input
-            v-model="queryParams.supplierName"
-            placeholder="璇疯緭鍏�"
-            clearable
-            :style="{ width: '100%' }"
-        />
-      </el-form-item>
-      <el-form-item label="鐓ょ">
-        <el-input
-            v-model="queryParams.coal"
-            placeholder="璇疯緭鍏�"
+            v-model="queryParams.searchAll"
+            placeholder="璇疯緭鍏ュ叧閿瓧"
             clearable
             :style="{ width: '100%' }"
         />
@@ -39,11 +31,11 @@
       <!-- 鎿嶄綔鎸夐挳鍖� -->
       <el-space>
 <!--        <el-button type="danger" :icon="Delete">鍒犻櫎</el-button>-->
-        <el-button type="info" plain :icon="Download">瀵煎嚭</el-button>
+        <!-- <el-button type="info" plain :icon="Download">瀵煎嚭</el-button>  -->
         <el-button type="success" plain :icon="Refresh" v-if="activeTab=== 'officialInventory'" @click="mergeRows('merge')">鍚堝苟</el-button>
       </el-space>
       <div>
-        <el-table :data="tableData" border @selection-change="selectionChange" style="width: 100%" show-summary :summary-method="summarizeChildrenTable">
+        <el-table :data="tableData" border @selection-change="selectionChange" style="width: 100%;height: calc(100vh - 30em)" show-summary :summary-method="summarizeChildrenTable">
           <el-table-column type="selection" width="55" align="center" />
           <el-table-column label="搴忓彿" type="index" width="60" align="center" />
           <el-table-column prop="supplierName" label="渚涜揣鍟嗗悕绉�" width="180" sortable/>
@@ -54,25 +46,26 @@
           <el-table-column prop="totalPriceIncludingTax" label="鎬讳环(鍚◣)" width="130" />
           <el-table-column prop="priceExcludingTax" label="鍗曚环(涓嶅惈绋�)" width="130" />
           <el-table-column prop="totalPriceExcludingTax" label="鎬讳环(涓嶅惈绋�)" width="130" />
-          <el-table-column prop="pendingReplenishment" label="寰呰ˉ搴�" width="130" />
+          <el-table-column prop="pendingReplenishment" label="寰呰ˉ搴�" width="130" v-if="activeTab=== 'officialInventory'"/>
           <el-table-column label="鐓よ川" align="center" v-if="activeTab=== 'officialInventory'" width="600">
             <el-table-column v-for="col in columnTitle" :key="col.prop" :prop="col.prop" :label="col.label" align="center" sortable min-width="200"/>
           </el-table-column>
-          <el-table-column prop="registrantId" label="鐧昏浜�" width="180"/>
+          <el-table-column prop="registrant" label="鐧昏浜�" width="180"/>
           <el-table-column prop="registrationDate" label="鐧昏鏃ユ湡" width="180"/>
-          <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center">
+          <el-table-column fixed="right" label="鎿嶄綔" min-width="100" align="center">
             <template #default="scope">
               <el-button link type="primary" size="small" @click="reviewDia(scope.row)" v-if="activeTab !== 'officialInventory'">瀹℃牳</el-button>
-              <el-button link type="primary" size="small" @click="mergeRows('edit', scope.row)" v-else>缂栬緫</el-button>
+              <el-button link type="primary" size="small" @click="mergeRows('edit', scope.row)" v-if="activeTab === 'officialInventory'">缂栬緫</el-button>
+              <el-button link type="primary" size="small" @click="mergeRows('view', scope.row)" v-if="activeTab === 'officialInventory'">璇︽儏</el-button>
             </template>
           </el-table-column>
         </el-table>
         <pagination
             v-if="total>0"
-            :page-num="pageNum"
-            :page-size="pageSize"
+            :page="pageNum"
+            :limit="pageSize"
             :total="total"
-            @pagination="handleQuery"
+            @pagination="handlePagination"
             :layout="'total, prev, pager, next, jumper'"
         />
       </div>
@@ -82,13 +75,17 @@
       <el-form :model="form" :rules="rules" ref="formRef" label-width="180px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="渚涜揣鍟嗗悕绉�" prop="supplierName">
-              <el-input v-model="form.supplierName" placeholder="璇疯緭鍏ヤ緵璐у晢鍚嶇О" maxlength="30" />
+            <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierId">
+              <el-select v-model="form.supplierId" placeholder="璇烽�夋嫨渚涘簲鍟�">
+                <el-option :label="item.label" v-for="item in supplyList" :key="item.value" :value="item.value"/>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="鐓ょ" prop="coal">
-              <el-input v-model="form.coal" placeholder="璇疯緭鍏ョ叅绉�" maxlength="30" />
+            <el-form-item label="鐓ょ" prop="coalId">
+              <el-select v-model="form.coalId" placeholder="璇烽�夋嫨鐓ょ">
+                <el-option :label="item.label" v-for="item in coalList" :key="item.value" :value="item.value"/>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -130,8 +127,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="鐓よ川鏂规" prop="qualityPlan">
-              <el-select v-model="form.qualityPlan" placeholder="璇烽�夋嫨" @change="coalPlanByIdList" clearable>
+            <el-form-item label="鐓よ川鏂规" prop="coalPlanId">
+              <el-select v-model="form.coalPlanId" placeholder="璇烽�夋嫨" @change="coalPlanByIdList" clearable>
                 <el-option
                     v-for="dict in qualityPlanOption"
                     :key="dict.id"
@@ -159,53 +156,71 @@
       </template>
     </el-dialog>
     <!-- 鍚堝苟鏁版嵁寮规 -->
-    <el-dialog title="鍚堝苟搴撳瓨" v-model="mergeVisible" width="800px">
+    <el-dialog :title="operationType.value === 'edit' ? '缂栬緫搴撳瓨' : '鍚堝苟搴撳瓨'" v-model="mergeVisible" width="800px">
       <el-form :model="mergeForm" :rules="mergeRules" ref="mergeRef" label-width="100px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="渚涜揣鍟嗗悕绉�" prop="supplierName">
-              <el-input v-model="mergeForm.supplierName" placeholder="璇疯緭鍏ヤ緵璐у晢鍚嶇О" maxlength="30" />
+            <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierId">
+              <el-select v-model="mergeForm.supplierId" placeholder="璇烽�夋嫨渚涘簲鍟�" :disabled="operationType === 'view'">
+                <el-option :label="item.label" v-for="item in supplyList" :key="item.value" :value="item.value"/>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="鐓ょ" prop="coal">
-              <el-input v-model="mergeForm.coal" placeholder="璇疯緭鍏ョ叅绉�" maxlength="30" />
+            <el-form-item label="鐓ょ" prop="coalId">
+              <el-select v-model="mergeForm.coalId" placeholder="璇烽�夋嫨鐓ょ" :disabled="operationType === 'view'">
+                <el-option :label="item.label" v-for="item in coalList" :key="item.value" :value="item.value"/>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="鍗曚綅" prop="unit">
-              <el-input v-model="mergeForm.unit" placeholder="璇疯緭鍏ュ崟浣�" maxlength="30" />
+              <el-input v-model="mergeForm.unit" placeholder="璇疯緭鍏ュ崟浣�" maxlength="30" :disabled="operationType === 'view'"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="搴撳瓨鏁伴噺" prop="inventoryQuantity">
-              <el-input v-model="mergeForm.inventoryQuantity" placeholder="璇疯緭鍏ュ簱瀛樻暟閲�" :max="inventoryQuantity" type="number"/>
+              <el-input v-model="mergeForm.inventoryQuantity" placeholder="璇疯緭鍏ュ簱瀛樻暟閲�" :max="inventoryQuantity" type="number" :disabled="operationType === 'view'"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="鍗曚环(鍚◣)" prop="priceIncludingTax">
-              <el-input v-model="mergeForm.priceIncludingTax" placeholder="璇疯緭鍏ュ崟浠�(鍚◣)" maxlength="30" />
+              <el-input v-model="mergeForm.priceIncludingTax" placeholder="璇疯緭鍏ュ崟浠�(鍚◣)" maxlength="30" :disabled="operationType === 'view'" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鎬讳环(鍚◣)" prop="totalPriceIncludingTax">
-              <el-input v-model="mergeForm.totalPriceIncludingTax" placeholder="璇疯緭鍏ユ�讳环(鍚◣)" maxlength="30" />
+              <el-input v-model="mergeForm.totalPriceIncludingTax" placeholder="璇疯緭鍏ユ�讳环(鍚◣)" maxlength="30" :disabled="operationType === 'view'" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
             <el-form-item label="鍗曚环(涓嶅惈绋�)" prop="priceExcludingTax">
-              <el-input v-model="mergeForm.priceExcludingTax" placeholder="璇疯緭鍏ュ崟浠�(涓嶅惈绋�)" maxlength="30" />
+              <el-input v-model="mergeForm.priceExcludingTax" placeholder="璇疯緭鍏ュ崟浠�(涓嶅惈绋�)" maxlength="30" :disabled="operationType === 'view'" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="鎬讳环(涓嶅惈绋�)" prop="totalPriceExcludingTax">
-              <el-input v-model="mergeForm.totalPriceExcludingTax" placeholder="璇疯緭鍏ユ�讳环(涓嶅惈绋�)" maxlength="30" />
+              <el-input v-model="mergeForm.totalPriceExcludingTax" placeholder="璇疯緭鍏ユ�讳环(涓嶅惈绋�)" maxlength="30" :disabled="operationType === 'view'" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="鐓よ川鏂规" prop="coalPlanId">
+              <el-select v-model="mergeForm.coalPlanId" placeholder="璇烽�夋嫨" @change="coalPlanByIdList" clearable :disabled="operationType === 'view'">
+                <el-option
+                    v-for="dict in qualityPlanOption"
+                    :key="dict.id"
+                    :label="dict.plan"
+                    :value="dict.id"
+                ></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
         </el-row>
@@ -213,7 +228,7 @@
         <el-row>
           <el-col :span="12" v-for="item in filteredList" :key="item.id">
             <el-form-item :label="item.fieldName">
-              <el-input v-model="mergeForm[item.fields]" />
+              <el-input v-model="mergeForm[item.fields]" :disabled="operationType === 'view'" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -239,6 +254,8 @@
   pendingInventoryList
 } from "@/api/warehouseManagement/index.js";
 import {editOfficial, merge} from "../../api/warehouseManagement/index.js";
+import {getSupplyList} from "@/api/procureMent/index.js";
+import {getCoalInfoList} from "@/api/production/index.js";
 
 const { proxy } = getCurrentInstance()
 
@@ -269,32 +286,32 @@
     totalPriceIncludingTax: '',
     priceExcludingTax: '',
     totalPriceExcludingTax: '',
-    qualityPlan: '',
+    coalPlanId: '',
     pId: '',
   },
   mergeForm: {
-    supplierName: '',
-    coal: '',
+    supplierId: '',
+    coalId: '',
     unit: '',
     inventoryQuantity: '',
     priceIncludingTax: '',
     totalPriceIncludingTax: '',
     priceExcludingTax: '',
     totalPriceExcludingTax: '',
-    qualityPlan: '',
+    coalPlanId: '',
     pId: '',
   },
   rules: {
     supplierName: [{ required: true, message: "璇疯緭鍏ヤ緵搴斿晢鍚嶇О", trigger: "blur" }],
     coal: [{ required: true, message: "璇疯緭鍏ョ叅绉�", trigger: "blur" }],
     unit: [{ required: true, message: "璇疯緭鍏ュ崟浣�", trigger: "blur" }],
-    qualityPlan: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+    coalPlanId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
   },
   mergeRules: {
     supplierName: [{ required: true, message: "璇疯緭鍏ヤ緵搴斿晢鍚嶇О", trigger: "blur" }],
     coal: [{ required: true, message: "璇疯緭鍏ョ叅绉�", trigger: "blur" }],
     unit: [{ required: true, message: "璇疯緭鍏ュ崟浣�", trigger: "blur" }],
-    qualityPlan: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+    coalPlanId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
   }
 })
 
@@ -309,10 +326,36 @@
 ]);
 // 鏌ヨ鍙傛暟
 const queryParams = reactive({
-  supplierName: "",
-  coal: "",
+  searchAll: "",
 })
 const columnTitle = ref([])
+const supplyList = ref([]);
+const coalList = ref([]);
+
+// 鑾峰彇渚涘簲鍟嗕笅鎷夊拰鐓ょ涓嬫媺
+const getDropdownData = async () => {
+  try {
+    const [supplyRes, coalRes] = await Promise.all([
+      getSupplyList(),
+      getCoalInfoList(),
+    ]);
+    let supplyData = supplyRes.data;
+    let coalData = coalRes.data;
+    supplyList.value = supplyData.map((item) => ({
+      value: item.id,
+      label: item.supplierName,
+    }));
+    coalList.value = coalData.map((item) => ({
+      value: item.id,
+      label: item.coal,
+    }));
+  } catch (error) {
+    ElMessage.error("鑾峰彇涓嬫媺鏁版嵁澶辫触锛岃绋嶅悗閲嶈瘯");
+  }
+};
+defineExpose({
+  getDropdownData,
+});
 onMounted(() => {
   handleTabClick({ props: { name: "pendingInbound" } });
 });
@@ -331,6 +374,12 @@
   pageSize.value = 10
   getList()
 }
+// 鍒嗛〉澶勭悊
+const handlePagination = (val) => {
+	pageNum.value = val.page;
+	pageSize.value = val.limit;
+	getList();
+};
 const getList = () => {
   tableLoading.value = true;
   // 璧嬪�肩叅璐ㄨ〃澶村睍绀哄瓧娈�
@@ -386,6 +435,7 @@
   form.value = {...row}
   form.value.pId = row.id
   inventoryQuantity.value = row.inventoryQuantity
+  getDropdownData()
   coalPlanListOptions()
 }
 // 鏌ヨ鐓よ川鏂规涓嬫媺妗�
@@ -417,10 +467,11 @@
 }
 // 鍚堝苟搴撳瓨鏁版嵁鏂规硶
 const mergeRows = (type,row) => {
-  coalFieldListOption();
+  getDropdownData()
+  coalPlanListOptions()
   mergeVisible.value = true;
   operationType.value = type;
-  if (type === 'edit') {
+  if (type !== 'merge') {
     mergeForm.value = {...row}
   } else {
     if (selectedRows.value.length < 2) {

--
Gitblit v1.9.3