本次改造统一所有模块的文件上传:
file_url 列,全部改用 system_storage_attachment 中间表关联/system/storage-blob/upload,附件通过 attachment API 关联| 表名 | 模块 |
|---|---|
erp_purchase_order |
ERP 采购订单 |
erp_purchase_request |
ERP 采购申请 |
erp_sale_order |
ERP 销售订单 |
hrm_leave_application |
HRM 请假 |
hrm_resignation_application |
HRM 离职 |
hrm_transfer_application |
HRM 调动 |
文件只能通过 system_storage_attachment 中间表关联:
| API | 说明 |
|---|---|
POST /system/storage-blob/upload |
上传文件(files 参数,multipart) |
POST /system/storage-attachment/bind |
绑定附件到业务记录 |
GET /system/storage-attachment/list |
查询附件(按 recordType + recordId) |
DELETE /system/storage-attachment/delete |
批量删除附件 |
文件:src/components/upload/use-upload.ts
| 改动项 | 旧值 | 新值 |
|---|---|---|
| 上传接口 | POST /infra/file/upload / S3 直传 |
POST /system/storage-blob/upload |
| 请求方式 | 自定义 createFile0() / PUT S3 |
FormData + requestClient.post() |
| uploadUrl | ${apiURL}/infra/file/upload |
${apiURL}/system/storage-blob/upload |
以下模块的 FileUpload / ImageUpload 组件已移除 maxNumber、maxSize、accept 限制:
| 文件 | 字段 |
|---|---|
src/views/erp/purchase/order/data.ts |
fileUrl |
src/views/erp/purchase/request/data.ts |
fileUrl |
src/views/erp/purchase/return/data.ts |
fileUrl |
src/views/erp/purchase/in/data.ts |
fileUrl |
src/views/erp/sale/order/data.ts |
fileUrl |
src/views/erp/sale/return/data.ts |
fileUrl |
src/views/erp/sale/out/data.ts |
fileUrl |
src/views/erp/stock/in/data.ts |
fileUrl |
src/views/erp/stock/out/data.ts |
fileUrl |
src/views/erp/stock/move/data.ts |
fileUrl |
src/views/erp/stock/check/data.ts |
fileUrl |
src/views/erp/finance/receipt/data.ts |
fileUrl |
src/views/erp/finance/payment/data.ts |
fileUrl |
| 文件 | 字段 |
|---|---|
src/views/im/manager/face/pack/data.ts |
icon |
src/views/im/manager/face/pack/data.ts |
url |
src/views/im/manager/channel/material/data.ts |
coverUrl |
src/views/im/manager/channel/list/data.ts |
avatar |
src/views/mes/md/item/modules/product-media-list.vue |
url |
| 文件 | 字段 |
|---|---|
src/views/mes/pd/project/modules/document-form.vue |
fileUrl |
3 个 HRM 模块的"附件"字段从 Input 改为 FileUpload:
| 文件 | 字段 | 改动 |
|---|---|---|
src/views/hrm/leave/data.ts |
fileUrl |
component: 'Input' → component: 'FileUpload' |
src/views/hrm/resignation/data.ts |
fileUrl |
component: 'Input' → component: 'FileUpload' |
src/views/hrm/transfer/data.ts |
fileUrl |
component: 'Input' → component: 'FileUpload' |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /system/storage-blob/upload |
上传文件,files(multipart 数组) |
| POST | /system/storage-attachment/bind |
绑定附件到业务记录 |
| GET | /system/storage-attachment/list |
查询业务记录的附件列表 |
| DELETE | /system/storage-attachment/delete |
批量删除附件 |
上传响应:
[
{
"id": 123,
"url": "https://xxx.com/u_abc123.pdf",
"previewURL": "https://xxx.com/preview/u_abc123.pdf",
"name": "合同.pdf",
"downloadURL": "https://xxx.com/download/u_abc123.pdf"
}
]
绑定请求:
{
"application": "file",
"recordType": "mes_purchase_order",
"recordId": 1,
"blobItems": [{ "blobId": 123 }]
}
POST /system/storage-blob/upload 返回 [{ id, url, name }]POST /system/storage-attachment/bind 关联 blobIdGET /system/storage-attachment/list 加载已有附件DELETE /system/storage-attachment/delete新 API 模块位于 src/api/system/storage/index.ts:
import { uploadFile, listAttachments, bindAttachments, deleteAttachments } from '#/api/system/storage';
格式:{模块前缀}_{业务表名}
| 模块 | recordType | 说明 |
|---|---|---|
| MES 采购订单 | mes_purchase_order |
采购订单附件 |
| MES 工单 | mes_pro_work_order |
生产工单附件 |
| MES 设备 | mes_dv_machinery |
设备档案附件 |
| MES 文档 | mes_pd_document |
项目文档附件 |
| CRM 客户 | crm_customer |
客户附件 |
| ERP 采购订单 | erp_purchase_order |
ERP 采购订单附件 |
POST /system/storage-blob/upload 上传文件,FormData 字段名为 filespreviewURL 或 url 字段/infra/file/* 接口