@aplus-frontend/ui
Version:
2 lines (1 loc) • 4.88 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),p=require("lodash-unified");require("../../config-provider/index.js");require("../../utils/index.js");const L=require("../utils.js"),de=require("./use-sorted-filtered.js"),ge=require("../../config-provider/hooks/use-locale.js"),pe=require("../../config-provider/hooks/use-namespace.js"),k=require("../../utils/is.js"),g=1,F=20,B={defaultCurrent:g,defaultPageSize:F,showLessItems:!1,showTotal:!0};function he(u){return u===!1?{}:u==null||u===!0?B:{...B,...u}}function Se(u){const d={};return u===!1||(u===!0||u==null?(d.current=g,d.pageSize=F):(d.current=u.defaultCurrent||g,d.pageSize=u.defaultPageSize||F)),d}const me=({manual:u=!1,request:d,params:N={},defaultData:y=[],formatParams:O,paramsValueTypeMap:R,resetFieldsIgnores:U,filterFields:G,sortFields:J,namespace:K="ap-table",pagination:h,onClickReset:Q,onAfterRequest:W})=>{let w=0,c={};const Z=he(h),$=e=>O?O(e):e,S=o.ref(),i=o.reactive(Se(h)),{getColumnSFConfig:H,setSF:X,clearAll:Y,sortedInfo:V,filteredInfo:I}=de.useTableSortedAndFiltered(),{t:m}=ge.useLocale(),{b:z}=pe.useNamespace(K),a=o.reactive({total:y.length,records:y,loading:!1}),P=()=>S.value?.apForm?.getFieldsValueTransformed(!0)||{},x=async(e,t)=>{const n=$(e),r=Date.now(),s=t?.cache;w=r,a.loading=!0;try{const l=await d({...o.unref(N),...n});if(w===r){a.total=l.total||l.data?.length||0,s?a.records.push(...l.data||[]):a.records=[...l.data||[]];const C=a.records.length<a.total;t?.onSuccess?.(e,C),a.loading=!1}}catch{w===r&&!s&&(a.records=[],a.total=0),a.loading=!1}finally{W?.(a.records)}},E=e=>{const t={};return Object.entries(e).forEach(([n,r])=>{if(t[n]=r,R&&r){const s=R[n];s&&(t[n]=L.parseFieldValue(s,r))}}),t},ee=async e=>{const t=P(),n={};Object.entries(t).forEach(([r,s])=>{U&&U.indexOf(r)>-1&&(n[r]=s)}),await S.value?.apForm?.resetFields(),S.value?.apForm?.setFieldsValue?.(n),o.nextTick(()=>{e?.()})},T=e=>{c=e;const t=E(e);x(t)},te=e=>{T({...c,...e})};let b,q=!0;function M(){b=void 0,q=!0}const ne=()=>{if(!q)return;const e=b?b+1:2,t={...c,current:e};c=t;const n=E(t);x(n,{cache:!0,onSuccess(r,s){b=r.current,q=s}})},re=()=>p.cloneDeep(c),A=()=>{_(!0),M()},_=(e=!1)=>{const t=P(),n=h!==!1;n&&e&&(i.current=g),T({...t,filter:c.filter,sort:c.sort,current:n?e?g:c.current||i.current:void 0,pageSize:n?c.pageSize||i.pageSize:void 0})},ae=()=>{Y(),c.sort={},c.filter={},Q?.(),ee(A),M()},D=()=>{T(c)},se=e=>{if(h===!1)D();else{const{current:t,pageSize:n}=i,r=a.total-e,s=Math.ceil(r/n),l=t>s?s:t;te({current:l>0?l:1})}},v=(e,t,n)=>{const r=P();i.current=e.current,i.pageSize=e.pageSize,X(t,n);const s=p.isArray(n)?[...n]:[n],l={};for(const f of s)o.unref(J)?.includes(f.columnKey||f.field)&&f.order&&(l[L.dataIndexToStr(f.columnKey||f.field)]=f.order);const C={};for(const f of Object.keys(t))o.unref(G)?.includes(f)&&t[f]&&(C[f]=t[f]);const j={...r,filter:C,sort:l,current:e.current,pageSize:e.pageSize};p.isEqualWith(c,j,L.isEqualCustom)||T(j)},oe=(e,t=I.value||{},n=V.value||{})=>{const r=e?.current??i.current,s=e?.pageSize??i.pageSize;v({current:r,pageSize:s},t,n,{action:"sort",currentDataSource:[]})};o.onMounted(()=>{const e=P(),{current:t,pageSize:n}=i;if(c={current:t,pageSize:n,filter:{},sort:{},...e},!u){const r=E(c);x(r)}}),o.watch(()=>o.unref(N),()=>{A()},{deep:!0});const ce=o.computed(()=>{if(a.total===0)return"-";const{current:e,pageSize:t}=i;return`${e}/${Math.ceil(a.total/t)}`});function ie(e){p.isArray(e)&&(a.records=e,a.total=e.length)}const ue=o.computed(()=>{const{showLessItems:e,showTotal:t,showQuickJumper:n,showSizeChanger:r,pageSizeOptions:s}=Z;return{loading:a.loading,pagination:{current:i.current,pageSize:i.pageSize,total:a.total,showSizeChanger:k.isDef(r)?r:!e,showQuickJumper:k.isDef(n)?n:!e,showLessItems:e,size:"default",pageSizeOptions:p.isUndefined(s)?["10","20","50","100"]:s,showTotal:t?l=>o.createVNode("span",{class:z("pagination-total-wrapper")},[m("ap.apTable.pagination.totalLeftPrefix")," ",o.createVNode("span",{class:z("pagination-count-text")},[l])," ",m("ap.apTable.pagination.totalLeftSuffix"),o.createVNode("span",{class:z("pagination--total-right")},[m("ap.apTable.pagination.totalRightPrefix")," ",o.createVNode("span",{class:z("pagination-count-text")},[o.unref(ce)])," ",m("ap.apTable.pagination.totalRightSuffix")])]):void 0},onChange:v,dataSource:a.records}});function le(e,t=!0){Object.assign(i,e),c.current=e.current,c.pageSize=e.pageSize,t&&D()}function fe(){return{...i}}return{formRef:S,submit:A,reset:ae,refresh:D,refreshByDelete:se,data:a,handleTableChange:v,handleTableChangeOptional:oe,tableProps:ue,dataSource:o.computed(()=>a.records),setDataSource:ie,getColumnSFConfig:H,sortedInfo:V,filteredInfo:I,getPaging:fe,setPaging:le,submitWith:_,fetchNextPageAndCache:ne,getLastParams:re}};exports.DEFAULT_CURRENT=g;exports.DEFAULT_PAGE_SIZE=F;exports.useTablePaging=me;