vxe-table-ro-test
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...
1 lines • 5.42 kB
JavaScript
;var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_util=require("../../src/util"),_dom=require("../../../ui/src/dom"),_utils=require("../../../ui/src/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const{renderer,hooks}=_ui.VxeUI,tableFilterMethodKeys=["openFilter","setFilter","clearFilter","getCheckedFilters","updateFilterOptionStatus"];hooks.add("tableFilterModule",{setupTable(F){const{props:d,reactData:_,internalData:n}=F,{refTableHeader:g,refTableBody:b,refTableFilter:k}=F.getRefMaps(),{computeFilterOpts:h,computeMouseOpts:p}=F.getComputeMaps(),i=e=>{var t=_["filterStore"];t.options.forEach(e=>{e.checked=e._checked}),F.confirmFilterEvent(e)},o=(e,t,l)=>{var r=_["filterStore"];r.options.forEach(e=>{e._checked=!1}),l._checked=t,F.checkFilterOptions(),i(e)},a=(e,t,l)=>{l._checked=t,F.checkFilterOptions()};const s={checkFilterOptions(){var e=_["filterStore"];e.isAllSelected=e.options.every(e=>e._checked),e.isIndeterminate=!e.isAllSelected&&e.options.some(e=>e._checked)},triggerFilterEvent(e,d,t){const{initStore:l,filterStore:h}=_;if(h.column===d&&h.visible)h.visible=!1;else{const{target:p,pageX:v}=e,m=(0,_dom.getDomNode)()["visibleWidth"];var{filters:r,filterMultiple:i,filterRender:o}=d,o=(0,_utils.isEnableConf)(o)?renderer.get(o.name):null;const a=d.filterRecoverMethod||(o?o.tableFilterRecoverMethod||o.filterRecoverMethod:null);n._currFilterParams=t,Object.assign(h,{multiple:i,options:r,column:d,style:null}),h.options.forEach(e=>{var{_checked:t,checked:l}=e;(e._checked=l)||t===l||a&&a({option:e,column:d,$table:F})}),this.checkFilterOptions(),h.visible=!0,l.filter=!0,(0,_vue.nextTick)(()=>{var r=g.value,i=b.value,r=r?r.$el:null,i=i.$el;if(i){var o=k.value,o=o?o.$el:null;if(o){var a=o.offsetWidth,n=o.offsetHeight,s=o.querySelector(".vxe-table--filter-header"),o=o.querySelector(".vxe-table--filter-footer"),c=a/2,f=i.clientWidth-a-10;let e,t;var u={top:p.offsetTop+p.offsetParent.offsetTop+p.offsetHeight+"px"};let l=null;r=i.clientHeight-(r?r.clientHeight/2:0);r<=n&&(l=Math.max(40,r-(o?o.offsetHeight:0)-(s?s.offsetHeight:0))),"left"===d.fixed?e=p.offsetLeft+p.offsetParent.offsetLeft-c:"right"===d.fixed?t=p.offsetParent.offsetWidth-p.offsetLeft+(p.offsetParent.offsetParent.offsetWidth-p.offsetParent.offsetLeft)-d.renderWidth-c:e=p.offsetLeft+p.offsetParent.offsetLeft-c-i.scrollLeft,e?(0<(n=v+a-c+10-m)&&(e-=n),u.left=Math.min(f,Math.max(10,e))+"px"):t&&(0<(r=v+a-c+10-m)&&(t+=r),u.right=Math.max(10,t)+"px"),h.style=u,h.maxHeight=l}}})}F.dispatchEvent("filter-visible",{column:d,field:d.field,property:d.field,filterList:F.getCheckedFilters(),visible:h.visible},e)},handleClearFilter(e){if(e){var{filters:t,filterRender:l}=e;if(t){l=(0,_utils.isEnableConf)(l)?renderer.get(l.name):null;const r=e.filterResetMethod||(l?l.tableFilterResetMethod||l.filterResetMethod:null);t.forEach(e=>{e._checked=!1,e.checked=!1,r||(e.data=_xeUtils.default.clone(e.resetValue,!0))}),r&&r({options:t,column:e,$table:F})}}},confirmFilterEvent(e){var t=d["mouseConfig"];const{filterStore:l,scrollXLoad:r,scrollYLoad:i}=_;var o=h.value,a=p.value,n=l["column"],s=n["field"];const c=[],f=[];n.filters.forEach(e=>{e.checked&&(c.push(e.value),f.push(e.data))});var u=F.getCheckedFilters(),n={$table:F,$event:e,column:n,field:s,property:s,values:c,datas:f,filters:u,filterList:u};o.remote||(F.handleTableData(!0),F.checkSelectionStatus()),t&&a.area&&F.handleFilterEvent&&F.handleFilterEvent(e,n),F.dispatchEvent("filter-change",n,e),F.closeFilter(),F.updateFooter().then(()=>{var{scrollXLoad:e,scrollYLoad:t}=_;if(r||e||i||t)return(r||e)&&F.updateScrollXSpace(),(i||t)&&F.updateScrollYSpace(),F.refreshScroll()}).then(()=>(F.updateCellAreas(),F.recalculate(!0))).then(()=>{setTimeout(()=>F.recalculate(),50)})},handleFilterChangeRadioOption:o,handleFilterChangeMultipleOption:a,handleFilterChangeOption(e,t,l){var r=_["filterStore"];r.multiple?a(0,t,l):o(e,t,l)},handleFilterConfirmFilter:i,handleFilterResetFilter:e=>{var t=_["filterStore"];F.handleClearFilter(t.column),F.confirmFilterEvent(e)}};return Object.assign(Object.assign({},{openFilter(e){const t=(0,_util.handleFieldOrColumn)(F,e);if(t&&t.filters){const l=n["elemStore"],r=t["fixed"];return F.scrollToColumn(t).then(()=>{var e=l[`${r||"main"}-header-wrapper`]||l["main-header-wrapper"],e=e?e.value:null;e&&(e=e.querySelector(`.vxe-header--column.${t.id} .vxe-filter--btn`),(0,_dom.triggerEvent)(e,"click"))})}return(0,_vue.nextTick)()},setFilter(e,t){e=(0,_util.handleFieldOrColumn)(F,e);return e&&e.filters&&(e.filters=(0,_util.toFilters)(t||[])),(0,_vue.nextTick)()},clearFilter(e){var t=_["filterStore"],l=n["tableFullColumn"],r=h.value;let i;return e?(i=(0,_util.handleFieldOrColumn)(F,e))&&s.handleClearFilter(i):l.forEach(s.handleClearFilter),e&&i===t.column||Object.assign(t,{isAllSelected:!1,isIndeterminate:!1,style:null,options:[],column:null,multiple:!1,visible:!1}),r.remote?(0,_vue.nextTick)():F.updateData()},getCheckedFilters(){var e=n["tableFullColumn"];const o=[];return e.forEach(e=>{var{field:t,filters:l}=e;const r=[],i=[];l&&l.length&&(l.forEach(e=>{e.checked&&(r.push(e.value),i.push(e.data))}),r.length)&&o.push({column:e,field:t,property:t,values:r,datas:i})}),o},updateFilterOptionStatus(e,t){return e._checked=t,e.checked=t,(0,_vue.nextTick)()}}),s)},setupGrid(e){return e.extendTableMethods(tableFilterMethodKeys)}});