color-star-custom-components 0.0.14 → 0.0.16

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 (73) hide show
  1. package/es/CustomSelect.mjs +1 -1
  2. package/es/IconRenderer.mjs +1 -1
  3. package/es/IconSelect.mjs +1 -1
  4. package/es/SearchBar.mjs +23 -26
  5. package/es/TreeShowSelect.mjs +26 -28
  6. package/es/assets/SearchBar.css +1 -1
  7. package/es/assets/TreeShowSelect.css +1 -1
  8. package/es/chunks/BatchImport.B5inubHt.js +173 -0
  9. package/es/chunks/CustomSelect.DvKTT1Kn.js +5 -0
  10. package/es/chunks/CustomTitle.BBrGK8vA.js +5 -0
  11. package/es/chunks/FileList.CLb0j2ca.js +5 -0
  12. package/es/chunks/GlassProxy.Dek3zo-k.js +176 -0
  13. package/es/chunks/IconEmpty.DoCNu0jY.js +5 -0
  14. package/es/chunks/IconRenderer.DbLSQXFZ.js +60 -0
  15. package/es/chunks/IconSelect.DjNvTfvM.js +162 -0
  16. package/es/chunks/SearchBar.Dw1qAtAa.js +582 -0
  17. package/es/chunks/TreeSelect.BkF207wh.js +5 -0
  18. package/es/chunks/TreeShowSelect.DuVWWk73.js +87 -0
  19. package/es/chunks/UploadFile.Cll5_hce.js +5 -0
  20. package/es/chunks/_plugin-vue_export-helper.BgwWMokO.js +6 -0
  21. package/es/chunks/chunk.CWVlkNTZ.js +18 -0
  22. package/es/chunks/config.SfJn1-ON.js +24 -0
  23. package/es/chunks/config.j-piuAWF.js +24 -0
  24. package/es/chunks/config.t_HHFoB9.js +18 -0
  25. package/es/chunks/global.31sZWaXJ.js +15282 -0
  26. package/es/chunks/global.BEeKea4u.js +1955 -0
  27. package/es/chunks/global.ChqJEry4.js +7973 -0
  28. package/es/chunks/global.CnGuevjX.js +8168 -0
  29. package/es/chunks/layout.4utLpDo3.js +120 -0
  30. package/es/chunks/layout.84FMC7pU.js +121 -0
  31. package/es/chunks/layout.BsFtxlIJ.js +31 -0
  32. package/es/chunks/layout.C5pEEv-d.js +207 -0
  33. package/es/chunks/layout.CokqBzin.js +338 -0
  34. package/es/chunks/layout.Dix22XYV.js +113 -0
  35. package/es/chunks/layout.FqoRQKdx.js +59 -0
  36. package/es/chunks/utils.BFFtVZUp.js +10 -0
  37. package/es/index.mjs +1 -1
  38. package/lib/CustomSelect.js +1 -1
  39. package/lib/IconRenderer.js +1 -1
  40. package/lib/IconSelect.js +1 -1
  41. package/lib/SearchBar.js +1 -1
  42. package/lib/TreeShowSelect.js +1 -1
  43. package/lib/assets/SearchBar.css +1 -1
  44. package/lib/assets/TreeShowSelect.css +1 -1
  45. package/lib/chunks/BatchImport.Be1Oddwm.js +1 -0
  46. package/lib/chunks/CustomSelect.qmizu8jb.js +1 -0
  47. package/lib/chunks/CustomTitle.C_V_RLwQ.js +1 -0
  48. package/lib/chunks/FileList.DK7Iz3hw.js +1 -0
  49. package/lib/chunks/GlassProxy.BurTd4Wo.js +1 -0
  50. package/lib/chunks/IconEmpty.MspO8cAH.js +1 -0
  51. package/lib/chunks/IconRenderer.CepZVN9N.js +1 -0
  52. package/lib/chunks/IconSelect.GFCG4dmy.js +1 -0
  53. package/lib/chunks/SearchBar.C1eP9H7z.js +1 -0
  54. package/lib/chunks/TreeSelect.CKdd24_v.js +1 -0
  55. package/lib/chunks/TreeShowSelect.D06Kgg9y.js +1 -0
  56. package/lib/chunks/UploadFile.FAeNJfgq.js +1 -0
  57. package/lib/chunks/_plugin-vue_export-helper.Bgn9wawX.js +1 -0
  58. package/lib/chunks/chunk.D6xVHP8F.js +1 -0
  59. package/lib/chunks/config.CQdd5R1R.js +1 -0
  60. package/lib/chunks/config.x7rWDsG1.js +1 -0
  61. package/lib/chunks/global.BwmaGr1r.js +1 -0
  62. package/lib/chunks/global.C-GuAavy.js +1 -0
  63. package/lib/chunks/global.CCgRKoj5.js +1 -0
  64. package/lib/chunks/layout.0C5st371.js +1 -0
  65. package/lib/chunks/layout.966lkT12.js +1 -0
  66. package/lib/chunks/layout.C4airLP9.js +1 -0
  67. package/lib/chunks/layout.ChiWtlly.js +1 -0
  68. package/lib/chunks/layout.DF2j_cdu.js +1 -0
  69. package/lib/chunks/layout.DjMFll_s.js +1 -0
  70. package/lib/chunks/layout.DutPtWqI.js +1 -0
  71. package/lib/chunks/utils.a5Y3RKNY.js +1 -0
  72. package/lib/index.js +1 -1
  73. package/package.json +9 -9
@@ -0,0 +1,120 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.BgwWMokO.js";
2
+ import { Fragment, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useCssVars, watch, withCtx } from "vue";
3
+ import { ElIcon, ElImage } from "element-plus";
4
+ import { emitsMap, uploadFileType, uploadFileTypeMap } from "color-star-custom-methods";
5
+ import { IconDelete, IconDoc, IconOtherFile, IconPdf, IconPpt, IconTxt, IconXls } from "color-message-lingyun-vue";
6
+ import '../assets/layout2.css';const uploadStatus = {
7
+ uploading: "uploading",
8
+ success: "success",
9
+ error: "error"
10
+ };
11
+ var _hoisted_1 = {
12
+ key: 0,
13
+ class: "file-list display-grid pd-t-12 pd-b-12"
14
+ }, _hoisted_2 = { class: "flex overflow-hidden flex-1 pd-r-10" }, _hoisted_3 = { class: "pd-l-8 flex-1 overflow-hidden" }, _hoisted_4 = ["title"], _hoisted_5 = { class: "fz-12 text-ellipsis lh-16" }, _hoisted_6 = {
15
+ key: 1,
16
+ class: "text-74798c"
17
+ }, layout_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ Object.assign({ name: "FileList" }, {
18
+ __name: "layout",
19
+ props: {
20
+ modelValue: {
21
+ type: Array,
22
+ default: () => []
23
+ },
24
+ showDelete: {
25
+ type: Boolean,
26
+ default: !0
27
+ },
28
+ fieldMapping: {
29
+ type: Object,
30
+ default: () => ({})
31
+ },
32
+ rowCount: {
33
+ type: Number,
34
+ default: 2
35
+ },
36
+ iconSize: {
37
+ type: Number,
38
+ default: 36
39
+ }
40
+ },
41
+ emits: [
42
+ emitsMap.delete,
43
+ emitsMap.change,
44
+ emitsMap.updateModelValue
45
+ ],
46
+ setup(c, { emit: R }) {
47
+ useCssVars((M) => ({ v52cadaaa: c.rowCount }));
48
+ let z = c, B = R, V = ref(z.modelValue), H = Object.fromEntries(Object.entries(uploadFileTypeMap).map(([c, M]) => [M, c])), U = (c) => c[z.fieldMapping.fileUrl] ? c[z.fieldMapping.fileUrl] : c.raw && c.raw instanceof File ? URL.createObjectURL(c.raw) : c instanceof File ? URL.createObjectURL(c) : "", W = {
49
+ [uploadFileType.pdf]: IconPdf,
50
+ [uploadFileType.doc]: IconDoc,
51
+ [uploadFileType.docx]: IconDoc,
52
+ [uploadFileType.xls]: IconXls,
53
+ [uploadFileType.xlsx]: IconXls,
54
+ [uploadFileType.ppt]: IconPpt,
55
+ [uploadFileType.pptx]: IconPpt,
56
+ [uploadFileType.txt]: IconTxt
57
+ }, G = (c) => c?.includes("image"), K = (c) => W[H[c]] || IconOtherFile, q = (c) => {
58
+ if (!c || c === 0) return "0 B";
59
+ let M = 1024, N = [
60
+ "B",
61
+ "KB",
62
+ "MB",
63
+ "GB"
64
+ ], P = Math.floor(Math.log(c) / Math.log(M));
65
+ return `${parseFloat((c / M ** +P).toFixed(2))} ${N[P]}`;
66
+ }, J = (c, M) => {
67
+ V.value.splice(M, 1), B(emitsMap.delete, c), B(emitsMap.updateModelValue, V.value), B(emitsMap.change, V.value);
68
+ };
69
+ return watch(() => z.modelValue, (c) => {
70
+ V.value = c;
71
+ }, { immediate: !0 }), (F, L) => V.value?.length ? (openBlock(), createElementBlock("div", _hoisted_1, [(openBlock(!0), createElementBlock(Fragment, null, renderList(V.value, (I, L) => (openBlock(), createElementBlock("div", {
72
+ key: L,
73
+ class: normalizeClass(["pd-l-8 pd-r-8 pd-t-6 pd-b-6 radius-8 file-item overflow-hidden flex items-center", {
74
+ "bg-uploading": I.fileStatus === unref(uploadStatus).uploading,
75
+ "bg-fcfdff": I.fileStatus !== unref(uploadStatus).uploading,
76
+ "border-error": I.fileStatus === unref(uploadStatus).error,
77
+ "border-normal": I.fileStatus !== unref(uploadStatus).error
78
+ }])
79
+ }, [createElementVNode("div", _hoisted_2, [G(I?.type) && U(I) ? (openBlock(), createBlock(unref(ElImage), {
80
+ key: 0,
81
+ src: U(I),
82
+ class: "radius-4",
83
+ fit: "cover",
84
+ style: normalizeStyle({
85
+ width: `${c.iconSize}px`,
86
+ height: `${c.iconSize}px`
87
+ })
88
+ }, null, 8, ["src", "style"])) : (openBlock(), createBlock(unref(ElIcon), {
89
+ key: 1,
90
+ size: c.iconSize,
91
+ class: "pointer"
92
+ }, {
93
+ default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(K(I?.type))))]),
94
+ _: 2
95
+ }, 1032, ["size"])), createElementVNode("div", _hoisted_3, [createElementVNode("div", {
96
+ class: normalizeClass(["fz-14 text-ellipsis lh-20 flex-1", {
97
+ "text-ec0e13": I.fileStatus === unref(uploadStatus).error,
98
+ "text-262626": I.fileStatus !== unref(uploadStatus).error
99
+ }]),
100
+ title: I[c.fieldMapping.fileName]
101
+ }, toDisplayString(I[c.fieldMapping.fileName]), 11, _hoisted_4), createElementVNode("div", _hoisted_5, [F.$slots.status ? renderSlot(F.$slots, "status", {
102
+ key: 0,
103
+ file: I
104
+ }, void 0, !0) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [F.$slots.size ? renderSlot(F.$slots, "size", {
105
+ key: 0,
106
+ file: I,
107
+ size: q(I.size)
108
+ }, void 0, !0) : (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(q(I.size)), 1))], 64))])])]), c.showDelete ? (openBlock(), createBlock(unref(ElIcon), {
109
+ key: 0,
110
+ size: 16,
111
+ color: I.fileStatus === unref(uploadStatus).error ? "var(--error-color-1)" : "var(--text-color-4)",
112
+ class: "pointer",
113
+ onClick: (c) => J(I, L)
114
+ }, {
115
+ default: withCtx(() => [createVNode(unref(IconDelete))]),
116
+ _: 1
117
+ }, 8, ["color", "onClick"])) : createCommentVNode("", !0)], 2))), 128))])) : createCommentVNode("", !0);
118
+ }
119
+ }), [["__scopeId", "data-v-cf16e18c"]]);
120
+ export { uploadStatus as n, layout_default as t };
@@ -0,0 +1,121 @@
1
+ import { ref as g, computed as o, onMounted as S, nextTick as C, watch as k, createBlock as M, openBlock as j, resolveDynamicComponent as D, unref as b, mergeProps as F } from "vue";
2
+ import { ElTreeSelect as x, ElSelectV2 as E } from "element-plus";
3
+ import { emitsMap as r } from "color-star-custom-methods";
4
+ const q = /* @__PURE__ */ Object.assign({
5
+ name: "CustomSelect"
6
+ }, {
7
+ __name: "layout",
8
+ props: {
9
+ // 绑定值
10
+ modelValue: {
11
+ type: [String, Number, Array, Object],
12
+ default: () => null
13
+ },
14
+ // 是否可清空
15
+ clearable: {
16
+ type: Boolean,
17
+ default: !0
18
+ },
19
+ // 是否可搜索
20
+ filterable: {
21
+ type: Boolean,
22
+ default: !0
23
+ },
24
+ // 多选时是否将选中值按文字的形式展示
25
+ collapseTags: {
26
+ type: Boolean,
27
+ default: !0
28
+ },
29
+ // 多选
30
+ multiple: {
31
+ type: Boolean,
32
+ default: !1
33
+ },
34
+ // 接口配置
35
+ apiConfig: {
36
+ type: Function
37
+ },
38
+ // 数据映射配置
39
+ mapping: {
40
+ type: Object,
41
+ default: () => ({
42
+ label: "label",
43
+ value: "value",
44
+ disabled: "disabled",
45
+ children: "children"
46
+ })
47
+ },
48
+ // 静态数据
49
+ staticOptions: {
50
+ type: Array,
51
+ default: () => []
52
+ },
53
+ // 是否在组件挂载时自动加载数据
54
+ autoLoad: {
55
+ type: Boolean,
56
+ default: !0
57
+ },
58
+ // 请求参数
59
+ params: {
60
+ type: Object,
61
+ default: () => ({})
62
+ },
63
+ // 是否为树形选择器
64
+ isTreeSelect: {
65
+ type: Boolean,
66
+ default: !1
67
+ }
68
+ },
69
+ emits: [r.updateModelValue, r.change],
70
+ setup(l, { expose: v, emit: y }) {
71
+ const e = l, s = y, n = g(e.modelValue), i = g([]), c = o(() => typeof e.apiConfig == "function"), h = o(() => e.staticOptions.length > 0 ? e.staticOptions : i.value), V = o(() => e.isTreeSelect ? "data" : "options"), T = o(() => e.isTreeSelect ? "children" : "options"), B = o(() => ({
72
+ ...e.mapping,
73
+ [T.value]: e.mapping.children
74
+ })), p = async () => {
75
+ c.value && e.apiConfig(e.params)?.then((a) => {
76
+ i.value = d(a?.data?.data || a?.data || []);
77
+ });
78
+ };
79
+ function d(a, u = !1) {
80
+ return a.map((t) => {
81
+ const m = u || t.isEnabled === 0, f = {
82
+ ...t,
83
+ disabled: m
84
+ };
85
+ return t.children && t.children.length > 0 && (f.children = d(t.children, m)), f;
86
+ });
87
+ }
88
+ const O = () => {
89
+ s(r.updateModelValue, n.value), s(r.change, n.value);
90
+ };
91
+ return v({
92
+ clear: () => {
93
+ i.value = [], n.value = e.multiple ? [] : null;
94
+ },
95
+ loadData: p
96
+ }), S(() => {
97
+ e.autoLoad && c.value && C(() => {
98
+ p();
99
+ });
100
+ }), k(
101
+ () => e.modelValue,
102
+ (a) => {
103
+ n.value = a;
104
+ },
105
+ { immediate: !0 }
106
+ ), (a, u) => (j(), M(D(l.isTreeSelect ? b(x) : b(E)), F({
107
+ modelValue: n.value,
108
+ "onUpdate:modelValue": u[0] || (u[0] = (t) => n.value = t),
109
+ props: B.value,
110
+ multiple: l.multiple,
111
+ "collapse-tags": l.collapseTags,
112
+ filterable: l.filterable,
113
+ clearable: l.clearable,
114
+ [V.value || ""]: h.value,
115
+ "node-key": l.mapping.value
116
+ }, a.$attrs, { onChange: O }), null, 16, ["modelValue", "props", "multiple", "collapse-tags", "filterable", "clearable", "node-key"]));
117
+ }
118
+ });
119
+ export {
120
+ q as _
121
+ };
@@ -0,0 +1,31 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.BgwWMokO.js";
2
+ import { createElementBlock, openBlock, toDisplayString, unref, useCssVars } from "vue";
3
+ import '../assets/layout3.css';var _hoisted_1 = { class: "custom-title" }, layout_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ Object.assign({ name: "CustomTitle" }, {
4
+ __name: "layout",
5
+ props: {
6
+ content: {
7
+ type: String,
8
+ default: "自定义标题"
9
+ },
10
+ fontSize: {
11
+ type: Number,
12
+ default: 18
13
+ },
14
+ color: {
15
+ type: String,
16
+ default: "var(--text-color-1)"
17
+ },
18
+ fontWeight: {
19
+ type: Number,
20
+ default: 700
21
+ }
22
+ },
23
+ setup(e) {
24
+ return useCssVars((a) => ({
25
+ v47d985ee: e.fontWeight,
26
+ v6d50a5d6: e.fontSize + "px",
27
+ v4b029cbc: e.color
28
+ })), (o, s) => (openBlock(), createElementBlock("div", _hoisted_1, toDisplayString(e.content), 1));
29
+ }
30
+ }), [["__scopeId", "data-v-4d572364"]]);
31
+ export { layout_default as t };
@@ -0,0 +1,207 @@
1
+ import { n as uploadStatus, t as layout_default$1 } from "./layout.4utLpDo3.js";
2
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.BgwWMokO.js";
3
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, mergeProps, openBlock, ref, renderSlot, toDisplayString, unref, watch, withCtx } from "vue";
4
+ import { ElImage, ElUpload } from "element-plus";
5
+ import { emitsMap, messageError, messageWarning, uploadFileTypeMap } from "color-star-custom-methods";
6
+ import '../assets/layout.css';var byteToHex = [];
7
+ for (let r = 0; r < 256; ++r) byteToHex.push((r + 256).toString(16).slice(1));
8
+ function unsafeStringify(r, O = 0) {
9
+ return (byteToHex[r[O + 0]] + byteToHex[r[O + 1]] + byteToHex[r[O + 2]] + byteToHex[r[O + 3]] + "-" + byteToHex[r[O + 4]] + byteToHex[r[O + 5]] + "-" + byteToHex[r[O + 6]] + byteToHex[r[O + 7]] + "-" + byteToHex[r[O + 8]] + byteToHex[r[O + 9]] + "-" + byteToHex[r[O + 10]] + byteToHex[r[O + 11]] + byteToHex[r[O + 12]] + byteToHex[r[O + 13]] + byteToHex[r[O + 14]] + byteToHex[r[O + 15]]).toLowerCase();
10
+ }
11
+ var getRandomValues, rnds8 = new Uint8Array(16);
12
+ function rng() {
13
+ if (!getRandomValues) {
14
+ if (typeof crypto > "u" || !crypto.getRandomValues) throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
15
+ getRandomValues = crypto.getRandomValues.bind(crypto);
16
+ }
17
+ return getRandomValues(rnds8);
18
+ }
19
+ var native_default = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) };
20
+ function _v4(r, O, k) {
21
+ r ||= {};
22
+ let A = r.random ?? r.rng?.() ?? rng();
23
+ if (A.length < 16) throw Error("Random bytes length must be >= 16");
24
+ if (A[6] = A[6] & 15 | 64, A[8] = A[8] & 63 | 128, O) {
25
+ if (k ||= 0, k < 0 || k + 16 > O.length) throw RangeError(`UUID byte range ${k}:${k + 15} is out of buffer bounds`);
26
+ for (let r = 0; r < 16; ++r) O[k + r] = A[r];
27
+ return O;
28
+ }
29
+ return unsafeStringify(A);
30
+ }
31
+ function v4(r, O, k) {
32
+ return native_default.randomUUID && !O && !r ? native_default.randomUUID() : _v4(r, O, k);
33
+ }
34
+ var v4_default = v4, upload_default = "data:image/webp;base64,UklGRroSAABXRUJQVlA4WAoAAAAwAAAAvwAAyQAASUNDUMgBAAAAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADZWUDhMyxAAAC+/QDIQPwa3tm3Vytr3uWffXYqAWiiA9mjI3aPnllIC5Ni2VUX7vPvx+4uZuwXhJEKS5OPSNuoRbnBr21at7HXP++6Ka0QF1gtN0obnhO4QPZfjsG0bSU5S2fvvcpMgoP53s7ia5+NLfro7zb2ofZR9/H12Nb98N/ei/BTnJtse9x91z6pZae75+FX3rMryvalv+VwMLh5////X8/FjLoen7/qWZ0eR7lnVv+rqW17/qpNoUlh/mnvR/fZ5zv3jtcz0r7r6lpfEo+2e1dwun2ZRW0+Wn7ybe9HT7r1te8fL13vz8ob79Uub1vaaEFhmHjavTcuLYh/+hnfT8/G9eXmdk2jt3fq5RXXNMmOZKS9pQaa3lpmvv5+iuM+EQIIEO4oU5yQJErxUx+Pu9ezae8aP/y0zd+uXlrU1CXYUedi+nl17V/+qu57ZCV2CWIQELoGLkMAldAljCVxCl9ClTV9LE6cqPXBTbZaZQCea8MgyY5mxIuOxpwuvkEjOBICxDBAIQU6Co5Uh/JAMQIixAIkQABIhACTCAQDIAYQDACQHQCIEgEQIQHSNikEAEA45AAAgBIBqAIAAagiDGiIAoAYEQpCTABCCBCDBBAD///+P27Z5EhABEgBB2aKS7r3r7ibddffe9Qazl0rvKcvblveUEnoPAbDUVnDrPRi1bIms+7tw9/1+D4RweOS3RPRfFm07QSudlQwxIHXxaEWEzD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwtLS0tLS0tLS0tLS0tLS0tLSYy05RdIF69pW1AD2zcCw+T61Wq9VqtVqtVqvVarVarVar1RadY5qy+y+6YDTtmaFjMVn1er1er9fr9Xq9Xq/X6/V6vV6v1+v1er1er5c7FoqVzptJ0UViBFbkOS/GotB6/cCBAwcOHFheXl5ebjQajUaj0Wg0Go1Go9FoNBqNRqPRWF5eDq6ruMDi1MUgJVbpuc1ms9lsTndqISmj+t7YSrVVs9lsNpvNZrPZbDabzWazWdKGKSOUiuvEG1opz36zYqPkpAWgU3hWVlZWVlZWVlZWVsqNuJq0VFlDb7q9VldXV1dbrVar1Wq1Wq1Wq9VqtVZXwxaMW7JwVL1UqKE3kVdybrvdbrfb7Xaq6OTUZF/IjUpLUFtSf+gT//q58Xg8Ho/H4/F4PB6Px+PxeDwej8fj8Xg8Ho/He3t7e3uXfnwlWSD5sVXXT3yupHmCJtrd3d3d3d3d3d3d20tczFP/0FqdVqqtf/itMG+asru7u7vpBnzqwYtbE2NKqR6p2n7jW4HnnTNnhsPhcDgcDofD4XA4HA6Hw+FwOBwOh8NTp06dOnXq1BMPPnhxO5TwNzAp1dTg075U6Nv9fr/f7/f7/X6/3+/3+/1+v9/v9/v9fr/ff/nll19++eWXX378wQcf/M12q1VmhuOwqn1WeLcs9BcLPbNfTfOVH+u005JIKpv++Xg8frc/I14qePALP97ptFenkoqmq/80Hu/NTJ+fEMhPTiuVqqUYpTeCu+XqleO9D/dLQnMC+Uy3RBJlKjTaTaYFb8+I5wtC+cvuWijBCKBaEj7ohWlA68q9vf+amT73yIOR/Gm3uxZIaeWVeVANjkNtz5TtCbH8XiAJV16mWqSO2wX/vk8S+ds5Cfn5bnetFbqqlMSzHJM0ZLXV7lyxd26/RGma4vbzU91up3AVY+DkR1WE+Dhgd2Y8lyD8vJ/qrrWnOaUis0zLCTprV+yeOzMjni1Iyw92O5FrOemqFq12Z+2KczsRjx47duzYsROPHruv//Cxh4sruae4kLsDiuPtJx5Myz+sddvFACanKkliijLPCemUcPSOe++9d/vRo/f2jx89XlzJ3UfvuffeBwJeKHj6wRL527VJEmank0oQl2wX7MTk9RU1lXAiUVFOflgmF0c3n0Y6qcQka4q17uU7O6dj7jlx4kQZDz/66DMhhXv7a088VCJ/HCXFTEhOWEmFKHLWP5Xk6NGjx0ooruTel8PDIPnqyZMnT548efLk17a3X3lz54pOp8hOHVaMdsFmkjuPH3+4jMdOnNh+OZEUZqwRQRLMRVWafbrT2ZHzq8EFvPjm+1d0OkUl4WRgPikeypy/IUmxUnBwc+f96bj7+PHj/buP3pfXlBi4P7e9vb29vb29HTbga2/uXL7Wmdz8g4LhYaUoSrY73ekp6py4w5qmledOvb9z2Vpw2AwOq8Zk0JgiusOf2I5r2j5xIv8JjGrKn/wSktTnB+/vbAZPUM2IxGGVWE8wq5mDyegroS8P339/s7vW6azE5EnlWIuYiaSevp977vnnX3r55YD1IKMaLO2PmUrUghEHgwfYfCo8uPMkbp2VYKWgGzETmZ52uxUTZlST8ySDgm4wixaRSqpCJ2ZGcmoaPrXe7bTbcUalOT9GUdHB9YLJyKWSrJYwO8erCe2f3iknzKg4M23C02X/RAWjZIGyFhMVrBSd+SEvWFHW5pk5X2BUTHvMDXlVpczr2/SlOSd/9P6unmJhQ0hyRc/cLm5MEJz23QX5jT9iTg/nlQsSNMqZ+/vmvFKshYmowLh3jijW9FSSybhrLjiYoCi4mFlrB2uqUsTrahcowcq2yZNrOYvzoJMgWpK6gAkyqkcw73S++M//+cY3vvOdb35r71MB+arC6ajKvFk+bz9rznz9O1mWZVmWZVn26V9b63TaIcF62nlm2nnj88B738my+2+9/vprr73+5rvOZtlVPzEhT2KCkW9VWDk//G+W3Xb91tbW1tbW1tbW1beczY78UkgzWBR/YP5H7uV8arYMv52dvWlra2srZdyeZb+VHxYjl4pQ+t5n1vxf9uQ1W1tbJcYtWfazIeEa+snMTZwx54Sv/TvFe88zs9OvZ2dznUY+/6OtVjFynHvK3psHL05CZvdBWXZDorWuvzpxCbdnfx0UjDISzOvMR7zuIn/xVhzOlP/Pbk39sZM9+Jonsx8Oq6oWeUbAuZ3/mF169urkly0pt2V/s7paPLmGReb3yals3UuUcfm5nbdmxUfZbUkNJE6yIyurK+GGkPme+ihf91Xwj+d2PhjOiG9kN6X0tuyu21Jyf3bRhGI/SAlzPPV3IJnxZ7vndv57RmRZdHxzdvam67O7tlJya/YH8ZNTRUge/sruuTx7RjlPxn/ls9dt5eTft7gn3JT9dVVIrzsNV+60v7h7bmfnjRkR3+uv2SooPir4ES+u4qoy5nXuuIQ4+ZG9Qj544/Tp06dPv/76668PBoPBYDAYDAaDwWAwGAwGg8FgMHgjuz9xswxIXsWN2d/HU8eVmPuO111Ht87fDmRn5/3333///TfffPPNN0ej0Wg0Go1Go9FoNBqNRqPRaPRmdnYqEgdp5v7dVUQgxdq1n7sil9iY7tTgMt7Pi0xDokhMuBNkjl8+R+v2w5XX8b2n86t/9S+f2tzc3Nzc3Oz1er1er9fr9Xq9Xq/X6/V6vV6v1+v1/i27cXruyn4hfPCuDImkGL3nEsyAH7zgggsvPHTo0KGNjY2NjY2NjY2NjY2NjY2Nw4cPHz58+PDvT+6bJSQH79mRj0UTHxHzu/oiQXLpe0pyR5FVOKbK+pksuyZNeuR7SfHqfJJWgmC3bqnERuFInHrhhWEvOHTo0KFDh4r+8HfZLYmmui67PZWezS4KKTlz3vdKR65w+XUugZFyTHpxlJVswJ/OsutSck1y3H5J8eZ28txUIZIS3D4nRlRgba2odn19fX19fdKGQRdIdYIL/2Ty2Dflc9ORHwrePMeEOu+b1VMSOuONorkjKNrtdrvdbrc76QpRdUVXWP/naZ9bL8pXvoRpCRVIwvFXZIR7XcMe3Mm7cd6CURsW7Rj2hh/4bHb2hrJ5g1uz7HfCF/+lVCHYQSGFM7Fxd7Jht6RoSQuGNX3/32TZXTckb/hPZkd+PVi5GYUUSC9+rI4ZfVi8bTrYO53ee9yebEJOtebvHsmyu2658dqrr73+ptuezLJLfihceBqkVaHMTBppR6oJo53UsfF9f3QkNW/55U/m26lDX/nZVZGUUUyFTHZ2T51VYnz/L//FJZ8/8vlLLvnkD0+28cY6RVoVKQ2ZURI8YHqj3Qn3tIdb8id3zHINqIqknHFkj2RW+bexaKdEHw624id0Giok0WekHFOEACnrz4kwArkWKwan1EpFvNm/I/pKTvWNzLfcJLWECobsiXvwfhxh8WRMjSiKxoEZ6Hyvg58iYFIYiSUOhVPeg+NuXAQxSVv717lfiT1VgKEiK/WrXtYXwgso5llLNaJSsdpmFDRsql6R7B31cq1ssLnzZdSn0GpHy9uPMV2nLotoFU+XLYBwf1Mb+43HldBFEbBw1kYymNhiCbk4jTEDXUAxI/fvKAunt7CiXk7vKA9ouNDids4mGuPiCz2632iYiyR46oxacLqIqovIsZDjwZ5HXeBZCz6U8IIP5rzgA2ov6Kjmi7q1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+18D/9P09//+nbwA=", _hoisted_1 = { class: "w-full" }, _hoisted_2 = { class: "flex items-center justify-center" }, _hoisted_3 = { class: "upload-webp overflow-hidden flex items-center justify-center relative" }, _hoisted_4 = { class: "text-74798c fz-12 pd-t-6" }, _hoisted_5 = { key: 0 }, _hoisted_6 = { key: 1 }, layout_default = /* @__PURE__ */ _plugin_vue_export_helper_default(/* @__PURE__ */ Object.assign({ name: "UploadFile" }, {
35
+ __name: "layout",
36
+ props: {
37
+ modelValue: {
38
+ type: Array,
39
+ default: () => []
40
+ },
41
+ disabled: {
42
+ type: Boolean,
43
+ default: !1
44
+ },
45
+ multiple: {
46
+ type: Boolean,
47
+ default: !1
48
+ },
49
+ uploadFileType: {
50
+ type: Array,
51
+ default: () => []
52
+ },
53
+ maxSize: {
54
+ type: Number,
55
+ default: 10
56
+ },
57
+ maxCount: {
58
+ type: Number,
59
+ default: 10
60
+ },
61
+ apiConfig: {
62
+ type: Function,
63
+ default: null
64
+ },
65
+ params: {
66
+ type: Object,
67
+ default: () => ({})
68
+ },
69
+ autoUpload: {
70
+ type: Boolean,
71
+ default: !0
72
+ },
73
+ fieldMapping: {
74
+ type: Object,
75
+ default: () => ({})
76
+ },
77
+ showFileList: {
78
+ type: Boolean,
79
+ default: !0
80
+ },
81
+ isCustomRequest: {
82
+ type: Boolean,
83
+ default: !1
84
+ },
85
+ fileField: {
86
+ type: String,
87
+ default: "file"
88
+ },
89
+ drag: {
90
+ type: Boolean,
91
+ default: !0
92
+ },
93
+ uploadTipObj: {
94
+ type: Object,
95
+ default: null
96
+ }
97
+ },
98
+ emits: [
99
+ emitsMap.updateModelValue,
100
+ emitsMap.change,
101
+ emitsMap.delete
102
+ ],
103
+ setup(k, { expose: M, emit: N }) {
104
+ let P = k, F = N, I = ref(null), L = ref([]), R = computed(() => typeof P.apiConfig == "function"), z = computed(() => P.uploadFileType?.join("、")), B = computed(() => P.uploadFileType?.map((r) => `.${r}`)?.join(",")), V = computed(() => P.maxSize ? `${P.maxSize}MB` : ""), H = computed(() => P.uploadTipObj ? P.uploadTipObj : {
105
+ formatAcceptText: `支持 ${z.value} 格式文件`,
106
+ formatMaxSize: `单个文件不超过 ${V.value}`,
107
+ maxCount: `最多上传 ${P.maxCount} 个文件`
108
+ }), U = (r) => {
109
+ if (!P.maxSize) return !0;
110
+ let O = P.maxSize * 1024 * 1024;
111
+ return r.size <= O;
112
+ }, W = (r) => G(r, !0), G = (r, O) => {
113
+ let k = P.uploadFileType.map((r) => uploadFileTypeMap?.[r]), A = [...new Set(k)];
114
+ if (P.maxCount && L.value?.length >= P.maxCount) if (P.maxCount === 1) L.value = [];
115
+ else return O && messageError(H.value.maxCount), !1;
116
+ return A?.includes(r.type) ? U(r) ? !0 : (O && messageWarning(H.value.formatMaxSize), !1) : (O && messageWarning(H.value.formatAcceptText), !1);
117
+ }, K = ({ file: O }) => {
118
+ if (!G(O, !1)) return;
119
+ let k = {
120
+ uuid: v4_default(),
121
+ raw: O,
122
+ type: O.type,
123
+ size: O.size,
124
+ fileStatus: uploadStatus.uploading,
125
+ [P.fieldMapping.fileName]: O.name
126
+ };
127
+ if (q(k), !R.value || P.isCustomRequest) {
128
+ setTimeout(() => {
129
+ J(k, uploadStatus.success);
130
+ }, 100);
131
+ return;
132
+ }
133
+ P.apiConfig?.({
134
+ [P.fileField]: O,
135
+ ...P.params
136
+ }).then(({ data: O }) => {
137
+ let A = O?.[0] || O?.files?.[0] || O;
138
+ J(k, uploadStatus.success, A);
139
+ }).catch(() => {
140
+ J(k, uploadStatus.error);
141
+ });
142
+ }, q = (r) => {
143
+ L.value.push(r), F(emitsMap.updateModelValue, L.value);
144
+ }, J = (r, O, k = {}) => {
145
+ let A = L.value.findIndex((O) => O.uuid === r.uuid);
146
+ A !== -1 && (L.value[A] = {
147
+ ...L.value[A],
148
+ fileStatus: O,
149
+ ...k
150
+ }, F(emitsMap.updateModelValue, L.value), F(emitsMap.change, L.value[A]));
151
+ }, Y = (r) => {
152
+ F(emitsMap.delete, r);
153
+ };
154
+ return watch(() => P.modelValue, (r) => {
155
+ Array.isArray(r) && (L.value = r);
156
+ }, { immediate: !0 }), M({
157
+ handleBeforeUpload: G,
158
+ httpRequest: K
159
+ }), (r, j) => (openBlock(), createElementBlock("div", _hoisted_1, [createVNode(unref(ElUpload), mergeProps({
160
+ ref_key: "uploadRef",
161
+ ref: I,
162
+ action: "#",
163
+ accept: B.value,
164
+ multiple: k.multiple,
165
+ disabled: k.disabled,
166
+ "before-upload": W,
167
+ "http-request": K,
168
+ "show-file-list": !1,
169
+ "auto-upload": k.autoUpload,
170
+ drag: k.drag
171
+ }, r.$attrs, { class: "upload-wrapper" }), {
172
+ default: withCtx(() => [r.$slots.tip ? renderSlot(r.$slots, "tip", {
173
+ key: 0,
174
+ uploadTip: H.value
175
+ }, void 0, !0) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
176
+ createElementVNode("div", _hoisted_2, [createElementVNode("div", _hoisted_3, [createVNode(unref(ElImage), {
177
+ src: unref(upload_default),
178
+ class: "absolute image"
179
+ }, null, 8, ["src"])])]),
180
+ j[1] ||= createElementVNode("div", { class: "text-262626 fz-14 weight-500" }, "点击或拖拽文件上传", -1),
181
+ createElementVNode("div", _hoisted_4, [
182
+ createElementVNode("span", null, toDisplayString(H.value.formatAcceptText), 1),
183
+ H.value.formatMaxSize ? (openBlock(), createElementBlock("span", _hoisted_5, "," + toDisplayString(H.value.formatMaxSize), 1)) : createCommentVNode("", !0),
184
+ H.value.maxCount ? (openBlock(), createElementBlock("span", _hoisted_6, "," + toDisplayString(H.value.maxCount), 1)) : createCommentVNode("", !0)
185
+ ])
186
+ ], 64))]),
187
+ _: 3
188
+ }, 16, [
189
+ "accept",
190
+ "multiple",
191
+ "disabled",
192
+ "auto-upload",
193
+ "drag"
194
+ ]), L.value?.length && k.showFileList ? (openBlock(), createBlock(layout_default$1, mergeProps({
195
+ key: 0,
196
+ modelValue: L.value,
197
+ "onUpdate:modelValue": j[0] ||= (r) => L.value = r,
198
+ "field-mapping": k.fieldMapping,
199
+ "show-delete": !k.disabled
200
+ }, r.$attrs, { onDelete: Y }), null, 16, [
201
+ "modelValue",
202
+ "field-mapping",
203
+ "show-delete"
204
+ ])) : createCommentVNode("", !0)]));
205
+ }
206
+ }), [["__scopeId", "data-v-6af19b63"]]);
207
+ export { layout_default as t };