From 6797c356a987656940505759d1d9846692e85544 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 16 七月 2026 16:16:03 +0800
Subject: [PATCH] 银川 1.到货通知与采购入库流程联调
---
src/views/erp/purchase/order/data.ts | 2
src/views/mes/qc/template/data.ts | 5 +
src/views/wls/itemreceipt/modules/form.vue | 54 ++---------------
src/views/wls/arrivalnotice/index.vue | 25 ++++++-
src/views/wls/arrivalnotice/data.ts | 16 ++++-
src/views/wls/itemreceipt/data.ts | 19 ++++++
6 files changed, 63 insertions(+), 58 deletions(-)
diff --git a/src/views/erp/purchase/order/data.ts b/src/views/erp/purchase/order/data.ts
index 761cbad..98b77db 100644
--- a/src/views/erp/purchase/order/data.ts
+++ b/src/views/erp/purchase/order/data.ts
@@ -448,7 +448,7 @@
},
{
title: '鎿嶄綔',
- width: 260,
+ width: 340,
fixed: 'right',
slots: { default: 'actions' },
},
diff --git a/src/views/mes/qc/template/data.ts b/src/views/mes/qc/template/data.ts
index 6301c05..1f5add0 100644
--- a/src/views/mes/qc/template/data.ts
+++ b/src/views/mes/qc/template/data.ts
@@ -17,7 +17,7 @@
import { z } from '#/adapter/form';
import { generateAutoCode } from '#/api/mes/md/autocode/record';
-import { getItemList } from '#/api/mdm/item';
+import { getItemPage } from '#/api/mdm/item';
import { MdUnitMeasureSelect } from '#/views/mes/md/unitmeasure/components';
import { QcIndicatorSelect } from '#/views/mes/qc/indicator/components';
@@ -426,7 +426,8 @@
placeholder: '璇烽�夋嫨浜у搧鐗╂枡',
allowClear: true,
showSearch: true,
- api: getItemList,
+ api: getItemPage,
+ resultField: 'list',
labelField: 'name',
valueField: 'id',
optionRender: (option: any) => {
diff --git a/src/views/wls/arrivalnotice/data.ts b/src/views/wls/arrivalnotice/data.ts
index e275e2f..812b6dd 100644
--- a/src/views/wls/arrivalnotice/data.ts
+++ b/src/views/wls/arrivalnotice/data.ts
@@ -11,8 +11,8 @@
import { z } from '#/adapter/form';
import { generateAutoCode } from '#/api/mes/md/autocode/record';
+import { getItemPage } from '#/api/mdm/item';
import { getRangePickerDefaultProps } from '#/utils';
-import { MdItemSelect } from '#/views/mes/md/item/components';
import { MdVendorSelect } from '#/views/mes/md/vendor/components';
import { ErpPurchaseOrderSelect } from '#/views/erp/purchase/order/components';
@@ -347,11 +347,21 @@
{
fieldName: 'itemId',
label: '鐗╂枡',
- component: markRaw(MdItemSelect),
+ component: 'ApiSelect',
componentProps: {
placeholder: '璇烽�夋嫨鐗╂枡',
+ allowClear: true,
+ showSearch: true,
+ api: getItemPage,
+ resultField: 'list',
+ labelField: 'name',
+ valueField: 'id',
+ optionRender: (option: any) => {
+ const item = option.data;
+ return `${item.code} - ${item.name}`;
+ },
},
- rules: 'selectRequired',
+ rules: 'required',
},
{
fieldName: 'arrivalQuantity',
diff --git a/src/views/wls/arrivalnotice/index.vue b/src/views/wls/arrivalnotice/index.vue
index 15f292e..5cfe5b4 100644
--- a/src/views/wls/arrivalnotice/index.vue
+++ b/src/views/wls/arrivalnotice/index.vue
@@ -15,6 +15,7 @@
generateArrivalNoticeFromPurchaseOrder,
getArrivalNoticePage,
} from '#/api/mes/wm/arrivalnotice';
+import { generateItemReceiptFromArrivalNotice } from '#/api/mes/wm/itemreceipt';
import { $t } from '#/locales';
import { useGridColumns, useGridFormSchema } from './data';
@@ -68,12 +69,22 @@
/** 鎻愮ず鍓嶅線璐ㄦ妯″潡 */
function handleQc() {
- message.info('璇峰墠寰�銆愯川閲忕鐞� - 寰呮浠诲姟銆戜腑杩涜鏉ユ枡妫�楠屾搷浣�');
+ message.info('璇峰墠寰�銆愯川閲忕鐞� - IQC妫�楠屻�戜腑杩涜鏉ユ枡妫�楠屾搷浣�');
}
-/** 鎻愮ず鍓嶅線閲囪喘鍏ュ簱妯″潡 */
-function handleReceipt() {
- message.info('璇峰墠寰�銆愪粨搴撶鐞� - 閲囪喘鍏ュ簱銆戜腑杩涜鍏ュ簱鎿嶄綔');
+/** 鎵ц鍏ュ簱锛氭牴鎹埌璐ч�氱煡鍗曠敓鎴愰噰璐叆搴撳崟 */
+async function handleReceipt(row: MesWmArrivalNoticeApi.ArrivalNotice) {
+ const hideLoading = message.loading({
+ content: '姝e湪鐢熸垚閲囪喘鍏ュ簱鍗�...',
+ duration: 0,
+ });
+ try {
+ await generateItemReceiptFromArrivalNotice(row.id!);
+ message.success('鍏ュ簱鎴愬姛');
+ handleRefresh();
+ } finally {
+ hideLoading();
+ }
}
/** 浠庨噰璐鍗曠敓鎴愬埌璐ч�氱煡鍗� */
@@ -205,9 +216,13 @@
{
label: '鎵ц鍏ュ簱',
type: 'link',
+ auth: ['mes:wm-item-receipt:create'],
ifShow:
row.status === MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT,
- onClick: handleReceipt,
+ popConfirm: {
+ title: `纭鏍规嵁鍒拌揣閫氱煡鍗� ${row.code} 鐢熸垚閲囪喘鍏ュ簱鍗曪紵`,
+ confirm: handleReceipt.bind(null, row),
+ },
},
]"
/>
diff --git a/src/views/wls/itemreceipt/data.ts b/src/views/wls/itemreceipt/data.ts
index 135042d..4f72501 100644
--- a/src/views/wls/itemreceipt/data.ts
+++ b/src/views/wls/itemreceipt/data.ts
@@ -115,9 +115,18 @@
await formApi?.setValues({
purchaseOrderCode: notice?.purchaseOrderCode,
vendorId: notice?.vendorId,
+ vendorName: notice?.vendorName,
});
},
status: MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT,
+ },
+ },
+ {
+ fieldName: 'vendorName',
+ component: 'Input',
+ dependencies: {
+ triggerFields: [''],
+ show: () => false,
},
},
{
@@ -126,8 +135,18 @@
component: markRaw(ErpSupplierSelect),
componentProps: {
placeholder: '璇烽�夋嫨渚涘簲鍟�',
+ onChange: async (supplier?: any) => {
+ await formApi?.setFieldValue('vendorName', supplier?.name);
+ },
},
rules: 'selectRequired',
+ dependencies: {
+ triggerFields: ['vendorName'],
+ componentProps: (values) => ({
+ placeholder: '璇烽�夋嫨渚涘簲鍟�',
+ supplierName: values.vendorName as string,
+ }),
+ },
},
{
fieldName: 'purchaseOrderCode',
diff --git a/src/views/wls/itemreceipt/modules/form.vue b/src/views/wls/itemreceipt/modules/form.vue
index 6794cc1..0a0fe1a 100644
--- a/src/views/wls/itemreceipt/modules/form.vue
+++ b/src/views/wls/itemreceipt/modules/form.vue
@@ -17,7 +17,6 @@
getItemReceipt,
stockItemReceipt,
submitItemReceipt,
- submitItemReceiptApproval,
updateItemReceipt,
} from '#/api/mes/wm/itemreceipt';
import { $t } from '#/locales';
@@ -28,22 +27,14 @@
const emit = defineEmits(['success']);
const formType = ref<FormType>('create');
const formData = ref<MesWmItemReceiptApi.ItemReceipt>();
-const originalSnapshot = ref(''); // 琛ㄥ崟鍘熷鏁版嵁蹇収锛岀敤浜庢彁浜ゆ椂璺宠繃鏈彉鏇寸殑淇濆瓨璇锋眰
+const originalSnapshot = ref('');
const isEditable = computed(() =>
- // 鏄惁涓虹紪杈戞ā寮忥紙鍙繚瀛橈級
['create', 'update'].includes(formType.value),
);
-const isStock = computed(() => formType.value === 'stock'); // 鏄惁涓轰笂鏋舵ā寮�
-const isFinish = computed(() => formType.value === 'finish'); // 鏄惁涓烘墽琛屽叆搴撴ā寮�
+const isStock = computed(() => formType.value === 'stock');
+const isFinish = computed(() => formType.value === 'finish');
const canSubmit = computed(
() =>
- // 鏄惁鍙彁浜�
- formType.value === 'update' &&
- formData.value?.status === MesWmItemReceiptStatusEnum.PREPARE,
-);
-const canSubmitApproval = computed(
- () =>
- // 鏄惁鍙彁浜ゅ鎵�
formType.value === 'update' &&
formData.value?.status === MesWmItemReceiptStatusEnum.PREPARE,
);
@@ -76,7 +67,7 @@
wrapperClass: 'grid-cols-3',
});
-/** 鎻愪氦鍏ュ簱鍗曪細琛ㄥ崟鏈変慨鏀规椂鍏堜繚瀛橈紝鍐嶈皟鐢ㄦ彁浜ゆ帴鍙� */
+/** 鎻愪氦鍏ュ簱鍗� */
async function handleSubmit() {
const { valid } = await formApi.validate();
if (!valid || !formData.value?.id) {
@@ -102,9 +93,7 @@
/** 鎵ц涓婃灦 */
async function handleStock() {
- if (!formData.value?.id) {
- return;
- }
+ if (!formData.value?.id) return;
modalApi.lock();
try {
await stockItemReceipt(formData.value.id);
@@ -118,31 +107,11 @@
/** 鎵ц鍏ュ簱 */
async function handleFinish() {
- if (!formData.value?.id) {
- return;
- }
+ if (!formData.value?.id) return;
modalApi.lock();
try {
await finishItemReceipt(formData.value.id);
message.success('鍏ュ簱鎴愬姛');
- await modalApi.close();
- emit('success');
- } finally {
- modalApi.unlock();
- }
-}
-
-/** 鎻愪氦瀹℃壒 */
-async function handleSubmitApproval() {
- if (!formData.value?.id) {
- return;
- }
- modalApi.lock();
- try {
- // 浣跨敤榛樿娴佺▼key锛屽疄闄呴」鐩腑鍙兘闇�瑕佸脊绐楅�夋嫨
- const processDefinitionKey = 'item_receipt_approval';
- await submitItemReceiptApproval(formData.value.id, processDefinitionKey);
- message.success('鎻愪氦瀹℃壒鎴愬姛');
await modalApi.close();
emit('success');
} finally {
@@ -157,11 +126,8 @@
return;
}
const { valid } = await formApi.validate();
- if (!valid) {
- return;
- }
+ if (!valid) return;
modalApi.lock();
- // 鎻愪氦琛ㄥ崟
const data = (await formApi.getValues()) as MesWmItemReceiptApi.ItemReceipt;
try {
if (formData.value?.id) {
@@ -191,7 +157,6 @@
originalSnapshot.value = '';
return;
}
- // 鍔犺浇鏁版嵁
const data = modalApi.getData<{ formType: FormType; id?: number }>();
formType.value = data.formType;
formApi.setState({ schema: useFormSchema(formType.value, formApi) });
@@ -201,7 +166,6 @@
modalApi.lock();
try {
formData.value = await getItemReceipt(data.id);
- // 璁剧疆鍒� values
await formApi.setValues(formData.value);
} finally {
modalApi.unlock();
@@ -235,7 +199,6 @@
<template>
<Modal :title="getTitle" class="w-3/5">
<Form class="mx-4" />
- <!-- 闈炴柊寤烘ā寮忓睍绀虹墿鏂欎俊鎭� -->
<template v-if="formData?.id">
<Divider>鐗╂枡淇℃伅</Divider>
<div class="mx-4">
@@ -255,9 +218,6 @@
>
<Button type="primary">鎻愪氦</Button>
</Popconfirm>
- <Button v-if="canSubmitApproval" type="primary" @click="handleSubmitApproval">
- 鎻愪氦瀹℃壒
- </Button>
<Button v-if="isStock" type="primary" @click="confirmStock">
鎵ц涓婃灦
</Button>
--
Gitblit v1.9.3