3.3 KiB
3.3 KiB
7.5 前端文件组件
:::tip 概述 本节介绍前端项目(独立 EleVue 仓库)中的文件处理组件,包括上传组件(BasicUpload)、富文本编辑器(Editor)与 Excel 导入导出组件的使用方法。组件封装了 7.1 文件上传全流程 的接口调用。 :::
Upload 上传组件
<template>
<BasicUpload
v-model="formData.avatar"
:action="uploadUrl"
:maxCount="1"
/>
</template>
<script setup>
import { BasicUpload } from '@/components/Upload';
const uploadUrl = '/api/upload/uploadFile';
const formData = ref({ avatar: '' });
</script>
:::tip 字段值约定
BasicUpload 绑定的值建议存 filePath(相对路径)——提交表单后由 Service 的 fileFields 归一化,读取时自动补全 FILE_DOMAIN_URL 域名。上传需携带 Authorization: Bearer <token> 请求头(组件内部或 http 封装统一处理)。
:::
常用属性
| 属性 | 说明 |
|---|---|
v-model |
绑定的文件值(相对路径) |
action |
上传接口地址(/api/upload/uploadFile) |
maxCount |
最大上传数量(1 = 单文件,如头像) |
:data="{ type: 'image' }" |
上传类型(image 校验图片后缀白名单,两类均存入 temp/ 临时目录) |
Editor 富文本编辑器
<template>
<Editor v-model="formData.content" />
</template>
<script setup>
import Editor from '@/components/Editor/index.vue';
const formData = ref({ content: '' });
</script>
:::tip 富文本字段
编辑器产出的 HTML 提交后,由 Service 的 contentFields 配置触发 [IMG_URL] 占位符处理(见 7.3 富文本处理)。编辑器粘贴内容建议开启安全过滤模式防 XSS。
:::
Excel 导入组件
<template>
<ImportExcel @success="handleImportSuccess" />
</template>
<script setup>
import ImportExcel from '@/components/Excel/src/ImportExcel.vue';
const handleImportSuccess = (data) => {
// data 为解析后的数组(前端本地解析预览场景)
console.log(data);
};
</script>
:::tip 前端解析 vs 后端导入
- 后端导入(推荐,走业务校验):
el-upload直传/api/{module}/import,由 Service 逐行add()(字典反查、唯一校验、事务),见 7.4 数据导入导出; - 前端解析:
ImportExcel组件用xlsx库本地解析为数组,适合导入前预览、无业务校验的场景。 :::
Excel 导出
import { jsonToSheetXlsx } from '@/components/Excel/src/Export2Excel';
// 前端直接导出(本地数据组装为 Excel,不经过后端)
jsonToSheetXlsx({
data: tableData.value,
header: {
name: '名称',
statusText: '状态',
createTime: '创建时间',
},
filename: '导出数据.xlsx',
});
// 后端导出(大数据量 / 需要权限控制时):调用模块导出接口拿文件 URL
const res = await exampleExport(params); // 文件地址
window.open(res);
两种导出方式选择
| 方式 | 适用场景 | 特点 |
|---|---|---|
前端 jsonToSheetXlsx |
当前页数据、无权限要求 | 零后端交互、即时下载 |
后端 /export 接口 |
全量数据、需权限与字典翻译 | #[Permission] 控制、serializeMaps 枚举转文字、分批防溢出 |