Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,7 @@ describe("ColumnComponent", () => {
formValue,
rowIndex,
rowValue: formValue[rowIndex],
column,
});
});

Expand Down
3 changes: 2 additions & 1 deletion bricks/forms/src/dynamic-form-item-v2/ColumnComponent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ export function ColumnComponent(
formValue,
rowValue,
rowIndex,
column,
}),
};
}
Expand All @@ -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(
Expand Down
22 changes: 21 additions & 1 deletion bricks/forms/src/dynamic-form-item-v2/excelUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, any> = {};
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;
});
Expand Down
1 change: 1 addition & 0 deletions bricks/forms/src/interfaces/dynamic-form-item-v2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ export interface BasicColumn {
formValue: Record<string, any>[];
rowValue: Record<string, any>;
rowIndex: number;
column?: Column;
}
) => Promise<void | any> | void;
})[];
Expand Down
Loading