From ced6b504a82f27839b4392ec7fdd76592516456e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 17 七月 2026 14:58:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro2.0' into dev_pro2.0
---
src/views/wls/warehouse/components/select.vue | 20 ++++--
src/views/mes/workbench/components/tabs/ReturnIssueLineFormModal.vue | 20 +++++-
src/views/wls/returnissue/modules/line-form.vue | 9 ++
src/views/wls/returnissue/data.ts | 58 ++++++++++++-------
src/views/wls/warehouse/components/area-select.vue | 24 +++++--
src/views/wls/warehouse/components/location-select.vue | 24 +++++--
src/api/mes/wm/returnissue/detail/index.ts | 2
src/views/wls/returnissue/modules/detail-form.vue | 9 ++
8 files changed, 114 insertions(+), 52 deletions(-)
diff --git a/src/api/mes/wm/returnissue/detail/index.ts b/src/api/mes/wm/returnissue/detail/index.ts
index 7c878bb..064d04a 100644
--- a/src/api/mes/wm/returnissue/detail/index.ts
+++ b/src/api/mes/wm/returnissue/detail/index.ts
@@ -8,6 +8,8 @@
lineId?: number; // 閫�鏂欏崟琛岀紪鍙�
materialStockId?: number; // 搴撳瓨璁板綍缂栧彿
itemId?: number; // 鐗╂枡缂栧彿
+ itemName?: string; // 鐗╂枡鍚嶇О
+ specification?: string; // 瑙勬牸鍨嬪彿
quantity?: number; // 鏁伴噺
batchId?: number; // 鎵规缂栧彿
batchCode?: string; // 鎵规鍙�
diff --git a/src/views/mes/workbench/components/tabs/ReturnIssueLineFormModal.vue b/src/views/mes/workbench/components/tabs/ReturnIssueLineFormModal.vue
index cf2ef03..06f2052 100644
--- a/src/views/mes/workbench/components/tabs/ReturnIssueLineFormModal.vue
+++ b/src/views/mes/workbench/components/tabs/ReturnIssueLineFormModal.vue
@@ -16,7 +16,6 @@
getReturnIssueLine,
updateReturnIssueLine,
} from '#/api/mes/wm/returnissue/line';
-import { MdItemSelect } from '#/views/mes/md/item/components';
import { WmMaterialStockSelect } from '#/views/wls/materialstock/components';
const emit = defineEmits(['success']);
@@ -40,6 +39,9 @@
batchCode: stock?.batchCode,
batchId: stock?.batchId,
itemId: stock?.itemId,
+ materialDisplayName: stock
+ ? [stock.itemName, stock.specification].filter(Boolean).join(' | ')
+ : undefined,
quantity: stock?.quantity,
quantityMax: stock?.quantity,
});
@@ -83,9 +85,14 @@
},
{
fieldName: 'itemId',
+ component: 'Input',
+ dependencies: { triggerFields: [''], show: () => false },
+ },
+ {
+ fieldName: 'materialDisplayName',
label: '鐗╂枡',
- component: markRaw(MdItemSelect),
- componentProps: { disabled: true },
+ component: 'Input',
+ componentProps: { disabled: true, placeholder: '閫夋嫨搴撳瓨鍚庤嚜鍔ㄥ甫鍑�' },
},
{
fieldName: 'batchCode',
@@ -145,7 +152,12 @@
modalApi.lock();
try {
formData.value = await getReturnIssueLine(data.id);
- await formApi.setValues(formData.value);
+ await formApi.setValues({
+ ...formData.value,
+ materialDisplayName: [formData.value.itemName, formData.value.specification]
+ .filter(Boolean)
+ .join(' | '),
+ });
} finally {
modalApi.unlock();
}
diff --git a/src/views/wls/returnissue/data.ts b/src/views/wls/returnissue/data.ts
index d25a934..d95b2c4 100644
--- a/src/views/wls/returnissue/data.ts
+++ b/src/views/wls/returnissue/data.ts
@@ -18,7 +18,6 @@
import { z } from '#/adapter/form';
import { generateAutoCode } from '#/api/mes/md/autocode/record';
-import { MdItemSelect } from '#/views/mes/md/item/components';
import { MdWorkstationSelect } from '#/views/mes/md/workstation/components';
import { ProWorkOrderSelect } from '#/views/mes/pro/workorder/components';
import { WmMaterialStockSelect } from '#/views/wls/materialstock/components';
@@ -330,6 +329,9 @@
batchCode: stock?.batchCode,
batchId: stock?.batchId,
itemId: stock?.itemId,
+ materialDisplayName: stock
+ ? [stock.itemName, stock.specification].filter(Boolean).join(' | ')
+ : undefined,
quantity: stock?.quantity,
quantityMax: stock?.quantity,
});
@@ -376,10 +378,19 @@
},
{
fieldName: 'itemId',
+ component: 'Input',
+ dependencies: {
+ triggerFields: [''],
+ show: () => false,
+ },
+ },
+ {
+ fieldName: 'materialDisplayName',
label: '鐗╂枡',
- component: markRaw(MdItemSelect),
+ component: 'Input',
componentProps: {
disabled: true,
+ placeholder: '閫夋嫨搴撳瓨鍚庤嚜鍔ㄥ甫鍑�',
},
},
{
@@ -460,28 +471,37 @@
},
{
fieldName: 'itemId',
+ component: 'Input',
+ dependencies: {
+ triggerFields: [''],
+ show: () => false,
+ },
+ },
+ {
+ fieldName: 'materialDisplayName',
label: '鐗╂枡',
- component: markRaw(MdItemSelect),
+ component: 'Input',
componentProps: {
disabled: true,
+ placeholder: '閫夋嫨搴撳瓨鍚庤嚜鍔ㄥ甫鍑�',
},
- rules: 'selectRequired',
},
{
fieldName: 'materialStockId',
label: '搴撳瓨璁板綍',
component: markRaw(WmMaterialStockSelect),
componentProps: {
- // 閫夋嫨搴撳瓨璁板綍鍚庯紝鑷姩鍥炲~浠撳簱/搴撳尯/搴撲綅/鎵规/鏁伴噺
+ // 閫夋嫨搴撳瓨璁板綍鍚庯紝鑷姩鍥炲~鐗╂枡/鎵规/鏁伴噺锛堜笉鍐嶅甫鍏ヤ粨搴撲俊鎭級
onChange: async (stock?: MesWmMaterialStockApi.MaterialStock) => {
await formApi?.setValues({
- areaId: stock?.areaId,
batchCode: stock?.batchCode,
batchId: stock?.batchId,
- locationId: stock?.locationId,
+ itemId: stock?.itemId,
+ materialDisplayName: stock
+ ? [stock.itemName, stock.specification].filter(Boolean).join(' | ')
+ : undefined,
quantity: stock?.quantity,
quantityMax: stock?.quantity,
- warehouseId: stock?.warehouseId,
});
},
virtualFilter: 'only',
@@ -519,38 +539,32 @@
},
{
fieldName: 'warehouseId',
- label: '鍏ュ簱浠撳簱',
+ label: '涓婃灦鐩爣浠撳簱',
component: markRaw(WmWarehouseSelect),
- componentProps: {
- disabled: true,
- },
+ // componentProps: {
+ // excludeCodes: ['WIP_VIRTUAL_WAREHOUSE'],
+ // },
},
{
fieldName: 'locationId',
- label: '搴撳尯',
+ label: '涓婃灦鐩爣搴撳尯',
component: markRaw(WmWarehouseLocationSelect),
- componentProps: {
- disabled: true,
- },
dependencies: {
triggerFields: ['warehouseId'],
componentProps: (values) => ({
- disabled: true,
+ disabled: !values.warehouseId,
warehouseId: values.warehouseId,
}),
},
},
{
fieldName: 'areaId',
- label: '搴撲綅',
+ label: '涓婃灦鐩爣搴撲綅',
component: markRaw(WmWarehouseAreaSelect),
- componentProps: {
- disabled: true,
- },
dependencies: {
triggerFields: ['locationId'],
componentProps: (values) => ({
- disabled: true,
+ disabled: !values.locationId,
locationId: values.locationId,
}),
},
diff --git a/src/views/wls/returnissue/modules/detail-form.vue b/src/views/wls/returnissue/modules/detail-form.vue
index 032c771..4b3c638 100644
--- a/src/views/wls/returnissue/modules/detail-form.vue
+++ b/src/views/wls/returnissue/modules/detail-form.vue
@@ -85,8 +85,13 @@
modalApi.lock();
try {
formData.value = await getReturnIssueDetail(data.detailId);
- // 璁剧疆鍒� values
- await formApi.setValues(formData.value);
+ // 璁剧疆鍒� values锛屽苟鏋勫缓鐗╂枡灞曠ず鍚�
+ await formApi.setValues({
+ ...formData.value,
+ materialDisplayName: [formData.value.itemName, formData.value.specification]
+ .filter(Boolean)
+ .join(' | '),
+ });
} finally {
modalApi.unlock();
}
diff --git a/src/views/wls/returnissue/modules/line-form.vue b/src/views/wls/returnissue/modules/line-form.vue
index 7cdc601..fc72468 100644
--- a/src/views/wls/returnissue/modules/line-form.vue
+++ b/src/views/wls/returnissue/modules/line-form.vue
@@ -79,8 +79,13 @@
modalApi.lock();
try {
formData.value = await getReturnIssueLine(data.id);
- // 璁剧疆鍒� values
- await formApi.setValues(formData.value);
+ // 璁剧疆鍒� values锛屽苟鏋勫缓鐗╂枡灞曠ず鍚�
+ await formApi.setValues({
+ ...formData.value,
+ materialDisplayName: [formData.value.itemName, formData.value.specification]
+ .filter(Boolean)
+ .join(' | '),
+ });
} finally {
modalApi.unlock();
}
diff --git a/src/views/wls/warehouse/components/area-select.vue b/src/views/wls/warehouse/components/area-select.vue
index b423ae7..b2b2aff 100644
--- a/src/views/wls/warehouse/components/area-select.vue
+++ b/src/views/wls/warehouse/components/area-select.vue
@@ -3,7 +3,7 @@
import { computed, ref, useAttrs, watch, watchEffect } from 'vue';
-import { Select, SelectOption, Tag, Tooltip } from 'ant-design-vue';
+import { Select, SelectOption, Tooltip } from 'ant-design-vue';
import { getWarehouseAreaSimpleList } from '#/api/mes/wm/warehouse/area';
@@ -73,11 +73,21 @@
},
);
-/** 搴撳尯鍙樻洿鎴栧垵濮嬪寲鏃堕噸鏂板姞杞藉簱浣嶅垪琛� */
+/** 搴撳尯鍙樻洿鏃舵竻绌哄凡閫夊簱浣嶅苟閲嶆柊鍔犺浇鍒楄〃 */
watchEffect(async () => {
+ if (!props.locationId) {
+ allList.value = [];
+ return;
+ }
allList.value = await getWarehouseAreaSimpleList(props.locationId);
- if (props.modelValue !== null) {
- selectedItem.value = allList.value.find((o) => o.id === props.modelValue);
+ // 搴撳尯鍙樻洿鏃舵竻绌哄凡閫夌殑搴撲綅
+ if (props.modelValue !== null && props.modelValue !== undefined) {
+ const stillExists = allList.value.find((o) => o.id === props.modelValue);
+ if (!stillExists) {
+ selectedItem.value = undefined;
+ emit('update:modelValue', undefined);
+ emit('change', undefined);
+ }
}
});
</script>
@@ -100,14 +110,12 @@
:disabled="disabled"
:filter-option="filterOption"
:placeholder="placeholder"
+ :popup-match-select-width="false"
show-search
@change="handleChange"
>
<SelectOption v-for="item in allList" :key="item.id" :value="item.id">
- <div class="flex items-center gap-2">
- <span>{{ item.name }}</span>
- <Tag v-if="item.code" color="blue">缂栧彿: {{ item.code }}</Tag>
- </div>
+ {{ item.name }}
</SelectOption>
</Select>
</Tooltip>
diff --git a/src/views/wls/warehouse/components/location-select.vue b/src/views/wls/warehouse/components/location-select.vue
index d732a9e..468f45c 100644
--- a/src/views/wls/warehouse/components/location-select.vue
+++ b/src/views/wls/warehouse/components/location-select.vue
@@ -3,7 +3,7 @@
import { computed, ref, useAttrs, watch, watchEffect } from 'vue';
-import { Select, SelectOption, Tag, Tooltip } from 'ant-design-vue';
+import { Select, SelectOption, Tooltip } from 'ant-design-vue';
import { getWarehouseLocationSimpleList } from '#/api/mes/wm/warehouse/location';
@@ -73,11 +73,21 @@
},
);
-/** 浠撳簱鍙樻洿鎴栧垵濮嬪寲鏃堕噸鏂板姞杞藉簱鍖哄垪琛� */
+/** 浠撳簱鍙樻洿鏃舵竻绌哄凡閫夊簱鍖哄苟閲嶆柊鍔犺浇鍒楄〃 */
watchEffect(async () => {
+ if (!props.warehouseId) {
+ allList.value = [];
+ return;
+ }
allList.value = await getWarehouseLocationSimpleList(props.warehouseId);
- if (props.modelValue !== null) {
- selectedItem.value = allList.value.find((o) => o.id === props.modelValue);
+ // 浠撳簱鍙樻洿鏃舵竻绌哄凡閫夌殑搴撳尯
+ if (props.modelValue !== null && props.modelValue !== undefined) {
+ const stillExists = allList.value.find((o) => o.id === props.modelValue);
+ if (!stillExists) {
+ selectedItem.value = undefined;
+ emit('update:modelValue', undefined);
+ emit('change', undefined);
+ }
}
});
</script>
@@ -99,14 +109,12 @@
:disabled="disabled"
:filter-option="filterOption"
:placeholder="placeholder"
+ :popup-match-select-width="false"
show-search
@change="handleChange"
>
<SelectOption v-for="item in allList" :key="item.id" :value="item.id">
- <div class="flex items-center gap-2">
- <span>{{ item.name }}</span>
- <Tag v-if="item.code" color="blue">缂栧彿: {{ item.code }}</Tag>
- </div>
+ {{ item.name }}
</SelectOption>
</Select>
</Tooltip>
diff --git a/src/views/wls/warehouse/components/select.vue b/src/views/wls/warehouse/components/select.vue
index 339f6b8..4a4ff78 100644
--- a/src/views/wls/warehouse/components/select.vue
+++ b/src/views/wls/warehouse/components/select.vue
@@ -3,7 +3,7 @@
import { computed, onMounted, ref, useAttrs, watch } from 'vue';
-import { Select, SelectOption, Tag, Tooltip } from 'ant-design-vue';
+import { Select, SelectOption, Tooltip } from 'ant-design-vue';
import { getWarehouseSimpleList } from '#/api/mes/wm/warehouse';
@@ -13,12 +13,14 @@
defineProps<{
allowClear?: boolean;
disabled?: boolean;
+ excludeCodes?: string[];
modelValue?: number;
placeholder?: string;
}>(),
{
allowClear: true,
disabled: false,
+ excludeCodes: undefined,
modelValue: undefined,
placeholder: '璇烽�夋嫨浠撳簱',
},
@@ -32,6 +34,14 @@
const attrs = useAttrs();
const allList = ref<MesWmWarehouseApi.Warehouse[]>([]);
const selectedItem = ref<MesWmWarehouseApi.Warehouse>();
+
+/** 鎸� excludeCodes 杩囨护鍚庣殑浠撳簱鍒楄〃 */
+const filteredList = computed(() => {
+ if (!props.excludeCodes?.length) {
+ return allList.value;
+ }
+ return allList.value.filter((w) => !props.excludeCodes!.includes(w.code ?? ''));
+});
const selectValue = computed({
get: () => props.modelValue,
@@ -96,14 +106,12 @@
:disabled="disabled"
:filter-option="filterOption"
:placeholder="placeholder"
+ :popup-match-select-width="false"
show-search
@change="handleChange"
>
- <SelectOption v-for="item in allList" :key="item.id" :value="item.id">
- <div class="flex items-center gap-2">
- <span>{{ item.name }}</span>
- <Tag v-if="item.code" color="blue">缂栧彿: {{ item.code }}</Tag>
- </div>
+ <SelectOption v-for="item in filteredList" :key="item.id" :value="item.id">
+ {{ item.name }}
</SelectOption>
</Select>
</Tooltip>
--
Gitblit v1.9.3