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 @@
- - - -