diff --git a/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.spec.tsx b/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.spec.tsx index 777699228..8ea06e39f 100644 --- a/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.spec.tsx +++ b/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.spec.tsx @@ -419,6 +419,7 @@ describe("ColumnComponent", () => { formValue, rowIndex, rowValue: formValue[rowIndex], + column, }); }); diff --git a/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.tsx b/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.tsx index e05ec047a..1389a5a61 100644 --- a/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.tsx +++ b/bricks/forms/src/dynamic-form-item-v2/ColumnComponent.tsx @@ -126,6 +126,7 @@ export function ColumnComponent( formValue, rowValue, rowIndex, + column, }), }; } @@ -146,7 +147,7 @@ export function ColumnComponent( } return rule; }), - [column.rules, formValue, name, rowIndex, rowValue] + [column.rules, formValue, name, rowIndex, rowValue, column] ); const options = useMemo( diff --git a/bricks/forms/src/dynamic-form-item-v2/excelUtils.tsx b/bricks/forms/src/dynamic-form-item-v2/excelUtils.tsx index 67cb198b4..838138a5c 100644 --- a/bricks/forms/src/dynamic-form-item-v2/excelUtils.tsx +++ b/bricks/forms/src/dynamic-form-item-v2/excelUtils.tsx @@ -41,13 +41,33 @@ export const exportFormData = async ( const headers = columns.map((col) => ({ key: col.name, header: col.label || col.name, + type: (col as any).type, + mode: (col as any).props?.mode, })); // 处理数据,确保数据格式正确 const exportData = formData.map((row) => { const exportRow: Record = {}; headers.forEach((header) => { - exportRow[header.header] = row[header.key]; + let value = row[header.key]; + + // 处理数组类型的值(如 select 多选、cascader 多选等) + if (Array.isArray(value)) { + // 对于多选模式,将数组转换为逗号加空格分隔的字符串 + if (header.type === 'select' && (header.mode === 'multiple' || header.mode === 'tags')) { + value = value.length > 0 ? value.join(', ') : ''; + } else if (header.type === 'cascader') { + value = JSON.stringify(value); + } else { + // 其他数组类型统一按逗号加空格分隔格式处理 + value = value.length > 0 ? value.join(', ') : ''; + } + } else if (value === undefined || value === null) { + // 处理未定义或null值,转换为空字符串 + value = ''; + } + + exportRow[header.header] = value; }); return exportRow; }); diff --git a/bricks/forms/src/interfaces/dynamic-form-item-v2.ts b/bricks/forms/src/interfaces/dynamic-form-item-v2.ts index 08888aa1d..888546bdb 100644 --- a/bricks/forms/src/interfaces/dynamic-form-item-v2.ts +++ b/bricks/forms/src/interfaces/dynamic-form-item-v2.ts @@ -295,6 +295,7 @@ export interface BasicColumn { formValue: Record[]; rowValue: Record; rowIndex: number; + column?: Column; } ) => Promise | void; })[];