easy-ep-ui 0.1.0 → 0.1.1

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.
Files changed (43) hide show
  1. package/dist/easy-ep-ui.js +1 -1
  2. package/dist/style.css +1 -1
  3. package/es/components/ee-dict-select/src/index.vue.d.ts +2 -0
  4. package/es/components/ee-form-dialog/src/index.vue.d.ts +2 -0
  5. package/es/components/ee-form-table/src/components/FormDrawer.vue.d.ts +38 -0
  6. package/es/components/ee-form-table/src/components/SearchArea.vue.d.ts +39 -0
  7. package/es/components/ee-form-table/src/components/TableToolbar.vue.d.ts +42 -0
  8. package/es/components/ee-form-table/src/constants.d.ts +31 -0
  9. package/es/components/ee-form-table/src/hooks/useAuth.d.ts +14 -0
  10. package/es/components/ee-form-table/src/hooks/useCrud.d.ts +39 -0
  11. package/es/components/ee-form-table/src/hooks/useDict.d.ts +12 -0
  12. package/es/components/ee-form-table/src/hooks/useExport.d.ts +32 -0
  13. package/es/components/ee-form-table/src/hooks/useForm.d.ts +31 -0
  14. package/es/components/ee-form-table/src/hooks/usePagination.d.ts +22 -0
  15. package/es/components/ee-form-table/src/hooks/useSearch.d.ts +39 -0
  16. package/es/components/ee-form-table/src/hooks/useTable.d.ts +49 -0
  17. package/es/components/ee-form-table/src/index.vue.d.ts +1079 -534
  18. package/es/components/ee-form-table/types.d.ts +197 -0
  19. package/es/components/ee-search-bar/src/index.vue.d.ts +2 -0
  20. package/es/index.d.ts +2 -0
  21. package/es/index.mjs +1483 -332
  22. package/es/style.css +1 -1
  23. package/lib/components/ee-dict-select/src/index.vue.d.ts +2 -0
  24. package/lib/components/ee-form-dialog/src/index.vue.d.ts +2 -0
  25. package/lib/components/ee-form-table/src/components/FormDrawer.vue.d.ts +38 -0
  26. package/lib/components/ee-form-table/src/components/SearchArea.vue.d.ts +39 -0
  27. package/lib/components/ee-form-table/src/components/TableToolbar.vue.d.ts +42 -0
  28. package/lib/components/ee-form-table/src/constants.d.ts +31 -0
  29. package/lib/components/ee-form-table/src/hooks/useAuth.d.ts +14 -0
  30. package/lib/components/ee-form-table/src/hooks/useCrud.d.ts +39 -0
  31. package/lib/components/ee-form-table/src/hooks/useDict.d.ts +12 -0
  32. package/lib/components/ee-form-table/src/hooks/useExport.d.ts +32 -0
  33. package/lib/components/ee-form-table/src/hooks/useForm.d.ts +31 -0
  34. package/lib/components/ee-form-table/src/hooks/usePagination.d.ts +22 -0
  35. package/lib/components/ee-form-table/src/hooks/useSearch.d.ts +39 -0
  36. package/lib/components/ee-form-table/src/hooks/useTable.d.ts +49 -0
  37. package/lib/components/ee-form-table/src/index.vue.d.ts +1079 -534
  38. package/lib/components/ee-form-table/types.d.ts +197 -0
  39. package/lib/components/ee-search-bar/src/index.vue.d.ts +2 -0
  40. package/lib/index.cjs +1 -1
  41. package/lib/index.d.ts +2 -0
  42. package/lib/style.css +1 -1
  43. package/package.json +5 -4
@@ -0,0 +1,197 @@
1
+ /**
2
+ * ee-form-table 类型定义
3
+ *
4
+ * 包含组件所需的所有 TypeScript 接口与类型别名。
5
+ * 公共类型(DictOption、TableColumn、Pagination 等)从 packages/utils/types.ts 导入,
6
+ * 私有类型仅在 ee-form-table 内部使用。
7
+ */
8
+ /** 组件尺寸 */
9
+ export type ComponentSize = 'large' | 'default' | 'small';
10
+ /** 权限模式 */
11
+ export type AuthMode = 'hide' | 'disabled';
12
+ /** 对齐方式 */
13
+ export type AlignType = 'left' | 'center' | 'right';
14
+ /** 固定列方向 */
15
+ export type FixedType = 'left' | 'right';
16
+ /** 选择模式 */
17
+ export type SelectionType = 'multiple' | 'single';
18
+ /** 表单展示模式 */
19
+ export type DrawerMode = 'drawer' | 'dialog';
20
+ /** 导出模式 */
21
+ export type ExportMode = 'current' | 'all';
22
+ /** 搜索字段控件类型 */
23
+ export type SearchFieldType = 'input' | 'number' | 'select' | 'radio' | 'checkbox' | 'date' | 'date-range' | 'textarea';
24
+ /** Element Plus 按钮类型 */
25
+ export type ButtonType = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default';
26
+ export interface DictOption {
27
+ value: string | number;
28
+ label: string;
29
+ disabled?: boolean;
30
+ [key: string]: unknown;
31
+ }
32
+ export interface ColumnSearchItem {
33
+ enable: boolean;
34
+ type?: SearchFieldType;
35
+ placeholder?: string;
36
+ defaultValue?: unknown;
37
+ props?: Record<string, unknown>;
38
+ field?: string;
39
+ }
40
+ export interface TableColumn {
41
+ prop: string;
42
+ label: string;
43
+ width?: string | number;
44
+ minWidth?: string | number;
45
+ align?: AlignType;
46
+ fixed?: FixedType;
47
+ sortable?: boolean;
48
+ show?: boolean;
49
+ formatter?: (row: Record<string, unknown>, column: TableColumn, cellValue: unknown, index: number) => unknown;
50
+ dictKey?: string;
51
+ slotName?: string;
52
+ search?: ColumnSearchItem;
53
+ auth?: string;
54
+ children?: TableColumn[];
55
+ [key: string]: unknown;
56
+ }
57
+ export interface SearchConfig {
58
+ show?: boolean;
59
+ cols?: number;
60
+ maxRow?: number;
61
+ foldable?: boolean;
62
+ foldDefault?: boolean;
63
+ }
64
+ export interface PaginationConfig {
65
+ show?: boolean;
66
+ pageSize?: number;
67
+ pageSizes?: number[];
68
+ total?: number;
69
+ showTotal?: boolean;
70
+ layout?: string;
71
+ background?: boolean;
72
+ }
73
+ export interface ActionButton {
74
+ text: string;
75
+ icon?: string;
76
+ type?: ButtonType;
77
+ code?: string;
78
+ auth?: string;
79
+ show?: (row: Record<string, unknown>) => boolean;
80
+ handler: (row: Record<string, unknown>) => void;
81
+ }
82
+ export interface ActionConfig {
83
+ show?: boolean;
84
+ label?: string;
85
+ width?: string | number;
86
+ align?: AlignType;
87
+ showView?: boolean;
88
+ showEdit?: boolean;
89
+ showDelete?: boolean;
90
+ viewText?: string;
91
+ editText?: string;
92
+ deleteText?: string;
93
+ viewAuth?: string;
94
+ editAuth?: string;
95
+ deleteAuth?: string;
96
+ fixed?: FixedType;
97
+ confirmDelete?: boolean;
98
+ deleteConfirmTitle?: string;
99
+ deleteConfirmMessage?: string;
100
+ customButtons?: ActionButton[];
101
+ }
102
+ export interface ToolbarButton {
103
+ text: string;
104
+ icon?: string;
105
+ type?: string;
106
+ code?: string;
107
+ auth?: string;
108
+ handler: () => void;
109
+ }
110
+ export interface ToolbarConfig {
111
+ show?: boolean;
112
+ showAdd?: boolean;
113
+ showImport?: boolean;
114
+ showExport?: boolean;
115
+ showBatchDelete?: boolean;
116
+ addText?: string;
117
+ importText?: string;
118
+ exportText?: string;
119
+ batchDeleteText?: string;
120
+ addAuth?: string;
121
+ importAuth?: string;
122
+ exportAuth?: string;
123
+ batchDeleteAuth?: string;
124
+ customButtons?: ToolbarButton[];
125
+ }
126
+ export interface CrudApi {
127
+ list: (params: Record<string, unknown>) => Promise<{
128
+ data: Record<string, unknown>[];
129
+ total: number;
130
+ }>;
131
+ add?: (data: Record<string, unknown>) => Promise<unknown>;
132
+ edit?: (data: Record<string, unknown>) => Promise<unknown>;
133
+ delete?: (id: string | number) => Promise<unknown>;
134
+ batchDelete?: (ids: (string | number)[]) => Promise<unknown>;
135
+ }
136
+ export interface CrudConfig {
137
+ api: CrudApi;
138
+ baseParams?: Record<string, unknown>;
139
+ requestMethod?: 'GET' | 'POST';
140
+ requestInstance?: unknown;
141
+ }
142
+ export interface SelectionConfig {
143
+ show?: boolean;
144
+ type?: SelectionType;
145
+ disabledRow?: (row: Record<string, unknown>) => boolean;
146
+ reserveSelection?: boolean;
147
+ }
148
+ export interface ExportConfig {
149
+ mode?: ExportMode;
150
+ fileName?: string;
151
+ ignoreColumn?: string[];
152
+ }
153
+ export interface DrawerConfig {
154
+ mode?: DrawerMode;
155
+ width?: string | number;
156
+ fullscreen?: boolean;
157
+ draggable?: boolean;
158
+ closeOnReset?: boolean;
159
+ addTitle?: string;
160
+ editTitle?: string;
161
+ }
162
+ export interface ColumnSettingConfig {
163
+ show?: boolean;
164
+ storageKey?: string;
165
+ }
166
+ export interface AutoHeightConfig {
167
+ offset?: number;
168
+ }
169
+ export interface EeFormTableProps {
170
+ columns: TableColumn[];
171
+ data?: Record<string, unknown>[];
172
+ loading?: boolean;
173
+ searchConfig?: SearchConfig | boolean;
174
+ pagination?: PaginationConfig | boolean;
175
+ actionConfig?: ActionConfig | boolean;
176
+ toolbarConfig?: ToolbarConfig | boolean;
177
+ crudConfig?: CrudConfig;
178
+ selectionConfig?: SelectionConfig;
179
+ exportConfig?: ExportConfig;
180
+ drawerConfig?: DrawerConfig;
181
+ columnSetting?: ColumnSettingConfig;
182
+ autoHeight?: AutoHeightConfig | boolean;
183
+ dictMap?: Record<string, DictOption[]>;
184
+ authChecker?: (auth: string) => boolean;
185
+ authMode?: AuthMode;
186
+ emptyText?: string;
187
+ tableHeight?: string | number;
188
+ tableMaxHeight?: string | number;
189
+ size?: ComponentSize;
190
+ stripe?: boolean;
191
+ border?: boolean;
192
+ highlightCurrentRow?: boolean;
193
+ rowKey?: string;
194
+ }
195
+ export interface SearchParams {
196
+ [key: string]: unknown;
197
+ }
@@ -6,6 +6,7 @@ type __VLS_Props = {
6
6
  labelWidth?: string | number;
7
7
  collapsible?: boolean;
8
8
  collapsedCount?: number;
9
+ size?: 'large' | 'default' | 'small';
9
10
  };
10
11
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
11
12
  "update:modelValue": (val: Record<string, any>) => any;
@@ -16,6 +17,7 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
16
17
  onSearch?: ((val: Record<string, any>) => any) | undefined;
17
18
  onReset?: (() => any) | undefined;
18
19
  }>, {
20
+ size: "large" | "default" | "small";
19
21
  inline: boolean;
20
22
  labelWidth: string | number;
21
23
  collapsible: boolean;
package/lib/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),n=require("element-plus"),h=e.defineComponent({name:"EeDictSelect",__name:"index",props:{modelValue:{},options:{},request:{},valueField:{default:"value"},labelField:{default:"label"}},emits:["update:modelValue","change","clear","focus","blur"],setup(l,{emit:k}){const u=l,m=k,s=e.ref(!1),i=e.ref([]),d=e.computed(()=>(u.options??i.value).map(c=>({value:String(c[u.valueField]??""),label:String(c[u.labelField]??""),disabled:c.disabled??!1})));async function a(){if(!u.options&&u.request){s.value=!0;try{i.value=await u.request()}finally{s.value=!1}}}return e.onMounted(a),e.watch(()=>u.request,a),(p,c)=>(e.openBlock(),e.createBlock(e.unref(n.ElSelect),e.mergeProps(p.$attrs,{"model-value":l.modelValue,loading:s.value,"onUpdate:modelValue":c[0]||(c[0]=t=>m("update:modelValue",t)),onChange:c[1]||(c[1]=t=>m("change",t)),onClear:c[2]||(c[2]=t=>m("clear")),onFocus:c[3]||(c[3]=t=>m("focus",t)),onBlur:c[4]||(c[4]=t=>m("blur",t))}),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,t=>(e.openBlock(),e.createBlock(e.unref(n.ElOption),{key:t.value,label:t.label,value:t.value,disabled:t.disabled},null,8,["label","value","disabled"]))),128))]),_:1},16,["model-value","loading"]))}});h.install=l=>{l.component(h.name??"EeDictSelect",h)};const g=e.defineComponent({name:"EeStatusTag",__name:"index",props:{value:{},mapping:{},fallbackLabel:{},defaultType:{default:"info"},defaultEffect:{default:"light"}},setup(l){const k=l,u=e.computed(()=>k.mapping.find(m=>m.value===k.value));return(m,s)=>{var i,d;return e.openBlock(),e.createBlock(e.unref(n.ElTag),e.mergeProps(m.$attrs,{type:((i=u.value)==null?void 0:i.type)??l.defaultType,effect:((d=u.value)==null?void 0:d.effect)??l.defaultEffect}),{default:e.withCtx(()=>{var a;return[e.createTextVNode(e.toDisplayString(((a=u.value)==null?void 0:a.label)??l.fallbackLabel??l.value),1)]}),_:1},16,["type","effect"])}}});g.install=l=>{l.component(g.name??"EeStatusTag",g)};const v={class:"ee-search-bar"},C=e.defineComponent({name:"EeSearchBar",__name:"index",props:{modelValue:{},fields:{},inline:{type:Boolean,default:!0},labelWidth:{default:"auto"},collapsible:{type:Boolean,default:!1},collapsedCount:{default:3}},emits:["update:modelValue","search","reset"],setup(l,{emit:k}){const u=l,m=k,s=e.ref(),i=e.ref(!1),d=e.computed(()=>{const o=24-a.value.reduce((r,f)=>r+(f.span??6),0)%24;return o===24?6:o}),a=e.computed(()=>!u.collapsible||i.value?u.fields:u.fields.slice(0,u.collapsedCount));function p(){m("search",{...u.modelValue})}function c(){const t={};u.fields.forEach(o=>{t[o.prop]=""}),m("update:modelValue",t),m("reset")}return(t,o)=>(e.openBlock(),e.createElementBlock("div",v,[e.createVNode(e.unref(n.ElForm),e.mergeProps({ref_key:"formRef",ref:s,model:l.modelValue,inline:l.inline,"label-width":l.labelWidth},t.$attrs),{default:e.withCtx(()=>[e.createVNode(e.unref(n.ElRow),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,r=>(e.openBlock(),e.createBlock(e.unref(n.ElCol),{key:r.prop,span:r.span??6},{default:e.withCtx(()=>[e.createVNode(e.unref(n.ElFormItem),{label:r.label,prop:r.prop},{default:e.withCtx(()=>[(r.type??"input")==="input"?(e.openBlock(),e.createBlock(e.unref(n.ElInput),{key:0,modelValue:l.modelValue[r.prop],"onUpdate:modelValue":f=>l.modelValue[r.prop]=f,placeholder:r.placeholder??`请输入${r.label}`,clearable:""},null,8,["modelValue","onUpdate:modelValue","placeholder"])):r.type==="select"?(e.openBlock(),e.createBlock(e.unref(n.ElSelect),{key:1,modelValue:l.modelValue[r.prop],"onUpdate:modelValue":f=>l.modelValue[r.prop]=f,placeholder:r.placeholder??`请选择${r.label}`,clearable:""},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options??[],f=>(e.openBlock(),e.createBlock(e.unref(n.ElOption),{key:f.value,label:f.label,value:f.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):r.type==="date"?(e.openBlock(),e.createBlock(e.unref(n.ElDatePicker),{key:2,modelValue:l.modelValue[r.prop],"onUpdate:modelValue":f=>l.modelValue[r.prop]=f,placeholder:r.placeholder??`请选择${r.label}`,style:{width:"100%"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):r.type==="date-range"?(e.openBlock(),e.createBlock(e.unref(n.ElDatePicker),{key:3,modelValue:l.modelValue[r.prop],"onUpdate:modelValue":f=>l.modelValue[r.prop]=f,type:"daterange","range-separator":r.placeholder??"至","start-placeholder":r.placeholder??"开始日期","end-placeholder":r.placeholder??"结束日期",style:{width:"100%"}},null,8,["modelValue","onUpdate:modelValue","range-separator","start-placeholder","end-placeholder"])):r.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.component),{key:4,modelValue:l.modelValue[r.prop],"onUpdate:modelValue":f=>l.modelValue[r.prop]=f},null,8,["modelValue","onUpdate:modelValue"])):e.createCommentVNode("",!0)]),_:2},1032,["label","prop"])]),_:2},1032,["span"]))),128)),e.createVNode(e.unref(n.ElCol),{span:d.value},{default:e.withCtx(()=>[e.createVNode(e.unref(n.ElFormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(n.ElButton),{type:"primary",onClick:p},{default:e.withCtx(()=>[...o[1]||(o[1]=[e.createTextVNode(" 搜索 ",-1)])]),_:1}),e.createVNode(e.unref(n.ElButton),{onClick:c},{default:e.withCtx(()=>[...o[2]||(o[2]=[e.createTextVNode(" 重置 ",-1)])]),_:1}),l.collapsible&&l.fields.length>l.collapsedCount?(e.openBlock(),e.createBlock(e.unref(n.ElButton),{key:0,text:"",onClick:o[0]||(o[0]=r=>i.value=!i.value)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.value?"收起":"展开"),1)]),_:1})):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["span"])]),_:1})]),_:1},16,["model","inline","label-width"])]))}}),y=(l,k)=>{const u=l.__vccOpts||l;for(const[m,s]of k)u[m]=s;return u},V=y(C,[["__scopeId","data-v-64bb08e9"]]);V.install=l=>{l.component(V.name??"EeSearchBar",V)};const w={class:"ee-form-dialog-footer"},x=e.defineComponent({name:"EeFormDialog",__name:"index",props:{modelValue:{type:Boolean},title:{default:"表单"},formData:{},fields:{},rules:{},width:{default:"600px"},labelWidth:{default:"auto"},loading:{type:Boolean,default:!1}},emits:["update:modelValue","submit","cancel"],setup(l,{emit:k}){const u=l,m=k,s=e.ref(),i=e.computed(()=>{const p={};for(const c of Object.keys(u))["modelValue","title","formData","fields","rules","width","labelWidth","loading"].includes(c)||(p[c]=u[c]);return p});function d(){m("update:modelValue",!1),m("cancel")}async function a(){if(s.value)try{await s.value.validate(),m("submit",{...u.formData})}catch{}}return(p,c)=>(e.openBlock(),e.createBlock(e.unref(n.ElDialog),e.mergeProps(p.$attrs,{"model-value":l.modelValue,title:l.title,width:l.width,"onUpdate:modelValue":c[0]||(c[0]=t=>m("update:modelValue",t)),onClose:d}),{footer:e.withCtx(()=>[e.createElementVNode("span",w,[e.createVNode(e.unref(n.ElButton),{onClick:d},{default:e.withCtx(()=>[...c[1]||(c[1]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(n.ElButton),{type:"primary",loading:l.loading,onClick:a},{default:e.withCtx(()=>[...c[2]||(c[2]=[e.createTextVNode(" 确定 ",-1)])]),_:1},8,["loading"])])]),default:e.withCtx(()=>[e.createVNode(e.unref(n.ElForm),e.mergeProps({ref_key:"formRef",ref:s,model:l.formData,rules:l.rules,"label-width":l.labelWidth},i.value),{default:e.withCtx(()=>[e.createVNode(e.unref(n.ElRow),{gutter:20},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.fields,t=>(e.openBlock(),e.createBlock(e.unref(n.ElCol),{key:t.prop,span:t.span??24},{default:e.withCtx(()=>[e.createVNode(e.unref(n.ElFormItem),{label:t.label,prop:t.prop},{default:e.withCtx(()=>[(t.type??"input")==="input"?(e.openBlock(),e.createBlock(e.unref(n.ElInput),{key:0,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o,placeholder:t.placeholder??`请输入${t.label}`},null,8,["modelValue","onUpdate:modelValue","placeholder"])):t.type==="textarea"?(e.openBlock(),e.createBlock(e.unref(n.ElInput),{key:1,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o,type:"textarea",placeholder:t.placeholder??`请输入${t.label}`,rows:3},null,8,["modelValue","onUpdate:modelValue","placeholder"])):t.type==="select"?(e.openBlock(),e.createBlock(e.unref(n.ElSelect),{key:2,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o,placeholder:t.placeholder??`请选择${t.label}`,style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options??[],o=>(e.openBlock(),e.createBlock(e.unref(n.ElOption),{key:o.value,label:o.label,value:o.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):t.type==="radio"?(e.openBlock(),e.createBlock(e.unref(n.ElRadioGroup),{key:3,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options??[],o=>(e.openBlock(),e.createBlock(e.unref(n.ElRadio),{key:o.value,label:o.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.label),1)]),_:2},1032,["label"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):t.type==="checkbox"?(e.openBlock(),e.createBlock(e.unref(n.ElCheckboxGroup),{key:4,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options??[],o=>(e.openBlock(),e.createBlock(e.unref(n.ElCheckbox),{key:o.value,label:o.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.label),1)]),_:2},1032,["label"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):t.type==="switch"?(e.openBlock(),e.createBlock(e.unref(n.ElSwitch),{key:5,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o},null,8,["modelValue","onUpdate:modelValue"])):t.type==="date"?(e.openBlock(),e.createBlock(e.unref(n.ElDatePicker),{key:6,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o,placeholder:t.placeholder??`请选择${t.label}`,style:{width:"100%"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):t.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.component),{key:7,modelValue:l.formData[t.prop],"onUpdate:modelValue":o=>l.formData[t.prop]=o},null,8,["modelValue","onUpdate:modelValue"])):e.createCommentVNode("",!0)]),_:2},1032,["label","prop"])]),_:2},1032,["span"]))),128))]),_:1})]),_:1},16,["model","rules","label-width"])]),_:1},16,["model-value","title","width"]))}}),b=y(x,[["__scopeId","data-v-0307e8cf"]]);b.install=l=>{l.component(b.name??"EeFormDialog",b)};const S={class:"ee-form-table"},D={key:1,class:"ee-form-table-toolbar"},N={key:2,class:"ee-form-table-pagination"},U=e.defineComponent({name:"EeFormTable",__name:"index",props:{data:{},columns:{},searchFields:{},pagination:{},loading:{type:Boolean,default:!1},showSelection:{type:Boolean,default:!1},showIndex:{type:Boolean,default:!1},showPagination:{type:Boolean,default:!0},pageSizes:{default:()=>[10,20,50,100]},paginationLayout:{default:"total, sizes, prev, pager, next, jumper"},collapsible:{type:Boolean,default:!1},collapsedCount:{default:3}},emits:["search","reset","selection-change","sort-change","current-change","size-change"],setup(l,{emit:k}){const u=k,m=e.ref(),s=e.ref({});return(i,d)=>(e.openBlock(),e.createElementBlock("div",S,[l.searchFields&&l.searchFields.length?(e.openBlock(),e.createBlock(e.unref(V),{key:0,modelValue:s.value,"onUpdate:modelValue":d[0]||(d[0]=a=>s.value=a),fields:l.searchFields,collapsible:l.collapsible,"collapsed-count":l.collapsedCount,onSearch:d[1]||(d[1]=a=>u("search",a)),onReset:d[2]||(d[2]=a=>u("reset"))},null,8,["modelValue","fields","collapsible","collapsed-count"])):e.createCommentVNode("",!0),i.$slots.toolbar?(e.openBlock(),e.createElementBlock("div",D,[e.renderSlot(i.$slots,"toolbar",{},void 0,!0)])):e.createCommentVNode("",!0),e.createVNode(e.unref(n.ElTable),e.mergeProps({ref_key:"tableRef",ref:m},i.$attrs,{data:l.data,loading:l.loading,onSelectionChange:d[3]||(d[3]=a=>u("selection-change",a)),onSortChange:d[4]||(d[4]=a=>u("sort-change",a))}),{default:e.withCtx(()=>[l.showSelection?(e.openBlock(),e.createBlock(e.unref(n.ElTableColumn),{key:0,type:"selection",width:"50",fixed:"left"})):e.createCommentVNode("",!0),l.showIndex?(e.openBlock(),e.createBlock(e.unref(n.ElTableColumn),{key:1,type:"index",label:"序号",width:"60",fixed:"left"})):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.columns,a=>(e.openBlock(),e.createBlock(e.unref(n.ElTableColumn),{key:a.prop,prop:a.prop,label:a.label,width:a.width,"min-width":a.minWidth,fixed:a.fixed,sortable:a.sortable,align:a.align??"center"},{default:e.withCtx(p=>[e.renderSlot(i.$slots,a.prop,{row:p.row,index:p.$index},()=>[e.createElementVNode("span",null,e.toDisplayString(a.formatter?a.formatter(p.row,a,p.row[a.prop],p.$index):p.row[a.prop]),1)],!0)]),_:2},1032,["prop","label","width","min-width","fixed","sortable","align"]))),128)),e.renderSlot(i.$slots,"default",{},void 0,!0)]),_:3},16,["data","loading"]),l.showPagination?(e.openBlock(),e.createElementBlock("div",N,[e.createVNode(e.unref(n.ElPagination),{"current-page":l.pagination.current,"onUpdate:currentPage":d[5]||(d[5]=a=>l.pagination.current=a),"page-size":l.pagination.pageSize,"onUpdate:pageSize":d[6]||(d[6]=a=>l.pagination.pageSize=a),total:l.pagination.total,"page-sizes":l.pageSizes,layout:l.paginationLayout,background:"",onCurrentChange:d[7]||(d[7]=a=>u("current-change",a)),onSizeChange:d[8]||(d[8]=a=>u("size-change",a))},null,8,["current-page","page-size","total","page-sizes","layout"])])):e.createCommentVNode("",!0)]))}}),B=y(U,[["__scopeId","data-v-70d01eeb"]]);B.install=l=>{l.component(B.name??"EeFormTable",B)};const F=[h,g,V,b,B];function E(l){F.forEach(k=>{l.use(k)})}const $={install:E};exports.EeDictSelect=h;exports.EeFormDialog=b;exports.EeFormTable=B;exports.EeSearchBar=V;exports.EeStatusTag=g;exports.default=$;exports.install=E;
1
+ "use strict";var Ue=Object.create;var J=Object.defineProperty;var Re=Object.getOwnPropertyDescriptor;var Ae=Object.getOwnPropertyNames;var Le=Object.getPrototypeOf,Oe=Object.prototype.hasOwnProperty;var Ie=(t,n,l,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let u of Ae(n))!Oe.call(t,u)&&u!==l&&J(t,u,{get:()=>n[u],enumerable:!(a=Re(n,u))||a.enumerable});return t};var Me=(t,n,l)=>(l=t!=null?Ue(Le(t)):{},Ie(n||!t||!t.__esModule?J(l,"default",{value:t,enumerable:!0}):l,t));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),o=require("element-plus"),P=e.defineComponent({name:"EeDictSelect",__name:"index",props:{modelValue:{},options:{},request:{},valueField:{default:"value"},labelField:{default:"label"},size:{default:"default"}},emits:["update:modelValue","change","clear","focus","blur"],setup(t,{emit:n}){const l=t,a=n,u=e.ref(!1),d=e.ref([]),p=e.computed(()=>(l.options??d.value).map(m=>({value:String(m[l.valueField]??""),label:String(m[l.labelField]??""),disabled:m.disabled??!1})));async function k(){if(!l.options&&l.request){u.value=!0;try{d.value=await l.request()}finally{u.value=!1}}}return e.onMounted(k),e.watch(()=>l.request,k),(w,m)=>(e.openBlock(),e.createBlock(e.unref(o.ElSelect),e.mergeProps(w.$attrs,{"model-value":t.modelValue,loading:u.value,size:t.size,"onUpdate:modelValue":m[0]||(m[0]=r=>a("update:modelValue",r)),onChange:m[1]||(m[1]=r=>a("change",r)),onClear:m[2]||(m[2]=r=>a("clear")),onFocus:m[3]||(m[3]=r=>a("focus",r)),onBlur:m[4]||(m[4]=r=>a("blur",r))}),{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,r=>(e.openBlock(),e.createBlock(e.unref(o.ElOption),{key:r.value,label:r.label,value:r.value,disabled:r.disabled},null,8,["label","value","disabled"]))),128))]),_:1},16,["model-value","loading","size"]))}});P.install=t=>{t.component(P.name??"EeDictSelect",P)};const $=e.defineComponent({name:"EeStatusTag",__name:"index",props:{value:{},mapping:{},fallbackLabel:{},defaultType:{default:"info"},defaultEffect:{default:"light"}},setup(t){const n=t,l=e.computed(()=>n.mapping.find(a=>a.value===n.value));return(a,u)=>{var d,p;return e.openBlock(),e.createBlock(e.unref(o.ElTag),e.mergeProps(a.$attrs,{type:((d=l.value)==null?void 0:d.type)??t.defaultType,effect:((p=l.value)==null?void 0:p.effect)??t.defaultEffect}),{default:e.withCtx(()=>{var k;return[e.createTextVNode(e.toDisplayString(((k=l.value)==null?void 0:k.label)??t.fallbackLabel??t.value),1)]}),_:1},16,["type","effect"])}}});$.install=t=>{t.component($.name??"EeStatusTag",$)};const He={class:"ee-search-bar"},Ge=e.defineComponent({name:"EeSearchBar",__name:"index",props:{modelValue:{},fields:{},inline:{type:Boolean,default:!0},labelWidth:{default:"auto"},collapsible:{type:Boolean,default:!1},collapsedCount:{default:3},size:{default:"default"}},emits:["update:modelValue","search","reset"],setup(t,{emit:n}){const l=t,a=n,u=e.ref(),d=e.ref(!1),p=e.computed(()=>{const i=24-k.value.reduce((c,h)=>c+(h.span??6),0)%24;return i===24?6:i}),k=e.computed(()=>!l.collapsible||d.value?l.fields:l.fields.slice(0,l.collapsedCount));function w(){a("search",{...l.modelValue})}function m(){const r={};l.fields.forEach(i=>{r[i.prop]=""}),a("update:modelValue",r),a("reset")}return(r,i)=>(e.openBlock(),e.createElementBlock("div",He,[e.createVNode(e.unref(o.ElForm),e.mergeProps({ref_key:"formRef",ref:u,model:t.modelValue,inline:t.inline,"label-width":t.labelWidth,size:t.size},r.$attrs),{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElRow),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,c=>(e.openBlock(),e.createBlock(e.unref(o.ElCol),{key:c.prop,span:c.span??6},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElFormItem),{label:c.label,prop:c.prop},{default:e.withCtx(()=>[(c.type??"input")==="input"?(e.openBlock(),e.createBlock(e.unref(o.ElInput),{key:0,modelValue:t.modelValue[c.prop],"onUpdate:modelValue":h=>t.modelValue[c.prop]=h,placeholder:c.placeholder??`请输入${c.label}`,clearable:""},null,8,["modelValue","onUpdate:modelValue","placeholder"])):c.type==="select"?(e.openBlock(),e.createBlock(e.unref(o.ElSelect),{key:1,modelValue:t.modelValue[c.prop],"onUpdate:modelValue":h=>t.modelValue[c.prop]=h,placeholder:c.placeholder??`请选择${c.label}`,clearable:""},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.options??[],h=>(e.openBlock(),e.createBlock(e.unref(o.ElOption),{key:h.value,label:h.label,value:h.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):c.type==="date"?(e.openBlock(),e.createBlock(e.unref(o.ElDatePicker),{key:2,modelValue:t.modelValue[c.prop],"onUpdate:modelValue":h=>t.modelValue[c.prop]=h,placeholder:c.placeholder??`请选择${c.label}`,style:{width:"100%"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):c.type==="date-range"?(e.openBlock(),e.createBlock(e.unref(o.ElDatePicker),{key:3,modelValue:t.modelValue[c.prop],"onUpdate:modelValue":h=>t.modelValue[c.prop]=h,type:"daterange","range-separator":c.placeholder??"至","start-placeholder":c.placeholder??"开始日期","end-placeholder":c.placeholder??"结束日期",style:{width:"100%"}},null,8,["modelValue","onUpdate:modelValue","range-separator","start-placeholder","end-placeholder"])):c.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(c.component),{key:4,modelValue:t.modelValue[c.prop],"onUpdate:modelValue":h=>t.modelValue[c.prop]=h},null,8,["modelValue","onUpdate:modelValue"])):e.createCommentVNode("",!0)]),_:2},1032,["label","prop"])]),_:2},1032,["span"]))),128)),e.createVNode(e.unref(o.ElCol),{span:p.value},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElFormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElButton),{type:"primary",size:t.size,round:"",onClick:w},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createTextVNode(" 搜索 ",-1)])]),_:1},8,["size"]),e.createVNode(e.unref(o.ElButton),{size:t.size,round:"",onClick:m},{default:e.withCtx(()=>[...i[2]||(i[2]=[e.createTextVNode(" 重置 ",-1)])]),_:1},8,["size"]),t.collapsible&&t.fields.length>t.collapsedCount?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:0,text:"",size:t.size,onClick:i[0]||(i[0]=c=>d.value=!d.value)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.value?"收起":"展开"),1)]),_:1},8,["size"])):e.createCommentVNode("",!0)]),_:1})]),_:1},8,["span"])]),_:1})]),_:1},16,["model","inline","label-width","size"])]))}}),le=(t,n)=>{const l=t.__vccOpts||t;for(const[a,u]of n)l[a]=u;return l},F=le(Ge,[["__scopeId","data-v-b65c74a4"]]);F.install=t=>{t.component(F.name??"EeSearchBar",F)};const je={class:"ee-form-dialog-footer"},Ke=e.defineComponent({name:"EeFormDialog",__name:"index",props:{modelValue:{type:Boolean},title:{default:"表单"},formData:{},fields:{},rules:{},width:{default:"600px"},labelWidth:{default:"auto"},loading:{type:Boolean,default:!1},size:{default:"default"}},emits:["update:modelValue","submit","cancel"],setup(t,{emit:n}){const l=t,a=n,u=e.ref(),d=e.computed(()=>{const w={};for(const m of Object.keys(l))["modelValue","title","formData","fields","rules","width","labelWidth","loading"].includes(m)||(w[m]=l[m]);return w});function p(){a("update:modelValue",!1),a("cancel")}async function k(){if(u.value)try{await u.value.validate(),a("submit",{...l.formData})}catch{}}return(w,m)=>(e.openBlock(),e.createBlock(e.unref(o.ElDialog),e.mergeProps(w.$attrs,{"model-value":t.modelValue,title:t.title,width:t.width,"onUpdate:modelValue":m[0]||(m[0]=r=>a("update:modelValue",r)),onClose:p}),{footer:e.withCtx(()=>[e.createElementVNode("span",je,[e.createVNode(e.unref(o.ElButton),{size:t.size,round:"",onClick:p},{default:e.withCtx(()=>[...m[1]||(m[1]=[e.createTextVNode("取消",-1)])]),_:1},8,["size"]),e.createVNode(e.unref(o.ElButton),{type:"primary",size:t.size,round:"",loading:t.loading,onClick:k},{default:e.withCtx(()=>[...m[2]||(m[2]=[e.createTextVNode(" 确定 ",-1)])]),_:1},8,["size","loading"])])]),default:e.withCtx(()=>[e.createVNode(e.unref(o.ElForm),e.mergeProps({ref_key:"formRef",ref:u,model:t.formData,rules:t.rules,"label-width":t.labelWidth,size:t.size},d.value),{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElRow),{gutter:20},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.fields,r=>(e.openBlock(),e.createBlock(e.unref(o.ElCol),{key:r.prop,span:r.span??24},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElFormItem),{label:r.label,prop:r.prop},{default:e.withCtx(()=>[(r.type??"input")==="input"?(e.openBlock(),e.createBlock(e.unref(o.ElInput),{key:0,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i,placeholder:r.placeholder??`请输入${r.label}`},null,8,["modelValue","onUpdate:modelValue","placeholder"])):r.type==="textarea"?(e.openBlock(),e.createBlock(e.unref(o.ElInput),{key:1,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i,type:"textarea",placeholder:r.placeholder??`请输入${r.label}`,rows:3},null,8,["modelValue","onUpdate:modelValue","placeholder"])):r.type==="select"?(e.openBlock(),e.createBlock(e.unref(o.ElSelect),{key:2,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i,placeholder:r.placeholder??`请选择${r.label}`,style:{width:"100%"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options??[],i=>(e.openBlock(),e.createBlock(e.unref(o.ElOption),{key:i.value,label:i.label,value:i.value},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder"])):r.type==="radio"?(e.openBlock(),e.createBlock(e.unref(o.ElRadioGroup),{key:3,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options??[],i=>(e.openBlock(),e.createBlock(e.unref(o.ElRadio),{key:i.value,label:i.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.label),1)]),_:2},1032,["label"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):r.type==="checkbox"?(e.openBlock(),e.createBlock(e.unref(o.ElCheckboxGroup),{key:4,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options??[],i=>(e.openBlock(),e.createBlock(e.unref(o.ElCheckbox),{key:i.value,label:i.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(i.label),1)]),_:2},1032,["label"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue"])):r.type==="switch"?(e.openBlock(),e.createBlock(e.unref(o.ElSwitch),{key:5,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i},null,8,["modelValue","onUpdate:modelValue"])):r.type==="date"?(e.openBlock(),e.createBlock(e.unref(o.ElDatePicker),{key:6,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i,placeholder:r.placeholder??`请选择${r.label}`,style:{width:"100%"}},null,8,["modelValue","onUpdate:modelValue","placeholder"])):r.component?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.component),{key:7,modelValue:t.formData[r.prop],"onUpdate:modelValue":i=>t.formData[r.prop]=i},null,8,["modelValue","onUpdate:modelValue"])):e.createCommentVNode("",!0)]),_:2},1032,["label","prop"])]),_:2},1032,["span"]))),128))]),_:1})]),_:1},16,["model","rules","label-width","size"])]),_:1},16,["model-value","title","width"]))}}),U=le(Ke,[["__scopeId","data-v-560e642c"]]);U.install=t=>{t.component(U.name??"EeFormDialog",U)};const oe=[10,20,50,100],qe="total, sizes, prev, pager, next, jumper",Q={show:!0,cols:3,maxRow:2,foldable:!0,foldDefault:!0},_={show:!1},j={show:!0,pageSize:20,pageSizes:oe,background:!0},We={show:!1},ee={show:!0,showView:!1,showEdit:!0,showDelete:!0,confirmDelete:!0,deleteConfirmTitle:"确认删除",deleteConfirmMessage:"确定要删除该条数据吗?"},te={show:!1},Xe={show:!0,showAdd:!1,showImport:!1,showExport:!1,showBatchDelete:!1},ae={show:!1},Ye={mode:"drawer",width:"40%",closeOnReset:!0,addTitle:"新增",editTitle:"编辑"},Ze=["data","loading","size","stripe","border","height","max-height","highlight-current-row","row-key"],Je=["prop","label","width","minWidth","align","fixed","sortable","show","formatter","dictKey","slotName","search","auth","children","className"];function Qe(t){const n=e.computed(()=>!!t.authChecker);function l(a){return!a||!t.authChecker?!0:t.authChecker(a)}return{authPass:l,authEnabled:n}}function _e(t){function n(a,u){var d;return a||(u&&((d=t.dictMap)!=null&&d[u])?t.dictMap[u]:[])}function l(a,u){var p;if(!a||!((p=t.dictMap)!=null&&p[a]))return String(u??"");const d=t.dictMap[a].find(k=>k.value===u);return(d==null?void 0:d.label)??String(u??"")}return{resolvedDict:n,dictLabel:l}}function et(t){const n=e.ref(!0),l=e.reactive({}),a=e.computed(()=>t.searchConfig===!1?_:t.searchConfig===!0?{...Q}:t.searchConfig?{...Q,...t.searchConfig}:_),u=e.computed(()=>a.value.show),d=e.computed(()=>a.value.cols||3),p=e.computed(()=>t.columns.filter(f=>{var C;return(C=f.search)==null?void 0:C.enable}).map(f=>{const C=f.search;return{...C,prop:f.prop,label:f.label,field:C.field||f.prop,placeholder:C.placeholder||f.label,dictKey:f.dictKey,props:C.props||{}}})),k=e.computed(()=>a.value.maxRow||2),w=e.computed(()=>d.value*k.value),m=e.computed(()=>a.value.foldable!==!1&&p.value.length>w.value);e.onMounted(()=>{a.value.foldDefault!==!1&&(n.value=!1)});const r=e.computed(()=>!n.value&&m.value?p.value.slice(0,w.value):p.value),i=e.computed(()=>24/d.value);function c(){p.value.forEach(f=>{l[f.field]=f.defaultValue??""})}function h(){const f={};return p.value.forEach(C=>{f[C.field]=C.defaultValue??""}),f}function V(){const f={};for(const[C,E]of Object.entries(l))E!==""&&E!==null&&E!==void 0&&(f[C]=E);return f}function x(){Object.assign(l,h())}function S(){n.value=!n.value}return{searchExpanded:n,searchParams:l,searchCfg:a,showSearch:u,searchCols:d,allSearchFields:p,visibleSearchFields:r,showFoldBtn:m,actionColSpan:i,initSearchParams:c,getDefaultSearchParams:h,getActiveSearchParams:V,resetSearchParams:x,toggleFold:S}}function tt(t){const n=e.reactive({current:1,pageSize:20,total:0}),l=e.computed(()=>t.pagination===!1?We:t.pagination===!0?{...j}:t.pagination?{...j,...t.pagination}:{...j,show:!0}),a=e.computed(()=>l.value.show!==!1),u=e.computed(()=>l.value.pageSizes||oe),d=e.computed(()=>l.value.layout||qe),p=e.computed(()=>l.value.background!==!1);e.onMounted(()=>{t.pagination&&typeof t.pagination=="object"&&(t.pagination.pageSize&&(n.pageSize=t.pagination.pageSize),t.pagination.total!==void 0&&(n.total=t.pagination.total))}),e.watch(()=>t.pagination,r=>{typeof r=="object"&&r&&(r.total!==void 0&&(n.total=r.total),r.pageSize&&(n.pageSize=r.pageSize))},{deep:!0});function k(r){n.current=r}function w(r){n.pageSize=r}function m(){n.current=1}return{pageState:n,paginationCfg:l,showPagination:a,pageSizesComputed:u,paginationLayoutComputed:d,paginationBgComputed:p,setPage:k,setPageSize:w,resetPage:m}}function at(t,n){const l=e.ref(),a=e.ref([]),u=e.ref(null),d=e.ref(!1),p=e.ref([]),k=e.computed(()=>({show:!1,type:"multiple",reserveSelection:!1,...t.selectionConfig})),w=e.computed(()=>({show:!1,...t.columnSetting})),m=e.computed(()=>w.value.show),r=e.computed(()=>t.columns.filter(f=>f.prop));e.onMounted(()=>{p.value=r.value.map(f=>f.prop)}),e.watch(()=>t.columns,()=>{p.value=[...new Set([...p.value.filter(f=>r.value.some(C=>C.prop===f)),...r.value.map(f=>f.prop)])]},{deep:!0});const i=e.computed(()=>r.value.filter(f=>f.show!==!1&&p.value.includes(f.prop)&&n.authPass(f.auth))),c=e.computed(()=>t.tableHeight||void 0),h=e.computed(()=>t.tableMaxHeight||void 0),V=e.computed(()=>t.autoHeight?{minHeight:`calc(100vh - ${(typeof t.autoHeight=="object"?t.autoHeight:{}).offset||200}px)`}:{});function x(f){a.value=f}function S(f){const C=t.rowKey||"id";u.value=f[C],a.value=[f]}return{tableRef:l,selection:a,singleSelection:u,columnSettingVisible:d,checkedColumns:p,selectionCfg:k,columnSettingCfg:w,showColumnSetting:m,allColumns:r,visibleColumns:i,tableComputedHeight:c,tableMaxHeightProp:h,tableWrapperStyle:V,handleSelectionChange:x,handleSingleSelect:S}}function lt(t,n){const l=e.ref([]),a=e.ref(!1),u=e.computed(()=>{var i;return!!((i=t.crudConfig)!=null&&i.api.list)});async function d(){var i;if((i=t.crudConfig)!=null&&i.api.list){a.value=!0;try{const c={page:n.pageState.current,pageSize:n.pageState.pageSize,...t.crudConfig.baseParams},h=n.getActiveSearchParams();Object.assign(c,h);const V=await t.crudConfig.api.list(c);l.value=V.data||[],n.setTotal(V.total??0)}catch(c){n.emit("request-error",c),o.ElMessage.error((c==null?void 0:c.message)||"请求失败")}finally{a.value=!1}}}async function p(){n.resetPage(),await d()}async function k(i){var c;if(!((c=t.crudConfig)!=null&&c.api.delete)){n.emit("delete",i);return}a.value=!0;try{const h=i[t.rowKey||"id"];await t.crudConfig.api.delete(h),o.ElMessage.success("删除成功"),n.emit("delete-success"),await d()}catch(h){n.emit("request-error",h),o.ElMessage.error((h==null?void 0:h.message)||"删除失败")}finally{a.value=!1}}async function w(i,c,h,V){if(!c){await k(i);return}try{await o.ElMessageBox.confirm(V||"确定要删除该条数据吗?",h||"确认删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}),await k(i)}catch{}}async function m(i){var c;if(!((c=t.crudConfig)!=null&&c.api.batchDelete)){n.emit("batch-delete",i);return}a.value=!0;try{await t.crudConfig.api.batchDelete(i),o.ElMessage.success("批量删除成功"),n.emit("batch-delete-success"),n.selection.value=[],await d()}catch(h){n.emit("request-error",h),o.ElMessage.error((h==null?void 0:h.message)||"批量删除失败")}finally{a.value=!1}}async function r(){const i=n.selection.value;if(i.length!==0)try{await o.ElMessageBox.confirm(`确定要删除选中的 ${i.length} 条数据吗?`,"确认批量删除",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});const c=i.map(h=>h[t.rowKey||"id"]);await m(c)}catch{}}return{internalData:l,loadingState:a,hasCrud:u,fetchData:d,refreshTable:p,doDelete:k,handleDelete:w,doBatchDelete:m,handleBatchDelete:r}}function ot(t){const n=e.ref(!1),l=e.ref(!1),a=e.ref(null),u=e.ref({}),d=e.ref(!1),p={...Ye,...t.drawerConfig},k=p.mode||"drawer";function w(){l.value=!1,a.value=null,u.value={},n.value=!0}function m(i){l.value=!0,a.value=i,u.value={...i},n.value=!0}function r(){n.value=!1}return{formVisible:n,isEditing:l,editingRow:a,formData:u,saving:d,drawerMode:k,drawerCfg:p,openAdd:w,openEdit:m,closeForm:r}}function nt(t,n){const l=e.ref(!1);async function a(){var u,d,p,k,w;l.value=!0,n.setLoading(!0);try{const m=await import("xlsx").catch(()=>null);if(!m){o.ElMessage.warning("请安装 xlsx 依赖: npm install xlsx");return}const r=((u=t.exportConfig)==null?void 0:u.mode)||"current";let i;if(r==="all"&&((p=(d=t.crudConfig)==null?void 0:d.api)!=null&&p.list)){const f={page:1,pageSize:99999,...t.crudConfig.baseParams},C=n.getActiveSearchParams();Object.assign(f,C),i=(await t.crudConfig.api.list(f)).data||[]}else i=[...n.getCurrentData()];const c=((k=t.exportConfig)==null?void 0:k.ignoreColumn)||[],h=n.visibleColumns.value.filter(f=>!c.includes(f.prop)).map(f=>({prop:f.prop,label:f.label})),V=[h.map(f=>f.label),...i.map(f=>h.map(C=>{var A;if(C.prop==="action")return"";const E=(A=t.columns.find(I=>I.prop===C.prop))==null?void 0:A.dictKey;return E?n.dictLabel(E,f[C.prop]):f[C.prop]??""}))],x=m.utils.aoa_to_sheet(V),S=m.utils.book_new();m.utils.book_append_sheet(S,x,"Sheet1"),m.writeFile(S,((w=t.exportConfig)==null?void 0:w.fileName)||"export.xlsx"),o.ElMessage.success("导出成功")}catch(m){o.ElMessage.error((m==null?void 0:m.message)||"导出失败")}finally{n.setLoading(!1),l.value=!1}}return{handleExport:a,exporting:l}}const rt={key:0,class:"ee-search-area"},ut=e.defineComponent({__name:"SearchArea",props:{showSearch:{type:Boolean},searchParams:{},visibleSearchFields:{},searchCols:{},actionColSpan:{},showFoldBtn:{type:Boolean},searchExpanded:{type:Boolean},size:{},resolveDict:{type:Function}},emits:["search","reset","toggle-fold"],setup(t){return(n,l)=>t.showSearch?(e.openBlock(),e.createElementBlock("div",rt,[e.createVNode(e.unref(o.ElForm),{model:t.searchParams,"label-width":"auto",size:t.size},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElRow),{gutter:12},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.visibleSearchFields,a=>(e.openBlock(),e.createBlock(e.unref(o.ElCol),{key:String(a.prop),span:24/t.searchCols},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElFormItem),{label:String(a.label)},{default:e.withCtx(()=>[a.type==="input"?(e.openBlock(),e.createBlock(e.unref(o.ElInput),e.mergeProps({key:0,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u,placeholder:String(a.placeholder||`请输入${a.label}`),clearable:""},{ref_for:!0},a.props||{}),null,16,["modelValue","onUpdate:modelValue","placeholder"])):a.type==="number"?(e.openBlock(),e.createBlock(e.unref(o.ElInputNumber),e.mergeProps({key:1,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u,placeholder:String(a.placeholder||`请输入${a.label}`),style:{width:"100%"}},{ref_for:!0},a.props||{}),null,16,["modelValue","onUpdate:modelValue","placeholder"])):a.type==="select"?(e.openBlock(),e.createBlock(e.unref(o.ElSelect),e.mergeProps({key:2,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u,placeholder:String(a.placeholder||`请选择${a.label}`),clearable:"",style:{width:"100%"}},{ref_for:!0},a.props||{}),{default:e.withCtx(()=>{var u;return[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.resolveDict((u=a.props)==null?void 0:u.options,a.dictKey),d=>(e.openBlock(),e.createBlock(e.unref(o.ElOption),{key:d.value,label:d.label,value:d.value},null,8,["label","value"]))),128))]}),_:2},1040,["modelValue","onUpdate:modelValue","placeholder"])):a.type==="radio"?(e.openBlock(),e.createBlock(e.unref(o.ElRadioGroup),e.mergeProps({key:3,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u},{ref_for:!0},a.props||{}),{default:e.withCtx(()=>{var u;return[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.resolveDict((u=a.props)==null?void 0:u.options,a.dictKey),d=>(e.openBlock(),e.createBlock(e.unref(o.ElRadio),{key:d.value,value:d.value},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.label),1)]),_:2},1032,["value"]))),128))]}),_:2},1040,["modelValue","onUpdate:modelValue"])):a.type==="checkbox"?(e.openBlock(),e.createBlock(e.unref(o.ElCheckboxGroup),e.mergeProps({key:4,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u},{ref_for:!0},a.props||{}),{default:e.withCtx(()=>{var u;return[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.resolveDict((u=a.props)==null?void 0:u.options,a.dictKey),d=>(e.openBlock(),e.createBlock(e.unref(o.ElCheckbox),{key:d.value,value:d.value,label:d.label},null,8,["value","label"]))),128))]}),_:2},1040,["modelValue","onUpdate:modelValue"])):a.type==="date"?(e.openBlock(),e.createBlock(e.unref(o.ElDatePicker),e.mergeProps({key:5,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u,placeholder:String(a.placeholder||`请选择${a.label}`),style:{width:"100%"}},{ref_for:!0},a.props||{}),null,16,["modelValue","onUpdate:modelValue","placeholder"])):a.type==="date-range"?(e.openBlock(),e.createBlock(e.unref(o.ElDatePicker),e.mergeProps({key:6,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u,type:"daterange","range-separator":"至","start-placeholder":"开始日期","end-placeholder":"结束日期",style:{width:"100%"}},{ref_for:!0},a.props||{}),null,16,["modelValue","onUpdate:modelValue"])):a.type==="textarea"?(e.openBlock(),e.createBlock(e.unref(o.ElInput),e.mergeProps({key:7,modelValue:t.searchParams[a.field],"onUpdate:modelValue":u=>t.searchParams[a.field]=u,placeholder:String(a.placeholder||`请输入${a.label}`),type:"textarea"},{ref_for:!0},a.props||{}),null,16,["modelValue","onUpdate:modelValue","placeholder"])):e.createCommentVNode("",!0)]),_:2},1032,["label"])]),_:2},1032,["span"]))),128)),e.createVNode(e.unref(o.ElCol),{span:t.actionColSpan},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElFormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElButton),{type:"primary",round:"",onClick:l[0]||(l[0]=a=>n.$emit("search"))},{default:e.withCtx(()=>[...l[3]||(l[3]=[e.createTextVNode("查询",-1)])]),_:1}),e.createVNode(e.unref(o.ElButton),{round:"",onClick:l[1]||(l[1]=a=>n.$emit("reset"))},{default:e.withCtx(()=>[...l[4]||(l[4]=[e.createTextVNode("重置",-1)])]),_:1}),t.showFoldBtn?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:0,text:"",size:t.size,onClick:l[2]||(l[2]=a=>n.$emit("toggle-fold"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.searchExpanded?"收起":"展开"),1)]),_:1},8,["size"])):e.createCommentVNode("",!0),e.renderSlot(n.$slots,"search-action",{params:t.searchParams})]),_:3})]),_:3},8,["span"])]),_:3})]),_:3},8,["model","size"])])):e.createCommentVNode("",!0)}}),it={key:0,class:"ee-toolbar"},st={class:"ee-toolbar-left"},ct={class:"ee-toolbar-right"},dt=e.defineComponent({__name:"TableToolbar",props:{show:{type:Boolean},toolbarCfg:{},size:{},deps:{}},emits:["add","import","export","batch-delete","refresh","column-setting"],setup(t){return(n,l)=>t.show?(e.openBlock(),e.createElementBlock("div",it,[e.createElementVNode("div",st,[t.toolbarCfg.showAdd&&t.deps.authPass(t.toolbarCfg.addAuth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:0,type:"primary",size:t.size,round:"",onClick:l[0]||(l[0]=a=>n.$emit("add"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.toolbarCfg.addText||"新增"),1)]),_:1},8,["size"])):e.createCommentVNode("",!0),t.toolbarCfg.showImport&&t.deps.authPass(t.toolbarCfg.importAuth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:1,size:t.size,round:"",onClick:l[1]||(l[1]=a=>n.$emit("import"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.toolbarCfg.importText||"导入"),1)]),_:1},8,["size"])):e.createCommentVNode("",!0),t.toolbarCfg.showExport&&t.deps.authPass(t.toolbarCfg.exportAuth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:2,size:t.size,round:"",onClick:l[2]||(l[2]=a=>n.$emit("export"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.toolbarCfg.exportText||"导出"),1)]),_:1},8,["size"])):e.createCommentVNode("",!0),t.toolbarCfg.showBatchDelete&&t.deps.selectionCount>0&&t.deps.authPass(t.toolbarCfg.batchDeleteAuth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:3,type:"danger",size:t.size,round:"",onClick:l[3]||(l[3]=a=>n.$emit("batch-delete"))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.toolbarCfg.batchDeleteText||"批量删除"),1)]),_:1},8,["size"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.toolbarCfg.customButtons||[],a=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:a.code},[t.deps.authPass(a.auth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:0,type:a.type,size:t.size,round:"",onClick:a.handler},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.text),1)]),_:2},1032,["type","size","onClick"])):e.createCommentVNode("",!0)],64))),128))]),e.createElementVNode("div",ct,[e.createVNode(e.unref(o.ElTooltip),{content:"刷新"},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElButton),{icon:"Refresh",size:t.size,circle:"",onClick:l[4]||(l[4]=a=>n.$emit("refresh"))},null,8,["size"])]),_:1}),t.deps.showColumnSetting?(e.openBlock(),e.createBlock(e.unref(o.ElTooltip),{key:0,content:"列设置"},{default:e.withCtx(()=>[e.createVNode(e.unref(o.ElButton),{icon:"Setting",size:t.size,circle:"",onClick:l[5]||(l[5]=a=>n.$emit("column-setting"))},null,8,["size"])]),_:1})):e.createCommentVNode("",!0),e.renderSlot(n.$slots,"toolbar-right")])])):e.createCommentVNode("",!0)}}),mt=e.defineComponent({__name:"FormDrawer",props:{visible:{type:Boolean},drawerMode:{},isEditing:{type:Boolean},editingRow:{},formData:{},drawerCfg:{},size:{},saving:{type:Boolean}},emits:["update:visible","save"],setup(t){return(n,l)=>t.drawerMode==="drawer"?(e.openBlock(),e.createBlock(e.unref(o.ElDrawer),{key:0,"model-value":t.visible,"onUpdate:modelValue":l[2]||(l[2]=a=>n.$emit("update:visible",a)),title:t.isEditing?t.drawerCfg.editTitle||"编辑":t.drawerCfg.addTitle||"新增",size:t.drawerCfg.width||"40%","destroy-on-close":t.drawerCfg.closeOnReset!==!1},{footer:e.withCtx(()=>[e.createVNode(e.unref(o.ElButton),{size:t.size,round:"",onClick:l[0]||(l[0]=a=>n.$emit("update:visible",!1))},{default:e.withCtx(()=>[...l[6]||(l[6]=[e.createTextVNode("取消",-1)])]),_:1},8,["size"]),e.createVNode(e.unref(o.ElButton),{type:"primary",size:t.size,round:"",loading:t.saving,onClick:l[1]||(l[1]=a=>n.$emit("save"))},{default:e.withCtx(()=>[...l[7]||(l[7]=[e.createTextVNode(" 确定 ",-1)])]),_:1},8,["size","loading"])]),default:e.withCtx(()=>[e.renderSlot(n.$slots,t.isEditing?"edit-form":"add-form",{row:t.editingRow,formData:t.formData})]),_:3},8,["model-value","title","size","destroy-on-close"])):(e.openBlock(),e.createBlock(e.unref(o.ElDialog),{key:1,"model-value":t.visible,"onUpdate:modelValue":l[5]||(l[5]=a=>n.$emit("update:visible",a)),title:t.isEditing?t.drawerCfg.editTitle||"编辑":t.drawerCfg.addTitle||"新增",width:t.drawerCfg.width||"600px","destroy-on-close":t.drawerCfg.closeOnReset!==!1},{footer:e.withCtx(()=>[e.createVNode(e.unref(o.ElButton),{size:t.size,round:"",onClick:l[3]||(l[3]=a=>n.$emit("update:visible",!1))},{default:e.withCtx(()=>[...l[8]||(l[8]=[e.createTextVNode("取消",-1)])]),_:1},8,["size"]),e.createVNode(e.unref(o.ElButton),{type:"primary",size:t.size,round:"",loading:t.saving,onClick:l[4]||(l[4]=a=>n.$emit("save"))},{default:e.withCtx(()=>[...l[9]||(l[9]=[e.createTextVNode(" 确定 ",-1)])]),_:1},8,["size","loading"])]),default:e.withCtx(()=>[e.renderSlot(n.$slots,t.isEditing?"edit-form":"add-form",{row:t.editingRow,formData:t.formData})]),_:3},8,["model-value","title","width","destroy-on-close"]))}}),ft={key:0},gt={key:1},ht={key:2},pt={key:0,class:"ee-pagination"},R=e.defineComponent({name:"EeFormTable",__name:"index",props:{columns:{},data:{},loading:{type:Boolean,default:!1},searchConfig:{},pagination:{},actionConfig:{type:[Object,Boolean]},toolbarConfig:{type:[Object,Boolean]},crudConfig:{},selectionConfig:{},exportConfig:{},drawerConfig:{},columnSetting:{},autoHeight:{},dictMap:{},authChecker:{},authMode:{default:"hide"},emptyText:{default:"暂无数据"},tableHeight:{},tableMaxHeight:{},size:{default:"default"},stripe:{type:Boolean,default:!1},border:{type:Boolean,default:!0},highlightCurrentRow:{type:Boolean,default:!1},rowKey:{default:"id"}},emits:["search","search-reset","page-change","selection-change","current-change","size-change","sort-change","row-click","row-dblclick","view","add","edit","delete","batch-delete","import","export","add-success","edit-success","delete-success","batch-delete-success","request-error","column-visible-change","form-save"],setup(t,{expose:n,emit:l}){const a=t,u=l,d=Qe(a),p=_e(a),{searchExpanded:k,searchParams:w,showSearch:m,searchCols:r,visibleSearchFields:i,showFoldBtn:c,actionColSpan:h,initSearchParams:V,getActiveSearchParams:x,resetSearchParams:S,toggleFold:f}=et(a),{pageState:C,showPagination:E,pageSizesComputed:A,paginationLayoutComputed:I,paginationBgComputed:re,setPage:ue,setPageSize:ie,resetPage:M}=tt(a),{tableRef:K,selection:L,singleSelection:se,columnSettingVisible:q,checkedColumns:H,showColumnSetting:ce,allColumns:de,visibleColumns:W,tableComputedHeight:me,tableMaxHeightProp:fe,tableWrapperStyle:ge,selectionCfg:N,handleSelectionChange:he,handleSingleSelect:pe}=at(a,{authPass:d.authPass}),ve=lt(a,{searchParams:w,getActiveSearchParams:x,pageState:C,resetPage:M,setTotal:g=>{C.total=g},selection:L,emit:(g,...v)=>u(g,...v)}),{internalData:G,loadingState:X,hasCrud:T,fetchData:z,refreshTable:Y,handleDelete:Ce,handleBatchDelete:ke}=ve,y=ot(a),{handleExport:we}=nt(a,{visibleColumns:W,getActiveSearchParams:x,dictLabel:p.dictLabel,internalData:G,fetchData:z,setLoading:g=>{X.value=g},getCurrentData:()=>a.data||G.value}),D=e.computed(()=>({visible:!!y.formVisible.value,drawerMode:y.drawerMode,isEditing:y.isEditing.value??!1,editingRow:y.editingRow.value??null,formData:y.formData.value??{},drawerCfg:y.drawerCfg,saving:y.saving.value??!1,onVisibleChange:g=>{y.formVisible.value=g}})),O=e.computed({get:()=>q.value,set:g=>{q.value=g}}),B=e.computed(()=>a.actionConfig===!1?te:a.actionConfig===!0?{...ee}:a.actionConfig?{...ee,...a.actionConfig}:te),Z=e.computed(()=>{if(a.toolbarConfig===!1)return ae;const g={...Xe};return a.toolbarConfig===!0?{...g,show:!0}:a.toolbarConfig?{...g,...a.toolbarConfig}:ae}),be=e.computed(()=>T.value?G.value:a.data||[]),ye=e.computed(()=>X.value||a.loading);function Be(){M();const g=x();u("search",g),T.value&&z()}function Ve(){S(),u("search-reset"),T.value?z():u("search",{})}function Ee(g){ue(g),u("current-change",g),u("page-change",{currentPage:g,pageSize:C.pageSize}),T.value&&z()}function xe(g){ie(g),M(),u("size-change",g),u("page-change",{currentPage:1,pageSize:g}),T.value&&z()}function Se(){y.openAdd(),u("add")}function ze(g){y.openEdit(g),u("edit",g)}function De(g){Ce(g,B.value.confirmDelete!==!1,B.value.deleteConfirmTitle,B.value.deleteConfirmMessage)}function Ne(){ke()}function Te(){u("export"),we()}async function Pe(){var g,v;y.saving.value=!0;try{u("form-save",{...y.formData.value},y.isEditing.value??!1),y.isEditing.value&&((g=a.crudConfig)!=null&&g.api.edit)?(await a.crudConfig.api.edit(y.formData.value),o.ElMessage.success("编辑成功"),u("edit-success")):!y.isEditing.value&&((v=a.crudConfig)!=null&&v.api.add)&&(await a.crudConfig.api.add(y.formData.value),o.ElMessage.success("新增成功"),u("add-success")),y.closeForm(),await z()}catch(s){u("request-error",s)}finally{y.saving.value=!1}}const $e=e.computed(()=>{const g={};for(const v of Object.keys(a))!Ze.includes(v)&&!v.startsWith("on")&&(g[v]=a[v]);return g});function Fe(g){const v={};for(const[s,b]of Object.entries(g))Je.includes(s)||(v[s]=b);return v}return e.onMounted(()=>{V(),T.value&&z()}),n({refresh:Y,fetchData:z,getSelection:()=>L.value,tableRef:K}),(g,v)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["ee-form-table",[`ee-size--${t.size}`,{"ee-stripe":t.stripe,"ee-border":t.border}]])},[e.createVNode(ut,{"show-search":!!e.unref(m),"search-params":e.unref(w),"visible-search-fields":e.unref(i),"search-cols":e.unref(r),"action-col-span":e.unref(h),"show-fold-btn":!!e.unref(c),"search-expanded":!!e.unref(k),size:t.size,"resolve-dict":e.unref(p).resolvedDict,onSearch:Be,onReset:Ve,onToggleFold:e.unref(f)},{"search-action":e.withCtx(({params:s})=>[e.renderSlot(g.$slots,"search-action",{params:s})]),_:3},8,["show-search","search-params","visible-search-fields","search-cols","action-col-span","show-fold-btn","search-expanded","size","resolve-dict","onToggleFold"]),e.createVNode(dt,{show:!!Z.value.show,"toolbar-cfg":Z.value,size:t.size,deps:{authPass:e.unref(d).authPass,selectionCount:e.unref(L).length,showColumnSetting:!!e.unref(ce)},onAdd:Se,onImport:v[0]||(v[0]=s=>g.$emit("import")),onExport:Te,onBatchDelete:Ne,onRefresh:v[1]||(v[1]=s=>e.unref(Y)()),onColumnSetting:v[2]||(v[2]=s=>O.value=!0)},{"toolbar-right":e.withCtx(()=>[e.renderSlot(g.$slots,"toolbar-right")]),_:3},8,["show","toolbar-cfg","size","deps"]),e.createElementVNode("div",{class:"ee-table-wrapper",style:e.normalizeStyle(e.unref(ge))},[e.createVNode(e.unref(o.ElTable),e.mergeProps({ref_key:"tableRef",ref:K,data:be.value,loading:ye.value,size:t.size,stripe:t.stripe,border:t.border,height:e.unref(me),"max-height":e.unref(fe),"highlight-current-row":t.highlightCurrentRow,"row-key":t.rowKey,onSelectionChange:v[3]||(v[3]=s=>{e.unref(he)(s),g.$emit("selection-change",s)}),onRowClick:v[4]||(v[4]=s=>g.$emit("row-click",s)),onRowDblclick:v[5]||(v[5]=s=>g.$emit("row-dblclick",s)),onSortChange:v[6]||(v[6]=s=>g.$emit("sort-change",s))},$e.value),{empty:e.withCtx(()=>[e.renderSlot(g.$slots,"empty",{},()=>[e.createVNode(e.unref(o.ElEmpty),{description:t.emptyText||"暂无数据"},null,8,["description"])])]),default:e.withCtx(()=>[e.unref(N).show&&e.unref(N).type==="multiple"?(e.openBlock(),e.createBlock(e.unref(o.ElTableColumn),{key:0,type:"selection",width:"50",fixed:"left",selectable:e.unref(N).disabledRow?s=>!e.unref(N).disabledRow(s):void 0,"reserve-selection":e.unref(N).reserveSelection},null,8,["selectable","reserve-selection"])):e.createCommentVNode("",!0),e.unref(N).show&&e.unref(N).type==="single"?(e.openBlock(),e.createBlock(e.unref(o.ElTableColumn),{key:1,width:"50",fixed:"left"},{default:e.withCtx(({row:s})=>[e.createVNode(e.unref(o.ElRadio),{"model-value":e.unref(se)===s[t.rowKey||"id"],value:s[t.rowKey||"id"],onChange:()=>{e.unref(pe)(s),g.$emit("selection-change",e.unref(L))}},null,8,["model-value","value","onChange"])]),_:1})):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(W),s=>(e.openBlock(),e.createBlock(e.unref(o.ElTableColumn),e.mergeProps({key:s.prop,prop:s.prop,label:s.label,width:s.width,"min-width":s.minWidth,fixed:s.fixed,sortable:s.sortable,align:s.align||"center","class-name":s.className},{ref_for:!0},Fe(s)),{default:e.withCtx(b=>[e.renderSlot(g.$slots,s.slotName||s.prop,{row:b.row,index:b.$index,column:s},()=>[s.formatter?(e.openBlock(),e.createElementBlock("span",ft,e.toDisplayString(s.formatter(b.row,s,b.row[s.prop],b.$index)),1)):s.dictKey?(e.openBlock(),e.createElementBlock("span",gt,e.toDisplayString(e.unref(p).dictLabel(s.dictKey,b.row[s.prop])),1)):(e.openBlock(),e.createElementBlock("span",ht,e.toDisplayString(b.row[s.prop]??"-"),1))])]),_:2},1040,["prop","label","width","min-width","fixed","sortable","align","class-name"]))),128)),B.value.show?(e.openBlock(),e.createBlock(e.unref(o.ElTableColumn),{key:2,label:B.value.label||"操作",width:B.value.width,fixed:B.value.fixed??"right",align:B.value.align||"center"},{default:e.withCtx(({row:s})=>[e.renderSlot(g.$slots,"action-before",{row:s}),B.value.showView&&e.unref(d).authPass(B.value.viewAuth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:0,type:"primary",link:"",size:t.size,onClick:b=>g.$emit("view",s)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B.value.viewText||"查看"),1)]),_:1},8,["size","onClick"])):e.createCommentVNode("",!0),B.value.showEdit&&e.unref(d).authPass(B.value.editAuth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:1,type:"primary",link:"",size:t.size,onClick:b=>ze(s)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B.value.editText||"编辑"),1)]),_:1},8,["size","onClick"])):e.createCommentVNode("",!0),B.value.showDelete&&e.unref(d).authPass(B.value.deleteAuth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:2,type:"danger",link:"",size:t.size,onClick:b=>De(s)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B.value.deleteText||"删除"),1)]),_:1},8,["size","onClick"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value.customButtons||[],b=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:b.code},[(!b.show||b.show(s))&&e.unref(d).authPass(b.auth)?(e.openBlock(),e.createBlock(e.unref(o.ElButton),{key:0,type:b.type||"default",link:"",size:t.size,onClick:kt=>b.handler(s)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.text),1)]),_:2},1032,["type","size","onClick"])):e.createCommentVNode("",!0)],64))),128)),e.renderSlot(g.$slots,"action",{row:s})]),_:3},8,["label","width","fixed","align"])):e.createCommentVNode("",!0)]),_:3},16,["data","loading","size","stripe","border","height","max-height","highlight-current-row","row-key"])],4),e.unref(E)?(e.openBlock(),e.createElementBlock("div",pt,[e.createVNode(e.unref(o.ElPagination),{"current-page":e.unref(C).current,"onUpdate:currentPage":v[7]||(v[7]=s=>e.unref(C).current=s),"page-size":e.unref(C).pageSize,"onUpdate:pageSize":v[8]||(v[8]=s=>e.unref(C).pageSize=s),"page-sizes":e.unref(A),total:e.unref(C).total,layout:e.unref(I),background:e.unref(re),size:t.size,onCurrentChange:Ee,onSizeChange:xe},null,8,["current-page","page-size","page-sizes","total","layout","background","size"])])):e.createCommentVNode("",!0),e.createVNode(mt,{visible:D.value.visible,"drawer-mode":D.value.drawerMode,"is-editing":D.value.isEditing,"editing-row":D.value.editingRow,"form-data":D.value.formData,"drawer-cfg":D.value.drawerCfg,size:t.size,saving:D.value.saving,"onUpdate:visible":D.value.onVisibleChange,onSave:Pe},e.createSlots({_:2},[e.renderList(["add-form","edit-form"],s=>({name:s,fn:e.withCtx(b=>[e.renderSlot(g.$slots,s,e.normalizeProps(e.guardReactiveProps(b)))])}))]),1032,["visible","drawer-mode","is-editing","editing-row","form-data","drawer-cfg","size","saving","onUpdate:visible"]),e.createVNode(e.unref(o.ElDialog),{modelValue:O.value,"onUpdate:modelValue":v[11]||(v[11]=s=>O.value=s),title:"列设置",width:"400px","close-on-click-modal":!1},{footer:e.withCtx(()=>[e.createVNode(e.unref(o.ElButton),{size:t.size,round:"",onClick:v[10]||(v[10]=s=>O.value=!1)},{default:e.withCtx(()=>[...v[12]||(v[12]=[e.createTextVNode("关闭",-1)])]),_:1},8,["size"])]),default:e.withCtx(()=>[e.createVNode(e.unref(o.ElCheckboxGroup),{modelValue:e.unref(H),"onUpdate:modelValue":v[9]||(v[9]=s=>e.isRef(H)?H.value=s:null)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(de),s=>(e.openBlock(),e.createBlock(e.unref(o.ElCheckbox),{key:s.prop,value:s.prop,label:s.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])],2))}});R.install=t=>{t.component(R.name??"EeFormTable",R)};const vt=[P,$,F,U,R];function ne(t){vt.forEach(n=>{t.use(n)})}const Ct={install:ne};exports.EeDictSelect=P;exports.EeFormDialog=U;exports.EeFormTable=R;exports.EeSearchBar=F;exports.EeStatusTag=$;exports.default=Ct;exports.install=ne;
package/lib/index.d.ts CHANGED
@@ -5,6 +5,8 @@ import { default as EeSearchBar } from './components/ee-search-bar';
5
5
  import { default as EeFormDialog } from './components/ee-form-dialog';
6
6
  import { default as EeFormTable } from './components/ee-form-table';
7
7
  export type { DictOption, SearchField, TableColumn, FormField, Pagination, StatusMapping } from './utils/types';
8
+ export type { ColumnSearchItem, SearchConfig, PaginationConfig, ActionConfig, ActionButton, ToolbarConfig, ToolbarButton, CrudConfig, CrudApi, SelectionConfig, ExportConfig, DrawerConfig, ColumnSettingConfig, AutoHeightConfig, } from './components/ee-form-table/types';
9
+ export type { EeFormTableProps } from './components/ee-form-table/types';
8
10
  export declare function install(app: App): void;
9
11
  declare const EasyEpUI: {
10
12
  install: typeof install;
package/lib/style.css CHANGED
@@ -1 +1 @@
1
- .ee-search-bar[data-v-64bb08e9]{margin-bottom:16px}.ee-search-bar .el-form-item[data-v-64bb08e9]{margin-bottom:0}.ee-form-dialog-footer[data-v-0307e8cf]{display:flex;justify-content:flex-end;gap:12px}.ee-form-table-toolbar[data-v-70d01eeb]{margin-bottom:16px;display:flex;align-items:center;gap:12px}.ee-form-table-pagination[data-v-70d01eeb]{margin-top:16px;display:flex;justify-content:flex-end}
1
+ .ee-search-bar[data-v-b65c74a4]{margin-bottom:16px}.ee-search-bar .el-form-item[data-v-b65c74a4]{margin-bottom:0}.ee-form-dialog-footer[data-v-560e642c]{display:flex;justify-content:flex-end;gap:12px}.ee-form-table{display:flex;flex-direction:column;height:100%;background:#fff;border-radius:4px}.ee-search-area{padding:16px 16px 0;border-bottom:1px solid #ebeef5}.ee-search-area .el-form-item{margin-bottom:16px}.ee-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;flex-shrink:0}.ee-toolbar-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ee-toolbar-right{display:flex;align-items:center;gap:8px}.ee-table-wrapper{flex:1;overflow:auto;padding:0 16px}.ee-table-wrapper .el-table{width:100%}.ee-pagination{display:flex;justify-content:flex-end;padding:12px 16px;border-top:1px solid #ebeef5;flex-shrink:0}.ee-size--small{font-size:13px}.ee-size--large{font-size:16px}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy-ep-ui",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Enterprise Element Plus 二次封装组件库 - Easy EP UI",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
@@ -38,8 +38,8 @@
38
38
  "prepublishOnly": "npm run clean && npm run build"
39
39
  },
40
40
  "peerDependencies": {
41
- "vue": "^3.4.0",
42
- "element-plus": "^2.8.0"
41
+ "element-plus": "^2.8.0",
42
+ "vue": "^3.4.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@vitejs/plugin-vue": "^5.1.0",
@@ -48,7 +48,8 @@
48
48
  "vite": "^5.4.0",
49
49
  "vite-plugin-dts": "^4.0.0",
50
50
  "vitepress": "^1.3.0",
51
- "vue": "^3.4.0"
51
+ "vue": "^3.4.0",
52
+ "xlsx": "^0.18.5"
52
53
  },
53
54
  "keywords": [
54
55
  "vue3",