cxmo пре 1 година
родитељ
комит
faeab717da

+ 31 - 6
src/mixins/index.js

@@ -136,26 +136,49 @@ const mixins = {
 				});
 			})
 		},
+		//判断文件名是否含有类型
+		checkFileType(fileName){
+			if (fileName.match(/\.(jpg|jpeg|png|gif|svg|tif)/)) {
+				return true
+			} else if (fileName.match(/\.(doc|docx|txt)/)) {
+				return true
+			} else if (fileName.match(/\.(xls|xlsx)/)) {
+				return true
+			} else if (fileName.match(/\.(pdf)/)) {
+				return true
+			}else if (fileName.match(/\.(mp3)/)) {
+				return true
+			}else if (fileName.match(/\.(pptx|ppt)/)) {
+				return true
+			}else if (fileName.match(/\.(zip|7z)/)) {
+				return true
+			}
+			else {
+				return false;
+			}
+		},
 		// 下载文件
-		handleDownloadResource(url,fileName){
+		handleDownloadResource(url,fileName,successCb,faileCb){
 			const b=new http.Base64() 
 			const arr=url.split('/')
 			const _fileName=arr[arr.length-1]
+			const fileNameType = this.checkFileType(fileName)?fileName.split('.').pop():''
+			const _fileNameType = this.checkFileType(_fileName)?_fileName.split('.').pop():''
 			apiDownloadResource({
-				FileName:_fileName,
+				FileName:/* fileName||_fileName */'',
 				FileUrl:b.encode(url) 
 			}).then(res=>{
 				console.log(res);
 				const {status,data}=res
 				if(status!=200){
-					Message.waring('下载失败')
+					Message.warning('下载失败')
 					return
 				}
 				const content = data
 				const blob = new Blob([content])
 				if ('download' in document.createElement('a')) {
 					const elink = document.createElement('a')
-					elink.download = filename || _fileName
+					elink.download = fileNameType?fileName:(fileName+'.'+_fileNameType)
 					elink.style.display = 'none'
 					elink.href = window.URL.createObjectURL(blob)
 					document.body.appendChild(elink)
@@ -163,10 +186,12 @@ const mixins = {
 					window.URL.revokeObjectURL(elink.href)
 					document.body.removeChild(elink)
 				} else {
-					navigator.msSaveBlob(blob, filename)
+					navigator.msSaveBlob(blob, fileNameType?fileName:(fileName+'.'+_fileNameType))
 				}
+				successCb&&successCb()
 			}).catch(()=>{
-				Message.waring('下载失败')
+				Message.warning('下载失败')
+				faileCb&&faileCb()
 			})
 		}
 		

+ 3 - 2
src/views/datasheet_manage/customAnalysis/list.vue

@@ -639,7 +639,7 @@ export default {
     },
 
     downLoad(url, filename) {
-      const request = new window.XMLHttpRequest();
+      /* const request = new window.XMLHttpRequest();
       request.open("GET", url, true);
       request.responseType = "blob";
       request.onload = () => {
@@ -652,7 +652,8 @@ export default {
         document.body.append(a);
         a.click();
       };
-      request.send();
+      request.send(); */
+      this.handleDownloadResource(url,filename)
     },
     /* 保存表格 */
     saveHandle: _.debounce(async function () {

+ 3 - 2
src/views/ppt_manage/newVersion/pptCatalog.vue

@@ -831,7 +831,7 @@ export default {
           a.href = PptxUrl 
           a.download=`${Title}aaa.pptx`
           a.click(); */
-          const x = new XMLHttpRequest()
+          /* const x = new XMLHttpRequest()
           x.open('GET', PptxUrl, true)
           x.responseType = 'blob'
           x.onload = () => {
@@ -842,7 +842,8 @@ export default {
             a.click();
             window.URL.revokeObjectURL(url)
           }
-          x.send()
+          x.send() */
+          this.handleDownloadResource(PptxUrl,`${Title}.pptx`)
         }
       }else{
         this.$message.warning(this.$t('Slides.please_preview_info'))

+ 3 - 2
src/views/ppt_manage/newVersion/pptEnCatalog.vue

@@ -774,7 +774,7 @@ export default {
         if(isIE){
           window.open(PptxUrl, '_blank')
         }else{
-          const x = new XMLHttpRequest()
+          /* const x = new XMLHttpRequest()
           x.open('GET', PptxUrl, true)
           x.responseType = 'blob'
           x.onload = () => {
@@ -784,7 +784,8 @@ export default {
             a.download=`${Title}.pptx`
             a.click();
           }
-          x.send()
+          x.send() */
+          this.handleDownloadResource(PptxUrl,`${Title}.pptx`)
         }
       }else{
         this.$message.warning(this.$t('Slides.please_preview_info'))

+ 27 - 2
src/views/report_manage/cloudDisk.vue

@@ -479,7 +479,7 @@ import 'streamsaver/examples/zip-stream'
             downloadHint.close()
           })
         }else if(row.ItemType==2){
-          downloadFileByUrl(row.ResourceUrl).then(res=>{
+          /* downloadFileByUrl(row.ResourceUrl).then(res=>{
             // console.log(res);
             downloadByFlow(res,null,row.ItemName)
             this.$message.success(row.ItemName + this.$t('ReportManage.CloudPage.download_success_msg'))
@@ -487,6 +487,13 @@ import 'streamsaver/examples/zip-stream'
             this.$message.error(row.ItemName + '下载失败')
           }).finally(()=>{
             downloadHint.close()
+          }) */
+          this.handleDownloadResource(row.ResourceUrl,row.ItemName,()=>{
+            this.$message.success(row.ItemName + this.$t('ReportManage.CloudPage.download_success_msg'))
+            downloadHint.close()
+          },()=>{
+            this.$message.error(row.ItemName + '下载失败')
+            downloadHint.close()
           })
         }
       },
@@ -531,7 +538,7 @@ import 'streamsaver/examples/zip-stream'
             })
           }else if(item.ItemType==2){
             // 下载文件
-            downloadFileByUrl(item.ResourceUrl).then(res=>{
+            /* downloadFileByUrl(item.ResourceUrl).then(res=>{
               // console.log(res);
               downloadByFlow(res,null,item.ItemName)
               this.$message.success(item.ItemName + this.$t('ReportManage.CloudPage.download_success_msg'))
@@ -543,6 +550,24 @@ import 'streamsaver/examples/zip-stream'
                 downloadHint.close()
                 this.$refs.tableRef.clearSelection()
               }
+            }) */
+            const that = this
+            this.handleDownloadResource(item.ResourceUrl,item.ItemName,()=>{
+                this.$message.success(item.ItemName + this.$t('ReportManage.CloudPage.download_success_msg'))
+                downloadHint.close()
+                downNumber++
+                if(downNumber == selectLength){
+                    downloadHint.close()
+                    that.$refs.tableRef.clearSelection()
+                }
+            },()=>{
+                this.$message.error(item.ItemName + '下载失败')
+                downloadHint.close()
+                downNumber++
+                if(downNumber == selectLength){
+                    downloadHint.close()
+                    that.$refs.tableRef.clearSelection()
+                }
             })
           }
         })

+ 3 - 2
src/views/smartReport/reportList.vue

@@ -865,7 +865,7 @@ export default {
         },
         // 下载音频
         handleDownloadVoice(e){
-            const x = new window.XMLHttpRequest();
+            /* const x = new window.XMLHttpRequest();
             x.open('GET', e.VideoUrl, true);
             x.responseType = 'blob';
             x.onload = () => {
@@ -880,7 +880,8 @@ export default {
                 document.body.append(a)
                 a.click();
             };
-            x.send();
+            x.send(); */
+            this.handleDownloadResource(e.VideoUrl,e.VideoName+'.mp3')
         }
     },