UNPKG

vxe-pc-ui

Version:
1 lines 6.22 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_ui=require("../../ui"),_log=require("../../ui/src/log"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn"),_util=require("../render/util"),_loading=_interopRequireDefault(require("../../loading/src/loading")),_xeUtils=_interopRequireDefault(require("xe-utils"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_vue.defineComponent)({name:"VxeListView",props:{size:{type:String,default:()=>(0,_ui.getConfig)().listView.size||(0,_ui.getConfig)().size},config:Object,height:{type:[String,Number],default:()=>(0,_ui.getConfig)().listView.height},loading:Boolean,formData:Object,actionButtons:Array,gridOptions:Object,gridEvents:Object,viewRender:Object},emits:["cell-action","update:formData","update:actionButtons"],setup(l,e){const s=_ui.VxeUI.getComponent("VxeGrid"),{emit:u,slots:c}=e;var t=_xeUtils.default.uniqueId();const a=(0,_vue.ref)(),d=(0,_vue.ref)(),f=(0,_ui.useSize)(l)["computeSize"],m=(0,_vue.reactive)({formConfig:{},searchFormData:{},searchFormItems:[],listTableColumns:[],tableColumns:[],footerData:[{}]}),g=(0,_vue.computed)(()=>{var e=l["gridOptions"],{formConfig:t,tableColumns:i,searchFormData:o,searchFormItems:n,footerData:r}=m,t=t["showStatistics"],e=e||{},s=Object.assign({minWidth:120},e.columnConfig);let a;return e.proxyConfig&&(a=Object.assign({autoLoad:!1},e.proxyConfig)),Object.assign({},e,{columns:i,columnConfig:s,showFooter:t,footerData:t?r:null,formConfig:{data:o,items:n},proxyConfig:a})}),v=(0,_vue.computed)(()=>{var e=l["gridEvents"];const i={};return _xeUtils.default.each(e,(e,t)=>{i[_xeUtils.default.camelCase("on-"+t)]=e}),i}),i={refElem:a,refGrid:d},o={computeSize:f},p={xID:t,props:l,context:e,reactData:m,getRefMaps:()=>i,getComputeMaps:()=>o},_=[],n=[],h=(_ui.renderer.forEach((e,t)=>{var i,e=e["createListDesignSettingActionButtonConfig"];e&&(i={name:t},("custom"===(t=Object.assign((0,_util.createListDesignActionButton)({code:t}),e(i))).type?n:_).push(t))}),e=>{if(e&&e.length){const i={};var t=e.map(e=>(i[e.field]=null,{field:e.field,title:e.title,folding:e.folding,itemRender:e.itemRender}));return t.push({field:"active",title:"",folding:!1,collapseNode:e.some(e=>e.folding),itemRender:{name:"VxeButtonGroup",options:[{content:"查询",icon:"vxe-icon-search",status:"primary",type:"submit"},{content:"重置",icon:"vxe-icon-repeat",type:"reset"}]}}),{items:t,data:i}}return{items:[],data:{}}}),C=e=>e?e.map(e=>({field:e.field,title:e.title,visible:!!e.visible,width:e.width,cellRender:_xeUtils.default.clone(e.cellRender)})):[];const r=e=>{if(e){var{formConfig:e,searchItems:t,listColumns:i}=e;m.formConfig=e||{};{e=t||[];const{data:o,items:n}=h(e);m.searchFormData=o,m.searchFormItems=n,u("update:formData",o),(0,_vue.nextTick)()}{t=i||[];const r=m["formConfig"],s=t||[],{columns:a,actionButtons:l}=x(s,r);m.listTableColumns=s,m.tableColumns=a,u("update:actionButtons",l),(0,_vue.nextTick)(()=>{const e=g.value;if(e.proxyConfig)b("reload")})}}return(0,_vue.nextTick)()},x=(e,t)=>{const i=Object.assign({},t);var{showSeq:t,actionButtonList:o}=i;const n=[],r={},s=c.cellAction,a=c.footerCell;if(t&&n.push({type:"seq",field:"_seq",fixed:"left",width:70}),C(e||[]).forEach(e=>{e=Object.assign({},e);i.showStatistics&&a&&(e.slots={footer:e=>a(Object.assign({},e))}),e.field&&(r[e.field]=null),n.push(e)}),o&&o.length){t={field:"_active",title:(0,_ui.getI18n)("vxe.table.actionTitle"),fixed:"right",width:"auto"};const l=[];o.forEach(t=>{if("custom"===t.type)return{content:t.name,name:t.code,icon:t.icon};var e,i=_.find(e=>e.code===t.code);let o=t.name,n=t.icon,r=t.status,s=t.permissionCode,a=t.classify;i&&(e=i.name,n=i.icon||"",r=i.status||"",s=i.permissionCode||"",a=i.classify||"",o=_xeUtils.default.toValueString(_xeUtils.default.isFunction(e)?e({name:i.code||""}):e)),a&&"cellButton"!==a||l.push({content:o,name:t.code,icon:n,status:r,permissionCode:s})}),s?t.slots={default(e){return s(Object.assign(Object.assign({},e),{buttons:l}))}}:t.cellRender={name:"VxeButtonGroup",props:{mode:"text"},options:l,events:{click(e,t){var i=t["option"];y("cell-action",Object.assign(Object.assign({},e),{button:i}),t.$event)}}},n.push(t)}return{rowRecord:r,columns:n,actionButtons:o}};const b=(e,...t)=>{var i=d.value;return i?i.commitProxy(e,...t):Promise.resolve()},y=(e,t,i)=>{u(e,(0,_ui.createEvent)(i,{$listView:p},t))};t={dispatchEvent:y,clearConfig:()=>(u("update:formData",{}),Object.assign(m,{formConfig:{},searchFormData:{},searchFormItems:[],listTableColumns:[],tableColumns:[],footerData:[{}]}),(0,_vue.nextTick)()),loadConfig:r,parseConfig:e=>{var{formConfig:e,searchItems:t,listColumns:i}=e||{},{columns:i,rowRecord:e,actionButtons:o}=x(i||[],e||m.formConfig),{data:t,items:n}=(t=t||[],h(t||[]));return{formData:t,formItems:n,tableColumns:i,tableRecord:e,actionButtons:o}},getTableRecord:e=>{var t;return _xeUtils.default.isArray(e)?(t=x(e,m.formConfig)["rowRecord"],t):e?({formConfig:t,listColumns:e}=e,e=x(e||[],t||m.formConfig)["rowRecord"],e):{}},getQueryFilter:()=>{const{searchFormData:o,searchFormItems:e}=m,n=[];var t={items:n,type:"and"};return d.value&&e.forEach(e=>{var t,e=e["field"],i=o[e];i&&((t=[]).push({field:e,value:i,match:"exact",type:_xeUtils.default.isArray(i)?"array":""}),n.push({condition:t,type:"and"}))}),t},commitProxy:b};Object.assign(p,t,{});return(0,_vue.watch)(()=>l.config,e=>{r(e||{})}),l.config&&r(l.config),(0,_vue.provide)("$xeListView",p),"development"===process.env.NODE_ENV&&(0,_vue.nextTick)(()=>{s||(0,_log.errLog)("vxe.error.reqComp",["vxe-grid"])}),p.renderVN=()=>{var{height:e,loading:t}=l,i=f.value,o=c.grid,n=g.value,r=v.value;return(0,_vue.h)("div",{ref:a,class:["vxe-list-view",{["size--"+i]:i,"is--loading":t}],style:e?{height:(0,_dom.toCssUnit)(e)}:null},[(0,_vue.h)("div",{class:"vxe-list-view--body"},[o?(0,_vue.h)("div",{class:"vxe-list-view--grid-wrapper"},(0,_vn.getSlotVNs)(o({$listView:p}))):s?(0,_vue.h)(s,Object.assign({},n,r,{ref:d}),Object.assign({},c,{default:void 0})):(0,_vue.createCommentVNode)()]),(0,_vue.h)(_loading.default,{class:"vxe-list-view--loading",modelValue:t})])},p},render(){return this.renderVN()}});