@huilian/components-tms 3.7.1 → 3.7.3
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.
- package/lib/bundle.esm.js +554 -37
- package/package.json +2 -1
package/lib/bundle.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{mapGetters}from'vuex';import
|
|
1
|
+
import{mapGetters}from'vuex';import require$$1 from'http';import require$$2 from'https';import require$$0$1 from'url';import require$$3 from'stream';import require$$4 from'assert';import require$$8 from'zlib';import moment from'moment';import Pagination from'@/components/Pagination';//
|
|
2
2
|
//
|
|
3
3
|
//
|
|
4
4
|
//
|
|
@@ -54,12 +54,12 @@ const existing=options.beforeCreate;options.beforeCreate=existing?[].concat(exis
|
|
|
54
54
|
var script$i={name:'HelloVue',props:{msg:String}};const isOldIE=typeof navigator!=='undefined'&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function createInjector(context){return(id,style)=>addStyle(id,style);}let HEAD;const styles={};function addStyle(id,css){const group=isOldIE?css.media||'default':id;const style=styles[group]||(styles[group]={ids:new Set(),styles:[]});if(!style.ids.has(id)){style.ids.add(id);let code=css.source;if(css.map){// https://developer.chrome.com/devtools/docs/javascript-debugging
|
|
55
55
|
// this makes source maps inside style tags work properly in Chrome
|
|
56
56
|
code+='\n/*# sourceURL='+css.map.sources[0]+' */';// http://stackoverflow.com/a/26603875
|
|
57
|
-
code+='\n/*# sourceMappingURL=data:application/json;base64,'+btoa(unescape(encodeURIComponent(JSON.stringify(css.map))))+' */';}if(!style.element){style.element=document.createElement('style');style.element.type='text/css';if(css.media)style.element.setAttribute('media',css.media);if(HEAD===undefined){HEAD=document.head||document.getElementsByTagName('head')[0];}HEAD.appendChild(style.element);}if('styleSheet'in style.element){style.styles.push(code);style.element.styleSheet.cssText=style.styles.filter(Boolean).join('\n');}else{const index=style.ids.size-1;const textNode=document.createTextNode(code);const nodes=style.element.childNodes;if(nodes[index])style.element.removeChild(nodes[index]);if(nodes.length)style.element.insertBefore(textNode,nodes[index]);else style.element.appendChild(textNode);}}}/* script */const __vue_script__$i=script$i;/* template */var __vue_render__$i=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"hello"},[_c("h1",[_vm._v(_vm._s(_vm.msg))]),_vm._v(" "),_vm._m(0),_vm._v(" "),_c("h3",[_vm._v("Installed CLI Plugins")]),_vm._v(" "),_vm._m(1),_vm._v(" "),_c("h3",[_vm._v("Essential Links")]),_vm._v(" "),_vm._m(2),_vm._v(" "),_c("h3",[_vm._v("Ecosystem")]),_vm._v(" "),_vm._m(3)]);};var __vue_staticRenderFns__$i=[function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("p",[_vm._v("\n For a guide and recipes on how to configure / customize this project,"),_c("br"),_vm._v("\n check out the\n "),_c("a",{attrs:{href:"https://cli.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vue-cli documentation")]),_vm._v(".\n ")]);},function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("ul",[_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel",target:"_blank",rel:"noopener"}},[_vm._v("babel")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript",target:"_blank",rel:"noopener"}},[_vm._v("typescript")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint",target:"_blank",rel:"noopener"}},[_vm._v("eslint")])])]);},function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("ul",[_c("li",[_c("a",{attrs:{href:"https://vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("Core Docs")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("Forum")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://chat.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("Community Chat")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank",rel:"noopener"}},[_vm._v("Twitter")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://news.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("News")])])]);},function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("ul",[_c("li",[_c("a",{attrs:{href:"https://router.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vue-router")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://vuex.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vuex")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-devtools#vue-devtools",target:"_blank",rel:"noopener"}},[_vm._v("vue-devtools")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://vue-loader.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vue-loader")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank",rel:"noopener"}},[_vm._v("awesome-vue")])])]);}];__vue_render__$i._withStripped=true;/* style */const __vue_inject_styles__$i=function(inject){if(!inject)return;inject("data-v-
|
|
57
|
+
code+='\n/*# sourceMappingURL=data:application/json;base64,'+btoa(unescape(encodeURIComponent(JSON.stringify(css.map))))+' */';}if(!style.element){style.element=document.createElement('style');style.element.type='text/css';if(css.media)style.element.setAttribute('media',css.media);if(HEAD===undefined){HEAD=document.head||document.getElementsByTagName('head')[0];}HEAD.appendChild(style.element);}if('styleSheet'in style.element){style.styles.push(code);style.element.styleSheet.cssText=style.styles.filter(Boolean).join('\n');}else{const index=style.ids.size-1;const textNode=document.createTextNode(code);const nodes=style.element.childNodes;if(nodes[index])style.element.removeChild(nodes[index]);if(nodes.length)style.element.insertBefore(textNode,nodes[index]);else style.element.appendChild(textNode);}}}/* script */const __vue_script__$i=script$i;/* template */var __vue_render__$i=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"hello"},[_c("h1",[_vm._v(_vm._s(_vm.msg))]),_vm._v(" "),_vm._m(0),_vm._v(" "),_c("h3",[_vm._v("Installed CLI Plugins")]),_vm._v(" "),_vm._m(1),_vm._v(" "),_c("h3",[_vm._v("Essential Links")]),_vm._v(" "),_vm._m(2),_vm._v(" "),_c("h3",[_vm._v("Ecosystem")]),_vm._v(" "),_vm._m(3)]);};var __vue_staticRenderFns__$i=[function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("p",[_vm._v("\n For a guide and recipes on how to configure / customize this project,"),_c("br"),_vm._v("\n check out the\n "),_c("a",{attrs:{href:"https://cli.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vue-cli documentation")]),_vm._v(".\n ")]);},function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("ul",[_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel",target:"_blank",rel:"noopener"}},[_vm._v("babel")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript",target:"_blank",rel:"noopener"}},[_vm._v("typescript")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint",target:"_blank",rel:"noopener"}},[_vm._v("eslint")])])]);},function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("ul",[_c("li",[_c("a",{attrs:{href:"https://vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("Core Docs")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("Forum")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://chat.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("Community Chat")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank",rel:"noopener"}},[_vm._v("Twitter")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://news.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("News")])])]);},function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("ul",[_c("li",[_c("a",{attrs:{href:"https://router.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vue-router")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://vuex.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vuex")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/vue-devtools#vue-devtools",target:"_blank",rel:"noopener"}},[_vm._v("vue-devtools")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://vue-loader.vuejs.org",target:"_blank",rel:"noopener"}},[_vm._v("vue-loader")])]),_vm._v(" "),_c("li",[_c("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank",rel:"noopener"}},[_vm._v("awesome-vue")])])]);}];__vue_render__$i._withStripped=true;/* style */const __vue_inject_styles__$i=function(inject){if(!inject)return;inject("data-v-ba1f89fa_0",{source:"\nh3[data-v-ba1f89fa] {\n margin: 40px 0 0;\n}\nul[data-v-ba1f89fa] {\n list-style-type: none;\n padding: 0;\n}\nli[data-v-ba1f89fa] {\n display: inline-block;\n margin: 0 10px;\n}\na[data-v-ba1f89fa] {\n color: #42b983;\n}\n",map:{"version":3,"sources":["/Users/wenquan/Desktop/hl/npm/components/hellovue/index.vue"],"names":[],"mappings":";AA4CA;EACA,gBAAA;AACA;AACA;EACA,qBAAA;EACA,UAAA;AACA;AACA;EACA,qBAAA;EACA,cAAA;AACA;AACA;EACA,cAAA;AACA","file":"index.vue","sourcesContent":["<template>\n <div class=\"hello\">\n <h1>{{ msg }}</h1>\n <p>\n For a guide and recipes on how to configure / customize this project,<br>\n check out the\n <a href=\"https://cli.vuejs.org\" target=\"_blank\" rel=\"noopener\">vue-cli documentation</a>.\n </p>\n <h3>Installed CLI Plugins</h3>\n <ul>\n <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel\" target=\"_blank\" rel=\"noopener\">babel</a></li>\n <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-typescript\" target=\"_blank\" rel=\"noopener\">typescript</a></li>\n <li><a href=\"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint\" target=\"_blank\" rel=\"noopener\">eslint</a></li>\n </ul>\n <h3>Essential Links</h3>\n <ul>\n <li><a href=\"https://vuejs.org\" target=\"_blank\" rel=\"noopener\">Core Docs</a></li>\n <li><a href=\"https://forum.vuejs.org\" target=\"_blank\" rel=\"noopener\">Forum</a></li>\n <li><a href=\"https://chat.vuejs.org\" target=\"_blank\" rel=\"noopener\">Community Chat</a></li>\n <li><a href=\"https://twitter.com/vuejs\" target=\"_blank\" rel=\"noopener\">Twitter</a></li>\n <li><a href=\"https://news.vuejs.org\" target=\"_blank\" rel=\"noopener\">News</a></li>\n </ul>\n <h3>Ecosystem</h3>\n <ul>\n <li><a href=\"https://router.vuejs.org\" target=\"_blank\" rel=\"noopener\">vue-router</a></li>\n <li><a href=\"https://vuex.vuejs.org\" target=\"_blank\" rel=\"noopener\">vuex</a></li>\n <li><a href=\"https://github.com/vuejs/vue-devtools#vue-devtools\" target=\"_blank\" rel=\"noopener\">vue-devtools</a></li>\n <li><a href=\"https://vue-loader.vuejs.org\" target=\"_blank\" rel=\"noopener\">vue-loader</a></li>\n <li><a href=\"https://github.com/vuejs/awesome-vue\" target=\"_blank\" rel=\"noopener\">awesome-vue</a></li>\n </ul>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'HelloVue',\n props: {\n msg: String,\n },\n};\n</script>\n\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\n<style scoped>\nh3 {\n margin: 40px 0 0;\n}\nul {\n list-style-type: none;\n padding: 0;\n}\nli {\n display: inline-block;\n margin: 0 10px;\n}\na {\n color: #42b983;\n}\n</style>"]},media:undefined});};/* scoped */const __vue_scope_id__$i="data-v-ba1f89fa";/* module identifier */const __vue_module_identifier__$i=undefined;/* functional template */const __vue_is_functional_template__$i=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$i=/*#__PURE__*/normalizeComponent({render:__vue_render__$i,staticRenderFns:__vue_staticRenderFns__$i},__vue_inject_styles__$i,__vue_script__$i,__vue_scope_id__$i,__vue_is_functional_template__$i,__vue_module_identifier__$i,false,createInjector,undefined,undefined);__vue_component__$i.install=function(Vue){Vue.component(__vue_component__$i.name,__vue_component__$i);};var commonjsGlobal=typeof globalThis!=='undefined'?globalThis:typeof window!=='undefined'?window:typeof global!=='undefined'?global:typeof self!=='undefined'?self:{};function getDefaultExportFromCjs(x){return x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,'default')?x['default']:x;}function getAugmentedNamespace(n){if(n.__esModule)return n;var a=Object.defineProperty({},'__esModule',{value:true});Object.keys(n).forEach(function(k){var d=Object.getOwnPropertyDescriptor(n,k);Object.defineProperty(a,k,d.get?d:{enumerable:true,get:function(){return n[k];}});});return a;}var vuedraggable_umd={exports:{}};/**!
|
|
58
58
|
* Sortable 1.10.2
|
|
59
59
|
* @author RubaXa <trash@rubaxa.org>
|
|
60
60
|
* @author owenm <owen23355@gmail.com>
|
|
61
61
|
* @license MIT
|
|
62
|
-
*/function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function(obj){return typeof obj;};}else{_typeof=function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==='function'){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable;}));}ownKeys.forEach(function(key){_defineProperty(target,key,source[key]);});}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_nonIterableSpread();}function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2;}}function _iterableToArray(iter){if(Symbol.iterator in Object(iter)||Object.prototype.toString.call(iter)==="[object Arguments]")return Array.from(iter);}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance");}var version$
|
|
62
|
+
*/function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function(obj){return typeof obj;};}else{_typeof=function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==='function'){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable;}));}ownKeys.forEach(function(key){_defineProperty(target,key,source[key]);});}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_nonIterableSpread();}function _arrayWithoutHoles(arr){if(Array.isArray(arr)){for(var i=0,arr2=new Array(arr.length);i<arr.length;i++)arr2[i]=arr[i];return arr2;}}function _iterableToArray(iter){if(Symbol.iterator in Object(iter)||Object.prototype.toString.call(iter)==="[object Arguments]")return Array.from(iter);}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance");}var version$2="1.10.2";function userAgent(pattern){if(typeof window!=='undefined'&&window.navigator){return!!/*@__PURE__*/navigator.userAgent.match(pattern);}}var IE11OrLess=userAgent(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i);var Edge=userAgent(/Edge/i);var FireFox=userAgent(/firefox/i);var Safari=userAgent(/safari/i)&&!userAgent(/chrome/i)&&!userAgent(/android/i);var IOS=userAgent(/iP(ad|od|hone)/i);var ChromeForAndroid=userAgent(/chrome/i)&&userAgent(/android/i);var captureMode={capture:false,passive:false};function on(el,event,fn){el.addEventListener(event,fn,!IE11OrLess&&captureMode);}function off(el,event,fn){el.removeEventListener(event,fn,!IE11OrLess&&captureMode);}function matches(/**HTMLElement*/el,/**String*/selector){if(!selector)return;selector[0]==='>'&&(selector=selector.substring(1));if(el){try{if(el.matches){return el.matches(selector);}else if(el.msMatchesSelector){return el.msMatchesSelector(selector);}else if(el.webkitMatchesSelector){return el.webkitMatchesSelector(selector);}}catch(_){return false;}}return false;}function getParentOrHost(el){return el.host&&el!==document&&el.host.nodeType?el.host:el.parentNode;}function closest(/**HTMLElement*/el,/**String*/selector,/**HTMLElement*/ctx,includeCTX){if(el){ctx=ctx||document;do{if(selector!=null&&(selector[0]==='>'?el.parentNode===ctx&&matches(el,selector):matches(el,selector))||includeCTX&&el===ctx){return el;}if(el===ctx)break;/* jshint boss:true */}while(el=getParentOrHost(el));}return null;}var R_SPACE=/\s+/g;function toggleClass(el,name,state){if(el&&name){if(el.classList){el.classList[state?'add':'remove'](name);}else{var className=(' '+el.className+' ').replace(R_SPACE,' ').replace(' '+name+' ',' ');el.className=(className+(state?' '+name:'')).replace(R_SPACE,' ');}}}function css(el,prop,val){var style=el&&el.style;if(style){if(val===void 0){if(document.defaultView&&document.defaultView.getComputedStyle){val=document.defaultView.getComputedStyle(el,'');}else if(el.currentStyle){val=el.currentStyle;}return prop===void 0?val:val[prop];}else{if(!(prop in style)&&prop.indexOf('webkit')===-1){prop='-webkit-'+prop;}style[prop]=val+(typeof val==='string'?'':'px');}}}function matrix$1(el,selfOnly){var appliedTransforms='';if(typeof el==='string'){appliedTransforms=el;}else{do{var transform=css(el,'transform');if(transform&&transform!=='none'){appliedTransforms=transform+' '+appliedTransforms;}/* jshint boss:true */}while(!selfOnly&&(el=el.parentNode));}var matrixFn=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;/*jshint -W056 */return matrixFn&&new matrixFn(appliedTransforms);}function find(ctx,tagName,iterator){if(ctx){var list=ctx.getElementsByTagName(tagName),i=0,n=list.length;if(iterator){for(;i<n;i++){iterator(list[i],i);}}return list;}return[];}function getWindowScrollingElement(){var scrollingElement=document.scrollingElement;if(scrollingElement){return scrollingElement;}else{return document.documentElement;}}/**
|
|
63
63
|
* Returns the "bounding client rect" of given element
|
|
64
64
|
* @param {HTMLElement} el The element whose boundingClientRect is wanted
|
|
65
65
|
* @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container
|
|
@@ -108,15 +108,15 @@ var elMatrix=matrix$1(container||el),scaleX=elMatrix&&elMatrix.a,scaleY=elMatrix
|
|
|
108
108
|
* @return {Number} The index of the object in the array, or -1
|
|
109
109
|
*/function indexOfObject(arr,obj){for(var i in arr){if(!arr.hasOwnProperty(i))continue;for(var key in obj){if(obj.hasOwnProperty(key)&&obj[key]===arr[i][key])return Number(i);}}return-1;}function getParentAutoScrollElement(el,includeSelf){// skip to window
|
|
110
110
|
if(!el||!el.getBoundingClientRect)return getWindowScrollingElement();var elem=el;var gotSelf=false;do{// we don't need to get elem css if it isn't even overflowing in the first place (performance)
|
|
111
|
-
if(elem.clientWidth<elem.scrollWidth||elem.clientHeight<elem.scrollHeight){var elemCSS=css(elem);if(elem.clientWidth<elem.scrollWidth&&(elemCSS.overflowX=='auto'||elemCSS.overflowX=='scroll')||elem.clientHeight<elem.scrollHeight&&(elemCSS.overflowY=='auto'||elemCSS.overflowY=='scroll')){if(!elem.getBoundingClientRect||elem===document.body)return getWindowScrollingElement();if(gotSelf||includeSelf)return elem;gotSelf=true;}}/* jshint boss:true */}while(elem=elem.parentNode);return getWindowScrollingElement();}function extend(dst,src){if(dst&&src){for(var key in src){if(src.hasOwnProperty(key)){dst[key]=src[key];}}}return dst;}function isRectEqual(rect1,rect2){return Math.round(rect1.top)===Math.round(rect2.top)&&Math.round(rect1.left)===Math.round(rect2.left)&&Math.round(rect1.height)===Math.round(rect2.height)&&Math.round(rect1.width)===Math.round(rect2.width);}var _throttleTimeout;function throttle(callback,ms){return function(){if(!_throttleTimeout){var args=arguments,_this=this;if(args.length===1){callback.call(_this,args[0]);}else{callback.apply(_this,args);}_throttleTimeout=setTimeout(function(){_throttleTimeout=void 0;},ms);}};}function cancelThrottle(){clearTimeout(_throttleTimeout);_throttleTimeout=void 0;}function scrollBy(el,x,y){el.scrollLeft+=x;el.scrollTop+=y;}function clone(el){var Polymer=window.Polymer;var $=window.jQuery||window.Zepto;if(Polymer&&Polymer.dom){return Polymer.dom(el).cloneNode(true);}else if($){return $(el).clone(true)[0];}else{return el.cloneNode(true);}}function setRect(el,rect){css(el,'position','absolute');css(el,'top',rect.top);css(el,'left',rect.left);css(el,'width',rect.width);css(el,'height',rect.height);}function unsetRect(el){css(el,'position','');css(el,'top','');css(el,'left','');css(el,'width','');css(el,'height','');}var expando='Sortable'+new Date().getTime();function AnimationStateManager(){var animationStates=[],animationCallbackId;return{captureAnimationState:function captureAnimationState(){animationStates=[];if(!this.options.animation)return;var children=[].slice.call(this.el.children);children.forEach(function(child){if(css(child,'display')==='none'||child===Sortable.ghost)return;animationStates.push({target:child,rect:getRect(child)});var fromRect=_objectSpread({},animationStates[animationStates.length-1].rect);// If animating: compensate for current animation
|
|
111
|
+
if(elem.clientWidth<elem.scrollWidth||elem.clientHeight<elem.scrollHeight){var elemCSS=css(elem);if(elem.clientWidth<elem.scrollWidth&&(elemCSS.overflowX=='auto'||elemCSS.overflowX=='scroll')||elem.clientHeight<elem.scrollHeight&&(elemCSS.overflowY=='auto'||elemCSS.overflowY=='scroll')){if(!elem.getBoundingClientRect||elem===document.body)return getWindowScrollingElement();if(gotSelf||includeSelf)return elem;gotSelf=true;}}/* jshint boss:true */}while(elem=elem.parentNode);return getWindowScrollingElement();}function extend$1(dst,src){if(dst&&src){for(var key in src){if(src.hasOwnProperty(key)){dst[key]=src[key];}}}return dst;}function isRectEqual(rect1,rect2){return Math.round(rect1.top)===Math.round(rect2.top)&&Math.round(rect1.left)===Math.round(rect2.left)&&Math.round(rect1.height)===Math.round(rect2.height)&&Math.round(rect1.width)===Math.round(rect2.width);}var _throttleTimeout;function throttle(callback,ms){return function(){if(!_throttleTimeout){var args=arguments,_this=this;if(args.length===1){callback.call(_this,args[0]);}else{callback.apply(_this,args);}_throttleTimeout=setTimeout(function(){_throttleTimeout=void 0;},ms);}};}function cancelThrottle(){clearTimeout(_throttleTimeout);_throttleTimeout=void 0;}function scrollBy(el,x,y){el.scrollLeft+=x;el.scrollTop+=y;}function clone(el){var Polymer=window.Polymer;var $=window.jQuery||window.Zepto;if(Polymer&&Polymer.dom){return Polymer.dom(el).cloneNode(true);}else if($){return $(el).clone(true)[0];}else{return el.cloneNode(true);}}function setRect(el,rect){css(el,'position','absolute');css(el,'top',rect.top);css(el,'left',rect.left);css(el,'width',rect.width);css(el,'height',rect.height);}function unsetRect(el){css(el,'position','');css(el,'top','');css(el,'left','');css(el,'width','');css(el,'height','');}var expando='Sortable'+new Date().getTime();function AnimationStateManager(){var animationStates=[],animationCallbackId;return{captureAnimationState:function captureAnimationState(){animationStates=[];if(!this.options.animation)return;var children=[].slice.call(this.el.children);children.forEach(function(child){if(css(child,'display')==='none'||child===Sortable.ghost)return;animationStates.push({target:child,rect:getRect(child)});var fromRect=_objectSpread({},animationStates[animationStates.length-1].rect);// If animating: compensate for current animation
|
|
112
112
|
if(child.thisAnimationDuration){var childMatrix=matrix$1(child,true);if(childMatrix){fromRect.top-=childMatrix.f;fromRect.left-=childMatrix.e;}}child.fromRect=fromRect;});},addAnimationState:function addAnimationState(state){animationStates.push(state);},removeAnimationState:function removeAnimationState(target){animationStates.splice(indexOfObject(animationStates,{target:target}),1);},animateAll:function animateAll(callback){var _this=this;if(!this.options.animation){clearTimeout(animationCallbackId);if(typeof callback==='function')callback();return;}var animating=false,animationTime=0;animationStates.forEach(function(state){var time=0,target=state.target,fromRect=target.fromRect,toRect=getRect(target),prevFromRect=target.prevFromRect,prevToRect=target.prevToRect,animatingRect=state.rect,targetMatrix=matrix$1(target,true);if(targetMatrix){// Compensate for current animation
|
|
113
113
|
toRect.top-=targetMatrix.f;toRect.left-=targetMatrix.e;}target.toRect=toRect;if(target.thisAnimationDuration){// Could also check if animatingRect is between fromRect and toRect
|
|
114
114
|
if(isRectEqual(prevFromRect,toRect)&&!isRectEqual(fromRect,toRect)&&// Make sure animatingRect is on line between toRect & fromRect
|
|
115
115
|
(animatingRect.top-toRect.top)/(animatingRect.left-toRect.left)===(fromRect.top-toRect.top)/(fromRect.left-toRect.left)){// If returning to same place as started from animation and on same axis
|
|
116
116
|
time=calculateRealTime(animatingRect,prevFromRect,prevToRect,_this.options);}}// if fromRect != toRect: animate
|
|
117
117
|
if(!isRectEqual(toRect,fromRect)){target.prevFromRect=fromRect;target.prevToRect=toRect;if(!time){time=_this.options.animation;}_this.animate(target,animatingRect,toRect,time);}if(time){animating=true;animationTime=Math.max(animationTime,time);clearTimeout(target.animationResetTimer);target.animationResetTimer=setTimeout(function(){target.animationTime=0;target.prevFromRect=null;target.fromRect=null;target.prevToRect=null;target.thisAnimationDuration=null;},time);target.thisAnimationDuration=time;}});clearTimeout(animationCallbackId);if(!animating){if(typeof callback==='function')callback();}else{animationCallbackId=setTimeout(function(){if(typeof callback==='function')callback();},animationTime);}animationStates=[];},animate:function animate(target,currentRect,toRect,duration){if(duration){css(target,'transition','');css(target,'transform','');var elMatrix=matrix$1(this.el),scaleX=elMatrix&&elMatrix.a,scaleY=elMatrix&&elMatrix.d,translateX=(currentRect.left-toRect.left)/(scaleX||1),translateY=(currentRect.top-toRect.top)/(scaleY||1);target.animatingX=!!translateX;target.animatingY=!!translateY;css(target,'transform','translate3d('+translateX+'px,'+translateY+'px,0)');repaint(target);// repaint
|
|
118
|
-
css(target,'transition','transform '+duration+'ms'+(this.options.easing?' '+this.options.easing:''));css(target,'transform','translate3d(0,0,0)');typeof target.animated==='number'&&clearTimeout(target.animated);target.animated=setTimeout(function(){css(target,'transition','');css(target,'transform','');target.animated=false;target.animatingX=false;target.animatingY=false;},duration);}}};}function repaint(target){return target.offsetWidth;}function calculateRealTime(animatingRect,fromRect,toRect,options){return Math.sqrt(Math.pow(fromRect.top-animatingRect.top,2)+Math.pow(fromRect.left-animatingRect.left,2))/Math.sqrt(Math.pow(fromRect.top-toRect.top,2)+Math.pow(fromRect.left-toRect.left,2))*options.animation;}var plugins=[];var defaults$
|
|
119
|
-
for(var option in defaults$
|
|
118
|
+
css(target,'transition','transform '+duration+'ms'+(this.options.easing?' '+this.options.easing:''));css(target,'transform','translate3d(0,0,0)');typeof target.animated==='number'&&clearTimeout(target.animated);target.animated=setTimeout(function(){css(target,'transition','');css(target,'transform','');target.animated=false;target.animatingX=false;target.animatingY=false;},duration);}}};}function repaint(target){return target.offsetWidth;}function calculateRealTime(animatingRect,fromRect,toRect,options){return Math.sqrt(Math.pow(fromRect.top-animatingRect.top,2)+Math.pow(fromRect.left-animatingRect.left,2))/Math.sqrt(Math.pow(fromRect.top-toRect.top,2)+Math.pow(fromRect.left-toRect.left,2))*options.animation;}var plugins=[];var defaults$5={initializeByDefault:true};var PluginManager={mount:function mount(plugin){// Set default static properties
|
|
119
|
+
for(var option in defaults$5){if(defaults$5.hasOwnProperty(option)&&!(option in plugin)){plugin[option]=defaults$5[option];}}plugins.push(plugin);},pluginEvent:function pluginEvent(eventName,sortable,evt){var _this=this;this.eventCanceled=false;evt.cancel=function(){_this.eventCanceled=true;};var eventNameGlobal=eventName+'Global';plugins.forEach(function(plugin){if(!sortable[plugin.pluginName])return;// Fire global events if it exists in this sortable
|
|
120
120
|
if(sortable[plugin.pluginName][eventNameGlobal]){sortable[plugin.pluginName][eventNameGlobal](_objectSpread({sortable:sortable},evt));}// Only fire plugin event if plugin is enabled in this sortable,
|
|
121
121
|
// and plugin has event defined
|
|
122
122
|
if(sortable.options[plugin.pluginName]&&sortable[plugin.pluginName][eventName]){sortable[plugin.pluginName][eventName](_objectSpread({sortable:sortable},evt));}});},initializePlugins:function initializePlugins(sortable,el,defaults,options){plugins.forEach(function(plugin){var pluginName=plugin.pluginName;if(!sortable.options[pluginName]&&!plugin.initializeByDefault)return;var initialized=new plugin(sortable,el,sortable.options);initialized.sortable=sortable;initialized.options=sortable.options;sortable[pluginName]=initialized;// Add default options from plugin
|
|
@@ -261,7 +261,7 @@ if(mouseOnAxis<targetS1+targetLength*invertedSwapThreshold/2||mouseOnAxis>target
|
|
|
261
261
|
* @private
|
|
262
262
|
*/function _generateId(el){var str=el.tagName+el.className+el.src+el.href+el.textContent,i=str.length,sum=0;while(i--){sum+=str.charCodeAt(i);}return sum.toString(36);}function _saveInputCheckedState(root){savedInputChecked.length=0;var inputs=root.getElementsByTagName('input');var idx=inputs.length;while(idx--){var el=inputs[idx];el.checked&&savedInputChecked.push(el);}}function _nextTick(fn){return setTimeout(fn,0);}function _cancelNextTick(id){return clearTimeout(id);}// Fixed #973:
|
|
263
263
|
if(documentExists){on(document,'touchmove',function(evt){if((Sortable.active||awaitingDragStarted)&&evt.cancelable){evt.preventDefault();}});}// Export utils
|
|
264
|
-
Sortable.utils={on:on,off:off,css:css,find:find,is:function is(el,selector){return!!closest(el,selector,el,false);},extend:extend,throttle:throttle,closest:closest,toggleClass:toggleClass,clone:clone,index:index$1,nextTick:_nextTick,cancelNextTick:_cancelNextTick,detectDirection:_detectDirection,getChild:getChild};/**
|
|
264
|
+
Sortable.utils={on:on,off:off,css:css,find:find,is:function is(el,selector){return!!closest(el,selector,el,false);},extend:extend$1,throttle:throttle,closest:closest,toggleClass:toggleClass,clone:clone,index:index$1,nextTick:_nextTick,cancelNextTick:_cancelNextTick,detectDirection:_detectDirection,getChild:getChild};/**
|
|
265
265
|
* Get the Sortable instance of an element
|
|
266
266
|
* @param {HTMLElement} element The element
|
|
267
267
|
* @return {Sortable|undefined} The instance of Sortable
|
|
@@ -273,7 +273,7 @@ Sortable.utils={on:on,off:off,css:css,find:find,is:function is(el,selector){retu
|
|
|
273
273
|
* @param {HTMLElement} el
|
|
274
274
|
* @param {Object} [options]
|
|
275
275
|
*/Sortable.create=function(el,options){return new Sortable(el,options);};// Export
|
|
276
|
-
Sortable.version=version$
|
|
276
|
+
Sortable.version=version$2;var autoScrolls=[],scrollEl,scrollRootEl,scrolling=false,lastAutoScrollX,lastAutoScrollY,touchEvt$1,pointerElemChangedInterval;function AutoScrollPlugin(){function AutoScroll(){this.defaults={scroll:true,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:true};// Bind all private methods
|
|
277
277
|
for(var fn in this){if(fn.charAt(0)==='_'&&typeof this[fn]==='function'){this[fn]=this[fn].bind(this);}}}AutoScroll.prototype={dragStarted:function dragStarted(_ref){var originalEvent=_ref.originalEvent;if(this.sortable.nativeDraggable){on(document,'dragover',this._handleAutoScroll);}else{if(this.options.supportPointer){on(document,'pointermove',this._handleFallbackAutoScroll);}else if(originalEvent.touches){on(document,'touchmove',this._handleFallbackAutoScroll);}else{on(document,'mousemove',this._handleFallbackAutoScroll);}}},dragOverCompleted:function dragOverCompleted(_ref2){var originalEvent=_ref2.originalEvent;// For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)
|
|
278
278
|
if(!this.options.dragOverBubble&&!originalEvent.rootEl){this._handleAutoScroll(originalEvent);}},drop:function drop(){if(this.sortable.nativeDraggable){off(document,'dragover',this._handleAutoScroll);}else{off(document,'pointermove',this._handleFallbackAutoScroll);off(document,'touchmove',this._handleFallbackAutoScroll);off(document,'mousemove',this._handleFallbackAutoScroll);}clearPointerElemChangedInterval();clearAutoScrolls();cancelThrottle();},nulling:function nulling(){touchEvt$1=scrollRootEl=scrollEl=scrolling=pointerElemChangedInterval=lastAutoScrollX=lastAutoScrollY=null;autoScrolls.length=0;},_handleFallbackAutoScroll:function _handleFallbackAutoScroll(evt){this._handleAutoScroll(evt,true);},_handleAutoScroll:function _handleAutoScroll(evt,fallback){var _this=this;var x=(evt.touches?evt.touches[0]:evt).clientX,y=(evt.touches?evt.touches[0]:evt).clientY,elem=document.elementFromPoint(x,y);touchEvt$1=evt;// IE does not seem to have native autoscroll,
|
|
279
279
|
// Edge's autoscroll seems too conditional,
|
|
@@ -531,7 +531,498 @@ var helper=__webpack_require__("c649");// CONCATENATED MODULE: ./src/vuedraggabl
|
|
|
531
531
|
function buildAttribute(object,propName,value){if(value===undefined){return object;}object=object||{};object[propName]=value;return object;}function computeVmIndex(vnodes,element){return vnodes.map(function(elt){return elt.elm;}).indexOf(element);}function _computeIndexes(slots,children,isTransition,footerOffset){if(!slots){return[];}var elmFromNodes=slots.map(function(elt){return elt.elm;});var footerIndex=children.length-footerOffset;var rawIndexes=_toConsumableArray(children).map(function(elt,idx){return idx>=footerIndex?elmFromNodes.length:elmFromNodes.indexOf(elt);});return isTransition?rawIndexes.filter(function(ind){return ind!==-1;}):rawIndexes;}function emit(evtName,evtData){var _this=this;this.$nextTick(function(){return _this.$emit(evtName.toLowerCase(),evtData);});}function delegateAndEmit(evtName){var _this2=this;return function(evtData){if(_this2.realList!==null){_this2["onDrag"+evtName](evtData);}emit.call(_this2,evtName,evtData);};}function isTransitionName(name){return["transition-group","TransitionGroup"].includes(name);}function vuedraggable_isTransition(slots){if(!slots||slots.length!==1){return false;}var _slots=_slicedToArray(slots,1),componentOptions=_slots[0].componentOptions;if(!componentOptions){return false;}return isTransitionName(componentOptions.tag);}function getSlot(slot,scopedSlot,key){return slot[key]||(scopedSlot[key]?scopedSlot[key]():undefined);}function computeChildrenAndOffsets(children,slot,scopedSlot){var headerOffset=0;var footerOffset=0;var header=getSlot(slot,scopedSlot,"header");if(header){headerOffset=header.length;children=children?[].concat(_toConsumableArray(header),_toConsumableArray(children)):_toConsumableArray(header);}var footer=getSlot(slot,scopedSlot,"footer");if(footer){footerOffset=footer.length;children=children?[].concat(_toConsumableArray(children),_toConsumableArray(footer)):_toConsumableArray(footer);}return{children:children,headerOffset:headerOffset,footerOffset:footerOffset};}function getComponentAttributes($attrs,componentData){var attributes=null;var update=function update(name,value){attributes=buildAttribute(attributes,name,value);};var attrs=Object.keys($attrs).filter(function(key){return key==="id"||key.startsWith("data-");}).reduce(function(res,key){res[key]=$attrs[key];return res;},{});update("attrs",attrs);if(!componentData){return attributes;}var on=componentData.on,props=componentData.props,componentDataAttrs=componentData.attrs;update("on",on);update("props",props);Object.assign(attributes.attrs,componentDataAttrs);return attributes;}var eventsListened=["Start","Add","Remove","Update","End"];var eventsToEmit=["Choose","Unchoose","Sort","Filter","Clone"];var readonlyProperties=["Move"].concat(eventsListened,eventsToEmit).map(function(evt){return"on"+evt;});var draggingElement=null;var props={options:Object,list:{type:Array,required:false,default:null},value:{type:Array,required:false,default:null},noTransitionOnDrag:{type:Boolean,default:false},clone:{type:Function,default:function _default(original){return original;}},element:{type:String,default:"div"},tag:{type:String,default:null},move:{type:Function,default:null},componentData:{type:Object,required:false,default:null}};var draggableComponent={name:"draggable",inheritAttrs:false,props:props,data:function data(){return{transitionMode:false,noneFunctionalComponentMode:false};},render:function render(h){var slots=this.$slots.default;this.transitionMode=vuedraggable_isTransition(slots);var _computeChildrenAndOf=computeChildrenAndOffsets(slots,this.$slots,this.$scopedSlots),children=_computeChildrenAndOf.children,headerOffset=_computeChildrenAndOf.headerOffset,footerOffset=_computeChildrenAndOf.footerOffset;this.headerOffset=headerOffset;this.footerOffset=footerOffset;var attributes=getComponentAttributes(this.$attrs,this.componentData);return h(this.getTag(),attributes,children);},created:function created(){if(this.list!==null&&this.value!==null){helper["b"/* console */].error("Value and list props are mutually exclusive! Please set one or another.");}if(this.element!=="div"){helper["b"/* console */].warn("Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props");}if(this.options!==undefined){helper["b"/* console */].warn("Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props");}},mounted:function mounted(){var _this3=this;this.noneFunctionalComponentMode=this.getTag().toLowerCase()!==this.$el.nodeName.toLowerCase()&&!this.getIsFunctional();if(this.noneFunctionalComponentMode&&this.transitionMode){throw new Error("Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: ".concat(this.getTag()));}var optionsAdded={};eventsListened.forEach(function(elt){optionsAdded["on"+elt]=delegateAndEmit.call(_this3,elt);});eventsToEmit.forEach(function(elt){optionsAdded["on"+elt]=emit.bind(_this3,elt);});var attributes=Object.keys(this.$attrs).reduce(function(res,key){res[Object(helper["a"/* camelize */])(key)]=_this3.$attrs[key];return res;},{});var options=Object.assign({},this.options,attributes,optionsAdded,{onMove:function onMove(evt,originalEvent){return _this3.onDragMove(evt,originalEvent);}});!("draggable"in options)&&(options.draggable=">*");this._sortable=new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer,options);this.computeIndexes();},beforeDestroy:function beforeDestroy(){if(this._sortable!==undefined)this._sortable.destroy();},computed:{rootContainer:function rootContainer(){return this.transitionMode?this.$el.children[0]:this.$el;},realList:function realList(){return this.list?this.list:this.value;}},watch:{options:{handler:function handler(newOptionValue){this.updateOptions(newOptionValue);},deep:true},$attrs:{handler:function handler(newOptionValue){this.updateOptions(newOptionValue);},deep:true},realList:function realList(){this.computeIndexes();}},methods:{getIsFunctional:function getIsFunctional(){var fnOptions=this._vnode.fnOptions;return fnOptions&&fnOptions.functional;},getTag:function getTag(){return this.tag||this.element;},updateOptions:function updateOptions(newOptionValue){for(var property in newOptionValue){var value=Object(helper["a"/* camelize */])(property);if(readonlyProperties.indexOf(value)===-1){this._sortable.option(value,newOptionValue[property]);}}},getChildrenNodes:function getChildrenNodes(){if(this.noneFunctionalComponentMode){return this.$children[0].$slots.default;}var rawNodes=this.$slots.default;return this.transitionMode?rawNodes[0].child.$slots.default:rawNodes;},computeIndexes:function computeIndexes(){var _this4=this;this.$nextTick(function(){_this4.visibleIndexes=_computeIndexes(_this4.getChildrenNodes(),_this4.rootContainer.children,_this4.transitionMode,_this4.footerOffset);});},getUnderlyingVm:function getUnderlyingVm(htmlElt){var index=computeVmIndex(this.getChildrenNodes()||[],htmlElt);if(index===-1){//Edge case during move callback: related element might be
|
|
532
532
|
//an element different from collection
|
|
533
533
|
return null;}var element=this.realList[index];return{index:index,element:element};},getUnderlyingPotencialDraggableComponent:function getUnderlyingPotencialDraggableComponent(_ref){var vue=_ref.__vue__;if(!vue||!vue.$options||!isTransitionName(vue.$options._componentTag)){if(!("realList"in vue)&&vue.$children.length===1&&"realList"in vue.$children[0])return vue.$children[0];return vue;}return vue.$parent;},emitChanges:function emitChanges(evt){var _this5=this;this.$nextTick(function(){_this5.$emit("change",evt);});},alterList:function alterList(onList){if(this.list){onList(this.list);return;}var newList=_toConsumableArray(this.value);onList(newList);this.$emit("input",newList);},spliceList:function spliceList(){var _arguments=arguments;var spliceList=function spliceList(list){return list.splice.apply(list,_toConsumableArray(_arguments));};this.alterList(spliceList);},updatePosition:function updatePosition(oldIndex,newIndex){var updatePosition=function updatePosition(list){return list.splice(newIndex,0,list.splice(oldIndex,1)[0]);};this.alterList(updatePosition);},getRelatedContextFromMoveEvent:function getRelatedContextFromMoveEvent(_ref2){var to=_ref2.to,related=_ref2.related;var component=this.getUnderlyingPotencialDraggableComponent(to);if(!component){return{component:component};}var list=component.realList;var context={list:list,component:component};if(to!==related&&list&&component.getUnderlyingVm){var destination=component.getUnderlyingVm(related);if(destination){return Object.assign(destination,context);}}return context;},getVmIndex:function getVmIndex(domIndex){var indexes=this.visibleIndexes;var numberIndexes=indexes.length;return domIndex>numberIndexes-1?numberIndexes:indexes[domIndex];},getComponent:function getComponent(){return this.$slots.default[0].componentInstance;},resetTransitionData:function resetTransitionData(index){if(!this.noTransitionOnDrag||!this.transitionMode){return;}var nodes=this.getChildrenNodes();nodes[index].data=null;var transitionContainer=this.getComponent();transitionContainer.children=[];transitionContainer.kept=undefined;},onDragStart:function onDragStart(evt){this.context=this.getUnderlyingVm(evt.item);evt.item._underlying_vm_=this.clone(this.context.element);draggingElement=evt.item;},onDragAdd:function onDragAdd(evt){var element=evt.item._underlying_vm_;if(element===undefined){return;}Object(helper["d"/* removeNode */])(evt.item);var newIndex=this.getVmIndex(evt.newIndex);this.spliceList(newIndex,0,element);this.computeIndexes();var added={element:element,newIndex:newIndex};this.emitChanges({added:added});},onDragRemove:function onDragRemove(evt){Object(helper["c"/* insertNodeAt */])(this.rootContainer,evt.item,evt.oldIndex);if(evt.pullMode==="clone"){Object(helper["d"/* removeNode */])(evt.clone);return;}var oldIndex=this.context.index;this.spliceList(oldIndex,1);var removed={element:this.context.element,oldIndex:oldIndex};this.resetTransitionData(oldIndex);this.emitChanges({removed:removed});},onDragUpdate:function onDragUpdate(evt){Object(helper["d"/* removeNode */])(evt.item);Object(helper["c"/* insertNodeAt */])(evt.from,evt.item,evt.oldIndex);var oldIndex=this.context.index;var newIndex=this.getVmIndex(evt.newIndex);this.updatePosition(oldIndex,newIndex);var moved={element:this.context.element,oldIndex:oldIndex,newIndex:newIndex};this.emitChanges({moved:moved});},updateProperty:function updateProperty(evt,propertyName){evt.hasOwnProperty(propertyName)&&(evt[propertyName]+=this.headerOffset);},computeFutureIndex:function computeFutureIndex(relatedContext,evt){if(!relatedContext.element){return 0;}var domChildren=_toConsumableArray(evt.to.children).filter(function(el){return el.style["display"]!=="none";});var currentDOMIndex=domChildren.indexOf(evt.related);var currentIndex=relatedContext.component.getVmIndex(currentDOMIndex);var draggedInList=domChildren.indexOf(draggingElement)!==-1;return draggedInList||!evt.willInsertAfter?currentIndex:currentIndex+1;},onDragMove:function onDragMove(evt,originalEvent){var onMove=this.move;if(!onMove||!this.realList){return true;}var relatedContext=this.getRelatedContextFromMoveEvent(evt);var draggedContext=this.context;var futureIndex=this.computeFutureIndex(relatedContext,evt);Object.assign(draggedContext,{futureIndex:futureIndex});var sendEvt=Object.assign({},evt,{relatedContext:relatedContext,draggedContext:draggedContext});return onMove(sendEvt,originalEvent);},onDragEnd:function onDragEnd(){this.computeIndexes();draggingElement=null;}}};if(typeof window!=="undefined"&&"Vue"in window){window.Vue.component("draggable",draggableComponent);}/* harmony default export */var vuedraggable=draggableComponent;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
|
|
534
|
-
/* harmony default export */__webpack_exports__["default"]=vuedraggable;/***/}/******/})["default"]);});})(vuedraggable_umd);var draggable=/*@__PURE__*/getDefaultExportFromCjs(vuedraggable_umd.exports);var img$9="data:image/png;base64,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";var img$8="data:image/png;base64,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";var img$7="data:image/png;base64,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";var img$6="data:image/png;base64,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";var img$5="data:image/png;base64,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";var img$4="data:image/png;base64,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U9dpJQnqt/dIETWpl0btmqbT4bX2vPTZWqB4z7y34ADd07cRDbyyEfXtlE0lTGBOnvUvGN81Za0QuC1MS7nd/jW/5oOXyB366tx9NPaO86nteemUVMNFZeUV10Y5ht+yYUYPYZnzw6GAEKLASxqP0L11Fn029iJRtlZ4lUyYR1qyWwgTD1u4tkArii38bC9Qj723TQjUs39oJYC3/tMPKvCf/3SYbrm0vvBbtO64Kow7eIdzLbP7rV4i7N8/H6HZ3+dT5xaZ1P83DamhJ1X480vSxxoCJQID/pZvLQzwqXS2blSLJg1sLTzaM03U5fwsOdDLLr1NBn0vu+1oSfhSPYdmpVsvfTt5hMY6crKU5q08SqfOldumX61w68X2Gsro3l7wawHxH0x0BGw7y4uuuUhlNgFLCBRbB3rJ7IYi//gQsIRAsUHxCE+LunwV0hufZjurFLfLPcMK4ydO1RKD8lDdm19QpD2XD5XIwWF4aauDOxdNq0rAEpe8qtWCj10JQKDs2nMWrbflBcrtdmMGaFHh0aqW5QflvNI+ny+F7RM6x46WPwG0IBvhxzpqRq4nbagReSEPEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABBxGwxdeoOG/2NaqpPq9vsI98GQ7ir6Mprg3JSXRHTmbqeh2REx7F8gLFP2126ERxccJJJboCLlrQoE7alYmuRrjyLS9QTJjKq/N38pQdmJzk6mB1TWX5DxpCmCpFqrSMZle6rGmzvEBZE1uiauVrl6iS9ZYLgdJLCvF0EYBA6cKESHoJQKD0kkI8XQQgULowIZJeAhAovaQQTxcBCJQuTIiklwAESi8pxNNFAAKlCxMi6SUAgdJLCvF0EUjSFcvikVbuPkclZT6L1zJ09do2TKM6tex/ftu/Bayf7C5MXNQ2HSwKLXE2CXWEQNmEdbWoJgSqWnRz/BoJgYof62pREgTKIt2ckmT5vY66SFm+FfkFRfaevunqBv2RGnjSLN1n0FD6+xIxdRCAQOmAhCj6CUCg9LNC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YnmBYkv5uM9X0YP1a6dY4n6drQUq15M2tLoLFdtJ4M2tk2qZ+3WhBAphIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIGB3Ai67N8Aq9ff5fCmHTxS/SC7Xn5ndbZV6oR7xI+Byubzk871Wv07qSGYviV/Jzi0JCsqAvj1UUPSKj+hBA7JCFg4hwE6sGbmetKEOaU7CmoErfYzoD58smQrlFCNEBybnMsFlw4FNi2uTMIKKEfehguJTPvJlxJgNkjuQgItcp3M9qZkObFrcmoQRVIyooZxiBOjg5JCN2DsXCip2hsgBBEDAJAJQUCaBRbYgAAKxE4CCip0hcgABEDCJABSUSWCRLQiAQOwEoKBiZ4gcQAAETCIABWUSWGQLAiAQOwEoqNgZIgcQAAGTCEBBmQQW2YIACMROAAoqdobIAQRAwCQCSSbli2wjJLBy9zkqKWNPcMEknEBKkou6NquZ8HqgAkQYQVlECqCcLNIRrBroC+v0BRSUdfoCNQEBEAggAAUVAAROEAAB6xCAgrJOX6AmIAACAQSgoAKAJMrZtmEa8cVZmMQS4H3A+wLGGgRwRsTYD/kFRbj1FiNDJydv4EnDORZDB2MEFQM8JAUBEDCXABSUuXyROwiAQAwEoKBigIekIAAC5hKAgjKXL3IHARCIgQAUVAzwkBQEQMBcAlBQ5vJF7iAAAjEQgIKKAR6SggAImEsAbzMwl6/u3J30NgO8DUB3tyNiGAIYQYUBFK9gJz1B76S2xKv/UY42ASgobS7wBQEQsAABKCgLdAKqAAIgoE0ACkqbC3xBAAQsQAAKygKdwKvglLcZ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";var img$3="data:image/png;base64,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";var img$2="data:image/png;base64,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lirylyoaDLtdbPF7tZLXmjjWyRfTX1aa8ws5+VGZ0bd+ttb1yr5raPMXP2GL7/ztTSPbxDFfo5VzdlB14eVyEfYmJYA3R5wzHN7qYlIPtqjYeKvLiGFxBGVRB4daIGAFAghQVrAidAABixJAgLKoYaEWCFiBAAKUFawIHUDAogQQoCxqWKgFAlYggAB1zorseUU9VjAodDA/AfjiqA0RoBQWYvD7O5R2SIBArAnAF2XCuA5KJsH26+suWcIeL/k2u1cVXDy4IBkfAuyhoyI5hWUrZ+3Q9sCs+IiV0FnwQVTB/8rn87PP9rp/SiTwxwNMYHfXZ6k0QxEI6CLAT+VEonoWl17NzHD825VTt4d+1o2uGc3XGQFKp83azzQxH8MGAuoECnLL8BlTR6OpFGtQmjChEQiAQCIIIEAlgjrmBAEQ0EQAAUoTJjQCARBIBAEEqERQx5wgAAKaCCBAacKERiAAAokggACVCOqYEwRAQBMBBChNmNAIBEAgEQQQoHRTxz18uhFadgD4hl7TIkDpJMiuwsM9fDoZWrU7fEO/ZXGVq36G1NndsoTdDsPu4RPBMwo8zT4Eu4VFZH/L8rJLcE+dTmPiA6UToGd3UWzN7uwa+ikJ4pUsVk0gwj18nnysmxZ62P109ezezVfzcpL+TRCKcE+ddY0NzUAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABCIm8P8B73KF2/EETJgAAAAASUVORK5CYII=";var img$1="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASgAAAEoCAYAAAGcAFyPAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAABKKADAAQAAAABAAABKAAAAAB9ICHSAAAbUElEQVR4Ae3deYxUxb7A8RoYBhC4LANcBX2A7KIgLiAkCGgiWyKiiJiIcblE7mOG4BXC8Nfj/TUTo6gwPDDcMRo1IEIiMchiXFADjAuiPpAJgsMiehkGEUbgscy8qnM5TXfTPXNOn6XrVH876ZnTp6vqVH3q19WnzyoEDwQQQEBvgTyn1autrR3U0NDwv07Tp0rXuXNnR8trlipzqnleK5SqzHTzHFcqXQFBzM/PpNDdu3e7yjZo0CBX6bWUchR4qpnHjx9vcNXcFIl9D/QUywhslq8x5TZ20rWK7ksnkzzf0aevuLj4g+SMmbwuKipqmDt37sCm8jqKqW7duk1YuXJlU2U1+X737t1Vmj3y2WjYOJJqcmk+J3AklbzMqVOnCvkFLT755JPYWwMGDBB79+4VTz/9tNi2bZuI/ySuXbs2ls7JREZS+fn5VoXuuOOO2DI6duxoTVdUVIgff/xRqIr06dPH+h9L5HAi40qp8r/++uuUi5k8eXLK+U5nZtR9Fy9ejJVfUlJiTW/dutX6b79ev359LI3biUY/BXZhpaWlnr/37LLU/4ULFza63Iy6L34BQUw3WuP4Beb8WoLj7nO6LhSvyzQCCCCAAAIIIJADAqx5Ou1kx2ueTgv0I53r331uN8KqX9P9+/d3VdfApeJ/uDqtGYHuVMrXmIrf/OO0AqnS0X2pVFLNc/TpUxtQU2V2O89pOU12n9+bgVRDIrkpyFH3xXeT2uCqNsSqh/1fTY8aNUr9E/aWPPWeet52223WfDd/XA8JaoOr2sj6xBNPiGuvvTa2LLWNXFWorKzMmqfSdOnSRdTU1MTSOJ1wLaUK7tChg3j99devWoZdIVvrqgQOZ7iWUuWePHkyVrxdgerqajFy5Ehx9913x7RiiVxO8OlTYHl5ecuagmtSyi6ADbG2BP8RQAABBBBAAAEEEEAAgWgIOP7B56Y5fhy07mZ5SWnr5LEv7ZLmeX7pO5Qfv6A9t0oW4PeBQhltlvKjIVErAyiHPZbRNkWHZceSud0xGMvoYsKvnUHpFskYlU4maT4fvSSQdC+1/Ohlsk8+XQP9mq9lRGVynIBfIOnKYYxKJ5M0X8uISqpjRi/9OgnKXrgvERXE/ne7gn79b2p/flPLMTaimmq42/eBcigWCtSIESPE9OnTrSq1bNkydkCHfaRAfF3j08a/v2DBAjFr1qxYUvWeOu4irEco61GqMe3btxfDhw8XXbt2ddy2l19+OYa6c+dOsWXLFsd5/U4YGtQff/whKisrrfq///77jtohT7lNOBZFRZF94IyjAnxMxLeeQ8xQxiiHddE6mS8RFd9CtnDGa+TgdBAfvbocdKTJCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCAQp4PueYlVZedLQbnljiZuCrHi6suWlMV4uLCx8Nt37mc73HUqHXeoSq15iNc8UJVW+IPYUp1pOqPNkNPveLt8LDFUkxIUB5RAbKKAcCjhMFvgxnHV1deLgwYMOq5NZsqDP1VO1CvyjFzRSZrTucwUO5b5KeuYwcoVTUXOWepYCjo+eQ3igHEJpuXoQxte9Q59YssAjitWDmHVuTLB64LCfA//oOayH9smActhFvkLJy84PcLjcyCXzbfXA6bX5wxKy61NeXu7LOOy5kFy45oHqXF8/emFFSzaWA5RDdaCAcijgMJlv33qNLS/+9ii7du0SP/30k5VczU++N3X8PHU3k2eeeUaoayYsX748lid5WcllJL/vx+tQPnr2vbFVg9T9YuxLiaj5yQ973pgxY8STTz5pXRBC3U7dzqPKUM/4MpPLCOJ1KFDxFV+zZk38y7TT119/fex+N+oKZdm6goZdwVA+emph6ros8uAJoSLFyeOtt94S8mJZsUjKGaiqqirLZ8eOHU6crDRLly6Npc3mdVlUJUL76KkbJ8XfPCkmkGZCwQwePDjh3YKCgoTXYb4I7aOXrlH2IK3ej/94qWn13sSJE62sFy5cEOfPn09XTODz+a3nkDi0j57D+mibzA+onLgWi2coedlG369Gr2NYeR6jkhulw8Guqk4ce5DcMyG99vzRC6meWV8MUA67AKgch2ryDqgOfUiGAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALGCPh+bmwQMvJ8249kufcEUXaUypQ3t2kpr9OSvas9OMDSPqCy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";var img="data:image/png;base64,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";var zh={"0":"请输入内容","1":"取消全部筛选","2":"序号","3":"操作","4":"可添加列表项","5":"列表配置","6":"已选列表项","7":"排序","8":"固定在左边","9":"取消","10":"确定","11":"重置","12":"请选择","13":"开始日期","14":"结束日期","15":"至","16":'列表项名',"17":'最近一周',"18":'最近一个月',"19":'最近三个月',"20":'点击上传',"21":'请选择要上传的附件,最多',"22":'个',"23":'单个附件最大'};var en={"0":"Please enter the content.","1":"Cancl all check","2":"Serial No.","3":"Operate","4":"Can add list items","5":"List Configuration","6":"Selected list items","7":"sort","8":"Fixed on the left side","9":"Cancel","10":"Confirm","11":"Reset","12":"Please select","13":"Start Date","14":"End Date","15":"to","16":'List Item Name',"17":'Last week',"18":'Last month',"19":'Last three months',"20":'Click to upload',"21":'Please select the attachment to upload, up to a maximum of',"22":'individual',"23":'Maximum for a single attachment'};var cht={"0":"請輸入內容","1":"取消全部篩選","2":"序號","3":"操作","4":"可添加列表項","5":"清單配寘","6":"已選列表項","7":"排序","8":"固定在左邊","9":"取消","10":"確定","11":"重置","12":"請選擇","13":"開始日期","14":"結束日期","15":"至","16":'清單項名',"17":'最近一周',"18":'最近一個月',"19":'最近三個月',"20":'點擊上傳',"21":'請選擇要上傳的附件,最多',"22":'個',"23":'單個附件最大'};var idMap={'请输入内容':0,'取消全部筛选':1,'序号':2,'操作':3,'可添加列表项':4,'列表配置':5,'已选列表项':6,'排序':7,'固定在左边':8,'取消':9,'确定':10,'重置':11,'请选择':12,'开始日期':13,'结束日期':14,'至':15,'列表项名':16,'最近一周':17,'最近一个月':18,'最近三个月':19,'点击上传':20,'请选择要上传的附件,最多':21,'个':22,'单个附件最大':23};var trans=str=>{let lan=localStorage.getItem('language')||'zh';let id=idMap[str];let obj={};switch(lan){case'zh':obj=zh;break;case'en':obj=en;break;case'cht':obj=cht;break;}let txt=obj[id]||str;return txt;};const getFileUrl=async file=>{try{const url=process.env.VUE_APP_BASE_API+"/huilianApi/waterNarkcs/addDocumentWaterMark";let headers={"Content-Type":"application/x-www-form-urlencoded"// 通常不需要手动设置,但为了完整性还是加上
|
|
534
|
+
/* harmony default export */__webpack_exports__["default"]=vuedraggable;/***/}/******/})["default"]);});})(vuedraggable_umd);var draggable=/*@__PURE__*/getDefaultExportFromCjs(vuedraggable_umd.exports);var axios$3={exports:{}};var bind$2=function bind(fn,thisArg){return function wrap(){var args=new Array(arguments.length);for(var i=0;i<args.length;i++){args[i]=arguments[i];}return fn.apply(thisArg,args);};};var bind$1=bind$2;/*global toString:true*/ // utils is a library of generic helper functions non-specific to axios
|
|
535
|
+
var toString=Object.prototype.toString;/**
|
|
536
|
+
* Determine if a value is an Array
|
|
537
|
+
*
|
|
538
|
+
* @param {Object} val The value to test
|
|
539
|
+
* @returns {boolean} True if value is an Array, otherwise false
|
|
540
|
+
*/function isArray$1(val){return toString.call(val)==='[object Array]';}/**
|
|
541
|
+
* Determine if a value is undefined
|
|
542
|
+
*
|
|
543
|
+
* @param {Object} val The value to test
|
|
544
|
+
* @returns {boolean} True if the value is undefined, otherwise false
|
|
545
|
+
*/function isUndefined(val){return typeof val==='undefined';}/**
|
|
546
|
+
* Determine if a value is a Buffer
|
|
547
|
+
*
|
|
548
|
+
* @param {Object} val The value to test
|
|
549
|
+
* @returns {boolean} True if value is a Buffer, otherwise false
|
|
550
|
+
*/function isBuffer$1(val){return val!==null&&!isUndefined(val)&&val.constructor!==null&&!isUndefined(val.constructor)&&typeof val.constructor.isBuffer==='function'&&val.constructor.isBuffer(val);}/**
|
|
551
|
+
* Determine if a value is an ArrayBuffer
|
|
552
|
+
*
|
|
553
|
+
* @param {Object} val The value to test
|
|
554
|
+
* @returns {boolean} True if value is an ArrayBuffer, otherwise false
|
|
555
|
+
*/function isArrayBuffer(val){return toString.call(val)==='[object ArrayBuffer]';}/**
|
|
556
|
+
* Determine if a value is a FormData
|
|
557
|
+
*
|
|
558
|
+
* @param {Object} val The value to test
|
|
559
|
+
* @returns {boolean} True if value is an FormData, otherwise false
|
|
560
|
+
*/function isFormData(val){return typeof FormData!=='undefined'&&val instanceof FormData;}/**
|
|
561
|
+
* Determine if a value is a view on an ArrayBuffer
|
|
562
|
+
*
|
|
563
|
+
* @param {Object} val The value to test
|
|
564
|
+
* @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
|
|
565
|
+
*/function isArrayBufferView(val){var result;if(typeof ArrayBuffer!=='undefined'&&ArrayBuffer.isView){result=ArrayBuffer.isView(val);}else{result=val&&val.buffer&&val.buffer instanceof ArrayBuffer;}return result;}/**
|
|
566
|
+
* Determine if a value is a String
|
|
567
|
+
*
|
|
568
|
+
* @param {Object} val The value to test
|
|
569
|
+
* @returns {boolean} True if value is a String, otherwise false
|
|
570
|
+
*/function isString(val){return typeof val==='string';}/**
|
|
571
|
+
* Determine if a value is a Number
|
|
572
|
+
*
|
|
573
|
+
* @param {Object} val The value to test
|
|
574
|
+
* @returns {boolean} True if value is a Number, otherwise false
|
|
575
|
+
*/function isNumber(val){return typeof val==='number';}/**
|
|
576
|
+
* Determine if a value is an Object
|
|
577
|
+
*
|
|
578
|
+
* @param {Object} val The value to test
|
|
579
|
+
* @returns {boolean} True if value is an Object, otherwise false
|
|
580
|
+
*/function isObject(val){return val!==null&&typeof val==='object';}/**
|
|
581
|
+
* Determine if a value is a plain Object
|
|
582
|
+
*
|
|
583
|
+
* @param {Object} val The value to test
|
|
584
|
+
* @return {boolean} True if value is a plain Object, otherwise false
|
|
585
|
+
*/function isPlainObject(val){if(toString.call(val)!=='[object Object]'){return false;}var prototype=Object.getPrototypeOf(val);return prototype===null||prototype===Object.prototype;}/**
|
|
586
|
+
* Determine if a value is a Date
|
|
587
|
+
*
|
|
588
|
+
* @param {Object} val The value to test
|
|
589
|
+
* @returns {boolean} True if value is a Date, otherwise false
|
|
590
|
+
*/function isDate(val){return toString.call(val)==='[object Date]';}/**
|
|
591
|
+
* Determine if a value is a File
|
|
592
|
+
*
|
|
593
|
+
* @param {Object} val The value to test
|
|
594
|
+
* @returns {boolean} True if value is a File, otherwise false
|
|
595
|
+
*/function isFile(val){return toString.call(val)==='[object File]';}/**
|
|
596
|
+
* Determine if a value is a Blob
|
|
597
|
+
*
|
|
598
|
+
* @param {Object} val The value to test
|
|
599
|
+
* @returns {boolean} True if value is a Blob, otherwise false
|
|
600
|
+
*/function isBlob(val){return toString.call(val)==='[object Blob]';}/**
|
|
601
|
+
* Determine if a value is a Function
|
|
602
|
+
*
|
|
603
|
+
* @param {Object} val The value to test
|
|
604
|
+
* @returns {boolean} True if value is a Function, otherwise false
|
|
605
|
+
*/function isFunction(val){return toString.call(val)==='[object Function]';}/**
|
|
606
|
+
* Determine if a value is a Stream
|
|
607
|
+
*
|
|
608
|
+
* @param {Object} val The value to test
|
|
609
|
+
* @returns {boolean} True if value is a Stream, otherwise false
|
|
610
|
+
*/function isStream(val){return isObject(val)&&isFunction(val.pipe);}/**
|
|
611
|
+
* Determine if a value is a URLSearchParams object
|
|
612
|
+
*
|
|
613
|
+
* @param {Object} val The value to test
|
|
614
|
+
* @returns {boolean} True if value is a URLSearchParams object, otherwise false
|
|
615
|
+
*/function isURLSearchParams(val){return typeof URLSearchParams!=='undefined'&&val instanceof URLSearchParams;}/**
|
|
616
|
+
* Trim excess whitespace off the beginning and end of a string
|
|
617
|
+
*
|
|
618
|
+
* @param {String} str The String to trim
|
|
619
|
+
* @returns {String} The String freed of excess whitespace
|
|
620
|
+
*/function trim(str){return str.replace(/^\s*/,'').replace(/\s*$/,'');}/**
|
|
621
|
+
* Determine if we're running in a standard browser environment
|
|
622
|
+
*
|
|
623
|
+
* This allows axios to run in a web worker, and react-native.
|
|
624
|
+
* Both environments support XMLHttpRequest, but not fully standard globals.
|
|
625
|
+
*
|
|
626
|
+
* web workers:
|
|
627
|
+
* typeof window -> undefined
|
|
628
|
+
* typeof document -> undefined
|
|
629
|
+
*
|
|
630
|
+
* react-native:
|
|
631
|
+
* navigator.product -> 'ReactNative'
|
|
632
|
+
* nativescript
|
|
633
|
+
* navigator.product -> 'NativeScript' or 'NS'
|
|
634
|
+
*/function isStandardBrowserEnv(){if(typeof navigator!=='undefined'&&(navigator.product==='ReactNative'||navigator.product==='NativeScript'||navigator.product==='NS')){return false;}return typeof window!=='undefined'&&typeof document!=='undefined';}/**
|
|
635
|
+
* Iterate over an Array or an Object invoking a function for each item.
|
|
636
|
+
*
|
|
637
|
+
* If `obj` is an Array callback will be called passing
|
|
638
|
+
* the value, index, and complete array for each item.
|
|
639
|
+
*
|
|
640
|
+
* If 'obj' is an Object callback will be called passing
|
|
641
|
+
* the value, key, and complete object for each property.
|
|
642
|
+
*
|
|
643
|
+
* @param {Object|Array} obj The object to iterate
|
|
644
|
+
* @param {Function} fn The callback to invoke for each item
|
|
645
|
+
*/function forEach(obj,fn){// Don't bother if no value provided
|
|
646
|
+
if(obj===null||typeof obj==='undefined'){return;}// Force an array if not already something iterable
|
|
647
|
+
if(typeof obj!=='object'){/*eslint no-param-reassign:0*/obj=[obj];}if(isArray$1(obj)){// Iterate over array values
|
|
648
|
+
for(var i=0,l=obj.length;i<l;i++){fn.call(null,obj[i],i,obj);}}else{// Iterate over object keys
|
|
649
|
+
for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){fn.call(null,obj[key],key,obj);}}}}/**
|
|
650
|
+
* Accepts varargs expecting each argument to be an object, then
|
|
651
|
+
* immutably merges the properties of each object and returns result.
|
|
652
|
+
*
|
|
653
|
+
* When multiple objects contain the same key the later object in
|
|
654
|
+
* the arguments list will take precedence.
|
|
655
|
+
*
|
|
656
|
+
* Example:
|
|
657
|
+
*
|
|
658
|
+
* ```js
|
|
659
|
+
* var result = merge({foo: 123}, {foo: 456});
|
|
660
|
+
* console.log(result.foo); // outputs 456
|
|
661
|
+
* ```
|
|
662
|
+
*
|
|
663
|
+
* @param {Object} obj1 Object to merge
|
|
664
|
+
* @returns {Object} Result of all merge properties
|
|
665
|
+
*/function/* obj1, obj2, obj3, ... */merge$1(){var result={};function assignValue(val,key){if(isPlainObject(result[key])&&isPlainObject(val)){result[key]=merge$1(result[key],val);}else if(isPlainObject(val)){result[key]=merge$1({},val);}else if(isArray$1(val)){result[key]=val.slice();}else{result[key]=val;}}for(var i=0,l=arguments.length;i<l;i++){forEach(arguments[i],assignValue);}return result;}/**
|
|
666
|
+
* Extends object a by mutably adding to it the properties of object b.
|
|
667
|
+
*
|
|
668
|
+
* @param {Object} a The object to be extended
|
|
669
|
+
* @param {Object} b The object to copy properties from
|
|
670
|
+
* @param {Object} thisArg The object to bind function to
|
|
671
|
+
* @return {Object} The resulting value of object a
|
|
672
|
+
*/function extend(a,b,thisArg){forEach(b,function assignValue(val,key){if(thisArg&&typeof val==='function'){a[key]=bind$1(val,thisArg);}else{a[key]=val;}});return a;}/**
|
|
673
|
+
* Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
|
|
674
|
+
*
|
|
675
|
+
* @param {string} content with BOM
|
|
676
|
+
* @return {string} content value without BOM
|
|
677
|
+
*/function stripBOM(content){if(content.charCodeAt(0)===0xFEFF){content=content.slice(1);}return content;}var utils$h={isArray:isArray$1,isArrayBuffer:isArrayBuffer,isBuffer:isBuffer$1,isFormData:isFormData,isArrayBufferView:isArrayBufferView,isString:isString,isNumber:isNumber,isObject:isObject,isPlainObject:isPlainObject,isUndefined:isUndefined,isDate:isDate,isFile:isFile,isBlob:isBlob,isFunction:isFunction,isStream:isStream,isURLSearchParams:isURLSearchParams,isStandardBrowserEnv:isStandardBrowserEnv,forEach:forEach,merge:merge$1,extend:extend,trim:trim,stripBOM:stripBOM};var utils$g=utils$h;function encode$1(val){return encodeURIComponent(val).replace(/%3A/gi,':').replace(/%24/g,'$').replace(/%2C/gi,',').replace(/%20/g,'+').replace(/%5B/gi,'[').replace(/%5D/gi,']');}/**
|
|
678
|
+
* Build a URL by appending params to the end
|
|
679
|
+
*
|
|
680
|
+
* @param {string} url The base of the url (e.g., http://www.google.com)
|
|
681
|
+
* @param {object} [params] The params to be appended
|
|
682
|
+
* @returns {string} The formatted url
|
|
683
|
+
*/var buildURL$3=function buildURL(url,params,paramsSerializer){/*eslint no-param-reassign:0*/if(!params){return url;}var serializedParams;if(paramsSerializer){serializedParams=paramsSerializer(params);}else if(utils$g.isURLSearchParams(params)){serializedParams=params.toString();}else{var parts=[];utils$g.forEach(params,function serialize(val,key){if(val===null||typeof val==='undefined'){return;}if(utils$g.isArray(val)){key=key+'[]';}else{val=[val];}utils$g.forEach(val,function parseValue(v){if(utils$g.isDate(v)){v=v.toISOString();}else if(utils$g.isObject(v)){v=JSON.stringify(v);}parts.push(encode$1(key)+'='+encode$1(v));});});serializedParams=parts.join('&');}if(serializedParams){var hashmarkIndex=url.indexOf('#');if(hashmarkIndex!==-1){url=url.slice(0,hashmarkIndex);}url+=(url.indexOf('?')===-1?'?':'&')+serializedParams;}return url;};var utils$f=utils$h;function InterceptorManager$1(){this.handlers=[];}/**
|
|
684
|
+
* Add a new interceptor to the stack
|
|
685
|
+
*
|
|
686
|
+
* @param {Function} fulfilled The function to handle `then` for a `Promise`
|
|
687
|
+
* @param {Function} rejected The function to handle `reject` for a `Promise`
|
|
688
|
+
*
|
|
689
|
+
* @return {Number} An ID used to remove interceptor later
|
|
690
|
+
*/InterceptorManager$1.prototype.use=function use(fulfilled,rejected){this.handlers.push({fulfilled:fulfilled,rejected:rejected});return this.handlers.length-1;};/**
|
|
691
|
+
* Remove an interceptor from the stack
|
|
692
|
+
*
|
|
693
|
+
* @param {Number} id The ID that was returned by `use`
|
|
694
|
+
*/InterceptorManager$1.prototype.eject=function eject(id){if(this.handlers[id]){this.handlers[id]=null;}};/**
|
|
695
|
+
* Iterate over all the registered interceptors
|
|
696
|
+
*
|
|
697
|
+
* This method is particularly useful for skipping over any
|
|
698
|
+
* interceptors that may have become `null` calling `eject`.
|
|
699
|
+
*
|
|
700
|
+
* @param {Function} fn The function to call for each interceptor
|
|
701
|
+
*/InterceptorManager$1.prototype.forEach=function forEach(fn){utils$f.forEach(this.handlers,function forEachHandler(h){if(h!==null){fn(h);}});};var InterceptorManager_1=InterceptorManager$1;var utils$e=utils$h;/**
|
|
702
|
+
* Transform the data for a request or a response
|
|
703
|
+
*
|
|
704
|
+
* @param {Object|String} data The data to be transformed
|
|
705
|
+
* @param {Array} headers The headers for the request or response
|
|
706
|
+
* @param {Array|Function} fns A single function or Array of functions
|
|
707
|
+
* @returns {*} The resulting transformed data
|
|
708
|
+
*/var transformData$1=function transformData(data,headers,fns){/*eslint no-param-reassign:0*/utils$e.forEach(fns,function transform(fn){data=fn(data,headers);});return data;};var isCancel$1=function isCancel(value){return!!(value&&value.__CANCEL__);};var utils$d=utils$h;var normalizeHeaderName$1=function normalizeHeaderName(headers,normalizedName){utils$d.forEach(headers,function processHeader(value,name){if(name!==normalizedName&&name.toUpperCase()===normalizedName.toUpperCase()){headers[normalizedName]=value;delete headers[name];}});};/**
|
|
709
|
+
* Update an Error with the specified config, error code, and response.
|
|
710
|
+
*
|
|
711
|
+
* @param {Error} error The error to update.
|
|
712
|
+
* @param {Object} config The config.
|
|
713
|
+
* @param {string} [code] The error code (for example, 'ECONNABORTED').
|
|
714
|
+
* @param {Object} [request] The request.
|
|
715
|
+
* @param {Object} [response] The response.
|
|
716
|
+
* @returns {Error} The error.
|
|
717
|
+
*/var enhanceError$2=function enhanceError(error,config,code,request,response){error.config=config;if(code){error.code=code;}error.request=request;error.response=response;error.isAxiosError=true;error.toJSON=function toJSON(){return{// Standard
|
|
718
|
+
message:this.message,name:this.name,// Microsoft
|
|
719
|
+
description:this.description,number:this.number,// Mozilla
|
|
720
|
+
fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,// Axios
|
|
721
|
+
config:this.config,code:this.code};};return error;};var enhanceError$1=enhanceError$2;/**
|
|
722
|
+
* Create an Error with the specified message, config, error code, request and response.
|
|
723
|
+
*
|
|
724
|
+
* @param {string} message The error message.
|
|
725
|
+
* @param {Object} config The config.
|
|
726
|
+
* @param {string} [code] The error code (for example, 'ECONNABORTED').
|
|
727
|
+
* @param {Object} [request] The request.
|
|
728
|
+
* @param {Object} [response] The response.
|
|
729
|
+
* @returns {Error} The created error.
|
|
730
|
+
*/var createError$3=function createError(message,config,code,request,response){var error=new Error(message);return enhanceError$1(error,config,code,request,response);};var createError$2=createError$3;/**
|
|
731
|
+
* Resolve or reject a Promise based on response status.
|
|
732
|
+
*
|
|
733
|
+
* @param {Function} resolve A function that resolves the promise.
|
|
734
|
+
* @param {Function} reject A function that rejects the promise.
|
|
735
|
+
* @param {object} response The response.
|
|
736
|
+
*/var settle$2=function settle(resolve,reject,response){var validateStatus=response.config.validateStatus;if(!response.status||!validateStatus||validateStatus(response.status)){resolve(response);}else{reject(createError$2('Request failed with status code '+response.status,response.config,null,response.request,response));}};var utils$c=utils$h;var cookies$1=utils$c.isStandardBrowserEnv()?// Standard browser envs support document.cookie
|
|
737
|
+
function standardBrowserEnv(){return{write:function write(name,value,expires,path,domain,secure){var cookie=[];cookie.push(name+'='+encodeURIComponent(value));if(utils$c.isNumber(expires)){cookie.push('expires='+new Date(expires).toGMTString());}if(utils$c.isString(path)){cookie.push('path='+path);}if(utils$c.isString(domain)){cookie.push('domain='+domain);}if(secure===true){cookie.push('secure');}document.cookie=cookie.join('; ');},read:function read(name){var match=document.cookie.match(new RegExp('(^|;\\s*)('+name+')=([^;]*)'));return match?decodeURIComponent(match[3]):null;},remove:function remove(name){this.write(name,'',Date.now()-86400000);}};}():// Non standard browser env (web workers, react-native) lack needed support.
|
|
738
|
+
function nonStandardBrowserEnv(){return{write:function write(){},read:function read(){return null;},remove:function remove(){}};}();/**
|
|
739
|
+
* Determines whether the specified URL is absolute
|
|
740
|
+
*
|
|
741
|
+
* @param {string} url The URL to test
|
|
742
|
+
* @returns {boolean} True if the specified URL is absolute, otherwise false
|
|
743
|
+
*/var isAbsoluteURL$1=function isAbsoluteURL(url){// A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
|
|
744
|
+
// RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
|
|
745
|
+
// by any combination of letters, digits, plus, period, or hyphen.
|
|
746
|
+
return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);};/**
|
|
747
|
+
* Creates a new URL by combining the specified URLs
|
|
748
|
+
*
|
|
749
|
+
* @param {string} baseURL The base URL
|
|
750
|
+
* @param {string} relativeURL The relative URL
|
|
751
|
+
* @returns {string} The combined URL
|
|
752
|
+
*/var combineURLs$1=function combineURLs(baseURL,relativeURL){return relativeURL?baseURL.replace(/\/+$/,'')+'/'+relativeURL.replace(/^\/+/,''):baseURL;};var isAbsoluteURL=isAbsoluteURL$1;var combineURLs=combineURLs$1;/**
|
|
753
|
+
* Creates a new URL by combining the baseURL with the requestedURL,
|
|
754
|
+
* only when the requestedURL is not already an absolute URL.
|
|
755
|
+
* If the requestURL is absolute, this function returns the requestedURL untouched.
|
|
756
|
+
*
|
|
757
|
+
* @param {string} baseURL The base URL
|
|
758
|
+
* @param {string} requestedURL Absolute or relative URL to combine
|
|
759
|
+
* @returns {string} The combined full path
|
|
760
|
+
*/var buildFullPath$2=function buildFullPath(baseURL,requestedURL){if(baseURL&&!isAbsoluteURL(requestedURL)){return combineURLs(baseURL,requestedURL);}return requestedURL;};var utils$b=utils$h;// Headers whose duplicates are ignored by node
|
|
761
|
+
// c.f. https://nodejs.org/api/http.html#http_message_headers
|
|
762
|
+
var ignoreDuplicateOf=['age','authorization','content-length','content-type','etag','expires','from','host','if-modified-since','if-unmodified-since','last-modified','location','max-forwards','proxy-authorization','referer','retry-after','user-agent'];/**
|
|
763
|
+
* Parse headers into an object
|
|
764
|
+
*
|
|
765
|
+
* ```
|
|
766
|
+
* Date: Wed, 27 Aug 2014 08:58:49 GMT
|
|
767
|
+
* Content-Type: application/json
|
|
768
|
+
* Connection: keep-alive
|
|
769
|
+
* Transfer-Encoding: chunked
|
|
770
|
+
* ```
|
|
771
|
+
*
|
|
772
|
+
* @param {String} headers Headers needing to be parsed
|
|
773
|
+
* @returns {Object} Headers parsed into an object
|
|
774
|
+
*/var parseHeaders$1=function parseHeaders(headers){var parsed={};var key;var val;var i;if(!headers){return parsed;}utils$b.forEach(headers.split('\n'),function parser(line){i=line.indexOf(':');key=utils$b.trim(line.substr(0,i)).toLowerCase();val=utils$b.trim(line.substr(i+1));if(key){if(parsed[key]&&ignoreDuplicateOf.indexOf(key)>=0){return;}if(key==='set-cookie'){parsed[key]=(parsed[key]?parsed[key]:[]).concat([val]);}else{parsed[key]=parsed[key]?parsed[key]+', '+val:val;}}});return parsed;};var utils$a=utils$h;var isURLSameOrigin$1=utils$a.isStandardBrowserEnv()?// Standard browser envs have full support of the APIs needed to test
|
|
775
|
+
// whether the request URL is of the same origin as current location.
|
|
776
|
+
function standardBrowserEnv(){var msie=/(msie|trident)/i.test(navigator.userAgent);var urlParsingNode=document.createElement('a');var originURL;/**
|
|
777
|
+
* Parse a URL to discover it's components
|
|
778
|
+
*
|
|
779
|
+
* @param {String} url The URL to be parsed
|
|
780
|
+
* @returns {Object}
|
|
781
|
+
*/function resolveURL(url){var href=url;if(msie){// IE needs attribute set twice to normalize properties
|
|
782
|
+
urlParsingNode.setAttribute('href',href);href=urlParsingNode.href;}urlParsingNode.setAttribute('href',href);// urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
|
|
783
|
+
return{href:urlParsingNode.href,protocol:urlParsingNode.protocol?urlParsingNode.protocol.replace(/:$/,''):'',host:urlParsingNode.host,search:urlParsingNode.search?urlParsingNode.search.replace(/^\?/,''):'',hash:urlParsingNode.hash?urlParsingNode.hash.replace(/^#/,''):'',hostname:urlParsingNode.hostname,port:urlParsingNode.port,pathname:urlParsingNode.pathname.charAt(0)==='/'?urlParsingNode.pathname:'/'+urlParsingNode.pathname};}originURL=resolveURL(window.location.href);/**
|
|
784
|
+
* Determine if a URL shares the same origin as the current location
|
|
785
|
+
*
|
|
786
|
+
* @param {String} requestURL The URL to test
|
|
787
|
+
* @returns {boolean} True if URL shares the same origin, otherwise false
|
|
788
|
+
*/return function isURLSameOrigin(requestURL){var parsed=utils$a.isString(requestURL)?resolveURL(requestURL):requestURL;return parsed.protocol===originURL.protocol&&parsed.host===originURL.host;};}():// Non standard browser envs (web workers, react-native) lack needed support.
|
|
789
|
+
function nonStandardBrowserEnv(){return function isURLSameOrigin(){return true;};}();var utils$9=utils$h;var settle$1=settle$2;var cookies=cookies$1;var buildURL$2=buildURL$3;var buildFullPath$1=buildFullPath$2;var parseHeaders=parseHeaders$1;var isURLSameOrigin=isURLSameOrigin$1;var createError$1=createError$3;var xhr=function xhrAdapter(config){return new Promise(function dispatchXhrRequest(resolve,reject){var requestData=config.data;var requestHeaders=config.headers;if(utils$9.isFormData(requestData)){delete requestHeaders['Content-Type'];// Let the browser set it
|
|
790
|
+
}var request=new XMLHttpRequest();// HTTP basic authentication
|
|
791
|
+
if(config.auth){var username=config.auth.username||'';var password=config.auth.password?unescape(encodeURIComponent(config.auth.password)):'';requestHeaders.Authorization='Basic '+btoa(username+':'+password);}var fullPath=buildFullPath$1(config.baseURL,config.url);request.open(config.method.toUpperCase(),buildURL$2(fullPath,config.params,config.paramsSerializer),true);// Set the request timeout in MS
|
|
792
|
+
request.timeout=config.timeout;// Listen for ready state
|
|
793
|
+
request.onreadystatechange=function handleLoad(){if(!request||request.readyState!==4){return;}// The request errored out and we didn't get a response, this will be
|
|
794
|
+
// handled by onerror instead
|
|
795
|
+
// With one exception: request that using file: protocol, most browsers
|
|
796
|
+
// will return status as 0 even though it's a successful request
|
|
797
|
+
if(request.status===0&&!(request.responseURL&&request.responseURL.indexOf('file:')===0)){return;}// Prepare the response
|
|
798
|
+
var responseHeaders='getAllResponseHeaders'in request?parseHeaders(request.getAllResponseHeaders()):null;var responseData=!config.responseType||config.responseType==='text'?request.responseText:request.response;var response={data:responseData,status:request.status,statusText:request.statusText,headers:responseHeaders,config:config,request:request};settle$1(resolve,reject,response);// Clean up request
|
|
799
|
+
request=null;};// Handle browser request cancellation (as opposed to a manual cancellation)
|
|
800
|
+
request.onabort=function handleAbort(){if(!request){return;}reject(createError$1('Request aborted',config,'ECONNABORTED',request));// Clean up request
|
|
801
|
+
request=null;};// Handle low level network errors
|
|
802
|
+
request.onerror=function handleError(){// Real errors are hidden from us by the browser
|
|
803
|
+
// onerror should only fire if it's a network error
|
|
804
|
+
reject(createError$1('Network Error',config,null,request));// Clean up request
|
|
805
|
+
request=null;};// Handle timeout
|
|
806
|
+
request.ontimeout=function handleTimeout(){var timeoutErrorMessage='timeout of '+config.timeout+'ms exceeded';if(config.timeoutErrorMessage){timeoutErrorMessage=config.timeoutErrorMessage;}reject(createError$1(timeoutErrorMessage,config,'ECONNABORTED',request));// Clean up request
|
|
807
|
+
request=null;};// Add xsrf header
|
|
808
|
+
// This is only done if running in a standard browser environment.
|
|
809
|
+
// Specifically not if we're in a web worker, or react-native.
|
|
810
|
+
if(utils$9.isStandardBrowserEnv()){// Add xsrf header
|
|
811
|
+
var xsrfValue=(config.withCredentials||isURLSameOrigin(fullPath))&&config.xsrfCookieName?cookies.read(config.xsrfCookieName):undefined;if(xsrfValue){requestHeaders[config.xsrfHeaderName]=xsrfValue;}}// Add headers to the request
|
|
812
|
+
if('setRequestHeader'in request){utils$9.forEach(requestHeaders,function setRequestHeader(val,key){if(typeof requestData==='undefined'&&key.toLowerCase()==='content-type'){// Remove Content-Type if data is undefined
|
|
813
|
+
delete requestHeaders[key];}else{// Otherwise add header to the request
|
|
814
|
+
request.setRequestHeader(key,val);}});}// Add withCredentials to request if needed
|
|
815
|
+
if(!utils$9.isUndefined(config.withCredentials)){request.withCredentials=!!config.withCredentials;}// Add responseType to request if needed
|
|
816
|
+
if(config.responseType){try{request.responseType=config.responseType;}catch(e){// Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.
|
|
817
|
+
// But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.
|
|
818
|
+
if(config.responseType!=='json'){throw e;}}}// Handle progress if needed
|
|
819
|
+
if(typeof config.onDownloadProgress==='function'){request.addEventListener('progress',config.onDownloadProgress);}// Not all browsers support upload events
|
|
820
|
+
if(typeof config.onUploadProgress==='function'&&request.upload){request.upload.addEventListener('progress',config.onUploadProgress);}if(config.cancelToken){// Handle cancellation
|
|
821
|
+
config.cancelToken.promise.then(function onCanceled(cancel){if(!request){return;}request.abort();reject(cancel);// Clean up request
|
|
822
|
+
request=null;});}if(!requestData){requestData=null;}// Send the request
|
|
823
|
+
request.send(requestData);});};var followRedirects={exports:{}};var debug$1;var debug_1=function(){if(!debug$1){try{/* eslint global-require: off */debug$1=require("debug")("follow-redirects");}catch(error){debug$1=function(){/* */};}}debug$1.apply(null,arguments);};var url$1=require$$0$1;var URL$1=url$1.URL;var http$1=require$$1;var https$1=require$$2;var Writable=require$$3.Writable;var assert=require$$4;var debug=debug_1;// Create handlers that pass events from native requests
|
|
824
|
+
var events=["abort","aborted","connect","error","socket","timeout"];var eventHandlers=Object.create(null);events.forEach(function(event){eventHandlers[event]=function(arg1,arg2,arg3){this._redirectable.emit(event,arg1,arg2,arg3);};});// Error types with codes
|
|
825
|
+
var RedirectionError=createErrorType("ERR_FR_REDIRECTION_FAILURE","");var TooManyRedirectsError=createErrorType("ERR_FR_TOO_MANY_REDIRECTS","Maximum number of redirects exceeded");var MaxBodyLengthExceededError=createErrorType("ERR_FR_MAX_BODY_LENGTH_EXCEEDED","Request body larger than maxBodyLength limit");var WriteAfterEndError=createErrorType("ERR_STREAM_WRITE_AFTER_END","write after end");// An HTTP(S) request that can be redirected
|
|
826
|
+
function RedirectableRequest(options,responseCallback){// Initialize the request
|
|
827
|
+
Writable.call(this);this._sanitizeOptions(options);this._options=options;this._ended=false;this._ending=false;this._redirectCount=0;this._redirects=[];this._requestBodyLength=0;this._requestBodyBuffers=[];// Attach a callback if passed
|
|
828
|
+
if(responseCallback){this.on("response",responseCallback);}// React to responses of native requests
|
|
829
|
+
var self=this;this._onNativeResponse=function(response){self._processResponse(response);};// Perform the first request
|
|
830
|
+
this._performRequest();}RedirectableRequest.prototype=Object.create(Writable.prototype);RedirectableRequest.prototype.abort=function(){abortRequest(this._currentRequest);this.emit("abort");};// Writes buffered data to the current native request
|
|
831
|
+
RedirectableRequest.prototype.write=function(data,encoding,callback){// Writing is not allowed if end has been called
|
|
832
|
+
if(this._ending){throw new WriteAfterEndError();}// Validate input and shift parameters if necessary
|
|
833
|
+
if(!(typeof data==="string"||typeof data==="object"&&"length"in data)){throw new TypeError("data should be a string, Buffer or Uint8Array");}if(typeof encoding==="function"){callback=encoding;encoding=null;}// Ignore empty buffers, since writing them doesn't invoke the callback
|
|
834
|
+
// https://github.com/nodejs/node/issues/22066
|
|
835
|
+
if(data.length===0){if(callback){callback();}return;}// Only write when we don't exceed the maximum body length
|
|
836
|
+
if(this._requestBodyLength+data.length<=this._options.maxBodyLength){this._requestBodyLength+=data.length;this._requestBodyBuffers.push({data:data,encoding:encoding});this._currentRequest.write(data,encoding,callback);}// Error when we exceed the maximum body length
|
|
837
|
+
else{this.emit("error",new MaxBodyLengthExceededError());this.abort();}};// Ends the current native request
|
|
838
|
+
RedirectableRequest.prototype.end=function(data,encoding,callback){// Shift parameters if necessary
|
|
839
|
+
if(typeof data==="function"){callback=data;data=encoding=null;}else if(typeof encoding==="function"){callback=encoding;encoding=null;}// Write data if needed and end
|
|
840
|
+
if(!data){this._ended=this._ending=true;this._currentRequest.end(null,null,callback);}else{var self=this;var currentRequest=this._currentRequest;this.write(data,encoding,function(){self._ended=true;currentRequest.end(null,null,callback);});this._ending=true;}};// Sets a header value on the current native request
|
|
841
|
+
RedirectableRequest.prototype.setHeader=function(name,value){this._options.headers[name]=value;this._currentRequest.setHeader(name,value);};// Clears a header value on the current native request
|
|
842
|
+
RedirectableRequest.prototype.removeHeader=function(name){delete this._options.headers[name];this._currentRequest.removeHeader(name);};// Global timeout for all underlying requests
|
|
843
|
+
RedirectableRequest.prototype.setTimeout=function(msecs,callback){var self=this;if(callback){this.on("timeout",callback);}function destroyOnTimeout(socket){socket.setTimeout(msecs);socket.removeListener("timeout",socket.destroy);socket.addListener("timeout",socket.destroy);}// Sets up a timer to trigger a timeout event
|
|
844
|
+
function startTimer(socket){if(self._timeout){clearTimeout(self._timeout);}self._timeout=setTimeout(function(){self.emit("timeout");clearTimer();},msecs);destroyOnTimeout(socket);}// Prevent a timeout from triggering
|
|
845
|
+
function clearTimer(){clearTimeout(this._timeout);if(callback){self.removeListener("timeout",callback);}if(!this.socket){self._currentRequest.removeListener("socket",startTimer);}}// Start the timer when the socket is opened
|
|
846
|
+
if(this.socket){startTimer(this.socket);}else{this._currentRequest.once("socket",startTimer);}this.on("socket",destroyOnTimeout);this.once("response",clearTimer);this.once("error",clearTimer);return this;};// Proxy all other public ClientRequest methods
|
|
847
|
+
["flushHeaders","getHeader","setNoDelay","setSocketKeepAlive"].forEach(function(method){RedirectableRequest.prototype[method]=function(a,b){return this._currentRequest[method](a,b);};});// Proxy all public ClientRequest properties
|
|
848
|
+
["aborted","connection","socket"].forEach(function(property){Object.defineProperty(RedirectableRequest.prototype,property,{get:function(){return this._currentRequest[property];}});});RedirectableRequest.prototype._sanitizeOptions=function(options){// Ensure headers are always present
|
|
849
|
+
if(!options.headers){options.headers={};}// Since http.request treats host as an alias of hostname,
|
|
850
|
+
// but the url module interprets host as hostname plus port,
|
|
851
|
+
// eliminate the host property to avoid confusion.
|
|
852
|
+
if(options.host){// Use hostname if set, because it has precedence
|
|
853
|
+
if(!options.hostname){options.hostname=options.host;}delete options.host;}// Complete the URL object when necessary
|
|
854
|
+
if(!options.pathname&&options.path){var searchPos=options.path.indexOf("?");if(searchPos<0){options.pathname=options.path;}else{options.pathname=options.path.substring(0,searchPos);options.search=options.path.substring(searchPos);}}};// Executes the next native request (initial or redirect)
|
|
855
|
+
RedirectableRequest.prototype._performRequest=function(){// Load the native protocol
|
|
856
|
+
var protocol=this._options.protocol;var nativeProtocol=this._options.nativeProtocols[protocol];if(!nativeProtocol){this.emit("error",new TypeError("Unsupported protocol "+protocol));return;}// If specified, use the agent corresponding to the protocol
|
|
857
|
+
// (HTTP and HTTPS use different types of agents)
|
|
858
|
+
if(this._options.agents){var scheme=protocol.substr(0,protocol.length-1);this._options.agent=this._options.agents[scheme];}// Create the native request
|
|
859
|
+
var request=this._currentRequest=nativeProtocol.request(this._options,this._onNativeResponse);this._currentUrl=url$1.format(this._options);// Set up event handlers
|
|
860
|
+
request._redirectable=this;for(var e=0;e<events.length;e++){request.on(events[e],eventHandlers[events[e]]);}// End a redirected request
|
|
861
|
+
// (The first request must be ended explicitly with RedirectableRequest#end)
|
|
862
|
+
if(this._isRedirect){// Write the request entity and end.
|
|
863
|
+
var i=0;var self=this;var buffers=this._requestBodyBuffers;(function writeNext(error){// Only write if this request has not been redirected yet
|
|
864
|
+
/* istanbul ignore else */if(request===self._currentRequest){// Report any write errors
|
|
865
|
+
/* istanbul ignore if */if(error){self.emit("error",error);}// Write the next buffer if there are still left
|
|
866
|
+
else if(i<buffers.length){var buffer=buffers[i++];/* istanbul ignore else */if(!request.finished){request.write(buffer.data,buffer.encoding,writeNext);}}// End the request if `end` has been called on us
|
|
867
|
+
else if(self._ended){request.end();}}})();}};// Processes a response from the current native request
|
|
868
|
+
RedirectableRequest.prototype._processResponse=function(response){// Store the redirected response
|
|
869
|
+
var statusCode=response.statusCode;if(this._options.trackRedirects){this._redirects.push({url:this._currentUrl,headers:response.headers,statusCode:statusCode});}// RFC7231§6.4: The 3xx (Redirection) class of status code indicates
|
|
870
|
+
// that further action needs to be taken by the user agent in order to
|
|
871
|
+
// fulfill the request. If a Location header field is provided,
|
|
872
|
+
// the user agent MAY automatically redirect its request to the URI
|
|
873
|
+
// referenced by the Location field value,
|
|
874
|
+
// even if the specific status code is not understood.
|
|
875
|
+
var location=response.headers.location;if(location&&this._options.followRedirects!==false&&statusCode>=300&&statusCode<400){// Abort the current request
|
|
876
|
+
abortRequest(this._currentRequest);// Discard the remainder of the response to avoid waiting for data
|
|
877
|
+
response.destroy();// RFC7231§6.4: A client SHOULD detect and intervene
|
|
878
|
+
// in cyclical redirections (i.e., "infinite" redirection loops).
|
|
879
|
+
if(++this._redirectCount>this._options.maxRedirects){this.emit("error",new TooManyRedirectsError());return;}// RFC7231§6.4: Automatic redirection needs to done with
|
|
880
|
+
// care for methods not known to be safe, […]
|
|
881
|
+
// RFC7231§6.4.2–3: For historical reasons, a user agent MAY change
|
|
882
|
+
// the request method from POST to GET for the subsequent request.
|
|
883
|
+
if((statusCode===301||statusCode===302)&&this._options.method==="POST"||// RFC7231§6.4.4: The 303 (See Other) status code indicates that
|
|
884
|
+
// the server is redirecting the user agent to a different resource […]
|
|
885
|
+
// A user agent can perform a retrieval request targeting that URI
|
|
886
|
+
// (a GET or HEAD request if using HTTP) […]
|
|
887
|
+
statusCode===303&&!/^(?:GET|HEAD)$/.test(this._options.method)){this._options.method="GET";// Drop a possible entity and headers related to it
|
|
888
|
+
this._requestBodyBuffers=[];removeMatchingHeaders(/^content-/i,this._options.headers);}// Drop the Host header, as the redirect might lead to a different host
|
|
889
|
+
var previousHostName=removeMatchingHeaders(/^host$/i,this._options.headers)||url$1.parse(this._currentUrl).hostname;// Create the redirected request
|
|
890
|
+
var redirectUrl=url$1.resolve(this._currentUrl,location);debug("redirecting to",redirectUrl);this._isRedirect=true;var redirectUrlParts=url$1.parse(redirectUrl);Object.assign(this._options,redirectUrlParts);// Drop the Authorization header if redirecting to another host
|
|
891
|
+
if(redirectUrlParts.hostname!==previousHostName){removeMatchingHeaders(/^authorization$/i,this._options.headers);}// Evaluate the beforeRedirect callback
|
|
892
|
+
if(typeof this._options.beforeRedirect==="function"){var responseDetails={headers:response.headers};try{this._options.beforeRedirect.call(null,this._options,responseDetails);}catch(err){this.emit("error",err);return;}this._sanitizeOptions(this._options);}// Perform the redirected request
|
|
893
|
+
try{this._performRequest();}catch(cause){var error=new RedirectionError("Redirected request failed: "+cause.message);error.cause=cause;this.emit("error",error);}}else{// The response is not a redirect; return it as-is
|
|
894
|
+
response.responseUrl=this._currentUrl;response.redirects=this._redirects;this.emit("response",response);// Clean up
|
|
895
|
+
this._requestBodyBuffers=[];}};// Wraps the key/value object of protocols with redirect functionality
|
|
896
|
+
function wrap(protocols){// Default settings
|
|
897
|
+
var exports={maxRedirects:21,maxBodyLength:10*1024*1024};// Wrap each protocol
|
|
898
|
+
var nativeProtocols={};Object.keys(protocols).forEach(function(scheme){var protocol=scheme+":";var nativeProtocol=nativeProtocols[protocol]=protocols[scheme];var wrappedProtocol=exports[scheme]=Object.create(nativeProtocol);// Executes a request, following redirects
|
|
899
|
+
function request(input,options,callback){// Parse parameters
|
|
900
|
+
if(typeof input==="string"){var urlStr=input;try{input=urlToOptions(new URL$1(urlStr));}catch(err){/* istanbul ignore next */input=url$1.parse(urlStr);}}else if(URL$1&&input instanceof URL$1){input=urlToOptions(input);}else{callback=options;options=input;input={protocol:protocol};}if(typeof options==="function"){callback=options;options=null;}// Set defaults
|
|
901
|
+
options=Object.assign({maxRedirects:exports.maxRedirects,maxBodyLength:exports.maxBodyLength},input,options);options.nativeProtocols=nativeProtocols;assert.equal(options.protocol,protocol,"protocol mismatch");debug("options",options);return new RedirectableRequest(options,callback);}// Executes a GET request, following redirects
|
|
902
|
+
function get(input,options,callback){var wrappedRequest=wrappedProtocol.request(input,options,callback);wrappedRequest.end();return wrappedRequest;}// Expose the properties on the wrapped protocol
|
|
903
|
+
Object.defineProperties(wrappedProtocol,{request:{value:request,configurable:true,enumerable:true,writable:true},get:{value:get,configurable:true,enumerable:true,writable:true}});});return exports;}/* istanbul ignore next */function noop(){/* empty */}// from https://github.com/nodejs/node/blob/master/lib/internal/url.js
|
|
904
|
+
function urlToOptions(urlObject){var options={protocol:urlObject.protocol,hostname:urlObject.hostname.startsWith("[")?/* istanbul ignore next */urlObject.hostname.slice(1,-1):urlObject.hostname,hash:urlObject.hash,search:urlObject.search,pathname:urlObject.pathname,path:urlObject.pathname+urlObject.search,href:urlObject.href};if(urlObject.port!==""){options.port=Number(urlObject.port);}return options;}function removeMatchingHeaders(regex,headers){var lastValue;for(var header in headers){if(regex.test(header)){lastValue=headers[header];delete headers[header];}}return lastValue;}function createErrorType(code,defaultMessage){function CustomError(message){Error.captureStackTrace(this,this.constructor);this.message=message||defaultMessage;}CustomError.prototype=new Error();CustomError.prototype.constructor=CustomError;CustomError.prototype.name="Error ["+code+"]";CustomError.prototype.code=code;return CustomError;}function abortRequest(request){for(var e=0;e<events.length;e++){request.removeListener(events[e],eventHandlers[events[e]]);}request.on("error",noop);request.abort();}// Exports
|
|
905
|
+
followRedirects.exports=wrap({http:http$1,https:https$1});followRedirects.exports.wrap=wrap;var _args=[["axios@0.21.1","/Users/wenquan"]];var _from="axios@0.21.1";var _id="axios@0.21.1";var _inBundle=false;var _integrity="sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=";var _location="/axios";var _phantomChildren={};var _requested={type:"version",registry:true,raw:"axios@0.21.1",name:"axios",escapedName:"axios",rawSpec:"0.21.1",saveSpec:null,fetchSpec:"0.21.1"};var _requiredBy=["/"];var _resolved="https://registry.npm.taobao.org/axios/download/axios-0.21.1.tgz?cache=0&sync_timestamp=1608609324963&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.21.1.tgz";var _spec="0.21.1";var _where="/Users/wenquan";var author={name:"Matt Zabriskie"};var browser={"./lib/adapters/http.js":"./lib/adapters/xhr.js"};var bugs={url:"https://github.com/axios/axios/issues"};var bundlesize=[{path:"./dist/axios.min.js",threshold:"5kB"}];var dependencies={"follow-redirects":"^1.10.0"};var description="Promise based HTTP client for the browser and node.js";var devDependencies={bundlesize:"^0.17.0",coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.0.2","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^20.1.0","grunt-karma":"^2.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^1.0.18","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^1.3.0","karma-chrome-launcher":"^2.2.0","karma-coverage":"^1.1.1","karma-firefox-launcher":"^1.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-opera-launcher":"^1.0.0","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^1.2.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.7.0","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^5.2.0",sinon:"^4.5.0",typescript:"^2.8.1","url-search-params":"^0.10.0",webpack:"^1.13.1","webpack-dev-server":"^1.14.1"};var homepage="https://github.com/axios/axios";var jsdelivr="dist/axios.min.js";var keywords=["xhr","http","ajax","promise","node"];var license="MIT";var main="index.js";var name="axios";var repository={type:"git",url:"git+https://github.com/axios/axios.git"};var scripts={build:"NODE_ENV=production grunt build",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",examples:"node ./examples/server.js",fix:"eslint --fix lib/**/*.js",postversion:"git push && git push --tags",preversion:"npm test",start:"node ./sandbox/server.js",test:"grunt test && bundlesize",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"};var typings="./index.d.ts";var unpkg="dist/axios.min.js";var version$1="0.21.1";var require$$9={_args:_args,_from:_from,_id:_id,_inBundle:_inBundle,_integrity:_integrity,_location:_location,_phantomChildren:_phantomChildren,_requested:_requested,_requiredBy:_requiredBy,_resolved:_resolved,_spec:_spec,_where:_where,author:author,browser:browser,bugs:bugs,bundlesize:bundlesize,dependencies:dependencies,description:description,devDependencies:devDependencies,homepage:homepage,jsdelivr:jsdelivr,keywords:keywords,license:license,main:main,name:name,repository:repository,scripts:scripts,typings:typings,unpkg:unpkg,version:version$1};var utils$8=utils$h;var settle=settle$2;var buildFullPath=buildFullPath$2;var buildURL$1=buildURL$3;var http=require$$1;var https=require$$2;var httpFollow=followRedirects.exports.http;var httpsFollow=followRedirects.exports.https;var url=require$$0$1;var zlib=require$$8;var pkg=require$$9;var createError=createError$3;var enhanceError=enhanceError$2;var isHttps=/https:?/;/**
|
|
906
|
+
*
|
|
907
|
+
* @param {http.ClientRequestArgs} options
|
|
908
|
+
* @param {AxiosProxyConfig} proxy
|
|
909
|
+
* @param {string} location
|
|
910
|
+
*/function setProxy(options,proxy,location){options.hostname=proxy.host;options.host=proxy.host;options.port=proxy.port;options.path=location;// Basic proxy authorization
|
|
911
|
+
if(proxy.auth){var base64=Buffer.from(proxy.auth.username+':'+proxy.auth.password,'utf8').toString('base64');options.headers['Proxy-Authorization']='Basic '+base64;}// If a proxy is used, any redirects must also pass through the proxy
|
|
912
|
+
options.beforeRedirect=function beforeRedirect(redirection){redirection.headers.host=redirection.host;setProxy(redirection,proxy,redirection.href);};}/*eslint consistent-return:0*/var http_1=function httpAdapter(config){return new Promise(function dispatchHttpRequest(resolvePromise,rejectPromise){var resolve=function resolve(value){resolvePromise(value);};var reject=function reject(value){rejectPromise(value);};var data=config.data;var headers=config.headers;// Set User-Agent (required by some servers)
|
|
913
|
+
// Only set header if it hasn't been set in config
|
|
914
|
+
// See https://github.com/axios/axios/issues/69
|
|
915
|
+
if(!headers['User-Agent']&&!headers['user-agent']){headers['User-Agent']='axios/'+pkg.version;}if(data&&!utils$8.isStream(data)){if(Buffer.isBuffer(data));else if(utils$8.isArrayBuffer(data)){data=Buffer.from(new Uint8Array(data));}else if(utils$8.isString(data)){data=Buffer.from(data,'utf-8');}else{return reject(createError('Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',config));}// Add Content-Length header if data exists
|
|
916
|
+
headers['Content-Length']=data.length;}// HTTP basic authentication
|
|
917
|
+
var auth=undefined;if(config.auth){var username=config.auth.username||'';var password=config.auth.password||'';auth=username+':'+password;}// Parse url
|
|
918
|
+
var fullPath=buildFullPath(config.baseURL,config.url);var parsed=url.parse(fullPath);var protocol=parsed.protocol||'http:';if(!auth&&parsed.auth){var urlAuth=parsed.auth.split(':');var urlUsername=urlAuth[0]||'';var urlPassword=urlAuth[1]||'';auth=urlUsername+':'+urlPassword;}if(auth){delete headers.Authorization;}var isHttpsRequest=isHttps.test(protocol);var agent=isHttpsRequest?config.httpsAgent:config.httpAgent;var options={path:buildURL$1(parsed.path,config.params,config.paramsSerializer).replace(/^\?/,''),method:config.method.toUpperCase(),headers:headers,agent:agent,agents:{http:config.httpAgent,https:config.httpsAgent},auth:auth};if(config.socketPath){options.socketPath=config.socketPath;}else{options.hostname=parsed.hostname;options.port=parsed.port;}var proxy=config.proxy;if(!proxy&&proxy!==false){var proxyEnv=protocol.slice(0,-1)+'_proxy';var proxyUrl=process.env[proxyEnv]||process.env[proxyEnv.toUpperCase()];if(proxyUrl){var parsedProxyUrl=url.parse(proxyUrl);var noProxyEnv=process.env.no_proxy||process.env.NO_PROXY;var shouldProxy=true;if(noProxyEnv){var noProxy=noProxyEnv.split(',').map(function trim(s){return s.trim();});shouldProxy=!noProxy.some(function proxyMatch(proxyElement){if(!proxyElement){return false;}if(proxyElement==='*'){return true;}if(proxyElement[0]==='.'&&parsed.hostname.substr(parsed.hostname.length-proxyElement.length)===proxyElement){return true;}return parsed.hostname===proxyElement;});}if(shouldProxy){proxy={host:parsedProxyUrl.hostname,port:parsedProxyUrl.port,protocol:parsedProxyUrl.protocol};if(parsedProxyUrl.auth){var proxyUrlAuth=parsedProxyUrl.auth.split(':');proxy.auth={username:proxyUrlAuth[0],password:proxyUrlAuth[1]};}}}}if(proxy){options.headers.host=parsed.hostname+(parsed.port?':'+parsed.port:'');setProxy(options,proxy,protocol+'//'+parsed.hostname+(parsed.port?':'+parsed.port:'')+options.path);}var transport;var isHttpsProxy=isHttpsRequest&&(proxy?isHttps.test(proxy.protocol):true);if(config.transport){transport=config.transport;}else if(config.maxRedirects===0){transport=isHttpsProxy?https:http;}else{if(config.maxRedirects){options.maxRedirects=config.maxRedirects;}transport=isHttpsProxy?httpsFollow:httpFollow;}if(config.maxBodyLength>-1){options.maxBodyLength=config.maxBodyLength;}// Create the request
|
|
919
|
+
var req=transport.request(options,function handleResponse(res){if(req.aborted)return;// uncompress the response body transparently if required
|
|
920
|
+
var stream=res;// return the last request in case of redirects
|
|
921
|
+
var lastRequest=res.req||req;// if no content, is HEAD request or decompress disabled we should not decompress
|
|
922
|
+
if(res.statusCode!==204&&lastRequest.method!=='HEAD'&&config.decompress!==false){switch(res.headers['content-encoding']){/*eslint default-case:0*/case'gzip':case'compress':case'deflate':// add the unzipper to the body stream processing pipeline
|
|
923
|
+
stream=stream.pipe(zlib.createUnzip());// remove the content-encoding in order to not confuse downstream operations
|
|
924
|
+
delete res.headers['content-encoding'];break;}}var response={status:res.statusCode,statusText:res.statusMessage,headers:res.headers,config:config,request:lastRequest};if(config.responseType==='stream'){response.data=stream;settle(resolve,reject,response);}else{var responseBuffer=[];stream.on('data',function handleStreamData(chunk){responseBuffer.push(chunk);// make sure the content length is not over the maxContentLength if specified
|
|
925
|
+
if(config.maxContentLength>-1&&Buffer.concat(responseBuffer).length>config.maxContentLength){stream.destroy();reject(createError('maxContentLength size of '+config.maxContentLength+' exceeded',config,null,lastRequest));}});stream.on('error',function handleStreamError(err){if(req.aborted)return;reject(enhanceError(err,config,null,lastRequest));});stream.on('end',function handleStreamEnd(){var responseData=Buffer.concat(responseBuffer);if(config.responseType!=='arraybuffer'){responseData=responseData.toString(config.responseEncoding);if(!config.responseEncoding||config.responseEncoding==='utf8'){responseData=utils$8.stripBOM(responseData);}}response.data=responseData;settle(resolve,reject,response);});}});// Handle errors
|
|
926
|
+
req.on('error',function handleRequestError(err){if(req.aborted&&err.code!=='ERR_FR_TOO_MANY_REDIRECTS')return;reject(enhanceError(err,config,null,req));});// Handle request timeout
|
|
927
|
+
if(config.timeout){// Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.
|
|
928
|
+
// And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET.
|
|
929
|
+
// At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.
|
|
930
|
+
// And then these socket which be hang up will devoring CPU little by little.
|
|
931
|
+
// ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.
|
|
932
|
+
req.setTimeout(config.timeout,function handleRequestTimeout(){req.abort();reject(createError('timeout of '+config.timeout+'ms exceeded',config,'ECONNABORTED',req));});}if(config.cancelToken){// Handle cancellation
|
|
933
|
+
config.cancelToken.promise.then(function onCanceled(cancel){if(req.aborted)return;req.abort();reject(cancel);});}// Send the request
|
|
934
|
+
if(utils$8.isStream(data)){data.on('error',function handleStreamError(err){reject(enhanceError(err,config,null,req));}).pipe(req);}else{req.end(data);}});};var utils$7=utils$h;var normalizeHeaderName=normalizeHeaderName$1;var DEFAULT_CONTENT_TYPE={'Content-Type':'application/x-www-form-urlencoded'};function setContentTypeIfUnset(headers,value){if(!utils$7.isUndefined(headers)&&utils$7.isUndefined(headers['Content-Type'])){headers['Content-Type']=value;}}function getDefaultAdapter(){var adapter;if(typeof XMLHttpRequest!=='undefined'){// For browsers use XHR adapter
|
|
935
|
+
adapter=xhr;}else if(typeof process!=='undefined'&&Object.prototype.toString.call(process)==='[object process]'){// For node use HTTP adapter
|
|
936
|
+
adapter=http_1;}return adapter;}var defaults$4={adapter:getDefaultAdapter(),transformRequest:[function transformRequest(data,headers){normalizeHeaderName(headers,'Accept');normalizeHeaderName(headers,'Content-Type');if(utils$7.isFormData(data)||utils$7.isArrayBuffer(data)||utils$7.isBuffer(data)||utils$7.isStream(data)||utils$7.isFile(data)||utils$7.isBlob(data)){return data;}if(utils$7.isArrayBufferView(data)){return data.buffer;}if(utils$7.isURLSearchParams(data)){setContentTypeIfUnset(headers,'application/x-www-form-urlencoded;charset=utf-8');return data.toString();}if(utils$7.isObject(data)){setContentTypeIfUnset(headers,'application/json;charset=utf-8');return JSON.stringify(data);}return data;}],transformResponse:[function transformResponse(data){/*eslint no-param-reassign:0*/if(typeof data==='string'){try{data=JSON.parse(data);}catch(e){/* Ignore */}}return data;}],/**
|
|
937
|
+
* A timeout in milliseconds to abort a request. If set to 0 (default) a
|
|
938
|
+
* timeout is not created.
|
|
939
|
+
*/timeout:0,xsrfCookieName:'XSRF-TOKEN',xsrfHeaderName:'X-XSRF-TOKEN',maxContentLength:-1,maxBodyLength:-1,validateStatus:function validateStatus(status){return status>=200&&status<300;}};defaults$4.headers={common:{'Accept':'application/json, text/plain, */*'}};utils$7.forEach(['delete','get','head'],function forEachMethodNoData(method){defaults$4.headers[method]={};});utils$7.forEach(['post','put','patch'],function forEachMethodWithData(method){defaults$4.headers[method]=utils$7.merge(DEFAULT_CONTENT_TYPE);});var defaults_1=defaults$4;var utils$6=utils$h;var transformData=transformData$1;var isCancel=isCancel$1;var defaults$3=defaults_1;/**
|
|
940
|
+
* Throws a `Cancel` if cancellation has been requested.
|
|
941
|
+
*/function throwIfCancellationRequested(config){if(config.cancelToken){config.cancelToken.throwIfRequested();}}/**
|
|
942
|
+
* Dispatch a request to the server using the configured adapter.
|
|
943
|
+
*
|
|
944
|
+
* @param {object} config The config that is to be used for the request
|
|
945
|
+
* @returns {Promise} The Promise to be fulfilled
|
|
946
|
+
*/var dispatchRequest$1=function dispatchRequest(config){throwIfCancellationRequested(config);// Ensure headers exist
|
|
947
|
+
config.headers=config.headers||{};// Transform request data
|
|
948
|
+
config.data=transformData(config.data,config.headers,config.transformRequest);// Flatten headers
|
|
949
|
+
config.headers=utils$6.merge(config.headers.common||{},config.headers[config.method]||{},config.headers);utils$6.forEach(['delete','get','head','post','put','patch','common'],function cleanHeaderConfig(method){delete config.headers[method];});var adapter=config.adapter||defaults$3.adapter;return adapter(config).then(function onAdapterResolution(response){throwIfCancellationRequested(config);// Transform response data
|
|
950
|
+
response.data=transformData(response.data,response.headers,config.transformResponse);return response;},function onAdapterRejection(reason){if(!isCancel(reason)){throwIfCancellationRequested(config);// Transform response data
|
|
951
|
+
if(reason&&reason.response){reason.response.data=transformData(reason.response.data,reason.response.headers,config.transformResponse);}}return Promise.reject(reason);});};var utils$5=utils$h;/**
|
|
952
|
+
* Config-specific merge-function which creates a new config-object
|
|
953
|
+
* by merging two configuration objects together.
|
|
954
|
+
*
|
|
955
|
+
* @param {Object} config1
|
|
956
|
+
* @param {Object} config2
|
|
957
|
+
* @returns {Object} New object resulting from merging config2 to config1
|
|
958
|
+
*/var mergeConfig$2=function mergeConfig(config1,config2){// eslint-disable-next-line no-param-reassign
|
|
959
|
+
config2=config2||{};var config={};var valueFromConfig2Keys=['url','method','data'];var mergeDeepPropertiesKeys=['headers','auth','proxy','params'];var defaultToConfig2Keys=['baseURL','transformRequest','transformResponse','paramsSerializer','timeout','timeoutMessage','withCredentials','adapter','responseType','xsrfCookieName','xsrfHeaderName','onUploadProgress','onDownloadProgress','decompress','maxContentLength','maxBodyLength','maxRedirects','transport','httpAgent','httpsAgent','cancelToken','socketPath','responseEncoding'];var directMergeKeys=['validateStatus'];function getMergedValue(target,source){if(utils$5.isPlainObject(target)&&utils$5.isPlainObject(source)){return utils$5.merge(target,source);}else if(utils$5.isPlainObject(source)){return utils$5.merge({},source);}else if(utils$5.isArray(source)){return source.slice();}return source;}function mergeDeepProperties(prop){if(!utils$5.isUndefined(config2[prop])){config[prop]=getMergedValue(config1[prop],config2[prop]);}else if(!utils$5.isUndefined(config1[prop])){config[prop]=getMergedValue(undefined,config1[prop]);}}utils$5.forEach(valueFromConfig2Keys,function valueFromConfig2(prop){if(!utils$5.isUndefined(config2[prop])){config[prop]=getMergedValue(undefined,config2[prop]);}});utils$5.forEach(mergeDeepPropertiesKeys,mergeDeepProperties);utils$5.forEach(defaultToConfig2Keys,function defaultToConfig2(prop){if(!utils$5.isUndefined(config2[prop])){config[prop]=getMergedValue(undefined,config2[prop]);}else if(!utils$5.isUndefined(config1[prop])){config[prop]=getMergedValue(undefined,config1[prop]);}});utils$5.forEach(directMergeKeys,function merge(prop){if(prop in config2){config[prop]=getMergedValue(config1[prop],config2[prop]);}else if(prop in config1){config[prop]=getMergedValue(undefined,config1[prop]);}});var axiosKeys=valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(defaultToConfig2Keys).concat(directMergeKeys);var otherKeys=Object.keys(config1).concat(Object.keys(config2)).filter(function filterAxiosKeys(key){return axiosKeys.indexOf(key)===-1;});utils$5.forEach(otherKeys,mergeDeepProperties);return config;};var utils$4=utils$h;var buildURL=buildURL$3;var InterceptorManager=InterceptorManager_1;var dispatchRequest=dispatchRequest$1;var mergeConfig$1=mergeConfig$2;/**
|
|
960
|
+
* Create a new instance of Axios
|
|
961
|
+
*
|
|
962
|
+
* @param {Object} instanceConfig The default config for the instance
|
|
963
|
+
*/function Axios$1(instanceConfig){this.defaults=instanceConfig;this.interceptors={request:new InterceptorManager(),response:new InterceptorManager()};}/**
|
|
964
|
+
* Dispatch a request
|
|
965
|
+
*
|
|
966
|
+
* @param {Object} config The config specific for this request (merged with this.defaults)
|
|
967
|
+
*/Axios$1.prototype.request=function request(config){/*eslint no-param-reassign:0*/ // Allow for axios('example/url'[, config]) a la fetch API
|
|
968
|
+
if(typeof config==='string'){config=arguments[1]||{};config.url=arguments[0];}else{config=config||{};}config=mergeConfig$1(this.defaults,config);// Set config.method
|
|
969
|
+
if(config.method){config.method=config.method.toLowerCase();}else if(this.defaults.method){config.method=this.defaults.method.toLowerCase();}else{config.method='get';}// Hook up interceptors middleware
|
|
970
|
+
var chain=[dispatchRequest,undefined];var promise=Promise.resolve(config);this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor){chain.unshift(interceptor.fulfilled,interceptor.rejected);});this.interceptors.response.forEach(function pushResponseInterceptors(interceptor){chain.push(interceptor.fulfilled,interceptor.rejected);});while(chain.length){promise=promise.then(chain.shift(),chain.shift());}return promise;};Axios$1.prototype.getUri=function getUri(config){config=mergeConfig$1(this.defaults,config);return buildURL(config.url,config.params,config.paramsSerializer).replace(/^\?/,'');};// Provide aliases for supported request methods
|
|
971
|
+
utils$4.forEach(['delete','get','head','options'],function forEachMethodNoData(method){/*eslint func-names:0*/Axios$1.prototype[method]=function(url,config){return this.request(mergeConfig$1(config||{},{method:method,url:url,data:(config||{}).data}));};});utils$4.forEach(['post','put','patch'],function forEachMethodWithData(method){/*eslint func-names:0*/Axios$1.prototype[method]=function(url,data,config){return this.request(mergeConfig$1(config||{},{method:method,url:url,data:data}));};});var Axios_1=Axios$1;/**
|
|
972
|
+
* A `Cancel` is an object that is thrown when an operation is canceled.
|
|
973
|
+
*
|
|
974
|
+
* @class
|
|
975
|
+
* @param {string=} message The message.
|
|
976
|
+
*/function Cancel$1(message){this.message=message;}Cancel$1.prototype.toString=function toString(){return'Cancel'+(this.message?': '+this.message:'');};Cancel$1.prototype.__CANCEL__=true;var Cancel_1=Cancel$1;var Cancel=Cancel_1;/**
|
|
977
|
+
* A `CancelToken` is an object that can be used to request cancellation of an operation.
|
|
978
|
+
*
|
|
979
|
+
* @class
|
|
980
|
+
* @param {Function} executor The executor function.
|
|
981
|
+
*/function CancelToken(executor){if(typeof executor!=='function'){throw new TypeError('executor must be a function.');}var resolvePromise;this.promise=new Promise(function promiseExecutor(resolve){resolvePromise=resolve;});var token=this;executor(function cancel(message){if(token.reason){// Cancellation has already been requested
|
|
982
|
+
return;}token.reason=new Cancel(message);resolvePromise(token.reason);});}/**
|
|
983
|
+
* Throws a `Cancel` if cancellation has been requested.
|
|
984
|
+
*/CancelToken.prototype.throwIfRequested=function throwIfRequested(){if(this.reason){throw this.reason;}};/**
|
|
985
|
+
* Returns an object that contains a new `CancelToken` and a function that, when called,
|
|
986
|
+
* cancels the `CancelToken`.
|
|
987
|
+
*/CancelToken.source=function source(){var cancel;var token=new CancelToken(function executor(c){cancel=c;});return{token:token,cancel:cancel};};var CancelToken_1=CancelToken;/**
|
|
988
|
+
* Syntactic sugar for invoking a function and expanding an array for arguments.
|
|
989
|
+
*
|
|
990
|
+
* Common use case would be to use `Function.prototype.apply`.
|
|
991
|
+
*
|
|
992
|
+
* ```js
|
|
993
|
+
* function f(x, y, z) {}
|
|
994
|
+
* var args = [1, 2, 3];
|
|
995
|
+
* f.apply(null, args);
|
|
996
|
+
* ```
|
|
997
|
+
*
|
|
998
|
+
* With `spread` this example can be re-written.
|
|
999
|
+
*
|
|
1000
|
+
* ```js
|
|
1001
|
+
* spread(function(x, y, z) {})([1, 2, 3]);
|
|
1002
|
+
* ```
|
|
1003
|
+
*
|
|
1004
|
+
* @param {Function} callback
|
|
1005
|
+
* @returns {Function}
|
|
1006
|
+
*/var spread=function spread(callback){return function wrap(arr){return callback.apply(null,arr);};};/**
|
|
1007
|
+
* Determines whether the payload is an error thrown by Axios
|
|
1008
|
+
*
|
|
1009
|
+
* @param {*} payload The value to test
|
|
1010
|
+
* @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
|
|
1011
|
+
*/var isAxiosError=function isAxiosError(payload){return typeof payload==='object'&&payload.isAxiosError===true;};var utils$3=utils$h;var bind=bind$2;var Axios=Axios_1;var mergeConfig=mergeConfig$2;var defaults$2=defaults_1;/**
|
|
1012
|
+
* Create an instance of Axios
|
|
1013
|
+
*
|
|
1014
|
+
* @param {Object} defaultConfig The default config for the instance
|
|
1015
|
+
* @return {Axios} A new instance of Axios
|
|
1016
|
+
*/function createInstance(defaultConfig){var context=new Axios(defaultConfig);var instance=bind(Axios.prototype.request,context);// Copy axios.prototype to instance
|
|
1017
|
+
utils$3.extend(instance,Axios.prototype,context);// Copy context to instance
|
|
1018
|
+
utils$3.extend(instance,context);return instance;}// Create the default instance to be exported
|
|
1019
|
+
var axios$2=createInstance(defaults$2);// Expose Axios class to allow class inheritance
|
|
1020
|
+
axios$2.Axios=Axios;// Factory for creating new instances
|
|
1021
|
+
axios$2.create=function create(instanceConfig){return createInstance(mergeConfig(axios$2.defaults,instanceConfig));};// Expose Cancel & CancelToken
|
|
1022
|
+
axios$2.Cancel=Cancel_1;axios$2.CancelToken=CancelToken_1;axios$2.isCancel=isCancel$1;// Expose all/spread
|
|
1023
|
+
axios$2.all=function all(promises){return Promise.all(promises);};axios$2.spread=spread;// Expose isAxiosError
|
|
1024
|
+
axios$2.isAxiosError=isAxiosError;axios$3.exports=axios$2;// Allow use of default import syntax in TypeScript
|
|
1025
|
+
axios$3.exports.default=axios$2;var axios$1=axios$3.exports;var img$9="data:image/png;base64,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";var img$8="data:image/png;base64,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";var img$7="data:image/png;base64,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";var img$6="data:image/png;base64,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";var img$5="data:image/png;base64,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";var img$4="data:image/png;base64,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U9dpJQnqt/dIETWpl0btmqbT4bX2vPTZWqB4z7y34ADd07cRDbyyEfXtlE0lTGBOnvUvGN81Za0QuC1MS7nd/jW/5oOXyB366tx9NPaO86nteemUVMNFZeUV10Y5ht+yYUYPYZnzw6GAEKLASxqP0L11Fn029iJRtlZ4lUyYR1qyWwgTD1u4tkArii38bC9Qj723TQjUs39oJYC3/tMPKvCf/3SYbrm0vvBbtO64Kow7eIdzLbP7rV4i7N8/H6HZ3+dT5xaZ1P83DamhJ1X480vSxxoCJQID/pZvLQzwqXS2blSLJg1sLTzaM03U5fwsOdDLLr1NBn0vu+1oSfhSPYdmpVsvfTt5hMY6crKU5q08SqfOldumX61w68X2Gsro3l7wawHxH0x0BGw7y4uuuUhlNgFLCBRbB3rJ7IYi//gQsIRAsUHxCE+LunwV0hufZjurFLfLPcMK4ydO1RKD8lDdm19QpD2XD5XIwWF4aauDOxdNq0rAEpe8qtWCj10JQKDs2nMWrbflBcrtdmMGaFHh0aqW5QflvNI+ny+F7RM6x46WPwG0IBvhxzpqRq4nbagReSEPEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABBxGwxdeoOG/2NaqpPq9vsI98GQ7ir6Mprg3JSXRHTmbqeh2REx7F8gLFP2126ERxccJJJboCLlrQoE7alYmuRrjyLS9QTJjKq/N38pQdmJzk6mB1TWX5DxpCmCpFqrSMZle6rGmzvEBZE1uiauVrl6iS9ZYLgdJLCvF0EYBA6cKESHoJQKD0kkI8XQQgULowIZJeAhAovaQQTxcBCJQuTIiklwAESi8pxNNFAAKlCxMi6SUAgdJLCvF0EUjSFcvikVbuPkclZT6L1zJ09do2TKM6tex/ftu/Bayf7C5MXNQ2HSwKLXE2CXWEQNmEdbWoJgSqWnRz/BoJgYof62pREgTKIt2ckmT5vY66SFm+FfkFRfaevunqBv2RGnjSLN1n0FD6+xIxdRCAQOmAhCj6CUCg9LNC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YnmBYkv5uM9X0YP1a6dY4n6drQUq15M2tLoLFdtJ4M2tk2qZ+3WhBAphIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIAACIGB3Ai67N8Aq9ff5fCmHTxS/SC7Xn5ndbZV6oR7xI+Byubzk871Wv07qSGYviV/Jzi0JCsqAvj1UUPSKj+hBA7JCFg4hwE6sGbmetKEOaU7CmoErfYzoD58smQrlFCNEBybnMsFlw4FNi2uTMIKKEfehguJTPvJlxJgNkjuQgItcp3M9qZkObFrcmoQRVIyooZxiBOjg5JCN2DsXCip2hsgBBEDAJAJQUCaBRbYgAAKxE4CCip0hcgABEDCJABSUSWCRLQiAQOwEoKBiZ4gcQAAETCIABWUSWGQLAiAQOwEoqNgZIgcQAAGTCEBBmQQW2YIACMROAAoqdobIAQRAwCQCSSbli2wjJLBy9zkqKWNPcMEknEBKkou6NquZ8HqgAkQYQVlECqCcLNIRrBroC+v0BRSUdfoCNQEBEAggAAUVAAROEAAB6xCAgrJOX6AmIAACAQSgoAKAJMrZtmEa8cVZmMQS4H3A+wLGGgRwRsTYD/kFRbj1FiNDJydv4EnDORZDB2MEFQM8JAUBEDCXABSUuXyROwiAQAwEoKBigIekIAAC5hKAgjKXL3IHARCIgQAUVAzwkBQEQMBcAlBQ5vJF7iAAAjEQgIKKAR6SggAImEsAbzMwl6/u3J30NgO8DUB3tyNiGAIYQYUBFK9gJz1B76S2xKv/UY42ASgobS7wBQEQsAABKCgLdAKqAAIgoE0ACkqbC3xBAAQsQAAKygKdwKvglLcZ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";var img$3="data:image/png;base64,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";var img$2="data:image/png;base64,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lirylyoaDLtdbPF7tZLXmjjWyRfTX1aa8ws5+VGZ0bd+ttb1yr5raPMXP2GL7/ztTSPbxDFfo5VzdlB14eVyEfYmJYA3R5wzHN7qYlIPtqjYeKvLiGFxBGVRB4daIGAFAghQVrAidAABixJAgLKoYaEWCFiBAAKUFawIHUDAogQQoCxqWKgFAlYggAB1zorseUU9VjAodDA/AfjiqA0RoBQWYvD7O5R2SIBArAnAF2XCuA5KJsH26+suWcIeL/k2u1cVXDy4IBkfAuyhoyI5hWUrZ+3Q9sCs+IiV0FnwQVTB/8rn87PP9rp/SiTwxwNMYHfXZ6k0QxEI6CLAT+VEonoWl17NzHD825VTt4d+1o2uGc3XGQFKp83azzQxH8MGAuoECnLL8BlTR6OpFGtQmjChEQiAQCIIIEAlgjrmBAEQ0EQAAUoTJjQCARBIBAEEqERQx5wgAAKaCCBAacKERiAAAokggACVCOqYEwRAQBMBBChNmNAIBEAgEQQQoHRTxz18uhFadgD4hl7TIkDpJMiuwsM9fDoZWrU7fEO/ZXGVq36G1NndsoTdDsPu4RPBMwo8zT4Eu4VFZH/L8rJLcE+dTmPiA6UToGd3UWzN7uwa+ikJ4pUsVk0gwj18nnysmxZ62P109ezezVfzcpL+TRCKcE+ddY0NzUAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABCIm8P8B73KF2/EETJgAAAAASUVORK5CYII=";var img$1="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASgAAAEoCAYAAAGcAFyPAAAABGdBTUEAALGPC/xhBQAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAABKKADAAQAAAABAAABKAAAAAB9ICHSAAAbUElEQVR4Ae3deYxUxb7A8RoYBhC4LANcBX2A7KIgLiAkCGgiWyKiiJiIcblE7mOG4BXC8Nfj/TUTo6gwPDDcMRo1IEIiMchiXFADjAuiPpAJgsMiehkGEUbgscy8qnM5TXfTPXNOn6XrVH876ZnTp6vqVH3q19WnzyoEDwQQQEBvgTyn1autrR3U0NDwv07Tp0rXuXNnR8trlipzqnleK5SqzHTzHFcqXQFBzM/PpNDdu3e7yjZo0CBX6bWUchR4qpnHjx9vcNXcFIl9D/QUywhslq8x5TZ20rWK7ksnkzzf0aevuLj4g+SMmbwuKipqmDt37sCm8jqKqW7duk1YuXJlU2U1+X737t1Vmj3y2WjYOJJqcmk+J3AklbzMqVOnCvkFLT755JPYWwMGDBB79+4VTz/9tNi2bZuI/ySuXbs2ls7JREZS+fn5VoXuuOOO2DI6duxoTVdUVIgff/xRqIr06dPH+h9L5HAi40qp8r/++uuUi5k8eXLK+U5nZtR9Fy9ejJVfUlJiTW/dutX6b79ev359LI3biUY/BXZhpaWlnr/37LLU/4ULFza63Iy6L34BQUw3WuP4Beb8WoLj7nO6LhSvyzQCCCCAAAIIIJADAqx5Ou1kx2ueTgv0I53r331uN8KqX9P9+/d3VdfApeJ/uDqtGYHuVMrXmIrf/OO0AqnS0X2pVFLNc/TpUxtQU2V2O89pOU12n9+bgVRDIrkpyFH3xXeT2uCqNsSqh/1fTY8aNUr9E/aWPPWeet52223WfDd/XA8JaoOr2sj6xBNPiGuvvTa2LLWNXFWorKzMmqfSdOnSRdTU1MTSOJ1wLaUK7tChg3j99devWoZdIVvrqgQOZ7iWUuWePHkyVrxdgerqajFy5Ehx9913x7RiiVxO8OlTYHl5ecuagmtSyi6ADbG2BP8RQAABBBBAAAEEEEAAgWgIOP7B56Y5fhy07mZ5SWnr5LEv7ZLmeX7pO5Qfv6A9t0oW4PeBQhltlvKjIVErAyiHPZbRNkWHZceSud0xGMvoYsKvnUHpFskYlU4maT4fvSSQdC+1/Ohlsk8+XQP9mq9lRGVynIBfIOnKYYxKJ5M0X8uISqpjRi/9OgnKXrgvERXE/ne7gn79b2p/flPLMTaimmq42/eBcigWCtSIESPE9OnTrSq1bNkydkCHfaRAfF3j08a/v2DBAjFr1qxYUvWeOu4irEco61GqMe3btxfDhw8XXbt2ddy2l19+OYa6c+dOsWXLFsd5/U4YGtQff/whKisrrfq///77jtohT7lNOBZFRZF94IyjAnxMxLeeQ8xQxiiHddE6mS8RFd9CtnDGa+TgdBAfvbocdKTJCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCAQp4PueYlVZedLQbnljiZuCrHi6suWlMV4uLCx8Nt37mc73HUqHXeoSq15iNc8UJVW+IPYUp1pOqPNkNPveLt8LDFUkxIUB5RAbKKAcCjhMFvgxnHV1deLgwYMOq5NZsqDP1VO1CvyjFzRSZrTucwUO5b5KeuYwcoVTUXOWepYCjo+eQ3igHEJpuXoQxte9Q59YssAjitWDmHVuTLB64LCfA//oOayH9smActhFvkLJy84PcLjcyCXzbfXA6bX5wxKy61NeXu7LOOy5kFy45oHqXF8/emFFSzaWA5RDdaCAcijgMJlv33qNLS/+9ii7du0SP/30k5VczU++N3X8PHU3k2eeeUaoayYsX748lid5WcllJL/vx+tQPnr2vbFVg9T9YuxLiaj5yQ973pgxY8STTz5pXRBC3U7dzqPKUM/4MpPLCOJ1KFDxFV+zZk38y7TT119/fex+N+oKZdm6goZdwVA+emph6ros8uAJoSLFyeOtt94S8mJZsUjKGaiqqirLZ8eOHU6crDRLly6Npc3mdVlUJUL76KkbJ8XfPCkmkGZCwQwePDjh3YKCgoTXYb4I7aOXrlH2IK3ej/94qWn13sSJE62sFy5cEOfPn09XTODz+a3nkDi0j57D+mibzA+onLgWi2coedlG369Gr2NYeR6jkhulw8Guqk4ce5DcMyG99vzRC6meWV8MUA67AKgch2ryDqgOfUiGAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALGCPh+bmwQMvJ8249kufcEUXaUypQ3t2kpr9OSvas9OMDSPqCy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";var img="data:image/png;base64,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";var zh={"0":"请输入内容","1":"取消全部筛选","2":"序号","3":"操作","4":"可添加列表项","5":"列表配置","6":"已选列表项","7":"排序","8":"固定在左边","9":"取消","10":"确定","11":"重置","12":"请选择","13":"开始日期","14":"结束日期","15":"至","16":'列表项名',"17":'最近一周',"18":'最近一个月',"19":'最近三个月',"20":'点击上传',"21":'请选择要上传的附件,最多',"22":'个',"23":'单个附件最大'};var en={"0":"Please enter the content.","1":"Cancl all check","2":"Serial No.","3":"Operate","4":"Can add list items","5":"List Configuration","6":"Selected list items","7":"sort","8":"Fixed on the left side","9":"Cancel","10":"Confirm","11":"Reset","12":"Please select","13":"Start Date","14":"End Date","15":"to","16":'List Item Name',"17":'Last week',"18":'Last month',"19":'Last three months',"20":'Click to upload',"21":'Please select the attachment to upload, up to a maximum of',"22":'individual',"23":'Maximum for a single attachment'};var cht={"0":"請輸入內容","1":"取消全部篩選","2":"序號","3":"操作","4":"可添加列表項","5":"清單配寘","6":"已選列表項","7":"排序","8":"固定在左邊","9":"取消","10":"確定","11":"重置","12":"請選擇","13":"開始日期","14":"結束日期","15":"至","16":'清單項名',"17":'最近一周',"18":'最近一個月',"19":'最近三個月',"20":'點擊上傳',"21":'請選擇要上傳的附件,最多',"22":'個',"23":'單個附件最大'};var idMap={'请输入内容':0,'取消全部筛选':1,'序号':2,'操作':3,'可添加列表项':4,'列表配置':5,'已选列表项':6,'排序':7,'固定在左边':8,'取消':9,'确定':10,'重置':11,'请选择':12,'开始日期':13,'结束日期':14,'至':15,'列表项名':16,'最近一周':17,'最近一个月':18,'最近三个月':19,'点击上传':20,'请选择要上传的附件,最多':21,'个':22,'单个附件最大':23};var trans=str=>{let lan=localStorage.getItem('language')||'zh';let id=idMap[str];let obj={};switch(lan){case'zh':obj=zh;break;case'en':obj=en;break;case'cht':obj=cht;break;}let txt=obj[id]||str;return txt;};const getFileUrl=async file=>{try{const url=process.env.VUE_APP_BASE_API+"/huilianApi/waterNarkcs/addDocumentWaterMark";let headers={"Content-Type":"application/x-www-form-urlencoded"// 通常不需要手动设置,但为了完整性还是加上
|
|
535
1026
|
};if(window.HLEncryption){headers=window.HLEncryption.setRequestHeaders({url:url,headers:headers});}const formData=new FormData();formData.append("url",file);const res=await axios.post(url,formData,{headers});// 解密
|
|
536
1027
|
if(window.HLEncryption){res.data.data=window.HLEncryption.decryptResponse(res.headers,res.data);}// console.log(res);
|
|
537
1028
|
return{data:res.data.data,result:"success"};}catch(error){console.error("出错了:",error);return{result:"error"};}};//
|
|
@@ -598,7 +1089,7 @@ handleSuccess(response,file,fileList){var num=0;for(var i=0;i<fileList.length;i+
|
|
|
598
1089
|
handleError(err,file,fileList){console.log(err);// this.loading.close()
|
|
599
1090
|
},dragEnd(){// this.drag = false;
|
|
600
1091
|
this.$emit("update:fileUrl",this.formFileList);},showImgViewer(){this.imgViewerVisible=true;const m=e=>{e.preventDefault();};document.body.style.overflow="hidden";document.addEventListener("touchmove",m,false);// 禁止页面滑动
|
|
601
|
-
},closeImgViewer(){this.imgViewerVisible=false;const m=e=>{e.preventDefault();};document.body.style.overflow="auto";document.removeEventListener("touchmove",m,true);}}};/* script */const __vue_script__$h=script$h;/* template */var __vue_render__$h=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,"http-request":_vm.customHttpRequest},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__$h=[];__vue_render__$h._withStripped=true;/* style */const __vue_inject_styles__$h=function(inject){if(!inject)return;inject("data-v-48b1a4cb_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":"AA0qBA;EACA,kBAAA;ACzqBA;AD4qBA;EACA,YAAA;EACA,aAAA;EACA,gBAAA;AC1qBA;AD8qBA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;EACA,UAAA;AC5qBA;AD+qBA;EACA,WAAA;EACA,YAAA;AC7qBA;AD+qBA;EACA,WAAA;EACA,YAAA;EACA,wBAAA;AC7qBA;ADkrBA;EACA,aAAA;AChrBA;;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 :http-request=\"customHttpRequest\"\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\";\nimport { getFileUrl } from \"../public\";\n\nexport default {\n components: {\n draggable,\n },\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 handleRemoveCallback: {\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 \".pdf\",\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 };\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 mounted() {\n // if (window.HLEncryption) {\n // this.headers = window.HLEncryption.setRequestHeaders({\n // url: this.apiUrl,\n // headers: {},\n // });\n // }\n },\n methods: {\n customHttpRequest({ file, onSuccess, onError }) {\n // 动态生成headers\n let headers = {\n \"Content-Type\": \"multipart/form-data\", // 通常不需要手动设置,但为了完整性还是加上\n };\n\n if (window.HLEncryption) {\n headers = window.HLEncryption.setRequestHeaders({\n url: this.apiUrl,\n headers: headers,\n });\n }\n\n const formData = new FormData();\n formData.append(\"file\", file); // 添加文件到FormData中\n // 使用axios或fetch发送请求,这里使用axios为例\n for (let key in this.formData) {\n formData.append(key, this.formData[key]);\n }\n axios\n .post(this.apiUrl, formData, { headers })\n .then((response) => {\n onSuccess(response.data, response); // 调用onSuccess回调\n })\n .catch((error) => {\n onError(error); // 调用onError回调\n });\n },\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 const allowTypes = this.fileType.map((type) => type.toLowerCase());\n const ext = \".\" + nameList[nameList.length - 1].toLowerCase();\n if (!allowTypes.includes(ext)) {\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 this.handleRemoveCallback(file, formFileList)\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\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"hidden\";\n document.addEventListener(\"touchmove\", m, false); // 禁止页面滑动\n\n this.$nextTick(() => {\n document\n .querySelector(\".el-image-viewer__close\")\n .addEventListener(\"click\", () => {\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"auto\";\n document.removeEventListener(\"touchmove\", m, true);\n });\n });\n }\n // else if (type === \"PDF\") {\n // window.open(\n // \"https://www.hellogil.com/web/contractPreview.html?url=\" +\n // url.replace(\"http://\", \"https://\")\n // );\n // }\n else if (\n type === \"WORD\" ||\n type === \"EXCEL\" ||\n type === \"CSV\" ||\n type === \"PPT\" ||\n type === \"PDF\"\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 const urlWithoutParams = url.split(\"?\")[0].toLowerCase();\n if (\n !urlWithoutParams.endsWith(\".doc\") &&\n !urlWithoutParams.endsWith(\".xlx\")\n ) {\n // URL后缀不包含.doc和.xlx时执行的代码\n // window.open(\n // `https://www.hellogil.com/web/#/officePreview?url=` +\n // encodeURIComponent(url.replace(\"http://\", \"https://\"))\n // );\n getFileUrl(url.replace(\"http://\", \"https://\")).then((res) => {\n if (res.result === \"success\") {\n window.open(res.data);\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n });\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\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 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 this.$message({\n message: \"上传成功\",\n type: \"success\",\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 showImgViewer() {\n this.imgViewerVisible = true;\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"hidden\";\n document.addEventListener(\"touchmove\", m, false); // 禁止页面滑动\n },\n closeImgViewer() {\n this.imgViewerVisible = false;\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"auto\";\n document.removeEventListener(\"touchmove\", m, true);\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__$h=undefined;/* module identifier */const __vue_module_identifier__$h=undefined;/* functional template */const __vue_is_functional_template__$h=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$h=/*#__PURE__*/normalizeComponent({render:__vue_render__$h,staticRenderFns:__vue_staticRenderFns__$h},__vue_inject_styles__$h,__vue_script__$h,__vue_scope_id__$h,__vue_is_functional_template__$h,__vue_module_identifier__$h,false,createInjector,undefined,undefined);__vue_component__$h.install=function(Vue){Vue.component(__vue_component__$h.name,__vue_component__$h);};//
|
|
1092
|
+
},closeImgViewer(){this.imgViewerVisible=false;const m=e=>{e.preventDefault();};document.body.style.overflow="auto";document.removeEventListener("touchmove",m,true);}}};/* script */const __vue_script__$h=script$h;/* template */var __vue_render__$h=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,"http-request":_vm.customHttpRequest},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__$h=[];__vue_render__$h._withStripped=true;/* style */const __vue_inject_styles__$h=function(inject){if(!inject)return;inject("data-v-2f15da4e_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/wenquan/Desktop/hl/npm/components/UploadFile/index.vue","index.vue"],"names":[],"mappings":"AA0qBA;EACA,kBAAA;ACzqBA;AD4qBA;EACA,YAAA;EACA,aAAA;EACA,gBAAA;AC1qBA;AD8qBA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,kBAAA;EACA,UAAA;AC5qBA;AD+qBA;EACA,WAAA;EACA,YAAA;AC7qBA;AD+qBA;EACA,WAAA;EACA,YAAA;EACA,wBAAA;AC7qBA;ADkrBA;EACA,aAAA;AChrBA;;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 :http-request=\"customHttpRequest\"\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\";\nimport { getFileUrl } from \"../public\";\n\nexport default {\n components: {\n draggable,\n },\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 handleRemoveCallback: {\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 \".pdf\",\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 };\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 mounted() {\n // if (window.HLEncryption) {\n // this.headers = window.HLEncryption.setRequestHeaders({\n // url: this.apiUrl,\n // headers: {},\n // });\n // }\n },\n methods: {\n customHttpRequest({ file, onSuccess, onError }) {\n // 动态生成headers\n let headers = {\n \"Content-Type\": \"multipart/form-data\", // 通常不需要手动设置,但为了完整性还是加上\n };\n\n if (window.HLEncryption) {\n headers = window.HLEncryption.setRequestHeaders({\n url: this.apiUrl,\n headers: headers,\n });\n }\n\n const formData = new FormData();\n formData.append(\"file\", file); // 添加文件到FormData中\n // 使用axios或fetch发送请求,这里使用axios为例\n for (let key in this.formData) {\n formData.append(key, this.formData[key]);\n }\n axios\n .post(this.apiUrl, formData, { headers })\n .then((response) => {\n onSuccess(response.data, response); // 调用onSuccess回调\n })\n .catch((error) => {\n onError(error); // 调用onError回调\n });\n },\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 const allowTypes = this.fileType.map((type) => type.toLowerCase());\n const ext = \".\" + nameList[nameList.length - 1].toLowerCase();\n if (!allowTypes.includes(ext)) {\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 this.handleRemoveCallback(file, formFileList)\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\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"hidden\";\n document.addEventListener(\"touchmove\", m, false); // 禁止页面滑动\n\n this.$nextTick(() => {\n document\n .querySelector(\".el-image-viewer__close\")\n .addEventListener(\"click\", () => {\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"auto\";\n document.removeEventListener(\"touchmove\", m, true);\n });\n });\n }\n // else if (type === \"PDF\") {\n // window.open(\n // \"https://www.hellogil.com/web/contractPreview.html?url=\" +\n // url.replace(\"http://\", \"https://\")\n // );\n // }\n else if (\n type === \"WORD\" ||\n type === \"EXCEL\" ||\n type === \"CSV\" ||\n type === \"PPT\" ||\n type === \"PDF\"\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 const urlWithoutParams = url.split(\"?\")[0].toLowerCase();\n if (\n !urlWithoutParams.endsWith(\".doc\") &&\n !urlWithoutParams.endsWith(\".xlx\")\n ) {\n // URL后缀不包含.doc和.xlx时执行的代码\n // window.open(\n // `https://www.hellogil.com/web/#/officePreview?url=` +\n // encodeURIComponent(url.replace(\"http://\", \"https://\"))\n // );\n getFileUrl(url.replace(\"http://\", \"https://\")).then((res) => {\n if (res.result === \"success\") {\n window.open(res.data);\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n });\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\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 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 this.$message({\n message: \"上传成功\",\n type: \"success\",\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 showImgViewer() {\n this.imgViewerVisible = true;\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"hidden\";\n document.addEventListener(\"touchmove\", m, false); // 禁止页面滑动\n },\n closeImgViewer() {\n this.imgViewerVisible = false;\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"auto\";\n document.removeEventListener(\"touchmove\", m, true);\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__$h=undefined;/* module identifier */const __vue_module_identifier__$h=undefined;/* functional template */const __vue_is_functional_template__$h=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$h=/*#__PURE__*/normalizeComponent({render:__vue_render__$h,staticRenderFns:__vue_staticRenderFns__$h},__vue_inject_styles__$h,__vue_script__$h,__vue_scope_id__$h,__vue_is_functional_template__$h,__vue_module_identifier__$h,false,createInjector,undefined,undefined);__vue_component__$h.install=function(Vue){Vue.component(__vue_component__$h.name,__vue_component__$h);};//
|
|
602
1093
|
var script$g={props:{fileUrl:{// 文件数组
|
|
603
1094
|
default:()=>{return[];},type:Array},isShowDownload:{// 是否显示
|
|
604
1095
|
default:true,type:Boolean},showTitle:{// 是否显示图片名
|
|
@@ -627,7 +1118,7 @@ const urlWithoutParams=url.split("?")[0].toLowerCase();if(!urlWithoutParams.ends
|
|
|
627
1118
|
// encodeURIComponent(url.replace("http://", "https://"))
|
|
628
1119
|
// );
|
|
629
1120
|
getFileUrl(url.replace("http://","https://")).then(res=>{if(res.result==="success"){window.open(res.data);}else{this.$message({message:"该文件不支持预览!",type:"warning"});}});}else{this.$message({message:"该文件不支持预览!",type:"warning"});}}else{this.$message({message:"该文件不支持预览!",type:"warning"});}},handlePictureCardPreviewCallback(item){this.handlePictureCardPreview(item);},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$1({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"// 加上这个是重点
|
|
630
|
-
}).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"});}}};/* script */const __vue_script__$g=script$g;/* template */var __vue_render__$g=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"show_file_box"},[_c("div",{staticStyle:{height:"0",width:"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(" "),_vm.type==="block"?_c("div",{},_vm._l(_vm.fileUrl,function(item,index){return _c("div",{key:index,staticClass:"show_file_operation"},[_c("div",{staticClass:"show_file_bg",style:"background: url("+_vm.bgImg(item)+") no-repeat 50% 50%; background-size: contain;"}),_vm._v(" "),_c("span",{staticClass:"el-show-list__item-actions"},[_c("span",{staticClass:"el-show-list__item-preview",on:{click:function($event){return _vm.handlePictureCardPreview(item);}}},[_c("i",{staticClass:"el-icon-zoom-in"})]),_vm._v(" "),_c("span",{directives:[{name:"show",rawName:"v-show",value:_vm.isShowDownload,expression:"isShowDownload"}],staticClass:"el-show-list__item-delete",on:{click:function($event){return _vm.handleDownload(item);}}},[_c("i",{staticClass:"el-icon-download"})])]),_vm._v(" "),_vm.showTitle?_c("p",{staticClass:"show_file_title"},[_vm._v(_vm._s(item.name))]):_vm._e()]);}),0):_vm._e(),_vm._v(" "),_vm.type==="text"?_c("div",_vm._l(_vm.fileUrl,function(item,index){return _c("a",{key:index,on:{click:function($event){return _vm.handlePictureCardPreview(item);}}},[_vm._v(_vm._s(item.name))]);}),0):_vm._e(),_vm._v(" "),_vm.type==="custom"?_c("div",[_vm._t("content",null,{props:_vm.fileUrl,callback:_vm.handlePictureCardPreviewCallback})],2):_vm._e(),_vm._v(" "),_vm.type==="list"?_c("div",[_c("ul",_vm._l(_vm.fileUrl,function(item,index){return _c("li",{key:index,staticClass:"clearfix",class:index+1<_vm.fileUrl.length?"mb-15":""},[_vm._m(0,true),_vm._v(" "),_c("div",{staticClass:"clearfix fl ml-10 textCss",staticStyle:{width:"calc(100% - 30px)"}},[_c("div",{staticClass:"fl imgName"},[_vm._v("\n "+_vm._s(item.name)+"\n ")]),_vm._v(" "),_c("el-button",{directives:[{name:"show",rawName:"v-show",value:_vm.isShowDownload,expression:"isShowDownload"}],staticClass:"fr",attrs:{icon:"el-icon-download",type:"text"},on:{click:function($event){return _vm.handleDownload(item);}}},[_vm._v("下载")]),_vm._v(" "),_c("el-button",{staticClass:"fr mr-15",attrs:{icon:"el-icon-zoom-in",type:"text"},on:{click:function($event){return _vm.handlePictureCardPreview(item);}}},[_vm._v("预览")])],1)]);}),0)]):_vm._e()]);};var __vue_staticRenderFns__$g=[function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("span",{staticClass:"fl"},[_c("i",{staticClass:"el-icon-folder-opened"})]);}];__vue_render__$g._withStripped=true;/* style */const __vue_inject_styles__$g=function(inject){if(!inject)return;inject("data-v-72ef282a_0",{source:".show_file_box a {\n color: #10c2b0;\n}\n.show_file_box::after {\n content: \"\";\n display: block;\n clear: both;\n}\n.show_file_box .show_file_operation {\n border-radius: 4px;\n position: relative;\n line-height: 104px;\n float: left;\n margin-right: 10px;\n margin-bottom: 10px;\n}\n.show_file_box .show_file_operation .show_file_bg {\n width: 104px;\n height: 104px;\n border: 1px solid #c0ccda;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions {\n position: absolute;\n width: 104px;\n height: 104px;\n left: 0;\n top: 0;\n cursor: default;\n text-align: center;\n color: #fff;\n opacity: 0;\n font-size: 20px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions span {\n cursor: pointer;\n font-size: inherit;\n color: inherit;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions .el-show-list__item-delete {\n position: static;\n top: 0;\n margin-left: 20px;\n}\n.show_file_box .show_file_operation:hover .el-show-list__item-actions {\n opacity: 1;\n}\n.show_file_box .show_file_operation .show_file_title {\n font-size: 12px;\n color: #999;\n line-height: 12px;\n text-align: center;\n}\n.show_file_box ul,\n.show_file_box li {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n max-width: 500px;\n min-width: 250px;\n}\n.show_file_box li {\n width: 100%;\n color: #409eff;\n font-size: 13px;\n line-height: 22px;\n}\n.show_file_box li .imgName {\n width: calc(100% - 140px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.show_file_box li .el-button {\n color: #409eff;\n padding: 0;\n font-size: 13px;\n line-height: 20px;\n}\n.show_file_box li .el-button i {\n font-weight: bold;\n}\n\n/*# sourceMappingURL=index.vue.map */",map:{"version":3,"sources":["/Users/chenlei/HLcode/test/components/ShowFile/index.vue","index.vue"],"names":[],"mappings":"AAoXA;EACA,cAAA;ACnXA;ADqXA;EACA,WAAA;EACA,cAAA;EACA,WAAA;ACnXA;ADqXA;EAGA,kBAAA;EACA,kBAAA;EACA,kBAAA;EACA,WAAA;EACA,kBAAA;EACA,mBAAA;ACrXA;ADsXA;EACA,YAAA;EACA,aAAA;EACA,yBAAA;ACpXA;ADsXA;EACA,kBAAA;EACA,YAAA;EACA,aAAA;EACA,OAAA;EACA,MAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;EACA,UAAA;EACA,eAAA;EACA,oCAAA;EACA,wBAAA;ACpXA;ADqXA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;ACnXA;ADqXA;EACA,gBAAA;EACA,MAAA;EACA,iBAAA;ACnXA;ADuXA;EACA,UAAA;ACrXA;ADwXA;EACA,eAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;ACtXA;AD0XA;;EAEA,gBAAA;EACA,SAAA;EACA,UAAA;EAEA,WAAA;EACA,gBAAA;EACA,gBAAA;ACzXA;AD2XA;EACA,WAAA;EACA,cAAA;EACA,eAAA;EACA,iBAAA;ACzXA;AD0XA;EAEA,yBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ACzXA;AD2XA;EACA,cAAA;EACA,UAAA;EACA,eAAA;EACA,iBAAA;ACzXA;AD0XA;EACA,iBAAA;ACxXA;;AAEA,oCAAoC","file":"index.vue","sourcesContent":["<template>\n <div class=\"show_file_box\">\n <div style=\"height: 0; width: 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 <div class=\"\" v-if=\"type === 'block'\">\n <div\n class=\"show_file_operation\"\n v-for=\"(item, index) in fileUrl\"\n :key=\"index\"\n >\n <div\n class=\"show_file_bg\"\n :style=\"`background: url(${bgImg(\n item\n )}) no-repeat 50% 50%; background-size: contain;`\"\n />\n <span class=\"el-show-list__item-actions\">\n <span\n class=\"el-show-list__item-preview\"\n @click=\"handlePictureCardPreview(item)\"\n >\n <i class=\"el-icon-zoom-in\" />\n </span>\n <span\n class=\"el-show-list__item-delete\"\n v-show=\"isShowDownload\"\n @click=\"handleDownload(item)\"\n >\n <i class=\"el-icon-download\" />\n </span>\n </span>\n <p v-if=\"showTitle\" class=\"show_file_title\">{{ item.name }}</p>\n </div>\n </div>\n <div v-if=\"type === 'text'\">\n <a\n v-for=\"(item, index) in fileUrl\"\n :key=\"index\"\n @click=\"handlePictureCardPreview(item)\"\n >{{ item.name }}</a\n >\n </div>\n <div v-if=\"type === 'custom'\">\n <slot\n name=\"content\"\n :props=\"fileUrl\"\n :callback=\"handlePictureCardPreviewCallback\"\n >\n </slot>\n </div>\n <div v-if=\"type === 'list'\">\n <ul>\n <li\n class=\"clearfix\"\n :class=\"index + 1 < fileUrl.length ? 'mb-15' : ''\"\n v-for=\"(item, index) in fileUrl\"\n :key=\"index\"\n >\n <span class=\"fl\">\n <i class=\"el-icon-folder-opened\"></i>\n </span>\n <div\n class=\"clearfix fl ml-10 textCss\"\n style=\"width: calc(100% - 30px)\"\n >\n <div class=\"fl imgName\">\n {{ item.name }}\n </div>\n <!-- <i class=\"el-icon-download\" class=\"fr ml-10\" @click=\"handleDownload(item)\">下载</i>\n <i class=\"el-icon-zoom-in\" class=\"fr\">预览</i> -->\n <el-button\n icon=\"el-icon-download\"\n type=\"text\"\n class=\"fr\"\n v-show=\"isShowDownload\"\n @click=\"handleDownload(item)\"\n >下载</el-button\n >\n <el-button\n icon=\"el-icon-zoom-in\"\n type=\"text\"\n class=\"fr mr-15\"\n @click=\"handlePictureCardPreview(item)\"\n >预览</el-button\n >\n </div>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport axios from \"axios\";\nimport CSV from \"../UploadFile/fileImages/CSV.png\";\nimport EXCEL from \"../UploadFile/fileImages/EXCEL.png\";\nimport PDF from \"../UploadFile/fileImages/PDF.png\";\nimport PPT from \"../UploadFile/fileImages/PPT.png\";\nimport RAR from \"../UploadFile/fileImages/RAR.png\";\nimport WORD from \"../UploadFile/fileImages/WORD.png\";\nimport ZIP from \"../UploadFile/fileImages/ZIP.png\";\nimport PLIST from \"../UploadFile/fileImages/PLIST.png\";\nimport { getFileUrl } from \"../public\";\n\nexport default {\n props: {\n fileUrl: {\n // 文件数组\n default: () => {\n return [];\n },\n type: Array,\n },\n isShowDownload: {\n // 是否显示\n default: true,\n type: Boolean,\n },\n showTitle: {\n // 是否显示图片名\n default: false,\n type: Boolean,\n },\n // isText: { // 是否以文字形式展示\n // default: false,\n // type: Boolean\n // },\n type: {\n // 展示类型{block: 块,text: 文字,list: 列,custom:自定义}\n default: \"block\",\n type: String,\n },\n },\n data() {\n return {\n formFileList: [], // 显示上传文件\n dialogImageUrl: \"\",\n };\n },\n computed: {\n ...mapGetters([\"userInfo\"]),\n },\n watch: {\n fileUrl: {\n deep: true,\n immediate: true,\n handler() {\n this.formFileList = this.fileUrl;\n },\n },\n },\n methods: {\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 PLIST: PLIST,\n };\n\n if (file.raw) {\n type = this.fileFormat(file.name);\n } else {\n type = this.fileFormat(file.url);\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 plist = \"plist|PLIST\";\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_plist = new RegExp(\".(\" + plist + \")$\");\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_plist.test(name)) {\n return \"PLIST\";\n }\n },\n\n handlePictureCardPreview(file) {\n let type, url;\n if (file.raw) {\n type = this.fileFormat(file.name);\n url = file.response.data[0].attachmenturl;\n } else {\n type = this.fileFormat(file.url);\n url = file.url;\n }\n\n if (type === \"IMG\") {\n this.dialogImageUrl = file.url;\n this.$refs.previewImg.showViewer = true;\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"hidden\";\n document.addEventListener(\"touchmove\", m, false); // 禁止页面滑动\n\n this.$nextTick(() => {\n document\n .querySelector(\".el-image-viewer__close\")\n .addEventListener(\"click\", () => {\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"auto\";\n document.removeEventListener(\"touchmove\", m, true);\n });\n });\n }\n // else if (type === \"PDF\") {\n // window.open(\n // \"https://www.hellogil.com/web/contractPreview.html?url=\" +\n // url.replace(\"http://\", \"https://\")\n // );\n // }\n else if (\n type === \"WORD\" ||\n type === \"EXCEL\" ||\n type === \"CSV\" ||\n type === \"PPT\" ||\n type === \"PDF\"\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 const urlWithoutParams = url.split(\"?\")[0].toLowerCase();\n if (\n !urlWithoutParams.endsWith(\".doc\") &&\n !urlWithoutParams.endsWith(\".xlx\")\n ) {\n // URL后缀不包含.doc和.xlx时执行的代码\n // window.open(\n // `https://www.hellogil.com/web/#/officePreview?url=` +\n // encodeURIComponent(url.replace(\"http://\", \"https://\"))\n // );\n getFileUrl(url.replace(\"http://\", \"https://\")).then((res) => {\n if (res.result === \"success\") {\n window.open(res.data);\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n });\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n },\n handlePictureCardPreviewCallback(item) {\n this.handlePictureCardPreview(item);\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};\n</script>\n\n<style lang=\"scss\">\n.show_file_box {\n a {\n color: #10c2b0;\n }\n &::after {\n content: \"\";\n display: block;\n clear: both;\n }\n .show_file_operation {\n // width: 104px;\n // height: 104px;\n border-radius: 4px;\n position: relative;\n line-height: 104px;\n float: left;\n margin-right: 10px;\n margin-bottom: 10px;\n .show_file_bg {\n width: 104px;\n height: 104px;\n border: 1px solid #c0ccda;\n }\n .el-show-list__item-actions {\n position: absolute;\n width: 104px;\n height: 104px;\n left: 0;\n top: 0;\n cursor: default;\n text-align: center;\n color: #fff;\n opacity: 0;\n font-size: 20px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s;\n span {\n cursor: pointer;\n font-size: inherit;\n color: inherit;\n }\n .el-show-list__item-delete {\n position: static;\n top: 0;\n margin-left: 20px;\n }\n }\n &:hover {\n .el-show-list__item-actions {\n opacity: 1;\n }\n }\n .show_file_title {\n font-size: 12px;\n color: #999;\n line-height: 12px;\n text-align: center;\n }\n }\n\n ul,\n li {\n list-style: none;\n margin: 0;\n padding: 0;\n // width: 500px;\n width: 100%;\n max-width: 500px;\n min-width: 250px;\n }\n li {\n width: 100%;\n color: #409eff;\n font-size: 13px;\n line-height: 22px;\n .imgName {\n // width: 350px;\n width: calc(100% - 140px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .el-button {\n color: #409eff;\n padding: 0;\n font-size: 13px;\n line-height: 20px;\n i {\n font-weight: bold;\n }\n }\n }\n}\n</style>\n",".show_file_box a {\n color: #10c2b0;\n}\n.show_file_box::after {\n content: \"\";\n display: block;\n clear: both;\n}\n.show_file_box .show_file_operation {\n border-radius: 4px;\n position: relative;\n line-height: 104px;\n float: left;\n margin-right: 10px;\n margin-bottom: 10px;\n}\n.show_file_box .show_file_operation .show_file_bg {\n width: 104px;\n height: 104px;\n border: 1px solid #c0ccda;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions {\n position: absolute;\n width: 104px;\n height: 104px;\n left: 0;\n top: 0;\n cursor: default;\n text-align: center;\n color: #fff;\n opacity: 0;\n font-size: 20px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions span {\n cursor: pointer;\n font-size: inherit;\n color: inherit;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions .el-show-list__item-delete {\n position: static;\n top: 0;\n margin-left: 20px;\n}\n.show_file_box .show_file_operation:hover .el-show-list__item-actions {\n opacity: 1;\n}\n.show_file_box .show_file_operation .show_file_title {\n font-size: 12px;\n color: #999;\n line-height: 12px;\n text-align: center;\n}\n.show_file_box ul,\n.show_file_box li {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n max-width: 500px;\n min-width: 250px;\n}\n.show_file_box li {\n width: 100%;\n color: #409eff;\n font-size: 13px;\n line-height: 22px;\n}\n.show_file_box li .imgName {\n width: calc(100% - 140px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.show_file_box li .el-button {\n color: #409eff;\n padding: 0;\n font-size: 13px;\n line-height: 20px;\n}\n.show_file_box li .el-button i {\n font-weight: bold;\n}\n\n/*# sourceMappingURL=index.vue.map */"]},media:undefined});};/* scoped */const __vue_scope_id__$g=undefined;/* module identifier */const __vue_module_identifier__$g=undefined;/* functional template */const __vue_is_functional_template__$g=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$g=/*#__PURE__*/normalizeComponent({render:__vue_render__$g,staticRenderFns:__vue_staticRenderFns__$g},__vue_inject_styles__$g,__vue_script__$g,__vue_scope_id__$g,__vue_is_functional_template__$g,__vue_module_identifier__$g,false,createInjector,undefined,undefined);__vue_component__$g.install=function(Vue){Vue.component(__vue_component__$g.name,__vue_component__$g);};var ElTableDraggable_umd={exports:{}};(function(module,exports){(function webpackUniversalModuleDefinition(root,factory){module.exports=factory();})(typeof self!=='undefined'?self:commonjsGlobal,function(){return(/******/function(modules){// webpackBootstrap
|
|
1121
|
+
}).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"});}}};/* script */const __vue_script__$g=script$g;/* template */var __vue_render__$g=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("div",{staticClass:"show_file_box"},[_c("div",{staticStyle:{height:"0",width:"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(" "),_vm.type==="block"?_c("div",{},_vm._l(_vm.fileUrl,function(item,index){return _c("div",{key:index,staticClass:"show_file_operation"},[_c("div",{staticClass:"show_file_bg",style:"background: url("+_vm.bgImg(item)+") no-repeat 50% 50%; background-size: contain;"}),_vm._v(" "),_c("span",{staticClass:"el-show-list__item-actions"},[_c("span",{staticClass:"el-show-list__item-preview",on:{click:function($event){return _vm.handlePictureCardPreview(item);}}},[_c("i",{staticClass:"el-icon-zoom-in"})]),_vm._v(" "),_c("span",{directives:[{name:"show",rawName:"v-show",value:_vm.isShowDownload,expression:"isShowDownload"}],staticClass:"el-show-list__item-delete",on:{click:function($event){return _vm.handleDownload(item);}}},[_c("i",{staticClass:"el-icon-download"})])]),_vm._v(" "),_vm.showTitle?_c("p",{staticClass:"show_file_title"},[_vm._v(_vm._s(item.name))]):_vm._e()]);}),0):_vm._e(),_vm._v(" "),_vm.type==="text"?_c("div",_vm._l(_vm.fileUrl,function(item,index){return _c("a",{key:index,on:{click:function($event){return _vm.handlePictureCardPreview(item);}}},[_vm._v(_vm._s(item.name))]);}),0):_vm._e(),_vm._v(" "),_vm.type==="custom"?_c("div",[_vm._t("content",null,{props:_vm.fileUrl,callback:_vm.handlePictureCardPreviewCallback})],2):_vm._e(),_vm._v(" "),_vm.type==="list"?_c("div",[_c("ul",_vm._l(_vm.fileUrl,function(item,index){return _c("li",{key:index,staticClass:"clearfix",class:index+1<_vm.fileUrl.length?"mb-15":""},[_vm._m(0,true),_vm._v(" "),_c("div",{staticClass:"clearfix fl ml-10 textCss",staticStyle:{width:"calc(100% - 30px)"}},[_c("div",{staticClass:"fl imgName"},[_vm._v("\n "+_vm._s(item.name)+"\n ")]),_vm._v(" "),_c("el-button",{directives:[{name:"show",rawName:"v-show",value:_vm.isShowDownload,expression:"isShowDownload"}],staticClass:"fr",attrs:{icon:"el-icon-download",type:"text"},on:{click:function($event){return _vm.handleDownload(item);}}},[_vm._v("下载")]),_vm._v(" "),_c("el-button",{staticClass:"fr mr-15",attrs:{icon:"el-icon-zoom-in",type:"text"},on:{click:function($event){return _vm.handlePictureCardPreview(item);}}},[_vm._v("预览")])],1)]);}),0)]):_vm._e()]);};var __vue_staticRenderFns__$g=[function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("span",{staticClass:"fl"},[_c("i",{staticClass:"el-icon-folder-opened"})]);}];__vue_render__$g._withStripped=true;/* style */const __vue_inject_styles__$g=function(inject){if(!inject)return;inject("data-v-0a7cac38_0",{source:".show_file_box a {\n color: #10c2b0;\n}\n.show_file_box::after {\n content: \"\";\n display: block;\n clear: both;\n}\n.show_file_box .show_file_operation {\n border-radius: 4px;\n position: relative;\n line-height: 104px;\n float: left;\n margin-right: 10px;\n margin-bottom: 10px;\n}\n.show_file_box .show_file_operation .show_file_bg {\n width: 104px;\n height: 104px;\n border: 1px solid #c0ccda;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions {\n position: absolute;\n width: 104px;\n height: 104px;\n left: 0;\n top: 0;\n cursor: default;\n text-align: center;\n color: #fff;\n opacity: 0;\n font-size: 20px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions span {\n cursor: pointer;\n font-size: inherit;\n color: inherit;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions .el-show-list__item-delete {\n position: static;\n top: 0;\n margin-left: 20px;\n}\n.show_file_box .show_file_operation:hover .el-show-list__item-actions {\n opacity: 1;\n}\n.show_file_box .show_file_operation .show_file_title {\n font-size: 12px;\n color: #999;\n line-height: 12px;\n text-align: center;\n}\n.show_file_box ul,\n.show_file_box li {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n max-width: 500px;\n min-width: 250px;\n}\n.show_file_box li {\n width: 100%;\n color: #409eff;\n font-size: 13px;\n line-height: 22px;\n}\n.show_file_box li .imgName {\n width: calc(100% - 140px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.show_file_box li .el-button {\n color: #409eff;\n padding: 0;\n font-size: 13px;\n line-height: 20px;\n}\n.show_file_box li .el-button i {\n font-weight: bold;\n}\n\n/*# sourceMappingURL=index.vue.map */",map:{"version":3,"sources":["/Users/wenquan/Desktop/hl/npm/components/ShowFile/index.vue","index.vue"],"names":[],"mappings":"AAoXA;EACA,cAAA;ACnXA;ADqXA;EACA,WAAA;EACA,cAAA;EACA,WAAA;ACnXA;ADqXA;EAGA,kBAAA;EACA,kBAAA;EACA,kBAAA;EACA,WAAA;EACA,kBAAA;EACA,mBAAA;ACrXA;ADsXA;EACA,YAAA;EACA,aAAA;EACA,yBAAA;ACpXA;ADsXA;EACA,kBAAA;EACA,YAAA;EACA,aAAA;EACA,OAAA;EACA,MAAA;EACA,eAAA;EACA,kBAAA;EACA,WAAA;EACA,UAAA;EACA,eAAA;EACA,oCAAA;EACA,wBAAA;ACpXA;ADqXA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;ACnXA;ADqXA;EACA,gBAAA;EACA,MAAA;EACA,iBAAA;ACnXA;ADuXA;EACA,UAAA;ACrXA;ADwXA;EACA,eAAA;EACA,WAAA;EACA,iBAAA;EACA,kBAAA;ACtXA;AD0XA;;EAEA,gBAAA;EACA,SAAA;EACA,UAAA;EAEA,WAAA;EACA,gBAAA;EACA,gBAAA;ACzXA;AD2XA;EACA,WAAA;EACA,cAAA;EACA,eAAA;EACA,iBAAA;ACzXA;AD0XA;EAEA,yBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ACzXA;AD2XA;EACA,cAAA;EACA,UAAA;EACA,eAAA;EACA,iBAAA;ACzXA;AD0XA;EACA,iBAAA;ACxXA;;AAEA,oCAAoC","file":"index.vue","sourcesContent":["<template>\n <div class=\"show_file_box\">\n <div style=\"height: 0; width: 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 <div class=\"\" v-if=\"type === 'block'\">\n <div\n class=\"show_file_operation\"\n v-for=\"(item, index) in fileUrl\"\n :key=\"index\"\n >\n <div\n class=\"show_file_bg\"\n :style=\"`background: url(${bgImg(\n item\n )}) no-repeat 50% 50%; background-size: contain;`\"\n />\n <span class=\"el-show-list__item-actions\">\n <span\n class=\"el-show-list__item-preview\"\n @click=\"handlePictureCardPreview(item)\"\n >\n <i class=\"el-icon-zoom-in\" />\n </span>\n <span\n class=\"el-show-list__item-delete\"\n v-show=\"isShowDownload\"\n @click=\"handleDownload(item)\"\n >\n <i class=\"el-icon-download\" />\n </span>\n </span>\n <p v-if=\"showTitle\" class=\"show_file_title\">{{ item.name }}</p>\n </div>\n </div>\n <div v-if=\"type === 'text'\">\n <a\n v-for=\"(item, index) in fileUrl\"\n :key=\"index\"\n @click=\"handlePictureCardPreview(item)\"\n >{{ item.name }}</a\n >\n </div>\n <div v-if=\"type === 'custom'\">\n <slot\n name=\"content\"\n :props=\"fileUrl\"\n :callback=\"handlePictureCardPreviewCallback\"\n >\n </slot>\n </div>\n <div v-if=\"type === 'list'\">\n <ul>\n <li\n class=\"clearfix\"\n :class=\"index + 1 < fileUrl.length ? 'mb-15' : ''\"\n v-for=\"(item, index) in fileUrl\"\n :key=\"index\"\n >\n <span class=\"fl\">\n <i class=\"el-icon-folder-opened\"></i>\n </span>\n <div\n class=\"clearfix fl ml-10 textCss\"\n style=\"width: calc(100% - 30px)\"\n >\n <div class=\"fl imgName\">\n {{ item.name }}\n </div>\n <!-- <i class=\"el-icon-download\" class=\"fr ml-10\" @click=\"handleDownload(item)\">下载</i>\n <i class=\"el-icon-zoom-in\" class=\"fr\">预览</i> -->\n <el-button\n icon=\"el-icon-download\"\n type=\"text\"\n class=\"fr\"\n v-show=\"isShowDownload\"\n @click=\"handleDownload(item)\"\n >下载</el-button\n >\n <el-button\n icon=\"el-icon-zoom-in\"\n type=\"text\"\n class=\"fr mr-15\"\n @click=\"handlePictureCardPreview(item)\"\n >预览</el-button\n >\n </div>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport axios from \"axios\";\nimport CSV from \"../UploadFile/fileImages/CSV.png\";\nimport EXCEL from \"../UploadFile/fileImages/EXCEL.png\";\nimport PDF from \"../UploadFile/fileImages/PDF.png\";\nimport PPT from \"../UploadFile/fileImages/PPT.png\";\nimport RAR from \"../UploadFile/fileImages/RAR.png\";\nimport WORD from \"../UploadFile/fileImages/WORD.png\";\nimport ZIP from \"../UploadFile/fileImages/ZIP.png\";\nimport PLIST from \"../UploadFile/fileImages/PLIST.png\";\nimport { getFileUrl } from \"../public\";\n\nexport default {\n props: {\n fileUrl: {\n // 文件数组\n default: () => {\n return [];\n },\n type: Array,\n },\n isShowDownload: {\n // 是否显示\n default: true,\n type: Boolean,\n },\n showTitle: {\n // 是否显示图片名\n default: false,\n type: Boolean,\n },\n // isText: { // 是否以文字形式展示\n // default: false,\n // type: Boolean\n // },\n type: {\n // 展示类型{block: 块,text: 文字,list: 列,custom:自定义}\n default: \"block\",\n type: String,\n },\n },\n data() {\n return {\n formFileList: [], // 显示上传文件\n dialogImageUrl: \"\",\n };\n },\n computed: {\n ...mapGetters([\"userInfo\"]),\n },\n watch: {\n fileUrl: {\n deep: true,\n immediate: true,\n handler() {\n this.formFileList = this.fileUrl;\n },\n },\n },\n methods: {\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 PLIST: PLIST,\n };\n\n if (file.raw) {\n type = this.fileFormat(file.name);\n } else {\n type = this.fileFormat(file.url);\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 plist = \"plist|PLIST\";\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_plist = new RegExp(\".(\" + plist + \")$\");\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_plist.test(name)) {\n return \"PLIST\";\n }\n },\n\n handlePictureCardPreview(file) {\n let type, url;\n if (file.raw) {\n type = this.fileFormat(file.name);\n url = file.response.data[0].attachmenturl;\n } else {\n type = this.fileFormat(file.url);\n url = file.url;\n }\n\n if (type === \"IMG\") {\n this.dialogImageUrl = file.url;\n this.$refs.previewImg.showViewer = true;\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"hidden\";\n document.addEventListener(\"touchmove\", m, false); // 禁止页面滑动\n\n this.$nextTick(() => {\n document\n .querySelector(\".el-image-viewer__close\")\n .addEventListener(\"click\", () => {\n const m = (e) => {\n e.preventDefault();\n };\n document.body.style.overflow = \"auto\";\n document.removeEventListener(\"touchmove\", m, true);\n });\n });\n }\n // else if (type === \"PDF\") {\n // window.open(\n // \"https://www.hellogil.com/web/contractPreview.html?url=\" +\n // url.replace(\"http://\", \"https://\")\n // );\n // }\n else if (\n type === \"WORD\" ||\n type === \"EXCEL\" ||\n type === \"CSV\" ||\n type === \"PPT\" ||\n type === \"PDF\"\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 const urlWithoutParams = url.split(\"?\")[0].toLowerCase();\n if (\n !urlWithoutParams.endsWith(\".doc\") &&\n !urlWithoutParams.endsWith(\".xlx\")\n ) {\n // URL后缀不包含.doc和.xlx时执行的代码\n // window.open(\n // `https://www.hellogil.com/web/#/officePreview?url=` +\n // encodeURIComponent(url.replace(\"http://\", \"https://\"))\n // );\n getFileUrl(url.replace(\"http://\", \"https://\")).then((res) => {\n if (res.result === \"success\") {\n window.open(res.data);\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n });\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n } else {\n this.$message({\n message: \"该文件不支持预览!\",\n type: \"warning\",\n });\n }\n },\n handlePictureCardPreviewCallback(item) {\n this.handlePictureCardPreview(item);\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};\n</script>\n\n<style lang=\"scss\">\n.show_file_box {\n a {\n color: #10c2b0;\n }\n &::after {\n content: \"\";\n display: block;\n clear: both;\n }\n .show_file_operation {\n // width: 104px;\n // height: 104px;\n border-radius: 4px;\n position: relative;\n line-height: 104px;\n float: left;\n margin-right: 10px;\n margin-bottom: 10px;\n .show_file_bg {\n width: 104px;\n height: 104px;\n border: 1px solid #c0ccda;\n }\n .el-show-list__item-actions {\n position: absolute;\n width: 104px;\n height: 104px;\n left: 0;\n top: 0;\n cursor: default;\n text-align: center;\n color: #fff;\n opacity: 0;\n font-size: 20px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s;\n span {\n cursor: pointer;\n font-size: inherit;\n color: inherit;\n }\n .el-show-list__item-delete {\n position: static;\n top: 0;\n margin-left: 20px;\n }\n }\n &:hover {\n .el-show-list__item-actions {\n opacity: 1;\n }\n }\n .show_file_title {\n font-size: 12px;\n color: #999;\n line-height: 12px;\n text-align: center;\n }\n }\n\n ul,\n li {\n list-style: none;\n margin: 0;\n padding: 0;\n // width: 500px;\n width: 100%;\n max-width: 500px;\n min-width: 250px;\n }\n li {\n width: 100%;\n color: #409eff;\n font-size: 13px;\n line-height: 22px;\n .imgName {\n // width: 350px;\n width: calc(100% - 140px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .el-button {\n color: #409eff;\n padding: 0;\n font-size: 13px;\n line-height: 20px;\n i {\n font-weight: bold;\n }\n }\n }\n}\n</style>\n",".show_file_box a {\n color: #10c2b0;\n}\n.show_file_box::after {\n content: \"\";\n display: block;\n clear: both;\n}\n.show_file_box .show_file_operation {\n border-radius: 4px;\n position: relative;\n line-height: 104px;\n float: left;\n margin-right: 10px;\n margin-bottom: 10px;\n}\n.show_file_box .show_file_operation .show_file_bg {\n width: 104px;\n height: 104px;\n border: 1px solid #c0ccda;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions {\n position: absolute;\n width: 104px;\n height: 104px;\n left: 0;\n top: 0;\n cursor: default;\n text-align: center;\n color: #fff;\n opacity: 0;\n font-size: 20px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions span {\n cursor: pointer;\n font-size: inherit;\n color: inherit;\n}\n.show_file_box .show_file_operation .el-show-list__item-actions .el-show-list__item-delete {\n position: static;\n top: 0;\n margin-left: 20px;\n}\n.show_file_box .show_file_operation:hover .el-show-list__item-actions {\n opacity: 1;\n}\n.show_file_box .show_file_operation .show_file_title {\n font-size: 12px;\n color: #999;\n line-height: 12px;\n text-align: center;\n}\n.show_file_box ul,\n.show_file_box li {\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n max-width: 500px;\n min-width: 250px;\n}\n.show_file_box li {\n width: 100%;\n color: #409eff;\n font-size: 13px;\n line-height: 22px;\n}\n.show_file_box li .imgName {\n width: calc(100% - 140px);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.show_file_box li .el-button {\n color: #409eff;\n padding: 0;\n font-size: 13px;\n line-height: 20px;\n}\n.show_file_box li .el-button i {\n font-weight: bold;\n}\n\n/*# sourceMappingURL=index.vue.map */"]},media:undefined});};/* scoped */const __vue_scope_id__$g=undefined;/* module identifier */const __vue_module_identifier__$g=undefined;/* functional template */const __vue_is_functional_template__$g=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$g=/*#__PURE__*/normalizeComponent({render:__vue_render__$g,staticRenderFns:__vue_staticRenderFns__$g},__vue_inject_styles__$g,__vue_script__$g,__vue_scope_id__$g,__vue_is_functional_template__$g,__vue_module_identifier__$g,false,createInjector,undefined,undefined);__vue_component__$g.install=function(Vue){Vue.component(__vue_component__$g.name,__vue_component__$g);};var ElTableDraggable_umd={exports:{}};(function(module,exports){(function webpackUniversalModuleDefinition(root,factory){module.exports=factory();})(typeof self!=='undefined'?self:commonjsGlobal,function(){return(/******/function(modules){// webpackBootstrap
|
|
631
1122
|
/******/ // The module cache
|
|
632
1123
|
/******/var installedModules={};/******/ /******/ // The require function
|
|
633
1124
|
/******/function __webpack_require__(moduleId){/******/ /******/ // Check if module is in cache
|
|
@@ -2153,7 +2644,7 @@ module.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectLis
|
|
|
2153
2644
|
*/function isSymbol(value){return typeof value=='symbol'||isObjectLike(value)&&baseGetTag(value)==symbolTag;}module.exports=isSymbol;/***/}/******/})["default"]);});})(ElTableDraggable_umd);var ElTableDraggable=/*@__PURE__*/getDefaultExportFromCjs(ElTableDraggable_umd.exports);//
|
|
2154
2645
|
var script$f={name:"SelectCol",components:{ElTableDraggable},props:{initialColumns:Array,columnsShow:Array,visible:Boolean,getNewCol:Function,saveMyTemplateColumns:Function,templateKey:String},data(){return{inResize:true,trans,columns:this.initialColumns,dataHiddenList:[],dataSelectList:[],multipleSelection:[],tableCol:[{label:trans("列表项名"),prop:"columnPropertyName"}],tableSelectCol:[{label:trans("列表项名"),prop:"columnPropertyName"}]};},mounted(){this.filterCol();},watch:{visible(val){this.visible=val;this.filterCol();}},methods:{filterCol(){this.dataSelectList=this.columnsShow;// this.dataHiddenList = this.columns.filter(i => !i.show)
|
|
2155
2646
|
this.dataHiddenList=this.columns.map(i=>{const isSelect=this.columnsShow.find(j=>j.columnPropertyName===i.columnPropertyName);if(!isSelect){return i;}}).filter(i=>i);},cancel(){this.$emit('update:visible',false);},submit(){const select=this.dataSelectList;const hidden=this.dataHiddenList;const newCols=select.concat(hidden);const columns=select.map(i=>{return{columnCode:i.columnCode,isFixed:i.isFixed};});this.saveMyTemplateColumns({templateKey:this.templateKey,columns:columns}).then(response=>{if(response.result==='success'){this.getNewCol(select,newCols);this.cancel();}else{this.$message.error(response.msg);}});},change(newList){this.dataSelectList=newList.map((i,index)=>{i.index=index;return i;});this.columns=this.dataSelectList.concat(this.dataHiddenList);},fixed(key,arrow){const selectIndex=this.dataSelectList.findIndex(i=>i.columnProperty===key);const select=this.dataSelectList[selectIndex];select.isFixed=arrow;this.$set(this.dataSelectList,selectIndex,select);},deleteItem(key){const index=this.dataSelectList.findIndex(i=>i.columnProperty===key);const delItem=this.dataSelectList[index];this.dataHiddenList=[...this.dataHiddenList,{...delItem}];this.$delete(this.dataSelectList,index);},handleSelectionChange(val){this.multipleSelection=val;},selectRow(){this.dataSelectList=this.dataSelectList.concat(this.multipleSelection);this.dataSelectList=this.dataSelectList.map((i,index)=>{i.index=index;return i;});this.dataHiddenList=this.dataHiddenList.filter(i=>!this.multipleSelection.find(s=>s.columnProperty===i.columnProperty));this.columns=this.dataSelectList.concat(this.dataHiddenList);// this.filterCol()
|
|
2156
|
-
this.inResize=false;this.$nextTick(t=>{this.inResize=true;});}}};/* script */const __vue_script__$f=script$f;/* template */var __vue_render__$f=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("el-dialog",{attrs:{title:_vm.trans("列表配置"),width:"880px",visible:_vm.visible,"before-close":_vm.cancel},on:{"update:visible":function($event){_vm.visible=$event;}}},[_c("div",[_c("el-row",{attrs:{gutter:10}},[_c("el-col",{attrs:{span:11}},[_c("div",{staticClass:"tableHeader"},[_vm._v(_vm._s(_vm.trans("可添加列表项"))+":"+_vm._s(_vm.dataHiddenList.length))]),_vm._v(" "),_c("el-table",{staticStyle:{width:"394px"},attrs:{data:_vm.dataHiddenList,border:""},on:{"selection-change":_vm.handleSelectionChange}},[_c("el-table-column",{attrs:{type:"selection",width:"55"}}),_vm._v(" "),_vm._l(_vm.tableCol,function(item){return _c("el-table-column",{key:item.key,attrs:{label:item.label,prop:item.prop,width:item.width}});})],2)],1),_vm._v(" "),_c("el-col",{staticStyle:{"padding-top":"25%"},attrs:{span:2}},[_c("el-button",{attrs:{icon:"el-icon-caret-right",circle:""},on:{click:_vm.selectRow}})],1),_vm._v(" "),_vm.inResize?_c("el-col",{attrs:{span:11}},[_c("div",{staticClass:"tableHeader"},[_vm._v(_vm._s(_vm.trans("已选列表项"))+":"+_vm._s(_vm.dataSelectList.length))]),_vm._v(" "),_c("ElTableDraggable",{attrs:{handle:".web20_yidong"},on:{input:_vm.change}},[_c("el-table",{staticStyle:{width:"100%"},attrs:{data:_vm.dataSelectList,"row-key":"columnProperty",border:""}},[_c("el-table-column",{attrs:{type:"index",label:_vm.trans("排序"),width:"50"}}),_vm._v(" "),_vm._l(_vm.tableSelectCol,function(item,index){return _c("el-table-column",{key:item.key,attrs:{label:item.label,prop:item.prop,index:index,width:item.width}});}),_vm._v(" "),_c("el-table-column",{attrs:{label:_vm.trans("操作"),width:"100"},scopedSlots:_vm._u([{key:"default",fn:function(ref){var row=ref.row;return[_c("svg",{staticClass:"icon web20_yidong",staticStyle:{"margin-right":"5px"},attrs:{"aria-hidden":"true"}},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_yidong"}})]),_vm._v(" "),_c("i",{staticClass:"el-icon-delete",staticStyle:{"margin-right":"5px"},on:{click:function($event){return _vm.deleteItem(row.columnProperty);}}}),_vm._v(" "),row.isFixed==1?_c("svg",{staticClass:"icon",staticStyle:{color:"#008000","margin-right":"5px"},attrs:{"aria-hidden":"true"},on:{click:function($event){return _vm.fixed(row.columnProperty,0);}}},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_guding"}})]):_vm._e(),_vm._v(" "),row.isFixed==0?_c("span",[_c("el-popover",{attrs:{placement:"bottom",width:"400",trigger:"click"}},[_c("div",[_c("el-button",{on:{click:function($event){return _vm.fixed(row.columnProperty,1);}}},[_vm._v(_vm._s(_vm.trans("固定在左边")))])],1),_vm._v(" "),_c("svg",{staticClass:"icon",staticStyle:{"margin-right":"5px"},attrs:{slot:"reference","aria-hidden":"true"},slot:"reference"},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_feiguding"}})])])],1):_vm._e()];}}],null,false,769329392)})],2)],1)],1):_vm._e()],1)],1),_vm._v(" "),_c("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[_c("el-button",{on:{click:_vm.cancel}},[_vm._v(_vm._s(_vm.trans("取消")))]),_vm._v(" "),_c("el-button",{attrs:{type:"primary"},on:{click:_vm.submit}},[_vm._v(_vm._s(_vm.trans("确定")))])],1)]);};var __vue_staticRenderFns__$f=[];__vue_render__$f._withStripped=true;/* style */const __vue_inject_styles__$f=function(inject){if(!inject)return;inject("data-v-ccd68636_0",{source:"\n.tableHeader[data-v-ccd68636] {\n width: 100%;\n border-radius: 8px 8px 0 0;\n border: 1px solid #E4E7EF;\n height: 40px;\n line-height: 40px;\n text-indent: 10px;\n border-bottom: none;\n}\n",map:{"version":3,"sources":["/Users/chenlei/HLcode/test/components/FormTableScheme/component/SelectCol/index.vue"],"names":[],"mappings":";AAiLA;IACA,WAAA;IACA,0BAAA;IACA,yBAAA;IACA,YAAA;IACA,iBAAA;IACA,iBAAA;IACA,mBAAA;AACA","file":"index.vue","sourcesContent":["<template>\n <el-dialog :title=\"trans('列表配置')\" width=\"880px\" :visible.sync=\"visible\" :before-close=\"cancel\">\n <div>\n <el-row :gutter=\"10\">\n <el-col :span=\"11\">\n <div class=\"tableHeader\">{{ trans('可添加列表项') }}:{{ dataHiddenList.length }}</div>\n <el-table :data=\"dataHiddenList\" style=\"width: 394px\" border @selection-change=\"handleSelectionChange\">\n <el-table-column type=\"selection\" width=\"55\"> </el-table-column>\n <el-table-column :label=\"item.label\" :prop=\"item.prop\" v-for=\"item in tableCol\" :key=\"item.key\"\n :width=\"item.width\"></el-table-column>\n </el-table>\n </el-col>\n <el-col :span=\"2\" style=\"padding-top:25%\">\n <el-button icon=\"el-icon-caret-right\" circle @click=\"selectRow\"></el-button></el-col>\n <el-col :span=\"11\" v-if=\"inResize\">\n <div class=\"tableHeader\">{{ trans('已选列表项') }}:{{ dataSelectList.length }}</div>\n <ElTableDraggable handle=\".web20_yidong\" @input=\"change\">\n <el-table :data=\"dataSelectList\" row-key=\"columnProperty\" style=\"width: 100%\" border>\n <el-table-column type=\"index\" :label=\"trans('排序')\" width=\"50\">\n </el-table-column>\n <el-table-column :label=\"item.label\" :prop=\"item.prop\" v-for=\"(item, index) in tableSelectCol\"\n :key=\"item.key\" :index=\"index\" :width=\"item.width\"></el-table-column>\n <el-table-column :label=\"trans('操作')\" width=\"100\">\n <template slot-scope=\"{ row }\">\n <svg class=\"icon web20_yidong\" aria-hidden=\"true\" style=\"margin-right:5px;\">\n <use xlink:href=\"#fontFamily-a-web20_yidong\"></use>\n </svg>\n <i style=\"margin-right:5px;\" class=\"el-icon-delete\"\n @click=\"deleteItem(row.columnProperty)\"></i>\n <svg v-if=\"row.isFixed == 1\" class=\"icon\" style=\"color:#008000;margin-right:5px;\"\n aria-hidden=\"true\" @click=\"fixed(row.columnProperty, 0)\">\n <use xlink:href=\"#fontFamily-a-web20_guding\"></use>\n </svg>\n <span v-if=\"row.isFixed == 0\">\n <el-popover placement=\"bottom\" width=\"400\" trigger=\"click\">\n <div>\n <el-button @click=\"fixed(row.columnProperty, 1)\">{{ trans('固定在左边')\n }}</el-button>\n <!-- <el-button @click=\"fixed(row.columnProperty, 'right')\">固定在右边</el-button> -->\n </div>\n <svg class=\"icon\" aria-hidden=\"true\" slot=\"reference\" style=\"margin-right:5px;\">\n <use xlink:href=\"#fontFamily-a-web20_feiguding\"></use>\n </svg>\n </el-popover>\n </span>\n\n </template>\n </el-table-column>\n\n </el-table>\n </ElTableDraggable>\n\n </el-col>\n </el-row>\n </div>\n <div slot=\"footer\" class=\"dialog-footer\">\n <el-button @click=\"cancel\">{{ trans('取消') }}</el-button>\n <el-button type=\"primary\" @click=\"submit\">{{ trans('确定') }}</el-button>\n </div>\n </el-dialog>\n</template>\n\n<script>\nimport ElTableDraggable from 'el-table-draggable'\nimport trans from '../../../lang/trans'\n\nexport default {\n name: \"SelectCol\",\n components: {\n ElTableDraggable,\n },\n props: {\n initialColumns: Array,\n columnsShow: Array,\n visible: Boolean,\n getNewCol: Function,\n saveMyTemplateColumns: Function,\n templateKey: String,\n },\n data() {\n return {\n inResize: true,\n trans,\n columns: this.initialColumns,\n dataHiddenList: [],\n dataSelectList: [],\n multipleSelection: [],\n tableCol: [\n { label: trans(\"列表项名\"), prop: \"columnPropertyName\" },\n ],\n tableSelectCol: [\n { label: trans(\"列表项名\"), prop: \"columnPropertyName\", },\n ],\n };\n },\n mounted() {\n this.filterCol()\n },\n watch: {\n visible(val) {\n this.visible = val;\n this.filterCol()\n },\n },\n methods: {\n filterCol() {\n this.dataSelectList = this.columnsShow\n // this.dataHiddenList = this.columns.filter(i => !i.show)\n this.dataHiddenList = (this.columns.map((i) => {\n const isSelect = this.columnsShow.find(j => j.columnPropertyName === i.columnPropertyName)\n if (!isSelect) {\n return i\n }\n })).filter(i => i)\n },\n cancel() {\n this.$emit('update:visible', false);\n },\n submit() {\n const select = this.dataSelectList;\n const hidden = this.dataHiddenList;\n const newCols = select.concat(hidden)\n const columns = select.map(i => {\n return { columnCode: i.columnCode, isFixed: i.isFixed }\n })\n this.saveMyTemplateColumns({ templateKey: this.templateKey, columns: columns }).then((response) => {\n if (response.result === 'success') {\n this.getNewCol(select, newCols)\n this.cancel();\n } else {\n this.$message.error(\n response.msg\n )\n }\n })\n\n },\n change(newList) {\n this.dataSelectList = newList.map((i, index) => {\n i.index = index;\n return i\n })\n this.columns = this.dataSelectList.concat(this.dataHiddenList)\n },\n fixed(key, arrow) {\n const selectIndex = this.dataSelectList.findIndex(i => i.columnProperty === key)\n const select = this.dataSelectList[selectIndex]\n select.isFixed = arrow\n this.$set(this.dataSelectList, selectIndex, select)\n },\n deleteItem(key) {\n const index = this.dataSelectList.findIndex(i => i.columnProperty === key)\n const delItem = this.dataSelectList[index]\n this.dataHiddenList = [...this.dataHiddenList, { ...delItem }]\n this.$delete(this.dataSelectList, index)\n },\n handleSelectionChange(val) {\n this.multipleSelection = val;\n },\n selectRow() {\n this.dataSelectList = this.dataSelectList.concat(this.multipleSelection)\n this.dataSelectList = this.dataSelectList.map((i, index) => {\n i.index = index\n return i\n })\n this.dataHiddenList = this.dataHiddenList.filter(i => !this.multipleSelection.find(s => s.columnProperty === i.columnProperty))\n this.columns = this.dataSelectList.concat(this.dataHiddenList)\n // this.filterCol()\n this.inResize = false;\n this.$nextTick(t => {\n this.inResize = true;\n })\n },\n },\n};\n</script>\n<style scoped>\n.tableHeader {\n width: 100%;\n border-radius: 8px 8px 0 0;\n border: 1px solid #E4E7EF;\n height: 40px;\n line-height: 40px;\n text-indent: 10px;\n border-bottom: none;\n}\n</style>"]},media:undefined});};/* scoped */const __vue_scope_id__$f="data-v-ccd68636";/* module identifier */const __vue_module_identifier__$f=undefined;/* functional template */const __vue_is_functional_template__$f=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$f=/*#__PURE__*/normalizeComponent({render:__vue_render__$f,staticRenderFns:__vue_staticRenderFns__$f},__vue_inject_styles__$f,__vue_script__$f,__vue_scope_id__$f,__vue_is_functional_template__$f,__vue_module_identifier__$f,false,createInjector,undefined,undefined);//
|
|
2647
|
+
this.inResize=false;this.$nextTick(t=>{this.inResize=true;});}}};/* script */const __vue_script__$f=script$f;/* template */var __vue_render__$f=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("el-dialog",{attrs:{title:_vm.trans("列表配置"),width:"880px",visible:_vm.visible,"before-close":_vm.cancel},on:{"update:visible":function($event){_vm.visible=$event;}}},[_c("div",[_c("el-row",{attrs:{gutter:10}},[_c("el-col",{attrs:{span:11}},[_c("div",{staticClass:"tableHeader"},[_vm._v(_vm._s(_vm.trans("可添加列表项"))+":"+_vm._s(_vm.dataHiddenList.length))]),_vm._v(" "),_c("el-table",{staticStyle:{width:"394px"},attrs:{data:_vm.dataHiddenList,border:""},on:{"selection-change":_vm.handleSelectionChange}},[_c("el-table-column",{attrs:{type:"selection",width:"55"}}),_vm._v(" "),_vm._l(_vm.tableCol,function(item){return _c("el-table-column",{key:item.key,attrs:{label:item.label,prop:item.prop,width:item.width}});})],2)],1),_vm._v(" "),_c("el-col",{staticStyle:{"padding-top":"25%"},attrs:{span:2}},[_c("el-button",{attrs:{icon:"el-icon-caret-right",circle:""},on:{click:_vm.selectRow}})],1),_vm._v(" "),_vm.inResize?_c("el-col",{attrs:{span:11}},[_c("div",{staticClass:"tableHeader"},[_vm._v(_vm._s(_vm.trans("已选列表项"))+":"+_vm._s(_vm.dataSelectList.length))]),_vm._v(" "),_c("ElTableDraggable",{attrs:{handle:".web20_yidong"},on:{input:_vm.change}},[_c("el-table",{staticStyle:{width:"100%"},attrs:{data:_vm.dataSelectList,"row-key":"columnProperty",border:""}},[_c("el-table-column",{attrs:{type:"index",label:_vm.trans("排序"),width:"50"}}),_vm._v(" "),_vm._l(_vm.tableSelectCol,function(item,index){return _c("el-table-column",{key:item.key,attrs:{label:item.label,prop:item.prop,index:index,width:item.width}});}),_vm._v(" "),_c("el-table-column",{attrs:{label:_vm.trans("操作"),width:"100"},scopedSlots:_vm._u([{key:"default",fn:function(ref){var row=ref.row;return[_c("svg",{staticClass:"icon web20_yidong",staticStyle:{"margin-right":"5px"},attrs:{"aria-hidden":"true"}},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_yidong"}})]),_vm._v(" "),_c("i",{staticClass:"el-icon-delete",staticStyle:{"margin-right":"5px"},on:{click:function($event){return _vm.deleteItem(row.columnProperty);}}}),_vm._v(" "),row.isFixed==1?_c("svg",{staticClass:"icon",staticStyle:{color:"#008000","margin-right":"5px"},attrs:{"aria-hidden":"true"},on:{click:function($event){return _vm.fixed(row.columnProperty,0);}}},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_guding"}})]):_vm._e(),_vm._v(" "),row.isFixed==0?_c("span",[_c("el-popover",{attrs:{placement:"bottom",width:"400",trigger:"click"}},[_c("div",[_c("el-button",{on:{click:function($event){return _vm.fixed(row.columnProperty,1);}}},[_vm._v(_vm._s(_vm.trans("固定在左边")))])],1),_vm._v(" "),_c("svg",{staticClass:"icon",staticStyle:{"margin-right":"5px"},attrs:{slot:"reference","aria-hidden":"true"},slot:"reference"},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_feiguding"}})])])],1):_vm._e()];}}],null,false,769329392)})],2)],1)],1):_vm._e()],1)],1),_vm._v(" "),_c("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[_c("el-button",{on:{click:_vm.cancel}},[_vm._v(_vm._s(_vm.trans("取消")))]),_vm._v(" "),_c("el-button",{attrs:{type:"primary"},on:{click:_vm.submit}},[_vm._v(_vm._s(_vm.trans("确定")))])],1)]);};var __vue_staticRenderFns__$f=[];__vue_render__$f._withStripped=true;/* style */const __vue_inject_styles__$f=function(inject){if(!inject)return;inject("data-v-7624a2d2_0",{source:"\n.tableHeader[data-v-7624a2d2] {\n width: 100%;\n border-radius: 8px 8px 0 0;\n border: 1px solid #E4E7EF;\n height: 40px;\n line-height: 40px;\n text-indent: 10px;\n border-bottom: none;\n}\n",map:{"version":3,"sources":["/Users/wenquan/Desktop/hl/npm/components/FormTableScheme/component/SelectCol/index.vue"],"names":[],"mappings":";AAiLA;IACA,WAAA;IACA,0BAAA;IACA,yBAAA;IACA,YAAA;IACA,iBAAA;IACA,iBAAA;IACA,mBAAA;AACA","file":"index.vue","sourcesContent":["<template>\n <el-dialog :title=\"trans('列表配置')\" width=\"880px\" :visible.sync=\"visible\" :before-close=\"cancel\">\n <div>\n <el-row :gutter=\"10\">\n <el-col :span=\"11\">\n <div class=\"tableHeader\">{{ trans('可添加列表项') }}:{{ dataHiddenList.length }}</div>\n <el-table :data=\"dataHiddenList\" style=\"width: 394px\" border @selection-change=\"handleSelectionChange\">\n <el-table-column type=\"selection\" width=\"55\"> </el-table-column>\n <el-table-column :label=\"item.label\" :prop=\"item.prop\" v-for=\"item in tableCol\" :key=\"item.key\"\n :width=\"item.width\"></el-table-column>\n </el-table>\n </el-col>\n <el-col :span=\"2\" style=\"padding-top:25%\">\n <el-button icon=\"el-icon-caret-right\" circle @click=\"selectRow\"></el-button></el-col>\n <el-col :span=\"11\" v-if=\"inResize\">\n <div class=\"tableHeader\">{{ trans('已选列表项') }}:{{ dataSelectList.length }}</div>\n <ElTableDraggable handle=\".web20_yidong\" @input=\"change\">\n <el-table :data=\"dataSelectList\" row-key=\"columnProperty\" style=\"width: 100%\" border>\n <el-table-column type=\"index\" :label=\"trans('排序')\" width=\"50\">\n </el-table-column>\n <el-table-column :label=\"item.label\" :prop=\"item.prop\" v-for=\"(item, index) in tableSelectCol\"\n :key=\"item.key\" :index=\"index\" :width=\"item.width\"></el-table-column>\n <el-table-column :label=\"trans('操作')\" width=\"100\">\n <template slot-scope=\"{ row }\">\n <svg class=\"icon web20_yidong\" aria-hidden=\"true\" style=\"margin-right:5px;\">\n <use xlink:href=\"#fontFamily-a-web20_yidong\"></use>\n </svg>\n <i style=\"margin-right:5px;\" class=\"el-icon-delete\"\n @click=\"deleteItem(row.columnProperty)\"></i>\n <svg v-if=\"row.isFixed == 1\" class=\"icon\" style=\"color:#008000;margin-right:5px;\"\n aria-hidden=\"true\" @click=\"fixed(row.columnProperty, 0)\">\n <use xlink:href=\"#fontFamily-a-web20_guding\"></use>\n </svg>\n <span v-if=\"row.isFixed == 0\">\n <el-popover placement=\"bottom\" width=\"400\" trigger=\"click\">\n <div>\n <el-button @click=\"fixed(row.columnProperty, 1)\">{{ trans('固定在左边')\n }}</el-button>\n <!-- <el-button @click=\"fixed(row.columnProperty, 'right')\">固定在右边</el-button> -->\n </div>\n <svg class=\"icon\" aria-hidden=\"true\" slot=\"reference\" style=\"margin-right:5px;\">\n <use xlink:href=\"#fontFamily-a-web20_feiguding\"></use>\n </svg>\n </el-popover>\n </span>\n\n </template>\n </el-table-column>\n\n </el-table>\n </ElTableDraggable>\n\n </el-col>\n </el-row>\n </div>\n <div slot=\"footer\" class=\"dialog-footer\">\n <el-button @click=\"cancel\">{{ trans('取消') }}</el-button>\n <el-button type=\"primary\" @click=\"submit\">{{ trans('确定') }}</el-button>\n </div>\n </el-dialog>\n</template>\n\n<script>\nimport ElTableDraggable from 'el-table-draggable'\nimport trans from '../../../lang/trans'\n\nexport default {\n name: \"SelectCol\",\n components: {\n ElTableDraggable,\n },\n props: {\n initialColumns: Array,\n columnsShow: Array,\n visible: Boolean,\n getNewCol: Function,\n saveMyTemplateColumns: Function,\n templateKey: String,\n },\n data() {\n return {\n inResize: true,\n trans,\n columns: this.initialColumns,\n dataHiddenList: [],\n dataSelectList: [],\n multipleSelection: [],\n tableCol: [\n { label: trans(\"列表项名\"), prop: \"columnPropertyName\" },\n ],\n tableSelectCol: [\n { label: trans(\"列表项名\"), prop: \"columnPropertyName\", },\n ],\n };\n },\n mounted() {\n this.filterCol()\n },\n watch: {\n visible(val) {\n this.visible = val;\n this.filterCol()\n },\n },\n methods: {\n filterCol() {\n this.dataSelectList = this.columnsShow\n // this.dataHiddenList = this.columns.filter(i => !i.show)\n this.dataHiddenList = (this.columns.map((i) => {\n const isSelect = this.columnsShow.find(j => j.columnPropertyName === i.columnPropertyName)\n if (!isSelect) {\n return i\n }\n })).filter(i => i)\n },\n cancel() {\n this.$emit('update:visible', false);\n },\n submit() {\n const select = this.dataSelectList;\n const hidden = this.dataHiddenList;\n const newCols = select.concat(hidden)\n const columns = select.map(i => {\n return { columnCode: i.columnCode, isFixed: i.isFixed }\n })\n this.saveMyTemplateColumns({ templateKey: this.templateKey, columns: columns }).then((response) => {\n if (response.result === 'success') {\n this.getNewCol(select, newCols)\n this.cancel();\n } else {\n this.$message.error(\n response.msg\n )\n }\n })\n\n },\n change(newList) {\n this.dataSelectList = newList.map((i, index) => {\n i.index = index;\n return i\n })\n this.columns = this.dataSelectList.concat(this.dataHiddenList)\n },\n fixed(key, arrow) {\n const selectIndex = this.dataSelectList.findIndex(i => i.columnProperty === key)\n const select = this.dataSelectList[selectIndex]\n select.isFixed = arrow\n this.$set(this.dataSelectList, selectIndex, select)\n },\n deleteItem(key) {\n const index = this.dataSelectList.findIndex(i => i.columnProperty === key)\n const delItem = this.dataSelectList[index]\n this.dataHiddenList = [...this.dataHiddenList, { ...delItem }]\n this.$delete(this.dataSelectList, index)\n },\n handleSelectionChange(val) {\n this.multipleSelection = val;\n },\n selectRow() {\n this.dataSelectList = this.dataSelectList.concat(this.multipleSelection)\n this.dataSelectList = this.dataSelectList.map((i, index) => {\n i.index = index\n return i\n })\n this.dataHiddenList = this.dataHiddenList.filter(i => !this.multipleSelection.find(s => s.columnProperty === i.columnProperty))\n this.columns = this.dataSelectList.concat(this.dataHiddenList)\n // this.filterCol()\n this.inResize = false;\n this.$nextTick(t => {\n this.inResize = true;\n })\n },\n },\n};\n</script>\n<style scoped>\n.tableHeader {\n width: 100%;\n border-radius: 8px 8px 0 0;\n border: 1px solid #E4E7EF;\n height: 40px;\n line-height: 40px;\n text-indent: 10px;\n border-bottom: none;\n}\n</style>"]},media:undefined});};/* scoped */const __vue_scope_id__$f="data-v-7624a2d2";/* module identifier */const __vue_module_identifier__$f=undefined;/* functional template */const __vue_is_functional_template__$f=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$f=/*#__PURE__*/normalizeComponent({render:__vue_render__$f,staticRenderFns:__vue_staticRenderFns__$f},__vue_inject_styles__$f,__vue_script__$f,__vue_scope_id__$f,__vue_is_functional_template__$f,__vue_module_identifier__$f,false,createInjector,undefined,undefined);//
|
|
2157
2648
|
//
|
|
2158
2649
|
//
|
|
2159
2650
|
//
|
|
@@ -2161,10 +2652,10 @@ this.inResize=false;this.$nextTick(t=>{this.inResize=true;});}}};/* script */con
|
|
|
2161
2652
|
var script$e={name:'dp',props:{value:String|Array|Object|Boolean,visible:{type:Boolean,default:false}},methods:{updateMsg(newVal){this.$emit('update-visible',newVal);}},computed:{computeStyle(){const type=Object.prototype.toString.call(this.value);let res=true;switch(type){case'[object Array]':this.value[0]==this.value[1];const errValues=[null,undefined,''];res=this.value.length==0||errValues.includes(this.value[0])&&errValues.includes(this.value[1]);break;case'[object Object]':res=Object.keys(this.value).length==0;break;case'[object String]':res=this.value.length==0;break;case'[object Number]':res=false;break;case'[object Boolean]':res=!this.value;break;}return{color:!res?'#333d4f':'#333d4f'};}}};/* 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("svg",{staticClass:"icon",style:_vm.computeStyle,attrs:{"aria-hidden":"true"},on:{click:_vm.updateMsg}},[_c("use",{attrs:{"xlink:href":"#fontFamily-a-web20_liebiaoshaixuan"}})]);};var __vue_staticRenderFns__$e=[];__vue_render__$e._withStripped=true;/* style */const __vue_inject_styles__$e=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 */ /* 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,undefined,undefined,undefined);//
|
|
2162
2653
|
var script$d={props:{setFormParams:Function,column:Object,ops:Object,// 请求参数
|
|
2163
2654
|
getConfig:Function,ruleFn:Function},components:{Dp:__vue_component__$e},watch:{ops:function(newVal,old){const{key}=this.getConfig(this.column);const ops=newVal;if(ops[key]){this.value=ops[key].split(',');// 约定 基本上check类型的值都是,分割的字符串
|
|
2164
|
-
}else{this.value=[];}},visible:{deep:true,handler(value){if(this.ruleFn&&value){let{option}=this.getConfig(this.column);this.list=option;}}}},data(){return{trans,list:[],visible:false,value:[]};},mounted(){let{option}=this.getConfig(this.column);this.list=option;},methods:{submit(){const{key}=this.getConfig(this.column);this.setFormParams({[key]:this.value.join(',')});this.visible=false;},reset(){this.value=[];}}};/* script */const __vue_script__$d=script$d;/* template */var __vue_render__$d=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}},[_c("el-select",{attrs:{multiple:"",filterable:"",placeholder:_vm.trans("请选择")},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}},_vm._l(_vm.list,function(item){return _c("el-option",{key:item.label,attrs:{label:item.label,value:item.value}});}),1),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{type:"primary",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__$d=[];__vue_render__$d._withStripped=true;/* style */const __vue_inject_styles__$d=function(inject){if(!inject)return;inject("data-v-
|
|
2655
|
+
}else{this.value=[];}},visible:{deep:true,handler(value){if(this.ruleFn&&value){let{option}=this.getConfig(this.column);this.list=option;}}}},data(){return{trans,list:[],visible:false,value:[]};},mounted(){let{option}=this.getConfig(this.column);this.list=option;},methods:{submit(){const{key}=this.getConfig(this.column);this.setFormParams({[key]:this.value.join(',')});this.visible=false;},reset(){this.value=[];}}};/* script */const __vue_script__$d=script$d;/* template */var __vue_render__$d=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}},[_c("el-select",{attrs:{multiple:"",filterable:"",placeholder:_vm.trans("请选择")},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}},_vm._l(_vm.list,function(item){return _c("el-option",{key:item.label,attrs:{label:item.label,value:item.value}});}),1),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{type:"primary",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__$d=[];__vue_render__$d._withStripped=true;/* style */const __vue_inject_styles__$d=function(inject){if(!inject)return;inject("data-v-1611cfd6_0",{source:".popBtn[data-v-1611cfd6] {\n vertical-align: bottom;\n margin-left: 5px;\n}\n.checkbox[data-v-1611cfd6] {\n max-height: 150px;\n overflow-y: auto;\n}\n.checkbox .el-checkbox[data-v-1611cfd6] {\n display: block;\n}\n\n/*# sourceMappingURL=Check.vue.map */",map:{"version":3,"sources":["/Users/wenquan/Desktop/hl/npm/components/FormTableScheme/component/ColHeader/Check.vue","Check.vue"],"names":[],"mappings":"AAwEA;EACA,sBAAA;EACA,gBAAA;ACvEA;AD0EA;EACA,iBAAA;EACA,gBAAA;ACvEA;ADyEA;EACA,cAAA;ACvEA;;AAEA,oCAAoC","file":"Check.vue","sourcesContent":["<template>\n <span>\n <el-popover placement=\"bottom\" width=\"100%\" trigger=\"click\" v-model=\"visible\" popper-class=\"pointRecord\">\n <div :data-name=\"column.columnPropertyName\">\n <el-select multiple v-model=\"value\" filterable :placeholder=\"trans('请选择')\">\n <el-option v-for=\"item in list\" :label=\"item.label\" :key=\"item.label\" :value=\"item.value\"></el-option>\n </el-select>\n <el-button class=\"popBtn\" size=\"mini\" @click=\"reset\">{{ trans('重置') }}</el-button>\n <el-button class=\"popBtn\" type=\"primary\" size=\"mini\" @click=\"submit\">{{ trans('确定') }}</el-button>\n </div>\n <dp :value=\"value\" slot=\"reference\" />\n </el-popover>\n </span>\n</template>\n<script>\nimport Dp from './dp.vue'\nimport trans from '../../../lang/trans'\n\nexport default {\n props: {\n setFormParams: Function,\n column: Object,\n ops: Object, // 请求参数\n getConfig: Function,\n ruleFn: Function,\n },\n components: { Dp },\n watch: {\n ops: function (newVal, old) {\n const { key } = this.getConfig(this.column);\n const ops = newVal;\n if (ops[key]) {\n this.value = ops[key].split(',') // 约定 基本上check类型的值都是,分割的字符串\n } else {\n this.value = []\n }\n },\n visible: {\n deep: true,\n handler(value){\n if(this.ruleFn && value){\n let { option } = this.getConfig(this.column);\n this.list = option\n }\n }\n }\n },\n data() {\n return {\n trans,\n list: [],\n visible: false,\n value: [],\n }\n },\n mounted() {\n let { option } = this.getConfig(this.column);\n this.list = option\n },\n methods: {\n submit() {\n const { key } = this.getConfig(this.column);\n this.setFormParams({ [key]: this.value.join(',') })\n this.visible = false\n },\n reset() {\n this.value = [];\n }\n }\n}\n</script>\n<style lang=\"scss\" scoped>\n.popBtn {\n vertical-align: bottom;\n margin-left: 5px;\n}\n\n.checkbox {\n max-height: 150px;\n overflow-y: auto;\n\n .el-checkbox {\n display: block;\n }\n}\n</style>",".popBtn {\n vertical-align: bottom;\n margin-left: 5px;\n}\n\n.checkbox {\n max-height: 150px;\n overflow-y: auto;\n}\n.checkbox .el-checkbox {\n display: block;\n}\n\n/*# sourceMappingURL=Check.vue.map */"]},media:undefined});};/* scoped */const __vue_scope_id__$d="data-v-1611cfd6";/* module identifier */const __vue_module_identifier__$d=undefined;/* functional template */const __vue_is_functional_template__$d=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$d=/*#__PURE__*/normalizeComponent({render:__vue_render__$d,staticRenderFns:__vue_staticRenderFns__$d},__vue_inject_styles__$d,__vue_script__$d,__vue_scope_id__$d,__vue_is_functional_template__$d,__vue_module_identifier__$d,false,createInjector,undefined,undefined);//
|
|
2165
2656
|
var script$c={props:{setFormParams:Function,column:Object,ops:Object,// 请求参数
|
|
2166
2657
|
getConfig:Function,ruleFn:Function},components:{Dp:__vue_component__$e},watch:{ops:function(newVal,old){const{key}=this.getConfig(this.column);const ops=newVal;if(ops[key]){this.value=ops[key]||'';// 约定 基本上check类型的值都是,分割的字符串
|
|
2167
|
-
}else{this.value='';}},visible:{deep:true,handler(value){if(this.ruleFn&&value){let{option}=this.getConfig(this.column);this.list=option;}}}},data(){return{trans,visible:false,value:'',list:[]};},mounted(){let{option}=this.getConfig(this.column);this.list=option;},methods:{submit(){const{key}=this.getConfig(this.column);this.setFormParams({[key]:this.value});this.visible=false;},reset(){this.value='';}}};/* script */const __vue_script__$c=script$c;/* template */var __vue_render__$c=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}},[_c("el-select",{attrs:{filterable:"",placeholder:_vm.trans("请选择")},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}},_vm._l(_vm.list,function(item){return _c("el-option",{key:item.label,attrs:{label:item.label,value:item.value}});}),1),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{type:"primary",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__$c=[];__vue_render__$c._withStripped=true;/* style */const __vue_inject_styles__$c=function(inject){if(!inject)return;inject("data-v-
|
|
2658
|
+
}else{this.value='';}},visible:{deep:true,handler(value){if(this.ruleFn&&value){let{option}=this.getConfig(this.column);this.list=option;}}}},data(){return{trans,visible:false,value:'',list:[]};},mounted(){let{option}=this.getConfig(this.column);this.list=option;},methods:{submit(){const{key}=this.getConfig(this.column);this.setFormParams({[key]:this.value});this.visible=false;},reset(){this.value='';}}};/* script */const __vue_script__$c=script$c;/* template */var __vue_render__$c=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}},[_c("el-select",{attrs:{filterable:"",placeholder:_vm.trans("请选择")},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}},_vm._l(_vm.list,function(item){return _c("el-option",{key:item.label,attrs:{label:item.label,value:item.value}});}),1),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{type:"primary",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__$c=[];__vue_render__$c._withStripped=true;/* style */const __vue_inject_styles__$c=function(inject){if(!inject)return;inject("data-v-cae23584_0",{source:".popBtn[data-v-cae23584] {\n vertical-align: bottom;\n margin-left: 5px;\n}\n.radiobox[data-v-cae23584] {\n max-height: 150px;\n display: block;\n overflow-y: auto;\n}\n.radiobox .el-radio[data-v-cae23584] {\n display: block;\n}\n.radiobox .el-radio__input[data-v-cae23584] {\n margin-right: 10px;\n}\n\n/*# sourceMappingURL=Radio.vue.map */",map:{"version":3,"sources":["/Users/wenquan/Desktop/hl/npm/components/FormTableScheme/component/ColHeader/Radio.vue","Radio.vue"],"names":[],"mappings":"AAyEA;EACA,sBAAA;EACA,gBAAA;ACxEA;AD2EA;EACA,iBAAA;EACA,cAAA;EACA,gBAAA;ACxEA;AD0EA;EACA,cAAA;ACxEA;AD2EA;EACA,kBAAA;ACzEA;;AAEA,oCAAoC","file":"Radio.vue","sourcesContent":["<template>\n <span>\n <el-popover placement=\"bottom\" width=\"100%\" trigger=\"click\" v-model=\"visible\" popper-class=\"pointRecord\">\n <div :data-name=\"column.columnPropertyName\">\n <el-select v-model=\"value\" filterable :placeholder=\"trans('请选择')\">\n <el-option v-for=\"item in list\" :label=\"item.label\" :key=\"item.label\"\n :value=\"item.value\"></el-option>\n </el-select>\n <el-button class=\"popBtn\" size=\"mini\" @click=\"reset\">{{ trans('重置') }}</el-button>\n <el-button class=\"popBtn\" type=\"primary\" size=\"mini\" @click=\"submit\">{{ trans('确定') }}</el-button>\n </div>\n <dp :value=\"value\" slot=\"reference\" />\n </el-popover>\n </span>\n</template>\n<script>\nimport Dp from './dp.vue'\nimport trans from '../../../lang/trans'\n\nexport default {\n props: {\n setFormParams: Function,\n column: Object,\n ops: Object, // 请求参数\n getConfig: Function,\n ruleFn: Function,\n },\n components: { Dp },\n watch: {\n ops: function (newVal, old) {\n const { key } = this.getConfig(this.column);\n const ops = newVal;\n if (ops[key]) {\n this.value = ops[key] || '' // 约定 基本上check类型的值都是,分割的字符串\n } else {\n this.value = ''\n }\n },\n visible: {\n deep: true,\n handler(value){\n if(this.ruleFn && value){\n let { option } = this.getConfig(this.column);\n this.list = option\n }\n }\n }\n },\n data() {\n return {\n trans,\n visible: false,\n value: '',\n list:[]\n }\n },\n mounted() {\n let { option } = this.getConfig(this.column);\n this.list = option\n },\n methods: {\n submit() {\n const { key } = this.getConfig(this.column);\n this.setFormParams({ [key]: this.value })\n this.visible = false\n },\n reset() {\n this.value = '';\n }\n }\n}\n</script>\n<style lang=\"scss\" scoped>\n.popBtn {\n vertical-align: bottom;\n margin-left: 5px;\n}\n\n.radiobox {\n max-height: 150px;\n display: block;\n overflow-y: auto;\n\n .el-radio {\n display: block;\n }\n\n .el-radio__input {\n margin-right: 10px;\n }\n}\n</style>",".popBtn {\n vertical-align: bottom;\n margin-left: 5px;\n}\n\n.radiobox {\n max-height: 150px;\n display: block;\n overflow-y: auto;\n}\n.radiobox .el-radio {\n display: block;\n}\n.radiobox .el-radio__input {\n margin-right: 10px;\n}\n\n/*# sourceMappingURL=Radio.vue.map */"]},media:undefined});};/* scoped */const __vue_scope_id__$c="data-v-cae23584";/* module identifier */const __vue_module_identifier__$c=undefined;/* functional template */const __vue_is_functional_template__$c=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$c=/*#__PURE__*/normalizeComponent({render:__vue_render__$c,staticRenderFns:__vue_staticRenderFns__$c},__vue_inject_styles__$c,__vue_script__$c,__vue_scope_id__$c,__vue_is_functional_template__$c,__vue_module_identifier__$c,false,createInjector,undefined,undefined);//
|
|
2168
2659
|
var script$b={props:{column:Object,setFormParams:Function,getConfig:Function,config:{type:Object,default:()=>{return{rule:{type:'date'}};}},ops:Object// 请求参数
|
|
2169
2660
|
},components:{Dp:__vue_component__$e},watch:{ops:function(newVal){const{key}=this.getConfig(this.column);const ops=newVal;if(ops[key]){this.value=moment(ops[key]);}else{this.value='';}}},data(){return{trans,visible:false,value:''};},methods:{submit(){const{rule,key}=this.getConfig(this.column);const{format}=rule;if(this.value){const str=`${moment(this.value).format(format)}`;this.setFormParams({[key]:str});this.visible=false;}},reset(){this.value='';}}};/* script */const __vue_script__$b=script$b;/* template */var __vue_render__$b=function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c("span",[_c("el-popover",{attrs:{placement:"bottom",width:"400",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}},[_c("el-date-picker",{staticStyle:{"margin-bottom":"10px"},attrs:{type:_vm.config.rule.type,align:"right","unlink-panels":"","range-separator":_vm.trans("至"),"start-placeholder":_vm.trans("开始日期"),"end-placeholder":_vm.trans("结束日期")},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:"primary",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__$b=[];__vue_render__$b._withStripped=true;/* style */const __vue_inject_styles__$b=undefined;/* scoped */const __vue_scope_id__$b=undefined;/* module identifier */const __vue_module_identifier__$b=undefined;/* functional template */const __vue_is_functional_template__$b=false;/* style inject */ /* style inject SSR */ /* style inject shadow dom */const __vue_component__$b=/*#__PURE__*/normalizeComponent({render:__vue_render__$b,staticRenderFns:__vue_staticRenderFns__$b},__vue_inject_styles__$b,__vue_script__$b,__vue_scope_id__$b,__vue_is_functional_template__$b,__vue_module_identifier__$b,false,undefined,undefined,undefined);//
|
|
2170
2661
|
var script$a={props:{column:Object,setFormParams:Function,config:Object,ops:Object,// 请求参数,
|
|
@@ -2209,7 +2700,7 @@ getConfig:Function},components:{Dp:__vue_component__$e},watch:{ops:function(newV
|
|
|
2209
2700
|
*/submit(){const key=this.key;try{cache.mergeFromList(key,this.columnCode,this.asyncList);if(Array.isArray(this.value)){this.value.forEach(v=>{const find=Array.isArray(this.asyncList)?this.asyncList.find(i=>i.schemeValue===v||i.value===v):null;const l=find?find.schemeLabel||find.label:this.optionCache[v];if(l!==undefined){cache.setLabel(key,this.columnCode,v,l);}});}}catch(e){}this.setFormParams({[key]:this.value.join(',')});this.visible=false;},reset(){this.value=[];}}};/* script */const __vue_script__$5=script$5;/* template */var __vue_render__$5=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}},[_c("el-select",{staticStyle:{width:"100%","margin-bottom":"10px"},attrs:{filterable:"",clearable:"",remote:"",multiple:"","multiple-limit":_vm.limit,"reserve-keyword":"",placeholder:_vm.trans("请选择"),"remote-method":_vm.fnClick},on:{focus:function($event){return _vm.fnClick("");}},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}},_vm._l(_vm.asyncList,function(item){return _c("el-option",{key:item.schemeValue||item.value||item.schemeKey,attrs:{label:item.schemeLabel||item.label,value:item.schemeValue||item.value}});}),1),_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:"primary",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__$5=[];__vue_render__$5._withStripped=true;/* style */const __vue_inject_styles__$5=undefined;/* scoped */const __vue_scope_id__$5=undefined;/* module identifier */const __vue_module_identifier__$5=undefined;/* functional template */const __vue_is_functional_template__$5=false;/* style inject */ /* style inject SSR */ /* style inject shadow dom */const __vue_component__$5=/*#__PURE__*/normalizeComponent({render:__vue_render__$5,staticRenderFns:__vue_staticRenderFns__$5},__vue_inject_styles__$5,__vue_script__$5,__vue_scope_id__$5,__vue_is_functional_template__$5,__vue_module_identifier__$5,false,undefined,undefined,undefined);//
|
|
2210
2701
|
var script$4={name:"cascader",props:{config:Object,setFormParams:Function,column:Object,ops:Object,// 请求参数
|
|
2211
2702
|
getConfig:Function},components:{Dp:__vue_component__$e},watch:{ops:function(newVal,old){const key=this.key;const ops=newVal;if(ops[key]){this.value=ops[key].split(",");// 约定 基本上check类型的值都是、分割的字符串
|
|
2212
|
-
}else{this.value=[];}},visible:{deep:true,handler(value){if(this.ruleFn&&value){let{option}=this.getConfig(this.column);this.list=option;}}}},mounted(){let{key,option,rule}=this.getConfig(this.column);this.option=option;this.key=key;this.componentOriginProps={...this.componentOriginProps,...rule.componentOriginProps};if(rule.configProps){this.configProps={...this.configProps,...rule.configProps};}},data(){return{trans,visible:false,limit:50,option:[],value:"",ruleCorrespond:"",key:"",multiple:false,componentOriginProps:{label:"a",value:"b",multiple:true,expandTrigger:"hover"},configProps:{filterable:true}};},methods:{fnClick(res){this.ruleCorrespond(res);},submit(){const key=this.key;this.setFormParams({[key]:this.value.join(",")});this.visible=false;},reset(){this.value=[];}}};/* script */const __vue_script__$4=script$4;/* template */var __vue_render__$4=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}},[_c("el-cascader",_vm._b({staticStyle:{width:"300px"},attrs:{clearable:"",placeholder:_vm.trans("请选择"),options:_vm.option,props:_vm.componentOriginProps},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}},"el-cascader",_vm.configProps,false)),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{type:"primary",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__$4=[];__vue_render__$4._withStripped=true;/* style */const __vue_inject_styles__$4=function(inject){if(!inject)return;inject("data-v-
|
|
2703
|
+
}else{this.value=[];}},visible:{deep:true,handler(value){if(this.ruleFn&&value){let{option}=this.getConfig(this.column);this.list=option;}}}},mounted(){let{key,option,rule}=this.getConfig(this.column);this.option=option;this.key=key;this.componentOriginProps={...this.componentOriginProps,...rule.componentOriginProps};if(rule.configProps){this.configProps={...this.configProps,...rule.configProps};}},data(){return{trans,visible:false,limit:50,option:[],value:"",ruleCorrespond:"",key:"",multiple:false,componentOriginProps:{label:"a",value:"b",multiple:true,expandTrigger:"hover"},configProps:{filterable:true}};},methods:{fnClick(res){this.ruleCorrespond(res);},submit(){const key=this.key;this.setFormParams({[key]:this.value.join(",")});this.visible=false;},reset(){this.value=[];}}};/* script */const __vue_script__$4=script$4;/* template */var __vue_render__$4=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}},[_c("el-cascader",_vm._b({staticStyle:{width:"300px"},attrs:{clearable:"",placeholder:_vm.trans("请选择"),options:_vm.option,props:_vm.componentOriginProps},model:{value:_vm.value,callback:function($$v){_vm.value=$$v;},expression:"value"}},"el-cascader",_vm.configProps,false)),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{size:"mini"},on:{click:_vm.reset}},[_vm._v(_vm._s(_vm.trans("重置")))]),_vm._v(" "),_c("el-button",{staticClass:"popBtn",attrs:{type:"primary",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__$4=[];__vue_render__$4._withStripped=true;/* style */const __vue_inject_styles__$4=function(inject){if(!inject)return;inject("data-v-ae379f2c_0",{source:".popBtn[data-v-ae379f2c] {\n vertical-align: bottom;\n margin-left: 5px;\n}\n\n/*# sourceMappingURL=Cascader.vue.map */",map:{"version":3,"sources":["/Users/wenquan/Desktop/hl/npm/components/FormTableScheme/component/ColHeader/Cascader.vue","Cascader.vue"],"names":[],"mappings":"AAqHA;EACA,sBAAA;EACA,gBAAA;ACpHA;;AAEA,uCAAuC","file":"Cascader.vue","sourcesContent":["<template>\n <span>\n <el-popover\n placement=\"bottom\"\n width=\"100%\"\n trigger=\"click\"\n v-model=\"visible\"\n popper-class=\"pointRecord\"\n >\n <div :data-name=\"column.columnPropertyName\">\n <el-cascader\n style=\"width: 300px\"\n v-model=\"value\"\n clearable\n :placeholder=\"trans('请选择')\"\n :options=\"option\"\n :props=\"componentOriginProps\"\n v-bind=\"configProps\"\n >\n </el-cascader>\n <el-button class=\"popBtn\" size=\"mini\" @click=\"reset\">{{\n trans(\"重置\")\n }}</el-button>\n <el-button class=\"popBtn\" type=\"primary\" size=\"mini\" @click=\"submit\">{{\n trans(\"确定\")\n }}</el-button>\n </div>\n <dp :value=\"value\" slot=\"reference\" />\n </el-popover>\n </span>\n</template>\n<script>\nimport Dp from \"./dp.vue\";\nimport trans from \"../../../lang/trans\";\n\nexport default {\n name: \"cascader\",\n props: {\n config: Object,\n setFormParams: Function,\n column: Object,\n ops: Object, // 请求参数\n getConfig: Function,\n },\n components: { Dp },\n watch: {\n ops: function (newVal, old) {\n const key = this.key;\n const ops = newVal;\n if (ops[key]) {\n this.value = ops[key].split(\",\"); // 约定 基本上check类型的值都是、分割的字符串\n } else {\n this.value = [];\n }\n },\n visible: {\n deep: true,\n handler(value) {\n if (this.ruleFn && value) {\n let { option } = this.getConfig(this.column);\n this.list = option;\n }\n },\n },\n },\n mounted() {\n let { key, option, rule } = this.getConfig(this.column);\n this.option = option;\n this.key = key;\n this.componentOriginProps = {\n ...this.componentOriginProps,\n ...rule.componentOriginProps,\n };\n if (rule.configProps) {\n this.configProps = {\n ...this.configProps,\n ...rule.configProps,\n };\n }\n },\n data() {\n return {\n trans,\n visible: false,\n limit: 50,\n option: [],\n value: \"\",\n ruleCorrespond: \"\",\n key: \"\",\n multiple: false,\n componentOriginProps: {\n label: \"a\",\n value: \"b\",\n multiple: true,\n expandTrigger: \"hover\",\n },\n configProps: {\n filterable: true,\n },\n };\n },\n methods: {\n fnClick(res) {\n this.ruleCorrespond(res);\n },\n submit() {\n const key = this.key;\n this.setFormParams({ [key]: this.value.join(\",\") });\n this.visible = false;\n },\n reset() {\n this.value = [];\n },\n },\n};\n</script>\n<style lang=\"scss\" scoped>\n.popBtn {\n vertical-align: bottom;\n margin-left: 5px;\n}\n</style>",".popBtn {\n vertical-align: bottom;\n margin-left: 5px;\n}\n\n/*# sourceMappingURL=Cascader.vue.map */"]},media:undefined});};/* scoped */const __vue_scope_id__$4="data-v-ae379f2c";/* module identifier */const __vue_module_identifier__$4=undefined;/* functional template */const __vue_is_functional_template__$4=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$4=/*#__PURE__*/normalizeComponent({render:__vue_render__$4,staticRenderFns:__vue_staticRenderFns__$4},__vue_inject_styles__$4,__vue_script__$4,__vue_scope_id__$4,__vue_is_functional_template__$4,__vue_module_identifier__$4,false,createInjector,undefined,undefined);var has$1=Object.prototype.hasOwnProperty;var hexTable=function(){var array=[];for(var i=0;i<256;++i){array.push('%'+((i<16?'0':'')+i.toString(16)).toUpperCase());}return array;}();var compactQueue=function compactQueue(queue){var obj;while(queue.length){var item=queue.pop();obj=item.obj[item.prop];if(Array.isArray(obj)){var compacted=[];for(var j=0;j<obj.length;++j){if(typeof obj[j]!=='undefined'){compacted.push(obj[j]);}}item.obj[item.prop]=compacted;}}return obj;};var arrayToObject=function arrayToObject(source,options){var obj=options&&options.plainObjects?Object.create(null):{};for(var i=0;i<source.length;++i){if(typeof source[i]!=='undefined'){obj[i]=source[i];}}return obj;};var merge=function merge(target,source,options){if(!source){return target;}if(typeof source!=='object'){if(Array.isArray(target)){target.push(source);}else if(target&&typeof target==='object'){if(options&&(options.plainObjects||options.allowPrototypes)||!has$1.call(Object.prototype,source)){target[source]=true;}}else{return[target,source];}return target;}if(!target||typeof target!=='object'){return[target].concat(source);}var mergeTarget=target;if(Array.isArray(target)&&!Array.isArray(source)){mergeTarget=arrayToObject(target,options);}if(Array.isArray(target)&&Array.isArray(source)){source.forEach(function(item,i){if(has$1.call(target,i)){var targetItem=target[i];if(targetItem&&typeof targetItem==='object'&&item&&typeof item==='object'){target[i]=merge(targetItem,item,options);}else{target.push(item);}}else{target[i]=item;}});return target;}return Object.keys(source).reduce(function(acc,key){var value=source[key];if(has$1.call(acc,key)){acc[key]=merge(acc[key],value,options);}else{acc[key]=value;}return acc;},mergeTarget);};var assign=function assignSingleSource(target,source){return Object.keys(source).reduce(function(acc,key){acc[key]=source[key];return acc;},target);};var decode$2=function(str){try{return decodeURIComponent(str.replace(/\+/g,' '));}catch(e){return str;}};var encode=function encode(str){// This code was originally written by Brian White (mscdex) for the io.js core querystring library.
|
|
2213
2704
|
// It has been adapted here for stricter adherence to RFC 3986
|
|
2214
2705
|
if(str.length===0){return str;}var string=typeof str==='string'?str:String(str);var out='';for(var i=0;i<string.length;++i){var c=string.charCodeAt(i);if(c===0x2D// -
|
|
2215
2706
|
||c===0x2E// .
|
|
@@ -2275,30 +2766,52 @@ if(findRes&&findRes.isQuery){let config=getOptions(findRes,ruleFn);let{type,colu
|
|
|
2275
2766
|
// rule = ruleFn[columnProperty](newRule)
|
|
2276
2767
|
// }
|
|
2277
2768
|
let value,str;// dateRange 数据比较特殊 searchKey = [xxStart,xxEnd],所以值和str要特殊处理
|
|
2278
|
-
if(type==='dateRange'||type==='inputScope'){value=formatTable[type].formToValue(formValues,searchKey);str=formatTable[type].valueToStr(value,config);}else{value=formatTable[type].formToValue(formValues[key]);str=formatTable[type].valueToStr(value,config);}tagNeedCols[columnPropertyName]={name:columnPropertyName,value,str,key:searchKey,type};}}}callbackFn(tagNeedCols);return tagNeedCols;}
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2769
|
+
if(type==='dateRange'||type==='inputScope'){value=formatTable[type].formToValue(formValues,searchKey);str=formatTable[type].valueToStr(value,config);}else{value=formatTable[type].formToValue(formValues[key]);str=formatTable[type].valueToStr(value,config);}tagNeedCols[columnPropertyName]={name:columnPropertyName,value,str,key:searchKey,type};}}}callbackFn(tagNeedCols);return tagNeedCols;};/**
|
|
2770
|
+
* SelectKey 逻辑封装
|
|
2771
|
+
*/class SelectKeyManager{/**
|
|
2772
|
+
* 初始化校验函数,返回最终合法 value
|
|
2773
|
+
* @param {Object} options
|
|
2774
|
+
* @param {Array} options.selectKeyList - 下拉选项列表
|
|
2775
|
+
* @param {Object} options.fetchParam - 初始参数
|
|
2776
|
+
* @param {string} options.keywordsKEY - 默认的 keywords key
|
|
2777
|
+
* @returns {string|number}
|
|
2778
|
+
*/static initValue(options){const{selectKeyList,fetchParam,keywordsKEY}=options;// 列表为空或未定义,返回空字符串
|
|
2779
|
+
if(!selectKeyList||selectKeyList.length===0){return"";}// 1. 优先使用 fetchParam 中存在的 key
|
|
2780
|
+
// 遍历 selectKeyList,看哪个 value 在 fetchParam 中有值
|
|
2781
|
+
if(fetchParam){const hit=selectKeyList.find(item=>{const val=fetchParam[String(item.value)];return val!==undefined&&val!==null&&val!=="";});if(hit)return hit.value;}// 2. 其次尝试使用 keywordsKEY (如果它在列表中)
|
|
2782
|
+
const hasKeyword=selectKeyList.find(item=>item.value===keywordsKEY);if(hasKeyword)return keywordsKEY;// 3. 最后默认使用第一个
|
|
2783
|
+
return selectKeyList[0].value;}/**
|
|
2784
|
+
* 切换列表时的重置逻辑
|
|
2785
|
+
* @returns {string} 空字符串
|
|
2786
|
+
*/static resetOnListChange(){return"";}}//
|
|
2787
|
+
var script$3={name:"FormTableScheme",components:{SelectCol:__vue_component__$f,Check:__vue_component__$d,Date:__vue_component__$b,Inputsp:__vue_component__$9,Pagination,DateRange:__vue_component__$a,Tips:__vue_component__$8,Radio:__vue_component__$c,InputScope:__vue_component__$6,Selectsp:__vue_component__$5,Cascader:__vue_component__$4},model:{event:"sortChange"},data(){return{SelectKeyManager,trans,dialogFormVisible:false,formatSwitch,list:[],saveMyTemplateColumns:this.requestFn.pageTemplatecs.saveMyTemplateColumns,columns:[],columnsShow:[],checkList:["复选框 A"],tags:[],count:this.countNum,keywords:this.keywords,searchParams:{...this.fetchParam,[this.keywordsKEY]:"",pageSize:20,skipCount:1},listLoading:false,ops:{},multipleSelection:[],tableKey:"first",searchType:"text",selectKey:""};},watch:{fetchParam:{deep:true,immediate:true,handler(){this.searchParams={...this.searchParams,...this.fetchParam};this.initSelectKey();}},selectKeyList:{deep:true,immediate:true,handler(newList,oldList){// 如果是初始化(oldList undefined),走 initSelectKey
|
|
2788
|
+
// 如果是动态切换(newList !== oldList),走 reset
|
|
2789
|
+
// 但 immediate: true 会导致首次也触发 handler,此时 oldList 为 undefined
|
|
2790
|
+
// 实际上 mounted 也会调 initSelectKey (via changePG -> getList?)
|
|
2791
|
+
// 我们统一策略:
|
|
2792
|
+
// 1. 如果 selectKey 为空,或者列表变了需要重置,则处理
|
|
2793
|
+
// initSelectKey 内部已经判断了空值逻辑
|
|
2794
|
+
if(oldList===undefined){this.initSelectKey();}else{// 切换列表,清空并触发事件
|
|
2795
|
+
const prev=this.selectKey;this.selectKey=SelectKeyManager.resetOnListChange();this.$emit('selectKeyChange',{prev,current:this.selectKey,list:newList});}}}},props:{bigSearch:{default:false,type:Boolean},fetchParam:{// 上传时附带的参数
|
|
2283
2796
|
default:()=>{return{};},type:Object},hasSearch:{default:true,type:Boolean},rowKey:{default:"columnProperty",type:String},selectKeyList:{default:()=>{return[];},type:Array},countNum:{// 总数
|
|
2284
2797
|
default:0,type:Number},formatData:Function,isAutoScroll:{default:true,type:Boolean},setHeight:{default:"",type:String},getApi:Function,hooks:{default:()=>{},type:Function},columnsApi:Function,requestFn:{default:()=>{return pageTemplatecs$1;},type:Object},templateKey:String,selectcheck:Function,selectType:String,hasSelection:Boolean,hasIndex:{type:Boolean,default:false},selectable:Function,searchPlaceholder:String,actionWidth:{type:String,default:"100"},keywordsKEY:{type:String,default:"keywords"},ruleFn:{type:Object,default:function(){return{};}},colDisplayFn:{type:Function,default:function(col){return col;}},sortableList:{type:Object,default:function(){return{};}},isInitQuest:{type:Boolean,default:true}},setup(){},created(){// document.addEventListener('keyup', this.enter)
|
|
2285
2798
|
},destroyed(){// document.removeEventListener('keyup', this.enter)
|
|
2286
|
-
},mounted(){this.changePG();},activated(){this.$refs.FormTable.doLayout();},methods:{
|
|
2799
|
+
},mounted(){this.changePG();},activated(){this.$refs.FormTable.doLayout();},methods:{initSelectKey(){// 使用 SelectKeyManager 进行初始化
|
|
2800
|
+
this.selectKey=SelectKeyManager.initValue({selectKeyList:this.selectKeyList,fetchParam:this.fetchParam,keywordsKEY:this.keywordsKEY});},getCurrentKeywordsKey(){return this.selectKey||this.keywordsKEY;},handleSelectKeyChange(newKey){// 如果之前有值,需要将值转移到新的字段
|
|
2287
2801
|
if(this.searchParams[this.keywordsKEY]&&newKey!==this.keywordsKEY){this.searchParams[newKey]=this.searchParams[this.keywordsKEY];this.searchParams[this.keywordsKEY]="";}},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;// 处理数据
|
|
2288
|
-
let ops={};for(var key in searchParams){if(searchParams[key]!==""&&searchParams[key]!==null&&searchParams[key]!==undefined){ops[key]=searchParams[key];}}
|
|
2289
|
-
if(this.selectKeyList&&this.selectKeyList.length>0){//
|
|
2290
|
-
|
|
2802
|
+
let ops={};for(var key in searchParams){if(searchParams[key]!==""&&searchParams[key]!==null&&searchParams[key]!==undefined){ops[key]=searchParams[key];}}console.log(ops);// 确保使用正确的关键词字段,并删除其他在selectKeyList中的key值
|
|
2803
|
+
if(this.selectKeyList&&this.selectKeyList.length>0){// 在开始处理之前,再次调用 initSelectKey 以确保 selectKey 与当前的 ops 保持同步
|
|
2804
|
+
// 这一步至关重要,因为 ops 可能包含从 fetchParam 合并进来的新值,
|
|
2805
|
+
// 而 initSelectKey 依赖 this.fetchParam,可能还没来得及响应
|
|
2806
|
+
// 实际上 ops 才是最准确的参数来源
|
|
2807
|
+
const allSelectKeys=this.selectKeyList.map(item=>item.value);// 如果 selectKey 当前指向的值为空,但在 ops 中存在其他有效 key,
|
|
2808
|
+
// 应该先切换 selectKey,防止后续逻辑误删
|
|
2809
|
+
if(!ops[this.selectKey]){const activeKey=allSelectKeys.find(key=>ops[key]);if(activeKey){this.selectKey=activeKey;}}// 1. 如果有 keywordsKEY 的值,优先使用 keywordsKEY,并覆盖到当前 selectKey
|
|
2291
2810
|
if(ops[this.keywordsKEY]){// 将 keywordsKEY 的值赋给 selectKey
|
|
2292
2811
|
ops[this.selectKey]=ops[this.keywordsKEY];// 清除 keywordsKEY,避免重复
|
|
2293
2812
|
if(this.selectKey!==this.keywordsKEY){delete ops[this.keywordsKEY];}}// 2. 检查当前 selectKey 是否有值
|
|
2294
2813
|
// 如果没有值,尝试从其他 selectKeyList 中找到第一个有值的 key 切换过去
|
|
2295
|
-
|
|
2296
|
-
// const activeKey = allSelectKeys.find((key) => ops[key]);
|
|
2297
|
-
// if (activeKey) {
|
|
2298
|
-
// this.selectKey = activeKey;
|
|
2299
|
-
// }
|
|
2300
|
-
// }
|
|
2301
|
-
// 3. 最终清理:只保留当前 selectKey 的值,清除 selectKeyList 中其他 key 的值
|
|
2814
|
+
if(!ops[this.selectKey]){const activeKey=allSelectKeys.find(key=>ops[key]);if(activeKey){this.selectKey=activeKey;}}// 3. 最终清理:只保留当前 selectKey 的值,清除 selectKeyList 中其他 key 的值
|
|
2302
2815
|
allSelectKeys.forEach(key=>{if(key!==this.selectKey&&ops[key]){delete ops[key];}});}else if(this.selectKey&&this.selectKey!==this.keywordsKEY&&ops[this.keywordsKEY]){// 兼容原有逻辑
|
|
2303
2816
|
ops[this.selectKey]=ops[this.keywordsKEY];delete ops[this.keywordsKEY];}// 根据参数画tag
|
|
2304
2817
|
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;this.tableKey=Math.random();this.$refs.FormTable.doLayout();},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
|
|
@@ -2315,7 +2828,7 @@ formToValue(ops,this.columnsShow,this.colChange,this.ruleFn);const{pageSize,skip
|
|
|
2315
2828
|
// } else {
|
|
2316
2829
|
// this.tags = this.tags.concat([{'name':arrow, value:data.value, str:data.str, key:data.searchKey, type: data.type }])
|
|
2317
2830
|
// }
|
|
2318
|
-
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__$3=script$3;/* template */var __vue_render__$3=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.getCurrentKeywordsKey()],callback:function($$v){_vm.$set(_vm.searchParams,_vm.getCurrentKeywordsKey(),typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[getCurrentKeywordsKey()]"}},[_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'"}],class:{"input-with-select":true,width400:_vm.selectKeyList.length>0},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.getCurrentKeywordsKey()],callback:function($$v){_vm.$set(_vm.searchParams,_vm.getCurrentKeywordsKey(),typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[getCurrentKeywordsKey()]"}},[_vm.selectKeyList.length>0?_c("el-select",{staticStyle:{width:"120px"},attrs:{slot:"prepend",placeholder:"请选择"},on:{change:_vm.handleSelectKeyChange},slot:"prepend",model:{value:_vm.selectKey,callback:function($$v){_vm.selectKey=$$v;},expression:"selectKey"}},_vm._l(_vm.selectKeyList,function(item){return _c("el-option",{key:item.value,attrs:{label:item.label,value:item.value}});}),1):_vm._e(),_vm._v(" "),_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);}}},[_c("div",{staticClass:"tagItem"},[_vm._v(_vm._s(tag.name+":"+tag.str))])]);}),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__$3=[];__vue_render__$3._withStripped=true;/* style */const __vue_inject_styles__$3=function(inject){if(!inject)return;inject("data-v-3dd95654_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":";AA0rBA;EACA,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\n v-if=\"hasSearch\"\n v-show=\"searchType == 'textarea'\"\n type=\"textarea\"\n @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\"\n :class=\"{\n 'input-with-select': true,\n textareaSpec: searchType == 'textarea',\n }\"\n v-model.trim=\"searchParams[getCurrentKeywordsKey()]\"\n @blur=\"changeType(0)\"\n :rows=\"10\"\n ref=\"myTextarea\"\n >\n <el-button\n slot=\"append\"\n icon=\"el-icon-search\"\n @click=\"getList({ skipCount: 1 })\"\n ></el-button>\n </el-input>\n <el-input\n v-if=\"hasSearch\"\n v-show=\"searchType == 'text'\"\n @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\"\n :class=\"{\n 'input-with-select': true,\n width400: selectKeyList.length > 0,\n }\"\n v-model.trim=\"searchParams[getCurrentKeywordsKey()]\"\n @focus=\"changeType(1)\"\n >\n <el-select\n v-model=\"selectKey\"\n slot=\"prepend\"\n placeholder=\"请选择\"\n v-if=\"selectKeyList.length > 0\"\n style=\"width: 120px\"\n @change=\"handleSelectKeyChange\"\n >\n <el-option\n v-for=\"item in selectKeyList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n ></el-option>\n </el-select>\n <el-button\n slot=\"append\"\n icon=\"el-icon-search\"\n @click=\"getList({ skipCount: 1 })\"\n ></el-button>\n </el-input>\n <el-divider direction=\"vertical\"></el-divider>\n <el-button size=\"mini\" @click=\"actionModal\">\n <svg\n class=\"icon\"\n aria-hidden=\"true\"\n style=\"color: #10c2b0; cursor: pointer\"\n >\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\n v-for=\"tag in tags\"\n :key=\"tag.name\"\n closable\n @close=\"closeTag(tag)\"\n type=\"info\"\n >\n <div class=\"tagItem\">{{ `${tag.name}:${tag.str}` }}</div>\n </el-tag>\n </div>\n <el-button class=\"clearAll\" v-if=\"tags.length > 1\" @click=\"closeAllTag\">{{\n trans(\"取消全部筛选\")\n }}</el-button>\n <el-table\n ref=\"FormTable\"\n v-loading=\"listLoading\"\n :data=\"list\"\n :row-key=\"rowKey\"\n border\n fit\n @sort-change=\"$emit('sortChange', $event)\"\n @selection-change=\"handleSelectionChange\"\n @header-dragend=\"dragHead\"\n @select-all=\"handleSelectAll\"\n @select=\"handleSelect\"\n class=\"table\"\n :key=\"tableKey\"\n >\n <el-table-column\n v-if=\"hasSelection\"\n type=\"selection\"\n width=\"50\"\n :selectable=\"selectable\"\n >\n </el-table-column>\n <el-table-column\n v-if=\"hasIndex\"\n :label=\"trans('序号')\"\n type=\"index\"\n width=\"50\"\n >\n </el-table-column>\n <slot name=\"additional\"></slot>\n <el-table-column\n v-for=\"item in colDisplayFn(columnsShow)\"\n :key=\"item.columnCode\"\n :label=\"item.columnPropertyName\"\n :fixed=\"item.isFixed == 1 && 'left'\"\n :min-width=\"(item.defaultWidth || item.minWidth) + 20\"\n show-overflow-tooltip\n :sortable=\"sortableList[item.columnProperty] || false\"\n :prop=\"item.columnProperty\"\n align=\"center\"\n >\n <template slot=\"header\" slot-scope=\"{ column }\">\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\n v-if=\"item.queryConfig && item.queryConfig.type && item.isQuery\"\n v-bind:is=\"item.queryConfig.type\"\n :config=\"item.queryConfig\"\n :column=\"item\"\n :setFormParams=\"setFormParams\"\n :ops=\"ops\"\n :getConfig=\"getConfig\"\n :ruleFn=\"ruleFn[item.columnProperty]\"\n ></component>\n </template>\n <template slot-scope=\"{ row }\">\n <span v-if=\"$scopedSlots[item.columnProperty]\">\n <slot\n :name=\"item.columnProperty\"\n :props=\"row\"\n :queryConfig=\"item.queryConfig\"\n :options=\"getConfig(item)\"\n :label=\"getLabel(item, row)\"\n ></slot>\n </span>\n <span v-else>{{ getLabel(item, row) }}</span>\n </template>\n </el-table-column>\n <el-table-column\n :label=\"trans('操作')\"\n align=\"center\"\n :width=\"actionWidth\"\n class-name=\"small-padding\"\n v-if=\"$scopedSlots.actionBtn\"\n fixed=\"right\"\n >\n <template slot-scope=\"{ row }\">\n <slot name=\"actionBtn\" :props=\"row\"> </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\n v-show=\"count > 0\"\n :autoScroll=\"isAutoScroll\"\n class=\"text-right mt-0 pagi\"\n :total=\"count\"\n :page.sync=\"searchParams.skipCount\"\n :limit.sync=\"searchParams.pageSize\"\n @pagination=\"getList\"\n />\n </div>\n\n <select-col\n v-if=\"columns.length > 0\"\n :saveMyTemplateColumns=\"saveMyTemplateColumns\"\n :templateKey=\"templateKey\"\n :getNewCol=\"getNewCol\"\n :initialColumns=\"columns\"\n :columnsShow=\"columnsShow\"\n :visible.sync=\"dialogFormVisible\"\n ></select-col>\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 {\n SelectCol,\n Check,\n Date,\n Inputsp,\n DateRange,\n Tips,\n pageTemplatecs,\n Radio,\n InputScope,\n Selectsp,\n Cascader,\n} 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: {\n SelectCol,\n Check,\n Date,\n Inputsp,\n Pagination,\n DateRange,\n Tips,\n Radio,\n InputScope,\n Selectsp,\n Cascader,\n },\n model: {\n event: \"sortChange\",\n },\n data() {\n return {\n trans,\n dialogFormVisible: false,\n formatSwitch,\n list: [],\n saveMyTemplateColumns:\n 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 selectKey: (() => {\n if (!this.selectKeyList || this.selectKeyList.length === 0) return \"\";\n // 1. 优先使用 fetchParam 中存在的 key\n if (this.fetchParam) {\n const hit = this.selectKeyList.find((i) => this.fetchParam[i.value]);\n if (hit) return hit.value;\n }\n // 2. 其次尝试使用 keywordsKEY (如果它在列表中)\n const hasKeyword = this.selectKeyList.find(\n (i) => i.value === this.keywordsKEY\n );\n if (hasKeyword) return this.keywordsKEY;\n // 3. 最后默认使用第一个\n return this.selectKeyList[0].value;\n })(),\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 // 上传时附带的参数\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 selectKeyList: {\n default: () => {\n return [];\n },\n type: Array,\n },\n countNum: {\n // 总数\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 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 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 getCurrentKeywordsKey() {\n return this.selectKey || this.keywordsKEY;\n },\n handleSelectKeyChange(newKey) {\n // 如果之前有值,需要将值转移到新的字段\n if (this.searchParams[this.keywordsKEY] && newKey !== this.keywordsKEY) {\n this.searchParams[newKey] = this.searchParams[this.keywordsKEY];\n this.searchParams[this.keywordsKEY] = \"\";\n }\n },\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(\n (c) => c.columnPropertyName == column.label\n );\n let formatWidth = Math.ceil(newWidth);\n this.requestFn.pageTemplatecs\n .saveMyTemplateColumnWidth({\n templateKey: this.templateKey,\n columnCode: findColumn.columnCode,\n width: formatWidth,\n })\n .then((response) => {});\n },\n changePG(pages) {\n this.requestFn.pageTemplatecs\n .selectUserTemplateColumns({ templateKey: this.templateKey })\n .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\n .selectMyTableColumns({ templateKey: this.templateKey })\n .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 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 this.searchParams = searchParams;\n\n // 处理数据\n let ops = {};\n for (var key in searchParams) {\n if (\n searchParams[key] !== \"\" &&\n searchParams[key] !== null &&\n searchParams[key] !== undefined\n ) {\n ops[key] = searchParams[key];\n }\n }\n\n // 确保使用正确的关键词字段,并删除其他在selectKeyList中的key值\n if (this.selectKeyList && this.selectKeyList.length > 0) {\n // 获取所有selectKeyList中的key值\n const allSelectKeys = this.selectKeyList.map((item) => item.value);\n\n // 1. 如果有 keywordsKEY 的值,优先使用 keywordsKEY,并覆盖到当前 selectKey\n if (ops[this.keywordsKEY]) {\n // 将 keywordsKEY 的值赋给 selectKey\n ops[this.selectKey] = ops[this.keywordsKEY];\n // 清除 keywordsKEY,避免重复\n if (this.selectKey !== this.keywordsKEY) {\n delete ops[this.keywordsKEY];\n }\n }\n\n // 2. 检查当前 selectKey 是否有值\n // 如果没有值,尝试从其他 selectKeyList 中找到第一个有值的 key 切换过去\n // if (!ops[this.selectKey]) {\n // const activeKey = allSelectKeys.find((key) => ops[key]);\n // if (activeKey) {\n // this.selectKey = activeKey;\n // }\n // }\n\n // 3. 最终清理:只保留当前 selectKey 的值,清除 selectKeyList 中其他 key 的值\n allSelectKeys.forEach((key) => {\n if (key !== this.selectKey && ops[key]) {\n delete ops[key];\n }\n });\n } else if (\n this.selectKey &&\n this.selectKey !== this.keywordsKEY &&\n ops[this.keywordsKEY]\n ) {\n // 兼容原有逻辑\n ops[this.selectKey] = ops[this.keywordsKEY];\n delete ops[this.keywordsKEY];\n }\n\n // 根据参数画tag\n formToValue(ops, this.columnsShow, this.colChange, this.ruleFn);\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(\n (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 this.tableKey = Math.random();\n this.$refs.FormTable.doLayout();\n },\n (err) => {\n this.listLoading = false;\n }\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 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(\n { [key[0]]: \"\", [key[1]]: \"\", [key[2]]: \"\" },\n \"remove\"\n );\n } else {\n this.setFormParams({ [key]: \"\" }, \"remove\");\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 actionModal() {\n this.dialogFormVisible = true;\n this.columns;\n this.columns = this.columns.map((i) => {\n const isSelect = this.columnsShow.find(\n (j) => j.columnPropertyName === i.columnPropertyName\n );\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.width400 {\n width: 400px;\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 max-width: 420px;\n /deep/.el-tag__close {\n vertical-align: super;\n }\n }\n .tagItem {\n max-width: 397px;\n display: inline-block;\n white-space: nowrap; /* 防止文本换行 */\n overflow: hidden; /* 隐藏超出的内容 */\n text-overflow: ellipsis; /* 将超出的内容显示为省略号 */\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-3dd95654_1",{source:".container[data-v-3dd95654] {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n.input-with-select[data-v-3dd95654] {\n width: 300px;\n}\n.width400[data-v-3dd95654] {\n width: 400px;\n}\n.optBox[data-v-3dd95654] {\n margin-bottom: 10px;\n overflow: hidden;\n}\n.leftBtn[data-v-3dd95654] {\n float: left;\n}\n.rightBtn[data-v-3dd95654] {\n float: right;\n}\n.rightBtn .textareaSpec[data-v-3dd95654] {\n position: absolute;\n right: 100px;\n z-index: 1000;\n width: 700px;\n height: 400px;\n}\n.rightBtn .border[data-v-3dd95654] {\n border: 1px solid #dcdfe6;\n}\n.tagBox[data-v-3dd95654] {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n}\n.tagBox > .el-tag[data-v-3dd95654] {\n margin: 4px 10px 0 0;\n max-width: 420px;\n}\n.tagBox > .el-tag[data-v-3dd95654] .el-tag__close {\n vertical-align: super;\n}\n.tagBox .tagItem[data-v-3dd95654] {\n max-width: 397px;\n display: inline-block;\n white-space: nowrap;\n /* 防止文本换行 */\n overflow: hidden;\n /* 隐藏超出的内容 */\n text-overflow: ellipsis;\n /* 将超出的内容显示为省略号 */\n}\n.clearAll[data-v-3dd95654] {\n float: right;\n}\n.table[data-v-3dd95654] {\n width: 100%;\n margin-top: 10px;\n float: left;\n}\n.pagi[data-v-3dd95654] {\n float: right;\n}\n.pagi.pagination-container[data-v-3dd95654] {\n padding: 0px;\n padding-top: 20px;\n}\n.btmBox[data-v-3dd95654] {\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,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;EACpB,gBAAgB;AAClB;AACA;EACE,qBAAqB;AACvB;AACA;EACE,gBAAgB;EAChB,qBAAqB;EACrB,mBAAmB;EACnB,WAAW;EACX,gBAAgB;EAChB,YAAY;EACZ,uBAAuB;EACvB,iBAAiB;AACnB;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.width400 {\n width: 400px;\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 max-width: 420px;\n}\n.tagBox > .el-tag /deep/ .el-tag__close {\n vertical-align: super;\n}\n.tagBox .tagItem {\n max-width: 397px;\n display: inline-block;\n white-space: nowrap;\n /* 防止文本换行 */\n overflow: hidden;\n /* 隐藏超出的内容 */\n text-overflow: ellipsis;\n /* 将超出的内容显示为省略号 */\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__$3="data-v-3dd95654";/* module identifier */const __vue_module_identifier__$3=undefined;/* functional template */const __vue_is_functional_template__$3=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$3=/*#__PURE__*/normalizeComponent({render:__vue_render__$3,staticRenderFns:__vue_staticRenderFns__$3},__vue_inject_styles__$3,__vue_script__$3,__vue_scope_id__$3,__vue_is_functional_template__$3,__vue_module_identifier__$3,false,createInjector,undefined,undefined);__vue_component__$3.install=function(Vue){Vue.component(__vue_component__$3.name,__vue_component__$3);};/*!
|
|
2831
|
+
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__$3=script$3;/* template */var __vue_render__$3=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.getCurrentKeywordsKey()],callback:function($$v){_vm.$set(_vm.searchParams,_vm.getCurrentKeywordsKey(),typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[getCurrentKeywordsKey()]"}},[_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'"}],class:{"input-with-select":true,width400:_vm.selectKeyList.length>0},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.getCurrentKeywordsKey()],callback:function($$v){_vm.$set(_vm.searchParams,_vm.getCurrentKeywordsKey(),typeof $$v==="string"?$$v.trim():$$v);},expression:"searchParams[getCurrentKeywordsKey()]"}},[_vm.selectKeyList.length>0?_c("el-select",{staticStyle:{width:"120px"},attrs:{slot:"prepend",placeholder:"请选择"},on:{change:_vm.handleSelectKeyChange},slot:"prepend",model:{value:_vm.selectKey,callback:function($$v){_vm.selectKey=$$v;},expression:"selectKey"}},_vm._l(_vm.selectKeyList,function(item){return _c("el-option",{key:item.value,attrs:{label:item.label,value:item.value}});}),1):_vm._e(),_vm._v(" "),_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);}}},[_c("div",{staticClass:"tagItem"},[_vm._v(_vm._s(tag.name+":"+tag.str))])]);}),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__$3=[];__vue_render__$3._withStripped=true;/* style */const __vue_inject_styles__$3=function(inject){if(!inject)return;inject("data-v-0840ac57_0",{source:"\n.el-table__empty-block {\n background: #fbfbfb;\n}\n",map:{"version":3,"sources":["/Users/wenquan/Desktop/hl/npm/components/FormTableScheme/index.vue"],"names":[],"mappings":";AAytBA;EACA,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\n v-if=\"hasSearch\"\n v-show=\"searchType == 'textarea'\"\n type=\"textarea\"\n @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\"\n :class=\"{\n 'input-with-select': true,\n textareaSpec: searchType == 'textarea',\n }\"\n v-model.trim=\"searchParams[getCurrentKeywordsKey()]\"\n @blur=\"changeType(0)\"\n :rows=\"10\"\n ref=\"myTextarea\"\n >\n <el-button\n slot=\"append\"\n icon=\"el-icon-search\"\n @click=\"getList({ skipCount: 1 })\"\n ></el-button>\n </el-input>\n <el-input\n v-if=\"hasSearch\"\n v-show=\"searchType == 'text'\"\n @keyup.enter.native=\"getList({ skipCount: 1 })\"\n :placeholder=\"searchPlaceholder || trans('请输入内容')\"\n :class=\"{\n 'input-with-select': true,\n width400: selectKeyList.length > 0,\n }\"\n v-model.trim=\"searchParams[getCurrentKeywordsKey()]\"\n @focus=\"changeType(1)\"\n >\n <el-select\n v-model=\"selectKey\"\n slot=\"prepend\"\n placeholder=\"请选择\"\n v-if=\"selectKeyList.length > 0\"\n style=\"width: 120px\"\n @change=\"handleSelectKeyChange\"\n >\n <el-option\n v-for=\"item in selectKeyList\"\n :key=\"item.value\"\n :label=\"item.label\"\n :value=\"item.value\"\n ></el-option>\n </el-select>\n <el-button\n slot=\"append\"\n icon=\"el-icon-search\"\n @click=\"getList({ skipCount: 1 })\"\n ></el-button>\n </el-input>\n <el-divider direction=\"vertical\"></el-divider>\n <el-button size=\"mini\" @click=\"actionModal\">\n <svg\n class=\"icon\"\n aria-hidden=\"true\"\n style=\"color: #10c2b0; cursor: pointer\"\n >\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\n v-for=\"tag in tags\"\n :key=\"tag.name\"\n closable\n @close=\"closeTag(tag)\"\n type=\"info\"\n >\n <div class=\"tagItem\">{{ `${tag.name}:${tag.str}` }}</div>\n </el-tag>\n </div>\n <el-button class=\"clearAll\" v-if=\"tags.length > 1\" @click=\"closeAllTag\">{{\n trans(\"取消全部筛选\")\n }}</el-button>\n <el-table\n ref=\"FormTable\"\n v-loading=\"listLoading\"\n :data=\"list\"\n :row-key=\"rowKey\"\n border\n fit\n @sort-change=\"$emit('sortChange', $event)\"\n @selection-change=\"handleSelectionChange\"\n @header-dragend=\"dragHead\"\n @select-all=\"handleSelectAll\"\n @select=\"handleSelect\"\n class=\"table\"\n :key=\"tableKey\"\n >\n <el-table-column\n v-if=\"hasSelection\"\n type=\"selection\"\n width=\"50\"\n :selectable=\"selectable\"\n >\n </el-table-column>\n <el-table-column\n v-if=\"hasIndex\"\n :label=\"trans('序号')\"\n type=\"index\"\n width=\"50\"\n >\n </el-table-column>\n <slot name=\"additional\"></slot>\n <el-table-column\n v-for=\"item in colDisplayFn(columnsShow)\"\n :key=\"item.columnCode\"\n :label=\"item.columnPropertyName\"\n :fixed=\"item.isFixed == 1 && 'left'\"\n :min-width=\"(item.defaultWidth || item.minWidth) + 20\"\n show-overflow-tooltip\n :sortable=\"sortableList[item.columnProperty] || false\"\n :prop=\"item.columnProperty\"\n align=\"center\"\n >\n <template slot=\"header\" slot-scope=\"{ column }\">\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\n v-if=\"item.queryConfig && item.queryConfig.type && item.isQuery\"\n v-bind:is=\"item.queryConfig.type\"\n :config=\"item.queryConfig\"\n :column=\"item\"\n :setFormParams=\"setFormParams\"\n :ops=\"ops\"\n :getConfig=\"getConfig\"\n :ruleFn=\"ruleFn[item.columnProperty]\"\n ></component>\n </template>\n <template slot-scope=\"{ row }\">\n <span v-if=\"$scopedSlots[item.columnProperty]\">\n <slot\n :name=\"item.columnProperty\"\n :props=\"row\"\n :queryConfig=\"item.queryConfig\"\n :options=\"getConfig(item)\"\n :label=\"getLabel(item, row)\"\n ></slot>\n </span>\n <span v-else>{{ getLabel(item, row) }}</span>\n </template>\n </el-table-column>\n <el-table-column\n :label=\"trans('操作')\"\n align=\"center\"\n :width=\"actionWidth\"\n class-name=\"small-padding\"\n v-if=\"$scopedSlots.actionBtn\"\n fixed=\"right\"\n >\n <template slot-scope=\"{ row }\">\n <slot name=\"actionBtn\" :props=\"row\"> </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\n v-show=\"count > 0\"\n :autoScroll=\"isAutoScroll\"\n class=\"text-right mt-0 pagi\"\n :total=\"count\"\n :page.sync=\"searchParams.skipCount\"\n :limit.sync=\"searchParams.pageSize\"\n @pagination=\"getList\"\n />\n </div>\n\n <select-col\n v-if=\"columns.length > 0\"\n :saveMyTemplateColumns=\"saveMyTemplateColumns\"\n :templateKey=\"templateKey\"\n :getNewCol=\"getNewCol\"\n :initialColumns=\"columns\"\n :columnsShow=\"columnsShow\"\n :visible.sync=\"dialogFormVisible\"\n ></select-col>\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 {\n SelectCol,\n Check,\n Date,\n Inputsp,\n DateRange,\n Tips,\n pageTemplatecs,\n Radio,\n InputScope,\n Selectsp,\n Cascader,\n} 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\";\nimport { SelectKeyManager } from \"./useSelectKey\";\nexport default {\n name: \"FormTableScheme\",\n components: {\n SelectCol,\n Check,\n Date,\n Inputsp,\n Pagination,\n DateRange,\n Tips,\n Radio,\n InputScope,\n Selectsp,\n Cascader,\n },\n model: {\n event: \"sortChange\",\n },\n data() {\n return {\n SelectKeyManager,\n trans,\n dialogFormVisible: false,\n formatSwitch,\n list: [],\n saveMyTemplateColumns:\n 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 selectKey: \"\",\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 this.initSelectKey();\n },\n },\n selectKeyList: {\n deep: true,\n immediate: true,\n handler(newList, oldList) {\n // 如果是初始化(oldList undefined),走 initSelectKey\n // 如果是动态切换(newList !== oldList),走 reset\n // 但 immediate: true 会导致首次也触发 handler,此时 oldList 为 undefined\n // 实际上 mounted 也会调 initSelectKey (via changePG -> getList?)\n // 我们统一策略:\n // 1. 如果 selectKey 为空,或者列表变了需要重置,则处理\n // initSelectKey 内部已经判断了空值逻辑\n \n if (oldList === undefined) {\n this.initSelectKey();\n } else {\n // 切换列表,清空并触发事件\n const prev = this.selectKey;\n this.selectKey = SelectKeyManager.resetOnListChange();\n this.$emit('selectKeyChange', { prev, current: this.selectKey, list: newList });\n }\n },\n },\n },\n props: {\n bigSearch: {\n default: false,\n type: Boolean,\n },\n fetchParam: {\n // 上传时附带的参数\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 selectKeyList: {\n default: () => {\n return [];\n },\n type: Array,\n },\n countNum: {\n // 总数\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 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 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 initSelectKey() {\n // 使用 SelectKeyManager 进行初始化\n this.selectKey = SelectKeyManager.initValue({\n selectKeyList: this.selectKeyList,\n fetchParam: this.fetchParam,\n keywordsKEY: this.keywordsKEY\n });\n },\n getCurrentKeywordsKey() {\n return this.selectKey || this.keywordsKEY;\n },\n handleSelectKeyChange(newKey) {\n // 如果之前有值,需要将值转移到新的字段\n if (this.searchParams[this.keywordsKEY] && newKey !== this.keywordsKEY) {\n this.searchParams[newKey] = this.searchParams[this.keywordsKEY];\n this.searchParams[this.keywordsKEY] = \"\";\n }\n },\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(\n (c) => c.columnPropertyName == column.label\n );\n let formatWidth = Math.ceil(newWidth);\n this.requestFn.pageTemplatecs\n .saveMyTemplateColumnWidth({\n templateKey: this.templateKey,\n columnCode: findColumn.columnCode,\n width: formatWidth,\n })\n .then((response) => {});\n },\n changePG(pages) {\n this.requestFn.pageTemplatecs\n .selectUserTemplateColumns({ templateKey: this.templateKey })\n .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\n .selectMyTableColumns({ templateKey: this.templateKey })\n .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 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 this.searchParams = searchParams;\n\n // 处理数据\n let ops = {};\n for (var key in searchParams) {\n if (\n searchParams[key] !== \"\" &&\n searchParams[key] !== null &&\n searchParams[key] !== undefined\n ) {\n ops[key] = searchParams[key];\n }\n }\n console.log(ops);\n // 确保使用正确的关键词字段,并删除其他在selectKeyList中的key值\n if (this.selectKeyList && this.selectKeyList.length > 0) {\n // 在开始处理之前,再次调用 initSelectKey 以确保 selectKey 与当前的 ops 保持同步\n // 这一步至关重要,因为 ops 可能包含从 fetchParam 合并进来的新值,\n // 而 initSelectKey 依赖 this.fetchParam,可能还没来得及响应\n // 实际上 ops 才是最准确的参数来源\n const allSelectKeys = this.selectKeyList.map((item) => item.value);\n\n // 如果 selectKey 当前指向的值为空,但在 ops 中存在其他有效 key,\n // 应该先切换 selectKey,防止后续逻辑误删\n if (!ops[this.selectKey]) {\n const activeKey = allSelectKeys.find((key) => ops[key]);\n if (activeKey) {\n this.selectKey = activeKey;\n }\n }\n\n // 1. 如果有 keywordsKEY 的值,优先使用 keywordsKEY,并覆盖到当前 selectKey\n if (ops[this.keywordsKEY]) {\n // 将 keywordsKEY 的值赋给 selectKey\n ops[this.selectKey] = ops[this.keywordsKEY];\n // 清除 keywordsKEY,避免重复\n if (this.selectKey !== this.keywordsKEY) {\n delete ops[this.keywordsKEY];\n }\n }\n\n // 2. 检查当前 selectKey 是否有值\n // 如果没有值,尝试从其他 selectKeyList 中找到第一个有值的 key 切换过去\n if (!ops[this.selectKey]) {\n const activeKey = allSelectKeys.find((key) => ops[key]);\n if (activeKey) {\n this.selectKey = activeKey;\n }\n }\n\n // 3. 最终清理:只保留当前 selectKey 的值,清除 selectKeyList 中其他 key 的值\n allSelectKeys.forEach((key) => {\n if (key !== this.selectKey && ops[key]) {\n delete ops[key];\n }\n });\n } else if (\n this.selectKey &&\n this.selectKey !== this.keywordsKEY &&\n ops[this.keywordsKEY]\n ) {\n // 兼容原有逻辑\n ops[this.selectKey] = ops[this.keywordsKEY];\n delete ops[this.keywordsKEY];\n }\n\n // 根据参数画tag\n formToValue(ops, this.columnsShow, this.colChange, this.ruleFn);\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(\n (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 this.tableKey = Math.random();\n this.$refs.FormTable.doLayout();\n },\n (err) => {\n this.listLoading = false;\n }\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 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(\n { [key[0]]: \"\", [key[1]]: \"\", [key[2]]: \"\" },\n \"remove\"\n );\n } else {\n this.setFormParams({ [key]: \"\" }, \"remove\");\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 actionModal() {\n this.dialogFormVisible = true;\n this.columns;\n this.columns = this.columns.map((i) => {\n const isSelect = this.columnsShow.find(\n (j) => j.columnPropertyName === i.columnPropertyName\n );\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.width400 {\n width: 400px;\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 max-width: 420px;\n /deep/.el-tag__close {\n vertical-align: super;\n }\n }\n .tagItem {\n max-width: 397px;\n display: inline-block;\n white-space: nowrap; /* 防止文本换行 */\n overflow: hidden; /* 隐藏超出的内容 */\n text-overflow: ellipsis; /* 将超出的内容显示为省略号 */\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-0840ac57_1",{source:".container[data-v-0840ac57] {\n padding: 15px;\n margin: 0px;\n width: 100%;\n background: #fff;\n float: left;\n}\n.input-with-select[data-v-0840ac57] {\n width: 300px;\n}\n.width400[data-v-0840ac57] {\n width: 400px;\n}\n.optBox[data-v-0840ac57] {\n margin-bottom: 10px;\n overflow: hidden;\n}\n.leftBtn[data-v-0840ac57] {\n float: left;\n}\n.rightBtn[data-v-0840ac57] {\n float: right;\n}\n.rightBtn .textareaSpec[data-v-0840ac57] {\n position: absolute;\n right: 100px;\n z-index: 1000;\n width: 700px;\n height: 400px;\n}\n.rightBtn .border[data-v-0840ac57] {\n border: 1px solid #dcdfe6;\n}\n.tagBox[data-v-0840ac57] {\n width: calc(100% - 140px);\n float: left;\n overflow: hidden;\n}\n.tagBox > .el-tag[data-v-0840ac57] {\n margin: 4px 10px 0 0;\n max-width: 420px;\n}\n.tagBox > .el-tag[data-v-0840ac57] .el-tag__close {\n vertical-align: super;\n}\n.tagBox .tagItem[data-v-0840ac57] {\n max-width: 397px;\n display: inline-block;\n white-space: nowrap;\n /* 防止文本换行 */\n overflow: hidden;\n /* 隐藏超出的内容 */\n text-overflow: ellipsis;\n /* 将超出的内容显示为省略号 */\n}\n.clearAll[data-v-0840ac57] {\n float: right;\n}\n.table[data-v-0840ac57] {\n width: 100%;\n margin-top: 10px;\n float: left;\n}\n.pagi[data-v-0840ac57] {\n float: right;\n}\n.pagi.pagination-container[data-v-0840ac57] {\n padding: 0px;\n padding-top: 20px;\n}\n.btmBox[data-v-0840ac57] {\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,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;EACpB,gBAAgB;AAClB;AACA;EACE,qBAAqB;AACvB;AACA;EACE,gBAAgB;EAChB,qBAAqB;EACrB,mBAAmB;EACnB,WAAW;EACX,gBAAgB;EAChB,YAAY;EACZ,uBAAuB;EACvB,iBAAiB;AACnB;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.width400 {\n width: 400px;\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 max-width: 420px;\n}\n.tagBox > .el-tag /deep/ .el-tag__close {\n vertical-align: super;\n}\n.tagBox .tagItem {\n max-width: 397px;\n display: inline-block;\n white-space: nowrap;\n /* 防止文本换行 */\n overflow: hidden;\n /* 隐藏超出的内容 */\n text-overflow: ellipsis;\n /* 将超出的内容显示为省略号 */\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__$3="data-v-0840ac57";/* module identifier */const __vue_module_identifier__$3=undefined;/* functional template */const __vue_is_functional_template__$3=false;/* style inject SSR */ /* style inject shadow dom */const __vue_component__$3=/*#__PURE__*/normalizeComponent({render:__vue_render__$3,staticRenderFns:__vue_staticRenderFns__$3},__vue_inject_styles__$3,__vue_script__$3,__vue_scope_id__$3,__vue_is_functional_template__$3,__vue_module_identifier__$3,false,createInjector,undefined,undefined);__vue_component__$3.install=function(Vue){Vue.component(__vue_component__$3.name,__vue_component__$3);};/*!
|
|
2319
2832
|
* html2canvas 1.4.1 <https://html2canvas.hertzen.com>
|
|
2320
2833
|
* Copyright (c) 2022 Niklas von Hertzen <https://hertzen.com>
|
|
2321
2834
|
* Released under MIT License
|
|
@@ -2694,7 +3207,7 @@ const exportItems=[];Array.from({length:numItems},(_,i)=>{exportItems.push({name
|
|
|
2694
3207
|
if(this.count%this.pagingBase>0){exportItems.push({name:`导出${this.pagingBase*numItems+1}-${this.count}`,params:{pageSize:this.pagingBase,skipCount:this.pagingBase*numItems// 修正了原始代码中的逻辑错误
|
|
2695
3208
|
}});}// 一次性赋值给this.exportList,减少数据变化的检测次数
|
|
2696
3209
|
this.exportList=exportItems;}}},mounted(){},methods:{handleDownload(ops){let obj={};if(this.getParam){obj=this.getParam();delete obj.pageSize;delete obj.skipCount;}delete this.fetchParam.pageSize;delete this.fetchParam.skipCount;const param=Object.assign(obj,this.fetchParam,ops);if(this.getApi){this.getApi(param,this.pagingBase).then(res=>{if(res.result=="success"){this.$notify({title:"成功",message:res.msg,type:"success"});}else{this.$message.error(res.msg);}},err=>{this.$message.error(err.msg);});}else{const params=new URLSearchParams();for(let key in param){if(param[key]||param[key]===0){params.append(key,param[key]);}}let headers={"Content-Type":"application/x-www-form-urlencoded"};const url=`/gateway/huilianApi/export/genericExport`;if(window.HLEncryption){headers=window.HLEncryption.setRequestHeaders({url:url,headers:headers});}fetch(url,{method:"POST",headers,body:params.toString()}).then(response=>response.json())// 将响应转换为二进制格式的Blob对象
|
|
2697
|
-
.then(res=>{if(res.result=="success"){this.$notify({title:"成功",message:res.msg,type:"success"});}else{this.$message.error(res.msg);}}).catch(error=>{this.$message.error("下载失败");console.error("下载失败:",error);});}}}};/* 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("el-dropdown",{attrs:{trigger:"click"},on:{command:_vm.handleDownload}},[_c("el-button",[_vm._v("\n 导出"),_c("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),_vm._v(" "),_c("el-dropdown-menu",{staticStyle:{"max-height":"300px","overflow-y":"auto"},attrs:{slot:"dropdown"},slot:"dropdown"},_vm._l(_vm.exportList,function(item,index){return _c("el-dropdown-item",{key:"exportList"+index,attrs:{command:item.params}},[_vm._v("\n "+_vm._s(item.name)+"\n ")]);}),1)],1);};var __vue_staticRenderFns__$1=[];__vue_render__$1._withStripped=true;/* style */const __vue_inject_styles__$1=function(inject){if(!inject)return;inject("data-v-
|
|
3210
|
+
.then(res=>{if(res.result=="success"){this.$notify({title:"成功",message:res.msg,type:"success"});}else{this.$message.error(res.msg);}}).catch(error=>{this.$message.error("下载失败");console.error("下载失败:",error);});}}}};/* 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("el-dropdown",{attrs:{trigger:"click"},on:{command:_vm.handleDownload}},[_c("el-button",[_vm._v("\n 导出"),_c("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),_vm._v(" "),_c("el-dropdown-menu",{staticStyle:{"max-height":"300px","overflow-y":"auto"},attrs:{slot:"dropdown"},slot:"dropdown"},_vm._l(_vm.exportList,function(item,index){return _c("el-dropdown-item",{key:"exportList"+index,attrs:{command:item.params}},[_vm._v("\n "+_vm._s(item.name)+"\n ")]);}),1)],1);};var __vue_staticRenderFns__$1=[];__vue_render__$1._withStripped=true;/* style */const __vue_inject_styles__$1=function(inject){if(!inject)return;inject("data-v-3adecbaa_0",{source:"\n\n/*# sourceMappingURL=index.vue.map */",map:{"version":3,"sources":["index.vue"],"names":[],"mappings":";;AAEA,oCAAoC","file":"index.vue"},media:undefined});};/* scoped */const __vue_scope_id__$1=undefined;/* 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);};//
|
|
2698
3211
|
/**
|
|
2699
3212
|
* btnText 导入按钮文字,默认导入
|
|
2700
3213
|
* btnType 导入按钮样式,默认空
|
|
@@ -2703,15 +3216,19 @@ this.exportList=exportItems;}}},mounted(){},methods:{handleDownload(ops){let obj
|
|
|
2703
3216
|
* fileType 导入文件格式,默认xlsx,支持csv,xlsx,xls
|
|
2704
3217
|
* close 导入窗口关闭回调
|
|
2705
3218
|
* fileName 下载导入文件名,不需要后缀
|
|
2706
|
-
|
|
3219
|
+
* onFailClick 失败链接点击回调(detailData, res),传入时接管链接点击行为,链接文案变为"查看失败信息",不再执行内部下载逻辑
|
|
3220
|
+
*/var script={name:"StandardImportComponents",components:{},props:{btnText:{default:"导入",type:String},btnType:{default:"",type:String},dialogTitle:{default:"导入数据",type:String},tempKey:{default:"",type:String},fileType:{default:"xlsx",type:String},close:{default:()=>{},type:Function},fileName:{default:"导入模板",type:String},failFileType:{default:"",type:String},extendParams:{default:"",type:String},onSuccessCallback:{default:()=>{},type:Function},errorParams:{default:()=>({}),type:Object},// 失败链接点击回调,传入时接管点击行为,参数为 (detailData, res)
|
|
3221
|
+
onFailClick:{default:null,type:Function}},data(){return{importApi:"/gateway/huilianApi/importcs/standardImport",dialogVisible:false,formData:{tempKey:this.tempKey,fileType:this.fileType,extendParams:this.extendParams},fileList:[],detailData:{},lastRes:null,isSubmitLoading:false,fileCode:""};},mounted(){},computed:{fileTypeComputer(){if(this.fileType==="xlsx"){return"请上传 .xlsx 或 .xls 为后缀的文件";}else{return`请上传 .${this.fileType} 为后缀的文件`;}},// 是否显示失败链接:外部接管时始终显示;原有逻辑需要 failFileType
|
|
3222
|
+
showFailLink(){return!!this.onFailClick||!!this.failFileType;}},methods:{getTemp(){const params=new URLSearchParams();params.append("tempKey",this.tempKey);params.append("fileType",this.fileType);let headers={"Content-Type":"application/x-www-form-urlencoded"};const url=`/gateway/huilianApi/importcs/queryImportTemp`;if(window.HLEncryption){headers=window.HLEncryption.setRequestHeaders({url:url,headers:headers});}fetch(url,{method:"POST",headers,body:params.toString()}).then(response=>response.blob())// 将响应转换为二进制格式的Blob对象
|
|
2707
3223
|
.then(blob=>{// 创建一个指向Blob的URL
|
|
2708
3224
|
const url=URL.createObjectURL(blob);// 创建一个临时的<a>标签用于触发下载
|
|
2709
3225
|
const downloadLink=document.createElement("a");downloadLink.href=url;downloadLink.download=`${this.fileName}.${this.fileType}`;// 指定下载文件的名称
|
|
2710
3226
|
document.body.appendChild(downloadLink);// 触发下载
|
|
2711
3227
|
downloadLink.click();// 清理临时创建的元素和对象URL
|
|
2712
|
-
document.body.removeChild(downloadLink);URL.revokeObjectURL(url);}).catch(error=>console.error("下载失败:",error));},openDialog(){this.isSubmitLoading=false;this.detailData={};this.dialogVisible=true;this.$nextTick(()=>{this.$refs["importFile"].clearFiles();this.fileList=[];});},beforeUploadForm(file){// 验证文件类型
|
|
3228
|
+
document.body.removeChild(downloadLink);URL.revokeObjectURL(url);}).catch(error=>console.error("下载失败:",error));},openDialog(){this.isSubmitLoading=false;this.detailData={};this.lastRes=null;this.dialogVisible=true;this.$nextTick(()=>{this.$refs["importFile"].clearFiles();this.fileList=[];});},beforeUploadForm(file){// 验证文件类型
|
|
2713
3229
|
var str=file.name.split(".");if(str[str.length-1]!==this.fileType){setTimeout(()=>{this.$message({message:`上传文件 “${this.fileType}” 格式错误!`,type:"warning"});},1);return false;}},handleChange(file){this.fileList=[file];this.isSubmitLoading=false;},handleRemove(){this.fileList=[];this.isSubmitLoading=false;},handleSuccess(res){if(res.result==="success"){this.detailData={...(res.data||{}),failCount:res.data.failCount||res.data.errorCount||0//res.data?.failCount ?? res.data?.errorCount ?? 0, // 使用 ?? 运算符赋默认值
|
|
2714
|
-
};this.fileCode=res.data.fileCode||"";if(this.onSuccessCallback){this.onSuccessCallback(this.detailData,res);}}else{this.$message({message:res.msg,type:res.result});}this.$nextTick(()=>{this.$refs["importFile"].clearFiles();this.fileList=[];});this.isSubmitLoading=false;},handleError(){this.$refs["importFile"].clearFiles();this.$nextTick(()=>{this.fileList=[];});},query(){if(this.fileList.length===0){this.$message({message:"请上传文件",type:"warning"});return;}this.isSubmitLoading=true;this.$refs.importFile.submit();},handleClose(done){this.close();this.dialogVisible=false;this.isSubmitLoading=false;if(typeof done==="function"){done();}}
|
|
3230
|
+
};this.lastRes=res;this.fileCode=res.data.fileCode||"";if(this.onSuccessCallback){this.onSuccessCallback(this.detailData,res);}}else{this.$message({message:res.msg,type:res.result});}this.$nextTick(()=>{this.$refs["importFile"].clearFiles();this.fileList=[];});this.isSubmitLoading=false;},handleError(){this.$refs["importFile"].clearFiles();this.$nextTick(()=>{this.fileList=[];});},query(){if(this.fileList.length===0){this.$message({message:"请上传文件",type:"warning"});return;}this.isSubmitLoading=true;this.$refs.importFile.submit();},handleClose(done){this.close();this.dialogVisible=false;this.isSubmitLoading=false;if(typeof done==="function"){done();}},// 失败链接点击:外部传入 onFailClick 时交由外部处理,否则走原有下载逻辑
|
|
3231
|
+
handleFailLinkClick(){if(this.onFailClick){this.onFailClick(this.detailData,this.lastRes);}else{this.downloadFile(this.fileCode,this.failFileType);}},customHttpRequest({file,onSuccess,onError}){// 动态生成headers
|
|
2715
3232
|
let headers={"Content-Type":"multipart/form-data"// 通常不需要手动设置,但为了完整性还是加上
|
|
2716
3233
|
};if(window.HLEncryption){headers=window.HLEncryption.setRequestHeaders({url:this.importApi,headers:headers});}const formData=new FormData();formData.append("file",file);// 添加文件到FormData中
|
|
2717
3234
|
// 使用axios或fetch发送请求,这里使用axios为例
|
|
@@ -2722,4 +3239,4 @@ for(let key in this.formData){if(this.formData[key]!==""){formData.append(key,th
|
|
|
2722
3239
|
// fileType: failFileType,
|
|
2723
3240
|
// };
|
|
2724
3241
|
const searchParams=new URLSearchParams();searchParams.append("fileCode",fileCode);searchParams.append("fileType",failFileType);for(let key in this.errorParams){if(this.errorParams[key]||this.errorParams[key]==0){searchParams.append(key,this.errorParams[key]);}}// 加密
|
|
2725
|
-
let headers={"Content-Type":"application/x-www-form-urlencoded"};const urlApi="/gateway/huilianApi/errorcs/exportErrorFile";if(window.HLEncryption){headers=window.HLEncryption.setRequestHeaders({url:urlApi,headers:headers});}const response=await fetch(urlApi,{method:"post",headers:headers,body:searchParams.toString()});if(!response.ok){throw new Error(`下载请求失败: ${response.statusText}`);}const blob=await response.blob();const name=response.headers.get("content-disposition").split("filename=")[1];const url=window.URL.createObjectURL(blob);const a=document.createElement("a");a.href=url;a.download=decodeURIComponent(name);document.body.appendChild(a);a.click();document.body.removeChild(a);window.URL.revokeObjectURL(url);}else{this.$message({message:"无文件可下载",type:"warning"});}}}};/* 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("span",{staticClass:"StandardImportComponents",staticStyle:{display:"inline-block"}},[_c("el-button",{attrs:{type:_vm.btnType},on:{click:_vm.openDialog}},[_vm._v(_vm._s(_vm.btnText))]),_vm._v(" "),_c("el-dialog",{attrs:{title:_vm.dialogTitle,visible:_vm.dialogVisible,width:"600px","close-on-click-modal":false,"close-on-press-escape":false,"before-close":_vm.handleClose,"append-to-body":""},on:{"update:visible":function($event){_vm.dialogVisible=$event;}}},[_c("div",[_vm._t("content-header")],2),_vm._v(" "),_c("div",{staticStyle:{position:"relative"}},[_c("el-upload",{ref:"importFile",attrs:{action:_vm.importApi,"file-list":_vm.fileList,accept:"."+_vm.fileType,"before-upload":_vm.beforeUploadForm,data:_vm.formData,limit:1,"on-change":_vm.handleChange,"on-remove":_vm.handleRemove,"on-success":_vm.handleSuccess,"on-error":_vm.handleError,"auto-upload":false,"http-request":_vm.customHttpRequest}},[_c("el-button",{attrs:{slot:"trigger",size:"small",type:"primary"},slot:"trigger"},[_vm._v("选取文件")]),_vm._v(" "),_c("div",{staticClass:"el-upload__tip",attrs:{slot:"tip"},slot:"tip"},[_vm._v("\n "+_vm._s(_vm.fileTypeComputer)+"\n ")])],1),_vm._v(" "),_c("div",{staticStyle:{position:"absolute",top:"0",left:"100px"}},[_c("el-button",{attrs:{type:"text"},on:{click:_vm.getTemp}},[_vm._v(" 模板下载 ")])],1),_vm._v(" "),_c("div",{directives:[{name:"show",rawName:"v-show",value:_vm.detailData.successCount||_vm.detailData.failCount,expression:"detailData.successCount || detailData.failCount"}],staticClass:"mt-10",staticStyle:{"font-size":"12px","font-weight":"400",color:"#999999"}},[_vm._v("\n 导入结果(仅展示最后一次上传结果):\n "),_c("span",{staticStyle:{color:"#333333"}},[_vm._v("\n 成功"+_vm._s(_vm.detailData.successCount||0)+"条,失败"+_vm._s(_vm.detailData.failCount||0)+"条\n ")]),_vm._v("\n \n "),_c("a",{directives:[{name:"show",rawName:"v-show",value:_vm.
|
|
3242
|
+
let headers={"Content-Type":"application/x-www-form-urlencoded"};const urlApi="/gateway/huilianApi/errorcs/exportErrorFile";if(window.HLEncryption){headers=window.HLEncryption.setRequestHeaders({url:urlApi,headers:headers});}const response=await fetch(urlApi,{method:"post",headers:headers,body:searchParams.toString()});if(!response.ok){throw new Error(`下载请求失败: ${response.statusText}`);}const blob=await response.blob();const name=response.headers.get("content-disposition").split("filename=")[1];const url=window.URL.createObjectURL(blob);const a=document.createElement("a");a.href=url;a.download=decodeURIComponent(name);document.body.appendChild(a);a.click();document.body.removeChild(a);window.URL.revokeObjectURL(url);}else{this.$message({message:"无文件可下载",type:"warning"});}}}};/* 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("span",{staticClass:"StandardImportComponents",staticStyle:{display:"inline-block"}},[_c("el-button",{attrs:{type:_vm.btnType},on:{click:_vm.openDialog}},[_vm._v(_vm._s(_vm.btnText))]),_vm._v(" "),_c("el-dialog",{attrs:{title:_vm.dialogTitle,visible:_vm.dialogVisible,width:"600px","close-on-click-modal":false,"close-on-press-escape":false,"before-close":_vm.handleClose,"append-to-body":""},on:{"update:visible":function($event){_vm.dialogVisible=$event;}}},[_c("div",[_vm._t("content-header")],2),_vm._v(" "),_c("div",{staticStyle:{position:"relative"}},[_c("el-upload",{ref:"importFile",attrs:{action:_vm.importApi,"file-list":_vm.fileList,accept:"."+_vm.fileType,"before-upload":_vm.beforeUploadForm,data:_vm.formData,limit:1,"on-change":_vm.handleChange,"on-remove":_vm.handleRemove,"on-success":_vm.handleSuccess,"on-error":_vm.handleError,"auto-upload":false,"http-request":_vm.customHttpRequest}},[_c("el-button",{attrs:{slot:"trigger",size:"small",type:"primary"},slot:"trigger"},[_vm._v("选取文件")]),_vm._v(" "),_c("div",{staticClass:"el-upload__tip",attrs:{slot:"tip"},slot:"tip"},[_vm._v("\n "+_vm._s(_vm.fileTypeComputer)+"\n ")])],1),_vm._v(" "),_c("div",{staticStyle:{position:"absolute",top:"0",left:"100px"}},[_c("el-button",{attrs:{type:"text"},on:{click:_vm.getTemp}},[_vm._v(" 模板下载 ")])],1),_vm._v(" "),_c("div",{directives:[{name:"show",rawName:"v-show",value:_vm.detailData.successCount||_vm.detailData.failCount,expression:"detailData.successCount || detailData.failCount"}],staticClass:"mt-10",staticStyle:{"font-size":"12px","font-weight":"400",color:"#999999"}},[_vm._v("\n 导入结果(仅展示最后一次上传结果):\n "),_c("span",{staticStyle:{color:"#333333"}},[_vm._v("\n 成功"+_vm._s(_vm.detailData.successCount||0)+"条,失败"+_vm._s(_vm.detailData.failCount||0)+"条\n ")]),_vm._v("\n \n "),_c("a",{directives:[{name:"show",rawName:"v-show",value:_vm.showFailLink&&_vm.detailData.failCount,expression:"showFailLink && detailData.failCount"}],staticStyle:{color:"#599ebf"},attrs:{href:"javascript:void(0)"},on:{click:_vm.handleFailLinkClick}},[_vm._v("\n "+_vm._s(_vm.onFailClick?"查看失败信息":"下载失败信息")+"\n ")])])],1),_vm._v(" "),_c("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[_c("el-button",{on:{click:_vm.handleClose}},[_vm._v(" 取 消 ")]),_vm._v(" "),_c("el-button",{attrs:{type:"primary",loading:_vm.isSubmitLoading},on:{click:_vm.query}},[_vm._v("\n 确 定\n ")])],1)])],1);};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.7.3";const components=[__vue_component__$j,__vue_component__$i,__vue_component__$h,__vue_component__$g,__vue_component__$3,__vue_component__$2,__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 ExportList,__vue_component__$3 as FormTableScheme,__vue_component__$i as HelloVue,__vue_component__$2 as HtmlToImg,__vue_component__$j as MyButton,__vue_component__$g as ShowFile,__vue_component__ as StandardImport,__vue_component__$h as UploadFile,index as default,install};
|