yh-report 2.4.115 → 2.4.117
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/StatementDesign-DhAUZTV6.mjs +52801 -0
- package/StatementDesign-DhAUZTV6.mjs.map +1 -0
- package/{StatementDetail-DkOrmDr6.mjs → StatementDetail-Br6zQ67Y.mjs} +2 -2
- package/{StatementDetail-DkOrmDr6.mjs.map → StatementDetail-Br6zQ67Y.mjs.map} +1 -1
- package/{StatementList-BFaOwqOO.mjs → StatementList-D1c4iGOZ.mjs} +79 -79
- package/StatementList-D1c4iGOZ.mjs.map +1 -0
- package/{editorLock-DdAYyg2u.mjs → editorLock-CGeUFKpx.mjs} +1 -1
- package/{editorLock-DdAYyg2u.mjs.map → editorLock-CGeUFKpx.mjs.map} +1 -1
- package/{index-D5s-AlK7.mjs → index-DgsSvRRw.mjs} +312 -285
- package/index-DgsSvRRw.mjs.map +1 -0
- package/index.es.js +1 -1
- package/package.json +1 -1
- package/StatementDesign-OzMH3MVW.mjs +0 -70420
- package/StatementDesign-OzMH3MVW.mjs.map +0 -1
- package/StatementList-BFaOwqOO.mjs.map +0 -1
- package/index-D5s-AlK7.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as o, ref as a, onActivated as i, onDeactivated as s, onMounted as c, openBlock as r, createElementBlock as m, createVNode as d } from "vue";
|
|
2
2
|
import { useRoute as l } from "vue-router";
|
|
3
|
-
import { O as u } from "./index-
|
|
3
|
+
import { O as u } from "./index-DgsSvRRw.mjs";
|
|
4
4
|
const _ = { class: "statement-detail-container" }, h = /* @__PURE__ */ o({
|
|
5
5
|
__name: "StatementDetail",
|
|
6
6
|
setup(p) {
|
|
@@ -21,4 +21,4 @@ const _ = { class: "statement-detail-container" }, h = /* @__PURE__ */ o({
|
|
|
21
21
|
export {
|
|
22
22
|
h as default
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=StatementDetail-
|
|
24
|
+
//# sourceMappingURL=StatementDetail-Br6zQ67Y.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatementDetail-
|
|
1
|
+
{"version":3,"file":"StatementDetail-Br6zQ67Y.mjs","sources":["../StatementDetail.vue"],"sourcesContent":["<template>\n <section class=\"statement-detail-container\">\n <report-run :id=\"id\"></report-run>\n </section>\n</template>\n<script setup lang=\"ts\">\nimport {ref, onMounted, onActivated, onDeactivated} from 'vue';\nimport {useRoute} from 'vue-router';\nimport reportRun from './component/reportRun.vue';\nconst route = useRoute();\nconst id = ref();\n\nonActivated(() => {\n document.querySelector('.main-container')?.classList.add('statement-design-main');\n});\n\nonDeactivated(() => {\n document.querySelector('.main-container')?.classList.remove('statement-design-main');\n});\n\nonMounted(() => {\n id.value = route.params.id;\n});\n</script>\n"],"names":["route","useRoute","id","ref","onActivated","_a","onDeactivated","onMounted","_openBlock","_createElementBlock","_hoisted_1","_createVNode","reportRun"],"mappings":";;;;;;AASA,UAAMA,IAAQC,EAAA,GACRC,IAAKC,EAAA;AAEX,WAAAC,EAAY,MAAM;;AAChB,OAAAC,IAAA,SAAS,cAAc,iBAAiB,MAAxC,QAAAA,EAA2C,UAAU,IAAI;AAAA,IAC3D,CAAC,GAEDC,EAAc,MAAM;;AAClB,OAAAD,IAAA,SAAS,cAAc,iBAAiB,MAAxC,QAAAA,EAA2C,UAAU,OAAO;AAAA,IAC9D,CAAC,GAEDE,EAAU,MAAM;AACd,MAAAL,EAAG,QAAQF,EAAM,OAAO;AAAA,IAC1B,CAAC,cArBCQ,EAAA,GAAAC,EAEU,WAFVC,GAEU;AAAA,MADRC,EAAkCC,GAAA,EAArB,IAAIV,EAAA,MAAA,GAAE,MAAA,GAAA,CAAA,IAAA,CAAA;AAAA,IAAA;;;"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useRouter as
|
|
3
|
-
import { r as a, g as
|
|
4
|
-
import { ElButton as m, ElFormItem as
|
|
5
|
-
import { l as
|
|
6
|
-
const
|
|
1
|
+
import { defineComponent as W, reactive as R, ref as N, onMounted as G, watch as L, openBlock as Q, createElementBlock as X, createElementVNode as f, createTextVNode as u, toDisplayString as c, unref as e, createVNode as n, withCtx as i, withKeys as Z } from "vue";
|
|
2
|
+
import { useRouter as ee } from "vue-router";
|
|
3
|
+
import { r as a, g as te, c as le, s as D, d as oe, a as ne } from "./index-DgsSvRRw.mjs";
|
|
4
|
+
import { ElButton as m, ElFormItem as $, ElInput as w, ElTable as ae, ElTableColumn as v, ElPagination as ie, ElDialog as re, ElForm as se, ElMessage as k, ElLoading as de, ElMessageBox as U } from "element-plus";
|
|
5
|
+
import { l as ue, u as ce } from "./editorLock-CGeUFKpx.mjs";
|
|
6
|
+
const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe = { class: "el-button is-text import-excel-button" }, ge = { class: "form-context" }, ye = { class: "dialog-footer" }, xe = /* @__PURE__ */ W({
|
|
7
7
|
__name: "StatementList",
|
|
8
|
-
setup(
|
|
9
|
-
const
|
|
8
|
+
setup(ke) {
|
|
9
|
+
const x = ee(), d = R({
|
|
10
10
|
key: "",
|
|
11
11
|
pageSize: 10,
|
|
12
12
|
pageNumber: 1,
|
|
13
13
|
total: 0
|
|
14
|
-
}), z =
|
|
14
|
+
}), z = N([]);
|
|
15
15
|
async function g(o = !1) {
|
|
16
16
|
o && (d.pageNumber = 1, d.total = 0);
|
|
17
|
-
const t = await
|
|
17
|
+
const t = await te({
|
|
18
18
|
key: d.key,
|
|
19
19
|
pageSize: d.pageSize,
|
|
20
20
|
pageNumber: d.pageNumber
|
|
21
21
|
});
|
|
22
22
|
z.value = t.data.list, d.total = t.data.total;
|
|
23
23
|
}
|
|
24
|
-
function
|
|
24
|
+
function h(o, t) {
|
|
25
25
|
let l = "", r = "链接";
|
|
26
26
|
switch (t) {
|
|
27
27
|
case "admin":
|
|
@@ -33,15 +33,15 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
33
33
|
default:
|
|
34
34
|
l = `${window.location.origin}${window.location.pathname}#/statementdetail/${o.id}`, r = "外部链接";
|
|
35
35
|
}
|
|
36
|
-
|
|
36
|
+
le(l).then(() => {
|
|
37
37
|
k.success(r + "复制成功");
|
|
38
38
|
}).catch(() => {
|
|
39
39
|
k.error(r + "复制遇到问题");
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
},
|
|
42
|
+
const V = N([]), F = (o) => {
|
|
43
|
+
V.value = o;
|
|
44
|
+
}, _ = async (o) => {
|
|
45
45
|
const t = o.target.files[0];
|
|
46
46
|
if (!t) return;
|
|
47
47
|
const l = new FileReader();
|
|
@@ -51,14 +51,14 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
51
51
|
if (r.target) {
|
|
52
52
|
const y = JSON.parse(r.target.result);
|
|
53
53
|
if (Array.isArray(y) && y.every((p) => typeof p == "object" && "code" in p && "config" in p && "description" in p && "name" in p)) {
|
|
54
|
-
const p =
|
|
54
|
+
const p = de.service({
|
|
55
55
|
fullscreen: !0,
|
|
56
56
|
text: `正在导入报表,共 ${y.length} 个,请稍候...`
|
|
57
57
|
});
|
|
58
58
|
for (let b = 0; b < y.length; b++) {
|
|
59
59
|
p.setText(`正在保存第 ${b + 1} 个,共 ${y.length} 个,请稍候...`);
|
|
60
|
-
const
|
|
61
|
-
await
|
|
60
|
+
const E = y[b];
|
|
61
|
+
await D(E);
|
|
62
62
|
}
|
|
63
63
|
p.close(), g(!0);
|
|
64
64
|
} else
|
|
@@ -68,43 +68,43 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
68
68
|
k.error("文件解析失败,请检查文件是否为有效的 JSON 格式!");
|
|
69
69
|
}
|
|
70
70
|
}, l.readAsText(t);
|
|
71
|
-
},
|
|
72
|
-
if (
|
|
71
|
+
}, O = () => {
|
|
72
|
+
if (V.value.length > 0) {
|
|
73
73
|
const o = JSON.stringify(
|
|
74
|
-
|
|
74
|
+
V.value.map(({ code: b, config: E, description: P, name: I }) => ({
|
|
75
75
|
code: b,
|
|
76
|
-
config:
|
|
77
|
-
description:
|
|
78
|
-
name:
|
|
76
|
+
config: E,
|
|
77
|
+
description: P,
|
|
78
|
+
name: I
|
|
79
79
|
})),
|
|
80
80
|
null,
|
|
81
81
|
2
|
|
82
|
-
), t = new Blob([o], { type: "application/json" }), l = URL.createObjectURL(t), y = `报表导出-${
|
|
82
|
+
), t = new Blob([o], { type: "application/json" }), l = URL.createObjectURL(t), y = `报表导出-${oe().format("YYYYMMDDHHmm")}.json`, p = document.createElement("a");
|
|
83
83
|
p.href = l, p.download = y, document.body.appendChild(p), p.click(), document.body.removeChild(p), URL.revokeObjectURL(l);
|
|
84
84
|
} else
|
|
85
85
|
k.warning("请选择要操作的报表!");
|
|
86
|
-
}, j = async (o) => {
|
|
87
|
-
await
|
|
86
|
+
}, B = () => x.currentRoute.value.path.startsWith("/admin") ? "/admin" : "", j = async (o) => {
|
|
87
|
+
await ue(o.id) === "OK" ? x.push(`${B()}/statement/design/${o.id}`) : await U.alert("报表正在被其他用户锁定,是否强制解锁?", "提示", {
|
|
88
88
|
confirmButtonText: "解锁",
|
|
89
89
|
cancelButtonText: "取消"
|
|
90
|
-
}) === "confirm" && (await
|
|
91
|
-
},
|
|
92
|
-
|
|
90
|
+
}) === "confirm" && (await ce(o.id) ? j(o) : k.error("解锁失败,请稍后再试!"));
|
|
91
|
+
}, M = (o) => {
|
|
92
|
+
x.push(`${B()}/statement/detail/${o.id}`);
|
|
93
93
|
};
|
|
94
94
|
G(() => {
|
|
95
95
|
g(!0);
|
|
96
96
|
});
|
|
97
|
-
const C =
|
|
97
|
+
const C = N(!1), s = R({
|
|
98
98
|
id: void 0,
|
|
99
99
|
name: "",
|
|
100
100
|
code: "",
|
|
101
101
|
description: ""
|
|
102
|
-
}),
|
|
102
|
+
}), A = () => {
|
|
103
103
|
C.value = !0;
|
|
104
|
-
}, A = (o) => {
|
|
105
|
-
C.value = !0, s.id = o.id, s.name = o.name, s.code = o.code, s.description = o.description;
|
|
106
104
|
}, Y = (o) => {
|
|
107
|
-
|
|
105
|
+
C.value = !0, s.id = o.id, s.name = o.name, s.code = o.code, s.description = o.description;
|
|
106
|
+
}, q = (o) => {
|
|
107
|
+
U.confirm("当前操作会复制选定的报表,确认继续吗?", "提醒", {
|
|
108
108
|
confirmButtonText: "复制",
|
|
109
109
|
cancelButtonText: "取消",
|
|
110
110
|
type: "warning"
|
|
@@ -117,27 +117,27 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
117
117
|
config: o.config,
|
|
118
118
|
listData: o.listData
|
|
119
119
|
};
|
|
120
|
-
|
|
120
|
+
D(t).then(() => {
|
|
121
121
|
k.success("复制成功"), g(!0);
|
|
122
122
|
}).catch(() => {
|
|
123
123
|
k.error("复制失败");
|
|
124
124
|
});
|
|
125
125
|
});
|
|
126
|
-
},
|
|
127
|
-
|
|
126
|
+
}, H = (o) => {
|
|
127
|
+
U.confirm("当前操作会删除选定的报表,确认继续吗?", "警告", {
|
|
128
128
|
confirmButtonText: "删除",
|
|
129
129
|
cancelButtonText: "取消",
|
|
130
130
|
type: "warning"
|
|
131
131
|
}).then(async () => {
|
|
132
|
-
(await
|
|
132
|
+
(await ne(o.id)).data && g(!0);
|
|
133
133
|
});
|
|
134
|
-
},
|
|
134
|
+
}, S = () => {
|
|
135
135
|
C.value = !1, s.id = void 0, s.name = "", s.code = "", s.description = "";
|
|
136
|
-
},
|
|
137
|
-
await
|
|
138
|
-
},
|
|
136
|
+
}, J = async () => {
|
|
137
|
+
await D(s), g(!0), S();
|
|
138
|
+
}, T = (o) => {
|
|
139
139
|
o && (o.preventDefault(), o.stopPropagation()), g(!1);
|
|
140
|
-
},
|
|
140
|
+
}, K = () => {
|
|
141
141
|
d.key = "", g(!0);
|
|
142
142
|
};
|
|
143
143
|
return L(
|
|
@@ -150,19 +150,19 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
150
150
|
() => {
|
|
151
151
|
g();
|
|
152
152
|
}
|
|
153
|
-
), (o, t) => (Q(),
|
|
154
|
-
f("div",
|
|
155
|
-
f("div",
|
|
153
|
+
), (o, t) => (Q(), X("section", pe, [
|
|
154
|
+
f("div", me, [
|
|
155
|
+
f("div", fe, [
|
|
156
156
|
f("input", {
|
|
157
157
|
class: "import-excel-input",
|
|
158
158
|
type: "file",
|
|
159
|
-
onChange: t[0] || (t[0] = (l) =>
|
|
159
|
+
onChange: t[0] || (t[0] = (l) => _(l))
|
|
160
160
|
}, null, 32),
|
|
161
161
|
u(" " + c(e(a)("导入")), 1)
|
|
162
162
|
]),
|
|
163
163
|
n(e(m), {
|
|
164
164
|
text: "",
|
|
165
|
-
onClick:
|
|
165
|
+
onClick: O
|
|
166
166
|
}, {
|
|
167
167
|
default: i(() => [
|
|
168
168
|
u(c(e(a)("导出")), 1)
|
|
@@ -171,22 +171,22 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
171
171
|
}),
|
|
172
172
|
n(e(m), {
|
|
173
173
|
type: "primary",
|
|
174
|
-
onClick:
|
|
174
|
+
onClick: A
|
|
175
175
|
}, {
|
|
176
176
|
default: i(() => [
|
|
177
177
|
u(c(e(a)("新增")), 1)
|
|
178
178
|
]),
|
|
179
179
|
_: 1
|
|
180
180
|
}),
|
|
181
|
-
f("div",
|
|
182
|
-
n(e(
|
|
181
|
+
f("div", ge, [
|
|
182
|
+
n(e($), {
|
|
183
183
|
label: e(a)("报表名称")
|
|
184
184
|
}, {
|
|
185
185
|
default: i(() => [
|
|
186
|
-
n(e(
|
|
186
|
+
n(e(w), {
|
|
187
187
|
modelValue: d.key,
|
|
188
188
|
"onUpdate:modelValue": t[1] || (t[1] = (l) => d.key = l),
|
|
189
|
-
onKeyup:
|
|
189
|
+
onKeyup: Z(T, ["enter"]),
|
|
190
190
|
placeholder: e(a)("键入关键字搜索报表")
|
|
191
191
|
}, null, 8, ["modelValue", "placeholder"])
|
|
192
192
|
]),
|
|
@@ -195,7 +195,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
195
195
|
]),
|
|
196
196
|
n(e(m), {
|
|
197
197
|
type: "primary",
|
|
198
|
-
onClick: t[2] || (t[2] = (l) =>
|
|
198
|
+
onClick: t[2] || (t[2] = (l) => T())
|
|
199
199
|
}, {
|
|
200
200
|
default: i(() => [
|
|
201
201
|
u(c(e(a)("搜索")), 1)
|
|
@@ -203,7 +203,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
203
203
|
_: 1
|
|
204
204
|
}),
|
|
205
205
|
n(e(m), {
|
|
206
|
-
onClick: t[3] || (t[3] = (l) =>
|
|
206
|
+
onClick: t[3] || (t[3] = (l) => K())
|
|
207
207
|
}, {
|
|
208
208
|
default: i(() => [
|
|
209
209
|
u(c(e(a)("重置")), 1)
|
|
@@ -211,10 +211,10 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
211
211
|
_: 1
|
|
212
212
|
})
|
|
213
213
|
]),
|
|
214
|
-
n(e(
|
|
214
|
+
n(e(ae), {
|
|
215
215
|
data: z.value,
|
|
216
216
|
"row-key": "id",
|
|
217
|
-
onSelectionChange:
|
|
217
|
+
onSelectionChange: F
|
|
218
218
|
}, {
|
|
219
219
|
default: i(() => [
|
|
220
220
|
n(e(v), {
|
|
@@ -251,7 +251,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
251
251
|
n(e(m), {
|
|
252
252
|
link: "",
|
|
253
253
|
title: e(a)("本系统前台菜单地址"),
|
|
254
|
-
onClick: (r) =>
|
|
254
|
+
onClick: (r) => h(l.row, "inner")
|
|
255
255
|
}, {
|
|
256
256
|
default: i(() => [
|
|
257
257
|
u(c(e(a)("菜单")), 1)
|
|
@@ -261,7 +261,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
261
261
|
n(e(m), {
|
|
262
262
|
link: "",
|
|
263
263
|
title: e(a)("后台测试"),
|
|
264
|
-
onClick: (r) =>
|
|
264
|
+
onClick: (r) => h(l.row, "admin")
|
|
265
265
|
}, {
|
|
266
266
|
default: i(() => [
|
|
267
267
|
u(c(e(a)("后台")), 1)
|
|
@@ -271,7 +271,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
271
271
|
n(e(m), {
|
|
272
272
|
link: "",
|
|
273
273
|
title: e(a)("其他系统嵌入地址"),
|
|
274
|
-
onClick: (r) =>
|
|
274
|
+
onClick: (r) => h(l.row, "outside")
|
|
275
275
|
}, {
|
|
276
276
|
default: i(() => [
|
|
277
277
|
u(c(e(a)("外嵌")), 1)
|
|
@@ -292,7 +292,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
292
292
|
n(e(m), {
|
|
293
293
|
type: "primary",
|
|
294
294
|
link: "",
|
|
295
|
-
onClick: (r) =>
|
|
295
|
+
onClick: (r) => M(l.row)
|
|
296
296
|
}, {
|
|
297
297
|
default: i(() => [
|
|
298
298
|
t[12] || (t[12] = f("i", { class: "yhreport-icon report-preview" }, null, -1)),
|
|
@@ -303,7 +303,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
303
303
|
n(e(m), {
|
|
304
304
|
type: "primary",
|
|
305
305
|
link: "",
|
|
306
|
-
onClick: (r) =>
|
|
306
|
+
onClick: (r) => Y(l.row)
|
|
307
307
|
}, {
|
|
308
308
|
default: i(() => [
|
|
309
309
|
t[13] || (t[13] = f("i", { class: "yhreport-icon report-bianji" }, null, -1)),
|
|
@@ -314,7 +314,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
314
314
|
n(e(m), {
|
|
315
315
|
type: "primary",
|
|
316
316
|
link: "",
|
|
317
|
-
onClick: (r) =>
|
|
317
|
+
onClick: (r) => q(l.row)
|
|
318
318
|
}, {
|
|
319
319
|
default: i(() => [
|
|
320
320
|
t[14] || (t[14] = f("i", { class: "yhreport-icon report-fuzhi" }, null, -1)),
|
|
@@ -325,7 +325,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
325
325
|
n(e(m), {
|
|
326
326
|
type: "danger",
|
|
327
327
|
link: "",
|
|
328
|
-
onClick: (r) =>
|
|
328
|
+
onClick: (r) => H(l.row)
|
|
329
329
|
}, {
|
|
330
330
|
default: i(() => [
|
|
331
331
|
t[15] || (t[15] = f("i", { class: "yhreport-icon report-shanchusekuai" }, null, -1)),
|
|
@@ -339,7 +339,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
339
339
|
]),
|
|
340
340
|
_: 1
|
|
341
341
|
}, 8, ["data"]),
|
|
342
|
-
n(e(
|
|
342
|
+
n(e(ie), {
|
|
343
343
|
background: "",
|
|
344
344
|
style: { "padding-top": "10px", "justify-content": "flex-end" },
|
|
345
345
|
"page-sizes": [10, 20, 50, 100],
|
|
@@ -350,15 +350,15 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
350
350
|
"onUpdate:currentPage": t[5] || (t[5] = (l) => d.pageNumber = l),
|
|
351
351
|
layout: "sizes,prev,pager,next,total"
|
|
352
352
|
}, null, 8, ["page-size", "total", "current-page"]),
|
|
353
|
-
n(e(
|
|
353
|
+
n(e(re), {
|
|
354
354
|
modelValue: C.value,
|
|
355
355
|
"onUpdate:modelValue": t[10] || (t[10] = (l) => C.value = l),
|
|
356
|
-
onClose:
|
|
356
|
+
onClose: S,
|
|
357
357
|
title: s.id ? e(a)("编辑报表") : e(a)("新建报表")
|
|
358
358
|
}, {
|
|
359
359
|
footer: i(() => [
|
|
360
|
-
f("span",
|
|
361
|
-
n(e(m), { onClick:
|
|
360
|
+
f("span", ye, [
|
|
361
|
+
n(e(m), { onClick: S }, {
|
|
362
362
|
default: i(() => [
|
|
363
363
|
u(c(e(a)("取消")), 1)
|
|
364
364
|
]),
|
|
@@ -366,7 +366,7 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
366
366
|
}),
|
|
367
367
|
n(e(m), {
|
|
368
368
|
type: "primary",
|
|
369
|
-
onClick: t[9] || (t[9] = (l) =>
|
|
369
|
+
onClick: t[9] || (t[9] = (l) => J())
|
|
370
370
|
}, {
|
|
371
371
|
default: i(() => [
|
|
372
372
|
u(c(e(a)("保存")), 1)
|
|
@@ -376,17 +376,17 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
376
376
|
])
|
|
377
377
|
]),
|
|
378
378
|
default: i(() => [
|
|
379
|
-
n(e(
|
|
379
|
+
n(e(se), {
|
|
380
380
|
model: s,
|
|
381
381
|
"label-width": "120"
|
|
382
382
|
}, {
|
|
383
383
|
default: i(() => [
|
|
384
|
-
n(e(
|
|
384
|
+
n(e($), {
|
|
385
385
|
label: e(a)("报表代码"),
|
|
386
386
|
required: ""
|
|
387
387
|
}, {
|
|
388
388
|
default: i(() => [
|
|
389
|
-
n(e(
|
|
389
|
+
n(e(w), {
|
|
390
390
|
modelValue: s.code,
|
|
391
391
|
"onUpdate:modelValue": t[6] || (t[6] = (l) => s.code = l),
|
|
392
392
|
autocomplete: "off"
|
|
@@ -394,12 +394,12 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
394
394
|
]),
|
|
395
395
|
_: 1
|
|
396
396
|
}, 8, ["label"]),
|
|
397
|
-
n(e(
|
|
397
|
+
n(e($), {
|
|
398
398
|
label: e(a)("报表名称"),
|
|
399
399
|
required: ""
|
|
400
400
|
}, {
|
|
401
401
|
default: i(() => [
|
|
402
|
-
n(e(
|
|
402
|
+
n(e(w), {
|
|
403
403
|
modelValue: s.name,
|
|
404
404
|
"onUpdate:modelValue": t[7] || (t[7] = (l) => s.name = l),
|
|
405
405
|
autocomplete: "off"
|
|
@@ -407,12 +407,12 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
407
407
|
]),
|
|
408
408
|
_: 1
|
|
409
409
|
}, 8, ["label"]),
|
|
410
|
-
n(e(
|
|
410
|
+
n(e($), {
|
|
411
411
|
label: e(a)("描述"),
|
|
412
412
|
required: ""
|
|
413
413
|
}, {
|
|
414
414
|
default: i(() => [
|
|
415
|
-
n(e(
|
|
415
|
+
n(e(w), {
|
|
416
416
|
modelValue: s.description,
|
|
417
417
|
"onUpdate:modelValue": t[8] || (t[8] = (l) => s.description = l),
|
|
418
418
|
type: "textarea",
|
|
@@ -433,4 +433,4 @@ const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me
|
|
|
433
433
|
export {
|
|
434
434
|
xe as default
|
|
435
435
|
};
|
|
436
|
-
//# sourceMappingURL=StatementList-
|
|
436
|
+
//# sourceMappingURL=StatementList-D1c4iGOZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementList-D1c4iGOZ.mjs","sources":["../StatementList.vue"],"sourcesContent":["<template>\n <section class=\"statement-list-container\">\n <div class=\"actions\">\n <div class=\"el-button is-text import-excel-button\">\n <input\n class=\"import-excel-input\"\n type=\"file\"\n @change=\"importReport($event)\" />\n {{ rct('导入') }}\n </div>\n <el-button\n text\n @click=\"exportReport\">\n {{ rct('导出') }}\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"toAddForm\">\n {{ rct('新增') }}\n </el-button>\n <div class=\"form-context\">\n <el-form-item :label=\"rct('报表名称')\">\n <el-input\n v-model=\"listForm.key\"\n @keyup.enter=\"onSearch\"\n :placeholder=\"rct('键入关键字搜索报表')\"></el-input>\n </el-form-item>\n </div>\n <el-button\n type=\"primary\"\n @click=\"onSearch()\">\n {{ rct('搜索') }}\n </el-button>\n <el-button @click=\"onReset()\">{{ rct('重置') }}</el-button>\n </div>\n <el-table\n :data=\"data\"\n row-key=\"id\"\n @selection-change=\"selectionChangeHandle\">\n <el-table-column\n type=\"selection\"\n width=\"50\"></el-table-column>\n <el-table-column\n label=\"#\"\n type=\"index\"\n width=\"66\"\n left></el-table-column>\n <el-table-column\n :label=\"rct('报表代码')\"\n min-width=\"100\"\n prop=\"code\"></el-table-column>\n <el-table-column\n :label=\"rct('报表名称')\"\n min-width=\"100\"\n prop=\"name\"></el-table-column>\n <el-table-column\n :label=\"rct('描述')\"\n min-width=\"200\"\n prop=\"description\"></el-table-column>\n <el-table-column\n :label=\"rct('操作')\"\n width=\"490\"\n fixed=\"right\">\n <template #default=\"scope\">\n <el-button\n link\n :title=\"rct('本系统前台菜单地址')\"\n @click=\"copyLink(scope.row, 'inner')\">\n {{ rct('菜单') }}\n </el-button>\n <el-button\n link\n :title=\"rct('后台测试')\"\n @click=\"copyLink(scope.row, 'admin')\">\n {{ rct('后台') }}\n </el-button>\n <el-button\n link\n :title=\"rct('其他系统嵌入地址')\"\n @click=\"copyLink(scope.row, 'outside')\">\n {{ rct('外嵌') }}\n </el-button>\n <el-button\n type=\"primary\"\n link\n @click=\"toDesign(scope.row)\">\n <i class=\"yhreport-icon report-sheji\"></i>\n {{ rct('设计') }}\n </el-button>\n <el-button\n type=\"primary\"\n link\n @click=\"toView(scope.row)\">\n <i class=\"yhreport-icon report-preview\"></i>\n {{ rct('查看') }}\n </el-button>\n <el-button\n type=\"primary\"\n link\n @click=\"toEditor(scope.row)\">\n <i class=\"yhreport-icon report-bianji\"></i>\n {{ rct('编辑') }}\n </el-button>\n <el-button\n type=\"primary\"\n link\n @click=\"toCopy(scope.row)\">\n <i class=\"yhreport-icon report-fuzhi\"></i>\n {{ rct('复制') }}\n </el-button>\n <el-button\n type=\"danger\"\n link\n @click=\"toDelete(scope.row)\">\n <i class=\"yhreport-icon report-shanchusekuai\"></i>\n {{ rct('删除') }}\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n <el-pagination\n background\n style=\"padding-top: 10px; justify-content: flex-end\"\n :page-sizes=\"[10, 20, 50, 100]\"\n v-model:page-size=\"listForm.pageSize\"\n :total=\"listForm.total\"\n v-model:current-page=\"listForm.pageNumber\"\n layout=\"sizes,prev,pager,next,total\"></el-pagination>\n <!-- 新增报表对话框 -->\n <el-dialog\n v-model=\"dialogFormVisible\"\n @close=\"cancelForm\"\n :title=\"form.id ? rct('编辑报表') : rct('新建报表')\">\n <el-form\n :model=\"form\"\n label-width=\"120\">\n <el-form-item\n :label=\"rct('报表代码')\"\n required>\n <el-input\n v-model=\"form.code\"\n autocomplete=\"off\" />\n </el-form-item>\n <el-form-item\n :label=\"rct('报表名称')\"\n required>\n <el-input\n v-model=\"form.name\"\n autocomplete=\"off\" />\n </el-form-item>\n <el-form-item\n :label=\"rct('描述')\"\n required>\n <el-input\n v-model=\"form.description\"\n type=\"textarea\"\n autocomplete=\"off\" />\n </el-form-item>\n </el-form>\n <template #footer>\n <span class=\"dialog-footer\">\n <el-button @click=\"cancelForm\">{{ rct('取消') }}</el-button>\n <el-button\n type=\"primary\"\n @click=\"saveForm()\">\n {{ rct('保存') }}\n </el-button>\n </span>\n </template>\n </el-dialog>\n </section>\n</template>\n<script setup lang=\"ts\">\nimport {ref, reactive, computed, watch, onMounted} from 'vue';\nimport {useRouter} from 'vue-router';\nimport {Statement} from './types';\nimport {getList, save, del} from './api/form';\nimport {ElMessageBox, ElMessage, ElButton, ElForm, ElFormItem, ElInput, ElTable, ElTableColumn, ElPagination, ElDialog, ElLoading} from 'element-plus';\nimport {copyString} from './libs/util';\nimport dayjs from 'dayjs';\nimport {lockEditor, unlockEditor} from './libs/editorLock';\nimport {rct} from './index';\n\nconst router = useRouter();\n\n// @ts-ignore\nconst listForm = reactive({\n key: '',\n pageSize: 10,\n pageNumber: 1,\n total: 0,\n});\nconst data = ref<Statement[]>([]);\n\n//获取报表列表\nasync function getStatementList(flag = false) {\n if (flag) {\n listForm.pageNumber = 1;\n listForm.total = 0;\n }\n const res = await getList({\n key: listForm.key,\n pageSize: listForm.pageSize,\n pageNumber: listForm.pageNumber,\n });\n data.value = res.data.list;\n listForm.total = res.data.total;\n}\n\nfunction copyLink(row, type) {\n let href = '';\n let hrefName = '链接';\n switch (type) {\n case 'admin':\n href = `/admin/statement/detail/${row.id}`;\n hrefName = '后台链接';\n break;\n case 'inner':\n href = `innerStatementdetail/${row.id}`;\n hrefName = '菜单链接';\n break;\n default:\n href = `${window.location.origin}${window.location.pathname}#/statementdetail/${row.id}`;\n hrefName = '外部链接';\n }\n copyString(href)\n .then(() => {\n ElMessage.success(hrefName + '复制成功');\n })\n .catch(() => {\n ElMessage.error(hrefName + '复制遇到问题');\n });\n}\n\nconst tableSelections = ref([]);\nconst selectionChangeHandle = (selections) => {\n tableSelections.value = selections;\n};\n\nconst importReport = async (e) => {\n const file = e.target.files[0];\n if (!file) return;\n\n const reader = new FileReader();\n reader.onload = async (event) => {\n e.target.value = '';\n try {\n if (event.target) {\n const jsonData = JSON.parse(event.target.result as string);\n if (Array.isArray(jsonData) && jsonData.every((item) => typeof item === 'object' && 'code' in item && 'config' in item && 'description' in item && 'name' in item)) {\n const loading = ElLoading.service({\n fullscreen: true,\n text: `正在导入报表,共 ${jsonData.length} 个,请稍候...`,\n });\n for (let i = 0; i < jsonData.length; i++) {\n loading.setText(`正在保存第 ${i + 1} 个,共 ${jsonData.length} 个,请稍候...`);\n const item = jsonData[i];\n await save(item);\n }\n loading.close();\n getStatementList(true);\n } else {\n ElMessage.error('格式错误,请确保导入的文件未被修改过!');\n }\n }\n } catch (error) {\n ElMessage.error('文件解析失败,请检查文件是否为有效的 JSON 格式!');\n }\n };\n reader.readAsText(file);\n};\n\nconst exportReport = () => {\n if (tableSelections.value.length > 0) {\n const jsonData = JSON.stringify(\n tableSelections.value.map(({code, config, description, name}) => {\n return {\n code,\n config,\n description,\n name,\n };\n }),\n null,\n 2\n );\n const blob = new Blob([jsonData], {type: 'application/json'});\n\n const url = URL.createObjectURL(blob);\n\n const formattedDate = dayjs().format('YYYYMMDDHHmm');\n const fileName = `报表导出-${formattedDate}.json`;\n\n const a = document.createElement('a');\n a.href = url;\n a.download = fileName;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n URL.revokeObjectURL(url);\n } else {\n ElMessage.warning('请选择要操作的报表!');\n }\n};\n\n// 页面同时服务后台硬编码路由(/admin 前缀)与前台菜单入口(/statement/list),跳转按当前分支自适应前缀\nconst branchBase = () => (router.currentRoute.value.path.startsWith('/admin') ? '/admin' : '');\n\nconst toDesign = async (row) => {\n let res = await lockEditor(row.id);\n if (res === 'OK') {\n router.push(`${branchBase()}/statement/design/${row.id}`);\n } else {\n const toUnlock = await ElMessageBox.alert('报表正在被其他用户锁定,是否强制解锁?', '提示', {\n confirmButtonText: '解锁',\n cancelButtonText: '取消',\n });\n if (toUnlock === 'confirm') {\n let flag = await unlockEditor(row.id);\n if (flag) {\n toDesign(row);\n } else {\n ElMessage.error('解锁失败,请稍后再试!');\n }\n }\n }\n};\n\nconst toView = (row) => {\n router.push(`${branchBase()}/statement/detail/${row.id}`);\n};\n\nonMounted(() => {\n getStatementList(true);\n});\n\n//新增报表\nconst dialogFormVisible = ref(false);\n\nconst form = reactive({\n id: undefined,\n name: '',\n code: '',\n description: '',\n});\n\nconst toAddForm = () => {\n dialogFormVisible.value = true;\n};\n\nconst toEditor = (row) => {\n dialogFormVisible.value = true;\n form.id = row.id;\n form.name = row.name;\n form.code = row.code;\n form.description = row.description;\n};\n\nconst toCopy = (row) => {\n ElMessageBox.confirm('当前操作会复制选定的报表,确认继续吗?', '提醒', {\n confirmButtonText: '复制',\n cancelButtonText: '取消',\n type: 'warning',\n }).then(() => {\n let form = {\n name: `${row.name}-copy`,\n code: `${row.code}-copy`,\n description: `${row.description}-copy`,\n chartConfig: row.chartConfig,\n config: row.config,\n listData: row.listData,\n };\n save(form)\n .then(() => {\n ElMessage.success('复制成功');\n getStatementList(true);\n })\n .catch(() => {\n ElMessage.error('复制失败');\n });\n });\n};\n\nconst toDelete = (row) => {\n ElMessageBox.confirm('当前操作会删除选定的报表,确认继续吗?', '警告', {\n confirmButtonText: '删除',\n cancelButtonText: '取消',\n type: 'warning',\n }).then(async () => {\n let res = await del(row.id);\n if (res.data) {\n getStatementList(true);\n }\n });\n};\n\nconst cancelForm = () => {\n dialogFormVisible.value = false;\n form.id = undefined;\n form.name = '';\n form.code = '';\n form.description = '';\n};\nconst saveForm = async () => {\n await save(form);\n getStatementList(true);\n cancelForm();\n};\n\n//搜索报表\nconst onSearch = (e?) => {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n getStatementList(false);\n};\n\n//重置\nconst onReset = () => {\n listForm.key = '';\n getStatementList(true);\n};\n\n//分页功能\nwatch(\n () => listForm.pageNumber,\n () => {\n getStatementList();\n }\n);\nwatch(\n () => listForm.pageSize,\n () => {\n getStatementList();\n }\n);\n</script>\n\n<style lang=\"scss\">\n.statement-list-container {\n width: 100%;\n height: 100%;\n padding: 10px 0 0;\n box-sizing: border-box;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n .actions {\n display: flex;\n align-items: center;\n\n .form-context {\n flex: 1;\n margin: 0 10px;\n display: flex;\n }\n\n .el-form-item {\n margin-bottom: 0;\n margin-right: 10px;\n }\n }\n\n .el-table {\n flex: 1;\n }\n\n .el-dialog {\n .el-button--text {\n margin-right: 15px;\n }\n\n .el-form-item {\n width: 100%;\n }\n\n .el-select {\n width: 100%;\n }\n\n .el-input {\n width: 100%;\n }\n\n .dialog-footer button:first-child {\n margin-right: 10px;\n }\n }\n .import-excel-button {\n position: relative;\n .import-excel-input {\n position: absolute;\n left: 0;\n top: 0;\n opacity: 0;\n width: 100%;\n height: 100%;\n z-index: 10;\n }\n }\n}\n</style>\n"],"names":["router","useRouter","listForm","reactive","data","ref","getStatementList","flag","res","getList","copyLink","row","type","href","hrefName","copyString","ElMessage","tableSelections","selectionChangeHandle","selections","importReport","e","file","reader","event","jsonData","item","loading","ElLoading","i","save","exportReport","code","config","description","name","blob","url","fileName","dayjs","a","branchBase","toDesign","lockEditor","ElMessageBox","unlockEditor","toView","onMounted","dialogFormVisible","form","toAddForm","toEditor","toCopy","toDelete","del","cancelForm","saveForm","onSearch","onReset","watch","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_cache","$event","_createTextVNode","_unref","rct","_createVNode","ElButton","_hoisted_4","ElFormItem","ElInput","ElTable","ElTableColumn","_withCtx","scope","ElPagination","ElDialog","_hoisted_5","ElForm"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editorLock-
|
|
1
|
+
{"version":3,"file":"editorLock-CGeUFKpx.mjs","sources":["../libs/editorLock.ts"],"sourcesContent":["import axios from '@/libs/api.request';\nimport {onMounted, onBeforeUnmount, onActivated, onDeactivated} from 'vue';\nimport {onBeforeRouteLeave} from 'vue-router';\nimport {ElMessageBox} from 'element-plus';\nfunction lockReq(key) {\n return axios.request({\n url: `dataLock/lock/${key}`,\n method: 'POST',\n });\n}\n\nexport const unlockEditor = async (id) => {\n id = `report-${id}`;\n const res = await axios.request({\n url: `dataLock/unlock/${id}`,\n method: 'POST',\n });\n return (res && res.data && res.data.result) || false;\n};\n\nexport async function lockEditor(id) {\n id = `report-${id}`;\n let res = await lockReq(id);\n return (res && res.data && res.data.msg) || false;\n}\n\nexport function useDetailLock(id, save, router) {\n let timer: any = null;\n let locked = false;\n let visibleAsk = false;\n\n const startInterval = () => {\n if (timer) return false;\n timer = setInterval(\n () => {\n lockEditor(id).then((res) => {\n locked = res === 'OK';\n });\n },\n 1 * 60 * 1000\n );\n };\n\n const stopInterval = () => {\n unlockEditor(id).then(() => {\n locked = false;\n });\n if (timer) {\n clearInterval(timer);\n timer = null; // 清空timer引用\n }\n };\n\n const visibleHandler = (e) => {\n if (!visibleAsk) {\n visibleAsk = true;\n if (document.visibilityState === 'visible') {\n ElMessageBox.confirm('欢迎回来,刚已保存并释放互斥锁,是否继续编辑?')\n .then(() => {\n lockEditor(id)\n .then((res) => {\n locked = true;\n if (res === 'OK') {\n if (timer) clearInterval(timer);\n startInterval();\n } else {\n ElMessageBox.alert('其他人正在编辑该报表,确认后回到列表页').then(() => {\n router.back();\n });\n }\n })\n .catch(() => {\n // 处理网络异常等情况\n ElMessageBox.alert('无法获取编辑锁,请稍后重试');\n });\n })\n .catch(() => {\n router.back();\n })\n .finally(() => {\n visibleAsk = false;\n });\n } else {\n save().then(() => {\n stopInterval();\n visibleAsk = false;\n });\n }\n }\n };\n\n onMounted(() => {\n window.addEventListener('visibilitychange', visibleHandler, false);\n startInterval();\n });\n\n onActivated(() => {\n window.addEventListener('visibilitychange', visibleHandler, false);\n startInterval();\n });\n\n onDeactivated(() => {\n window.removeEventListener('visibilitychange', visibleHandler, false);\n stopInterval();\n });\n\n onBeforeRouteLeave(() => {\n window.removeEventListener('visibilitychange', visibleHandler, false);\n stopInterval();\n });\n onBeforeUnmount(() => {\n window.removeEventListener('visibilitychange', visibleHandler, false);\n stopInterval();\n });\n}\n"],"names":["lockReq","key","axios","unlockEditor","id","res","lockEditor","useDetailLock","save","router","timer","visibleAsk","startInterval","stopInterval","visibleHandler","e","ElMessageBox","onMounted","onActivated","onDeactivated","onBeforeRouteLeave","onBeforeUnmount"],"mappings":";;;;AAIA,SAASA,EAAQC,GAAK;AACpB,SAAOC,EAAM,QAAQ;AAAA,IACnB,KAAK,iBAAiBD,CAAG;AAAA,IACzB,QAAQ;AAAA,EAAA,CACT;AACH;AAEO,MAAME,IAAe,OAAOC,MAAO;AACxC,EAAAA,IAAK,UAAUA,CAAE;AACjB,QAAMC,IAAM,MAAMH,EAAM,QAAQ;AAAA,IAC9B,KAAK,mBAAmBE,CAAE;AAAA,IAC1B,QAAQ;AAAA,EAAA,CACT;AACD,SAAQC,KAAOA,EAAI,QAAQA,EAAI,KAAK,UAAW;AACjD;AAEA,eAAsBC,EAAWF,GAAI;AACnC,EAAAA,IAAK,UAAUA,CAAE;AACjB,MAAIC,IAAM,MAAML,EAAQI,CAAE;AAC1B,SAAQC,KAAOA,EAAI,QAAQA,EAAI,KAAK,OAAQ;AAC9C;AAEO,SAASE,EAAcH,GAAII,GAAMC,GAAQ;AAC9C,MAAIC,IAAa,MAEbC,IAAa;AAEjB,QAAMC,IAAgB,MAAM;AAC1B,QAAIF,EAAO,QAAO;AAClB,IAAAA,IAAQ;AAAA,MACN,MAAM;AACJ,QAAAJ,EAAWF,CAAE,EAAE,KAAK,CAACC,MAAQ;AAAA,QAE7B,CAAC;AAAA,MACH;AAAA,MACA,IAAI,KAAK;AAAA,IAAA;AAAA,EAEb,GAEMQ,IAAe,MAAM;AACzB,IAAAV,EAAaC,CAAE,EAAE,KAAK,MAAM;AAAA,IAE5B,CAAC,GACGM,MACF,cAAcA,CAAK,GACnBA,IAAQ;AAAA,EAEZ,GAEMI,IAAiB,CAACC,MAAM;AAC5B,IAAKJ,MACHA,IAAa,IACT,SAAS,oBAAoB,YAC/BK,EAAa,QAAQ,yBAAyB,EAC3C,KAAK,MAAM;AACV,MAAAV,EAAWF,CAAE,EACV,KAAK,CAACC,MAAQ;AAEb,QAAIA,MAAQ,QACNK,mBAAqBA,CAAK,GAC9BE,EAAA,KAEAI,EAAa,MAAM,qBAAqB,EAAE,KAAK,MAAM;AACnD,UAAAP,EAAO,KAAA;AAAA,QACT,CAAC;AAAA,MAEL,CAAC,EACA,MAAM,MAAM;AAEX,QAAAO,EAAa,MAAM,eAAe;AAAA,MACpC,CAAC;AAAA,IACL,CAAC,EACA,MAAM,MAAM;AACX,MAAAP,EAAO,KAAA;AAAA,IACT,CAAC,EACA,QAAQ,MAAM;AACb,MAAAE,IAAa;AAAA,IACf,CAAC,IAEHH,EAAA,EAAO,KAAK,MAAM;AAChB,MAAAK,EAAA,GACAF,IAAa;AAAA,IACf,CAAC;AAAA,EAGP;AAEA,EAAAM,EAAU,MAAM;AACd,WAAO,iBAAiB,oBAAoBH,GAAgB,EAAK,GACjEF,EAAA;AAAA,EACF,CAAC,GAEDM,EAAY,MAAM;AAChB,WAAO,iBAAiB,oBAAoBJ,GAAgB,EAAK,GACjEF,EAAA;AAAA,EACF,CAAC,GAEDO,EAAc,MAAM;AAClB,WAAO,oBAAoB,oBAAoBL,GAAgB,EAAK,GACpED,EAAA;AAAA,EACF,CAAC,GAEDO,EAAmB,MAAM;AACvB,WAAO,oBAAoB,oBAAoBN,GAAgB,EAAK,GACpED,EAAA;AAAA,EACF,CAAC,GACDQ,EAAgB,MAAM;AACpB,WAAO,oBAAoB,oBAAoBP,GAAgB,EAAK,GACpED,EAAA;AAAA,EACF,CAAC;AACH;"}
|