From efff5c8410c9657915eb05615c13c2de7421c61a Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 27 七月 2023 17:38:11 +0800 Subject: [PATCH] 修改文件下载不成功问题 --- Source/UBCS-WEB/src/api/resource/file.js | 1 Source/UBCS-WEB/src/views/code/code.vue | 4 +- Source/UBCS-WEB/src/components/Master/MasterTransfer.vue | 37 +++++++----------- Source/UBCS-WEB/src/views/system/menu.vue | 12 ++++++ Source/UBCS-WEB/src/components/file/main.vue | 30 ++++++++++++++- Source/UBCS-WEB/src/api/GetItem.js | 8 --- Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue | 11 +++-- Source/UBCS-WEB/src/store/modules/user.js | 1 Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java | 4 +- 9 files changed, 67 insertions(+), 41 deletions(-) diff --git a/Source/UBCS-WEB/src/api/GetItem.js b/Source/UBCS-WEB/src/api/GetItem.js index a1ade96..24c75dc 100644 --- a/Source/UBCS-WEB/src/api/GetItem.js +++ b/Source/UBCS-WEB/src/api/GetItem.js @@ -61,13 +61,7 @@ return request({ url: 'api/ubcs-code/mdmEngineController/exportCode', method: 'excel', - responseType: 'json', // 璁剧疆鍝嶅簲绫诲瀷涓篴rraybuffer - headers: { - 'Content-Type': 'application/vnd.ms-excel', // 璁剧疆璇锋眰澶翠负浜岃繘鍒舵祦绫诲瀷 - // 鍦ㄨ繖閲屽彲浠ヨ缃叾浠栬姹傚ご淇℃伅 - // 渚嬪锛� - // 'Authorization': 'Bearer your-token', - }, + responseType: 'blob', // 璁剧疆鍝嶅簲绫诲瀷涓篵lob params:{ ...data } diff --git a/Source/UBCS-WEB/src/api/resource/file.js b/Source/UBCS-WEB/src/api/resource/file.js index ef26a06..0af8963 100644 --- a/Source/UBCS-WEB/src/api/resource/file.js +++ b/Source/UBCS-WEB/src/api/resource/file.js @@ -41,6 +41,7 @@ url: '/api/ubcs-resource/fileController/downloadFilesByOids', method: 'post', headers:{'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'}, + responseType: 'blob', data: data }) diff --git a/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue b/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue index 5af0fcb..fe85e28 100644 --- a/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue +++ b/Source/UBCS-WEB/src/components/Master/MasterTransfer.vue @@ -134,30 +134,21 @@ exportCode({codeClassifyOid:this.codeClassifyOid,'conditionMap[oid]':ids,...exportArr}).then(res=>{ console.log('res',res) const filename = '涓嬭浇.xlsx'; // 涓嬭浇鐨勬枃浠跺悕 - const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }); - const a = document.createElement('a'); - const url = window.URL.createObjectURL(blob); - a.href = url; - a.download = filename; - a.style.display = 'none'; - document.body.appendChild(a); - a.click(); - document.body.removeChild(a); - window.URL.revokeObjectURL(url); - - // const filename = '涓嬭浇.xlsx'; // 涓嬭浇鐨勬枃浠跺悕 - // const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' }); - // - // const url = window.URL.createObjectURL(blob); - // const link = document.createElement('a'); - // link.href = url; - // link.setAttribute('download', filename); - // document.body.appendChild(link); - // link.click(); - // document.body.removeChild(link); - // URL.revokeObjectURL(url); + let blob = new Blob([res.data], { + type: res.data.type + ";charset=utf-8", + }); + let src = window.URL.createObjectURL(blob); + if (src) { + let link = document.createElement("a"); + link.style.display = "none"; + link.href = src; + link.setAttribute("download", "鏂囦欢鍚嶅瓧.xls"); + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); //涓嬭浇瀹屾垚绉婚櫎鍏冪礌 + window.URL.revokeObjectURL(src); //閲婃斁鎺塨lob瀵硅薄 + } }) - } }; }, diff --git a/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue b/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue index ff11590..4f61aaa 100644 --- a/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue +++ b/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue @@ -649,13 +649,14 @@ }; }, watch: { - // 鐩戝惉鐖剁粍浠朵紶鐨勭獥鍙f樉绀洪殣钘忕殑鍊� - visible (){ - this.isShowformulaEdit = this.visible; - } + // 鐩戝惉鐖剁粍浠朵紶鐨勭獥鍙f樉绀洪殣钘忕殑鍊硷紝浠ュ強鍊肩殑鍥炲~ + visible() { + this.isShowformulaEdit = this.visible; + this.formulaContent=this.componentRuleText || ''; + }, }, mounted() { - this.formulaContent=this.componentRuleText + }, methods: { diff --git a/Source/UBCS-WEB/src/components/file/main.vue b/Source/UBCS-WEB/src/components/file/main.vue index 2391abf..cb4d046 100644 --- a/Source/UBCS-WEB/src/components/file/main.vue +++ b/Source/UBCS-WEB/src/components/file/main.vue @@ -65,6 +65,7 @@ import {mapGetters} from "vuex"; import {dateFormat} from "@/util/date"; import {validatenull} from "@/util/validate"; +import func from "@/util/func"; export default { props: ["options","visible","ownbizOid"], @@ -380,16 +381,41 @@ let data=new FormData(); if(row && row.oid){ data.append('fileOids',row.oid) - download(data) + this.downloadFile(data); }else{ if (this.selectionList.length === 0) { this.$message.warning("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�"); return; } data.append('fileOids',this.oids) - download(data); + this.downloadFile(data); } }, + downloadFile(data){ + download(data).then(res=>{ + // console.log(res); + if(res){ + const fileNames = res.headers['content-disposition'].split(";"); + let characterSet = fileNames[2].split("filename*=")[1]; + let fileName = decodeURI(fileNames[1].split("filename=")[1],characterSet); + // console.log(fileName) + let blob = new Blob([res.data], { + type: res.data.type + ";charset=utf-8", + }); + let src = window.URL.createObjectURL(blob); + if (src) { + let link = document.createElement("a"); + link.style.display = "none"; + link.href = src; + link.setAttribute("download", fileName); + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); //涓嬭浇瀹屾垚绉婚櫎鍏冪礌 + window.URL.revokeObjectURL(src); //閲婃斁鎺塨lob瀵硅薄 + } + } + }); + }, rowDel(row) { this.$confirm("纭畾灏嗛�夋嫨鏂囦欢鍒犻櫎?", { confirmButtonText: "纭畾", diff --git a/Source/UBCS-WEB/src/store/modules/user.js b/Source/UBCS-WEB/src/store/modules/user.js index fed7910..eb2859a 100644 --- a/Source/UBCS-WEB/src/store/modules/user.js +++ b/Source/UBCS-WEB/src/store/modules/user.js @@ -224,6 +224,7 @@ return new Promise((resolve) => { getButtons().then(res => { const data = res.data.data; + // console.log(data); commit('SET_PERMISSION', data); resolve(); }) diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue index 43e6077..b7734a3 100644 --- a/Source/UBCS-WEB/src/views/code/code.vue +++ b/Source/UBCS-WEB/src/views/code/code.vue @@ -767,6 +767,7 @@ <formula-editor ref="formulaEditor" @updateFormulaContent="updateFormulaContent" + :componentRuleText="form.getValueClass" :visible.sync="formulaEditorParams.formulaEditorSettingBox" :thisSceneTableData="formulaEditorParams.thisSceneTableData" :systemVariableTableData="formulaEditorParams.systemVariableTableData"> @@ -2571,7 +2572,6 @@ this.loadlistClassifyLinkAttr(); }else if(condition === 'value'){ //鎵撳紑鍏紡缂栬緫妗嗭紝绗簩灞傚祵濂楀璇濇 - //this.$refs.formulaEditor.isShowformulaEdit = true; this.formulaEditorParams.formulaEditorSettingBox = true; }else if(condition === 'parentClassifySecOid'){ this.parentClsfyParams.isShowParentClassifySettingBox = true; @@ -2768,7 +2768,7 @@ if(enumCach == null) { getDictionary("codeFillSeparator").then(res=>{ this.enumParam.codeFillSeparator = res.data.data; - localStorage.setItem(key,JSON.stringify(res.data.data)); + localStorage.setItem("codeFillSeparator",JSON.stringify(res.data.data)); }) } }, diff --git a/Source/UBCS-WEB/src/views/system/menu.vue b/Source/UBCS-WEB/src/views/system/menu.vue index 710ca16..5382466 100644 --- a/Source/UBCS-WEB/src/views/system/menu.vue +++ b/Source/UBCS-WEB/src/views/system/menu.vue @@ -34,6 +34,12 @@ plain @click="cloneMenuButton">浠庡叾浠栬彍鍗曞厠闅嗘寜閽� </el-button> + <el-button type="info" + size="small" + icon="el-icon-connection" + plain + @click="test">test + </el-button> </template> <template slot-scope="scope" slot="menu"> <el-button @@ -431,6 +437,7 @@ }, }, computed: { + // mapGetters: 杈呭姪鍑芥暟浠呬粎灏唖tore 涓殑 getter 鏄犲皠鍒板眬閮ㄨ绠楀睘鎬� ...mapGetters(["userInfo", "permission"]), permissionList() { return { @@ -439,6 +446,7 @@ delBtn: this.vaildData(this.permission.menu_delete, false), editBtn: this.vaildData(this.permission.menu_edit, false) }; + }, ids() { let ids = []; @@ -450,6 +458,10 @@ }, methods: { + test(){ + console.log(this.permission) + }, + /** 浠庡叾浠栬彍鍗曞厠闅嗘寜閽� */ cloneMenuButton(){ if(this.selectionList.length != 1 || this.selectionList[0].category === 2){ diff --git a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java index 1e047fa..89450ec 100644 --- a/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java +++ b/Source/UBCS/ubcs-ops-api/ubcs-resource-api/src/main/java/com/vci/ubcs/resource/utils/FileDownloadUtil.java @@ -41,10 +41,10 @@ public static void downloadFile(HttpServletResponse response, FileObjectBO fileObjectBO,boolean closeInputStream) throws IOException { MediaType mediaType = MediaTypeFactory.getMediaType(fileObjectBO.getBucketName() + "." + fileObjectBO.getFileExtension()).orElse(MediaType.APPLICATION_OCTET_STREAM); // 璁剧疆寮哄埗涓嬭浇涓嶆墦寮� - response.setContentType(mediaType.toString()); + response.setContentType(mediaType.toString()+";application/force-download;charset=UTF-8"); try{ String fileName = URLEncoder.encode(fileObjectBO.getName() + "." + fileObjectBO.getFileExtension(), "UTF8"); - response.addHeader("Content-Disposition", "attachment; filename="+ fileName+ ";filename*=utf-8''" + fileName); + response.addHeader("Content-Disposition", "attachment;filename="+ fileName+ ";filename*=utf-8''"); }catch(Exception e){ if(log.isErrorEnabled()){ log.error("璁剧疆鏂囦欢鐨勫悕绉板埌鍝嶅簲娴佺殑鏃跺�欏嚭閿�",e); -- Gitblit v1.9.3