From ef2b54316eded1d9bbf31872d88522402de4be3b Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 29 Mar 2026 23:16:56 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(mes):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E9=80=89=E6=8B=A9=E5=99=A8=E5=92=8C=E9=80=80?= =?UTF-8?q?=E8=B4=A7=E6=98=8E=E7=BB=86=E8=A1=A8=E5=8D=95=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整库存选择器为下拉选择组件,支持前端过滤,提升用户体验。更新退货明细表单,增加库存记录选择,优化表单布局,确保信息展示更为清晰。 --- src/api/mes/wm/materialStock/index.ts | 8 +++++++ .../mes/wm/batch/components/WmBatchSelect.vue | 22 ++++++++++++++++--- .../productsales/ProductSalesDetailForm.vue | 19 ++++++++++++---- .../wm/productsales/ProductSalesLineList.vue | 17 +++++++++++--- .../wm/returnvendor/ReturnVendorLineList.vue | 6 ++++- 5 files changed, 61 insertions(+), 11 deletions(-) diff --git a/src/api/mes/wm/materialStock/index.ts b/src/api/mes/wm/materialStock/index.ts index 9368f2de2..93bf45f93 100644 --- a/src/api/mes/wm/materialStock/index.ts +++ b/src/api/mes/wm/materialStock/index.ts @@ -45,5 +45,13 @@ export const WmMaterialStockApi = { // 导出库存台账 Excel exportMaterialStock: async (params: any) => { return await request.download({ url: '/mes/wm/material-stock/export-excel', params }) + }, + + // 获取库存精简列表(主要用于前端下拉,可按 itemId 过滤) + getMaterialStockSimpleList: async (itemId?: number) => { + return await request.get({ + url: '/mes/wm/material-stock/simple-list', + params: { itemId } + }) } } diff --git a/src/views/mes/wm/batch/components/WmBatchSelect.vue b/src/views/mes/wm/batch/components/WmBatchSelect.vue index be8aacaf4..301360781 100644 --- a/src/views/mes/wm/batch/components/WmBatchSelect.vue +++ b/src/views/mes/wm/batch/components/WmBatchSelect.vue @@ -29,6 +29,7 @@ defineOptions({ name: 'WmBatchSelect' }) const props = withDefaults( defineProps<{ modelValue?: number + itemId?: number disabled?: boolean clearable?: boolean placeholder?: string @@ -62,11 +63,22 @@ const handleFilter = (query: string) => { const keyword = query.toLowerCase() filteredList.value = allList.value.filter( (item) => - item.code?.toLowerCase().includes(keyword) || - item.itemCode?.toLowerCase().includes(keyword) + item.code?.toLowerCase().includes(keyword) || item.itemCode?.toLowerCase().includes(keyword) ) } +/** 监听 itemId 变化,前端过滤(如果是基于 itemId 的过滤) */ +watch( + () => props.itemId, + (val) => { + if (val) { + filteredList.value = allList.value.filter((item) => item.itemId === val) + } else { + filteredList.value = allList.value + } + } +) + /** 选中变化 */ const handleChange = (val: number | undefined) => { const item = allList.value.find((o) => o.id === val) @@ -76,6 +88,10 @@ const handleChange = (val: number | undefined) => { /** 加载批次列表 */ onMounted(async () => { allList.value = await BatchApi.getBatchSimpleList() - filteredList.value = allList.value + if (props.itemId) { + filteredList.value = allList.value.filter((item) => item.itemId === props.itemId) + } else { + filteredList.value = allList.value + } }) diff --git a/src/views/mes/wm/productsales/ProductSalesDetailForm.vue b/src/views/mes/wm/productsales/ProductSalesDetailForm.vue index 9294611c1..0a2079398 100644 --- a/src/views/mes/wm/productsales/ProductSalesDetailForm.vue +++ b/src/views/mes/wm/productsales/ProductSalesDetailForm.vue @@ -24,7 +24,11 @@ - + { + formData.value.batchCode = batch?.code +} + /** 提交表单 */ const submitForm = async () => { // 校验表单 @@ -146,7 +156,8 @@ const resetForm = () => { warehouseId: undefined, locationId: undefined, areaId: undefined, - batchId: undefined + batchId: undefined, + batchCode: undefined } formRef.value?.resetFields() } diff --git a/src/views/mes/wm/productsales/ProductSalesLineList.vue b/src/views/mes/wm/productsales/ProductSalesLineList.vue index 25be72ddb..1088ac8c1 100644 --- a/src/views/mes/wm/productsales/ProductSalesLineList.vue +++ b/src/views/mes/wm/productsales/ProductSalesLineList.vue @@ -90,7 +90,11 @@ - + @@ -140,7 +144,7 @@