es-plus-ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +942 -0
- package/dist/es-plus.js +2160 -0
- package/dist/es-plus.js.map +1 -0
- package/dist/es-plus.umd.cjs +2 -0
- package/dist/es-plus.umd.cjs.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/src/components/es-dialog/index.d.ts +3 -0
- package/dist/src/components/es-dialog/src/component.vue.d.ts +60 -0
- package/dist/src/components/es-dialog/src/use-dialog.d.ts +15 -0
- package/dist/src/components/es-form/__tests__/es-form.spec.d.ts +1 -0
- package/dist/src/components/es-form/index.d.ts +3 -0
- package/dist/src/components/es-form/src/es-form.vue.d.ts +83 -0
- package/dist/src/components/es-table/index.d.ts +3 -0
- package/dist/src/components/es-table/src/column-item.vue.d.ts +80 -0
- package/dist/src/components/es-table/src/component.vue.d.ts +129 -0
- package/dist/src/components/es-table/src/table-btns.vue.d.ts +19 -0
- package/dist/src/components/svg-icon/index.d.ts +3 -0
- package/dist/src/components/svg-icon/src/svg-icon.vue.d.ts +17 -0
- package/dist/src/composables/use-form-inputs.d.ts +10 -0
- package/dist/src/composables/use-form-layout.d.ts +50 -0
- package/dist/src/composables/use-form-layout.spec.d.ts +1 -0
- package/dist/src/composables/use-form-request.d.ts +18 -0
- package/dist/src/composables/use-table-resize.d.ts +19 -0
- package/dist/src/composables/use-table-selection.d.ts +16 -0
- package/dist/src/composables/use-table-selection.spec.d.ts +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/style.d.ts +0 -0
- package/dist/src/types/index.d.ts +147 -0
- package/dist/src/utils/shared.d.ts +17 -0
- package/dist/src/utils/shared.spec.d.ts +1 -0
- package/dist/style.css +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(P,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("element-plus"),require("@element-plus/icons-vue")):typeof define=="function"&&define.amd?define(["exports","vue","element-plus","@element-plus/icons-vue"],e):(P=typeof globalThis<"u"?globalThis:P||self,e(P.EsPlus={},P.Vue,P.ElementPlus,P.ElementPlusIconsVue))})(this,function(P,e,b,me){"use strict";function $e(n){const u=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const m in n)if(m!=="default"){const t=Object.getOwnPropertyDescriptor(n,m);Object.defineProperty(u,m,t.get?t:{enumerable:!0,get:()=>n[m]})}}return u.default=n,Object.freeze(u)}const we=$e(me),qe="1.0.0";var de={name:"zh-cn",el:{breadcrumb:{label:"面包屑"},colorpicker:{confirm:"确定",clear:"清空",defaultLabel:"颜色选择器",description:"当前颜色 {color},按 Enter 键选择新颜色",alphaLabel:"选择透明度的值",alphaDescription:"透明度 {alpha}, 当前颜色 {color}",hueLabel:"选择色相值",hueDescription:"色相 {hue}, 当前颜色 {color}",svLabel:"选择饱和度与明度的值",svDescription:"饱和度 {saturation}, 明度 {brightness}, 当前颜色 {color}",predefineDescription:"选择 {value} 作为颜色"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",dateTablePrompt:"使用方向键与 Enter 键可选择日期",monthTablePrompt:"使用方向键与 Enter 键可选择月份",yearTablePrompt:"使用方向键与 Enter 键可选择年份",selectedDate:"已选日期",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},weeksFull:{sun:"星期日",mon:"星期一",tue:"星期二",wed:"星期三",thu:"星期四",fri:"星期五",sat:"星期六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},inputNumber:{decrease:"减少数值",increase:"增加数值"},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},mention:{loading:"加载中"},dropdown:{toggleDropdown:"切换下拉选项"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页",page:"页",prev:"上一页",next:"下一页",currentPage:"第 {pager} 页",prevPages:"向前 {pager} 页",nextPages:"向后 {pager} 页",deprecationWarning:"你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档"},dialog:{close:"关闭此对话框"},drawer:{close:"关闭此对话框"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!",close:"关闭此对话框"},upload:{deleteTip:"按 Delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},slider:{defaultLabel:"滑块介于 {min} 至 {max}",defaultRangeStartLabel:"选择起始值",defaultRangeEndLabel:"选择结束值"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计",selectAllLabel:"选择所有行",selectRowLabel:"选择当前行",expandRowLabel:"展开当前行",collapseRowLabel:"收起当前行",sortLabel:"按 {column} 排序",filterLabel:"按 {column} 过滤"},tag:{close:"关闭此标签"},tour:{next:"下一步",previous:"上一步",finish:"结束导览",close:"关闭此对话框"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},carousel:{leftArrow:"上一张幻灯片",rightArrow:"下一张幻灯片",indicator:"幻灯片切换至索引 {index}"}}};const Ee=e.defineComponent({name:"RenderJsx",props:{refs:{type:[Function,Object],default:null},row:{type:Object,default:()=>({})},render:{type:Function,default:()=>{}},model:{type:Object,default:()=>({})},instance:{type:Object,default:()=>({})},components:{type:Object,default:()=>({})},locale:{type:Object,default:null}},setup(n){const u=n.refs&&typeof n.refs=="object"?n.refs:e.reactive({});function m(o){if(!o)return null;if(typeof o=="function")return o;if(o.r){if(typeof o.r=="function")return o.r;if(o.r&&typeof o.r=="object"&&"value"in o.r){const f=o.r;return s=>{f.value=s}}}return null}let t=null,a=null;function r(){if(!t)return;const o=t.component;if(!o)return;const f=o.exposed||o.proxy;f&&(u.currentRef=f,typeof a=="function"&&a(f))}return e.onMounted(()=>r()),e.onUpdated(()=>r()),()=>{var g;const{instance:o}=n,f={...o,registerRef:(c,p)=>{p!=null&&(u[c]=p)},getRefs:()=>u},s=n.render(e.h,f,n.components||{})||"";return typeof s=="string"?(t=null,e.h(b.ElConfigProvider,{locale:n.locale||de},()=>e.h("span",{ref:c=>{u.currentRef=c}},s))):e.isVNode(s)?typeof s.type!="string"?(t=s,a=m(s.ref)||m((g=s.props)==null?void 0:g.ref),s):(t=null,e.h(b.ElConfigProvider,{locale:n.locale||de},()=>e.h("div",{ref:p=>{u.currentRef=p}},[s]))):(t=null,e.h(b.ElConfigProvider,{locale:n.locale||de},()=>e.h(s,{ref:c=>{u.currentRef=c}})))}}}),Ue={key:1},Me={key:1},Ke={key:1},Qe={key:1},We=e.defineComponent({__name:"column-item",props:{cols:{}},setup(n){const u=e.defineComponent({props:{row:{type:Object,default:()=>({})},index:{type:Number,default:0},dataKey:String,render:{type:Function,required:!0}},setup(a){return()=>{const{row:r,index:o,dataKey:f,render:s}=a;if(!r)return e.h("span","-");const g=f?r[f]:null;try{const c=s(e.h,{value:g,row:r,index:o});return typeof c=="string"?e.h("span",c):c}catch{return e.h("span","-")}}}}),m=a=>a.charAt(0).toUpperCase()+a.slice(1).toLowerCase(),t=a=>{const r={};for(const o in a)if(!(o==="groups"||o==="scopedSlots"||o==="render"))if(o.includes("-")){const f=o.split("-");let s=f[0];for(let g=1;g<f.length;g++)s+=m(f[g]);r[s]=a[o]}else o==="key"&&(r.prop=a[o]),r[o]=a[o];return r.align||(r.align="center"),r};return(a,r)=>n.cols.groups&&Array.isArray(n.cols.groups)?(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.normalizeProps(e.mergeProps({key:0},t(n.cols))),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.cols.groups,(o,f)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:o.prop||o.key||f},[o.render&&typeof o.render=="function"?(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.mergeProps({key:0,ref_for:!0},t({...o,columnIndex:f})),{default:e.withCtx(s=>[s&&s.row?(e.openBlock(),e.createBlock(e.unref(u),{key:0,row:s.row,index:s.$index,"data-key":o.key,render:o.render},null,8,["row","index","data-key","render"])):(e.openBlock(),e.createElementBlock("span",Ue,"-"))]),_:2},1040)):o.scopedSlots&&o.scopedSlots.customRender?(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.mergeProps({key:1,ref_for:!0},t({...o,columnIndex:f})),{default:e.withCtx(s=>[s&&s.row?e.renderSlot(a.$slots,o.scopedSlots.customRender,e.mergeProps({key:0,ref_for:!0},{...o,row:s.row,column:s.column,scope:s})):(e.openBlock(),e.createElementBlock("span",Me,"-"))]),_:2},1040)):(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.mergeProps({key:2,ref_for:!0},t({...o,columnIndex:f})),null,16))],64))),128))]),_:3},16)):n.cols.render&&typeof n.cols.render=="function"?(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.normalizeProps(e.mergeProps({key:1},t(n.cols))),{default:e.withCtx(o=>[o&&o.row?(e.openBlock(),e.createBlock(e.unref(u),{key:0,row:o.row,index:o.$index,"data-key":n.cols.key,render:n.cols.render},null,8,["row","index","data-key","render"])):(e.openBlock(),e.createElementBlock("span",Ke,"-"))]),_:1},16)):n.cols.scopedSlots&&n.cols.scopedSlots.customRender?(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.normalizeProps(e.mergeProps({key:2},t(n.cols))),{default:e.withCtx(o=>[o&&o.row?e.renderSlot(a.$slots,n.cols.scopedSlots.customRender,e.normalizeProps(e.mergeProps({key:0},{...n.cols,row:o.row,column:o.column,scope:o}))):(e.openBlock(),e.createElementBlock("span",Qe,"-"))]),_:3},16)):n.cols.ellipsis&&typeof n.cols.ellipsis=="boolean"?(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.mergeProps({key:3,"show-overflow-tooltip":""},t(n.cols)),null,16)):(e.openBlock(),e.createBlock(e.unref(b.ElTableColumn),e.normalizeProps(e.mergeProps({key:4},t(n.cols))),null,16))}}),Ge={key:0,class:"flex-float btns"},Ye={class:"left-text"},Je={class:"btn-container_block"},Xe={class:"btn-left"},Ze={class:"btn-right"},ve=e.defineComponent({__name:"table-btns",props:{leftText:{},btnConfig:{},instance:{}},setup(n){const u=n,m=c=>{if(!c.render||typeof c.render!="function")return null;try{return c.render()}catch{return null}};m.props={render:{type:Function,required:!0}};const t=(c,p)=>!0,a=c=>c.map(p=>{const l={...p};return t([],p.permissionValue)?typeof p.isHide=="function"?l.isHide=p.isHide():l.isHide=p.isHide||!1:l.isHide=!0,l}),r=e.computed(()=>a((u.btnConfig||[]).filter(c=>c.code===1)).filter(c=>!c.isHide)),o=e.computed(()=>a((u.btnConfig||[]).filter(c=>c.code===2)).filter(c=>!c.isHide)),f=e.computed(()=>u.leftText||r.value.length>0||o.value.length>0),s=c=>typeof c.disabled=="function"?c.disabled():c.disabled||!1,g=c=>({display:"inline-block",marginLeft:c!==0?"8px":"0px"});return(c,p)=>f.value?(e.openBlock(),e.createElementBlock("div",Ge,[e.createElementVNode("div",Ye,e.toDisplayString(n.leftText),1),e.createElementVNode("div",Je,[e.createElementVNode("div",Xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(l,h)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.name},[l.isHide?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(g(h))},[l.render&&typeof l.render=="function"?(e.openBlock(),e.createBlock(m,{key:0,render:l.render},null,8,["render"])):(e.openBlock(),e.createBlock(e.unref(b.ElButton),e.mergeProps({key:1,type:l.type,size:l.size||"small",icon:l.icon,loading:l.loading||!1},{ref_for:!0},l,{disabled:s(l),onClick:()=>l.click(n.instance)}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.name),1)]),_:2},1040,["type","size","icon","loading","disabled","onClick"]))],4))],64))),128))]),e.createElementVNode("div",Ze,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(l,h)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.name},[l.isHide?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(g(h))},[l.render&&typeof l.render=="function"?(e.openBlock(),e.createBlock(m,{key:0,render:l.render},null,8,["render"])):(e.openBlock(),e.createBlock(e.unref(b.ElButton),e.mergeProps({key:1,type:l.type,size:l.size||"small"},{ref_for:!0},l,{icon:l.icon,loading:l.loading||!1,disabled:s(l),onClick:()=>l.click(n.instance)}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.name),1)]),_:2},1040,["type","size","icon","loading","disabled","onClick"]))],4))],64))),128))])])])):e.createCommentVNode("",!0)}}),fe=(n,u)=>{const m=n.__vccOpts||n;for(const[t,a]of u)m[t]=a;return m},et=fe(ve,[["__scopeId","data-v-8e62c688"]]);function tt(n,u,m,t,a){const r=e.ref(400),o=e.ref(null),f=l=>Math.sign(l)===-1,s=()=>{var F,V,C,O;const l=((F=u.value)==null?void 0:F.offsetHeight)||0,h=((C=(V=m.value)==null?void 0:V.$el)==null?void 0:C.offsetHeight)||0,w=((O=t.value)==null?void 0:O.offsetHeight)||0;return Math.round(w+l+h)},g=()=>{var K,Y,$,J,I;const l=n.value;if(!l)return;const h=typeof a.tabHeight=="number"?a.tabHeight:a.heightType==="height"?((K=l.parentElement)==null?void 0:K.offsetHeight)||l.offsetHeight:parseInt(a.tabHeight,10)||450,w=isNaN(h)?450:h,F=w-s(),V=f(F)?s()+300:w,C=((Y=t.value)==null?void 0:Y.offsetHeight)||0,O=(($=u.value)==null?void 0:$.offsetHeight)||0,D=((I=(J=m.value)==null?void 0:J.$el)==null?void 0:I.offsetHeight)||0,_=Math.floor(V)-Math.round(C+O+D);r.value!==_&&(r.value=_)},c=()=>{e.nextTick(()=>{if(!n.value||typeof ResizeObserver>"u")return;o.value=new ResizeObserver(()=>{requestAnimationFrame(()=>{n.value&&g()})});const l=a.heightType==="height"&&n.value.parentElement||n.value;o.value.observe(l),u.value&&o.value.observe(u.value)})},p=()=>{o.value&&(o.value.disconnect(),o.value=null)};return e.onMounted(()=>c()),e.onBeforeUnmount(()=>p()),{tableHeight:r,resizeObservers:g,startObserver:c,stopObserver:p}}function nt(n){const u=e.ref([]),m=e.ref({}),t=e.ref(!1),a=(s,g)=>{if(n){if(t.value)return;m.value[g]=s;let c=[];const p={};Object.values(m.value).forEach(l=>{l.forEach(h=>{const w=h[n];w&&!p[w]&&(c.push(h),p[w]=!0)})}),u.value=c}else u.value=s},r=(s,g)=>{if(s!=null&&s.length&&n&&u.value.length){const c=[];s.forEach(p=>{u.value.forEach(l=>{p[n]===l[n]&&c.push(p)})}),c.forEach(p=>{var l;(l=g.toggleRowSelection)==null||l.call(g,p,!0)})}};return{multipleSelection:u,selectionsByPage:m,isInitChange:t,handleSelectionChange:a,handleSelectData:r,clearAllSelection:s=>{var g;u.value=[],m.value={},(g=s.clearSelection)==null||g.call(s)},initSelection:(s,g)=>{if(t.value=!0,!g){t.value=!1;return}n?e.nextTick(()=>{r(s,g),t.value=!1}):e.nextTick(()=>{var c;(c=g.clearSelection)==null||c.call(g),t.value=!1})}}}const j=n=>typeof n=="object"&&n!==null&&Object.prototype.toString.call(n)==="[object Object]",Se=(n,u,m=0)=>{if(m>3||!j(n))return;const t=Object.prototype.hasOwnProperty.call(n,u)?n[u]:void 0;for(const a in n)if(Object.prototype.hasOwnProperty.call(n,a)&&j(n[a])){const r=Se(n[a],u,m+1);if(r!==void 0)return r}return t},ot=n=>n.then(u=>({status:"fulfilled",value:u})).catch(u=>({status:"rejected",reason:u})),rt={class:"table_containers"},at={"element-loading-background":"rgba(0, 0, 0, 0.03)","element-loading-text":"努力加载中...",class:"page-loading-con tableContainer"},lt={class:"table_inner_containers"},Re={multiSelect:!1,expand:!1,snIndex:!1,loading:!1,border:!1,size:"small",headerCellStyle:{background:"#f5f7fa"},highlightCurrentRow:!0,cachePageSelection:!0},q=fe(e.defineComponent({__name:"component",props:{initTabHeight:{default:400},headBarClass:{},showHeaderBar:{type:Boolean,default:!0},dataSource:{default:()=>[]},columns:{default:()=>[]},options:{default:()=>({...Re})},pagination:{default:()=>({})}},emits:["update:dataSource","update:pagination","pagination-current-change","size-change","change-table-sort"],setup(n,{expose:u,emit:m}){const t=n,a=m,r=e.useSlots(),o=e.ref(de),f=e.inject("elLocale",null);f&&(o.value=f);const s=e.getCurrentInstance()||{},g=e.inject("$esPlusTable",{}),c=e.ref(null),p=e.ref(null),l=e.ref(null),h=e.ref(null),w=e.ref(null),F=e.ref(`table_${Math.random().toString(36).substring(2,12)}`),V=e.ref([]),C=e.ref([...t.columns]);e.watch(()=>t.columns,d=>{C.value=[...d]},{deep:!0});const O=e.ref(!1),D=e.ref(!1),_=e.ref(!1),K=d=>{d&&(w.value=d)},Y=e.inject("bodyFormInstance",()=>{}),$=e.inject("getVisibleShow",!1),J=e.computed(()=>typeof $=="function"?$():$),I=e.ref({pageSize:10,current:1,total:0,pageSizes:[],size:"small",isSmall:!0,...t.pagination}),T=e.ref(null),te=e.computed(()=>t.options.entryQuery&&j(t.options.entryQuery)&&Object.keys(t.options.entryQuery).length?t.options.entryQuery:{}),G=e.computed(()=>{if(t.options.configTableOut&&j(t.options.configTableOut)&&Object.keys(t.options.configTableOut).length&&xe(t.options.configTableOut))return t.options.configTableOut;if(g!=null&&g.configQueryFieldOutput&&typeof g.configQueryFieldOutput=="function"){const d=g.configQueryFieldOutput({total:"records",pageSize:"pageSize",current:"pageNo",tableData:"rows"});if(xe(d))return d}return{total:"records",pageSize:"pageSize",current:"pageNo",tableData:"rows"}}),H=e.computed(()=>{var x,S,N,z;const B=(((S=(x=s==null?void 0:s.slots)==null?void 0:x.default)==null?void 0:S.call(x))||[]).find(ae=>{const ee=ae.type;return(ee==null?void 0:ee.name)==="EsForm"||(ee==null?void 0:ee.displayName)==="EsForm"});return B&&((N=B.props)!=null&&N.ref)&&(T.value=(z=B.ctx)==null?void 0:z.refs[B.props.ref],Y(T.value)),B||{}}),X=e.computed(()=>{var d;return!!((d=r.default)!=null&&d.call(r))}),Q=e.computed(()=>t.options.heightType||"auto"),ne=e.computed(()=>typeof t.options.tabHeight=="number"?`${t.options.tabHeight}px`:Q.value==="height"&&typeof t.options.height=="number"?`${t.options.height}px`:"100%"),Z=e.computed(()=>t.headBarClass?{type:typeof t.headBarClass=="string"?"string":"object",value:t.headBarClass}:{type:"string",value:""}),Ie=e.computed(()=>"prev, pager, next, jumper, sizes, ->, total"),Fe=e.computed(()=>t.options.loading||O.value),ue=e.computed(()=>!!t.options.actionUrl||t.options.apiParams&&j(t.options.apiParams)&&Object.keys(t.options.apiParams).length>0);e.computed(()=>{var d;return!!((d=t.options)!=null&&d.httpRequest)&&typeof t.options.httpRequest=="function"});const Ve=e.computed(()=>{const d=C.value.filter(B=>!B.hidCol);return d.forEach(B=>{B.prop!=="operate"&&B.key!=="operate"&&(B.prop||B.key)&&!B.formatter&&(B.formatter=x=>{const S=x[B.prop]||x[B.key];return S==null||S===""?B.emptyPlaceholder||"-":S}),(B.prop==="operate"||B.key==="operate")&&B.btns&&!B.render&&(B.render=(x,{row:S})=>{var N;return e.h("div",[(N=B.btns)==null?void 0:N.map(z=>e.h(b.ElButton,{onClick:()=>{var ae;return(ae=z.clickEvent)==null?void 0:ae.call(z,S)},text:!0,type:z.type||"primary"},()=>z.name))])})}),d}),ge=new Set(["multiSelect","expand","snIndex","loading","cachePageSelection","httpRequest","configTableOut","listenToCallBack","apiParams","actionUrl","heightType","tabHeight","isInitRun","entryQuery","configBtn","leftText","rowkey"]),Ne=e.computed(()=>{const d=re({...Re,...t.options}),{align:B,...x}=d,S={};for(const N in x)ge.has(N)||(S[N]=x[N]);return S}),Te=e.useAttrs(),he=e.computed(()=>{const d={...Ne.value,...Te};return t.options.rowkey&&(d.rowKey=t.options.rowkey),Q.value==="height"?d.height=ye.value:Q.value==="maxHeight"&&(d.maxHeight=ye.value),d}),{tableHeight:ye}=tt(w,l,p,h,{heightType:Q.value,tabHeight:t.options.tabHeight});e.watch(J,async(d,B)=>{var x,S;d&&d!==B&&(t.options.actionUrl&&await k(),(S=(x=c.value)==null?void 0:x.doLayout)==null||S.call(x))}),e.watch(()=>t.pagination,d=>{I.value={...I.value,...d},_.value=d.total!==void 0},{deep:!0,immediate:!0}),e.watch(()=>t.dataSource,d=>{be(d,c.value)},{deep:!0}),e.watch(V,d=>{Array.isArray(d)&&a("update:dataSource",d)},{deep:!0}),e.onMounted(()=>{ue.value&&t.options.isInitRun!==!1&&k()});const{multipleSelection:Oe,handleSelectionChange:ke,initSelection:be,clearAllSelection:Ce}=nt(t.options.rowkey),Be=d=>{ke(d,I.value.current||1)},xe=d=>{const B=["total","pageSize","current","tableData"];return j(d)?Object.keys(d).every(x=>B.find(S=>S===x)&&d[x]&&typeof d[x]=="string"):!1},v=(d,B)=>{const x=[{eventName:"brcb",isReturn:!0},{eventName:"qrcb",isReturn:!0}],S=x.findIndex(N=>N.eventName===d);if(t.options.listenToCallBack&&t.options.listenToCallBack[d]&&S!==-1&&x[S].isReturn)return t.options.listenToCallBack[d](B)},ce=(d,B)=>{j(G.value)&&Object.keys(G.value).length&&Object.entries(G.value).forEach(([x,S])=>{if(!B.includes(x))return;const z=d[S]??Se(d,S);x==="tableData"?V.value=Array.isArray(z)?z:[]:I.value[x]=typeof z=="number"?z:parseInt(z,10)||0})},i=(d,B={})=>{var je,Ae;const{success:x,fail:S}=B,N=((je=t.options)==null?void 0:je.apiParams)||{},z=((Ae=t.options)==null?void 0:Ae.actionUrl)||N.url||"";if(!z||!Object.keys(N).length)return;const ae=Object.keys(H.value).length?e.toRaw(e.unref(H.value.props.model)):te.value||{},ee=v("brcb",{...ae,...d,...e.toRaw(e.unref(N.model||{}))}),_e=j(ee)?ee:{...ae,...e.toRaw(e.unref(N.model||{})),...d},He={...e.toRaw(e.unref(N.options||{}))};N!=null&&N.method&&(He.method=N==null?void 0:N.method);const Pe=async wt=>{if(!O.value){O.value=!0,console.log("formData///",_e);try{const ie=await wt({url:z,formParams:_e,headers:N.headers||{},...He,...d}),Et=v("qrcb",ie)||ie;j(ie)&&Object.keys(ie).length&&typeof x=="function"&&x(Et)}catch(ie){typeof S=="function"&&S(ie)}finally{O.value=!1}}};t.options.httpRequest?Pe(t.options.httpRequest):g.$httpRequest&&Pe(g.$httpRequest)},k=d=>new Promise((B,x)=>{I.value.current=1,i({...d||{},pageIndex:I.value.current,pageSize:I.value.pageSize},{success:S=>{ce(S,["total","tableData"]),Object.keys(t.pagination).length&&a("update:pagination",I.value),B(S)},fail:S=>{x(S)}})}),y=()=>{i({pageIndex:I.value.current,pageSize:I.value.pageSize},{success:d=>{ce(d,["total","tableData"]),a("update:pagination",I.value),a("pagination-current-change",I.value)}})},L=()=>{i({pageIndex:I.value.current,pageSize:I.value.pageSize},{success:d=>{ce(d,["total","tableData"]),a("update:pagination",I.value)}})},E=d=>{I.value.pageSize=d,I.value.current=1,ue.value?L():(a("update:pagination",I.value),a("size-change",I.value,d))},R=d=>{I.value.current=d,ue.value?(console.log("indexPages//",d),y()):(a("update:pagination",I.value),a("pagination-current-change",I.value))},A=d=>{a("change-table-sort",d)},oe=d=>d.toLowerCase().replace(/(\s|^)[a-z]/g,B=>B.toUpperCase()),re=d=>{const B={};for(const x in d)if(!(x==="groups"||x==="scopedSlots"||x==="render"))if(x.includes("-")){const S=x.split("-");let N=S[0];for(let z=1;z<S.length;z++)N+=oe(S[z]);B[N]=d[x]}else x==="key"&&(B.prop=d[x]),B[x]=d[x];return B.align||(B.align="center"),B};return e.provide("getTableInstantce",()=>({...(s==null?void 0:s.setupState)||{},tableRef:c,toggleSelection:d=>{var B;d?d.forEach(x=>{var S;(S=c.value)==null||S.toggleRowSelection(x)}):(B=c.value)==null||B.clearSelection()},clearAllSelection:()=>Ce(c.value),refsInstance:()=>c.value,httpRequestInstance:k})),u({httpRequestInstance:k,getSelectionRows:()=>Oe.value,clearSelection:()=>{var d,B;return(B=(d=c.value)==null?void 0:d.clearSelection)==null?void 0:B.call(d)},clearAllSelection:()=>Ce(c.value),refresh:()=>{var d,B;return(B=(d=c.value)==null?void 0:d.doLayout)==null?void 0:B.call(d)}}),(d,B)=>(e.openBlock(),e.createBlock(e.unref(b.ElConfigProvider),{locale:o.value},{default:e.withCtx(()=>[e.createElementVNode("div",{ref:K,class:"table_component",style:e.normalizeStyle({[Q.value]:ne.value})},[e.createElementVNode("div",rt,[n.showHeaderBar?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"headBarRef",ref:l,class:e.normalizeClass(["btn-slot",Z.value.type==="string"?Z.value.value:{slotClass:D.value&&Z.value.type!=="object"}]),style:e.normalizeStyle(Z.value.value&&Z.value.type==="object"&&Z.value.value)},[X.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"headerBar",style:e.normalizeStyle({paddingBottom:X.value?"10px":"0px"})},[e.renderSlot(d.$slots,"default",{},void 0,!0)],4)):e.createCommentVNode("",!0)],6)):e.createCommentVNode("",!0),e.withDirectives((e.openBlock(),e.createElementBlock("div",at,[e.createElementVNode("div",lt,[n.options.configBtn&&n.options.configBtn.length||n.options.leftText?(e.openBlock(),e.createBlock(et,{key:0,ref_key:"tbBtnRef",ref:p,instance:{tableRef:e.unref(s),formInstance:T.value},"btn-config":n.options.configBtn,"left-text":n.options.leftText},null,8,["instance","btn-config","left-text"])):e.createCommentVNode("",!0),(e.openBlock(),e.createBlock(e.unref(b.ElTable),e.mergeProps({class:"el-dp_tables",id:F.value,key:F.value,ref_key:"tableRef",ref:c,style:{width:"100%"}},he.value,{data:n.dataSource,onSortChange:A,onSelectionChange:Be}),{empty:e.withCtx(()=>[...B[2]||(B[2]=[e.createElementVNode("div",{class:"ant-empty ant-empty-normal"},[e.createElementVNode("div",{class:"ant-empty-image"},[e.createElementVNode("svg",{class:"ant-empty-img-simple",width:"64",height:"41",viewBox:"0 0 64 41",xmlns:"http://www.w3.org/2000/svg"},[e.createElementVNode("g",{transform:"translate(0 1)",fill:"none","fill-rule":"evenodd"},[e.createElementVNode("ellipse",{class:"ant-empty-img-simple-ellipse",cx:"32",cy:"33",rx:"32",ry:"7"}),e.createElementVNode("g",{class:"ant-empty-img-simple-g","fill-rule":"nonzero"},[e.createElementVNode("path",{d:"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z"}),e.createElementVNode("path",{d:"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z",class:"ant-empty-img-simple-path"})])])])]),e.createElementVNode("div",{class:"ant-empty-description"},"暂无数据")],-1)])]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ve.value,(x,S)=>(e.openBlock(),e.createBlock(We,{key:x.prop||x.key||S,cols:{...x,columnIndex:S}},e.createSlots({_:2},[x.scopedSlots&&x.scopedSlots.customRender?{name:x.scopedSlots.customRender,fn:e.withCtx(({scope:N})=>[e.renderSlot(d.$slots,x.scopedSlots.customRender,e.mergeProps({ref_for:!0},{...x,columnIndex:S,row:N.row,column:N.column},{scope:N}),void 0,!0)]),key:"0"}:void 0]),1032,["cols"]))),128))]),_:3},16,["id","data"]))]),_.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"paginationRef",ref:h,class:"pagination_page",style:e.normalizeStyle({position:Q.value==="height"?"absolute":"static",bottom:"0px",left:"0px",zIndex:5,background:"#fff"})},[e.createVNode(e.unref(b.ElPagination),{background:"",size:I.value.size,total:I.value.total,"page-size":I.value.pageSize,"onUpdate:pageSize":B[0]||(B[0]=x=>I.value.pageSize=x),"page-sizes":I.value.pageSizes,"current-page":I.value.current,"onUpdate:currentPage":B[1]||(B[1]=x=>I.value.current=x),layout:Ie.value,style:{padding:"0",margin:"10px 0","text-align":"center"},onSizeChange:E,onCurrentChange:R},null,8,["size","total","page-size","page-sizes","current-page","layout"])],4)):e.createCommentVNode("",!0)])),[[e.unref(b.vLoading),Fe.value]])])],4)]),_:3},8,["locale"]))}}),[["__scopeId","data-v-a655f407"]]);q.install=function(n){n.component(q.name,q)},q.isPlugin=!0,q.Plugin={install(n,u={}){n.provide("$esPlusTable",{...u.methods||{}}),n.component(q.name,{...q,methods:{...q.methods,...u.methods||{}}})}};const U=(n,u)=>{const m=u.split(/\.|\[|\]/).filter(Boolean);let t=n;for(const a of m){if(t==null)return;t=t[a]}return t},M=(n,u,m)=>{const t=u.split(/\.|\[|\]/).filter(Boolean),a=t.pop();let r=n;for(const o of t)r[o]==null&&(r[o]={}),r=r[o];a&&(r[a]=m)};function st(){return{formInputComponents:u=>new Map([["Input",(t,a,{row:r})=>t(b.ElInput,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["Select",(t,a,{row:r})=>t(b.ElSelect,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}},()=>{var o;return(o=r.dataOptions)==null?void 0:o.map((f,s)=>t(b.ElOption,{key:s,value:f.value,label:f.label}))})],["datePicker",(t,a,{row:r})=>t(b.ElDatePicker,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["timePicker",(t,a,{row:r})=>t(b.ElTimePicker,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["Slider",(t,a,{row:r})=>t(b.ElSlider,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["ColorPicker",(t,a,{row:r})=>t(b.ElColorPicker,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["Transfer",(t,a,{row:r})=>t(b.ElTransfer,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["Cascader",(t,a,{row:r})=>t(b.ElCascader,{modelValue:U(a,r.prop),options:r.dataOptions,...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["Radio",(t,a,{row:r})=>t(b.ElRadioGroup,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}},()=>{var o;return(o=r.dataOptions)==null?void 0:o.map((f,s)=>t(b.ElRadio,{key:s,value:f.value},()=>f.label))})],["Checkbox",(t,a,{row:r})=>t(b.ElCheckboxGroup,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}},()=>{var o;return(o=r.dataOptions)==null?void 0:o.map((f,s)=>t(b.ElCheckbox,{key:s,value:f.value},()=>f.label))})],["Switch",(t,a,{row:r})=>t(b.ElSwitch,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["Rate",(t,a,{row:r})=>t(b.ElRate,{modelValue:U(a,r.prop),...r.attrs,...r.on,"onUpdate:modelValue":o=>{M(a,r.prop,o)}})],["Upload",(t,a,{row:r})=>{const{props:o,httpRequest:f,triggerRender:s,fileRender:g,...c}=r;let p=null;const l={...o,...c.attrs,ref:w=>{p=w}};if(c.on)for(const[w,F]of Object.entries(c.on))l[`on${w.charAt(0).toUpperCase()}${w.slice(1)}`]=F;f&&(l["http-request"]=f);const h={};return s&&((l.listType||l["list-type"])==="picture-card"?h.trigger=()=>s(t):h.default=()=>s(t)),g&&(h.file=({file:w})=>g(t,w,()=>{p==null||p.handleRemove(w)})),t(b.ElUpload,l,h)}]]).get(u.formtype)||(()=>null)}}function ct(n){const u=e.ref(!1),m=e.computed(()=>{var p,l;return((l=(p=n.layoutFormProps)==null?void 0:p.fromLayProps)==null?void 0:l.isBtnHidden)??!1}),t=e.computed(()=>{var p;return((p=n.layoutFormProps)==null?void 0:p.rowLayProps)||{gutter:20}}),a=e.computed(()=>{var p;return((p=n.layoutFormProps)==null?void 0:p.fromLayProps)||{}}),r=e.computed(()=>{var p;return(p=n.layoutFormProps)==null?void 0:p.setOptions}),o=e.computed(()=>{let p=0;const l=[],h=[],w=n.formItemList;for(let C=0;C<w.length;C++){const O=w[C];if(p+=O.span||6,p>24){const D=h.length?h[h.length-1].endIndex:0;h.push({statIndex:D,endIndex:C}),p=O.span||6,C===w.length-1&&h.push({statIndex:C,endIndex:C+1})}else if(C===w.length-1){const D=h.length?h[h.length-1].endIndex:0;h.push({statIndex:D,endIndex:C+1})}else if(p===24){const D=h.length?h[h.length-1].endIndex:0;h.push({statIndex:D,endIndex:C+1}),p=0}}h.forEach(C=>{l.push(w.slice(C.statIndex,C.endIndex))});const F=l.map(C=>C.map(()=>0));let V=-1;return F.forEach(C=>{C.forEach((O,D)=>{C[D]=V+=1})}),{columnRow:F,rowNum:F.length,columnNodeIndex:F.map(C=>C[C.length-1])}}),f=e.computed(()=>{var l,h;const p=((h=(l=n.layoutFormProps)==null?void 0:l.fromLayProps)==null?void 0:h.minFoldRows)||0;return p>0&&p<o.value.rowNum}),s=e.computed(()=>{var C,O;const{rowNum:p,columnRow:l}=o.value,h=l[p-1]||[],w=((O=(C=n.layoutFormProps)==null?void 0:C.fromLayProps)==null?void 0:O.btnColSpan)||0,V=24-h.reduce((D,_)=>{var K;return D+(((K=n.formItemList[_])==null?void 0:K.span)||6)},0);return!u.value&&w<=V?V:24}),g=e.computed(()=>{var h,w;const p=((w=(h=n.layoutFormProps)==null?void 0:h.fromLayProps)==null?void 0:w.minFoldRows)||0,{columnNodeIndex:l}=o.value;if(u.value){const F=l[p-1]??l[l.length-1]??9999;return n.formItemList.map((V,C)=>({...V,isFold:C>F}))}return n.formItemList.map(F=>({...F,isFold:!1}))});return e.watch(f,p=>{u.value=p},{immediate:!0}),{folded:u,isBtnHidden:m,rowLayout:t,formLayout:a,getSetOptionsStatus:r,getRowColsAlgorithm:o,isFold:f,getBtnColSpan:s,formItem:g,changeFolded:()=>{u.value=!u.value}}}function it(n){const u=(f,s={},g)=>{const{success:c,fail:p,...l}=s||{};if(j(s.apiParams)&&Object.keys(s.apiParams).length&&s.apiParams.url){const h={...f,...e.toRaw(e.unref(s.apiParams.model||{}))},w={...e.toRaw(e.unref(s.apiParams.options||{}))};s.apiParams.method&&(w.method=s.apiParams.method);const F={url:s.apiParams.url,headers:{...s.apiParams.headers||{}},formParams:h,...w},V=s.httpRequest||n;if(!V)return;V(F).then(C=>{typeof c=="function"&&C&&(j(C)||Array.isArray(C))&&c(C)}).catch(C=>{typeof p=="function"&&p(C)})}},m=f=>{const s=["total","pageSize","current","listData"];return j(f)?Object.keys(f).every(g=>s.find(c=>c===g)&&f[g]&&typeof f[g]=="string"):!1},t=(f={},s)=>{if(j(f.configFormOut)&&Object.keys(f.configFormOut).length&&m(f.configFormOut))return f.configFormOut;if(typeof s=="function"){const g=s({total:"records",pageSize:"pageSize",current:"pageNo",listData:"rows"});if(m(g))return g}return{total:"records",pageSize:"pageSize",current:"pageNo",listData:"rows"}},a=(f,s,g={},c)=>{const p=t(g,c),l={};if(s.includes("listData")&&Array.isArray(f))return l.listData=f,l;if(j(p)&&Object.keys(p).length)for(const[h,w]of Object.entries(p)){if(s.findIndex(C=>C===h)===-1)continue;const V=f[w];if(V!=null)h==="listData"?l[h]=Array.isArray(V)?V:[]:l[h]=typeof V=="number"?V:parseInt(V,10)||0;else{const C=Se(f,w);h==="listData"?l[h]=Array.isArray(C)?C:[]:l[h]=typeof C=="number"?C:parseInt(C,10)||0}}return l},r=(f,s,g,c)=>new Promise((p,l)=>{e.nextTick(()=>{u({pageIndex:1,pageSize:1e3,...f||{}},{...s||{},success:h=>{const w=a(h,["total","listData"],g,c);p({data:h,configRows:w})},fail:h=>{l(h)}})})});return{queryTableListMethod:u,getEveryFormQueryField:async f=>{try{if(!Array.isArray(f))return[];const s=f.filter(l=>l&&l.apiParams&&j(l.apiParams)&&l.apiParams.url),g=[],c=s.map(l=>{var F,V;const{httpRequest:h}=l,w=r({...((F=l.apiParams)==null?void 0:F.model)||{}},{httpRequest:h,apiParams:l.apiParams,...((V=l.apiParams)==null?void 0:V.options)||{}},l);return ot(w)});return(await Promise.all(c)).forEach((l,h)=>{var w;if(l.status==="fulfilled"){const{configRows:F,data:V}=l.value,C=s[h],O=C==null?void 0:C.listenToCallBack;let D=[];O!=null&&O.crtn&&(D=O.crtn(V));const _=Array.isArray(D)&&D.length>0?D:typeof(C==null?void 0:C.callOptionListFormat)=="function"?C.callOptionListFormat((F==null?void 0:F.listData)||(C==null?void 0:C.dataOptions)||[]):void 0;g.push({prop:s[h].prop,listData:Array.isArray(_)?_:(F==null?void 0:F.listData)||((w=s[h])==null?void 0:w.dataOptions)||[]})}}),g}catch{return[]}},formatConfigOut:a,configFormField:t}}const dt=n=>typeof n=="string"?document.querySelector(n)||document.body:n instanceof HTMLElement?n:document.body,De=(n,u,m,t)=>{var o;const a=e.createVNode(n,u);if(t){a.appContext=t,a.appContext.provides||(a.appContext.provides={});const f=(o=t.provides)==null?void 0:o.elLocale;f&&(a.appContext.provides.elLocale=f),a.appContext.config||(a.appContext.config={}),a.appContext.config.globalProperties||(a.appContext.config.globalProperties={})}return e.render(a,m),dt(u.appendTo).appendChild(m),a},le=(n,u={})=>{if(n=n||se,Object.assign({onlyInstance:!1},u).onlyInstance){const t=e.getCurrentInstance(),a=(t==null?void 0:t.appContext)||null,r=document.createElement("div"),o=()=>{e.render(null,r),r.remove()},f=s=>{s.visible===void 0&&(s.visible=!0);const g=s.onClosed,c=s.onSubmit;return s.onClosed=(...p)=>{g==null||g(...p),o()},s.onSubmit=(p=o)=>{c==null||c(p)},De(n,s,r,a)};return f.close=o,f}else{const t=document.createElement("div");t.className="dialog-containers";const a=e.getCurrentInstance(),r=(a==null?void 0:a.appContext)||null;let o=null;const f=()=>{o&&o.component&&(o.component.props.visible=!1)},s=()=>{o&&(e.render(null,t),t.remove(),o=null)},g=c=>{if(o&&o.component)return Object.assign(o.component.props,c),o.component.props.visible=!0,o;const p={visible:!0,width:"50%",destroyOnClose:!0,...c},{onClosed:l,onSubmit:h}=p;return p.onClosed=()=>{l==null||l(),f()},p.onSubmit=(w=f)=>{h==null||h(w)},o=De(n,p,t,r),o};return g.close=f,g.destroy=s,g}},ft={class:"flex-center"},pt={key:0,class:"buttonOperate leftRightBtn"},ut={class:"btn-left"},mt={class:"btn-right"},gt={name:"EsForm"},ht=e.defineComponent({...gt,props:{model:{default:()=>({})},formItemList:{default:()=>[]},layoutFormProps:{default:()=>({})},configBtn:{default:()=>[]},renderBtn:{type:[Function,Boolean],default:!1},btnColSpanRow:{type:Boolean,default:!0},rules:{default:()=>({})},fieldFieldOutput:{}},emits:["confirm","reset"],setup(n,{expose:u,emit:m}){var ce;const t=n,a=e.getCurrentInstance(),r=e.inject("$esPlusForm",{}),o=e.inject("getTableInstantce",null),f=e.computed(()=>{if(o)return typeof o=="function"?o():o;const i=a==null?void 0:a.ctx;return typeof(i==null?void 0:i.getTableInstantce)=="function"?i==null?void 0:i.getTableInstantce():i==null?void 0:i.getTableInstantce}),s=e.computed(()=>!!(f.value&&Object.keys(f.value).length)),g=Object.fromEntries(Object.entries(we)),c=i=>i?g[i]||i:void 0,p=i=>{const{icon:k,...y}=i;return y},l=e.ref(null),h=e.ref({}),w=e.ref(t.formItemList),F=i=>{i&&(l.value=i)},{formInputComponents:V}=st(),C=(r==null?void 0:r.$httpRequest)||void 0,{getEveryFormQueryField:O}=it(C),D=e.ref(((ce=t.layoutFormProps)==null?void 0:ce.fromLayProps)||{}),_=e.computed(()=>({...D.value,model:t.model,rules:t.rules,validateOnRuleChange:!1})),K=e.ref(new Set);e.watch(()=>t.formItemList,async i=>{const k=Array.isArray(i)?i:[],y=k.filter(E=>E&&E.isInitRun!==!1&&!K.value.has(E.prop));if(!y.length){w.value=k.map(E=>{var A;if(!E)return null;const R=w.value.find(oe=>oe&&oe.prop===E.prop);return(A=R==null?void 0:R.dataOptions)!=null&&A.length?{...E,dataOptions:R.dataOptions}:E}).filter(E=>!!E);return}const L=await O(y);y.forEach(E=>K.value.add(E.prop)),w.value=k.map(E=>{var oe;if(!E)return null;const R=L.find(re=>re&&re.prop===E.prop),A=w.value.find(re=>re&&re.prop===E.prop);return R?{...E,dataOptions:R.listData}:(oe=A==null?void 0:A.dataOptions)!=null&&oe.length?{...E,dataOptions:A.dataOptions}:E}).filter(E=>!!E)},{immediate:!0,deep:!0});const Y=e.computed(()=>(w.value||[]).map(k=>k?{...k,span:k.span||6,dataOptions:k.dataOptions||[]}:null).filter(k=>k?k.isHidden&&typeof k.isHidden=="function"?!k.isHidden(t.model,k,_.value):!0:!1)),{folded:$,isBtnHidden:J,rowLayout:I,formLayout:T,getSetOptionsStatus:te,getRowColsAlgorithm:G,isFold:H,getBtnColSpan:X,formItem:Q,changeFolded:ne}=ct({layoutFormProps:t.layoutFormProps,get formItemList(){return Y.value}});e.watch(T,i=>{D.value=i},{immediate:!0});const Z=e.computed(()=>({colRightBtn:t.configBtn.filter(i=>i.direction==="right"||!i.direction),colLeftBtn:t.configBtn.filter(i=>i.direction==="left")})),Ie=e.computed(()=>typeof t.renderBtn=="function"),Fe=async i=>{var k,y;i.triggerEvent&&["query","rest"].includes(i.key||"")?ue(t.model,l.value,i.key):(i.key==="rest"&&l.value&&l.value.resetFields(),(y=i.click)==null||y.call(i,t.model,l.value,(k=f.value)==null?void 0:k.httpRequestInstance))},ue=async(i,k,y)=>{var L,E,R,A;y==="query"?s.value&&((E=(L=f.value)==null?void 0:L.httpRequestInstance)==null||E.call(L,i)):y==="rest"&&k&&(s.value&&((A=(R=f.value)==null?void 0:R.httpRequestInstance)==null||A.call(R,i)),k.resetFields())},Ve=i=>{if(s.value){const{style:k,...y}=i;return{style:{marginBottom:"10px",...k},...y}}return i},ge=(()=>{var i;return(i=a==null?void 0:a.ctx)!=null&&i.dialogInstance?a.ctx.dialogInstance():le})(),Ne=ge(),Te=ge(),he=()=>{},ye=()=>({data:w.value.map(i=>({...i,label:i.label,prop:i.prop,isHidden:!!i.isHidden,width:i.width})),columns:[{type:"selection",width:50},{label:"名称(列)",key:"label"},{label:"属性(Key)",key:"prop"},{label:"列宽",width:180,render:(i,k)=>e.h("div",[e.h(b.ElInput,{size:"small",maxlength:3,formatter:y=>y.replace(/^0|[^0-9]/g,""),modelValue:k.width,"onUpdate:modelValue":y=>{k.width=y}},{prepend:()=>"宽度",append:()=>"px"})])}]}),Oe=()=>({dataSource:[],columns:[{type:"selection",width:50},{label:"名称(列)",key:"label"},{label:"属性(Key)",key:"tableProp"},{label:"列宽",width:180,render:(i,k)=>e.h("div",[e.h(b.ElInput,{size:"small",maxlength:3,formatter:y=>y.replace(/^0|[^0-9]/g,""),modelValue:k.width,"onUpdate:modelValue":y=>{k.width=y}},{prepend:()=>"宽度",append:()=>"px"})])}]}),ke=()=>{const i=ye();Ne({title:"自定义查询",width:"800px",isDraggable:!0,render:()=>{var k;return e.h(q,{dataSource:i.data,columns:i.columns,options:{multiSelect:!0,expand:!1,snIndex:!1,loading:!1,border:!0,size:"small"},pagination:{pageSize:10,current:1,total:((k=i.data)==null?void 0:k.length)||0}})},configBtn:[{name:"取消",icon:"Close",click:(k,{close:y})=>y()},{name:"确认",type:"primary",icon:"Check",click:(k,{close:y})=>y()}]})},be=()=>{const i=Oe();Te({title:"自定义表格",width:"800px",render:()=>e.h(q,{dataSource:i.dataSource,columns:i.columns})})};e.nextTick(()=>{var i,k;h.value=l.value,(k=(i=a==null?void 0:a.ctx)==null?void 0:i.bodyFormInstance)==null||k.call(i,h.value)});const Ce=e.defineComponent({props:{row:Object,formItemList:Array,formModel:Object,render:Function,ellipsis:Boolean},setup(i){return()=>{var R;const{formItemList:k,formModel:y,row:L}=i,E=((R=i.render)==null?void 0:R.call(i,L,y,k,e.h))||"";return typeof E=="string"?e.h("span",E):E}}}),Be=e.defineComponent({props:{row:Object,index:Number,datakey:String,render:Function,model:Object,ellipsis:Boolean},setup(i){return()=>{var R;const{row:k,index:y,model:L}=i,E=((R=i.render)==null?void 0:R.call(i,e.h,L,{row:k,index:y}))||"";return typeof E=="string"?e.h("span",E):E}}}),xe=async i=>{const y=Y.value.filter(E=>E&&i.includes(E.prop));if(!y.length)return;(await O(y)).forEach(E=>{if(!E)return;const R=w.value.findIndex(A=>A&&A.prop===E.prop);R!==-1&&(w.value[R]={...w.value[R],dataOptions:E.listData})})},v=()=>l.value;return u({formItmeRequestInstance:xe,getFormRef:v,validate:()=>{var i;return(i=v())==null?void 0:i.validate()},resetFields:()=>{var i;return(i=v())==null?void 0:i.resetFields()},clearValidate:i=>{var k;return(k=v())==null?void 0:k.clearValidate(i)},validateField:i=>{var k;return(k=v())==null?void 0:k.validateField(i)},scrollToField:i=>{var k;return(k=v())==null?void 0:k.scrollToField(i)}}),(i,k)=>(e.openBlock(),e.createBlock(e.unref(b.ElForm),e.mergeProps({ref:F},_.value,{class:"es-form"}),{default:e.withCtx(()=>[e.createElementVNode("div",ft,[e.createVNode(e.unref(b.ElRow),e.normalizeProps(e.guardReactiveProps(e.unref(I))),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Q),(y,L)=>e.withDirectives((e.openBlock(),e.createBlock(e.unref(b.ElCol),{key:y.prop,span:y.span||6},{default:e.withCtx(()=>[e.createVNode(e.unref(b.ElFormItem),e.mergeProps({label:y.label},{ref_for:!0},Ve(y.formItemOptions||{}),{prop:y.prop,onClick:e.withModifiers(()=>{},["stop"])}),{default:e.withCtx(()=>[y.formtype?(e.openBlock(),e.createBlock(e.unref(Be),{key:0,row:y,render:e.unref(V)(y),index:L,model:n.model},null,8,["row","render","index","model"])):(e.openBlock(),e.createBlock(e.unref(Be),{key:1,row:y,render:y.render,index:L,model:n.model},null,8,["row","render","index","model"]))]),_:2},1040,["label","prop"])]),_:2},1032,["span"])),[[e.vShow,!(y!=null&&y.isFold)]])),128)),e.unref(J)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Ie.value?(e.openBlock(),e.createBlock(e.unref(Ce),{key:0,row:{isFold:e.unref(H),folded:e.unref($),getBtnColSpan:e.unref(X),getRowColsAlgorithm:e.unref(G),changeFolded:e.unref(ne),refsForm:h.value},"form-model":n.model,"form-item-list":e.unref(Q),render:n.renderBtn},null,8,["row","form-model","form-item-list","render"])):(e.openBlock(),e.createBlock(e.unref(b.ElCol),{key:1,span:n.btnColSpanRow?24:e.unref(X)},{default:e.withCtx(()=>[n.btnColSpanRow&&n.configBtn.length?(e.openBlock(),e.createElementBlock("div",pt,[e.createElementVNode("div",ut,[e.createVNode(e.unref(b.ElFormItem),{"label-width":"0px",class:"btn-formItem"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value.colLeftBtn,(y,L)=>(e.openBlock(),e.createBlock(e.unref(b.ElButton),e.mergeProps({ref_for:!0},p(y),{icon:c(y.icon),disabled:typeof y.disabled=="function"?y.disabled()||!1:y.disabled||!1,onClick:()=>{var E;return y.click(n.model,l.value,(E=f.value)==null?void 0:E.httpRequestInstance)},key:y.key||L}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.name),1)]),_:2},1040,["icon","disabled","onClick"]))),128))]),_:1})]),e.createElementVNode("div",mt,[e.createVNode(e.unref(b.ElFormItem),{"label-width":"0px",class:"btn-formItem"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Z.value.colRightBtn,(y,L)=>(e.openBlock(),e.createBlock(e.unref(b.ElButton),e.mergeProps({ref_for:!0},p(y),{icon:c(y.icon),disabled:typeof y.disabled=="function"?y.disabled()||!1:y.disabled||!1,onClick:()=>Fe(y),key:y.key||L}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.name),1)]),_:2},1040,["icon","disabled","onClick"]))),128)),e.unref(H)?(e.openBlock(),e.createBlock(e.unref(b.ElButton),{key:0,link:"",type:"primary",icon:c(e.unref($)?"ArrowDown":"ArrowUp"),style:{"padding-left":"0",border:"none"},onClick:e.unref(ne)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref($)?"展开":"收起"),1)]),_:1},8,["icon","onClick"])):e.createCommentVNode("",!0),e.unref(te)?(e.openBlock(),e.createBlock(e.unref(b.ElDropdown),{key:1,placement:"bottom-start"},{dropdown:e.withCtx(()=>[e.createVNode(e.unref(b.ElDropdownMenu),null,{default:e.withCtx(()=>[e.createVNode(e.unref(b.ElDropdownItem),{onClick:ke},{default:e.withCtx(()=>[...k[0]||(k[0]=[e.createTextVNode("自定义查询",-1)])]),_:1}),e.createVNode(e.unref(b.ElDropdownItem),{onClick:be},{default:e.withCtx(()=>[...k[1]||(k[1]=[e.createTextVNode("自定义表格",-1)])]),_:1}),e.createVNode(e.unref(b.ElDropdownItem),{onClick:he},{default:e.withCtx(()=>[...k[2]||(k[2]=[e.createTextVNode("重置(刷新)",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(b.ElButton),{link:"",type:"primary",style:{"margin-left":"2px","margin-right":"5px",outline:"none"},icon:c("Tools")},null,8,["icon"])]),_:1})):e.createCommentVNode("",!0)]),_:1})])])):e.createCommentVNode("",!0),!n.btnColSpanRow&&n.configBtn.length?(e.openBlock(),e.createBlock(e.unref(b.ElFormItem),{key:1,label:" ","label-width":_.value.labelBtnWidth?_.value.labelBtnWidth:_.value.labelWidth,class:e.normalizeClass([{formItemCols:n.btnColSpanRow?!0:e.unref(X)===24},"btn-formItem"])},{default:e.withCtx(()=>[e.createElementVNode("div",{class:"buttonOperate",style:e.normalizeStyle({"text-align":e.unref(X)===24?"right":"left"})},[n.configBtn.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(n.configBtn,(y,L)=>(e.openBlock(),e.createBlock(e.unref(b.ElButton),e.mergeProps({ref_for:!0},p(y),{icon:c(y.icon),disabled:typeof y.disabled=="function"?y.disabled()||!1:y.disabled||!1,onClick:()=>{var E;return y.click(n.model,l.value,(E=f.value)==null?void 0:E.httpRequestInstance)},key:y.key||L}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(y.name),1)]),_:2},1040,["icon","disabled","onClick"]))),128)):e.createCommentVNode("",!0),e.unref(H)?(e.openBlock(),e.createBlock(e.unref(b.ElButton),{key:1,type:"primary",link:"",icon:c(e.unref($)?"ArrowDown":"ArrowUp"),style:{"padding-left":"0",border:"none"},onClick:e.unref(ne)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref($)?"展开":"收起"),1)]),_:1},8,["icon","onClick"])):e.createCommentVNode("",!0),e.unref(te)?(e.openBlock(),e.createBlock(e.unref(b.ElDropdown),{key:2,placement:"bottom-start"},{dropdown:e.withCtx(()=>[e.createVNode(e.unref(b.ElDropdownMenu),null,{default:e.withCtx(()=>[e.createVNode(e.unref(b.ElDropdownItem),{onClick:ke},{default:e.withCtx(()=>[...k[3]||(k[3]=[e.createTextVNode("自定义查询",-1)])]),_:1}),e.createVNode(e.unref(b.ElDropdownItem),{onClick:be},{default:e.withCtx(()=>[...k[4]||(k[4]=[e.createTextVNode("自定义表格",-1)])]),_:1}),e.createVNode(e.unref(b.ElDropdownItem),{onClick:he},{default:e.withCtx(()=>[...k[5]||(k[5]=[e.createTextVNode("重置(刷新)",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(b.ElButton),{link:"",type:"primary",style:{"margin-left":"2px","margin-right":"5px",outline:"none"},icon:c("Tools")},null,8,["icon"])]),_:1})):e.createCommentVNode("",!0)],4)]),_:1},8,["label-width","class"])):e.createCommentVNode("",!0)]),_:1},8,["span"]))],64))]),_:1},16)])]),_:1},16))}}),W=fe(ht,[["__scopeId","data-v-767c4265"]]);W.install=function(n){n.component(W.name,W)},W.isPlugin=!0,W.Plugin={install(n,u={}){n.provide("$esPlusForm",{...u.methods,useDialog:()=>le()}),n.component(W.name,{...W,methods:{...W.methods,...u.methods||{},useDialog:()=>le()}})}};const yt={class:"dp-dialog_wrapper"},kt={class:"dialog-title"},bt={class:"btns"},Ct={key:0,class:"dialog-footer"},se=fe(e.defineComponent({__name:"component",props:{title:{},visible:{type:Boolean},appendTo:{},hiddenFullBtn:{type:Boolean},width:{},isDraggable:{type:Boolean},confirmText:{},cancelText:{},configBtn:{},maxHeight:{},isHiddenFooter:{type:Boolean},renderHeader:{type:Function},renderFooter:{type:Function},render:{type:Function},fullscreen:{type:Boolean}},emits:["update:visible","closed","submit"],setup(n,{emit:u}){const m=n,t=u,a=e.useSlots(),r=e.getCurrentInstance(),o=e.useAttrs(),f=Object.fromEntries(Object.entries(we).map(([T])=>[T,we[T]])),s=e.ref(null),g=e.reactive({}),c=e.ref(!1),p=r,l=e.ref(de),h=e.inject("elLocale",null);h&&(l.value=h),e.provide("elLocale",l.value);const w=T=>T?f[T]||T:void 0,F=T=>{const{icon:te,...G}=T;return G},V=()=>{setTimeout(()=>{c.value&&(c.value=!1)},500)},C=()=>{o!=null&&o.fullscreen||(c.value=!c.value)},O=()=>{t("closed",!1),V()},D=()=>{t("closed",!1),V()},_=e.computed(()=>{const{...T}=o;return T}),K=e.computed(()=>c.value?"dialogFull":m.maxHeight?"dialogShadow":"dialogAuto"),Y=()=>{const T=window.innerHeight;return Math.max(T-135,200)},$=e.computed(()=>{const T=Y();return c.value?{height:T+"px"}:m.maxHeight?{maxHeight:typeof m.maxHeight=="number"?`${m.maxHeight}px`:m.maxHeight}:{maxHeight:T+"px"}}),J=e.computed({get:()=>m.visible||!1,set:T=>{t("update:visible",T),T||(t("closed",T),V())}}),I=e.computed(()=>({renderBodyRefs:g.currentRef,renderBodyRefsObject:g,lyFormInstance:s,dialogInstance:p,getRefs:()=>g}));return e.provide("bodyFormInstance",T=>{s.value=T}),r&&(r.exposed={closed:O}),(T,te)=>{var G;return e.openBlock(),e.createElementBlock("div",yt,[e.createVNode(e.unref(b.ElDialog),e.mergeProps({class:["dg-dialog",K.value]},_.value,{modelValue:J.value,"onUpdate:modelValue":te[0]||(te[0]=H=>J.value=H),draggable:m.isDraggable,width:m.width,"show-close":!1,onClose:D,fullscreen:((G=_.value)==null?void 0:G.fullscreen)??c.value}),e.createSlots({header:e.withCtx(()=>[m.renderHeader?(e.openBlock(),e.createBlock(Ee,{key:0,render:m.renderHeader,instance:I.value},null,8,["render","instance"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",null,[e.createElementVNode("span",kt,e.toDisplayString(m.title),1)]),e.createElementVNode("div",bt,[e.withDirectives(e.createVNode(e.unref(b.ElIcon),{onClick:C},{default:e.withCtx(()=>[c.value?(e.openBlock(),e.createBlock(e.unref(me.CopyDocument),{key:1})):(e.openBlock(),e.createBlock(e.unref(me.FullScreen),{key:0}))]),_:1},512),[[e.vShow,!m.hiddenFullBtn]]),e.createVNode(e.unref(b.ElIcon),{onClick:O},{default:e.withCtx(()=>[e.createVNode(e.unref(me.Close))]),_:1})])],64))]),default:e.withCtx(()=>[e.createElementVNode("div",{class:"dialog_body_layouts",style:e.normalizeStyle($.value)},[m.render&&typeof m.render=="function"?(e.openBlock(),e.createBlock(Ee,{key:0,refs:g,instance:I.value,render:m.render,components:{EsTable:e.unref(q),EsForm:e.unref(W)},locale:l.value},null,8,["refs","instance","render","components","locale"])):e.createCommentVNode("",!0)],4)]),_:2},[e.unref(o).isHiddenFooter?void 0:{name:"footer",fn:e.withCtx(()=>[a.footer?e.renderSlot(T.$slots,"footer",{key:1},void 0,!0):(e.openBlock(),e.createElementBlock("span",Ct,[m.renderFooter&&typeof m.renderFooter=="function"?(e.openBlock(),e.createBlock(Ee,{key:0,render:m.renderFooter,instance:I.value},null,8,["render","instance"])):m.configBtn&&m.configBtn.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(n.configBtn,(H,X)=>(e.openBlock(),e.createBlock(e.unref(b.ElButton),e.mergeProps({size:"small"},{ref_for:!0},F(H),{icon:w(H.icon),disabled:typeof H.disabled=="function"?H.disabled():H.disabled||!1,onClick:()=>{var Q;(Q=H.click)==null||Q.call(H,g.currentRef,{close:O,getRefs:ne=>ne?g[ne]||null:g,dialogInstance:e.unref(p)})},key:H.key||X}),{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(H.name),1)]),_:2},1040,["icon","disabled","onClick"]))),128)):e.createCommentVNode("",!0)]))]),key:"0"}]),1040,["class","modelValue","draggable","width","fullscreen"])])}}}),[["__scopeId","data-v-857351a8"]]);se.install=function(n){n.component(se.name,se)};const Bt=["xlink:href"],pe=fe(e.defineComponent({__name:"svg-icon",props:{iconClass:{},className:{}},setup(n){const u=n,m=e.computed(()=>o(u.iconClass)),t=e.computed(()=>`#icon-${u.iconClass}`),a=e.computed(()=>u.className?"svg-icon "+u.className:"svg-icon"),r=e.computed(()=>({mask:`url(${u.iconClass}) no-repeat 50% 50%`,"-webkit-mask":`url(${u.iconClass}) no-repeat 50% 50%`})),o=f=>/^(https?:|mailto:|tel:|open)/.test(f);return(f,s)=>m.value?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle(r.value),class:"svg-external-icon svg-icon"},null,4)):(e.openBlock(),e.createElementBlock("svg",{key:1,class:e.normalizeClass(a.value),"aria-hidden":"true"},[e.createElementVNode("use",{"xlink:href":t.value},null,8,Bt)],2))}}),[["__scopeId","data-v-3a11db57"]]);pe.install=function(n){n.component(pe.name,pe)};const Le=[se,W,q,pe],ze=(n,u={})=>{Le.forEach(m=>{m.name&&n.component(m.name,m)}),u.globalProperties!==!1&&(n.config.globalProperties.$useDialog=le,Le.forEach(m=>{m.isPlugin&&m.Plugin&&n.use(m.Plugin,u[m.name]||{})})),n.provide("$EsPlus",{useDialog:le,...u})},xt={version:qe,install:ze};P.EsDialog=se,P.EsForm=W,P.EsTable=q,P.SvgIcon=pe,P.default=xt,P.install=ze,P.useDialog=le,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
2
|
+
//# sourceMappingURL=es-plus.umd.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es-plus.umd.cjs","sources":["../node_modules/element-plus/es/locale/lang/zh-cn.mjs","../src/components/es-dialog/src/render-jsx.vue","../src/components/es-table/src/column-item.vue","../src/components/es-table/src/table-btns.vue","../src/composables/use-table-resize.ts","../src/composables/use-table-selection.ts","../src/utils/shared.ts","../src/components/es-table/src/component.vue","../src/components/es-table/index.ts","../src/composables/use-form-inputs.ts","../src/composables/use-form-layout.ts","../src/composables/use-form-request.ts","../src/components/es-dialog/src/use-dialog.ts","../src/components/es-form/src/es-form.vue","../src/components/es-form/index.ts","../src/components/es-dialog/src/component.vue","../src/components/es-dialog/index.ts","../src/components/svg-icon/src/svg-icon.vue","../src/components/svg-icon/index.ts","../src/index.ts"],"sourcesContent":["//#region ../../packages/locale/lang/zh-cn.ts\nvar zh_cn_default = {\n\tname: \"zh-cn\",\n\tel: {\n\t\tbreadcrumb: { label: \"面包屑\" },\n\t\tcolorpicker: {\n\t\t\tconfirm: \"确定\",\n\t\t\tclear: \"清空\",\n\t\t\tdefaultLabel: \"颜色选择器\",\n\t\t\tdescription: \"当前颜色 {color},按 Enter 键选择新颜色\",\n\t\t\talphaLabel: \"选择透明度的值\",\n\t\t\talphaDescription: \"透明度 {alpha}, 当前颜色 {color}\",\n\t\t\thueLabel: \"选择色相值\",\n\t\t\thueDescription: \"色相 {hue}, 当前颜色 {color}\",\n\t\t\tsvLabel: \"选择饱和度与明度的值\",\n\t\t\tsvDescription: \"饱和度 {saturation}, 明度 {brightness}, 当前颜色 {color}\",\n\t\t\tpredefineDescription: \"选择 {value} 作为颜色\"\n\t\t},\n\t\tdatepicker: {\n\t\t\tnow: \"此刻\",\n\t\t\ttoday: \"今天\",\n\t\t\tcancel: \"取消\",\n\t\t\tclear: \"清空\",\n\t\t\tconfirm: \"确定\",\n\t\t\tdateTablePrompt: \"使用方向键与 Enter 键可选择日期\",\n\t\t\tmonthTablePrompt: \"使用方向键与 Enter 键可选择月份\",\n\t\t\tyearTablePrompt: \"使用方向键与 Enter 键可选择年份\",\n\t\t\tselectedDate: \"已选日期\",\n\t\t\tselectDate: \"选择日期\",\n\t\t\tselectTime: \"选择时间\",\n\t\t\tstartDate: \"开始日期\",\n\t\t\tstartTime: \"开始时间\",\n\t\t\tendDate: \"结束日期\",\n\t\t\tendTime: \"结束时间\",\n\t\t\tprevYear: \"前一年\",\n\t\t\tnextYear: \"后一年\",\n\t\t\tprevMonth: \"上个月\",\n\t\t\tnextMonth: \"下个月\",\n\t\t\tyear: \"年\",\n\t\t\tmonth1: \"1 月\",\n\t\t\tmonth2: \"2 月\",\n\t\t\tmonth3: \"3 月\",\n\t\t\tmonth4: \"4 月\",\n\t\t\tmonth5: \"5 月\",\n\t\t\tmonth6: \"6 月\",\n\t\t\tmonth7: \"7 月\",\n\t\t\tmonth8: \"8 月\",\n\t\t\tmonth9: \"9 月\",\n\t\t\tmonth10: \"10 月\",\n\t\t\tmonth11: \"11 月\",\n\t\t\tmonth12: \"12 月\",\n\t\t\tweeks: {\n\t\t\t\tsun: \"日\",\n\t\t\t\tmon: \"一\",\n\t\t\t\ttue: \"二\",\n\t\t\t\twed: \"三\",\n\t\t\t\tthu: \"四\",\n\t\t\t\tfri: \"五\",\n\t\t\t\tsat: \"六\"\n\t\t\t},\n\t\t\tweeksFull: {\n\t\t\t\tsun: \"星期日\",\n\t\t\t\tmon: \"星期一\",\n\t\t\t\ttue: \"星期二\",\n\t\t\t\twed: \"星期三\",\n\t\t\t\tthu: \"星期四\",\n\t\t\t\tfri: \"星期五\",\n\t\t\t\tsat: \"星期六\"\n\t\t\t},\n\t\t\tmonths: {\n\t\t\t\tjan: \"一月\",\n\t\t\t\tfeb: \"二月\",\n\t\t\t\tmar: \"三月\",\n\t\t\t\tapr: \"四月\",\n\t\t\t\tmay: \"五月\",\n\t\t\t\tjun: \"六月\",\n\t\t\t\tjul: \"七月\",\n\t\t\t\taug: \"八月\",\n\t\t\t\tsep: \"九月\",\n\t\t\t\toct: \"十月\",\n\t\t\t\tnov: \"十一月\",\n\t\t\t\tdec: \"十二月\"\n\t\t\t}\n\t\t},\n\t\tinputNumber: {\n\t\t\tdecrease: \"减少数值\",\n\t\t\tincrease: \"增加数值\"\n\t\t},\n\t\tselect: {\n\t\t\tloading: \"加载中\",\n\t\t\tnoMatch: \"无匹配数据\",\n\t\t\tnoData: \"无数据\",\n\t\t\tplaceholder: \"请选择\"\n\t\t},\n\t\tmention: { loading: \"加载中\" },\n\t\tdropdown: { toggleDropdown: \"切换下拉选项\" },\n\t\tcascader: {\n\t\t\tnoMatch: \"无匹配数据\",\n\t\t\tloading: \"加载中\",\n\t\t\tplaceholder: \"请选择\",\n\t\t\tnoData: \"暂无数据\"\n\t\t},\n\t\tpagination: {\n\t\t\tgoto: \"前往\",\n\t\t\tpagesize: \"条/页\",\n\t\t\ttotal: \"共 {total} 条\",\n\t\t\tpageClassifier: \"页\",\n\t\t\tpage: \"页\",\n\t\t\tprev: \"上一页\",\n\t\t\tnext: \"下一页\",\n\t\t\tcurrentPage: \"第 {pager} 页\",\n\t\t\tprevPages: \"向前 {pager} 页\",\n\t\t\tnextPages: \"向后 {pager} 页\",\n\t\t\tdeprecationWarning: \"你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档\"\n\t\t},\n\t\tdialog: { close: \"关闭此对话框\" },\n\t\tdrawer: { close: \"关闭此对话框\" },\n\t\tmessagebox: {\n\t\t\ttitle: \"提示\",\n\t\t\tconfirm: \"确定\",\n\t\t\tcancel: \"取消\",\n\t\t\terror: \"输入的数据不合法!\",\n\t\t\tclose: \"关闭此对话框\"\n\t\t},\n\t\tupload: {\n\t\t\tdeleteTip: \"按 Delete 键可删除\",\n\t\t\tdelete: \"删除\",\n\t\t\tpreview: \"查看图片\",\n\t\t\tcontinue: \"继续上传\"\n\t\t},\n\t\tslider: {\n\t\t\tdefaultLabel: \"滑块介于 {min} 至 {max}\",\n\t\t\tdefaultRangeStartLabel: \"选择起始值\",\n\t\t\tdefaultRangeEndLabel: \"选择结束值\"\n\t\t},\n\t\ttable: {\n\t\t\temptyText: \"暂无数据\",\n\t\t\tconfirmFilter: \"筛选\",\n\t\t\tresetFilter: \"重置\",\n\t\t\tclearFilter: \"全部\",\n\t\t\tsumText: \"合计\",\n\t\t\tselectAllLabel: \"选择所有行\",\n\t\t\tselectRowLabel: \"选择当前行\",\n\t\t\texpandRowLabel: \"展开当前行\",\n\t\t\tcollapseRowLabel: \"收起当前行\",\n\t\t\tsortLabel: \"按 {column} 排序\",\n\t\t\tfilterLabel: \"按 {column} 过滤\"\n\t\t},\n\t\ttag: { close: \"关闭此标签\" },\n\t\ttour: {\n\t\t\tnext: \"下一步\",\n\t\t\tprevious: \"上一步\",\n\t\t\tfinish: \"结束导览\",\n\t\t\tclose: \"关闭此对话框\"\n\t\t},\n\t\ttree: { emptyText: \"暂无数据\" },\n\t\ttransfer: {\n\t\t\tnoMatch: \"无匹配数据\",\n\t\t\tnoData: \"无数据\",\n\t\t\ttitles: [\"列表 1\", \"列表 2\"],\n\t\t\tfilterPlaceholder: \"请输入搜索内容\",\n\t\t\tnoCheckedFormat: \"共 {total} 项\",\n\t\t\thasCheckedFormat: \"已选 {checked}/{total} 项\"\n\t\t},\n\t\timage: { error: \"加载失败\" },\n\t\tpageHeader: { title: \"返回\" },\n\t\tpopconfirm: {\n\t\t\tconfirmButtonText: \"确定\",\n\t\t\tcancelButtonText: \"取消\"\n\t\t},\n\t\tcarousel: {\n\t\t\tleftArrow: \"上一张幻灯片\",\n\t\t\trightArrow: \"下一张幻灯片\",\n\t\t\tindicator: \"幻灯片切换至索引 {index}\"\n\t\t}\n\t}\n};\n\n//#endregion\nexport { zh_cn_default as default };\n//# sourceMappingURL=zh-cn.mjs.map","<script >\nimport { defineComponent, h, reactive, isVNode, onMounted, onUpdated } from 'vue'\nimport { ElConfigProvider } from \"element-plus\"\nimport zhCn from 'element-plus/es/locale/lang/zh-cn'\n\nexport default defineComponent({\n name: 'RenderJsx',\n props: {\n refs: { type: [Function, Object], default: null },\n row: { type: Object, default: () => ({}) },\n render: { type: Function, default: () => {} },\n model: { type: Object, default: () => ({}) },\n instance: { type: Object, default: () => ({}) },\n components: { type: Object, default: () => ({}) },\n locale: { type: Object, default: null }\n },\n setup(props) {\n const refsObject = (props.refs && typeof props.refs === 'object') ? props.refs : reactive({})\n\n function getRawRef(vnodeRef) {\n if (!vnodeRef) return null\n if (typeof vnodeRef === 'function') return vnodeRef\n if (vnodeRef.r) {\n if (typeof vnodeRef.r === 'function') return vnodeRef.r\n if (vnodeRef.r && typeof vnodeRef.r === 'object' && 'value' in vnodeRef.r) {\n const refObj = vnodeRef.r\n return (val) => { refObj.value = val }\n }\n }\n return null\n }\n\n // Store the component VNode and user ref callback to use after mount\n let componentVNode = null\n let userRefCallback = null\n\n function flushRef() {\n if (!componentVNode) return\n const instance = componentVNode.component\n if (!instance) return\n // Use .exposed first — template refs on components with defineExpose\n // receive instance.exposed, not instance.proxy\n const comp = instance.exposed || instance.proxy\n if (!comp) return\n refsObject.currentRef = comp\n if (typeof userRefCallback === 'function') {\n userRefCallback(comp)\n }\n }\n\n onMounted(() => flushRef())\n onUpdated(() => flushRef())\n\n return () => {\n const { instance } = props\n const enhancedInstance = {\n ...instance,\n registerRef: (name, el) => {\n if (el !== null && el !== undefined) {\n refsObject[name] = el\n }\n },\n getRefs: () => refsObject\n }\n\n const renderContent = props.render(h, enhancedInstance, props.components || {}) || ''\n\n if (typeof renderContent === 'string') {\n componentVNode = null\n return h(ElConfigProvider, {\n locale: props.locale || zhCn\n }, () => h('span', {\n ref: (e) => { refsObject.currentRef = e }\n }, renderContent))\n }\n\n if (isVNode(renderContent)) {\n const isComponent = typeof renderContent.type !== 'string'\n if (isComponent) {\n componentVNode = renderContent\n userRefCallback = getRawRef(renderContent.ref) || getRawRef(renderContent.props?.ref)\n return renderContent\n }\n componentVNode = null\n return h(ElConfigProvider, {\n locale: props.locale || zhCn\n }, () => h('div', {\n ref: (e) => { refsObject.currentRef = e }\n }, [renderContent]))\n }\n\n componentVNode = null\n return h(ElConfigProvider, {\n locale: props.locale || zhCn\n }, () => h(renderContent, {\n ref: (e) => { refsObject.currentRef = e }\n }))\n }\n }\n})\n</script>\n","<template>\n <!-- 分组列处理 -->\n <el-table-column v-if=\"cols.groups && Array.isArray(cols.groups)\" v-bind=\"columnBindAttr(cols)\">\n <template v-for=\"(item, index) in cols.groups\" :key=\"item.prop || item.key || index\">\n <el-table-column v-if=\"item.render && typeof item.render === 'function'\" v-bind=\"columnBindAttr({ ...item, columnIndex: index })\">\n <template #default=\"scope\">\n <render-dom-tb\n v-if=\"scope && scope.row\"\n :row=\"scope.row\"\n :index=\"scope.$index\"\n :data-key=\"item.key\"\n :render=\"item.render\"\n />\n <span v-else>-</span>\n </template>\n </el-table-column>\n <el-table-column v-else-if=\"item.scopedSlots && item.scopedSlots.customRender\" v-bind=\"columnBindAttr({ ...item, columnIndex: index })\">\n <template #default=\"scope\">\n <slot\n v-if=\"scope && scope.row\"\n v-bind=\"{ ...item, row: scope.row, column: scope.column, scope: scope }\"\n :name=\"item.scopedSlots.customRender\"\n />\n <span v-else>-</span>\n </template>\n </el-table-column>\n <el-table-column v-else v-bind=\"columnBindAttr({ ...item, columnIndex: index })\" />\n </template>\n </el-table-column>\n\n <!-- 自定义渲染函数列 -->\n <el-table-column v-else-if=\"cols.render && typeof cols.render === 'function'\" v-bind=\"columnBindAttr(cols)\">\n <template #default=\"scope\">\n <render-dom-tb\n v-if=\"scope && scope.row\"\n :row=\"scope.row\"\n :index=\"scope.$index\"\n :data-key=\"cols.key\"\n :render=\"cols.render\"\n />\n <span v-else>-</span>\n </template>\n </el-table-column>\n\n <!-- 作用域插槽列 -->\n <el-table-column v-else-if=\"cols.scopedSlots && cols.scopedSlots.customRender\" v-bind=\"columnBindAttr(cols)\">\n <template #default=\"scope\">\n <slot\n v-if=\"scope && scope.row\"\n v-bind=\"{ ...cols, row: scope.row, column: scope.column, scope: scope }\"\n :name=\"cols.scopedSlots.customRender\"\n />\n <span v-else>-</span>\n </template>\n </el-table-column>\n\n <!-- 省略号工具提示列 -->\n <el-table-column v-else-if=\"cols.ellipsis && typeof cols.ellipsis === 'boolean'\" show-overflow-tooltip v-bind=\"columnBindAttr(cols)\" />\n\n <!-- 普通列 -->\n <el-table-column v-else v-bind=\"columnBindAttr(cols)\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { h, defineComponent } from 'vue'\nimport { ElTableColumn } from 'element-plus'\nimport type { TableColumn } from '../../../types'\n\nconst props = defineProps<{\n cols: TableColumn\n}>()\n\n// 函数式组件定义\nconst RenderDomTb = defineComponent({\n props: {\n row: { type: Object, default: () => ({}) },\n index: { type: Number, default: 0 },\n dataKey: String,\n render: { type: Function, required: true }\n },\n setup(props) {\n return () => {\n const { row, index, dataKey, render } = props\n if (!row) return h('span', '-')\n const value = dataKey ? row[dataKey] : null\n try {\n const renderResult = render(h, { value, row, index })\n if (typeof renderResult === 'string') return h('span', renderResult)\n return renderResult\n } catch (error) {\n return h('span', '-')\n }\n }\n }\n})\n\nconst firstWordUpperCase = (str: string): string => {\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n}\n\nconst columnBindAttr = (cols: TableColumn) => {\n const options: Record<string, unknown> = {}\n\n for (const t in cols) {\n if (t === 'groups' || t === 'scopedSlots' || t === 'render') continue\n\n if (t.includes('-')) {\n const parts = t.split('-')\n let camelKey = parts[0]\n for (let i = 1; i < parts.length; i++) {\n camelKey += firstWordUpperCase(parts[i])\n }\n options[camelKey] = cols[t]\n } else if (t === 'key') {\n options.prop = cols[t]\n options[t] = cols[t]\n } else {\n options[t] = cols[t]\n }\n }\n\n if (!options.align) {\n options.align = 'center'\n }\n\n return options\n}\n</script>\n","<template>\n <div v-if=\"showContainer\" class=\"flex-float btns\">\n <div class=\"left-text\">\n {{ leftText }}\n </div>\n\n <div class=\"btn-container_block\">\n <!-- 左侧按钮组 -->\n <div class=\"btn-left\">\n <template v-for=\"(item, index) in processedBtnLeft\" :key=\"item.name\">\n <div v-if=\"!item.isHide\" :style=\"buttonContainerStyle(index)\">\n <render-dom v-if=\"item.render && typeof item.render === 'function'\" :render=\"item.render\" />\n <el-button v-else :type=\"item.type\" :size=\"item.size || 'small'\" :icon=\"item.icon\" :loading=\"item.loading || false\" v-bind=\"item\" :disabled=\"getDisabledState(item)\" @click=\"()=>item.click(instance)\">\n {{ item.name }}\n </el-button>\n </div>\n </template>\n </div>\n\n <!-- 右侧按钮组 -->\n <div class=\"btn-right\">\n <template v-for=\"(item, index) in processedBtnRight\" :key=\"item.name\">\n <div v-if=\"!item.isHide\" :style=\"buttonContainerStyle(index)\">\n <render-dom v-if=\"item.render && typeof item.render === 'function'\" :render=\"item.render\" />\n <el-button v-else :type=\"item.type\" :size=\"item.size || 'small'\" v-bind=\"item\" :icon=\"item.icon\" :loading=\"item.loading || false\" :disabled=\"getDisabledState(item)\" @click=\"() =>item.click(instance)\">\n {{ item.name }}\n </el-button>\n </div>\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, h } from 'vue'\nimport { ElButton } from 'element-plus'\n\nconst props = defineProps<{\n leftText?: string\n btnConfig?: Array<Record<string, unknown>>\n instance?: Record<string, unknown>\n}>()\n\nconst RenderDom = (props: { render: () => unknown }) => {\n if (!props.render || typeof props.render !== 'function') return null\n try {\n return props.render()\n } catch {\n return null\n }\n}\n\nRenderDom.props = {\n render: { type: Function, required: true }\n}\n\nconst hasPermission = (_btnList: unknown[], pvalue?: string) => {\n if (!pvalue) return true\n return true\n}\n\nconst processButtonConfig = (config: Array<Record<string, unknown>>) => {\n return config.map((item) => {\n const processed = { ...item }\n const hasPerm = hasPermission([], item.permissionValue as string)\n\n if (!hasPerm) {\n processed.isHide = true\n } else if (typeof item.isHide === 'function') {\n processed.isHide = item.isHide()\n } else {\n processed.isHide = item.isHide || false\n }\n\n return processed\n })\n}\n\nconst processedBtnLeft = computed(() => {\n return processButtonConfig((props.btnConfig || []).filter((item) => item.code === 1)).filter((item) => !item.isHide)\n})\n\nconst processedBtnRight = computed(() => {\n return processButtonConfig((props.btnConfig || []).filter((item) => item.code === 2)).filter((item) => !item.isHide)\n})\n\nconst showContainer = computed(() => {\n return props.leftText || processedBtnLeft.value.length > 0 || processedBtnRight.value.length > 0\n})\n\nconst getDisabledState = (item: Record<string, unknown>) => {\n if (typeof item.disabled === 'function') {\n return item.disabled()\n }\n return item.disabled || false\n}\n\nconst buttonContainerStyle = (index: number) => {\n return {\n display: 'inline-block',\n marginLeft: index !== 0 ? '8px' : '0px'\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.btns {\n padding: 0;\n padding-bottom: 5px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.left-text {\n color: rgb(125, 125, 125);\n font-size: 14px;\n // flex-grow: 1;\n}\n\n.btn-container_block {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex: 1;\n\n .btn-left {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n }\n\n .btn-right {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n flex-wrap: wrap;\n }\n}\n\n@media (max-width: 768px) {\n .btns {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .btn-container_block {\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n\n .btn-left,\n .btn-right {\n width: 100%;\n justify-content: flex-start;\n }\n }\n}\n</style>\n","import { ref, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\nexport function useTableResize(\n tableContainerRef: { value: HTMLElement | null },\n headBarRef: { value: HTMLElement | null },\n tbBtnRef: { value: { $el?: HTMLElement } | null },\n paginationRef: { value: HTMLElement | null },\n options: { heightType?: 'auto' | 'height'; tabHeight?: number | string }\n) {\n const tableHeight = ref(400)\n const observer = ref<ResizeObserver | null>(null)\n\n const isNegative = (num: number) => Math.sign(num) === -1\n\n const totalContainerNum = () => {\n const headBarHeight = headBarRef.value?.offsetHeight || 0\n const tbBtnHeight = tbBtnRef.value?.$el?.offsetHeight || 0\n const paginationHeight = paginationRef.value?.offsetHeight || 0\n return Math.round(paginationHeight + headBarHeight + tbBtnHeight)\n }\n\n const resizeObservers = () => {\n const element = tableContainerRef.value\n if (!element) return\n\n const containerHeight = typeof options.tabHeight === 'number'\n ? options.tabHeight\n : options.heightType === 'height'\n ? (element.parentElement?.offsetHeight || element.offsetHeight)\n : (parseInt(options.tabHeight as string, 10) || 450)\n\n const maxContainer = !isNaN(containerHeight) ? containerHeight : 450\n const minTableNum = maxContainer - totalContainerNum()\n const tabContainer = isNegative(minTableNum) ? totalContainerNum() + 300 : maxContainer\n\n const paginationHeight = paginationRef.value?.offsetHeight || 0\n const headBarHeight = headBarRef.value?.offsetHeight || 0\n const tbBtnHeight = tbBtnRef.value?.$el?.offsetHeight || 0\n\n const newHeight = Math.floor(tabContainer) - Math.round(paginationHeight + headBarHeight + tbBtnHeight)\n if (tableHeight.value !== newHeight) {\n tableHeight.value = newHeight\n }\n }\n\n const startObserver = () => {\n nextTick(() => {\n if (!tableContainerRef.value || typeof ResizeObserver === 'undefined') return\n\n observer.value = new ResizeObserver(() => {\n requestAnimationFrame(() => {\n if (tableContainerRef.value) resizeObservers()\n })\n })\n\n // Observe the main container\n const target = options.heightType === 'height'\n ? tableContainerRef.value.parentElement || tableContainerRef.value\n : tableContainerRef.value\n observer.value.observe(target)\n\n // Observe headBarRef to detect form expand/collapse height changes\n if (headBarRef.value) {\n observer.value.observe(headBarRef.value)\n }\n })\n }\n\n const stopObserver = () => {\n if (observer.value) {\n observer.value.disconnect()\n observer.value = null\n }\n }\n\n onMounted(() => startObserver())\n onBeforeUnmount(() => stopObserver())\n\n return {\n tableHeight,\n resizeObservers,\n startObserver,\n stopObserver\n }\n}\n","import { ref, nextTick } from 'vue'\n\nexport function useTableSelection(rowkey?: string) {\n const multipleSelection = ref<Record<string, unknown>[]>([])\n const selectionsByPage = ref<Record<number, Record<string, unknown>[]>>({})\n const isInitChange = ref(false)\n\n const handleSelectionChange = (val: Record<string, unknown>[], currentPage: number) => {\n if (rowkey) {\n if (isInitChange.value) return\n selectionsByPage.value[currentPage] = val\n let allSelections: Record<string, unknown>[] = []\n const uniqueMap: Record<string, boolean> = {}\n\n Object.values(selectionsByPage.value).forEach((pageSelections) => {\n pageSelections.forEach((item) => {\n const key = item[rowkey] as string\n if (key && !uniqueMap[key]) {\n allSelections.push(item)\n uniqueMap[key] = true\n }\n })\n })\n\n multipleSelection.value = allSelections\n } else {\n multipleSelection.value = val\n }\n }\n\n const handleSelectData = (dataList: Record<string, unknown>[], tableRef: { toggleRowSelection?: (row: Record<string, unknown>, selected: boolean) => void }) => {\n if (dataList?.length && rowkey && multipleSelection.value.length) {\n const pageSelecteds: Record<string, unknown>[] = []\n dataList.forEach((row) => {\n multipleSelection.value.forEach((selectedRow) => {\n if (row[rowkey] === selectedRow[rowkey]) {\n pageSelecteds.push(row)\n }\n })\n })\n\n pageSelecteds.forEach((row) => {\n tableRef.toggleRowSelection?.(row, true)\n })\n }\n }\n\n const clearAllSelection = (tableRef: { clearSelection?: () => void }) => {\n multipleSelection.value = []\n selectionsByPage.value = {}\n tableRef.clearSelection?.()\n }\n\n const initSelection = (dataList: Record<string, unknown>[], tableRef: { toggleRowSelection?: (row: Record<string, unknown>, selected: boolean) => void; clearSelection?: () => void } | null) => {\n isInitChange.value = true\n if (!tableRef) {\n isInitChange.value = false\n return\n }\n if (rowkey) {\n nextTick(() => {\n handleSelectData(dataList, tableRef)\n isInitChange.value = false\n })\n } else {\n nextTick(() => {\n tableRef.clearSelection?.()\n isInitChange.value = false\n })\n }\n }\n\n return {\n multipleSelection,\n selectionsByPage,\n isInitChange,\n handleSelectionChange,\n handleSelectData,\n clearAllSelection,\n initSelection\n }\n}\n","export const isObject = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && value !== null && Object.prototype.toString.call(value) === '[object Object]'\n}\n\nexport const isArray = (value: unknown): value is unknown[] => {\n return Array.isArray(value)\n}\n\nexport const isFunction = (value: unknown): value is Function => {\n return typeof value === 'function'\n}\n\nexport const isString = (value: unknown): value is string => {\n return typeof value === 'string'\n}\n\nexport const isNumber = (value: unknown): value is number => {\n return typeof value === 'number' && !isNaN(value)\n}\n\nexport const isEmpty = (value: unknown): boolean => {\n if (value == null) return true\n if (isArray(value)) return value.length === 0\n if (isObject(value)) return Object.keys(value).length === 0\n return false\n}\n\nexport const firstWordUpperCase = (str: string): string => {\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n}\n\nexport const kebabToCamel = (str: string): string => {\n return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase())\n}\n\nexport const toPascalCase = (str: string): string => {\n return str.replace(/(^|-)([a-z])/g, (_, __, letter) => letter.toUpperCase())\n}\n\nexport const findValueByKey = (obj: Record<string, unknown>, key: string, depth = 0): unknown => {\n if (depth > 3) return undefined\n if (!isObject(obj)) return undefined\n\n const currentValue = Object.prototype.hasOwnProperty.call(obj, key) ? obj[key] : undefined\n\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop) && isObject(obj[prop])) {\n const deepValue = findValueByKey(obj[prop] as Record<string, unknown>, key, depth + 1)\n if (deepValue !== undefined) return deepValue\n }\n }\n return currentValue\n}\n\nexport const wrapPromise = <T>(promise: Promise<T>): Promise<{ status: 'fulfilled'; value: T } | { status: 'rejected'; reason: unknown }> => {\n return promise\n .then((value) => ({ status: 'fulfilled' as const, value }))\n .catch((reason) => ({ status: 'rejected' as const, reason }))\n}\n","<template>\n <el-config-provider :locale=\"locale\">\n <div :ref=\"setTableContainer\" class=\"table_component\" :style=\"{ [heightType]: tabHeight }\">\n <div class=\"table_containers\">\n <div\n v-if=\"showHeaderBar\"\n ref=\"headBarRef\"\n class=\"btn-slot\"\n :style=\"slotStyles.value && slotStyles.type === 'object' && slotStyles.value\"\n :class=\"slotStyles.type === 'string' ? slotStyles.value : { slotClass: slotState && slotStyles.type !== 'object' }\"\n >\n <div class=\"headerBar\" v-if=\"hasDefaultSlot\" :style=\"{ paddingBottom: hasDefaultSlot ? '10px' : '0px' }\">\n <slot />\n </div>\n </div>\n <div v-loading=\"loadStatus\" element-loading-background=\"rgba(0, 0, 0, 0.03)\" element-loading-text=\"努力加载中...\" class=\"page-loading-con tableContainer\">\n <div class=\"table_inner_containers\">\n <table-btns\n ref=\"tbBtnRef\"\n :instance=\"{ tableRef: instance, formInstance: formInstance }\"\n v-if=\"(options.configBtn && options.configBtn.length) || options.leftText\"\n :btn-config=\"options.configBtn\"\n :left-text=\"options.leftText\"\n />\n <el-table\n class=\"el-dp_tables\"\n :id=\"tableId\"\n :key=\"tableId\"\n ref=\"tableRef\"\n style=\"width: 100%\"\n v-bind=\"tableBindAttrs\"\n :data=\"dataSource\"\n @sort-change=\"changeTableSort\"\n @selection-change=\"handleTableSelectionChange\"\n >\n <template #empty>\n <div class=\"ant-empty ant-empty-normal\">\n <div class=\"ant-empty-image\">\n <svg class=\"ant-empty-img-simple\" width=\"64\" height=\"41\" viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(0 1)\" fill=\"none\" fill-rule=\"evenodd\">\n <ellipse class=\"ant-empty-img-simple-ellipse\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\" />\n <g class=\"ant-empty-img-simple-g\" fill-rule=\"nonzero\">\n <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\" />\n <path d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\" class=\"ant-empty-img-simple-path\" />\n </g>\n </g>\n </svg>\n </div>\n <div class=\"ant-empty-description\">暂无数据</div>\n </div>\n </template>\n <column-item v-for=\"(cols, index) in filteredColumns\" :key=\"cols.prop || cols.key || index\" :cols=\"{ ...cols, columnIndex: index }\">\n <template v-if=\"cols.scopedSlots && cols.scopedSlots.customRender\" #[cols.scopedSlots.customRender]=\"{ scope }\">\n <slot v-bind=\"{ ...cols, columnIndex: index, row: scope.row, column: scope.column }\" :name=\"cols.scopedSlots.customRender\" :scope=\"scope\" />\n </template>\n </column-item>\n </el-table>\n </div>\n <div\n v-if=\"showPagination\"\n ref=\"paginationRef\"\n class=\"pagination_page\"\n :style=\"{\n position: heightType === 'height' ? 'absolute' : 'static',\n bottom: '0px',\n left: '0px',\n zIndex: 5,\n background: '#fff'\n }\"\n >\n <el-pagination\n background\n :size=\"paginationConfig.size\"\n :total=\"paginationConfig.total\"\n v-model:page-size=\"paginationConfig.pageSize\"\n :page-sizes=\"paginationConfig.pageSizes\"\n v-model:current-page=\"paginationConfig.current\"\n :layout=\"layout\"\n style=\"padding: 0; margin: 10px 0; text-align: center\"\n @size-change=\"handleSizeChange\"\n @current-change=\"handleIndexChange\"\n />\n </div>\n </div>\n </div>\n </div>\n </el-config-provider>\n</template>\n\n<script lang=\"ts\">\nimport type { TableOptions } from '../../../types'\n\nconst defaultOptions: TableOptions = {\n multiSelect: false,\n expand: false,\n snIndex: false,\n loading: false,\n border: false,\n size: 'small',\n headerCellStyle: { background: '#f5f7fa' },\n highlightCurrentRow: true,\n cachePageSelection: true\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, inject, getCurrentInstance, provide, toRaw, unref, h, onMounted, useAttrs } from 'vue'\nimport { ElTable, ElConfigProvider, ElPagination, vLoading, ElButton } from 'element-plus'\nimport zhCn from 'element-plus/es/locale/lang/zh-cn'\nimport ColumnItem from './column-item.vue'\nimport TableBtns from './table-btns.vue'\nimport { useTableResize } from '../../../composables/use-table-resize'\nimport { useTableSelection } from '../../../composables/use-table-selection'\nimport { isObject, findValueByKey } from '../../../utils/shared'\nimport type { TableColumn, PaginationConfig } from '../../../types'\n\nconst props = withDefaults(\n defineProps<{\n initTabHeight?: number\n headBarClass?: string | Record<string, unknown>\n showHeaderBar?: boolean\n dataSource: Record<string, unknown>[]\n columns: TableColumn[]\n options?: TableOptions\n pagination?: PaginationConfig\n }>(),\n {\n initTabHeight: 400,\n showHeaderBar: true,\n dataSource: () => [],\n columns: () => [],\n options: () => ({ ...defaultOptions }),\n pagination: () => ({})\n }\n)\n\nconst emit = defineEmits<{\n 'update:dataSource': [data: Record<string, unknown>[]]\n 'update:pagination': [pagination: PaginationConfig]\n 'pagination-current-change': [pagination: PaginationConfig]\n 'size-change': [pagination: PaginationConfig, size: number]\n 'change-table-sort': [column: Record<string, unknown>]\n}>()\n\nconst slots = defineSlots<{\n default?: () => any\n}>()\n\nconst locale = ref(zhCn)\nconst injectedLocale = inject('elLocale', null)\nif (injectedLocale) {\n locale.value = injectedLocale as any\n}\n\nconst instance = getCurrentInstance() || {}\nconst $esPlusTable = inject<Record<string, unknown>>('$esPlusTable', {})\n\n// Refs\nconst tableRef = ref<any>(null)\nconst tbBtnRef = ref<any>(null)\nconst headBarRef = ref<HTMLElement | null>(null)\nconst paginationRef = ref<HTMLElement | null>(null)\nconst tableContainerRef = ref<HTMLElement | null>(null)\nconst tableId = ref(`table_${Math.random().toString(36).substring(2, 12)}`)\nconst tableData = ref<Record<string, unknown>[]>([])\nconst columnRowList = ref<TableColumn[]>([...props.columns])\n\nwatch(\n () => props.columns,\n (val) => {\n columnRowList.value = [...val]\n },\n { deep: true }\n)\nconst loadingStatus = ref(false)\nconst slotState = ref(false)\nconst showPagination = ref(false)\n\nconst setTableContainer = (el: HTMLElement | null) => {\n if (el) tableContainerRef.value = el\n}\n\n// 保留与 Form 的耦合\nconst bodyFormInstance = inject<(inst: unknown) => void>('bodyFormInstance', () => {})\nconst getVisibleShow = inject<(() => boolean) | boolean>('getVisibleShow', false)\n\nconst visibleShow = computed(() => (typeof getVisibleShow === 'function' ? getVisibleShow() : getVisibleShow))\n\nconst paginationConfig = ref<PaginationConfig>({\n pageSize: 10,\n current: 1,\n total: 0,\n pageSizes: [],\n size: 'small',\n isSmall: true,\n ...props.pagination\n})\n\nconst formInstance = ref<unknown>(null)\n\n// 计算属性\nconst getListEntry = computed(() => {\n if (props.options.entryQuery && isObject(props.options.entryQuery) && Object.keys(props.options.entryQuery).length) {\n return props.options.entryQuery\n }\n return {}\n})\n\nconst configTableField = computed(() => {\n if (\n props.options.configTableOut &&\n isObject(props.options.configTableOut) &&\n Object.keys(props.options.configTableOut).length &&\n checkQueryFields(props.options.configTableOut)\n ) {\n return props.options.configTableOut\n }\n\n if ($esPlusTable?.configQueryFieldOutput && typeof $esPlusTable.configQueryFieldOutput === 'function') {\n const configFields = ($esPlusTable.configQueryFieldOutput as Function)({\n total: 'records',\n pageSize: 'pageSize',\n current: 'pageNo',\n tableData: 'rows'\n })\n if (checkQueryFields(configFields)) return configFields\n }\n\n return {\n total: 'records',\n pageSize: 'pageSize',\n current: 'pageNo',\n tableData: 'rows'\n }\n})\n\nconst isFormInstance = computed(() => {\n const defaultSlots = instance?.slots?.default?.() || []\n const formVNode = defaultSlots.find((vnode: any) => {\n const type = vnode.type\n return type?.name === 'EsForm' || type?.displayName === 'EsForm'\n })\n if (formVNode && formVNode.props?.ref) {\n formInstance.value = formVNode.ctx?.refs[formVNode.props.ref]\n bodyFormInstance(formInstance.value)\n }\n return formVNode || {}\n})\n\nconst hasDefaultSlot = computed(() => !!slots.default?.())\nconst heightType = computed(() => props.options.heightType || 'auto')\nconst tabHeight = computed(() => {\n if (typeof props.options.tabHeight === 'number') {\n return `${props.options.tabHeight}px`\n }\n if (heightType.value === 'height' && typeof props.options.height === 'number') {\n return `${props.options.height}px`\n }\n return '100%'\n})\n\nconst slotStyles = computed(() => {\n if (props.headBarClass) {\n return {\n type: typeof props.headBarClass === 'string' ? 'string' : 'object',\n value: props.headBarClass\n }\n }\n return { type: 'string', value: '' }\n})\n\nconst layout = computed(() => 'prev, pager, next, jumper, sizes, ->, total')\nconst loadStatus = computed(() => props.options.loading || loadingStatus.value)\nconst isRequestConf = computed(() => !!props.options.actionUrl || (props.options.apiParams && isObject(props.options.apiParams) && Object.keys(props.options.apiParams).length > 0))\nconst isHttpRequest = computed(() => !!props.options?.httpRequest && typeof props.options.httpRequest === 'function')\n\nconst filteredColumns = computed(() => {\n const list = columnRowList.value.filter((item) => !item.hidCol)\n list.forEach((el) => {\n if (el.prop !== 'operate' && el.key !== 'operate' && (el.prop || el.key) && !el.formatter) {\n el.formatter = (row: Record<string, unknown>) => {\n const value = row[el.prop as string] || row[el.key as string]\n if (value == null || value === '') {\n return el.emptyPlaceholder || '-'\n }\n return value\n }\n }\n\n if ((el.prop === 'operate' || el.key === 'operate') && el.btns && !el.render) {\n el.render = (_h: any, { row }: { row: Record<string, unknown> }) => {\n return h('div', [\n el.btns?.map((btn: any) =>\n h(ElButton, {\n onClick: () => btn.clickEvent?.(row),\n text: true,\n type: btn.type || 'primary'\n }, () => btn.name)\n )\n ])\n }\n }\n })\n return list\n})\n\n// es-table 内部选项键,不应传递给 el-table\nconst TABLE_INTERNAL_KEYS = new Set([\n 'multiSelect', 'expand', 'snIndex', 'loading', 'cachePageSelection',\n 'httpRequest', 'configTableOut', 'listenToCallBack',\n 'apiParams', 'actionUrl', 'heightType', 'tabHeight',\n 'isInitRun', 'entryQuery', 'configBtn', 'leftText', 'rowkey'\n])\n\nconst tableAttrs = computed(() => {\n const merged = columnBindAttr({ ...defaultOptions, ...props.options })\n const { align, ...rest } = merged\n const result: Record<string, unknown> = {}\n for (const key in rest) {\n if (!TABLE_INTERNAL_KEYS.has(key)) {\n result[key] = rest[key]\n }\n }\n return result\n})\n\n// 合并 options attrs 和父级 fallthrough attrs,供 el-table 使用\nconst fallthroughAttrs = useAttrs()\nconst tableBindAttrs = computed(() => {\n const result: Record<string, unknown> = { ...tableAttrs.value, ...fallthroughAttrs }\n if (props.options.rowkey) {\n result.rowKey = props.options.rowkey\n }\n if (heightType.value === 'height') {\n result.height = tableHeight.value\n } else if (heightType.value === 'maxHeight') {\n result.maxHeight = tableHeight.value\n }\n return result\n})\n\n// 使用原生 ResizeObserver\nconst { tableHeight, resizeObservers } = useTableResize(\n tableContainerRef,\n headBarRef,\n tbBtnRef,\n paginationRef,\n { heightType: heightType.value, tabHeight: props.options.tabHeight }\n)\n\nwatch(\n visibleShow,\n async (val, oldVal) => {\n if (val && val !== oldVal) {\n if (props.options.actionUrl) {\n await httpRequestInstance()\n }\n tableRef.value?.doLayout?.()\n }\n }\n)\n\nwatch(\n () => props.pagination,\n (val) => {\n paginationConfig.value = { ...paginationConfig.value, ...val }\n showPagination.value = val.total !== undefined\n },\n { deep: true, immediate: true }\n)\n\nwatch(\n () => props.dataSource,\n (val) => {\n initSelection(val, tableRef.value)\n },\n { deep: true }\n)\n\nwatch(\n tableData,\n (val) => {\n if (Array.isArray(val)) {\n emit('update:dataSource', val)\n }\n },\n { deep: true }\n)\n\n// 配置化接口请求时,挂载自动加载数据\nonMounted(() => {\n if (isRequestConf.value && props.options.isInitRun !== false) {\n httpRequestInstance()\n }\n})\n\n// 表格选择逻辑\nconst { multipleSelection, handleSelectionChange, initSelection, clearAllSelection } = useTableSelection(props.options.rowkey)\n\nconst handleTableSelectionChange = (val: Record<string, unknown>[]) => {\n handleSelectionChange(val, paginationConfig.value.current || 1)\n}\n\n// 请求逻辑\nconst checkQueryFields = (obj: Record<string, unknown>): boolean => {\n const checkListKey = ['total', 'pageSize', 'current', 'tableData']\n if (isObject(obj)) {\n return Object.keys(obj).every((it) => {\n return checkListKey.find((its) => its === it) && obj[it] && typeof obj[it] === 'string'\n })\n }\n return false\n}\n\nconst getListenToCallBack = (eventName: string, params: unknown) => {\n const eventNameList = [\n { eventName: 'brcb', isReturn: true },\n { eventName: 'qrcb', isReturn: true }\n ]\n const hasEventNameIndex = eventNameList.findIndex((it) => it.eventName === eventName)\n if (props.options.listenToCallBack && props.options.listenToCallBack[eventName] && hasEventNameIndex !== -1) {\n const callObj = eventNameList[hasEventNameIndex]\n if (callObj.isReturn) {\n return props.options.listenToCallBack[eventName](params)\n }\n }\n}\n\nconst formatConfigOut = (row: Record<string, unknown>, keyList: string[]) => {\n if (isObject(configTableField.value) && Object.keys(configTableField.value).length) {\n Object.entries(configTableField.value).forEach(([key, value]) => {\n const isKeyUsed = keyList.includes(key)\n if (!isKeyUsed) return\n\n const rowData = row[value as string] ?? findValueByKey(row, value as string)\n if (key === 'tableData') {\n tableData.value = Array.isArray(rowData) ? rowData : []\n } else {\n paginationConfig.value[key as keyof PaginationConfig] = typeof rowData === 'number' ? rowData : parseInt(rowData as string, 10) || 0\n }\n })\n }\n}\n\nconst queryTableListMethod = (params: Record<string, unknown>, options: { success?: (res: Record<string, unknown>) => void; fail?: (err: unknown) => void } = {}) => {\n const { success, fail } = options\n const apiParams = props.options?.apiParams || {}\n const url = props.options?.actionUrl || apiParams.url || ''\n\n if (!url || !Object.keys(apiParams).length) return\n\n const formData = Object.keys(isFormInstance.value).length\n ? toRaw(unref((isFormInstance.value as any).props.model))\n : getListEntry.value || {}\n\n\n const fnParams = getListenToCallBack('brcb', { ...formData, ...params, ...toRaw(unref(apiParams.model || {})) })\n const finalParams = isObject(fnParams) ? fnParams : { ...formData, ...toRaw(unref(apiParams.model || {})), ...params }\n const requestOption = { ...toRaw(unref(apiParams.options || {})) }\n if (apiParams?.method) {\n requestOption.method = apiParams?.method\n }\n\n const requestHandler = async (requestFn: Function) => {\n if (loadingStatus.value) return\n loadingStatus.value = true\n console.log('formData///', finalParams)\n try {\n const res = await requestFn({\n url,\n formParams: finalParams,\n headers: apiParams.headers || {},\n ...requestOption,\n ...params\n })\n const responseData = getListenToCallBack('qrcb', res) || res\n if (isObject(res) && Object.keys(res).length && typeof success === 'function') {\n success(responseData as Record<string, unknown>)\n }\n } catch (e) {\n if (typeof fail === 'function') {\n fail(e)\n }\n } finally {\n loadingStatus.value = false\n }\n }\n\n if (props.options.httpRequest) {\n requestHandler(props.options.httpRequest)\n } else if ($esPlusTable.$httpRequest) {\n requestHandler($esPlusTable.$httpRequest as Function)\n }\n}\n\nconst httpRequestInstance = (model?: Record<string, unknown>) => {\n return new Promise((resolve, reject) => {\n paginationConfig.value.current = 1\n queryTableListMethod(\n { ...(model || {}), pageIndex: paginationConfig.value.current, pageSize: paginationConfig.value.pageSize },\n {\n success: (res) => {\n formatConfigOut(res, ['total', 'tableData'])\n if (Object.keys(props.pagination).length) {\n emit('update:pagination', paginationConfig.value)\n }\n resolve(res)\n },\n fail: (err) => {\n reject(err)\n }\n }\n )\n })\n}\n\nconst changePageIndexRequest = () => {\n queryTableListMethod(\n { pageIndex: paginationConfig.value.current, pageSize: paginationConfig.value.pageSize },\n {\n success: (res) => {\n formatConfigOut(res, ['total', 'tableData'])\n emit('update:pagination', paginationConfig.value)\n emit('pagination-current-change', paginationConfig.value)\n }\n }\n )\n}\n\nconst changePageSizeRequest = () => {\n queryTableListMethod(\n { pageIndex: paginationConfig.value.current, pageSize: paginationConfig.value.pageSize },\n {\n success: (res) => {\n formatConfigOut(res, ['total', 'tableData'])\n emit('update:pagination', paginationConfig.value)\n }\n }\n )\n}\n\nconst handleSizeChange = (size: number) => {\n paginationConfig.value.pageSize = size\n paginationConfig.value.current = 1\n if (isRequestConf.value) {\n changePageSizeRequest()\n } else {\n emit('update:pagination', paginationConfig.value)\n emit('size-change', paginationConfig.value, size)\n }\n}\n\nconst handleIndexChange = (val: number) => {\n paginationConfig.value.current = val\n if (isRequestConf.value) {\n console.log('indexPages//', val)\n changePageIndexRequest()\n } else {\n emit('update:pagination', paginationConfig.value)\n emit('pagination-current-change', paginationConfig.value)\n }\n}\n\nconst changeTableSort = (column: Record<string, unknown>) => {\n emit('change-table-sort', column)\n}\n\nconst firstWordUpperCase = (str: string): string => {\n return str.toLowerCase().replace(/(\\s|^)[a-z]/g, (char) => char.toUpperCase())\n}\n\nconst columnBindAttr = (cols: Record<string, unknown>) => {\n const options: Record<string, unknown> = {}\n for (const t in cols) {\n if (t === 'groups' || t === 'scopedSlots' || t === 'render') continue\n\n if (t.includes('-')) {\n const parts = t.split('-')\n let newkey = parts[0]\n for (let j = 1; j < parts.length; j++) {\n newkey += firstWordUpperCase(parts[j])\n }\n options[newkey] = cols[t]\n } else if (t === 'key') {\n options.prop = cols[t]\n options[t] = cols[t]\n } else {\n options[t] = cols[t]\n }\n }\n\n if (!options.align) {\n options.align = 'center'\n }\n\n return options\n}\n\n// 提供表格实例给子组件(保留与 Form 的耦合)\nprovide('getTableInstantce', () => ({\n ...(instance?.setupState || {}),\n tableRef,\n toggleSelection: (rows: Record<string, unknown>[]) => {\n if (rows) {\n rows.forEach((row) => {\n tableRef.value?.toggleRowSelection(row)\n })\n } else {\n tableRef.value?.clearSelection()\n }\n },\n clearAllSelection: () => clearAllSelection(tableRef.value),\n refsInstance: () => tableRef.value,\n httpRequestInstance\n}))\n\n// 暴露方法\ndefineExpose({\n httpRequestInstance,\n getSelectionRows: () => multipleSelection.value,\n clearSelection: () => tableRef.value?.clearSelection?.(),\n clearAllSelection: () => clearAllSelection(tableRef.value),\n refresh: () => tableRef.value?.doLayout?.()\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.el-dp_tables {\n height: auto;\n :deep(.el-table__body-wrapper) {\n height: auto;\n }\n}\n\n.table_component {\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n overflow: hidden;\n}\n\n.table_containers {\n flex: 1;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n align-items: flex-start;\n position: relative;\n}\n\n.pagination_page {\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.btn-slot {\n width: 100%;\n\n .headerBar {\n box-sizing: border-box;\n background-color: #fff;\n border-radius: 6px;\n\n :deep(.el-form-item--small .el-form-item__label) {\n box-sizing: border-box;\n }\n }\n}\n\n.tableContainer {\n border-radius: 0px;\n transition: all 1.5s;\n flex: 1;\n width: 100%;\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n align-items: flex-start;\n\n .table_inner_containers {\n width: 100%;\n }\n\n :deep(.el-table__empty-block) {\n width: 100% !important;\n margin: 32px 0;\n font-size: 14px;\n line-height: 1.5715;\n\n .el-table__empty-text {\n width: auto !important;\n }\n\n .ant-empty-image {\n height: 40px;\n margin-bottom: 8px;\n\n .ant-empty-img-simple-ellipse {\n fill: #f5f5f5;\n }\n\n .ant-empty-img-simple-g {\n stroke: #d9d9d9;\n }\n\n .ant-empty-img-simple-path {\n fill: #fafafa;\n }\n }\n\n .ant-empty-description {\n line-height: 1.5715;\n color: rgba(0, 0, 0, 0.25);\n }\n }\n\n :deep(.el-tag) {\n height: 20px;\n padding: 0 7px;\n line-height: 20px;\n background: #fafafa;\n border: none;\n border-radius: 4px;\n\n &.el-tag--info {\n color: rgba(0, 0, 0, 0.85);\n }\n\n &.el-tag--success {\n color: #52c41a;\n background: #f6ffed;\n border-color: #b7eb8f;\n }\n }\n}\n</style>\n","import EsTable from './src/component.vue'\n\nEsTable.install = function (app: any) {\n app.component(EsTable.name, EsTable)\n}\nEsTable.isPlugin = true\nEsTable.Plugin = {\n install(app: any, options: any = {}) {\n app.provide('$esPlusTable', {\n ...(options.methods || {})\n })\n app.component(EsTable.name, { ...EsTable, methods: { ...EsTable.methods, ...(options.methods || {}) } })\n }\n}\nexport default EsTable\n","import { h } from 'vue'\nimport {\n ElInput,\n ElSelect,\n ElOption,\n ElDatePicker,\n ElTimePicker,\n ElSlider,\n ElColorPicker,\n ElTransfer,\n ElCascader,\n ElRadioGroup,\n ElRadio,\n ElCheckboxGroup,\n ElCheckbox,\n ElSwitch,\n ElRate,\n ElUpload\n} from 'element-plus'\nimport type { FormItemOption } from '../types'\n\n// 支持嵌套属性路径的取值和赋值\nconst getNestedValue = (obj: Record<string, unknown>, path: string): unknown => {\n const keys = path.split(/\\.|\\[|\\]/).filter(Boolean)\n let result = obj\n for (const key of keys) {\n if (result == null) return undefined\n result = result[key] as Record<string, unknown>\n }\n return result\n}\n\nconst setNestedValue = (obj: Record<string, unknown>, path: string, value: unknown): void => {\n const keys = path.split(/\\.|\\[|\\]/).filter(Boolean)\n const lastKey = keys.pop()\n let current: Record<string, unknown> = obj\n for (const key of keys) {\n if (current[key] == null) {\n current[key] = {}\n }\n current = current[key] as Record<string, unknown>\n }\n if (lastKey) {\n current[lastKey] = value\n }\n}\n\nexport function useFormInputs() {\n const formInputComponents = (item: FormItemOption) => {\n const formPutList = new Map([\n [\n 'Input',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElInput, {\n modelValue: getNestedValue(model, row.prop),\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'Select',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(\n ElSelect,\n {\n modelValue: getNestedValue(model, row.prop),\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n },\n () =>\n row.dataOptions?.map((opt, idx) =>\n hFn(ElOption, { key: idx, value: opt.value, label: opt.label })\n )\n )\n }\n ],\n [\n 'datePicker',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElDatePicker, {\n modelValue: getNestedValue(model, row.prop),\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'timePicker',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElTimePicker, {\n modelValue: getNestedValue(model, row.prop),\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'Slider',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElSlider, {\n modelValue: getNestedValue(model, row.prop) as number,\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'ColorPicker',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElColorPicker, {\n modelValue: getNestedValue(model, row.prop) as string,\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'Transfer',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElTransfer, {\n modelValue: getNestedValue(model, row.prop) as unknown[],\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'Cascader',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElCascader, {\n modelValue: getNestedValue(model, row.prop) as unknown[],\n options: row.dataOptions,\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'Radio',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(\n ElRadioGroup,\n {\n modelValue: getNestedValue(model, row.prop),\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n },\n () =>\n row.dataOptions?.map((opt, idx) =>\n hFn(ElRadio, { key: idx, value: opt.value }, () => opt.label)\n )\n )\n }\n ],\n [\n 'Checkbox',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(\n ElCheckboxGroup,\n {\n modelValue: getNestedValue(model, row.prop) as unknown[],\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n },\n () =>\n row.dataOptions?.map((opt, idx) =>\n hFn(ElCheckbox, { key: idx, value: opt.value }, () => opt.label)\n )\n )\n }\n ],\n [\n 'Switch',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElSwitch, {\n modelValue: getNestedValue(model, row.prop) as boolean,\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'Rate',\n (hFn: typeof h, model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n return hFn(ElRate, {\n modelValue: getNestedValue(model, row.prop) as number,\n ...row.attrs,\n ...row.on,\n 'onUpdate:modelValue': (val: unknown) => {\n setNestedValue(model, row.prop, val)\n }\n })\n }\n ],\n [\n 'Upload',\n (hFn: typeof h, _model: Record<string, unknown>, { row }: { row: FormItemOption }) => {\n const { props: uploadProps, httpRequest, triggerRender, fileRender, ...restRow } = row as FormItemOption & {\n props?: Record<string, unknown>\n httpRequest?: (options: Record<string, unknown>) => Promise<unknown>\n triggerRender?: (h: typeof hFn) => ReturnType<typeof hFn>\n fileRender?: (h: typeof hFn, file: Record<string, unknown>, onRemove: () => void) => ReturnType<typeof hFn>\n }\n\n let uploadInstance: { handleRemove: (file: Record<string, unknown>) => void } | null = null\n\n // 构建 ElUpload 属性\n const elUploadProps: Record<string, unknown> = {\n ...uploadProps, // props 中的配置:action, accept, listType, limit, multiple 等\n ...restRow.attrs, // attrs 中的配置(兼容两种方式)\n ref: (el: { handleRemove: (file: Record<string, unknown>) => void } | null) => {\n uploadInstance = el\n }\n }\n\n // 将 on 中的事件转换为 Vue 3 h() 需要的 onXxx 格式\n if (restRow.on) {\n for (const [key, handler] of Object.entries(restRow.on)) {\n elUploadProps[`on${key.charAt(0).toUpperCase()}${key.slice(1)}`] = handler\n }\n }\n\n // 合并 httpRequest(优先用表单项配置的,其次用 props 中的)\n if (httpRequest) {\n elUploadProps['http-request'] = httpRequest\n }\n\n // Vue 3 h() 的 slots 参数:通过第三个参数传递命名插槽\n const slots: Record<string, (...args: unknown[]) => ReturnType<typeof hFn>> = {}\n\n // #trigger / #default 插槽\n if (triggerRender) {\n const listType = elUploadProps['listType'] || elUploadProps['list-type']\n if (listType === 'picture-card') {\n slots.trigger = () => triggerRender(hFn)\n } else {\n slots.default = () => triggerRender(hFn)\n }\n }\n\n // #file 插槽:自定义文件列表项渲染\n if (fileRender) {\n slots.file = ({ file }: { file: Record<string, unknown> }) => {\n return fileRender(hFn, file, () => {\n uploadInstance?.handleRemove(file)\n })\n }\n }\n\n return hFn(ElUpload, elUploadProps, slots)\n }\n ]\n ])\n return formPutList.get(item.formtype) || (() => null)\n }\n\n return { formInputComponents }\n}\n","import { computed, ref, watch } from 'vue'\nimport type { FormItemOption, LayoutFormProps } from '../types'\n\nexport function useFormLayout(props: { layoutFormProps?: LayoutFormProps; formItemList: FormItemOption[] }) {\n const folded = ref(false)\n\n const isBtnHidden = computed(() => props.layoutFormProps?.fromLayProps?.isBtnHidden ?? false)\n\n const rowLayout = computed(() => props.layoutFormProps?.rowLayProps || { gutter: 20 })\n\n const formLayout = computed(() => props.layoutFormProps?.fromLayProps || {})\n\n const getSetOptionsStatus = computed(() => props.layoutFormProps?.setOptions)\n\n const getRowColsAlgorithm = computed(() => {\n let pre = 0\n const groupArrayList: FormItemOption[][] = []\n const columnRows: { statIndex: number; endIndex: number }[] = []\n const formItems = props.formItemList\n\n for (let i = 0; i < formItems.length; i++) {\n const item = formItems[i]\n pre += item.span || 6\n if (pre > 24) {\n const statIndex = columnRows.length ? columnRows[columnRows.length - 1].endIndex : 0\n columnRows.push({ statIndex, endIndex: i })\n pre = item.span || 6\n if (i === formItems.length - 1) {\n columnRows.push({ statIndex: i, endIndex: i + 1 })\n }\n } else {\n if (i === formItems.length - 1) {\n const statIndex = columnRows.length ? columnRows[columnRows.length - 1].endIndex : 0\n columnRows.push({ statIndex, endIndex: i + 1 })\n } else if (pre === 24) {\n const statIndex = columnRows.length ? columnRows[columnRows.length - 1].endIndex : 0\n columnRows.push({ statIndex, endIndex: i + 1 })\n pre = 0\n }\n }\n }\n\n columnRows.forEach((it) => {\n groupArrayList.push(formItems.slice(it.statIndex, it.endIndex))\n })\n\n const columRowIndexs = groupArrayList.map((it) => {\n return it.map(() => 0)\n })\n\n let rowColIndex = -1\n columRowIndexs.forEach((row) => {\n row.forEach((_, idx) => {\n row[idx] = (rowColIndex += 1)\n })\n })\n\n return {\n columnRow: columRowIndexs,\n rowNum: columRowIndexs.length,\n columnNodeIndex: columRowIndexs.map((it) => it[it.length - 1])\n }\n })\n\n const isFold = computed(() => {\n const minFoldRow = props.layoutFormProps?.fromLayProps?.minFoldRows || 0\n return minFoldRow > 0 && minFoldRow < getRowColsAlgorithm.value.rowNum\n })\n\n const getBtnColSpan = computed(() => {\n const { rowNum, columnRow } = getRowColsAlgorithm.value\n const lastColumn = columnRow[rowNum - 1] || []\n const btnColSpan = props.layoutFormProps?.fromLayProps?.btnColSpan || 0\n const totalSpan = lastColumn.reduce((sum, idx) => sum + (props.formItemList[idx]?.span || 6), 0)\n const hasSpan = 24 - totalSpan\n\n return !folded.value && btnColSpan <= hasSpan ? hasSpan : 24\n })\n\n const formItem = computed(() => {\n const minFoldRow = props.layoutFormProps?.fromLayProps?.minFoldRows || 0\n const { columnNodeIndex } = getRowColsAlgorithm.value\n\n if (folded.value) {\n const lastFoldIndex = columnNodeIndex[minFoldRow - 1] ?? columnNodeIndex[columnNodeIndex.length - 1] ?? 9999\n return props.formItemList.map((it, index) => ({\n ...it,\n isFold: index > lastFoldIndex\n }))\n }\n return props.formItemList.map((it) => ({ ...it, isFold: false }))\n })\n\n watch(\n isFold,\n (val) => {\n folded.value = val\n },\n { immediate: true }\n )\n\n const changeFolded = () => {\n folded.value = !folded.value\n }\n\n return {\n folded,\n isBtnHidden,\n rowLayout,\n formLayout,\n getSetOptionsStatus,\n getRowColsAlgorithm,\n isFold,\n getBtnColSpan,\n formItem,\n changeFolded\n }\n}\n","import { nextTick, toRaw, unref } from 'vue'\nimport { isObject, findValueByKey, wrapPromise } from '../utils/shared'\nimport type { FormItemOption, ApiParams } from '../types'\n\nexport interface RequestConfig {\n httpRequest?: (params: Record<string, unknown>) => Promise<unknown>\n apiParams?: ApiParams\n success?: (res: Record<string, unknown>) => void\n fail?: (err: unknown) => void\n [key: string]: unknown\n}\n\nexport function useFormRequest(httpRequestGlobal?: (params: Record<string, unknown>) => Promise<unknown>) {\n const queryTableListMethod = (params: Record<string, unknown>, options: RequestConfig = {}, option?: FormItemOption) => {\n const { success, fail, ..._params } = options || {}\n if (isObject(options.apiParams) && Object.keys(options.apiParams).length && options.apiParams.url) {\n const initFormParams = { ...params, ...toRaw(unref(options.apiParams.model || {})) }\n const requestOption = { ...toRaw(unref(options.apiParams.options || {})) }\n if (options.apiParams.method) {\n requestOption.method = options.apiParams.method\n }\n\n const requestPayload = {\n url: options.apiParams.url,\n headers: { ...(options.apiParams.headers || {}) },\n formParams: initFormParams,\n ...requestOption\n }\n\n const requestFn = options.httpRequest || httpRequestGlobal\n if (!requestFn) return\n\n requestFn(requestPayload)\n .then((res) => {\n // 支持对象和数组两种响应格式(兼容直接返回数组的接口)\n if (typeof success === 'function' && res && (isObject(res) || Array.isArray(res))) {\n success(res as Record<string, unknown>)\n }\n })\n .catch((e) => {\n if (typeof fail === 'function') {\n fail(e)\n }\n })\n }\n }\n\n const checkQueryFields = (obj: Record<string, unknown>): boolean => {\n const checkListKey = ['total', 'pageSize', 'current', 'listData']\n if (isObject(obj)) {\n return Object.keys(obj).every((it) => {\n return checkListKey.find((its) => its === it) && obj[it] && typeof obj[it] === 'string'\n })\n }\n return false\n }\n\n const configFormField = (options: Record<string, unknown> = {}, fieldFieldOutput?: (defaults: Record<string, string>) => Record<string, string>) => {\n if (isObject(options.configFormOut) && Object.keys(options.configFormOut).length && checkQueryFields(options.configFormOut as Record<string, unknown>)) {\n return options.configFormOut as Record<string, string>\n }\n\n if (typeof fieldFieldOutput === 'function') {\n const configFields = fieldFieldOutput({\n total: 'records',\n pageSize: 'pageSize',\n current: 'pageNo',\n listData: 'rows'\n })\n if (checkQueryFields(configFields)) {\n return configFields\n }\n }\n\n return {\n total: 'records',\n pageSize: 'pageSize',\n current: 'pageNo',\n listData: 'rows'\n }\n }\n\n const formatConfigOut = (row: Record<string, unknown>, keyList: string[], options: Record<string, unknown> = {}, fieldFieldOutput?: (defaults: Record<string, string>) => Record<string, string>) => {\n const configFieldOut = configFormField(options, fieldFieldOutput)\n const configDataOption: Record<string, unknown> = {}\n\n // 如果 API 响应本身就是数组,直接作为 listData 使用(兼容直接返回数组的接口)\n if (keyList.includes('listData') && Array.isArray(row)) {\n configDataOption['listData'] = row\n return configDataOption\n }\n\n if (isObject(configFieldOut) && Object.keys(configFieldOut).length) {\n for (const [key, value] of Object.entries(configFieldOut)) {\n const isKeyUsed = keyList.findIndex((it) => it === key)\n if (isKeyUsed === -1) continue\n\n const rowValue = row[value as string]\n if (rowValue !== undefined && rowValue !== null) {\n if (key === 'listData') {\n configDataOption[key] = Array.isArray(rowValue) ? rowValue : []\n } else {\n configDataOption[key] = typeof rowValue === 'number' ? rowValue : parseInt(rowValue as string, 10) || 0\n }\n } else {\n const resultData = findValueByKey(row, value as string)\n if (key === 'listData') {\n configDataOption[key] = Array.isArray(resultData) ? resultData : []\n } else {\n configDataOption[key] = typeof resultData === 'number' ? resultData : parseInt(resultData as string, 10) || 0\n }\n }\n }\n }\n return configDataOption\n }\n\n const httpRequestFormInstance = (model: Record<string, unknown>, options: RequestConfig, rows: FormItemOption, fieldFieldOutput?: (defaults: Record<string, string>) => Record<string, string>) => {\n return new Promise<{ data: Record<string, unknown>; configRows: Record<string, unknown> }>((resolve, reject) => {\n nextTick(() => {\n queryTableListMethod(\n { pageIndex: 1, pageSize: 1000, ...(model || {}) },\n {\n ...(options || {}),\n success: (res) => {\n const configRows = formatConfigOut(res, ['total', 'listData'], rows as unknown as Record<string, unknown>, fieldFieldOutput)\n resolve({ data: res, configRows })\n },\n fail: (err) => {\n reject(err)\n }\n },\n rows\n )\n })\n })\n }\n\n const getEveryFormQueryField = async (rowsList: FormItemOption[]) => {\n try {\n if (!Array.isArray(rowsList)) return []\n const apiUrlList = rowsList.filter((it) => it && it.apiParams && isObject(it.apiParams) && it.apiParams.url)\n const apiResult: { prop: string; listData: unknown[] }[] = []\n\n const wrappedPromises = apiUrlList.map((option) => {\n const { httpRequest } = option\n const promiseThen = httpRequestFormInstance(\n { ...(option.apiParams?.model || {}) },\n { httpRequest, apiParams: option.apiParams, ...(option.apiParams?.options || {}) },\n option\n )\n return wrapPromise(promiseThen)\n })\n\n const results = await Promise.all(wrappedPromises)\n\n results.forEach((item, index) => {\n if (item.status === 'fulfilled') {\n const { configRows, data } = item.value\n const option = apiUrlList[index]\n const listenToCallBack = option?.listenToCallBack as Record<string, (params: unknown) => unknown> | undefined\n\n /**\n * 优先使用 listenToCallBack.crtn 格式化数据\n * crtn 接收 API 原始响应 data,返回 [{ label, value }] 格式的选项数据\n * data 是 httpRequest 返回的 { data: any } 中的 data 字段\n */\n let listData: unknown[] = []\n if (listenToCallBack?.crtn) {\n listData = listenToCallBack.crtn(data) as unknown[]\n }\n\n // 如果 crtn 未配置或返回空,则降级使用 callOptionListFormat 或格式化后的数据\n const newListOptions =\n Array.isArray(listData) && listData.length > 0\n ? listData\n : typeof option?.callOptionListFormat === 'function'\n ? option.callOptionListFormat(configRows?.listData as unknown[] || option?.dataOptions || [])\n : undefined\n\n apiResult.push({\n prop: apiUrlList[index].prop,\n listData: Array.isArray(newListOptions) ? newListOptions : (configRows?.listData as unknown[] || apiUrlList[index]?.dataOptions || [])\n })\n }\n })\n return apiResult\n } catch (e) {\n return []\n }\n }\n\n return {\n queryTableListMethod,\n getEveryFormQueryField,\n formatConfigOut,\n configFormField\n }\n}\n","import { createVNode, getCurrentInstance, render } from 'vue'\nimport EsDialog from './component.vue'\nimport type { DialogOptions } from '../../../types'\n\nconst getAppendToElement = (appendTo?: string | HTMLElement) => {\n if (typeof appendTo === 'string') {\n return document.querySelector(appendTo) || document.body\n }\n return appendTo instanceof HTMLElement ? appendTo : document.body\n}\n\nconst initInstance = (Component: any, props: DialogOptions, container: HTMLElement, appContext: any) => {\n const vNode = createVNode(Component, props)\n\n if (appContext) {\n vNode.appContext = appContext\n\n if (!vNode.appContext.provides) {\n vNode.appContext.provides = {}\n }\n\n // 注入语言环境(如果父应用有提供)\n const injectedLocale = appContext.provides?.elLocale\n if (injectedLocale) {\n vNode.appContext.provides['elLocale'] = injectedLocale\n }\n\n if (!vNode.appContext.config) {\n vNode.appContext.config = {}\n }\n if (!vNode.appContext.config.globalProperties) {\n vNode.appContext.config.globalProperties = {}\n }\n }\n\n render(vNode, container)\n\n const target = getAppendToElement(props.appendTo)\n target.appendChild(container)\n return vNode\n}\n\nexport const useDialog = (Component?: any, opt: { onlyInstance?: boolean } = {}) => {\n Component = Component || EsDialog\n const options = Object.assign({ onlyInstance: false }, opt)\n\n if (options.onlyInstance) {\n const instance = getCurrentInstance()\n const appContext = instance?.appContext || null\n const container = document.createElement('div')\n\n const close = () => {\n render(null, container)\n container.remove()\n }\n\n const DialogComponent = (dialogOptions: DialogOptions) => {\n if (dialogOptions.visible === undefined) {\n dialogOptions.visible = true\n }\n\n const originalOnClosed = dialogOptions.onClosed\n const originalOnSubmit = dialogOptions.onSubmit\n\n dialogOptions.onClosed = (...args: any[]) => {\n originalOnClosed?.(...args)\n close()\n }\n\n dialogOptions.onSubmit = (closeFn = close) => {\n originalOnSubmit?.(closeFn)\n }\n\n return initInstance(Component, dialogOptions, container, appContext)\n }\n\n DialogComponent.close = close\n return DialogComponent\n } else {\n const container = document.createElement('div')\n container.className = 'dialog-containers'\n const instance = getCurrentInstance()\n const appContext = instance?.appContext || null\n let vNode: any = null\n\n const close = () => {\n if (vNode && vNode.component) {\n vNode.component.props.visible = false\n }\n }\n\n const destroy = () => {\n if (vNode) {\n render(null, container)\n container.remove()\n vNode = null\n }\n }\n\n const DialogComponent = (dialogOptions: DialogOptions) => {\n if (vNode && vNode.component) {\n Object.assign(vNode.component.props, dialogOptions)\n vNode.component.props.visible = true\n return vNode\n }\n\n const mergedOptions: DialogOptions = {\n visible: true,\n width: '50%',\n destroyOnClose: true,\n ...dialogOptions\n }\n\n const { onClosed: originalOnClosed, onSubmit: originalOnSubmit } = mergedOptions\n\n mergedOptions.onClosed = () => {\n originalOnClosed?.()\n close()\n }\n\n mergedOptions.onSubmit = (closeFn = close) => {\n originalOnSubmit?.(closeFn)\n }\n\n vNode = initInstance(Component, mergedOptions, container, appContext)\n return vNode\n }\n\n DialogComponent.close = close\n DialogComponent.destroy = destroy\n return DialogComponent\n }\n}\n\nexport default useDialog\n","<template>\n <el-form :ref=\"setFormRef\" v-bind=\"formProps\" class=\"es-form\">\n <div class=\"flex-center\">\n <el-row v-bind=\"rowLayout\">\n <template v-for=\"(item, index) in formItem\" :key=\"item.prop\">\n <el-col v-show=\"!item?.isFold\" :span=\"item.span || 6\">\n <el-form-item\n :label=\"item.label\"\n v-bind=\"initFormItemOptions(item.formItemOptions || {})\"\n :prop=\"item.prop\"\n @click.stop=\"() => {}\"\n >\n <template v-if=\"item.formtype\">\n <RenderDomForm :row=\"item\" :render=\"formInputComponents(item)\" :index=\"index\" :model=\"model\" />\n </template>\n <template v-else>\n <RenderDomForm :row=\"item\" :render=\"item.render\" :index=\"index\" :model=\"model\" />\n </template>\n </el-form-item>\n </el-col>\n </template>\n\n <template v-if=\"!isBtnHidden\">\n <template v-if=\"isRenderBtn\">\n <RenderBtn\n :row=\"{ isFold: isFold, folded, getBtnColSpan, getRowColsAlgorithm, changeFolded, refsForm: formInstance }\"\n :form-model=\"model\"\n :form-item-list=\"formItem\"\n :render=\"renderBtn\"\n />\n </template>\n <el-col v-else :span=\"btnColSpanRow ? 24 : getBtnColSpan\">\n <div v-if=\"btnColSpanRow && configBtn.length\" class=\"buttonOperate leftRightBtn\">\n <div class=\"btn-left\">\n <el-form-item label-width=\"0px\" class=\"btn-formItem\">\n <el-button\n v-for=\"(it, inx) in colRightLeftList.colLeftBtn\"\n v-bind=\"filterOptions(it)\"\n :icon=\"getCompIcon(it.icon)\"\n :disabled=\"typeof it.disabled === 'function' ? it.disabled() || false : it.disabled || false\"\n @click=\"() => it.click(model, refs, getTableInstant?.httpRequestInstance)\"\n :key=\"it.key || inx\"\n >\n {{ it.name }}\n </el-button>\n </el-form-item>\n </div>\n <div class=\"btn-right\">\n <el-form-item label-width=\"0px\" class=\"btn-formItem\">\n <el-button\n v-for=\"(it, inx) in colRightLeftList.colRightBtn\"\n v-bind=\"filterOptions(it)\"\n :icon=\"getCompIcon(it.icon)\"\n :disabled=\"typeof it.disabled === 'function' ? it.disabled() || false : it.disabled || false\"\n @click=\"() => clickBtn(it)\"\n :key=\"it.key || inx\"\n >\n {{ it.name }}\n </el-button>\n <el-button\n v-if=\"isFold\"\n link\n type=\"primary\"\n :icon=\"getCompIcon(folded ? 'ArrowDown' : 'ArrowUp')\"\n style=\"padding-left: 0; border: none\"\n @click=\"changeFolded\"\n >\n {{ folded ? '展开' : '收起' }}\n </el-button>\n <el-dropdown placement=\"bottom-start\" v-if=\"getSetOptionsStatus\">\n <el-button\n link\n type=\"primary\"\n style=\"margin-left: 2px; margin-right: 5px; outline: none\"\n :icon=\"getCompIcon('Tools')\"\n />\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item @click=\"handleCustomerForm\">自定义查询</el-dropdown-item>\n <el-dropdown-item @click=\"handleTableItemOption\">自定义表格</el-dropdown-item>\n <el-dropdown-item @click=\"handleRefresh\">重置(刷新)</el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </el-form-item>\n </div>\n </div>\n <el-form-item\n v-if=\"!btnColSpanRow && configBtn.length\"\n :label=\"' '\"\n :label-width=\"formProps.labelBtnWidth ? formProps.labelBtnWidth : formProps.labelWidth\"\n :class=\"{ formItemCols: btnColSpanRow ? true : getBtnColSpan === 24 }\"\n class=\"btn-formItem\"\n >\n <div class=\"buttonOperate\" :style=\"{ 'text-align': getBtnColSpan === 24 ? 'right' : 'left' }\">\n <template v-if=\"configBtn.length\">\n <el-button\n v-for=\"(it, inx) in configBtn\"\n v-bind=\"filterOptions(it)\"\n :icon=\"getCompIcon(it.icon)\"\n :disabled=\"typeof it.disabled === 'function' ? it.disabled() || false : it.disabled || false\"\n @click=\"() => it.click(model, refs, getTableInstant?.httpRequestInstance)\"\n :key=\"it.key || inx\"\n >\n {{ it.name }}\n </el-button>\n </template>\n <el-button\n v-if=\"isFold\"\n type=\"primary\"\n link\n :icon=\"getCompIcon(folded ? 'ArrowDown' : 'ArrowUp')\"\n style=\"padding-left: 0; border: none\"\n @click=\"changeFolded\"\n >\n {{ folded ? '展开' : '收起' }}\n </el-button>\n <el-dropdown placement=\"bottom-start\" v-if=\"getSetOptionsStatus\">\n <el-button\n link\n type=\"primary\"\n style=\"margin-left: 2px; margin-right: 5px; outline: none\"\n :icon=\"getCompIcon('Tools')\"\n />\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item @click=\"handleCustomerForm\">自定义查询</el-dropdown-item>\n <el-dropdown-item @click=\"handleTableItemOption\">自定义表格</el-dropdown-item>\n <el-dropdown-item @click=\"handleRefresh\">重置(刷新)</el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n </div>\n </el-form-item>\n </el-col>\n </template>\n </el-row>\n </div>\n </el-form>\n</template>\n\n<script lang=\"ts\">\nexport default { name: 'EsForm' }\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, inject, getCurrentInstance, nextTick, h, defineComponent } from 'vue'\nimport {\n ElRow,\n ElCol,\n ElFormItem,\n ElForm,\n ElButton,\n ElDropdownMenu,\n ElDropdownItem,\n ElDropdown,\n ElInput\n} from 'element-plus'\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\nimport { useFormInputs } from '../../../composables/use-form-inputs'\nimport { useFormLayout } from '../../../composables/use-form-layout'\nimport { useFormRequest } from '../../../composables/use-form-request'\nimport { isObject } from '../../../utils/shared'\nimport useDialog from '../../es-dialog/src/use-dialog'\nimport EsTable from '../../es-table'\nimport type { FormItemOption, BtnConfig, LayoutFormProps } from '../../../types'\n\nconst props = withDefaults(\n defineProps<{\n model: Record<string, unknown>\n formItemList: FormItemOption[]\n layoutFormProps?: LayoutFormProps\n configBtn?: BtnConfig[]\n renderBtn?: Function | boolean\n btnColSpanRow?: boolean\n rules?: Record<string, unknown>\n fieldFieldOutput?: (defaults: Record<string, string>) => Record<string, string>\n }>(),\n {\n model: () => ({}),\n formItemList: () => [],\n layoutFormProps: () => ({}),\n configBtn: () => [],\n renderBtn: false,\n btnColSpanRow: true,\n rules: () => ({})\n }\n)\n\nconst emit = defineEmits<{\n confirm: [formRef: unknown, model: Record<string, unknown>]\n reset: [formRef: unknown, model: Record<string, unknown>]\n}>()\n\nconst instance = getCurrentInstance()\nconst $esPlusForm = inject<Record<string, unknown>>('$esPlusForm', {})\n\n// 保留与 Table 的耦合(同时支持 inject 和 instance.ctx 两种获取方式)\nconst injectedTableInstant = inject<(() => any) | null>('getTableInstantce', null)\nconst getTableInstant = computed(() => {\n if (injectedTableInstant) {\n return typeof injectedTableInstant === 'function' ? injectedTableInstant() : injectedTableInstant\n }\n const ctx = instance?.ctx as Record<string, unknown>\n return typeof ctx?.getTableInstantce === 'function' ? ctx?.getTableInstantce() : ctx?.getTableInstantce\n})\n\nconst isParentTable = computed(() => {\n return !!(getTableInstant.value && Object.keys(getTableInstant.value).length)\n})\n\n// 图标扩展\nconst extendedIcon = Object.fromEntries(Object.entries(ElementPlusIconsVue))\nconst getCompIcon = (key?: string) => (key ? extendedIcon[key] || key : undefined)\nconst filterOptions = (it: BtnConfig) => {\n const { icon, ...opt } = it as Record<string, unknown>\n return opt\n}\n\n// Refs\nconst refs = ref<unknown>(null)\nconst formInstance = ref<Record<string, unknown>>({})\nconst formItemRowsList = ref<FormItemOption[]>(props.formItemList)\n\nconst setFormRef = (el: unknown) => {\n if (el) refs.value = el\n}\n\n// Composables\nconst { formInputComponents } = useFormInputs()\nconst httpRequestGlobal = ($esPlusForm?.$httpRequest as (params: Record<string, unknown>) => Promise<unknown>) || undefined\nconst { getEveryFormQueryField } = useFormRequest(httpRequestGlobal)\n\n// Break circular dependency: formLayoutRef is populated after useFormLayout\nconst formLayoutRef = ref<Record<string, unknown>>(props.layoutFormProps?.fromLayProps || {})\nconst formProps = computed(() => ({\n ...formLayoutRef.value,\n model: props.model,\n rules: props.rules,\n validateOnRuleChange: false\n}))\n\n// 缓存已加载数据的表单项 prop,避免 computed 重新计算时重复调用接口\nconst loadedApiProps = ref<Set<string>>(new Set())\n\nwatch(\n () => props.formItemList,\n async (val) => {\n const list = Array.isArray(val) ? val : []\n // 只加载 isInitRun !== false 且尚未加载过数据的表单项\n const needLoadList = list.filter((it) => it && it.isInitRun !== false && !loadedApiProps.value.has(it.prop))\n if (!needLoadList.length) {\n // 无新表单项需要加载,保留已有的 dataOptions\n formItemRowsList.value = list.map((it) => {\n if (!it) return null\n const existing = formItemRowsList.value.find((old) => old && old.prop === it.prop)\n return existing?.dataOptions?.length ? { ...it, dataOptions: existing.dataOptions } : it\n }).filter((it): it is FormItemOption => !!it)\n return\n }\n const rows = await getEveryFormQueryField(needLoadList)\n // 标记已加载的 prop\n needLoadList.forEach((it) => loadedApiProps.value.add(it.prop))\n formItemRowsList.value = list\n .map((it) => {\n if (!it) return null\n const resultApiOption = rows.find((item) => item && item.prop === it.prop)\n const existing = formItemRowsList.value.find((old) => old && old.prop === it.prop)\n // 优先使用新加载的数据,其次保留已有数据\n if (resultApiOption) return { ...it, dataOptions: resultApiOption.listData }\n if (existing?.dataOptions?.length) return { ...it, dataOptions: existing.dataOptions }\n return it\n })\n .filter((it): it is FormItemOption => !!it)\n },\n { immediate: true, deep: true }\n)\n\nconst formItemListFilter = computed(() => {\n const list = formItemRowsList.value || []\n return list\n .map((it) => (it ? { ...it, span: it.span || 6, dataOptions: it.dataOptions || [] } : null))\n .filter((it): it is FormItemOption => {\n if (!it) return false\n if (it.isHidden && typeof it.isHidden === 'function') {\n return !it.isHidden(props.model, it, formProps.value)\n }\n return true\n })\n})\n\nconst {\n folded,\n isBtnHidden,\n rowLayout,\n formLayout,\n getSetOptionsStatus,\n getRowColsAlgorithm,\n isFold,\n getBtnColSpan,\n formItem,\n changeFolded\n} = useFormLayout({\n layoutFormProps: props.layoutFormProps,\n get formItemList() { return formItemListFilter.value }\n})\n\nwatch(\n formLayout,\n (val) => {\n formLayoutRef.value = val\n },\n { immediate: true }\n)\n\nconst colRightLeftList = computed(() => ({\n colRightBtn: props.configBtn.filter((it) => it.direction === 'right' || !it.direction),\n colLeftBtn: props.configBtn.filter((it) => it.direction === 'left')\n}))\n\nconst isRenderBtn = computed(() => typeof props.renderBtn === 'function')\n\nconst clickBtn = async (it: BtnConfig) => {\n if (it.triggerEvent && ['query', 'rest'].includes(it.key || '')) {\n queryTableRequest(props.model, refs.value as { resetFields: () => void }, it.key)\n } else {\n\n // await refs.value.validate()\n if (it.key === 'rest' && refs.value) {\n refs.value.resetFields()\n }\n it.click?.(props.model, refs.value, getTableInstant.value?.httpRequestInstance)\n }\n}\n\nconst queryTableRequest = async (model: Record<string, unknown>, formRef: { resetFields: () => void; validate: () => Promise<boolean> } | null, key?: string) => {\n if (key === 'query') {\n if (isParentTable.value) {\n getTableInstant.value?.httpRequestInstance?.(model)\n }\n // else if (formRef) {\n // await formRef.validate()\n // }\n } else if (key === 'rest' && formRef) {\n if (isParentTable.value) {\n getTableInstant.value?.httpRequestInstance?.(model)\n }\n formRef.resetFields()\n }\n}\n\nconst initFormItemOptions = (opts: Record<string, unknown>) => {\n if (isParentTable.value) {\n const { style, ...rest } = opts\n return { style: { marginBottom: '10px', ...(style as Record<string, unknown>) }, ...rest }\n }\n return opts\n}\n\nconst confirm = () => emit('confirm', refs.value, props.model)\nconst reset = () => emit('reset', refs.value, props.model)\n\n// 自定义弹窗\nconst createDialogInstance = (() =>\n instance?.ctx?.dialogInstance ? instance.ctx.dialogInstance() : useDialog)()\nconst customerForm = createDialogInstance()\nconst customerTable = createDialogInstance()\n\nconst handleRefresh = () => {\n // 保留原有逻辑\n}\n\nconst getFormRowsFun = () => {\n return {\n data: formItemRowsList.value.map((it) => ({\n ...it,\n label: it.label,\n prop: it.prop,\n isHidden: !!it.isHidden,\n width: it.width\n })),\n columns: [\n { type: 'selection', width: 50 },\n { label: '名称(列)', key: 'label' },\n { label: '属性(Key)', key: 'prop' },\n {\n label: '列宽',\n width: 180,\n render: (_text: unknown, row: Record<string, unknown>) => {\n return h('div', [\n h(ElInput, {\n size: 'small',\n maxlength: 3,\n formatter: (value: string) => value.replace(/^0|[^0-9]/g, ''),\n modelValue: row.width,\n 'onUpdate:modelValue': (val: unknown) => {\n row.width = val\n }\n }, {\n prepend: () => '宽度',\n append: () => 'px'\n })\n ])\n }\n }\n ]\n }\n}\n\nconst getCustomerTableInfo = () => {\n return {\n dataSource: [],\n columns: [\n { type: 'selection', width: 50 },\n { label: '名称(列)', key: 'label' },\n { label: '属性(Key)', key: 'tableProp' },\n {\n label: '列宽',\n width: 180,\n render: (_text: unknown, row: Record<string, unknown>) => {\n return h('div', [\n h(ElInput, {\n size: 'small',\n maxlength: 3,\n formatter: (value: string) => value.replace(/^0|[^0-9]/g, ''),\n modelValue: row.width,\n 'onUpdate:modelValue': (val: unknown) => {\n row.width = val\n }\n }, {\n prepend: () => '宽度',\n append: () => 'px'\n })\n ])\n }\n }\n ]\n }\n}\n\nconst handleCustomerForm = () => {\n const formRows = getFormRowsFun()\n customerForm({\n title: '自定义查询',\n width: '800px',\n isDraggable: true,\n render: () =>\n h(EsTable, {\n dataSource: formRows.data,\n columns: formRows.columns,\n options: {\n multiSelect: true,\n expand: false,\n snIndex: false,\n loading: false,\n border: true,\n size: 'small'\n },\n pagination: {\n pageSize: 10,\n current: 1,\n total: formRows.data?.length || 0\n }\n }),\n configBtn: [\n {\n name: '取消',\n icon: 'Close',\n click: (_instance: unknown, { close }: { close: () => void }) => close()\n },\n {\n name: '确认',\n type: 'primary',\n icon: 'Check',\n click: (_instance: unknown, { close }: { close: () => void }) => close()\n }\n ]\n })\n}\n\nconst handleTableItemOption = () => {\n const formRows = getCustomerTableInfo()\n customerTable({\n title: '自定义表格',\n width: '800px',\n render: () =>\n h(EsTable, {\n dataSource: formRows.dataSource,\n columns: formRows.columns\n })\n })\n}\n\n// 生命周期\nnextTick(() => {\n formInstance.value = refs.value as Record<string, unknown>\n ;(instance?.ctx as Record<string, unknown>)?.bodyFormInstance?.(formInstance.value)\n})\n\n// 子组件定义\nconst RenderBtn = defineComponent({\n props: {\n row: Object,\n formItemList: Array,\n formModel: Object,\n render: Function,\n ellipsis: Boolean\n },\n setup(props) {\n return () => {\n const { formItemList, formModel, row } = props\n const renderContent = props.render?.(row, formModel, formItemList, h) || ''\n return typeof renderContent === 'string' ? h('span', renderContent) : renderContent\n }\n }\n})\n\nconst RenderDomForm = defineComponent({\n props: {\n row: Object,\n index: Number,\n datakey: String,\n render: Function,\n model: Object,\n ellipsis: Boolean\n },\n setup(props) {\n return () => {\n const { row, index, model } = props\n const renderContent = props.render?.(h, model, { row, index }) || ''\n return typeof renderContent === 'string' ? h('span', renderContent) : renderContent\n }\n }\n})\n\n// 暴露给外部的方法,用于手动触发指定表单项的请求\nconst formItmeRequestInstance = async (propsList: string[]) => {\n const list = formItemListFilter.value\n const targetItems = list.filter((it) => it && propsList.includes(it.prop))\n if (!targetItems.length) return\n\n const rows = await getEveryFormQueryField(targetItems)\n rows.forEach((resultApiOption) => {\n if (!resultApiOption) return\n const itemIndex = formItemRowsList.value.findIndex((it) => it && it.prop === resultApiOption.prop)\n if (itemIndex !== -1) {\n formItemRowsList.value[itemIndex] = {\n ...formItemRowsList.value[itemIndex],\n dataOptions: resultApiOption.listData as Array<{ label: string; value: unknown }>\n }\n }\n })\n}\n\n// 暴露组件实例方法\nconst getFormRef = () => refs.value as { validate: () => Promise<boolean>; resetFields: () => void; clearValidate: (props?: string | string[]) => void; validateField: (props: string | string[]) => Promise<boolean>; scrollToField: (prop: string) => void }\n\ndefineExpose({\n formItmeRequestInstance,\n getFormRef,\n validate: () => getFormRef()?.validate(),\n resetFields: () => getFormRef()?.resetFields(),\n clearValidate: (props?: string | string[]) => getFormRef()?.clearValidate(props),\n validateField: (props: string | string[]) => getFormRef()?.validateField(props),\n scrollToField: (prop: string) => getFormRef()?.scrollToField(prop)\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.es-form {\n :deep(.el-form-item) {\n margin-bottom: 18px;\n }\n\n :deep(.el-form-item__label) {\n font-weight: 500;\n }\n\n .buttonOperate {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .leftRightBtn {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n\n .btn-left,\n .btn-right {\n display: flex;\n align-items: center;\n }\n }\n\n .btn-formItem {\n margin-bottom: 0;\n }\n\n .formItemCols {\n width: 100%;\n }\n}\n</style>\n","import EsForm from './src/es-form.vue'\nimport useDialog from '../es-dialog/src/use-dialog'\n\nEsForm.install = function (app: any) {\n app.component(EsForm.name, EsForm)\n}\n\nEsForm.isPlugin = true\nEsForm.Plugin = {\n install(app: any, options: any = {}) {\n app.provide('$esPlusForm', {\n ...options.methods,\n useDialog: () => useDialog()\n })\n app.component(EsForm.name, { ...EsForm, methods: { ...EsForm.methods, ...(options.methods || {}), useDialog: () => useDialog() } })\n }\n}\n\nexport default EsForm\n","<template>\n <div class=\"dp-dialog_wrapper\">\n <el-dialog\n :class=\"['dg-dialog', initDialogCls]\"\n v-bind=\"filteredAttrs\"\n v-model=\"dialogVisible\"\n :draggable=\"props.isDraggable\"\n :width=\"props.width\"\n :show-close=\"false\"\n @close=\"beforeClose\"\n :fullscreen=\"filteredAttrs?.fullscreen ?? isFullscreen\"\n >\n <template #header>\n <template v-if=\"props.renderHeader\">\n <RenderJsx :render=\"props.renderHeader\" :instance=\"getCurrentInstanceModel\" />\n </template>\n <template v-else>\n <div>\n <span class=\"dialog-title\">{{ props.title }}</span>\n </div>\n <div class=\"btns\">\n <el-icon @click=\"handleFullscreen\" v-show=\"!props.hiddenFullBtn\">\n <FullScreen v-if=\"!isFullscreen\" />\n <CopyDocument v-else />\n </el-icon>\n <el-icon @click=\"handleClose\"><Close /></el-icon>\n </div>\n </template>\n </template>\n\n <div class=\"dialog_body_layouts\" :style=\"initDialogHeight\">\n <template v-if=\"props.render && typeof props.render === 'function'\">\n <RenderJsx\n :refs=\"renderBodyRefsObject\"\n :instance=\"getCurrentInstanceModel\"\n :render=\"props.render\"\n :components=\"{ EsTable, EsForm }\"\n :locale=\"locale\"\n />\n </template>\n </div>\n\n <template #footer v-if=\"!attrs.isHiddenFooter\">\n <span v-if=\"!slots.footer\" class=\"dialog-footer\">\n <template v-if=\"props.renderFooter && typeof props.renderFooter === 'function'\">\n <RenderJsx :render=\"props.renderFooter\" :instance=\"getCurrentInstanceModel\" />\n </template>\n <template v-else-if=\"props.configBtn && props.configBtn.length\">\n <el-button\n v-for=\"(it, inx) in configBtn\"\n size=\"small\"\n v-bind=\"filterOptions(it)\"\n :icon=\"getCompIcon(it.icon)\"\n :disabled=\"typeof it.disabled === 'function' ? it.disabled() : it.disabled || false\"\n @click=\"() => {\n it.click?.(renderBodyRefsObject.currentRef, {\n close: handleClose,\n getRefs: (name?: string) => {\n if (name) return renderBodyRefsObject[name] || null\n return renderBodyRefsObject\n },\n dialogInstance\n })\n }\"\n :key=\"it.key || inx\"\n >\n {{ it.name }}\n </el-button>\n </template>\n </span>\n <slot v-else name=\"footer\" />\n </template>\n </el-dialog>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, reactive, getCurrentInstance, provide, inject, useAttrs } from 'vue'\nimport { ElConfigProvider, ElDialog, ElButton, ElIcon } from 'element-plus'\nimport { FullScreen, Close, CopyDocument } from '@element-plus/icons-vue'\nimport RenderJsx from './render-jsx.vue'\nimport EsTable from '../../es-table'\nimport EsForm from '../../es-form'\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\nimport zhCn from 'element-plus/es/locale/lang/zh-cn'\nimport type { BtnConfig } from '../../../types'\n\nconst props = defineProps<{\n title?: string\n visible?: boolean\n appendTo?: object | string\n hiddenFullBtn?: boolean\n width?: string | number\n isDraggable?: boolean\n confirmText?: string\n cancelText?: string\n configBtn?: BtnConfig[]\n maxHeight?: string | number\n isHiddenFooter?: boolean\n renderHeader?: Function\n renderFooter?: Function\n render?: Function\n fullscreen?: boolean\n}>()\n\nconst emit = defineEmits<{\n 'update:visible': [val: boolean]\n closed: [val: boolean]\n submit: [payload: any]\n}>()\n\nconst slots = defineSlots()\n\nconst instance = getCurrentInstance()\nconst attrs = useAttrs()\n\nconst extended = Object.fromEntries(Object.entries(ElementPlusIconsVue).map(([key]) => [key, ElementPlusIconsVue[key]]))\n\nconst lyFormInstance = ref(null)\nconst renderBodyRefsObject = reactive<Record<string, any>>({})\nconst isFullscreen = ref(false)\nconst dialogInstance = instance\nconst locale = ref(zhCn)\n\nconst injectedLocale = inject('elLocale', null)\nif (injectedLocale) {\n locale.value = injectedLocale as any\n}\n\nprovide('elLocale', locale.value)\n\nconst getCompIcon = (key?: string) => {\n return key ? extended[key] || key : undefined\n}\n\nconst filterOptions = (it: BtnConfig) => {\n const { icon, ...opt } = it as Record<string, unknown>\n return opt\n}\n\nconst closeFullscreen = () => {\n setTimeout(() => {\n if (isFullscreen.value) {\n isFullscreen.value = false\n }\n }, 500)\n}\n\nconst handleFullscreen = () => {\n if (attrs?.fullscreen) return\n isFullscreen.value = !isFullscreen.value\n}\n\nconst handleClose = () => {\n emit('closed', false)\n closeFullscreen()\n}\n\nconst handleConfirm = () => {\n emit('submit', { renderBodyRefs: renderBodyRefsObject.currentRef, lyFormInstance, dialogInstance })\n}\n\nconst beforeClose = () => {\n emit('closed', false)\n closeFullscreen()\n}\n\nconst filteredAttrs = computed(() => {\n const { ...rest } = attrs\n return rest\n})\n\nconst initDialogCls = computed(() => {\n if (!isFullscreen.value) {\n if (props.maxHeight) return 'dialogShadow'\n return 'dialogAuto'\n }\n return 'dialogFull'\n})\n\nconst getMaxContentHeight = () => {\n const viewH = window.innerHeight\n return Math.max(viewH - 135, 200)\n}\n\nconst initDialogHeight = computed(() => {\n const viewH = getMaxContentHeight()\n if (!isFullscreen.value) {\n if (props.maxHeight) {\n return { maxHeight: typeof props.maxHeight === 'number' ? `${props.maxHeight}px` : props.maxHeight }\n }\n return { maxHeight: viewH + 'px' }\n }\n return { height: viewH + 'px' }\n})\n\nconst dialogVisible = computed({\n get: () => props.visible || false,\n set: (val) => {\n emit('update:visible', val)\n if (!val) {\n emit('closed', val)\n closeFullscreen()\n }\n }\n})\n\nconst getCurrentInstanceModel = computed(() => ({\n renderBodyRefs: renderBodyRefsObject.currentRef,\n renderBodyRefsObject,\n lyFormInstance,\n dialogInstance,\n getRefs: () => renderBodyRefsObject\n}))\n\nprovide('bodyFormInstance', (e: any) => {\n lyFormInstance.value = e\n})\n\nif (instance) {\n instance.exposed = {\n closed: handleClose\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.dp-dialog_wrapper {\n :deep(.dialogAuto) {\n margin: 0px !important;\n }\n :deep(.el-overlay-dialog) {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n :deep(.el-dialog) {\n padding: 10px;\n\n .el-dialog__footer {\n padding-top: 0px;\n }\n\n .el-dialog__body {\n padding: 10px 0px;\n }\n\n .el-dialog__header {\n border-bottom: 1px solid #eee;\n display: flex;\n padding: 0px 0px 10px 0px;\n align-items: center;\n justify-content: space-between;\n margin: 0;\n }\n }\n}\n\n.dialog-title {\n line-height: 24px;\n font-size: 14px;\n color: #303133;\n font-weight: bold;\n}\n\n.btns {\n display: flex;\n align-items: center;\n\n i {\n margin-right: 8px;\n font-size: 14px;\n cursor: pointer;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n\n.dialog_body_layouts {\n overflow-y: auto;\n overflow-x: hidden;\n scrollbar-width: thin;\n scrollbar-color: #87a2bd26 #c8d5e147;\n}\n\n/* 滚动条样式 */\n*::-webkit-scrollbar {\n width: 14px;\n height: 14px;\n}\n\n*::-webkit-scrollbar-button {\n width: 0;\n height: 0;\n display: none;\n}\n\n*::-webkit-scrollbar-corner {\n background-color: transparent;\n}\n\n*::-webkit-scrollbar-thumb {\n min-height: 12px;\n border: 4px solid transparent;\n background-clip: content-box;\n border-radius: 7px;\n background-color: #c8d5e1;\n\n &:hover {\n background-color: #a8bbcf;\n }\n\n &:active {\n background-color: #87a2bd;\n }\n}\n\n*::-webkit-scrollbar-track {\n background-color: transparent;\n}\n\n*::-webkit-scrollbar-track-piece {\n background-color: transparent;\n}\n</style>\n","import EsDialog from './src/component.vue'\n\nEsDialog.install = function (app: any) {\n app.component(EsDialog.name, EsDialog)\n}\n\nexport default EsDialog\n","<template>\n <div v-if=\"isExternal\" :style=\"styleExternalIcon\" class=\"svg-external-icon svg-icon\" />\n <svg v-else :class=\"svgClass\" aria-hidden=\"true\">\n <use :xlink:href=\"iconName\" />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps<{\n iconClass: string\n className?: string\n}>()\n\nconst isExternal = computed(() => isExternals(props.iconClass))\nconst iconName = computed(() => `#icon-${props.iconClass}`)\nconst svgClass = computed(() => {\n if (props.className) {\n return 'svg-icon ' + props.className\n }\n return 'svg-icon'\n})\nconst styleExternalIcon = computed(() => {\n return {\n mask: `url(${props.iconClass}) no-repeat 50% 50%`,\n '-webkit-mask': `url(${props.iconClass}) no-repeat 50% 50%`\n }\n})\n\nconst isExternals = (path: string) => {\n return /^(https?:|mailto:|tel:|open)/.test(path)\n}\n</script>\n\n<style scoped>\n.svg-icon {\n width: 1em;\n height: 1em;\n vertical-align: -0.15em;\n fill: currentColor;\n overflow: hidden;\n}\n\n.svg-external-icon {\n background-color: currentColor;\n mask-size: cover !important;\n display: inline-block;\n}\n</style>\n","import SvgIcon from './src/svg-icon.vue'\n\nSvgIcon.install = function (app: any) {\n app.component(SvgIcon.name, SvgIcon)\n}\n\nexport default SvgIcon","import { version } from '../package.json'\nimport EsDialog from './components/es-dialog'\nimport useDialog from './components/es-dialog/src/use-dialog'\nimport EsForm from './components/es-form'\nimport EsTable from './components/es-table'\nimport SvgIcon from './components/svg-icon'\n\n// 组件列表\nconst components = [EsDialog, EsForm, EsTable, SvgIcon]\n\n// Vue 3 插件安装函数\nconst install = (app: any, options: Record<string, unknown> = {}) => {\n components.forEach((component) => {\n if (component.name) {\n app.component(component.name, component)\n }\n })\n\n if (options.globalProperties !== false) {\n app.config.globalProperties.$useDialog = useDialog\n\n components.forEach((component: any) => {\n if (component.isPlugin && component.Plugin) {\n app.use(component.Plugin, options[component.name] || {})\n }\n })\n }\n\n app.provide('$EsPlus', {\n useDialog,\n ...options\n })\n}\n\n// 按需导出\nexport {\n EsDialog,\n EsForm,\n EsTable,\n SvgIcon,\n useDialog,\n install\n}\n\n// 默认导出\nexport default {\n version,\n install\n}"],"names":["zh_cn_default","_sfc_main","defineComponent","props","refsObject","reactive","getRawRef","vnodeRef","refObj","val","componentVNode","userRefCallback","flushRef","instance","comp","onMounted","onUpdated","enhancedInstance","name","el","renderContent","h","ElConfigProvider","zhCn","e","isVNode","_a","RenderDomTb","row","index","dataKey","render","value","renderResult","firstWordUpperCase","str","columnBindAttr","cols","options","t","parts","camelKey","i","__props","_createBlock","_unref","ElTableColumn","_normalizeProps","_mergeProps","_openBlock","_createElementBlock","_Fragment","item","_withCtx","scope","_renderSlot","_ctx","RenderDom","hasPermission","_btnList","pvalue","processButtonConfig","config","processed","processedBtnLeft","computed","processedBtnRight","showContainer","getDisabledState","buttonContainerStyle","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","_hoisted_3","_hoisted_4","_renderList","_normalizeStyle","_createTextVNode","_hoisted_5","useTableResize","tableContainerRef","headBarRef","tbBtnRef","paginationRef","tableHeight","ref","observer","isNegative","num","totalContainerNum","headBarHeight","tbBtnHeight","_c","_b","paginationHeight","_d","resizeObservers","element","containerHeight","maxContainer","minTableNum","tabContainer","_e","newHeight","startObserver","nextTick","target","stopObserver","onBeforeUnmount","useTableSelection","rowkey","multipleSelection","selectionsByPage","isInitChange","handleSelectionChange","currentPage","allSelections","uniqueMap","pageSelections","key","handleSelectData","dataList","tableRef","pageSelecteds","selectedRow","isObject","findValueByKey","obj","depth","currentValue","prop","deepValue","wrapPromise","promise","reason","defaultOptions","emit","__emit","slots","_useSlots","locale","injectedLocale","inject","getCurrentInstance","$esPlusTable","tableId","tableData","columnRowList","watch","loadingStatus","slotState","showPagination","setTableContainer","bodyFormInstance","getVisibleShow","visibleShow","paginationConfig","formInstance","getListEntry","configTableField","checkQueryFields","configFields","isFormInstance","formVNode","vnode","type","hasDefaultSlot","heightType","tabHeight","slotStyles","layout","loadStatus","isRequestConf","filteredColumns","list","_h","btn","ElButton","TABLE_INTERNAL_KEYS","tableAttrs","merged","align","rest","result","fallthroughAttrs","useAttrs","tableBindAttrs","oldVal","httpRequestInstance","initSelection","clearAllSelection","handleTableSelectionChange","checkListKey","it","its","getListenToCallBack","eventName","params","eventNameList","hasEventNameIndex","formatConfigOut","keyList","rowData","queryTableListMethod","success","fail","apiParams","url","formData","toRaw","unref","fnParams","finalParams","requestOption","requestHandler","requestFn","res","responseData","model","resolve","reject","err","changePageIndexRequest","changePageSizeRequest","handleSizeChange","size","handleIndexChange","changeTableSort","column","char","newkey","j","provide","rows","__expose","_normalizeClass","_withDirectives","TableBtns","_cache","ColumnItem","_createVNode","ElPagination","$event","EsTable","app","getNestedValue","path","keys","setNestedValue","lastKey","current","useFormInputs","hFn","ElInput","ElSelect","opt","idx","ElOption","ElDatePicker","ElTimePicker","ElSlider","ElColorPicker","ElTransfer","ElCascader","ElRadioGroup","ElRadio","ElCheckboxGroup","ElCheckbox","ElSwitch","ElRate","_model","uploadProps","httpRequest","triggerRender","fileRender","restRow","uploadInstance","elUploadProps","handler","file","ElUpload","useFormLayout","folded","isBtnHidden","rowLayout","formLayout","getSetOptionsStatus","getRowColsAlgorithm","pre","groupArrayList","columnRows","formItems","statIndex","columRowIndexs","rowColIndex","_","isFold","minFoldRow","getBtnColSpan","rowNum","columnRow","lastColumn","btnColSpan","hasSpan","sum","formItem","columnNodeIndex","lastFoldIndex","useFormRequest","httpRequestGlobal","option","_params","initFormParams","requestPayload","configFormField","fieldFieldOutput","configFieldOut","configDataOption","rowValue","resultData","httpRequestFormInstance","configRows","rowsList","apiUrlList","apiResult","wrappedPromises","promiseThen","data","listenToCallBack","listData","newListOptions","getAppendToElement","appendTo","initInstance","Component","container","appContext","vNode","createVNode","useDialog","EsDialog","close","DialogComponent","dialogOptions","originalOnClosed","originalOnSubmit","args","closeFn","destroy","mergedOptions","__default__","$esPlusForm","injectedTableInstant","getTableInstant","ctx","isParentTable","extendedIcon","ElementPlusIconsVue","getCompIcon","filterOptions","icon","refs","formItemRowsList","setFormRef","formInputComponents","getEveryFormQueryField","formLayoutRef","formProps","loadedApiProps","needLoadList","existing","old","resultApiOption","formItemListFilter","changeFolded","colRightLeftList","isRenderBtn","clickBtn","queryTableRequest","formRef","initFormItemOptions","opts","style","createDialogInstance","customerForm","customerTable","handleRefresh","getFormRowsFun","_text","getCustomerTableInfo","handleCustomerForm","formRows","_instance","handleTableItemOption","RenderBtn","formItemList","formModel","RenderDomForm","formItmeRequestInstance","propsList","targetItems","itemIndex","getFormRef","ElForm","ElCol","_vShow","ElFormItem","inx","ElDropdown","ElDropdownMenu","ElDropdownItem","EsForm","attrs","extended","lyFormInstance","renderBodyRefsObject","isFullscreen","dialogInstance","closeFullscreen","handleFullscreen","handleClose","beforeClose","filteredAttrs","initDialogCls","getMaxContentHeight","viewH","initDialogHeight","dialogVisible","getCurrentInstanceModel","RenderJsx","ElIcon","CopyDocument","FullScreen","Close","isExternal","isExternals","iconName","svgClass","styleExternalIcon","SvgIcon","components","install","component","version"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/index.d.ts
ADDED