diff --git a/package.json b/package.json index 4655b20..a968f11 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/components/ShrimpTable.vue b/src/components/ShrimpTable.vue index a94b442..581f1de 100644 --- a/src/components/ShrimpTable.vue +++ b/src/components/ShrimpTable.vue @@ -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) => { + const out: Record = {} + 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`)