2 lines
5.3 KiB
JavaScript
2 lines
5.3 KiB
JavaScript
|
|
import{E as G}from"./index-CxrDRhwR.js";import{E as H}from"./index-9zpOHVFd.js";import{E as J}from"./el-card-WMAJU1WK.js";import{E as O}from"./el-pagination-CZfi7rql.js";import{E as Q,a as W}from"./el-table-CknU6KUt.js";import{v as X}from"./directive-CGqZKDhv.js";import{d as Y,y as m,D as k,c as $,s as v,w as r,A as F,o as c,q as n,h as C,e as h,g as y,x as b,aa as B,Z as ee,K as te,j as V,v as ae}from"./index-Dd84m4NL.js";import{E as P}from"./index-Czb9Dcel.js";import"./el-scrollbar-CnqWU4CY.js";import"./el-popper-CXiDZrHI.js";import"./el-tag-DPsbND_Z.js";import"./el-select-DinjeS4W.js";import"./el-tooltip-l0sNRNKZ.js";import"./el-checkbox-DmCZOH3C.js";import{_ as le}from"./_plugin-vue_export-helper-DlAUqK2U.js";const ne={class:"data-table-page"},oe={class:"table-toolbar"},se={class:"table-title"},re={class:"toolbar-actions"},ie={key:0,class:"batch-bar"},ue={class:"batch-info"},ce={class:"table-body"},de={class:"table-pagination"},fe=Y({__name:"DataTablePage",props:{title:{},data:{},loading:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},searchFields:{},multiSelect:{type:Boolean,default:!1},showBatchBar:{type:Boolean,default:!0},createText:{},createTo:{},deleteFn:{},rowKey:{default:"id"},emptyText:{default:"暂无数据"},pageSize:{default:10},pageSizes:{default:()=>[10,20,50,100]}},emits:["create","refresh","expandChange","selectionChange"],setup(l,{expose:I,emit:K}){const a=l,d=K,N=ae(),z=m(),o=m(new Set),p=m(""),g=m(1),w=m(a.pageSize),x=m(!1);function S(t){return t[a.rowKey]??t.name??t.id}const T=V(()=>{var e;if(!p.value.trim()||!((e=a.searchFields)!=null&&e.length))return a.data;const t=p.value.toLowerCase().trim();return a.data.filter(i=>a.searchFields.some(s=>String(i[s]??"").toLowerCase().includes(t)))}),A=V(()=>{const t=(g.value-1)*w.value;return T.value.slice(t,t+w.value)});function L(t){o.value=new Set(t.map(S)),d("selectionChange",t)}async function E(t,e="确定要删除这条记录吗?"){if(a.deleteFn)try{await P.confirm(e,"确认删除",{type:"warning",confirmButtonText:"确定",cancelButtonText:"取消"}),await a.deleteFn(t),d("refresh")}catch{}}async function D(){if(o.value.size===0||!a.deleteFn||x.value)return!1;try{await P.confirm(`确定删除选中的 ${o.value.size} 条记录吗?删除后无法恢复。`,"确认批量删除",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"})}catch{return!1}x.value=!0;try{const t=a.data.filter(s=>o.value.has(S(s)));let e=0,i=0;for(const s of t)try{await a.deleteFn(s),e++}catch{i++}return f(),d("refresh"),i===0?F.success(`成功删除 ${e} 条记录`):F.warning(`批量删除完成:成功 ${e} 条,失败 ${i} 条`),!0}finally{x.value=!1}}function f(){var t;o.value.clear(),(t=z.value)==null||t.clearSelection(),d("selectionChange",[])}function U(){a.createTo?N.push(a.createTo):d("create")}function j(t,e){d("expandChange",t,Array.isArray(e)?e:[])}return k(()=>a.data,()=>{f(),g.value=1}),k(()=>a.multiSelect,t=>{t||f()}),k(()=>p.value,()=>{o.value.size>0&&f(),g.value=1}),I({handleDelete:E,handleBatchDelete:D,clearSelection:f}),(t,e)=>{const i=G,s=H,_=Q,M=W,R=O,q=J,Z=X;return c(),$("div",ne,[v(q,{shadow:"never",class:"table-card"},{default:r(()=>[n("div",oe,[C(t.$slots,"title",{},()=>[n("h2",se,B(l.title),1)],!0),n("div",re,[l.searchable?(c(),h(i,{key:0,modelValue:p.value,"onUpdate:modelValue":e[0]||(e[0]=u=>p.value=u),placeholder:`搜索${l.title}...`,clearable:"",class:"search-input"},{prefix:r(()=>[...e[3]||(e[3]=[n("i",{class:"fa fa-search"},null,-1)])]),_:1},8,["modelValue","placeholder"])):y("",!0),l.createText?(c(),h(s,{key:1,type:"primary",onClick:U},{default:r(()=>[e[4]||(e[4]=n("i",{class:"fa fa-plus",style:{"margin-right":"4px"}},null,-1)),b(" "+B(l.createText),1)]),_:1})):y("",!0),C(t.$slots,"toolbar-extra",{},void 0,!0)])]),v(ee,{name:"el-zoom-in-top"},{default:r(()=>[l.multiSelect&&l.showBatchBar&&o.value.size>0?(c(),$("div",ie,[n("span",ue,[e[6]||(e[6]=b(" 已选择 ",-1)),n("strong",null,B(o.value.size),1),e[7]||(e[7]=b(" 项 ",-1)),v(s,{link:"",type:"primary",onClick:f},{defaul
|