From bf0ef9e148f2f438b5630c9fc9f6b8943592eeff Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期一, 07 九月 2026 16:55:15 +0800
Subject: [PATCH] fix(排产): 生产状态为已完成的单不再显示0%进度,已完成类型隐藏排产维护按钮
---
src/views/mes/pro/task/index.vue | 40 ++++++++++++++++++++++++++++++++++++----
src/packages/constants/src/biz-mes-enum.ts | 7 +++++++
2 files changed, 43 insertions(+), 4 deletions(-)
diff --git a/src/packages/constants/src/biz-mes-enum.ts b/src/packages/constants/src/biz-mes-enum.ts
index 85c58db..c84f3fc 100644
--- a/src/packages/constants/src/biz-mes-enum.ts
+++ b/src/packages/constants/src/biz-mes-enum.ts
@@ -244,6 +244,13 @@
CANCELED: 3, // 宸插彇娑�
} as const;
+/** MES 鐢熶骇宸ュ崟鐢熶骇鐘舵�佹灇涓撅紙瀵归綈鍚庣 MesProWorkOrderProductionStatusEnum锛� */
+export const MesProWorkOrderProductionStatusEnum = {
+ WAITING: 0, // 寰呯敓浜�
+ PRODUCING: 1, // 鐢熶骇涓�
+ FINISHED: 2, // 鐢熶骇瀹屾垚
+} as const;
+
/** MES 宸ュ崟绫诲瀷鏋氫妇 */
export const MesProWorkOrderTypeEnum = {
SELF: 1, // 鑷鐢熶骇
diff --git a/src/views/mes/pro/task/index.vue b/src/views/mes/pro/task/index.vue
index e8e5b06..ba6ff48 100644
--- a/src/views/mes/pro/task/index.vue
+++ b/src/views/mes/pro/task/index.vue
@@ -7,6 +7,7 @@
import { Page, useVbenModal } from '@vben/common-ui';
import {
+ MesProWorkOrderProductionStatusEnum,
MesProWorkOrderStatusEnum,
MesProWorkOrderTypeEnum,
} from '@vben/constants';
@@ -71,6 +72,30 @@
router.push({ name: 'MesProTaskGanttEdit' });
}
+/** 鍒ゆ柇璁㈠崟鏄惁涓衡�滃凡瀹屾垚绫诲瀷鈥濓細璁㈠崟鐘舵��=宸插畬鎴� 鎴� 鐢熶骇鐘舵��=鐢熶骇瀹屾垚 */
+function isCompletedWorkOrder(row: MesProWorkOrderApi.WorkOrder): boolean {
+ return (
+ row.status === MesProWorkOrderStatusEnum.FINISHED ||
+ row.productionStatus === MesProWorkOrderProductionStatusEnum.FINISHED
+ );
+}
+
+/**
+ * 宸插畬鎴愮被鍨嬭鐨勨�滃畬鎴愭�佲�濆厹搴曞睍绀猴細
+ * 宸茬敓浜ф暟閲忔寜璁㈠崟鏁伴噺灞曠ず锛堣嫢浣庝簬璁㈠崟鏁伴噺锛夛紝浣垮畬鎴愯繘搴︽樉绀轰负 100%銆�
+ * 浠呬綔鐢ㄤ簬鏈〉鍒楄〃灞曠ず锛屼笉淇敼鍚庣鏁版嵁锛屼笉褰卞搷搴撳瓨/鎶ュ伐/瀵煎嚭绛夌湡瀹炲彛寰勩��
+ */
+function normalizeCompletionDisplay(row: MesProWorkOrderApi.WorkOrder): void {
+ if (!isCompletedWorkOrder(row)) {
+ return;
+ }
+ const quantity = row.quantity ?? 0;
+ const produced = row.quantityProduced ?? 0;
+ if (produced < quantity) {
+ row.quantityProduced = quantity;
+ }
+}
+
const [Grid, gridApi] = useVbenVxeGrid({
formOptions: {
schema: useGridFormSchema(),
@@ -82,21 +107,26 @@
ajax: {
query: async ({ page }, formValues) => {
let scheduleStatus: number | undefined = undefined;
-
+
if (activeTab.value === 'PENDING') {
- scheduleStatus = 0; // 寰呮帓浜�
+ scheduleStatus = 0; // 鏈畬鎴�
} else if (activeTab.value === 'FINISHED') {
scheduleStatus = 1; // 宸插畬鎴�
}
// activeTab === 'ALL' 鏃朵笉浼�
- return await getWorkOrderSchedulePage({
+ const res = await getWorkOrderSchedulePage({
pageNo: page.currentPage,
pageSize: page.pageSize,
scheduleStatus,
type: MesProWorkOrderTypeEnum.SELF,
...formValues,
});
+ // 宸插畬鎴愮被鍨嬭锛氬凡鐢熶骇鏁伴噺/瀹屾垚杩涘害鍋氣�滃畬鎴愭�佲�濆厹搴曞睍绀猴紙浠呮湰椤靛睍绀猴紝涓嶆敼搴擄級
+ if (res?.list) {
+ res.list.forEach(normalizeCompletionDisplay);
+ }
+ return res;
},
},
},
@@ -173,7 +203,9 @@
label: '鎺掍骇缁存姢',
type: 'link',
auth: ['mes:pro-task:create'],
- ifShow: row.status === MesProWorkOrderStatusEnum.CONFIRMED,
+ ifShow:
+ row.status === MesProWorkOrderStatusEnum.CONFIRMED &&
+ !isCompletedWorkOrder(row),
onClick: handleSchedule.bind(null, row),
},
{
--
Gitblit v1.9.3