From 990bbfd8fd4853e812cc82752a70c69d27573a99 Mon Sep 17 00:00:00 2001 From: WUSIJIAN <13825895+wsj0228@user.noreply.gitee.com> Date: Wed, 3 Dec 2025 17:24:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/customerService/product/index.ts | 12 + src/utils/request.ts | 8 + .../product/component/exportDialog.vue | 92 ++- .../product/component/importDialog.vue | 429 ++++--------- src/views/system/user/component/editUser.vue | 353 ++++++----- src/views/system/user/index.vue | 585 +++++++++--------- 6 files changed, 682 insertions(+), 797 deletions(-) diff --git a/src/api/customerService/product/index.ts b/src/api/customerService/product/index.ts index 77a55d6..cdfa43d 100644 --- a/src/api/customerService/product/index.ts +++ b/src/api/customerService/product/index.ts @@ -36,10 +36,22 @@ export function updateProduct(data: object) { }); } +// 导出产品 export function exportProduct(data: object) { return newService({ url: '/customerService/product/export', + responseType: 'blob', method: 'get', params: data, }); } + +//导入产品 +export function importProduct(data: object) { + return newService({ + url: '/customerService/product/import', + responseType: 'blob', + method: 'post', + data: data, + }); +} diff --git a/src/utils/request.ts b/src/utils/request.ts index 3f7e8b1..03e7d49 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -51,6 +51,14 @@ const responseInterceptor = (response: any) => { const res = response.data; const code = response.data.code; const message = response.data.message; + // 第65行附近添加:如果是文件流响应,直接返回整个response + if ( + response.config.responseType === 'blob' || + response.headers['content-type']?.includes('application/zip') || + response.headers['content-type']?.includes('application/octet-stream') + ) { + return response; // 直接返回原始响应,不进行JSON解析 + } if (code === 401 || message === 'token is invalid') { // 401未授权:token过期,跳转登录页 ElMessageBox.alert('登录状态已过期,请重新登录', '提示', { confirmButtonText: '确定' }) diff --git a/src/views/customerService/product/component/exportDialog.vue b/src/views/customerService/product/component/exportDialog.vue index 0f9a398..7a70815 100644 --- a/src/views/customerService/product/component/exportDialog.vue +++ b/src/views/customerService/product/component/exportDialog.vue @@ -1,55 +1,99 @@ diff --git a/src/views/customerService/product/component/importDialog.vue b/src/views/customerService/product/component/importDialog.vue index c705f84..c3ae637 100644 --- a/src/views/customerService/product/component/importDialog.vue +++ b/src/views/customerService/product/component/importDialog.vue @@ -16,43 +16,70 @@ :before-upload="beforeUpload" :on-exceed="handleExceed" :on-remove="handleRemove" + :show-file-list="true" + :auto-upload="false" >
将ZIP文件拖到此处,或点击上传
+
上传ZIP文件批量导入产品(TXT格式)
+
    -
  • 1. 请先下载模板ZIP包,查看Word文档格式要求
  • -
  • 2. 按照模板中的Word文档格式准备您的产品文档
  • -
  • 3. 将您的Word文档打包成ZIP格式上传
  • -
  • 4. 支持 .docx 格式的Word文档
  • -
  • 5. 文件大小不能超过 {{ fileSizeLimit }}MB
  • +
  • 1. 请上传包含TXT格式产品数据的ZIP压缩包
  • +
  • 2. 文件编码请使用UTF-8
  • +
  • 3. 文件大小不能超过 {{ fileSizeLimit }}MB
  • +
  • 4. 导入前请确保数据格式正确
+ + +
+ + + + +
- - +const handleUploadError = (error: any) => { + // 处理自动上传的错误 +}; + +defineExpose({ openDialog }); + \ No newline at end of file diff --git a/src/views/system/user/component/editUser.vue b/src/views/system/user/component/editUser.vue index de132fe..0fc35b9 100644 --- a/src/views/system/user/component/editUser.vue +++ b/src/views/system/user/component/editUser.vue @@ -1,18 +1,18 @@