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