From 6738e8f5a78431e41fed28e6b795e70c2396070a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 03 九月 2026 17:27:23 +0800
Subject: [PATCH] refactor(mes): 优化工艺路线配置与工单表单功能
---
src/views/mes/md/item/components/select-dialog.vue | 61 ++++++++++++++++++++++++++----
1 files changed, 53 insertions(+), 8 deletions(-)
diff --git a/src/views/mes/md/item/components/select-dialog.vue b/src/views/mes/md/item/components/select-dialog.vue
index fe17e92..61f3fd1 100644
--- a/src/views/mes/md/item/components/select-dialog.vue
+++ b/src/views/mes/md/item/components/select-dialog.vue
@@ -67,11 +67,38 @@
selectedRows.value = getMultipleSelectedRows();
}
+ /** 涓婃鍗曞嚮琛岀棔杩癸紝鐢ㄤ簬鍚炴帀鍙屽嚮瑙﹀彂鐨勭浜屾 click锛岄伩鍏�"閫変簡鍙堝彇娑�" */
+ let lastClick = { rowId: undefined as number | undefined, time: 0 };
+
+ /** 鍗曞嚮琛岋細澶氶�夌洿鎺ュ垏鎹㈠嬀閫夛紱鍗曢�夌敱 radioConfig.trigger='row' 澶勭悊 */
+ async function handleCellClick({
+ row,
+ column,
+ }: {
+ row: MesMdItemApi.Item;
+ column?: { type?: string };
+ }) {
+ // 鐐瑰嚮鍕鹃�夊垪鑷韩鐢� checkbox 鎺т欢澶勭悊锛岄伩鍏嶄簩娆″垏鎹�
+ if (column?.type === "checkbox") {
+ return;
+ }
+ if (!multiple.value) {
+ return;
+ }
+ const rowId = row.id;
+ const now = Date.now();
+ if (lastClick.rowId === rowId && now - lastClick.time < 300) {
+ lastClick.time = 0;
+ return;
+ }
+ lastClick = { rowId, time: now };
+ await toggleMultipleRow(row);
+ }
+
/** 澶勭悊琛屽弻鍑� */
async function handleCellDblclick({ row }: { row: MesMdItemApi.Item }) {
if (multiple.value) {
- await toggleMultipleRow(row);
- return;
+ return; // 澶氶�夌敱鍗曞嚮 cellClick 鍒囨崲锛屽弻鍑讳笉鍐嶉噸澶嶅鐞�
}
selectedRows.value = [row];
await gridApi.grid.setRadioRow(row);
@@ -84,18 +111,20 @@
gridApi.query();
}
- /** 鍥炴樉棰勯�夌墿鏂� */
+ /** 鍥炴樉棰勯�夌墿鏂欙細褰撳墠椤电洿鎺ュ嬀閫夛紝璺ㄩ〉棰勯�夋敞鍐屼负 reserve锛岀炕椤靛悗鑷姩鍥炴樉 */
async function applyPreSelection() {
if (preSelectedIds.value.length === 0) {
return;
}
const rows = getTableRows();
+ const currentIds = new Set(
+ rows.filter((row) => row.id != null).map((row) => row.id),
+ );
for (const row of rows) {
- if (
- row.id === undefined ||
- row.id === null ||
- !preSelectedIds.value.includes(row.id)
- ) {
+ if (row.id === undefined || row.id === null) {
+ continue;
+ }
+ if (!preSelectedIds.value.includes(row.id)) {
continue;
}
if (multiple.value) {
@@ -107,6 +136,21 @@
}
}
if (multiple.value) {
+ // 鎷夊彇涓嶅湪褰撳墠椤电殑棰勯�夌墿鏂欏畬鏁存暟鎹紝娉ㄥ唽涓� checkbox reserve锛堢炕椤靛悗鑷姩鍕鹃�夛級
+ const missingIds = preSelectedIds.value.filter(
+ (id) => !currentIds.has(id),
+ );
+ if (missingIds.length > 0) {
+ const result = await getItemPage({
+ pageNo: 1,
+ pageSize: 200,
+ ids: missingIds.join(","),
+ } as never);
+ const fullRows = result?.list as MesMdItemApi.Item[] | undefined;
+ if (fullRows && fullRows.length > 0) {
+ await gridApi.grid.setCheckboxReserve(fullRows, true);
+ }
+ }
selectedRows.value = getMultipleSelectedRows();
}
}
@@ -159,6 +203,7 @@
},
} as VxeTableGridOptions<MesMdItemApi.Item>,
gridEvents: {
+ cellClick: handleCellClick,
cellDblclick: handleCellDblclick,
checkboxAll: handleCheckboxSelectChange,
checkboxChange: handleCheckboxSelectChange,
--
Gitblit v1.9.3