From 858df78951d5c29e8d4217cffcf81d2cc4fabcd4 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 03 八月 2026 14:58:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_pro2.0' into dev_pro2.0
---
src/views/wls/returnsales/data.ts | 86 +++++++++++++++++++++++++++++++++++++-----
1 files changed, 75 insertions(+), 11 deletions(-)
diff --git a/src/views/wls/returnsales/data.ts b/src/views/wls/returnsales/data.ts
index e926283..9b61d3c 100644
--- a/src/views/wls/returnsales/data.ts
+++ b/src/views/wls/returnsales/data.ts
@@ -1,3 +1,4 @@
+import type { ErpSaleOrderApi } from '#/api/erp/sale/order';
import type { VbenFormApi, VbenFormSchema } from '#/adapter/form';
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesWmReturnSalesApi } from '#/api/mes/wm/returnsales';
@@ -12,8 +13,9 @@
import { Button } from 'ant-design-vue';
import { z } from '#/adapter/form';
+import CrmCustomerSelect from '#/components/crm-customer-select.vue';
import { generateAutoCode } from '#/api/mes/md/autocode/record';
-import { MdClientSelect } from '#/views/mes/md/client/components';
+import { ErpSaleOrderSelect } from '#/views/erp/sale/order/components';
import { MdItemSelect } from '#/views/mes/md/item/components';
import { WmBatchSelect } from '#/views/wls/batch/components';
import {
@@ -34,6 +36,7 @@
export function useFormSchema(
formType: FormType,
formApi?: VbenFormApi,
+ onOrderChange?: (item: Record<string, unknown> | undefined) => void,
): VbenFormSchema[] {
return [
{
@@ -88,16 +91,35 @@
},
{
fieldName: 'salesOrderCode',
- label: '閿�鍞鍗曞彿',
component: 'Input',
- componentProps: {
- placeholder: '璇疯緭鍏ラ攢鍞鍗曞彿',
+ dependencies: {
+ triggerFields: [''],
+ show: () => false,
},
+ },
+ {
+ fieldName: 'saleOrderId',
+ label: '閿�鍞鍗曞彿',
+ component: markRaw(ErpSaleOrderSelect),
+ componentProps: {
+ outStatus: 3,
+ placeholder: '璇烽�夋嫨閿�鍞鍗�',
+ onChange: (item: any) => {
+ if (formApi) {
+ formApi.setFieldValue('salesOrderCode', item?.no ?? '');
+ if (item?.customerId) {
+ formApi.setFieldValue('clientId', item.customerId);
+ }
+ }
+ onOrderChange?.(item);
+ },
+ },
+ rules: 'selectRequired',
},
{
fieldName: 'clientId',
label: '瀹㈡埛',
- component: markRaw(MdClientSelect),
+ component: markRaw(CrmCustomerSelect),
componentProps: {
placeholder: '璇烽�夋嫨瀹㈡埛',
},
@@ -111,7 +133,7 @@
class: '!w-full',
format: 'YYYY-MM-DD',
placeholder: '璇烽�夋嫨閫�璐ф棩鏈�',
- valueFormat: 'x',
+ valueFormat: 'YYYY-MM-DD',
},
rules: 'required',
},
@@ -172,7 +194,7 @@
{
fieldName: 'clientId',
label: '瀹㈡埛',
- component: markRaw(MdClientSelect),
+ component: markRaw(CrmCustomerSelect),
componentProps: {
placeholder: '璇烽�夋嫨瀹㈡埛',
},
@@ -324,15 +346,31 @@
export function useLineFormSchema(
clientId?: number,
salesOrderCode?: string,
+ items?: ErpSaleOrderApi.SaleOrderItem[],
+ onItemChange?: (item: ErpSaleOrderApi.SaleOrderItem | undefined) => void,
): VbenFormSchema[] {
+ const hasItems = items && items.length > 0;
return [
{
fieldName: 'itemId',
label: '鐗╂枡',
- component: markRaw(MdItemSelect),
- componentProps: {
- placeholder: '璇烽�夋嫨鐗╂枡',
- },
+ component: hasItems ? 'Select' : markRaw(MdItemSelect),
+ componentProps: hasItems
+ ? {
+ placeholder: '璇烽�夋嫨鐗╂枡',
+ options: items.map((item) => ({
+ label: `${item.productName || ''}锛�${item.productBarCode || ''}锛塦,
+ value: item.productId,
+ })),
+ onChange: (value: number | undefined) => {
+ const selected = items.find((i) => i.productId === value);
+ onItemChange?.(selected);
+ },
+ }
+ : {
+ placeholder: '璇烽�夋嫨鐗╂枡',
+ productIds: [],
+ },
rules: 'selectRequired',
},
{
@@ -345,6 +383,30 @@
placeholder: '璇疯緭鍏ラ��璐ф暟閲�',
precision: 2,
},
+ dependencies: {
+ triggerFields: ['itemId'],
+ componentProps: (values) => {
+ const selected = items?.find((i) => i.productId === values.itemId);
+ return {
+ class: '!w-full',
+ max: selected?.count ?? undefined,
+ min: 0,
+ placeholder: '璇疯緭鍏ラ��璐ф暟閲�',
+ precision: 2,
+ };
+ },
+ rules: (values) => {
+ const selected = items?.find((i) => i.productId === values.itemId);
+ const max = selected?.count;
+ if (max !== undefined && max !== null) {
+ return z
+ .number({ message: '璇疯緭鍏ラ��璐ф暟閲�' })
+ .min(0)
+ .max(max, `鍙��璐ф暟閲忎笉鑳借秴杩� ${max}`);
+ }
+ return z.number({ message: '璇疯緭鍏ラ��璐ф暟閲�' }).min(0);
+ },
+ },
rules: 'required',
},
{
@@ -353,6 +415,7 @@
component: markRaw(WmBatchSelect),
componentProps: {
clientId,
+ disabled: true,
placeholder: '璇烽�夋嫨鎵规',
salesOrderCode,
},
@@ -360,6 +423,7 @@
triggerFields: ['itemId'],
componentProps: (values) => ({
clientId,
+ disabled: true,
itemId: values.itemId,
placeholder: '璇烽�夋嫨鎵规',
salesOrderCode,
--
Gitblit v1.9.3