Compare commits

...
1 Commits
Author SHA1 Message Date
wc24 c44f2a159e feat(export): 前端生成 xlsx 前把对象/数组单元格 JSON 序列化
后端 export 改为只发原始对象后,前端在 json_to_sheet 前通用地 stringify 非标量单元格
(覆盖 tab 等),避免 [object Object];import 时由后端 reqFilter 还原。
2026-06-29 21:47:10 +08:00
2 changed files with 11 additions and 2 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "shrimp-admin",
"version": "0.3.9",
"version": "0.3.10",
"private": true,
"description": "Shrimp 框架前端 — 消费 ShrimpServer + ShrimpTable 契约的经典 Vue3 + Element Plus 实现",
"main": "src/index.ts",
+10 -1
View File
@@ -442,7 +442,16 @@ async function handleExport() {
}
if (ownerId.value) query.ownerId = ownerId.value
const list = await api.export(query)
const ws = XLSX.utils.json_to_sheet(list)
// 后端只发原始对象;xlsx 单元格放不下对象/数组(会变 [object Object]),这里通用地 JSON 序列化
// (覆盖 tab 等结构化字段)。import 时这些字符串由后端各类型 reqFilter 还原。
const rows = list.map((row: Record<string, any>) => {
const out: Record<string, any> = {}
for (const [k, v] of Object.entries(row)) {
out[k] = (v !== null && typeof v === 'object') ? JSON.stringify(v) : v
}
return out
})
const ws = XLSX.utils.json_to_sheet(rows)
const wb = XLSX.utils.book_new()
XLSX.utils.book_append_sheet(wb, ws, props.moduleKey)
XLSX.writeFile(wb, `${props.moduleKey}_export_${Date.now()}.xlsx`)