diff --git a/generator-code-server/generator-code/src/main/java/cn/bunny/domain/dto/VmsArgumentDto.java b/generator-code-server/generator-code/src/main/java/cn/bunny/domain/dto/VmsArgumentDto.java index 95e96db..aa7f7c3 100644 --- a/generator-code-server/generator-code/src/main/java/cn/bunny/domain/dto/VmsArgumentDto.java +++ b/generator-code-server/generator-code/src/main/java/cn/bunny/domain/dto/VmsArgumentDto.java @@ -41,5 +41,6 @@ public class VmsArgumentDto { @Schema(name = "sql", description = "SQL 语句") private String sql; + } diff --git a/generator-code-server/generator-code/src/main/java/cn/bunny/service/impl/VmsServiceImpl.java b/generator-code-server/generator-code/src/main/java/cn/bunny/service/impl/VmsServiceImpl.java index f17cf78..541a070 100644 --- a/generator-code-server/generator-code/src/main/java/cn/bunny/service/impl/VmsServiceImpl.java +++ b/generator-code-server/generator-code/src/main/java/cn/bunny/service/impl/VmsServiceImpl.java @@ -62,7 +62,7 @@ public class VmsServiceImpl implements VmsService { // 下载文件名称 long currentTimeMillis = System.currentTimeMillis(); String digestHex = MD5.create().digestHex(currentTimeMillis + ""); - String generateZipFilename = digestHex + ".zip"; + String generateZipFilename = "generator-" + digestHex.substring(0, 4) + ".zip"; // 设置响应头 HttpHeaders headers = new HttpHeaders(); diff --git a/generator-code-server/generator-code/src/main/resources/static/src/config/axios-config.js b/generator-code-server/generator-code/src/main/resources/static/src/config/axios-config.js index 49562eb..bf994d6 100644 --- a/generator-code-server/generator-code/src/main/resources/static/src/config/axios-config.js +++ b/generator-code-server/generator-code/src/main/resources/static/src/config/axios-config.js @@ -1,7 +1,7 @@ // axios 配置 const axiosInstance = axios.create({ baseURL: 'http://localhost:8800/api', - timeout: 10000, + timeout: 16000, headers: {'Content-Type': 'application/json;charset=utf-8'}, }); diff --git a/generator-code-server/generator-code/src/main/resources/static/src/views/home/MainForm.js b/generator-code-server/generator-code/src/main/resources/static/src/views/home/MainForm.js index b7a8b11..4c8a727 100644 --- a/generator-code-server/generator-code/src/main/resources/static/src/views/home/MainForm.js +++ b/generator-code-server/generator-code/src/main/resources/static/src/views/home/MainForm.js @@ -62,11 +62,7 @@ const MainForm = { {{ errors.tablePrefixes || '请输入去除开头前缀' }} - - - - - +
{{item}} @@ -141,7 +137,7 @@ const MainForm = { @click="onClearGeneratorData">清空生成记录
- +
@@ -272,6 +268,54 @@ const MainForm = { this.webList = data.web.map(item => ({...item, checked: false})); }, + /** + * 下载Zip文件 + * @returns {Promise} + */ + async onDownloadZip() { + try { + const response = await axiosInstance({ + url: "/vms/downloadByZip", + method: "POST", + data: this.form, + responseType: 'blob' // 重要:指定响应类型为blob + }); + + // 从响应头中获取文件名 + const contentDisposition = response.headers['content-disposition']; + let fileName = 'download.zip'; + if (contentDisposition) { + const fileNameMatch = contentDisposition.match(/filename=(.+)/); + if (fileNameMatch && fileNameMatch[1]) { + fileName = fileNameMatch[1]; + // 处理可能的编码文件名(如UTF-8编码) + if (fileName.startsWith("UTF-8''")) { + fileName = decodeURIComponent(fileName.replace("UTF-8''", '')); + } + } + } + + // 创建Blob对象 + const blob = new Blob([response.data]); + + // 创建下载链接 + const downloadUrl = window.URL.createObjectURL(blob); + const link = document.createElement('a'); + link.href = downloadUrl; + link.download = fileName; + document.body.appendChild(link); + + // 触发点击下载 + link.click(); + + // 清理 + window.URL.revokeObjectURL(downloadUrl); + document.body.removeChild(link); + } catch (error) { + console.error('下载失败:', error); + } + }, + /** * 全选指定列表 * @param {Array} list - 要处理的列表