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