m-eleplus-crud 0.0.12 → 0.0.13

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