yh-report 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
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 _ } from "vue-router";
3
- import { d as l } from "./report-run.vue_vue_type_style_index_0_lang-edf7216b.mjs";
3
+ import { d as l } from "./report-run.vue_vue_type_style_index_0_lang-657964fa.mjs";
4
4
  import "element-plus";
5
- import "./util-53adc03c.mjs";
5
+ import "./dayjs.min-fa6b7d57.mjs";
6
6
  import "@/libs/api.request.js";
7
7
  import "lodash-es";
8
8
  import "echarts";
@@ -26,4 +26,4 @@ const u = { class: "statement-detail-container" }, q = /* @__PURE__ */ o({
26
26
  export {
27
27
  q as default
28
28
  };
29
- //# sourceMappingURL=StatementDetail-b9ae83e7.mjs.map
29
+ //# sourceMappingURL=StatementDetail-9f40bb12.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatementDetail-b9ae83e7.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/report-run.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<style lang=\"scss\">\n.statement-detail-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n background-color: var(--el-bg-color-page);\n display: flex;\n flex-direction: column;\n .yh-statement-table-title {\n background-color: #fff;\n position: relative;\n z-index: 10;\n padding: 6px 16px;\n box-sizing: border-box;\n line-height: 24px;\n font-weight: bold;\n box-shadow: 0 0 5px 0 #ccc;\n }\n}\n\n.main-container {\n &.statement-design-main {\n overflow: hidden !important;\n padding: 0;\n }\n}\n</style>\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
+ {"version":3,"file":"StatementDetail-9f40bb12.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/report-run.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<style lang=\"scss\">\n.statement-detail-container {\n width: 100%;\n height: 100%;\n overflow: hidden;\n background-color: var(--el-bg-color-page);\n display: flex;\n flex-direction: column;\n .yh-statement-table-title {\n background-color: #fff;\n position: relative;\n z-index: 10;\n padding: 6px 16px;\n box-sizing: border-box;\n line-height: 24px;\n font-weight: bold;\n box-shadow: 0 0 5px 0 #ccc;\n }\n}\n\n.main-container {\n &.statement-design-main {\n overflow: hidden !important;\n padding: 0;\n }\n}\n</style>\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;;;;;"}
@@ -0,0 +1,388 @@
1
+ import { defineComponent as J, reactive as E, ref as h, onMounted as I, watch as N, openBlock as P, createElementBlock as G, createElementVNode as f, createTextVNode as u, createVNode as n, unref as o, withCtx as a } from "vue";
2
+ import { useRouter as K } from "vue-router";
3
+ import { g as Q, c as W, s as U, d as X, a as Z } from "./dayjs.min-fa6b7d57.mjs";
4
+ import { ElButton as c, ElForm as z, ElFormItem as k, ElInput as _, ElTable as ee, ElTableColumn as y, ElPagination as te, ElDialog as ne, ElMessage as b, ElLoading as oe, ElMessageBox as le } from "element-plus";
5
+ import "@/libs/api.request.js";
6
+ import "lodash-es";
7
+ const ae = { class: "statement-list-container" }, ie = { class: "actions" }, re = { class: "el-button is-text import-excel-button" }, de = /* @__PURE__ */ f("i", { class: "iconfont icon-antdesign" }, null, -1), se = /* @__PURE__ */ f("i", { class: "iconfont icon-view" }, null, -1), ue = /* @__PURE__ */ f("i", { class: "iconfont icon-edit-outline" }, null, -1), ce = /* @__PURE__ */ f("i", { class: "iconfont icon-delete" }, null, -1), me = { class: "dialog-footer" }, _e = /* @__PURE__ */ J({
8
+ __name: "StatementList",
9
+ setup(pe) {
10
+ const V = K(), r = E({
11
+ name: "",
12
+ pageSize: 10,
13
+ total: 0,
14
+ pageNumber: 1
15
+ }), $ = h([]);
16
+ async function p(l = !1) {
17
+ l && (r.pageNumber = 1, r.total = 0);
18
+ const t = await Q(r);
19
+ $.value = t.data.list, r.total = r.pageSize = t.data.list.length;
20
+ }
21
+ function S(l, t) {
22
+ let e = "", d = "链接";
23
+ t === "inner" ? (e = `${window.location.pathname}#/statementdetail/${l.id}`, d = "内部链接") : (e = `${window.location.origin}${window.location.pathname}#/statementdetail/${l.id}`, d = "外部链接"), W(e).then(() => {
24
+ b.success(d + "复制成功");
25
+ }).catch(() => {
26
+ b.error(d + "复制遇到问题");
27
+ });
28
+ }
29
+ const w = h([]), L = (l) => {
30
+ w.value = l;
31
+ }, j = async (l) => {
32
+ const t = l.target.files[0];
33
+ if (!t)
34
+ return;
35
+ const e = new FileReader();
36
+ e.onload = async (d) => {
37
+ l.target.value = "";
38
+ try {
39
+ if (d.target) {
40
+ const m = JSON.parse(d.target.result);
41
+ if (Array.isArray(m) && m.every((s) => typeof s == "object" && "code" in s && "config" in s && "description" in s && "name" in s)) {
42
+ const s = oe.service({
43
+ fullscreen: !0,
44
+ text: `正在导入报表,共 ${m.length} 个,请稍候...`
45
+ });
46
+ for (let g = 0; g < m.length; g++) {
47
+ s.setText(`正在保存第 ${g + 1} 个,共 ${m.length} 个,请稍候...`);
48
+ const x = m[g];
49
+ await U(x);
50
+ }
51
+ s.close(), p(!0);
52
+ } else
53
+ b.error("格式错误,请确保导入的文件未被修改过!");
54
+ }
55
+ } catch {
56
+ b.error("文件解析失败,请检查文件是否为有效的 JSON 格式!");
57
+ }
58
+ }, e.readAsText(t);
59
+ }, D = () => {
60
+ if (w.value.length > 0) {
61
+ const l = JSON.stringify(
62
+ w.value.map(({ code: g, config: x, description: q, name: H }) => ({
63
+ code: g,
64
+ config: x,
65
+ description: q,
66
+ name: H
67
+ })),
68
+ null,
69
+ 2
70
+ ), t = new Blob([l], { type: "application/json" }), e = URL.createObjectURL(t), m = `报表导出-${X().format("YYYYMMDDHHmm")}.json`, s = document.createElement("a");
71
+ s.href = e, s.download = m, document.body.appendChild(s), s.click(), document.body.removeChild(s), URL.revokeObjectURL(e);
72
+ } else
73
+ b.warning("请选择要操作的报表!");
74
+ };
75
+ function R(l) {
76
+ V.push(`/admin/statement/design/${l.id}`);
77
+ }
78
+ function F(l) {
79
+ V.push(`/admin/statement/detail/${l.id}`);
80
+ }
81
+ I(() => {
82
+ p(!0);
83
+ });
84
+ const v = h(!1), i = E({
85
+ id: void 0,
86
+ name: "",
87
+ code: "",
88
+ description: ""
89
+ });
90
+ function B() {
91
+ v.value = !0;
92
+ }
93
+ function T(l) {
94
+ v.value = !0, i.id = l.id, i.name = l.name, i.code = l.code, i.description = l.description;
95
+ }
96
+ function M(l) {
97
+ le.confirm("当前操作会删除选定的报表,确认继续吗?", "警告", {
98
+ confirmButtonText: "删除",
99
+ cancelButtonText: "取消",
100
+ type: "warning"
101
+ }).then(async () => {
102
+ (await Z(l.id)).data && p(!0);
103
+ });
104
+ }
105
+ function C() {
106
+ v.value = !1, i.id = void 0, i.name = "", i.code = "", i.description = "";
107
+ }
108
+ async function O() {
109
+ await U(i), p(!0), C();
110
+ }
111
+ function A() {
112
+ p(!1);
113
+ }
114
+ function Y() {
115
+ r.name = "", p(!0);
116
+ }
117
+ return N(
118
+ () => r.pageNumber,
119
+ () => {
120
+ p();
121
+ }
122
+ ), N(
123
+ () => r.pageSize,
124
+ () => {
125
+ p();
126
+ }
127
+ ), (l, t) => (P(), G("section", ae, [
128
+ f("div", ie, [
129
+ f("div", re, [
130
+ f("input", {
131
+ class: "import-excel-input",
132
+ type: "file",
133
+ onChange: t[0] || (t[0] = (e) => j(e))
134
+ }, null, 32),
135
+ u(" 导入 ")
136
+ ]),
137
+ n(o(c), {
138
+ text: "",
139
+ onClick: D
140
+ }, {
141
+ default: a(() => [
142
+ u(" 导出 ")
143
+ ]),
144
+ _: 1
145
+ }),
146
+ n(o(c), {
147
+ type: "primary",
148
+ onClick: B
149
+ }, {
150
+ default: a(() => [
151
+ u(" 新增 ")
152
+ ]),
153
+ _: 1
154
+ }),
155
+ n(o(z), { inline: "" }, {
156
+ default: a(() => [
157
+ n(o(k), { label: "报表名称" }, {
158
+ default: a(() => [
159
+ n(o(_), {
160
+ modelValue: r.name,
161
+ "onUpdate:modelValue": t[1] || (t[1] = (e) => r.name = e),
162
+ placeholder: "键入关键字搜索报表"
163
+ }, null, 8, ["modelValue"])
164
+ ]),
165
+ _: 1
166
+ })
167
+ ]),
168
+ _: 1
169
+ }),
170
+ n(o(c), {
171
+ type: "primary",
172
+ onClick: t[2] || (t[2] = (e) => A())
173
+ }, {
174
+ default: a(() => [
175
+ u(" 搜索 ")
176
+ ]),
177
+ _: 1
178
+ }),
179
+ n(o(c), {
180
+ onClick: t[3] || (t[3] = (e) => Y())
181
+ }, {
182
+ default: a(() => [
183
+ u("重置")
184
+ ]),
185
+ _: 1
186
+ })
187
+ ]),
188
+ n(o(ee), {
189
+ data: $.value,
190
+ onSelectionChange: L
191
+ }, {
192
+ default: a(() => [
193
+ n(o(y), {
194
+ type: "selection",
195
+ width: "50"
196
+ }),
197
+ n(o(y), {
198
+ label: "#",
199
+ type: "index",
200
+ width: "66",
201
+ left: ""
202
+ }),
203
+ n(o(y), {
204
+ label: "表单编码",
205
+ "min-width": "100",
206
+ prop: "code"
207
+ }),
208
+ n(o(y), {
209
+ label: "表单名称",
210
+ "min-width": "100",
211
+ prop: "name"
212
+ }),
213
+ n(o(y), {
214
+ label: "描述",
215
+ "min-width": "200",
216
+ prop: "description"
217
+ }),
218
+ n(o(y), {
219
+ label: "操作",
220
+ width: "500",
221
+ fixed: "right"
222
+ }, {
223
+ default: a((e) => [
224
+ n(o(c), {
225
+ link: "",
226
+ title: "本系统前台页面嵌入地址",
227
+ onClick: (d) => S(e.row, "inner")
228
+ }, {
229
+ default: a(() => [
230
+ u(" 内部链接 ")
231
+ ]),
232
+ _: 2
233
+ }, 1032, ["onClick"]),
234
+ n(o(c), {
235
+ link: "",
236
+ title: "其他系统嵌入地址",
237
+ onClick: (d) => S(e.row, "outside")
238
+ }, {
239
+ default: a(() => [
240
+ u(" 外部链接 ")
241
+ ]),
242
+ _: 2
243
+ }, 1032, ["onClick"]),
244
+ n(o(c), {
245
+ type: "primary",
246
+ link: "",
247
+ onClick: (d) => R(e.row)
248
+ }, {
249
+ default: a(() => [
250
+ de,
251
+ u(" 设计 ")
252
+ ]),
253
+ _: 2
254
+ }, 1032, ["onClick"]),
255
+ n(o(c), {
256
+ type: "primary",
257
+ link: "",
258
+ onClick: (d) => F(e.row)
259
+ }, {
260
+ default: a(() => [
261
+ se,
262
+ u(" 查看 ")
263
+ ]),
264
+ _: 2
265
+ }, 1032, ["onClick"]),
266
+ n(o(c), {
267
+ type: "primary",
268
+ link: "",
269
+ onClick: (d) => T(e.row)
270
+ }, {
271
+ default: a(() => [
272
+ ue,
273
+ u(" 编辑 ")
274
+ ]),
275
+ _: 2
276
+ }, 1032, ["onClick"]),
277
+ n(o(c), {
278
+ type: "danger",
279
+ link: "",
280
+ onClick: (d) => M(e.row)
281
+ }, {
282
+ default: a(() => [
283
+ ce,
284
+ u(" 删除 ")
285
+ ]),
286
+ _: 2
287
+ }, 1032, ["onClick"])
288
+ ]),
289
+ _: 1
290
+ })
291
+ ]),
292
+ _: 1
293
+ }, 8, ["data"]),
294
+ n(o(te), {
295
+ background: "",
296
+ style: { "padding-top": "30px", "justify-content": "flex-end" },
297
+ "page-sizes": [10, 20, 50, 100],
298
+ "page-size": r.pageSize,
299
+ "onUpdate:pageSize": t[4] || (t[4] = (e) => r.pageSize = e),
300
+ total: r.total,
301
+ "current-page": r.pageNumber,
302
+ "onUpdate:currentPage": t[5] || (t[5] = (e) => r.pageNumber = e),
303
+ layout: "sizes,prev,pager,next,total"
304
+ }, null, 8, ["page-size", "total", "current-page"]),
305
+ n(o(ne), {
306
+ modelValue: v.value,
307
+ "onUpdate:modelValue": t[10] || (t[10] = (e) => v.value = e),
308
+ onClose: C,
309
+ title: i.id ? "编辑报表" : "新建报表"
310
+ }, {
311
+ footer: a(() => [
312
+ f("span", me, [
313
+ n(o(c), { onClick: C }, {
314
+ default: a(() => [
315
+ u("取消")
316
+ ]),
317
+ _: 1
318
+ }),
319
+ n(o(c), {
320
+ type: "primary",
321
+ onClick: t[9] || (t[9] = (e) => O())
322
+ }, {
323
+ default: a(() => [
324
+ u(" 保存 ")
325
+ ]),
326
+ _: 1
327
+ })
328
+ ])
329
+ ]),
330
+ default: a(() => [
331
+ n(o(z), {
332
+ model: i,
333
+ "label-width": "120"
334
+ }, {
335
+ default: a(() => [
336
+ n(o(k), {
337
+ label: "报表代码",
338
+ required: ""
339
+ }, {
340
+ default: a(() => [
341
+ n(o(_), {
342
+ modelValue: i.code,
343
+ "onUpdate:modelValue": t[6] || (t[6] = (e) => i.code = e),
344
+ autocomplete: "off"
345
+ }, null, 8, ["modelValue"])
346
+ ]),
347
+ _: 1
348
+ }),
349
+ n(o(k), {
350
+ label: "报表名称",
351
+ required: ""
352
+ }, {
353
+ default: a(() => [
354
+ n(o(_), {
355
+ modelValue: i.name,
356
+ "onUpdate:modelValue": t[7] || (t[7] = (e) => i.name = e),
357
+ autocomplete: "off"
358
+ }, null, 8, ["modelValue"])
359
+ ]),
360
+ _: 1
361
+ }),
362
+ n(o(k), {
363
+ label: "描述",
364
+ required: ""
365
+ }, {
366
+ default: a(() => [
367
+ n(o(_), {
368
+ modelValue: i.description,
369
+ "onUpdate:modelValue": t[8] || (t[8] = (e) => i.description = e),
370
+ type: "textarea",
371
+ autocomplete: "off"
372
+ }, null, 8, ["modelValue"])
373
+ ]),
374
+ _: 1
375
+ })
376
+ ]),
377
+ _: 1
378
+ }, 8, ["model"])
379
+ ]),
380
+ _: 1
381
+ }, 8, ["modelValue", "title"])
382
+ ]));
383
+ }
384
+ });
385
+ export {
386
+ _e as default
387
+ };
388
+ //# sourceMappingURL=StatementList-c1b28d64.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatementList-c1b28d64.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.name\"\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 @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: 30px; 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 name: '',\n pageSize: 10,\n total: 0,\n pageNumber: 1,\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(listForm);\n data.value = res.data.list;\n listForm.total = listForm.pageSize = res.data.list.length;\n}\n\nfunction copyLink(row, type) {\n let href = '';\n let hrefName = '链接';\n if (type === 'inner') {\n href = `${window.location.pathname}#/statementdetail/${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() {\n getStatementList(false);\n}\n\n//重置\nfunction onReset() {\n listForm.name = '';\n getStatementList(true);\n}\n\n//删除表单\n// function toDel(id) {\n// ElMessageBox.confirm(\"您确定要删除该表单吗\", \"警告\", {\n// confirmButtonText: \"确认\",\n// cancelButtonText: \"取消\",\n// type: \"warning\",\n// })\n// .then(() => {\n// delListForm(id);\n// })\n// .then(() => {\n// getFormList();\n// });\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;\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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"}