From 4f40ad9f118cff9597807352734ad11acc75aeb8 Mon Sep 17 00:00:00 2001 From: oneao Date: Thu, 23 Jul 2026 22:54:30 +0800 Subject: [PATCH] 20260723225430 --- .../src/components/fms-table/FmsTable.vue | 13 +++++++++++- .../utils/createEditableCellRenderer.js | 20 +++++++++++-------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/code/fms/fms-vue/src/components/fms-table/FmsTable.vue b/code/fms/fms-vue/src/components/fms-table/FmsTable.vue index 379778c0..d2bd65bd 100644 --- a/code/fms/fms-vue/src/components/fms-table/FmsTable.vue +++ b/code/fms/fms-vue/src/components/fms-table/FmsTable.vue @@ -22,7 +22,7 @@ const props = defineProps({ activeRowKey: { type: [String, Number], default: null }, }); -const emit = defineEmits(["update:columns"]); +const emit = defineEmits(["update:columns", "row-click"]); function getRowKey(row) { return typeof props.rowKey === "function" ? props.rowKey(row) : row?.[props.rowKey]; @@ -30,9 +30,19 @@ function getRowKey(row) { const selectedRowKeySet = computed(() => new Set(props.rowSelection?.selectedRowKeys || [])); +// 追踪用户点击的单元格列,用于编辑态自动聚焦到对应列 +const activeColKey = ref(null); + +function onStkRowClick(ev, row, data) { + const td = ev.target.closest?.("td"); + activeColKey.value = td?.dataset?.colKey || null; + emit("row-click", ev, row, data); +} + const EditableCell = createEditableCellRenderer({ getRowKey, getActiveRowKey: () => props.activeRowKey, + getActiveColKey: () => activeColKey.value, }); const { SelectionCell, SelectionHeaderCell } = createSelectionCellRenderers({ @@ -154,6 +164,7 @@ defineExpose({ scrollToRow }); :row-key="rowKey" :bordered="bordered" :no-data-full="noDataFull" + @row-click="onStkRowClick" >