UNPKG

@chewel/naive-ui-plus

Version:

## Document & Online preview

2 lines (1 loc) 6.28 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("naive-ui"),e=require("vue"),y=require("@vicons/antd"),F={id:"data-content"},P={key:0,class:"rounded-lg bg-gray-50 flex flex-row gap-2 items-center justify-end p-5 mb-5"},I={key:1},U={key:2},j=e.defineComponent({__name:"PTable",props:{idField:{default:"id"},item:{},columns:{},onLoad:{},onGet:{},onOpenModal:{},onCloseModal:{},onSave:{},onDelete:{}},setup(b,{expose:M}){const S=n.useDialog(),f=n.useMessage(),v=e.ref(!1),g=e.ref([]),m=e.ref([]),k=e.ref(null),u=e.ref(!1),p=e.ref(!1),w=e.ref(!1),s=e.ref({page:1,itemCount:0,pageSize:10,pageSizes:[10,20,30,50],showSizePicker:!0,onChange:async t=>{s.value.page=t,await c()},onUpdatePageSize:async t=>{s.value.pageSize=t,await c()}}),l=b,B=t=>{const o=a=>{const i=[];return t&&t.forEach(r=>{r.key!=="edit"&&r.key!=="delete"&&i.push({label:r.name,key:r.key,props:{onClick:()=>r.action(a)}})}),i};return{title:"操作",key:"actions",width:100,fixed:"left",render:a=>e.h(n.NDropdown,{options:[{label:"编辑",key:"edit",props:{onClick:()=>R(a)}},{label:"删除",key:"delete",props:{onClick:()=>D(a)}},...o(a)],placement:"bottom-start"},{default:()=>e.h(n.NButton,{size:"small",type:"primary"},{default:()=>["操作",e.h(n.NIcon,()=>e.h(y.MoreOutlined))]})})}},O=e.computed(()=>{const t=l.columns.reduce((a,i)=>i.key==="action"?i:a,void 0)?.action,o=l.columns.filter(a=>a.key!="action").map(a=>({title:a.title,key:a.key,width:a.width,render:a.render,ellipsis:a.ellipsis?{tooltip:!0}:!1}));return[{type:"selection",fixed:"left"},...o,B(t)]}),N=async()=>{await c()},D=t=>{_([t])},E=()=>{const t=C();_(t)},_=t=>{t&&t.length>0&&S.warning({title:"警告",content:"删除数据不可恢复, 确认删除吗?",positiveText:"确定",negativeText:"取消",onPositiveClick:async()=>{if(l.onDelete)try{await l.onDelete(t)?(c(),f.success("删除成功")):f.error("删除失败")}catch(o){console.error(o),f.error("删除异常,详情F12请查看控制台日志")}}})},z=()=>{l.onOpenModal&&l.onOpenModal(),p.value=!1,u.value=!0},R=async t=>{l.onOpenModal&&l.onOpenModal(t),l.onGet&&(t=await l.onGet(t[l.idField])),k.value=t,Object.assign(l.item,t),u.value=!1,p.value=!0},V=async()=>{if(l.onSave)try{w.value=!0,(u.value?await l.onSave():await l.onSave(k.value[l.idField]))&&(h(),await c())}catch(t){console.error(t),f.error("操作失败, 详情F12请查看控制台日志")}finally{w.value=!1}},h=()=>{l.onCloseModal&&l.onCloseModal(),Object.keys(l.item).forEach(t=>l.item[t]=void 0),k.value=null,u.value=!1,p.value=!1},C=()=>g.value?m.value.filter(o=>g.value.includes(o.id)).map(o=>e.toRaw(o)):[],T=()=>C()[0],$=()=>e.toRaw(m.value),c=async()=>{if(!v.value){v.value=!0;try{if(l.onLoad){var{data:t,total:o}=await l.onLoad(s.value.page,s.value.pageSize);m.value=t,s.value.itemCount=o}}catch(a){console.error(a),f.error("获取数据失败, 详情F12请查看控制台日志")}finally{v.value=!1}}};return e.onMounted(async()=>await N()),M({getData:$,getSelectedRow:T,getSelectedRows:C,closeModal:h,refreshData:c,resetPage:()=>{s.value.page=1}}),(t,o)=>{const a=n.NTooltip,i=n.NDataTable,r=n.NSpace,x=n.NModal;return e.openBlock(),e.createBlock(e.unref(n.NCard),{title:" ","header-class":"p-4","content-class":"pl-4 pr-4",bordered:!1},{"header-extra":e.withCtx(()=>[e.createVNode(a,{trigger:"hover"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(n.NIcon),{size:"18",class:"mr-1 cursor-pointer hover:text-blue-600",onClick:z},{default:e.withCtx(()=>[e.createVNode(e.unref(y.PlusSquareOutlined))]),_:1})]),default:e.withCtx(()=>[o[3]||(o[3]=e.createElementVNode("span",null,"新增",-1))]),_:1,__:[3]}),e.createVNode(a,{trigger:"hover"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(n.NIcon),{size:"18",class:"mr-1 cursor-pointer hover:text-blue-600",onClick:E},{default:e.withCtx(()=>[e.createVNode(e.unref(y.DeleteOutlined))]),_:1})]),default:e.withCtx(()=>[o[4]||(o[4]=e.createElementVNode("span",null,"删除",-1))]),_:1,__:[4]}),e.createVNode(a,{trigger:"hover"},{trigger:e.withCtx(()=>[e.createVNode(e.unref(n.NIcon),{size:"18",class:"cursor-pointer hover:text-blue-600",onClick:N},{default:e.withCtx(()=>[e.createVNode(e.unref(y.ReloadOutlined))]),_:1})]),default:e.withCtx(()=>[o[5]||(o[5]=e.createElementVNode("span",null,"刷新",-1))]),_:1,__:[5]})]),default:e.withCtx(()=>[e.createElementVNode("div",F,[t.$slots.toolbar?(e.openBlock(),e.createElementBlock("div",P,[e.renderSlot(t.$slots,"toolbar")])):e.createCommentVNode("",!0),e.createVNode(i,{remote:"","checked-row-keys":g.value,"onUpdate:checkedRowKeys":o[0]||(o[0]=d=>g.value=d),loading:v.value,bordered:!1,"single-line":!1,columns:O.value,data:m.value,pagination:s.value,"row-key":d=>d[t.idField]},null,8,["checked-row-keys","loading","columns","data","pagination","row-key"]),t.$slots.addModal?(e.openBlock(),e.createElementBlock("div",I,[e.createVNode(x,{title:"新增",preset:"dialog",show:u.value,"onUpdate:show":o[1]||(o[1]=d=>u.value=d),closable:!1,"close-on-esc":!1,"mask-closable":!1,style:{width:"800px"}},{action:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[e.createVNode(e.unref(n.NButton),{type:"primary",loading:w.value,onClick:V},{default:e.withCtx(()=>o[6]||(o[6]=[e.createTextVNode("保存",-1)])),_:1,__:[6]},8,["loading"]),e.createVNode(e.unref(n.NButton),{onClick:h},{default:e.withCtx(()=>o[7]||(o[7]=[e.createTextVNode("取消",-1)])),_:1,__:[7]})]),_:1})]),default:e.withCtx(()=>[e.renderSlot(t.$slots,"addModal")]),_:3},8,["show"])])):e.createCommentVNode("",!0),t.$slots.editModal?(e.openBlock(),e.createElementBlock("div",U,[e.createVNode(x,{title:"编辑",show:p.value,"onUpdate:show":o[2]||(o[2]=d=>p.value=d),preset:"dialog",closable:!1,"close-on-esc":!1,"mask-closable":!1,style:{width:"800px"}},{action:e.withCtx(()=>[e.createVNode(r,null,{default:e.withCtx(()=>[e.createVNode(e.unref(n.NButton),{type:"primary",loading:w.value,onClick:V},{default:e.withCtx(()=>o[8]||(o[8]=[e.createTextVNode("保存",-1)])),_:1,__:[8]},8,["loading"]),e.createVNode(e.unref(n.NButton),{onClick:h},{default:e.withCtx(()=>o[9]||(o[9]=[e.createTextVNode("取消",-1)])),_:1,__:[9]})]),_:1})]),default:e.withCtx(()=>[e.renderSlot(t.$slots,"editModal")]),_:3},8,["show"])])):e.createCommentVNode("",!0)])]),_:3})}}});exports.default=j;