m-eleplus-crud 0.0.6 → 0.0.8

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 (70) hide show
  1. package/dist/index.full.js +41 -20
  2. package/dist/index.full.min.js +8 -8
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +8 -8
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +41 -20
  7. package/dist/locale/en.js +1 -1
  8. package/dist/locale/en.min.js +1 -1
  9. package/dist/locale/en.min.mjs +1 -1
  10. package/dist/locale/en.mjs +1 -1
  11. package/dist/locale/zh-cn.js +1 -1
  12. package/dist/locale/zh-cn.min.js +1 -1
  13. package/dist/locale/zh-cn.min.mjs +1 -1
  14. package/dist/locale/zh-cn.mjs +1 -1
  15. package/es/components/crud/src/crud.d.ts +8 -0
  16. package/es/components/form/src/form.d.ts +4 -0
  17. package/es/index.mjs +3 -3
  18. package/es/packages/components/crud/index.mjs +2 -2
  19. package/es/packages/components/crud/src/crud.mjs +611 -53
  20. package/es/packages/components/crud/src/crud.mjs.map +1 -1
  21. package/es/packages/components/crud/src/crud2.mjs +53 -598
  22. package/es/packages/components/crud/src/crud2.mjs.map +1 -1
  23. package/es/packages/components/dialog/index.mjs +2 -2
  24. package/es/packages/components/dialog/src/dialog.mjs +116 -75
  25. package/es/packages/components/dialog/src/dialog.mjs.map +1 -1
  26. package/es/packages/components/dialog/src/dialog2.mjs +75 -116
  27. package/es/packages/components/dialog/src/dialog2.mjs.map +1 -1
  28. package/es/packages/components/form/src/form.mjs.map +1 -1
  29. package/es/packages/components/form/src/form2.mjs +15 -8
  30. package/es/packages/components/form/src/form2.mjs.map +1 -1
  31. package/es/packages/components/index.mjs +3 -3
  32. package/es/packages/components/search/src/search2.mjs +2 -1
  33. package/es/packages/components/search/src/search2.mjs.map +1 -1
  34. package/es/packages/components/table/index.mjs +2 -2
  35. package/es/packages/components/table/src/table.mjs +419 -37
  36. package/es/packages/components/table/src/table.mjs.map +1 -1
  37. package/es/packages/components/table/src/table2.mjs +37 -419
  38. package/es/packages/components/table/src/table2.mjs.map +1 -1
  39. package/es/version.d.ts +1 -1
  40. package/es/version.mjs +1 -1
  41. package/es/version.mjs.map +1 -1
  42. package/lib/components/crud/src/crud.d.ts +8 -0
  43. package/lib/components/form/src/form.d.ts +4 -0
  44. package/lib/index.js +3 -3
  45. package/lib/packages/components/crud/index.js +2 -2
  46. package/lib/packages/components/crud/src/crud.js +611 -54
  47. package/lib/packages/components/crud/src/crud.js.map +1 -1
  48. package/lib/packages/components/crud/src/crud2.js +54 -598
  49. package/lib/packages/components/crud/src/crud2.js.map +1 -1
  50. package/lib/packages/components/dialog/index.js +2 -2
  51. package/lib/packages/components/dialog/src/dialog.js +116 -76
  52. package/lib/packages/components/dialog/src/dialog.js.map +1 -1
  53. package/lib/packages/components/dialog/src/dialog2.js +76 -116
  54. package/lib/packages/components/dialog/src/dialog2.js.map +1 -1
  55. package/lib/packages/components/form/src/form.js.map +1 -1
  56. package/lib/packages/components/form/src/form2.js +15 -8
  57. package/lib/packages/components/form/src/form2.js.map +1 -1
  58. package/lib/packages/components/index.js +3 -3
  59. package/lib/packages/components/search/src/search2.js +2 -1
  60. package/lib/packages/components/search/src/search2.js.map +1 -1
  61. package/lib/packages/components/table/index.js +2 -2
  62. package/lib/packages/components/table/src/table.js +424 -38
  63. package/lib/packages/components/table/src/table.js.map +1 -1
  64. package/lib/packages/components/table/src/table2.js +38 -424
  65. package/lib/packages/components/table/src/table2.js.map +1 -1
  66. package/lib/version.d.ts +1 -1
  67. package/lib/version.js +1 -1
  68. package/lib/version.js.map +1 -1
  69. package/package.json +2 -2
  70. package/web-types.json +1 -1
@@ -1,60 +1,618 @@
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, createBlock, createTextVNode, toDisplayString, mergeProps, createElementVNode, nextTick } from 'vue';
2
+ import { cloneDeep, get, set } from 'lodash-unified';
3
+ import { crudProps, crudEmits } from './crud2.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
+ if (column.addDisabled || column.editDisabled) {
222
+ if (dialogType.value === "add" && column.addDisabled) {
223
+ result.disabled = column.addDisabled;
224
+ } else if (dialogType.value === "edit" && column.editDisabled) {
225
+ result.disabled = column.editDisabled;
226
+ }
227
+ }
228
+ return result;
229
+ };
230
+ const transSearchOption = (option) => {
231
+ const result = cloneDeep(option);
232
+ if (option.searchLabelWidth) {
233
+ result.labelWidth = option.searchLabelWidth;
234
+ } else {
235
+ delete result.labelWidth;
236
+ }
237
+ return result;
238
+ };
239
+ const transFormOption = (option) => {
240
+ const result = cloneDeep(option);
241
+ if (option.formLabelWidth) {
242
+ result.labelWidth = option.formLabelWidth;
243
+ } else {
244
+ delete result.labelWidth;
245
+ }
246
+ return result;
247
+ };
248
+ const currentPageChange = (page) => {
249
+ var _a;
250
+ (_a = searchRef.value) == null ? void 0 : _a.search(page);
251
+ };
252
+ const pageSizeChange = (pageSize) => {
253
+ var _a;
254
+ searchProxys.limit = pageSize;
255
+ (_a = searchRef.value) == null ? void 0 : _a.search();
256
+ };
257
+ const handleSearch = (form) => {
258
+ var _a;
259
+ (_a = tableRef.value) == null ? void 0 : _a.clearSelection();
260
+ emit("search", form);
261
+ };
262
+ const handleReset = () => {
263
+ var _a;
264
+ (_a = tableRef.value) == null ? void 0 : _a.clearSelection();
265
+ emit("reset");
266
+ };
267
+ const setTableHeight = () => {
268
+ nextTick(() => {
269
+ var _a, _b;
270
+ if (crudOption.value.height === "auto") {
271
+ const tableStyle = (_a = tableRef.value) == null ? void 0 : _a.$el;
272
+ const calcHeight = crudOption.value.calcHeight || ((_b = globalConfig.value) == null ? void 0 : _b.calcHeight) || 0;
273
+ tableHeight.value = document.documentElement.clientHeight - ((tableStyle == null ? void 0 : tableStyle.offsetTop) || 0) - 72 - calcHeight;
274
+ } else {
275
+ tableHeight.value = crudOption.value.height;
276
+ }
277
+ });
278
+ };
279
+ const rowAdd = () => {
280
+ dialogType.value = "add";
281
+ dialogVisible.value = true;
282
+ };
283
+ const rowEdit = (row, index) => {
284
+ _modelForm.value = cloneDeep(row);
285
+ _rowIndex.value = index;
286
+ dialogType.value = "edit";
287
+ modelForm.value = cloneDeep(row);
288
+ dialogVisible.value = true;
289
+ };
290
+ const rowView = (row, index) => {
291
+ _modelForm.value = cloneDeep(row);
292
+ _rowIndex.value = index;
293
+ dialogType.value = "view";
294
+ modelForm.value = cloneDeep(row);
295
+ dialogVisible.value = true;
296
+ };
297
+ const rowDel = (row, index) => {
298
+ ElMessageBox.confirm("\u6B64\u64CD\u4F5C\u5C06\u5220\u9664\u8BE5\u6570\u636E, \u662F\u5426\u7EE7\u7EED?", "\u63D0\u793A", {
299
+ confirmButtonText: "\u786E\u5B9A",
300
+ cancelButtonText: "\u53D6\u6D88",
301
+ type: "warning"
302
+ }).then(() => {
303
+ emit("rowDel", row, index);
304
+ }).catch(() => {
305
+ });
306
+ };
307
+ const dialogEnter = async (done, loading) => {
308
+ const valid = await formRef.value.validForm();
309
+ if (!valid) {
310
+ loading();
311
+ return;
312
+ }
313
+ if (props.beforeEnter && !await props.beforeEnter()) {
314
+ loading();
315
+ return;
316
+ }
317
+ if (dialogType.value === "add") {
318
+ emit("rowSave", modelForm.value, done, loading);
319
+ } else if (dialogType.value === "edit") {
320
+ emit("rowEdit", modelForm.value, done, loading);
321
+ }
322
+ };
323
+ const dialogCancel = () => {
324
+ emit("rowCancel", _modelForm.value || {}, _rowIndex.value, dialogType.value);
325
+ };
326
+ const dialogClose = () => {
327
+ _modelForm.value = null;
328
+ _rowIndex.value = -1;
329
+ if (formRef.value) {
330
+ formRef.value.clear();
331
+ modelForm.value = cloneDeep(__firstModelForm.value);
332
+ } else {
333
+ emit("update:modelValue", cloneDeep(__firstModelForm.value));
334
+ }
335
+ };
336
+ const copyObjectExcept = (sourceObj, excludeKeys = []) => {
337
+ const result = {};
338
+ Object.keys(sourceObj).forEach((key) => {
339
+ if (!excludeKeys.includes(key)) {
340
+ result[key] = sourceObj[key];
341
+ }
342
+ });
343
+ return result;
344
+ };
345
+ watch(
346
+ () => props.option,
347
+ (newVal) => {
348
+ if (newVal) {
349
+ crudOption.value = Object.assign({}, crudOption.value, newVal);
350
+ tableOption.value = Object.assign(
351
+ {},
352
+ tableOption.value,
353
+ copyObjectExcept(crudOption.value, ["column"])
354
+ );
355
+ searchOption.value = transSearchOption(
356
+ Object.assign(
357
+ {},
358
+ searchOption.value,
359
+ copyObjectExcept(crudOption.value, ["column"])
360
+ )
361
+ );
362
+ const searchColumns = [];
363
+ const tableColumns = [];
364
+ if (newVal.column && newVal.column.length) {
365
+ for (let i = 0; i < newVal.column.length; i++) {
366
+ const item = newVal.column[i];
367
+ if (item.search && !["index", "single", "selection"].includes(item.type || "")) {
368
+ searchColumns.push(transSearchColumn(item));
369
+ }
370
+ if (!item.hide) {
371
+ tableColumns.push(item);
372
+ }
373
+ }
374
+ searchOption.value.column = searchColumns;
375
+ tableOption.value.column = tableColumns;
376
+ }
377
+ }
378
+ },
379
+ {
380
+ immediate: true,
381
+ deep: true
382
+ }
383
+ );
384
+ onMounted(() => {
385
+ if (crudOption.value.height) {
386
+ setTableHeight();
387
+ }
388
+ });
389
+ __expose({
390
+ rowAdd,
391
+ rowEdit,
392
+ rowView,
393
+ rowDel
394
+ });
395
+ return (_ctx, _cache) => {
396
+ const _component_MSearch = resolveComponent("MSearch");
397
+ const _component_el_button = resolveComponent("el-button");
398
+ const _component_el_link = resolveComponent("el-link");
399
+ const _component_MTable = resolveComponent("MTable");
400
+ const _component_m_pagination = resolveComponent("m-pagination");
401
+ const _component_MForm = resolveComponent("MForm");
402
+ const _component_MDialog = resolveComponent("MDialog");
403
+ return openBlock(), createElementBlock("div", { class: "m-crud" }, [
404
+ createVNode(_component_MSearch, {
405
+ ref_key: "searchRef",
406
+ ref: searchRef,
407
+ model: unref(searchProxys),
408
+ option: searchOption.value,
409
+ size: _ctx.size || unref(globalConfig).size,
410
+ permission: _ctx.permission,
411
+ onSearch: handleSearch,
412
+ onReset: handleReset
413
+ }, createSlots({
414
+ _: 2
415
+ }, [
416
+ renderList(Object.keys(searchSlots.value), (slotKey, index) => {
417
+ return {
418
+ name: slotKey,
419
+ fn: withCtx((scope) => [
420
+ renderSlot(_ctx.$slots, slotKey + "Search", normalizeProps(guardReactiveProps(scope)))
421
+ ])
422
+ };
423
+ })
424
+ ]), 1032, ["model", "option", "size", "permission"]),
425
+ createCommentVNode("\u9876\u90E8\u64CD\u4F5C\u533A\u57DF"),
426
+ crudOption.value.addBtn || unref(slots).topLeft || unref(slots).topRight ? (openBlock(), createElementBlock("div", {
427
+ key: 0,
428
+ class: "m-search-top"
429
+ }, [
430
+ crudOption.value.addBtn || unref(slots).topLeft ? (openBlock(), createElementBlock("div", {
431
+ key: 0,
432
+ class: "m-search-left"
433
+ }, [
434
+ crudOption.value.addBtn && !unref(slots).addBtn && _ctx.permission["add"] !== false ? (openBlock(), createBlock(_component_el_button, {
435
+ key: 0,
436
+ size: _ctx.size || unref(globalConfig).size,
437
+ type: "primary",
438
+ icon: crudOption.value.addBtnIcon,
439
+ onClick: ($event) => rowAdd()
440
+ }, {
441
+ default: withCtx(() => [
442
+ createTextVNode(
443
+ toDisplayString(crudOption.value.addBtnText),
444
+ 1
445
+ )
446
+ ]),
447
+ _: 1
448
+ }, 8, ["size", "icon", "onClick"])) : createCommentVNode("v-if", true),
449
+ _ctx.permission["add"] !== false ? renderSlot(_ctx.$slots, "addBtn", normalizeProps(mergeProps({ key: 1 }, { size: _ctx.size || unref(globalConfig).size }))) : createCommentVNode("v-if", true),
450
+ renderSlot(_ctx.$slots, "topLeft", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size })))
451
+ ])) : (openBlock(), createElementBlock("div", {
452
+ key: 1,
453
+ class: "m-search-left"
454
+ })),
455
+ createElementVNode("div", { class: "m-search-right" }, [
456
+ renderSlot(_ctx.$slots, "topRight", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size })))
457
+ ])
458
+ ])) : createCommentVNode("v-if", true),
459
+ createCommentVNode(""),
460
+ createCommentVNode("\u8868\u683C"),
461
+ createVNode(_component_MTable, {
462
+ ref_key: "tableRef",
463
+ ref: tableRef,
464
+ select: selectData.value,
465
+ "onUpdate:select": ($event) => selectData.value = $event,
466
+ data: _ctx.data,
467
+ size: _ctx.size || unref(globalConfig).size,
468
+ loading: _ctx.loading,
469
+ permission: _ctx.permission,
470
+ option: tableOption.value,
471
+ height: tableHeight.value,
472
+ "max-height": tableHeight.value
473
+ }, createSlots({
474
+ menu: withCtx((scope) => [
475
+ crudOption.value.editBtn && !unref(slots).editBtn && _ctx.permission["edit"] !== false ? (openBlock(), createBlock(_component_el_link, {
476
+ key: 0,
477
+ class: "m-control-btns",
478
+ type: "primary",
479
+ size: _ctx.size || unref(globalConfig).size,
480
+ underline: "never",
481
+ icon: "Edit",
482
+ onClick: ($event) => rowEdit(scope.row, scope.$index)
483
+ }, {
484
+ default: withCtx(() => [
485
+ createTextVNode(
486
+ toDisplayString(unref(t)("m.crud.editBtnText")),
487
+ 1
488
+ )
489
+ ]),
490
+ _: 2
491
+ }, 1032, ["size", "onClick"])) : createCommentVNode("v-if", true),
492
+ crudOption.value.editBtn && unref(slots).editBtn && _ctx.permission["edit"] !== false ? renderSlot(_ctx.$slots, "editBtn", normalizeProps(mergeProps({ key: 1 }, scope))) : createCommentVNode("v-if", true),
493
+ crudOption.value.delBtn && !unref(slots).delBtn && _ctx.permission["del"] !== false ? (openBlock(), createBlock(_component_el_link, {
494
+ key: 2,
495
+ class: "m-control-btns",
496
+ type: "primary",
497
+ underline: "never",
498
+ size: _ctx.size || unref(globalConfig).size,
499
+ icon: "Delete",
500
+ onClick: ($event) => rowDel(scope.row, scope.$index)
501
+ }, {
502
+ default: withCtx(() => [
503
+ createTextVNode(
504
+ toDisplayString(unref(t)("m.crud.delBtnText")),
505
+ 1
506
+ )
507
+ ]),
508
+ _: 2
509
+ }, 1032, ["size", "onClick"])) : createCommentVNode("v-if", true),
510
+ crudOption.value.delBtn && unref(slots).delBtn && _ctx.permission["del"] !== false ? renderSlot(_ctx.$slots, "delBtn", normalizeProps(mergeProps({ key: 3 }, scope))) : createCommentVNode("v-if", true),
511
+ 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)
512
+ ]),
513
+ _: 2
514
+ }, [
515
+ renderList(Object.keys(tableSlots.value), (slotKey, index) => {
516
+ return {
517
+ name: slotKey,
518
+ fn: withCtx((scope) => [
519
+ renderSlot(_ctx.$slots, slotKey, normalizeProps(guardReactiveProps(scope)))
520
+ ])
521
+ };
522
+ })
523
+ ]), 1032, ["select", "onUpdate:select", "data", "size", "loading", "permission", "option", "height", "max-height"]),
524
+ createCommentVNode(""),
525
+ createCommentVNode("\u5206\u9875\u533A\u57DF"),
526
+ unref(searchProxys).page && _ctx.total ? (openBlock(), createElementBlock("div", {
527
+ key: 1,
528
+ class: "m-pagination-box"
529
+ }, [
530
+ createVNode(_component_m_pagination, {
531
+ small: (_ctx.size || unref(globalConfig).size) === "small",
532
+ total: _ctx.total,
533
+ "current-page": unref(searchProxys).page,
534
+ "page-size": unref(searchProxys).limit,
535
+ disabled: _ctx.loading,
536
+ onCurrentPage: currentPageChange,
537
+ onPageSize: pageSizeChange
538
+ }, null, 8, ["small", "total", "current-page", "page-size", "disabled"])
539
+ ])) : createCommentVNode("v-if", true),
540
+ createCommentVNode("\u65B0\u589E/\u7F16\u8F91/\u67E5\u770B\u5BF9\u8BDD\u6846"),
541
+ createVNode(_component_MDialog, {
542
+ modelValue: dialogVisible.value,
543
+ "onUpdate:modelValue": ($event) => dialogVisible.value = $event,
544
+ size: _ctx.size || unref(globalConfig).size,
545
+ title: dialogTitle.value,
546
+ width: crudOption.value.dialogWidth,
547
+ "save-btn": dialogType.value !== "view",
548
+ "cancel-btn": dialogType.value !== "view",
549
+ "save-btn-text": unref(t)("m.crud.dialogSaveBtnText"),
550
+ "cancel-btn-text": unref(t)("m.crud.dialogCancelBtnText"),
551
+ "save-btn-icon": dialogType.value === "add" ? "CirclePlus" : "CircleCheck",
552
+ onEnter: dialogEnter,
553
+ onCancel: dialogCancel,
554
+ onClose: dialogClose
555
+ }, {
556
+ default: withCtx(({ loading }) => [
557
+ createCommentVNode("\u6240\u6709\u7C7B\u578B\u9876\u90E8"),
558
+ renderSlot(_ctx.$slots, "allTop", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size, loading }))),
559
+ createCommentVNode(""),
560
+ createCommentVNode("\u65B0\u589E/\u7F16\u8F91\u7C7B\u578B\u9876\u90E8"),
561
+ dialogType.value !== "view" ? renderSlot(_ctx.$slots, "formTop", normalizeProps(mergeProps({ key: 0 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
562
+ createCommentVNode(""),
563
+ createCommentVNode("\u65B0\u589E\u7C7B\u578B\u9876\u90E8"),
564
+ dialogType.value === "add" ? renderSlot(_ctx.$slots, "addTop", normalizeProps(mergeProps({ key: 1 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
565
+ createCommentVNode(""),
566
+ createCommentVNode("\u7F16\u8F91\u7C7B\u578B\u9876\u90E8"),
567
+ dialogType.value === "edit" ? renderSlot(_ctx.$slots, "editTop", normalizeProps(mergeProps({ key: 2 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
568
+ createCommentVNode(""),
569
+ createCommentVNode("\u67E5\u770B\u7C7B\u578B\u9876\u90E8"),
570
+ dialogType.value === "view" ? renderSlot(_ctx.$slots, "viewTop", normalizeProps(mergeProps({ key: 3 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
571
+ createCommentVNode(""),
572
+ createVNode(_component_MForm, {
573
+ ref_key: "formRef",
574
+ ref: formRef,
575
+ loading,
576
+ size: _ctx.size || unref(globalConfig).size,
577
+ option: formOption.value,
578
+ model: modelForm.value,
579
+ readonly: dialogType.value === "view"
580
+ }, createSlots({
581
+ _: 2
582
+ }, [
583
+ renderList(Object.keys(formSlots.value), (slotKey, index) => {
584
+ return {
585
+ name: slotKey,
586
+ fn: withCtx((scope) => [
587
+ renderSlot(_ctx.$slots, slotKey + "Form", normalizeProps(guardReactiveProps(scope)))
588
+ ])
589
+ };
590
+ })
591
+ ]), 1032, ["loading", "size", "option", "model", "readonly"]),
592
+ createCommentVNode("\u6240\u6709\u7C7B\u578B\u5E95\u90E8"),
593
+ renderSlot(_ctx.$slots, "allBottom", normalizeProps(guardReactiveProps({ size: _ctx.size || unref(globalConfig).size, loading }))),
594
+ createCommentVNode(""),
595
+ createCommentVNode("\u65B0\u589E/\u7F16\u8F91\u7C7B\u578B\u5E95\u90E8"),
596
+ dialogType.value !== "view" ? renderSlot(_ctx.$slots, "formBottom", normalizeProps(mergeProps({ key: 4 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
597
+ createCommentVNode(""),
598
+ createCommentVNode("\u65B0\u589E\u7C7B\u578B\u5E95\u90E8"),
599
+ dialogType.value === "add" ? renderSlot(_ctx.$slots, "addBottom", normalizeProps(mergeProps({ key: 5 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
600
+ createCommentVNode(""),
601
+ createCommentVNode("\u7F16\u8F91\u7C7B\u578B\u5E95\u90E8"),
602
+ dialogType.value === "edit" ? renderSlot(_ctx.$slots, "editBottom", normalizeProps(mergeProps({ key: 6 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
603
+ createCommentVNode(""),
604
+ createCommentVNode("\u67E5\u770B\u7C7B\u578B\u5E95\u90E8"),
605
+ dialogType.value === "view" ? renderSlot(_ctx.$slots, "viewBottom", normalizeProps(mergeProps({ key: 7 }, { size: _ctx.size || unref(globalConfig).size, loading }))) : createCommentVNode("v-if", true),
606
+ createCommentVNode("")
607
+ ]),
608
+ _: 3
609
+ }, 8, ["modelValue", "onUpdate:modelValue", "size", "title", "width", "save-btn", "cancel-btn", "save-btn-text", "cancel-btn-text", "save-btn-icon"]),
610
+ createCommentVNode("")
611
+ ]);
612
+ };
46
613
  }
47
614
  });
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
- };
615
+ var Crud = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "crud.vue"]]);
58
616
 
59
- export { crudEmits, crudProps };
617
+ export { Crud as default };
60
618
  //# sourceMappingURL=crud.mjs.map