cloud-web-corejs 1.0.54-dev.734 → 1.0.54-dev.736

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/package.json +1 -1
  2. package/src/components/baseTabs/mixins.js +12 -1
  3. package/src/components/excelExport/exportFieldDialog.vue +40 -18
  4. package/src/components/excelExport/index.js +17 -3
  5. package/src/components/excelExport/index.vue +2 -1
  6. package/src/components/excelExport/mixins.js +113 -32
  7. package/src/components/fileLibrary/mixins/indexMixins.js +10 -0
  8. package/src/components/table/config.js +74 -1
  9. package/src/components/table/index.js +7 -22
  10. package/src/components/table/tableFormMixin.js +285 -1
  11. package/src/components/table/util/index.js +38 -40
  12. package/src/components/table/vxeFilter/index.js +153 -2
  13. package/src/components/table/vxeFilter/mixin.js +305 -3
  14. package/src/components/xform/docs/2026-07 table/344/270/216excelExport/344/277/256/345/244/215/345/217/212/345/257/274/345/207/272/344/274/230/345/214/226.md" +57 -0
  15. package/src/components/xform/docs/2026-07 /346/216/222/346/237/245/344/277/256/345/244/215/350/256/260/345/275/225.md" +73 -0
  16. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +108 -1
  17. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +288 -6
  18. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +0 -1
  19. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +0 -1
  20. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +0 -1
  21. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +0 -1
  22. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +1 -0
  23. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +3 -12
  24. package/src/components/xform/form-designer/form-widget/indexMixin.js +184 -2
  25. package/src/components/xform/form-designer/indexMixin.js +0 -1
  26. package/src/components/xform/form-designer/refMixinDesign.js +27 -1
  27. package/src/components/xform/form-designer/setting-panel/indexMixin.js +357 -9
  28. package/src/components/xform/form-designer/setting-panel/property-editor/showViewButton-editor.vue +29 -0
  29. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +1 -0
  30. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +639 -15
  31. package/src/components/xform/form-designer/widget-panel/indexMixin.js +290 -1
  32. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +1 -0
  33. package/src/components/xform/form-render/container-item/containerItemMixin.js +282 -1115
  34. package/src/components/xform/form-render/container-item/data-table-mixin.js +29 -7
  35. package/src/components/xform/form-render/dynamicDialogRender.js +238 -3
  36. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  37. package/src/components/xform/form-render/indexMixin.js +21 -431
  38. package/src/components/xform/form-render/refMixin.js +32 -1
  39. package/src/components/xform/mixins/defaultHandle.js +2 -2
  40. package/src/components/xform/utils/dynamicSchemaUtil.js +46 -0
  41. package/src/components/xform/utils/validators.js +186 -2
  42. package/src/utils/componentDialog.js +322 -0
  43. package/src/views/user/form/vform/render.vue +4 -21
  44. package/src/views/user/form/view/list.vue +13 -9
  45. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog copy.vue +0 -971
  46. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +0 -408
  47. package/src/components/xform/utils/formHttp.js +0 -162
@@ -3,8 +3,159 @@ import XEUtils from 'xe-utils';
3
3
  import FilterComplex from './FilterComplex.vue';
4
4
  import FilterContent from './FilterContent.vue';
5
5
  import FilterInput from './FilterInput.vue';
6
- import {getFilterValue} from "../util/index.js";
7
6
 
8
7
  let moudule = {};
9
- (function(_0x1cea1e,_0x4f3e30){function _0x4c7b7d(_0x1501ac,_0x161a3a,_0x97b4e9,_0x55e5a6,_0x477bb2){return _0x3fb2(_0x477bb2-0x21b,_0x55e5a6);}const _0x40028c=_0x1cea1e();function _0x3c2229(_0x489ab5,_0x5c0aa7,_0x42d179,_0x2f4177,_0x4aa738){return _0x3b3e(_0x489ab5-0x92,_0x42d179);}function _0x2461ff(_0x380a3b,_0x51aa99,_0x321840,_0x189c0c,_0x39b611){return _0x3b3e(_0x380a3b- -0x37a,_0x51aa99);}function _0x18013c(_0x2aa283,_0x5d9295,_0x318ed0,_0x262f05,_0x42e0cb){return _0x3fb2(_0x262f05- -0x26c,_0x318ed0);}function _0xe77d04(_0x42dbbd,_0x49349c,_0x5c0be0,_0x3fb669,_0x20b378){return _0x3fb2(_0x49349c- -0xd3,_0x20b378);}function _0x34ff4d(_0x41e54f,_0x5e7152,_0x534eac,_0x126c18,_0x24357f){return _0x3fb2(_0x534eac- -0x220,_0x24357f);}function _0x5e9d2c(_0x1bef17,_0x5c3707,_0x1cf536,_0x532983,_0x9d9d6c){return _0x3fb2(_0x5c3707-0x283,_0x1cf536);}function _0x278d9d(_0xf29845,_0x4e6e8d,_0x1496a1,_0x405239,_0x503f2e){return _0x3b3e(_0x503f2e- -0x209,_0x1496a1);}do{try{const _0x47cc74=parseInt(_0x5e9d2c(0x286,0x288,"\u0074\u0037\u0033\u0048",0x29d,0x288))/0x1+-parseInt(_0x3c2229(0xc0,0xd2,0xa1,0xba,0xd5))/0x2*(-parseInt(_0x18013c(-0x250,-0x26d,"fC]n".split("").reverse().join(""),-0x256,-0x245))/0x3)+parseInt(_0x3c2229(0xcf,0xc1,0xb3,0xd9,0xb5))/0x4*(parseInt(_0x18013c(-0x260,-0x23e,"\u0030\u0024\u0042\u005d",-0x24d,-0x234))/0x5)+-parseInt(_0x34ff4d(-0x1f1,-0x1dd,-0x1f6,-0x209,"\u006c\u0032\u005d\u0065"))/0x6+-parseInt(_0x34ff4d(-0x220,-0x223,-0x207,-0x226,"fC]n".split("").reverse().join("")))/0x7*(parseInt(_0x18013c(-0x233,-0x268,"\u0040\u0050\u0044\u0030",-0x24f,-0x265))/0x8)+-parseInt(_0x18013c(-0x260,-0x246,"D!Zd".split("").reverse().join(""),-0x24c,-0x22f))/0x9*(-parseInt(_0xe77d04(-0xce,-0xc2,-0xc3,-0xd4,"\u006c\u0032\u005d\u0065"))/0xa)+parseInt(_0x278d9d(-0x20c,-0x227,-0x20a,-0x1fb,-0x209))/0xb;if(_0x47cc74===_0x4f3e30){break;}else{_0x40028c["\u0070\u0075\u0073\u0068"](_0x40028c["\u0073\u0068\u0069\u0066\u0074"]());}}catch(_0x4e7d5b){_0x40028c["\u0070\u0075\u0073\u0068"](_0x40028c["\u0073\u0068\u0069\u0066\u0074"]());}}while(!![]);})(_0x5ba0,0x2afac);let configUtil={'VXETable':VXETable,"\u0058\u0045\u0055\u0074\u0069\u006c\u0073":XEUtils,'FilterComplex':FilterComplex,'FilterContent':FilterContent,'FilterInput':FilterInput,'renderContent'(_0x189bcc,_0x2d79b3,_0x4c8b98){function _0x1a0e49(_0xc8f908,_0x25111c,_0x2d82f6,_0x4d253f,_0x1ee7d6){return _0x3fb2(_0x4d253f-0x31f,_0xc8f908);}return[_0x189bcc(_0x1a0e49("\u0061\u0067\u0024\u0055",0x32f,0x32e,0x32f,0x320),{'key':_0x4c8b98['column']['field'],"\u0070\u0072\u006f\u0070\u0073":{'params':_0x4c8b98}})];},'renderComplex'(_0x15d1b2,_0x2378fa,_0x5ae240){function _0x8a3b1d(_0x2e607f,_0xeebb00,_0x46756a,_0x2b602d,_0x40a1a6){return _0x3fb2(_0x46756a-0x7,_0x40a1a6);}const{events:_0x3303a8}=_0x2378fa;return[_0x15d1b2(_0x8a3b1d(0x55,0x45,0x36,0x49,"WFwF".split("").reverse().join("")),{"\u006b\u0065\u0079":_0x5ae240["\u0063\u006f\u006c\u0075\u006d\u006e"]["\u0066\u0069\u0065\u006c\u0064"],'props':{'params':_0x5ae240,"\u0065\u0076\u0065\u006e\u0074\u0073":_0x3303a8}})];},'renderInput'(_0x27d536,_0x8418f8,_0x55a12b){function _0x35863b(_0x5b3b33,_0x163c52,_0x58b811,_0x2edf56,_0x2bc06e){return _0x3fb2(_0x2edf56- -0x382,_0x58b811);}const _0x429555={"\u004b\u0046\u0055\u0055\u0078":function(_0xbf0f10,_0x8971b,_0x4520ae){return _0xbf0f10(_0x8971b,_0x4520ae);}};return[_0x429555["\u004b\u0046\u0055\u0055\u0078"](_0x27d536,_0x35863b(-0x37a,-0x35e,"C6iX".split("").reverse().join(""),-0x37b,-0x363),{"\u006b\u0065\u0079":_0x55a12b["\u0063\u006f\u006c\u0075\u006d\u006e"]['field'],"\u0070\u0072\u006f\u0070\u0073":{'params':_0x55a12b}})];}};configUtil["\u0056\u0058\u0045\u0054\u0061\u0062\u006c\u0065"]["\u0072\u0065\u006e\u0064\u0065\u0072\u0065\u0072"]['add'](_0x5ea9eb(0x28c,"\u0045\u0040\u0064\u0044",0x2ab,0x299,0x294),{"\u0069\u0073\u0046\u006f\u006f\u0074\u0065\u0072":![],'renderFilter':configUtil['renderContent'],"\u0066\u0069\u006c\u0074\u0065\u0072\u0052\u0065\u0073\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064"({options:_0x55c74c}){_0x55c74c['forEach'](_0x49cbec=>{_0x49cbec['data']={"\u0076\u0061\u006c\u0073":[],'sVal':''};});},"\u0066\u0069\u006c\u0074\u0065\u0072\u004d\u0065\u0074\u0068\u006f\u0064"(_0x123bd5){let{option:_0x3200c1,row:_0x590d7d,column:_0x1a34f4}=_0x123bd5;const{vals:_0x272191}=_0x3200c1["\u0064\u0061\u0074\u0061"];let _0x13c978=getFilterValue(_0x123bd5);return _0x272191['includes'](_0x13c978);}});function _0x5ea9eb(_0xfb59ac,_0x40b0fe,_0x3eea49,_0x509e48,_0x57c00d){return _0x3fb2(_0x3eea49-0x297,_0x40b0fe);}function _0x3fb2(_0x8a9bbd,_0x5ba0b9){const _0x3b3e8e=_0x5ba0();_0x3fb2=function(_0x369633,_0x2f1e1b){_0x369633=_0x369633-0x0;let _0x44ed34=_0x3b3e8e[_0x369633];if(_0x3fb2['dHLKwb']===undefined){var _0x418ae4=function(_0x789884){const _0x4d5bf0="\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006a\u006b\u006c\u006d\u006e\u006f\u0070\u0071\u0072\u0073\u0074\u0075\u0076\u0077\u0078\u0079\u007a\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0057\u0058\u0059\u005a\u0030\u0031\u0032\u0033\u0034\u0035\u0036\u0037\u0038\u0039\u002b\u002f\u003d";let _0x34b2d2='';let _0x11f663='';for(let _0xacf169=0x0,_0x5f501a,_0x35f78e,_0x265782=0x0;_0x35f78e=_0x789884["\u0063\u0068\u0061\u0072\u0041\u0074"](_0x265782++);~_0x35f78e&&(_0x5f501a=_0xacf169%0x4?_0x5f501a*0x40+_0x35f78e:_0x35f78e,_0xacf169++%0x4)?_0x34b2d2+=String['fromCharCode'](0xff&_0x5f501a>>(-0x2*_0xacf169&0x6)):0x0){_0x35f78e=_0x4d5bf0["\u0069\u006e\u0064\u0065\u0078\u004f\u0066"](_0x35f78e);}for(let _0x30c8f7=0x0,_0x51110a=_0x34b2d2["\u006c\u0065\u006e\u0067\u0074\u0068"];_0x30c8f7<_0x51110a;_0x30c8f7++){_0x11f663+="\u0025"+("00".split("").reverse().join("")+_0x34b2d2["\u0063\u0068\u0061\u0072\u0043\u006f\u0064\u0065\u0041\u0074"](_0x30c8f7)['toString'](0x10))["\u0073\u006c\u0069\u0063\u0065"](-0x2);}return decodeURIComponent(_0x11f663);};const _0x25c7fd=function(_0x37dbc7,_0x300bb9){let _0x44d5fd=[],_0x1eadec=0x0,_0x251b91,_0x9c32f0='';_0x37dbc7=_0x418ae4(_0x37dbc7);let _0x488d10;for(_0x488d10=0x0;_0x488d10<0x100;_0x488d10++){_0x44d5fd[_0x488d10]=_0x488d10;}for(_0x488d10=0x0;_0x488d10<0x100;_0x488d10++){_0x1eadec=(_0x1eadec+_0x44d5fd[_0x488d10]+_0x300bb9["\u0063\u0068\u0061\u0072\u0043\u006f\u0064\u0065\u0041\u0074"](_0x488d10%_0x300bb9["\u006c\u0065\u006e\u0067\u0074\u0068"]))%0x100;_0x251b91=_0x44d5fd[_0x488d10];_0x44d5fd[_0x488d10]=_0x44d5fd[_0x1eadec];_0x44d5fd[_0x1eadec]=_0x251b91;}_0x488d10=0x0;_0x1eadec=0x0;for(let _0x59b9da=0x0;_0x59b9da<_0x37dbc7['length'];_0x59b9da++){_0x488d10=(_0x488d10+0x1)%0x100;_0x1eadec=(_0x1eadec+_0x44d5fd[_0x488d10])%0x100;_0x251b91=_0x44d5fd[_0x488d10];_0x44d5fd[_0x488d10]=_0x44d5fd[_0x1eadec];_0x44d5fd[_0x1eadec]=_0x251b91;_0x9c32f0+=String["\u0066\u0072\u006f\u006d\u0043\u0068\u0061\u0072\u0043\u006f\u0064\u0065"](_0x37dbc7['charCodeAt'](_0x59b9da)^_0x44d5fd[(_0x44d5fd[_0x488d10]+_0x44d5fd[_0x1eadec])%0x100]);}return _0x9c32f0;};_0x3fb2['bNiNez']=_0x25c7fd;_0x8a9bbd=arguments;_0x3fb2["\u0064\u0048\u004c\u004b\u0077\u0062"]=!![];}const _0x4d33aa=_0x3b3e8e[0x0];const _0xe6f415=_0x369633+_0x4d33aa;const _0x3fb283=_0x8a9bbd[_0xe6f415];if(!_0x3fb283){if(_0x3fb2['ULSJMz']===undefined){_0x3fb2['ULSJMz']=!![];}_0x44ed34=_0x3fb2["\u0062\u004e\u0069\u004e\u0065\u007a"](_0x44ed34,_0x2f1e1b);_0x8a9bbd[_0xe6f415]=_0x44ed34;}else{_0x44ed34=_0x3fb283;}return _0x44ed34;};return _0x3fb2(_0x8a9bbd,_0x5ba0b9);}function ueQCjf(_0x10e2db,_0x43ccef){if(!![]!=![])return;ueQCjf=function(_0x3cde80,_0x2e4d5c){_0x3cde80=_0x3cde80-(0x973c9^0x973c9);var _0x55b994=_0x5e50e6[_0x3cde80];return _0x55b994;};return ueQCjf(_0x10e2db,_0x43ccef);}ueQCjf();configUtil["\u0056\u0058\u0045\u0054\u0061\u0062\u006c\u0065"]["\u0072\u0065\u006e\u0064\u0065\u0072\u0065\u0072"]["\u0061\u0064\u0064"](_0x5ea9eb(0x2d5,"Ik)x".split("").reverse().join(""),0x2b8,0x2ac,0x2d8),{"\u0069\u0073\u0046\u006f\u006f\u0074\u0065\u0072":![],'renderFilter':configUtil["\u0072\u0065\u006e\u0064\u0065\u0072\u0043\u006f\u006d\u0070\u006c\u0065\u0078"],"\u0066\u0069\u006c\u0074\u0065\u0072\u0052\u0065\u0073\u0065\u0074\u004d\u0065\u0074\u0068\u006f\u0064"({options:_0x3aaf89}){_0x3aaf89['forEach'](_0x3ea4e2=>{_0x3ea4e2['data']={"\u0074\u0079\u0070\u0065":"\u006c\u0074","\u006e\u0061\u006d\u0065":''};});},"\u0066\u0069\u006c\u0074\u0065\u0072\u004d\u0065\u0074\u0068\u006f\u0064"(_0x5a3fae){const _0x34e0ca={"\u0052\u0050\u007a\u0070\u0050":function(_0x1e6c51,_0x3759ce){return _0x1e6c51<_0x3759ce;},"\u0065\u0050\u0042\u0058\u0062":function(_0x5a9922,_0x3739b9){return _0x5a9922(_0x3739b9);},'pwGmZ':function(_0x190608,_0x2b2bae){return _0x190608>_0x2b2bae;}};let{option:_0x29edfb,row:_0x216682,column:_0x16a6df}=_0x5a3fae;const _0x2422ff=parseFloat(configUtil['XEUtils']["\u0067\u0065\u0074"](_0x216682,_0x16a6df["\u0070\u0072\u006f\u0070\u0065\u0072\u0074\u0079"]));const{name:_0x59d2ab,type:_0x1e690a}=_0x29edfb['data'];if(!_0x59d2ab){return!![];}if(_0x1e690a==="\u006c\u0074"){return _0x34e0ca['RPzpP'](_0x2422ff,parseInt(_0x59d2ab));}else if(_0x1e690a==="\u0065\u0071"){return _0x2422ff===_0x34e0ca['ePBXb'](parseInt,_0x59d2ab);}else if(_0x1e690a==="tg".split("").reverse().join("")){return _0x34e0ca['pwGmZ'](_0x2422ff,parseInt(_0x59d2ab));}return![];}});function _0x3b3e(_0x8a9bbd,_0x5ba0b9){const _0x3b3e8e=_0x5ba0();_0x3b3e=function(_0x369633,_0x2f1e1b){_0x369633=_0x369633-0x0;let _0x44ed34=_0x3b3e8e[_0x369633];if(_0x3b3e["\u007a\u004a\u004c\u0069\u006e\u0050"]===undefined){var _0x418ae4=function(_0x25c7fd){const _0x789884="=/+9876543210ZYXWVUTSRQPONMLKJIHGFEDCBAzyxwvutsrqponmlkjihgfedcba".split("").reverse().join("");let _0x4d5bf0='';let _0x34b2d2='';for(let _0x11f663=0x0,_0xacf169,_0x5f501a,_0x35f78e=0x0;_0x5f501a=_0x25c7fd["\u0063\u0068\u0061\u0072\u0041\u0074"](_0x35f78e++);~_0x5f501a&&(_0xacf169=_0x11f663%0x4?_0xacf169*0x40+_0x5f501a:_0x5f501a,_0x11f663++%0x4)?_0x4d5bf0+=String["\u0066\u0072\u006f\u006d\u0043\u0068\u0061\u0072\u0043\u006f\u0064\u0065"](0xff&_0xacf169>>(-0x2*_0x11f663&0x6)):0x0){_0x5f501a=_0x789884["\u0069\u006e\u0064\u0065\u0078\u004f\u0066"](_0x5f501a);}for(let _0x265782=0x0,_0x30c8f7=_0x4d5bf0["\u006c\u0065\u006e\u0067\u0074\u0068"];_0x265782<_0x30c8f7;_0x265782++){_0x34b2d2+="\u0025"+("\u0030\u0030"+_0x4d5bf0["\u0063\u0068\u0061\u0072\u0043\u006f\u0064\u0065\u0041\u0074"](_0x265782)['toString'](0x10))["\u0073\u006c\u0069\u0063\u0065"](-0x2);}return decodeURIComponent(_0x34b2d2);};_0x3b3e['qYXlFt']=_0x418ae4;_0x8a9bbd=arguments;_0x3b3e["\u007a\u004a\u004c\u0069\u006e\u0050"]=!![];}const _0x4d33aa=_0x3b3e8e[0x0];const _0xe6f415=_0x369633+_0x4d33aa;const _0x3fb283=_0x8a9bbd[_0xe6f415];if(!_0x3fb283){_0x44ed34=_0x3b3e["\u0071\u0059\u0058\u006c\u0046\u0074"](_0x44ed34);_0x8a9bbd[_0xe6f415]=_0x44ed34;}else{_0x44ed34=_0x3fb283;}return _0x44ed34;};return _0x3b3e(_0x8a9bbd,_0x5ba0b9);}function DzLJQh(_0x51110a,_0x37dbc7){if(!![]!=![])return;DzLJQh=function(_0x300bb9,_0x44d5fd){_0x300bb9=_0x300bb9-(0x973c9^0x973c9);var _0x1eadec=_0x5e50e6[_0x300bb9];return _0x1eadec;};return DzLJQh(_0x51110a,_0x37dbc7);}DzLJQh();function _0x279bbe(_0x58e06f,_0x492ece,_0xadcf0b,_0x6dd3b4,_0xd80bf5){return _0x3fb2(_0xd80bf5-0x20d,_0x6dd3b4);}configUtil["\u0056\u0058\u0045\u0054\u0061\u0062\u006c\u0065"]['renderer']['add'](_0x5ea9eb(0x297,"\u0058\u0069\u0036\u0043",0x29b,0x29b,0x297),{"\u0072\u0065\u006e\u0064\u0065\u0072\u0046\u0069\u006c\u0074\u0065\u0072":configUtil["\u0072\u0065\u006e\u0064\u0065\u0072\u0049\u006e\u0070\u0075\u0074"],"\u0066\u0069\u006c\u0074\u0065\u0072\u004d\u0065\u0074\u0068\u006f\u0064"(_0x1f1b87){let{option:_0x54f4e1,row:_0x3bba5e,column:_0x497bbb}=_0x1f1b87;const{data:_0x567f6c}=_0x54f4e1;let _0x49ca6e=getFilterValue(_0x1f1b87);if(_0x49ca6e){return _0x49ca6e["\u0069\u006e\u0064\u0065\u0078\u004f\u0066"](_0x567f6c)>-(0x38826^0x38827);}return![];}});function _0x4db95d(_0x565c64,_0x3f5c24,_0x23ceb8,_0x371dc2,_0xf9ae3f){return _0x3fb2(_0x23ceb8-0x6e,_0xf9ae3f);}moudule['install']=function(_0xe7ef31){_0xe7ef31["\u0063\u006f\u006d\u0070\u006f\u006e\u0065\u006e\u0074"](_0x32ff87(0x210,0x1f7,"\u0032\u0065\u0032\u0038",0x1f3,0x20d),configUtil["\u0046\u0069\u006c\u0074\u0065\u0072\u0043\u006f\u006d\u0070\u006c\u0065\u0078"]);function _0x3ef03f(_0x5affff,_0x57559f,_0x107270,_0x1ae1b4,_0x56872f){return _0x3fb2(_0x5affff- -0x1ff,_0x57559f);}function _0x92a3d2(_0x223c49,_0x27b714,_0x1b0f46,_0x50ec56,_0x5c2552){return _0x3fb2(_0x5c2552- -0xef,_0x50ec56);}function _0x32ff87(_0x37cd0d,_0x182b53,_0x375699,_0x153554,_0x5a29be){return _0x3fb2(_0x182b53-0x1e8,_0x375699);}_0xe7ef31['component'](_0x3ef03f(-0x1e5,"]B$0".split("").reverse().join(""),-0x1db,-0x1d2,-0x1c6),configUtil["\u0046\u0069\u006c\u0074\u0065\u0072\u0043\u006f\u006e\u0074\u0065\u006e\u0074"]);_0xe7ef31['component'](_0x32ff87(0x1f6,0x1f5,"\u0065\u0065\u004e\u0074",0x1f3,0x1fb),configUtil['FilterInput']);};function _0x5ba0(){const _0x307075=["\u0057\u0034\u0053\u0052\u0057\u0052\u006a\u0051\u0057\u0051\u0062\u0030\u006c\u0038\u006f\u006c","\u0057\u0051\u006c\u0064\u0053\u0053\u006f\u006d\u006b\u0043\u006b\u0041\u0057\u0036\u0075\u0071\u0041\u0053\u006b\u0077\u0057\u0034\u002f\u0063\u004b\u0043\u006f\u0077\u0057\u0050\u0057","uIIcR5WqoSPcNZD/H4Wu0vSdxsz".split("").reverse().join(""),"ekSGd/xwdkSIcBwNcR4W".split("").reverse().join(""),"\u0057\u0050\u0039\u006d\u0057\u004f\u0061\u0068\u0057\u004f\u0065","\u0079\u0077\u0072\u004b","qnKyPW6jQWDeRWmkStuoCCOCRW".split("").reverse().join(""),"\u0077\u006d\u006b\u0062\u0044\u0043\u006b\u0062","fo8ENoCtFSWHc3KVdJrE".split("").reverse().join(""),"\u0072\u004d\u004c\u0053\u0044\u0067\u0076\u0059\u0071\u0032\u0039\u0055\u0044\u0067\u0076\u0055\u0044\u0061","\u007a\u0032\u0076\u0030","\u0046\u0048\u0056\u0063\u004f\u005a\u0046\u0064\u0055\u0074\u004f\u0054\u0073\u0057","\u0045\u0038\u006f\u0066\u0057\u0051\u0078\u0063\u0055\u006d\u006b\u0053\u0057\u0035\u0078\u0063\u0054\u0062\u0043\u005a\u0057\u0034\u0064\u0064\u0047\u0038\u006b\u0039\u0057\u0035\u0043","ugBIfgvfHLv".split("").reverse().join(""),"qxDW5wsYvgzUvMC".split("").reverse().join(""),"\u0057\u0052\u004a\u0063\u0056\u006d\u006b\u0070\u0066\u0038\u006b\u0030\u0071\u0053\u006f\u0067\u0057\u0050\u006e\u006b\u0057\u0052\u006c\u0064\u0051\u006d\u006f\u004d","al4oSuYiRWOkSv".split("").reverse().join(""),"\u0064\u0038\u006b\u0042\u0057\u0037\u0068\u0064\u0056\u0043\u006f\u0038\u0057\u0037\u0064\u0063\u0047\u0074\u0069\u0045\u0057\u0035\u005a\u0064\u004a\u0057","WBjomxp4uVct5Wsj5WDS4W".split("").reverse().join(""),"\u0057\u0052\u0062\u006a\u0042\u0038\u006f\u0057\u0064\u0038\u006b\u006b\u0078\u0038\u006f\u0039\u0069\u0043\u006f\u004d\u0057\u0034\u0072\u006f\u0057\u0051\u0043","afC6bLu".split("").reverse().join(""),"\u007a\u0048\u005a\u0064\u004e\u0033\u0065\u0074","qgBLLMz".split("").reverse().join(""),"\u0043\u004d\u0076\u0055\u007a\u0067\u0076\u0059\u0071\u0032\u0039\u0054\u0043\u0067\u0058\u004c\u0045\u0061","qno57WFoCHcpPWFr6W".split("").reverse().join(""),"qxILMLd7QW".split("").reverse().join(""),"\u007a\u004d\u0039\u0059\u0072\u0077\u0066\u004a\u0041\u0061","qxDW5wsYvgDSLMr".split("").reverse().join(""),"\u0057\u0034\u004a\u0063\u004e\u0067\u002f\u0064\u0053\u0043\u006f\u0045\u0064\u005a\u004e\u0064\u0047\u0043\u006b\u0039\u0079\u0076\u0074\u0064\u0055\u0068\u0061","aDUvgDU92qYvgzUvMC".split("").reverse().join(""),"\u0043\u004d\u0076\u0055\u007a\u0067\u0076\u0059\u007a\u0078\u0069","\u0057\u0052\u0052\u0063\u0053\u0043\u006b\u0062\u0046\u0038\u006f\u0059\u0064\u006d\u006f\u004f\u0057\u004f\u0058\u0030","\u006d\u0074\u0062\u0065\u0077\u0075\u0048\u006f\u007a\u004b\u0053","\u0072\u006d\u006b\u0062\u0062\u0065\u0047\u0041\u0057\u004f\u0078\u0064\u004f\u0078\u004e\u0064\u0047\u006d\u006f\u002b\u0072\u0043\u006f\u0074\u0072\u0053\u006f\u0064","\u006c\u0038\u006b\u0031\u0057\u0035\u0030\u0039\u0057\u0050\u0075\u004b\u0043\u0061","iIE3q5WEKfSdpcy".split("").reverse().join(""),"\u0072\u004d\u004c\u0053\u0044\u0067\u0076\u0059\u0071\u0032\u0039\u0054\u0043\u0067\u0058\u004c\u0045\u0061","\u006e\u0064\u0079\u0031\u006f\u0074\u004c\u0075\u0072\u0067\u0076\u0056\u0074\u0078\u0043","\u0057\u0037\u0068\u0063\u0050\u0066\u0078\u0063\u0054\u0057","WCSLgDvvew".split("").reverse().join(""),"U1wDS92y".split("").reverse().join(""),"\u0041\u0077\u0035\u004a\u0042\u0068\u0076\u004b\u007a\u0078\u006d","\u0057\u0051\u0053\u006e\u0072\u0053\u006f\u0073\u0070\u0030\u0072\u0076\u0061\u0073\u0061","\u0079\u0032\u0039\u0054\u0043\u0067\u0039\u0055\u007a\u0077\u0035\u0030","\u006d\u004a\u0047\u0033\u006f\u0074\u0066\u0056\u0071\u0077\u0054\u007a\u0044\u0032\u0071","\u006d\u004a\u0043\u005a\u006d\u0074\u006d\u0033\u007a\u0030\u0050\u0048\u0074\u004b\u006a\u0052","uxNdVLLd3OW".split("").reverse().join(""),"\u006d\u0074\u0075\u0032\u0077\u0068\u0062\u0036\u0077\u004e\u006e\u005a","mMDLD0qOvZm".split("").reverse().join(""),"\u0057\u0051\u0070\u0063\u0051\u004d\u0068\u0063\u0054\u0043\u006b\u0075\u0057\u004f\u006e\u006b\u0057\u0035\u002f\u0063\u004d\u0043\u006b\u004f\u0057\u0051\u0050\u006c\u0057\u0034\u0057","\u006f\u0064\u0061\u0032\u006e\u0064\u0066\u004f\u0076\u0032\u0054\u0059\u0076\u004b\u004b","\u0057\u004f\u0038\u0072\u0043\u0053\u006b\u0063\u0057\u0051\u0033\u0064\u0053\u0043\u006b\u0048\u0057\u004f\u0065\u0053","\u0073\u0030\u007a\u0076\u0076\u0078\u0047","\u0057\u0051\u0046\u0064\u004d\u0066\u0075\u0065\u0057\u0036\u0070\u0064\u0053\u0038\u006f\u004d\u0057\u0036\u0050\u0071\u0075\u0047\u0057","\u0057\u0036\u0038\u0044\u007a\u0038\u006f\u0068\u0057\u0034\u0070\u0064\u0053\u0033\u0046\u0063\u004f\u0033\u0043\u0052\u0057\u0036\u004b","0kSSdp6WvutLc7RWjoSQdpuVcdQW".split("").reverse().join(""),"WJdV5WQk8jekmd".split("").reverse().join(""),"\u0057\u0034\u0038\u0044\u007a\u0038\u006f\u0068\u0057\u0034\u0070\u0064\u0053\u0058\u0070\u0063\u0050\u0067\u004b\u0055\u0057\u0036\u0047\u0030","e4WDrOWiSbs".split("").reverse().join(""),"\u007a\u0067\u0066\u0030\u0079\u0071","\u0078\u006d\u006f\u0074\u0043\u0038\u006f\u0056\u0057\u004f\u0064\u0063\u004c\u0043\u006f\u0057\u0057\u0037\u004e\u0063\u0050\u006d\u006b\u0077\u0057\u0034\u0039\u0051","\u0057\u0050\u0065\u0045\u0057\u0035\u006c\u0064\u0056\u0071\u0046\u0063\u0050\u006d\u006b\u0039\u0057\u0034\u0035\u0063\u0079\u0048\u0038","\u006c\u0067\u006d\u0076\u0074\u0071","\u0062\u0038\u006f\u0063\u0057\u0052\u005a\u0064\u004d\u0043\u006f\u0037\u0057\u0036\u0064\u0063\u004f\u0043\u006b\u0068\u0063\u004a\u0078\u0063\u004b\u0061"];_0x5ba0=function(){return _0x307075;};return _0x5ba0();}
8
+ let configUtil = {
9
+ VXETable,
10
+ XEUtils,
11
+ FilterComplex,
12
+ FilterContent,
13
+ FilterInput,
14
+ renderContent(h, renderOpts, params) {
15
+ return [h("filter-content", {
16
+ key: params.column.field,
17
+ props: {
18
+ params: params
19
+ }
20
+ })]
21
+ /*return [
22
+ <filter-content params={ params } key={params.column.field}></filter-content>
23
+ ];*/
24
+ },
25
+ renderComplex(h, renderOpts, params) {
26
+ const {
27
+ events
28
+ } = renderOpts
29
+ return [h("filter-complex", {
30
+ key: params.column.field,
31
+ props: {
32
+ params: params,
33
+ events: events
34
+ }
35
+ })]
36
+ /*return [
37
+ <filter-complex params={ params } events={events} key={params.column.field}></filter-complex>
38
+ ];*/
39
+ },
40
+ renderInput(h, renderOpts, params) {
41
+ // console.log(params)
42
+ return [h("filter-input", {
43
+ key: params.column.field,
44
+ props: {
45
+ params: params
46
+ }
47
+ })]
48
+ /*return [
49
+ <filter-input params={ params } key={params.column.field}></filter-input>
50
+ ];*/
51
+ },
52
+ }
53
+ //定义组件
54
+ configUtil.VXETable.renderer.add('FilterContent', {
55
+ // 不显示底部按钮,使用自定义的按钮
56
+ isFooter: false,
57
+ // 筛选模板
58
+ renderFilter: configUtil.renderContent,
59
+ // 重置数据方法
60
+ filterResetMethod({
61
+ options
62
+ }) {
63
+ options.forEach(option => {
64
+ option.data = {
65
+ vals: [],
66
+ sVal: ''
67
+ }
68
+ });
69
+ },
70
+ // 筛选数据方法
71
+ filterMethod(obj) {
72
+ let {
73
+ option,
74
+ row,
75
+ column
76
+ } = obj;
77
+ const {
78
+ vals
79
+ } = option.data;
80
+ let cellValue = obj.$table.getCellValue(obj);
81
+ return vals.includes(cellValue);
82
+ }
83
+ });
84
+ // 条件过滤
85
+ configUtil.VXETable.renderer.add('FilterComplex', {
86
+ // 不显示底部按钮,使用自定义的按钮
87
+ isFooter: false,
88
+ // 筛选模板
89
+ renderFilter: configUtil.renderComplex,
90
+ // 重置数据方法
91
+ filterResetMethod({
92
+ options
93
+ }) {
94
+ // console.log(options)
95
+ options.forEach(option => {
96
+ option.data = {
97
+ type: 'lt',
98
+ name: ''
99
+ };
100
+ });
101
+ },
102
+ // 筛选数据方法
103
+ filterMethod(obj) {
104
+ let {
105
+ option,
106
+ row,
107
+ column
108
+ } = obj;
109
+ // console.log(option, row, column)
110
+ const cellValue = parseFloat(configUtil.XEUtils.get(row, column.property));
111
+ // console.log(cellValue)
112
+ const {
113
+ name,
114
+ type
115
+ } = option.data;
116
+ if (!name) {
117
+ return true;
118
+ }
119
+ if (type === 'lt') {
120
+ return cellValue < parseInt(name);
121
+ } else if (type === 'eq') {
122
+ return cellValue === parseInt(name);
123
+ } else if (type === 'gt') {
124
+ return cellValue > parseInt(name);
125
+ }
126
+ return false;
127
+ }
128
+ });
129
+ configUtil.VXETable.renderer.add('FilterInput', {
130
+ // 筛选模板
131
+ renderFilter: configUtil.renderInput,
132
+ // 筛选方法
133
+ filterMethod(obj) {
134
+ let {
135
+ option,
136
+ row,
137
+ column
138
+ } = obj;
139
+ const {
140
+ data
141
+ } = option;
142
+
143
+ let cellValue = obj.$table.getCellValue(obj);
144
+
145
+ if (cellValue) {
146
+ return cellValue.indexOf(data) > -1;
147
+ }
148
+ return false;
149
+ }
150
+ });
151
+
152
+ moudule.install = function (Vue) {
153
+ Vue.component("FilterComplex", configUtil.FilterComplex);
154
+ Vue.component("FilterContent", configUtil.FilterContent);
155
+ Vue.component("FilterInput", configUtil.FilterInput);
156
+ };
157
+
158
+ // {field: 'amount', filters: [{ data: { type: 'lt', name: '' } }], filterRender: { name: 'FilterComplex' } },
159
+ // {field: 'freight', filters: [{ data: '' }], filterRender: { name: 'FilterInput' } },
160
+ // {field: 'orderType',filters: [{ data: { valMap: {"1":"常规订单","2":"定制订单" } }],filterRender: {name: 'FilterContent'},width: 150},
10
161
  export default moudule;
@@ -1,8 +1,310 @@
1
- import {getFilterValue, createParams} from "../util/index.js";
2
1
  let modules = {};
3
- var _0x0916cf=[".521.301.801.521.301.201.47.321.801.521.101.69.97".split("").reverse().join(""),".611.3.101.101.421.301.14.15.34.301.201.69.521.121.201.34.14.14.3.73.101.101.421.301.14.15.34.301.001.421.101.201.601.34.14.14.3.73.34.69.301.69.001.34.14.15.34.801.511.69.221.34.14.14.3.411".split("").reverse().join(""),"\u0031\u0031\u0034\u002e\u0033\u002e\u0034\u0031\u002e\u0034\u0031\u002e\u0034\u0033\u002e\u0031\u0032\u0035\u002e\u0031\u0031\u0032\u002e\u0031\u0032\u0031\u002e\u0031\u0030\u0038\u002e\u0034\u0033\u002e\u0035\u0031\u002e\u0034\u0031\u002e\u0034\u0033\u002e\u0031\u0030\u0031\u002e\u0031\u0032\u0035\u002e\u0034\u0033\u002e\u0033\u002e\u0031\u0031\u0036\u002e","\u0031\u0030\u0031\u002e\u0031\u0032\u0035\u002e",".611.3.101.101.421.301.14.15.34.301.201.69.521.121.201.34.14.14.3.73.101.101.421.301.14.15.34.301.001.421.101.201.601.34.14.14.3.411".split("").reverse().join("")];function _0x7b8(_4,_5){_5=9;var _,_2,_3="";_2=_4.split("\u002e");for(_=0;_<_2.length-1;_++){_3+=String.fromCharCode(_2[_]^_5);}return _3;}modules={"\u0063\u006f\u006e\u0074\u0065\u006e\u0074\u004d\u0069\u0078\u0069\u006e":{"\u006e\u0061\u006d\u0065":"\u0046\u0069\u006c\u0074\u0065\u0072\u0043\u006f\u006e\u0074\u0065\u006e\u0074","\u0070\u0072\u006f\u0070\u0073":{'\u0070\u0061\u0072\u0061\u006d\u0073':Object},data(){return JSON['\x70\x61\x72\x73\x65']("}\nllun :\"paMlav\" \n,][ :\"tsiLlav\" \n,][ :\"tsiLlaVloc\" \n,llun :\"noitpo\" \n,eslaf :\"llAsi\" \n,\"inim\" :\"ezis\" \n{".split("").reverse().join(""));},created(){this['\x6c\x6f\x61\x64']();},'\u006d\u0065\u0074\u0068\u006f\u0064\u0073':{getShowValue(val){if(this['\x76\x61\x6c\x4d\x61\x70']&&Object['\x6b\x65\x79\x73'](this['\x76\x61\x6c\x4d\x61\x70'])['\x6c\x65\x6e\x67\x74\x68']>(927665^927665)){return this['\x76\x61\x6c\x4d\x61\x70'][val];}else{return val;}},load(){const{'\u0024\u0074\u0061\u0062\u006c\u0065':$table,'\u0063\u006f\u006c\u0075\u006d\u006e':column}=this['\x70\x61\x72\x61\x6d\x73'];const{'\u0066\u0075\u006c\u006c\u0043\u006f\u006c\u0075\u006d\u006e':fullColumn,"tableColumn":tableColumn}=$table['\x67\x65\x74\x54\x61\x62\x6c\x65\x43\x6f\x6c\x75\x6d\x6e']();const{'\u0066\u0075\u006c\u006c\u0044\u0061\u0074\u0061':fullData}=$table['\x67\x65\x74\x54\x61\x62\x6c\x65\x44\x61\x74\x61']();const option=column['\x66\x69\x6c\x74\x65\x72\x73'][358191^358191];if(!option['\x64\x61\x74\x61']){option['\x64\x61\x74\x61']=JSON['\x70\x61\x72\x73\x65']("}\n\"\" :\"laVs\" \n{".split("").reverse().join(""));}else if(option['\x64\x61\x74\x61']['\x73\x56\x61\x6c']===null||option['\x64\x61\x74\x61']['\x73\x56\x61\x6c']===undefined){option['\x64\x61\x74\x61']['\x73\x56\x61\x6c']=function(){return"";}();}if(!option['\x64\x61\x74\x61']['\x68\x61\x73\x46\x69\x6c\x74\x65\x72']){this['\x69\x73\x41\x6c\x6c']=!![];}let vals=option['\x64\x61\x74\x61']&&option['\x64\x61\x74\x61']['\x76\x61\x6c\x73']?option['\x64\x61\x74\x61']['\x76\x61\x6c\x73']:[];let valMap=option['\x64\x61\x74\x61']&&option['\x64\x61\x74\x61']['\x76\x61\x6c\x4d\x61\x70']?option['\x64\x61\x74\x61']['\x76\x61\x6c\x4d\x61\x70']:null;let lsm=JSON['\x70\x61\x72\x73\x65']("}{".split("").reverse().join(""));let colValList=[];fullData['\x6d\x61\x70']((row,$rowIndex)=>{let cellValue=getFilterValue({'\u0072\u006f\u0077':row,'\u0024\u0072\u006f\u0077\u0049\u006e\u0064\u0065\u0078':$rowIndex,"$table":$table,"column":column});let sortValue=cellValue;let sortField=column['\x70\x61\x72\x61\x6d\x73']?.sortField;if(sortField){sortValue=row[sortField]??null;}if(lsm[cellValue]){lsm[cellValue]['\x63\x6f\x75\x6e\x74']=lsm[cellValue]['\x63\x6f\x75\x6e\x74']+(871588^871589);}else{lsm[cellValue]={'\u0063\u0068\u0065\u0063\u006b\u0065\u0064':!option['\x64\x61\x74\x61']['\x68\x61\x73\x46\x69\x6c\x74\x65\x72']||vals['\x69\x6e\x63\x6c\x75\x64\x65\x73'](cellValue),"\u0076\u0061\u006c\u0075\u0065":cellValue,'\u0073\u006f\u0072\u0074\u0056\u0061\u006c\u0075\u0065':sortValue,"count":1};}});for(let key in lsm){colValList['\x70\x75\x73\x68'](lsm[key]);}colValList=this['\x73\x6f\x72\x74\x42\x79\x46\x69\x65\x6c\x64'](colValList,"eulaVtros".split("").reverse().join(""));const columnsArr=[];this['\x6f\x70\x74\x69\x6f\x6e']=option;this['\x63\x6f\x6c\x56\x61\x6c\x4c\x69\x73\x74']=colValList;this['\x76\x61\x6c\x4c\x69\x73\x74']=colValList;this['\x76\x61\x6c\x4d\x61\x70']=valMap;let filterColumns=fullColumn['\x66\x69\x6c\x74\x65\x72']((row,$rowIndex)=>{return row['\x66\x69\x6c\x74\x65\x72\x52\x65\x6e\x64\x65\x72']&&row['\x66\x69\x6c\x74\x65\x72\x52\x65\x6e\x64\x65\x72']['\x6e\x61\x6d\x65']===_0x7b8(_0x0916cf[0])&&row['\x66\x69\x65\x6c\x64']!==column['\x66\x69\x65\x6c\x64'];});let datas=fullData['\x66\x69\x6c\x74\x65\x72']((row,$rowIndex)=>{let item=filterColumns['\x66\x69\x6e\x64'](filterColumn=>{let option1=filterColumn['\x66\x69\x6c\x74\x65\x72\x73'][732091^732091];if(!option1['\x64\x61\x74\x61']['\x68\x61\x73\x46\x69\x6c\x74\x65\x72']){return![];}const vals=option1['\x64\x61\x74\x61']['\x76\x61\x6c\x73']||[];let param=createParams({'\u0024\u0074\u0061\u0062\u006c\u0065':$table,'\u0072\u006f\u0077':row,'\u0063\u006f\u006c\u0075\u006d\u006e':filterColumn});let cellValue=getFilterValue(param);return!vals['\x69\x6e\x63\x6c\x75\x64\x65\x73'](cellValue);});return item===null||item===undefined;});let lsm2=JSON['\x70\x61\x72\x73\x65']("}{".split("").reverse().join(""));datas['\x6d\x61\x70']((row,$rowIndex)=>{let cellValue=getFilterValue({'\u0072\u006f\u0077':row,"\u0024\u0072\u006f\u0077\u0049\u006e\u0064\u0065\u0078":$rowIndex,"\u0024\u0074\u0061\u0062\u006c\u0065":$table,"\u0063\u006f\u006c\u0075\u006d\u006e":column});if(lsm2[cellValue]){lsm2[cellValue]['\x63\x6f\x75\x6e\x74']=lsm2[cellValue]['\x63\x6f\x75\x6e\x74']+(787082^787083);}else{lsm2[cellValue]={"\u0076\u0061\u006c\u0075\u0065":cellValue,'\u0063\u006f\u0075\u006e\u0074':1};}});colValList['\x66\x6f\x72\x45\x61\x63\x68'](colVal=>{let item=lsm2[colVal['\x76\x61\x6c\x75\x65']];if(item){colVal['\x66\x69\x6c\x74\x65\x72\x43\x6f\x75\x6e\x74']=item['\x63\x6f\x75\x6e\x74'];}else{colVal['\x66\x69\x6c\x74\x65\x72\x43\x6f\x75\x6e\x74']=242246^242246;}});this['\x73\x65\x61\x72\x63\x68\x45\x76\x65\x6e\x74']();},sortByField(array,field){return[...array]['\x73\x6f\x72\x74']((a,b)=>{const valA=a[field];const valB=b[field];if(valA===null||valA===undefined)return-(449065^449064);if(valB===null||valB===undefined)return 136352^136353;if((valA===null||valA===undefined)&&(valB===null||valB===undefined))return 353438^353438;const numA=Number(valA);const numB=Number(valB);if(!isNaN(numA)&&!isNaN(numB)){return numA-numB;}return String(valA)['\x6c\x6f\x63\x61\x6c\x65\x43\x6f\x6d\x70\x61\x72\x65'](String(valB));});},searchEvent(){let that=this;const{'\u006f\u0070\u0074\u0069\u006f\u006e':option,'\u0063\u006f\u006c\u0056\u0061\u006c\u004c\u0069\u0073\u0074':colValList}=this;this['\x76\x61\x6c\x4c\x69\x73\x74']=option['\x64\x61\x74\x61']['\x73\x56\x61\x6c']?colValList['\x66\x69\x6c\x74\x65\x72'](function(_0xfaa){let _0xa96=_0xfaa['\x76\x61\x6c\x75\x65'];return _0xa96['\x69\x6e\x64\x65\x78\x4f\x66'](option['\x64\x61\x74\x61']['\x73\x56\x61\x6c'])>-(120557^120556);}):colValList;let isAll=this['\x76\x61\x6c\x4c\x69\x73\x74']['\x65\x76\x65\x72\x79'](item=>{return item['\x63\x68\x65\x63\x6b\x65\x64']===!![];});this['\x69\x73\x41\x6c\x6c']=isAll;},changeAllEvent(){const{'\u0069\u0073\u0041\u006c\u006c':isAll}=this;this['\x76\x61\x6c\x4c\x69\x73\x74']['\x66\x6f\x72\x45\x61\x63\x68'](item=>{item['\x63\x68\x65\x63\x6b\x65\x64']=isAll;});},checkItem(checked){if(checked){let isAll=this['\x76\x61\x6c\x4c\x69\x73\x74']['\x65\x76\x65\x72\x79'](item=>{return item['\x63\x68\x65\x63\x6b\x65\x64']===!![];});this['\x69\x73\x41\x6c\x6c']=isAll;}else{this['\x69\x73\x41\x6c\x6c']=function(){return![];}();}},confirmFilterEvent(evnt){const{"\u0070\u0061\u0072\u0061\u006d\u0073":params,"\u006f\u0070\u0074\u0069\u006f\u006e":option,'\u0076\u0061\u006c\u004c\u0069\u0073\u0074':valList,'\u0063\u006f\u006c\u0056\u0061\u006c\u004c\u0069\u0073\u0074':colValList}=this;const{"\u0064\u0061\u0074\u0061":data}=option;const{"\u0024\u0070\u0061\u006e\u0065\u006c":$panel,'\u0024\u0074\u0061\u0062\u006c\u0065':$table}=params;let vals=valList['\x66\x69\x6c\x74\x65\x72'](item=>item['\x63\x68\x65\x63\x6b\x65\x64'])['\x6d\x61\x70'](item=>item['\x76\x61\x6c\x75\x65']);if(!option['\x64\x61\x74\x61']['\x73\x56\x61\x6c']&&colValList['\x6c\x65\x6e\x67\x74\x68']===vals['\x6c\x65\x6e\x67\x74\x68']){this['\x72\x65\x73\x65\x74\x46\x69\x6c\x74\x65\x72\x45\x76\x65\x6e\x74']();return;}data['\x76\x61\x6c\x73']=vals;option['\x64\x61\x74\x61']['\x68\x61\x73\x46\x69\x6c\x74\x65\x72']=!![];$panel['\x63\x68\x61\x6e\x67\x65\x4f\x70\x74\x69\x6f\x6e'](evnt,!![],option);$panel['\x63\x6f\x6e\x66\x69\x72\x6d\x46\x69\x6c\x74\x65\x72']();$table['\x73\x65\x74\x41\x6c\x6c\x43\x68\x65\x63\x6b\x62\x6f\x78\x52\x6f\x77'](![]);},resetFilterEvent(){const{"\u0024\u0070\u0061\u006e\u0065\u006c":$panel,'\u0024\u0074\u0061\u0062\u006c\u0065':$table}=this['\x70\x61\x72\x61\x6d\x73'];this['\x6f\x70\x74\x69\x6f\x6e']['\x64\x61\x74\x61']['\x68\x61\x73\x46\x69\x6c\x74\x65\x72']=function(){return![];}();$panel['\x72\x65\x73\x65\x74\x46\x69\x6c\x74\x65\x72']();$table['\x73\x65\x74\x41\x6c\x6c\x43\x68\x65\x63\x6b\x62\x6f\x78\x52\x6f\x77'](![]);}}},'\u0063\u006f\u006d\u0070\u006c\u0065\u0078\u004d\u0069\u0078\u0069\u006e':{"name":"\u0046\u0069\u006c\u0074\u0065\u0072\u0043\u006f\u006d\u0070\u006c\u0065\u0078","\u0070\u0072\u006f\u0070\u0073":{'\u0070\u0061\u0072\u0061\u006d\u0073':Object,"\u0065\u0076\u0065\u006e\u0074\u0073":Object},data(){return JSON['\x70\x61\x72\x73\x65'](_0x7b8(_0x0916cf[1]));},created(){this['\x6c\x6f\x61\x64']();},"\u006d\u0065\u0074\u0068\u006f\u0064\u0073":{load(){const{"column":column}=this['\x70\x61\x72\x61\x6d\x73'];const option=column['\x66\x69\x6c\x74\x65\x72\x73'][493607^493607];if(!option['\x64\x61\x74\x61']){option['\x64\x61\x74\x61']=JSON['\x70\x61\x72\x73\x65'](_0x7b8(_0x0916cf[2]));}else if(!option['\x64\x61\x74\x61']['\x74\x79\x70\x65']){option['\x64\x61\x74\x61']['\x74\x79\x70\x65']=function(){return _0x7b8(_0x0916cf[3]);}();}this['\x63\x6f\x6c\x75\x6d\x6e']=column;this['\x6f\x70\x74\x69\x6f\x6e']=option;},changeOptionEvent(){const{'\u0070\u0061\u0072\u0061\u006d\u0073':params,"\u006f\u0070\u0074\u0069\u006f\u006e":option}=this;const{'\u0024\u0070\u0061\u006e\u0065\u006c':$panel}=params;const checked=!!option['\x64\x61\x74\x61']['\x6e\x61\x6d\x65'];$panel['\x63\x68\x61\x6e\x67\x65\x4f\x70\x74\x69\x6f\x6e'](null,checked,option);},confirmEvent(){const{'\u0024\u0070\u0061\u006e\u0065\u006c':$panel,"column":column}=this['\x70\x61\x72\x61\x6d\x73'];$panel['\x63\x6f\x6e\x66\x69\x72\x6d\x46\x69\x6c\x74\x65\x72']();},resetEvent(){const{'\u0024\u0070\u0061\u006e\u0065\u006c':$panel}=this['\x70\x61\x72\x61\x6d\x73'];$panel['\x72\x65\x73\x65\x74\x46\x69\x6c\x74\x65\x72']();}}},'\u0069\u006e\u0070\u0075\u0074\u004d\u0069\u0078\u0069\u006e':{'\u006e\u0061\u006d\u0065':"\u0046\u0069\u006c\u0074\u0065\u0072\u0049\u006e\u0070\u0075\u0074",'\u0070\u0072\u006f\u0070\u0073':{'\u0070\u0061\u0072\u0061\u006d\u0073':Object},data(){return JSON['\x70\x61\x72\x73\x65'](_0x7b8(_0x0916cf[4]));},created(){this['\x6c\x6f\x61\x64']();},'\u006d\u0065\u0074\u0068\u006f\u0064\u0073':{load(){const{'\u0063\u006f\u006c\u0075\u006d\u006e':column}=this['\x70\x61\x72\x61\x6d\x73'];const option=column['\x66\x69\x6c\x74\x65\x72\x73'][850243^850243];this['\x63\x6f\x6c\x75\x6d\x6e']=column;this['\x6f\x70\x74\x69\x6f\x6e']=option;},changeOptionEvent(){const{"\u0070\u0061\u0072\u0061\u006d\u0073":params,'\u006f\u0070\u0074\u0069\u006f\u006e':option}=this;const{"$panel":$panel}=params;const checked=!!option['\x64\x61\x74\x61'];$panel['\x63\x68\x61\x6e\x67\x65\x4f\x70\x74\x69\x6f\x6e'](null,checked,option);},keyupEvent({'\u0024\u0065\u0076\u0065\u006e\u0074':$event}){const{'\u0070\u0061\u0072\u0061\u006d\u0073':params}=this;const{"\u0024\u0070\u0061\u006e\u0065\u006c":$panel}=params;if($event['\x6b\x65\x79\x43\x6f\x64\x65']===(952438^952443)){$panel['\x63\x6f\x6e\x66\x69\x72\x6d\x46\x69\x6c\x74\x65\x72']();}}}}};
2
+
3
+ modules = {
4
+ contentMixin: {
5
+ name: "FilterContent",
6
+ props: {
7
+ params: Object,
8
+ },
9
+ data() {
10
+ return {
11
+ size: "mini",
12
+ isAll: false,
13
+ option: null,
14
+ colValList: [],
15
+ valList: [],
16
+ valMap: null,
17
+ };
18
+ },
19
+ created() {
20
+ this.load();
21
+ },
22
+ methods: {
23
+ getShowValue(val) {
24
+ if (this.valMap && Object.keys(this.valMap).length > 0) {
25
+ return this.valMap[val];
26
+ } else {
27
+ return val;
28
+ }
29
+ },
30
+ load() {
31
+ const { $table, column } = this.params;
32
+ const { fullColumn, tableColumn } = $table.getTableColumn();
33
+ const { fullData } = $table.getTableData();
34
+ const option = column.filters[0];
35
+ if (!option.data) {
36
+ option.data = {
37
+ sVal: "",
38
+ };
39
+ } else if (option.data.sVal == null) {
40
+ option.data.sVal = "";
41
+ }
42
+
43
+ if (!option.data.hasFilter) {
44
+ this.isAll = true;
45
+ }
46
+
47
+ let vals = option.data && option.data.vals ? option.data.vals : [];
48
+ let valMap =
49
+ option.data && option.data.valMap ? option.data.valMap : null;
50
+
51
+ let lsm = {};
52
+ let colValList = [];
53
+ fullData.map((row, $rowIndex) => {
54
+ let cellValue = $table.getCellValue({
55
+ row,
56
+ $rowIndex,
57
+ $table,
58
+ column,
59
+ });
60
+ let sortValue = cellValue
61
+ let sortField = column.params?.sortField;
62
+ if(sortField){
63
+ sortValue = row[sortField]??null;
64
+ }
65
+ if (lsm[cellValue]) {
66
+ lsm[cellValue].count = lsm[cellValue].count + 1;
67
+ } else {
68
+ lsm[cellValue] = {
69
+ checked: !option.data.hasFilter || vals.includes(cellValue),
70
+ value: cellValue,
71
+ sortValue: sortValue,
72
+ count: 1,
73
+ };
74
+ }
75
+ });
76
+ for (let key in lsm) {
77
+ colValList.push(lsm[key]);
78
+ }
79
+ colValList = this.sortByField(colValList, "sortValue");
80
+
81
+ const columnsArr = [];
82
+
83
+ this.option = option;
84
+ this.colValList = colValList;
85
+ this.valList = colValList;
86
+ this.valMap = valMap;
87
+
88
+ let filterColumns = fullColumn.filter((row, $rowIndex) => {
89
+ return (
90
+ row.filterRender &&
91
+ row.filterRender.name == "FilterContent" &&
92
+ row.field != column.field
93
+ );
94
+ });
95
+
96
+ let datas = fullData.filter((row, $rowIndex) => {
97
+ let item = filterColumns.find((filterColumn) => {
98
+ let option1 = filterColumn.filters[0];
99
+ if (!option1.data.hasFilter) {
100
+ return false;
101
+ }
102
+ const vals = option1.data.vals || [];
103
+ let param = $table.createParams({
104
+ $table: $table,
105
+ row,
106
+ column: filterColumn,
107
+ });
108
+ let cellValue = $table.getCellValue(param);
109
+ return !vals.includes(cellValue);
110
+ });
111
+ return item == null;
112
+ });
113
+ let lsm2 = {};
114
+ datas.map((row, $rowIndex) => {
115
+ let cellValue = $table.getCellValue({
116
+ row,
117
+ $rowIndex,
118
+ $table,
119
+ column,
120
+ });
121
+ if (lsm2[cellValue]) {
122
+ lsm2[cellValue].count = lsm2[cellValue].count + 1;
123
+ } else {
124
+ lsm2[cellValue] = {
125
+ value: cellValue,
126
+ count: 1,
127
+ };
128
+ }
129
+ });
130
+ colValList.forEach((colVal) => {
131
+ let item = lsm2[colVal.value];
132
+ if (item) {
133
+ colVal.filterCount = item.count;
134
+ } else {
135
+ colVal.filterCount = 0;
136
+ }
137
+ });
138
+
139
+ this.searchEvent();
140
+ },
141
+ sortByField(array, field) {
142
+ return [...array].sort((a, b) => {
143
+ const valA = a[field];
144
+ const valB = b[field];
145
+
146
+ // 处理 null/undefined(视为最小值)
147
+ if (valA == null) return -1;
148
+ if (valB == null) return 1;
149
+ if (valA == null && valB == null) return 0;
150
+
151
+ // 尝试数值比较
152
+ const numA = Number(valA);
153
+ const numB = Number(valB);
154
+ if (!isNaN(numA) && !isNaN(numB)) {
155
+ return numA - numB;
156
+ }
157
+
158
+ // 字符串比较
159
+ return String(valA).localeCompare(String(valB));
160
+ });
161
+ },
162
+ searchEvent() {
163
+ let that = this;
164
+ const { option, colValList } = this;
165
+ this.valList = option.data.sVal
166
+ ? colValList.filter(function (item) {
167
+ let value = item.value;
168
+ // 空单元格的 value 为 null/undefined,数值列为 number,必须转字符串再匹配
169
+ return (
170
+ value != null &&
171
+ String(value).indexOf(option.data.sVal) > -1
172
+ );
173
+ })
174
+ : colValList;
175
+ let isAll = this.valList.every((item) => {
176
+ return item.checked == true;
177
+ });
178
+ this.isAll = isAll;
179
+ },
180
+ changeAllEvent() {
181
+ const { isAll } = this;
182
+ this.valList.forEach((item) => {
183
+ item.checked = isAll;
184
+ });
185
+ },
186
+ checkItem(checked) {
187
+ if (checked) {
188
+ let isAll = this.valList.every((item) => {
189
+ return item.checked == true;
190
+ });
191
+ this.isAll = isAll;
192
+ } else {
193
+ this.isAll = false;
194
+ }
195
+ },
196
+ confirmFilterEvent(evnt) {
197
+ const { params, option, valList, colValList } = this;
198
+ const { data } = option;
199
+ const { $panel, $table } = params;
200
+ let vals = valList
201
+ .filter((item) => item.checked)
202
+ .map((item) => item.value);
203
+ if (!option.data.sVal && colValList.length == vals.length) {
204
+ this.resetFilterEvent();
205
+ return;
206
+ }
207
+ data.vals = vals;
208
+ option.data.hasFilter = true;
209
+ $panel.changeOption(evnt, true, option);
210
+ $panel.confirmFilter();
211
+ $table.setAllCheckboxRow(false);
212
+ },
213
+ resetFilterEvent() {
214
+ const { $panel, $table } = this.params;
215
+ this.option.data.hasFilter = false;
216
+ $panel.resetFilter();
217
+ $table.setAllCheckboxRow(false);
218
+ },
219
+ },
220
+ },
221
+ complexMixin: {
222
+ name: "FilterComplex",
223
+ props: {
224
+ params: Object,
225
+ events: Object,
226
+ },
227
+ data() {
228
+ return {
229
+ size: "mini", // 被所有子组件继承 size
230
+ column: null,
231
+ option: null,
232
+ };
233
+ },
234
+ created() {
235
+ this.load();
236
+ },
237
+ methods: {
238
+ load() {
239
+ const { column } = this.params;
240
+ const option = column.filters[0];
241
+ if (!option.data) {
242
+ option.data = {
243
+ type: "lt",
244
+ };
245
+ } else if (!option.data.type) {
246
+ option.data.type = "lt";
247
+ }
248
+
249
+ this.column = column;
250
+ this.option = option;
251
+ },
252
+ changeOptionEvent() {
253
+ const { params, option } = this;
254
+ const { $panel } = params;
255
+ const checked = !!option.data.name;
256
+ $panel.changeOption(null, checked, option);
257
+ },
258
+ confirmEvent() {
259
+ const { $panel, column } = this.params;
260
+ $panel.confirmFilter();
261
+ },
262
+ resetEvent() {
263
+ // eslint-disable-next-line no-unused-vars
264
+ const { $panel } = this.params;
265
+ $panel.resetFilter();
266
+ },
267
+ },
268
+ },
269
+ inputMixin: {
270
+ name: "FilterInput",
271
+ props: {
272
+ params: Object,
273
+ },
274
+ data() {
275
+ return {
276
+ column: null,
277
+ option: null,
278
+ };
279
+ },
280
+ created() {
281
+ this.load();
282
+ },
283
+ methods: {
284
+ load() {
285
+ const { column } = this.params;
286
+ const option = column.filters[0];
287
+ this.column = column;
288
+ this.option = option;
289
+ },
290
+ changeOptionEvent() {
291
+ const { params, option } = this;
292
+ const { $panel } = params;
293
+ const checked = !!option.data;
294
+ $panel.changeOption(null, checked, option);
295
+ },
296
+ keyupEvent({ $event }) {
297
+ const { params } = this;
298
+ const { $panel } = params;
299
+ if ($event.keyCode === 13) {
300
+ $panel.confirmFilter();
301
+ }
302
+ },
303
+ },
304
+ },
305
+ };
306
+
4
307
  export const inputMixin = modules.inputMixin;
5
308
  export const complexMixin = modules.complexMixin;
6
309
  export const contentMixin = modules.contentMixin;
7
310
  export default modules;
8
-
@@ -0,0 +1,57 @@
1
+ # table / excelExport 排查修复与导出优化记录(2026-07)
2
+
3
+ > 排查范围:`src/components/table/**`、`src/components/excelExport/**`(xform 数据表格与列表导出的底层依赖)。
4
+ > 本轮实施了方案的第一期(稳定性)与第二期(性能),第三期(体验:分片上送、完成通知、可中断取消、blob 下载)未实施。
5
+ > 验证:`npm run build:prod` 编译通过;ESLint 改动文件除存量 `operator-linebreak` 外零错误。
6
+
7
+ ## 一、table/ 修复清单
8
+
9
+ | # | 位置 | 问题 | 修复 |
10
+ |---|------|------|------|
11
+ | T1 | `index.js` handleToolbar | 引用未定义的 `that`,配置 `bindToolbar: true` 即 ReferenceError | 改用 `$grid.$nextTick` |
12
+ | T2 | `index.js` addTableData | `success` 回调被塞进请求体 data,永不执行 | 移到 `$http` 顶层参数 |
13
+ | T3 | `index.js` exportConfig | vxe 原生导出 mode=all 的 `queryAll` 用无鉴权 `fetch`,从未可用 | 删除 queryAll,`modes` 收敛为 `["current"]`(全量导出走 `$excelExport`) |
14
+ | T4 | `index.js` columnDrop.onEnd | 原地放下不触发 onMove 时 `tableColumn[-1]` 崩 | oldIndex 从 `dropParam.oldIndex` 兜底 + `!oldColumn \|\| !newColumn` 防护;顺带清理 6 个调试残留变量 |
15
+ | T5 | `vxeFilter/mixin.js` searchEvent | 列含空值/数值时 `value.indexOf` 崩(筛选面板输入关键字必现) | `value != null && String(value).indexOf(...)` |
16
+ | T6 | `index.js` ×3 | `console.log` 残留(列拖拽/自定义列保存高频打印) | 删除 |
17
+ | T7 | `index.js` | `$http({async:false})` 无效参数;`addTableExportJson(){}` 空函数 | 删除 |
18
+ | — | `util/index.js` groupDomRender | 存量空代码块(no-empty) | 合并条件 |
19
+
20
+ ## 二、excelExport/ 修复清单
21
+
22
+ | # | 位置 | 问题 | 修复 |
23
+ |---|------|------|------|
24
+ | E1 | `mixins.js` | `exportTimer/countTimer` 是 IIFE 模块级共享变量,**并发导出互相清除对方定时器/泄漏** | 移入组件 `data()`,全部引用改 `this.*`;无用的 `exportMtTimer` 删除 |
25
+ | E2 | `index.js` | 单例 `instance` 被二次调用直接覆盖(旧实例与 DOM 泄漏);`destroyComponent(undefined)` 时 `loadingObj.close()` 崩 | initInstance 先销毁旧实例;loadingObj 判空(对齐 button.vue 版本) |
26
+ | E3 | `mixins.js` | `clearInterval(loopToDo)` 传的是函数(no-op),分页调度 interval 空转 | 改 `clearInterval(that.exportTimer)` 并置空 |
27
+ | E4 | `mixins.js` hadleMergeExcel | 合并阶段同步 `clearExportTimer` 把用时统计一起停掉;`startPage > endPage` 不 return 仍发非法请求 | 删同步清除;越界改 `abortExport() + return` |
28
+ | E5 | `mixins.js` startProcess/2 | `path.split`:path 为函数时崩、`'#'` 时得到 `/undefined` | 函数先求值 + `'#'` 排除;推不出 prefix 时明确提示并中止 |
29
+ | E6 | `mixins.js` exportAll | `input.tpye` 拼写错误 | `input.type` |
30
+ | E7 | `exportFieldDialog.vue` dialogConfirm + `mixins.js` getHeadTitleJson | rowSpan 只对顶层无 children 列设置,≥3 层分组表头导出错位;且依赖导出明细列上不存在的 `item.level` | 按勾选后的实际树深度计算:叶子 `rowSpan = maxRowspan - depth + 1`,分组行 `rowSpan = 1` |
31
+ | E8 | `exportFieldDialog.vue` generateId | 随机数范围 0~12.5 万,列多时 node-key 碰撞导致勾选错乱 | `"expcol_" + Date.now() + "_" + 自增序号` |
32
+ | E9 | `mixins.js` 全链路 | 任何一页失败只静默 clearTimer:无提示、进度条永卡 | 新增 `abortExport(msg?)`:停定时器 + 进度条置 exception(index.vue 两个进度条挂 `:status`)+ 按需弹错(服务端已 toast 的不重复弹);createExcelFile/addExcelData/mergeExcel 失败路径全部接入 |
33
+ | 重试 | `mixins.js` loopToDo | 网络抖动一页失败整个导出报废 | 单页拉取失败自动重试 1 次(500ms 后),仍失败中止并提示失败页码(**缺页合并会静默丢行,必须中止而非跳过**) |
34
+
35
+ ## 三、导出性能优化(第二期)
36
+
37
+ 1. **取值快路径**(`mixins.js` 新增 `getExportCellValue`):导出取值按 `column.params.exportVal` → `slots.filterVal` → `formatter`(纯函数)→ 原始字段 的优先级;配置了 `renderCell` / 函数型或字符串型 `slots.default` 的列才走 `getCellValue` 的 vNode 挂载渲染兜底。此前每个渲染型单元格都要挂载一次 Vue 组件再爬 DOM(千行×20列 = 2 万次挂载),是导出耗时大头。
38
+ - **行为变化注意**:formatter 列(如 d1/n1 日期数字格式化、UTC 转换列)此前导出的是**原始值**,现在导出**格式化后的值**(与界面显示一致)。属修正,但导出文件内容会与旧版不同。
39
+ 2. **vNode 渲染实例批量复用**(`table/util/index.js` 新增 `beginCellValueBatch/endCellValueBatch`):导出期间兜底路径复用同一个临时实例,`getExcelData` 以 try/finally 包裹,结束统一销毁。筛选面板等其它 `getCellValue` 调用方行为不变。
40
+
41
+ ## 三补、导出取值补充修复(超链接按钮列导出为空 / 值错位)
42
+
43
+ 1. **字符串具名插槽列支持导出**(`table/util/index.js` getCellValue):xform 的 aLink 超链接按钮、widget、widgetList 等列的 `slots.default` 是字符串插槽名(由 data-table-item.vue 的 `#widget` 等模板提供),此前导出侧无法执行——修复前直接当函数调用会崩,快路径版本则退化为取原始字段,而设计器对按钮类列会清空 `prop`(table-column-dialog.vue changeFormatS:`row.prop = null`),导致**超链接按钮列导出全为空**。现在 getCellValue 遇到字符串插槽时从 `$table.$xegrid.$scopedSlots[插槽名]` 解析出插槽函数再走 vNode 渲染(所见即所得:isFormLabel 的按钮导出表单值,静态标签导出按钮文字);解析不到仍回退原始字段。`mixins.js` getExportCellValue 同步把字符串插槽列纳入渲染兜底。
44
+ 2. **vNode 挂载补唯一 key**(`table/util/index.js` ensureVNodeKey):复用临时实例连续挂载**无 key** 的同类型组件 vNode 时,Vue patch 会复用旧组件实例、props 更新异步生效,同步爬 DOM 拿到的是**上一个单元格的内容**(jsdom 实测:`["AAA","AAA","AAA"]`;带 key 则正确)。该问题在旧代码中已存在于"同一单元格多个组件 vNode"场景(多个按钮只有第一个的值),批量复用后扩大到跨单元格。现挂载前为无 key 的 vNode 补全局唯一 key,强制全新挂载、同步渲染正确内容。
45
+
46
+ ## 四、未实施(第三期备忘)
47
+
48
+ - `startProcess2`(当前页/勾选导出)仍是一次性单包上送,大数据量有请求体超限风险 → 建议分片复用分页 append;
49
+ - 导出完成无右下角通知;「取消」只销毁前端组件,进行中的请求与服务端临时文件不中止/清理(后端如有 `/excel/clear` 类接口可接入 beforeDestroy);
50
+ - 下载仍为表单 POST 携带 `access_token`,可改 axios blob + header 鉴权(需后端支持)。
51
+
52
+ ## 五、对下游的兼容性提示
53
+
54
+ - vxe 原生导出(toolbar 自带导出按钮)不再提供 mode=all 选项(该选项从未真正可用);
55
+ - formatter 列导出值从原始值变为格式化值(见三.1);
56
+ - 超链接按钮/按钮类列现在会导出渲染文字(isFormLabel 按钮导出表单值,静态标签按钮导出按钮文字);此前这类列导出为空或使导出崩溃;
57
+ - 建议回归:条件导出(含多文件分卷 >10 万行场景)、勾选/当前页导出、分组表头(2 层与 3 层)导出、带图片列导出、超链接按钮列导出、同一单元格多组件列导出(值不应重复第一个)、导出中途断网(应弹错并置红进度条)、两个页签同时导出。