From 889d8ddf4c13c1b1bdbabd04c2d80b904020151e Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期三, 19 八月 2026 12:49:24 +0800
Subject: [PATCH] 生产订单与报工模块改造汇总 (Git Commit 文档) feat(mes-pro): 生产订单及报工模块审批流与批次填报改造 1. 生产订单功能增强 (Work Order)
---
src/views/mes/pro/feedback/data.ts | 79 ++++++++++++++++++++++++++++++++-------
1 files changed, 64 insertions(+), 15 deletions(-)
diff --git a/src/views/mes/pro/feedback/data.ts b/src/views/mes/pro/feedback/data.ts
index c7aadb8..8e2580a 100644
--- a/src/views/mes/pro/feedback/data.ts
+++ b/src/views/mes/pro/feedback/data.ts
@@ -2,6 +2,7 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { MesProFeedbackApi } from '#/api/mes/pro/feedback';
import type { MesProTaskApi } from '#/api/mes/pro/task';
+import type { DescriptionItemSchema } from '#/components/description';
import { h, markRaw } from 'vue';
@@ -10,8 +11,8 @@
MesAutoCodeRuleCode,
MesProTaskStatusEnum,
MesProWorkOrderStatusEnum,
-} from '..\..\..\..\packages\constants\src';
-import { getDictOptions } from '..\..\..\..\packages\effects\hooks\src';
+} from '@vben/constants';
+import { getDictOptions } from '@vben/hooks';
import { Button } from 'ant-design-vue';
@@ -23,6 +24,7 @@
import { MdWorkstationSelect } from '#/views/mes/md/workstation/components';
import { ProTaskSelect } from '#/views/mes/pro/task/components';
import { ProWorkOrderSelect } from '#/views/mes/pro/workorder/components';
+import { DictTag } from '#/components/dict-tag';
/** 鐢熶骇鎶ュ伐琛ㄥ崟绫诲瀷 */
export type FormType = 'approve' | 'create' | 'detail' | 'submit' | 'update';
@@ -32,11 +34,11 @@
return [
{
fieldName: 'code',
- label: '鎶ュ伐鍗曞彿',
+ label: '鎶ヨ鍗曞彿',
component: 'Input',
componentProps: {
allowClear: true,
- placeholder: '璇疯緭鍏ユ姤宸ュ崟鍙�',
+ placeholder: '璇疯緭鍏ユ姤璁㈠崟鍙�',
},
},
{
@@ -51,11 +53,11 @@
},
{
fieldName: 'workOrderId',
- label: '鐢熶骇宸ュ崟',
+ label: '鐢熶骇璁㈠崟',
component: markRaw(ProWorkOrderSelect),
componentProps: {
allowClear: true,
- placeholder: '璇烽�夋嫨宸ュ崟',
+ placeholder: '璇烽�夋嫨璁㈠崟',
},
},
{
@@ -118,7 +120,7 @@
return [
{
field: 'code',
- title: '鎶ュ伐鍗曞彿',
+ title: '鎶ヨ鍗曞彿',
width: 160,
slots: { default: 'code' },
},
@@ -133,7 +135,7 @@
},
{ field: 'workstationName', title: '宸ヤ綔绔�', width: 120 },
{ field: 'processName', title: '宸ュ簭', width: 100 },
- { field: 'workOrderCode', title: '鐢熶骇宸ュ崟缂栫爜', width: 160 },
+ { field: 'workOrderCode', title: '鐢熶骇璁㈠崟缂栫爜', width: 160 },
{ field: 'itemCode', title: '浜у搧鐗╂枡缂栫爜', width: 120 },
{ field: 'itemName', title: '浜у搧鐗╂枡鍚嶇О', minWidth: 140 },
{ field: 'itemSpecification', title: '瑙勬牸鍨嬪彿', width: 120 },
@@ -209,11 +211,11 @@
},
{
fieldName: 'code',
- label: '鎶ュ伐鍗曞彿',
+ label: '鎶ヨ鍗曞彿',
component: 'Input',
componentProps: {
disabled: isHeaderReadonly,
- placeholder: '璇疯緭鍏ユ姤宸ュ崟鍙�',
+ placeholder: '璇疯緭鍏ユ姤璁㈠崟鍙�',
},
rules: 'required',
suffix: () =>
@@ -245,13 +247,13 @@
},
{
fieldName: 'workOrderId',
- label: '鐢熶骇宸ュ崟',
+ label: '鐢熶骇璁㈠崟',
component: markRaw(ProWorkOrderSelect),
componentProps: {
disabled: isHeaderReadonly,
- placeholder: '璇烽�夋嫨宸ュ崟',
+ placeholder: '璇烽�夋嫨璁㈠崟',
status: MesProWorkOrderStatusEnum.CONFIRMED,
- // 宸ュ崟鍙樻洿锛氭竻绌轰换鍔″強浠诲姟甯﹀嚭鐨勪骇鍝佷俊鎭�佹暟閲忓尯鍩熸帶鍒朵綅
+ // 璁㈠崟鍙樻洿锛氭竻绌轰换鍔″強浠诲姟甯﹀嚭鐨勪骇鍝佷俊鎭�佹暟閲忓尯鍩熸帶鍒朵綅
onChange: async () => {
await formApi?.setValues({
checkFlag: true,
@@ -264,6 +266,7 @@
taskId: undefined,
unitMeasureName: undefined,
workstationId: undefined,
+ reportableQuantity: undefined,
});
},
},
@@ -277,7 +280,7 @@
triggerFields: ['workOrderId', 'workstationId'],
componentProps: (values) => ({
disabled: isHeaderReadonly || !values.workOrderId,
- placeholder: values.workOrderId ? '璇烽�夋嫨浠诲姟' : '璇峰厛閫夋嫨宸ュ崟',
+ placeholder: values.workOrderId ? '璇烽�夋嫨浠诲姟' : '璇峰厛閫夋嫨璁㈠崟',
statuses: [MesProTaskStatusEnum.PREPARE],
workOrderId: values.workOrderId,
workstationId: values.workstationId,
@@ -298,6 +301,7 @@
routeId: task.routeId,
unitMeasureName: task.unitMeasureName,
workstationId: task.workstationId,
+ reportableQuantity: task.reportableQuantity,
});
// 宸ヨ壓璺嚎宸ュ簭鐨� checkFlag 鍐冲畾鏁伴噺鍖哄煙灞曠ず
if (task.routeId && task.processId) {
@@ -374,6 +378,20 @@
dependencies: {
triggerFields: ['itemCode'],
show: (values) => !!values.itemCode,
+ },
+ },
+ {
+ fieldName: 'reportableQuantity',
+ label: '鍙姤宸ユ暟閲�',
+ component: 'InputNumber',
+ componentProps: {
+ class: 'w-full',
+ disabled: true,
+ precision: 2,
+ },
+ dependencies: {
+ triggerFields: ['taskId'],
+ show: (values) => !!values.taskId && ['create', 'update'].includes(formType),
},
},
{
@@ -554,7 +572,7 @@
format: 'YYYY-MM-DD HH:mm:ss',
placeholder: '璇烽�夋嫨鎶ュ伐鏃堕棿',
showTime: true,
- valueFormat: 'x',
+ valueFormat: 'YYYY-MM-DD HH:mm:ss',
},
rules: 'required',
},
@@ -585,3 +603,34 @@
},
];
}
+
+/** 鐢熶骇鎶ュ伐璇︽儏鎽樿 */
+export function useDetailSchema(): DescriptionItemSchema[] {
+ return [
+ { field: 'code', label: '鎶ヨ鍗曞彿' },
+ {
+ field: 'type',
+ label: '鎶ュ伐绫诲瀷',
+ render: (val) =>
+ h(DictTag, { type: DICT_TYPE.MES_PRO_FEEDBACK_TYPE, value: val }),
+ },
+ { field: 'workOrderId', label: '鐢熶骇璁㈠崟', render: (_val, data) => data.workOrderCode },
+ { field: 'taskId', label: '鐢熶骇浠诲姟', render: (_val, data) => data.taskCode },
+ { field: 'workstationName', label: '宸ヤ綔绔�' },
+ { field: 'itemCode', label: '浜у搧缂栫爜' },
+ { field: 'itemName', label: '浜у搧鍚嶇О' },
+ { field: 'unitMeasureName', label: '鍗曚綅' },
+ { field: 'itemSpecification', label: '瑙勬牸' },
+ { field: 'reportableQuantity', label: '鍙姤宸ユ暟閲�' },
+ { field: 'feedbackQuantity', label: '鎶ュ伐鏁伴噺' },
+ { field: 'qualifiedQuantity', label: '鍚堟牸鍝佹暟閲�' },
+ { field: 'unqualifiedQuantity', label: '涓嶈壇鍝佹暟閲�' },
+ { field: 'laborScrapQuantity', label: '宸ュ簾鏁伴噺' },
+ { field: 'materialScrapQuantity', label: '鏂欏簾鏁伴噺' },
+ { field: 'otherScrapQuantity', label: '鍏朵粬搴熷搧' },
+ { field: 'feedbackUserNickname', label: '鎶ュ伐浜�' },
+ { field: 'feedbackTime', label: '鎶ュ伐鏃堕棿' },
+ { field: 'approveUserNickname', label: '瀹℃牳浜�' },
+ { field: 'remark', label: '澶囨敞' },
+ ];
+}
--
Gitblit v1.9.3