diff --git a/src/stores/themeConfig.ts b/src/stores/themeConfig.ts index 2c12fb1..397dfcf 100644 --- a/src/stores/themeConfig.ts +++ b/src/stores/themeConfig.ts @@ -135,7 +135,7 @@ export const useThemeConfig = defineStore('themeConfig', { // 默认初始语言,可选值"",默认 zh-cn globalI18n: 'zh-cn', // 默认全局组件大小,可选值"",默认 'large' - globalComponentSize: 'large', + globalComponentSize: 'default', }, }), actions: { diff --git a/src/utils/zipdownload.ts b/src/utils/zipdownload.ts new file mode 100644 index 0000000..d6e6762 --- /dev/null +++ b/src/utils/zipdownload.ts @@ -0,0 +1,110 @@ +import axios from 'axios' +import {getToken} from "/@/utils/gfast" +import { ElMessage,ElLoading } from 'element-plus'; +const mimeMap = { + xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + zip: 'application/zip' +} + +const baseUrl = import.meta.env.VITE_API_URL +export function downLoadZip(str:string, filename:string) { + var url = baseUrl + str + axios({ + method: 'get', + url: url, + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + }).then(res => { + if(filename){ + res.headers['content-disposition'] = 'attachment; filename='+filename; + } + resolveBlob(res, mimeMap.zip) + }) +} + +// 下载插件 +export function downLoadXml (url:string,params:any,rType='get') { + url = baseUrl + url + const loading = ElLoading.service({ + lock: true, + text: '正在生成导出数据...', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }) + let option = { + url: url, + params:params, + timeout:300000, + method: 'get', + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + } + if(rType=='post'){ + option = { + url: url, + data:params, + timeout:300000, + method: 'post', + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + } + } + axios(option).then(res => { + loading.close() + if (res.status !== 200) { + ElMessage({ + message: '发生错误,导出失败。', + type: 'error' + }) + return + } + try { + const aLink = document.createElement('a') + var blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) + var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') + var contentDisposition = decodeURI(res.headers['content-disposition'] || res.headers['Content-Disposition']) + var result = patt.exec(contentDisposition) + var fileName = result[1] + fileName = fileName.replace(/"/g, '') + aLink.href = URL.createObjectURL(blob) + aLink.setAttribute('download', fileName) // 设置下载文件名称 + document.body.appendChild(aLink) + aLink.click() + document.body.appendChild(aLink) + } catch (e) { + console.log(e) + ElMessage({ + message: '下载失败,可能您登录状态过期,请重新登录后下载。', + type: 'error' + }) + } + }).catch(e=>{ + console.log(e) + loading.close() + ElMessage({ + message: '导出失败', + type: 'error' + }) + }) +} + +/** + * 解析blob响应内容并下载 + * @param {*} res blob响应内容 + * @param {String} mimeType MIME类型 + */ +export function resolveBlob(res: any, mimeType:any) { + const aLink = document.createElement('a') + var blob = new Blob([res.data], { type: mimeType }) + // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名; + var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') + var contentDisposition = decodeURI(res.headers['content-disposition']||res.headers['Content-Disposition']) + var result = patt.exec(contentDisposition) + var fileName = result[1] + fileName = fileName.replace(/\"/g, '') + aLink.href = URL.createObjectURL(blob) + aLink.setAttribute('download', fileName) // 设置下载文件名称 + document.body.appendChild(aLink) + aLink.click() + document.body.appendChild(aLink) +} diff --git a/src/views/system/tools/gen/component/basicInfo.vue b/src/views/system/tools/gen/component/basicInfo.vue index 1ede471..53c2536 100644 --- a/src/views/system/tools/gen/component/basicInfo.vue +++ b/src/views/system/tools/gen/component/basicInfo.vue @@ -46,12 +46,17 @@ - + - + + + + + + @@ -99,7 +104,6 @@ export default defineComponent({ return tag; }; const close = ()=>{ - console.log('xxxxxxxxxxxxxxxxxxxxxxx') emit('close') } const rules = reactive({ diff --git a/src/views/system/tools/gen/component/model.ts b/src/views/system/tools/gen/component/model.ts index 0f851a7..e61ea71 100644 --- a/src/views/system/tools/gen/component/model.ts +++ b/src/views/system/tools/gen/component/model.ts @@ -66,6 +66,7 @@ export interface TableDataInfo extends TableData{ remark:string; overwrite:boolean; showDetail:boolean; + excelPort:boolean; tplCategory:string; packageName:string; moduleName:string; diff --git a/vite.config.ts b/vite.config.ts index c8a6fc0..dd54cd8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -20,7 +20,7 @@ const viteConfig = defineConfig((mode: ConfigEnv) => { base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH, hmr: true, optimizeDeps: { - include: ['element-plus/lib/locale/lang/zh-cn', 'element-plus/lib/locale/lang/en', 'element-plus/lib/locale/lang/zh-tw'], + include: ['element-plus/es/locale/lang/zh-cn', 'element-plus/es/locale/lang/en', 'element-plus/es/locale/lang/zh-tw'], }, server: { host: '0.0.0.0',