m-eleplus-crud 0.0.12 → 0.0.14

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 (54) hide show
  1. package/dist/index.full.js +4 -3
  2. package/dist/index.full.min.js +2 -2
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +2 -2
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +4 -3
  7. package/es/components/table/src/table.d.ts +7 -0
  8. package/es/index.mjs +3 -3
  9. package/es/packages/components/barcode/index.mjs +2 -2
  10. package/es/packages/components/barcode/src/barcode.mjs +18 -53
  11. package/es/packages/components/barcode/src/barcode.mjs.map +1 -1
  12. package/es/packages/components/barcode/src/barcode2.mjs +53 -18
  13. package/es/packages/components/barcode/src/barcode2.mjs.map +1 -1
  14. package/es/packages/components/dialog/index.mjs +2 -2
  15. package/es/packages/components/dialog/src/dialog.mjs +75 -116
  16. package/es/packages/components/dialog/src/dialog.mjs.map +1 -1
  17. package/es/packages/components/dialog/src/dialog2.mjs +116 -75
  18. package/es/packages/components/dialog/src/dialog2.mjs.map +1 -1
  19. package/es/packages/components/form/src/form.mjs +1 -1
  20. package/es/packages/components/form/src/form.mjs.map +1 -1
  21. package/es/packages/components/index.mjs +3 -3
  22. package/es/packages/components/picture/index.mjs +2 -2
  23. package/es/packages/components/picture/src/picture.mjs +19 -26
  24. package/es/packages/components/picture/src/picture.mjs.map +1 -1
  25. package/es/packages/components/picture/src/picture2.mjs +26 -19
  26. package/es/packages/components/picture/src/picture2.mjs.map +1 -1
  27. package/es/packages/components/table/src/table.mjs +3 -2
  28. package/es/packages/components/table/src/table.mjs.map +1 -1
  29. package/es/packages/components/table/src/table2.mjs.map +1 -1
  30. package/lib/components/table/src/table.d.ts +7 -0
  31. package/lib/index.js +3 -3
  32. package/lib/packages/components/barcode/index.js +2 -2
  33. package/lib/packages/components/barcode/src/barcode.js +19 -57
  34. package/lib/packages/components/barcode/src/barcode.js.map +1 -1
  35. package/lib/packages/components/barcode/src/barcode2.js +57 -19
  36. package/lib/packages/components/barcode/src/barcode2.js.map +1 -1
  37. package/lib/packages/components/dialog/index.js +2 -2
  38. package/lib/packages/components/dialog/src/dialog.js +76 -116
  39. package/lib/packages/components/dialog/src/dialog.js.map +1 -1
  40. package/lib/packages/components/dialog/src/dialog2.js +116 -76
  41. package/lib/packages/components/dialog/src/dialog2.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 +3 -3
  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/table/src/table.js +3 -2
  51. package/lib/packages/components/table/src/table.js.map +1 -1
  52. package/lib/packages/components/table/src/table2.js.map +1 -1
  53. package/package.json +1 -1
  54. package/web-types.json +1 -1
@@ -1,80 +1,121 @@
1
- import { isBoolean } from '../../../utils/types.mjs';
2
- import { buildProps } from '../../../utils/vue/props/runtime.mjs';
3
- import { useSizeProp } from '../../../hooks/use-size/index.mjs';
4
- import { isFunction } from '@vue/shared';
1
+ import { defineComponent, useSlots, ref, resolveComponent, openBlock, createElementBlock, createVNode, withCtx, unref, createBlock, createTextVNode, toDisplayString, createCommentVNode, renderSlot } from 'vue';
2
+ import { dialogProps, dialogEmits } from './dialog.mjs';
3
+ import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
4
+ import { useLocale } from '../../../hooks/use-locale/index.mjs';
5
+ import { useGlobalConfig } from '../../config-provider/src/hooks/use-global-config.mjs';
5
6
 
6
- const dialogProps = buildProps({
7
- size: useSizeProp,
8
- modelValue: {
9
- type: Boolean,
10
- required: true
11
- },
12
- title: {
13
- type: String,
14
- default: ""
15
- },
16
- width: {
17
- type: String,
18
- default: "600px"
19
- },
20
- top: {
21
- type: String,
22
- default: "2vh"
23
- },
24
- appendToBody: {
25
- type: Boolean,
26
- default: true
27
- },
28
- closeOnClickModal: {
29
- type: Boolean,
30
- default: false
31
- },
32
- closeOnnPressEscape: {
33
- type: Boolean,
34
- default: false
35
- },
36
- beforeClose: {
37
- type: Function
38
- },
39
- draggable: {
40
- type: Boolean,
41
- default: true
42
- },
43
- destroyOnClose: {
44
- type: Boolean,
45
- default: true
46
- },
47
- saveBtn: {
48
- type: Boolean,
49
- default: true
50
- },
51
- cancelBtn: {
52
- type: Boolean,
53
- default: true
54
- },
55
- saveBtnText: {
56
- type: String,
57
- default: ""
58
- },
59
- saveBtnIcon: {
60
- type: String,
61
- default: "CircleCheck"
62
- },
63
- cancelBtnIcon: {
64
- type: String,
65
- default: "CircleClose"
66
- },
67
- cancelBtnText: {
68
- type: String,
69
- default: ""
7
+ const COMPONENT_NAME = "MDialog";
8
+ const __default__ = defineComponent({
9
+ name: COMPONENT_NAME
10
+ });
11
+ const _sfc_main = defineComponent({
12
+ ...__default__,
13
+ props: dialogProps,
14
+ emits: dialogEmits,
15
+ setup(__props, { emit: __emit }) {
16
+ const props = __props;
17
+ const emit = __emit;
18
+ const slots = useSlots();
19
+ const { t } = useLocale();
20
+ const globalConfig = useGlobalConfig();
21
+ const dialogLoading = ref(false);
22
+ const closeDialog = () => {
23
+ emit("update:modelValue", false);
24
+ emit("close");
25
+ };
26
+ const enter = () => {
27
+ dialogLoading.value = true;
28
+ const done = () => {
29
+ emit("update:modelValue", false);
30
+ };
31
+ const loading = () => {
32
+ dialogLoading.value = false;
33
+ };
34
+ emit("enter", done, loading);
35
+ };
36
+ const close = () => {
37
+ emit("update:modelValue", false);
38
+ emit("cancel");
39
+ };
40
+ const onBeforeClose = (done) => {
41
+ if (dialogLoading.value) {
42
+ return false;
43
+ }
44
+ if (props.beforeClose) {
45
+ props.beforeClose(done);
46
+ } else {
47
+ done();
48
+ }
49
+ };
50
+ return (_ctx, _cache) => {
51
+ const _component_el_button = resolveComponent("el-button");
52
+ const _component_el_dialog = resolveComponent("el-dialog");
53
+ return openBlock(), createElementBlock("div", { class: "m-dialog" }, [
54
+ createVNode(_component_el_dialog, {
55
+ class: "m-dialog",
56
+ "model-value": _ctx.modelValue,
57
+ title: _ctx.title,
58
+ width: _ctx.width,
59
+ top: _ctx.top,
60
+ "append-to-body": _ctx.appendToBody,
61
+ "close-on-click-modal": _ctx.closeOnClickModal,
62
+ "close-onn-press-escape": _ctx.closeOnnPressEscape,
63
+ "before-close": onBeforeClose,
64
+ draggable: _ctx.draggable,
65
+ "destroy-on-close": _ctx.destroyOnClose,
66
+ onClose: closeDialog
67
+ }, {
68
+ footer: withCtx(() => [
69
+ !unref(slots).btns ? (openBlock(), createElementBlock("div", {
70
+ key: 0,
71
+ class: "dialog-footer"
72
+ }, [
73
+ _ctx.cancelBtn ? (openBlock(), createBlock(_component_el_button, {
74
+ key: 0,
75
+ size: _ctx.size || unref(globalConfig).size,
76
+ icon: _ctx.cancelBtnIcon,
77
+ loading: dialogLoading.value,
78
+ onClick: close
79
+ }, {
80
+ default: withCtx(() => [
81
+ createTextVNode(
82
+ toDisplayString(_ctx.cancelBtnText || unref(t)("m.dialog.cancelText")),
83
+ 1
84
+ )
85
+ ]),
86
+ _: 1
87
+ }, 8, ["size", "icon", "loading"])) : createCommentVNode("v-if", true),
88
+ _ctx.saveBtn ? (openBlock(), createBlock(_component_el_button, {
89
+ key: 1,
90
+ size: _ctx.size || unref(globalConfig).size,
91
+ icon: _ctx.saveBtnIcon,
92
+ loading: dialogLoading.value,
93
+ type: "primary",
94
+ onClick: enter
95
+ }, {
96
+ default: withCtx(() => [
97
+ createTextVNode(
98
+ toDisplayString(_ctx.saveBtnText || unref(t)("m.dialog.confirmText")),
99
+ 1
100
+ )
101
+ ]),
102
+ _: 1
103
+ }, 8, ["size", "icon", "loading"])) : createCommentVNode("v-if", true)
104
+ ])) : renderSlot(_ctx.$slots, "btns", {
105
+ key: 1,
106
+ loading: dialogLoading.value
107
+ })
108
+ ]),
109
+ default: withCtx(() => [
110
+ renderSlot(_ctx.$slots, "default", { loading: dialogLoading.value })
111
+ ]),
112
+ _: 3
113
+ }, 8, ["model-value", "title", "width", "top", "append-to-body", "close-on-click-modal", "close-onn-press-escape", "draggable", "destroy-on-close"])
114
+ ]);
115
+ };
70
116
  }
71
117
  });
72
- const dialogEmits = {
73
- "update:modelValue": (value) => isBoolean(value),
74
- close: () => true,
75
- cancel: () => true,
76
- enter: (done, loading) => isFunction(done) && isFunction(loading)
77
- };
118
+ var Dialog = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "dialog.vue"]]);
78
119
 
79
- export { dialogEmits, dialogProps };
120
+ export { Dialog as default };
80
121
  //# sourceMappingURL=dialog2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog2.mjs","sources":["../../../../../../../packages/components/dialog/src/dialog.ts"],"sourcesContent":["import { buildProps, isBoolean, isFunction } from '@m-eleplus-crud/utils'\r\nimport { useSizeProp } from '@m-eleplus-crud/hooks'\r\n\r\nimport type { ExtractPropTypes } from 'vue'\r\n\r\nexport const dialogProps = buildProps({\r\n /**\r\n * @description 弹窗尺寸\r\n */\r\n size: useSizeProp,\r\n /**\r\n * @description 弹窗显示状态\r\n */\r\n modelValue: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n /**\r\n * @description 弹窗标题\r\n */\r\n title: {\r\n type: String,\r\n default: '',\r\n },\r\n /**\r\n * @description 弹窗宽度\r\n */\r\n width: {\r\n type: String,\r\n default: '600px',\r\n },\r\n /**\r\n * @description 顶部距离\r\n */\r\n top: {\r\n type: String,\r\n default: '2vh',\r\n },\r\n /**\r\n * @description 插入body\r\n */\r\n appendToBody: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * @description 是否可以通过点击modal关闭Dialog\r\n */\r\n closeOnClickModal: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * @description 是否可以通过按下ESC关闭Dialog\r\n */\r\n closeOnnPressEscape: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * @description 弹窗关闭前回调\r\n */\r\n beforeClose: {\r\n type: Function,\r\n },\r\n /**\r\n * @description 为dialog开启拖拽功能\r\n */\r\n draggable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * @description 当关闭Dialog时,销毁其中的元素\r\n */\r\n destroyOnClose: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * @description 保存按钮是否展示\r\n */\r\n saveBtn: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * @description 取消按钮是否展示\r\n */\r\n cancelBtn: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * @description 保存按钮文字\r\n */\r\n saveBtnText: {\r\n type: String,\r\n default: '',\r\n },\r\n /**\r\n * @description 保存按钮图标\r\n */\r\n saveBtnIcon: {\r\n type: String,\r\n default: 'CircleCheck',\r\n },\r\n /**\r\n * @description 取消按钮图标\r\n */\r\n cancelBtnIcon: {\r\n type: String,\r\n default: 'CircleClose',\r\n },\r\n /**\r\n * @description 取消按钮文字\r\n */\r\n cancelBtnText: {\r\n type: String,\r\n default: '',\r\n },\r\n} as const)\r\nexport type DialogProps = ExtractPropTypes<typeof dialogProps>\r\n\r\nexport const dialogEmits = {\r\n /**\r\n * @description 更新弹窗状态\r\n * @param value 弹窗显示状态\r\n * @returns\r\n */\r\n 'update:modelValue': (value: boolean) => isBoolean(value),\r\n /**\r\n * @description 弹窗关闭\r\n * @returns\r\n */\r\n close: () => true,\r\n /**\r\n * @description 弹窗取消\r\n * @returns\r\n */\r\n cancel: () => true,\r\n /**\r\n * @description 弹窗确认\r\n * @param done 完成\r\n * @param loading 加载完毕\r\n * @returns\r\n */\r\n enter: (done: () => void, loading: () => void) =>\r\n isFunction(done) && isFunction(loading),\r\n}\r\nexport type DialogEmits = typeof dialogEmits\r\n"],"names":[],"mappings":";;;;;AAKO,MAAM,cAAc,UAAW,CAAA;AAAA,EAIpC,IAAM,EAAA,WAAA;AAAA,EAIN,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,OAAA;AAAA,GACX;AAAA,EAIA,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EAIA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EAIA,iBAAmB,EAAA;AAAA,IACjB,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EAIA,mBAAqB,EAAA;AAAA,IACnB,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EAIA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,QAAA;AAAA,GACR;AAAA,EAIA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EAIA,cAAgB,EAAA;AAAA,IACd,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EAIA,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EAIA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EAIA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA,EAIA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,aAAA;AAAA,GACX;AAAA,EAIA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,aAAA;AAAA,GACX;AAAA,EAIA,aAAe,EAAA;AAAA,IACb,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AACF,CAAU,EAAA;AAGH,MAAM,WAAc,GAAA;AAAA,EAMzB,mBAAqB,EAAA,CAAC,KAAmB,KAAA,SAAA,CAAU,KAAK,CAAA;AAAA,EAKxD,OAAO,MAAM,IAAA;AAAA,EAKb,QAAQ,MAAM,IAAA;AAAA,EAOd,KAAA,EAAO,CAAC,IAAkB,EAAA,OAAA,KACxB,WAAW,IAAI,CAAA,IAAK,WAAW,OAAO,CAAA;AAC1C;;;;"}
1
+ {"version":3,"file":"dialog2.mjs","sources":["../../../../../../../packages/components/dialog/src/dialog.vue"],"sourcesContent":["<template>\r\n <div class=\"m-dialog\">\r\n <el-dialog\r\n class=\"m-dialog\"\r\n :model-value=\"modelValue\"\r\n :title=\"title\"\r\n :width=\"width\"\r\n :top=\"top\"\r\n :append-to-body=\"appendToBody\"\r\n :close-on-click-modal=\"closeOnClickModal\"\r\n :close-onn-press-escape=\"closeOnnPressEscape\"\r\n :before-close=\"onBeforeClose\"\r\n :draggable=\"draggable\"\r\n :destroy-on-close=\"destroyOnClose\"\r\n @close=\"closeDialog\"\r\n >\r\n <slot :loading=\"dialogLoading\" />\r\n <template #footer>\r\n <div v-if=\"!slots.btns\" class=\"dialog-footer\">\r\n <el-button\r\n v-if=\"cancelBtn\"\r\n :size=\"size || globalConfig.size\"\r\n :icon=\"cancelBtnIcon\"\r\n :loading=\"dialogLoading\"\r\n @click=\"close\"\r\n >\r\n {{ cancelBtnText || t('m.dialog.cancelText') }}\r\n </el-button>\r\n <el-button\r\n v-if=\"saveBtn\"\r\n :size=\"size || globalConfig.size\"\r\n :icon=\"saveBtnIcon\"\r\n :loading=\"dialogLoading\"\r\n type=\"primary\"\r\n @click=\"enter\"\r\n >\r\n {{ saveBtnText || t('m.dialog.confirmText') }}\r\n </el-button>\r\n </div>\r\n <slot v-else :loading=\"dialogLoading\" name=\"btns\" />\r\n </template>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, useSlots } from 'vue'\r\nimport { useGlobalConfig } from '@m-eleplus-crud/components'\r\nimport { useLocale } from '@m-eleplus-crud/hooks'\r\nimport { dialogEmits, dialogProps } from './dialog'\r\n\r\nconst COMPONENT_NAME = 'MDialog'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(dialogProps)\r\nconst emit = defineEmits(dialogEmits)\r\n\r\n// 插槽信息\r\nconst slots = useSlots()\r\n// 国际化\r\nconst { t } = useLocale()\r\n// 全局配置\r\nconst globalConfig = useGlobalConfig()\r\n\r\n// 弹窗内是否loading\r\nconst dialogLoading = ref(false)\r\n\r\n/**\r\n * @description 弹窗关闭\r\n */\r\nconst closeDialog = () => {\r\n emit('update:modelValue', false)\r\n emit('close')\r\n}\r\n\r\n/**\r\n * 确认\r\n */\r\nconst enter = () => {\r\n // 弹窗开始加载\r\n dialogLoading.value = true\r\n // 关闭表单\r\n const done = () => {\r\n emit('update:modelValue', false)\r\n }\r\n // 关闭加载\r\n const loading = () => {\r\n dialogLoading.value = false\r\n }\r\n\r\n emit('enter', done, loading)\r\n}\r\n\r\n/**\r\n * 关闭\r\n */\r\nconst close = () => {\r\n emit('update:modelValue', false)\r\n emit('cancel')\r\n}\r\n\r\n/**\r\n * 弹窗关闭前\r\n * @param done 完成回调\r\n */\r\nconst onBeforeClose = (done: () => void) => {\r\n if (dialogLoading.value) {\r\n return false\r\n }\r\n if (props.beforeClose) {\r\n props.beforeClose(done)\r\n } else {\r\n done()\r\n }\r\n}\r\n</script>\r\n"],"names":["DO_defineComponent"],"mappings":";;;;;;;AAoDc,MAAA,cAAAA,eAAA,CAAA;AAAA,EACZ,IAAM,EAAA,cAAA;AACR;;;;;;AAEA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAGb,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEjB,IAAA,MAAA,EAAE,CAAE,EAAA,GAAI,SAAU,EAAA,CAAA;AAExB,IAAA,MAAM,eAAe,eAAgB,EAAA,CAAA;AAG/B,IAAA,MAAA,aAAA,GAAgB,IAAI,KAAK,CAAA,CAAA;AAK/B,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA,CAAA;AAC/B,MAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAAA,KACd,CAAA;AAKA,IAAA,MAAM,QAAQ,MAAM;AAElB,MAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAA;AAEtB,MAAA,MAAM,OAAO,MAAM;AACjB,QAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA,CAAA;AAAA,OACjC,CAAA;AAEA,MAAA,MAAM,UAAU,MAAM;AACpB,QAAA,aAAA,CAAc,KAAQ,GAAA,KAAA,CAAA;AAAA,OACxB,CAAA;AAEK,MAAA,IAAA,CAAA,OAAA,EAAS,MAAM,OAAO,CAAA,CAAA;AAAA,KAC7B,CAAA;AAKA,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,IAAA,CAAK,qBAAqB,KAAK,CAAA,CAAA;AAC/B,MAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,KACf,CAAA;AAMM,IAAA,MAAA,aAAA,GAAgB,CAAC,IAAqB,KAAA;AAC1C,MAAA,IAAI,cAAc,KAAO,EAAA;AAChB,QAAA,OAAA,KAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAI,MAAM,WAAa,EAAA;AACrB,QAAA,KAAA,CAAM,YAAY,IAAI,CAAA,CAAA;AAAA,OACjB,MAAA;AACA,QAAA,IAAA,EAAA,CAAA;AAAA,OACP;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -573,7 +573,7 @@ const _sfc_main = defineComponent({
573
573
  column.type === "picture" ? (openBlock(), createBlock(_component_MPicture, {
574
574
  key: 0,
575
575
  src: getDetailPic(unref(proxys), column)[0],
576
- "preview-src-list": getDetailPic(unref(proxys), column)[0],
576
+ "preview-src-list": getDetailPic(unref(proxys), column),
577
577
  "img-width": "100px",
578
578
  "img-height": "100px"
579
579
  }, null, 8, ["src", "preview-src-list"])) : NEED_DIC_TYPE.includes(column.type || "") ? (openBlock(), createElementBlock(
@@ -1 +1 @@
1
- {"version":3,"file":"form.mjs","sources":["../../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport { computed, ref, useSlots, watch } from 'vue'\r\nimport { cloneDeep, get, set } from 'lodash-unified'\r\nimport { useGlobalConfig } from '@m-eleplus-crud/components'\r\nimport { debugWarn } from '@m-eleplus-crud/utils'\r\nimport { formEmits, formProps } from './form'\r\nimport type { IDictValue } from '@m-eleplus-crud/components/common'\r\nimport type { FormInstance } from 'element-plus'\r\nimport type { IFormColumn, IFormOption } from './form'\r\n\r\nconst COMPONENT_NAME = 'MForm'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(formProps)\r\ndefineEmits(formEmits)\r\n\r\n// 插槽信息\r\nconst slots = useSlots() as any\r\n\r\n// 全局配置\r\nconst globalConfig = useGlobalConfig()\r\n\r\n// 表单实例\r\nconst formRef = ref<FormInstance>()\r\n\r\n// 表单输入类型\r\nconst INPUT_TYPES = [\r\n 'input',\r\n 'textarea',\r\n 'number',\r\n 'password',\r\n 'qrcode',\r\n 'barcode',\r\n]\r\n\r\n// 日期类型\r\nconst DATE_TYPES = [\r\n 'year',\r\n 'month',\r\n 'date',\r\n 'datetime',\r\n 'week',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'time',\r\n 'timerange',\r\n]\r\n\r\n// 需要字典显示处理\r\nconst NEED_DIC_TYPE = ['select', 'checkbox', 'radio', 'switch']\r\n\r\n// 表单配置\r\nconst formOption = ref<IFormOption>({\r\n // 默认标签宽度80px\r\n labelWidth: '80px',\r\n column: [],\r\n})\r\n\r\n/**\r\n * @description 计算详情模式下的表格行\r\n */\r\nconst detailTableRows = computed(() => {\r\n const rows = []\r\n let currentRow = []\r\n let currentTotal = 0\r\n for (const item of formOption.value.column || []) {\r\n const req = item.span || 12\r\n // 若当前行加入该项超过总列数,则开启新行\r\n if (currentTotal + req > 24) {\r\n rows.push(currentRow)\r\n currentRow = []\r\n currentTotal = 0\r\n }\r\n currentRow.push(item)\r\n currentTotal += req\r\n }\r\n if (currentRow.length) rows.push(currentRow)\r\n return rows\r\n})\r\n\r\n// 表单model\r\nconst proxys = new Proxy(props.model as any, {\r\n get(target, property) {\r\n return get(target, property)\r\n },\r\n set(target, property, value) {\r\n set(target, property, value)\r\n return true\r\n },\r\n})\r\n\r\n/**\r\n * @description 初始化表单的值\r\n */\r\nconst initValue = () => {\r\n // 初始化搜索表单的值\r\n if (formOption.value && formOption.value.column) {\r\n for (let i = 0; i < formOption.value.column?.length; i++) {\r\n const column = formOption.value.column[i]\r\n if (column.prop && proxys[column.prop] === undefined) {\r\n if (column.value) {\r\n proxys[column.prop] = column.value\r\n } else {\r\n const ARR_TYPES = [\r\n 'checkbox',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'timerange',\r\n ]\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n ARR_TYPES.includes(column.type || '')\r\n ) {\r\n proxys[column.prop] = []\r\n } else {\r\n proxys[column.prop] = ''\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据类型获取默认时间格式\r\n * @param type 类型\r\n */\r\nconst getValueFormatByType = (type: string) => {\r\n let format = ''\r\n switch (type) {\r\n case 'yearrange':\r\n case 'year':\r\n format = 'YYYY'\r\n break\r\n case 'monthrange':\r\n case 'month':\r\n format = 'YYYY-MM'\r\n break\r\n case 'daterange':\r\n case 'week':\r\n case 'date':\r\n format = 'YYYY-MM-DD'\r\n break\r\n case 'datetimerange':\r\n case 'datetime':\r\n format = 'YYYY-MM-DD HH:mm:ss'\r\n break\r\n case 'time':\r\n format = 'HH:mm:ss'\r\n break\r\n }\r\n return format\r\n}\r\n\r\n/**\r\n * 处理需要远程获取字典的配置\r\n */\r\nconst getAllRemoteDics = () => {\r\n const hasDicUrl = formOption.value?.column?.some((column) => column.dicUrl)\r\n if (hasDicUrl && !globalConfig.value?.httpGet) {\r\n debugWarn('MForm', 'global config httpGet is null')\r\n return\r\n }\r\n /**\r\n * 调用接口设置到dicData\r\n * @param column 列配置\r\n */\r\n const updateRemoteDic = (column: IFormColumn) => {\r\n return new Promise((resolve) => {\r\n let isSuccess = false\r\n // @ts-ignore\r\n globalConfig.value\r\n .httpGet(column.dicUrl, column.dicQuery, column.dicHeaders)\r\n .then((e: any) => {\r\n // @ts-ignore\r\n const { list, label, value } = column.dicFormatter(e)\r\n if (list && Array.isArray(list)) {\r\n column['dicData'] = list.map((item) => {\r\n const lastLabel = label.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return item[key] || match\r\n })\r\n return {\r\n label: lastLabel,\r\n value: item[value],\r\n }\r\n })\r\n isSuccess = true\r\n }\r\n })\r\n .finally(() => {\r\n if (!isSuccess) {\r\n column['dicData'] = []\r\n }\r\n resolve(null)\r\n })\r\n })\r\n }\r\n for (let i = 0; i < (formOption.value?.column || []).length; i++) {\r\n // @ts-ignore\r\n const column = formOption.value.column[i]\r\n if (column.dicUrl) {\r\n if (!column.dicFormatter) {\r\n debugWarn('MForm', 'dicUrl and dicFormatter must be used together')\r\n continue\r\n }\r\n updateRemoteDic(column)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据配置获取表单项的绑定事件\r\n * @param column\r\n */\r\nconst getFormItemEventBind = (column: IFormColumn): object => {\r\n const result: any = {}\r\n for (const key in column) {\r\n if (key.startsWith('event')) {\r\n let funName = key.replace('event', '')\r\n funName = funName.charAt(0).toLowerCase() + funName.slice(1)\r\n // @ts-ignore\r\n result[funName] = column[key]\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * 解析字典并展示\r\n * @param row 行数据\r\n * @param column 列配置\r\n */\r\nconst formatDicValue = (row: any, column: IFormColumn) => {\r\n // 未拿到字典值的placeholder\r\n let dictLabel: string | undefined = ''\r\n // 查找\r\n const findLabelByValue = (dicData: IDictValue[], value: any) => {\r\n const dictItem = (dicData || []).find((dict) => dict.value === value)\r\n if (dictItem === undefined) {\r\n return dictLabel\r\n }\r\n return dictItem.label\r\n }\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n column.type === 'checkbox'\r\n ) {\r\n // select下拉且开启多选/多选模式\r\n let values: any = []\r\n\r\n if (\r\n row[column.prop || ''] != null &&\r\n row[column.prop || ''] != undefined &&\r\n row[column.prop || ''] !== ''\r\n ) {\r\n if (Array.isArray(row[column.prop || ''])) {\r\n // 数据就是数组\r\n values = row[column.prop || '']\r\n } else if (typeof row[column.prop || ''] === 'string') {\r\n // 数据是字符串,启动字符分割,后续需要弄成从配置读取\r\n values = row[column.prop || ''].split(',')\r\n } else {\r\n // 最后情况变成数组\r\n values = [row[column.prop || '']]\r\n }\r\n }\r\n // 结果集合\r\n const result: string[] = []\r\n for (const value of values) {\r\n dictLabel = findLabelByValue(column.dicData || [], value)\r\n if (dictLabel === undefined) {\r\n break\r\n }\r\n result.push(dictLabel)\r\n }\r\n return result.join(',')\r\n }\r\n // 单模式\r\n dictLabel = findLabelByValue(column.dicData || [], row[column.prop || ''])\r\n return dictLabel\r\n}\r\n\r\n/**\r\n * 拿到详情模式下的图片集合\r\n * @param row\r\n * @param column\r\n */\r\nconst getDetailPic = (row: any, column: IFormColumn) => {\r\n if (!row || !row[column.prop || '']) {\r\n return []\r\n }\r\n const pics: string[] = row[column.prop || '']\r\n .split(column.imgSuffix || ';')\r\n .map((pic: string) => (column.imgPrefix || '') + pic)\r\n return pics\r\n}\r\n\r\nconst getValueColspan = (\r\n item: IFormColumn,\r\n rows: IFormColumn[],\r\n index: number\r\n) => {\r\n const getRemaining = (row: IFormColumn[]) => {\r\n const used = row.reduce((acc, item) => acc + (item.span || 12), 0)\r\n return 24 - used\r\n }\r\n if (index === rows.length - 1) {\r\n return (item.span || 12) + getRemaining(rows) - 1\r\n }\r\n return (item.span || 12) - 1\r\n}\r\n\r\n/**\r\n * @description 校验表单\r\n */\r\nconst validForm = (): Promise<boolean> => {\r\n return new Promise((resolve) => {\r\n formRef.value!.validate((valid) => {\r\n resolve(valid)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * @description 清空数据和校验规则\r\n */\r\nconst clear = () => {\r\n // 清空校验规则\r\n formRef.value?.clearValidate()\r\n // 清空表单数据\r\n formRef.value?.resetFields()\r\n}\r\n\r\nwatch(\r\n () => props.option as IFormOption,\r\n (newVal: IFormOption) => {\r\n if (newVal) {\r\n formOption.value = Object.assign({}, formOption.value, newVal)\r\n if (newVal.column) {\r\n formOption.value.column = cloneDeep(\r\n newVal.column\r\n .filter(\r\n (column) => !(props.permission[column.prop || ''] === false)\r\n )\r\n .sort((a, b) => (b.order || 0) - (a.order || 0))\r\n )\r\n // 处理远程字典的配置\r\n getAllRemoteDics()\r\n if (!props.readonly) {\r\n // 初始化表单的值\r\n initValue()\r\n }\r\n }\r\n }\r\n },\r\n {\r\n immediate: true,\r\n deep: true,\r\n }\r\n)\r\n\r\ndefineExpose({\r\n /**\r\n * @description 校验表单\r\n */\r\n validForm,\r\n /**\r\n * @description 清空表单\r\n */\r\n clear,\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"m-form\">\r\n <!--编辑模式-->\r\n <el-form\r\n v-if=\"!readonly\"\r\n ref=\"formRef\"\r\n :model=\"proxys\"\r\n :disabled=\"loading\"\r\n :size=\"size || globalConfig.size\"\r\n :label-width=\"formOption.labelWidth\"\r\n style=\"width: 100%\"\r\n @submit.prevent\r\n >\r\n <el-row :gutter=\"0\">\r\n <el-col\r\n v-for=\"(column, columnIndex) in formOption.column\"\r\n :key=\"columnIndex\"\r\n :span=\"column.span || 12\"\r\n >\r\n <el-form-item\r\n style=\"width: 100%\"\r\n :label=\"column.label + ':'\"\r\n :prop=\"column.prop\"\r\n :rules=\"column.rules\"\r\n :label-width=\"column.labelWidth || formOption.labelWidth\"\r\n >\r\n <!--插槽信息-->\r\n <slot\r\n v-if=\"slots[column.prop || '']\"\r\n :name=\"column.prop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--输入框-->\r\n <el-input\r\n v-else-if=\"!column.type || INPUT_TYPES.includes(column.type)\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :placeholder=\"column.placeholder\"\r\n :maxlength=\"column.maxlength\"\r\n :show-word-limit=\"column.showWordLimit\"\r\n :show-password=\"column.showPassword\"\r\n :disabled=\"column.disabled || false\"\r\n :type=\"\r\n !column.type || column.type === 'input' ? 'text' : column.type\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <!---->\r\n <!--下拉框-->\r\n <el-select\r\n v-else-if=\"column.type === 'select'\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n :placeholder=\"column.placeholder\"\r\n :multiple=\"column.multiple\"\r\n :clearable=\"column.clearable\"\r\n :filterable=\"column.filterable\"\r\n :filter-method=\"column.filterMethod\"\r\n :remote=\"column.remote\"\r\n :remote-method=\"column.remoteMethod\"\r\n :loading=\"column.loading\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-option\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-select>\r\n <!---->\r\n <!--radio-->\r\n <el-radio-group\r\n v-else-if=\"column.type === 'radio'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n style=\"width: 100%\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-radio\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :value=\"dicItem.value\"\r\n :label=\"dicItem.value\"\r\n >\r\n {{ dicItem.label }}\r\n </el-radio>\r\n </el-radio-group>\r\n <!---->\r\n <!--checkbox-->\r\n <el-checkbox-group\r\n v-else-if=\"column.type === 'checkbox'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-checkbox\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-checkbox-group>\r\n <!---->\r\n <!--switch-->\r\n <template v-else-if=\"column.type === 'switch'\">\r\n <span\r\n v-if=\"!column.dicData || column.dicData.length != 2\"\r\n style=\"\r\n color: var(--el-text-color-placeholder);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\"dicData/dicUrl的结果\"未设置或长度不等于2</span\r\n >\r\n <template v-else>\r\n <el-switch\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :active-value=\"column.dicData[0].value\"\r\n :inactive-value=\"column.dicData[1].value\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <span\r\n style=\"\r\n font-size: var(--el-font-size-base);\r\n color: var(--el-text-color-regular);\r\n margin-left: 6px;\r\n \"\r\n >{{\r\n proxys[column.prop || ''] === column.dicData[0].value\r\n ? column.dicData[0].label\r\n : column.dicData[1].label\r\n }}</span\r\n >\r\n </template>\r\n </template>\r\n <!---->\r\n <!--时间-->\r\n <template v-else-if=\"DATE_TYPES.includes(column.type)\">\r\n <el-date-picker\r\n v-if=\"column.type !== 'time' && column.type !== 'timerange'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :type=\"column.type\"\r\n :clearable=\"column.clearable\"\r\n :disabled=\"column.disabled || false\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :format=\"column.format\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <el-time-picker\r\n v-else\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :is-range=\"column.type === 'timerange'\"\r\n :clearable=\"column.clearable\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n </template>\r\n <!---->\r\n <!--picture-->\r\n <span\r\n v-else-if=\"column.type === 'picture'\"\r\n style=\"\r\n color: var(--el-text-color-regular);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\r\n 暂不支持picture,请使用插槽自行实现\r\n </span>\r\n <!---->\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <!---->\r\n <!--详情模式-->\r\n <template v-else>\r\n <table class=\"detail-desc\">\r\n <tbody>\r\n <tr v-for=\"(row, rowIndex) in detailTableRows\" :key=\"rowIndex\">\r\n <template v-for=\"(column, index) in row\" :key=\"index\">\r\n <td\r\n :style=\"{ width: column.labelWidth || formOption.labelWidth }\"\r\n colspan=\"1\"\r\n class=\"label\"\r\n >\r\n {{ column.label }}\r\n </td>\r\n <td :colspan=\"getValueColspan(column, row, index)\">\r\n <template v-if=\"column.type === 'picture'\">\r\n <MPicture\r\n :src=\"getDetailPic(proxys, column)[0]\"\r\n :preview-src-list=\"getDetailPic(proxys, column)[0]\"\r\n img-width=\"100px\"\r\n img-height=\"100px\"\r\n />\r\n </template>\r\n <template v-else-if=\"NEED_DIC_TYPE.includes(column.type || '')\">\r\n {{ formatDicValue(proxys, column) }}\r\n </template>\r\n <template v-else-if=\"column.type === 'qrcode'\">\r\n <MQrcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.type === 'barcode'\">\r\n <MBarcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else>\r\n {{ proxys[column.prop || ''] }}\r\n </template>\r\n </td>\r\n </template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["DO_defineComponent","item"],"mappings":"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"}
1
+ {"version":3,"file":"form.mjs","sources":["../../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport { computed, ref, useSlots, watch } from 'vue'\r\nimport { cloneDeep, get, set } from 'lodash-unified'\r\nimport { useGlobalConfig } from '@m-eleplus-crud/components'\r\nimport { debugWarn } from '@m-eleplus-crud/utils'\r\nimport { formEmits, formProps } from './form'\r\nimport type { IDictValue } from '@m-eleplus-crud/components/common'\r\nimport type { FormInstance } from 'element-plus'\r\nimport type { IFormColumn, IFormOption } from './form'\r\n\r\nconst COMPONENT_NAME = 'MForm'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(formProps)\r\ndefineEmits(formEmits)\r\n\r\n// 插槽信息\r\nconst slots = useSlots() as any\r\n\r\n// 全局配置\r\nconst globalConfig = useGlobalConfig()\r\n\r\n// 表单实例\r\nconst formRef = ref<FormInstance>()\r\n\r\n// 表单输入类型\r\nconst INPUT_TYPES = [\r\n 'input',\r\n 'textarea',\r\n 'number',\r\n 'password',\r\n 'qrcode',\r\n 'barcode',\r\n]\r\n\r\n// 日期类型\r\nconst DATE_TYPES = [\r\n 'year',\r\n 'month',\r\n 'date',\r\n 'datetime',\r\n 'week',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'time',\r\n 'timerange',\r\n]\r\n\r\n// 需要字典显示处理\r\nconst NEED_DIC_TYPE = ['select', 'checkbox', 'radio', 'switch']\r\n\r\n// 表单配置\r\nconst formOption = ref<IFormOption>({\r\n // 默认标签宽度80px\r\n labelWidth: '80px',\r\n column: [],\r\n})\r\n\r\n/**\r\n * @description 计算详情模式下的表格行\r\n */\r\nconst detailTableRows = computed(() => {\r\n const rows = []\r\n let currentRow = []\r\n let currentTotal = 0\r\n for (const item of formOption.value.column || []) {\r\n const req = item.span || 12\r\n // 若当前行加入该项超过总列数,则开启新行\r\n if (currentTotal + req > 24) {\r\n rows.push(currentRow)\r\n currentRow = []\r\n currentTotal = 0\r\n }\r\n currentRow.push(item)\r\n currentTotal += req\r\n }\r\n if (currentRow.length) rows.push(currentRow)\r\n return rows\r\n})\r\n\r\n// 表单model\r\nconst proxys = new Proxy(props.model as any, {\r\n get(target, property) {\r\n return get(target, property)\r\n },\r\n set(target, property, value) {\r\n set(target, property, value)\r\n return true\r\n },\r\n})\r\n\r\n/**\r\n * @description 初始化表单的值\r\n */\r\nconst initValue = () => {\r\n // 初始化搜索表单的值\r\n if (formOption.value && formOption.value.column) {\r\n for (let i = 0; i < formOption.value.column?.length; i++) {\r\n const column = formOption.value.column[i]\r\n if (column.prop && proxys[column.prop] === undefined) {\r\n if (column.value) {\r\n proxys[column.prop] = column.value\r\n } else {\r\n const ARR_TYPES = [\r\n 'checkbox',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'timerange',\r\n ]\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n ARR_TYPES.includes(column.type || '')\r\n ) {\r\n proxys[column.prop] = []\r\n } else {\r\n proxys[column.prop] = ''\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据类型获取默认时间格式\r\n * @param type 类型\r\n */\r\nconst getValueFormatByType = (type: string) => {\r\n let format = ''\r\n switch (type) {\r\n case 'yearrange':\r\n case 'year':\r\n format = 'YYYY'\r\n break\r\n case 'monthrange':\r\n case 'month':\r\n format = 'YYYY-MM'\r\n break\r\n case 'daterange':\r\n case 'week':\r\n case 'date':\r\n format = 'YYYY-MM-DD'\r\n break\r\n case 'datetimerange':\r\n case 'datetime':\r\n format = 'YYYY-MM-DD HH:mm:ss'\r\n break\r\n case 'time':\r\n format = 'HH:mm:ss'\r\n break\r\n }\r\n return format\r\n}\r\n\r\n/**\r\n * 处理需要远程获取字典的配置\r\n */\r\nconst getAllRemoteDics = () => {\r\n const hasDicUrl = formOption.value?.column?.some((column) => column.dicUrl)\r\n if (hasDicUrl && !globalConfig.value?.httpGet) {\r\n debugWarn('MForm', 'global config httpGet is null')\r\n return\r\n }\r\n /**\r\n * 调用接口设置到dicData\r\n * @param column 列配置\r\n */\r\n const updateRemoteDic = (column: IFormColumn) => {\r\n return new Promise((resolve) => {\r\n let isSuccess = false\r\n // @ts-ignore\r\n globalConfig.value\r\n .httpGet(column.dicUrl, column.dicQuery, column.dicHeaders)\r\n .then((e: any) => {\r\n // @ts-ignore\r\n const { list, label, value } = column.dicFormatter(e)\r\n if (list && Array.isArray(list)) {\r\n column['dicData'] = list.map((item) => {\r\n const lastLabel = label.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return item[key] || match\r\n })\r\n return {\r\n label: lastLabel,\r\n value: item[value],\r\n }\r\n })\r\n isSuccess = true\r\n }\r\n })\r\n .finally(() => {\r\n if (!isSuccess) {\r\n column['dicData'] = []\r\n }\r\n resolve(null)\r\n })\r\n })\r\n }\r\n for (let i = 0; i < (formOption.value?.column || []).length; i++) {\r\n // @ts-ignore\r\n const column = formOption.value.column[i]\r\n if (column.dicUrl) {\r\n if (!column.dicFormatter) {\r\n debugWarn('MForm', 'dicUrl and dicFormatter must be used together')\r\n continue\r\n }\r\n updateRemoteDic(column)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据配置获取表单项的绑定事件\r\n * @param column\r\n */\r\nconst getFormItemEventBind = (column: IFormColumn): object => {\r\n const result: any = {}\r\n for (const key in column) {\r\n if (key.startsWith('event')) {\r\n let funName = key.replace('event', '')\r\n funName = funName.charAt(0).toLowerCase() + funName.slice(1)\r\n // @ts-ignore\r\n result[funName] = column[key]\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * 解析字典并展示\r\n * @param row 行数据\r\n * @param column 列配置\r\n */\r\nconst formatDicValue = (row: any, column: IFormColumn) => {\r\n // 未拿到字典值的placeholder\r\n let dictLabel: string | undefined = ''\r\n // 查找\r\n const findLabelByValue = (dicData: IDictValue[], value: any) => {\r\n const dictItem = (dicData || []).find((dict) => dict.value === value)\r\n if (dictItem === undefined) {\r\n return dictLabel\r\n }\r\n return dictItem.label\r\n }\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n column.type === 'checkbox'\r\n ) {\r\n // select下拉且开启多选/多选模式\r\n let values: any = []\r\n\r\n if (\r\n row[column.prop || ''] != null &&\r\n row[column.prop || ''] != undefined &&\r\n row[column.prop || ''] !== ''\r\n ) {\r\n if (Array.isArray(row[column.prop || ''])) {\r\n // 数据就是数组\r\n values = row[column.prop || '']\r\n } else if (typeof row[column.prop || ''] === 'string') {\r\n // 数据是字符串,启动字符分割,后续需要弄成从配置读取\r\n values = row[column.prop || ''].split(',')\r\n } else {\r\n // 最后情况变成数组\r\n values = [row[column.prop || '']]\r\n }\r\n }\r\n // 结果集合\r\n const result: string[] = []\r\n for (const value of values) {\r\n dictLabel = findLabelByValue(column.dicData || [], value)\r\n if (dictLabel === undefined) {\r\n break\r\n }\r\n result.push(dictLabel)\r\n }\r\n return result.join(',')\r\n }\r\n // 单模式\r\n dictLabel = findLabelByValue(column.dicData || [], row[column.prop || ''])\r\n return dictLabel\r\n}\r\n\r\n/**\r\n * 拿到详情模式下的图片集合\r\n * @param row\r\n * @param column\r\n */\r\nconst getDetailPic = (row: any, column: IFormColumn) => {\r\n if (!row || !row[column.prop || '']) {\r\n return []\r\n }\r\n const pics: string[] = row[column.prop || '']\r\n .split(column.imgSuffix || ';')\r\n .map((pic: string) => (column.imgPrefix || '') + pic)\r\n return pics\r\n}\r\n\r\nconst getValueColspan = (\r\n item: IFormColumn,\r\n rows: IFormColumn[],\r\n index: number\r\n) => {\r\n const getRemaining = (row: IFormColumn[]) => {\r\n const used = row.reduce((acc, item) => acc + (item.span || 12), 0)\r\n return 24 - used\r\n }\r\n if (index === rows.length - 1) {\r\n return (item.span || 12) + getRemaining(rows) - 1\r\n }\r\n return (item.span || 12) - 1\r\n}\r\n\r\n/**\r\n * @description 校验表单\r\n */\r\nconst validForm = (): Promise<boolean> => {\r\n return new Promise((resolve) => {\r\n formRef.value!.validate((valid) => {\r\n resolve(valid)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * @description 清空数据和校验规则\r\n */\r\nconst clear = () => {\r\n // 清空校验规则\r\n formRef.value?.clearValidate()\r\n // 清空表单数据\r\n formRef.value?.resetFields()\r\n}\r\n\r\nwatch(\r\n () => props.option as IFormOption,\r\n (newVal: IFormOption) => {\r\n if (newVal) {\r\n formOption.value = Object.assign({}, formOption.value, newVal)\r\n if (newVal.column) {\r\n formOption.value.column = cloneDeep(\r\n newVal.column\r\n .filter(\r\n (column) => !(props.permission[column.prop || ''] === false)\r\n )\r\n .sort((a, b) => (b.order || 0) - (a.order || 0))\r\n )\r\n // 处理远程字典的配置\r\n getAllRemoteDics()\r\n if (!props.readonly) {\r\n // 初始化表单的值\r\n initValue()\r\n }\r\n }\r\n }\r\n },\r\n {\r\n immediate: true,\r\n deep: true,\r\n }\r\n)\r\n\r\ndefineExpose({\r\n /**\r\n * @description 校验表单\r\n */\r\n validForm,\r\n /**\r\n * @description 清空表单\r\n */\r\n clear,\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"m-form\">\r\n <!--编辑模式-->\r\n <el-form\r\n v-if=\"!readonly\"\r\n ref=\"formRef\"\r\n :model=\"proxys\"\r\n :disabled=\"loading\"\r\n :size=\"size || globalConfig.size\"\r\n :label-width=\"formOption.labelWidth\"\r\n style=\"width: 100%\"\r\n @submit.prevent\r\n >\r\n <el-row :gutter=\"0\">\r\n <el-col\r\n v-for=\"(column, columnIndex) in formOption.column\"\r\n :key=\"columnIndex\"\r\n :span=\"column.span || 12\"\r\n >\r\n <el-form-item\r\n style=\"width: 100%\"\r\n :label=\"column.label + ':'\"\r\n :prop=\"column.prop\"\r\n :rules=\"column.rules\"\r\n :label-width=\"column.labelWidth || formOption.labelWidth\"\r\n >\r\n <!--插槽信息-->\r\n <slot\r\n v-if=\"slots[column.prop || '']\"\r\n :name=\"column.prop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--输入框-->\r\n <el-input\r\n v-else-if=\"!column.type || INPUT_TYPES.includes(column.type)\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :placeholder=\"column.placeholder\"\r\n :maxlength=\"column.maxlength\"\r\n :show-word-limit=\"column.showWordLimit\"\r\n :show-password=\"column.showPassword\"\r\n :disabled=\"column.disabled || false\"\r\n :type=\"\r\n !column.type || column.type === 'input' ? 'text' : column.type\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <!---->\r\n <!--下拉框-->\r\n <el-select\r\n v-else-if=\"column.type === 'select'\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n :placeholder=\"column.placeholder\"\r\n :multiple=\"column.multiple\"\r\n :clearable=\"column.clearable\"\r\n :filterable=\"column.filterable\"\r\n :filter-method=\"column.filterMethod\"\r\n :remote=\"column.remote\"\r\n :remote-method=\"column.remoteMethod\"\r\n :loading=\"column.loading\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-option\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-select>\r\n <!---->\r\n <!--radio-->\r\n <el-radio-group\r\n v-else-if=\"column.type === 'radio'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n style=\"width: 100%\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-radio\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :value=\"dicItem.value\"\r\n :label=\"dicItem.value\"\r\n >\r\n {{ dicItem.label }}\r\n </el-radio>\r\n </el-radio-group>\r\n <!---->\r\n <!--checkbox-->\r\n <el-checkbox-group\r\n v-else-if=\"column.type === 'checkbox'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-checkbox\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-checkbox-group>\r\n <!---->\r\n <!--switch-->\r\n <template v-else-if=\"column.type === 'switch'\">\r\n <span\r\n v-if=\"!column.dicData || column.dicData.length != 2\"\r\n style=\"\r\n color: var(--el-text-color-placeholder);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\"dicData/dicUrl的结果\"未设置或长度不等于2</span\r\n >\r\n <template v-else>\r\n <el-switch\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :active-value=\"column.dicData[0].value\"\r\n :inactive-value=\"column.dicData[1].value\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <span\r\n style=\"\r\n font-size: var(--el-font-size-base);\r\n color: var(--el-text-color-regular);\r\n margin-left: 6px;\r\n \"\r\n >{{\r\n proxys[column.prop || ''] === column.dicData[0].value\r\n ? column.dicData[0].label\r\n : column.dicData[1].label\r\n }}</span\r\n >\r\n </template>\r\n </template>\r\n <!---->\r\n <!--时间-->\r\n <template v-else-if=\"DATE_TYPES.includes(column.type)\">\r\n <el-date-picker\r\n v-if=\"column.type !== 'time' && column.type !== 'timerange'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :type=\"column.type\"\r\n :clearable=\"column.clearable\"\r\n :disabled=\"column.disabled || false\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :format=\"column.format\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <el-time-picker\r\n v-else\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :is-range=\"column.type === 'timerange'\"\r\n :clearable=\"column.clearable\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n </template>\r\n <!---->\r\n <!--picture-->\r\n <span\r\n v-else-if=\"column.type === 'picture'\"\r\n style=\"\r\n color: var(--el-text-color-regular);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\r\n 暂不支持picture,请使用插槽自行实现\r\n </span>\r\n <!---->\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <!---->\r\n <!--详情模式-->\r\n <template v-else>\r\n <table class=\"detail-desc\">\r\n <tbody>\r\n <tr v-for=\"(row, rowIndex) in detailTableRows\" :key=\"rowIndex\">\r\n <template v-for=\"(column, index) in row\" :key=\"index\">\r\n <td\r\n :style=\"{ width: column.labelWidth || formOption.labelWidth }\"\r\n colspan=\"1\"\r\n class=\"label\"\r\n >\r\n {{ column.label }}\r\n </td>\r\n <td :colspan=\"getValueColspan(column, row, index)\">\r\n <template v-if=\"column.type === 'picture'\">\r\n <MPicture\r\n :src=\"getDetailPic(proxys, column)[0]\"\r\n :preview-src-list=\"getDetailPic(proxys, column)\"\r\n img-width=\"100px\"\r\n img-height=\"100px\"\r\n />\r\n </template>\r\n <template v-else-if=\"NEED_DIC_TYPE.includes(column.type || '')\">\r\n {{ formatDicValue(proxys, column) }}\r\n </template>\r\n <template v-else-if=\"column.type === 'qrcode'\">\r\n <MQrcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.type === 'barcode'\">\r\n <MBarcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else>\r\n {{ proxys[column.prop || ''] }}\r\n </template>\r\n </td>\r\n </template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["DO_defineComponent","item"],"mappings":"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"}
@@ -13,10 +13,10 @@ export { configProviderContextKey } from './config-provider/src/constants.mjs';
13
13
  export { provideGlobalConfig, useGlobalComponentSettings, useGlobalConfig } from './config-provider/src/hooks/use-global-config.mjs';
14
14
  export { tableEmits, tableProps } from './table/src/table2.mjs';
15
15
  export { searchEmits, searchProps } from './search/src/search.mjs';
16
- export { pictureEmits, pictureProps } from './picture/src/picture2.mjs';
17
- export { dialogEmits, dialogProps } from './dialog/src/dialog2.mjs';
16
+ export { pictureEmits, pictureProps } from './picture/src/picture.mjs';
17
+ export { dialogEmits, dialogProps } from './dialog/src/dialog.mjs';
18
18
  export { qrcodeEmits, qrcodeProps } from './qrcode/src/qrcode.mjs';
19
- export { barcodeEmits, barcodeProps } from './barcode/src/barcode2.mjs';
19
+ export { barcodeEmits, barcodeProps } from './barcode/src/barcode.mjs';
20
20
  export { formEmits, formProps } from './form/src/form2.mjs';
21
21
  export { crudEmits, crudProps } from './crud/src/crud2.mjs';
22
22
  export { paginationEmits, paginationProps } from './pagination/src/pagination.mjs';
@@ -1,5 +1,5 @@
1
- import Picture from './src/picture.mjs';
2
- export { pictureEmits, pictureProps } from './src/picture2.mjs';
1
+ import Picture from './src/picture2.mjs';
2
+ export { pictureEmits, pictureProps } from './src/picture.mjs';
3
3
  import { withInstall } from '../../utils/vue/install.mjs';
4
4
 
5
5
  const MPicture = withInstall(Picture);
@@ -1,31 +1,24 @@
1
- import { defineComponent, resolveComponent, openBlock, createElementBlock, createVNode, normalizeStyle } from 'vue';
2
- import { pictureProps, pictureEmits } from './picture2.mjs';
3
- import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
1
+ import { buildProps } from '../../../utils/vue/props/runtime.mjs';
4
2
 
5
- const COMPONENT_NAME = "MPicture";
6
- const __default__ = defineComponent({
7
- name: COMPONENT_NAME
8
- });
9
- const _sfc_main = defineComponent({
10
- ...__default__,
11
- props: pictureProps,
12
- emits: pictureEmits,
13
- setup(__props) {
14
- return (_ctx, _cache) => {
15
- const _component_el_image = resolveComponent("el-image");
16
- return openBlock(), createElementBlock("div", { class: "m-picture" }, [
17
- createVNode(_component_el_image, {
18
- src: _ctx.src,
19
- "preview-src-list": _ctx.previewSrcList,
20
- fit: "cover",
21
- style: normalizeStyle({ width: _ctx.imgWidth, height: _ctx.imgHeight }),
22
- "preview-teleported": true
23
- }, null, 8, ["src", "preview-src-list", "style"])
24
- ]);
25
- };
3
+ const pictureProps = buildProps({
4
+ src: {
5
+ type: String,
6
+ required: true
7
+ },
8
+ previewSrcList: {
9
+ type: Array,
10
+ required: true
11
+ },
12
+ imgWidth: {
13
+ type: String,
14
+ default: "70px"
15
+ },
16
+ imgHeight: {
17
+ type: String,
18
+ default: "70px"
26
19
  }
27
20
  });
28
- var Picture = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "picture.vue"]]);
21
+ const pictureEmits = {};
29
22
 
30
- export { Picture as default };
23
+ export { pictureEmits, pictureProps };
31
24
  //# sourceMappingURL=picture.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"picture.mjs","sources":["../../../../../../../packages/components/picture/src/picture.vue"],"sourcesContent":["<template>\r\n <div class=\"m-picture\">\r\n <el-image\r\n :src=\"src\"\r\n :preview-src-list=\"previewSrcList\"\r\n fit=\"cover\"\r\n :style=\"{ width: imgWidth, height: imgHeight }\"\r\n :preview-teleported=\"true\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { pictureEmits, pictureProps } from './picture'\r\n\r\nconst COMPONENT_NAME = 'MPicture'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\ndefineProps(pictureProps)\r\ndefineEmits(pictureEmits)\r\n</script>\r\n"],"names":["DO_defineComponent"],"mappings":";;;;;AAgBc,MAAA,cAAAA,eAAA,CAAA;AAAA,EACZ,IAAM,EAAA,cAAA;AACR;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"picture.mjs","sources":["../../../../../../../packages/components/picture/src/picture.ts"],"sourcesContent":["import { buildProps } from '@m-eleplus-crud/utils'\r\n\r\nimport type { ExtractPropTypes } from 'vue'\r\n\r\nexport const pictureProps = buildProps({\r\n /**\r\n * @description 图片url资源\r\n */\r\n src: {\r\n type: String,\r\n required: true,\r\n },\r\n /**\r\n * @description 预览图片url资源集合\r\n */\r\n previewSrcList: {\r\n type: Array,\r\n required: true,\r\n },\r\n /**\r\n * @description 图片宽度\r\n */\r\n imgWidth: {\r\n type: String,\r\n default: '70px',\r\n },\r\n /**\r\n * @description 图片高度\r\n */\r\n imgHeight: {\r\n type: String,\r\n default: '70px',\r\n },\r\n} as const)\r\nexport type PictureProps = ExtractPropTypes<typeof pictureProps>\r\n\r\nexport const pictureEmits = {}\r\nexport type PictureEmits = typeof pictureEmits\r\n"],"names":[],"mappings":";;AAIO,MAAM,eAAe,UAAW,CAAA;AAAA,EAIrC,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,cAAgB,EAAA;AAAA,IACd,IAAM,EAAA,KAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AAAA,EAIA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AACF,CAAU,EAAA;AAGH,MAAM,eAAe;;;;"}
@@ -1,24 +1,31 @@
1
- import { buildProps } from '../../../utils/vue/props/runtime.mjs';
1
+ import { defineComponent, resolveComponent, openBlock, createElementBlock, createVNode, normalizeStyle } from 'vue';
2
+ import { pictureProps, pictureEmits } from './picture.mjs';
3
+ import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
2
4
 
3
- const pictureProps = buildProps({
4
- src: {
5
- type: String,
6
- required: true
7
- },
8
- previewSrcList: {
9
- type: Array,
10
- required: true
11
- },
12
- imgWidth: {
13
- type: String,
14
- default: "70px"
15
- },
16
- imgHeight: {
17
- type: String,
18
- default: "70px"
5
+ const COMPONENT_NAME = "MPicture";
6
+ const __default__ = defineComponent({
7
+ name: COMPONENT_NAME
8
+ });
9
+ const _sfc_main = defineComponent({
10
+ ...__default__,
11
+ props: pictureProps,
12
+ emits: pictureEmits,
13
+ setup(__props) {
14
+ return (_ctx, _cache) => {
15
+ const _component_el_image = resolveComponent("el-image");
16
+ return openBlock(), createElementBlock("div", { class: "m-picture" }, [
17
+ createVNode(_component_el_image, {
18
+ src: _ctx.src,
19
+ "preview-src-list": _ctx.previewSrcList,
20
+ fit: "cover",
21
+ style: normalizeStyle({ width: _ctx.imgWidth, height: _ctx.imgHeight }),
22
+ "preview-teleported": true
23
+ }, null, 8, ["src", "preview-src-list", "style"])
24
+ ]);
25
+ };
19
26
  }
20
27
  });
21
- const pictureEmits = {};
28
+ var Picture = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "picture.vue"]]);
22
29
 
23
- export { pictureEmits, pictureProps };
30
+ export { Picture as default };
24
31
  //# sourceMappingURL=picture2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"picture2.mjs","sources":["../../../../../../../packages/components/picture/src/picture.ts"],"sourcesContent":["import { buildProps } from '@m-eleplus-crud/utils'\r\n\r\nimport type { ExtractPropTypes } from 'vue'\r\n\r\nexport const pictureProps = buildProps({\r\n /**\r\n * @description 图片url资源\r\n */\r\n src: {\r\n type: String,\r\n required: true,\r\n },\r\n /**\r\n * @description 预览图片url资源集合\r\n */\r\n previewSrcList: {\r\n type: Array,\r\n required: true,\r\n },\r\n /**\r\n * @description 图片宽度\r\n */\r\n imgWidth: {\r\n type: String,\r\n default: '70px',\r\n },\r\n /**\r\n * @description 图片高度\r\n */\r\n imgHeight: {\r\n type: String,\r\n default: '70px',\r\n },\r\n} as const)\r\nexport type PictureProps = ExtractPropTypes<typeof pictureProps>\r\n\r\nexport const pictureEmits = {}\r\nexport type PictureEmits = typeof pictureEmits\r\n"],"names":[],"mappings":";;AAIO,MAAM,eAAe,UAAW,CAAA;AAAA,EAIrC,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,cAAgB,EAAA;AAAA,IACd,IAAM,EAAA,KAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AAAA,EAIA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AACF,CAAU,EAAA;AAGH,MAAM,eAAe;;;;"}
1
+ {"version":3,"file":"picture2.mjs","sources":["../../../../../../../packages/components/picture/src/picture.vue"],"sourcesContent":["<template>\r\n <div class=\"m-picture\">\r\n <el-image\r\n :src=\"src\"\r\n :preview-src-list=\"previewSrcList\"\r\n fit=\"cover\"\r\n :style=\"{ width: imgWidth, height: imgHeight }\"\r\n :preview-teleported=\"true\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { pictureEmits, pictureProps } from './picture'\r\n\r\nconst COMPONENT_NAME = 'MPicture'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\ndefineProps(pictureProps)\r\ndefineEmits(pictureEmits)\r\n</script>\r\n"],"names":["DO_defineComponent"],"mappings":";;;;;AAgBc,MAAA,cAAAA,eAAA,CAAA;AAAA,EACZ,IAAM,EAAA,cAAA;AACR;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -267,7 +267,8 @@ const _sfc_main = defineComponent({
267
267
  prop: column.prop,
268
268
  align: column.align || "center",
269
269
  "show-overflow-tooltip": column.overHidden,
270
- formatter: column.formatter ? (row, col, cellValue, index) => column.formatter(row, column, index) : null
270
+ formatter: column.formatter ? (row, col, cellValue, index) => column.formatter(row, column, index) : null,
271
+ selectable: column.selectable
271
272
  }, createSlots({
272
273
  _: 2
273
274
  }, [
@@ -371,7 +372,7 @@ const _sfc_main = defineComponent({
371
372
  ]),
372
373
  key: "2"
373
374
  } : void 0
374
- ]), 1032, ["type", "width", "label", "prop", "align", "show-overflow-tooltip", "formatter"]);
375
+ ]), 1032, ["type", "width", "label", "prop", "align", "show-overflow-tooltip", "formatter", "selectable"]);
375
376
  }),
376
377
  128
377
378
  )),