Ver Fonte

Merge branch 'fix_jb'

cxmo há 1 ano atrás
pai
commit
4d146a9814

+ 3 - 0
src/api/http.js

@@ -117,6 +117,9 @@ export default {
       ],
     })
       .then((response) => {
+        if(responseType==='blob'){
+          return response
+        }
         return checkStatus(response);
       })
       .catch((res) => {

+ 7 - 1
src/api/modules/oldApi.js

@@ -336,6 +336,11 @@ const getRealPublicSettings = params => {
 	return http.get('/sysuser/public_config')
 }
 
+// 下载文件公共接口
+const apiDownloadResource=params=>{
+	return http.get('/resource/file/download',params,'blob')
+}
+
 export {
 	userLogin,
 	modifyPwd,
@@ -414,5 +419,6 @@ export {
 	setChapterEnable,
 	setChapterSort,
 	getRealPublicSettings,
-	userLogOut
+	userLogOut,
+	apiDownloadResource
 }

+ 42 - 0
src/mixins/index.js

@@ -2,6 +2,8 @@
  * Created by xieli on 2018/7/12 0012.
  */
 import http from "api/http.js";
+import {apiDownloadResource} from '@/api/modules/oldApi'
+import {Message} from "element-ui"
 const mixins = {
 	filters: {
 		// 显示时间为 2021.07.22 
@@ -133,6 +135,46 @@ const mixins = {
 					// });       
 				});
 			})
+		},
+		// 下载文件
+		handleDownloadResource(url,fileName,successCb,faileCb){
+			const b=new http.Base64() 
+			const arr=url.split('/')
+			const _fileName=arr[arr.length-1]
+			const fileNameTypeArr = fileName.split('.')
+			const _fileNameTypeArr = _fileName.split('.')
+			const fileNameType = fileNameTypeArr.length>1?fileNameTypeArr[fileNameTypeArr.length-1]:''
+			const _fileNameType = _fileNameTypeArr.length>1?_fileNameTypeArr[_fileNameTypeArr.length-1]:''
+			apiDownloadResource({
+				FileName:/* fileName||_fileName */'',
+				FileUrl:b.encode(url) 
+			}).then(res=>{
+				console.log(res);
+				const {status,data}=res
+				if(status!=200){
+					Message.warning('下载失败')
+					return
+				}
+				//bus.$parseData(response);
+				const content = data
+				const blob = new Blob([content])
+				if ('download' in document.createElement('a')) {
+					const elink = document.createElement('a')
+					elink.download = fileNameType?fileName:(fileName+'.'+_fileNameType)
+					elink.style.display = 'none'
+					elink.href = window.URL.createObjectURL(blob)
+					document.body.appendChild(elink)
+					elink.click()
+					window.URL.revokeObjectURL(elink.href)
+					document.body.removeChild(elink)
+				} else {
+					navigator.msSaveBlob(blob, fileNameType?fileName:(fileName+'.'+_fileNameType))
+				}
+				successCb&&successCb()
+			}).catch(()=>{
+				Message.warning('下载失败')
+				faileCb&&faileCb()
+			})
 		}
 		
 	}

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

@@ -660,7 +660,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 = () => {
@@ -673,7 +673,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/datasheet_manage/sheetList.vue

@@ -747,7 +747,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 = () => {
@@ -760,7 +760,8 @@ export default {
         document.body.append(a);
         a.click();
       };
-      request.send();
+      request.send(); */
+      this.handleDownloadResource(url,filename)
     },
 
     /* 保存表格 */

+ 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()
           })
         }
       },
@@ -541,7 +548,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'))
@@ -553,6 +560,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()
+                }
             })
           }
         })

+ 14 - 1
src/views/report_manage/mixins/reportMixin.js

@@ -87,7 +87,7 @@ export default {
           "insertHR",
           "selectAll",
           "clearFormatting",
-          "html",
+          /* "html", */
           "undo",
           "redo",
         ],
@@ -165,6 +165,19 @@ export default {
           "image.error": function (error, response) {
             that.autoSaveFlag = true;
           },
+          "paste.before":function(e,editor){
+            let content = e.clipboardData.getData('text/html');
+           // console.log(content)
+            var tempDiv = document.createElement('div');
+            tempDiv.innerHTML = content;
+            var iframes = tempDiv.querySelectorAll('iframe');
+            const srcArr = Array.from(iframes).map(i=>i.src)
+            //console.log(srcArr);
+            if(srcArr.filter(i=>!i.includes(that.$setting.dynamicOutLinks.ChartViewUrl)).length){
+                that.$message.warning("粘贴内容含有外链,请核对内容或粘贴纯文本")
+                return false
+            }
+          },
         },
         charCounterCount: false,
         reportloadding: false,

+ 17 - 1
src/views/report_manage/reportEn/reportEditor.vue

@@ -391,6 +391,7 @@ import importSemantics from '../components/importSemantics.vue';
 export default {
 	mixins:[mixinMsg,reportMixin,reportApproveConfig],
 	data() {
+        let that = this;
 		return {
 			//批量导入图表
 			importChartNum:0,//批量导入图表的数量 如果大于0则说明在加载
@@ -497,7 +498,22 @@ export default {
         placeholderText:localStorage.getItem('i18n') == 'en' ? 'Please Overview' : '请输入overview',
         language: localStorage.getItem('i18n') == 'en' ? 'en' : "zh_cn",
         //允许粘贴的样式
-        pasteAllowedStyleProps: ['font-family', 'font-size', 'color']
+        pasteAllowedStyleProps: ['font-family', 'font-size', 'color'],
+        events:{
+            "paste.before":function(e,editor){
+                let content = e.clipboardData.getData('text/html');
+                // console.log(content)
+                var tempDiv = document.createElement('div');
+                tempDiv.innerHTML = content;
+                var iframes = tempDiv.querySelectorAll('iframe');
+                const srcArr = Array.from(iframes).map(i=>i.src)
+                //console.log(srcArr);
+                if(srcArr.filter(i=>!i.includes(that.$setting.dynamicOutLinks.ChartViewUrl)).length){
+                    that.$message.warning("粘贴内容含有外链,请核对内容或粘贴纯文本")
+                    return false
+                }
+            },
+        }
       },
 
 			showDSFB:false,//显示定时发布弹窗

+ 14 - 1
src/views/smartReport/components/TextEdit.vue

@@ -54,7 +54,7 @@ export default {
                     "insertHR",
                     "selectAll",
                     "clearFormatting",
-                    "html",
+                    /* "html", */
                     "undo",
                     "redo",
                 ],
@@ -106,6 +106,19 @@ export default {
                         // that.$emit('textChange', that.html)
                         that.sendHtml()
                     },
+                    "paste.before":function(e,editor){
+                        let content = e.clipboardData.getData('text/html');
+                        // console.log(content)
+                        var tempDiv = document.createElement('div');
+                        tempDiv.innerHTML = content;
+                        var iframes = tempDiv.querySelectorAll('iframe');
+                        const srcArr = Array.from(iframes).map(i=>i.src)
+                        //console.log(srcArr);
+                        if(srcArr.filter(i=>!i.includes(that.$setting.dynamicOutLinks.ChartViewUrl)).length){
+                            that.$message.warning("粘贴内容含有外链,请核对内容或粘贴纯文本")
+                            return false
+                        }
+                    },
                 },
             }
         }

+ 29 - 27
src/views/smartReport/reportList.vue

@@ -506,31 +506,32 @@ export default {
     methods:{
         // 下载报告图片
         handleDownReportImg(imgUrl,title){
-            let img=new Image()
-            img.setAttribute('crossOrigin', 'anonymous');
-            img.src=imgUrl
-            img.onload=()=>{
-                let canvas = document.createElement("canvas");
-                canvas.width = img.width;
-                canvas.height = img.height;
-                let context = canvas.getContext('2d');
-                context.drawImage(img, 0, 0, img.width, img.height);
-                let dataURL = canvas.toDataURL("image/png", 1);
-                const a=document.createElement('a')
-                a.setAttribute("download",title)
-                a.style.display = "none"
-                a.href=dataURL
-                document.body.appendChild(a);
-                a.click()
-            }
-            img.onerror=(e)=>{
-                console.log(e);
-                this.$message.warning(this.$t('ReportManage.smart_msg.please_manually_save'))
-                if(imgUrl){
-                    this.reportImgUrl=imgUrl
-                    this.showReportImg=true
-                }
-            }
+            this.handleDownloadResource(imgUrl,title)
+            // let img=new Image()
+            // img.setAttribute('crossOrigin', 'anonymous');
+            // img.src=imgUrl
+            // img.onload=()=>{
+            //     let canvas = document.createElement("canvas");
+            //     canvas.width = img.width;
+            //     canvas.height = img.height;
+            //     let context = canvas.getContext('2d');
+            //     context.drawImage(img, 0, 0, img.width, img.height);
+            //     let dataURL = canvas.toDataURL("image/png", 1);
+            //     const a=document.createElement('a')
+            //     a.setAttribute("download",title)
+            //     a.style.display = "none"
+            //     a.href=dataURL
+            //     document.body.appendChild(a);
+            //     a.click()
+            // }
+            // img.onerror=(e)=>{
+            //     console.log(e);
+            //     this.$message.warning(this.$t('ReportManage.smart_msg.please_manually_save'))
+            //     if(imgUrl){
+            //         this.reportImgUrl=imgUrl
+            //         this.showReportImg=true
+            //     }
+            // }
         },
 
         // 删除某个报告
@@ -864,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 = () => {
@@ -879,7 +880,8 @@ export default {
                 document.body.append(a)
                 a.click();
             };
-            x.send();
+            x.send(); */
+            this.handleDownloadResource(e.VideoUrl,e.VideoName+'.mp3')
         }
     },