rhjy-ui 0.2.3 → 0.2.5

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.
@@ -1,245 +1,292 @@
1
- import { defineComponent as M, openBlock as l, createElementBlock as i, createElementVNode as y, toDisplayString as w, createCommentVNode as b, computed as V, normalizeClass as U, normalizeStyle as Z, Fragment as G, renderList as j, ref as p, onMounted as ee, withKeys as J, withModifiers as q, renderSlot as T, createTextVNode as X, createBlock as Y, createVNode as S, onBeforeUnmount as te, watch as le, nextTick as re, Teleport as ie, withCtx as x, normalizeProps as H, guardReactiveProps as O, resolveComponent as Q } from "vue";
2
- import { _ as ue } from "../_plugin-vue_export-helper-dad06003.js";
3
- const ce = { class: "rh-data-center-panel__state" }, W = /* @__PURE__ */ M({
1
+ import { defineComponent as G, openBlock as g, createElementBlock as C, createElementVNode as i, toDisplayString as E, createCommentVNode as m, computed as y, Fragment as x, renderList as ee, normalizeClass as F, normalizeStyle as Ae, ref as D, onMounted as re, withKeys as ne, withModifiers as te, renderSlot as M, createTextVNode as ae, unref as J, createBlock as se, createVNode as N, onBeforeUnmount as ie, watch as Ce, nextTick as Be, Teleport as we, withCtx as Y, normalizeProps as H, guardReactiveProps as z, resolveComponent as oe } from "vue";
2
+ import { _ as Qe } from "../_plugin-vue_export-helper-dad06003.js";
3
+ const ve = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMACjShra7a5p9iJRgAAABySURBVCjPY2AYnoDJEEILKyAJqpUIgChG9yQkQfNyRxAlUl6MJChSDlLK6A6RgwIIFyKFqhRNIUQpukKwUnSFYKUYCkFKMRQyMIiWlweiizGGl5eXCmAoBFoUiKEQ00nYHI/Vm1gDBGvQYQ1krNExnAAAumMiAKeIxeIAAAAASUVORK5CYII=", fe = { class: "rh-data-center-panel__state" }, _ = /* @__PURE__ */ G({
4
4
  __name: "RhDataCenterState",
5
5
  props: {
6
6
  text: {},
7
7
  retryable: { type: Boolean, default: !1 }
8
8
  },
9
9
  emits: ["retry"],
10
- setup(e, { emit: g }) {
11
- const a = g;
12
- return (r, d) => (l(), i("div", ce, [
13
- y("span", null, w(e.text), 1),
14
- e.retryable ? (l(), i("button", {
10
+ setup(e, { emit: s }) {
11
+ const t = s;
12
+ return (A, n) => (g(), C("div", fe, [
13
+ i("span", null, E(e.text), 1),
14
+ e.retryable ? (g(), C("button", {
15
15
  key: 0,
16
16
  type: "button",
17
17
  class: "rh-data-center-panel__retry",
18
- onClick: d[0] || (d[0] = (u) => a("retry"))
19
- }, " 重新加载 ")) : b("", !0)
18
+ onClick: n[0] || (n[0] = (r) => t("retry"))
19
+ }, " 重新加载 ")) : m("", !0)
20
20
  ]));
21
21
  }
22
- }), de = { class: "rh-data-center-panel__task" }, ve = { class: "rh-data-center-panel__taskMain" }, fe = { class: "rh-data-center-panel__taskTitle" }, ye = {
22
+ }), he = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAAWlBMVEUAAAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/Cwv/Dw//EhL/Fhb/Fxf/GRn/IiL/KCj/OTn/UFD/YmL/Y2P/09P/8vL/9PT/+Pj///+l0CkSAAAADHRSTlMACBAZXniqytXi8PGDfF85AAAAo0lEQVQYGQXBgW3EMAwEMPrkBEXR/Yd9v6WSC0iScru7wYK1nwD6fAeFet4FsPYyFPVuAKjMKOvZwFMNopXnBX5+X19Q08kD2GsV4EkSQDOAJAEYBiAJQNMASQF8+ADUBjBtAOQC6AZwdwP4ANC7ARwAutQC6u/9DtAnfQArWYDTZVaB7nOAcxQScC9wTytmFADOuRSmJwvQn9NYQJKU290N/gGgCUtLWaLgBQAAAABJRU5ErkJggg==", ke = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAAA1VBMVEUAAACqqqq2tra7u7u/v7+8vLy/v7+4uLi/v7+7u7u8vLy7u7u7u7u7u7u6urq6urq7u7u7u7u8vLy7u7u7u7u7u7u7u7u6urq8vLy7u7u7u7u7u7u7u7u7u7u7u7u7u7u8vLy7u7u7u7u7u7u7u7u7u7u7u7u7u7u9vb2+vr6/v7/Dw8PExMTFxcXGxsbKysrMzMzOzs7W1tbY2NjZ2dna2trb29vd3d3h4eHj4+Pm5ubo6Ojt7e3v7+/x8fHy8vL19fX5+fn6+vr7+/v8/Pz9/f3////p1IubAAAAJ3RSTlMABgcPEBcYGRxeX2F0dXd6rK2ur7DGyMnMzdfY2dvg4u7v8PHz9fY5lqNWAAAA8ElEQVQYGV3Bh1bCUBQEwE2hhY4CivS2QYNEQCxYQe//f5LvXXMOZQb/vKDaHk9bF4GPA6fYZ2JUcpFI13nkKgOV6vJELwvDafBM0wVQILkQ2asfeSBZBrwhjRfZLI2VrEKSAx85WnOJacQS0cqjRiuUNY0nCWlV0KL6loicy5aqgwnV7FO2zyIzqiGGVLci7x+ym1FN0KF6lYi8+/2iaqFCK5QNjZWEtGrI04okphHLnFYO/oBk+CaPS2MjaxoDDyiTvJfdXoksSBYAuE2eaTgwsj2e6KagMtc8Uk8j4ZZGTPSLDg784PJmOm5XAw/qDwUNP8Hzm6t5AAAAAElFTkSuQmCC", De = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAMAAADzapwJAAABJlBMVEUAAAAAgIAAkpIAiIgAgI8AhYUAgIoAhY8Af4kAgooAgYkAgYkAgooAg4kAg4kAgooAgooAgosAgooAgooAgooAgooAgooAgYoAgooAg4oAgooAgooAgokAgosAgooAgooAgooAgooAgooAgooAgosAgooAgooAgooBgooCg4sDg4sEhIwMiJANiJAPiZERipISi5ITi5MVjJQZjpUjk5osmJ41nKJCoqhEo6lFpKpKpqxUq7Bbr7Rjs7hptrpvuL1xub13vMGHxMiIxciKxsmPyMyUy86YzdCdz9Kg0dSi0dSj0tWw2Nu73eC83+HH5OXN5+jU6uve7/Dh8PHl8vPm8/Pm8/Tp9PXq9PXs9vfw9/jz+fr5/Pz7/f38/f39/v7+///////J1DpbAAAAJ3RSTlMABgcPEBcYGRxeX2F0dXd6rK2ur7DGyMnMzdfY2dvg4u7v8PHz9fY5lqNWAAAA8UlEQVQYGWXBBVvCUAAF0LugRqOATrouiGDMLuzuTmT//0/4eMyPgedgQDPimUrNnDB0DCnhAh3liAqHN0mXKR8kT44j8n4ISopj0iqAEP+JAlqJbs3VJbKoI0C35sHbJckgEnRp7n1+HZKMwaRgrTUozO5+fB8tkMyiSuHqpVMnGzvv3eM5CiWUKOx3nzdY3379OWmxr4oshda5fbe89dQ7bVMyEWOfdWPfPvTO5jmQQJDSyr1tXyzSEYBepLT5eN2mo6gBUQ6sW/wTAqCmOSalQPDnOSLngeSbpkvSC4caKdNRCCsY0o3JmVolEzc0SL8wUUBuqXfKcwAAAABJRU5ErkJggg==", Ee = { class: "rh-data-center-panel__task" }, Ie = { class: "rh-data-center-panel__taskMain" }, me = { class: "rh-data-center-panel__taskTitle" }, ye = {
23
23
  key: 0,
24
24
  class: "rh-data-center-panel__taskTag"
25
- }, he = {
26
- key: 0,
27
- class: "rh-data-center-panel__progress"
28
- }, me = { class: "rh-data-center-panel__meta" }, pe = {
25
+ }, Me = {
29
26
  key: 0,
30
27
  class: "rh-data-center-panel__actions"
31
- }, ge = ["disabled", "onClick"], ke = /* @__PURE__ */ M({
28
+ }, pe = ["disabled", "onClick"], Fe = { class: "rh-data-center-panel__meta" }, Se = { class: "rh-data-center-panel__progressRow" }, Pe = { class: "rh-data-center-panel__progress" }, Ye = ["src"], Te = /* @__PURE__ */ G({
32
29
  __name: "RhDataCenterTaskItem",
33
30
  props: {
34
31
  task: {}
35
32
  },
36
33
  emits: ["action"],
37
- setup(e, { emit: g }) {
38
- const a = e, r = g, d = V(() => {
39
- const u = Number(a.task.progress || 0);
40
- return Math.min(100, Math.max(0, u));
41
- });
42
- return (u, _) => {
43
- var k;
44
- return l(), i("div", de, [
45
- y("div", ve, [
46
- y("div", fe, [
47
- y("span", null, w(e.task.title), 1),
48
- e.task.tag ? (l(), i("span", ye, w(e.task.tag), 1)) : b("", !0)
34
+ setup(e, { emit: s }) {
35
+ const t = e, A = s, n = y(() => {
36
+ if (t.task.status === "success")
37
+ return 100;
38
+ const Q = Number(t.task.progress || 0);
39
+ return Math.min(100, Math.max(0, Q));
40
+ }), r = y(() => t.task.status === "success" ? De : t.task.status === "failed" ? he : t.task.status === "waiting" ? ke : ""), B = y(() => t.task.status === "success" && t.task.failCount !== void 0 && t.task.failCount > 0), k = (Q) => {
41
+ const f = Math.max(0, Math.floor(Q)), l = Math.floor(f / 60), h = String(f % 60).padStart(2, "0");
42
+ return `总时长约${l}分${h}秒`;
43
+ }, v = y(() => t.task.status === "success" && t.task.failCount !== void 0 ? B.value ? `失败记录(${t.task.failCount}条)` : "" : t.task.status === "processing" && t.task.taskSeconds !== void 0 ? k(t.task.taskSeconds) : t.task.message || "");
44
+ return (Q, f) => {
45
+ var l;
46
+ return g(), C("div", Ee, [
47
+ i("div", Ie, [
48
+ i("div", me, [
49
+ i("div", null, [
50
+ i("span", null, E(e.task.title), 1),
51
+ e.task.tag ? (g(), C("span", ye, E(e.task.tag), 1)) : m("", !0)
52
+ ]),
53
+ (l = e.task.actions) != null && l.length ? (g(), C("div", Me, [
54
+ (g(!0), C(x, null, ee(e.task.actions, (h) => (g(), C("span", {
55
+ key: h.key,
56
+ type: "button",
57
+ class: "rh-data-center-panel__action",
58
+ disabled: h.disabled,
59
+ onClick: (p) => A("action", h.key)
60
+ }, E(h.label), 9, pe))), 128))
61
+ ])) : m("", !0)
49
62
  ]),
50
- e.task.status !== "success" ? (l(), i("div", he, [
51
- y("div", {
52
- class: U(["rh-data-center-panel__progressBar", { "is-failed": e.task.status === "failed" }]),
53
- style: Z({ width: `${d.value}%` })
54
- }, null, 6)
55
- ])) : b("", !0),
56
- y("div", me, w(e.task.createdAt), 1),
57
- e.task.message ? (l(), i("div", {
58
- key: 1,
59
- class: U(["rh-data-center-panel__message", { "is-failed": e.task.status === "failed" }])
60
- }, w(e.task.message), 3)) : b("", !0)
61
- ]),
62
- (k = e.task.actions) != null && k.length ? (l(), i("div", pe, [
63
- (l(!0), i(G, null, j(e.task.actions, (C) => (l(), i("button", {
64
- key: C.key,
65
- type: "button",
66
- class: "rh-data-center-panel__action",
67
- disabled: C.disabled,
68
- onClick: ($) => r("action", C.key)
69
- }, w(C.label), 9, ge))), 128))
70
- ])) : b("", !0)
63
+ i("div", Fe, E(e.task.createdAt), 1),
64
+ i("div", Se, [
65
+ i("div", Pe, [
66
+ i("div", {
67
+ class: F(["rh-data-center-panel__progressBar", { "is-failed": e.task.status === "failed" }]),
68
+ style: Ae({ width: `${n.value}%` })
69
+ }, null, 6)
70
+ ]),
71
+ r.value ? (g(), C("img", {
72
+ key: 0,
73
+ src: r.value,
74
+ class: "rh-data-center-panel__progressStatusIcon",
75
+ alt: ""
76
+ }, null, 8, Ye)) : m("", !0)
77
+ ]),
78
+ v.value ? (g(), C("div", {
79
+ key: 0,
80
+ class: F(["rh-data-center-panel__message", {
81
+ "is-failed": e.task.status === "failed" || B.value,
82
+ "is-waiting": e.task.status === "waiting"
83
+ }])
84
+ }, E(v.value), 3)) : m("", !0)
85
+ ])
71
86
  ]);
72
87
  };
73
88
  }
74
- }), _e = "数据处理中心", Ce = 606, we = 500, be = 1e3, Te = "-此处仅展示近15天内的数据-", $e = { class: "rh-data-center-panel" }, Re = { class: "rh-data-center-panel__sidebar" }, Ee = ["aria-pressed", "onClick", "onKeydown"], Ae = {
89
+ }), Oe = "数据处理中心", Ue = 715, Ke = 500, ce = 160, be = 1e3, Je = "仅展示近15天内的数据", Le = "download", Re = "downloadFailure", $ = {
90
+ Download: Le,
91
+ DownloadFailure: Re
92
+ }, q = {
93
+ Download: "下载文件",
94
+ Redownload: "重新下载文件",
95
+ DownloadFailure: "下载失败记录"
96
+ }, He = { class: "rh-data-center-panel" }, ze = ["aria-pressed", "onClick", "onKeydown"], Ne = {
75
97
  key: 0,
76
98
  class: "rh-data-center-panel__categoryCount"
77
- }, De = { class: "rh-data-center-panel__main" }, Le = { class: "rh-data-center-panel__title" }, Ve = { class: "rh-data-center-panel__scroll" }, xe = {
99
+ }, xe = { class: "rh-data-center-panel__main" }, Ge = { class: "rh-data-center-panel__title rh-data-center-panel__header" }, Ze = ["src"], Ve = { class: "rh-data-center-panel__scroll" }, We = {
78
100
  key: 0,
79
101
  class: "rh-data-center-panel__footer"
80
- }, Be = /* @__PURE__ */ M({
102
+ }, je = /* @__PURE__ */ G({
81
103
  __name: "RhDataCenterPanel",
82
104
  props: {
83
105
  categories: {},
84
106
  loadTasks: {},
85
107
  activeCategoryKey: { default: void 0 },
108
+ sidebarWidth: { default: ce },
109
+ taskTagField: { default: "taskTypeName" },
86
110
  closeable: { type: Boolean, default: !0 },
87
111
  showTotal: { type: Boolean, default: !0 },
88
112
  showCategoryCount: { type: Boolean, default: !0 },
89
113
  categoryCounts: {},
90
- recentDaysText: { default: Te }
114
+ recentDaysText: { default: Je }
91
115
  },
92
116
  emits: ["close", "refresh", "task-action", "error"],
93
- setup(e, { expose: g, emit: a }) {
94
- const r = e, d = a, u = p(r.activeCategoryKey), _ = p({}), k = p({}), C = p({}), $ = p({}), E = p({}), v = V(() => r.categories.find((s) => s.key === u.value) || r.categories[0]), A = V(() => {
95
- var s;
96
- return String(((s = v.value) == null ? void 0 : s.key) ?? "");
97
- }), R = V(() => _.value[A.value]), K = V(() => k.value[A.value] === !0), D = V(() => C.value[A.value]), z = (s) => {
98
- var t, m, I;
99
- if (!r.showCategoryCount)
117
+ setup(e, { expose: s, emit: t }) {
118
+ const A = e, n = t, r = D(A.activeCategoryKey), B = D({}), k = D({}), v = D({}), Q = D({}), f = D({}), l = y(() => A.categories.find((o) => o.key === r.value) || A.categories[0]), h = y(() => {
119
+ var o;
120
+ return String(((o = l.value) == null ? void 0 : o.key) ?? "");
121
+ }), p = y(() => B.value[h.value]), Z = y(() => k.value[h.value] === !0), P = y(() => v.value[h.value]), V = (o) => typeof o == "number" ? `${o}px` : o, W = y(() => ({
122
+ width: V(A.sidebarWidth),
123
+ flexBasis: V(A.sidebarWidth)
124
+ })), T = (o) => {
125
+ if (o.tag !== void 0 || !o.raw || typeof o.raw != "object")
126
+ return o;
127
+ const d = o.raw[A.taskTagField];
128
+ return typeof d != "string" ? o : { ...o, tag: d };
129
+ }, U = (o) => {
130
+ var a, u, w;
131
+ if (!A.showCategoryCount)
100
132
  return;
101
- const c = String(s.key), n = (t = r.categoryCounts) == null ? void 0 : t[c];
102
- if (n !== void 0)
103
- return n;
104
- for (const o of Object.values(_.value)) {
105
- const h = (m = o.counts) == null ? void 0 : m[c];
106
- if (h !== void 0)
107
- return h;
133
+ const d = String(o.key), c = (a = A.categoryCounts) == null ? void 0 : a[d];
134
+ if (c !== void 0)
135
+ return c;
136
+ for (const b of Object.values(B.value)) {
137
+ const j = (u = b.counts) == null ? void 0 : u[d];
138
+ if (j !== void 0)
139
+ return j;
108
140
  }
109
- return (I = _.value[c]) == null ? void 0 : I.total;
110
- }, B = async (s = !1) => {
111
- const c = v.value;
112
- if (!c)
141
+ return (w = B.value[d]) == null ? void 0 : w.total;
142
+ }, O = async (o = !1) => {
143
+ const d = l.value;
144
+ if (!d)
113
145
  return;
114
- const n = String(c.key);
115
- if (E.value[n] && !s)
146
+ const c = String(d.key);
147
+ if (f.value[c] && !o)
116
148
  return;
117
- E.value[n] = !0, k.value[n] = !0, C.value[n] = void 0;
118
- const t = ($.value[n] || 0) + 1;
119
- $.value[n] = t, d("refresh", c);
149
+ f.value[c] = !0, k.value[c] = !0, v.value[c] = void 0;
150
+ const a = (Q.value[c] || 0) + 1;
151
+ Q.value[c] = a, n("refresh", d);
120
152
  try {
121
- const m = await r.loadTasks({ category: c });
122
- if ($.value[n] !== t || A.value !== n)
153
+ const u = await A.loadTasks({ category: d });
154
+ if (Q.value[c] !== a || h.value !== c)
123
155
  return;
124
- _.value[n] = m;
125
- } catch (m) {
126
- if ($.value[n] !== t || A.value !== n)
156
+ B.value[c] = u;
157
+ } catch (u) {
158
+ if (Q.value[c] !== a || h.value !== c)
127
159
  return;
128
- C.value[n] = m, d("error", m, c);
160
+ v.value[c] = u, n("error", u, d);
129
161
  } finally {
130
- $.value[n] === t && (k.value[n] = !1, E.value[n] = !1);
162
+ Q.value[c] === a && (k.value[c] = !1, f.value[c] = !1);
131
163
  }
132
- }, L = async (s) => {
133
- u.value !== s.key && (u.value = s.key, await B());
134
- }, P = (s, c) => {
135
- const n = v.value;
136
- n && d("task-action", { action: s, task: c, category: n });
164
+ }, K = async (o) => {
165
+ r.value !== o.key && (r.value = o.key, await O());
166
+ }, L = (o, d) => {
167
+ const c = l.value;
168
+ c && n("task-action", { action: o, task: d, category: c });
137
169
  };
138
- return ee(() => {
139
- var s;
140
- u.value === void 0 && (u.value = (s = r.categories[0]) == null ? void 0 : s.key);
141
- }), g({
142
- refresh: B
143
- }), (s, c) => {
144
- var n;
145
- return l(), i("div", $e, [
146
- y("aside", Re, [
147
- c[1] || (c[1] = y("div", { class: "rh-data-center-panel__title" }, "数据类型", -1)),
148
- (l(!0), i(G, null, j(e.categories, (t) => (l(), i("div", {
149
- key: t.key,
170
+ return re(() => {
171
+ var o;
172
+ r.value === void 0 && (r.value = (o = A.categories[0]) == null ? void 0 : o.key);
173
+ }), s({
174
+ refresh: O
175
+ }), (o, d) => {
176
+ var c;
177
+ return g(), C("div", He, [
178
+ i("aside", {
179
+ class: "rh-data-center-panel__sidebar",
180
+ style: Ae(W.value)
181
+ }, [
182
+ d[1] || (d[1] = i("div", { class: "rh-data-center-panel__title" }, "数据类型", -1)),
183
+ (g(!0), C(x, null, ee(e.categories, (a) => (g(), C("div", {
184
+ key: a.key,
150
185
  role: "button",
151
186
  tabindex: "0",
152
- class: U(["rh-data-center-panel__category", { "is-active": u.value === t.key }]),
153
- "aria-pressed": u.value === t.key,
154
- onClick: (m) => L(t),
187
+ class: F(["rh-data-center-panel__category", { "is-active": r.value === a.key }]),
188
+ "aria-pressed": r.value === a.key,
189
+ onClick: (u) => K(a),
155
190
  onKeydown: [
156
- J((m) => L(t), ["enter"]),
157
- J(q((m) => L(t), ["prevent"]), ["space"])
191
+ ne((u) => K(a), ["enter"]),
192
+ ne(te((u) => K(a), ["prevent"]), ["space"])
158
193
  ]
159
194
  }, [
160
- y("span", null, w(t.label), 1),
161
- z(t) !== void 0 ? (l(), i("span", Ae, w(z(t)), 1)) : b("", !0)
162
- ], 42, Ee))), 128))
163
- ]),
164
- y("section", De, [
165
- y("div", Le, [
166
- T(s.$slots, "header", { category: v.value }, () => [
167
- c[2] || (c[2] = X("数据处理进度", -1))
195
+ i("span", null, E(a.label), 1),
196
+ U(a) !== void 0 ? (g(), C("span", Ne, E(U(a)), 1)) : m("", !0)
197
+ ], 42, ze))), 128))
198
+ ], 4),
199
+ i("section", xe, [
200
+ i("div", Ge, [
201
+ M(o.$slots, "header", { category: l.value }, () => [
202
+ d[2] || (d[2] = i("div", null, [
203
+ ae(" 数据处理进度 "),
204
+ i("div", { class: "rh-data-center-panel__subtitle" }, "任务处理状态监控")
205
+ ], -1))
168
206
  ]),
169
- e.closeable ? (l(), i("button", {
207
+ e.closeable ? (g(), C("button", {
170
208
  key: 0,
171
209
  type: "button",
172
- class: "rh-data-center-panel__action",
173
- onClick: c[0] || (c[0] = (t) => d("close"))
174
- }, "关闭")) : b("", !0)
210
+ class: "rh-data-center-panel__action rh-data-center-panel__closeAction",
211
+ "aria-label": "关闭",
212
+ onClick: d[0] || (d[0] = (a) => n("close"))
213
+ }, [
214
+ i("img", {
215
+ src: J(ve),
216
+ class: "rh-data-center-panel__closeIcon",
217
+ alt: ""
218
+ }, null, 8, Ze)
219
+ ])) : m("", !0)
175
220
  ]),
176
- y("div", Ve, [
177
- K.value && !R.value ? (l(), Y(W, {
221
+ i("div", Ve, [
222
+ Z.value && !p.value ? (g(), se(_, {
178
223
  key: 0,
179
224
  text: "加载中..."
180
- })) : D.value && !R.value ? T(s.$slots, "error", {
225
+ })) : P.value && !p.value ? M(o.$slots, "error", {
181
226
  key: 1,
182
- error: D.value,
183
- retry: B
227
+ error: P.value,
228
+ retry: O
184
229
  }, () => [
185
- S(W, {
230
+ N(_, {
186
231
  text: "任务加载失败",
187
232
  retryable: !0,
188
- onRetry: B
233
+ onRetry: O
189
234
  })
190
- ]) : (n = R.value) != null && n.items.length ? (l(!0), i(G, { key: 2 }, j(R.value.items, (t) => T(s.$slots, "task", {
191
- key: t.id,
192
- task: t,
193
- category: v.value,
194
- action: P
235
+ ]) : (c = p.value) != null && c.items.length ? (g(!0), C(x, { key: 2 }, ee(p.value.items, (a) => M(o.$slots, "task", {
236
+ key: a.id,
237
+ task: T(a),
238
+ category: l.value,
239
+ action: L
195
240
  }, () => [
196
- S(ke, {
197
- task: t,
198
- onAction: (m) => P(m, t)
241
+ N(Te, {
242
+ task: T(a),
243
+ onAction: (u) => L(u, a)
199
244
  }, null, 8, ["task", "onAction"])
200
- ])), 128)) : T(s.$slots, "empty", {
245
+ ])), 128)) : M(o.$slots, "empty", {
201
246
  key: 3,
202
- category: v.value
247
+ category: l.value
203
248
  }, () => [
204
- S(W, { text: "暂无任务" })
249
+ N(_, { text: "暂无任务" })
205
250
  ])
206
251
  ]),
207
- T(s.$slots, "footer", {
208
- result: R.value,
209
- category: v.value
252
+ M(o.$slots, "footer", {
253
+ result: p.value,
254
+ category: l.value
210
255
  }, () => {
211
- var t;
256
+ var a;
212
257
  return [
213
- e.showTotal ? (l(), i("div", xe, [
214
- y("span", null, w(((t = R.value) == null ? void 0 : t.total) || 0) + "条记录", 1),
215
- y("span", null, w(e.recentDaysText), 1)
216
- ])) : b("", !0)
258
+ e.showTotal ? (g(), C("div", We, [
259
+ i("span", null, E(((a = p.value) == null ? void 0 : a.total) || 0) + "条记录", 1),
260
+ i("span", null, E(e.recentDaysText), 1)
261
+ ])) : m("", !0)
217
262
  ];
218
263
  })
219
264
  ])
220
265
  ]);
221
266
  };
222
267
  }
223
- }), Pe = (e) => typeof e == "function" ? e() : e.value, Ie = (e, g) => {
224
- const a = (r) => {
225
- const d = r.target;
226
- if (!d)
268
+ }), qe = (e) => typeof e == "function" ? e() : e.value, Xe = (e, s) => {
269
+ const t = (A) => {
270
+ const n = A.target;
271
+ if (!n)
227
272
  return;
228
- e.some((_) => {
273
+ e.some((B) => {
229
274
  var k;
230
- return (k = Pe(_)) == null ? void 0 : k.contains(d);
231
- }) || g();
275
+ return (k = qe(B)) == null ? void 0 : k.contains(n);
276
+ }) || s();
232
277
  };
233
- ee(() => document.addEventListener("click", a, !0)), te(() => document.removeEventListener("click", a, !0));
234
- }, Ne = ["src"], He = /* @__PURE__ */ M({
278
+ re(() => document.addEventListener("click", t, !0)), ie(() => document.removeEventListener("click", t, !0));
279
+ }, _e = ["src"], $e = /* @__PURE__ */ G({
235
280
  __name: "RhDataCenter",
236
281
  props: {
237
282
  modelValue: { type: Boolean, default: void 0 },
238
283
  categories: {},
239
284
  loadTasks: {},
240
- label: { default: _e },
241
- width: { default: Ce },
242
- panelHeight: { default: we },
285
+ label: { default: Oe },
286
+ width: { default: Ue },
287
+ panelHeight: { default: Ke },
288
+ sidebarWidth: { default: ce },
289
+ taskTagField: { default: "taskTypeName" },
243
290
  panelRight: { default: 0 },
244
291
  pollInterval: { default: be },
245
292
  refreshOnOpen: { type: Boolean, default: !0 },
@@ -250,141 +297,146 @@ const ce = { class: "rh-data-center-panel__state" }, W = /* @__PURE__ */ M({
250
297
  activeIcon: { default: "" }
251
298
  },
252
299
  emits: ["update:modelValue", "open", "close", "refresh", "task-action", "error"],
253
- setup(e, { emit: g }) {
254
- const a = e, r = g, d = p(!1), u = p(null), _ = p(null), k = p(null), C = p({}), $ = p(), E = p(!1), v = V(() => a.modelValue === void 0 ? d.value : a.modelValue), A = V(() => v.value ? a.activeIcon || a.icon : a.icon || a.activeIcon), R = (o) => typeof o == "number" ? `${o}px` : o, K = (o) => typeof o == "number" ? o : Number.parseFloat(o) || 0, D = () => {
255
- const o = u.value, h = _.value;
256
- if (!o || !h)
300
+ setup(e, { emit: s }) {
301
+ const t = e, A = s, n = D(!1), r = D(null), B = D(null), k = D(null), v = D({}), Q = D(), f = D(!1), l = y(() => t.modelValue === void 0 ? n.value : t.modelValue), h = y(() => l.value ? t.activeIcon || t.icon : t.icon || t.activeIcon), p = (a) => typeof a == "number" ? `${a}px` : a, Z = (a) => typeof a == "number" ? a : Number.parseFloat(a) || 0, P = () => {
302
+ const a = r.value, u = B.value;
303
+ if (!a || !u)
257
304
  return;
258
- const f = o.getBoundingClientRect(), F = h.offsetWidth || K(a.width), ae = K(a.panelRight), N = 8, ne = f.right - F - ae, oe = Math.min(
259
- Math.max(N, ne),
260
- Math.max(N, window.innerWidth - F - N)
261
- ), se = Math.min(
262
- f.bottom + 8,
263
- Math.max(N, window.innerHeight - h.offsetHeight - N)
305
+ const w = a.getBoundingClientRect(), b = u.offsetWidth || Z(t.width), j = Z(t.panelRight), R = 8, ue = w.right - b - j, ge = Math.min(
306
+ Math.max(R, ue),
307
+ Math.max(R, window.innerWidth - b - R)
308
+ ), de = Math.min(
309
+ w.bottom + 8,
310
+ Math.max(R, window.innerHeight - u.offsetHeight - R)
264
311
  );
265
- C.value = {
266
- top: `${se}px`,
267
- left: `${oe}px`,
268
- width: R(a.width),
269
- "--rh-ui-data-center-panel-height": R(a.panelHeight)
312
+ v.value = {
313
+ top: `${de}px`,
314
+ left: `${ge}px`,
315
+ width: p(t.width),
316
+ "--rh-ui-data-center-panel-height": p(t.panelHeight)
270
317
  };
271
- }, z = () => {
272
- E.value || (E.value = !0, window.addEventListener("resize", D), window.addEventListener("scroll", D, !0));
273
- }, B = () => {
274
- E.value && (E.value = !1, window.removeEventListener("resize", D), window.removeEventListener("scroll", D, !0));
318
+ }, V = () => {
319
+ f.value || (f.value = !0, window.addEventListener("resize", P), window.addEventListener("scroll", P, !0));
320
+ }, W = () => {
321
+ f.value && (f.value = !1, window.removeEventListener("resize", P), window.removeEventListener("scroll", P, !0));
322
+ }, T = () => {
323
+ Q.value !== void 0 && (window.clearInterval(Q.value), Q.value = void 0);
324
+ }, U = () => {
325
+ var a;
326
+ (a = k.value) == null || a.refresh();
327
+ }, O = () => {
328
+ T(), !(!l.value || t.pollInterval <= 0) && (Q.value = window.setInterval(U, t.pollInterval));
329
+ }, K = (a) => {
330
+ t.modelValue === void 0 && (n.value = a), A("update:modelValue", a);
275
331
  }, L = () => {
276
- $.value !== void 0 && (window.clearInterval($.value), $.value = void 0);
277
- }, P = () => {
278
- var o;
279
- (o = k.value) == null || o.refresh();
280
- }, s = () => {
281
- L(), !(!v.value || a.pollInterval <= 0) && ($.value = window.setInterval(P, a.pollInterval));
282
- }, c = (o) => {
283
- a.modelValue === void 0 && (d.value = o), r("update:modelValue", o);
284
- }, n = () => {
285
- v.value || (c(!0), r("open"));
286
- }, t = () => {
287
- v.value && (c(!1), r("close"));
288
- }, m = () => v.value ? t() : n(), I = () => {
332
+ l.value || (K(!0), A("open"));
333
+ }, o = () => {
334
+ l.value && (K(!1), A("close"));
335
+ }, d = () => l.value ? o() : L(), c = () => {
289
336
  if (document.visibilityState === "hidden") {
290
- L();
337
+ T();
291
338
  return;
292
339
  }
293
- s(), P();
340
+ O(), U();
294
341
  };
295
- return le(v, async (o) => {
296
- if (L(), B(), !o) {
297
- document.removeEventListener("visibilitychange", I);
342
+ return Ce(l, async (a) => {
343
+ if (T(), W(), !a) {
344
+ document.removeEventListener("visibilitychange", c);
298
345
  return;
299
346
  }
300
- await re(), D(), z(), document.addEventListener("visibilitychange", I), a.refreshOnOpen && P(), s();
301
- }, { immediate: !0 }), Ie([u, _], () => {
302
- a.closeOnClickOutside && v.value && t();
303
- }), te(() => {
304
- L(), B(), document.removeEventListener("visibilitychange", I);
305
- }), (o, h) => (l(), i(G, null, [
306
- y("div", {
347
+ await Be(), P(), V(), document.addEventListener("visibilitychange", c), t.refreshOnOpen && U(), O();
348
+ }, { immediate: !0 }), Xe([r, B], () => {
349
+ t.closeOnClickOutside && l.value && o();
350
+ }), ie(() => {
351
+ T(), W(), document.removeEventListener("visibilitychange", c);
352
+ }), (a, u) => (g(), C(x, null, [
353
+ i("div", {
307
354
  ref_key: "triggerRef",
308
- ref: u,
355
+ ref: r,
309
356
  class: "rh-data-center",
310
- onClick: q(m, ["stop"])
357
+ onClick: te(d, ["stop"])
311
358
  }, [
312
- T(o.$slots, "trigger", {
313
- visible: v.value,
314
- open: n,
315
- close: t,
316
- toggle: m
359
+ M(a.$slots, "trigger", {
360
+ visible: l.value,
361
+ open: L,
362
+ close: o,
363
+ toggle: d
317
364
  }, () => [
318
- y("span", {
319
- class: U(["rh-data-center__trigger", { "is-active": v.value }])
365
+ i("span", {
366
+ class: F(["rh-data-center__trigger", { "is-active": l.value }])
320
367
  }, [
321
- A.value ? (l(), i("img", {
368
+ h.value ? (g(), C("img", {
322
369
  key: 0,
323
- src: A.value,
370
+ src: h.value,
324
371
  class: "rh-data-center__icon",
325
372
  alt: ""
326
- }, null, 8, Ne)) : b("", !0),
327
- y("span", null, w(e.label), 1)
373
+ }, null, 8, _e)) : m("", !0),
374
+ i("span", null, E(e.label), 1)
328
375
  ], 2)
329
376
  ], !0)
330
377
  ], 512),
331
- (l(), Y(ie, { to: "body" }, [
332
- v.value ? (l(), i("div", {
378
+ (g(), se(we, { to: "body" }, [
379
+ l.value ? (g(), C("div", {
333
380
  key: 0,
334
381
  ref_key: "contentRef",
335
- ref: _,
382
+ ref: B,
336
383
  class: "rh-data-center__popover",
337
- style: Z(C.value),
338
- onClick: h[3] || (h[3] = q(() => {
384
+ style: Ae(v.value),
385
+ onClick: u[3] || (u[3] = te(() => {
339
386
  }, ["stop"]))
340
387
  }, [
341
- S(Be, {
388
+ N(je, {
342
389
  ref_key: "panelRef",
343
390
  ref: k,
344
391
  categories: e.categories,
345
392
  "load-tasks": e.loadTasks,
393
+ "sidebar-width": e.sidebarWidth,
394
+ "task-tag-field": e.taskTagField,
346
395
  closeable: !0,
347
396
  "show-category-count": e.showCategoryCount,
348
397
  "category-counts": e.categoryCounts,
349
- onClose: t,
350
- onRefresh: h[0] || (h[0] = (f) => r("refresh", f)),
351
- onTaskAction: h[1] || (h[1] = (f) => r("task-action", f)),
352
- onError: h[2] || (h[2] = (f, F) => r("error", f, F))
398
+ onClose: o,
399
+ onRefresh: u[0] || (u[0] = (w) => A("refresh", w)),
400
+ onTaskAction: u[1] || (u[1] = (w) => A("task-action", w)),
401
+ onError: u[2] || (u[2] = (w, b) => A("error", w, b))
353
402
  }, {
354
- header: x((f) => [
355
- T(o.$slots, "header", H(O(f)), () => [
356
- h[4] || (h[4] = X("数据处理进度", -1))
403
+ header: Y((w) => [
404
+ M(a.$slots, "header", H(z(w)), () => [
405
+ u[4] || (u[4] = i("div", null, [
406
+ ae(" 数据处理进度 "),
407
+ i("div", { class: "rh-data-center-panel__subtitle" }, "任务处理状态监控")
408
+ ], -1))
357
409
  ], !0)
358
410
  ]),
359
- task: x((f) => [
360
- T(o.$slots, "task", H(O(f)), void 0, !0)
411
+ task: Y((w) => [
412
+ M(a.$slots, "task", H(z(w)), void 0, !0)
361
413
  ]),
362
- empty: x((f) => [
363
- T(o.$slots, "empty", H(O(f)), void 0, !0)
414
+ empty: Y((w) => [
415
+ M(a.$slots, "empty", H(z(w)), void 0, !0)
364
416
  ]),
365
- error: x((f) => [
366
- T(o.$slots, "error", H(O(f)), void 0, !0)
417
+ error: Y((w) => [
418
+ M(a.$slots, "error", H(z(w)), void 0, !0)
367
419
  ]),
368
- footer: x((f) => [
369
- T(o.$slots, "footer", H(O(f)), void 0, !0)
420
+ footer: Y((w) => [
421
+ M(a.$slots, "footer", H(z(w)), void 0, !0)
370
422
  ]),
371
423
  _: 3
372
- }, 8, ["categories", "load-tasks", "show-category-count", "category-counts"])
373
- ], 4)) : b("", !0)
424
+ }, 8, ["categories", "load-tasks", "sidebar-width", "task-tag-field", "show-category-count", "category-counts"])
425
+ ], 4)) : m("", !0)
374
426
  ]))
375
427
  ], 64));
376
428
  }
377
429
  });
378
- const Ue = /* @__PURE__ */ ue(He, [["__scopeId", "data-v-a3a35657"]]), Oe = {
430
+ const It = /* @__PURE__ */ Qe($e, [["__scopeId", "data-v-b34c61dc"]]), et = "data:image/png;base64,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ERe60IXCM57xjLDjjv5fpRvM6bsO3wIOoKE8o9///vdh++23DxtttFHYfPPNR9U6++yzw5/+9KdwoxvdKLzzne/sVV3O/fOf/zygpLbddlvzHP/973/D97///XD1q189XOISl2i6zi9+8YuAcrvoRS8arnGNazQd27rzOeecE37wgx909eR6ufK73/0u/POf/+zU4xZbrK7/yP2HP/whfP7zn+9u7453vGO4/OUv32qqqv1//etfd+feeGNGsKx4cQCtuMkTF6QhoHCudrWrhaOOumDp6p/85CfhgQ98YLj+9a8f3vOe91RV98Mf/nA44YQTwj777BNufOMbhyOOOCK88pWvHDv3U57ylA5qe+65Z9hkk03CD3/4w/CQhzykO/+b3vSmcKtb3arqWuy03377hU984hPhlre8ZXjzm988Ou74448P//nPf6rPIzve6173Cpe85CXN47797W+HRz/60d13b3zjG8NtbnOb5Pmf+cxnhk9/+tPhute9bnjf+97XXA99ABD/5je/2XQeOved73znpmPY+Wtf+1p4/OMf3+t51FwMN/9d73pXeMc73hHucY97hBe+8IU1h017HwfQtC3a93zTBBAQoHHd7na3C69//euXAei4444LL3nJS8LWW28dPvjBD3aqC1i8+MUv7qr/oQ99KFz5yleuvpUUgFB0qK/WcthhhyWV1Fve8pau01A++tGPjqlFfZ0WAGEPAJMqt7/97cPFL37x8IpXvKLpdm5xi1uEgw46qOmYlQAQ13jBC14QPvKRj3R1e9KTnhQe9KAHNddzwgMcQBMacGqHTxNA//jHP8IOO+wQ/vWvf3WAOfnkk0cK6O1vf3vYZZddwt///vfw1re+deSSve51rwsf+MAHAvEm4lDr1sly3eVbLAHo0pe+dOAnV84888yADSg5AKHSUGuXvexlw8c+9rHsOVsA9PCHPzx873vfS54Pe6KkANCGG24YbnKTm3T7oiROOumk7vOWW245AuKpp54a/vznP4chAwi3+1GPelRnzw022KB7WeUUZbklNO/hAGo2WY8DcAPe//73h7POOmvsaFwf3jp3vetdu843LReMixxyyCFdrOQJT3hC10HEBQM0L3vZy7oOLIqH/ZH7yH7iKqlgN7EI6XjxjZQAhMu01157ZS1HXR/60IdmAQQ07373u3ed/gpXuEK4973v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", tt = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAABwCAYAAAA62R3EAAAAAXNSR0IArs4c6QAAFX9JREFUeF7tnQW0FdX3x/egYoHdgV2g2N2oKHZ3i4GgAnZ3K6CCGNjdLYqKnctEwVwGdgdYqNz/73Nk3/8wzNw75955c513917rLR73njnnzPec79k58wIxMQQMgaZBIGiaO7UbNQQMATHC2yYwBJoIASN8Ey223aohYIS3PWAINBECRvgmWmy7VUPACG97wBBoIgSM8E202HarhoAR3vaAIdBECBjhm2ix7VYNASO87QFDoIkQMMI30WLbrRoCdRO+VCp1EpHuItJVRDqISDuD1RAwBDJDYKyIjBaRYSIyJAiCkfX0XDPhS6VSWxHpJyI9RKRNPZOwaw0BQyAVAuNFZLCI9A2CYFyqKyKNaiL8BLIPFZEutQxq1xgChkBdCAwXkW61kL5Wwg8UkZ51TdkuNgQMgXoQGBQEQS/fDrwJP8FnH2FmvC/U1t4QyBQBzPvOvj59LYTvLyK9M526dWYIGAK1IDAgCII+PhfWQniihB19BrG2hoAh0CIIjAqCgCxZaqmF8GMs9ZYaX2toCLQkAmODIGjvM0AthC/5DGBtDQFDoOUQCILAi8NejZl2qVQywrfc+lnPhoAXAkZ4L7issSFQbASM8MVeP5u9IeCFgBHeCy5rbAgUGwEjfLHXz2ZvCHghYIT3gssaGwLFRsAIX+z1s9kbAl4IGOG94LLGhkCxETDCF3v9bPaGgBcCRngvuKyxIVBsBIzwxV4/m70h4IWAEd4LLmtsCBQbASN8sdfPZm8IeCFghPeCyxobAsVGwAhf7PWz2RsCXggY4b3gssaGQLERMMIXe/1s9oaAFwJGeC+4rLEhUGwEjPDFXj+bvSHghYAR3gsua2wIFBsBI3yx189mbwh4IWCE94LLGhsCxUbACP+/P4vz008/yfjx/CWe/5dppplGpppqqmKvrs3eEIgg0PSEP+SQQ+TZZ5+dZGO0bdtWjjjiCNlyyy1t0xgCrQaBpib8V199JZtuuqlMPvnkMuuss5YX9a+//pLvvvtOOnfuLFdeeWVNi03fH3zwgWApLLfccrF9jBs3Tt566y1ZaKGFZPrpp/ca5+OPP3aWSbt27WThhRf2uta38d9//y0jR45082S8SvLll1/KmDFjnHXUoUMH36Ea2v7rr7+WJ5980s1h7bXXltlnn71F5vPZZ5+5vqeYYooW6b9Sp01NeIBHg88///xy++23l3F69913ZZdddpFOnTrJNddck2pR7rvvPrn//vvlwAMPlKWXXlpuvfVWOeeccybqu2/fvu4Q2WmnnWTKKaeUUaNGye677+76HzhwoKyyyiqpxqLRMcccI8OGDZOVV15ZBg0aVL7u3nvvld9++y11P9pwo402khlmmCH2utdee0323Xdf992FF14oq622WmL/Rx55pDz22GOyxBJLyHXXXec9j+gFHJovv/yyVz+Qad111/W6hsYvvPCC9Or1719U9l2PNIPhNl511VVyxRVXSNeuXeWkk05Kc1mmbYzwGREe0rGYa6yxhgwYMGASwt99991y2mmnyYILLig33nijsyog5ymnnOIW9J577pG555479eImER6LBevCV26++eZES2Hw4MFukyJDhw6dyBqKjuNDePCA0Emy5pprynTTTSdnn3221+2stNJKcvHFF3tdkwfhGePEE0+UBx54wM2td+/esuuuu3rPs54LjPAZEf6XX36RzTffXMaOHesI/frrr5c1/JAhQ2SbbbaRn3/+WS677LKyid+/f3+54YYbhHgBcQSfP/tVjfAzzTST8FNJ/vjjD8HKQSoRHisEa2SWWWaRhx56qGKfPoTfa6+95M0330zsDzyxFCD8ZJNNJssuu6xri6Z89dVX3e/zzTdf+QD66KOP5Pvvv5f/MuFx47p37+7wbNOmjVMOlSymesgdd22rJTxm5fXXXy9//vnnRPeNKc2put5667nNnpVJzyCXXnqp83UPPvhgtyHVpIfYZ555piOManTaYz5iRuIXJwUH8SV1o4dvpBrhMcH333//ivuFue6xxx4VCc8htcEGGziSzTHHHNKtW7dJ+mSOSy65pPvch/AcMmqNoPV+/PFHmXfeeZ3/jOBSEaeA8NNOO23Zv2ZNV199ddfm6KOPdocpgomMW/VfJjzz/Oabb2S33XZzhxNrj4KYa665suZ2bH+tlvD4pATe4kQ1VVaE//DDD50/HRZO8Oeee875xdtuu637iuAXpjyHzSKLLCKV5qh9HXrooc7nR5566il544033O8ElwjczTnnnM4fRHr27OmsDEiUFeEfeeQRR6pKctRRR5Xv0Yfw4T533nlnee+995zvfe6555a/uu222zIhPLGY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", At = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF4AAABeCAYAAACq0qNuAAAAAXNSR0IArs4c6QAABPhJREFUeF7tnOuvVUUMxdcS8BEF34pRfEcUlfiMX/zvNTEgmCiiBhEMBFCDQIIgoFizzJzk5JoLm3vb6eydNrnfzm47v93bPdPpDFGSQoApVssoCnxSEBT4Ap9EIMlsRXyBTyKQZLYivsAnEUgyWxFf4JMIJJmtiC/wSQSSzFbEF/j/EzAzBcaDAB5qfzsB7ABwH4Db7e8vAH8CuE7yVhLHezY7XMSbmSA/CeBxAI820FMHdhPAFQCXAfxO8u+pD/b+3RDgW2Q/C+A5AHucIPwj+ADOk9TLGErSwZvZ0wBeaakkCs4lAKdIXosycK9608CbmdLIq44RPmXsvwD4maRSUqp0B29m+jC+AUCpJUOUgk6SvJBhfGWzK3gzux/AOwB2Zw662T4H4CeSluFLN/BmJtiCLvijiGY/32XMfrqAN7OnALzV5t+jQF/5oTXANyRv9HQsHLyZaXr4HjD0xvp1AF+R1KKsi4SCN7MHAHwwWHrZDKzm/Md75fww8G32okgf4UM6NYrPkjw19cfb+V0keOX0Z7bjXNKz35P8Ldp2CHgzU53lYLTzQfpVdDscPdNxB9/qLsrrjwSB6aH2DMnTkYYiwGtF+mak0x10a3V7KLLM7Aq+fVA/bjX0DnxCTVwgeSLKgjf45wG8HuVsgl7lei2w3MUb/Iczz+0bAYflejfwZvYwgI/cQyNXocoIinr3Qpon+JcBvJTLKcS6SglXvTV7gtcqVZsbSxPtXJ31HpQL+Dab+XTwQthW2V0ieWyrD2/2nBd4LZb0YV2i3CL5hffAvMCrJqPazFLlc++SsRd4fVT1cV2qHCX5h+fgvMC/BuAFT8cG06UdKm0TuokX+P0A9rp5NZ4ibZBc9HTLC/xca+9TWbrX6L3Aq09G7XdLlW9JamvQTbzALz3Hf+3df+kF/sXW/+gWEYMpOuLdd+kFXo2nBwaD5enOZyS1OeImXuCXWJlcQb5B8pAb8abIC7z0qFajhtSlyUWSx70H5QJeTpnZuwCe8HZwAH0/kjzv7Ycn+H2t393bx2x9X5JUi5+reILXIbFPXL3LV3aN5JEIN9zAt3SztM2QkE0QsfIGv6TycGhvjTd46Zt7F9kqs4R1GLhHfEs3c+6bXEEP7590jfiV12amhlW9gLmKDqfpjFSYRIGf8x6semk0hXQtEWx8gyHgW8rRoWEVz+YkalzSblP4SfBI8NL9druXYC7wT/Q6/xoGvkW9btp4H4CKaKPLOZInezkZCr7B14pWU8xdvQa1BTvayD4W0SO5mS/h4Bv8EQ8Xr5gon2szu+sVK13AN/g6eqmcP9IpQFUdNXV07wa+239dN/ANvur1OqajHatMEWgBdy/3Th1UV/Arp8xM00x1n2VsnOjKlB96TBnv9BJSwK+lHrX99WqEUg4/A0Czl9DF0ZSoTwO/Fv2aaurCoKjdK6UVLf9V9FINZghJB7/2AnTZhJqilP81/9+uaOn/KwCd3ku/kWnjYIYBv/YClPcfW7uFT/8RU74FSiU6MvPfLXwRx2e2Gwnrzw8HfuPg2klxTUV1LeJm907qzslh0siUFzQ8+CmDmONvCnzSWyvwBT6JQJLZivgCn0QgyWxFfIFPIpBktiK+wCcRSDJbEV/gkwgkma2IL/BJBJLMVsQX+CQCSWYr4gt8EoEksxXxBT6JQJLZivgCn0QgyWxFfBL4fwFyO0ZuEU73UAAAAABJRU5ErkJggg==", at = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAAB2CAYAAAAA9ZvPAAAAAXNSR0IArs4c6QAAF3NJREFUeF7tnQe4d0dRxmfEroCCSEnoAQxYIIB0JCBSpEZAmkIQkKYgkgRI6C0Q6U1aEDCCoQSQFgmhhQAasNGLKCgqIoqACpbX/d1v9z5z957zv6feeuZ57vMk3//snj175uzOvvPOjNsiB3oGfI6nl0S/VzGzq5rZ+c3sB8zsn8zss2b2MXf/jznuu/TZfwYmVQBJlzGzE83stmZ2kZbh8PLfZmavcvc39x/y0mLKGZhEASR9n5n9jpn9upl9T48BftjMHuru5/Zos1w64QyMVgBJF0hL/RvN7OiB4/pfMzvO3Z85sP3SbMQMjFIASeczs/eb2XUaxvAv+be/M7PvmNmlzOwoM7tcy3hPSbbB8SOeZWk6YAbGKsBxZva06r6fyXbA691d9ZgkXc3MeNG/bGb1/e/l7i8f8BxLk4EzMFgBJF3CzD6XLfxy+/ea2W3c/d+3Go+knzezP6iMxW+Y2WXdndVjkW2YgTEKcIKZnRzG+BUzO9Ldv9Z13JJ+Om8T2BFFTnb3R3TtY7lu3AyMUYCP5bN+GcH93f13+w5H0m+Y2XNCu6+a2SXc/b/79rVc338GBimApIub2ZfD7b5tZhdz93/rO4R8hKSvC4W2bCN/1Lev5fr+MzBUAW5qZn8cbvdBd79u/9sfaiHphWZ2v9D+te5+p6H9Le26z8BQBbhPWqZfHG5zqrv/WvfbbrxSEsrzgfCv/5VXlK8P7XNp120GhipAvW8/Oy3/D+l2y+arJHGiuHz49T7u/tIxfS5tt56BoQrwm2b27ND989LRDaUYLJIekxo/NnTwfne/4eAOl4adZmCoAtzRzE4PdzjD3Y/pdMeWiyTx9bMKFAFEupy7/82Yfpe2q2dgqAJcw8z+NHT9ZXc/bOxkS8IOiMbko9z9iWP7Xdq3z8BQBfhuMwOtiwDONd39vDGTLYmTACeCIp9x9yuN6XNpO8MKQJeSXm9mcdl/jrs/eMyES/rRdBz8RzP73tDPtdz9T7r0KwniyU9keBlcAVQSZ9RnF2CpeQYHrQBZAX7JzF4Xuv3njOD9T5eX1XZNgoffYGa3D78/390ftOL6C5vZsWZ2czO7vpnBTaiF4+RbzOyl7v6eLuPLnk6e8SZ5W7qomfFs9AWP4RyefyD4xQrKNsp29+PJoEbxQT6/aGafN7N3Dem3y3PV14xRACaar/VHQqe3cve3DhlIaSPpdmZ2RuijERrOPIQnpC/83skj+YM97okiPMjd/7apTaazgWk8EsfUFv1+y8zwXj7V3VlpVookXvpvmdmtqu2zbocyoKjPcnfYU7PJYAXIqwDYPyygIqe7O27ewSKJ5f8fKmj4tpE+JukGZvb7mWMw5F44roCb+ZLXRRKrySuSgfuLPTtlVYDZdGqLUvGVP9fMhqCb72OO3f1TPcfU6fKxCnC9vBSWm4HgXbSLO3jV6CS9IJFI7x+uYanl6IntgRsZLiH7fZNAPGUZ/dc06bxQPI4Xa7iQr/dnE+T8idwv17CsRzCq0ySGi04zs3u6+/o2KOknM2yO/2SooGB3nWM1GKsAtOfsHlk+93b3lw190vwyYBhFnuCasykbd3/esOTjhHoq/AJ3Zx+NXzVjpL/H5/08/sxXxbIMs4kv7Weqcf8ndoOZYfDi/WTv5llRQrYeWE61oJx3Si7tb0s6wswwYNnja/n7ZLOcZWYfz8bqD6Xt5NJ5jPU4aPt/rEzu/o4xc1u3HaUA+WU9Lg3u0aHj9yZD60ZjBymJL5kJLMIR8VcrnIDfWFof14VEIolxMt4osJNgMz+g+nfILXdzd17UJpGEMuATgRH1w9UFbI2gpR/KNLj4M4ypR7o7StUoedUA/4BdHQVF57gdAbNRUz2FAlwhLU88VBEQPFg9jUZW19E2QMPgDizpUZ6ZtpuHdu2T6xo8j2wVF0wrxHeFfjBC7+juEFZXiiRWhLen1eeK1YX0EU8z/IyNwH7e6aQkCfvqeXnlKd2/NeEtGJGTyGgFyJP6QTO7dhjRie7+5DEjzBPLXt4m7zKzm3V5SbEDSbxs4OV4eomXfNLMrsYS3nX8Sak4IrKF1EoQu0BJMDw7vfz1r0niCMwqF2U06FY6m0oBMNgw3Ip8yt2P7DqBbdclgw+jDEOzSW7s7u8eco90hHxGPo41NUepIteh0y0SMPZTGR9oMk7Zv1kVN9gnnTo+tGrxnHFbPS1tA3fv2n7VdVMpAKgbR7eI4GFhR39B7/HmJbCJZsZeeJG+X1P4qmAmf7RhQJ9392h39BpzOsKy6jXxGd+Zgl9+oVdn4eJ88nln+CeiqzhtfXNon5OuAHQmiT0PEKfIcxNBFENosGRoGMWq0b0p8Iaa08g4X+Lu9x06YEk/ZmZfSmTZ76/6eIC7Rx9Hr1tkcIptK5467uHur+zVUcPFk6wAWQHwC0TLdipoGLgZSDbKSni4y6RIqlnNNHuEu0emc5euNlwj6Q8bAJ8NQFbvTg99YPXqcpa7Q80bJVMqAMs/0HA8897a3YFeB4skjkKEnkWZYnU5PPkQOKlE6//R7g68PFgkYaHXhNZr16hj3xskxcKmWgOtsmBXXKrtmNq1/8kUgBtKmgMaJtiUbSAeAUdT0PJ4AWJw9hQhYhmsYbBkfACWc4yOvsOqc3/Xm0nCpgK4KnKCu9eRWV27W7tuagWYhdwp6fkVUPNGd6/P2L0ePCvAPRII9HuhIaDPJZtC2vp0Lok4h0iRe5O7R/uoT3fr10qqqXjkWuD0MVgmVYA8qZOTOyWBMYA1FCHYlDgEQJzBIgkEj8QV0Zt4I3cHBRwskq6ZIeDSB969i3dBK1fdNPlIcCqhpKCQRcAsgMcHyRwKALETgmeR96Xz+s8NGl1oJAm0EdSxyP3c/UUT9IsD566hn5cl1y44/yiRBKAEOaXIA909YiWD+k8uZWyq6K18hrv/9qDOpt4CGER2gIDjF5mE3CnpUdmhU/r9gLtDABklkiCSgNIVIbCVMzaezcEiCT7Bk0IHH3L3pjD6XvdIioW7/TWhEYb34X0R0dJ+8hUgKwGevPiwJ7l7nIxeD537hJwBNBzHfPlktP11786idh7KcQCZI7qM75yQTI5zg0USnr0vVOO9orvHj6N3/5LAGNi2Ih/z5km5zuzd2RwrQH5ZNbnz0+4el8MhY2V1IRlF/Oof6+61d69335KeDqEjNJzE4SIJVk/c/h6fDMy4PfYea55fXNQxEgs3+N2GdDbXCtAEDXcmd7Y9iCRQurjvf87do10wZA5QLLKZ/VlojMPmMHeHOTRYJPGSYnTTFxJ615YhpfN9km8ApYrcxsHQ8CwKkLW0JndOET2EB489L0LD13X3eELoPJHxQkl/lUiesHeKPNjdY9h6734zb5HlOkLDN3B3nFyDJUPDbC9sM0VgIkFn6yVzKgDndJSgyCRx/5Jem9g5dwj9vjB9qTWZo9ckZIWFGAKrqMh5ieDKcW6USMJgizzJF7t75FEO6l8SNhWGZhGYxDCVesmcCtBE7hwd9y/pNslf/6bwlHD/OWODDQwWSUQ24a6N0PCVE8mV49xgSegdR7YIh+PJBMPozDdounlSLGyqODag4Ut3YSfH/mZTgPxV1eTO0XH/SfOBhoFa8bwVub271/6C3i9NEi7X+BU9JSlW/MqG9AloA3gDiFNkKmgYvmFcpR7u7nEV23K8cytAI7lzbNBDcrtCk3pgeLo3uHvtMdzy4esLJOEHiPsoK8JlJoCGiaSOrvGpoOE6TP/j7h7tmC3nYFYFyKtATe68bwokfcmWI1txgaRrZcJluWpOaPjortFEbUPOASGRHDMVNIzDidUwQsNHuXs80ayc6u1QgFni/iV9uuLgDUpS1bAKEHASz9Sjsp+U/iXhyo00uamgYVzPkSTaiyi7HQowS9y/pJMSnz/67s919zb+YOcFR9LNEsE1cu+BhjHaiBEYLJKgikWi7IcTxz8SaQf1nRSLaKOIWnLsBMPYktHMDWdXgLwNTB73L6kJGj7C3Vcxibec5BwUCq0rRvLcJSGZEX/fsp+GlQU6F7SuOOdTQcNgI7Cdi9yiawDJdikA595I7pwk7l8SVGziBItMBQ2T+Tx62N6WCK594wU3KUkDu/cJ7h6DanorVv7AsKmiB/PV7h49nK39bpcCNMX9T0GTqrOVjWL1hv2a0KzoY58KGr5XIpzEsDnQPBxam3Iq99EESeRSihwGoGG2LVLv7qwRGCa1TigxBbFzTmj4LxPJNbJtHuLuMTHWVnPbtALgwSsJMAhseZWZ8bV22q/bbtgCDR/r7pHt1Nh8W1aAvEzVcf+EeoHgjUoJOyM0XGdC/0giuEY+Xm8FyPOAxU5f8Bwnk8RFJJaQai1Fznb3yHfccQUAGubMGsmdU9Clb53DxcsDTgUNkw0dYzBCw1cp4eSTvbmJOpJELqWYQ6ATNLxtK0DW/ta4/6Hz0AINj85UksdLiFjk3j85rVjxKxs67FnaSeoNDW+3AtTkzsFJpuMMpsweBE/GPEJT8QV/JeUDiNE3k5wGZnn7h+h4dSDpJ9yd6m2tsq0KkL+qGhomXDrmHe49P5IumfMWEqULefT67k5k0ijJWcdI4FByBY0K8Ro1mA6Nc2ga22ws3HV1d2+Kg1zrcScUoE7ScI67x7N8h0fdfEmmeIM6ovWjDMtqdUGp4DZ8cixdfNCD9WwkiQwl2EVFSDRFYqpG2QkFgBIV0TrOwJyFORMvMnIGJNVpfFdCw9uuAHkbqMmdo2PyRs7bvmmeWcMcMWMCjFu6e6S+rz/vTilATe4kk+eq7Br75gVtx4Okgl7YVKCkRV7j7ndpuvdOKQDQcB33fx13J6nSIiNnIOdRxE9SBE8mwS6boOEdUYC8DdRx/y9Ilntk+YychoPbPEPDBMyQ/axIY03GnVSAOu5/Emj44L72jU+e3NpwJeBMFHm3u9+4np+dVICmuP/buXtk/C7vc+AMSMKmgjVVhNMWrGHg7XUZpAAZfuUFfmdooqa8DdRx/5SbjZz/gY+/NMvzi00Ff7LIphQ4nRQgR/zCur1lzt5JIGVxkmBggL7BUccnDVzaKR1aA7kTaBgP4ai4/+X1H5oBSdhUMKiLbIKGVyqAJGjd+MD7RsiQhZsYPnzdK8Os54r7X5RgTQGInaih4Q2s4UYFSNGy589hUkT5dlolWiYcFOpZJJFsyyA+V9z/ogDrqwA2FdFURZ6YCCjkWliTTS9XEulSiJBZVQmU8CaWa7aBmAypbd7x0ZPMiABR0rSvSwu5c3Tc/6IA6wpARlGYR0U25BXaoAC5WAM88zqrJRYkUCKhzmS6WGezSCLNOWQE2CcQJ3HsRBJFfBesCKRtJ0Ay5tSvoeHHuDvXLTJyBnKyTcLcY/DI+gdWKwDLdV34CQOPYgUf6TKW/EWTO5jtg62kSXAJkzJ9rebQXHH/XcZ7EK5JyCD8w4gBrGcZXVeAfG7E9x01BT4/yZM3LNtdJk0Szghi18i80ZaZm1Qy0K+hMs0S999lrPv9moQM1jUd1kPqowIQXRsLFOCyJasHCN1gyYrwMDOjtjDbRS1sLwRd4CaOZ9ZJ4v4HD3wfNZR0C47n4ZE+6u5X5//XFCAleq558PxzqwtxyNykLKJgB8QJEsAQV5m27iYhdw4Z635rkxJtYqjHdDffdPe17bkoABY6NOgi70nsl6PnmIjMXiWGvS6H0nS7SeL+53iOvdanJDyBsbTNhVM2968VBYAzRg79IqMLP201QSmDFgUQKNwQ71s3myTuf6uxHITfJdXp8de4gp6DIYFzI5GQfLlbFkIcO3GSOC7eMydUbCrtRtw/mjq6MMLYse719g0ngZu4+9kowJpTJzzgN9w9JiGc/dkzoZPwaU4MdbEFMnSMKkA1+wPsgRuk/MVUdMWXU2TNxkMBMMgii/Zb7l6XQduWR8zZNbEPSlatMxNLiFSui4ycgYaazMe4+xkoAMtwDE4EobuguxNhuiOSFQGuP/mAR0XO7sgD7MKbNqwAa9FTxQiskySOjtnbhXNwoIckqc7ffL1UyOrctmPg6MoZB3q2d+HDN7jd13IgFgXgSBZr8BFZeo0+2aZ24TMvQ8ozkA194Px40rsALOGiANgBYAGxaDH5d284hvK1vIHdMQOSrpyLVJcBfSmVul8rQRd9AXWaEX6fJK/t7piGgzsKSTUn4B2pihn+gY2EkJaadyRMOn6xxveuAiUXPdlPYzW09eRUNR8ADhlMUqJso7w6ccvI8LkgcntQDySRq5iMJ0XY2iHhNFLC4JOz/1P0IQqRJiReiDVs9+B0HKwhN4SJ8RFfqITQt5FCqaCB/zgmSywzh3JQB/d1Y7NnHqxXsTNPK+nUVCH12HD3DYGirYzfjMaBH7elGIG7z94CcQPa2CK7bAYyH5BIoEjEgeFF7qM12SouAMcMlSlg87QRPYFq6ZA8PQSFLNDtLlGEhvhAlAHnGjjP1gpQLpIEfYhAQ0gcq5SGqqHU2Xn5YjDurBbkr5/cxNGz+7DEBKJC2rr0CvrIxFEoXfjwV8UDfB0MgVWhDkbc2Wk5OHdvKOQNJeyytZOvlwKEFYGkjwRxkpZsVTVMPIsUeaK86XkHZ/p39klT6RvS5nPMi+/3uOTmB9PZIIMUIPaQslIdlWMJ8OHHcm71vchYcUqKM6Qo42InzKQjOayP6iQE6xQhcPeqTYW1RitAWBVIp0YwCCXcYoGk+lGpnIEmnja20tdMc7inu024/+kJ9ydT2PqrSUUmqYgeU8YMswG6zEzOUgX2TG46nBBtQtQqkccvSnnssBkWGTkDkk5IlLqTq25WxldMtgLUY895aii/As8v5tutL6UkC8ASCQ2JDlpkwAw0lKmlFzy8VFZtrVE4mwLEZ8iBJ8QdYCe0BYWQR4D89qeMrQg+YP72dJNUQIsUcBS7ilgNEdzkAliZgHNbFCDYCfig2Ro4SrYRT+EnUgTp5FQLEKraIitmQBLzydk+vkto/pSUb9z3Y3fbqgBBEcgTSAQxkchtBiMnBfLektBgOUJWSpDZ3BjTdTQ3R28iqmK52lYV2hEFCIoA1EwdHbaHmNOuHjBl3PBhQ2w88JIcPKykBNTWGAzxHXdPKeLBXjrJjipAUATsgjubGVbsqtKnZ+cVIfIXOz3ofrlIEkUt8buwikbBmObLZ446y65QgKAIjIeaOlTliKHi9QOxt1Ei7sAoQg6qpeLKpmSPueo5ldn/ovObzxfuKgWIg5fE0ZFkRqtqCZCW7iR3P6fvg++V6yXBySBsjtqLQPC1YCdRIYxw+t6yaxUgrAqQVVGEWNa9ftAzsyLsG2Mx7/NY+KCrdbwkz8+xmcSPpPUZLLteAYIiUG+IBBNtsYKcGqhNeOJeJajkMD2ejxMSgZxtHAyMYopPQ9MbJXtGAYIiYBuQ8waUsUk4BpGkEhvhq6NmZ5saS8KPwmmIOgqrTkOAOg93d/D+SWTPKUBQBFyeFEskqqlJID/CSaCc+uy5Dvq+jZyPkXR8nH6OqaJ26u5IvQszC6LNZPWQuMmeVYCgCNgGTyGUreUlMGGnkaiSWLi+L2rK6/OXzimHKqqMu2lvj7ckNR9+EmI1Yw6HyYa15xWAmciOJwgqKEId07CuK6mc3FlJUUDI3u7u5CqcVXLiC/gSrFZU8mL7atvXy1gIywfkwYs3u1G7LxQgrAYck7Cajzezw7Z4u6TBI/sphFbyI35xTBxkdoNTbJrE2uXvyA4vvAwTngS2yyvdHUfOtsi+UoBKEeAkoAiRGbNqUjEeSUWDYkBuxW7g33BOxb/zUZo9R9oQbVP+Yk3kri8PK55zPHUSdgTL2JcKEBSB5RYmMxDzKmSx6wsbex1HVehaZPB+cyqOQeauHZV9rQBxZiVhG3C25o+Tw1YG2BQvBv49ZVvYyyFpvmXqsvFjB3lgFKBSBlLig6mDJRD5dETKhH74yFMR2wTndF52+SMl66ZSbWNf2pTtD6QCNE1gLhTNKnGFfJIgoAIvZfkjuwb/zYuGukbK/Pj3lRhxM+VLmrOv/wdCn+rgAYgP3wAAAABJRU5ErkJggg==", st = "data:image/png;base64,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", nt = {
379
431
  key: 0,
380
- class: "rh-data-center-tip__guide"
381
- }, Se = { class: "rh-data-center-tip__content" }, Me = {
432
+ class: "rh-data-center-tip__guide-arrow"
433
+ }, ot = ["src"], rt = ["src"], it = ["src"], ct = ["src"], lt = ["src"], ut = { class: "rh-data-center-tip__content" }, gt = {
382
434
  key: 0,
383
435
  class: "rh-data-center-tip__minutes"
384
- }, Ke = {
436
+ }, dt = {
385
437
  key: 1,
386
438
  class: "rh-data-center-tip__description"
387
- }, Ge = /* @__PURE__ */ M({
439
+ }, mt = /* @__PURE__ */ G({
388
440
  __name: "RhDataCenterTip",
389
441
  props: {
390
442
  modelValue: { type: Boolean, default: !1 },
@@ -393,62 +445,194 @@ const Ue = /* @__PURE__ */ ue(He, [["__scopeId", "data-v-a3a35657"]]), Oe = {
393
445
  title: { default: "" },
394
446
  content: { default: "" },
395
447
  width: { default: "540px" },
396
- showGuideAnimation: { type: Boolean, default: !0 }
448
+ showGuideAnimation: { type: Boolean, default: !0 },
449
+ guideVariant: { default: "default" }
397
450
  },
398
451
  emits: ["update:modelValue", "close"],
399
- setup(e, { emit: g }) {
400
- const a = g, r = () => {
401
- a("update:modelValue", !1), a("close");
452
+ setup(e, { emit: s }) {
453
+ const t = s, A = () => {
454
+ t("update:modelValue", !1), t("close");
402
455
  };
403
- return (d, u) => {
404
- const _ = Q("el-button"), k = Q("el-dialog");
405
- return l(), Y(k, {
456
+ return (n, r) => {
457
+ const B = oe("el-button"), k = oe("el-dialog");
458
+ return g(), se(k, {
406
459
  "model-value": e.modelValue,
407
460
  title: e.title || "提示",
408
461
  width: e.width,
409
462
  "append-to-body": "",
410
- "onUpdate:modelValue": u[0] || (u[0] = (C) => a("update:modelValue", C)),
411
- onClose: r
463
+ "onUpdate:modelValue": r[0] || (r[0] = (v) => t("update:modelValue", v)),
464
+ onClose: A
412
465
  }, {
413
- footer: x(() => [
414
- S(_, {
466
+ footer: Y(() => [
467
+ N(B, {
415
468
  type: "primary",
416
- onClick: r
469
+ onClick: A
417
470
  }, {
418
- default: x(() => [...u[1] || (u[1] = [
419
- X("关闭弹框", -1)
471
+ default: Y(() => [...r[1] || (r[1] = [
472
+ ae("关闭弹框", -1)
420
473
  ])]),
421
474
  _: 1
422
475
  })
423
476
  ]),
424
- default: x(() => [
425
- e.showGuideAnimation ? (l(), i("div", Oe)) : b("", !0),
426
- y("div", Se, [
427
- e.minutes !== void 0 ? (l(), i("span", Me, w((e.title || "任务处理中,大概需要") + e.minutes + "分钟"), 1)) : b("", !0),
428
- e.content ? (l(), i("div", Ke, w(e.content), 1)) : b("", !0),
429
- T(d.$slots, "extra")
477
+ default: Y(() => [
478
+ e.showGuideAnimation ? (g(), C("div", {
479
+ key: 0,
480
+ class: F(["rh-data-center-tip__guide", { "rh-data-center-tip__guide--image": e.guideVariant !== "default" }])
481
+ }, [
482
+ e.guideVariant === "default" ? (g(), C("span", nt)) : (g(), C(x, { key: 1 }, [
483
+ i("img", {
484
+ src: J(et),
485
+ class: F(["rh-data-center-tip__guide-box rh-data-center-tip__guide-box--light", `is-${e.guideVariant}`])
486
+ }, null, 10, ot),
487
+ i("img", {
488
+ src: J(tt),
489
+ class: F(["rh-data-center-tip__guide-box rh-data-center-tip__guide-box--dark", `is-${e.guideVariant}`])
490
+ }, null, 10, rt),
491
+ i("img", {
492
+ src: J(At),
493
+ class: F(["rh-data-center-tip__guide-arrow-image rh-data-center-tip__guide-arrow-image--dark", `is-${e.guideVariant}`])
494
+ }, null, 10, it),
495
+ i("img", {
496
+ src: J(st),
497
+ class: F(["rh-data-center-tip__guide-arrow-image rh-data-center-tip__guide-arrow-image--light", `is-${e.guideVariant}`])
498
+ }, null, 10, ct),
499
+ i("img", {
500
+ src: J(at),
501
+ class: F(["rh-data-center-tip__guide-hand", `is-${e.guideVariant}`])
502
+ }, null, 10, lt)
503
+ ], 64))
504
+ ], 2)) : m("", !0),
505
+ i("div", ut, [
506
+ e.minutes !== void 0 ? (g(), C("span", gt, E((e.title || "任务处理中,大概需要") + e.minutes + "分钟"), 1)) : m("", !0),
507
+ e.content ? (g(), C("div", dt, E(e.content), 1)) : m("", !0),
508
+ M(n.$slots, "extra")
430
509
  ])
431
510
  ]),
432
511
  _: 3
433
512
  }, 8, ["model-value", "title", "width"]);
434
513
  };
435
514
  }
436
- }), We = () => {
437
- const e = p(!1), g = p({});
515
+ }), yt = () => {
516
+ const e = D(!1), s = D({});
438
517
  return {
439
518
  tipVisible: e,
440
- tipConfig: g,
441
- showTip: (d) => {
442
- g.value = { ...d }, e.value = !0;
519
+ tipConfig: s,
520
+ showTip: (n) => {
521
+ s.value = { ...n }, e.value = !0;
443
522
  },
444
523
  closeTip: () => {
445
524
  e.value = !1;
446
525
  }
447
526
  };
448
527
  };
528
+ var I = /* @__PURE__ */ ((e) => (e[e.NotStarted = 0] = "NotStarted", e[e.InProgress = 1] = "InProgress", e[e.Completed = 2] = "Completed", e[e.Expired = 3] = "Expired", e[e.Revoked = 4] = "Revoked", e[e.Failed = 5] = "Failed", e[e.Queued = 6] = "Queued", e[e.Stopped = 7] = "Stopped", e))(I || {});
529
+ const le = (e, s) => String(e) === String(s), X = (e, s) => !!(e != null && e.some((t) => le(t, s))), Ct = (e, s) => {
530
+ var A;
531
+ if (s)
532
+ return s(e);
533
+ if (Array.isArray(e))
534
+ return e;
535
+ const t = e;
536
+ return Array.isArray(t.data) ? t.data : Array.isArray((A = t.data) == null ? void 0 : A.list) ? t.data.list : Array.isArray(t.list) ? t.list : [];
537
+ }, S = (e) => e, Bt = (e, s, t) => {
538
+ const n = S(e).taskType;
539
+ return X(t == null ? void 0 : t.import, s.key) || X(t == null ? void 0 : t.import, n) ? "import" : X(t == null ? void 0 : t.export, s.key) || X(t == null ? void 0 : t.export, n) ? "export" : "other";
540
+ }, wt = (e, s) => {
541
+ const t = S(e), A = Number(t.taskStatus), n = Number(t.failCount);
542
+ return s === "import" && A === I.Failed && n > 0 ? "success" : A === I.NotStarted || A === I.Queued ? "waiting" : A === I.InProgress ? "processing" : A === I.Completed ? "success" : "failed";
543
+ }, Qt = (e) => {
544
+ const s = S(e), t = Number(s.taskStatus);
545
+ if (t === I.Queued)
546
+ return "当前任务正在排队中,请耐心等待";
547
+ if (t === I.Stopped)
548
+ return "停止原因:未知原因,请联系技术人员";
549
+ if (t === I.InProgress && s.taskSeconds !== void 0) {
550
+ const A = Math.max(0, Math.floor(Number(s.taskSeconds))), n = Math.floor(A / 60), r = String(A % 60).padStart(2, "0");
551
+ return `总时长约${n}分${r}秒`;
552
+ }
553
+ return s.taskStatusName;
554
+ }, vt = (e, s) => {
555
+ const t = S(e), A = Number(t.taskStatus), n = Number(t.failCount);
556
+ return s === "export" && A === I.Completed ? [{
557
+ key: $.Download,
558
+ label: t.downloadFlag === 0 ? q.Download : q.Redownload
559
+ }] : s === "import" && (A === I.Completed || A === I.Failed) && n > 0 ? [{
560
+ key: $.DownloadFailure,
561
+ label: q.DownloadFailure
562
+ }] : s !== "export" && A === I.Failed ? [{
563
+ key: $.DownloadFailure,
564
+ label: q.DownloadFailure
565
+ }] : [];
566
+ }, ft = (e, s, t) => {
567
+ const A = S(e);
568
+ return {
569
+ id: A.id,
570
+ categoryKey: s.key,
571
+ title: A.taskName,
572
+ tag: A.taskTypeName,
573
+ taskTypeName: A.taskTypeName,
574
+ createdAt: A.createdTime,
575
+ progress: Number(A.taskSchedule || 0),
576
+ status: wt(e, t),
577
+ message: Qt(e),
578
+ failCount: Number(A.failCount || 0),
579
+ taskSeconds: A.taskSeconds,
580
+ actions: vt(e, t),
581
+ raw: e
582
+ };
583
+ }, ht = (e, s) => {
584
+ const t = {}, A = s.find((n) => {
585
+ const r = n.query;
586
+ return (r == null ? void 0 : r.taskType) === 0 || String(n.key) === "all";
587
+ });
588
+ return A && (t[String(A.key)] = e.length), s.forEach((n) => {
589
+ if (A && n.key === A.key)
590
+ return;
591
+ const r = n.query;
592
+ if ((r == null ? void 0 : r.taskType) === void 0) {
593
+ t[String(n.key)] = 0;
594
+ return;
595
+ }
596
+ t[String(n.key)] = e.filter((B) => le(S(B).taskType, r.taskType)).length;
597
+ }), t;
598
+ }, kt = (e, s) => s ? s(e) : e.query || {}, Mt = (e) => ({ loadTasks: async ({ category: A }) => {
599
+ const n = await e.api.getTaskList(kt(A, e.getQuery)), r = Ct(n, e.parseResponse).sort((v, Q) => {
600
+ const f = String(S(v).createdTime || "");
601
+ return String(S(Q).createdTime || "").localeCompare(f);
602
+ }), B = r.map((v) => {
603
+ const Q = Bt(v, A, e.taskKind), f = { category: A, taskKind: Q }, l = e.mapTask ? e.mapTask(v, f) : ft(v, A, Q);
604
+ if (!e.resolveActions)
605
+ return l;
606
+ const h = {
607
+ ...f,
608
+ taskStatus: Number(S(v).taskStatus)
609
+ };
610
+ return {
611
+ ...l,
612
+ actions: e.resolveActions(v, h)
613
+ };
614
+ }), k = e.resolveCounts ? e.resolveCounts(r, e.categories) : ht(r, e.categories);
615
+ return k[String(A.key)] = B.length, {
616
+ items: B,
617
+ total: B.length,
618
+ counts: k
619
+ };
620
+ }, handleTaskAction: async ({ action: A, task: n }) => {
621
+ !e.api.downloadTask || !n.raw || typeof n.raw != "object" || await e.api.downloadTask({
622
+ taskId: n.id,
623
+ action: A,
624
+ task: n.raw
625
+ });
626
+ } });
449
627
  export {
450
- Ue as RhDataCenter,
451
- Be as RhDataCenterPanel,
452
- Ge as RhDataCenterTip,
453
- We as useRhDataCenter
628
+ Le as DOWNLOAD_ACTION,
629
+ Re as DOWNLOAD_FAILURE_ACTION,
630
+ $ as RH_DATA_CENTER_ACTION,
631
+ q as RH_DATA_CENTER_ACTION_LABEL,
632
+ It as RhDataCenter,
633
+ je as RhDataCenterPanel,
634
+ I as RhDataCenterTaskStatusCode,
635
+ mt as RhDataCenterTip,
636
+ Mt as createRhDataCenterAdapter,
637
+ yt as useRhDataCenter
454
638
  };