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.
- package/README.md +213 -130
- package/dist/data-center/RhDataCenter.vue.d.ts +10 -0
- package/dist/data-center/RhDataCenterPanel.vue.d.ts +10 -0
- package/dist/data-center/RhDataCenterTip.vue.d.ts +8 -1
- package/dist/data-center/adapter.d.ts +3 -0
- package/dist/data-center/constants.d.ts +14 -2
- package/dist/data-center/index.cjs +1 -1
- package/dist/data-center/index.d.ts +4 -1
- package/dist/data-center/index.js +453 -269
- package/dist/data-center/types.d.ts +48 -0
- package/dist/data-center/useRhDataCenter.d.ts +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +14 -8
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -1,245 +1,292 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { _ as
|
|
3
|
-
const
|
|
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:
|
|
11
|
-
const
|
|
12
|
-
return (
|
|
13
|
-
|
|
14
|
-
e.retryable ? (
|
|
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:
|
|
19
|
-
}, " 重新加载 ")) :
|
|
18
|
+
onClick: n[0] || (n[0] = (r) => t("retry"))
|
|
19
|
+
}, " 重新加载 ")) : m("", !0)
|
|
20
20
|
]));
|
|
21
21
|
}
|
|
22
|
-
}),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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:
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
}),
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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:
|
|
114
|
+
recentDaysText: { default: Je }
|
|
91
115
|
},
|
|
92
116
|
emits: ["close", "refresh", "task-action", "error"],
|
|
93
|
-
setup(e, { expose:
|
|
94
|
-
const
|
|
95
|
-
var
|
|
96
|
-
return String(((
|
|
97
|
-
}),
|
|
98
|
-
|
|
99
|
-
|
|
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
|
|
102
|
-
if (
|
|
103
|
-
return
|
|
104
|
-
for (const
|
|
105
|
-
const
|
|
106
|
-
if (
|
|
107
|
-
return
|
|
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 (
|
|
110
|
-
},
|
|
111
|
-
const
|
|
112
|
-
if (!
|
|
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
|
|
115
|
-
if (
|
|
146
|
+
const c = String(d.key);
|
|
147
|
+
if (f.value[c] && !o)
|
|
116
148
|
return;
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
|
|
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
|
|
122
|
-
if (
|
|
153
|
+
const u = await A.loadTasks({ category: d });
|
|
154
|
+
if (Q.value[c] !== a || h.value !== c)
|
|
123
155
|
return;
|
|
124
|
-
|
|
125
|
-
} catch (
|
|
126
|
-
if (
|
|
156
|
+
B.value[c] = u;
|
|
157
|
+
} catch (u) {
|
|
158
|
+
if (Q.value[c] !== a || h.value !== c)
|
|
127
159
|
return;
|
|
128
|
-
|
|
160
|
+
v.value[c] = u, n("error", u, d);
|
|
129
161
|
} finally {
|
|
130
|
-
|
|
162
|
+
Q.value[c] === a && (k.value[c] = !1, f.value[c] = !1);
|
|
131
163
|
}
|
|
132
|
-
},
|
|
133
|
-
|
|
134
|
-
},
|
|
135
|
-
const
|
|
136
|
-
|
|
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
|
|
139
|
-
var
|
|
140
|
-
|
|
141
|
-
}),
|
|
142
|
-
refresh:
|
|
143
|
-
}), (
|
|
144
|
-
var
|
|
145
|
-
return
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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:
|
|
153
|
-
"aria-pressed":
|
|
154
|
-
onClick: (
|
|
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
|
-
|
|
157
|
-
|
|
191
|
+
ne((u) => K(a), ["enter"]),
|
|
192
|
+
ne(te((u) => K(a), ["prevent"]), ["space"])
|
|
158
193
|
]
|
|
159
194
|
}, [
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
], 42,
|
|
163
|
-
]),
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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 ? (
|
|
207
|
+
e.closeable ? (g(), C("button", {
|
|
170
208
|
key: 0,
|
|
171
209
|
type: "button",
|
|
172
|
-
class: "rh-data-center-panel__action",
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
177
|
-
|
|
221
|
+
i("div", Ve, [
|
|
222
|
+
Z.value && !p.value ? (g(), se(_, {
|
|
178
223
|
key: 0,
|
|
179
224
|
text: "加载中..."
|
|
180
|
-
})) :
|
|
225
|
+
})) : P.value && !p.value ? M(o.$slots, "error", {
|
|
181
226
|
key: 1,
|
|
182
|
-
error:
|
|
183
|
-
retry:
|
|
227
|
+
error: P.value,
|
|
228
|
+
retry: O
|
|
184
229
|
}, () => [
|
|
185
|
-
|
|
230
|
+
N(_, {
|
|
186
231
|
text: "任务加载失败",
|
|
187
232
|
retryable: !0,
|
|
188
|
-
onRetry:
|
|
233
|
+
onRetry: O
|
|
189
234
|
})
|
|
190
|
-
]) : (
|
|
191
|
-
key:
|
|
192
|
-
task:
|
|
193
|
-
category:
|
|
194
|
-
action:
|
|
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
|
-
|
|
197
|
-
task:
|
|
198
|
-
onAction: (
|
|
241
|
+
N(Te, {
|
|
242
|
+
task: T(a),
|
|
243
|
+
onAction: (u) => L(u, a)
|
|
199
244
|
}, null, 8, ["task", "onAction"])
|
|
200
|
-
])), 128)) :
|
|
245
|
+
])), 128)) : M(o.$slots, "empty", {
|
|
201
246
|
key: 3,
|
|
202
|
-
category:
|
|
247
|
+
category: l.value
|
|
203
248
|
}, () => [
|
|
204
|
-
|
|
249
|
+
N(_, { text: "暂无任务" })
|
|
205
250
|
])
|
|
206
251
|
]),
|
|
207
|
-
|
|
208
|
-
result:
|
|
209
|
-
category:
|
|
252
|
+
M(o.$slots, "footer", {
|
|
253
|
+
result: p.value,
|
|
254
|
+
category: l.value
|
|
210
255
|
}, () => {
|
|
211
|
-
var
|
|
256
|
+
var a;
|
|
212
257
|
return [
|
|
213
|
-
e.showTotal ? (
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
])) :
|
|
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
|
-
}),
|
|
224
|
-
const
|
|
225
|
-
const
|
|
226
|
-
if (!
|
|
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 =
|
|
231
|
-
}) ||
|
|
275
|
+
return (k = qe(B)) == null ? void 0 : k.contains(n);
|
|
276
|
+
}) || s();
|
|
232
277
|
};
|
|
233
|
-
|
|
234
|
-
},
|
|
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:
|
|
241
|
-
width: { default:
|
|
242
|
-
panelHeight: { default:
|
|
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:
|
|
254
|
-
const
|
|
255
|
-
const
|
|
256
|
-
if (!
|
|
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
|
|
259
|
-
Math.max(
|
|
260
|
-
Math.max(
|
|
261
|
-
),
|
|
262
|
-
|
|
263
|
-
Math.max(
|
|
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
|
-
|
|
266
|
-
top: `${
|
|
267
|
-
left: `${
|
|
268
|
-
width:
|
|
269
|
-
"--rh-ui-data-center-panel-height":
|
|
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
|
-
},
|
|
272
|
-
|
|
273
|
-
},
|
|
274
|
-
|
|
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
|
-
|
|
277
|
-
},
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
|
|
337
|
+
T();
|
|
291
338
|
return;
|
|
292
339
|
}
|
|
293
|
-
|
|
340
|
+
O(), U();
|
|
294
341
|
};
|
|
295
|
-
return
|
|
296
|
-
if (
|
|
297
|
-
document.removeEventListener("visibilitychange",
|
|
342
|
+
return Ce(l, async (a) => {
|
|
343
|
+
if (T(), W(), !a) {
|
|
344
|
+
document.removeEventListener("visibilitychange", c);
|
|
298
345
|
return;
|
|
299
346
|
}
|
|
300
|
-
await
|
|
301
|
-
}, { immediate: !0 }),
|
|
302
|
-
|
|
303
|
-
}),
|
|
304
|
-
|
|
305
|
-
}), (
|
|
306
|
-
|
|
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:
|
|
355
|
+
ref: r,
|
|
309
356
|
class: "rh-data-center",
|
|
310
|
-
onClick:
|
|
357
|
+
onClick: te(d, ["stop"])
|
|
311
358
|
}, [
|
|
312
|
-
|
|
313
|
-
visible:
|
|
314
|
-
open:
|
|
315
|
-
close:
|
|
316
|
-
toggle:
|
|
359
|
+
M(a.$slots, "trigger", {
|
|
360
|
+
visible: l.value,
|
|
361
|
+
open: L,
|
|
362
|
+
close: o,
|
|
363
|
+
toggle: d
|
|
317
364
|
}, () => [
|
|
318
|
-
|
|
319
|
-
class:
|
|
365
|
+
i("span", {
|
|
366
|
+
class: F(["rh-data-center__trigger", { "is-active": l.value }])
|
|
320
367
|
}, [
|
|
321
|
-
|
|
368
|
+
h.value ? (g(), C("img", {
|
|
322
369
|
key: 0,
|
|
323
|
-
src:
|
|
370
|
+
src: h.value,
|
|
324
371
|
class: "rh-data-center__icon",
|
|
325
372
|
alt: ""
|
|
326
|
-
}, null, 8,
|
|
327
|
-
|
|
373
|
+
}, null, 8, _e)) : m("", !0),
|
|
374
|
+
i("span", null, E(e.label), 1)
|
|
328
375
|
], 2)
|
|
329
376
|
], !0)
|
|
330
377
|
], 512),
|
|
331
|
-
(
|
|
332
|
-
|
|
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:
|
|
338
|
-
onClick:
|
|
384
|
+
style: Ae(v.value),
|
|
385
|
+
onClick: u[3] || (u[3] = te(() => {
|
|
339
386
|
}, ["stop"]))
|
|
340
387
|
}, [
|
|
341
|
-
|
|
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:
|
|
350
|
-
onRefresh:
|
|
351
|
-
onTaskAction:
|
|
352
|
-
onError:
|
|
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:
|
|
355
|
-
|
|
356
|
-
|
|
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:
|
|
360
|
-
|
|
411
|
+
task: Y((w) => [
|
|
412
|
+
M(a.$slots, "task", H(z(w)), void 0, !0)
|
|
361
413
|
]),
|
|
362
|
-
empty:
|
|
363
|
-
|
|
414
|
+
empty: Y((w) => [
|
|
415
|
+
M(a.$slots, "empty", H(z(w)), void 0, !0)
|
|
364
416
|
]),
|
|
365
|
-
error:
|
|
366
|
-
|
|
417
|
+
error: Y((w) => [
|
|
418
|
+
M(a.$slots, "error", H(z(w)), void 0, !0)
|
|
367
419
|
]),
|
|
368
|
-
footer:
|
|
369
|
-
|
|
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)) :
|
|
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,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", st = "data:image/png;base64,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", nt = {
|
|
379
431
|
key: 0,
|
|
380
|
-
class: "rh-data-center-tip__guide"
|
|
381
|
-
},
|
|
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
|
-
},
|
|
436
|
+
}, dt = {
|
|
385
437
|
key: 1,
|
|
386
438
|
class: "rh-data-center-tip__description"
|
|
387
|
-
},
|
|
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:
|
|
400
|
-
const
|
|
401
|
-
|
|
452
|
+
setup(e, { emit: s }) {
|
|
453
|
+
const t = s, A = () => {
|
|
454
|
+
t("update:modelValue", !1), t("close");
|
|
402
455
|
};
|
|
403
|
-
return (
|
|
404
|
-
const
|
|
405
|
-
return
|
|
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":
|
|
411
|
-
onClose:
|
|
463
|
+
"onUpdate:modelValue": r[0] || (r[0] = (v) => t("update:modelValue", v)),
|
|
464
|
+
onClose: A
|
|
412
465
|
}, {
|
|
413
|
-
footer:
|
|
414
|
-
|
|
466
|
+
footer: Y(() => [
|
|
467
|
+
N(B, {
|
|
415
468
|
type: "primary",
|
|
416
|
-
onClick:
|
|
469
|
+
onClick: A
|
|
417
470
|
}, {
|
|
418
|
-
default:
|
|
419
|
-
|
|
471
|
+
default: Y(() => [...r[1] || (r[1] = [
|
|
472
|
+
ae("关闭弹框", -1)
|
|
420
473
|
])]),
|
|
421
474
|
_: 1
|
|
422
475
|
})
|
|
423
476
|
]),
|
|
424
|
-
default:
|
|
425
|
-
e.showGuideAnimation ? (
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
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
|
-
}),
|
|
437
|
-
const e =
|
|
515
|
+
}), yt = () => {
|
|
516
|
+
const e = D(!1), s = D({});
|
|
438
517
|
return {
|
|
439
518
|
tipVisible: e,
|
|
440
|
-
tipConfig:
|
|
441
|
-
showTip: (
|
|
442
|
-
|
|
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
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
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
|
};
|