From e4994fccfb49ebfb108ba62cbd82aea4e004f6d8 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 15 十月 2026 10:02:46 +0800
Subject: [PATCH] fix(mes/qc): 不合格品处理单的不合格物料改查 MDM 物料
---
src/views/erp/sale/order/data.ts | 80 ++++++++++++++++++++++++---------------
1 files changed, 49 insertions(+), 31 deletions(-)
diff --git a/src/views/erp/sale/order/data.ts b/src/views/erp/sale/order/data.ts
index 254f22a..0fafea2 100644
--- a/src/views/erp/sale/order/data.ts
+++ b/src/views/erp/sale/order/data.ts
@@ -5,10 +5,10 @@
import { z } from '#/adapter/form';
import { getAccountSimpleList } from '#/api/erp/finance/account';
-import { getItemPage } from '#/api/mdm/item';
import { getSimpleUserList } from '#/api/system/user';
-import { getRangePickerDefaultProps } from '#/utils';
+import { getRangePickerDefaultProps, withoutFixedColumns } from '#/utils';
import CrmCustomerSelect from '#/components/crm-customer-select.vue';
+import { MdmItemSelect } from '#/views/basicData/mdm/components';
import { markRaw } from 'vue';
@@ -30,9 +30,14 @@
fieldName: 'no',
label: '璁㈠崟鍗曞彿',
component: 'Input',
+ rules: 'required',
+ dependencies: {
+ triggerFields: ['id'],
+ disabled: (values) => !!values.id,
+ },
componentProps: {
- placeholder: '绯荤粺鑷姩鐢熸垚',
- disabled: true,
+ placeholder: '璇疯緭鍏ヨ鍗曞崟鍙�',
+ maxLength: 32,
},
},
{
@@ -72,7 +77,7 @@
placeholder: '閫夋嫨璁㈠崟鏃堕棿',
showTime: true,
format: 'YYYY-MM-DD HH:mm:ss',
- valueFormat: 'x',
+ valueFormat: 'YYYY-MM-DD HH:mm:ss',
},
rules: 'required',
},
@@ -156,11 +161,11 @@
},
{
fieldName: 'totalPrice',
- label: '浼樻儬鍚庨噾棰�',
+ label: '浼樻儬鍚庡惈绋庨噾棰�',
component: 'InputNumber',
componentProps: {
class: '!w-full',
- placeholder: '浼樻儬鍚庨噾棰�',
+ placeholder: '浼樻儬鍚庡惈绋庨噾棰�',
precision: 2,
formatter: erpPriceInputFormatter,
disabled: true,
@@ -181,14 +186,27 @@
},
{
component: 'InputNumber',
- componentProps: {
+ componentProps: (values) => ({
class: '!w-full',
placeholder: '璇疯緭鍏ユ敹鍙栬閲�',
precision: 2,
min: 0,
- },
+ max: values.totalPrice ?? undefined,
+ }),
fieldName: 'depositPrice',
label: '鏀跺彇璁㈤噾',
+ dependencies: {
+ triggerFields: ['totalPrice'],
+ rules(values) {
+ if (values.totalPrice != null) {
+ return z
+ .number()
+ .min(0, '璁㈤噾涓嶈兘灏忎簬0')
+ .max(values.totalPrice, '鏀跺彇璁㈤噾涓嶈兘澶т簬浼樻儬鍚庡惈绋庨噾棰�');
+ }
+ return z.number().min(0, '璁㈤噾涓嶈兘灏忎簬0').optional();
+ },
+ },
rules: z.number().min(0).optional(),
},
];
@@ -198,7 +216,7 @@
export function useFormItemColumns(
disabled: boolean,
): VxeTableGridOptions['columns'] {
- return [
+ const columns: VxeTableGridOptions['columns'] = [
{ type: 'seq', title: '搴忓彿', minWidth: 50, fixed: 'left' },
{
field: 'productId',
@@ -216,6 +234,7 @@
title: '搴撳瓨',
minWidth: 80,
formatter: 'formatAmount3',
+ visible: false,
},
{
field: 'productUnitName',
@@ -226,11 +245,13 @@
field: 'productUnitName2',
title: '杈呭崟浣�1',
minWidth: 80,
+ visible: false,
},
{
field: 'productUnitName3',
title: '杈呭崟浣�2',
minWidth: 80,
+ visible: false,
},
{
field: 'needProduction',
@@ -243,6 +264,7 @@
title: '澶囨敞',
minWidth: 150,
slots: { default: 'remark' },
+ visible: false,
},
{
field: 'count',
@@ -253,17 +275,10 @@
},
{
field: 'productPrice',
- title: '浜у搧鍗曚环',
+ title: '鍚◣鍗曚环(鍏�)',
minWidth: 120,
fixed: 'right',
slots: { default: 'productPrice' },
- },
- {
- field: 'totalProductPrice',
- title: '閲戦',
- minWidth: 120,
- fixed: 'right',
- formatter: 'formatAmount2',
},
{
field: 'taxPercent',
@@ -273,15 +288,22 @@
slots: { default: 'taxPercent' },
},
{
+ field: 'totalProductPrice',
+ title: '涓嶅惈绋庨噾棰�(鍏�)',
+ minWidth: 120,
+ fixed: 'right',
+ formatter: 'formatAmount2',
+ },
+ {
field: 'taxPrice',
- title: '绋庨',
+ title: '绋庨(鍏�)',
minWidth: 120,
fixed: 'right',
formatter: 'formatAmount2',
},
{
field: 'totalPrice',
- title: '绋庨鍚堣',
+ title: '鍚◣鍚堣(鍏�)',
minWidth: 120,
fixed: 'right',
formatter: 'formatAmount2',
@@ -294,6 +316,8 @@
visible: !disabled,
},
];
+ // 鏌ョ湅瀹℃壒鏄庣粏锛堝彧璇伙級鏃跺彇娑堝浐瀹氬垪锛岄伩鍏嶇獎寮圭獥閲屾尋鎺変骇鍝佸悕绉般�佸崟浣嶃�佸娉ㄧ瓑鍒�
+ return disabled ? withoutFixedColumns(columns) : columns;
}
/** 鍒楄〃鐨勬悳绱㈣〃鍗� */
@@ -311,17 +335,9 @@
{
fieldName: 'productId',
label: '浜у搧',
- component: 'ApiSelect',
+ component: markRaw(MdmItemSelect),
componentProps: {
placeholder: '璇烽�夋嫨浜у搧',
- allowClear: true,
- showSearch: true,
- api: async () => {
- const res = await getItemPage({ pageNo: 1, pageSize: 100, status: 0 });
- return res.list || [];
- },
- labelField: 'name',
- valueField: 'id',
},
},
{
@@ -361,8 +377,10 @@
component: 'Select',
componentProps: {
options: [
- { label: '鏈鏍�', value: 10 },
+ { label: '鏈彁浜�', value: 0 },
+ { label: '瀹℃壒涓�', value: 15 },
{ label: '宸插鏍�', value: 20 },
+ { label: '宸查┏鍥�', value: 35 },
{ label: '宸蹭綔搴�', value: 30 },
],
placeholder: '璇烽�夋嫨鐘舵��',
@@ -461,7 +479,7 @@
},
{
field: 'totalProductPrice',
- title: '閲戦鍚堣',
+ title: '涓嶅惈绋庨噾棰濆悎璁�',
formatter: 'formatAmount2',
minWidth: 120,
},
--
Gitblit v1.9.3