diff --git a/src/api/archivesManagement/fileManager/fileManager.js b/src/api/archivesManagement/fileManager/fileManager.js index 82f8b7a..bff1dd1 100644 --- a/src/api/archivesManagement/fileManager/fileManager.js +++ b/src/api/archivesManagement/fileManager/fileManager.js @@ -39,11 +39,14 @@ export function addFileManageLeftApi(data) { } // 新增档案表格数据 -export function addArchiveRightApi(data) { +export function addFileManageRightApi(data) { return request({ - url: '/smartArchives/fileManage/addRight', + url: '/smartArchives/fileManage/addFileManageRight', method: 'post', - data:data + data:data, + headers: { + 'Content-Type': 'multipart/form-data' + } }) } @@ -52,16 +55,19 @@ export function updateFileManageLeftApi(data) { return request({ url: '/smartArchives/fileManage/updateFileManageLeft', method: 'post', - data:data, + data:data }) } // 修改档案目录 -export function editArchiveRightApi(data) { +export function updateFileManageRightApi(data) { return request({ - url: '/smartArchives/fileManage/editRight', + url: '/smartArchives/fileManage/updateFileManageRight', method: 'post', data:data, + headers: { + 'Content-Type': 'multipart/form-data' + } }) } diff --git a/src/utils/request.js b/src/utils/request.js index fde73c0..431b08a 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -27,6 +27,14 @@ const service = axios.create({ timeout: 30000, }) +// 判断是否为二进制数据(File/Blob) +function isBinaryData(value) { + return ( + (typeof File !== 'undefined' && value instanceof File) || + (typeof Blob !== 'undefined' && value instanceof Blob) + ) +} + // request 拦截器 service.interceptors.request.use( (config) => { @@ -139,9 +147,40 @@ service.interceptors.request.use( // POST/PUT 请求处理 if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { - let data = typeof config.data === 'object' ? JSON.stringify(config.data) : config.data let contentType = config.headers['Content-Type'] + // 处理 multipart/form-data: 仅加密非二进制字段(如 params),忽略文件本身 + const isFormData = (typeof FormData !== 'undefined') && (config.data instanceof FormData) + if (isFormData) { + if (systemConfig.requestConfig.encryptRequest && encryptRequest) { + const newForm = new FormData() + // 遍历原始 FormData,二进制原样,文本字段进行加密 + for (const [key, value] of config.data.entries()) { + if (isBinaryData(value)) { + newForm.append(key, value) + } else if (typeof value === 'string') { + const payload = value + '|' + hashWithSM3AndSalt(value) + newForm.append(key, encryptWithSM4(payload)) + } else { + // 其他类型(如对象)先转字符串再加密 + try { + const stringified = JSON.stringify(value) + const payload = stringified + '|' + hashWithSM3AndSalt(stringified) + newForm.append(key, encryptWithSM4(payload)) + } catch (e) { + // 兜底:直接追加原值 + newForm.append(key, value) + } + } + } + config.data = newForm + } + // 对于 FormData,跳过重复提交体积计算(不可可靠 stringify) + return config + } + + // 非 multipart/form-data 的 JSON 等请求 + let data = typeof config.data === 'object' ? JSON.stringify(config.data) : config.data if (contentType && contentType.includes('application/json') && typeof data !== 'undefined') { // 加密数据 if (systemConfig.requestConfig.encryptRequest && encryptRequest) { @@ -149,10 +188,10 @@ service.interceptors.request.use( } } - // 检查请求数据大小 + // 检查请求数据大小(仅针对可 stringify 的场景) const requestSize = JSON.stringify({ url: config.url, - data: data, + data: typeof data === 'string' ? data : '[non-string-data]', time: Date.now(), }).length const limitSize = 1000 * 1024 * 1024 diff --git a/src/views/archivesManagement/archClass/fileClassificationTags/index.vue b/src/views/archivesManagement/archClass/fileClassificationTags/index.vue index f61d5d6..330317c 100644 --- a/src/views/archivesManagement/archClass/fileClassificationTags/index.vue +++ b/src/views/archivesManagement/archClass/fileClassificationTags/index.vue @@ -86,7 +86,7 @@ export default { }, /** 删除操作 */ handleDelete(row) { - this.$modal.confirm(`是否确认删除文件分类标记名称为"${row.classifyName}"的数据项?`).then(() => { + this.$modal.confirm(`是否确认删除文件分类标记名称为"${row.classifyMarkName}"的数据项?`).then(() => { // 显示加载遮罩 this.$modal.loading("正在删除,请稍候..."); delArchivalCatalogueAPI({ id: row.id }).then(res => { diff --git a/src/views/archivesManagement/fileManager/components/addTableData.vue b/src/views/archivesManagement/fileManager/components/addTableData.vue index 5cec8c3..6c0deb4 100644 --- a/src/views/archivesManagement/fileManager/components/addTableData.vue +++ b/src/views/archivesManagement/fileManager/components/addTableData.vue @@ -37,23 +37,23 @@ :value="item.id"> - + - 选择文件 + accept=".pdf,.jpg,.jpeg,.png" + :http-request="customUpload"> + 选择文件
- 只能上传PDF和图片文件,且不超过10MB + + 只能上传PDF和图片文件,且不超过{{maxFileTips}} +
@@ -69,11 +69,10 @@