Files
rxthinkcmf-wiki/RXThinkCMF_Laravel13_EleVue/zh/tools/file-components.md
T
2026-10-08 17:50:29 +08:00

3.3 KiB
Raw Blame History

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 枚举转文字、分批防溢出