<template> <div class="custom-dialog" v-loading="loading" :element-loading-text="uploading?'涓婁紶涓�':$t('view.checking')" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)" > <div class="body-cen"> <div class="tmpl"> {{$t('view.appendices')}}锛�<span @click="downloadFile">{{$t('view.dowm_moudles')}}</span> </div> <div class="upload"> <el-input class="input" v-model="excelPath"></el-input> <div> <el-upload multiple action="" name="files" :show-file-list='false' :http-request='uploadImg' :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="beforeUpload" :on-exceed="handleExceed" accept=".xls,.xlsx" > <span class="select">{{$t('view.select_files')}}</span> </el-upload> </div> </div> <div class="import" v-show="hiddenImport"> <span class="excel-btn" @click="importExcel('excelimport')"> <i class="importSurfaceicon" /> {{$t('view.import_excel')}} </span> <span class="excel-btn excel-validation" @click="importExcel('validation')"> <i class="importSurfaceicon" /> {{$t('view.check_excel')}} </span> </div> <br> <el-progress v-show="isShowProgress" :percentage="importProgress" :stroke-width="8"></el-progress> </div> </div> </template> <script> import Constant from "@/Constant.js"; export default { props: [ "viewId", "act", "view", "openParams" ], beforeDestroy(){ window.clearInterval(this.task) }, data: function() { return { Constant, excelPath:'', loading: false, isShowProgress: false,//鏄惁鏄剧ず瀵煎叆excell杩涘害鏉� importProgress: 0, uploading:false, task:'', hiddenImport:true, }; }, methods: { downloadFile() { let path = this.act.excelTemplate let name = path.split("/")[path.split("/").length-1]; this.$api.getFileExisted( encodeURIComponent(name), encodeURIComponent(path), { onSucess: res => { if(res.data.errcode == 500) { this.$message({ message: this.$t('msg.no_moudules'), type: 'warning' }); }else { this.$api.templateDownload( name, path, { onSucess: response => { let fileName = ""; let type = response.headers['content-type']; if(response.headers['content-disposition']) { //fileName = decodeURIComponent(response.headers['content-disposition'].split("=")[1]); fileName = name; }else { fileName=this.$t('msg.no_moudules'); } this.download(response, type, fileName) } } ) } } } ) }, download(res, type, filename){ const blob = new Blob([res.data], { // 濡傛灉鍚庣娌¤繑鍥炰笅杞芥枃浠剁被鍨嬶紝鍒欓渶瑕佹墜鍔ㄨ缃細type: 'application/pdf;chartset=UTF-8' 琛ㄧず涓嬭浇鏂囨。涓簆df锛屽鏋滄槸word鍒欒缃负msword锛宔xcel涓篹xcel type: type }); const a = document.createElement('a'); const herf = window.URL.createObjectURL(blob); // 涓嬭浇閾炬帴 a.href = herf; // 涓嬭浇鏂囦欢鍚�,濡傛灉鍚庣娌℃湁杩斿洖锛屽彲浠ヨ嚜宸卞啓a.download = '鏂囦欢.pdf' a.download = filename; document.body.appendChild(a); a.click(); document.body.removeChild(a); window.URL.revokeObjectURL(herf); }, importExcel(val) { if(!this.excelPath) { this.$message.error(this.$t('msg.select_excel')); }else { this.hiddenImport = false this.runBeforeAction(val); } }, uploadImg(e){ this.uploading = true; this.loading = true; let fileArray = e.file; let file = fileArray; let that = this; let form = new FormData(); let id = 'WU_FILE_0', name = e.file.name, type = e.file.type, lastModifiedDate = e.file.lastModifiedDate, size = e.file.size; form.append("id", id); form.append("name", name); form.append("type", type); form.append("lastModifiedDate", lastModifiedDate); form.append("size", size); form.append("file", file); let allowedTypes = "xls;xlsx", fieldid = null, fileSaveMode = undefined, nullpath = "IMPORTEXCEL_PATH"; this.$api.importFile( form, nullpath, fileSaveMode, fieldid, allowedTypes, this.openParams.appId, { onSucess: res => { if(res.data){ setTimeout(() => { this.loading = false; this.uploading = false; }, 3000) let path = res.data.split("|")[1]; //that.$emit("getExcelPath", path); that.excelPath = path; } } } ) }, //鎵ц鑴氭湰鍓� runBeforeAction(val){ let op = this.openParams; let act = this.act; let formData = { docId: "", document: {}, formId: this.view.relatedForm, parentId: op.parentId ? op.parentId : "", templateForm: this.view.templateForm, viewId: op.actionContent, _selects: [], } if(op.isRelate) { formData.isRelate = op.isRelate; } let divId = act.id; let actType = act.type; this.$api.runBeforeActionScript( op.appId, divId, formData, actType, '', //treedocid '', //flowType { onSucess: response => { if(response.data.errcode == 0 && response.data.data) { let errmsg = response.data.data.content; this.$notify.error({ title: errmsg, message: '' }); }else if(response.data.errcode == 0){ this.performExport(val); } } }); }, //鎵ц鑴氭湰鍚� runAfterAction() { let op = this.openParams; let act = this.act; let formData = { docId: "", document: {}, formId: this.view.relatedForm, parentId: op.parentId ? op.parentId : "", templateForm: "", viewId: op.actionContent, _selects: [], } let appId = op.appId; let divId = act.id; let docId = ''; let parentId = op.parentId ? op.parentId : ""; let _templateForm = ''; let _ = ''; this.$api.runAfterActionScript( appId, divId, docId, this.openParams.actionContent, this.view.relatedForm, _templateForm, parentId, _, formData, act.type, '', //treedocid { onSucess: response => { if(response.data.errcode == 0) { if(response.data.data.content) { let errmsg = response.data.data.content.content; this.$notify({ title: errmsg, message: '', type: 'warning' }); } } } } ); }, performExport(val) { let op = this.openParams; let data = { impmappingconfigid: this.act.impmappingconfigid, path: this.excelPath, actId: this.act.id, parentId: "", isRelate: undefined, type : val }; if(val == 'validation') { this.loading = true; this.$api.importExcel( op.appId, this.viewId, data, { onSucess: response => { this.loading = false; if(response.data.errcode==0) { this.$msgbox({ title: this.$t('tip'), message: this.$t('msg.import_data'), showCancelButton: true, confirmButtonText: this.$t('msg.confirm'), cancelButtonText: this.$t('btns.cancel'), }).then(() => { this.importExcel('excelimport'); }).catch(() => { this.$emit("event"); this.$message({ type: 'info', message: this.$t('msg.cancel_upload') }); }); }else { if(response.data.errmsg) { let arr = response.data.data; let errMessage = ''; errMessage = arr.join('<br/>'); this.$message.error({ title:response.data.errmsg, dangerouslyUseHTMLString: true, message: errMessage, }); }else { this.$message.error(this.$t('msg.err')); } this.$emit("event"); } } } ); }else { if(op.parentId) { data.parentId = op.parentId; } if(op.isRelate) { data.isRelate = "true"; }else if(op.isRelate === false) { data.isRelate = "false"; } let exparams = { appId: op.appId, docid: op.parentId, field: "", formId: op.formId, isRelate: op.isRelate, parentId: op.parentId } data.exparams = exparams this.task = setInterval(() => { this.$api.importExcelProgress({ onSucess: res => { this.isShowProgress = true; let excelImportCount = res.data.data.excelImportCount//鑾峰彇宸茬粡瀵煎叆鐨勬潯鏁� let excelRowCount = res.data.data.excelRowCount//闇€瑕佸鍏ョ殑鎬绘潯鏁� let process = Math.floor(((excelImportCount / excelRowCount) * 100)) if(process) { this.importProgress = process }else { this.importProgress = 0 } if(process == 100) { this.importProgress = process window.clearInterval(this.task) this.$notify.success({ title: "瀵煎叆鎴愬姛", message: "瀵煎叆鎴愬姛" }); } if(res.data.data.importExcelResult){//瀵煎叆鍑洪敊鎻愮ず淇℃伅--缁熶竴鍦ㄨ疆璇㈣繖杈规彁绀� res.data.data.importExcelResult.data.forEach(item=>{ this.$notify.error({ title: res.data.data.importExcelResult.errmsg, message: item, duration: 0 }); }) window.clearInterval(this.task) } } }) }, 500); this.$api.importExcel( op.appId, this.viewId, data, { onSucess: response => { if(response.data.errcode==0) { //瀵煎叆杞 // this.$notify({ // title: this.$t('success'), // message: '', // type: 'success' // }); //this.$emit("update:visible", false); this.$emit("event"); this.runAfterAction(); }else { if(response.data.errcode == 4001) { let arr = response.data.data let errMessage = '' for(let i=0; i<arr.length; i++) { errMessage += arr[i] + '\n' } console.log("errMessage-->",errMessage) // this.$notify.error({ // title: response.data.errmsg, // message: `${errMessage}` // }); // this.$message.error(response.data.errmsg); }else { // this.$message.error(this.$t('msg.err')); } this.$emit("event"); } } } ); } }, handlePreview(file) { }, handleExceed(files, fileList) { }, beforeUpload(file) { }, beforeRemove(file) { }, handleRemove(file) { }, } }; </script>>