mirror of
https://github.com/XiaoDaiGua-Ray/ray-template.git
synced 2025-04-06 03:57:49 +08:00
2 lines
9.5 KiB
JavaScript
2 lines
9.5 KiB
JavaScript
import{e as B,d as b,m as I}from"./index-a1c322e5.js";import{V as H}from"./vuedraggable@4.1.0_vue@3.3.4-c9b779ee.js";import{s as X}from"./pinia@2.1.4_typescript@5.0.2_vue@3.3.4-ab93b4ec.js";import{U,N as Y,Q as v,a6 as q,f as L,P as M,a7 as K,a8 as Q,n as G}from"./naive-ui@2.34.4_vue@3.3.4-18897d9a.js";import{k as T,i as N,b as t,E as A,A as y,z as J,f as W,F as Z,n as ee}from"./@vue_runtime-core@3.3.4-073fad6e.js";import{k as p,h as te,v as ie}from"./@vue_reactivity@3.3.4-2b3a1c4e.js";import{s as z}from"./screenfull@6.0.2-b3e6dc1f.js";import{p as ae}from"./print-js@1.6.0-31e6d2b4.js";import{u as C,w as ne}from"./xlsx@0.18.5-65d3fcd1.js";import{d as le}from"./dayjs@1.11.7-adc18375.js";const se=e=>e.map(a=>(a.fixed&&(a.fixed==="right"?a.rightFixedActivated=!0:a.leftFixedActivated=!0),a.resizable&&(a.resizeColumnActivated=!0),a)),oe=T({name:"TableSetting",emits:["columnsUpdate"],setup(e,{emit:i}){const a=N("tableSettingProvider",{}),l=B(),n=p(se(a.modelColumns.value)),g=p(!0),{themeValue:c}=X(l);return{settingOptions:n,handleDraggableEnd:()=>{i("columnsUpdate",n.value)},handleFixedClick:(u,r)=>{const h=`${u}FixedActivated`,d=n.value[r];h==="leftFixedActivated"?d.rightFixedActivated=!1:h==="rightFixedActivated"&&(d.leftFixedActivated=!1),d[h]=!d[h],d[h]?d.fixed=u:d.fixed=void 0,n.value[r]=d,i("columnsUpdate",n.value)},disableDraggable:g,FixedPopoverIcon:u=>{const{element:r,name:h,tooltip:d,fn:_,index:k,fixed:P,key:F}=u;return t(v,null,{trigger:()=>t(b,{customClassName:`draggable-item__icon ray-table-icon ${r[F]?"draggable-item__icon--actived":""}`,name:h,size:"18",onClick:_.bind(this,P,k)},null),default:()=>d})},handleResizeColumnClick:u=>{const r=n.value[u];r.resizeColumnActivated=!r.resizeColumnActivated,r.resizable=r.resizeColumnActivated,n.value[u]=r,i("columnsUpdate",n.value)},themeValue:c}},render(){return t(v,{trigger:"click",placement:"bottom",showArrow:!1,raw:!0},{trigger:()=>t(b,{customClassName:"ray-table__setting",name:"setting",size:"18"},null),default:()=>t(U,{bordered:!1,class:"table-setting__card"},{default:()=>t(H,A({class:["ray-table__setting-option--draggable"],modelValue:this.settingOptions,"onUpdate:modelValue":e=>this.settingOptions=e,itemKey:"key"},{disabled:!this.disableDraggable,onEnd:this.handleDraggableEnd.bind(this)}),{item:({element:e,index:i})=>t("div",{class:["draggable-item",this.themeValue?"draggable-item--dark":""]},[t(b,{customClassName:"draggable-item__d--icon",name:"draggable",size:"18"},null),t(Y,null,{default:()=>[t("span",null,[e.title])]}),this.FixedPopoverIcon({element:e,name:"left_arrow",tooltip:"左固定",fn:this.handleFixedClick,index:i,fixed:"left",key:"leftFixedActivated"}),t(v,null,{trigger:()=>t(b,{customClassName:`draggable-item__icon ${e.resizeColumnActivated?"draggable-item__icon--actived":""}`,name:"resize_h",size:"18",onClick:this.handleResizeColumnClick.bind(this,i)},null),default:()=>"修改列宽"}),this.FixedPopoverIcon({element:e,name:"right_arrow",tooltip:"右固定",fn:this.handleFixedClick,index:i,fixed:"right",key:"rightFixedActivated"})])})})})}}),R=T({name:"TableAction",props:{tooltip:{type:String,required:!0},negativeText:{type:String,default:"取消"},positiveText:{type:String,default:"确认"},icon:{type:String,required:!0},iconSize:{type:Number,default:18},popoverContent:{type:String,required:!0}},emits:["positive","negative"],setup(e,{emit:i}){const a=p(!1);return{handleEmit:n=>{i(n==="positive"?"positive":"negative"),a.value=!1},showPopoconfirm:a}},render(){return t(v,null,{trigger:()=>t(q,{show:this.showPopoconfirm,"onUpdate:show":e=>this.showPopoconfirm=e,showArrow:!0},{trigger:()=>t(b,{name:this.icon,size:this.iconSize,customClassName:"ray-table-icon"},null),default:()=>this.tooltip,action:()=>t(L,null,{default:()=>[t(M,{size:"small",ghost:!0,onClick:this.handleEmit.bind(this,"negative")},{default:()=>[this.negativeText]}),t(M,{size:"small",ghost:!0,type:"info",onClick:this.handleEmit.bind(this,"positive")},{default:()=>[this.positiveText]})]})}),default:()=>this.popoverContent})}});const re=T({name:"TableSize",emits:["changeSize"],setup(e,{emit:i}){const a=N("tableSettingProvider",{}),l=p(!1),n=p(a.size),g=y({get:()=>a.size,set:s=>{n.value=s}}),c=p([{label:"默认",key:"medium"},{label:"紧凑",key:"small"},{label:"宽松",key:"large"}]);return{sizeOptions:c,currentSize:n,handleDropdownClick:s=>{c.value.forEach(f=>{f.key===s&&(g.value=s,l.value=!1,i("changeSize",s))})},popoverShow:l}},render(){return t(v,{show:this.popoverShow,"onUpdate:show":e=>this.popoverShow=e,trigger:"click",placement:"bottom",showArrow:!1,raw:!0},{trigger:()=>t(v,null,{trigger:()=>t(b,{name:"adjustment",size:"18",customClassName:"ray-table-icon"},null),default:()=>"表格密度"}),default:()=>t(U,{bordered:!1,class:"ray-table__table-size ray-table__table-size--dark ray-table__table-size--light"},{default:()=>[t("div",{class:"table-size__dropdown"},[t("div",{class:"table-size__dropdown-wrapper"},[this.sizeOptions.map(e=>t("div",{class:["dropdown-item",e.key===this.currentSize?"dropdown-item--active":""],key:e.key,onClick:this.handleDropdownClick.bind(this,e.key)},[t("div",{class:"drop-item__label"},[e.label])]))])])]})})}});const de=T({name:"TableScreenfull",setup(){const e=N("tableSettingProvider",{}),i=y(()=>e.rayTableUUID);let a=z.isFullscreen;return{handleScreenfull:()=>{const n=document.getElementById(i.value);a=!a,n&&z.isEnabled&&a?z.request(n):z.exit()}}},render(){return t(v,null,{trigger:()=>t(b,{name:"fullscreen",size:"18",customClassName:"ray-table-icon tay-table-icon__screenfull",onClick:this.handleScreenfull.bind(this)},null),default:()=>"全屏表格"})}}),ce={...K,rightClickMenu:{type:Array,default:()=>[]},title:{type:[String,Object],default:""},action:{type:Boolean,default:!0},actionExtra:{type:Object,default:()=>({})},showMenu:{type:Boolean,default:!0},exportTooltip:{type:String,default:"是否导出为Excel表格?"},exportType:{type:String,default:"xlsx"},exportPositiveText:{type:String,default:"确认"},exportNegativeText:{type:String,default:"取消"},exportFilename:{type:String,default:""},printPositiveText:{type:String,default:"确认"},printNegativeText:{type:String,default:"取消"},printTooltip:{type:String,default:"是否打印该表格?"},printType:{type:String,default:"html"},printOptions:{type:Object,default:()=>({})},printIcon:{type:String,default:"print"},exportExcelIcon:{type:String,default:"export_excel"},tableHeaderSpace:{type:String,default:"10px"},bordered:{type:Boolean,default:!1}},ue=e=>e.reduce((a,l)=>(a[l.key]=l.title,a),{}),he=(e,i,a)=>{for(let l=e.s.c;l<=e.e.c;l++){const n=C.encode_col(l)+"1";i[n].v=a[i[n].v]}},pe=async(e,i,a={})=>{await new Promise((l,n)=>{if(Array.isArray(e))if(e.length){const g=ue(i??[]),c=C.json_to_sheet(e),m=C.book_new(),s=a.filename?a.filename+".xlsx":le().format("YYYY-MM-DD")+"导出表格.xlsx";C.book_append_sheet(m,c,"Data");const f=C.decode_range(c["!ref"]);i!=null&&i.length&&he(f,c,g),ne(m,s),l()}else l();else n()})},we=T({name:"RayTable",props:ce,emits:["update:columns","menuSelect","exportSuccess","exportError"],setup(e,{emit:i,expose:a}){const l=p(),n=I(16),g=I(16),c=y(()=>e.rightClickMenu),m=y({get:()=>e.columns,set:o=>{i("update:columns",o)}}),s=te({x:0,y:0,showMenu:!1});let f=-1;const D=y(()=>({"--ray-table-header-space":e.tableHeaderSpace})),u=p(e.size),r=p();J("tableSettingProvider",{modelRightClickMenu:c,modelColumns:m,size:e.size,rayTableUUID:g});const h=o=>{m.value=o},d=(o,x)=>{i("menuSelect",o,f,x),s.showMenu=!1},_=(o,x)=>{var w;return{...(w=e.rowProps)==null?void 0:w.call(e,o,x),onContextmenu:S=>{S.preventDefault(),f=x,s.showMenu=!1,ee().then(()=>{s.showMenu=!0,s.x=S.clientX,s.y=S.clientY})}}},k=async()=>{if(e.data.length&&e.columns.length)try{await pe(e.data,e.columns,{filename:e.exportFilename}),i("exportSuccess")}catch{i("exportError")}},P=()=>{const o=Object.assign({},e.printOptions,{printable:n,type:e.printType,documentTitle:e.printOptions.documentTitle?e.printOptions.documentTitle:"表格"});ae(o)},F=o=>{u.value=o},O=o=>{const{clearFilters:x,clearSorter:E,filters:w,page:S,scrollTo:V,sort:$,filter:j}=o;r.value={clearFilters:x,clearSorter:E,filters:w,page:S,scrollTo:V,sort:$,filter:j}};return a({tableMethods:y(()=>r.value)}),W(()=>{O(l.value)}),{tableUUID:n,rayTableUUID:g,handleColumnsUpdate:h,...ie(s),handleRowProps:_,handleRightMenuSelect:d,handleExportPositive:k,handlePrintPositive:P,cssVars:D,handleChangeTableSize:F,tableSize:u,rayTableInstance:l}},render(){return t(U,A({class:"ray-table",bordered:this.bordered,style:[this.cssVars]},{id:this.rayTableUUID}),{default:()=>t(Z,null,[t(Q,A({ref:"rayTableInstance"},{id:this.tableUUID},this.$props,{rowProps:this.handleRowProps.bind(this),size:this.tableSize}),{...this.$slots}),this.showMenu?t(G,{show:this.showMenu,placement:"bottom-start",trigger:"manual",x:this.x,y:this.y,options:this.rightClickMenu,onClickoutside:()=>this.showMenu=!1,onSelect:this.handleRightMenuSelect.bind(this)},null):""]),header:()=>this.title,"header-extra":()=>this.action?t("div",{class:"ray-table-header-extra__space"},[t(R,{icon:this.printIcon,tooltip:this.printTooltip,popoverContent:"打印表格",positiveText:this.printPositiveText,negativeText:this.printNegativeText,onPositive:this.handlePrintPositive.bind(this)},null),t(R,{icon:this.exportExcelIcon,tooltip:this.exportTooltip,popoverContent:"导出表格",positiveText:this.exportPositiveText,negativeText:this.exportNegativeText,onPositive:this.handleExportPositive.bind(this)},null),t(re,{onChangeSize:this.handleChangeTableSize.bind(this)},null),t(de,null,null),t(oe,{onColumnsUpdate:this.handleColumnsUpdate.bind(this)},null)]):"",footer:()=>{var e,i;return(i=(e=this.$slots).tableFooter)==null?void 0:i.call(e)}})}});export{we as R};
|