act-plus 1.1.80 → 1.1.81
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.
- package/act-plus.js +1 -1
- package/act-plus.umd.cjs +31 -31
- package/lib/{dialogAddField-356c0203.js → dialogAddField-1b4d441e.js} +2 -2
- package/lib/{dialogConfigBtn-b826fbbd.js → dialogConfigBtn-4dc93e00.js} +2 -2
- package/lib/{dialogSiteComponentsParams-2bd207be.js → dialogSiteComponentsParams-9070381c.js} +1 -1
- package/lib/{index-5cf4016d.js → index-0127dfa0.js} +1 -1
- package/lib/{index-bb510fb9.js → index-0e9525ae.js} +1 -1
- package/lib/{index-083d66b1.js → index-10266335.js} +1 -1
- package/lib/{index-a1929e12.js → index-3085f325.js} +25 -25
- package/lib/{index-0ca10994.js → index-4147f9fd.js} +470 -470
- package/lib/{index-07af7560.js → index-7644271a.js} +1 -1
- package/lib/index-8f6183e7.js +277 -0
- package/lib/{index-b42134dd.js → index-90a48da8.js} +1 -1
- package/lib/{index-a1576e42.js → index-e14178fa.js} +1 -1
- package/package.json +1 -1
- package/style.css +1 -1
- package/lib/index-ddd5b9be.js +0 -249
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref as J, inject as _, computed as K, watch as Q, resolveComponent as g, resolveDirective as U, openBlock as t, createElementBlock as m, Fragment as C, renderList as I, createBlock as s, resolveDynamicComponent as F, unref as c, withCtx as r, withDirectives as k, createCommentVNode as p, createTextVNode as h, toDisplayString as B, createVNode as N } from "vue";
|
|
2
|
-
import { _ as W, u as X, c as Y } from "./index-
|
|
2
|
+
import { _ as W, u as X, c as Y } from "./index-4147f9fd.js";
|
|
3
3
|
import "vue-router";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
const Z = { class: "header-operate-container" }, ee = {
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { ref as P, computed as ie, resolveComponent as w, resolveDirective as ae, openBlock as h, createElementBlock as L, withDirectives as se, createBlock as U, mergeProps as re, unref as d, withCtx as D, renderSlot as A, createElementVNode as x, toDisplayString as S, createCommentVNode as B, createVNode as $, createTextVNode as ce, Fragment as ue, renderList as pe, normalizeClass as de, nextTick as me } from "vue";
|
|
2
|
+
import { ElNotification as E } from "element-plus";
|
|
3
|
+
import { _ as fe, u as ge, z as ye, o as _e, p as he, q as ve } from "./index-4147f9fd.js";
|
|
4
|
+
import "vue-router";
|
|
5
|
+
let R;
|
|
6
|
+
const we = new Uint8Array(16);
|
|
7
|
+
function xe() {
|
|
8
|
+
if (!R && (R = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !R))
|
|
9
|
+
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
10
|
+
return R(we);
|
|
11
|
+
}
|
|
12
|
+
const a = [];
|
|
13
|
+
for (let n = 0; n < 256; ++n)
|
|
14
|
+
a.push((n + 256).toString(16).slice(1));
|
|
15
|
+
function Te(n, o = 0) {
|
|
16
|
+
return a[n[o + 0]] + a[n[o + 1]] + a[n[o + 2]] + a[n[o + 3]] + "-" + a[n[o + 4]] + a[n[o + 5]] + "-" + a[n[o + 6]] + a[n[o + 7]] + "-" + a[n[o + 8]] + a[n[o + 9]] + "-" + a[n[o + 10]] + a[n[o + 11]] + a[n[o + 12]] + a[n[o + 13]] + a[n[o + 14]] + a[n[o + 15]];
|
|
17
|
+
}
|
|
18
|
+
const Fe = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), M = {
|
|
19
|
+
randomUUID: Fe
|
|
20
|
+
};
|
|
21
|
+
function ke(n, o, T) {
|
|
22
|
+
if (M.randomUUID && !o && !n)
|
|
23
|
+
return M.randomUUID();
|
|
24
|
+
n = n || {};
|
|
25
|
+
const m = n.random || (n.rng || xe)();
|
|
26
|
+
if (m[6] = m[6] & 15 | 64, m[8] = m[8] & 63 | 128, o) {
|
|
27
|
+
T = T || 0;
|
|
28
|
+
for (let v = 0; v < 16; ++v)
|
|
29
|
+
o[T + v] = m[v];
|
|
30
|
+
return o;
|
|
31
|
+
}
|
|
32
|
+
return Te(m);
|
|
33
|
+
}
|
|
34
|
+
const $e = { class: "upload-container" }, Ve = { class: "el-upload__text" }, be = { class: "tip-text" }, Ce = { class: "file-list-l" }, Ie = ["onMouseenter", "onMouseleave"], Pe = { class: "el-file-operate" }, Ue = {
|
|
35
|
+
__name: "index",
|
|
36
|
+
props: {
|
|
37
|
+
request: { type: Function, required: !0, default: null },
|
|
38
|
+
modelValue: { type: [Array, String], default: [] },
|
|
39
|
+
action: { type: String, default: "/api/v1/utils/uploadFiles" },
|
|
40
|
+
data: { type: Object, default: () => ({ uploadFileType: 1 }) },
|
|
41
|
+
name: { type: String, default: "files" },
|
|
42
|
+
multiple: { type: Boolean, default: !0 },
|
|
43
|
+
limit: { type: Number, default: 9 },
|
|
44
|
+
accept: { type: String, default: "*" },
|
|
45
|
+
tipText: { type: String, default: "" },
|
|
46
|
+
fileMaxSize: { type: Number, default: 100 },
|
|
47
|
+
autoUpload: { type: Boolean, default: !0 }
|
|
48
|
+
},
|
|
49
|
+
emits: ["update:modelValue", "delete"],
|
|
50
|
+
setup(n, { expose: o, emit: T }) {
|
|
51
|
+
const { getAssetsFileName: m, getAssetsFilePath: v, downloadFile: O } = ve(), { t: g } = ge(), V = T, u = n, b = {
|
|
52
|
+
image: /^(gif|jpg|jpeg|png|bmp|webp)$/i,
|
|
53
|
+
word: /^(doc|docx)$/i,
|
|
54
|
+
pdf: /^pdf$/i,
|
|
55
|
+
excel: /^(xls|xlsx)$/i
|
|
56
|
+
};
|
|
57
|
+
let C = P(!1), j = P({}), z = P(!1), y = P(null), I = null, _ = ie({
|
|
58
|
+
get() {
|
|
59
|
+
return K(u.modelValue);
|
|
60
|
+
},
|
|
61
|
+
set(e) {
|
|
62
|
+
V("update:modelValue", e);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
const q = (e) => {
|
|
66
|
+
const t = (_.value || []).map((s) => s.filePath);
|
|
67
|
+
if (e == 0)
|
|
68
|
+
return t;
|
|
69
|
+
let l = t.splice(e), i = t.splice(0, e);
|
|
70
|
+
return l.concat(i);
|
|
71
|
+
}, W = (e) => {
|
|
72
|
+
if (!e || typeof e != "string")
|
|
73
|
+
return "";
|
|
74
|
+
const t = e.split("?")[0].split("#")[0], l = t.lastIndexOf(".");
|
|
75
|
+
return l < 0 ? "" : t.slice(l + 1).toLowerCase();
|
|
76
|
+
}, H = (...e) => {
|
|
77
|
+
for (const t of e) {
|
|
78
|
+
const l = `${t || ""}`.trim();
|
|
79
|
+
if (!l)
|
|
80
|
+
continue;
|
|
81
|
+
const i = l.startsWith(".") ? l.slice(1).toLowerCase() : l.toLowerCase();
|
|
82
|
+
if (i === "image")
|
|
83
|
+
return "image";
|
|
84
|
+
if (Object.keys(b).includes(i))
|
|
85
|
+
return i;
|
|
86
|
+
const s = W(l) || i;
|
|
87
|
+
let r = null;
|
|
88
|
+
if (Object.keys(b).some((c) => {
|
|
89
|
+
if (b[c].test(s))
|
|
90
|
+
return r = c, !0;
|
|
91
|
+
}), r)
|
|
92
|
+
return r;
|
|
93
|
+
}
|
|
94
|
+
return "file";
|
|
95
|
+
}, G = (e) => {
|
|
96
|
+
var s, r;
|
|
97
|
+
const t = typeof e == "string" ? { filePath: e } : e || {}, l = t.filePath || t.url || "", i = t.name || t.fileName || m(l) || ((s = t.raw) == null ? void 0 : s.name) || "";
|
|
98
|
+
return {
|
|
99
|
+
...t,
|
|
100
|
+
uid: t.uid ?? ke(),
|
|
101
|
+
name: i,
|
|
102
|
+
filePath: l,
|
|
103
|
+
fileType: H(t.fileType, i, l, (r = t.raw) == null ? void 0 : r.name),
|
|
104
|
+
status: t.status ?? "success"
|
|
105
|
+
};
|
|
106
|
+
}, J = (e = []) => e.filter(Boolean).map((t) => G(t)), K = (e) => {
|
|
107
|
+
const t = Array.isArray(e) ? e : e ? e.split(";").filter(Boolean) : [];
|
|
108
|
+
return J(t);
|
|
109
|
+
}, Q = ({ name: e }) => {
|
|
110
|
+
const t = e.lastIndexOf("."), l = e.slice(t), i = u.accept.trim().split(",");
|
|
111
|
+
let s = !1;
|
|
112
|
+
return i.includes(l) && (s = !0), s = i.some((r) => r == "image/*" ? b.image.test(l) : r.startsWith(".") ? e.endsWith(r) : r === l), s || E({
|
|
113
|
+
title: `${g("act.tip")}`,
|
|
114
|
+
message: `【${e}】${g("act.uploadErrorTip")}`,
|
|
115
|
+
type: "warning",
|
|
116
|
+
duration: 2500
|
|
117
|
+
}), s;
|
|
118
|
+
}, X = (e, t, l) => {
|
|
119
|
+
I && (clearTimeout(I), I = null), I = setTimeout(() => {
|
|
120
|
+
e.call(this, t);
|
|
121
|
+
}, l);
|
|
122
|
+
}, Y = (e) => u.request({ url: u.action, method: "POST", data: e, headers: { "Content-Type": "application/x-www-form-urlencoded" } }), Z = async (e) => {
|
|
123
|
+
try {
|
|
124
|
+
const t = e.filter((c) => c.status == "ready" && Q(c)), l = _.value.length + t.length;
|
|
125
|
+
if (t.length === 0) {
|
|
126
|
+
y.value.clearFiles();
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (l > u.limit) {
|
|
130
|
+
E({
|
|
131
|
+
title: `${g("act.tip")}`,
|
|
132
|
+
message: `${g("act.uploadLimitTip")}`,
|
|
133
|
+
type: "warning",
|
|
134
|
+
duration: 2500
|
|
135
|
+
}), y.value.clearFiles();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (!u.autoUpload) {
|
|
139
|
+
const c = t.map((F) => ({ ...F, filePath: null, status: "success" }));
|
|
140
|
+
V("update:modelValue", c), y.value.clearFiles();
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
C.value = !0;
|
|
144
|
+
const i = new FormData();
|
|
145
|
+
Object.keys(u.data).forEach((c) => {
|
|
146
|
+
i.append(c, u.data[c]);
|
|
147
|
+
}), t.forEach((c) => {
|
|
148
|
+
i.append(u.name, c.raw);
|
|
149
|
+
});
|
|
150
|
+
let { data: s } = await Y(i);
|
|
151
|
+
const r = u.multiple ? [..._.value.map((c) => c.filePath), ...s.filePaths || []].join(";") : [...s.filePaths || []].join(";");
|
|
152
|
+
y.value.clearFiles(), V("update:modelValue", r), C.value = !1;
|
|
153
|
+
} catch (t) {
|
|
154
|
+
y.value.clearFiles(), C.value = !1, console.error(t);
|
|
155
|
+
}
|
|
156
|
+
}, ee = (e, t) => {
|
|
157
|
+
X(Z, t, 500);
|
|
158
|
+
}, N = (e, t) => {
|
|
159
|
+
const l = j.value[`tooltipRef${t}`];
|
|
160
|
+
z.value = l.scrollWidth <= Math.round(l.getBoundingClientRect().width);
|
|
161
|
+
}, te = ({ filePath: e, name: t, uid: l }, i) => {
|
|
162
|
+
me(() => {
|
|
163
|
+
document.querySelector(`.previewImage_${l}`).children[0].click();
|
|
164
|
+
});
|
|
165
|
+
}, le = ({ filePath: e, name: t }) => {
|
|
166
|
+
O(u.request, e);
|
|
167
|
+
}, ne = (e, t) => {
|
|
168
|
+
_.value = _.value.filter((l, i) => i !== t), V("delete", { data: e });
|
|
169
|
+
};
|
|
170
|
+
return o({ clearFiles: () => {
|
|
171
|
+
_.value = [], y.value.clearFiles();
|
|
172
|
+
} }), (e, t) => {
|
|
173
|
+
const l = w("upload-filled"), i = w("el-icon"), s = w("el-upload"), r = w("el-image"), c = w("el-tooltip"), F = w("el-button"), oe = ae("loading");
|
|
174
|
+
return h(), L("div", $e, [
|
|
175
|
+
se((h(), U(s, re({
|
|
176
|
+
ref_key: "uploadRef",
|
|
177
|
+
ref: y,
|
|
178
|
+
action: "#",
|
|
179
|
+
drag: "",
|
|
180
|
+
accept: u.accept,
|
|
181
|
+
multiple: u.multiple,
|
|
182
|
+
"auto-upload": !1,
|
|
183
|
+
"show-file-list": !1,
|
|
184
|
+
"on-change": ee
|
|
185
|
+
}, e.$attrs, {
|
|
186
|
+
"element-loading-text": d(g)("act.uploadLoading")
|
|
187
|
+
}), {
|
|
188
|
+
tip: D(() => [
|
|
189
|
+
u.tipText ? A(e.$slots, "default", { key: 0 }, () => [
|
|
190
|
+
x("p", be, S(u.tipText), 1)
|
|
191
|
+
], !0) : B("", !0)
|
|
192
|
+
]),
|
|
193
|
+
default: D(() => [
|
|
194
|
+
$(i, { class: "el-icon--upload" }, {
|
|
195
|
+
default: D(() => [
|
|
196
|
+
$(l)
|
|
197
|
+
]),
|
|
198
|
+
_: 1
|
|
199
|
+
}),
|
|
200
|
+
x("div", Ve, [
|
|
201
|
+
ce(S(d(g)("act.uploadText")), 1),
|
|
202
|
+
x("em", null, S(d(g)("act.clickUpload")), 1)
|
|
203
|
+
])
|
|
204
|
+
]),
|
|
205
|
+
_: 3
|
|
206
|
+
}, 16, ["accept", "multiple", "element-loading-text"])), [
|
|
207
|
+
[oe, d(C)]
|
|
208
|
+
]),
|
|
209
|
+
A(e.$slots, "default", {}, () => [
|
|
210
|
+
(h(!0), L(ue, null, pe(d(_), (p, k) => (h(), L("div", {
|
|
211
|
+
class: "file-list",
|
|
212
|
+
key: p.uid
|
|
213
|
+
}, [
|
|
214
|
+
x("div", Ce, [
|
|
215
|
+
p.fileType === "image" ? (h(), U(r, {
|
|
216
|
+
key: 0,
|
|
217
|
+
class: de(["file-list-image", { [`previewImage_${p.uid}`]: !0 }]),
|
|
218
|
+
fit: "cover",
|
|
219
|
+
"preview-src-list": q(k),
|
|
220
|
+
"preview-teleported": "",
|
|
221
|
+
src: p.filePath
|
|
222
|
+
}, null, 8, ["class", "preview-src-list", "src"])) : (h(), U(r, {
|
|
223
|
+
key: 1,
|
|
224
|
+
class: "file-list-icon",
|
|
225
|
+
src: d(v)(`images/upload-${p.fileType || "file"}.png`)
|
|
226
|
+
}, null, 8, ["src"])),
|
|
227
|
+
$(c, {
|
|
228
|
+
effect: "dark",
|
|
229
|
+
content: p.name,
|
|
230
|
+
placement: "bottom-start",
|
|
231
|
+
disabled: d(z)
|
|
232
|
+
}, {
|
|
233
|
+
default: D(() => [
|
|
234
|
+
x("div", {
|
|
235
|
+
class: "el-file-name",
|
|
236
|
+
ref_for: !0,
|
|
237
|
+
ref: (f) => d(j)[`tooltipRef${k}`] = f,
|
|
238
|
+
onMouseenter: (f) => N(f, k),
|
|
239
|
+
onMouseleave: (f) => N(f, k)
|
|
240
|
+
}, S(p.name), 41, Ie)
|
|
241
|
+
]),
|
|
242
|
+
_: 2
|
|
243
|
+
}, 1032, ["content", "disabled"])
|
|
244
|
+
]),
|
|
245
|
+
x("div", Pe, [
|
|
246
|
+
p.fileType === "image" ? (h(), U(F, {
|
|
247
|
+
key: 0,
|
|
248
|
+
type: "primary",
|
|
249
|
+
size: "small",
|
|
250
|
+
icon: d(ye),
|
|
251
|
+
circle: "",
|
|
252
|
+
onClick: (f) => te(p)
|
|
253
|
+
}, null, 8, ["icon", "onClick"])) : B("", !0),
|
|
254
|
+
$(F, {
|
|
255
|
+
type: "primary",
|
|
256
|
+
size: "small",
|
|
257
|
+
icon: d(_e),
|
|
258
|
+
circle: "",
|
|
259
|
+
onClick: (f) => le(p)
|
|
260
|
+
}, null, 8, ["icon", "onClick"]),
|
|
261
|
+
$(F, {
|
|
262
|
+
type: "danger",
|
|
263
|
+
size: "small",
|
|
264
|
+
icon: d(he),
|
|
265
|
+
circle: "",
|
|
266
|
+
onClick: (f) => ne(p, k)
|
|
267
|
+
}, null, 8, ["icon", "onClick"])
|
|
268
|
+
])
|
|
269
|
+
]))), 128))
|
|
270
|
+
], !0)
|
|
271
|
+
]);
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}, ze = /* @__PURE__ */ fe(Ue, [["__scopeId", "data-v-4c658c06"]]);
|
|
275
|
+
export {
|
|
276
|
+
ze as default
|
|
277
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineAsyncComponent as de, inject as h, ref as q, watch as pe, resolveComponent as y, resolveDirective as ce, unref as t, openBlock as r, createElementBlock as _, createVNode as ie, normalizeStyle as fe, withCtx as T, Fragment as k, renderList as M, createBlock as d, mergeProps as m, withKeys as H, withModifiers as K, createCommentVNode as g, resolveDynamicComponent as ye, createElementVNode as me, toDisplayString as R, createTextVNode as O, withDirectives as Ve } from "vue";
|
|
2
|
-
import { _ as be, u as Ce, P as _e, a as he, b as W } from "./index-
|
|
2
|
+
import { _ as be, u as Ce, P as _e, a as he, b as W } from "./index-4147f9fd.js";
|
|
3
3
|
import "vue-router";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
const ge = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { reactive as m, watch as v, resolveComponent as s, openBlock as b, createBlock as g, withCtx as o, createElementVNode as i, createVNode as x, createTextVNode as y, toDisplayString as h, unref as C } from "vue";
|
|
2
|
-
import { _ as k, u as w } from "./index-
|
|
2
|
+
import { _ as k, u as w } from "./index-4147f9fd.js";
|
|
3
3
|
import "vue-router";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
const V = ["innerHTML"], B = { class: "dialog-footer" }, D = {
|
package/package.json
CHANGED
package/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.form-card .el-card__header{font-size:16px;font-weight:700}.rotate180{transform:rotate(180deg)}.cp{cursor:pointer}.cp:hover{opacity:.8}.ml12{margin-left:12px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}.ml6{margin-left:6px!important}.ml4{margin-left:4px!important}.mr6{margin-right:6px}.mr2{margin-right:2px}.mr4{margin-right:4px}.el-table{font-size:14px}.el-select,.el-cascader,.el-form--inline .el-form-item{display:block;width:100%}.el-card{height:100%;--el-card-padding: 12px}.el-card__body{height:100%;box-sizing:border-box}.el-date-editor{--el-date-editor-width: 100%}.month-range .el-date-range-picker{width:320px}.month-range .el-date-range-picker .el-picker-panel__body{min-width:320px}.month-range .is-left{width:100%}.month-range .el-date-range-picker__header,.month-range .is-right{display:none}.table-link{cursor:pointer;color:#409eff;text-decoration:underline}.a-loading[data-v-048c6c03]{display:flex;align-items:center;justify-content:center;width:100%;height:50px;font-size:32px}.a-loading .dot[data-v-048c6c03]{animation:antRotate-048c6c03 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;width:28px;height:28px;box-sizing:border-box}.a-loading .dot i[data-v-048c6c03]{width:12px;height:12px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove-048c6c03 1s infinite linear alternate}.a-loading .dot i[data-v-048c6c03]:nth-child(1){top:0;left:0}.a-loading .dot i[data-v-048c6c03]:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.a-loading .dot i[data-v-048c6c03]:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.a-loading .dot i[data-v-048c6c03]:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate-048c6c03{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate-048c6c03{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove-048c6c03{to{opacity:1}}@-webkit-keyframes antSpinMove-048c6c03{to{opacity:1}}[data-v-
|
|
1
|
+
.form-card .el-card__header{font-size:16px;font-weight:700}.rotate180{transform:rotate(180deg)}.cp{cursor:pointer}.cp:hover{opacity:.8}.ml12{margin-left:12px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt24{margin-top:24px}.ml6{margin-left:6px!important}.ml4{margin-left:4px!important}.mr6{margin-right:6px}.mr2{margin-right:2px}.mr4{margin-right:4px}.el-table{font-size:14px}.el-select,.el-cascader,.el-form--inline .el-form-item{display:block;width:100%}.el-card{height:100%;--el-card-padding: 12px}.el-card__body{height:100%;box-sizing:border-box}.el-date-editor{--el-date-editor-width: 100%}.month-range .el-date-range-picker{width:320px}.month-range .el-date-range-picker .el-picker-panel__body{min-width:320px}.month-range .is-left{width:100%}.month-range .el-date-range-picker__header,.month-range .is-right{display:none}.table-link{cursor:pointer;color:#409eff;text-decoration:underline}.a-loading[data-v-048c6c03]{display:flex;align-items:center;justify-content:center;width:100%;height:50px;font-size:32px}.a-loading .dot[data-v-048c6c03]{animation:antRotate-048c6c03 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;width:28px;height:28px;box-sizing:border-box}.a-loading .dot i[data-v-048c6c03]{width:12px;height:12px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove-048c6c03 1s infinite linear alternate}.a-loading .dot i[data-v-048c6c03]:nth-child(1){top:0;left:0}.a-loading .dot i[data-v-048c6c03]:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.a-loading .dot i[data-v-048c6c03]:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.a-loading .dot i[data-v-048c6c03]:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate-048c6c03{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate-048c6c03{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove-048c6c03{to{opacity:1}}@-webkit-keyframes antSpinMove-048c6c03{to{opacity:1}}[data-v-295298ec] .el-empty__image{width:100%}.file-image[data-v-295298ec]{display:block;width:32px;height:32px;margin:0 auto;border-radius:4px;line-height:32px!important}.no-image[data-v-295298ec]{width:100%;height:100%;font-size:12px;background-color:#f5f7fa}.act-module[data-v-295298ec]{padding:0;margin:0;border:none}.table-opreate-dropdown[data-v-295298ec]{margin:4px 0 0 8px}.table-btn-more[data-v-295298ec]{width:16px;height:16px}.table-btn-more[data-v-295298ec]:hover{cursor:pointer;opacity:.8}.add-icon-btn[data-v-3a00699d]{cursor:pointer;width:24px;height:24px;margin-left:6px}.table-post-params[data-v-3a00699d]{position:relative;margin-bottom:12px}.table-post-params .submit-operate[data-v-3a00699d]{position:absolute;top:-20px;right:-10px;display:flex;align-items:center}.table-post-params .submit-operate .match-opreate[data-v-3a00699d]{cursor:pointer;width:12px;height:12px}.card-header[data-v-05dd44e9]{display:flex;align-items:center}.card-header -operate[data-v-05dd44e9]{margin-left:auto}.form-list[data-v-05dd44e9]{margin-bottom:24px;border-bottom:1px solid var(--el-color-primary)}.form-list[data-v-05dd44e9]:last-child{border:none}.config-list-operate[data-v-05dd44e9]{display:flex;align-items:center;justify-content:flex-end}.card-header[data-v-5ac6753d]{display:flex;align-items:center}.card-header-operate[data-v-5ac6753d]{margin-left:auto}.form-list[data-v-5ac6753d]{margin-bottom:24px;border-bottom:1px solid var(--el-color-primary)}.form-list[data-v-5ac6753d]:last-child{border:none}.config-list-operate[data-v-5ac6753d]{display:flex;align-items:center;justify-content:flex-end}[data-v-5ac6753d] .el-badge__content.is-fixed{transform:translateY(-50%) translate(100%) scale(.7)}.submit-operate[data-v-5c2c8b66]{display:flex;align-items:center;height:32px;padding-left:12px}.submit-operate .match-opreate[data-v-5c2c8b66]{cursor:pointer;width:20px;height:20px}.page-container[data-v-8dfa8a8a]{position:relative}.page-container .header-operate[data-v-8dfa8a8a]{position:sticky;top:0;z-index:999}.page-container .submit-box[data-v-8dfa8a8a]{display:flex;align-items:center;justify-content:space-between}.page-container .submit-box-r[data-v-8dfa8a8a]{display:flex;align-items:center}.page-container .submit-box-r .menu-select[data-v-8dfa8a8a]{width:360px;margin:0 24px}.search-module-container[data-v-cdf7c817] .el-form-item{margin-bottom:8px}.search-module-container[data-v-cdf7c817] .el-select__selection{flex-wrap:nowrap;width:100%}.search-module-container .form-content[data-v-cdf7c817]{display:grid;grid-template-columns:repeat(var(--table-query-row),minmax(120px,1fr));gap:6px;padding:6px 6px 0}.search-module-container .form-content .search-form-btn[data-v-cdf7c817]{justify-self:end;align-self:start;grid-column-start:var(--table-query-row);grid-column-end:var(--table-query-row)}.search-module-container .expand[data-v-cdf7c817]{display:flex;margin:0 auto;color:#a4a2a2}.header-operate-container[data-v-204fc0b7]{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap}.header-operate-container .el-btn[data-v-204fc0b7]{margin:2px}.header-operate-container .header-opreate-dropdown[data-v-204fc0b7]{margin:4px 0 0 8px}.header-operate-container .header-btn-more[data-v-204fc0b7]{width:16px;height:16px}.header-operate-container .header-btn-more[data-v-204fc0b7]:hover{cursor:pointer;opacity:.8}.act-table .table-pagination[data-v-b5ec4a41]{padding:12px 4px;justify-content:flex-end}.no-config[data-v-0b8b3885]{line-height:32px;font-weight:700}.no-config-field[data-v-0b8b3885]{color:red}.card-header[data-v-95be1288]{display:flex;align-items:center}.card-header-operate[data-v-95be1288]{margin-left:auto}.add-icon-btn[data-v-1f256e39]{cursor:pointer;width:24px;height:24px;margin-left:6px}.condition-box[data-v-1f256e39]{display:flex;justify-content:center}.condition-box[data-v-1f256e39] .el-form-item__content{flex:0;min-width:300px}.submit-operate[data-v-1f256e39]{display:flex;align-items:center;height:32px;padding-left:12px}.submit-operate .match-opreate[data-v-1f256e39]{cursor:pointer;width:20px;height:20px}.add-icon-btn[data-v-f51a212e]{cursor:pointer;width:24px;height:24px;margin-left:6px}.submit-operate[data-v-f51a212e]{display:flex;align-items:center;height:32px;padding-left:12px}.submit-operate .match-opreate[data-v-f51a212e]{cursor:pointer;width:20px;height:20px}.select-icon-popover .icon-list{display:grid;grid-template-columns:repeat(8,1fr)}.select-icon-popover .icon-list .icon-item{display:flex;align-items:center;justify-content:center;margin:4px 0;border:1px solid transparent}.select-icon-popover .icon-list .icon-item .icon-svg{cursor:pointer}.select-icon-popover .icon-list .icon-item-checked{border:1px solid #000}.select-icon-container .icon-value[data-v-308d02d4]{display:flex;align-items:center}.select-icon-container .icon-value .icon-btn[data-v-308d02d4]{margin-left:12px}.upload-container[data-v-4c658c06]{width:100%}.upload-container[data-v-4c658c06] .el-upload-list--picture-card{display:flex;flex:1}.upload-container[data-v-4c658c06] .el-upload.is-drag{width:100%;height:100%}.upload-container .tip-text[data-v-4c658c06]{margin:0;padding:0;font-size:12px;color:#999}.upload-container .file-list[data-v-4c658c06]{display:flex;align-items:center;justify-content:space-between;margin:6px 0;padding:6px 12px;font-size:14px;border-radius:4px;border:1px solid #dcdfe6}.upload-container .file-list[data-v-4c658c06]:hover{cursor:pointer;opacity:.8}.upload-container .file-list:hover .el-file-name[data-v-4c658c06]{text-decoration:underline}.upload-container .file-list-l[data-v-4c658c06]{display:flex;align-items:center;flex:1;width:500px}.upload-container .file-list-image[data-v-4c658c06]{flex-shrink:0;width:40px;height:40px;border-radius:4px}.upload-container .file-list-icon[data-v-4c658c06]{flex-shrink:0;width:40px;height:40px}.upload-container .file-list .el-file-name[data-v-4c658c06]{flex:1;padding:0 12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.upload-container .file-list .el-file-operate[data-v-4c658c06]{display:flex;justify-content:flex-end;flex-shrink:0;min-width:82px;margin-left:auto}.upload-container .file-list .el-file-operate>i[data-v-4c658c06]{cursor:pointer;margin-left:12px}.upload-container .file-list .el-file-operate>i[data-v-4c658c06]:hover{opacity:.8}.tox-tinymce-aux{z-index:99999!important}.tinymce.ui.FloatPanel{z-index:99}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks):before{color:#a8abb2}.act-code-mirror[data-v-23982507]{width:100%}.act-code-mirror .format-code-btn[data-v-23982507]{margin-bottom:4px}
|
package/lib/index-ddd5b9be.js
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
import { ref as U, computed as oe, resolveComponent as w, resolveDirective as ne, openBlock as h, createElementBlock as N, withDirectives as ae, createBlock as C, mergeProps as ie, unref as p, withCtx as D, renderSlot as L, createElementVNode as x, toDisplayString as I, createCommentVNode as z, createVNode as $, createTextVNode as se, Fragment as ce, renderList as re, normalizeClass as ue, nextTick as pe } from "vue";
|
|
2
|
-
import { ElNotification as M } from "element-plus";
|
|
3
|
-
import { _ as de, u as me, z as fe, o as ge, p as _e, q as ye } from "./index-0ca10994.js";
|
|
4
|
-
import "vue-router";
|
|
5
|
-
let S;
|
|
6
|
-
const he = new Uint8Array(16);
|
|
7
|
-
function ve() {
|
|
8
|
-
if (!S && (S = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !S))
|
|
9
|
-
throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
|
|
10
|
-
return S(he);
|
|
11
|
-
}
|
|
12
|
-
const a = [];
|
|
13
|
-
for (let l = 0; l < 256; ++l)
|
|
14
|
-
a.push((l + 256).toString(16).slice(1));
|
|
15
|
-
function we(l, n = 0) {
|
|
16
|
-
return a[l[n + 0]] + a[l[n + 1]] + a[l[n + 2]] + a[l[n + 3]] + "-" + a[l[n + 4]] + a[l[n + 5]] + "-" + a[l[n + 6]] + a[l[n + 7]] + "-" + a[l[n + 8]] + a[l[n + 9]] + "-" + a[l[n + 10]] + a[l[n + 11]] + a[l[n + 12]] + a[l[n + 13]] + a[l[n + 14]] + a[l[n + 15]];
|
|
17
|
-
}
|
|
18
|
-
const xe = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), q = {
|
|
19
|
-
randomUUID: xe
|
|
20
|
-
};
|
|
21
|
-
function Fe(l, n, F) {
|
|
22
|
-
if (q.randomUUID && !n && !l)
|
|
23
|
-
return q.randomUUID();
|
|
24
|
-
l = l || {};
|
|
25
|
-
const m = l.random || (l.rng || ve)();
|
|
26
|
-
if (m[6] = m[6] & 15 | 64, m[8] = m[8] & 63 | 128, n) {
|
|
27
|
-
F = F || 0;
|
|
28
|
-
for (let v = 0; v < 16; ++v)
|
|
29
|
-
n[F + v] = m[v];
|
|
30
|
-
return n;
|
|
31
|
-
}
|
|
32
|
-
return we(m);
|
|
33
|
-
}
|
|
34
|
-
const Te = { class: "upload-container" }, ke = { class: "el-upload__text" }, $e = { class: "tip-text" }, be = { class: "file-list-l" }, Pe = ["onMouseenter", "onMouseleave"], Ve = { class: "el-file-operate" }, Ue = {
|
|
35
|
-
__name: "index",
|
|
36
|
-
props: {
|
|
37
|
-
request: { type: Function, required: !0, default: null },
|
|
38
|
-
modelValue: { type: [Array, String], default: [] },
|
|
39
|
-
action: { type: String, default: "/api/v1/utils/uploadFiles" },
|
|
40
|
-
data: { type: Object, default: () => ({ uploadFileType: 1 }) },
|
|
41
|
-
name: { type: String, default: "files" },
|
|
42
|
-
multiple: { type: Boolean, default: !0 },
|
|
43
|
-
limit: { type: Number, default: 9 },
|
|
44
|
-
accept: { type: String, default: "*" },
|
|
45
|
-
tipText: { type: String, default: "" },
|
|
46
|
-
fileMaxSize: { type: Number, default: 100 },
|
|
47
|
-
autoUpload: { type: Boolean, default: !0 }
|
|
48
|
-
},
|
|
49
|
-
emits: ["update:modelValue", "delete"],
|
|
50
|
-
setup(l, { expose: n, emit: F }) {
|
|
51
|
-
const { getAssetsFileName: m, getAssetsFilePath: v, downloadFile: B } = ye(), { t: g } = me(), b = F, s = l, R = {
|
|
52
|
-
image: /(gif|jpg|jpeg|png|pdf|bmp|webp|GIF|JPG|PDF|PNG|JPEG)$/,
|
|
53
|
-
word: /(doc|docx)$/,
|
|
54
|
-
pdf: /(pdf)$/,
|
|
55
|
-
excel: /(xls|xlsx)$/
|
|
56
|
-
};
|
|
57
|
-
let P = U(!1), j = U({}), A = U(!1), _ = U(null), V = null, y = oe({
|
|
58
|
-
get() {
|
|
59
|
-
return J(s.modelValue);
|
|
60
|
-
},
|
|
61
|
-
set(e) {
|
|
62
|
-
b("update:modelValue", e);
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
const O = (e) => {
|
|
66
|
-
const t = (y.value || []).map((r) => r.filePath);
|
|
67
|
-
if (e == 0)
|
|
68
|
-
return t;
|
|
69
|
-
let o = t.splice(e), i = t.splice(0, e);
|
|
70
|
-
return o.concat(i);
|
|
71
|
-
}, G = (e) => {
|
|
72
|
-
const t = e.substring(e.lastIndexOf(".") + 1);
|
|
73
|
-
let o = null;
|
|
74
|
-
return Object.keys(R).some((i) => {
|
|
75
|
-
if (R[i].test(t))
|
|
76
|
-
return o = i, !0;
|
|
77
|
-
}), o === null && (o = "file"), o;
|
|
78
|
-
}, W = (e) => e.map((t) => ({ uid: t.uid ?? Fe(), name: m(t), filePath: t, fileType: G(t), status: "success" })), J = (e) => {
|
|
79
|
-
const t = Array.isArray(e) ? e.map((o) => o.filePath) : e ? e.split(";") : [];
|
|
80
|
-
return W(t || []);
|
|
81
|
-
}, H = ({ name: e }) => {
|
|
82
|
-
const t = e.lastIndexOf("."), o = e.slice(t), i = s.accept.trim().split(",");
|
|
83
|
-
let r = !1;
|
|
84
|
-
return i.includes(o) && (r = !0), r = i.some((d) => d == "image/*" ? R.image.test(o) : d.startsWith(".") ? e.endsWith(d) : d === o), r || M({
|
|
85
|
-
title: `${g("act.tip")}`,
|
|
86
|
-
message: `【${e}】${g("act.uploadErrorTip")}`,
|
|
87
|
-
type: "warning",
|
|
88
|
-
duration: 2500
|
|
89
|
-
}), r;
|
|
90
|
-
}, K = (e, t, o) => {
|
|
91
|
-
V && (clearTimeout(V), V = null), V = setTimeout(() => {
|
|
92
|
-
e.call(this, t);
|
|
93
|
-
}, o);
|
|
94
|
-
}, Q = (e) => s.request({ url: s.action, method: "POST", data: e, headers: { "Content-Type": "application/x-www-form-urlencoded" } }), X = async (e) => {
|
|
95
|
-
try {
|
|
96
|
-
const t = e.filter((c) => c.status == "ready" && H(c)), o = y.value.length + t.length;
|
|
97
|
-
if (t.length === 0) {
|
|
98
|
-
_.value.clearFiles();
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (o > s.limit) {
|
|
102
|
-
M({
|
|
103
|
-
title: `${g("act.tip")}`,
|
|
104
|
-
message: `${g("act.uploadLimitTip")}`,
|
|
105
|
-
type: "warning",
|
|
106
|
-
duration: 2500
|
|
107
|
-
}), _.value.clearFiles();
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
if (!s.autoUpload) {
|
|
111
|
-
const c = t.map((T) => ({ ...T, filePath: null, status: "success" }));
|
|
112
|
-
b("update:modelValue", c), _.value.clearFiles();
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
P.value = !0;
|
|
116
|
-
const i = new FormData();
|
|
117
|
-
Object.keys(s.data).forEach((c) => {
|
|
118
|
-
i.append(c, s.data[c]);
|
|
119
|
-
}), t.forEach((c) => {
|
|
120
|
-
i.append(s.name, c.raw);
|
|
121
|
-
});
|
|
122
|
-
let { data: r } = await Q(i);
|
|
123
|
-
const d = s.multiple ? [...y.value.map((c) => c.filePath), ...r.filePaths || []].join(";") : [...r.filePaths || []].join(";");
|
|
124
|
-
_.value.clearFiles(), b("update:modelValue", d), P.value = !1;
|
|
125
|
-
} catch (t) {
|
|
126
|
-
_.value.clearFiles(), P.value = !1, console.error(t);
|
|
127
|
-
}
|
|
128
|
-
}, Y = (e, t) => {
|
|
129
|
-
K(X, t, 500);
|
|
130
|
-
}, E = (e, t) => {
|
|
131
|
-
const o = j.value[`tooltipRef${t}`];
|
|
132
|
-
A.value = o.scrollWidth <= Math.round(o.getBoundingClientRect().width);
|
|
133
|
-
}, Z = ({ filePath: e, name: t, uid: o }, i) => {
|
|
134
|
-
pe(() => {
|
|
135
|
-
document.querySelector(`.previewImage_${o}`).children[0].click();
|
|
136
|
-
});
|
|
137
|
-
}, ee = ({ filePath: e, name: t }) => {
|
|
138
|
-
B(s.request, e);
|
|
139
|
-
}, te = (e, t) => {
|
|
140
|
-
y.value = y.value.filter((o, i) => i !== t), b("delete", { data: e });
|
|
141
|
-
};
|
|
142
|
-
return n({ clearFiles: () => {
|
|
143
|
-
y.value = [], _.value.clearFiles();
|
|
144
|
-
} }), (e, t) => {
|
|
145
|
-
const o = w("upload-filled"), i = w("el-icon"), r = w("el-upload"), d = w("el-image"), c = w("el-tooltip"), T = w("el-button"), le = ne("loading");
|
|
146
|
-
return h(), N("div", Te, [
|
|
147
|
-
ae((h(), C(r, ie({
|
|
148
|
-
ref_key: "uploadRef",
|
|
149
|
-
ref: _,
|
|
150
|
-
action: "#",
|
|
151
|
-
drag: "",
|
|
152
|
-
accept: s.accept,
|
|
153
|
-
multiple: s.multiple,
|
|
154
|
-
"auto-upload": !1,
|
|
155
|
-
"show-file-list": !1,
|
|
156
|
-
"on-change": Y
|
|
157
|
-
}, e.$attrs, {
|
|
158
|
-
"element-loading-text": p(g)("act.uploadLoading")
|
|
159
|
-
}), {
|
|
160
|
-
tip: D(() => [
|
|
161
|
-
s.tipText ? L(e.$slots, "default", { key: 0 }, () => [
|
|
162
|
-
x("p", $e, I(s.tipText), 1)
|
|
163
|
-
], !0) : z("", !0)
|
|
164
|
-
]),
|
|
165
|
-
default: D(() => [
|
|
166
|
-
$(i, { class: "el-icon--upload" }, {
|
|
167
|
-
default: D(() => [
|
|
168
|
-
$(o)
|
|
169
|
-
]),
|
|
170
|
-
_: 1
|
|
171
|
-
}),
|
|
172
|
-
x("div", ke, [
|
|
173
|
-
se(I(p(g)("act.uploadText")), 1),
|
|
174
|
-
x("em", null, I(p(g)("act.clickUpload")), 1)
|
|
175
|
-
])
|
|
176
|
-
]),
|
|
177
|
-
_: 3
|
|
178
|
-
}, 16, ["accept", "multiple", "element-loading-text"])), [
|
|
179
|
-
[le, p(P)]
|
|
180
|
-
]),
|
|
181
|
-
L(e.$slots, "default", {}, () => [
|
|
182
|
-
(h(!0), N(ce, null, re(p(y), (u, k) => (h(), N("div", {
|
|
183
|
-
class: "file-list",
|
|
184
|
-
key: u.uid
|
|
185
|
-
}, [
|
|
186
|
-
x("div", be, [
|
|
187
|
-
u.fileType === "image" ? (h(), C(d, {
|
|
188
|
-
key: 0,
|
|
189
|
-
class: ue(["file-list-image", { [`previewImage_${u.uid}`]: !0 }]),
|
|
190
|
-
fit: "cover",
|
|
191
|
-
"preview-src-list": O(k),
|
|
192
|
-
"preview-teleported": "",
|
|
193
|
-
src: u.filePath
|
|
194
|
-
}, null, 8, ["class", "preview-src-list", "src"])) : (h(), C(d, {
|
|
195
|
-
key: 1,
|
|
196
|
-
class: "file-list-icon",
|
|
197
|
-
src: p(v)(`images/upload-${u.fileType}.png`)
|
|
198
|
-
}, null, 8, ["src"])),
|
|
199
|
-
$(c, {
|
|
200
|
-
effect: "dark",
|
|
201
|
-
content: u.name,
|
|
202
|
-
placement: "bottom-start",
|
|
203
|
-
disabled: p(A)
|
|
204
|
-
}, {
|
|
205
|
-
default: D(() => [
|
|
206
|
-
x("div", {
|
|
207
|
-
class: "el-file-name",
|
|
208
|
-
ref_for: !0,
|
|
209
|
-
ref: (f) => p(j)[`tooltipRef${k}`] = f,
|
|
210
|
-
onMouseenter: (f) => E(f, k),
|
|
211
|
-
onMouseleave: (f) => E(f, k)
|
|
212
|
-
}, I(u.name), 41, Pe)
|
|
213
|
-
]),
|
|
214
|
-
_: 2
|
|
215
|
-
}, 1032, ["content", "disabled"])
|
|
216
|
-
]),
|
|
217
|
-
x("div", Ve, [
|
|
218
|
-
u.fileType === "image" ? (h(), C(T, {
|
|
219
|
-
key: 0,
|
|
220
|
-
type: "primary",
|
|
221
|
-
size: "small",
|
|
222
|
-
icon: p(fe),
|
|
223
|
-
circle: "",
|
|
224
|
-
onClick: (f) => Z(u)
|
|
225
|
-
}, null, 8, ["icon", "onClick"])) : z("", !0),
|
|
226
|
-
$(T, {
|
|
227
|
-
type: "primary",
|
|
228
|
-
size: "small",
|
|
229
|
-
icon: p(ge),
|
|
230
|
-
circle: "",
|
|
231
|
-
onClick: (f) => ee(u)
|
|
232
|
-
}, null, 8, ["icon", "onClick"]),
|
|
233
|
-
$(T, {
|
|
234
|
-
type: "danger",
|
|
235
|
-
size: "small",
|
|
236
|
-
icon: p(_e),
|
|
237
|
-
circle: "",
|
|
238
|
-
onClick: (f) => te(u, k)
|
|
239
|
-
}, null, 8, ["icon", "onClick"])
|
|
240
|
-
])
|
|
241
|
-
]))), 128))
|
|
242
|
-
], !0)
|
|
243
|
-
]);
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
}, Ne = /* @__PURE__ */ de(Ue, [["__scopeId", "data-v-ba74316a"]]);
|
|
247
|
-
export {
|
|
248
|
-
Ne as default
|
|
249
|
-
};
|