@xdmp-open/ui-shared 0.1.0

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 (48) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +109 -0
  4. package/dist/api/binary.d.ts +42 -0
  5. package/dist/components/AvatarUpload/index.vue.d.ts +479 -0
  6. package/dist/components/BackPage/index.vue.d.ts +14 -0
  7. package/dist/components/ChartComponent/index.vue.d.ts +29 -0
  8. package/dist/components/Charts/Keyboard.vue.d.ts +53 -0
  9. package/dist/components/Charts/LineMarker.vue.d.ts +53 -0
  10. package/dist/components/Charts/MixChart.vue.d.ts +53 -0
  11. package/dist/components/Charts/mixins/resize.d.ts +10 -0
  12. package/dist/components/FileUpload/index.vue.d.ts +501 -0
  13. package/dist/components/IconSelect/index.vue.d.ts +51 -0
  14. package/dist/components/IconSelect/svgIconRegistry.d.ts +9 -0
  15. package/dist/components/IconSelect/useIcons.d.ts +7 -0
  16. package/dist/components/MultipleTree/index.vue.d.ts +3 -0
  17. package/dist/components/PageDataInfo/index.vue.d.ts +582 -0
  18. package/dist/components/PageDecs/index.vue.d.ts +52 -0
  19. package/dist/components/PageMoreDataInfo/index.vue.d.ts +474 -0
  20. package/dist/components/Pagination/index.vue.d.ts +184 -0
  21. package/dist/components/ScaleSrceen/index.vue.d.ts +96 -0
  22. package/dist/components/SearchForm/formItem.vue.d.ts +3 -0
  23. package/dist/components/SearchForm/index.vue.d.ts +3 -0
  24. package/dist/components/SearchForm/tools.d.ts +24 -0
  25. package/dist/components/SvgIcon/index.vue.d.ts +27 -0
  26. package/dist/components/TreeSelect/index.vue.d.ts +3 -0
  27. package/dist/components/UiapDrawer/index.vue.d.ts +371 -0
  28. package/dist/components/VueCountTo/index.vue.d.ts +147 -0
  29. package/dist/components/VueCountTo/requestAnimationFrame.d.ts +3 -0
  30. package/dist/directives/emoji.d.ts +3 -0
  31. package/dist/directives/highlight.d.ts +3 -0
  32. package/dist/directives/permission.d.ts +15 -0
  33. package/dist/index.d.ts +43 -0
  34. package/dist/index.js +3907 -0
  35. package/dist/style.css +1 -0
  36. package/dist/styles/btn.scss +119 -0
  37. package/dist/styles/element-variables.scss +42 -0
  38. package/dist/styles/index.scss +11 -0
  39. package/dist/styles/mixin.scss +61 -0
  40. package/dist/styles/transition.scss +48 -0
  41. package/dist/styles/variables.scss +34 -0
  42. package/dist/styles.css +254 -0
  43. package/dist/utils/debounce.d.ts +4 -0
  44. package/dist/utils/encrypt.d.ts +21 -0
  45. package/dist/utils/gogocodeTransfer.d.ts +15 -0
  46. package/dist/utils/scroll-to.d.ts +9 -0
  47. package/dist/utils/validate.d.ts +40 -0
  48. package/package.json +74 -0
package/dist/index.js ADDED
@@ -0,0 +1,3907 @@
1
+ import { ElButton as H, ElDrawer as Pe, ElTree as ge, ElOption as te, ElInput as Y, ElOptionGroup as Me, ElSelect as ae, ElCascader as Ue, ElDatePicker as Le, ElInputNumber as Re, ElFormItem as Oe, ElForm as Fe, ElPagination as We, ElTag as He, ElSwitch as Ge, ElTooltip as ie, ElIcon as P, ElMessage as W, ElPopover as je, ElUpload as ye, ElImage as be } from "element-plus";
2
+ import { resolveComponent as g, openBlock as o, createBlock as k, withCtx as u, renderSlot as I, createElementBlock as r, createVNode as c, createTextVNode as E, toDisplayString as C, createCommentVNode as h, defineComponent as G, resolveDirective as ne, createSlots as Ye, withDirectives as se, mergeProps as x, toHandlers as L, Fragment as z, renderList as O, withModifiers as K, createElementVNode as m, normalizeClass as M, normalizeStyle as U, computed as Q, ref as q, watch as de, nextTick as Ke, onMounted as Je, unref as B, resolveDynamicComponent as ce } from "vue";
3
+ import * as qe from "@element-plus/icons-vue";
4
+ import { Refresh as Qe, Download as Xe, Search as ve, Hide as Ze, View as $e, Edit as we, DocumentCopy as ke, FolderDelete as et, ArrowDown as tt, Loading as at, Delete as Ce, UserFilled as it, Document as nt, Close as st } from "@element-plus/icons-vue";
5
+ import Se from "clipboard";
6
+ import * as F from "echarts";
7
+ import { createAdminClient as ot } from "@xdmp-open/sdk-admin";
8
+ import lt from "highlight.js";
9
+ const X = /* @__PURE__ */ new WeakMap();
10
+ function oe(e) {
11
+ const t = X.get(e);
12
+ if (t)
13
+ return t;
14
+ const a = /* @__PURE__ */ Object.create(null);
15
+ return X.set(e, a), a;
16
+ }
17
+ function Ae(e, t, a) {
18
+ if (Array.isArray(t))
19
+ t.forEach((i) => Ae(e, i, a));
20
+ else {
21
+ const i = oe(e);
22
+ (i[t] || (i[t] = [])).push(a);
23
+ }
24
+ return e;
25
+ }
26
+ function sn(e, t, a) {
27
+ const i = (...s) => {
28
+ De(e, t, i), a.call(e, ...s);
29
+ };
30
+ return i.fn = a, Ae(e, t, i), e;
31
+ }
32
+ function De(e, t, a) {
33
+ const i = e;
34
+ if (!t)
35
+ return X.set(e, /* @__PURE__ */ Object.create(null)), i;
36
+ if (Array.isArray(t))
37
+ return t.forEach((d) => De(e, d, a)), i;
38
+ const s = oe(e), n = s[t];
39
+ return n ? a ? (s[t] = n.filter((d) => !(d === a || d.fn === a)), i) : (s[t] = void 0, i) : i;
40
+ }
41
+ function y(e, t, ...a) {
42
+ const i = e;
43
+ i && i.$emit && i.$emit(t, ...a);
44
+ const s = oe(e)[t];
45
+ return s && s.map((n) => n.apply(e, a)), e;
46
+ }
47
+ const rt = {
48
+ name: "UiapDrawer",
49
+ components: { ElDrawer: Pe, ElButton: H },
50
+ props: {
51
+ submitText: {
52
+ type: String,
53
+ default: "提交中"
54
+ },
55
+ sureText: {
56
+ type: String,
57
+ default: "确定"
58
+ },
59
+ showFooter: {
60
+ type: Boolean,
61
+ default: !0
62
+ },
63
+ title: {
64
+ type: String,
65
+ default: "默认标题"
66
+ },
67
+ size: {
68
+ type: String,
69
+ default: "30%"
70
+ }
71
+ },
72
+ emits: ["cancel", "submit"],
73
+ data() {
74
+ return {
75
+ drawer: !1,
76
+ direction: "rtl",
77
+ loading: !1
78
+ };
79
+ },
80
+ methods: {
81
+ handleClose(e) {
82
+ y(this, "cancel"), this.loading = !1, e();
83
+ },
84
+ showLoading() {
85
+ this.loading = !0;
86
+ },
87
+ hideLoading() {
88
+ this.loading = !1;
89
+ },
90
+ init() {
91
+ this.drawer = !0, this.loading = !1;
92
+ },
93
+ submit() {
94
+ y(this, "submit");
95
+ },
96
+ cancelForm() {
97
+ y(this, "cancel"), this.drawer = !1;
98
+ }
99
+ }
100
+ }, V = (e, t) => {
101
+ const a = e.__vccOpts || e;
102
+ for (const [i, s] of t)
103
+ a[i] = s;
104
+ return a;
105
+ }, dt = {
106
+ key: 0,
107
+ class: "uiap-drawer__footer"
108
+ };
109
+ function ct(e, t, a, i, s, n) {
110
+ const d = g("el-button"), f = g("el-drawer");
111
+ return o(), k(f, {
112
+ modelValue: s.drawer,
113
+ "onUpdate:modelValue": t[0] || (t[0] = (p) => s.drawer = p),
114
+ title: a.title,
115
+ "custom-class": "uiap-drawer",
116
+ direction: s.direction,
117
+ "destroy-on-close": !0,
118
+ "close-on-press-escape": !1,
119
+ "wrapper-closable": !1,
120
+ size: a.size,
121
+ "before-close": n.handleClose,
122
+ "append-to-body": !0
123
+ }, {
124
+ default: u(() => [
125
+ I(e.$slots, "default", {}, void 0, !0),
126
+ I(e.$slots, "uiap-drawer-body", {}, void 0, !0),
127
+ a.showFooter ? (o(), r("div", dt, [
128
+ I(e.$slots, "footer", {}, () => [
129
+ c(d, {
130
+ disabled: s.loading,
131
+ onClick: n.cancelForm
132
+ }, {
133
+ default: u(() => [...t[1] || (t[1] = [
134
+ E("取 消", -1)
135
+ ])]),
136
+ _: 1
137
+ }, 8, ["disabled", "onClick"]),
138
+ c(d, {
139
+ type: "primary",
140
+ loading: s.loading,
141
+ onClick: n.submit
142
+ }, {
143
+ default: u(() => [
144
+ E(C(s.loading ? a.submitText : a.sureText), 1)
145
+ ]),
146
+ _: 1
147
+ }, 8, ["loading", "onClick"])
148
+ ], !0)
149
+ ])) : h("", !0)
150
+ ]),
151
+ _: 3
152
+ }, 8, ["modelValue", "title", "direction", "size", "before-close"]);
153
+ }
154
+ const ut = /* @__PURE__ */ V(rt, [["render", ct], ["__scopeId", "data-v-713ded17"]]), ue = (e, t) => e.tagName.toLowerCase() === t ? e : e.querySelector(t), ht = (e, t) => {
155
+ const a = document.createEvent("HTMLEvents");
156
+ a.initEvent(t, !0, !0), e.dispatchEvent(a);
157
+ }, J = {
158
+ mounted(e) {
159
+ const t = /[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[A9|E]\u3030|uA9|uAE|\u3030/gi;
160
+ let a;
161
+ const i = ue(e, "input"), s = ue(e, "textarea");
162
+ let n = "";
163
+ i ? (a = i, n = "input") : (a = s, n = "input[type=textarea]"), a.handle = function() {
164
+ const d = a.value;
165
+ a.value = d.replace(t, ""), ht(a, n);
166
+ }, a.addEventListener("keyup", a.handle), e.$dom = a;
167
+ },
168
+ unmounted(e) {
169
+ e.$dom && e.$dom.handle && e.$dom.removeEventListener("keyup", e.$dom.handle);
170
+ }
171
+ };
172
+ function pt() {
173
+ const e = +/* @__PURE__ */ new Date() + "";
174
+ return (+(parseInt((1 + Math.random()) * 65536 + "", 10) + "" + e)).toString(32);
175
+ }
176
+ const ft = {
177
+ shortcuts: [
178
+ {
179
+ text: "今天",
180
+ onClick(e) {
181
+ const t = /* @__PURE__ */ new Date(), a = new Date((/* @__PURE__ */ new Date()).toDateString());
182
+ a.setTime(a.getTime()), y(e, "pick", [a, t]);
183
+ }
184
+ },
185
+ {
186
+ text: "最近一周",
187
+ onClick(e) {
188
+ const t = /* @__PURE__ */ new Date(), a = /* @__PURE__ */ new Date();
189
+ a.setTime(t.getTime() - 3600 * 1e3 * 24 * 7), y(e, "pick", [a, t]);
190
+ }
191
+ },
192
+ {
193
+ text: "最近一个月",
194
+ onClick(e) {
195
+ const t = /* @__PURE__ */ new Date(), a = /* @__PURE__ */ new Date();
196
+ a.setTime(a.getTime() - 3600 * 1e3 * 24 * 30), y(e, "pick", [a, t]);
197
+ }
198
+ },
199
+ {
200
+ text: "最近三个月",
201
+ onClick(e) {
202
+ const t = /* @__PURE__ */ new Date(), a = /* @__PURE__ */ new Date();
203
+ a.setTime(a.getTime() - 3600 * 1e3 * 24 * 90), y(e, "pick", [a, t]);
204
+ }
205
+ }
206
+ ]
207
+ }, mt = {
208
+ shortcuts: [
209
+ {
210
+ text: "今年至今",
211
+ onClick(e) {
212
+ const t = /* @__PURE__ */ new Date(), a = new Date((/* @__PURE__ */ new Date()).getFullYear(), 0);
213
+ y(e, "pick", [a, t]);
214
+ }
215
+ },
216
+ {
217
+ text: "最近半年",
218
+ onClick(e) {
219
+ const t = /* @__PURE__ */ new Date(), a = /* @__PURE__ */ new Date();
220
+ a.setMonth(a.getMonth() - 6), y(e, "pick", [a, t]);
221
+ }
222
+ },
223
+ {
224
+ text: "最近一年",
225
+ onClick(e) {
226
+ const t = /* @__PURE__ */ new Date(), a = /* @__PURE__ */ new Date();
227
+ a.setMonth(a.getMonth() - 12), y(e, "pick", [a, t]);
228
+ }
229
+ }
230
+ ]
231
+ }, Z = {
232
+ createUniqueString: pt,
233
+ pickerOptionsRange: ft,
234
+ pickerOptionsRangeMonth: mt
235
+ }, gt = G({
236
+ name: "ElMultipleTreeSelect",
237
+ components: { ElSelect: ae, ElOptionGroup: Me, ElInput: Y, ElOption: te, ElTree: ge },
238
+ directives: { emoji: J },
239
+ props: {
240
+ /* 配置项 */
241
+ props: {
242
+ type: Object,
243
+ default: () => ({
244
+ value: "id",
245
+ // ID字段名
246
+ label: "name",
247
+ // 显示名称
248
+ children: "children"
249
+ // 子级字段名
250
+ })
251
+ },
252
+ /* 选项列表数据(树形结构的对象数组) */
253
+ options: {
254
+ type: Array,
255
+ default: () => []
256
+ },
257
+ /* 初始值 */
258
+ value: {
259
+ // type: Array,
260
+ default: () => []
261
+ },
262
+ /* 可清空选项 */
263
+ clearable: {
264
+ type: Boolean,
265
+ default: () => !0
266
+ },
267
+ /* 自动收起 */
268
+ accordion: {
269
+ type: Boolean,
270
+ default: () => !1
271
+ },
272
+ /* 是否添加前缀 */
273
+ hasPrefix: {
274
+ type: Boolean,
275
+ default: () => !1
276
+ },
277
+ /* 下拉框类名 */
278
+ popperClass: {
279
+ type: String,
280
+ default: ""
281
+ },
282
+ /* 插入body元素 */
283
+ isAppendToBody: {
284
+ type: Boolean,
285
+ default: () => !0
286
+ },
287
+ // 判断是否需要单选项
288
+ isShowCheckbox: {
289
+ type: Boolean,
290
+ default: () => !1
291
+ },
292
+ // 判断是否用于驾驶舱
293
+ sourceCockpit: {
294
+ type: Boolean,
295
+ default: () => !1
296
+ },
297
+ placeholder: {
298
+ type: String,
299
+ default: "全部"
300
+ },
301
+ // 是否点击箭头展开
302
+ isExpandOnClickNode: {
303
+ type: Boolean,
304
+ default: !0
305
+ },
306
+ // 可模糊查询
307
+ searchable: {
308
+ type: Boolean,
309
+ default: !0
310
+ },
311
+ // 是否禁用
312
+ disabled: {
313
+ type: Boolean,
314
+ default: !1
315
+ }
316
+ },
317
+ emits: ["getNode", "getValue", "searchArea", "update:value"],
318
+ data() {
319
+ return {
320
+ filterText: "",
321
+ valueId: "",
322
+ // 初始值
323
+ valueTitle: "",
324
+ defaultExpandedKey: [],
325
+ selectData: [],
326
+ name: ""
327
+ };
328
+ },
329
+ watch: {
330
+ value() {
331
+ this.initHandle();
332
+ },
333
+ filterText(e) {
334
+ this.$refs.selectTree.filter(e);
335
+ }
336
+ // options(val) {
337
+ // window.console.log(val)
338
+ // }
339
+ },
340
+ mounted() {
341
+ this.initHandle();
342
+ },
343
+ methods: {
344
+ // 初始化值
345
+ initHandle() {
346
+ Array.isArray(this.value) && this.value.length !== 0 && (this.value.forEach((e) => {
347
+ this.valueTitle += `${e[this.props.label]},`;
348
+ }), this.selectData = JSON.parse(JSON.stringify(this.value)), this.defaultExpandedKey = [
349
+ ...this.value.map((e) => e[this.props.value])
350
+ ]), this.initScroll();
351
+ },
352
+ // 初始化滚动条
353
+ initScroll() {
354
+ this.$nextTick(() => {
355
+ const e = document.querySelectorAll(
356
+ ".el-scrollbar .el-select-dropdown__wrap"
357
+ )[0], t = document.querySelectorAll(
358
+ ".el-scrollbar .el-scrollbar__bar"
359
+ );
360
+ e.style.cssText = "margin: 0px; max-height: none; overflow: hidden;", t.forEach((a) => a.style.width = "0");
361
+ });
362
+ },
363
+ nodeClickSource(e) {
364
+ if (this.sourceCockpit) {
365
+ let t = "";
366
+ e.name.length > 7 ? t = e.name.substring(0, 6) + "..." : t = e.name, this.valueTitle = t, y(this, "getNode", e);
367
+ return;
368
+ }
369
+ this.handleNodeClick(e);
370
+ },
371
+ getCurrentCheck(e, t) {
372
+ console.log(t), this.saasHandleNodeClick(t.checkedNodes);
373
+ },
374
+ saasHandleNodeClick(e) {
375
+ console.log(e);
376
+ let t = "";
377
+ this.selectData = e, this.selectData.forEach((a) => t += `${a[this.props.label]},`), this.valueTitle = t, this.valueId = "", this.clearSelected(), y(this, "getValue", this.selectData), this.defaultExpandedKey = [];
378
+ },
379
+ setKey(e) {
380
+ this.$refs.selectTree.setCheckedNodes(e);
381
+ },
382
+ // 切换选项
383
+ handleNodeClick(e) {
384
+ let t = "";
385
+ this.selectData.some((a) => a[this.props.value] === e[this.props.value]) ? (this.selectData = this.selectData.filter((a) => e[this.props.value] !== a[this.props.value]), this.selectData.forEach((a) => t += `${a[this.props.label]},`), this.valueTitle = t, this.valueId = "", this.clearSelected(), y(this, "getValue", this.selectData), this.defaultExpandedKey = []) : (this.selectData.push(e), this.selectData.forEach((a) => t += `${a[this.props.label]},`), this.valueTitle = t, this.valueId = e[this.props.value], y(this, "getValue", this.selectData), this.defaultExpandedKey = []);
386
+ },
387
+ // 清楚单选框
388
+ clearRadio() {
389
+ const e = this.$refs.selectTree.store.nodesMap;
390
+ for (const t in e)
391
+ e[t].expanded = !1;
392
+ this.$refs.selectTree.setCurrentKey(null), this.$refs.selectTree.setCheckedKeys([]);
393
+ },
394
+ // 清除选中
395
+ clearHandle() {
396
+ this.valueTitle = "", this.valueId = "", this.defaultExpandedKey = [], this.selectData = [], this.clearSelected(), this.clearRadio(), y(this, "getValue", null);
397
+ },
398
+ // 汕尾驾驶舱清除选中
399
+ cockpitClearHandle() {
400
+ this.valueTitle = "", this.valueId = "", this.defaultExpandedKey = [], this.selectData = [], this.clearSelected(), this.clearRadio();
401
+ },
402
+ /* 清空选中样式 */
403
+ clearSelected() {
404
+ document.querySelectorAll("#tree-option .el-tree-node").forEach((t) => t.classList.remove("is-current"));
405
+ },
406
+ filterNode(e, t) {
407
+ return e ? t.name.indexOf(e) !== -1 : !0;
408
+ },
409
+ search() {
410
+ y(this, "searchArea", this.name);
411
+ }
412
+ }
413
+ });
414
+ function yt(e, t, a, i, s, n) {
415
+ const d = g("el-input"), f = g("el-tree"), p = g("el-option"), b = g("el-option-group"), S = g("el-select"), A = ne("emoji");
416
+ return o(), k(S, {
417
+ disabled: e.disabled,
418
+ value: e.valueTitle,
419
+ clearable: e.clearable,
420
+ placeholder: e.placeholder,
421
+ "popper-class": e.popperClass,
422
+ "popper-append-to-body": e.isAppendToBody,
423
+ onClear: e.clearHandle
424
+ }, Ye({
425
+ default: u(() => [
426
+ c(b, null, {
427
+ default: u(() => [
428
+ e.searchable ? se((o(), k(d, {
429
+ key: 0,
430
+ modelValue: e.name,
431
+ "onUpdate:modelValue": t[0] || (t[0] = (D) => e.name = D),
432
+ placeholder: "请输入区域名称",
433
+ clearable: "",
434
+ onInput: e.search
435
+ }, null, 8, ["modelValue", "onInput"])), [
436
+ [A]
437
+ ]) : h("", !0),
438
+ c(p, {
439
+ value: e.valueTitle,
440
+ label: e.valueTitle,
441
+ class: "options"
442
+ }, {
443
+ default: u(() => [
444
+ c(f, {
445
+ id: "tree-option",
446
+ ref: "selectTree",
447
+ "show-checkbox": e.isShowCheckbox,
448
+ "expand-on-click-node": e.isExpandOnClickNode,
449
+ "check-strictly": !1,
450
+ accordion: e.accordion,
451
+ data: e.options,
452
+ props: e.props,
453
+ "node-key": e.props.value,
454
+ "default-expanded-keys": e.defaultExpandedKey,
455
+ "filter-node-method": e.filterNode,
456
+ onNodeClick: e.nodeClickSource,
457
+ onCheck: e.getCurrentCheck
458
+ }, null, 8, ["show-checkbox", "expand-on-click-node", "accordion", "data", "props", "node-key", "default-expanded-keys", "filter-node-method", "onNodeClick", "onCheck"])
459
+ ]),
460
+ _: 1
461
+ }, 8, ["value", "label"])
462
+ ]),
463
+ _: 1
464
+ })
465
+ ]),
466
+ _: 2
467
+ }, [
468
+ e.hasPrefix ? {
469
+ name: "prefix",
470
+ fn: u(() => [
471
+ I(e.$slots, "prefix_content", {}, void 0, !0)
472
+ ]),
473
+ key: "0"
474
+ } : void 0
475
+ ]), 1032, ["disabled", "value", "clearable", "placeholder", "popper-class", "popper-append-to-body", "onClear"]);
476
+ }
477
+ const Ee = /* @__PURE__ */ V(gt, [["render", yt], ["__scopeId", "data-v-c2482266"]]), bt = G({
478
+ components: {
479
+ multipleTree: Ee,
480
+ ElInput: Y,
481
+ ElInputNumber: Re,
482
+ ElSelect: ae,
483
+ ElOption: te,
484
+ ElDatePicker: Le,
485
+ ElCascader: Ue
486
+ },
487
+ directives: { emoji: J },
488
+ inheritAttrs: !1,
489
+ props: {
490
+ value: {
491
+ type: String,
492
+ default: ""
493
+ },
494
+ itemOptions: {
495
+ type: Object,
496
+ default: () => {
497
+ }
498
+ }
499
+ },
500
+ emits: ["update:value", "handleChange"],
501
+ data() {
502
+ return {
503
+ pickerOptionsRange: Z.pickerOptionsRange,
504
+ pickerOptionsRangeMonth: Z.pickerOptionsRangeMonth
505
+ };
506
+ },
507
+ computed: {
508
+ // 双向绑定数据值
509
+ currentVal: {
510
+ get() {
511
+ return this.value;
512
+ },
513
+ set(e) {
514
+ y(this, "update:value", e);
515
+ }
516
+ },
517
+ // 绑定属性
518
+ bindProps() {
519
+ const e = { ...this.itemOptions };
520
+ return delete e.label, delete e.prop, delete e.element, delete e.initValue, delete e.rules, delete e.events, e.element === "el-select" && delete e.options, e;
521
+ },
522
+ // 绑定方法
523
+ bindEvents() {
524
+ return this.itemOptions.events || {};
525
+ },
526
+ // el-input
527
+ isInput() {
528
+ return this.itemOptions.element === "el-input";
529
+ },
530
+ // el-input-number
531
+ isInputNumber() {
532
+ return this.itemOptions.element === "el-input-number";
533
+ },
534
+ // el-select
535
+ isSelect() {
536
+ return this.itemOptions.element === "el-select";
537
+ },
538
+ isTreeSelect() {
539
+ return this.itemOptions.element === "el-tree-select";
540
+ },
541
+ // el-date-picker (type: datetimerange/daterange)
542
+ isDatePickerDateRange() {
543
+ const e = this.itemOptions.element === "el-date-picker", t = !this.itemOptions.type || this.itemOptions.type === "datetimerange" || this.itemOptions.type === "daterange";
544
+ return e && t;
545
+ },
546
+ // el-date-picker (type: monthrange)
547
+ isDatePickerMonthRange() {
548
+ const e = this.itemOptions.element === "el-date-picker", t = this.itemOptions.type === "monthrange";
549
+ return e && t;
550
+ },
551
+ // el-date-picker (type: other)
552
+ isDatePickerOthers() {
553
+ return this.itemOptions.element === "el-date-picker" && !this.isDatePickerDateRange && !this.isDatePickerMonthRange;
554
+ },
555
+ // el-cascader
556
+ isCascader() {
557
+ return this.itemOptions.element === "el-cascader";
558
+ }
559
+ },
560
+ mounted() {
561
+ const e = this.$attrs;
562
+ e.class && this.$el.classList.add(e.class), e.style && Object.entries(e.style).forEach(([t, a]) => {
563
+ this.$el.style[t] = a;
564
+ });
565
+ },
566
+ methods: {
567
+ getValue(e) {
568
+ Array.isArray(e) && e.length !== 0 ? this.itemOptions.areaId = e.map((t) => t[this.itemOptions.defaultProps.value]).join(",") : this.itemOptions.areaId = "", y(this, "handleChange", this.itemOptions);
569
+ },
570
+ clear() {
571
+ this.$nextTick(() => {
572
+ this.$refs.selectTreeRef.clearHandle();
573
+ });
574
+ }
575
+ }
576
+ }), vt = { class: "form-item" };
577
+ function wt(e, t, a, i, s, n) {
578
+ const d = g("el-input"), f = g("el-input-number"), p = g("el-option"), b = g("el-select"), S = g("multipleTree"), A = g("el-date-picker"), D = g("el-cascader"), w = ne("emoji");
579
+ return o(), r("div", vt, [
580
+ e.isInput ? se((o(), k(d, x({
581
+ key: 0,
582
+ modelValue: e.currentVal,
583
+ "onUpdate:modelValue": t[0] || (t[0] = (v) => e.currentVal = v)
584
+ }, e.bindProps, L(e.bindEvents)), null, 16, ["modelValue"])), [
585
+ [w]
586
+ ]) : h("", !0),
587
+ e.isInputNumber ? (o(), k(f, x({
588
+ key: 1,
589
+ modelValue: e.currentVal,
590
+ "onUpdate:modelValue": t[1] || (t[1] = (v) => e.currentVal = v)
591
+ }, e.bindProps, {
592
+ "controls-position": e.itemOptions["controls-position"] || "right"
593
+ }, L(e.bindEvents)), null, 16, ["modelValue", "controls-position"])) : h("", !0),
594
+ e.isSelect ? (o(), k(b, x({
595
+ key: 2,
596
+ modelValue: e.currentVal,
597
+ "onUpdate:modelValue": t[2] || (t[2] = (v) => e.currentVal = v)
598
+ }, e.bindProps, { clearable: "" }, L(e.bindEvents)), {
599
+ default: u(() => [
600
+ (o(!0), r(z, null, O(e.itemOptions.options, (v) => (o(), k(p, {
601
+ key: v.value,
602
+ label: v.label,
603
+ value: v.value
604
+ }, null, 8, ["label", "value"]))), 128))
605
+ ]),
606
+ _: 1
607
+ }, 16, ["modelValue"])) : h("", !0),
608
+ e.isTreeSelect ? (o(), k(S, x({
609
+ key: 3,
610
+ ref: "selectTreeRef"
611
+ }, e.bindProps, {
612
+ style: { width: "100%" },
613
+ props: e.itemOptions.defaultProps,
614
+ options: e.itemOptions.options,
615
+ value: e.itemOptions.areaId,
616
+ clearable: e.itemOptions.isClearable,
617
+ accordion: e.itemOptions.isAccordion
618
+ }, L(e.bindEvents), {
619
+ onGetValue: t[3] || (t[3] = (v) => e.getValue(v))
620
+ }), null, 16, ["props", "options", "value", "clearable", "accordion"])) : h("", !0),
621
+ e.isDatePickerDateRange ? (o(), k(A, x({
622
+ key: 4,
623
+ modelValue: e.currentVal,
624
+ "onUpdate:modelValue": t[4] || (t[4] = (v) => e.currentVal = v)
625
+ }, e.bindProps, {
626
+ type: e.itemOptions.type || "datetimerange",
627
+ clearable: "",
628
+ "picker-options": e.pickerOptionsRange,
629
+ "start-placeholder": "开始日期",
630
+ "range-separator": "至",
631
+ "end-placeholder": "结束日期",
632
+ format: e.itemOptions.format || "YYYY-MM-DD HH:mm:ss"
633
+ }, L(e.bindEvents)), null, 16, ["modelValue", "type", "picker-options", "format"])) : h("", !0),
634
+ e.isDatePickerMonthRange ? (o(), k(A, x({
635
+ key: 5,
636
+ modelValue: e.currentVal,
637
+ "onUpdate:modelValue": t[5] || (t[5] = (v) => e.currentVal = v)
638
+ }, e.bindProps, {
639
+ type: "monthrange",
640
+ clearable: "",
641
+ "picker-options": e.pickerOptionsRangeMonth,
642
+ "start-placeholder": "开始日期",
643
+ "range-separator": "至",
644
+ "end-placeholder": "结束日期",
645
+ "value-format": "yyyy-MM"
646
+ }, L(e.bindEvents)), null, 16, ["modelValue", "picker-options"])) : h("", !0),
647
+ e.isDatePickerOthers ? (o(), k(A, x({
648
+ key: 6,
649
+ modelValue: e.currentVal,
650
+ "onUpdate:modelValue": t[6] || (t[6] = (v) => e.currentVal = v)
651
+ }, e.bindProps, {
652
+ type: e.itemOptions.type,
653
+ clearable: "",
654
+ placeholder: "请选择日期"
655
+ }, L(e.bindEvents)), null, 16, ["modelValue", "type"])) : h("", !0),
656
+ e.isCascader ? (o(), k(D, x({
657
+ key: 7,
658
+ modelValue: e.currentVal,
659
+ "onUpdate:modelValue": t[7] || (t[7] = (v) => e.currentVal = v)
660
+ }, e.bindProps, { clearable: "" }, L(e.bindEvents)), null, 16, ["modelValue"])) : h("", !0)
661
+ ]);
662
+ }
663
+ const kt = /* @__PURE__ */ V(bt, [["render", wt]]), Ct = G({
664
+ name: "SearchForm",
665
+ components: { formItem: kt, ElForm: Fe, ElFormItem: Oe, ElButton: H },
666
+ props: {
667
+ /**
668
+ * 表单配置
669
+ * 示例:
670
+ * [{
671
+ * label: '用户名', // label文字
672
+ * prop: 'username', // 字段名
673
+ * element: 'el-input', // 指定elementui组件
674
+ * initValue: '阿黄', // 字段初始值
675
+ * placeholder: '请输入用户名', // elementui组件属性
676
+ * rules: [{ required: true, message: '必填项', trigger: 'blur' }], // elementui组件属性
677
+ * events: { // elementui组件方法
678
+ * input (val) {
679
+ * console.log(val)
680
+ * },
681
+ * ...... // 可添加任意elementui组件支持的方法
682
+ * }
683
+ * ...... // 可添加任意elementui组件支持的属性
684
+ * }]
685
+ */
686
+ formOptions: {
687
+ type: Array,
688
+ required: !0,
689
+ default() {
690
+ return [];
691
+ }
692
+ },
693
+ // 提交按钮项,多个用逗号分隔(search, export, reset)
694
+ btnItems: {
695
+ type: String,
696
+ default() {
697
+ return "search, reset";
698
+ }
699
+ }
700
+ },
701
+ emits: ["onSearch", "onExport", "onReset"],
702
+ data() {
703
+ return {
704
+ formData: {},
705
+ SearchIcon: ve,
706
+ DownloadIcon: Xe,
707
+ RefreshIcon: Qe
708
+ };
709
+ },
710
+ computed: {
711
+ newKeys() {
712
+ return this.formOptions.map(() => Z.createUniqueString());
713
+ }
714
+ },
715
+ created() {
716
+ this.addInitValue();
717
+ },
718
+ methods: {
719
+ // 校验
720
+ onValidate(e) {
721
+ this.$refs.formRef.validate((t) => {
722
+ t && (console.log("提交成功"), e());
723
+ });
724
+ },
725
+ // 搜索
726
+ onSearch() {
727
+ this.onValidate(() => {
728
+ y(this, "onSearch", this.formData);
729
+ });
730
+ },
731
+ // 导出
732
+ onExport() {
733
+ this.onValidate(() => {
734
+ y(this, "onExport", this.formData);
735
+ });
736
+ },
737
+ onReset() {
738
+ this.$refs.formRef.resetFields(), this.onValidate(() => {
739
+ this.$refs.formItem.map((e, t) => {
740
+ e.isTreeSelect && this.$refs.formItem[t].clear();
741
+ }), y(this, "onReset");
742
+ });
743
+ },
744
+ // 添加初始值
745
+ addInitValue() {
746
+ const e = {};
747
+ this.formOptions.forEach((t) => {
748
+ e[t.prop] = t.initValue || "";
749
+ }), this.formData = e, console.log(this.formData);
750
+ },
751
+ handleChange(e) {
752
+ e.element == "el-tree-select" && (this.formData[e.prop] = e.areaId);
753
+ }
754
+ }
755
+ }), St = { class: "search-form-box" };
756
+ function At(e, t, a, i, s, n) {
757
+ const d = g("formItem"), f = g("el-form-item"), p = g("el-button"), b = g("el-form");
758
+ return o(), r("div", St, [
759
+ c(b, {
760
+ ref: "formRef",
761
+ model: e.formData,
762
+ inline: !0,
763
+ class: "searchInputCustomStyle",
764
+ onSubmit: t[0] || (t[0] = K(() => {
765
+ }, ["prevent"]))
766
+ }, {
767
+ default: u(() => [
768
+ (o(!0), r(z, null, O(e.formOptions, (S, A) => (o(), k(f, {
769
+ key: e.newKeys[A],
770
+ prop: S.prop,
771
+ label: S.label,
772
+ rules: S.rules
773
+ }, {
774
+ default: u(() => [
775
+ c(d, {
776
+ ref_for: !0,
777
+ ref: "formItem",
778
+ value: e.formData[S.prop],
779
+ "item-options": S,
780
+ onClear: e.onReset,
781
+ onHandleChange: e.handleChange,
782
+ "onUpdate:value": (D) => e.formData[S.prop] = D
783
+ }, null, 8, ["value", "item-options", "onClear", "onHandleChange", "onUpdate:value"])
784
+ ]),
785
+ _: 2
786
+ }, 1032, ["prop", "label", "rules"]))), 128)),
787
+ c(f, null, {
788
+ default: u(() => [
789
+ e.btnItems.includes("search") ? (o(), k(p, {
790
+ key: 0,
791
+ icon: e.SearchIcon,
792
+ type: "primary",
793
+ class: "btn-search",
794
+ onClick: e.onSearch
795
+ }, {
796
+ default: u(() => [...t[1] || (t[1] = [
797
+ E("搜索", -1)
798
+ ])]),
799
+ _: 1
800
+ }, 8, ["icon", "onClick"])) : h("", !0),
801
+ e.btnItems.includes("export") ? (o(), k(p, {
802
+ key: 1,
803
+ icon: e.DownloadIcon,
804
+ type: "primary",
805
+ class: "btn-export",
806
+ onClick: e.onExport
807
+ }, {
808
+ default: u(() => [...t[2] || (t[2] = [
809
+ E("导出", -1)
810
+ ])]),
811
+ _: 1
812
+ }, 8, ["icon", "onClick"])) : h("", !0),
813
+ e.btnItems.includes("reset") ? (o(), k(p, {
814
+ key: 2,
815
+ icon: e.RefreshIcon,
816
+ type: "default",
817
+ class: "btn-reset",
818
+ onClick: e.onReset
819
+ }, {
820
+ default: u(() => [...t[3] || (t[3] = [
821
+ E("重置", -1)
822
+ ])]),
823
+ _: 1
824
+ }, 8, ["icon", "onClick"])) : h("", !0)
825
+ ]),
826
+ _: 1
827
+ }),
828
+ I(e.$slots, "default", {}, void 0, !0)
829
+ ]),
830
+ _: 3
831
+ }, 8, ["model"]),
832
+ t[4] || (t[4] = m("div", { class: "btn-box" }, null, -1))
833
+ ]);
834
+ }
835
+ const Dt = /* @__PURE__ */ V(Ct, [["render", At], ["__scopeId", "data-v-e91e7e34"]]);
836
+ Math.easeInOutQuad = function(e, t, a, i) {
837
+ return e /= i / 2, e < 1 ? a / 2 * e * e + t : (e--, -a / 2 * (e * (e - 2) - 1) + t);
838
+ };
839
+ const Et = function() {
840
+ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(e) {
841
+ window.setTimeout(e, 1e3 / 60);
842
+ };
843
+ }();
844
+ function Vt(e) {
845
+ document.documentElement.scrollTop = e, document.body && document.body.parentNode && (document.body.parentNode.scrollTop = e), document.body.scrollTop = e;
846
+ }
847
+ function Nt() {
848
+ return document.documentElement.scrollTop || document.body && document.body.parentNode && document.body.parentNode.scrollTop || document.body.scrollTop;
849
+ }
850
+ function he(e, t, a) {
851
+ const i = Nt(), s = e - i, n = 20;
852
+ let d = 0;
853
+ t = typeof t > "u" ? 500 : t;
854
+ const f = function() {
855
+ d += n;
856
+ const p = Math.easeInOutQuad(d, i, s, t);
857
+ Vt(p), d < t ? Et(f) : a && typeof a == "function" && a();
858
+ };
859
+ f();
860
+ }
861
+ const It = {
862
+ name: "Pagination",
863
+ components: { ElPagination: We },
864
+ props: {
865
+ total: {
866
+ required: !0,
867
+ type: Number
868
+ },
869
+ page: {
870
+ type: Number,
871
+ default: 1
872
+ },
873
+ limit: {
874
+ type: Number,
875
+ default: 20
876
+ },
877
+ pageSizes: {
878
+ type: Array,
879
+ default() {
880
+ return [10, 20, 30, 50];
881
+ }
882
+ },
883
+ layout: {
884
+ type: String,
885
+ default: "total, sizes, prev, pager, next, jumper"
886
+ },
887
+ background: {
888
+ type: Boolean,
889
+ default: !0
890
+ },
891
+ autoScroll: {
892
+ type: Boolean,
893
+ default: !0
894
+ },
895
+ hidden: {
896
+ type: Boolean,
897
+ default: !1
898
+ }
899
+ },
900
+ emits: ["update:page", "update:limit", "pagination"],
901
+ computed: {
902
+ currentPage: {
903
+ get() {
904
+ return this.page;
905
+ },
906
+ set(e) {
907
+ y(this, "update:page", e);
908
+ }
909
+ },
910
+ pageSize: {
911
+ get() {
912
+ return this.limit;
913
+ },
914
+ set(e) {
915
+ y(this, "update:limit", e);
916
+ }
917
+ }
918
+ },
919
+ methods: {
920
+ handleSizeChange(e) {
921
+ y(this, "pagination", { page: this.currentPage, limit: e }), this.autoScroll && he(0, 800);
922
+ },
923
+ handleCurrentChange(e) {
924
+ y(this, "pagination", { page: e, limit: this.pageSize }), this.autoScroll && he(0, 800);
925
+ }
926
+ }
927
+ };
928
+ function Bt(e, t, a, i, s, n) {
929
+ const d = g("el-pagination");
930
+ return o(), r("div", {
931
+ class: M([{ hidden: a.hidden }, "pagination-container"])
932
+ }, [
933
+ c(d, x({
934
+ "current-page": n.currentPage,
935
+ "onUpdate:currentPage": t[0] || (t[0] = (f) => n.currentPage = f),
936
+ "page-size": n.pageSize,
937
+ "onUpdate:pageSize": t[1] || (t[1] = (f) => n.pageSize = f)
938
+ }, e.$attrs, {
939
+ background: a.background,
940
+ layout: a.layout,
941
+ "page-sizes": a.pageSizes,
942
+ total: a.total,
943
+ onSizeChange: n.handleSizeChange,
944
+ onCurrentChange: n.handleCurrentChange
945
+ }), null, 16, ["current-page", "page-size", "background", "layout", "page-sizes", "total", "onSizeChange", "onCurrentChange"])
946
+ ], 2);
947
+ }
948
+ const zt = /* @__PURE__ */ V(It, [["render", Bt], ["__scopeId", "data-v-a35f1199"]]), Tt = G({
949
+ name: "TreeSelect",
950
+ components: { ElSelect: ae, ElInput: Y, ElOption: te, ElTree: ge },
951
+ directives: { emoji: J },
952
+ props: {
953
+ // v-model绑定
954
+ modelValue: {
955
+ type: [String, Number],
956
+ default: ""
957
+ },
958
+ // 树形的数据
959
+ data: {
960
+ type: Array,
961
+ default: function() {
962
+ return [];
963
+ }
964
+ },
965
+ // 每个树节点用来作为唯一标识的属性
966
+ nodeKey: {
967
+ type: [String, Number],
968
+ default: "id"
969
+ },
970
+ // tree的props配置
971
+ treeProps: {
972
+ type: Object,
973
+ default: function() {
974
+ return {
975
+ label: "name",
976
+ children: "children"
977
+ };
978
+ }
979
+ },
980
+ // 开启搜索
981
+ hasSearch: {
982
+ type: Boolean,
983
+ default: !1
984
+ }
985
+ },
986
+ emits: ["update:modelValue", "changeTree", "searchGroups"],
987
+ data() {
988
+ return {
989
+ name: "",
990
+ optionData: {
991
+ id: "",
992
+ name: ""
993
+ }
994
+ };
995
+ },
996
+ watch: {
997
+ modelValue: function(e) {
998
+ this.isEmpty(this.data) || this.init(e);
999
+ },
1000
+ data: function(e) {
1001
+ this.isEmpty(e) || this.init(this.modelValue);
1002
+ }
1003
+ },
1004
+ mounted() {
1005
+ this.isEmpty(this.data) || this.init(this.modelValue);
1006
+ },
1007
+ methods: {
1008
+ // 是否为空
1009
+ isEmpty(e) {
1010
+ return !e || !Array.isArray(e) ? !0 : e.length === 0;
1011
+ },
1012
+ updateValue(e) {
1013
+ y(this, "update:modelValue", e);
1014
+ },
1015
+ handleNodeClick(e) {
1016
+ const t = this.treeProps.label || "name";
1017
+ y(this, "update:modelValue", e[this.nodeKey]), this.optionData.id = e[this.nodeKey], this.optionData.name = e[t], this.$refs.select.blur(), y(this, "changeTree", e);
1018
+ },
1019
+ init(e) {
1020
+ e ? this.$nextTick(() => {
1021
+ const t = this.$refs.tree;
1022
+ t.setCurrentKey(e);
1023
+ const a = t.getNode(e);
1024
+ a && (this.optionData.id = e, this.optionData.name = a.label);
1025
+ }) : this.$refs.tree.setCurrentKey(null);
1026
+ },
1027
+ visibleChange(e) {
1028
+ if (e) {
1029
+ const t = document.querySelector(".is-current");
1030
+ setTimeout(() => {
1031
+ this.$refs.select.scrollToOption({ $el: t });
1032
+ }, 0);
1033
+ }
1034
+ },
1035
+ clear() {
1036
+ y(this, "update:modelValue", "");
1037
+ },
1038
+ search() {
1039
+ y(this, "searchGroups", this.name);
1040
+ },
1041
+ // 方法:过滤节点
1042
+ filterNode(e, t, a) {
1043
+ if (!e) return !0;
1044
+ const i = [];
1045
+ this.getChildrenNode(a, i, e);
1046
+ let s = !1;
1047
+ return i.forEach((n) => {
1048
+ s = s || n;
1049
+ }), s;
1050
+ },
1051
+ // 方法:获取子节点
1052
+ getChildrenNode(e, t, a) {
1053
+ const i = this.treeProps.label || "name", s = e.data && e.data[i] && String(e.data[i]).indexOf(a) !== -1;
1054
+ s && t.push(s), !s && e.level !== 1 && e.parent && this.getChildrenNode(e.parent, t, a);
1055
+ }
1056
+ }
1057
+ });
1058
+ function _t(e, t, a, i, s, n) {
1059
+ const d = g("el-input"), f = g("el-tree"), p = g("el-option"), b = g("el-select"), S = ne("emoji");
1060
+ return o(), k(b, {
1061
+ ref: "select",
1062
+ "model-value": e.modelValue,
1063
+ placeholder: "全部",
1064
+ clearable: "",
1065
+ style: { width: "100%" },
1066
+ onVisibleChange: e.visibleChange,
1067
+ onClear: e.clear,
1068
+ "onUpdate:modelValue": e.updateValue
1069
+ }, {
1070
+ default: u(() => [
1071
+ e.hasSearch ? se((o(), k(d, {
1072
+ key: 0,
1073
+ modelValue: e.name,
1074
+ "onUpdate:modelValue": t[0] || (t[0] = (A) => e.name = A),
1075
+ placeholder: "请输入分组名称",
1076
+ clearable: "",
1077
+ onInput: e.search
1078
+ }, null, 8, ["modelValue", "onInput"])), [
1079
+ [S]
1080
+ ]) : h("", !0),
1081
+ c(p, {
1082
+ ref: "option",
1083
+ class: "option",
1084
+ value: e.optionData.id,
1085
+ label: e.optionData.name
1086
+ }, {
1087
+ default: u(() => [
1088
+ c(f, {
1089
+ ref: "tree",
1090
+ class: "tree",
1091
+ "node-key": e.nodeKey,
1092
+ data: e.data,
1093
+ props: e.treeProps,
1094
+ "default-expanded-keys": [e.modelValue],
1095
+ "current-node-key": e.modelValue,
1096
+ "highlight-current": "",
1097
+ "expand-on-click-node": !1,
1098
+ "filter-node-method": e.filterNode,
1099
+ onNodeClick: e.handleNodeClick
1100
+ }, null, 8, ["node-key", "data", "props", "default-expanded-keys", "current-node-key", "filter-node-method", "onNodeClick"])
1101
+ ]),
1102
+ _: 1
1103
+ }, 8, ["value", "label"])
1104
+ ]),
1105
+ _: 1
1106
+ }, 8, ["model-value", "onVisibleChange", "onClear", "onUpdate:modelValue"]);
1107
+ }
1108
+ const xt = /* @__PURE__ */ V(Tt, [["render", _t], ["__scopeId", "data-v-5fd28d7f"]]), Pt = {
1109
+ name: "BackPage",
1110
+ props: {
1111
+ title: {
1112
+ type: String,
1113
+ default: "返回"
1114
+ }
1115
+ }
1116
+ }, Mt = { class: "backPage" }, Ut = { class: "title" };
1117
+ function Lt(e, t, a, i, s, n) {
1118
+ return o(), r("div", Mt, [
1119
+ m("span", {
1120
+ class: "back",
1121
+ onClick: t[0] || (t[0] = K((d) => e.$router.back(), ["stop"]))
1122
+ }, [
1123
+ t[1] || (t[1] = m("i", { class: "uiap-icon-big-back" }, null, -1)),
1124
+ m("span", Ut, C(a.title), 1)
1125
+ ])
1126
+ ]);
1127
+ }
1128
+ const Rt = /* @__PURE__ */ V(Pt, [["render", Lt], ["__scopeId", "data-v-fe274d55"]]), Ot = {
1129
+ name: "PageDataInfo",
1130
+ // eslint-disable-next-line vue/no-reserved-component-names -- View/Hide 为 @element-plus/icons-vue 图标组件,与应用壳全局注册名保持一致
1131
+ components: { DocumentCopy: ke, Edit: we, View: $e, Hide: Ze, ElButton: H, ElIcon: P, ElTooltip: ie, ElSwitch: Ge, ElTag: He },
1132
+ props: {
1133
+ isBack: {
1134
+ type: Boolean,
1135
+ default: !1
1136
+ },
1137
+ isEdit: {
1138
+ type: Boolean,
1139
+ default: !1
1140
+ },
1141
+ keys: {
1142
+ type: Object,
1143
+ default: () => {
1144
+ }
1145
+ },
1146
+ info: {
1147
+ type: Array,
1148
+ default: () => []
1149
+ },
1150
+ icon: {
1151
+ type: String,
1152
+ default: "Menu"
1153
+ },
1154
+ title: {
1155
+ type: String,
1156
+ default: ""
1157
+ },
1158
+ labelWidth: {
1159
+ type: String,
1160
+ default: "70"
1161
+ },
1162
+ labelAlign: {
1163
+ type: String,
1164
+ default: "right"
1165
+ },
1166
+ showColon: {
1167
+ type: Boolean,
1168
+ default: !0
1169
+ }
1170
+ },
1171
+ emits: ["accesskey", "edit", "editOffline", "changeRegistration", "popup", "editLabel", "editValue", "updateValue"],
1172
+ data() {
1173
+ return {
1174
+ showSensitiveData: {}
1175
+ };
1176
+ },
1177
+ computed: {
1178
+ omit() {
1179
+ return !1;
1180
+ },
1181
+ list() {
1182
+ const e = JSON.parse(JSON.stringify(this.info));
1183
+ return this.keys && Object.keys(this.keys).forEach((t) => {
1184
+ e.map((a) => {
1185
+ a.key == t && (a.value = this.keys[t] || "-", a.operation === "senstive" && (this.showSensitiveData[a.key] = !1));
1186
+ });
1187
+ }), e;
1188
+ }
1189
+ },
1190
+ methods: {
1191
+ formatData(e) {
1192
+ return e == "null" || e == null ? "-" : e || "-";
1193
+ },
1194
+ back() {
1195
+ this.isBack && this.$router.back();
1196
+ },
1197
+ Accesskey(e) {
1198
+ y(this, "accesskey", e);
1199
+ },
1200
+ edit() {
1201
+ y(this, "edit", this.keys);
1202
+ },
1203
+ popup() {
1204
+ y(this, "popup");
1205
+ },
1206
+ handleEditLabel(e) {
1207
+ y(this, "editLabel", e);
1208
+ },
1209
+ goProduct(e) {
1210
+ const t = e.currentTarget.dataset.id;
1211
+ this.$router.push({
1212
+ path: "/product/detail",
1213
+ query: {
1214
+ id: t
1215
+ }
1216
+ });
1217
+ },
1218
+ handleCopy() {
1219
+ const e = new Se(".auth-main-copy");
1220
+ e.on("success", () => {
1221
+ W({
1222
+ message: "复制成功",
1223
+ type: "success"
1224
+ }), e.destroy();
1225
+ });
1226
+ },
1227
+ editOffline(e) {
1228
+ y(this, "editOffline", e);
1229
+ },
1230
+ changeRegistration(e) {
1231
+ y(this, "changeRegistration", e);
1232
+ },
1233
+ handleMouseDown(e) {
1234
+ this.showSensitiveData[e] = !0;
1235
+ },
1236
+ handleMouseUp(e) {
1237
+ this.showSensitiveData[e] = !1;
1238
+ },
1239
+ editValue() {
1240
+ this.$emit("editValue");
1241
+ },
1242
+ updateValue() {
1243
+ this.$emit("updateValue");
1244
+ }
1245
+ }
1246
+ }, Ft = { class: "page_data_info" }, Wt = { class: "title" }, Ht = {
1247
+ key: 0,
1248
+ class: "info_edit_btn"
1249
+ }, Gt = { class: "info_list" }, jt = {
1250
+ key: 0,
1251
+ class: "info_item"
1252
+ }, Yt = {
1253
+ key: 0,
1254
+ class: "value"
1255
+ }, Kt = { key: 0 }, Jt = { style: { display: "flex", "align-items": "center" } }, qt = { key: 1 }, Qt = { style: { display: "flex", "align-items": "center" } }, Xt = { key: 2 }, Zt = { key: 0 }, $t = { key: 1 }, ea = { key: 0 }, ta = { key: 1 }, aa = { key: 6 }, ia = ["data-id"], na = { key: 9 }, sa = {
1256
+ key: 1,
1257
+ class: "value"
1258
+ }, oa = {
1259
+ key: 2,
1260
+ class: "labelList_value"
1261
+ }, la = { class: "value labelList_value" }, ra = { class: "labelList_value" };
1262
+ function da(e, t, a, i, s, n) {
1263
+ const d = g("el-button"), f = g("DocumentCopy"), p = g("el-icon"), b = g("el-tooltip"), S = g("View"), A = g("Hide"), D = g("Edit"), w = g("el-switch"), v = g("el-tag");
1264
+ return o(), r("div", Ft, [
1265
+ I(e.$slots, "back", {}, void 0, !0),
1266
+ I(e.$slots, "info_title", {}, () => [
1267
+ m("div", Wt, [
1268
+ m("i", {
1269
+ class: M(a.icon),
1270
+ onClick: t[0] || (t[0] = (...l) => n.back && n.back(...l))
1271
+ }, null, 2),
1272
+ E(" " + C(a.title) + " ", 1),
1273
+ a.isEdit ? (o(), r("div", Ht, [
1274
+ c(d, {
1275
+ text: "",
1276
+ type: "primary",
1277
+ icon: "Edit",
1278
+ onClick: n.edit
1279
+ }, {
1280
+ default: u(() => [...t[6] || (t[6] = [
1281
+ E("编辑 ", -1)
1282
+ ])]),
1283
+ _: 1
1284
+ }, 8, ["onClick"])
1285
+ ])) : h("", !0)
1286
+ ])
1287
+ ], !0),
1288
+ m("div", Gt, [
1289
+ (o(!0), r(z, null, O(n.list, (l, xe) => (o(), r(z, { key: xe }, [
1290
+ l.hidden ? h("", !0) : (o(), r("div", jt, [
1291
+ m("span", {
1292
+ class: "label",
1293
+ style: U({ width: a.labelWidth + "px", "text-align": a.labelAlign })
1294
+ }, C(l.label) + C(a.showColon ? ":" : ""), 5),
1295
+ l.type != "Accesskey" && l.key != "labelList" ? (o(), r("div", Yt, [
1296
+ l.operation == "copy" && l.value ? (o(), r("span", Kt, [
1297
+ m("div", Jt, [
1298
+ E(C(l.value != "-" ? l.value.substring(0, 2) + "****" + l.value.substring(l.value.length - 2, l.value.length) : "-") + " ", 1),
1299
+ l.key == "device" ? I(e.$slots, "check", {}, void 0, !0, 0) : h("", !0),
1300
+ l.operation == "copy" ? (o(), k(p, {
1301
+ key: 1,
1302
+ class: "copy auth-main-copy",
1303
+ "data-clipboard-text": l.value || "Secret信息为空",
1304
+ onClick: n.handleCopy
1305
+ }, {
1306
+ default: u(() => [
1307
+ c(f)
1308
+ ]),
1309
+ _: 1
1310
+ }, 8, ["data-clipboard-text", "onClick"])) : h("", !0)
1311
+ ])
1312
+ ])) : h("", !0),
1313
+ l.operation == "copyAll" && l.value ? (o(), r("span", qt, [
1314
+ m("div", Qt, [
1315
+ c(b, {
1316
+ content: l.value,
1317
+ placement: "top",
1318
+ effect: "light",
1319
+ disabled: l.value == "-"
1320
+ }, {
1321
+ default: u(() => [
1322
+ m("span", null, C(l.value), 1)
1323
+ ]),
1324
+ _: 2
1325
+ }, 1032, ["content", "disabled"]),
1326
+ l.value != "-" ? (o(), k(p, {
1327
+ key: 0,
1328
+ class: "copy auth-main-copy",
1329
+ "data-clipboard-text": l.value,
1330
+ onClick: n.handleCopy
1331
+ }, {
1332
+ default: u(() => [
1333
+ c(f)
1334
+ ]),
1335
+ _: 1
1336
+ }, 8, ["data-clipboard-text", "onClick"])) : h("", !0)
1337
+ ])
1338
+ ])) : h("", !0),
1339
+ l.operation == "senstive" && l.value ? (o(), r("span", Xt, [
1340
+ m("div", null, [
1341
+ s.showSensitiveData[l.key] ? (o(), r("div", $t, [
1342
+ c(b, {
1343
+ content: l.value,
1344
+ placement: "top",
1345
+ effect: "light"
1346
+ }, {
1347
+ default: u(() => [
1348
+ n.omit ? (o(), r("span", ea, [
1349
+ E(C(l.value.substring(0, 15) + "...") + " ", 1),
1350
+ c(p, {
1351
+ style: { "margin-left": "10px", cursor: "pointer" },
1352
+ onClick: (N) => n.handleMouseUp(l.key)
1353
+ }, {
1354
+ default: u(() => [
1355
+ c(A)
1356
+ ]),
1357
+ _: 1
1358
+ }, 8, ["onClick"])
1359
+ ])) : (o(), r("span", ta, [
1360
+ E(C(l.value) + " ", 1),
1361
+ c(p, {
1362
+ style: { "margin-left": "10px", cursor: "pointer" },
1363
+ onClick: (N) => n.handleMouseUp(l.key)
1364
+ }, {
1365
+ default: u(() => [
1366
+ c(A)
1367
+ ]),
1368
+ _: 1
1369
+ }, 8, ["onClick"])
1370
+ ]))
1371
+ ]),
1372
+ _: 2
1373
+ }, 1032, ["content"])
1374
+ ])) : (o(), r("div", Zt, [
1375
+ m("span", null, C(l.value.substring(0, 0) + "********" + l.value.substring(
1376
+ l.value.length - 0,
1377
+ l.value.length
1378
+ )), 1),
1379
+ c(p, {
1380
+ style: { "margin-left": "10px", cursor: "pointer" },
1381
+ onClick: (N) => n.handleMouseDown(l.key)
1382
+ }, {
1383
+ default: u(() => [
1384
+ c(S)
1385
+ ]),
1386
+ _: 1
1387
+ }, 8, ["onClick"])
1388
+ ]))
1389
+ ])
1390
+ ])) : h("", !0),
1391
+ !l.type && l.operation != "copy" && l.operation != "copyAll" && l.operation != "isGateway" && l.operation != "senstive" ? (o(), k(b, {
1392
+ key: 3,
1393
+ content: l.value,
1394
+ placement: "top",
1395
+ effect: "light"
1396
+ }, {
1397
+ default: u(() => [
1398
+ m("span", null, C(n.formatData(l.value)), 1)
1399
+ ]),
1400
+ _: 2
1401
+ }, 1032, ["content"])) : h("", !0),
1402
+ l.key == "device" ? I(e.$slots, "check", {}, void 0, !0, 4) : h("", !0),
1403
+ l.editable ? (o(), k(p, {
1404
+ key: 5,
1405
+ class: "label-edit-icon",
1406
+ onClick: (N) => n.handleEditLabel(l.key)
1407
+ }, {
1408
+ default: u(() => [
1409
+ c(D)
1410
+ ]),
1411
+ _: 1
1412
+ }, 8, ["onClick"])) : h("", !0),
1413
+ l.type == "offline" ? (o(), r("div", aa, [
1414
+ c(b, {
1415
+ content: l.value,
1416
+ placement: "top",
1417
+ effect: "light"
1418
+ }, {
1419
+ default: u(() => [
1420
+ m("span", null, C(n.formatData(l.value)), 1)
1421
+ ]),
1422
+ _: 2
1423
+ }, 1032, ["content"]),
1424
+ l.value == "-" ? (o(), k(p, {
1425
+ key: 0,
1426
+ style: { color: "#0077fd", cursor: "pointer", "margin-left": "10px" },
1427
+ onClick: (N) => n.editOffline(l)
1428
+ }, {
1429
+ default: u(() => [
1430
+ c(D)
1431
+ ]),
1432
+ _: 1
1433
+ }, 8, ["onClick"])) : h("", !0)
1434
+ ])) : h("", !0),
1435
+ l.type && l.type != "receivers" && l.type != "offline" ? (o(), r("span", {
1436
+ key: 7,
1437
+ class: "link",
1438
+ "data-id": l.id,
1439
+ onClick: t[1] || (t[1] = (...N) => n.goProduct && n.goProduct(...N))
1440
+ }, C(n.formatData(l.value)), 9, ia)) : h("", !0),
1441
+ l.type == "receivers" ? (o(), r("span", {
1442
+ key: 8,
1443
+ style: { color: "#0077fd", cursor: "pointer" },
1444
+ onClick: t[2] || (t[2] = (...N) => n.popup && n.popup(...N))
1445
+ }, " 查看 ")) : h("", !0),
1446
+ l.operation == "isGateway" ? (o(), r("span", na, [
1447
+ c(w, {
1448
+ modelValue: l.value,
1449
+ "onUpdate:modelValue": (N) => l.value = N,
1450
+ "active-color": "#13ce66",
1451
+ "inactive-color": "#ff4949",
1452
+ "active-value": "0",
1453
+ "inactive-value": "1",
1454
+ onChange: (N) => n.changeRegistration(l.value)
1455
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "onChange"])
1456
+ ])) : h("", !0)
1457
+ ])) : h("", !0),
1458
+ l.type == "Accesskey" ? (o(), r("div", sa, [
1459
+ c(d, {
1460
+ text: "",
1461
+ type: "primary",
1462
+ onClick: t[3] || (t[3] = (N) => n.Accesskey("view-app-key"))
1463
+ }, {
1464
+ default: u(() => [...t[7] || (t[7] = [
1465
+ E("查看 ", -1)
1466
+ ])]),
1467
+ _: 1
1468
+ }),
1469
+ c(d, {
1470
+ text: "",
1471
+ type: "primary",
1472
+ onClick: t[4] || (t[4] = (N) => n.Accesskey("reset-app-key"))
1473
+ }, {
1474
+ default: u(() => [...t[8] || (t[8] = [
1475
+ E("重置 ", -1)
1476
+ ])]),
1477
+ _: 1
1478
+ })
1479
+ ])) : h("", !0),
1480
+ l.key == "labelList" ? (o(), r("div", oa, [
1481
+ m("div", la, [
1482
+ (o(!0), r(z, null, O(l.value, (N, j) => (o(), r("div", {
1483
+ key: j,
1484
+ style: { display: "inline" }
1485
+ }, [
1486
+ j < 3 ? (o(), k(v, {
1487
+ key: 0,
1488
+ effect: "dark",
1489
+ style: { "margin-right": "8px" }
1490
+ }, {
1491
+ default: u(() => [
1492
+ E(C(N), 1)
1493
+ ]),
1494
+ _: 2
1495
+ }, 1024)) : h("", !0)
1496
+ ]))), 128))
1497
+ ]),
1498
+ m("div", ra, [
1499
+ l.value.length > 3 ? (o(), k(b, {
1500
+ key: 0,
1501
+ placement: "top",
1502
+ effect: "light"
1503
+ }, {
1504
+ content: u(() => [
1505
+ (o(!0), r(z, null, O(l.value, (N, j) => (o(), r("div", {
1506
+ key: j,
1507
+ style: { display: "inline" }
1508
+ }, [
1509
+ c(v, {
1510
+ effect: "dark",
1511
+ style: { "margin-right": "8px" }
1512
+ }, {
1513
+ default: u(() => [
1514
+ E(C(N), 1)
1515
+ ]),
1516
+ _: 2
1517
+ }, 1024)
1518
+ ]))), 128))
1519
+ ]),
1520
+ default: u(() => [
1521
+ t[9] || (t[9] = m("div", null, "...", -1))
1522
+ ]),
1523
+ _: 2
1524
+ }, 1024)) : h("", !0),
1525
+ c(p, {
1526
+ style: { color: "#0077fd", cursor: "pointer", "margin-left": "2px" },
1527
+ onClick: t[5] || (t[5] = (N) => n.editValue())
1528
+ }, {
1529
+ default: u(() => [
1530
+ c(D)
1531
+ ]),
1532
+ _: 1
1533
+ })
1534
+ ])
1535
+ ])) : h("", !0)
1536
+ ]))
1537
+ ], 64))), 128))
1538
+ ])
1539
+ ]);
1540
+ }
1541
+ const ca = /* @__PURE__ */ V(Ot, [["render", da], ["__scopeId", "data-v-5b2a3c3a"]]), ua = "data:image/png;base64,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", ha = {
1542
+ name: "PageDesc",
1543
+ props: {
1544
+ title: {
1545
+ // 页面标题
1546
+ type: String,
1547
+ default: ""
1548
+ },
1549
+ docUrl: {
1550
+ // 文档跳转地址
1551
+ type: String,
1552
+ default: "/"
1553
+ },
1554
+ showDoc: {
1555
+ // 是否显示查看文档字样
1556
+ type: Boolean,
1557
+ default: !1
1558
+ },
1559
+ desc: {
1560
+ // 描述
1561
+ type: String,
1562
+ default: ""
1563
+ },
1564
+ img: {
1565
+ // 右侧图片
1566
+ type: String,
1567
+ default: ua
1568
+ }
1569
+ },
1570
+ data() {
1571
+ return {
1572
+ showDesc: !0
1573
+ };
1574
+ }
1575
+ }, pa = { class: "page_desc" }, fa = { class: "page_title" }, ma = { class: "title" }, ga = { class: "desc" }, ya = { class: "page_bg" }, ba = ["src"];
1576
+ function va(e, t, a, i, s, n) {
1577
+ return o(), r("div", pa, [
1578
+ m("div", fa, [
1579
+ t[1] || (t[1] = m("i", { class: "el-icon-uiap-page-layers" }, null, -1)),
1580
+ m("span", ma, C(a.title || e.$route.meta.title), 1)
1581
+ ]),
1582
+ m("p", ga, [
1583
+ E(C(a.desc), 1),
1584
+ a.showDoc ? (o(), r("span", {
1585
+ key: 0,
1586
+ class: "doc",
1587
+ onClick: t[0] || (t[0] = (d) => e.$router.push({ path: a.docUrl }))
1588
+ }, "查看文档")) : h("", !0)
1589
+ ]),
1590
+ m("div", ya, [
1591
+ m("img", {
1592
+ src: a.img,
1593
+ class: "img"
1594
+ }, null, 8, ba)
1595
+ ])
1596
+ ]);
1597
+ }
1598
+ const wa = /* @__PURE__ */ V(ha, [["render", va], ["__scopeId", "data-v-e4b5d343"]]), ka = {
1599
+ // 原名 PageDataInfo,与 PageDataInfo 组件重名;为避免全局注册冲突更名为 PageMoreDataInfo
1600
+ name: "PageMoreDataInfo",
1601
+ components: {
1602
+ DocumentCopy: ke,
1603
+ Edit: we,
1604
+ ElButton: H,
1605
+ ElIcon: P,
1606
+ ElTooltip: ie
1607
+ },
1608
+ props: {
1609
+ isBack: {
1610
+ type: Boolean,
1611
+ default: !1
1612
+ },
1613
+ isEdit: {
1614
+ type: Boolean,
1615
+ default: !1
1616
+ },
1617
+ keys: {
1618
+ type: Object,
1619
+ default: () => ({})
1620
+ },
1621
+ info: {
1622
+ type: Object,
1623
+ default: () => ({})
1624
+ },
1625
+ icon: {
1626
+ type: String,
1627
+ default: "el-icon-uiap-page-layers"
1628
+ },
1629
+ title: {
1630
+ type: String,
1631
+ default: "行业专题信息"
1632
+ },
1633
+ labelWidth: {
1634
+ type: String,
1635
+ default: "70"
1636
+ },
1637
+ labelAlign: {
1638
+ type: String,
1639
+ default: "right"
1640
+ },
1641
+ showColon: {
1642
+ type: Boolean,
1643
+ default: !0
1644
+ },
1645
+ isShow: {
1646
+ type: Boolean,
1647
+ default: !1
1648
+ },
1649
+ sectionTitles: {
1650
+ type: Object,
1651
+ default: () => ({
1652
+ robotInfo: "机器人参数",
1653
+ basicInfo: "基本信息",
1654
+ managementInfo: "管理信息",
1655
+ positionInfo: "位置信息",
1656
+ networkInfo: "网络信息"
1657
+ })
1658
+ }
1659
+ },
1660
+ data() {
1661
+ return {
1662
+ isShowMore: !1
1663
+ };
1664
+ },
1665
+ computed: {
1666
+ list() {
1667
+ const e = JSON.parse(JSON.stringify(this.info || {}));
1668
+ return this.keys && Object.keys(this.keys).forEach((t) => {
1669
+ Object.keys(e).forEach((a) => {
1670
+ var i;
1671
+ (i = e[a]) == null || i.forEach((s) => {
1672
+ s.key == t && (s.value = this.keys[t] || "-");
1673
+ });
1674
+ });
1675
+ }), e;
1676
+ },
1677
+ infoSections() {
1678
+ return Object.keys(this.list).filter((e) => this.list[e] && Array.isArray(this.list[e]) && this.list[e].length > 0).map((e) => ({
1679
+ key: e,
1680
+ title: this.sectionTitles[e] || e,
1681
+ data: this.list[e]
1682
+ }));
1683
+ }
1684
+ },
1685
+ watch: {
1686
+ isShow: {
1687
+ handler() {
1688
+ this.isShowMore = this.isShow;
1689
+ },
1690
+ immediate: !0,
1691
+ deep: !0
1692
+ }
1693
+ },
1694
+ methods: {
1695
+ formatSecretValue(e) {
1696
+ return e === "-" ? "-" : e.substring(0, 2) + "****" + e.substring(e.length - 2, e.length);
1697
+ },
1698
+ formatData(e) {
1699
+ return e == "null" || e == null ? "-" : e.length > 20 ? e.substring(0, 20) + "..." : e || "-";
1700
+ },
1701
+ back() {
1702
+ this.isBack && this.$router.back();
1703
+ },
1704
+ Accesskey(e) {
1705
+ y(this, "accesskey", e);
1706
+ },
1707
+ edit() {
1708
+ y(this, "edit", this.keys);
1709
+ },
1710
+ popup() {
1711
+ y(this, "popup");
1712
+ },
1713
+ handleEditLabel(e) {
1714
+ y(this, "editLabel", e);
1715
+ },
1716
+ goProduct(e) {
1717
+ const t = e.currentTarget.dataset.id;
1718
+ this.$router.push({
1719
+ path: "/iot/project/product/detail",
1720
+ query: { id: t }
1721
+ });
1722
+ },
1723
+ handleCopy(e) {
1724
+ const t = new Se(e.currentTarget);
1725
+ t.on("success", () => {
1726
+ W({
1727
+ message: "复制成功",
1728
+ type: "success"
1729
+ }), t.destroy();
1730
+ }), t.on("error", () => {
1731
+ W({
1732
+ message: "复制失败,请手动复制",
1733
+ type: "error"
1734
+ }), t.destroy();
1735
+ }), t.onClick(e);
1736
+ },
1737
+ changShow() {
1738
+ this.isShowMore = !this.isShowMore;
1739
+ },
1740
+ updateValue() {
1741
+ this.$emit("updateValue");
1742
+ },
1743
+ generateAndCopy(e) {
1744
+ y(this, "generateAndCopy", e);
1745
+ }
1746
+ }
1747
+ }, Ca = { class: "page_data_info" }, Sa = { class: "title" }, Aa = {
1748
+ key: 0,
1749
+ class: "info_edit_btn"
1750
+ }, Da = { class: "msg_title" }, Ea = { class: "info_list" }, Va = {
1751
+ key: 0,
1752
+ class: "info_item"
1753
+ }, Na = {
1754
+ key: 0,
1755
+ class: "value"
1756
+ }, Ia = { key: 0 }, Ba = { style: { display: "flex", "align-items": "center" } }, za = ["data-id"], Ta = {
1757
+ key: 1,
1758
+ class: "value"
1759
+ }, _a = {
1760
+ key: 2,
1761
+ class: "value"
1762
+ }, xa = { style: { display: "flex", "align-items": "center" } }, Pa = {
1763
+ key: 0,
1764
+ class: "bottom_operate"
1765
+ };
1766
+ function Ma(e, t, a, i, s, n) {
1767
+ const d = g("el-button"), f = g("DocumentCopy"), p = g("el-icon"), b = g("el-tooltip"), S = g("Edit");
1768
+ return o(), r("div", Ca, [
1769
+ I(e.$slots, "back", {}, void 0, !0),
1770
+ I(e.$slots, "info_title", {}, () => [
1771
+ m("div", Sa, [
1772
+ m("i", {
1773
+ class: M(a.icon),
1774
+ onClick: t[0] || (t[0] = (...A) => n.back && n.back(...A))
1775
+ }, null, 2),
1776
+ E(" " + C(a.title) + " ", 1),
1777
+ a.isEdit ? (o(), r("div", Aa, [
1778
+ c(d, {
1779
+ text: "",
1780
+ type: "primary",
1781
+ icon: "Edit",
1782
+ onClick: n.edit
1783
+ }, {
1784
+ default: u(() => [...t[6] || (t[6] = [
1785
+ E("编辑", -1)
1786
+ ])]),
1787
+ _: 1
1788
+ }, 8, ["onClick"])
1789
+ ])) : h("", !0)
1790
+ ])
1791
+ ], !0),
1792
+ (o(!0), r(z, null, O(n.infoSections, (A, D) => (o(), r("div", { key: D }, [
1793
+ D === 0 || s.isShowMore ? (o(), r(z, { key: 0 }, [
1794
+ m("div", Da, [
1795
+ t[7] || (t[7] = m("i", { class: "el-icon-uiap-page-layers" }, null, -1)),
1796
+ E(" " + C(A.title), 1)
1797
+ ]),
1798
+ m("div", Ea, [
1799
+ (o(!0), r(z, null, O(A.data, (w, v) => (o(), r(z, { key: v }, [
1800
+ w.hidden ? h("", !0) : (o(), r("div", Va, [
1801
+ m("span", {
1802
+ class: "label",
1803
+ style: U({ width: a.labelWidth + "px", "text-align": a.labelAlign })
1804
+ }, C(w.label) + C(a.showColon ? ":" : ""), 5),
1805
+ w.type != "Accesskey" && w.type != "GenerateAndCopy" ? (o(), r("div", Na, [
1806
+ w.operation == "copy" && w.value ? (o(), r("span", Ia, [
1807
+ m("div", Ba, [
1808
+ E(C(n.formatSecretValue(w.value)) + " ", 1),
1809
+ w.key == "device" ? I(e.$slots, "check", {}, void 0, !0, 0) : h("", !0),
1810
+ w.operation == "copy" ? (o(), k(p, {
1811
+ key: 1,
1812
+ class: "copy auth-main-copy",
1813
+ "data-clipboard-text": w.value || "Secret信息为空",
1814
+ onClick: n.handleCopy
1815
+ }, {
1816
+ default: u(() => [
1817
+ c(f)
1818
+ ]),
1819
+ _: 1
1820
+ }, 8, ["data-clipboard-text", "onClick"])) : h("", !0)
1821
+ ])
1822
+ ])) : h("", !0),
1823
+ !w.type && w.operation != "copy" ? (o(), k(b, {
1824
+ key: 1,
1825
+ content: w.value,
1826
+ placement: "top",
1827
+ effect: "light"
1828
+ }, {
1829
+ default: u(() => [
1830
+ m("span", null, C(n.formatData(w.value)), 1)
1831
+ ]),
1832
+ _: 2
1833
+ }, 1032, ["content"])) : h("", !0),
1834
+ w.type && w.type != "receivers" ? (o(), r("span", {
1835
+ key: 2,
1836
+ class: "link",
1837
+ "data-id": w.id,
1838
+ onClick: t[1] || (t[1] = (...l) => n.goProduct && n.goProduct(...l))
1839
+ }, C(n.formatData(w.value)), 9, za)) : h("", !0),
1840
+ w.type == "receivers" ? (o(), r("span", {
1841
+ key: 3,
1842
+ style: { color: "#0077fd", cursor: "pointer" },
1843
+ onClick: t[2] || (t[2] = (...l) => n.popup && n.popup(...l))
1844
+ }, "查看")) : h("", !0),
1845
+ w.editable ? (o(), k(p, {
1846
+ key: 4,
1847
+ class: "label-edit-icon",
1848
+ onClick: (l) => n.handleEditLabel(w.key)
1849
+ }, {
1850
+ default: u(() => [
1851
+ c(S)
1852
+ ]),
1853
+ _: 1
1854
+ }, 8, ["onClick"])) : h("", !0)
1855
+ ])) : h("", !0),
1856
+ w.type == "Accesskey" ? (o(), r("div", Ta, [
1857
+ c(d, {
1858
+ type: "primary",
1859
+ onClick: t[3] || (t[3] = (l) => n.Accesskey("view-app-key"))
1860
+ }, {
1861
+ default: u(() => [...t[8] || (t[8] = [
1862
+ E("查看", -1)
1863
+ ])]),
1864
+ _: 1
1865
+ }),
1866
+ c(d, {
1867
+ type: "primary",
1868
+ onClick: t[4] || (t[4] = (l) => n.Accesskey("reset-app-key"))
1869
+ }, {
1870
+ default: u(() => [...t[9] || (t[9] = [
1871
+ E("重置", -1)
1872
+ ])]),
1873
+ _: 1
1874
+ })
1875
+ ])) : h("", !0),
1876
+ w.type == "GenerateAndCopy" ? (o(), r("div", _a, [
1877
+ m("div", xa, [
1878
+ t[10] || (t[10] = E(" ******** ", -1)),
1879
+ c(p, {
1880
+ class: "copy auth-main-copy",
1881
+ onClick: (l) => n.generateAndCopy(w)
1882
+ }, {
1883
+ default: u(() => [
1884
+ c(f)
1885
+ ]),
1886
+ _: 1
1887
+ }, 8, ["onClick"])
1888
+ ])
1889
+ ])) : h("", !0)
1890
+ ]))
1891
+ ], 64))), 128))
1892
+ ])
1893
+ ], 64)) : h("", !0)
1894
+ ]))), 128)),
1895
+ n.infoSections.length > 1 ? (o(), r("div", Pa, [
1896
+ t[11] || (t[11] = m("div", { class: "divider" }, null, -1)),
1897
+ m("div", {
1898
+ class: "operate_btn",
1899
+ onClick: t[5] || (t[5] = (...A) => n.changShow && n.changShow(...A))
1900
+ }, C(s.isShowMore ? "收起" : "查看更多"), 1)
1901
+ ])) : h("", !0)
1902
+ ]);
1903
+ }
1904
+ const Ua = /* @__PURE__ */ V(ka, [["render", Ma], ["__scopeId", "data-v-9c61202b"]]);
1905
+ function La(e) {
1906
+ return /^(https?:|mailto:|tel:)/.test(e);
1907
+ }
1908
+ function on(e) {
1909
+ return /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,}$/.test(e);
1910
+ }
1911
+ function ln(e) {
1912
+ return /^(1[3-9][0-9]|15[0-9]|17[0-9]|18[0-9]|14[57]|16[0-9]|19[0-9])[0-9]{8}$/.test(e);
1913
+ }
1914
+ function rn(e, t = 32) {
1915
+ return e.split("").length <= t;
1916
+ }
1917
+ function dn(e) {
1918
+ return /[-!#$%^&*()_+|~=`{}\[\]:";'<>@?,./ 《》()【】¥|。,?!、]/.test(e);
1919
+ }
1920
+ function cn(e) {
1921
+ return /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/.test(e);
1922
+ }
1923
+ function un(e) {
1924
+ const t = /[0-9a-zA-Z\u4e00-\u9fa5]([\u4e00-\u9fa5-_a-zA-Z0-9]{0,50})$/;
1925
+ return e && e.length > 50 ? !1 : t.test(e);
1926
+ }
1927
+ function hn(e) {
1928
+ const t = /[0-9a-zA-Z\u4e00-\u9fa5]([\u4e00-\u9fa5-_a-zA-Z0-9]{0,20})$/;
1929
+ return e && e.length > 20 ? !1 : t.test(e);
1930
+ }
1931
+ function pn(e) {
1932
+ const t = (e + "").split("");
1933
+ return t.length > 1 ? t[0] != "0" : parseInt(e, 10) == e;
1934
+ }
1935
+ const Ra = {
1936
+ name: "SvgIcon",
1937
+ props: {
1938
+ iconClass: {
1939
+ type: String,
1940
+ required: !0
1941
+ },
1942
+ className: {
1943
+ type: String,
1944
+ default: ""
1945
+ }
1946
+ },
1947
+ computed: {
1948
+ isExternal() {
1949
+ return La(this.iconClass);
1950
+ },
1951
+ iconName() {
1952
+ return `#icon-${this.iconClass}`;
1953
+ },
1954
+ svgClass() {
1955
+ return this.className ? "svg-icon " + this.className : "svg-icon";
1956
+ },
1957
+ styleExternalIcon() {
1958
+ return {
1959
+ mask: `url(${this.iconClass}) no-repeat 50% 50%`,
1960
+ "-webkit-mask": `url(${this.iconClass}) no-repeat 50% 50%`
1961
+ };
1962
+ }
1963
+ }
1964
+ }, Oa = ["xlink:href"];
1965
+ function Fa(e, t, a, i, s, n) {
1966
+ return n.isExternal ? (o(), r("div", {
1967
+ key: 0,
1968
+ style: U(n.styleExternalIcon),
1969
+ class: "svg-external-icon svg-icon"
1970
+ }, null, 4)) : (o(), r("svg", {
1971
+ key: 1,
1972
+ class: M(n.svgClass),
1973
+ "aria-hidden": "true"
1974
+ }, [
1975
+ m("use", { "xlink:href": n.iconName }, null, 8, Oa)
1976
+ ], 2));
1977
+ }
1978
+ const $ = /* @__PURE__ */ V(Ra, [["render", Fa], ["__scopeId", "data-v-78eb2bab"]]);
1979
+ let le = [];
1980
+ function fn(e) {
1981
+ le = e;
1982
+ }
1983
+ function Wa() {
1984
+ return le;
1985
+ }
1986
+ function Ha(e) {
1987
+ return le.includes(e);
1988
+ }
1989
+ function Ga() {
1990
+ const e = Q(() => Wa()), t = Q(() => Object.keys(qe)), a = (s) => {
1991
+ switch (s) {
1992
+ case "svg":
1993
+ return e.value;
1994
+ case "ep":
1995
+ return t.value;
1996
+ case "all":
1997
+ default:
1998
+ return [...e.value, ...t.value];
1999
+ }
2000
+ };
2001
+ return {
2002
+ svgIcons: e,
2003
+ elementPlusIcons: t,
2004
+ getIconsByType: a,
2005
+ filterIcons: (s, n = "all") => {
2006
+ const d = a(n);
2007
+ if (!s)
2008
+ return d;
2009
+ const f = s.toLowerCase();
2010
+ return d.filter((p) => p.toLowerCase().includes(f));
2011
+ }
2012
+ };
2013
+ }
2014
+ const ja = { class: "icon-select" }, Ya = { class: "trigger-content" }, Ka = {
2015
+ key: 0,
2016
+ class: "trigger-icon"
2017
+ }, Ja = {
2018
+ key: 1,
2019
+ class: "trigger-text"
2020
+ }, qa = {
2021
+ key: 2,
2022
+ class: "trigger-placeholder"
2023
+ }, Qa = { class: "icon-select-dropdown" }, Xa = { class: "dropdown-header" }, Za = { class: "dropdown-count" }, $a = { class: "dropdown-search" }, ei = { class: "dropdown-grid" }, ti = ["onClick"], ai = { class: "item-icon" }, ii = { class: "item-name" }, ni = {
2024
+ key: 0,
2025
+ class: "dropdown-empty"
2026
+ }, si = /* @__PURE__ */ G({
2027
+ __name: "index",
2028
+ props: {
2029
+ modelValue: {
2030
+ type: String,
2031
+ default: ""
2032
+ },
2033
+ iconType: {
2034
+ type: String,
2035
+ default: "all",
2036
+ validator: (e) => ["svg", "ep", "all"].includes(e)
2037
+ },
2038
+ placeholder: {
2039
+ type: String,
2040
+ default: "请选择图标"
2041
+ },
2042
+ disabled: {
2043
+ type: Boolean,
2044
+ default: !1
2045
+ }
2046
+ },
2047
+ emits: ["update:modelValue", "change"],
2048
+ setup(e, { emit: t }) {
2049
+ const a = e, i = t, { filterIcons: s } = Ga(), n = q(""), d = q(280), f = q(null), p = (D) => Ha(D), b = Q(() => {
2050
+ const D = {
2051
+ svg: "svg",
2052
+ ep: "ep",
2053
+ all: "all"
2054
+ };
2055
+ return s(n.value, D[a.iconType] || "all").map((v) => {
2056
+ const l = p(v);
2057
+ return {
2058
+ name: v,
2059
+ type: l ? "svg" : "ep"
2060
+ };
2061
+ });
2062
+ });
2063
+ de(() => a.iconType, () => {
2064
+ n.value = "";
2065
+ }), de(f, (D) => {
2066
+ D && Ke(() => {
2067
+ d.value = D.offsetWidth;
2068
+ });
2069
+ }), Je(() => {
2070
+ f.value && (d.value = f.value.offsetWidth);
2071
+ });
2072
+ const S = () => {
2073
+ }, A = (D) => {
2074
+ i("update:modelValue", D.name), i("change", D.name), n.value = "";
2075
+ };
2076
+ return (D, w) => (o(), r("div", ja, [
2077
+ c(B(je), {
2078
+ placement: "bottom-start",
2079
+ width: d.value,
2080
+ trigger: "click",
2081
+ "show-arrow": !1,
2082
+ offset: 4,
2083
+ teleported: !1,
2084
+ "hide-after": 0,
2085
+ class: "icon-select-popover"
2086
+ }, {
2087
+ reference: u(() => [
2088
+ m("div", {
2089
+ ref_key: "triggerRef",
2090
+ ref: f,
2091
+ class: M(["icon-select-trigger", { "is-disabled": e.disabled }])
2092
+ }, [
2093
+ m("div", Ya, [
2094
+ e.modelValue ? (o(), r("div", Ka, [
2095
+ p(e.modelValue) ? (o(), k($, {
2096
+ key: 0,
2097
+ "icon-class": e.modelValue,
2098
+ class: "icon-preview"
2099
+ }, null, 8, ["icon-class"])) : (o(), k(B(P), {
2100
+ key: 1,
2101
+ class: "icon-preview"
2102
+ }, {
2103
+ default: u(() => [
2104
+ (o(), k(ce(e.modelValue)))
2105
+ ]),
2106
+ _: 1
2107
+ }))
2108
+ ])) : h("", !0),
2109
+ e.modelValue ? (o(), r("span", Ja, C(e.modelValue), 1)) : (o(), r("span", qa, C(e.placeholder), 1))
2110
+ ]),
2111
+ c(B(P), { class: "trigger-arrow" }, {
2112
+ default: u(() => [
2113
+ c(B(tt))
2114
+ ]),
2115
+ _: 1
2116
+ })
2117
+ ], 2)
2118
+ ]),
2119
+ default: u(() => [
2120
+ m("div", Qa, [
2121
+ m("div", Xa, [
2122
+ w[1] || (w[1] = m("span", { class: "dropdown-title" }, "选择图标", -1)),
2123
+ m("span", Za, C(b.value.length) + " 个图标", 1)
2124
+ ]),
2125
+ m("div", $a, [
2126
+ c(B(Y), {
2127
+ modelValue: n.value,
2128
+ "onUpdate:modelValue": w[0] || (w[0] = (v) => n.value = v),
2129
+ placeholder: "搜索图标...",
2130
+ clearable: "",
2131
+ onInput: S
2132
+ }, {
2133
+ prefix: u(() => [
2134
+ c(B(P), { class: "search-icon" }, {
2135
+ default: u(() => [
2136
+ c(B(ve))
2137
+ ]),
2138
+ _: 1
2139
+ })
2140
+ ]),
2141
+ _: 1
2142
+ }, 8, ["modelValue"])
2143
+ ]),
2144
+ m("div", ei, [
2145
+ (o(!0), r(z, null, O(b.value, (v) => (o(), r("div", {
2146
+ key: v.name,
2147
+ class: M(["dropdown-item", { "is-selected": v.name === e.modelValue }]),
2148
+ onClick: (l) => A(v)
2149
+ }, [
2150
+ m("div", ai, [
2151
+ v.type === "svg" ? (o(), k($, {
2152
+ key: 0,
2153
+ "icon-class": v.name
2154
+ }, null, 8, ["icon-class"])) : (o(), k(B(P), { key: 1 }, {
2155
+ default: u(() => [
2156
+ (o(), k(ce(v.name)))
2157
+ ]),
2158
+ _: 2
2159
+ }, 1024))
2160
+ ]),
2161
+ c(B(ie), {
2162
+ content: v.name,
2163
+ placement: "top",
2164
+ "show-after": 300
2165
+ }, {
2166
+ default: u(() => [
2167
+ m("span", ii, C(v.name), 1)
2168
+ ]),
2169
+ _: 2
2170
+ }, 1032, ["content"])
2171
+ ], 10, ti))), 128)),
2172
+ b.value.length === 0 ? (o(), r("div", ni, [
2173
+ c(B(P), { class: "empty-icon" }, {
2174
+ default: u(() => [
2175
+ c(B(et))
2176
+ ]),
2177
+ _: 1
2178
+ }),
2179
+ w[2] || (w[2] = m("span", null, "未找到匹配图标", -1))
2180
+ ])) : h("", !0)
2181
+ ])
2182
+ ])
2183
+ ]),
2184
+ _: 1
2185
+ }, 8, ["width"])
2186
+ ]));
2187
+ }
2188
+ }), oi = /* @__PURE__ */ V(si, [["__scopeId", "data-v-9b123afe"]]);
2189
+ function li(e, t, a) {
2190
+ let i, s, n, d, f;
2191
+ const p = function() {
2192
+ const b = +/* @__PURE__ */ new Date() - d;
2193
+ b < t && b > 0 ? i = setTimeout(p, t - b) : (i = null, a || (f = e.apply(n, s), i || (n = s = null)));
2194
+ };
2195
+ return function(...b) {
2196
+ n = this, d = +/* @__PURE__ */ new Date();
2197
+ const S = a && !i;
2198
+ return i || (i = setTimeout(p, t)), S && (f = e.apply(n, b), n = null), f;
2199
+ };
2200
+ }
2201
+ const re = G({
2202
+ data() {
2203
+ return {
2204
+ $_sidebarElm: null,
2205
+ $_resizeHandler: null
2206
+ };
2207
+ },
2208
+ mounted() {
2209
+ this.initListener();
2210
+ },
2211
+ activated() {
2212
+ this.$_resizeHandler || this.initListener(), this.resize();
2213
+ },
2214
+ beforeUnmount() {
2215
+ this.destroyListener();
2216
+ },
2217
+ deactivated() {
2218
+ this.destroyListener();
2219
+ },
2220
+ methods: {
2221
+ // use $_ for mixins properties
2222
+ // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
2223
+ $_sidebarResizeHandler(e) {
2224
+ e.propertyName === "width" && this.$_resizeHandler();
2225
+ },
2226
+ initListener() {
2227
+ this.$_resizeHandler = li(() => {
2228
+ this.resize();
2229
+ }, 100), window.addEventListener("resize", this.$_resizeHandler), this.$_sidebarElm = document.getElementsByClassName("sidebar-container")[0], this.$_sidebarElm && this.$_sidebarElm.addEventListener(
2230
+ "transitionend",
2231
+ this.$_sidebarResizeHandler
2232
+ );
2233
+ },
2234
+ destroyListener() {
2235
+ window.removeEventListener("resize", this.$_resizeHandler), this.$_resizeHandler = null, this.$_sidebarElm && this.$_sidebarElm.removeEventListener(
2236
+ "transitionend",
2237
+ this.$_sidebarResizeHandler
2238
+ );
2239
+ },
2240
+ resize() {
2241
+ const { chart: e } = this;
2242
+ e && e.resize();
2243
+ }
2244
+ }
2245
+ }), ri = {
2246
+ mixins: [re],
2247
+ props: {
2248
+ className: {
2249
+ type: String,
2250
+ default: "chart"
2251
+ },
2252
+ id: {
2253
+ type: String,
2254
+ default: "chart"
2255
+ },
2256
+ width: {
2257
+ type: String,
2258
+ default: "200px"
2259
+ },
2260
+ height: {
2261
+ type: String,
2262
+ default: "200px"
2263
+ }
2264
+ },
2265
+ data() {
2266
+ return {
2267
+ chart: null
2268
+ };
2269
+ },
2270
+ mounted() {
2271
+ this.initChart();
2272
+ },
2273
+ beforeUnmount() {
2274
+ this.chart && (this.chart.dispose(), this.chart = null);
2275
+ },
2276
+ methods: {
2277
+ initChart() {
2278
+ this.chart = F.init(document.getElementById(this.id));
2279
+ const e = [], t = [], a = [];
2280
+ for (let i = 0; i < 50; i++)
2281
+ e.push(i), t.push((Math.sin(i / 5) * (i / 5 - 10) + i / 6) * 5), a.push((Math.sin(i / 5) * (i / 5 + 10) + i / 6) * 3);
2282
+ this.chart.setOption({
2283
+ backgroundColor: "#08263a",
2284
+ grid: {
2285
+ left: "5%",
2286
+ right: "5%"
2287
+ },
2288
+ xAxis: [
2289
+ {
2290
+ show: !1,
2291
+ data: e
2292
+ },
2293
+ {
2294
+ show: !1,
2295
+ data: e
2296
+ }
2297
+ ],
2298
+ visualMap: {
2299
+ show: !1,
2300
+ min: 0,
2301
+ max: 50,
2302
+ dimension: 0,
2303
+ inRange: {
2304
+ color: [
2305
+ "#4a657a",
2306
+ "#308e92",
2307
+ "#b1cfa5",
2308
+ "#f5d69f",
2309
+ "#f5898b",
2310
+ "#ef5055"
2311
+ ]
2312
+ }
2313
+ },
2314
+ yAxis: {
2315
+ axisLine: {
2316
+ show: !1
2317
+ },
2318
+ axisLabel: {
2319
+ textStyle: {
2320
+ color: "#4a657a"
2321
+ }
2322
+ },
2323
+ splitLine: {
2324
+ show: !0,
2325
+ lineStyle: {
2326
+ color: "#08263f"
2327
+ }
2328
+ },
2329
+ axisTick: {
2330
+ show: !1
2331
+ }
2332
+ },
2333
+ series: [
2334
+ {
2335
+ name: "back",
2336
+ type: "bar",
2337
+ data: a,
2338
+ z: 1,
2339
+ itemStyle: {
2340
+ normal: {
2341
+ opacity: 0.4,
2342
+ barBorderRadius: 5,
2343
+ shadowBlur: 3,
2344
+ shadowColor: "#111"
2345
+ }
2346
+ }
2347
+ },
2348
+ {
2349
+ name: "Simulate Shadow",
2350
+ type: "line",
2351
+ data: t,
2352
+ z: 2,
2353
+ showSymbol: !1,
2354
+ animationDelay: 0,
2355
+ animationEasing: "linear",
2356
+ animationDuration: 1200,
2357
+ lineStyle: {
2358
+ normal: {
2359
+ color: "transparent"
2360
+ }
2361
+ },
2362
+ areaStyle: {
2363
+ normal: {
2364
+ color: "#08263a",
2365
+ shadowBlur: 50,
2366
+ shadowColor: "#000"
2367
+ }
2368
+ }
2369
+ },
2370
+ {
2371
+ name: "front",
2372
+ type: "bar",
2373
+ data: t,
2374
+ xAxisIndex: 1,
2375
+ z: 3,
2376
+ itemStyle: {
2377
+ normal: {
2378
+ barBorderRadius: 5
2379
+ }
2380
+ }
2381
+ }
2382
+ ],
2383
+ animationEasing: "elasticOut",
2384
+ animationEasingUpdate: "elasticOut",
2385
+ animationDelay(i) {
2386
+ return i * 20;
2387
+ },
2388
+ animationDelayUpdate(i) {
2389
+ return i * 20;
2390
+ }
2391
+ });
2392
+ }
2393
+ }
2394
+ }, di = ["id"];
2395
+ function ci(e, t, a, i, s, n) {
2396
+ return o(), r("div", {
2397
+ id: a.id,
2398
+ class: M(a.className),
2399
+ style: U({ height: a.height, width: a.width })
2400
+ }, null, 14, di);
2401
+ }
2402
+ const ui = /* @__PURE__ */ V(ri, [["render", ci]]), hi = {
2403
+ mixins: [re],
2404
+ props: {
2405
+ className: {
2406
+ type: String,
2407
+ default: "chart"
2408
+ },
2409
+ id: {
2410
+ type: String,
2411
+ default: "chart"
2412
+ },
2413
+ width: {
2414
+ type: String,
2415
+ default: "200px"
2416
+ },
2417
+ height: {
2418
+ type: String,
2419
+ default: "200px"
2420
+ }
2421
+ },
2422
+ data() {
2423
+ return {
2424
+ chart: null
2425
+ };
2426
+ },
2427
+ mounted() {
2428
+ this.initChart();
2429
+ },
2430
+ beforeUnmount() {
2431
+ this.chart && (this.chart.dispose(), this.chart = null);
2432
+ },
2433
+ methods: {
2434
+ initChart() {
2435
+ this.chart = F.init(document.getElementById(this.id)), this.chart.setOption({
2436
+ backgroundColor: "#394056",
2437
+ title: {
2438
+ top: 20,
2439
+ text: "Requests",
2440
+ textStyle: {
2441
+ fontWeight: "normal",
2442
+ fontSize: 16,
2443
+ color: "#F1F1F3"
2444
+ },
2445
+ left: "1%"
2446
+ },
2447
+ tooltip: {
2448
+ trigger: "axis",
2449
+ axisPointer: {
2450
+ lineStyle: {
2451
+ color: "#57617B"
2452
+ }
2453
+ }
2454
+ },
2455
+ legend: {
2456
+ top: 20,
2457
+ icon: "rect",
2458
+ itemWidth: 14,
2459
+ itemHeight: 5,
2460
+ itemGap: 13,
2461
+ data: ["CMCC", "CTCC", "CUCC"],
2462
+ right: "4%",
2463
+ textStyle: {
2464
+ fontSize: 12,
2465
+ color: "#F1F1F3"
2466
+ }
2467
+ },
2468
+ grid: {
2469
+ top: 100,
2470
+ left: "2%",
2471
+ right: "2%",
2472
+ bottom: "2%",
2473
+ containLabel: !0
2474
+ },
2475
+ xAxis: [
2476
+ {
2477
+ type: "category",
2478
+ boundaryGap: !1,
2479
+ axisLine: {
2480
+ lineStyle: {
2481
+ color: "#57617B"
2482
+ }
2483
+ },
2484
+ data: [
2485
+ "13:00",
2486
+ "13:05",
2487
+ "13:10",
2488
+ "13:15",
2489
+ "13:20",
2490
+ "13:25",
2491
+ "13:30",
2492
+ "13:35",
2493
+ "13:40",
2494
+ "13:45",
2495
+ "13:50",
2496
+ "13:55"
2497
+ ]
2498
+ }
2499
+ ],
2500
+ yAxis: [
2501
+ {
2502
+ type: "value",
2503
+ name: "(%)",
2504
+ axisTick: {
2505
+ show: !1
2506
+ },
2507
+ axisLine: {
2508
+ lineStyle: {
2509
+ color: "#57617B"
2510
+ }
2511
+ },
2512
+ axisLabel: {
2513
+ margin: 10,
2514
+ textStyle: {
2515
+ fontSize: 14
2516
+ }
2517
+ },
2518
+ splitLine: {
2519
+ lineStyle: {
2520
+ color: "#57617B"
2521
+ }
2522
+ }
2523
+ }
2524
+ ],
2525
+ series: [
2526
+ {
2527
+ name: "CMCC",
2528
+ type: "line",
2529
+ smooth: !0,
2530
+ symbol: "circle",
2531
+ symbolSize: 5,
2532
+ showSymbol: !1,
2533
+ lineStyle: {
2534
+ normal: {
2535
+ width: 1
2536
+ }
2537
+ },
2538
+ areaStyle: {
2539
+ normal: {
2540
+ color: new F.graphic.LinearGradient(
2541
+ 0,
2542
+ 0,
2543
+ 0,
2544
+ 1,
2545
+ [
2546
+ {
2547
+ offset: 0,
2548
+ color: "rgba(137, 189, 27, 0.3)"
2549
+ },
2550
+ {
2551
+ offset: 0.8,
2552
+ color: "rgba(137, 189, 27, 0)"
2553
+ }
2554
+ ],
2555
+ !1
2556
+ ),
2557
+ shadowColor: "rgba(0, 0, 0, 0.1)",
2558
+ shadowBlur: 10
2559
+ }
2560
+ },
2561
+ itemStyle: {
2562
+ normal: {
2563
+ color: "rgb(137,189,27)",
2564
+ borderColor: "rgba(137,189,2,0.27)",
2565
+ borderWidth: 12
2566
+ }
2567
+ },
2568
+ data: [220, 182, 191, 134, 150, 120, 110, 125, 145, 122, 165, 122]
2569
+ },
2570
+ {
2571
+ name: "CTCC",
2572
+ type: "line",
2573
+ smooth: !0,
2574
+ symbol: "circle",
2575
+ symbolSize: 5,
2576
+ showSymbol: !1,
2577
+ lineStyle: {
2578
+ normal: {
2579
+ width: 1
2580
+ }
2581
+ },
2582
+ areaStyle: {
2583
+ normal: {
2584
+ color: new F.graphic.LinearGradient(
2585
+ 0,
2586
+ 0,
2587
+ 0,
2588
+ 1,
2589
+ [
2590
+ {
2591
+ offset: 0,
2592
+ color: "rgba(0, 136, 212, 0.3)"
2593
+ },
2594
+ {
2595
+ offset: 0.8,
2596
+ color: "rgba(0, 136, 212, 0)"
2597
+ }
2598
+ ],
2599
+ !1
2600
+ ),
2601
+ shadowColor: "rgba(0, 0, 0, 0.1)",
2602
+ shadowBlur: 10
2603
+ }
2604
+ },
2605
+ itemStyle: {
2606
+ normal: {
2607
+ color: "rgb(0,136,212)",
2608
+ borderColor: "rgba(0,136,212,0.2)",
2609
+ borderWidth: 12
2610
+ }
2611
+ },
2612
+ data: [120, 110, 125, 145, 122, 165, 122, 220, 182, 191, 134, 150]
2613
+ },
2614
+ {
2615
+ name: "CUCC",
2616
+ type: "line",
2617
+ smooth: !0,
2618
+ symbol: "circle",
2619
+ symbolSize: 5,
2620
+ showSymbol: !1,
2621
+ lineStyle: {
2622
+ normal: {
2623
+ width: 1
2624
+ }
2625
+ },
2626
+ areaStyle: {
2627
+ normal: {
2628
+ color: new F.graphic.LinearGradient(
2629
+ 0,
2630
+ 0,
2631
+ 0,
2632
+ 1,
2633
+ [
2634
+ {
2635
+ offset: 0,
2636
+ color: "rgba(219, 50, 51, 0.3)"
2637
+ },
2638
+ {
2639
+ offset: 0.8,
2640
+ color: "rgba(219, 50, 51, 0)"
2641
+ }
2642
+ ],
2643
+ !1
2644
+ ),
2645
+ shadowColor: "rgba(0, 0, 0, 0.1)",
2646
+ shadowBlur: 10
2647
+ }
2648
+ },
2649
+ itemStyle: {
2650
+ normal: {
2651
+ color: "rgb(219,50,51)",
2652
+ borderColor: "rgba(219,50,51,0.2)",
2653
+ borderWidth: 12
2654
+ }
2655
+ },
2656
+ data: [220, 182, 125, 145, 122, 191, 134, 150, 120, 110, 165, 122]
2657
+ }
2658
+ ]
2659
+ });
2660
+ }
2661
+ }
2662
+ }, pi = ["id"];
2663
+ function fi(e, t, a, i, s, n) {
2664
+ return o(), r("div", {
2665
+ id: a.id,
2666
+ class: M(a.className),
2667
+ style: U({ height: a.height, width: a.width })
2668
+ }, null, 14, pi);
2669
+ }
2670
+ const mi = /* @__PURE__ */ V(hi, [["render", fi]]), gi = {
2671
+ mixins: [re],
2672
+ props: {
2673
+ className: {
2674
+ type: String,
2675
+ default: "chart"
2676
+ },
2677
+ id: {
2678
+ type: String,
2679
+ default: "chart"
2680
+ },
2681
+ width: {
2682
+ type: String,
2683
+ default: "200px"
2684
+ },
2685
+ height: {
2686
+ type: String,
2687
+ default: "200px"
2688
+ }
2689
+ },
2690
+ data() {
2691
+ return {
2692
+ chart: null
2693
+ };
2694
+ },
2695
+ mounted() {
2696
+ this.initChart();
2697
+ },
2698
+ beforeUnmount() {
2699
+ this.chart && (this.chart.dispose(), this.chart = null);
2700
+ },
2701
+ methods: {
2702
+ initChart() {
2703
+ this.chart = F.init(document.getElementById(this.id));
2704
+ const e = function() {
2705
+ const t = [];
2706
+ for (let a = 1; a < 13; a++)
2707
+ t.push(a + "month");
2708
+ return t;
2709
+ }();
2710
+ this.chart.setOption({
2711
+ backgroundColor: "#344b58",
2712
+ title: {
2713
+ text: "statistics",
2714
+ x: "20",
2715
+ top: "20",
2716
+ textStyle: {
2717
+ color: "#fff",
2718
+ fontSize: "22"
2719
+ },
2720
+ subtextStyle: {
2721
+ color: "#90979c",
2722
+ fontSize: "16"
2723
+ }
2724
+ },
2725
+ tooltip: {
2726
+ trigger: "axis",
2727
+ axisPointer: {
2728
+ textStyle: {
2729
+ color: "#fff"
2730
+ }
2731
+ }
2732
+ },
2733
+ grid: {
2734
+ left: "5%",
2735
+ right: "5%",
2736
+ borderWidth: 0,
2737
+ top: 150,
2738
+ bottom: 95,
2739
+ textStyle: {
2740
+ color: "#fff"
2741
+ }
2742
+ },
2743
+ legend: {
2744
+ x: "5%",
2745
+ top: "10%",
2746
+ textStyle: {
2747
+ color: "#90979c"
2748
+ },
2749
+ data: ["female", "male", "average"]
2750
+ },
2751
+ calculable: !0,
2752
+ xAxis: [
2753
+ {
2754
+ type: "category",
2755
+ axisLine: {
2756
+ lineStyle: {
2757
+ color: "#90979c"
2758
+ }
2759
+ },
2760
+ splitLine: {
2761
+ show: !1
2762
+ },
2763
+ axisTick: {
2764
+ show: !1
2765
+ },
2766
+ splitArea: {
2767
+ show: !1
2768
+ },
2769
+ axisLabel: {
2770
+ interval: 0
2771
+ },
2772
+ data: e
2773
+ }
2774
+ ],
2775
+ yAxis: [
2776
+ {
2777
+ type: "value",
2778
+ splitLine: {
2779
+ show: !1
2780
+ },
2781
+ axisLine: {
2782
+ lineStyle: {
2783
+ color: "#90979c"
2784
+ }
2785
+ },
2786
+ axisTick: {
2787
+ show: !1
2788
+ },
2789
+ axisLabel: {
2790
+ interval: 0
2791
+ },
2792
+ splitArea: {
2793
+ show: !1
2794
+ }
2795
+ }
2796
+ ],
2797
+ dataZoom: [
2798
+ {
2799
+ show: !0,
2800
+ height: 30,
2801
+ xAxisIndex: [0],
2802
+ bottom: 30,
2803
+ start: 10,
2804
+ end: 80,
2805
+ handleIcon: "path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z",
2806
+ handleSize: "110%",
2807
+ handleStyle: {
2808
+ color: "#d3dee5"
2809
+ },
2810
+ textStyle: {
2811
+ color: "#fff"
2812
+ },
2813
+ borderColor: "#90979c"
2814
+ },
2815
+ {
2816
+ type: "inside",
2817
+ show: !0,
2818
+ height: 15,
2819
+ start: 1,
2820
+ end: 35
2821
+ }
2822
+ ],
2823
+ series: [
2824
+ {
2825
+ name: "female",
2826
+ type: "bar",
2827
+ stack: "total",
2828
+ barMaxWidth: 35,
2829
+ barGap: "10%",
2830
+ itemStyle: {
2831
+ normal: {
2832
+ color: "rgba(255,144,128,1)",
2833
+ label: {
2834
+ show: !0,
2835
+ textStyle: {
2836
+ color: "#fff"
2837
+ },
2838
+ position: "insideTop",
2839
+ formatter(t) {
2840
+ return t.value > 0 ? t.value : "";
2841
+ }
2842
+ }
2843
+ }
2844
+ },
2845
+ data: [
2846
+ 709,
2847
+ 1917,
2848
+ 2455,
2849
+ 2610,
2850
+ 1719,
2851
+ 1433,
2852
+ 1544,
2853
+ 3285,
2854
+ 5208,
2855
+ 3372,
2856
+ 2484,
2857
+ 4078
2858
+ ]
2859
+ },
2860
+ {
2861
+ name: "male",
2862
+ type: "bar",
2863
+ stack: "total",
2864
+ itemStyle: {
2865
+ normal: {
2866
+ color: "rgba(0,191,183,1)",
2867
+ barBorderRadius: 0,
2868
+ label: {
2869
+ show: !0,
2870
+ position: "top",
2871
+ formatter(t) {
2872
+ return t.value > 0 ? t.value : "";
2873
+ }
2874
+ }
2875
+ }
2876
+ },
2877
+ data: [
2878
+ 327,
2879
+ 1776,
2880
+ 507,
2881
+ 1200,
2882
+ 800,
2883
+ 482,
2884
+ 204,
2885
+ 1390,
2886
+ 1001,
2887
+ 951,
2888
+ 381,
2889
+ 220
2890
+ ]
2891
+ },
2892
+ {
2893
+ name: "average",
2894
+ type: "line",
2895
+ stack: "total",
2896
+ symbolSize: 10,
2897
+ symbol: "circle",
2898
+ itemStyle: {
2899
+ normal: {
2900
+ color: "rgba(252,230,48,1)",
2901
+ barBorderRadius: 0,
2902
+ label: {
2903
+ show: !0,
2904
+ position: "top",
2905
+ formatter(t) {
2906
+ return t.value > 0 ? t.value : "";
2907
+ }
2908
+ }
2909
+ }
2910
+ },
2911
+ data: [
2912
+ 1036,
2913
+ 3693,
2914
+ 2962,
2915
+ 3810,
2916
+ 2519,
2917
+ 1915,
2918
+ 1748,
2919
+ 4675,
2920
+ 6209,
2921
+ 4323,
2922
+ 2865,
2923
+ 4298
2924
+ ]
2925
+ }
2926
+ ]
2927
+ });
2928
+ }
2929
+ }
2930
+ }, yi = ["id"];
2931
+ function bi(e, t, a, i, s, n) {
2932
+ return o(), r("div", {
2933
+ id: a.id,
2934
+ class: M(a.className),
2935
+ style: U({ height: a.height, width: a.width })
2936
+ }, null, 14, yi);
2937
+ }
2938
+ const vi = /* @__PURE__ */ V(gi, [["render", bi]]), wi = {
2939
+ name: "ChartComponents",
2940
+ props: {
2941
+ chartId: { type: String, required: !0 },
2942
+ option: { type: Object, default: () => {
2943
+ } }
2944
+ },
2945
+ data() {
2946
+ return {
2947
+ myChart: null,
2948
+ options: {}
2949
+ };
2950
+ },
2951
+ watch: {
2952
+ option: {
2953
+ deep: !0,
2954
+ handler(e, t) {
2955
+ console.log(e, t), this.optionInit(), this.drawChart(this.options);
2956
+ }
2957
+ }
2958
+ },
2959
+ created() {
2960
+ this.optionInit();
2961
+ },
2962
+ mounted() {
2963
+ this.myChart || (this.myChart = F.init(this.$refs[this.chartId])), window.addEventListener("resize", this.chartResize), this.drawChart(this.options);
2964
+ },
2965
+ beforeUnmount() {
2966
+ window.removeEventListener("resize", this.chartResize), this.myChart && this.myChart.dispose(), this.myChart = null;
2967
+ },
2968
+ methods: {
2969
+ optionInit() {
2970
+ const e = {
2971
+ legend: {
2972
+ show: !0,
2973
+ top: 0,
2974
+ right: 0,
2975
+ icon: "rect",
2976
+ itemWidth: 6,
2977
+ itemHeight: 6,
2978
+ itemStyle: {
2979
+ color: "#1C76FD"
2980
+ }
2981
+ },
2982
+ grid: {
2983
+ top: 30,
2984
+ left: 25,
2985
+ bottom: 20,
2986
+ right: 20
2987
+ },
2988
+ xAxis: {
2989
+ type: "category",
2990
+ boundaryGap: !1,
2991
+ axisLine: {
2992
+ show: !1
2993
+ },
2994
+ axisTick: {
2995
+ show: !1
2996
+ },
2997
+ axisLabel: {
2998
+ color: "#909399"
2999
+ },
3000
+ data: this.option ? this.option.xData : []
3001
+ },
3002
+ yAxis: {
3003
+ type: "value",
3004
+ splitLine: {
3005
+ show: !1
3006
+ },
3007
+ axisLine: {
3008
+ show: !1
3009
+ },
3010
+ axisTick: {
3011
+ show: !1
3012
+ },
3013
+ axisLabel: {
3014
+ color: "#909399"
3015
+ }
3016
+ }
3017
+ }, t = {
3018
+ series: [
3019
+ {
3020
+ name: this.option ? this.option.charName : "",
3021
+ type: "line",
3022
+ symbol: "none",
3023
+ areaStyle: {
3024
+ color: {
3025
+ type: "linear",
3026
+ x: 0,
3027
+ y: 0,
3028
+ x2: 0,
3029
+ y2: 1,
3030
+ colorStops: [
3031
+ {
3032
+ offset: 0,
3033
+ color: "rgba(64,158,255)"
3034
+ // 0% 处的颜色
3035
+ },
3036
+ {
3037
+ offset: 1,
3038
+ color: "rgba(64,158,255,0)"
3039
+ // 100% 处的颜色
3040
+ }
3041
+ ],
3042
+ global: !1
3043
+ // 缺省为 false
3044
+ }
3045
+ },
3046
+ lineStyle: {
3047
+ color: "#1C76FD"
3048
+ },
3049
+ data: this.option ? this.option.yData : []
3050
+ }
3051
+ ],
3052
+ ...e
3053
+ };
3054
+ this.options = t;
3055
+ },
3056
+ // 渲染echarts
3057
+ drawChart(e) {
3058
+ this.myChart.setOption(e, !0);
3059
+ },
3060
+ chartResize() {
3061
+ this.myChart && this.myChart.resize();
3062
+ }
3063
+ }
3064
+ };
3065
+ function ki(e, t, a, i, s, n) {
3066
+ return o(), r("div", {
3067
+ ref: a.chartId,
3068
+ class: "chart-box"
3069
+ }, null, 512);
3070
+ }
3071
+ const Ci = /* @__PURE__ */ V(wi, [["render", ki], ["__scopeId", "data-v-edfa3250"]]);
3072
+ let pe = 0;
3073
+ const fe = "webkit moz ms o".split(" ");
3074
+ let T, _;
3075
+ const Si = typeof window > "u";
3076
+ if (Si)
3077
+ T = function() {
3078
+ }, _ = function() {
3079
+ };
3080
+ else {
3081
+ T = window.requestAnimationFrame, _ = window.cancelAnimationFrame;
3082
+ let e;
3083
+ for (let t = 0; t < fe.length && !(T && _); t++)
3084
+ e = fe[t], T = T || window[e + "RequestAnimationFrame"], _ = _ || window[e + "CancelAnimationFrame"] || window[e + "CancelRequestAnimationFrame"];
3085
+ (!T || !_) && (T = function(t) {
3086
+ const a = (/* @__PURE__ */ new Date()).getTime(), i = Math.max(0, 16 - (a - pe)), s = window.setTimeout(() => {
3087
+ t(a + i);
3088
+ }, i);
3089
+ return pe = a + i, s;
3090
+ }, _ = function(t) {
3091
+ window.clearTimeout(t);
3092
+ });
3093
+ }
3094
+ const Ai = {
3095
+ name: "VueCountTo",
3096
+ props: {
3097
+ startVal: {
3098
+ type: Number,
3099
+ required: !1,
3100
+ default: 0
3101
+ },
3102
+ endVal: {
3103
+ type: Number,
3104
+ required: !1,
3105
+ default: 2017
3106
+ },
3107
+ duration: {
3108
+ type: Number,
3109
+ required: !1,
3110
+ default: 3e3
3111
+ },
3112
+ autoplay: {
3113
+ type: Boolean,
3114
+ required: !1,
3115
+ default: !0
3116
+ },
3117
+ decimals: {
3118
+ type: Number,
3119
+ required: !1,
3120
+ default: 0,
3121
+ validator(e) {
3122
+ return e >= 0;
3123
+ }
3124
+ },
3125
+ decimal: {
3126
+ type: String,
3127
+ required: !1,
3128
+ default: "."
3129
+ },
3130
+ separator: {
3131
+ type: String,
3132
+ required: !1,
3133
+ default: ","
3134
+ },
3135
+ prefix: {
3136
+ type: String,
3137
+ required: !1,
3138
+ default: ""
3139
+ },
3140
+ suffix: {
3141
+ type: String,
3142
+ required: !1,
3143
+ default: ""
3144
+ },
3145
+ useEasing: {
3146
+ type: Boolean,
3147
+ required: !1,
3148
+ default: !0
3149
+ },
3150
+ easingFn: {
3151
+ type: Function,
3152
+ default(e, t, a, i) {
3153
+ return a * (-Math.pow(2, -10 * e / i) + 1) * 1024 / 1023 + t;
3154
+ }
3155
+ }
3156
+ },
3157
+ data() {
3158
+ return {
3159
+ localStartVal: this.startVal,
3160
+ displayValue: this.formatNumber(this.startVal),
3161
+ printVal: null,
3162
+ paused: !1,
3163
+ localDuration: this.duration,
3164
+ startTime: null,
3165
+ timestamp: null,
3166
+ remaining: null,
3167
+ rAF: null
3168
+ };
3169
+ },
3170
+ computed: {
3171
+ countDown() {
3172
+ return this.startVal > this.endVal;
3173
+ }
3174
+ },
3175
+ watch: {
3176
+ startVal() {
3177
+ this.autoplay && this.start();
3178
+ },
3179
+ endVal() {
3180
+ this.autoplay && this.start();
3181
+ }
3182
+ },
3183
+ mounted() {
3184
+ this.autoplay && this.start(), this.$emit("mountedCallback");
3185
+ },
3186
+ // 原为 Vue 2 的 destroyed 钩子(Vue 3 下不会触发),迁移为 beforeUnmount 使清理真正生效
3187
+ beforeUnmount() {
3188
+ _(this.rAF);
3189
+ },
3190
+ methods: {
3191
+ start() {
3192
+ this.localStartVal = this.startVal, this.startTime = null, this.localDuration = this.duration, this.paused = !1, this.rAF = T(this.count);
3193
+ },
3194
+ pauseResume() {
3195
+ this.paused ? (this.resume(), this.paused = !1) : (this.pause(), this.paused = !0);
3196
+ },
3197
+ pause() {
3198
+ _(this.rAF);
3199
+ },
3200
+ resume() {
3201
+ this.startTime = null, this.localDuration = +this.remaining, this.localStartVal = +this.printVal, T(this.count);
3202
+ },
3203
+ reset() {
3204
+ this.startTime = null, _(this.rAF), this.displayValue = this.formatNumber(this.startVal);
3205
+ },
3206
+ count(e) {
3207
+ this.startTime || (this.startTime = e), this.timestamp = e;
3208
+ const t = e - this.startTime;
3209
+ this.remaining = this.localDuration - t, this.useEasing ? this.countDown ? this.printVal = this.localStartVal - this.easingFn(t, 0, this.localStartVal - this.endVal, this.localDuration) : this.printVal = this.easingFn(t, this.localStartVal, this.endVal - this.localStartVal, this.localDuration) : this.countDown ? this.printVal = this.localStartVal - (this.localStartVal - this.endVal) * (t / this.localDuration) : this.printVal = this.localStartVal + (this.endVal - this.localStartVal) * (t / this.localDuration), this.countDown ? this.printVal = this.printVal < this.endVal ? this.endVal : this.printVal : this.printVal = this.printVal > this.endVal ? this.endVal : this.printVal, this.displayValue = this.formatNumber(this.printVal), t < this.localDuration ? this.rAF = T(this.count) : this.$emit("callback");
3210
+ },
3211
+ isNumber(e) {
3212
+ return !isNaN(parseFloat(e));
3213
+ },
3214
+ formatNumber(e) {
3215
+ e = e.toFixed(this.decimals), e += "";
3216
+ const t = e.split(".");
3217
+ let a = t[0];
3218
+ const i = t.length > 1 ? this.decimal + t[1] : "", s = /(\d+)(\d{3})/;
3219
+ if (this.separator && !this.isNumber(this.separator))
3220
+ for (; s.test(a); )
3221
+ a = a.replace(s, "$1" + this.separator + "$2");
3222
+ return this.prefix + a + i + this.suffix;
3223
+ }
3224
+ }
3225
+ };
3226
+ function Di(e, t, a, i, s, n) {
3227
+ return o(), r("span", null, C(s.displayValue), 1);
3228
+ }
3229
+ const Ei = /* @__PURE__ */ V(Ai, [["render", Di]]);
3230
+ function Vi(e, t) {
3231
+ let a = null;
3232
+ return function(...i) {
3233
+ a = setTimeout(
3234
+ () => {
3235
+ typeof e == "function" && e.apply(null, i), clearTimeout(a);
3236
+ },
3237
+ t > 0 ? t : 100
3238
+ );
3239
+ };
3240
+ }
3241
+ const Ni = {
3242
+ name: "VScaleScreen",
3243
+ props: {
3244
+ width: {
3245
+ type: [String, Number],
3246
+ default: 1920
3247
+ },
3248
+ height: {
3249
+ type: [String, Number],
3250
+ default: 1080
3251
+ },
3252
+ fullScreen: {
3253
+ type: Boolean,
3254
+ default: !1
3255
+ },
3256
+ autoScale: {
3257
+ type: [Object, Boolean],
3258
+ default: !0
3259
+ },
3260
+ selfAdaption: {
3261
+ type: Boolean,
3262
+ default: !0
3263
+ },
3264
+ delay: {
3265
+ type: Number,
3266
+ default: 100
3267
+ },
3268
+ boxStyle: {
3269
+ type: Object,
3270
+ default: () => ({})
3271
+ },
3272
+ wrapperStyle: {
3273
+ type: Object,
3274
+ default: () => ({})
3275
+ }
3276
+ },
3277
+ data() {
3278
+ return {
3279
+ currentWidth: 0,
3280
+ currentHeight: 0,
3281
+ originalWidth: 0,
3282
+ originalHeight: 0,
3283
+ onResize: null,
3284
+ observer: null
3285
+ };
3286
+ },
3287
+ computed: {
3288
+ screenWrapper() {
3289
+ return this.$refs.screenWrapper;
3290
+ }
3291
+ },
3292
+ watch: {
3293
+ selfAdaption(e) {
3294
+ e ? (this.resize(), this.addListener()) : (this.clearListener(), this.clearStyle());
3295
+ }
3296
+ },
3297
+ mounted() {
3298
+ this.onResize = Vi(() => {
3299
+ this.resize();
3300
+ }, this.delay), this.$nextTick(() => {
3301
+ this.selfAdaption && (this.resize(), this.addListener());
3302
+ });
3303
+ },
3304
+ beforeUnmount() {
3305
+ this.clearListener();
3306
+ },
3307
+ methods: {
3308
+ initSize() {
3309
+ return console.log(this.width, this.height), new Promise((e) => {
3310
+ this.screenWrapper && this.screenWrapper.parentNode && (this.screenWrapper.parentNode.style.overflow = "hidden", this.screenWrapper.parentNode.scrollLeft = 0, this.screenWrapper.parentNode.scrollTop = 0), this.$nextTick(() => {
3311
+ this.width && this.height ? (this.currentWidth = this.width, this.currentHeight = this.height) : (this.currentWidth = this.screenWrapper.clientWidth, this.currentHeight = this.screenWrapper.clientHeight), (!this.originalHeight || !this.originalWidth) && (this.originalWidth = window.screen.width, this.originalHeight = window.screen.height), e();
3312
+ });
3313
+ });
3314
+ },
3315
+ updateSize() {
3316
+ this.currentWidth && this.currentHeight ? (this.screenWrapper.style.width = `${this.currentWidth}px`, this.screenWrapper.style.height = `${this.currentHeight}px`) : (this.screenWrapper.style.width = `${this.originalWidth}px`, this.screenWrapper.style.height = `${this.originalHeight}px`);
3317
+ },
3318
+ handleAutoScale(e) {
3319
+ if (!this.autoScale) return;
3320
+ const t = this.screenWrapper, a = t.clientWidth, i = t.clientHeight, s = t.parentElement, n = s ? s.clientWidth : document.body.clientWidth, d = s ? s.clientHeight : document.body.clientHeight;
3321
+ t.style.transform = `scale(${e},${e}) `;
3322
+ let f = Math.max((n - a * e) / 2, 0), p = Math.max((d - i * e) / 2, 0);
3323
+ typeof this.autoScale == "object" && (!this.autoScale.x && (f = 0), !this.autoScale.y && (p = 0)), this.screenWrapper.style.margin = `${p}px ${f}px`;
3324
+ },
3325
+ updateScale() {
3326
+ const e = this.screenWrapper, t = e.parentElement, a = t ? t.clientWidth : document.body.clientWidth, i = t ? t.clientHeight : document.body.clientHeight, s = this.currentWidth || this.originalWidth, n = this.currentHeight || this.originalHeight, d = a / s, f = i / n;
3327
+ if (this.fullScreen)
3328
+ return e.style.transform = `scale(${d},${f})`, !1;
3329
+ const p = Math.min(d, f);
3330
+ this.handleAutoScale(p);
3331
+ },
3332
+ initMutationObserver() {
3333
+ const e = this.screenWrapper;
3334
+ (this.observer = new MutationObserver(() => {
3335
+ this.onResize();
3336
+ })).observe(e, {
3337
+ attributes: !0,
3338
+ attributeFilter: ["style"],
3339
+ attributeOldValue: !0
3340
+ });
3341
+ },
3342
+ clearListener() {
3343
+ window.removeEventListener("resize", this.onResize);
3344
+ },
3345
+ addListener() {
3346
+ window.addEventListener("resize", this.onResize);
3347
+ },
3348
+ clearStyle() {
3349
+ const e = this.screenWrapper;
3350
+ e && e.parentNode && (e.parentNode.style.overflow = "auto"), e.style = "";
3351
+ },
3352
+ async resize() {
3353
+ this.selfAdaption && (await this.initSize(), this.updateSize(), this.updateScale(), setTimeout(() => {
3354
+ window.dispatchEvent(new CustomEvent("cockpit-scale-changed"));
3355
+ }, 100));
3356
+ }
3357
+ }
3358
+ };
3359
+ function Ii(e, t, a, i, s, n) {
3360
+ return o(), r("div", {
3361
+ ref: "screenWrapper",
3362
+ class: "screen-wrapper",
3363
+ style: U(a.wrapperStyle)
3364
+ }, [
3365
+ I(e.$slots, "default", {}, void 0, !0)
3366
+ ], 4);
3367
+ }
3368
+ const Bi = /* @__PURE__ */ V(Ni, [["render", Ii], ["__scopeId", "data-v-10984a6b"]]);
3369
+ let ee = null;
3370
+ function mn(e) {
3371
+ ee = ot(e).system.binary;
3372
+ }
3373
+ function Ve() {
3374
+ if (!ee)
3375
+ throw new Error(
3376
+ "[@xdmp-open/ui-shared] setupBinaryApi(client) 尚未调用,请在应用启动时注入 sdk-core 的 SdkClient(如 main.js: setupBinaryApi(sdkClient))"
3377
+ );
3378
+ return ee;
3379
+ }
3380
+ function Ne(e, t) {
3381
+ return Ve().add(e, t);
3382
+ }
3383
+ async function Ie(e) {
3384
+ const t = await Ve().download(e);
3385
+ return new Blob([t.data], { type: t.headers["content-type"] });
3386
+ }
3387
+ const zi = {
3388
+ name: "AvatarUpload",
3389
+ components: { UserFilled: it, Delete: Ce, Loading: at, ElImage: be, ElIcon: P, ElUpload: ye, ElButton: H },
3390
+ props: {
3391
+ modelValue: { type: String, default: "" },
3392
+ accept: { type: String, default: ".jpg,.jpeg,.png" },
3393
+ maxSize: { type: Number, default: 1 },
3394
+ bucketName: { type: String, default: "" },
3395
+ disabled: { type: Boolean, default: !1 },
3396
+ size: { type: Number, default: 80 },
3397
+ immediate: { type: Boolean, default: !0 }
3398
+ },
3399
+ emits: ["update:modelValue", "upload-success", "upload-error", "clear", "change"],
3400
+ data() {
3401
+ return {
3402
+ previewUrl: "",
3403
+ loading: !1
3404
+ };
3405
+ },
3406
+ computed: {
3407
+ sizeStyle() {
3408
+ const e = `${this.size}px`;
3409
+ return { width: e, height: e };
3410
+ }
3411
+ },
3412
+ watch: {
3413
+ modelValue: {
3414
+ immediate: !0,
3415
+ handler(e) {
3416
+ e ? this.fetchPreview(e) : this.revokePreview();
3417
+ }
3418
+ }
3419
+ },
3420
+ // 原为 Vue 2 的 beforeDestroy 钩子(Vue 3 下不会触发),迁移为 beforeUnmount 使清理真正生效
3421
+ beforeUnmount() {
3422
+ this.revokePreview();
3423
+ },
3424
+ methods: {
3425
+ openFileDialog() {
3426
+ var t;
3427
+ const e = this.$refs.uploadRef;
3428
+ e && e.$el && ((t = e.$el.querySelector('input[type="file"]')) == null || t.click());
3429
+ },
3430
+ async fetchPreview(e) {
3431
+ try {
3432
+ const t = await Ie(e), a = await this.blobFromResponse(t);
3433
+ this.previewUrl = a;
3434
+ } catch {
3435
+ this.previewUrl = "";
3436
+ }
3437
+ },
3438
+ revokePreview() {
3439
+ this.previewUrl && (window.URL.revokeObjectURL(this.previewUrl), this.previewUrl = "");
3440
+ },
3441
+ blobFromResponse(e) {
3442
+ return new Promise((t, a) => {
3443
+ const i = new FileReader();
3444
+ i.onload = (s) => {
3445
+ const n = new Blob([s.target.result], { type: e.type });
3446
+ t(window.URL.createObjectURL(n));
3447
+ }, i.onerror = () => a(new Error("文件读取失败")), i.readAsArrayBuffer(e);
3448
+ });
3449
+ },
3450
+ handleBeforeUpload(e) {
3451
+ return e.size / 1024 / 1024 < this.maxSize ? !0 : (W.error(`上传头像大小不能超过 ${this.maxSize}MB`), !1);
3452
+ },
3453
+ handleChange() {
3454
+ const e = this.$refs.uploadRef;
3455
+ e && e.uploadFiles.length > 1 && e.uploadFiles.splice(0, 1);
3456
+ },
3457
+ async handleUpload(e) {
3458
+ if (!this.immediate) {
3459
+ this.revokePreview(), this.previewUrl = URL.createObjectURL(e.file), this.$emit("change", { file: e.file, name: e.file.name }), e.onSuccess({ success: !0, data: { id: "" } });
3460
+ return;
3461
+ }
3462
+ this.loading = !0;
3463
+ try {
3464
+ const t = await Ne(e.file, {
3465
+ name: e.file.name.split(".")[0],
3466
+ objectName: e.file.name,
3467
+ ...this.bucketName ? { bucketName: this.bucketName } : {}
3468
+ });
3469
+ this.loading = !1;
3470
+ const a = t.id;
3471
+ this.$emit("update:modelValue", a), this.fetchPreview(a), this.$emit("upload-success", { id: a, name: e.file.name, response: t }), e.onSuccess(t);
3472
+ } catch (t) {
3473
+ this.loading = !1, W.error("上传失败"), this.$emit("upload-error", t), e.onError(t);
3474
+ }
3475
+ },
3476
+ handleClear() {
3477
+ var t;
3478
+ const e = this.modelValue;
3479
+ (t = this.$refs.uploadRef) == null || t.clearFiles(), this.$emit("update:modelValue", ""), this.$emit("clear", { id: e });
3480
+ }
3481
+ }
3482
+ }, Ti = { class: "avatar-upload" }, _i = {
3483
+ key: 2,
3484
+ class: "avatar-mask"
3485
+ }, xi = {
3486
+ key: 3,
3487
+ class: "avatar-loading"
3488
+ }, Pi = { class: "avatar-actions" };
3489
+ function Mi(e, t, a, i, s, n) {
3490
+ const d = g("el-image"), f = g("UserFilled"), p = g("el-icon"), b = g("Delete"), S = g("Loading"), A = g("el-upload"), D = g("el-button");
3491
+ return o(), r("div", Ti, [
3492
+ m("div", {
3493
+ class: "avatar-preview",
3494
+ style: U(n.sizeStyle),
3495
+ onClick: t[0] || (t[0] = (w) => !s.previewUrl && !a.disabled && n.openFileDialog())
3496
+ }, [
3497
+ s.previewUrl ? (o(), k(d, {
3498
+ key: 0,
3499
+ src: s.previewUrl,
3500
+ "preview-src-list": [s.previewUrl],
3501
+ class: "avatar-image",
3502
+ fit: "cover"
3503
+ }, null, 8, ["src", "preview-src-list"])) : (o(), k(p, {
3504
+ key: 1,
3505
+ class: "avatar-placeholder",
3506
+ size: 28
3507
+ }, {
3508
+ default: u(() => [
3509
+ c(f)
3510
+ ]),
3511
+ _: 1
3512
+ })),
3513
+ s.previewUrl && !a.disabled ? (o(), r("div", _i, [
3514
+ c(p, {
3515
+ size: 18,
3516
+ onClick: K(n.handleClear, ["stop"])
3517
+ }, {
3518
+ default: u(() => [
3519
+ c(b)
3520
+ ]),
3521
+ _: 1
3522
+ }, 8, ["onClick"])
3523
+ ])) : h("", !0),
3524
+ s.loading ? (o(), r("div", xi, [
3525
+ c(p, {
3526
+ class: "is-loading",
3527
+ size: 20
3528
+ }, {
3529
+ default: u(() => [
3530
+ c(S)
3531
+ ]),
3532
+ _: 1
3533
+ })
3534
+ ])) : h("", !0)
3535
+ ], 4),
3536
+ c(A, {
3537
+ ref: "uploadRef",
3538
+ class: "avatar-upload-hidden",
3539
+ action: "",
3540
+ accept: a.accept,
3541
+ "show-file-list": !1,
3542
+ disabled: a.disabled,
3543
+ "before-upload": n.handleBeforeUpload,
3544
+ "http-request": n.handleUpload,
3545
+ "on-change": n.handleChange
3546
+ }, null, 8, ["accept", "disabled", "before-upload", "http-request", "on-change"]),
3547
+ m("div", Pi, [
3548
+ I(e.$slots, "default", {}, () => [
3549
+ c(D, {
3550
+ text: "",
3551
+ type: "primary",
3552
+ size: "small",
3553
+ disabled: a.disabled,
3554
+ onClick: n.openFileDialog
3555
+ }, {
3556
+ default: u(() => [
3557
+ E(C(s.previewUrl ? "更换" : "上传头像"), 1)
3558
+ ]),
3559
+ _: 1
3560
+ }, 8, ["disabled", "onClick"])
3561
+ ], !0)
3562
+ ])
3563
+ ]);
3564
+ }
3565
+ const Ui = /* @__PURE__ */ V(zi, [["render", Mi], ["__scopeId", "data-v-7a4c77ac"]]), Li = ["image/jpeg", "image/png", "image/gif", "image/webp", "image/svg+xml"], Ri = {
3566
+ name: "FileUpload",
3567
+ components: { Document: nt, Delete: Ce, ElImage: be, ElIcon: P, ElUpload: ye, ElButton: H },
3568
+ props: {
3569
+ modelValue: { type: String, default: "" },
3570
+ fileName: { type: String, default: "" },
3571
+ accept: { type: String, default: "" },
3572
+ maxSize: { type: Number, default: 10 },
3573
+ bucketName: { type: String, default: "" },
3574
+ disabled: { type: Boolean, default: !1 },
3575
+ immediate: { type: Boolean, default: !0 },
3576
+ previewWidth: { type: String, default: "100px" },
3577
+ previewHeight: { type: String, default: "100px" }
3578
+ },
3579
+ emits: ["update:modelValue", "update:fileName", "upload-success", "upload-error", "clear", "change"],
3580
+ data() {
3581
+ return {
3582
+ previewUrl: "",
3583
+ isImage: !1,
3584
+ // 原模板 icon="Close"(字符串,依赖宿主全局注册图标),包内改为显式绑定
3585
+ CloseIcon: st,
3586
+ // 原模板 :icon="UploadIcon" 引用 components 注册项,运行时解析为 undefined(不渲染图标);
3587
+ // 为保持视觉零变化,此处显式维持 undefined(不指向 UploadIcon 组件)
3588
+ uploadIcon: void 0
3589
+ };
3590
+ },
3591
+ computed: {
3592
+ showPreview() {
3593
+ return this.isImage && this.previewUrl;
3594
+ },
3595
+ previewStyle() {
3596
+ return { width: this.previewWidth, height: this.previewHeight };
3597
+ }
3598
+ },
3599
+ watch: {
3600
+ modelValue: {
3601
+ immediate: !0,
3602
+ handler(e) {
3603
+ e ? this.fetchBlobPreview(e) : this.revokePreview();
3604
+ }
3605
+ }
3606
+ },
3607
+ // 原为 Vue 2 的 beforeDestroy 钩子(Vue 3 下不会触发),迁移为 beforeUnmount 使清理真正生效
3608
+ beforeUnmount() {
3609
+ this.revokePreview();
3610
+ },
3611
+ methods: {
3612
+ isImageFile(e) {
3613
+ return Li.includes(e.type);
3614
+ },
3615
+ revokePreview() {
3616
+ this.previewUrl && this.previewUrl.startsWith("blob:") && window.URL.revokeObjectURL(this.previewUrl), this.previewUrl = "", this.isImage = !1;
3617
+ },
3618
+ async fetchBlobPreview(e) {
3619
+ try {
3620
+ const t = await Ie(e);
3621
+ this.previewUrl = await this.blobFromResponse(t), this.isImage = !0;
3622
+ } catch {
3623
+ this.previewUrl = "";
3624
+ }
3625
+ },
3626
+ blobFromResponse(e) {
3627
+ return new Promise((t, a) => {
3628
+ const i = new FileReader();
3629
+ i.onload = (s) => {
3630
+ const n = new Blob([s.target.result], { type: e.type });
3631
+ t(window.URL.createObjectURL(n));
3632
+ }, i.onerror = () => a(new Error("文件读取失败")), i.readAsArrayBuffer(e);
3633
+ });
3634
+ },
3635
+ handleBeforeUpload(e) {
3636
+ return e.size / 1024 / 1024 < this.maxSize ? !0 : (W.error(`上传文件大小不能超过 ${this.maxSize}MB`), !1);
3637
+ },
3638
+ handleChange() {
3639
+ const e = this.$refs.uploadRef;
3640
+ e && e.uploadFiles.length > 1 && e.uploadFiles.splice(0, 1);
3641
+ },
3642
+ async handleUpload(e) {
3643
+ const t = e.file, a = this.isImageFile(t);
3644
+ if (!this.immediate) {
3645
+ this.revokePreview(), a && (this.previewUrl = URL.createObjectURL(t), this.isImage = !0), this.$emit("update:fileName", t.name), this.$emit("change", { file: t, name: t.name }), e.onSuccess({ success: !0, data: { id: "" } });
3646
+ return;
3647
+ }
3648
+ try {
3649
+ const i = await Ne(t, {
3650
+ name: t.name.split(".")[0],
3651
+ objectName: t.name,
3652
+ ...this.bucketName ? { bucketName: this.bucketName } : {}
3653
+ }), s = i.id;
3654
+ this.$emit("update:modelValue", s), this.$emit("update:fileName", t.name), a && this.fetchBlobPreview(s), this.$emit("upload-success", { id: s, name: t.name, response: i }), e.onSuccess(i);
3655
+ } catch (i) {
3656
+ W.error("上传失败"), this.$emit("upload-error", i), e.onError(i);
3657
+ }
3658
+ },
3659
+ handleRemove() {
3660
+ this.$refs.uploadRef.clearFiles();
3661
+ },
3662
+ handleClear() {
3663
+ const e = this.modelValue;
3664
+ this.$refs.uploadRef.clearFiles(), this.revokePreview(), this.$emit("update:modelValue", ""), this.$emit("update:fileName", ""), this.$emit("clear", { id: e });
3665
+ }
3666
+ }
3667
+ }, Oi = { class: "file-upload" }, Fi = {
3668
+ key: 0,
3669
+ class: "preview-mask"
3670
+ }, Wi = {
3671
+ key: 1,
3672
+ class: "file-info"
3673
+ }, Hi = { class: "file-name" };
3674
+ function Gi(e, t, a, i, s, n) {
3675
+ const d = g("el-image"), f = g("Delete"), p = g("el-icon"), b = g("Document"), S = g("el-button"), A = g("el-upload");
3676
+ return o(), r("div", Oi, [
3677
+ n.showPreview ? (o(), r("div", {
3678
+ key: 0,
3679
+ class: "file-preview-image",
3680
+ style: U(n.previewStyle)
3681
+ }, [
3682
+ c(d, {
3683
+ src: s.previewUrl,
3684
+ "preview-src-list": [s.previewUrl],
3685
+ fit: "cover",
3686
+ style: { width: "100%", height: "100%", borderRadius: "4px" }
3687
+ }, null, 8, ["src", "preview-src-list"]),
3688
+ a.disabled ? h("", !0) : (o(), r("div", Fi, [
3689
+ c(p, {
3690
+ size: 18,
3691
+ onClick: K(n.handleClear, ["stop"])
3692
+ }, {
3693
+ default: u(() => [
3694
+ c(f)
3695
+ ]),
3696
+ _: 1
3697
+ }, 8, ["onClick"])
3698
+ ]))
3699
+ ], 4)) : a.fileName ? (o(), r("div", Wi, [
3700
+ c(p, { class: "file-icon" }, {
3701
+ default: u(() => [
3702
+ c(b)
3703
+ ]),
3704
+ _: 1
3705
+ }),
3706
+ m("span", Hi, C(a.fileName), 1),
3707
+ a.disabled ? h("", !0) : (o(), k(S, {
3708
+ key: 0,
3709
+ type: "danger",
3710
+ text: "",
3711
+ size: "small",
3712
+ icon: s.CloseIcon,
3713
+ onClick: n.handleClear
3714
+ }, null, 8, ["icon", "onClick"]))
3715
+ ])) : h("", !0),
3716
+ c(A, {
3717
+ ref: "uploadRef",
3718
+ action: "",
3719
+ accept: a.accept,
3720
+ "show-file-list": !1,
3721
+ disabled: a.disabled,
3722
+ "before-upload": n.handleBeforeUpload,
3723
+ "http-request": n.handleUpload,
3724
+ "on-change": n.handleChange,
3725
+ "on-remove": n.handleRemove
3726
+ }, {
3727
+ default: u(() => [
3728
+ I(e.$slots, "default", {}, () => [
3729
+ c(S, {
3730
+ type: "primary",
3731
+ disabled: a.disabled,
3732
+ icon: s.uploadIcon
3733
+ }, {
3734
+ default: u(() => [...t[0] || (t[0] = [
3735
+ E("点击上传", -1)
3736
+ ])]),
3737
+ _: 1
3738
+ }, 8, ["disabled", "icon"])
3739
+ ], !0)
3740
+ ]),
3741
+ _: 3
3742
+ }, 8, ["accept", "disabled", "before-upload", "http-request", "on-change", "on-remove"])
3743
+ ]);
3744
+ }
3745
+ const ji = /* @__PURE__ */ V(Ri, [["render", Gi], ["__scopeId", "data-v-ed61dcbf"]]), Yi = (e) => {
3746
+ e.querySelectorAll("pre code").forEach((a) => {
3747
+ const i = document.createElement("ol"), s = a.outerHTML.split(`
3748
+ `).length;
3749
+ for (let n = 1; n < s; n++) {
3750
+ const d = document.createElement("li"), f = document.createTextNode(String(n));
3751
+ d.appendChild(f), i.appendChild(d);
3752
+ }
3753
+ i.className = "pre-numbering", a && a.parentNode && a.parentNode.appendChild(i), lt.highlightBlock(a);
3754
+ });
3755
+ };
3756
+ function me(e, t, a) {
3757
+ const { value: i } = t;
3758
+ if (i && i instanceof Array)
3759
+ i.length > 0 && (a(i) || e.parentNode && e.parentNode.removeChild(e));
3760
+ else
3761
+ throw new Error(`need roles! Like v-permission="['admin','editor']"`);
3762
+ }
3763
+ function Ki(e) {
3764
+ return {
3765
+ mounted(t, a) {
3766
+ me(t, a, e);
3767
+ },
3768
+ updated(t, a) {
3769
+ me(t, a, e);
3770
+ }
3771
+ };
3772
+ }
3773
+ function gn(e, t) {
3774
+ e.directive("permission", Ki(t));
3775
+ }
3776
+ const R = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
3777
+ function Be(e) {
3778
+ e = e.replace(/\r\n/g, `
3779
+ `);
3780
+ let t = "";
3781
+ for (let a = 0; a < e.length; a++) {
3782
+ const i = e.charCodeAt(a);
3783
+ i < 128 ? t += String.fromCharCode(i) : i > 127 && i < 2048 ? (t += String.fromCharCode(i >> 6 | 192), t += String.fromCharCode(63 & i | 128)) : (t += String.fromCharCode(i >> 12 | 224), t += String.fromCharCode(i >> 6 & 63 | 128), t += String.fromCharCode(63 & i | 128));
3784
+ }
3785
+ return t;
3786
+ }
3787
+ function ze(e) {
3788
+ let t = "", a = 0, i = 0, s = 0, n = 0;
3789
+ for (; a < e.length; )
3790
+ i = e.charCodeAt(a), i < 128 ? (t += String.fromCharCode(i), a++) : i > 191 && i < 224 ? (s = e.charCodeAt(a + 1), t += String.fromCharCode((31 & i) << 6 | 63 & s), a += 2) : (s = e.charCodeAt(a + 1), n = e.charCodeAt(a + 2), t += String.fromCharCode((15 & i) << 12 | (63 & s) << 6 | 63 & n), a += 3);
3791
+ return t;
3792
+ }
3793
+ function Te(e) {
3794
+ let t, a, i, s, n, d, f, p = "", b = 0;
3795
+ for (e = Be(e); b < e.length; )
3796
+ t = e.charCodeAt(b++), a = e.charCodeAt(b++), i = e.charCodeAt(b++), s = t >> 2, n = (3 & t) << 4 | a >> 4, d = (15 & a) << 2 | i >> 6, f = 63 & i, isNaN(a) ? d = f = 64 : isNaN(i) && (f = 64), p = p + R.charAt(s) + R.charAt(n) + R.charAt(d) + R.charAt(f);
3797
+ return p;
3798
+ }
3799
+ function _e(e) {
3800
+ let t, a, i, s, n, d, f, p = "", b = 0;
3801
+ for (e = e.replace(/[^A-Za-z0-9+/=]/g, ""); b < e.length; )
3802
+ s = R.indexOf(e.charAt(b++)), n = R.indexOf(e.charAt(b++)), d = R.indexOf(e.charAt(b++)), f = R.indexOf(e.charAt(b++)), t = s << 2 | n >> 4, a = (15 & n) << 4 | d >> 2, i = (3 & d) << 6 | f, p += String.fromCharCode(t), d != 64 && (p += String.fromCharCode(a)), f != 64 && (p += String.fromCharCode(i));
3803
+ return p = ze(p);
3804
+ }
3805
+ function Ji(e) {
3806
+ if (!e)
3807
+ return "";
3808
+ const t = e;
3809
+ let a = "";
3810
+ for (let i = 0; i < t.length; i++)
3811
+ i < t.length - 3 && (i & 1) == 1 && (a += t[i]), i >= t.length - 3 && (a += t[i]);
3812
+ return _e(a);
3813
+ }
3814
+ function qi(e) {
3815
+ const t = Te(e);
3816
+ let a = "";
3817
+ const i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
3818
+ for (let s = 0; s < t.length; s++)
3819
+ a += (s > t.length - 3 ? "" : i.charAt(Math.floor(Math.random() * i.length))) + t[s];
3820
+ return a;
3821
+ }
3822
+ const yn = {
3823
+ encode: Te,
3824
+ decode: _e,
3825
+ randomDecode: Ji,
3826
+ randomEncode: qi,
3827
+ _utf8_encode: Be,
3828
+ _utf8_decode: ze
3829
+ }, Qi = [
3830
+ ut,
3831
+ Dt,
3832
+ zt,
3833
+ xt,
3834
+ Ee,
3835
+ Rt,
3836
+ ca,
3837
+ wa,
3838
+ Ua,
3839
+ oi,
3840
+ $,
3841
+ ui,
3842
+ mi,
3843
+ vi,
3844
+ Ci,
3845
+ Ei,
3846
+ Bi,
3847
+ Ui,
3848
+ ji
3849
+ ];
3850
+ function Xi(e) {
3851
+ Qi.forEach((t) => {
3852
+ t.name && e.component(t.name, t);
3853
+ }), e.directive("emoji", J), e.directive("highlight", Yi);
3854
+ }
3855
+ const bn = { install: Xi };
3856
+ export {
3857
+ y as $emit,
3858
+ De as $off,
3859
+ Ae as $on,
3860
+ sn as $once,
3861
+ Ui as AvatarUpload,
3862
+ Rt as BackPage,
3863
+ Ci as ChartComponent,
3864
+ yn as Encrypt,
3865
+ ji as FileUpload,
3866
+ oi as IconSelect,
3867
+ ui as KeyboardChart,
3868
+ mi as LineMarkerChart,
3869
+ vi as MixChart,
3870
+ Ee as MultipleTree,
3871
+ ca as PageDataInfo,
3872
+ wa as PageDecs,
3873
+ Ua as PageMoreDataInfo,
3874
+ zt as Pagination,
3875
+ Bi as ScaleSrceen,
3876
+ Dt as SearchForm,
3877
+ $ as SvgIcon,
3878
+ xt as TreeSelect,
3879
+ ut as UiapDrawer,
3880
+ Ei as VueCountTo,
3881
+ Ie as binaryDownloadBlob,
3882
+ Ne as binaryUpload,
3883
+ re as chartResizeMixin,
3884
+ Ki as createPermissionDirective,
3885
+ li as debounce,
3886
+ bn as default,
3887
+ J as emoji,
3888
+ Ve as getBinaryResource,
3889
+ Wa as getSvgIconNames,
3890
+ Yi as highlight,
3891
+ Xi as install,
3892
+ La as isExternal,
3893
+ pn as isInteger,
3894
+ Ha as isRegisteredSvgIcon,
3895
+ fn as registerSvgIcons,
3896
+ he as scrollTo,
3897
+ mn as setupBinaryApi,
3898
+ gn as setupPermissionDirective,
3899
+ Ga as useIcons,
3900
+ un as validBitMapString,
3901
+ hn as validEnumString,
3902
+ rn as validInputLength,
3903
+ cn as validLegalInput,
3904
+ ln as validMoblie,
3905
+ on as validPassword,
3906
+ dn as validSpecialName
3907
+ };