yh-report 2.1.11 → 2.1.13
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-47b47204.mjs → StatementDesign-6c96ca45.mjs} +7432 -6691
- package/StatementDesign-6c96ca45.mjs.map +1 -0
- package/{StatementDetail-896919a1.mjs → StatementDetail-c05d592c.mjs} +2 -2
- package/{StatementDetail-896919a1.mjs.map → StatementDetail-c05d592c.mjs.map} +1 -1
- package/{StatementList-add06934.mjs → StatementList-001dc544.mjs} +41 -41
- package/StatementList-001dc544.mjs.map +1 -0
- package/{index-33c557e0.mjs → index-f8afcccf.mjs} +1640 -1568
- package/index-f8afcccf.mjs.map +1 -0
- package/index.es.js +1 -1
- package/package.json +1 -1
- package/style.css +1 -1
- package/StatementDesign-47b47204.mjs.map +0 -1
- package/StatementList-add06934.mjs.map +0 -1
- package/index-33c557e0.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as o, ref as a, onActivated as i, onDeactivated as r, onMounted as m, openBlock as s, createElementBlock as c, createVNode as d } from "vue";
|
|
2
2
|
import { useRoute as l } from "vue-router";
|
|
3
|
-
import { n as u } from "./index-
|
|
3
|
+
import { n as u } from "./index-f8afcccf.mjs";
|
|
4
4
|
import "element-plus";
|
|
5
5
|
import "@/libs/api.request.js";
|
|
6
6
|
import "lodash-es";
|
|
@@ -25,4 +25,4 @@ const p = { class: "statement-detail-container" }, y = /* @__PURE__ */ o({
|
|
|
25
25
|
export {
|
|
26
26
|
y as default
|
|
27
27
|
};
|
|
28
|
-
//# sourceMappingURL=StatementDetail-
|
|
28
|
+
//# sourceMappingURL=StatementDetail-c05d592c.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatementDetail-
|
|
1
|
+
{"version":3,"file":"StatementDetail-c05d592c.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"],"mappings":";;;;;;;;;;AASA,UAAMA,IAAQC,KACRC,IAAKC;AAEX,WAAAC,EAAY,MAAM;;AAChB,OAAAC,IAAA,SAAS,cAAc,iBAAiB,MAAxC,QAAAA,EAA2C,UAAU,IAAI;AAAA,IAAuB,CACjF,GAEDC,EAAc,MAAM;;AAClB,OAAAD,IAAA,SAAS,cAAc,iBAAiB,MAAxC,QAAAA,EAA2C,UAAU,OAAO;AAAA,IAAuB,CACpF,GAEDE,EAAU,MAAM;AACX,MAAAL,EAAA,QAAQF,EAAM,OAAO;AAAA,IAAA,CACzB;;;;;"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { defineComponent as J, reactive as N, ref as V, onMounted as
|
|
1
|
+
import { defineComponent as J, reactive as N, ref as V, onMounted as K, watch as z, openBlock as P, createElementBlock as I, createElementVNode as f, createTextVNode as u, createVNode as n, unref as o, withCtx as a, withKeys as G } from "vue";
|
|
2
2
|
import { useRouter as Q } from "vue-router";
|
|
3
|
-
import { g as W, c as X, s as U, d as Z, a as ee } from "./index-
|
|
4
|
-
import { ElButton as c, ElForm as
|
|
3
|
+
import { g as W, c as X, s as U, d as Z, a as ee } from "./index-f8afcccf.mjs";
|
|
4
|
+
import { ElButton as c, ElForm as D, ElFormItem as b, ElInput as _, ElTable as te, ElTableColumn as y, ElPagination as ne, ElDialog as oe, ElMessage as v, ElLoading as le, ElMessageBox as ae } from "element-plus";
|
|
5
5
|
import "@/libs/api.request.js";
|
|
6
6
|
import "lodash-es";
|
|
7
7
|
import "echarts";
|
|
8
8
|
const ie = { class: "statement-list-container" }, re = { class: "actions" }, de = { class: "el-button is-text import-excel-button" }, se = /* @__PURE__ */ f("i", { class: "iconfont icon-antdesign" }, null, -1), ue = /* @__PURE__ */ f("i", { class: "iconfont icon-view" }, null, -1), ce = /* @__PURE__ */ f("i", { class: "iconfont icon-edit-outline" }, null, -1), pe = /* @__PURE__ */ f("i", { class: "iconfont icon-delete" }, null, -1), me = { class: "dialog-footer" }, Ce = /* @__PURE__ */ J({
|
|
9
9
|
__name: "StatementList",
|
|
10
10
|
setup(fe) {
|
|
11
|
-
const
|
|
11
|
+
const h = Q(), r = N({
|
|
12
12
|
key: "",
|
|
13
13
|
pageSize: 10,
|
|
14
14
|
pageNumber: 1,
|
|
15
15
|
total: 0
|
|
16
|
-
}),
|
|
16
|
+
}), $ = V([]);
|
|
17
17
|
async function m(l = !1) {
|
|
18
18
|
l && (r.pageNumber = 1, r.total = 0);
|
|
19
19
|
const t = await W({
|
|
@@ -21,9 +21,9 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
21
21
|
pageSize: r.pageSize,
|
|
22
22
|
pageNumber: r.pageNumber
|
|
23
23
|
});
|
|
24
|
-
|
|
24
|
+
$.value = t.data.list, r.total = t.data.total;
|
|
25
25
|
}
|
|
26
|
-
function
|
|
26
|
+
function S(l, t) {
|
|
27
27
|
let e = "", d = "链接";
|
|
28
28
|
t === "inner" ? (e = `innerStatementdetail/${l.id}`, d = "内部链接") : (e = `${window.location.origin}${window.location.pathname}#/statementdetail/${l.id}`, d = "外部链接"), X(e).then(() => {
|
|
29
29
|
v.success(d + "复制成功");
|
|
@@ -31,9 +31,9 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
31
31
|
v.error(d + "复制遇到问题");
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
},
|
|
34
|
+
const w = V([]), L = (l) => {
|
|
35
|
+
w.value = l;
|
|
36
|
+
}, j = async (l) => {
|
|
37
37
|
const t = l.target.files[0];
|
|
38
38
|
if (!t)
|
|
39
39
|
return;
|
|
@@ -62,9 +62,9 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
62
62
|
}
|
|
63
63
|
}, e.readAsText(t);
|
|
64
64
|
}, R = () => {
|
|
65
|
-
if (
|
|
65
|
+
if (w.value.length > 0) {
|
|
66
66
|
const l = JSON.stringify(
|
|
67
|
-
|
|
67
|
+
w.value.map(({ code: g, config: x, description: q, name: H }) => ({
|
|
68
68
|
code: g,
|
|
69
69
|
config: x,
|
|
70
70
|
description: q,
|
|
@@ -78,12 +78,12 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
78
78
|
v.warning("请选择要操作的报表!");
|
|
79
79
|
};
|
|
80
80
|
function F(l) {
|
|
81
|
-
|
|
81
|
+
h.push(`/admin/statement/design/${l.id}`);
|
|
82
82
|
}
|
|
83
83
|
function B(l) {
|
|
84
|
-
|
|
84
|
+
h.push(`/admin/statement/detail/${l.id}`);
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
K(() => {
|
|
87
87
|
m(!0);
|
|
88
88
|
});
|
|
89
89
|
const k = V(!1), i = N({
|
|
@@ -113,8 +113,8 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
113
113
|
async function A() {
|
|
114
114
|
await U(i), m(!0), C();
|
|
115
115
|
}
|
|
116
|
-
function E() {
|
|
117
|
-
m(!1);
|
|
116
|
+
function E(l) {
|
|
117
|
+
l && (l.preventDefault(), l.stopPropagation()), m(!1);
|
|
118
118
|
}
|
|
119
119
|
function Y() {
|
|
120
120
|
r.key = "", m(!0);
|
|
@@ -129,13 +129,13 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
129
129
|
() => {
|
|
130
130
|
m();
|
|
131
131
|
}
|
|
132
|
-
), (l, t) => (
|
|
132
|
+
), (l, t) => (P(), I("section", ie, [
|
|
133
133
|
f("div", re, [
|
|
134
134
|
f("div", de, [
|
|
135
135
|
f("input", {
|
|
136
136
|
class: "import-excel-input",
|
|
137
137
|
type: "file",
|
|
138
|
-
onChange: t[0] || (t[0] = (e) =>
|
|
138
|
+
onChange: t[0] || (t[0] = (e) => j(e))
|
|
139
139
|
}, null, 32),
|
|
140
140
|
u(" 导入 ")
|
|
141
141
|
]),
|
|
@@ -157,16 +157,16 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
157
157
|
]),
|
|
158
158
|
_: 1
|
|
159
159
|
}),
|
|
160
|
-
n(o(
|
|
160
|
+
n(o(D), { inline: "" }, {
|
|
161
161
|
default: a(() => [
|
|
162
162
|
n(o(b), { label: "报表名称" }, {
|
|
163
163
|
default: a(() => [
|
|
164
|
-
n(o(
|
|
164
|
+
n(o(_), {
|
|
165
165
|
modelValue: r.key,
|
|
166
166
|
"onUpdate:modelValue": t[1] || (t[1] = (e) => r.key = e),
|
|
167
|
-
onKeyup:
|
|
167
|
+
onKeyup: G(E, ["enter"]),
|
|
168
168
|
placeholder: "键入关键字搜索报表"
|
|
169
|
-
}, null, 8, ["modelValue"])
|
|
169
|
+
}, null, 8, ["modelValue", "onKeyup"])
|
|
170
170
|
]),
|
|
171
171
|
_: 1
|
|
172
172
|
})
|
|
@@ -175,7 +175,7 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
175
175
|
}),
|
|
176
176
|
n(o(c), {
|
|
177
177
|
type: "primary",
|
|
178
|
-
onClick: t[
|
|
178
|
+
onClick: t[2] || (t[2] = (e) => E())
|
|
179
179
|
}, {
|
|
180
180
|
default: a(() => [
|
|
181
181
|
u(" 搜索 ")
|
|
@@ -183,7 +183,7 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
183
183
|
_: 1
|
|
184
184
|
}),
|
|
185
185
|
n(o(c), {
|
|
186
|
-
onClick: t[
|
|
186
|
+
onClick: t[3] || (t[3] = (e) => Y())
|
|
187
187
|
}, {
|
|
188
188
|
default: a(() => [
|
|
189
189
|
u("重置")
|
|
@@ -192,9 +192,9 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
192
192
|
})
|
|
193
193
|
]),
|
|
194
194
|
n(o(te), {
|
|
195
|
-
data:
|
|
195
|
+
data: $.value,
|
|
196
196
|
"row-key": "id",
|
|
197
|
-
onSelectionChange:
|
|
197
|
+
onSelectionChange: L
|
|
198
198
|
}, {
|
|
199
199
|
default: a(() => [
|
|
200
200
|
n(o(y), {
|
|
@@ -231,7 +231,7 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
231
231
|
n(o(c), {
|
|
232
232
|
link: "",
|
|
233
233
|
title: "本系统前台页面嵌入地址",
|
|
234
|
-
onClick: (d) =>
|
|
234
|
+
onClick: (d) => S(e.row, "inner")
|
|
235
235
|
}, {
|
|
236
236
|
default: a(() => [
|
|
237
237
|
u(" 内部链接 ")
|
|
@@ -241,7 +241,7 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
241
241
|
n(o(c), {
|
|
242
242
|
link: "",
|
|
243
243
|
title: "其他系统嵌入地址",
|
|
244
|
-
onClick: (d) =>
|
|
244
|
+
onClick: (d) => S(e.row, "outside")
|
|
245
245
|
}, {
|
|
246
246
|
default: a(() => [
|
|
247
247
|
u(" 外部链接 ")
|
|
@@ -303,15 +303,15 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
303
303
|
style: { "padding-top": "10px", "justify-content": "flex-end" },
|
|
304
304
|
"page-sizes": [10, 20, 50, 100],
|
|
305
305
|
"page-size": r.pageSize,
|
|
306
|
-
"onUpdate:pageSize": t[
|
|
306
|
+
"onUpdate:pageSize": t[4] || (t[4] = (e) => r.pageSize = e),
|
|
307
307
|
total: r.total,
|
|
308
308
|
"current-page": r.pageNumber,
|
|
309
|
-
"onUpdate:currentPage": t[
|
|
309
|
+
"onUpdate:currentPage": t[5] || (t[5] = (e) => r.pageNumber = e),
|
|
310
310
|
layout: "sizes,prev,pager,next,total"
|
|
311
311
|
}, null, 8, ["page-size", "total", "current-page"]),
|
|
312
312
|
n(o(oe), {
|
|
313
313
|
modelValue: k.value,
|
|
314
|
-
"onUpdate:modelValue": t[
|
|
314
|
+
"onUpdate:modelValue": t[10] || (t[10] = (e) => k.value = e),
|
|
315
315
|
onClose: C,
|
|
316
316
|
title: i.id ? "编辑报表" : "新建报表"
|
|
317
317
|
}, {
|
|
@@ -325,7 +325,7 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
325
325
|
}),
|
|
326
326
|
n(o(c), {
|
|
327
327
|
type: "primary",
|
|
328
|
-
onClick: t[
|
|
328
|
+
onClick: t[9] || (t[9] = (e) => A())
|
|
329
329
|
}, {
|
|
330
330
|
default: a(() => [
|
|
331
331
|
u(" 保存 ")
|
|
@@ -335,7 +335,7 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
335
335
|
])
|
|
336
336
|
]),
|
|
337
337
|
default: a(() => [
|
|
338
|
-
n(o(
|
|
338
|
+
n(o(D), {
|
|
339
339
|
model: i,
|
|
340
340
|
"label-width": "120"
|
|
341
341
|
}, {
|
|
@@ -345,9 +345,9 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
345
345
|
required: ""
|
|
346
346
|
}, {
|
|
347
347
|
default: a(() => [
|
|
348
|
-
n(o(
|
|
348
|
+
n(o(_), {
|
|
349
349
|
modelValue: i.code,
|
|
350
|
-
"onUpdate:modelValue": t[
|
|
350
|
+
"onUpdate:modelValue": t[6] || (t[6] = (e) => i.code = e),
|
|
351
351
|
autocomplete: "off"
|
|
352
352
|
}, null, 8, ["modelValue"])
|
|
353
353
|
]),
|
|
@@ -358,9 +358,9 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
358
358
|
required: ""
|
|
359
359
|
}, {
|
|
360
360
|
default: a(() => [
|
|
361
|
-
n(o(
|
|
361
|
+
n(o(_), {
|
|
362
362
|
modelValue: i.name,
|
|
363
|
-
"onUpdate:modelValue": t[
|
|
363
|
+
"onUpdate:modelValue": t[7] || (t[7] = (e) => i.name = e),
|
|
364
364
|
autocomplete: "off"
|
|
365
365
|
}, null, 8, ["modelValue"])
|
|
366
366
|
]),
|
|
@@ -371,9 +371,9 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
371
371
|
required: ""
|
|
372
372
|
}, {
|
|
373
373
|
default: a(() => [
|
|
374
|
-
n(o(
|
|
374
|
+
n(o(_), {
|
|
375
375
|
modelValue: i.description,
|
|
376
|
-
"onUpdate:modelValue": t[
|
|
376
|
+
"onUpdate:modelValue": t[8] || (t[8] = (e) => i.description = e),
|
|
377
377
|
type: "textarea",
|
|
378
378
|
autocomplete: "off"
|
|
379
379
|
}, null, 8, ["modelValue"])
|
|
@@ -392,4 +392,4 @@ const ie = { class: "statement-list-container" }, re = { class: "actions" }, de
|
|
|
392
392
|
export {
|
|
393
393
|
Ce as default
|
|
394
394
|
};
|
|
395
|
-
//# sourceMappingURL=StatementList-
|
|
395
|
+
//# sourceMappingURL=StatementList-001dc544.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementList-001dc544.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 导入\n </div>\n <el-button\n text\n @click=\"exportReport\">\n 导出\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"toAddForm\">\n 新增\n </el-button>\n <el-form inline>\n <el-form-item label=\"报表名称\">\n <el-input\n v-model=\"listForm.key\"\n @keyup.enter=\"onSearch\"\n placeholder=\"键入关键字搜索报表\"></el-input>\n </el-form-item>\n </el-form>\n <el-button\n type=\"primary\"\n @click=\"onSearch()\">\n 搜索\n </el-button>\n <el-button @click=\"onReset()\">重置</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=\"表单编码\"\n min-width=\"100\"\n prop=\"code\"></el-table-column>\n <el-table-column\n label=\"表单名称\"\n min-width=\"100\"\n prop=\"name\"></el-table-column>\n <el-table-column\n label=\"描述\"\n min-width=\"200\"\n prop=\"description\"></el-table-column>\n <el-table-column\n label=\"操作\"\n width=\"500\"\n fixed=\"right\">\n <template #default=\"scope\">\n <el-button\n link\n title=\"本系统前台页面嵌入地址\"\n @click=\"copyLink(scope.row, 'inner')\">\n 内部链接\n </el-button>\n <el-button\n link\n title=\"其他系统嵌入地址\"\n @click=\"copyLink(scope.row, 'outside')\">\n 外部链接\n </el-button>\n <el-button\n type=\"primary\"\n link\n @click=\"toDesign(scope.row)\">\n <i class=\"iconfont icon-antdesign\"></i>\n 设计\n </el-button>\n <el-button\n type=\"primary\"\n link\n @click=\"toView(scope.row)\">\n <i class=\"iconfont icon-view\"></i>\n 查看\n </el-button>\n <el-button\n type=\"primary\"\n link\n @click=\"toEditor(scope.row)\">\n <i class=\"iconfont icon-edit-outline\"></i>\n 编辑\n </el-button>\n <el-button\n type=\"danger\"\n link\n @click=\"toDelete(scope.row)\">\n <i class=\"iconfont icon-delete\"></i>\n 删除\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 ? '编辑报表' : '新建报表'\">\n <el-form\n :model=\"form\"\n label-width=\"120\">\n <el-form-item\n label=\"报表代码\"\n required>\n <el-input\n v-model=\"form.code\"\n autocomplete=\"off\" />\n </el-form-item>\n <el-form-item\n label=\"报表名称\"\n required>\n <el-input\n v-model=\"form.name\"\n autocomplete=\"off\" />\n </el-form-item>\n <el-form-item\n label=\"描述\"\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\">取消</el-button>\n <el-button\n type=\"primary\"\n @click=\"saveForm()\">\n 保存\n </el-button>\n </span>\n </template>\n </el-dialog>\n </section>\n</template>\n<script setup lang=\"ts\">\nimport {ref, reactive, 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';\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 if (type === 'inner') {\n href = `innerStatementdetail/${row.id}`;\n hrefName = '内部链接';\n } else {\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};\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\nfunction toDesign(row) {\n router.push(`/admin/statement/design/${row.id}`);\n}\n\nfunction toView(row) {\n router.push(`/admin/statement/detail/${row.id}`);\n}\n\nonMounted(() => {\n getStatementList(true);\n});\n\n//新增报表\nconst dialogFormVisible = ref(false);\nconst form = reactive({\n id: undefined,\n name: '',\n code: '',\n description: '',\n});\n\nfunction toAddForm() {\n dialogFormVisible.value = true;\n}\n\nfunction 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\nfunction 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\nfunction cancelForm() {\n dialogFormVisible.value = false;\n form.id = undefined;\n form.name = '';\n form.code = '';\n form.description = '';\n}\nasync function saveForm() {\n await save(form);\n getStatementList(true);\n cancelForm();\n}\n\n//搜索报表\nfunction onSearch(e?) {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n getStatementList(false);\n}\n\n//重置\nfunction 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 .el-form {\n flex: 1;\n margin: 0 10px;\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","toView","onMounted","dialogFormVisible","form","toAddForm","toEditor","toDelete","ElMessageBox","del","cancelForm","saveForm","onSearch","onReset","watch"],"mappings":"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"}
|