From b19f9aa9ba1d69998a9e0c4292b554135d60f788 Mon Sep 17 00:00:00 2001 From: yu <191972707@qq.com> Date: Thu, 29 Oct 2026 17:58:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8B=BC=E6=8E=A5?= =?UTF-8?q?=E4=B8=A4=E5=88=97=E6=95=B0=E6=8D=AE=E9=94=AE=E5=90=8D=E8=84=B1?= =?UTF-8?q?=E8=8A=82=E5=AF=BC=E8=87=B4=E7=9A=84=E5=81=87=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SpliceColData/DoJoint 实现读取的键(col1/cola)与 catalog 必填字段 (col_name_1/col_name_2/col_num_1/col_num_2)完全脱节,填了参数也按 undefined 找列,拼接出空值仍报成功 - 改读 catalog 真实键名,按 change_type 支持列名/列号两种模式,兼容旧键 --- src/main/capabilities/data-table-common.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/capabilities/data-table-common.ts b/src/main/capabilities/data-table-common.ts index 2d232ce..d7fd2ca 100644 --- a/src/main/capabilities/data-table-common.ts +++ b/src/main/capabilities/data-table-common.ts @@ -90,9 +90,21 @@ register(["Bivartable_ColumnOperationDf", "Bivartable_DoCal"], (_ctx, _node, arg const result: Table = [[...headers, name]]; for (const row of source.slice(1)) result.push([...row, calculate(row[left], row[right], operator)]); return result; }); +function columnIndexOf(candidate: unknown): number { + const text = String(candidate ?? "").trim(); + if (/^\d+$/.test(text)) return Number(text) - 1; + let result = 0; + for (const char of text.toUpperCase()) result = result * 26 + (char.charCodeAt(0) - 64); + return result - 1; +} + register(["Bivartable_SpliceColData", "Bivartable_DoJoint"], (_ctx, _node, args) => { const source = table(args.df); if (!source.length) return source; const headers = source[0]; - const left = index(headers, args.col1 ?? args.cola); const right = index(headers, args.col2 ?? args.colb); const name = String(args.name ?? args.colnew ?? "拼接结果"); const separator = String(args.separator ?? ""); + // catalog 字段:change_type(name/num) + col_name_1/2 或 col_num_1/2;兼容旧键 col1/col2 + const byName = String(args.change_type ?? "name") !== "num"; + const left = byName ? index(headers, args.col_name_1 ?? args.col1 ?? args.cola) : columnIndexOf(args.col_num_1); + const right = byName ? index(headers, args.col_name_2 ?? args.col2 ?? args.colb) : columnIndexOf(args.col_num_2); + const name = String(args.new_col_name ?? args.name ?? args.colnew ?? "拼接结果"); const separator = String(args.connector ?? args.separator ?? ""); return [[...headers, name], ...source.slice(1).map((row) => [...row, `${row[left] ?? ""}${separator}${row[right] ?? ""}`])]; });