yh-report 2.4.81 → 2.4.83
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-CMFtV81R.mjs +43276 -0
- package/StatementDesign-CMFtV81R.mjs.map +1 -0
- package/{StatementDetail-BFv2a1SZ.mjs → StatementDetail-BqTj5q_U.mjs} +2 -2
- package/{StatementDetail-BFv2a1SZ.mjs.map → StatementDetail-BqTj5q_U.mjs.map} +1 -1
- package/{StatementList-CgsgavMK.mjs → StatementList-BGo1kjFv.mjs} +145 -155
- package/StatementList-BGo1kjFv.mjs.map +1 -0
- package/{index-Bma6Os_9.mjs → index-Eu4uQnBg.mjs} +10006 -9807
- package/index-Eu4uQnBg.mjs.map +1 -0
- package/index.es.js +1 -1
- package/package.json +1 -1
- package/style.css +1 -1
- package/StatementDesign-m-IadOzg.mjs +0 -31554
- package/StatementDesign-m-IadOzg.mjs.map +0 -1
- package/StatementList-CgsgavMK.mjs.map +0 -1
- package/index-Bma6Os_9.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 {
|
|
3
|
+
import { H as u } from "./index-Eu4uQnBg.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-BqTj5q_U.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatementDetail-
|
|
1
|
+
{"version":3,"file":"StatementDetail-BqTj5q_U.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,178 +1,168 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useRouter as
|
|
3
|
-
import { r as a, g as te, s as
|
|
4
|
-
import { ElButton as m, ElFormItem as w, ElInput as
|
|
1
|
+
import { defineComponent as I, reactive as T, ref as E, onMounted as G, watch as L, openBlock as Q, createElementBlock as W, createElementVNode as f, createTextVNode as u, toDisplayString as c, unref as e, createVNode as n, withCtx as i, withKeys as X } from "vue";
|
|
2
|
+
import { useRouter as Z } from "vue-router";
|
|
3
|
+
import { r as a, g as ee, c as te, s as N, d as le, a as oe } from "./index-Eu4uQnBg.mjs";
|
|
4
|
+
import { ElButton as m, ElFormItem as w, ElInput as x, ElTable as ne, ElTableColumn as v, ElPagination as ae, ElDialog as ie, ElForm as re, ElMessage as k, ElLoading as se, ElMessageBox as D } from "element-plus";
|
|
5
5
|
import { l as de, u as ue } from "./editorLock-DdAYyg2u.mjs";
|
|
6
|
-
|
|
7
|
-
if (navigator.clipboard && window.isSecureContext)
|
|
8
|
-
return navigator.clipboard.writeText(h), Promise.resolve();
|
|
9
|
-
{
|
|
10
|
-
let f = document.createElement("textarea");
|
|
11
|
-
f.value = h, f.style.position = "absolute", f.style.opacity = "0", f.style.left = "-200%", f.style.top = "-200%", document.body.appendChild(f), f.focus(), f.select();
|
|
12
|
-
let r = document.execCommand("copy");
|
|
13
|
-
return f.remove(), r ? Promise.resolve() : Promise.reject(new Error("copy error"));
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe = { class: "el-button is-text import-excel-button" }, ye = { class: "form-context" }, ge = { class: "dialog-footer" }, we = /* @__PURE__ */ G({
|
|
6
|
+
const ce = { class: "statement-list-container" }, pe = { class: "actions" }, me = { class: "el-button is-text import-excel-button" }, fe = { class: "form-context" }, ge = { class: "dialog-footer" }, xe = /* @__PURE__ */ I({
|
|
17
7
|
__name: "StatementList",
|
|
18
|
-
setup(
|
|
19
|
-
const
|
|
8
|
+
setup(ye) {
|
|
9
|
+
const U = Z(), d = T({
|
|
20
10
|
key: "",
|
|
21
11
|
pageSize: 10,
|
|
22
12
|
pageNumber: 1,
|
|
23
13
|
total: 0
|
|
24
|
-
}), z =
|
|
25
|
-
async function g(
|
|
26
|
-
|
|
27
|
-
const t = await
|
|
28
|
-
key:
|
|
29
|
-
pageSize:
|
|
30
|
-
pageNumber:
|
|
14
|
+
}), z = E([]);
|
|
15
|
+
async function g(o = !1) {
|
|
16
|
+
o && (d.pageNumber = 1, d.total = 0);
|
|
17
|
+
const t = await ee({
|
|
18
|
+
key: d.key,
|
|
19
|
+
pageSize: d.pageSize,
|
|
20
|
+
pageNumber: d.pageNumber
|
|
31
21
|
});
|
|
32
|
-
z.value = t.data.list,
|
|
22
|
+
z.value = t.data.list, d.total = t.data.total;
|
|
33
23
|
}
|
|
34
|
-
function
|
|
35
|
-
let
|
|
24
|
+
function $(o, t) {
|
|
25
|
+
let l = "", r = "链接";
|
|
36
26
|
switch (t) {
|
|
37
27
|
case "admin":
|
|
38
|
-
|
|
28
|
+
l = `/admin/statement/detail/${o.id}`, r = "后台链接";
|
|
39
29
|
break;
|
|
40
30
|
case "inner":
|
|
41
|
-
|
|
31
|
+
l = `innerStatementdetail/${o.id}`, r = "菜单链接";
|
|
42
32
|
break;
|
|
43
33
|
default:
|
|
44
|
-
|
|
34
|
+
l = `${window.location.origin}${window.location.pathname}#/statementdetail/${o.id}`, r = "外部链接";
|
|
45
35
|
}
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
te(l).then(() => {
|
|
37
|
+
k.success(r + "复制成功");
|
|
48
38
|
}).catch(() => {
|
|
49
|
-
|
|
39
|
+
k.error(r + "复制遇到问题");
|
|
50
40
|
});
|
|
51
41
|
}
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
},
|
|
55
|
-
const t =
|
|
42
|
+
const h = E([]), R = (o) => {
|
|
43
|
+
h.value = o;
|
|
44
|
+
}, F = async (o) => {
|
|
45
|
+
const t = o.target.files[0];
|
|
56
46
|
if (!t) return;
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
47
|
+
const l = new FileReader();
|
|
48
|
+
l.onload = async (r) => {
|
|
49
|
+
o.target.value = "";
|
|
60
50
|
try {
|
|
61
|
-
if (
|
|
62
|
-
const
|
|
63
|
-
if (Array.isArray(
|
|
51
|
+
if (r.target) {
|
|
52
|
+
const y = JSON.parse(r.target.result);
|
|
53
|
+
if (Array.isArray(y) && y.every((p) => typeof p == "object" && "code" in p && "config" in p && "description" in p && "name" in p)) {
|
|
64
54
|
const p = se.service({
|
|
65
55
|
fullscreen: !0,
|
|
66
|
-
text: `正在导入报表,共 ${
|
|
56
|
+
text: `正在导入报表,共 ${y.length} 个,请稍候...`
|
|
67
57
|
});
|
|
68
|
-
for (let
|
|
69
|
-
p.setText(`正在保存第 ${
|
|
70
|
-
const
|
|
71
|
-
await
|
|
58
|
+
for (let b = 0; b < y.length; b++) {
|
|
59
|
+
p.setText(`正在保存第 ${b + 1} 个,共 ${y.length} 个,请稍候...`);
|
|
60
|
+
const S = y[b];
|
|
61
|
+
await N(S);
|
|
72
62
|
}
|
|
73
63
|
p.close(), g(!0);
|
|
74
64
|
} else
|
|
75
|
-
|
|
65
|
+
k.error("格式错误,请确保导入的文件未被修改过!");
|
|
76
66
|
}
|
|
77
67
|
} catch {
|
|
78
|
-
|
|
68
|
+
k.error("文件解析失败,请检查文件是否为有效的 JSON 格式!");
|
|
79
69
|
}
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
if (
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
code:
|
|
86
|
-
config:
|
|
70
|
+
}, l.readAsText(t);
|
|
71
|
+
}, _ = () => {
|
|
72
|
+
if (h.value.length > 0) {
|
|
73
|
+
const o = JSON.stringify(
|
|
74
|
+
h.value.map(({ code: b, config: S, description: K, name: P }) => ({
|
|
75
|
+
code: b,
|
|
76
|
+
config: S,
|
|
87
77
|
description: K,
|
|
88
|
-
name:
|
|
78
|
+
name: P
|
|
89
79
|
})),
|
|
90
80
|
null,
|
|
91
81
|
2
|
|
92
|
-
), t = new Blob([
|
|
93
|
-
p.href =
|
|
82
|
+
), t = new Blob([o], { type: "application/json" }), l = URL.createObjectURL(t), y = `报表导出-${le().format("YYYYMMDDHHmm")}.json`, p = document.createElement("a");
|
|
83
|
+
p.href = l, p.download = y, document.body.appendChild(p), p.click(), document.body.removeChild(p), URL.revokeObjectURL(l);
|
|
94
84
|
} else
|
|
95
|
-
|
|
96
|
-
},
|
|
97
|
-
await de(
|
|
85
|
+
k.warning("请选择要操作的报表!");
|
|
86
|
+
}, j = async (o) => {
|
|
87
|
+
await de(o.id) === "OK" ? U.push(`/admin/statement/design/${o.id}`) : await D.alert("报表正在被其他用户锁定,是否强制解锁?", "提示", {
|
|
98
88
|
confirmButtonText: "解锁",
|
|
99
89
|
cancelButtonText: "取消"
|
|
100
|
-
}) === "confirm" && (await ue(
|
|
101
|
-
},
|
|
102
|
-
|
|
90
|
+
}) === "confirm" && (await ue(o.id) ? j(o) : k.error("解锁失败,请稍后再试!"));
|
|
91
|
+
}, O = (o) => {
|
|
92
|
+
U.push(`/admin/statement/detail/${o.id}`);
|
|
103
93
|
};
|
|
104
|
-
|
|
94
|
+
G(() => {
|
|
105
95
|
g(!0);
|
|
106
96
|
});
|
|
107
|
-
const
|
|
97
|
+
const C = E(!1), s = T({
|
|
108
98
|
id: void 0,
|
|
109
99
|
name: "",
|
|
110
100
|
code: "",
|
|
111
101
|
description: ""
|
|
112
|
-
}),
|
|
113
|
-
|
|
114
|
-
},
|
|
115
|
-
|
|
116
|
-
}, Y = (
|
|
117
|
-
|
|
102
|
+
}), M = () => {
|
|
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
|
+
}, Y = (o) => {
|
|
107
|
+
D.confirm("当前操作会复制选定的报表,确认继续吗?", "提醒", {
|
|
118
108
|
confirmButtonText: "复制",
|
|
119
109
|
cancelButtonText: "取消",
|
|
120
110
|
type: "warning"
|
|
121
111
|
}).then(() => {
|
|
122
112
|
let t = {
|
|
123
|
-
name: `${
|
|
124
|
-
code: `${
|
|
125
|
-
description: `${
|
|
126
|
-
chartConfig:
|
|
127
|
-
config:
|
|
128
|
-
listData:
|
|
113
|
+
name: `${o.name}-copy`,
|
|
114
|
+
code: `${o.code}-copy`,
|
|
115
|
+
description: `${o.description}-copy`,
|
|
116
|
+
chartConfig: o.chartConfig,
|
|
117
|
+
config: o.config,
|
|
118
|
+
listData: o.listData
|
|
129
119
|
};
|
|
130
|
-
|
|
131
|
-
|
|
120
|
+
N(t).then(() => {
|
|
121
|
+
k.success("复制成功"), g(!0);
|
|
132
122
|
}).catch(() => {
|
|
133
|
-
|
|
123
|
+
k.error("复制失败");
|
|
134
124
|
});
|
|
135
125
|
});
|
|
136
|
-
}, q = (
|
|
137
|
-
|
|
126
|
+
}, q = (o) => {
|
|
127
|
+
D.confirm("当前操作会删除选定的报表,确认继续吗?", "警告", {
|
|
138
128
|
confirmButtonText: "删除",
|
|
139
129
|
cancelButtonText: "取消",
|
|
140
130
|
type: "warning"
|
|
141
131
|
}).then(async () => {
|
|
142
|
-
(await
|
|
132
|
+
(await oe(o.id)).data && g(!0);
|
|
143
133
|
});
|
|
144
|
-
},
|
|
145
|
-
|
|
134
|
+
}, V = () => {
|
|
135
|
+
C.value = !1, s.id = void 0, s.name = "", s.code = "", s.description = "";
|
|
146
136
|
}, H = async () => {
|
|
147
|
-
await
|
|
148
|
-
}, B = (
|
|
149
|
-
|
|
137
|
+
await N(s), g(!0), V();
|
|
138
|
+
}, B = (o) => {
|
|
139
|
+
o && (o.preventDefault(), o.stopPropagation()), g(!1);
|
|
150
140
|
}, J = () => {
|
|
151
|
-
|
|
141
|
+
d.key = "", g(!0);
|
|
152
142
|
};
|
|
153
|
-
return
|
|
154
|
-
() =>
|
|
143
|
+
return L(
|
|
144
|
+
() => d.pageNumber,
|
|
155
145
|
() => {
|
|
156
146
|
g();
|
|
157
147
|
}
|
|
158
|
-
),
|
|
159
|
-
() =>
|
|
148
|
+
), L(
|
|
149
|
+
() => d.pageSize,
|
|
160
150
|
() => {
|
|
161
151
|
g();
|
|
162
152
|
}
|
|
163
|
-
), (
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
153
|
+
), (o, t) => (Q(), W("section", ce, [
|
|
154
|
+
f("div", pe, [
|
|
155
|
+
f("div", me, [
|
|
156
|
+
f("input", {
|
|
167
157
|
class: "import-excel-input",
|
|
168
158
|
type: "file",
|
|
169
|
-
onChange: t[0] || (t[0] = (
|
|
159
|
+
onChange: t[0] || (t[0] = (l) => F(l))
|
|
170
160
|
}, null, 32),
|
|
171
161
|
u(" " + c(e(a)("导入")), 1)
|
|
172
162
|
]),
|
|
173
163
|
n(e(m), {
|
|
174
164
|
text: "",
|
|
175
|
-
onClick:
|
|
165
|
+
onClick: _
|
|
176
166
|
}, {
|
|
177
167
|
default: i(() => [
|
|
178
168
|
u(c(e(a)("导出")), 1)
|
|
@@ -181,22 +171,22 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
181
171
|
}),
|
|
182
172
|
n(e(m), {
|
|
183
173
|
type: "primary",
|
|
184
|
-
onClick:
|
|
174
|
+
onClick: M
|
|
185
175
|
}, {
|
|
186
176
|
default: i(() => [
|
|
187
177
|
u(c(e(a)("新增")), 1)
|
|
188
178
|
]),
|
|
189
179
|
_: 1
|
|
190
180
|
}),
|
|
191
|
-
|
|
181
|
+
f("div", fe, [
|
|
192
182
|
n(e(w), {
|
|
193
183
|
label: e(a)("报表名称")
|
|
194
184
|
}, {
|
|
195
185
|
default: i(() => [
|
|
196
|
-
n(e(
|
|
197
|
-
modelValue:
|
|
198
|
-
"onUpdate:modelValue": t[1] || (t[1] = (
|
|
199
|
-
onKeyup:
|
|
186
|
+
n(e(x), {
|
|
187
|
+
modelValue: d.key,
|
|
188
|
+
"onUpdate:modelValue": t[1] || (t[1] = (l) => d.key = l),
|
|
189
|
+
onKeyup: X(B, ["enter"]),
|
|
200
190
|
placeholder: e(a)("键入关键字搜索报表")
|
|
201
191
|
}, null, 8, ["modelValue", "placeholder"])
|
|
202
192
|
]),
|
|
@@ -205,7 +195,7 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
205
195
|
]),
|
|
206
196
|
n(e(m), {
|
|
207
197
|
type: "primary",
|
|
208
|
-
onClick: t[2] || (t[2] = (
|
|
198
|
+
onClick: t[2] || (t[2] = (l) => B())
|
|
209
199
|
}, {
|
|
210
200
|
default: i(() => [
|
|
211
201
|
u(c(e(a)("搜索")), 1)
|
|
@@ -213,7 +203,7 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
213
203
|
_: 1
|
|
214
204
|
}),
|
|
215
205
|
n(e(m), {
|
|
216
|
-
onClick: t[3] || (t[3] = (
|
|
206
|
+
onClick: t[3] || (t[3] = (l) => J())
|
|
217
207
|
}, {
|
|
218
208
|
default: i(() => [
|
|
219
209
|
u(c(e(a)("重置")), 1)
|
|
@@ -224,44 +214,44 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
224
214
|
n(e(ne), {
|
|
225
215
|
data: z.value,
|
|
226
216
|
"row-key": "id",
|
|
227
|
-
onSelectionChange:
|
|
217
|
+
onSelectionChange: R
|
|
228
218
|
}, {
|
|
229
219
|
default: i(() => [
|
|
230
|
-
n(e(
|
|
220
|
+
n(e(v), {
|
|
231
221
|
type: "selection",
|
|
232
222
|
width: "50"
|
|
233
223
|
}),
|
|
234
|
-
n(e(
|
|
224
|
+
n(e(v), {
|
|
235
225
|
label: "#",
|
|
236
226
|
type: "index",
|
|
237
227
|
width: "66",
|
|
238
228
|
left: ""
|
|
239
229
|
}),
|
|
240
|
-
n(e(
|
|
230
|
+
n(e(v), {
|
|
241
231
|
label: e(a)("报表代码"),
|
|
242
232
|
"min-width": "100",
|
|
243
233
|
prop: "code"
|
|
244
234
|
}, null, 8, ["label"]),
|
|
245
|
-
n(e(
|
|
235
|
+
n(e(v), {
|
|
246
236
|
label: e(a)("报表名称"),
|
|
247
237
|
"min-width": "100",
|
|
248
238
|
prop: "name"
|
|
249
239
|
}, null, 8, ["label"]),
|
|
250
|
-
n(e(
|
|
240
|
+
n(e(v), {
|
|
251
241
|
label: e(a)("描述"),
|
|
252
242
|
"min-width": "200",
|
|
253
243
|
prop: "description"
|
|
254
244
|
}, null, 8, ["label"]),
|
|
255
|
-
n(e(
|
|
245
|
+
n(e(v), {
|
|
256
246
|
label: e(a)("操作"),
|
|
257
247
|
width: "490",
|
|
258
248
|
fixed: "right"
|
|
259
249
|
}, {
|
|
260
|
-
default: i((
|
|
250
|
+
default: i((l) => [
|
|
261
251
|
n(e(m), {
|
|
262
252
|
link: "",
|
|
263
253
|
title: e(a)("本系统前台菜单地址"),
|
|
264
|
-
onClick: (
|
|
254
|
+
onClick: (r) => $(l.row, "inner")
|
|
265
255
|
}, {
|
|
266
256
|
default: i(() => [
|
|
267
257
|
u(c(e(a)("菜单")), 1)
|
|
@@ -271,7 +261,7 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
271
261
|
n(e(m), {
|
|
272
262
|
link: "",
|
|
273
263
|
title: e(a)("后台测试"),
|
|
274
|
-
onClick: (
|
|
264
|
+
onClick: (r) => $(l.row, "admin")
|
|
275
265
|
}, {
|
|
276
266
|
default: i(() => [
|
|
277
267
|
u(c(e(a)("后台")), 1)
|
|
@@ -281,7 +271,7 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
281
271
|
n(e(m), {
|
|
282
272
|
link: "",
|
|
283
273
|
title: e(a)("其他系统嵌入地址"),
|
|
284
|
-
onClick: (
|
|
274
|
+
onClick: (r) => $(l.row, "outside")
|
|
285
275
|
}, {
|
|
286
276
|
default: i(() => [
|
|
287
277
|
u(c(e(a)("外嵌")), 1)
|
|
@@ -291,10 +281,10 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
291
281
|
n(e(m), {
|
|
292
282
|
type: "primary",
|
|
293
283
|
link: "",
|
|
294
|
-
onClick: (
|
|
284
|
+
onClick: (r) => j(l.row)
|
|
295
285
|
}, {
|
|
296
286
|
default: i(() => [
|
|
297
|
-
t[11] || (t[11] =
|
|
287
|
+
t[11] || (t[11] = f("i", { class: "yhreport-icon report-sheji" }, null, -1)),
|
|
298
288
|
u(" " + c(e(a)("设计")), 1)
|
|
299
289
|
]),
|
|
300
290
|
_: 1
|
|
@@ -302,10 +292,10 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
302
292
|
n(e(m), {
|
|
303
293
|
type: "primary",
|
|
304
294
|
link: "",
|
|
305
|
-
onClick: (
|
|
295
|
+
onClick: (r) => O(l.row)
|
|
306
296
|
}, {
|
|
307
297
|
default: i(() => [
|
|
308
|
-
t[12] || (t[12] =
|
|
298
|
+
t[12] || (t[12] = f("i", { class: "yhreport-icon report-preview" }, null, -1)),
|
|
309
299
|
u(" " + c(e(a)("查看")), 1)
|
|
310
300
|
]),
|
|
311
301
|
_: 1
|
|
@@ -313,10 +303,10 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
313
303
|
n(e(m), {
|
|
314
304
|
type: "primary",
|
|
315
305
|
link: "",
|
|
316
|
-
onClick: (
|
|
306
|
+
onClick: (r) => A(l.row)
|
|
317
307
|
}, {
|
|
318
308
|
default: i(() => [
|
|
319
|
-
t[13] || (t[13] =
|
|
309
|
+
t[13] || (t[13] = f("i", { class: "yhreport-icon report-bianji" }, null, -1)),
|
|
320
310
|
u(" " + c(e(a)("编辑")), 1)
|
|
321
311
|
]),
|
|
322
312
|
_: 1
|
|
@@ -324,10 +314,10 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
324
314
|
n(e(m), {
|
|
325
315
|
type: "primary",
|
|
326
316
|
link: "",
|
|
327
|
-
onClick: (
|
|
317
|
+
onClick: (r) => Y(l.row)
|
|
328
318
|
}, {
|
|
329
319
|
default: i(() => [
|
|
330
|
-
t[14] || (t[14] =
|
|
320
|
+
t[14] || (t[14] = f("i", { class: "yhreport-icon report-fuzhi" }, null, -1)),
|
|
331
321
|
u(" " + c(e(a)("复制")), 1)
|
|
332
322
|
]),
|
|
333
323
|
_: 1
|
|
@@ -335,10 +325,10 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
335
325
|
n(e(m), {
|
|
336
326
|
type: "danger",
|
|
337
327
|
link: "",
|
|
338
|
-
onClick: (
|
|
328
|
+
onClick: (r) => q(l.row)
|
|
339
329
|
}, {
|
|
340
330
|
default: i(() => [
|
|
341
|
-
t[15] || (t[15] =
|
|
331
|
+
t[15] || (t[15] = f("i", { class: "yhreport-icon report-shanchusekuai" }, null, -1)),
|
|
342
332
|
u(" " + c(e(a)("删除")), 1)
|
|
343
333
|
]),
|
|
344
334
|
_: 1
|
|
@@ -353,22 +343,22 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
353
343
|
background: "",
|
|
354
344
|
style: { "padding-top": "10px", "justify-content": "flex-end" },
|
|
355
345
|
"page-sizes": [10, 20, 50, 100],
|
|
356
|
-
"page-size":
|
|
357
|
-
"onUpdate:pageSize": t[4] || (t[4] = (
|
|
358
|
-
total:
|
|
359
|
-
"current-page":
|
|
360
|
-
"onUpdate:currentPage": t[5] || (t[5] = (
|
|
346
|
+
"page-size": d.pageSize,
|
|
347
|
+
"onUpdate:pageSize": t[4] || (t[4] = (l) => d.pageSize = l),
|
|
348
|
+
total: d.total,
|
|
349
|
+
"current-page": d.pageNumber,
|
|
350
|
+
"onUpdate:currentPage": t[5] || (t[5] = (l) => d.pageNumber = l),
|
|
361
351
|
layout: "sizes,prev,pager,next,total"
|
|
362
352
|
}, null, 8, ["page-size", "total", "current-page"]),
|
|
363
353
|
n(e(ie), {
|
|
364
|
-
modelValue:
|
|
365
|
-
"onUpdate:modelValue": t[10] || (t[10] = (
|
|
366
|
-
onClose:
|
|
367
|
-
title:
|
|
354
|
+
modelValue: C.value,
|
|
355
|
+
"onUpdate:modelValue": t[10] || (t[10] = (l) => C.value = l),
|
|
356
|
+
onClose: V,
|
|
357
|
+
title: s.id ? e(a)("编辑报表") : e(a)("新建报表")
|
|
368
358
|
}, {
|
|
369
359
|
footer: i(() => [
|
|
370
|
-
|
|
371
|
-
n(e(m), { onClick:
|
|
360
|
+
f("span", ge, [
|
|
361
|
+
n(e(m), { onClick: V }, {
|
|
372
362
|
default: i(() => [
|
|
373
363
|
u(c(e(a)("取消")), 1)
|
|
374
364
|
]),
|
|
@@ -376,7 +366,7 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
376
366
|
}),
|
|
377
367
|
n(e(m), {
|
|
378
368
|
type: "primary",
|
|
379
|
-
onClick: t[9] || (t[9] = (
|
|
369
|
+
onClick: t[9] || (t[9] = (l) => H())
|
|
380
370
|
}, {
|
|
381
371
|
default: i(() => [
|
|
382
372
|
u(c(e(a)("保存")), 1)
|
|
@@ -387,7 +377,7 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
387
377
|
]),
|
|
388
378
|
default: i(() => [
|
|
389
379
|
n(e(re), {
|
|
390
|
-
model:
|
|
380
|
+
model: s,
|
|
391
381
|
"label-width": "120"
|
|
392
382
|
}, {
|
|
393
383
|
default: i(() => [
|
|
@@ -396,9 +386,9 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
396
386
|
required: ""
|
|
397
387
|
}, {
|
|
398
388
|
default: i(() => [
|
|
399
|
-
n(e(
|
|
400
|
-
modelValue:
|
|
401
|
-
"onUpdate:modelValue": t[6] || (t[6] = (
|
|
389
|
+
n(e(x), {
|
|
390
|
+
modelValue: s.code,
|
|
391
|
+
"onUpdate:modelValue": t[6] || (t[6] = (l) => s.code = l),
|
|
402
392
|
autocomplete: "off"
|
|
403
393
|
}, null, 8, ["modelValue"])
|
|
404
394
|
]),
|
|
@@ -409,9 +399,9 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
409
399
|
required: ""
|
|
410
400
|
}, {
|
|
411
401
|
default: i(() => [
|
|
412
|
-
n(e(
|
|
413
|
-
modelValue:
|
|
414
|
-
"onUpdate:modelValue": t[7] || (t[7] = (
|
|
402
|
+
n(e(x), {
|
|
403
|
+
modelValue: s.name,
|
|
404
|
+
"onUpdate:modelValue": t[7] || (t[7] = (l) => s.name = l),
|
|
415
405
|
autocomplete: "off"
|
|
416
406
|
}, null, 8, ["modelValue"])
|
|
417
407
|
]),
|
|
@@ -422,9 +412,9 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
422
412
|
required: ""
|
|
423
413
|
}, {
|
|
424
414
|
default: i(() => [
|
|
425
|
-
n(e(
|
|
426
|
-
modelValue:
|
|
427
|
-
"onUpdate:modelValue": t[8] || (t[8] = (
|
|
415
|
+
n(e(x), {
|
|
416
|
+
modelValue: s.description,
|
|
417
|
+
"onUpdate:modelValue": t[8] || (t[8] = (l) => s.description = l),
|
|
428
418
|
type: "textarea",
|
|
429
419
|
autocomplete: "off"
|
|
430
420
|
}, null, 8, ["modelValue"])
|
|
@@ -441,6 +431,6 @@ const pe = { class: "statement-list-container" }, me = { class: "actions" }, fe
|
|
|
441
431
|
}
|
|
442
432
|
});
|
|
443
433
|
export {
|
|
444
|
-
|
|
434
|
+
xe as default
|
|
445
435
|
};
|
|
446
|
-
//# sourceMappingURL=StatementList-
|
|
436
|
+
//# sourceMappingURL=StatementList-BGo1kjFv.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementList-BGo1kjFv.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 'yh-report/libs/editorLock';\nimport {rct} from 'yh-report';\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\nconst toDesign = async (row) => {\n let res = await lockEditor(row.id);\n if (res === 'OK') {\n router.push(`/admin/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(`/admin/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","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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"}
|