m-eleplus-crud 0.0.4 → 0.0.6

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 (106) hide show
  1. package/README.md +31 -31
  2. package/dist/index.full.js +6 -7
  3. package/dist/index.full.min.js +6 -6
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +6 -6
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +6 -7
  8. package/dist/locale/en.js +1 -1
  9. package/dist/locale/en.min.js +1 -1
  10. package/dist/locale/en.min.mjs +1 -1
  11. package/dist/locale/en.mjs +1 -1
  12. package/dist/locale/zh-cn.js +1 -1
  13. package/dist/locale/zh-cn.min.js +1 -1
  14. package/dist/locale/zh-cn.min.mjs +1 -1
  15. package/dist/locale/zh-cn.mjs +1 -1
  16. package/es/component.mjs.map +1 -1
  17. package/es/index.mjs +3 -3
  18. package/es/make-installer.mjs.map +1 -1
  19. package/es/packages/components/barcode/index.mjs.map +1 -1
  20. package/es/packages/components/barcode/src/barcode.mjs.map +1 -1
  21. package/es/packages/components/barcode/src/barcode2.mjs.map +1 -1
  22. package/es/packages/components/config-provider/src/config-provider-props.mjs.map +1 -1
  23. package/es/packages/components/config-provider/src/hooks/use-global-config.mjs.map +1 -1
  24. package/es/packages/components/crud/index.mjs +2 -2
  25. package/es/packages/components/crud/index.mjs.map +1 -1
  26. package/es/packages/components/crud/src/crud.mjs +53 -599
  27. package/es/packages/components/crud/src/crud.mjs.map +1 -1
  28. package/es/packages/components/crud/src/crud2.mjs +598 -53
  29. package/es/packages/components/crud/src/crud2.mjs.map +1 -1
  30. package/es/packages/components/dialog/index.mjs.map +1 -1
  31. package/es/packages/components/form/src/form.mjs.map +1 -1
  32. package/es/packages/components/form/src/form2.mjs.map +1 -1
  33. package/es/packages/components/index.mjs +3 -3
  34. package/es/packages/components/pagination/index.mjs.map +1 -1
  35. package/es/packages/components/pagination/src/pagination.mjs.map +1 -1
  36. package/es/packages/components/pagination/src/pagination2.mjs.map +1 -1
  37. package/es/packages/components/picture/index.mjs +2 -2
  38. package/es/packages/components/picture/index.mjs.map +1 -1
  39. package/es/packages/components/picture/src/picture.mjs +26 -19
  40. package/es/packages/components/picture/src/picture.mjs.map +1 -1
  41. package/es/packages/components/picture/src/picture2.mjs +19 -26
  42. package/es/packages/components/picture/src/picture2.mjs.map +1 -1
  43. package/es/packages/components/qrcode/index.mjs.map +1 -1
  44. package/es/packages/components/qrcode/src/qrcode.mjs.map +1 -1
  45. package/es/packages/components/qrcode/src/qrcode2.mjs.map +1 -1
  46. package/es/packages/components/search/index.mjs +2 -2
  47. package/es/packages/components/search/src/search.mjs +25 -423
  48. package/es/packages/components/search/src/search.mjs.map +1 -1
  49. package/es/packages/components/search/src/search2.mjs +423 -25
  50. package/es/packages/components/search/src/search2.mjs.map +1 -1
  51. package/es/packages/components/table/index.mjs.map +1 -1
  52. package/es/packages/components/table/src/table.mjs.map +1 -1
  53. package/es/packages/components/table/src/table2.mjs.map +1 -1
  54. package/es/packages/hooks/use-size/index.mjs.map +1 -1
  55. package/es/packages/utils/browser.mjs.map +1 -1
  56. package/es/version.d.ts +1 -1
  57. package/es/version.mjs +1 -1
  58. package/es/version.mjs.map +1 -1
  59. package/global.d.ts +17 -17
  60. package/lib/component.js.map +1 -1
  61. package/lib/index.js +3 -3
  62. package/lib/make-installer.js.map +1 -1
  63. package/lib/packages/components/barcode/index.js.map +1 -1
  64. package/lib/packages/components/barcode/src/barcode.js.map +1 -1
  65. package/lib/packages/components/barcode/src/barcode2.js.map +1 -1
  66. package/lib/packages/components/config-provider/src/config-provider-props.js.map +1 -1
  67. package/lib/packages/components/config-provider/src/hooks/use-global-config.js.map +1 -1
  68. package/lib/packages/components/crud/index.js +2 -2
  69. package/lib/packages/components/crud/index.js.map +1 -1
  70. package/lib/packages/components/crud/src/crud.js +54 -599
  71. package/lib/packages/components/crud/src/crud.js.map +1 -1
  72. package/lib/packages/components/crud/src/crud2.js +598 -54
  73. package/lib/packages/components/crud/src/crud2.js.map +1 -1
  74. package/lib/packages/components/dialog/index.js.map +1 -1
  75. package/lib/packages/components/form/src/form.js.map +1 -1
  76. package/lib/packages/components/form/src/form2.js.map +1 -1
  77. package/lib/packages/components/index.js +3 -3
  78. package/lib/packages/components/pagination/index.js.map +1 -1
  79. package/lib/packages/components/pagination/src/pagination.js.map +1 -1
  80. package/lib/packages/components/pagination/src/pagination2.js.map +1 -1
  81. package/lib/packages/components/picture/index.js +2 -2
  82. package/lib/packages/components/picture/index.js.map +1 -1
  83. package/lib/packages/components/picture/src/picture.js +26 -20
  84. package/lib/packages/components/picture/src/picture.js.map +1 -1
  85. package/lib/packages/components/picture/src/picture2.js +20 -26
  86. package/lib/packages/components/picture/src/picture2.js.map +1 -1
  87. package/lib/packages/components/qrcode/index.js.map +1 -1
  88. package/lib/packages/components/qrcode/src/qrcode.js.map +1 -1
  89. package/lib/packages/components/qrcode/src/qrcode2.js.map +1 -1
  90. package/lib/packages/components/search/index.js +2 -2
  91. package/lib/packages/components/search/src/search.js +26 -423
  92. package/lib/packages/components/search/src/search.js.map +1 -1
  93. package/lib/packages/components/search/src/search2.js +423 -26
  94. package/lib/packages/components/search/src/search2.js.map +1 -1
  95. package/lib/packages/components/table/index.js.map +1 -1
  96. package/lib/packages/components/table/src/table.js.map +1 -1
  97. package/lib/packages/components/table/src/table2.js.map +1 -1
  98. package/lib/packages/hooks/use-size/index.js.map +1 -1
  99. package/lib/packages/utils/browser.js.map +1 -1
  100. package/lib/version.d.ts +1 -1
  101. package/lib/version.js +1 -1
  102. package/lib/version.js.map +1 -1
  103. package/package.json +103 -103
  104. package/theme-chalk/src/index.scss +8 -8
  105. package/theme-chalk/src/qrcode.scss +8 -8
  106. package/web-types.json +1 -1
@@ -1,60 +1,605 @@
1
- import { isNumber } from '../../../utils/types.mjs';
2
- import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
3
- import { useSizeProp } from '../../../hooks/use-size/index.mjs';
4
- import { isArray, isObject, isFunction, isString } from '@vue/shared';
1
+ import { defineComponent, useSlots, computed, ref, watch, onMounted, resolveComponent, openBlock, createElementBlock, createVNode, unref, createSlots, renderList, withCtx, renderSlot, normalizeProps, guardReactiveProps, createCommentVNode, createElementVNode, createBlock, createTextVNode, toDisplayString, mergeProps, nextTick } from 'vue';
2
+ import { cloneDeep, get, set } from 'lodash-unified';
3
+ import { crudProps, crudEmits } from './crud.mjs';
4
+ import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
5
+ import { ElMessageBox } from '../../../../node_modules/.pnpm/element-plus@2.9.1_vue@3.5.13_typescript@5.5.4_/node_modules/element-plus/es/components/message-box/index.mjs';
6
+ import { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';
7
+ import { useLocale } from '../../../hooks/use-locale/index.mjs';
5
8
 
6
- const crudProps = buildProps({
7
- size: useSizeProp,
8
- loading: {
9
- type: Boolean,
10
- default: false
11
- },
12
- data: {
13
- type: Array,
14
- required: true
15
- },
16
- search: {
17
- type: Object,
18
- default: () => ({})
19
- },
20
- total: {
21
- type: Number,
22
- default: 0
23
- },
24
- modelValue: {
25
- type: Object,
26
- required: true
27
- },
28
- permission: {
29
- type: Object,
30
- default: () => ({
9
+ const COMPONENT_NAME = "MCrud";
10
+ const __default__ = defineComponent({
11
+ name: COMPONENT_NAME
12
+ });
13
+ const _sfc_main = defineComponent({
14
+ ...__default__,
15
+ props: crudProps,
16
+ emits: crudEmits,
17
+ setup(__props, { expose: __expose, emit: __emit }) {
18
+ const props = __props;
19
+ const emit = __emit;
20
+ const slots = useSlots();
21
+ const globalConfig = useGlobalConfig();
22
+ const { t } = useLocale();
23
+ const searchSlots = computed(() => {
24
+ const keys = Object.keys(slots);
25
+ const result = {};
26
+ for (const key of keys) {
27
+ if (key.endsWith("Search")) {
28
+ result[key.replace("Search", "")] = slots[key];
29
+ }
30
+ }
31
+ return result;
32
+ });
33
+ const formSlots = computed(() => {
34
+ const keys = Object.keys(slots);
35
+ const result = {};
36
+ for (const key of keys) {
37
+ if (key.endsWith("Form")) {
38
+ result[key.replace("Form", "")] = slots[key];
39
+ }
40
+ }
41
+ return result;
42
+ });
43
+ const tableSlots = computed(() => {
44
+ const whites = ["topLeft", "topRight", "addBtn"];
45
+ const keys = Object.keys(slots);
46
+ const result = {};
47
+ for (const key of keys) {
48
+ if (!whites.includes(key) && !key.endsWith("Search") && !key.endsWith("Form")) {
49
+ result[key] = slots[key];
50
+ }
51
+ }
52
+ return result;
53
+ });
54
+ const crudOption = ref({
31
55
  addBtn: true,
32
56
  editBtn: true,
33
- delBtn: true
34
- })
35
- },
36
- select: {
37
- type: Array,
38
- default: () => []
39
- },
40
- beforeEnter: {
41
- type: Function
42
- },
43
- option: {
44
- type: definePropType(Object),
45
- required: false
57
+ delBtn: true,
58
+ addBtnText: t("m.crud.addBtnText"),
59
+ addBtnIcon: "Plus",
60
+ addDialogTitle: t("m.crud.addDialogTitle"),
61
+ editDialogTitle: t("m.crud.editDialogTitle"),
62
+ viewDialogTitle: t("m.crud.viewDialogTitle"),
63
+ dialogWidth: "800px",
64
+ column: []
65
+ });
66
+ const dialogType = ref("add");
67
+ const searchRef = ref();
68
+ const formRef = ref();
69
+ const tableRef = ref();
70
+ const dialogVisible = ref(false);
71
+ const tableHeight = ref(void 0);
72
+ const _modelForm = ref();
73
+ const _rowIndex = ref(-1);
74
+ const dialogTitle = computed(() => {
75
+ if (dialogType.value === "add") {
76
+ return crudOption.value.addDialogTitle;
77
+ }
78
+ if (dialogType.value === "edit") {
79
+ return crudOption.value.editDialogTitle;
80
+ }
81
+ return crudOption.value.viewDialogTitle;
82
+ });
83
+ const modelForm = computed({
84
+ get() {
85
+ return props.modelValue;
86
+ },
87
+ set(value) {
88
+ emit("update:modelValue", value);
89
+ }
90
+ });
91
+ const __firstModelForm = ref({});
92
+ __firstModelForm.value = props.modelValue;
93
+ const tableOption = ref({
94
+ menu: true,
95
+ column: []
96
+ });
97
+ const searchOption = ref({
98
+ column: []
99
+ });
100
+ const formOption = computed(() => {
101
+ let option = {
102
+ column: []
103
+ };
104
+ option = transFormOption(
105
+ Object.assign({}, option, copyObjectExcept(crudOption.value, ["column"]))
106
+ );
107
+ for (let i = 0; i < crudOption.value.column.length; i++) {
108
+ const item = cloneDeep(crudOption.value.column[i]);
109
+ const formColumn = transFormColumn(item);
110
+ if (["index", "single", "selection"].includes(item.type || "")) {
111
+ continue;
112
+ }
113
+ if (dialogType.value === "add") {
114
+ if (!item.addHide) {
115
+ option.column.push(formColumn);
116
+ }
117
+ } else if (dialogType.value === "edit") {
118
+ if (!item.editHide) {
119
+ option.column.push(formColumn);
120
+ }
121
+ } else {
122
+ if (!item.viewHide) {
123
+ option.column.push(formColumn);
124
+ }
125
+ }
126
+ }
127
+ return option;
128
+ });
129
+ const searchProxys = new Proxy(props.search, {
130
+ get(target, key) {
131
+ return get(target, key);
132
+ },
133
+ set(target, key, value) {
134
+ set(target, key, value);
135
+ return true;
136
+ }
137
+ });
138
+ const selectData = computed({
139
+ get() {
140
+ return props.select;
141
+ },
142
+ set(value) {
143
+ emit("update:select", value);
144
+ }
145
+ });
146
+ const transSearchColumn = (column) => {
147
+ const result = cloneDeep(column);
148
+ if (column.searchOrder) {
149
+ result.order = column.searchOrder;
150
+ } else {
151
+ delete result.order;
152
+ }
153
+ if (column.searchValue) {
154
+ result.value = column.searchValue;
155
+ } else {
156
+ delete result.value;
157
+ }
158
+ if (column.searchPlaceholder) {
159
+ result.placeholder = column.searchPlaceholder;
160
+ } else {
161
+ delete result.placeholder;
162
+ }
163
+ if (column.searchRules) {
164
+ result.rules = column.searchRules;
165
+ } else {
166
+ delete result.rules;
167
+ }
168
+ if (column.searchSpan) {
169
+ result.span = column.searchSpan;
170
+ } else {
171
+ delete result.span;
172
+ }
173
+ if (column.searchLabelWidth) {
174
+ result.labelWidth = column.searchLabelWidth;
175
+ } else {
176
+ delete result.labelWidth;
177
+ }
178
+ return result;
179
+ };
180
+ const transFormColumn = (column) => {
181
+ const result = cloneDeep(column);
182
+ if (column.formOrder) {
183
+ result.order = column.formOrder;
184
+ } else {
185
+ delete result.order;
186
+ }
187
+ if (column.formValue) {
188
+ result.value = column.formValue;
189
+ } else {
190
+ delete result.value;
191
+ }
192
+ if (column.formPlaceholder) {
193
+ result.placeholder = column.formPlaceholder;
194
+ } else {
195
+ delete result.placeholder;
196
+ }
197
+ if (column.formRules) {
198
+ result.rules = column.formRules;
199
+ } else {
200
+ delete result.rules;
201
+ }
202
+ if (column.formLabelWidth) {
203
+ result.labelWidth = column.formLabelWidth;
204
+ } else {
205
+ delete result.labelWidth;
206
+ }
207
+ if (column.formSpan || column.addSpan || column.editSpan || column.viewSpan) {
208
+ if (column.formSpan) {
209
+ result.span = column.formSpan;
210
+ }
211
+ if (dialogType.value === "add" && column.addSpan) {
212
+ result.span = column.addSpan;
213
+ } else if (dialogType.value === "edit" && column.editSpan) {
214
+ result.span = column.editSpan;
215
+ } else if (dialogType.value === "view" && column.viewSpan) {
216
+ result.span = column.viewSpan;
217
+ }
218
+ } else {
219
+ delete result.span;
220
+ }
221
+ return result;
222
+ };
223
+ const transSearchOption = (option) => {
224
+ const result = cloneDeep(option);
225
+ if (option.searchLabelWidth) {
226
+ result.labelWidth = option.searchLabelWidth;
227
+ } else {
228
+ delete result.labelWidth;
229
+ }
230
+ return result;
231
+ };
232
+ const transFormOption = (option) => {
233
+ const result = cloneDeep(option);
234
+ if (option.formLabelWidth) {
235
+ result.labelWidth = option.formLabelWidth;
236
+ } else {
237
+ delete result.labelWidth;
238
+ }
239
+ return result;
240
+ };
241
+ const currentPageChange = (page) => {
242
+ var _a;
243
+ (_a = searchRef.value) == null ? void 0 : _a.search(page);
244
+ };
245
+ const pageSizeChange = (pageSize) => {
246
+ var _a;
247
+ searchProxys.limit = pageSize;
248
+ (_a = searchRef.value) == null ? void 0 : _a.search();
249
+ };
250
+ const handleSearch = (form) => {
251
+ var _a;
252
+ (_a = tableRef.value) == null ? void 0 : _a.clearSelection();
253
+ emit("search", form);
254
+ };
255
+ const handleReset = () => {
256
+ var _a;
257
+ (_a = tableRef.value) == null ? void 0 : _a.clearSelection();
258
+ emit("reset");
259
+ };
260
+ const setTableHeight = () => {
261
+ nextTick(() => {
262
+ var _a, _b;
263
+ if (crudOption.value.height === "auto") {
264
+ const tableStyle = (_a = tableRef.value) == null ? void 0 : _a.$el;
265
+ const calcHeight = crudOption.value.calcHeight || ((_b = globalConfig.value) == null ? void 0 : _b.calcHeight) || 0;
266
+ tableHeight.value = document.documentElement.clientHeight - ((tableStyle == null ? void 0 : tableStyle.offsetTop) || 0) - 72 - calcHeight;
267
+ } else {
268
+ tableHeight.value = crudOption.value.height;
269
+ }
270
+ });
271
+ };
272
+ const rowAdd = () => {
273
+ dialogType.value = "add";
274
+ dialogVisible.value = true;
275
+ };
276
+ const rowEdit = (row, index) => {
277
+ _modelForm.value = cloneDeep(row);
278
+ _rowIndex.value = index;
279
+ dialogType.value = "edit";
280
+ modelForm.value = cloneDeep(row);
281
+ dialogVisible.value = true;
282
+ };
283
+ const rowView = (row, index) => {
284
+ _modelForm.value = cloneDeep(row);
285
+ _rowIndex.value = index;
286
+ dialogType.value = "view";
287
+ modelForm.value = cloneDeep(row);
288
+ dialogVisible.value = true;
289
+ };
290
+ const rowDel = (row, index) => {
291
+ ElMessageBox.confirm("\u6B64\u64CD\u4F5C\u5C06\u5220\u9664\u8BE5\u6570\u636E, \u662F\u5426\u7EE7\u7EED?", "\u63D0\u793A", {
292
+ confirmButtonText: "\u786E\u5B9A",
293
+ cancelButtonText: "\u53D6\u6D88",
294
+ type: "warning"
295
+ }).then(() => {
296
+ emit("rowDel", row, index);
297
+ }).catch(() => {
298
+ });
299
+ };
300
+ const dialogEnter = async (done, loading) => {
301
+ const valid = await formRef.value.validForm();
302
+ if (!valid) {
303
+ loading();
304
+ return;
305
+ }
306
+ if (props.beforeEnter && !await props.beforeEnter()) {
307
+ loading();
308
+ return;
309
+ }
310
+ if (dialogType.value === "add") {
311
+ emit("rowSave", modelForm.value, done, loading);
312
+ } else if (dialogType.value === "edit") {
313
+ emit("rowEdit", modelForm.value, done, loading);
314
+ }
315
+ };
316
+ const dialogCancel = () => {
317
+ emit("rowCancel", _modelForm.value || {}, _rowIndex.value, dialogType.value);
318
+ };
319
+ const dialogClose = () => {
320
+ _modelForm.value = null;
321
+ _rowIndex.value = -1;
322
+ if (formRef.value) {
323
+ formRef.value.clear();
324
+ modelForm.value = cloneDeep(__firstModelForm.value);
325
+ } else {
326
+ emit("update:modelValue", cloneDeep(__firstModelForm.value));
327
+ }
328
+ };
329
+ const copyObjectExcept = (sourceObj, excludeKeys = []) => {
330
+ const result = {};
331
+ Object.keys(sourceObj).forEach((key) => {
332
+ if (!excludeKeys.includes(key)) {
333
+ result[key] = sourceObj[key];
334
+ }
335
+ });
336
+ return result;
337
+ };
338
+ watch(
339
+ () => props.option,
340
+ (newVal) => {
341
+ if (newVal) {
342
+ crudOption.value = Object.assign({}, crudOption.value, newVal);
343
+ tableOption.value = Object.assign(
344
+ {},
345
+ tableOption.value,
346
+ copyObjectExcept(crudOption.value, ["column"])
347
+ );
348
+ searchOption.value = transSearchOption(
349
+ Object.assign(
350
+ {},
351
+ searchOption.value,
352
+ copyObjectExcept(crudOption.value, ["column"])
353
+ )
354
+ );
355
+ const searchColumns = [];
356
+ const tableColumns = [];
357
+ if (newVal.column && newVal.column.length) {
358
+ for (let i = 0; i < newVal.column.length; i++) {
359
+ const item = newVal.column[i];
360
+ if (item.search && !["index", "single", "selection"].includes(item.type || "")) {
361
+ searchColumns.push(transSearchColumn(item));
362
+ }
363
+ if (!item.hide) {
364
+ tableColumns.push(item);
365
+ }
366
+ }
367
+ searchOption.value.column = searchColumns;
368
+ tableOption.value.column = tableColumns;
369
+ }
370
+ }
371
+ },
372
+ {
373
+ immediate: true,
374
+ deep: true
375
+ }
376
+ );
377
+ onMounted(() => {
378
+ if (crudOption.value.height) {
379
+ setTableHeight();
380
+ }
381
+ });
382
+ __expose({
383
+ rowAdd,
384
+ rowEdit,
385
+ rowView,
386
+ rowDel
387
+ });
388
+ return (_ctx, _cache) => {
389
+ const _component_MSearch = resolveComponent("MSearch");
390
+ const _component_el_button = resolveComponent("el-button");
391
+ const _component_el_link = resolveComponent("el-link");
392
+ const _component_MTable = resolveComponent("MTable");
393
+ const _component_m_pagination = resolveComponent("m-pagination");
394
+ const _component_MForm = resolveComponent("MForm");
395
+ const _component_MDialog = resolveComponent("MDialog");
396
+ return openBlock(), createElementBlock("div", { class: "m-crud" }, [
397
+ createVNode(_component_MSearch, {
398
+ ref_key: "searchRef",
399
+ ref: searchRef,
400
+ model: unref(searchProxys),
401
+ option: searchOption.value,
402
+ size: _ctx.size || unref(globalConfig).size,
403
+ permission: _ctx.permission,
404
+ onSearch: handleSearch,
405
+ onReset: handleReset
406
+ }, createSlots({
407
+ _: 2
408
+ }, [
409
+ renderList(Object.keys(searchSlots.value), (slotKey, index) => {
410
+ return {
411
+ name: slotKey,
412
+ fn: withCtx((scope) => [
413
+ renderSlot(_ctx.$slots, slotKey + "Search", normalizeProps(guardReactiveProps(scope)))
414
+ ])
415
+ };
416
+ })
417
+ ]), 1032, ["model", "option", "size", "permission"]),
418
+ createCommentVNode("\u9876\u90E8\u64CD\u4F5C\u533A\u57DF"),
419
+ crudOption.value.addBtn || unref(slots).topLeft ? (openBlock(), createElementBlock("div", {
420
+ key: 0,
421
+ class: "m-search-top"
422
+ }, [
423
+ createElementVNode("div", { class: "m-search-left" }, [
424
+ crudOption.value.addBtn && !unref(slots).addBtn ? (openBlock(), createBlock(_component_el_button, {
425
+ key: 0,
426
+ size: _ctx.size || unref(globalConfig).size,
427
+ type: "primary",
428
+ icon: crudOption.value.addBtnIcon,
429
+ onClick: ($event) => rowAdd()
430
+ }, {
431
+ default: withCtx(() => [
432
+ createTextVNode(
433
+ toDisplayString(crudOption.value.addBtnText),
434
+ 1
435
+ )
436
+ ]),
437
+ _: 1
438
+ }, 8, ["size", "icon", "onClick"])) : createCommentVNode("v-if", true),
439
+ renderSlot(_ctx.$slots, "addBtn", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size }))),
440
+ renderSlot(_ctx.$slots, "topLeft", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size })))
441
+ ]),
442
+ createElementVNode("div", { class: "m-search-right" }, [
443
+ renderSlot(_ctx.$slots, "topRight", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size })))
444
+ ])
445
+ ])) : createCommentVNode("v-if", true),
446
+ createCommentVNode(""),
447
+ createCommentVNode("\u8868\u683C"),
448
+ createVNode(_component_MTable, {
449
+ ref_key: "tableRef",
450
+ ref: tableRef,
451
+ select: selectData.value,
452
+ "onUpdate:select": ($event) => selectData.value = $event,
453
+ data: _ctx.data,
454
+ size: _ctx.size || unref(globalConfig).size,
455
+ loading: _ctx.loading,
456
+ permission: _ctx.permission,
457
+ option: tableOption.value,
458
+ height: tableHeight.value,
459
+ "max-height": tableHeight.value
460
+ }, createSlots({
461
+ menu: withCtx((scope) => [
462
+ crudOption.value.editBtn && !unref(slots).editBtn ? (openBlock(), createBlock(_component_el_link, {
463
+ key: 0,
464
+ class: "m-control-btns",
465
+ type: "primary",
466
+ size: _ctx.size || unref(globalConfig).size,
467
+ underline: "never",
468
+ icon: "Edit",
469
+ onClick: ($event) => rowEdit(scope.row, scope.$index)
470
+ }, {
471
+ default: withCtx(() => [
472
+ createTextVNode(
473
+ toDisplayString(unref(t)("m.crud.editBtnText")),
474
+ 1
475
+ )
476
+ ]),
477
+ _: 2
478
+ }, 1032, ["size", "onClick"])) : createCommentVNode("v-if", true),
479
+ crudOption.value.editBtn && unref(slots).editBtn ? renderSlot(_ctx.$slots, "editBtn", normalizeProps(mergeProps({ key: 1 }, scope))) : createCommentVNode("v-if", true),
480
+ crudOption.value.delBtn && !unref(slots).delBtn ? (openBlock(), createBlock(_component_el_link, {
481
+ key: 2,
482
+ class: "m-control-btns",
483
+ type: "primary",
484
+ underline: "never",
485
+ size: _ctx.size || unref(globalConfig).size,
486
+ icon: "Delete",
487
+ onClick: ($event) => rowDel(scope.row, scope.$index)
488
+ }, {
489
+ default: withCtx(() => [
490
+ createTextVNode(
491
+ toDisplayString(unref(t)("m.crud.delBtnText")),
492
+ 1
493
+ )
494
+ ]),
495
+ _: 2
496
+ }, 1032, ["size", "onClick"])) : createCommentVNode("v-if", true),
497
+ crudOption.value.delBtn && unref(slots).delBtn ? renderSlot(_ctx.$slots, "delBtn", normalizeProps(mergeProps({ key: 3 }, scope))) : createCommentVNode("v-if", true),
498
+ crudOption.value.menu && unref(slots).menu && !(unref(slots).editBtn || unref(slots).delBtn) ? renderSlot(_ctx.$slots, "menu", normalizeProps(mergeProps({ key: 4 }, scope))) : createCommentVNode("v-if", true)
499
+ ]),
500
+ _: 2
501
+ }, [
502
+ renderList(Object.keys(tableSlots.value), (slotKey, index) => {
503
+ return {
504
+ name: slotKey,
505
+ fn: withCtx((scope) => [
506
+ renderSlot(_ctx.$slots, slotKey, normalizeProps(guardReactiveProps(scope)))
507
+ ])
508
+ };
509
+ })
510
+ ]), 1032, ["select", "onUpdate:select", "data", "size", "loading", "permission", "option", "height", "max-height"]),
511
+ createCommentVNode(""),
512
+ createCommentVNode("\u5206\u9875\u533A\u57DF"),
513
+ unref(searchProxys).page && _ctx.total ? (openBlock(), createElementBlock("div", {
514
+ key: 1,
515
+ class: "m-pagination-box"
516
+ }, [
517
+ createVNode(_component_m_pagination, {
518
+ small: (_ctx.size || unref(globalConfig).size) === "small",
519
+ total: _ctx.total,
520
+ "current-page": unref(searchProxys).page,
521
+ "page-size": unref(searchProxys).limit,
522
+ disabled: _ctx.loading,
523
+ onCurrentPage: currentPageChange,
524
+ onPageSize: pageSizeChange
525
+ }, null, 8, ["small", "total", "current-page", "page-size", "disabled"])
526
+ ])) : createCommentVNode("v-if", true),
527
+ createCommentVNode("\u65B0\u589E/\u7F16\u8F91/\u67E5\u770B\u5BF9\u8BDD\u6846"),
528
+ createVNode(_component_MDialog, {
529
+ modelValue: dialogVisible.value,
530
+ "onUpdate:modelValue": ($event) => dialogVisible.value = $event,
531
+ size: _ctx.size || unref(globalConfig).size,
532
+ title: dialogTitle.value,
533
+ width: crudOption.value.dialogWidth,
534
+ "save-btn": dialogType.value !== "view",
535
+ "cancel-btn": dialogType.value !== "view",
536
+ "save-btn-text": unref(t)("m.crud.dialogSaveBtnText"),
537
+ "cancel-btn-text": unref(t)("m.crud.dialogCancelBtnText"),
538
+ "save-btn-icon": dialogType.value === "add" ? "CirclePlus" : "CircleCheck",
539
+ onEnter: dialogEnter,
540
+ onCancel: dialogCancel,
541
+ onClose: dialogClose
542
+ }, {
543
+ default: withCtx(({ loading }) => [
544
+ createCommentVNode("\u6240\u6709\u7C7B\u578B\u9876\u90E8"),
545
+ renderSlot(_ctx.$slots, "allTop", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size, loading }))),
546
+ createCommentVNode(""),
547
+ createCommentVNode("\u65B0\u589E/\u7F16\u8F91\u7C7B\u578B\u9876\u90E8"),
548
+ dialogType.value !== "view" ? renderSlot(_ctx.$slots, "formTop", normalizeProps(mergeProps({ key: 0 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
549
+ createCommentVNode(""),
550
+ createCommentVNode("\u65B0\u589E\u7C7B\u578B\u9876\u90E8"),
551
+ dialogType.value === "add" ? renderSlot(_ctx.$slots, "addTop", normalizeProps(mergeProps({ key: 1 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
552
+ createCommentVNode(""),
553
+ createCommentVNode("\u7F16\u8F91\u7C7B\u578B\u9876\u90E8"),
554
+ dialogType.value === "edit" ? renderSlot(_ctx.$slots, "editTop", normalizeProps(mergeProps({ key: 2 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
555
+ createCommentVNode(""),
556
+ createCommentVNode("\u67E5\u770B\u7C7B\u578B\u9876\u90E8"),
557
+ dialogType.value === "view" ? renderSlot(_ctx.$slots, "viewTop", normalizeProps(mergeProps({ key: 3 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
558
+ createCommentVNode(""),
559
+ createVNode(_component_MForm, {
560
+ ref_key: "formRef",
561
+ ref: formRef,
562
+ loading,
563
+ size: _ctx.size || unref(globalConfig).size,
564
+ option: formOption.value,
565
+ model: modelForm.value,
566
+ readonly: dialogType.value === "view"
567
+ }, createSlots({
568
+ _: 2
569
+ }, [
570
+ renderList(Object.keys(formSlots.value), (slotKey, index) => {
571
+ return {
572
+ name: slotKey,
573
+ fn: withCtx((scope) => [
574
+ renderSlot(_ctx.$slots, slotKey + "Form", normalizeProps(guardReactiveProps(scope)))
575
+ ])
576
+ };
577
+ })
578
+ ]), 1032, ["loading", "size", "option", "model", "readonly"]),
579
+ createCommentVNode("\u6240\u6709\u7C7B\u578B\u5E95\u90E8"),
580
+ renderSlot(_ctx.$slots, "allBottom", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size, loading }))),
581
+ createCommentVNode(""),
582
+ createCommentVNode("\u65B0\u589E/\u7F16\u8F91\u7C7B\u578B\u5E95\u90E8"),
583
+ dialogType.value !== "view" ? renderSlot(_ctx.$slots, "formBottom", normalizeProps(mergeProps({ key: 4 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
584
+ createCommentVNode(""),
585
+ createCommentVNode("\u65B0\u589E\u7C7B\u578B\u5E95\u90E8"),
586
+ dialogType.value === "add" ? renderSlot(_ctx.$slots, "addBottom", normalizeProps(mergeProps({ key: 5 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
587
+ createCommentVNode(""),
588
+ createCommentVNode("\u7F16\u8F91\u7C7B\u578B\u5E95\u90E8"),
589
+ dialogType.value === "edit" ? renderSlot(_ctx.$slots, "editBottom", normalizeProps(mergeProps({ key: 6 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
590
+ createCommentVNode(""),
591
+ createCommentVNode("\u67E5\u770B\u7C7B\u578B\u5E95\u90E8"),
592
+ dialogType.value === "view" ? renderSlot(_ctx.$slots, "viewBottom", normalizeProps(mergeProps({ key: 7 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
593
+ createCommentVNode("")
594
+ ]),
595
+ _: 3
596
+ }, 8, ["modelValue", "onUpdate:modelValue", "size", "title", "width", "save-btn", "cancel-btn", "save-btn-text", "cancel-btn-text", "save-btn-icon"]),
597
+ createCommentVNode("")
598
+ ]);
599
+ };
46
600
  }
47
601
  });
48
- const crudEmits = {
49
- "update:select": (arr) => isArray(arr),
50
- "update:modelValue": (value) => isObject(value),
51
- search: (form) => isObject(form),
52
- reset: () => true,
53
- rowSave: (form, done, loading) => isObject(form) && isFunction(done) && isFunction(loading),
54
- rowEdit: (form, done, loading) => isObject(form) && isFunction(done) && isFunction(loading),
55
- rowCancel: (form, index, type) => isObject(form) && isNumber(index) && isString(type),
56
- rowDel: (row, index) => isObject(row) && isNumber(index)
57
- };
602
+ var Crud = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "crud.vue"]]);
58
603
 
59
- export { crudEmits, crudProps };
604
+ export { Crud as default };
60
605
  //# sourceMappingURL=crud2.mjs.map