@huilian/components-tms 3.1.1 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/bundle.esm.js +11 -9
  2. package/package.json +1 -1
package/lib/bundle.esm.js CHANGED
@@ -543,7 +543,7 @@ default:"",type:String},formData:{// 上传时附带的额外参数
543
543
  default:()=>{return{attachmenType:"VOUCHER"};},type:Object},handleSuccessCallback:{type:Function},fileType:{// 限制选择文件类型
544
544
  // default: '.pptx,.csv,.zip,.rar,image/*,application/msexcel,application/msword,application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document, text/plain',
545
545
  default:()=>{return[".pptx",".csv",".zip",".rar",".jpg",".jpeg",".png",".doc",".docx",".pdf",".xls",".xlsx",".mp4"];},type:Array},fileDisabled:{default:false,type:Boolean},apiUrl:{default:"/gateway/huilianApi/uploader/attachment",type:String},listType:{default:"picture-card",type:String}},data(){return{formFileList:[],// 显示上传文件
546
- dialogImageUrl:"",loading:"",noneBtnImg:false,drag:false,trans};},computed:{...mapGetters(["userInfo"]),dragOptions(){return{animation:100,group:"description",disabled:false,ghostClass:"ghost"};}},watch:{fileUrl:{deep:true,immediate:true,handler(){this.formFileList=this.fileUrl;if(this.fileDisabled){this.noneBtnImg=true;}if(this.fileUrl.length>=this.limit){this.noneBtnImg=true;}else{this.noneBtnImg=false;}}}},methods:{// 处理格式
546
+ dialogImageUrl:"",loading:"",noneBtnImg:false,drag:false,trans,headers:{terminalcode:window.HLEncryption?window.HLEncryption.encryptionParamer.terminalCode:"HIC"}};},computed:{...mapGetters(["userInfo"]),dragOptions(){return{animation:100,group:"description",disabled:false,ghostClass:"ghost"};}},watch:{fileUrl:{deep:true,immediate:true,handler(){this.formFileList=this.fileUrl;if(this.fileDisabled){this.noneBtnImg=true;}if(this.fileUrl.length>=this.limit){this.noneBtnImg=true;}else{this.noneBtnImg=false;}}}},methods:{// 处理格式
547
547
  formatFileType(){let arr=[];this.fileType.map(item=>{arr.push(item);arr.push(item.toUpperCase());});return arr.join(",");},// 缩略图展示
548
548
  bgImg(file){let type="";const types={IMG:"",WORD:img$4,EXCEL:img$8,PDF:img$7,CSV:img$9,RAR:img$5,ZIP:img$3,PPT:img$6,APK:img$2,PLIST:img$1,MP4:img};if(file.raw){type=this.fileFormat(file.name.toLowerCase());}else{type=this.fileFormat(file.url.toLowerCase());}if(type==="IMG"){return file.url;}else{return types[type];}},// 文件格式
549
549
  fileFormat(name){const images="bmp|jpg|jpeg|png|gif|svg|webp|JPG|JPEG|PNG";const word="doc|docx|DOC|DOCX";const excel="xls|xlsx|XLS|XLSX";const pdf="pdf|PDF";const csv="csv|CSV";const rar="rar|RAR";const zip="zip|ZIP";const ppt="pptx|PPTX";const apk="apk|APK";const plist="plist|PLIST";const mp4="mp4|MP4";const pattern_images=new RegExp(".("+images+")$");const pattern_word=new RegExp(".("+word+")$");const pattern_excel=new RegExp(".("+excel+")$");const pattern_pdf=new RegExp(".("+pdf+")$");const pattern_csv=new RegExp(".("+csv+")$");const pattern_rar=new RegExp(".("+rar+")$");const pattern_zip=new RegExp(".("+zip+")$");const pattern_ppt=new RegExp(".("+ppt+")$");const pattern_apk=new RegExp(".("+apk+")$");const pattern_plist=new RegExp(".("+plist+")$");const pattern_mp4=new RegExp(".("+mp4+")$");if(name.indexOf("?")>-1){name=name.split("?")[0];}if(pattern_images.test(name)){return"IMG";}else if(pattern_word.test(name)){return"WORD";}else if(pattern_excel.test(name)){return"EXCEL";}else if(pattern_pdf.test(name)){return"PDF";}else if(pattern_csv.test(name)){return"CSV";}else if(pattern_rar.test(name)){return"RAR";}else if(pattern_zip.test(name)){return"ZIP";}else if(pattern_ppt.test(name)){return"PPT";}else if(pattern_apk.test(name)){return"APK";}else if(pattern_plist.test(name)){return"PLIST";}else if(pattern_mp4.test(name)){return"MP4";}},// 开始上传前验证
@@ -559,14 +559,14 @@ if(this.formMaxWH.width){const isSize=this.validImage(file).then(data=>{return f
559
559
  // }
560
560
  // 验证文件类型
561
561
  const nameList=file.name.split(".");if(!this.fileType.includes("."+nameList[nameList.length-1].toLowerCase())){setTimeout(()=>{this.$message({message:`请上传${this.fileType.join("、")}的文件!`,type:"warning"});},1);return false;}},// 校验图片宽高
562
- validImage(file){const _this=this;return new Promise(function(resolve,reject){const width=parseInt(_this.formMaxWH.width,10);const height=parseInt(_this.formMaxWH.height,10);let _URL=window.URL||window.webkitURL;let img=new Image();img.onload=function(){if(img.width!==width||img.height!==height){return reject({type:false,msg:`请上传${width}px * ${height}px的图片`});}return resolve({type:true});};img.src=_URL.createObjectURL(file);});},formHandleRemove(file,formFileList){if(file.status!=="ready"){this.formFileList.splice(this.formFileList.indexOf(file),1);this.noneBtnImg=this.formFileList.length>=this.limit;}},handlePreview(file){if(this.listType==="text"){this.handlePictureCardPreview(file);}},handlePictureCardPreview(file){let type,url;if(file.raw){type=this.fileFormat(file.name.toLowerCase());url=file.response.data[0].attachmenturl;}else{type=this.fileFormat(file.url.toLowerCase());url=file.url;}if(type==="IMG"){this.dialogImageUrl=file.url;this.$refs.previewImg.showViewer=true;}else if(type==="PDF"){window.open("https://www.hellogil.com/web/contractPreview.html?url="+url.replace("http://","https://"));}else if(type==="WORD"||type==="EXCEL"||type==="CSV"||type==="PPT"){window.open(`https://file-preview.hellogil.com/onlinePreview?watermarkTxt=${this.userInfo.userName}${this.userInfo.jobCard}&url=`+url.replace("http://","https://"));}else{this.$message({message:"该文件不支持预览!",type:"warning"});}},handleDownload(file){console.log(file);var name;if(file.name){name=file.name;if(!name.indexOf(".")>-1){var a=file.url.split("/");var b=a[a.length-1];name=file.name+"."+b.split(".")[1];}}else{var a=file.url.split("/");name=a[a.length-1];}axios({method:"post",url:process.env.VUE_APP_BASE_API+"/huilianApi/uploader/downloadZipFiles",data:"fileUrls="+JSON.stringify([{imgName:name.replace(/\&/g,"-").replace(/\?/g,"-").replace(/\%/g,"-"),dataImg:file.url}]),responseType:"blob"// 加上这个是重点
562
+ validImage(file){const _this=this;return new Promise(function(resolve,reject){const width=parseInt(_this.formMaxWH.width,10);const height=parseInt(_this.formMaxWH.height,10);let _URL=window.URL||window.webkitURL;let img=new Image();img.onload=function(){if(img.width!==width||img.height!==height){return reject({type:false,msg:`请上传${width}px * ${height}px的图片`});}return resolve({type:true});};img.src=_URL.createObjectURL(file);});},formHandleRemove(file,formFileList){if(file.status!=="ready"){this.formFileList.splice(this.formFileList.indexOf(file),1);this.noneBtnImg=this.formFileList.length>=this.limit;}},handlePreview(file){if(this.listType==="text"){this.handlePictureCardPreview(file);}},handlePictureCardPreview(file){let type,url;if(file.raw){type=this.fileFormat(file.name.toLowerCase());url=file.response.data[0].attachmenturl;}else{type=this.fileFormat(file.url.toLowerCase());url=file.url;}if(type==="IMG"){this.dialogImageUrl=file.url;this.$refs.previewImg.showViewer=true;}else if(type==="PDF"){window.open("https://www.hellogil.com/web/contractPreview.html?url="+url.replace("http://","https://"));}else if(type==="WORD"||type==="EXCEL"||type==="CSV"||type==="PPT"){window.open(`https://file-preview.hellogil.com/onlinePreview?watermarkTxt=${this.userInfo.userName}${this.userInfo.jobCard}&url=`+url.replace("http://","https://"));}else{this.$message({message:"该文件不支持预览!",type:"warning"});}},handleDownload(file){console.log(file);var name;let url=file.response?file.response.data[0].attachmenturl:file.url;if(file.name){name=file.name;if(!name.indexOf(".")>-1){var a=url.split("/");var b=a[a.length-1];name=file.name+"."+b.split(".")[1];}}else{var a=url.split("/");name=a[a.length-1];}axios({method:"post",url:process.env.VUE_APP_BASE_API+"/huilianApi/uploader/downloadZipFiles",data:"fileUrls="+JSON.stringify([{imgName:name.replace(/\&/g,"-").replace(/\?/g,"-").replace(/\%/g,"-"),dataImg:url}]),responseType:"blob"// 加上这个是重点
563
563
  }).then(res=>{this.downloadFile(res.data,name);});},downloadFile(data,name){const url=window.URL.createObjectURL(new Blob([data]));const link=document.createElement("a");link.style.display="none";link.href=url;link.setAttribute("download",name);document.body.appendChild(link);link.click();URL.revokeObjectURL(link.href);document.body.removeChild(link);this.$message({message:"下载成功",type:"success"});},// 允许上传文件个数验证
564
564
  formHandleExceed(files,formFileList){this.$message.warning(`最多上传 ${this.limit} 个文件!`);},// 上传文件
565
565
  handleUploadForm(file,fileList){if(!file.url){file.url=URL.createObjectURL(file.raw);}},// 上传成功
566
566
  handleSuccess(response,file,fileList){var num=0;for(var i=0;i<fileList.length;i++){if(fileList[i].status==="success"){num++;}}if(num===fileList.length){this.formFileList=fileList;this.$emit("update:fileUrl",this.formFileList);this.noneBtnImg=this.formFileList.length>=this.limit;if(this.handleSuccessCallback){this.handleSuccessCallback(response,file,fileList);}}},// 上传失败
567
567
  handleError(err,file,fileList){console.log(err);// this.loading.close()
568
568
  },dragEnd(){// this.drag = false;
569
- this.$emit("update:fileUrl",this.formFileList);}}};/* script */const __vue_script__$e=script$e;/* template */var __vue_render__$e=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"upload_file_box"},[_c("div",{staticStyle:{height:"0",overflow:"hidden"}},[_c("el-image",{ref:"previewImg",attrs:{src:_vm.dialogImageUrl,"preview-src-list":_vm.formFileList.map(function(item){return _vm.bgImg(item);})}})],1),_vm._v(" "),_c("el-upload",{class:{disUoloadSty:_vm.noneBtnImg},attrs:{action:_vm.apiUrl,"list-type":_vm.listType,tip:_vm.tip,limit:_vm.limit,multiple:_vm.multiple,data:_vm.formData,accept:_vm.formatFileType(),disabled:_vm.fileDisabled,"file-list":_vm.formFileList,"on-exceed":_vm.formHandleExceed,"before-upload":_vm.beforeUploadForm,"on-change":_vm.handleUploadForm,"on-remove":_vm.formHandleRemove,"on-success":_vm.handleSuccess,"on-error":_vm.handleError,"on-preview":_vm.handlePreview},scopedSlots:_vm._u([{key:"file",fn:function(ref){var file=ref.file;return _vm.listType==="picture-card"?_c("div",{staticClass:"upload_file_operation"},[_c("div",{staticClass:"upload_file_bg",style:"background: url("+_vm.bgImg(file)+") no-repeat 50% 50%; background-size: contain;"}),_vm._v(" "),file.status!=="success"?_c("span",{staticClass:"el-upload-list__item-actions",staticStyle:{opacity:"1"}},[_c("i",{staticClass:"el-icon-loading"})]):_vm._e()]):_vm._e();}}],null,true)},[_vm.listType==="text"?_c("div",{staticStyle:{"text-align":"left"}},[_c("el-button",{attrs:{type:"primary",disabled:_vm.fileDisabled}},[_vm._v(_vm._s(_vm.trans("点击上传")))]),_vm._v(" "),_c("div",{staticClass:"el-upload__tip",attrs:{slot:"tip"},slot:"tip"},[_vm._v("\n "+_vm._s(_vm.tip?_vm.tip:""+_vm.trans("请选择要上传的附件,最多")+_vm.limit+_vm.trans("个")+","+_vm.trans("单个附件最大")+_vm.formMaxSize+"M")+"\n ")])],1):_vm._e(),_vm._v(" "),_vm.listType==="excel"?_c("div",{staticStyle:{"text-align":"left"}},[_c("el-button",{attrs:{type:"primary"}},[_vm._v(_vm._s(_vm.trans("点击上传")))]),_vm._v(" "),_vm._t("tip")],2):_vm._e(),_vm._v(" "),_vm.listType==="picture-card"?_c("draggable",_vm._b({staticClass:"el-upload-list el-upload-list--picture-card",style:{position:"absolute",left:0,top:0},attrs:{slot:"tip",tag:"ul"},on:{end:_vm.dragEnd},slot:"tip",model:{value:_vm.formFileList,callback:function($$v){_vm.formFileList=$$v;},expression:"formFileList"}},"draggable",_vm.dragOptions,false),_vm._l(_vm.formFileList,function(file,inex){return _c("li",{key:inex,staticClass:"el-upload-list__item is-success"},[_c("div",{staticClass:"upload_file_operation"},[_c("div",{staticClass:"upload_file_bg",style:"background: url("+_vm.bgImg(file)+") 50% 50% / contain no-repeat;"}),_vm._v(" "),_c("span",{staticClass:"el-upload-list__item-actions"},[_c("span",{staticClass:"el-upload-list__item-preview",on:{click:function($event){return _vm.handlePictureCardPreview(file);}}},[_c("i",{staticClass:"el-icon-zoom-in"})]),_vm._v(" "),_c("span",{staticClass:"el-upload-list__item-delete",on:{click:function($event){return _vm.handleDownload(file);}}},[_c("i",{staticClass:"el-icon-download"})]),_vm._v(" "),!_vm.fileDisabled?_c("span",{staticClass:"el-upload-list__item-delete",on:{click:function($event){return _vm.formHandleRemove(file);}}},[_c("i",{staticClass:"el-icon-delete"})]):_vm._e()])])]);}),0):_vm._e(),_vm._v(" "),_vm.listType==="picture-card"?_c("i",{staticClass:"el-icon-plus",attrs:{slot:"default"},slot:"default"}):_vm._e()],1)],1);};var __vue_staticRenderFns__$e=[];__vue_render__$e._withStripped=true;/* style */const __vue_inject_styles__$e=function(inject){if(!inject)return;inject("data-v-b2dc914e_0",{source:".upload_file_box {\n position: relative;\n}\n.upload_file_box .el-upload-list--picture-card .el-upload-list__item {\n width: 104px;\n height: 104px;\n transition: none;\n}\n.upload_file_box .el-upload--picture-card {\n width: 104px;\n height: 104px;\n line-height: 104px;\n position: relative;\n z-index: 1;\n}\n.upload_file_box .upload_file_operation {\n width: 100%;\n height: 100%;\n}\n.upload_file_box .upload_file_operation .upload_file_bg {\n width: 100%;\n height: 100%;\n background-size: contain;\n}\n.upload_file_box .disUoloadSty .el-upload--picture-card {\n display: none;\n}\n\n/*# sourceMappingURL=index.vue.map */",map:{"version":3,"sources":["/Users/chenlei/HLcode/test/components/UploadFile/index.vue","index.vue"],"names":[],"mappings":"AA0fA;EACA,kBAAA;ACzfA;AD4fA;EACA,YAAA;EACA,aAAA;EACA,gBAAA;AC1fA;AD8fA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;EACA,UAAA;AC5fA;AD+fA;EACA,WAAA;EACA,YAAA;AC7fA;AD+fA;EACA,WAAA;EACA,YAAA;EACA,wBAAA;AC7fA;ADkgBA;EACA,aAAA;AChgBA;;AAEA,oCAAoC","file":"index.vue","sourcesContent":["<template>\n <div class=\"upload_file_box\">\n <div style=\"height: 0; overflow: hidden\">\n <el-image ref=\"previewImg\" :src=\"dialogImageUrl\" :preview-src-list=\"formFileList.map((item) => bgImg(item))\" />\n </div>\n\n <el-upload :class=\"{ disUoloadSty: noneBtnImg }\" :action=\"apiUrl\" :list-type=\"listType\" :tip=\"tip\" :limit=\"limit\"\n :multiple=\"multiple\" :data=\"formData\" :accept=\"formatFileType()\" :disabled=\"fileDisabled\"\n :file-list=\"formFileList\" :on-exceed=\"formHandleExceed\" :before-upload=\"beforeUploadForm\"\n :on-change=\"handleUploadForm\" :on-remove=\"formHandleRemove\" :on-success=\"handleSuccess\" :on-error=\"handleError\"\n :on-preview=\"handlePreview\">\n <div v-if=\"listType === 'text'\" style=\"text-align: left\">\n <el-button type=\"primary\" :disabled=\"fileDisabled\">{{ trans('点击上传') }}</el-button>\n <div slot=\"tip\" class=\"el-upload__tip\">\n {{\n tip\n ? tip\n : `${trans('请选择要上传的附件,最多')}${limit}${trans('个')},${trans('单个附件最大')}${formMaxSize}M`\n }}\n </div>\n </div>\n <div v-if=\"listType === 'excel'\" style=\"text-align: left\">\n <el-button type=\"primary\">{{ trans('点击上传') }}</el-button>\n <slot name=\"tip\"></slot>\n </div>\n\n <draggable slot=\"tip\" v-if=\"listType === 'picture-card'\" tag=\"ul\" v-model=\"formFileList\" v-bind=\"dragOptions\"\n @end=\"dragEnd\" class=\"el-upload-list el-upload-list--picture-card\"\n :style=\"{ position: 'absolute', left: 0, top: 0 }\">\n <li class=\"el-upload-list__item is-success\" v-for=\"(file, inex) in formFileList\" :key=\"inex\">\n <div class=\"upload_file_operation\">\n <div class=\"upload_file_bg\" :style=\"`background: url(${bgImg(\n file\n )}) 50% 50% / contain no-repeat;`\" />\n <span class=\"el-upload-list__item-actions\">\n <span class=\"el-upload-list__item-preview\" @click=\"handlePictureCardPreview(file)\">\n <i class=\"el-icon-zoom-in\" />\n </span>\n <span class=\"el-upload-list__item-delete\" @click=\"handleDownload(file)\">\n <i class=\"el-icon-download\" />\n </span>\n <span v-if=\"!fileDisabled\" class=\"el-upload-list__item-delete\" @click=\"formHandleRemove(file)\">\n <i class=\"el-icon-delete\" />\n </span>\n </span>\n </div>\n </li>\n </draggable>\n\n <i slot=\"default\" class=\"el-icon-plus\" v-if=\"listType === 'picture-card'\" />\n <div slot=\"file\" slot-scope=\"{ file }\" class=\"upload_file_operation\" v-if=\"listType === 'picture-card'\">\n <div class=\"upload_file_bg\" :style=\"`background: url(${bgImg(\n file\n )}) no-repeat 50% 50%; background-size: contain;`\" />\n <span v-if=\"file.status !== 'success'\" style=\"opacity: 1\" class=\"el-upload-list__item-actions\">\n <i class=\"el-icon-loading\"></i>\n </span>\n </div>\n </el-upload>\n </div>\n</template>\n\n<script>\n// import { attachment } from '@/config/api/publicApi'\nimport draggable from \"vuedraggable\";\nimport { mapGetters } from \"vuex\";\nimport axios from \"axios\";\nimport CSV from \"./fileImages/CSV.png\";\nimport EXCEL from \"./fileImages/EXCEL.png\";\nimport PDF from \"./fileImages/PDF.png\";\nimport PPT from \"./fileImages/PPT.png\";\nimport RAR from \"./fileImages/RAR.png\";\nimport WORD from \"./fileImages/WORD.png\";\nimport ZIP from \"./fileImages/ZIP.png\";\nimport APK from \"./fileImages/APK.png\";\nimport PLIST from \"./fileImages/PLIST.png\";\nimport MP4 from \"./fileImages/MP4.png\";\nimport trans from '../lang/trans'\n\nexport default {\n components: { draggable },\n props: {\n limit: {\n // 限制文件个数\n default: 1,\n type: Number,\n },\n multiple: {\n // 上传多个文件\n default: false,\n type: Boolean,\n },\n formMaxSize: {\n // 限制文件大小\n default: 10, // M\n type: Number,\n },\n formMaxWH: {\n // 限制图片尺寸 单位px { width: 100, height: 100 }\n default: () => {\n return {};\n },\n type: Object,\n },\n fileUrl: {\n // 文件数组\n default: () => {\n return [];\n },\n type: Array,\n },\n tip: {\n // 上传文件说明\n default: \"\",\n type: String,\n },\n formData: {\n // 上传时附带的额外参数\n default: () => {\n return {\n attachmenType: \"VOUCHER\",\n };\n },\n type: Object,\n },\n handleSuccessCallback: {\n type: Function,\n },\n fileType: {\n // 限制选择文件类型\n // default: '.pptx,.csv,.zip,.rar,image/*,application/msexcel,application/msword,application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document, text/plain',\n default: () => {\n return [\n \".pptx\",\n \".csv\",\n \".zip\",\n \".rar\",\n \".jpg\",\n \".jpeg\",\n \".png\",\n \".doc\",\n \".docx\",\n \".pdf\",\n \".xls\",\n \".xlsx\",\n \".mp4\",\n ];\n },\n type: Array,\n },\n fileDisabled: {\n default: false,\n type: Boolean,\n },\n apiUrl: {\n default: \"/gateway/huilianApi/uploader/attachment\",\n type: String,\n },\n listType: {\n default: \"picture-card\",\n type: String,\n },\n },\n data() {\n return {\n formFileList: [], // 显示上传文件\n dialogImageUrl: \"\",\n loading: \"\",\n noneBtnImg: false,\n drag: false,\n trans,\n };\n },\n computed: {\n ...mapGetters([\"userInfo\"]),\n dragOptions() {\n return {\n animation: 100,\n group: \"description\",\n disabled: false,\n ghostClass: \"ghost\",\n };\n },\n },\n watch: {\n fileUrl: {\n deep: true,\n immediate: true,\n handler() {\n this.formFileList = this.fileUrl;\n if (this.fileDisabled) {\n this.noneBtnImg = true;\n }\n if (this.fileUrl.length >= this.limit) {\n this.noneBtnImg = true;\n } else {\n this.noneBtnImg = false;\n }\n },\n },\n },\n methods: {\n // 处理格式\n formatFileType() {\n let arr = [];\n this.fileType.map((item) => {\n arr.push(item);\n arr.push(item.toUpperCase());\n });\n return arr.join(\",\");\n },\n // 缩略图展示\n bgImg(file) {\n let type = \"\";\n const types = {\n IMG: \"\",\n WORD: WORD,\n EXCEL: EXCEL,\n PDF: PDF,\n CSV: CSV,\n RAR: RAR,\n ZIP: ZIP,\n PPT: PPT,\n APK: APK,\n PLIST: PLIST,\n MP4: MP4,\n };\n\n if (file.raw) {\n type = this.fileFormat(file.name.toLowerCase());\n } else {\n type = this.fileFormat(file.url.toLowerCase());\n }\n\n if (type === \"IMG\") {\n return file.url;\n } else {\n return types[type];\n }\n },\n // 文件格式\n fileFormat(name) {\n const images = \"bmp|jpg|jpeg|png|gif|svg|webp|JPG|JPEG|PNG\";\n const word = \"doc|docx|DOC|DOCX\";\n const excel = \"xls|xlsx|XLS|XLSX\";\n const pdf = \"pdf|PDF\";\n const csv = \"csv|CSV\";\n const rar = \"rar|RAR\";\n const zip = \"zip|ZIP\";\n const ppt = \"pptx|PPTX\";\n const apk = \"apk|APK\";\n const plist = \"plist|PLIST\";\n const mp4 = \"mp4|MP4\";\n\n const pattern_images = new RegExp(\".(\" + images + \")$\");\n const pattern_word = new RegExp(\".(\" + word + \")$\");\n const pattern_excel = new RegExp(\".(\" + excel + \")$\");\n const pattern_pdf = new RegExp(\".(\" + pdf + \")$\");\n const pattern_csv = new RegExp(\".(\" + csv + \")$\");\n const pattern_rar = new RegExp(\".(\" + rar + \")$\");\n const pattern_zip = new RegExp(\".(\" + zip + \")$\");\n const pattern_ppt = new RegExp(\".(\" + ppt + \")$\");\n const pattern_apk = new RegExp(\".(\" + apk + \")$\");\n const pattern_plist = new RegExp(\".(\" + plist + \")$\");\n const pattern_mp4 = new RegExp(\".(\" + mp4 + \")$\");\n\n if (name.indexOf(\"?\") > -1) {\n name = name.split(\"?\")[0];\n }\n\n if (pattern_images.test(name)) {\n return \"IMG\";\n } else if (pattern_word.test(name)) {\n return \"WORD\";\n } else if (pattern_excel.test(name)) {\n return \"EXCEL\";\n } else if (pattern_pdf.test(name)) {\n return \"PDF\";\n } else if (pattern_csv.test(name)) {\n return \"CSV\";\n } else if (pattern_rar.test(name)) {\n return \"RAR\";\n } else if (pattern_zip.test(name)) {\n return \"ZIP\";\n } else if (pattern_ppt.test(name)) {\n return \"PPT\";\n } else if (pattern_apk.test(name)) {\n return \"APK\";\n } else if (pattern_plist.test(name)) {\n return \"PLIST\";\n } else if (pattern_mp4.test(name)) {\n return \"MP4\";\n }\n },\n // 开始上传前验证\n beforeUploadForm(file) {\n // 验证文件大小\n if (file.size / 1024 / 1024 > this.formMaxSize) {\n setTimeout(() => {\n this.$message({\n message: `上传文件 “${file.name}” 大小不能超过${this.formMaxSize}M!`,\n type: \"warning\",\n });\n }, 1);\n return false;\n }\n\n // 验证尺寸是否符合\n if (this.formMaxWH.width) {\n const isSize = this.validImage(file).then(\n (data) => {\n return file;\n },\n (data) => {\n this.$message.error(data.msg);\n return Promise.reject();\n }\n );\n return isSize;\n }\n\n // 中文乱码处理\n // if (file.raw) {\n // let reader = new FileReader(); // 读取文件内容\n // reader.readAsText(file.raw, \"gb2312\"); // 防止中文乱码问题,不加reader.onload方法都不会触发\n // reader.onload = function(e) {\n // this.contentHtml = e.target.result; // txt文本内容,接下来就可以对其进行校验处理了\n // };\n // }\n\n // 验证文件类型\n const nameList = file.name.split(\".\");\n if (\n !this.fileType.includes(\n \".\" + nameList[nameList.length - 1].toLowerCase()\n )\n ) {\n setTimeout(() => {\n this.$message({\n message: `请上传${this.fileType.join(\"、\")}的文件!`,\n type: \"warning\",\n });\n }, 1);\n return false;\n }\n },\n // 校验图片宽高\n validImage(file) {\n const _this = this;\n return new Promise(function (resolve, reject) {\n const width = parseInt(_this.formMaxWH.width, 10);\n const height = parseInt(_this.formMaxWH.height, 10);\n let _URL = window.URL || window.webkitURL;\n let img = new Image();\n img.onload = function () {\n if (img.width !== width || img.height !== height) {\n return reject({\n type: false,\n msg: `请上传${width}px * ${height}px的图片`,\n });\n }\n return resolve({\n type: true,\n });\n };\n img.src = _URL.createObjectURL(file);\n });\n },\n formHandleRemove(file, formFileList) {\n if (file.status !== \"ready\") {\n this.formFileList.splice(this.formFileList.indexOf(file), 1);\n this.noneBtnImg = this.formFileList.length >= this.limit;\n }\n },\n handlePreview(file) {\n if (this.listType === \"text\") {\n this.handlePictureCardPreview(file);\n }\n },\n handlePictureCardPreview(file) {\n let type, url;\n if (file.raw) {\n type = this.fileFormat(file.name.toLowerCase());\n url = file.response.data[0].attachmenturl;\n } else {\n type = this.fileFormat(file.url.toLowerCase());\n url = file.url;\n }\n\n if (type === \"IMG\") {\n this.dialogImageUrl = file.url;\n this.$refs.previewImg.showViewer = true;\n } else if (type === \"PDF\") {\n window.open(\n \"https://www.hellogil.com/web/contractPreview.html?url=\" +\n url.replace(\"http://\", \"https://\")\n );\n } else if (\n type === \"WORD\" ||\n type === \"EXCEL\" ||\n type === \"CSV\" ||\n type === \"PPT\"\n ) {\n window.open(\n `https://file-preview.hellogil.com/onlinePreview?watermarkTxt=${this.userInfo.userName}${this.userInfo.jobCard}&url=` +\n url.replace(\"http://\", \"https://\")\n );\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n },\n handleDownload(file) {\n console.log(file);\n var name;\n if (file.name) {\n name = file.name;\n if (!name.indexOf(\".\") > -1) {\n var a = file.url.split(\"/\");\n var b = a[a.length - 1];\n name = file.name + \".\" + b.split(\".\")[1];\n }\n } else {\n var a = file.url.split(\"/\");\n name = a[a.length - 1];\n }\n axios({\n method: \"post\",\n url:\n process.env.VUE_APP_BASE_API +\n \"/huilianApi/uploader/downloadZipFiles\",\n data:\n \"fileUrls=\" +\n JSON.stringify([\n {\n imgName: name\n .replace(/\\&/g, \"-\")\n .replace(/\\?/g, \"-\")\n .replace(/\\%/g, \"-\"),\n dataImg: file.url,\n },\n ]),\n responseType: \"blob\", // 加上这个是重点\n }).then((res) => {\n this.downloadFile(res.data, name);\n });\n },\n downloadFile(data, name) {\n const url = window.URL.createObjectURL(new Blob([data]));\n const link = document.createElement(\"a\");\n link.style.display = \"none\";\n link.href = url;\n link.setAttribute(\"download\", name);\n document.body.appendChild(link);\n link.click();\n URL.revokeObjectURL(link.href);\n document.body.removeChild(link);\n this.$message({\n message: \"下载成功\",\n type: \"success\",\n });\n },\n // 允许上传文件个数验证\n formHandleExceed(files, formFileList) {\n this.$message.warning(`最多上传 ${this.limit} 个文件!`);\n },\n // 上传文件\n handleUploadForm(file, fileList) {\n if (!file.url) {\n file.url = URL.createObjectURL(file.raw);\n }\n },\n // 上传成功\n handleSuccess(response, file, fileList) {\n var num = 0;\n for (var i = 0; i < fileList.length; i++) {\n if (fileList[i].status === \"success\") {\n num++;\n }\n }\n if (num === fileList.length) {\n this.formFileList = fileList;\n this.$emit(\"update:fileUrl\", this.formFileList);\n this.noneBtnImg = this.formFileList.length >= this.limit;\n if (this.handleSuccessCallback) {\n this.handleSuccessCallback(response, file, fileList);\n }\n }\n },\n // 上传失败\n handleError(err, file, fileList) {\n console.log(err);\n // this.loading.close()\n },\n\n dragEnd() {\n // this.drag = false;\n this.$emit(\"update:fileUrl\", this.formFileList);\n },\n },\n};\n</script>\n\n<style lang=\"scss\">\n.upload_file_box {\n position: relative;\n\n .el-upload-list--picture-card {\n .el-upload-list__item {\n width: 104px;\n height: 104px;\n transition: none;\n }\n }\n\n .el-upload--picture-card {\n width: 104px;\n height: 104px;\n line-height: 104px;\n position: relative;\n z-index: 1;\n }\n\n .upload_file_operation {\n width: 100%;\n height: 100%;\n\n .upload_file_bg {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n\n .disUoloadSty {\n .el-upload--picture-card {\n display: none;\n }\n }\n}\n</style>\n",".upload_file_box {\n position: relative;\n}\n.upload_file_box .el-upload-list--picture-card .el-upload-list__item {\n width: 104px;\n height: 104px;\n transition: none;\n}\n.upload_file_box .el-upload--picture-card {\n width: 104px;\n height: 104px;\n line-height: 104px;\n position: relative;\n z-index: 1;\n}\n.upload_file_box .upload_file_operation {\n width: 100%;\n height: 100%;\n}\n.upload_file_box .upload_file_operation .upload_file_bg {\n width: 100%;\n height: 100%;\n background-size: contain;\n}\n.upload_file_box .disUoloadSty .el-upload--picture-card {\n display: none;\n}\n\n/*# sourceMappingURL=index.vue.map */"]},media:undefined});};/* scoped */const __vue_scope_id__$e=undefined;/* module identifier */const __vue_module_identifier__$e=undefined;/* functional template */const __vue_is_functional_template__$e=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$e=/*#__PURE__*/normalizeComponent({render:__vue_render__$e,staticRenderFns:__vue_staticRenderFns__$e},__vue_inject_styles__$e,__vue_script__$e,__vue_scope_id__$e,__vue_is_functional_template__$e,__vue_module_identifier__$e,false,createInjector,undefined,undefined);__vue_component__$e.install=function(Vue){Vue.component(__vue_component__$e.name,__vue_component__$e);};//
569
+ this.$emit("update:fileUrl",this.formFileList);}}};/* script */const __vue_script__$e=script$e;/* template */var __vue_render__$e=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"upload_file_box"},[_c("div",{staticStyle:{height:"0",overflow:"hidden"}},[_c("el-image",{ref:"previewImg",attrs:{src:_vm.dialogImageUrl,"preview-src-list":_vm.formFileList.map(function(item){return _vm.bgImg(item);})}})],1),_vm._v(" "),_c("el-upload",{class:{disUoloadSty:_vm.noneBtnImg},attrs:{headers:_vm.headers,action:_vm.apiUrl,"list-type":_vm.listType,tip:_vm.tip,limit:_vm.limit,multiple:_vm.multiple,data:_vm.formData,accept:_vm.formatFileType(),disabled:_vm.fileDisabled,"file-list":_vm.formFileList,"on-exceed":_vm.formHandleExceed,"before-upload":_vm.beforeUploadForm,"on-change":_vm.handleUploadForm,"on-remove":_vm.formHandleRemove,"on-success":_vm.handleSuccess,"on-error":_vm.handleError,"on-preview":_vm.handlePreview},scopedSlots:_vm._u([{key:"file",fn:function(ref){var file=ref.file;return _vm.listType==="picture-card"?_c("div",{staticClass:"upload_file_operation"},[_c("div",{staticClass:"upload_file_bg",style:"background: url("+_vm.bgImg(file)+") no-repeat 50% 50%; background-size: contain;"}),_vm._v(" "),file.status!=="success"?_c("span",{staticClass:"el-upload-list__item-actions",staticStyle:{opacity:"1"}},[_c("i",{staticClass:"el-icon-loading"})]):_vm._e()]):_vm._e();}}],null,true)},[_vm.listType==="text"?_c("div",{staticStyle:{"text-align":"left"}},[_c("el-button",{attrs:{type:"primary",disabled:_vm.fileDisabled}},[_vm._v(_vm._s(_vm.trans("点击上传")))]),_vm._v(" "),_c("div",{staticClass:"el-upload__tip",attrs:{slot:"tip"},slot:"tip"},[_vm._v("\n "+_vm._s(_vm.tip?_vm.tip:""+_vm.trans("请选择要上传的附件,最多")+_vm.limit+_vm.trans("个")+","+_vm.trans("单个附件最大")+_vm.formMaxSize+"M")+"\n ")])],1):_vm._e(),_vm._v(" "),_vm.listType==="excel"?_c("div",{staticStyle:{"text-align":"left"}},[_c("el-button",{attrs:{type:"primary"}},[_vm._v(_vm._s(_vm.trans("点击上传")))]),_vm._v(" "),_vm._t("tip")],2):_vm._e(),_vm._v(" "),_vm.listType==="picture-card"?_c("draggable",_vm._b({staticClass:"el-upload-list el-upload-list--picture-card",style:{position:"absolute",left:0,top:0},attrs:{slot:"tip",tag:"ul"},on:{end:_vm.dragEnd},slot:"tip",model:{value:_vm.formFileList,callback:function($$v){_vm.formFileList=$$v;},expression:"formFileList"}},"draggable",_vm.dragOptions,false),_vm._l(_vm.formFileList,function(file,inex){return _c("li",{key:inex,staticClass:"el-upload-list__item is-success"},[_c("div",{staticClass:"upload_file_operation"},[_c("div",{staticClass:"upload_file_bg",style:"background: url("+_vm.bgImg(file)+") 50% 50% / contain no-repeat;"}),_vm._v(" "),_c("span",{staticClass:"el-upload-list__item-actions"},[_c("span",{staticClass:"el-upload-list__item-preview",on:{click:function($event){return _vm.handlePictureCardPreview(file);}}},[_c("i",{staticClass:"el-icon-zoom-in"})]),_vm._v(" "),_c("span",{staticClass:"el-upload-list__item-delete",on:{click:function($event){return _vm.handleDownload(file);}}},[_c("i",{staticClass:"el-icon-download"})]),_vm._v(" "),!_vm.fileDisabled?_c("span",{staticClass:"el-upload-list__item-delete",on:{click:function($event){return _vm.formHandleRemove(file);}}},[_c("i",{staticClass:"el-icon-delete"})]):_vm._e()])])]);}),0):_vm._e(),_vm._v(" "),_vm.listType==="picture-card"?_c("i",{staticClass:"el-icon-plus",attrs:{slot:"default"},slot:"default"}):_vm._e()],1)],1);};var __vue_staticRenderFns__$e=[];__vue_render__$e._withStripped=true;/* style */const __vue_inject_styles__$e=function(inject){if(!inject)return;inject("data-v-6799cea2_0",{source:".upload_file_box {\n position: relative;\n}\n.upload_file_box .el-upload-list--picture-card .el-upload-list__item {\n width: 104px;\n height: 104px;\n transition: none;\n}\n.upload_file_box .el-upload--picture-card {\n width: 104px;\n height: 104px;\n line-height: 104px;\n position: relative;\n z-index: 1;\n}\n.upload_file_box .upload_file_operation {\n width: 100%;\n height: 100%;\n}\n.upload_file_box .upload_file_operation .upload_file_bg {\n width: 100%;\n height: 100%;\n background-size: contain;\n}\n.upload_file_box .disUoloadSty .el-upload--picture-card {\n display: none;\n}\n\n/*# sourceMappingURL=index.vue.map */",map:{"version":3,"sources":["/Users/chenlei/HLcode/test/components/UploadFile/index.vue","index.vue"],"names":[],"mappings":"AAkkBA;EACA,kBAAA;ACjkBA;ADokBA;EACA,YAAA;EACA,aAAA;EACA,gBAAA;AClkBA;ADskBA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;EACA,UAAA;ACpkBA;ADukBA;EACA,WAAA;EACA,YAAA;ACrkBA;ADukBA;EACA,WAAA;EACA,YAAA;EACA,wBAAA;ACrkBA;AD0kBA;EACA,aAAA;ACxkBA;;AAEA,oCAAoC","file":"index.vue","sourcesContent":["<template>\n <div class=\"upload_file_box\">\n <div style=\"height: 0; overflow: hidden\">\n <el-image\n ref=\"previewImg\"\n :src=\"dialogImageUrl\"\n :preview-src-list=\"formFileList.map((item) => bgImg(item))\"\n />\n </div>\n\n <el-upload\n :class=\"{ disUoloadSty: noneBtnImg }\"\n :headers=\"headers\"\n :action=\"apiUrl\"\n :list-type=\"listType\"\n :tip=\"tip\"\n :limit=\"limit\"\n :multiple=\"multiple\"\n :data=\"formData\"\n :accept=\"formatFileType()\"\n :disabled=\"fileDisabled\"\n :file-list=\"formFileList\"\n :on-exceed=\"formHandleExceed\"\n :before-upload=\"beforeUploadForm\"\n :on-change=\"handleUploadForm\"\n :on-remove=\"formHandleRemove\"\n :on-success=\"handleSuccess\"\n :on-error=\"handleError\"\n :on-preview=\"handlePreview\"\n >\n <div v-if=\"listType === 'text'\" style=\"text-align: left\">\n <el-button type=\"primary\" :disabled=\"fileDisabled\">{{\n trans(\"点击上传\")\n }}</el-button>\n <div slot=\"tip\" class=\"el-upload__tip\">\n {{\n tip\n ? tip\n : `${trans(\"请选择要上传的附件,最多\")}${limit}${trans(\n \"个\"\n )},${trans(\"单个附件最大\")}${formMaxSize}M`\n }}\n </div>\n </div>\n <div v-if=\"listType === 'excel'\" style=\"text-align: left\">\n <el-button type=\"primary\">{{ trans(\"点击上传\") }}</el-button>\n <slot name=\"tip\"></slot>\n </div>\n\n <draggable\n slot=\"tip\"\n v-if=\"listType === 'picture-card'\"\n tag=\"ul\"\n v-model=\"formFileList\"\n v-bind=\"dragOptions\"\n @end=\"dragEnd\"\n class=\"el-upload-list el-upload-list--picture-card\"\n :style=\"{ position: 'absolute', left: 0, top: 0 }\"\n >\n <li\n class=\"el-upload-list__item is-success\"\n v-for=\"(file, inex) in formFileList\"\n :key=\"inex\"\n >\n <div class=\"upload_file_operation\">\n <div\n class=\"upload_file_bg\"\n :style=\"`background: url(${bgImg(\n file\n )}) 50% 50% / contain no-repeat;`\"\n />\n <span class=\"el-upload-list__item-actions\">\n <span\n class=\"el-upload-list__item-preview\"\n @click=\"handlePictureCardPreview(file)\"\n >\n <i class=\"el-icon-zoom-in\" />\n </span>\n <span\n class=\"el-upload-list__item-delete\"\n @click=\"handleDownload(file)\"\n >\n <i class=\"el-icon-download\" />\n </span>\n <span\n v-if=\"!fileDisabled\"\n class=\"el-upload-list__item-delete\"\n @click=\"formHandleRemove(file)\"\n >\n <i class=\"el-icon-delete\" />\n </span>\n </span>\n </div>\n </li>\n </draggable>\n\n <i\n slot=\"default\"\n class=\"el-icon-plus\"\n v-if=\"listType === 'picture-card'\"\n />\n <div\n slot=\"file\"\n slot-scope=\"{ file }\"\n class=\"upload_file_operation\"\n v-if=\"listType === 'picture-card'\"\n >\n <div\n class=\"upload_file_bg\"\n :style=\"`background: url(${bgImg(\n file\n )}) no-repeat 50% 50%; background-size: contain;`\"\n />\n <span\n v-if=\"file.status !== 'success'\"\n style=\"opacity: 1\"\n class=\"el-upload-list__item-actions\"\n >\n <i class=\"el-icon-loading\"></i>\n </span>\n </div>\n </el-upload>\n </div>\n</template>\n\n<script>\n// import { attachment } from '@/config/api/publicApi'\nimport draggable from \"vuedraggable\";\nimport { mapGetters } from \"vuex\";\nimport axios from \"axios\";\nimport CSV from \"./fileImages/CSV.png\";\nimport EXCEL from \"./fileImages/EXCEL.png\";\nimport PDF from \"./fileImages/PDF.png\";\nimport PPT from \"./fileImages/PPT.png\";\nimport RAR from \"./fileImages/RAR.png\";\nimport WORD from \"./fileImages/WORD.png\";\nimport ZIP from \"./fileImages/ZIP.png\";\nimport APK from \"./fileImages/APK.png\";\nimport PLIST from \"./fileImages/PLIST.png\";\nimport MP4 from \"./fileImages/MP4.png\";\nimport trans from \"../lang/trans\";\n\nexport default {\n components: { draggable },\n props: {\n limit: {\n // 限制文件个数\n default: 1,\n type: Number,\n },\n multiple: {\n // 上传多个文件\n default: false,\n type: Boolean,\n },\n formMaxSize: {\n // 限制文件大小\n default: 10, // M\n type: Number,\n },\n formMaxWH: {\n // 限制图片尺寸 单位px { width: 100, height: 100 }\n default: () => {\n return {};\n },\n type: Object,\n },\n fileUrl: {\n // 文件数组\n default: () => {\n return [];\n },\n type: Array,\n },\n tip: {\n // 上传文件说明\n default: \"\",\n type: String,\n },\n formData: {\n // 上传时附带的额外参数\n default: () => {\n return {\n attachmenType: \"VOUCHER\",\n };\n },\n type: Object,\n },\n handleSuccessCallback: {\n type: Function,\n },\n fileType: {\n // 限制选择文件类型\n // default: '.pptx,.csv,.zip,.rar,image/*,application/msexcel,application/msword,application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document, text/plain',\n default: () => {\n return [\n \".pptx\",\n \".csv\",\n \".zip\",\n \".rar\",\n \".jpg\",\n \".jpeg\",\n \".png\",\n \".doc\",\n \".docx\",\n \".pdf\",\n \".xls\",\n \".xlsx\",\n \".mp4\",\n ];\n },\n type: Array,\n },\n fileDisabled: {\n default: false,\n type: Boolean,\n },\n apiUrl: {\n default: \"/gateway/huilianApi/uploader/attachment\",\n type: String,\n },\n listType: {\n default: \"picture-card\",\n type: String,\n },\n },\n data() {\n return {\n formFileList: [], // 显示上传文件\n dialogImageUrl: \"\",\n loading: \"\",\n noneBtnImg: false,\n drag: false,\n trans,\n headers: {\n terminalcode: window.HLEncryption\n ? window.HLEncryption.encryptionParamer.terminalCode\n : \"HIC\",\n },\n };\n },\n computed: {\n ...mapGetters([\"userInfo\"]),\n dragOptions() {\n return {\n animation: 100,\n group: \"description\",\n disabled: false,\n ghostClass: \"ghost\",\n };\n },\n },\n watch: {\n fileUrl: {\n deep: true,\n immediate: true,\n handler() {\n this.formFileList = this.fileUrl;\n if (this.fileDisabled) {\n this.noneBtnImg = true;\n }\n if (this.fileUrl.length >= this.limit) {\n this.noneBtnImg = true;\n } else {\n this.noneBtnImg = false;\n }\n },\n },\n },\n methods: {\n // 处理格式\n formatFileType() {\n let arr = [];\n this.fileType.map((item) => {\n arr.push(item);\n arr.push(item.toUpperCase());\n });\n return arr.join(\",\");\n },\n // 缩略图展示\n bgImg(file) {\n let type = \"\";\n const types = {\n IMG: \"\",\n WORD: WORD,\n EXCEL: EXCEL,\n PDF: PDF,\n CSV: CSV,\n RAR: RAR,\n ZIP: ZIP,\n PPT: PPT,\n APK: APK,\n PLIST: PLIST,\n MP4: MP4,\n };\n\n if (file.raw) {\n type = this.fileFormat(file.name.toLowerCase());\n } else {\n type = this.fileFormat(file.url.toLowerCase());\n }\n\n if (type === \"IMG\") {\n return file.url;\n } else {\n return types[type];\n }\n },\n // 文件格式\n fileFormat(name) {\n const images = \"bmp|jpg|jpeg|png|gif|svg|webp|JPG|JPEG|PNG\";\n const word = \"doc|docx|DOC|DOCX\";\n const excel = \"xls|xlsx|XLS|XLSX\";\n const pdf = \"pdf|PDF\";\n const csv = \"csv|CSV\";\n const rar = \"rar|RAR\";\n const zip = \"zip|ZIP\";\n const ppt = \"pptx|PPTX\";\n const apk = \"apk|APK\";\n const plist = \"plist|PLIST\";\n const mp4 = \"mp4|MP4\";\n\n const pattern_images = new RegExp(\".(\" + images + \")$\");\n const pattern_word = new RegExp(\".(\" + word + \")$\");\n const pattern_excel = new RegExp(\".(\" + excel + \")$\");\n const pattern_pdf = new RegExp(\".(\" + pdf + \")$\");\n const pattern_csv = new RegExp(\".(\" + csv + \")$\");\n const pattern_rar = new RegExp(\".(\" + rar + \")$\");\n const pattern_zip = new RegExp(\".(\" + zip + \")$\");\n const pattern_ppt = new RegExp(\".(\" + ppt + \")$\");\n const pattern_apk = new RegExp(\".(\" + apk + \")$\");\n const pattern_plist = new RegExp(\".(\" + plist + \")$\");\n const pattern_mp4 = new RegExp(\".(\" + mp4 + \")$\");\n\n if (name.indexOf(\"?\") > -1) {\n name = name.split(\"?\")[0];\n }\n\n if (pattern_images.test(name)) {\n return \"IMG\";\n } else if (pattern_word.test(name)) {\n return \"WORD\";\n } else if (pattern_excel.test(name)) {\n return \"EXCEL\";\n } else if (pattern_pdf.test(name)) {\n return \"PDF\";\n } else if (pattern_csv.test(name)) {\n return \"CSV\";\n } else if (pattern_rar.test(name)) {\n return \"RAR\";\n } else if (pattern_zip.test(name)) {\n return \"ZIP\";\n } else if (pattern_ppt.test(name)) {\n return \"PPT\";\n } else if (pattern_apk.test(name)) {\n return \"APK\";\n } else if (pattern_plist.test(name)) {\n return \"PLIST\";\n } else if (pattern_mp4.test(name)) {\n return \"MP4\";\n }\n },\n // 开始上传前验证\n beforeUploadForm(file) {\n // 验证文件大小\n if (file.size / 1024 / 1024 > this.formMaxSize) {\n setTimeout(() => {\n this.$message({\n message: `上传文件 “${file.name}” 大小不能超过${this.formMaxSize}M!`,\n type: \"warning\",\n });\n }, 1);\n return false;\n }\n\n // 验证尺寸是否符合\n if (this.formMaxWH.width) {\n const isSize = this.validImage(file).then(\n (data) => {\n return file;\n },\n (data) => {\n this.$message.error(data.msg);\n return Promise.reject();\n }\n );\n return isSize;\n }\n\n // 中文乱码处理\n // if (file.raw) {\n // let reader = new FileReader(); // 读取文件内容\n // reader.readAsText(file.raw, \"gb2312\"); // 防止中文乱码问题,不加reader.onload方法都不会触发\n // reader.onload = function(e) {\n // this.contentHtml = e.target.result; // txt文本内容,接下来就可以对其进行校验处理了\n // };\n // }\n\n // 验证文件类型\n const nameList = file.name.split(\".\");\n if (\n !this.fileType.includes(\n \".\" + nameList[nameList.length - 1].toLowerCase()\n )\n ) {\n setTimeout(() => {\n this.$message({\n message: `请上传${this.fileType.join(\"、\")}的文件!`,\n type: \"warning\",\n });\n }, 1);\n return false;\n }\n },\n // 校验图片宽高\n validImage(file) {\n const _this = this;\n return new Promise(function (resolve, reject) {\n const width = parseInt(_this.formMaxWH.width, 10);\n const height = parseInt(_this.formMaxWH.height, 10);\n let _URL = window.URL || window.webkitURL;\n let img = new Image();\n img.onload = function () {\n if (img.width !== width || img.height !== height) {\n return reject({\n type: false,\n msg: `请上传${width}px * ${height}px的图片`,\n });\n }\n return resolve({\n type: true,\n });\n };\n img.src = _URL.createObjectURL(file);\n });\n },\n formHandleRemove(file, formFileList) {\n if (file.status !== \"ready\") {\n this.formFileList.splice(this.formFileList.indexOf(file), 1);\n this.noneBtnImg = this.formFileList.length >= this.limit;\n }\n },\n handlePreview(file) {\n if (this.listType === \"text\") {\n this.handlePictureCardPreview(file);\n }\n },\n handlePictureCardPreview(file) {\n let type, url;\n if (file.raw) {\n type = this.fileFormat(file.name.toLowerCase());\n url = file.response.data[0].attachmenturl;\n } else {\n type = this.fileFormat(file.url.toLowerCase());\n url = file.url;\n }\n\n if (type === \"IMG\") {\n this.dialogImageUrl = file.url;\n this.$refs.previewImg.showViewer = true;\n } else if (type === \"PDF\") {\n window.open(\n \"https://www.hellogil.com/web/contractPreview.html?url=\" +\n url.replace(\"http://\", \"https://\")\n );\n } else if (\n type === \"WORD\" ||\n type === \"EXCEL\" ||\n type === \"CSV\" ||\n type === \"PPT\"\n ) {\n window.open(\n `https://file-preview.hellogil.com/onlinePreview?watermarkTxt=${this.userInfo.userName}${this.userInfo.jobCard}&url=` +\n url.replace(\"http://\", \"https://\")\n );\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n },\n handleDownload(file) {\n console.log(file);\n var name;\n let url = file.response ? file.response.data[0].attachmenturl : file.url\n if (file.name) {\n name = file.name;\n if (!name.indexOf(\".\") > -1) {\n var a = url.split(\"/\");\n var b = a[a.length - 1];\n name = file.name + \".\" + b.split(\".\")[1];\n }\n } else {\n var a = url.split(\"/\");\n name = a[a.length - 1];\n }\n axios({\n method: \"post\",\n url:\n process.env.VUE_APP_BASE_API +\n \"/huilianApi/uploader/downloadZipFiles\",\n data:\n \"fileUrls=\" +\n JSON.stringify([\n {\n imgName: name\n .replace(/\\&/g, \"-\")\n .replace(/\\?/g, \"-\")\n .replace(/\\%/g, \"-\"),\n dataImg: url,\n },\n ]),\n responseType: \"blob\", // 加上这个是重点\n }).then((res) => {\n this.downloadFile(res.data, name);\n });\n },\n downloadFile(data, name) {\n\n\n\n const url = window.URL.createObjectURL(new Blob([data]));\n const link = document.createElement(\"a\");\n link.style.display = \"none\";\n link.href = url;\n link.setAttribute(\"download\", name);\n document.body.appendChild(link);\n link.click();\n URL.revokeObjectURL(link.href);\n document.body.removeChild(link);\n this.$message({\n message: \"下载成功\",\n type: \"success\",\n });\n },\n // 允许上传文件个数验证\n formHandleExceed(files, formFileList) {\n this.$message.warning(`最多上传 ${this.limit} 个文件!`);\n },\n // 上传文件\n handleUploadForm(file, fileList) {\n if (!file.url) {\n file.url = URL.createObjectURL(file.raw);\n }\n },\n // 上传成功\n handleSuccess(response, file, fileList) {\n var num = 0;\n for (var i = 0; i < fileList.length; i++) {\n if (fileList[i].status === \"success\") {\n num++;\n }\n }\n if (num === fileList.length) {\n this.formFileList = fileList;\n this.$emit(\"update:fileUrl\", this.formFileList);\n this.noneBtnImg = this.formFileList.length >= this.limit;\n if (this.handleSuccessCallback) {\n this.handleSuccessCallback(response, file, fileList);\n }\n }\n },\n // 上传失败\n handleError(err, file, fileList) {\n console.log(err);\n // this.loading.close()\n },\n\n dragEnd() {\n // this.drag = false;\n this.$emit(\"update:fileUrl\", this.formFileList);\n },\n },\n};\n</script>\n\n<style lang=\"scss\">\n.upload_file_box {\n position: relative;\n\n .el-upload-list--picture-card {\n .el-upload-list__item {\n width: 104px;\n height: 104px;\n transition: none;\n }\n }\n\n .el-upload--picture-card {\n width: 104px;\n height: 104px;\n line-height: 104px;\n position: relative;\n z-index: 1;\n }\n\n .upload_file_operation {\n width: 100%;\n height: 100%;\n\n .upload_file_bg {\n width: 100%;\n height: 100%;\n background-size: contain;\n }\n }\n\n .disUoloadSty {\n .el-upload--picture-card {\n display: none;\n }\n }\n}\n</style>\n",".upload_file_box {\n position: relative;\n}\n.upload_file_box .el-upload-list--picture-card .el-upload-list__item {\n width: 104px;\n height: 104px;\n transition: none;\n}\n.upload_file_box .el-upload--picture-card {\n width: 104px;\n height: 104px;\n line-height: 104px;\n position: relative;\n z-index: 1;\n}\n.upload_file_box .upload_file_operation {\n width: 100%;\n height: 100%;\n}\n.upload_file_box .upload_file_operation .upload_file_bg {\n width: 100%;\n height: 100%;\n background-size: contain;\n}\n.upload_file_box .disUoloadSty .el-upload--picture-card {\n display: none;\n}\n\n/*# sourceMappingURL=index.vue.map */"]},media:undefined});};/* scoped */const __vue_scope_id__$e=undefined;/* module identifier */const __vue_module_identifier__$e=undefined;/* functional template */const __vue_is_functional_template__$e=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$e=/*#__PURE__*/normalizeComponent({render:__vue_render__$e,staticRenderFns:__vue_staticRenderFns__$e},__vue_inject_styles__$e,__vue_script__$e,__vue_scope_id__$e,__vue_is_functional_template__$e,__vue_module_identifier__$e,false,createInjector,undefined,undefined);__vue_component__$e.install=function(Vue){Vue.component(__vue_component__$e.name,__vue_component__$e);};//
570
570
  var script$d={props:{fileUrl:{// 文件数组
571
571
  default:()=>{return[];},type:Array},showTitle:{// 是否显示图片名
572
572
  default:false,type:Boolean},// isText: { // 是否以文字形式展示
@@ -2121,7 +2121,7 @@ var script$8={props:{column:Object,setFormParams:Function,getConfig:Function,con
2121
2121
  var script$7={props:{column:Object,setFormParams:Function,config:Object,ops:Object,// 请求参数,
2122
2122
  getConfig:Function},components:{Dp:__vue_component__$b},watch:{ops:function(newVal){const ops=newVal;const{key}=this.getConfig(this.column);const v1=ops[key[0]],v2=ops[key[1]],v3=ops[key[2]];if(v1&&v2){this.value=[moment(v1),moment(v2)];if(key[2]){console.log(key[2]);console.log(v3);console.log(key[3]);if(v3==key[3]){this.isHaveValue=true;}else{this.isHaveValue=false;}}else{this.isHaveValue=true;}}else{this.value=[];this.isHaveValue=false;}}},data(){return{trans,visible:false,pickerOptions:{shortcuts:[{text:trans('最近一周'),onClick(picker){const end=new Date();const start=new Date();start.setTime(start.getTime()-3600*1000*24*7);picker.$emit('pick',[start,end]);}},{text:trans('最近一个月'),onClick(picker){const end=new Date();const start=new Date();start.setTime(start.getTime()-3600*1000*24*30);picker.$emit('pick',[start,end]);}},{text:trans('最近三个月'),onClick(picker){const end=new Date();const start=new Date();start.setTime(start.getTime()-3600*1000*24*90);picker.$emit('pick',[start,end]);}}]},value:[],isHaveValue:false};},methods:{updateVisible(){this.visible=!this.visible;},submit(){const{key,rule}=this.getConfig(this.column);const{format,isAuto0059=false}=rule;let f1=format,f2=format;if(isAuto0059){f1='YYYY-MM-DD 00:00:00';f2='YYYY-MM-DD 23:59:59';}if(this.value.length>1){const v1=moment(this.value[0]).format(f1);const v2=moment(this.value[1]).format(f2);console.log(key);if(key[2]&&key[3]){const v3=key[3];this.setFormParams({[key[0]]:v1,[key[1]]:v2,[key[2]]:v3});}else{this.setFormParams({[key[0]]:v1,[key[1]]:v2});}}this.visible=false;},reset(){this.value=[];}}};/* script */const __vue_script__$7=script$7;/* template */var __vue_render__$7=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("span",[_c("el-popover",{attrs:{placement:"bottom",width:"425",trigger:"manual","popper-class":"pointRecord"},model:{value:_vm.visible,callback:function($$v){_vm.visible=$$v;},expression:"visible"}},[_c("div",{attrs:{"data-name":_vm.column.columnPropertyName}},[_c("el-date-picker",{staticStyle:{"margin-bottom":"10px"},attrs:{type:"datetimerange",align:"right","unlink-panels":"","range-separator":_vm.trans("至"),"start-placeholder":_vm.trans("开始日期"),"end-placeholder":_vm.trans("结束日期"),"picker-options":_vm.pickerOptions},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}}),_vm._v(" "),_c("el-button",{attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{attrs:{type:"success",size:"mini"},on:{click:_vm.submit}},[_vm._v(_vm._s(_vm.trans("确定")))])],1),_vm._v(" "),_c("dp",{attrs:{slot:"reference",value:_vm.isHaveValue,visible:_vm.visible},on:{"update-visible":_vm.updateVisible},slot:"reference"})],1)],1);};var __vue_staticRenderFns__$7=[];__vue_render__$7._withStripped=true;/* style */const __vue_inject_styles__$7=undefined;/* scoped */const __vue_scope_id__$7=undefined;/* module identifier */const __vue_module_identifier__$7=undefined;/* functional template */const __vue_is_functional_template__$7=false;/* style inject */ /* style inject SSR */ /* style inject shadow dom */const __vue_component__$7=/*#__PURE__*/normalizeComponent({render:__vue_render__$7,staticRenderFns:__vue_staticRenderFns__$7},__vue_inject_styles__$7,__vue_script__$7,__vue_scope_id__$7,__vue_is_functional_template__$7,__vue_module_identifier__$7,false,undefined,undefined,undefined);//
2123
2123
  var script$6={props:{setFormParams:Function,column:Object,ops:Object,// 请求参数
2124
- getConfig:Function},components:{Dp:__vue_component__$b},watch:{ops:function(newVal,old){const{key}=this.getConfig(this.column);const ops=newVal;this.value=ops[key]||'';}},data(){return{trans,visible:false,value:'',ruleCorrespond:'',isHaveFn:false};},mounted(){const{ruleCorrespond,userFn}=this.getConfig(this.column);this.isHaveFn=!!userFn;this.ruleCorrespond=ruleCorrespond;},methods:{querySearch(queryString,cb){return this.ruleCorrespond(queryString,cb);},submit(){const{key}=this.getConfig(this.column);this.setFormParams({[key]:this.value});this.visible=false;},reset(){this.value='';}}};/* script */const __vue_script__$6=script$6;/* template */var __vue_render__$6=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("span",[_c("el-popover",{attrs:{placement:"bottom",width:"100%",trigger:"click","popper-class":"pointRecord"},model:{value:_vm.visible,callback:function($$v){_vm.visible=$$v;},expression:"visible"}},[_c("div",{attrs:{"data-name":_vm.column.columnPropertyName}},[!_vm.isHaveFn?_c("el-input",{staticStyle:{"margin-bottom":"10px"},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}}):_c("el-autocomplete",{attrs:{"fetch-suggestions":_vm.querySearch,placeholder:"请输入内容"},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}}),_vm._v(" "),_c("el-button",{attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{attrs:{type:"success",size:"mini"},on:{click:_vm.submit}},[_vm._v(_vm._s(_vm.trans("确定")))])],1),_vm._v(" "),_c("dp",{attrs:{slot:"reference",value:_vm.value},slot:"reference"})],1)],1);};var __vue_staticRenderFns__$6=[];__vue_render__$6._withStripped=true;/* style */const __vue_inject_styles__$6=undefined;/* scoped */const __vue_scope_id__$6=undefined;/* module identifier */const __vue_module_identifier__$6=undefined;/* functional template */const __vue_is_functional_template__$6=false;/* style inject */ /* style inject SSR */ /* style inject shadow dom */const __vue_component__$6=/*#__PURE__*/normalizeComponent({render:__vue_render__$6,staticRenderFns:__vue_staticRenderFns__$6},__vue_inject_styles__$6,__vue_script__$6,__vue_scope_id__$6,__vue_is_functional_template__$6,__vue_module_identifier__$6,false,undefined,undefined,undefined);//
2124
+ getConfig:Function},components:{Dp:__vue_component__$b},watch:{ops:function(newVal,old){const{key}=this.getConfig(this.column);const ops=newVal;this.value=ops[key]||"";}},data(){return{trans,visible:false,value:"",ruleCorrespond:"",isHaveFn:false};},mounted(){const{ruleCorrespond,userFn}=this.getConfig(this.column);this.isHaveFn=!!userFn;this.ruleCorrespond=ruleCorrespond;},methods:{querySearch(queryString,cb){return this.ruleCorrespond(queryString,cb);},submit(){const{key}=this.getConfig(this.column);this.setFormParams({[key]:this.value});this.visible=false;},reset(){this.value="";}}};/* script */const __vue_script__$6=script$6;/* template */var __vue_render__$6=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("span",[_c("el-popover",{attrs:{placement:"bottom",width:"100%",trigger:"click","popper-class":"pointRecord"},model:{value:_vm.visible,callback:function($$v){_vm.visible=$$v;},expression:"visible"}},[_c("div",{attrs:{"data-name":_vm.column.columnPropertyName}},[!_vm.isHaveFn?_c("el-input",{staticStyle:{"margin-bottom":"10px"},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}}):_c("el-autocomplete",{attrs:{"fetch-suggestions":_vm.querySearch,placeholder:"请输入内容"},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}}),_vm._v(" "),_c("el-button",{attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{attrs:{type:"success",size:"mini"},on:{click:_vm.submit}},[_vm._v(_vm._s(_vm.trans("确定")))])],1),_vm._v(" "),_c("dp",{attrs:{slot:"reference",value:_vm.value},slot:"reference"})],1)],1);};var __vue_staticRenderFns__$6=[];__vue_render__$6._withStripped=true;/* style */const __vue_inject_styles__$6=undefined;/* scoped */const __vue_scope_id__$6=undefined;/* module identifier */const __vue_module_identifier__$6=undefined;/* functional template */const __vue_is_functional_template__$6=false;/* style inject */ /* style inject SSR */ /* style inject shadow dom */const __vue_component__$6=/*#__PURE__*/normalizeComponent({render:__vue_render__$6,staticRenderFns:__vue_staticRenderFns__$6},__vue_inject_styles__$6,__vue_script__$6,__vue_scope_id__$6,__vue_is_functional_template__$6,__vue_module_identifier__$6,false,undefined,undefined,undefined);//
2125
2125
  //
2126
2126
  //
2127
2127
  //
@@ -2166,7 +2166,8 @@ const service=axios.create({baseURL:process.env.VUE_APP_BASE_API,// url = base u
2166
2166
  timeout:50000// request timeout
2167
2167
  });// request interceptor
2168
2168
  service.interceptors.request.use(config=>{// do something before request is sent
2169
- return config;},error=>{// do something with request error
2169
+ // 加密
2170
+ if(window.HLEncryption){config.headers=window.HLEncryption.setRequestHeaders({url:(config.url.indexOf('/gateway')>-1?'':config.baseURL)+config.url,headers:config.headers});}return config;},error=>{// do something with request error
2170
2171
  console.log(error);// for debug
2171
2172
  return Promise.reject(error);});// response interceptor
2172
2173
  service.interceptors.response.use(/**
@@ -2176,7 +2177,8 @@ service.interceptors.response.use(/**
2176
2177
  * Determine the request status by custom code
2177
2178
  * Here is just an example
2178
2179
  * You can also judge the status by HTTP Status Code
2179
- */response=>{const res=response.data;if(res.code==-1||res.code==-2){console.log(res.msg);return Promise.reject(new Error(res.msg||'Error'));}else{// Message({
2180
+ */response=>{const res=response.data;// 解密
2181
+ if(window.HLEncryption){res.data=window.HLEncryption.decryptResponse(response.headers,res);}if(res.code==-1||res.code==-2){console.log(res.msg);return Promise.reject(new Error(res.msg||'Error'));}else{// Message({
2180
2182
  // message: res.msg,
2181
2183
  // type: 'success',
2182
2184
  // duration: 5 * 1000
@@ -2206,7 +2208,7 @@ default:0,type:Number},formatData:Function,isAutoScroll:{default:true,type:Boole
2206
2208
  },mounted(){this.changePG();},activated(){this.$refs.FormTable.doLayout();},methods:{getConfig(item){return getOptions(item,this.ruleFn);},getLabel(item,row){let config=getOptions(item,this.ruleFn);return this.formatSwitch(config,row);},changeType(type){if(!this.bigSearch)return;this.searchType=type==1?'textarea':'text';if(type==1){this.$nextTick(()=>{this.$refs.myTextarea.focus();});}},dragHead(newWidth,oldWidth,column,event){const findColumn=this.columnsShow.find(c=>c.columnPropertyName==column.label);let formatWidth=Math.ceil(newWidth);this.requestFn.pageTemplatecs.saveMyTemplateColumnWidth({templateKey:this.templateKey,columnCode:findColumn.columnCode,width:formatWidth}).then(response=>{});},changePG(pages){this.requestFn.pageTemplatecs.selectUserTemplateColumns({templateKey:this.templateKey}).then(response=>{if(response.result==='success'){this.columns=response.data.map(i=>{if(i.queryConfig){i.queryConfig=JSON.parse(i.queryConfig);}return i;});}});this.requestFn.pageTemplatecs.selectMyTableColumns({templateKey:this.templateKey}).then(response=>{if(response.result==='success'){this.columnsShow=response.data.map(i=>{if(i.queryConfig){i.queryConfig=JSON.parse(i.queryConfig);}return i;});this.$nextTick(()=>{if(this.isInitQuest){this.getList();}});}});},setFormParams(obj,type='add'){if(type=='add'){this.searchParams={...this.searchParams,...obj};}else{for(let key in obj){delete this.searchParams[key];}}this.$nextTick(()=>{this.getList({skipCount:1});});},enter(e){if(e.key==='Enter'||e.keyCode===13){console.log('enter');}},getList(params,isClearParams=false){let searchParams;if(isClearParams){searchParams={...params,pageSize:this.searchParams.pageSize,skipCount:1};}else{searchParams={...this.searchParams,...params};}this.searchParams=searchParams;// 处理数据
2207
2209
  let ops={};for(var key in searchParams){if(searchParams[key]!==''&&searchParams[key]!==null&&searchParams[key]!==undefined){ops[key]=searchParams[key];}}// 根据参数画tag
2208
2210
  formToValue(ops,this.columnsShow,this.colChange,this.ruleFn);const{pageSize,skipCount}=ops;this.listLoading=true;this.hooks(ops);this.getApi({...ops,pageSize:pageSize,skipCount:(skipCount-1)*pageSize,reqTypeSign:'config_table'}).then(response=>{if(response.result==='success'){if(this.formatData){this.list=this.formatData(response.data);}else{this.list=response.data||[];}this.ops=ops;this.count=response.count;}else{this.$message.error(response.msg);}this.$emit('update:countNum',this.count);this.listLoading=false;},err=>{this.listLoading=false;});},handleSelectionChange(val){let formatVal=val;if(this.selectType==='single'){formatVal=[val.pop()];let other=val;if(other&&other.length>0){other.forEach(row=>{this.$refs.FormTable.toggleRowSelection(row,false);});this.$refs.FormTable.toggleRowSelection(formatVal[0],true);}}this.selectcheck(formatVal);this.multipleSelection=formatVal;this.$emit('selectcheck',formatVal);},getNewCol(show,all){this.columnsShow=show;this.columns=all;this.tableKey=Math.random();// table不刷新 强制key
2209
- },closeTag(tag){const index=this.tags.findIndex(i=>i.name===tag.name);const delItem=this.tags.splice(index,1)[0];const{key,type}=delItem;if(type==='dateRange'||type==='inputScope'){this.setFormParams({[key[0]]:'',[key[1]]:'',[key[2]]:''},'remove');}else{this.setFormParams({[key]:''},'remove');}},closeAllTag(){const delKeys={};this.tags.forEach(i=>{const{key,type}=i;if(type==='dateRange'||type==='inputScope'){delKeys[key[0]]='';delKeys[key[1]]='';}else{delKeys[key]='';}});this.tags=[];this.setFormParams({...delKeys},'remove');},colChange(objTags){// const selectIndex =this.tags.findIndex(i => i.name === arrow)
2211
+ },closeTag(tag){const index=this.tags.findIndex(i=>i.name===tag.name);const delItem=this.tags.splice(index,1)[0];const{key,type}=delItem;if(type==='dateRange'||type==='inputScope'){this.setFormParams({[key[0]]:'',[key[1]]:'',[key[2]]:''},'remove');}else{this.setFormParams({[key]:''},'remove');}},handleSelectAll(val){this.$emit('selectAll',Array.from(val));},handleSelect(selection,row){this.$emit('select',{selection,row});},closeAllTag(){const delKeys={};this.tags.forEach(i=>{const{key,type}=i;if(type==='dateRange'||type==='inputScope'){delKeys[key[0]]='';delKeys[key[1]]='';}else{delKeys[key]='';}});this.tags=[];this.setFormParams({...delKeys},'remove');},colChange(objTags){// const selectIndex =this.tags.findIndex(i => i.name === arrow)
2210
2212
  // if(selectIndex >= 0){
2211
2213
  // let select = this.tags[selectIndex]
2212
2214
  // if(data.value.length > 0){
@@ -2219,7 +2221,7 @@ formToValue(ops,this.columnsShow,this.colChange,this.ruleFn);const{pageSize,skip
2219
2221
  // } else {
2220
2222
  // this.tags = this.tags.concat([{'name':arrow, value:data.value, str:data.str, key:data.searchKey, type: data.type }])
2221
2223
  // }
2222
- const arr=[];for(let key in objTags){arr.push(objTags[key]);}this.tags=[].concat(arr);},actionModal(){this.dialogFormVisible=true;this.columns;this.columns=this.columns.map(i=>{const isSelect=this.columnsShow.find(j=>j.columnPropertyName===i.columnPropertyName);i.show=!!isSelect;return i;});}}};/* script */const __vue_script__$1=script$1;/* template */var __vue_render__$1=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"container"},[_c("div",{staticClass:"optBox"},[_c("div",{staticClass:"leftBtn"},[_vm._t("leftBtn")],2),_vm._v(" "),_c("div",{staticClass:"rightBtn"},[_vm.hasSearch?_c("el-input",{directives:[{name:"show",rawName:"v-show",value:_vm.searchType=="textarea",expression:"searchType == 'textarea'"}],ref:"myTextarea",class:{"input-with-select":true,textareaSpec:_vm.searchType=="textarea"},attrs:{type:"textarea",placeholder:_vm.searchPlaceholder||_vm.trans("请输入内容"),rows:10},on:{blur:function($event){return _vm.changeType(0);}},nativeOn:{keyup:function($event){if(!$event.type.indexOf("key")&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){return null;}return _vm.getList({skipCount:1});}},model:{value:_vm.searchParams[_vm.keywordsKEY],callback:function($$v){_vm.$set(_vm.searchParams,_vm.keywordsKEY,typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[keywordsKEY]"}},[_c("el-button",{attrs:{slot:"append",icon:"el-icon-search"},on:{click:function($event){return _vm.getList({skipCount:1});}},slot:"append"})],1):_vm._e(),_vm._v(" "),_vm.hasSearch?_c("el-input",{directives:[{name:"show",rawName:"v-show",value:_vm.searchType=="text",expression:"searchType == 'text'"}],staticClass:"input-with-select",attrs:{placeholder:_vm.searchPlaceholder||_vm.trans("请输入内容")},on:{focus:function($event){return _vm.changeType(1);}},nativeOn:{keyup:function($event){if(!$event.type.indexOf("key")&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){return null;}return _vm.getList({skipCount:1});}},model:{value:_vm.searchParams[_vm.keywordsKEY],callback:function($$v){_vm.$set(_vm.searchParams,_vm.keywordsKEY,typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[keywordsKEY]"}},[_c("el-button",{attrs:{slot:"append",icon:"el-icon-search"},on:{click:function($event){return _vm.getList({skipCount:1});}},slot:"append"})],1):_vm._e(),_vm._v(" "),_c("el-divider",{attrs:{direction:"vertical"}}),_vm._v(" "),_c("el-button",{attrs:{size:"mini"},on:{click:_vm.actionModal}},[_c("svg",{staticClass:"icon",staticStyle:{color:"#10C2B0",cursor:"pointer"},attrs:{"aria-hidden":"true"}},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_shaixuanpeizhi"}})])])],1)]),_vm._v(" "),_c("div",{staticClass:"tagBox"},_vm._l(_vm.tags,function(tag){return _c("el-tag",{key:tag.name,attrs:{closable:"",type:"info"},on:{close:function($event){return _vm.closeTag(tag);}}},[_vm._v("\n "+_vm._s(tag.name+":"+tag.str)+"\n ")]);}),1),_vm._v(" "),_vm.tags.length>1?_c("el-button",{staticClass:"clearAll",on:{click:_vm.closeAllTag}},[_vm._v(_vm._s(_vm.trans("取消全部筛选")))]):_vm._e(),_vm._v(" "),_c("el-table",{directives:[{name:"loading",rawName:"v-loading",value:_vm.listLoading,expression:"listLoading"}],key:_vm.tableKey,ref:"FormTable",staticClass:"table",attrs:{data:_vm.list,"row-key":_vm.rowKey,border:"",fit:""},on:{"sort-change":function($event){return _vm.$emit("sortChange",$event);},"selection-change":_vm.handleSelectionChange,"header-dragend":_vm.dragHead}},[_vm.hasSelection?_c("el-table-column",{attrs:{type:"selection",width:"50",selectable:_vm.selectable}}):_vm._e(),_vm._v(" "),_vm.hasIndex?_c("el-table-column",{attrs:{label:_vm.trans("序号"),type:"index",width:"50"}}):_vm._e(),_vm._v(" "),_vm._t("additional"),_vm._v(" "),_vm._l(_vm.colDisplayFn(_vm.columnsShow),function(item){return _c("el-table-column",{key:item.columnCode,attrs:{label:item.columnPropertyName,fixed:item.isFixed==1&&"left","min-width":(item.defaultWidth||item.minWidth)+20,"show-overflow-tooltip":"",sortable:_vm.sortableList[item.columnProperty]||false,prop:item.columnProperty,align:"center"},scopedSlots:_vm._u([{key:"header",fn:function(ref){var column=ref.column;return[_c("span",[_vm._v(_vm._s(column.label))]),_vm._v(" "),_vm.$scopedSlots[item.columnProperty+"Header"]?_c("span",[_c("tips",[_vm._t(item.columnProperty+"Header")],2)],1):_vm._e(),_vm._v(" "),item.queryConfig&&item.queryConfig.type&&item.isQuery?_c(item.queryConfig.type,{tag:"component",attrs:{config:item.queryConfig,column:item,setFormParams:_vm.setFormParams,ops:_vm.ops,getConfig:_vm.getConfig,ruleFn:_vm.ruleFn[item.columnProperty]}}):_vm._e()];}},{key:"default",fn:function(ref){var row=ref.row;return[_vm.$scopedSlots[item.columnProperty]?_c("span",[_vm._t(item.columnProperty,null,{props:row,queryConfig:item.queryConfig,options:_vm.getConfig(item),label:_vm.getLabel(item,row)})],2):_c("span",[_vm._v(_vm._s(_vm.getLabel(item,row)))])];}}],null,true)});}),_vm._v(" "),_vm.$scopedSlots.actionBtn?_c("el-table-column",{attrs:{label:_vm.trans("操作"),align:"center",width:_vm.actionWidth,"class-name":"small-padding",fixed:"right"},scopedSlots:_vm._u([{key:"default",fn:function(ref){var row=ref.row;return[_vm._t("actionBtn",null,{props:row})];}}],null,true)}):_vm._e()],2),_vm._v(" "),_c("div",{staticClass:"btmBox"},[_c("div",{staticClass:"btmLeft"},[_vm._t("btmLeft")],2),_vm._v(" "),_c("pagination",{directives:[{name:"show",rawName:"v-show",value:_vm.count>0,expression:"count > 0"}],staticClass:"text-right mt-0 pagi",attrs:{autoScroll:_vm.isAutoScroll,total:_vm.count,page:_vm.searchParams.skipCount,limit:_vm.searchParams.pageSize},on:{"update:page":function($event){return _vm.$set(_vm.searchParams,"skipCount",$event);},"update:limit":function($event){return _vm.$set(_vm.searchParams,"pageSize",$event);},pagination:_vm.getList}})],1),_vm._v(" "),_vm.columns.length>0?_c("select-col",{attrs:{saveMyTemplateColumns:_vm.saveMyTemplateColumns,templateKey:_vm.templateKey,getNewCol:_vm.getNewCol,initialColumns:_vm.columns,columnsShow:_vm.columnsShow,visible:_vm.dialogFormVisible},on:{"update:visible":function($event){_vm.dialogFormVisible=$event;}}}):_vm._e()],1);};var __vue_staticRenderFns__$1=[];__vue_render__$1._withStripped=true;/* style */const __vue_inject_styles__$1=function(inject){if(!inject)return;inject("data-v-7baace6f_0",{source:"\n.el-table__empty-block {\n background: #fbfbfb;\n}\n",map:{"version":3,"sources":["/Users/chenlei/HLcode/test/components/FormTableScheme/index.vue"],"names":[],"mappings":";AAsdA;IACA,mBAAA;AACA","file":"index.vue","sourcesContent":["<template>\n <div class=\"container\">\n <div class=\"optBox\">\n <div class=\"leftBtn\">\n <slot name=\"leftBtn\"></slot>\n </div>\n <div class=\"rightBtn\">\n <el-input v-if=\"hasSearch\" v-show=\"searchType == 'textarea'\" type=\"textarea\" @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\" :class=\"{ 'input-with-select': true, textareaSpec:searchType == 'textarea' }\"\n v-model.trim=\"searchParams[keywordsKEY]\" \n @blur=\"changeType(0)\" :rows=\"10\" ref=\"myTextarea\" >\n <el-button slot=\"append\" icon=\"el-icon-search\" @click=\"getList({ skipCount: 1 })\"></el-button>\n </el-input>\n <el-input v-if=\"hasSearch\" v-show=\"searchType == 'text'\" @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\" class=\"input-with-select\"\n v-model.trim=\"searchParams[keywordsKEY]\" @focus=\"changeType(1)\" >\n <el-button slot=\"append\" icon=\"el-icon-search\" @click=\"getList({ skipCount: 1 })\"></el-button>\n </el-input>\n <el-divider direction=\"vertical\"></el-divider>\n <el-button size=\"mini\" @click=\"actionModal\">\n <svg class=\"icon\" aria-hidden=\"true\" style=\"color:#10C2B0;cursor:pointer;\">\n <use xlink:href=\"#fontFamily-a-web20_shaixuanpeizhi\"></use>\n </svg>\n </el-button>\n </div> \n </div>\n\n <div class=\"tagBox\">\n <el-tag v-for=\"tag in tags\" :key=\"tag.name\" closable @close=\"closeTag(tag)\" type=\"info\">\n {{ `${tag.name}:${tag.str}` }}\n </el-tag>\n </div>\n <el-button class=\"clearAll\" v-if=\"tags.length > 1\" @click=\"closeAllTag\">{{ trans('取消全部筛选') }}</el-button>\n <el-table ref=\"FormTable\" v-loading=\"listLoading\" :data=\"list\" :row-key=\"rowKey\" border fit\n @sort-change=\"$emit('sortChange', $event)\" @selection-change=\"handleSelectionChange\" @header-dragend=\"dragHead\"\n class=\"table\" :key=\"tableKey\">\n <el-table-column v-if=\"hasSelection\" type=\"selection\" width=\"50\" :selectable=\"selectable\">\n </el-table-column>\n <el-table-column v-if=\"hasIndex\" :label=\"trans('序号')\" type=\"index\" width=\"50\">\n </el-table-column>\n <slot name=\"additional\"></slot>\n <el-table-column v-for=\"(item) in colDisplayFn(columnsShow)\" :key=\"item.columnCode\"\n :label=\"item.columnPropertyName\" :fixed=\"(item.isFixed == 1) && 'left'\"\n :min-width=\"(item.defaultWidth || item.minWidth) + 20\" show-overflow-tooltip\n :sortable=\"sortableList[item.columnProperty] || false\" :prop=\"item.columnProperty\" align=\"center\">\n <template slot=\"header\" slot-scope=\"{column}\">\n\n <span>{{ column.label }}</span>\n <span v-if=\"$scopedSlots[`${item.columnProperty}Header`]\">\n <tips>\n <slot :name=\"`${item.columnProperty}Header`\"></slot>\n </tips>\n </span>\n <component v-if=\"item.queryConfig && item.queryConfig.type && item.isQuery\"\n v-bind:is=\"item.queryConfig.type\" :config=\"item.queryConfig\" :column=\"item\"\n :setFormParams=\"setFormParams\" :ops=\"ops\" :getConfig=\"getConfig\" :ruleFn=\"ruleFn[item.columnProperty]\"></component>\n </template>\n <template slot-scope=\"{ row }\">\n <span v-if=\"$scopedSlots[item.columnProperty]\">\n <slot :name=\"item.columnProperty\" :props=\"row\" :queryConfig=\"item.queryConfig\" \n :options=\"getConfig(item)\"\n :label=\"getLabel(item, row)\"></slot>\n </span>\n <span v-else>{{ getLabel(item, row) }}</span>\n </template>\n </el-table-column>\n <el-table-column :label=\"trans('操作')\" align=\"center\" :width=\"actionWidth\" class-name=\"small-padding\"\n v-if=\"$scopedSlots.actionBtn\" fixed=\"right\">\n <template slot-scope=\"{ row }\">\n <slot name=\"actionBtn\" :props=\"row\">\n\n </slot>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"btmBox\">\n <div class=\"btmLeft\">\n <slot name=\"btmLeft\"></slot>\n </div>\n <pagination v-show=\"count > 0\" :autoScroll=\"isAutoScroll\" class=\"text-right mt-0 pagi\" :total=\"count\"\n :page.sync=\"searchParams.skipCount\" :limit.sync=\"searchParams.pageSize\" @pagination=\"getList\" />\n </div>\n\n <select-col v-if=\"columns.length > 0\" :saveMyTemplateColumns=\"saveMyTemplateColumns\" :templateKey=\"templateKey\"\n :getNewCol=\"getNewCol\" :initialColumns=\"columns\" :columnsShow=\"columnsShow\"\n :visible.sync=\"dialogFormVisible\"></select-col>\n\n </div>\n</template>\n<script>\n/**\n * 表格\n * fetchParam {object} 请求参数\n * countNum {number} 数据总数 用法:countNum.sync=\"count\"\n * getApi {function} 请求接口\n * formatData {function} 返回参数格式化\n * sortChange {function} 排序事件函数\n * setHeight {string || number} 表格高度\n * selectcheck {function} 选择监听\n * selectable { function } checkbox 筛选禁用\n */\n\nimport { SelectCol, Check, Date, Inputsp, DateRange, Tips, pageTemplatecs, Radio, InputScope, Selectsp } from './component/index'\nimport Pagination from '@/components/Pagination';\nimport formatSwitch from './format';\nimport formToValue from './component/ColHeader/dataFormat'\nimport trans from '../lang/trans'\nimport getOptions from './component/utils'\nexport default {\n name: 'FormTableScheme',\n components: { SelectCol, Check, Date, Inputsp, Pagination, DateRange, Tips, Radio, InputScope, Selectsp },\n model: {\n event: 'sortChange'\n },\n data() {\n return {\n trans,\n dialogFormVisible: false,\n formatSwitch,\n list: [],\n saveMyTemplateColumns: this.requestFn.pageTemplatecs.saveMyTemplateColumns,\n columns: [],\n columnsShow: [],\n checkList: ['复选框 A'],\n tags: [],\n count: this.countNum,\n keywords: this.keywords,\n searchParams: {\n ...this.fetchParam,\n [this.keywordsKEY]: '',\n pageSize: 20,\n skipCount: 1\n },\n listLoading: false,\n ops: {},\n multipleSelection: [],\n tableKey: 'first',\n searchType:'text',\n }\n },\n watch: {\n fetchParam: {\n deep: true,\n immediate: true,\n handler() {\n this.searchParams = {\n ...this.searchParams,\n ...this.fetchParam\n }\n }\n },\n },\n props: {\n bigSearch:{\n default: false,\n type: Boolean\n },\n fetchParam: { // 上传时附带的参数\n default: () => {\n return {}\n },\n type: Object\n },\n hasSearch: {\n default: true,\n type: Boolean\n },\n rowKey: {\n default: 'columnProperty',\n type: String\n },\n countNum: { // 总数\n default: 0,\n type: Number\n },\n formatData: Function,\n isAutoScroll: {\n default: true,\n type: Boolean\n },\n setHeight: {\n default: '',\n type: String\n },\n getApi: Function,\n hooks: {\n default: () => {\n\n },\n type: Function\n },\n columnsApi: Function,\n requestFn: {\n default: () => {\n return pageTemplatecs\n },\n type: Object\n },\n templateKey: String,\n selectcheck: Function,\n selectType: String,\n hasSelection: Boolean,\n hasIndex: {\n type: Boolean,\n default: false\n },\n selectable: Function,\n searchPlaceholder: String,\n actionWidth: {\n type: String,\n default: '100'\n },\n keywordsKEY: {\n type: String,\n default: 'keywords'\n },\n ruleFn: {\n type: Object,\n default: function () {\n return {}\n },\n },\n colDisplayFn: {\n type: Function,\n default: function (col) {\n return col\n }\n },\n sortableList: {\n type: Object,\n default: function () {\n return {}\n },\n },\n isInitQuest: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n\n },\n created() {\n // document.addEventListener('keyup', this.enter)\n },\n destroyed() {\n // document.removeEventListener('keyup', this.enter)\n },\n mounted() {\n this.changePG()\n },\n activated() {\n this.$refs.FormTable.doLayout()\n },\n methods: {\n getConfig(item){\n return getOptions(item,this.ruleFn)\n },\n getLabel(item, row){\n let config = getOptions(item,this.ruleFn)\n return this.formatSwitch(config,row)\n },\n changeType(type){\n if(!this.bigSearch) return;\n this.searchType = type == 1 ? 'textarea':'text';\n if(type == 1){\n this.$nextTick(() => {\n this.$refs.myTextarea.focus();\n })\n } \n },\n dragHead(newWidth, oldWidth, column, event) {\n const findColumn = this.columnsShow.find(c => c.columnPropertyName == column.label)\n let formatWidth = Math.ceil(newWidth)\n this.requestFn.pageTemplatecs.saveMyTemplateColumnWidth({ templateKey: this.templateKey, columnCode: findColumn.columnCode, width: formatWidth }).then((response) => {\n })\n },\n changePG(pages) {\n this.requestFn.pageTemplatecs.selectUserTemplateColumns({ templateKey: this.templateKey }).then((response) => {\n if (response.result === 'success') {\n this.columns = response.data.map((i) => {\n if (i.queryConfig) {\n i.queryConfig = JSON.parse(i.queryConfig)\n }\n return i\n })\n }\n })\n this.requestFn.pageTemplatecs.selectMyTableColumns({ templateKey: this.templateKey }).then((response) => {\n if (response.result === 'success') {\n this.columnsShow = response.data.map((i) => {\n if (i.queryConfig) {\n i.queryConfig = JSON.parse(i.queryConfig)\n }\n return i\n })\n this.$nextTick(() => {\n if (this.isInitQuest) {\n this.getList()\n }\n })\n }\n })\n\n },\n setFormParams(obj, type = 'add') {\n if (type == 'add') {\n this.searchParams = {\n ...this.searchParams,\n ...obj,\n }\n } else {\n for (let key in obj) {\n delete this.searchParams[key]\n }\n }\n\n this.$nextTick(() => {\n this.getList({\n skipCount: 1,\n });\n })\n },\n enter(e) {\n if ((e.key === 'Enter' || e.keyCode === 13)) {\n console.log('enter')\n }\n },\n getList(params, isClearParams = false) {\n let searchParams\n if (isClearParams) {\n searchParams = {\n ...params,\n pageSize: this.searchParams.pageSize,\n skipCount: 1,\n }\n } else {\n searchParams = {\n ...this.searchParams,\n ...params,\n }\n }\n\n\n this.searchParams = searchParams;\n\n\n // 处理数据\n let ops = {};\n for (var key in searchParams) {\n if (searchParams[key] !== '' && searchParams[key] !== null && searchParams[key] !== undefined) {\n ops[key] = searchParams[key]\n }\n }\n // 根据参数画tag\n formToValue(ops, this.columnsShow, this.colChange, this.ruleFn)\n\n\n\n const { pageSize, skipCount } = ops\n\n this.listLoading = true\n this.hooks(ops)\n this.getApi({\n ...ops,\n pageSize: pageSize,\n skipCount: (skipCount - 1) * pageSize,\n reqTypeSign:'config_table'\n }).then(response => {\n if (response.result === 'success') {\n if (this.formatData) {\n this.list = this.formatData(response.data)\n } else {\n this.list = response.data || []\n }\n this.ops = ops\n this.count = response.count\n } else {\n this.$message.error(response.msg)\n }\n this.$emit('update:countNum', this.count)\n this.listLoading = false\n }, err => {\n this.listLoading = false\n })\n },\n handleSelectionChange(val) {\n let formatVal = val\n if (this.selectType === 'single') {\n formatVal = [val.pop()]\n let other = val\n if (other && other.length > 0) {\n other.forEach(row => {\n this.$refs.FormTable.toggleRowSelection(row, false);\n });\n this.$refs.FormTable.toggleRowSelection(formatVal[0], true);\n }\n }\n this.selectcheck(formatVal)\n this.multipleSelection = formatVal;\n this.$emit('selectcheck', formatVal)\n },\n getNewCol(show, all) {\n this.columnsShow = show\n this.columns = all\n this.tableKey = Math.random() // table不刷新 强制key\n\n },\n closeTag(tag) {\n const index = this.tags.findIndex(i => i.name === tag.name)\n const delItem = this.tags.splice(index, 1)[0];\n const { key, type } = delItem\n if (type === 'dateRange' || type === 'inputScope') {\n this.setFormParams({ [key[0]]: '', [key[1]]: '', [key[2]]: '' }, 'remove')\n } else {\n this.setFormParams({ [key]: '' }, 'remove')\n }\n\n },\n closeAllTag() {\n const delKeys = {}\n this.tags.forEach((i) => {\n const { key, type } = i\n if (type === 'dateRange' || type === 'inputScope') {\n delKeys[key[0]] = ''\n delKeys[key[1]] = ''\n } else {\n delKeys[key] = ''\n }\n })\n this.tags = [];\n this.setFormParams({ ...delKeys }, 'remove')\n },\n colChange(objTags) {\n // const selectIndex =this.tags.findIndex(i => i.name === arrow)\n // if(selectIndex >= 0){\n // let select = this.tags[selectIndex]\n // if(data.value.length > 0){\n // select.value = data.value\n // select.str = data.str\n // this.$set(this.tags, selectIndex, select)\n // } else {\n // this.tags.splice(selectIndex,1)\n // }\n\n // } else {\n // this.tags = this.tags.concat([{'name':arrow, value:data.value, str:data.str, key:data.searchKey, type: data.type }])\n // }\n const arr = []\n for (let key in objTags) {\n arr.push(objTags[key])\n }\n\n this.tags = [].concat(arr)\n\n },\n\n actionModal() {\n this.dialogFormVisible = true\n this.columns;\n this.columns = this.columns.map((i) => {\n const isSelect = this.columnsShow.find(j => j.columnPropertyName === i.columnPropertyName)\n i.show = !!isSelect;\n return i\n })\n },\n }\n}\n</script>\n<style>\n.el-table__empty-block {\n background: #fbfbfb;\n}\n</style>\n<style lang=\"less\" scoped>\n.container {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n\n.input-with-select {\n width: 300px;\n}\n\n.optBox {\n margin-bottom: 10px;\n overflow:hidden;\n}\n\n.leftBtn {\n float: left;\n}\n\n.rightBtn {\n float: right;\n .textareaSpec{\n position: absolute;\n right:100px;\n z-index: 1000;\n width:700px;\n height: 400px;\n // transition: all 1s ease-out;\n }\n .border {\n border: 1px solid rgb(220, 223, 230)\n }\n}\n\n.tagBox {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n >.el-tag {\n margin: 4px 10px 0 0;\n }\n}\n\n.clearAll {\n float: right;\n}\n\n.table {\n width: 100%;\n margin-top: 10px;\n float: left;\n // overflow-x: visible;\n // overflow-y: visible;\n // /deep/ .el-table__header-wrapper{\n // position: sticky;\n // top:84px;\n // z-index:5;\n // }\n // /deep/ .el-table__fixed-header-wrapper{\n // z-index:5;\n // }\n}\n\n.pagi {\n float: right;\n}\n\n.pagi.pagination-container {\n padding: 0px;\n padding-top: 20px;\n}\n\n.btmBox {\n width: 100%;\n float: left;\n display: flex;\n justify-content: space-between;\n}\n</style>"]},media:undefined}),inject("data-v-7baace6f_1",{source:".container[data-v-7baace6f] {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n.input-with-select[data-v-7baace6f] {\n width: 300px;\n}\n.optBox[data-v-7baace6f] {\n margin-bottom: 10px;\n overflow: hidden;\n}\n.leftBtn[data-v-7baace6f] {\n float: left;\n}\n.rightBtn[data-v-7baace6f] {\n float: right;\n}\n.rightBtn .textareaSpec[data-v-7baace6f] {\n position: absolute;\n right: 100px;\n z-index: 1000;\n width: 700px;\n height: 400px;\n}\n.rightBtn .border[data-v-7baace6f] {\n border: 1px solid #dcdfe6;\n}\n.tagBox[data-v-7baace6f] {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n}\n.tagBox > .el-tag[data-v-7baace6f] {\n margin: 4px 10px 0 0;\n}\n.clearAll[data-v-7baace6f] {\n float: right;\n}\n.table[data-v-7baace6f] {\n width: 100%;\n margin-top: 10px;\n float: left;\n}\n.pagi[data-v-7baace6f] {\n float: right;\n}\n.pagi.pagination-container[data-v-7baace6f] {\n padding: 0px;\n padding-top: 20px;\n}\n.btmBox[data-v-7baace6f] {\n width: 100%;\n float: left;\n display: flex;\n justify-content: space-between;\n}\n",map:{"version":3,"sources":["index.vue"],"names":[],"mappings":"AAAA;EACE,aAAa;EACb,WAAW;EACX,WAAW;EACX,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,mBAAmB;EACnB,gBAAgB;AAClB;AACA;EACE,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,aAAa;AACf;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,yBAAyB;EACzB,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,YAAY;AACd;AACA;EACE,WAAW;EACX,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;EACZ,iBAAiB;AACnB;AACA;EACE,WAAW;EACX,WAAW;EACX,aAAa;EACb,8BAA8B;AAChC","file":"index.vue","sourcesContent":[".container {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n.input-with-select {\n width: 300px;\n}\n.optBox {\n margin-bottom: 10px;\n overflow: hidden;\n}\n.leftBtn {\n float: left;\n}\n.rightBtn {\n float: right;\n}\n.rightBtn .textareaSpec {\n position: absolute;\n right: 100px;\n z-index: 1000;\n width: 700px;\n height: 400px;\n}\n.rightBtn .border {\n border: 1px solid #dcdfe6;\n}\n.tagBox {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n}\n.tagBox > .el-tag {\n margin: 4px 10px 0 0;\n}\n.clearAll {\n float: right;\n}\n.table {\n width: 100%;\n margin-top: 10px;\n float: left;\n}\n.pagi {\n float: right;\n}\n.pagi.pagination-container {\n padding: 0px;\n padding-top: 20px;\n}\n.btmBox {\n width: 100%;\n float: left;\n display: flex;\n justify-content: space-between;\n}\n"]},media:undefined});};/* scoped */const __vue_scope_id__$1="data-v-7baace6f";/* module identifier */const __vue_module_identifier__$1=undefined;/* functional template */const __vue_is_functional_template__$1=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$1=/*#__PURE__*/normalizeComponent({render:__vue_render__$1,staticRenderFns:__vue_staticRenderFns__$1},__vue_inject_styles__$1,__vue_script__$1,__vue_scope_id__$1,__vue_is_functional_template__$1,__vue_module_identifier__$1,false,createInjector,undefined,undefined);__vue_component__$1.install=function(Vue){Vue.component(__vue_component__$1.name,__vue_component__$1);};/*!
2224
+ const arr=[];for(let key in objTags){arr.push(objTags[key]);}this.tags=[].concat(arr);},actionModal(){this.dialogFormVisible=true;this.columns;this.columns=this.columns.map(i=>{const isSelect=this.columnsShow.find(j=>j.columnPropertyName===i.columnPropertyName);i.show=!!isSelect;return i;});}}};/* script */const __vue_script__$1=script$1;/* template */var __vue_render__$1=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"container"},[_c("div",{staticClass:"optBox"},[_c("div",{staticClass:"leftBtn"},[_vm._t("leftBtn")],2),_vm._v(" "),_c("div",{staticClass:"rightBtn"},[_vm.hasSearch?_c("el-input",{directives:[{name:"show",rawName:"v-show",value:_vm.searchType=="textarea",expression:"searchType == 'textarea'"}],ref:"myTextarea",class:{"input-with-select":true,textareaSpec:_vm.searchType=="textarea"},attrs:{type:"textarea",placeholder:_vm.searchPlaceholder||_vm.trans("请输入内容"),rows:10},on:{blur:function($event){return _vm.changeType(0);}},nativeOn:{keyup:function($event){if(!$event.type.indexOf("key")&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){return null;}return _vm.getList({skipCount:1});}},model:{value:_vm.searchParams[_vm.keywordsKEY],callback:function($$v){_vm.$set(_vm.searchParams,_vm.keywordsKEY,typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[keywordsKEY]"}},[_c("el-button",{attrs:{slot:"append",icon:"el-icon-search"},on:{click:function($event){return _vm.getList({skipCount:1});}},slot:"append"})],1):_vm._e(),_vm._v(" "),_vm.hasSearch?_c("el-input",{directives:[{name:"show",rawName:"v-show",value:_vm.searchType=="text",expression:"searchType == 'text'"}],staticClass:"input-with-select",attrs:{placeholder:_vm.searchPlaceholder||_vm.trans("请输入内容")},on:{focus:function($event){return _vm.changeType(1);}},nativeOn:{keyup:function($event){if(!$event.type.indexOf("key")&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){return null;}return _vm.getList({skipCount:1});}},model:{value:_vm.searchParams[_vm.keywordsKEY],callback:function($$v){_vm.$set(_vm.searchParams,_vm.keywordsKEY,typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[keywordsKEY]"}},[_c("el-button",{attrs:{slot:"append",icon:"el-icon-search"},on:{click:function($event){return _vm.getList({skipCount:1});}},slot:"append"})],1):_vm._e(),_vm._v(" "),_c("el-divider",{attrs:{direction:"vertical"}}),_vm._v(" "),_c("el-button",{attrs:{size:"mini"},on:{click:_vm.actionModal}},[_c("svg",{staticClass:"icon",staticStyle:{color:"#10C2B0",cursor:"pointer"},attrs:{"aria-hidden":"true"}},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_shaixuanpeizhi"}})])])],1)]),_vm._v(" "),_c("div",{staticClass:"tagBox"},_vm._l(_vm.tags,function(tag){return _c("el-tag",{key:tag.name,attrs:{closable:"",type:"info"},on:{close:function($event){return _vm.closeTag(tag);}}},[_vm._v("\n "+_vm._s(tag.name+":"+tag.str)+"\n ")]);}),1),_vm._v(" "),_vm.tags.length>1?_c("el-button",{staticClass:"clearAll",on:{click:_vm.closeAllTag}},[_vm._v(_vm._s(_vm.trans("取消全部筛选")))]):_vm._e(),_vm._v(" "),_c("el-table",{directives:[{name:"loading",rawName:"v-loading",value:_vm.listLoading,expression:"listLoading"}],key:_vm.tableKey,ref:"FormTable",staticClass:"table",attrs:{data:_vm.list,"row-key":_vm.rowKey,border:"",fit:""},on:{"sort-change":function($event){return _vm.$emit("sortChange",$event);},"selection-change":_vm.handleSelectionChange,"header-dragend":_vm.dragHead,"select-all":_vm.handleSelectAll,select:_vm.handleSelect}},[_vm.hasSelection?_c("el-table-column",{attrs:{type:"selection",width:"50",selectable:_vm.selectable}}):_vm._e(),_vm._v(" "),_vm.hasIndex?_c("el-table-column",{attrs:{label:_vm.trans("序号"),type:"index",width:"50"}}):_vm._e(),_vm._v(" "),_vm._t("additional"),_vm._v(" "),_vm._l(_vm.colDisplayFn(_vm.columnsShow),function(item){return _c("el-table-column",{key:item.columnCode,attrs:{label:item.columnPropertyName,fixed:item.isFixed==1&&"left","min-width":(item.defaultWidth||item.minWidth)+20,"show-overflow-tooltip":"",sortable:_vm.sortableList[item.columnProperty]||false,prop:item.columnProperty,align:"center"},scopedSlots:_vm._u([{key:"header",fn:function(ref){var column=ref.column;return[_c("span",[_vm._v(_vm._s(column.label))]),_vm._v(" "),_vm.$scopedSlots[item.columnProperty+"Header"]?_c("span",[_c("tips",[_vm._t(item.columnProperty+"Header")],2)],1):_vm._e(),_vm._v(" "),item.queryConfig&&item.queryConfig.type&&item.isQuery?_c(item.queryConfig.type,{tag:"component",attrs:{config:item.queryConfig,column:item,setFormParams:_vm.setFormParams,ops:_vm.ops,getConfig:_vm.getConfig,ruleFn:_vm.ruleFn[item.columnProperty]}}):_vm._e()];}},{key:"default",fn:function(ref){var row=ref.row;return[_vm.$scopedSlots[item.columnProperty]?_c("span",[_vm._t(item.columnProperty,null,{props:row,queryConfig:item.queryConfig,options:_vm.getConfig(item),label:_vm.getLabel(item,row)})],2):_c("span",[_vm._v(_vm._s(_vm.getLabel(item,row)))])];}}],null,true)});}),_vm._v(" "),_vm.$scopedSlots.actionBtn?_c("el-table-column",{attrs:{label:_vm.trans("操作"),align:"center",width:_vm.actionWidth,"class-name":"small-padding",fixed:"right"},scopedSlots:_vm._u([{key:"default",fn:function(ref){var row=ref.row;return[_vm._t("actionBtn",null,{props:row})];}}],null,true)}):_vm._e()],2),_vm._v(" "),_c("div",{staticClass:"btmBox"},[_c("div",{staticClass:"btmLeft"},[_vm._t("btmLeft")],2),_vm._v(" "),_c("pagination",{directives:[{name:"show",rawName:"v-show",value:_vm.count>0,expression:"count > 0"}],staticClass:"text-right mt-0 pagi",attrs:{autoScroll:_vm.isAutoScroll,total:_vm.count,page:_vm.searchParams.skipCount,limit:_vm.searchParams.pageSize},on:{"update:page":function($event){return _vm.$set(_vm.searchParams,"skipCount",$event);},"update:limit":function($event){return _vm.$set(_vm.searchParams,"pageSize",$event);},pagination:_vm.getList}})],1),_vm._v(" "),_vm.columns.length>0?_c("select-col",{attrs:{saveMyTemplateColumns:_vm.saveMyTemplateColumns,templateKey:_vm.templateKey,getNewCol:_vm.getNewCol,initialColumns:_vm.columns,columnsShow:_vm.columnsShow,visible:_vm.dialogFormVisible},on:{"update:visible":function($event){_vm.dialogFormVisible=$event;}}}):_vm._e()],1);};var __vue_staticRenderFns__$1=[];__vue_render__$1._withStripped=true;/* style */const __vue_inject_styles__$1=function(inject){if(!inject)return;inject("data-v-78568fe8_0",{source:"\n.el-table__empty-block {\n background: #fbfbfb;\n}\n",map:{"version":3,"sources":["/Users/chenlei/HLcode/test/components/FormTableScheme/index.vue"],"names":[],"mappings":";AA4dA;IACA,mBAAA;AACA","file":"index.vue","sourcesContent":["<template>\n <div class=\"container\">\n <div class=\"optBox\">\n <div class=\"leftBtn\">\n <slot name=\"leftBtn\"></slot>\n </div>\n <div class=\"rightBtn\">\n <el-input v-if=\"hasSearch\" v-show=\"searchType == 'textarea'\" type=\"textarea\" @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\" :class=\"{ 'input-with-select': true, textareaSpec:searchType == 'textarea' }\"\n v-model.trim=\"searchParams[keywordsKEY]\" \n @blur=\"changeType(0)\" :rows=\"10\" ref=\"myTextarea\" >\n <el-button slot=\"append\" icon=\"el-icon-search\" @click=\"getList({ skipCount: 1 })\"></el-button>\n </el-input>\n <el-input v-if=\"hasSearch\" v-show=\"searchType == 'text'\" @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\" class=\"input-with-select\"\n v-model.trim=\"searchParams[keywordsKEY]\" @focus=\"changeType(1)\" >\n <el-button slot=\"append\" icon=\"el-icon-search\" @click=\"getList({ skipCount: 1 })\"></el-button>\n </el-input>\n <el-divider direction=\"vertical\"></el-divider>\n <el-button size=\"mini\" @click=\"actionModal\">\n <svg class=\"icon\" aria-hidden=\"true\" style=\"color:#10C2B0;cursor:pointer;\">\n <use xlink:href=\"#fontFamily-a-web20_shaixuanpeizhi\"></use>\n </svg>\n </el-button>\n </div> \n </div>\n\n <div class=\"tagBox\">\n <el-tag v-for=\"tag in tags\" :key=\"tag.name\" closable @close=\"closeTag(tag)\" type=\"info\">\n {{ `${tag.name}:${tag.str}` }}\n </el-tag>\n </div>\n <el-button class=\"clearAll\" v-if=\"tags.length > 1\" @click=\"closeAllTag\">{{ trans('取消全部筛选') }}</el-button>\n <el-table ref=\"FormTable\" v-loading=\"listLoading\" :data=\"list\" :row-key=\"rowKey\" border fit\n @sort-change=\"$emit('sortChange', $event)\" @selection-change=\"handleSelectionChange\" @header-dragend=\"dragHead\" @select-all=\"handleSelectAll\" @select=\"handleSelect\"\n class=\"table\" :key=\"tableKey\">\n <el-table-column v-if=\"hasSelection\" type=\"selection\" width=\"50\" :selectable=\"selectable\">\n </el-table-column>\n <el-table-column v-if=\"hasIndex\" :label=\"trans('序号')\" type=\"index\" width=\"50\">\n </el-table-column>\n <slot name=\"additional\"></slot>\n <el-table-column v-for=\"(item) in colDisplayFn(columnsShow)\" :key=\"item.columnCode\"\n :label=\"item.columnPropertyName\" :fixed=\"(item.isFixed == 1) && 'left'\"\n :min-width=\"(item.defaultWidth || item.minWidth) + 20\" show-overflow-tooltip\n :sortable=\"sortableList[item.columnProperty] || false\" :prop=\"item.columnProperty\" align=\"center\">\n <template slot=\"header\" slot-scope=\"{column}\">\n\n <span>{{ column.label }}</span>\n <span v-if=\"$scopedSlots[`${item.columnProperty}Header`]\">\n <tips>\n <slot :name=\"`${item.columnProperty}Header`\"></slot>\n </tips>\n </span>\n <component v-if=\"item.queryConfig && item.queryConfig.type && item.isQuery\"\n v-bind:is=\"item.queryConfig.type\" :config=\"item.queryConfig\" :column=\"item\"\n :setFormParams=\"setFormParams\" :ops=\"ops\" :getConfig=\"getConfig\" :ruleFn=\"ruleFn[item.columnProperty]\"></component>\n </template>\n <template slot-scope=\"{ row }\">\n <span v-if=\"$scopedSlots[item.columnProperty]\">\n <slot :name=\"item.columnProperty\" :props=\"row\" :queryConfig=\"item.queryConfig\" \n :options=\"getConfig(item)\"\n :label=\"getLabel(item, row)\"></slot>\n </span>\n <span v-else>{{ getLabel(item, row) }}</span>\n </template>\n </el-table-column>\n <el-table-column :label=\"trans('操作')\" align=\"center\" :width=\"actionWidth\" class-name=\"small-padding\"\n v-if=\"$scopedSlots.actionBtn\" fixed=\"right\">\n <template slot-scope=\"{ row }\">\n <slot name=\"actionBtn\" :props=\"row\">\n\n </slot>\n </template>\n </el-table-column>\n </el-table>\n <div class=\"btmBox\">\n <div class=\"btmLeft\">\n <slot name=\"btmLeft\"></slot>\n </div>\n <pagination v-show=\"count > 0\" :autoScroll=\"isAutoScroll\" class=\"text-right mt-0 pagi\" :total=\"count\"\n :page.sync=\"searchParams.skipCount\" :limit.sync=\"searchParams.pageSize\" @pagination=\"getList\" />\n </div>\n\n <select-col v-if=\"columns.length > 0\" :saveMyTemplateColumns=\"saveMyTemplateColumns\" :templateKey=\"templateKey\"\n :getNewCol=\"getNewCol\" :initialColumns=\"columns\" :columnsShow=\"columnsShow\"\n :visible.sync=\"dialogFormVisible\"></select-col>\n\n </div>\n</template>\n<script>\n/**\n * 表格\n * fetchParam {object} 请求参数\n * countNum {number} 数据总数 用法:countNum.sync=\"count\"\n * getApi {function} 请求接口\n * formatData {function} 返回参数格式化\n * sortChange {function} 排序事件函数\n * setHeight {string || number} 表格高度\n * selectcheck {function} 选择监听\n * selectable { function } checkbox 筛选禁用\n */\n\nimport { SelectCol, Check, Date, Inputsp, DateRange, Tips, pageTemplatecs, Radio, InputScope, Selectsp } from './component/index'\nimport Pagination from '@/components/Pagination';\nimport formatSwitch from './format';\nimport formToValue from './component/ColHeader/dataFormat'\nimport trans from '../lang/trans'\nimport getOptions from './component/utils'\nexport default {\n name: 'FormTableScheme',\n components: { SelectCol, Check, Date, Inputsp, Pagination, DateRange, Tips, Radio, InputScope, Selectsp },\n model: {\n event: 'sortChange'\n },\n data() {\n return {\n trans,\n dialogFormVisible: false,\n formatSwitch,\n list: [],\n saveMyTemplateColumns: this.requestFn.pageTemplatecs.saveMyTemplateColumns,\n columns: [],\n columnsShow: [],\n checkList: ['复选框 A'],\n tags: [],\n count: this.countNum,\n keywords: this.keywords,\n searchParams: {\n ...this.fetchParam,\n [this.keywordsKEY]: '',\n pageSize: 20,\n skipCount: 1\n },\n listLoading: false,\n ops: {},\n multipleSelection: [],\n tableKey: 'first',\n searchType:'text',\n }\n },\n watch: {\n fetchParam: {\n deep: true,\n immediate: true,\n handler() {\n this.searchParams = {\n ...this.searchParams,\n ...this.fetchParam\n }\n }\n },\n },\n props: {\n bigSearch:{\n default: false,\n type: Boolean\n },\n fetchParam: { // 上传时附带的参数\n default: () => {\n return {}\n },\n type: Object\n },\n hasSearch: {\n default: true,\n type: Boolean\n },\n rowKey: {\n default: 'columnProperty',\n type: String\n },\n countNum: { // 总数\n default: 0,\n type: Number\n },\n formatData: Function,\n isAutoScroll: {\n default: true,\n type: Boolean\n },\n setHeight: {\n default: '',\n type: String\n },\n getApi: Function,\n hooks: {\n default: () => {\n\n },\n type: Function\n },\n columnsApi: Function,\n requestFn: {\n default: () => {\n return pageTemplatecs\n },\n type: Object\n },\n templateKey: String,\n selectcheck: Function,\n selectType: String,\n hasSelection: Boolean,\n hasIndex: {\n type: Boolean,\n default: false\n },\n selectable: Function,\n searchPlaceholder: String,\n actionWidth: {\n type: String,\n default: '100'\n },\n keywordsKEY: {\n type: String,\n default: 'keywords'\n },\n ruleFn: {\n type: Object,\n default: function () {\n return {}\n },\n },\n colDisplayFn: {\n type: Function,\n default: function (col) {\n return col\n }\n },\n sortableList: {\n type: Object,\n default: function () {\n return {}\n },\n },\n isInitQuest: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n\n },\n created() {\n // document.addEventListener('keyup', this.enter)\n },\n destroyed() {\n // document.removeEventListener('keyup', this.enter)\n },\n mounted() {\n this.changePG()\n },\n activated() {\n this.$refs.FormTable.doLayout()\n },\n methods: {\n getConfig(item){\n return getOptions(item,this.ruleFn)\n },\n getLabel(item, row){\n let config = getOptions(item,this.ruleFn)\n return this.formatSwitch(config,row)\n },\n changeType(type){\n if(!this.bigSearch) return;\n this.searchType = type == 1 ? 'textarea':'text';\n if(type == 1){\n this.$nextTick(() => {\n this.$refs.myTextarea.focus();\n })\n } \n },\n dragHead(newWidth, oldWidth, column, event) {\n const findColumn = this.columnsShow.find(c => c.columnPropertyName == column.label)\n let formatWidth = Math.ceil(newWidth)\n this.requestFn.pageTemplatecs.saveMyTemplateColumnWidth({ templateKey: this.templateKey, columnCode: findColumn.columnCode, width: formatWidth }).then((response) => {\n })\n },\n changePG(pages) {\n this.requestFn.pageTemplatecs.selectUserTemplateColumns({ templateKey: this.templateKey }).then((response) => {\n if (response.result === 'success') {\n this.columns = response.data.map((i) => {\n if (i.queryConfig) {\n i.queryConfig = JSON.parse(i.queryConfig)\n }\n return i\n })\n }\n })\n this.requestFn.pageTemplatecs.selectMyTableColumns({ templateKey: this.templateKey }).then((response) => {\n if (response.result === 'success') {\n this.columnsShow = response.data.map((i) => {\n if (i.queryConfig) {\n i.queryConfig = JSON.parse(i.queryConfig)\n }\n return i\n })\n this.$nextTick(() => {\n if (this.isInitQuest) {\n this.getList()\n }\n })\n }\n })\n\n },\n setFormParams(obj, type = 'add') {\n if (type == 'add') {\n this.searchParams = {\n ...this.searchParams,\n ...obj,\n }\n } else {\n for (let key in obj) {\n delete this.searchParams[key]\n }\n }\n\n this.$nextTick(() => {\n this.getList({\n skipCount: 1,\n });\n })\n },\n enter(e) {\n if ((e.key === 'Enter' || e.keyCode === 13)) {\n console.log('enter')\n }\n },\n getList(params, isClearParams = false) {\n let searchParams\n if (isClearParams) {\n searchParams = {\n ...params,\n pageSize: this.searchParams.pageSize,\n skipCount: 1,\n }\n } else {\n searchParams = {\n ...this.searchParams,\n ...params,\n }\n }\n\n\n this.searchParams = searchParams;\n\n\n // 处理数据\n let ops = {};\n for (var key in searchParams) {\n if (searchParams[key] !== '' && searchParams[key] !== null && searchParams[key] !== undefined) {\n ops[key] = searchParams[key]\n }\n }\n // 根据参数画tag\n formToValue(ops, this.columnsShow, this.colChange, this.ruleFn)\n\n\n\n const { pageSize, skipCount } = ops\n\n this.listLoading = true\n this.hooks(ops)\n this.getApi({\n ...ops,\n pageSize: pageSize,\n skipCount: (skipCount - 1) * pageSize,\n reqTypeSign:'config_table'\n }).then(response => {\n if (response.result === 'success') {\n if (this.formatData) {\n this.list = this.formatData(response.data)\n } else {\n this.list = response.data || []\n }\n this.ops = ops\n this.count = response.count\n } else {\n this.$message.error(response.msg)\n }\n this.$emit('update:countNum', this.count)\n this.listLoading = false\n }, err => {\n this.listLoading = false\n })\n },\n handleSelectionChange(val) {\n let formatVal = val\n if (this.selectType === 'single') {\n formatVal = [val.pop()]\n let other = val\n if (other && other.length > 0) {\n other.forEach(row => {\n this.$refs.FormTable.toggleRowSelection(row, false);\n });\n this.$refs.FormTable.toggleRowSelection(formatVal[0], true);\n }\n }\n this.selectcheck(formatVal)\n this.multipleSelection = formatVal;\n this.$emit('selectcheck', formatVal)\n },\n getNewCol(show, all) {\n this.columnsShow = show\n this.columns = all\n this.tableKey = Math.random() // table不刷新 强制key\n\n },\n closeTag(tag) {\n const index = this.tags.findIndex(i => i.name === tag.name)\n const delItem = this.tags.splice(index, 1)[0];\n const { key, type } = delItem\n if (type === 'dateRange' || type === 'inputScope') {\n this.setFormParams({ [key[0]]: '', [key[1]]: '', [key[2]]: '' }, 'remove')\n } else {\n this.setFormParams({ [key]: '' }, 'remove')\n }\n\n },\n handleSelectAll(val) {\n this.$emit('selectAll', Array.from(val))\n },\n handleSelect(selection, row) {\n this.$emit('select', { selection, row })\n },\n closeAllTag() {\n const delKeys = {}\n this.tags.forEach((i) => {\n const { key, type } = i\n if (type === 'dateRange' || type === 'inputScope') {\n delKeys[key[0]] = ''\n delKeys[key[1]] = ''\n } else {\n delKeys[key] = ''\n }\n })\n this.tags = [];\n this.setFormParams({ ...delKeys }, 'remove')\n },\n colChange(objTags) {\n // const selectIndex =this.tags.findIndex(i => i.name === arrow)\n // if(selectIndex >= 0){\n // let select = this.tags[selectIndex]\n // if(data.value.length > 0){\n // select.value = data.value\n // select.str = data.str\n // this.$set(this.tags, selectIndex, select)\n // } else {\n // this.tags.splice(selectIndex,1)\n // }\n\n // } else {\n // this.tags = this.tags.concat([{'name':arrow, value:data.value, str:data.str, key:data.searchKey, type: data.type }])\n // }\n const arr = []\n for (let key in objTags) {\n arr.push(objTags[key])\n }\n\n this.tags = [].concat(arr)\n\n },\n\n actionModal() {\n this.dialogFormVisible = true\n this.columns;\n this.columns = this.columns.map((i) => {\n const isSelect = this.columnsShow.find(j => j.columnPropertyName === i.columnPropertyName)\n i.show = !!isSelect;\n return i\n })\n },\n }\n}\n</script>\n<style>\n.el-table__empty-block {\n background: #fbfbfb;\n}\n</style>\n<style lang=\"less\" scoped>\n.container {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n\n.input-with-select {\n width: 300px;\n}\n\n.optBox {\n margin-bottom: 10px;\n overflow:hidden;\n}\n\n.leftBtn {\n float: left;\n}\n\n.rightBtn {\n float: right;\n .textareaSpec{\n position: absolute;\n right:100px;\n z-index: 1000;\n width:700px;\n height: 400px;\n // transition: all 1s ease-out;\n }\n .border {\n border: 1px solid rgb(220, 223, 230)\n }\n}\n\n.tagBox {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n >.el-tag {\n margin: 4px 10px 0 0;\n }\n}\n\n.clearAll {\n float: right;\n}\n\n.table {\n width: 100%;\n margin-top: 10px;\n float: left;\n // overflow-x: visible;\n // overflow-y: visible;\n // /deep/ .el-table__header-wrapper{\n // position: sticky;\n // top:84px;\n // z-index:5;\n // }\n // /deep/ .el-table__fixed-header-wrapper{\n // z-index:5;\n // }\n}\n\n.pagi {\n float: right;\n}\n\n.pagi.pagination-container {\n padding: 0px;\n padding-top: 20px;\n}\n\n.btmBox {\n width: 100%;\n float: left;\n display: flex;\n justify-content: space-between;\n}\n</style>"]},media:undefined}),inject("data-v-78568fe8_1",{source:".container[data-v-78568fe8] {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n.input-with-select[data-v-78568fe8] {\n width: 300px;\n}\n.optBox[data-v-78568fe8] {\n margin-bottom: 10px;\n overflow: hidden;\n}\n.leftBtn[data-v-78568fe8] {\n float: left;\n}\n.rightBtn[data-v-78568fe8] {\n float: right;\n}\n.rightBtn .textareaSpec[data-v-78568fe8] {\n position: absolute;\n right: 100px;\n z-index: 1000;\n width: 700px;\n height: 400px;\n}\n.rightBtn .border[data-v-78568fe8] {\n border: 1px solid #dcdfe6;\n}\n.tagBox[data-v-78568fe8] {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n}\n.tagBox > .el-tag[data-v-78568fe8] {\n margin: 4px 10px 0 0;\n}\n.clearAll[data-v-78568fe8] {\n float: right;\n}\n.table[data-v-78568fe8] {\n width: 100%;\n margin-top: 10px;\n float: left;\n}\n.pagi[data-v-78568fe8] {\n float: right;\n}\n.pagi.pagination-container[data-v-78568fe8] {\n padding: 0px;\n padding-top: 20px;\n}\n.btmBox[data-v-78568fe8] {\n width: 100%;\n float: left;\n display: flex;\n justify-content: space-between;\n}\n",map:{"version":3,"sources":["index.vue"],"names":[],"mappings":"AAAA;EACE,aAAa;EACb,WAAW;EACX,WAAW;EACX,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,mBAAmB;EACnB,gBAAgB;AAClB;AACA;EACE,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,aAAa;AACf;AACA;EACE,yBAAyB;AAC3B;AACA;EACE,yBAAyB;EACzB,WAAW;EACX,gBAAgB;AAClB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,YAAY;AACd;AACA;EACE,WAAW;EACX,gBAAgB;EAChB,WAAW;AACb;AACA;EACE,YAAY;AACd;AACA;EACE,YAAY;EACZ,iBAAiB;AACnB;AACA;EACE,WAAW;EACX,WAAW;EACX,aAAa;EACb,8BAA8B;AAChC","file":"index.vue","sourcesContent":[".container {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n.input-with-select {\n width: 300px;\n}\n.optBox {\n margin-bottom: 10px;\n overflow: hidden;\n}\n.leftBtn {\n float: left;\n}\n.rightBtn {\n float: right;\n}\n.rightBtn .textareaSpec {\n position: absolute;\n right: 100px;\n z-index: 1000;\n width: 700px;\n height: 400px;\n}\n.rightBtn .border {\n border: 1px solid #dcdfe6;\n}\n.tagBox {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n}\n.tagBox > .el-tag {\n margin: 4px 10px 0 0;\n}\n.clearAll {\n float: right;\n}\n.table {\n width: 100%;\n margin-top: 10px;\n float: left;\n}\n.pagi {\n float: right;\n}\n.pagi.pagination-container {\n padding: 0px;\n padding-top: 20px;\n}\n.btmBox {\n width: 100%;\n float: left;\n display: flex;\n justify-content: space-between;\n}\n"]},media:undefined});};/* scoped */const __vue_scope_id__$1="data-v-78568fe8";/* module identifier */const __vue_module_identifier__$1=undefined;/* functional template */const __vue_is_functional_template__$1=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$1=/*#__PURE__*/normalizeComponent({render:__vue_render__$1,staticRenderFns:__vue_staticRenderFns__$1},__vue_inject_styles__$1,__vue_script__$1,__vue_scope_id__$1,__vue_is_functional_template__$1,__vue_module_identifier__$1,false,createInjector,undefined,undefined);__vue_component__$1.install=function(Vue){Vue.component(__vue_component__$1.name,__vue_component__$1);};/*!
2223
2225
  * html2canvas 1.4.1 <https://html2canvas.hertzen.com>
2224
2226
  * Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
2225
2227
  * Released under MIT License
@@ -2564,4 +2566,4 @@ var myUrl=URL.createObjectURL(myBlob);// 创建a标签,下载图片
2564
2566
  this.downImg(myUrl);},//base64 转 blob
2565
2567
  dataURLtoBlob(dataurl){var arr=dataurl.split(',');var mime=arr[0].match(/:(.*?);/)[1];var bstr=atob(arr[1]),n=bstr.length,u8arr=new Uint8Array(n);while(n--){u8arr[n]=bstr.charCodeAt(n);}return new Blob([u8arr],{type:mime});},//下载图片 filename是图片名称
2566
2568
  downImg(url){// 创建a标签 并设置其相关属性,最后触发其点击事件
2567
- let a=document.createElement("a");let clickEvent=document.createEvent("MouseEvents");a.setAttribute("href",url);a.setAttribute("download",this.fileName);a.setAttribute("target",'_blank');clickEvent.initEvent('click',true,true);a.dispatchEvent(clickEvent);}}};/* script */const __vue_script__=script;/* template */var __vue_render__=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"HtmlToImg"},[_c("div",{staticStyle:{position:"absolute",top:"-3000px"}},[_vm._t("default")],2)]);};var __vue_staticRenderFns__=[];__vue_render__._withStripped=true;/* style */const __vue_inject_styles__=undefined;/* scoped */const __vue_scope_id__=undefined;/* module identifier */const __vue_module_identifier__=undefined;/* functional template */const __vue_is_functional_template__=false;/* style inject */ /* style inject SSR */ /* style inject shadow dom */const __vue_component__=/*#__PURE__*/normalizeComponent({render:__vue_render__,staticRenderFns:__vue_staticRenderFns__},__vue_inject_styles__,__vue_script__,__vue_scope_id__,__vue_is_functional_template__,__vue_module_identifier__,false,undefined,undefined,undefined);__vue_component__.install=function(Vue){Vue.component(__vue_component__.name,__vue_component__);};var version="3.1.1";const components=[__vue_component__$g,__vue_component__$f,__vue_component__$e,__vue_component__$d,__vue_component__$1,__vue_component__];const install=function(Vue){components.forEach(component=>{Vue.component(component.name,component);});};if(typeof window!=="undefined"&&window.Vue){install(window.Vue);}var index={version,install};export{__vue_component__$1 as FormTableScheme,__vue_component__$f as HelloVue,__vue_component__ as HtmlToImg,__vue_component__$g as MyButton,__vue_component__$d as ShowFile,__vue_component__$e as UploadFile,index as default,install};
2569
+ let a=document.createElement("a");let clickEvent=document.createEvent("MouseEvents");a.setAttribute("href",url);a.setAttribute("download",this.fileName);a.setAttribute("target",'_blank');clickEvent.initEvent('click',true,true);a.dispatchEvent(clickEvent);}}};/* script */const __vue_script__=script;/* template */var __vue_render__=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"HtmlToImg"},[_c("div",{staticStyle:{position:"absolute",top:"-3000px"}},[_vm._t("default")],2)]);};var __vue_staticRenderFns__=[];__vue_render__._withStripped=true;/* style */const __vue_inject_styles__=undefined;/* scoped */const __vue_scope_id__=undefined;/* module identifier */const __vue_module_identifier__=undefined;/* functional template */const __vue_is_functional_template__=false;/* style inject */ /* style inject SSR */ /* style inject shadow dom */const __vue_component__=/*#__PURE__*/normalizeComponent({render:__vue_render__,staticRenderFns:__vue_staticRenderFns__},__vue_inject_styles__,__vue_script__,__vue_scope_id__,__vue_is_functional_template__,__vue_module_identifier__,false,undefined,undefined,undefined);__vue_component__.install=function(Vue){Vue.component(__vue_component__.name,__vue_component__);};var version="3.1.4";const components=[__vue_component__$g,__vue_component__$f,__vue_component__$e,__vue_component__$d,__vue_component__$1,__vue_component__];const install=function(Vue){components.forEach(component=>{Vue.component(component.name,component);});};if(typeof window!=="undefined"&&window.Vue){install(window.Vue);}var index={version,install};export{__vue_component__$1 as FormTableScheme,__vue_component__$f as HelloVue,__vue_component__ as HtmlToImg,__vue_component__$g as MyButton,__vue_component__$d as ShowFile,__vue_component__$e as UploadFile,index as default,install};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huilian/components-tms",
3
- "version": "3.1.1",
3
+ "version": "3.1.4",
4
4
  "scripts": {
5
5
  "dev": "npx rollup -wc rollup.config.dev.js",
6
6
  "build": "npx rollup -c rollup.config.js && npm run build:types",