From 7792cd398f6c4a2d10187cb548ba687dc8f62c84 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 15 Mar 2024 00:01:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor(generator):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E7=94=B1=E6=8C=87=E5=AE=9A=E8=B7=AF=E5=BE=84=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E8=B0=83=E6=95=B4=E4=B8=BA=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=EF=BC=8C=E6=9B=B4=E6=96=B9=E4=BE=BF=E5=A4=8D?= =?UTF-8?q?=E6=9D=82=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/tool/generator.ts | 7 ++++-- src/utils/request.ts | 3 +++ src/views/tool/generator/index.vue | 37 +++++++++++++++++++++--------- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/api/tool/generator.ts b/src/api/tool/generator.ts index f604580..c2d110c 100644 --- a/src/api/tool/generator.ts +++ b/src/api/tool/generator.ts @@ -57,7 +57,6 @@ export interface GenConfigRecord { tableName: string; moduleName: string; packageName: string; - frontendPath: string; businessName: string; author: string; tablePrefix: string; @@ -89,5 +88,9 @@ export function preview(tableName: string) { } export function generate(tableName: string) { - return axios.post(`${BASE_URL}/${tableName}`); + return axios.request({ + url: `${BASE_URL}/${tableName}`, + method: 'post', + responseType: 'blob', + }); } diff --git a/src/utils/request.ts b/src/utils/request.ts index 4256509..882aa2e 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -46,6 +46,9 @@ axios.interceptors.response.use( ) { return response; } + if (response.config.responseType === 'blob') { + return response; + } const res = response.data; if (res.success) { return res; diff --git a/src/views/tool/generator/index.vue b/src/views/tool/generator/index.vue index 0490dd2..09007c0 100644 --- a/src/views/tool/generator/index.vue +++ b/src/views/tool/generator/index.vue @@ -206,7 +206,26 @@ */ const handleGenerate = (tableName: string) => { generate(tableName).then((res) => { - proxy.$message.success(res.msg); + const contentDisposition = res.headers['content-disposition']; + const pattern = new RegExp('filename=([^;]+\\.[^\\.;]+);*'); + const result = pattern.exec(contentDisposition) || ''; + // 对名字进行解码 + const fileName = window.decodeURI(result[1]); + // 创建下载的链接 + const blob = new Blob([res.data]); + const downloadElement = document.createElement('a'); + const href = window.URL.createObjectURL(blob); + downloadElement.style.display = 'none'; + downloadElement.href = href; + // 下载后文件名 + downloadElement.download = fileName; + document.body.appendChild(downloadElement); + // 点击下载 + downloadElement.click(); + // 下载完成,移除元素 + document.body.removeChild(downloadElement); + // 释放掉 blob 对象 + window.URL.revokeObjectURL(href); }); }; @@ -256,6 +275,9 @@
+ + 默认已开启 Mock,下载/导出类操作会出现错误,例如:下载的文件无法打开,点击查看解决方法 +
@@ -266,7 +288,7 @@ v-model="queryParams.tableName" placeholder="输入表名称搜索" allow-clear - style="width: 150px" + style="width: 230px" @press-enter="handleQuery" /> @@ -283,7 +305,6 @@
- - - -