yh-report 2.4.2 → 2.4.4

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,6 +1,6 @@
1
1
  import { defineComponent as n, 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 { o as u } from "./index-416faa40.mjs";
3
+ import { o as u } from "./index-fde0bda8.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__ */ n({
25
25
  export {
26
26
  y as default
27
27
  };
28
- //# sourceMappingURL=StatementDetail-12dd8717.mjs.map
28
+ //# sourceMappingURL=StatementDetail-fda47311.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatementDetail-12dd8717.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
+ {"version":3,"file":"StatementDetail-fda47311.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;;;;;"}
@@ -0,0 +1,447 @@
1
+ import { defineComponent as J, reactive as D, ref as E, onMounted as I, watch as T, openBlock as G, createElementBlock as Q, createElementVNode as m, createTextVNode as d, createVNode as n, unref as l, withCtx as a, withKeys as W } from "vue";
2
+ import { useRouter as X } from "vue-router";
3
+ import { g as Z, s as S, d as ee, a as te } from "./index-fde0bda8.mjs";
4
+ import { ElButton as u, ElFormItem as h, ElInput as C, ElTable as oe, ElTableColumn as v, ElPagination as ne, ElDialog as le, ElForm as ae, ElMessage as g, ElLoading as ie, ElMessageBox as N } from "element-plus";
5
+ import { l as re, u as se } from "./editorLock-afc375cb.mjs";
6
+ import "@/libs/api.request.js";
7
+ import "lodash-es";
8
+ import "echarts";
9
+ function de(_) {
10
+ if (navigator.clipboard && window.isSecureContext)
11
+ return navigator.clipboard.writeText(_), Promise.resolve();
12
+ {
13
+ let p = document.createElement("textarea");
14
+ p.value = _, p.style.position = "absolute", p.style.opacity = "0", p.style.left = "-200%", p.style.top = "-200%", document.body.appendChild(p), p.focus(), p.select();
15
+ let i = document.execCommand("copy");
16
+ return p.remove(), i ? Promise.resolve() : Promise.reject(new Error("copy error"));
17
+ }
18
+ }
19
+ const ce = { class: "statement-list-container" }, ue = { class: "actions" }, pe = { class: "el-button is-text import-excel-button" }, me = { class: "form-context" }, fe = /* @__PURE__ */ m("i", { class: "yhreport-icon report-sheji" }, null, -1), ye = /* @__PURE__ */ m("i", { class: "yhreport-icon report-preview" }, null, -1), ge = /* @__PURE__ */ m("i", { class: "yhreport-icon report-bianji" }, null, -1), ke = /* @__PURE__ */ m("i", { class: "yhreport-icon report-fuzhi" }, null, -1), ve = /* @__PURE__ */ m("i", { class: "yhreport-icon report-shanchusekuai" }, null, -1), be = { class: "dialog-footer" }, Se = /* @__PURE__ */ J({
20
+ __name: "StatementList",
21
+ setup(_) {
22
+ const p = X(), i = D({
23
+ key: "",
24
+ pageSize: 10,
25
+ pageNumber: 1,
26
+ total: 0
27
+ }), U = E([]);
28
+ async function f(t = !1) {
29
+ t && (i.pageNumber = 1, i.total = 0);
30
+ const o = await Z({
31
+ key: i.key,
32
+ pageSize: i.pageSize,
33
+ pageNumber: i.pageNumber
34
+ });
35
+ U.value = o.data.list, i.total = o.data.total;
36
+ }
37
+ function x(t, o) {
38
+ let e = "", r = "链接";
39
+ switch (o) {
40
+ case "admin":
41
+ e = `/admin/statement/detail/${t.id}`, r = "后台链接";
42
+ break;
43
+ case "inner":
44
+ e = `innerStatementdetail/${t.id}`, r = "菜单链接";
45
+ case "outside":
46
+ e = `${window.location.origin}${window.location.pathname}#/statementdetail/${t.id}`, r = "外部链接";
47
+ }
48
+ de(e).then(() => {
49
+ g.success(r + "复制成功");
50
+ }).catch(() => {
51
+ g.error(r + "复制遇到问题");
52
+ });
53
+ }
54
+ const w = E([]), B = (t) => {
55
+ w.value = t;
56
+ }, L = async (t) => {
57
+ const o = t.target.files[0];
58
+ if (!o)
59
+ return;
60
+ const e = new FileReader();
61
+ e.onload = async (r) => {
62
+ t.target.value = "";
63
+ try {
64
+ if (r.target) {
65
+ const y = JSON.parse(r.target.result);
66
+ if (Array.isArray(y) && y.every((c) => typeof c == "object" && "code" in c && "config" in c && "description" in c && "name" in c)) {
67
+ const c = ie.service({
68
+ fullscreen: !0,
69
+ text: `正在导入报表,共 ${y.length} 个,请稍候...`
70
+ });
71
+ for (let k = 0; k < y.length; k++) {
72
+ c.setText(`正在保存第 ${k + 1} 个,共 ${y.length} 个,请稍候...`);
73
+ const V = y[k];
74
+ await S(V);
75
+ }
76
+ c.close(), f(!0);
77
+ } else
78
+ g.error("格式错误,请确保导入的文件未被修改过!");
79
+ }
80
+ } catch {
81
+ g.error("文件解析失败,请检查文件是否为有效的 JSON 格式!");
82
+ }
83
+ }, e.readAsText(o);
84
+ }, R = () => {
85
+ if (w.value.length > 0) {
86
+ const t = JSON.stringify(
87
+ w.value.map(({ code: k, config: V, description: q, name: H }) => ({
88
+ code: k,
89
+ config: V,
90
+ description: q,
91
+ name: H
92
+ })),
93
+ null,
94
+ 2
95
+ ), o = new Blob([t], { type: "application/json" }), e = URL.createObjectURL(o), y = `报表导出-${ee().format("YYYYMMDDHHmm")}.json`, c = document.createElement("a");
96
+ c.href = e, c.download = y, document.body.appendChild(c), c.click(), document.body.removeChild(c), URL.revokeObjectURL(e);
97
+ } else
98
+ g.warning("请选择要操作的报表!");
99
+ }, j = async (t) => {
100
+ await re(t.id) === "OK" ? p.push(`/admin/statement/design/${t.id}`) : await N.alert("报表正在被其他用户锁定,是否强制解锁?", "提示", {
101
+ confirmButtonText: "解锁",
102
+ cancelButtonText: "取消"
103
+ }) === "confirm" && (await se(t.id) ? j(t) : g.error("解锁失败,请稍后再试!"));
104
+ }, F = (t) => {
105
+ p.push(`/admin/statement/detail/${t.id}`);
106
+ };
107
+ I(() => {
108
+ f(!0);
109
+ });
110
+ const b = E(!1), s = D({
111
+ id: void 0,
112
+ name: "",
113
+ code: "",
114
+ description: ""
115
+ }), O = () => {
116
+ b.value = !0;
117
+ }, P = (t) => {
118
+ b.value = !0, s.id = t.id, s.name = t.name, s.code = t.code, s.description = t.description;
119
+ }, A = (t) => {
120
+ N.confirm("当前操作会复制选定的报表,确认继续吗?", "提醒", {
121
+ confirmButtonText: "复制",
122
+ cancelButtonText: "取消",
123
+ type: "warning"
124
+ }).then(() => {
125
+ let o = {
126
+ name: `${t.name}-copy`,
127
+ code: `${t.code}-copy`,
128
+ description: `${t.description}-copy`,
129
+ chartConfig: t.chartConfig,
130
+ config: t.config,
131
+ listData: t.listData
132
+ };
133
+ S(o).then(() => {
134
+ g.success("复制成功"), f(!0);
135
+ }).catch(() => {
136
+ g.error("复制失败");
137
+ });
138
+ });
139
+ }, M = (t) => {
140
+ N.confirm("当前操作会删除选定的报表,确认继续吗?", "警告", {
141
+ confirmButtonText: "删除",
142
+ cancelButtonText: "取消",
143
+ type: "warning"
144
+ }).then(async () => {
145
+ (await te(t.id)).data && f(!0);
146
+ });
147
+ }, $ = () => {
148
+ b.value = !1, s.id = void 0, s.name = "", s.code = "", s.description = "";
149
+ }, K = async () => {
150
+ await S(s), f(!0), $();
151
+ }, z = (t) => {
152
+ t && (t.preventDefault(), t.stopPropagation()), f(!1);
153
+ }, Y = () => {
154
+ i.key = "", f(!0);
155
+ };
156
+ return T(
157
+ () => i.pageNumber,
158
+ () => {
159
+ f();
160
+ }
161
+ ), T(
162
+ () => i.pageSize,
163
+ () => {
164
+ f();
165
+ }
166
+ ), (t, o) => (G(), Q("section", ce, [
167
+ m("div", ue, [
168
+ m("div", pe, [
169
+ m("input", {
170
+ class: "import-excel-input",
171
+ type: "file",
172
+ onChange: o[0] || (o[0] = (e) => L(e))
173
+ }, null, 32),
174
+ d(" 导入 ")
175
+ ]),
176
+ n(l(u), {
177
+ text: "",
178
+ onClick: R
179
+ }, {
180
+ default: a(() => [
181
+ d(" 导出 ")
182
+ ]),
183
+ _: 1
184
+ }),
185
+ n(l(u), {
186
+ type: "primary",
187
+ onClick: O
188
+ }, {
189
+ default: a(() => [
190
+ d(" 新增 ")
191
+ ]),
192
+ _: 1
193
+ }),
194
+ m("div", me, [
195
+ n(l(h), { label: "报表名称" }, {
196
+ default: a(() => [
197
+ n(l(C), {
198
+ modelValue: i.key,
199
+ "onUpdate:modelValue": o[1] || (o[1] = (e) => i.key = e),
200
+ onKeyup: W(z, ["enter"]),
201
+ placeholder: "键入关键字搜索报表"
202
+ }, null, 8, ["modelValue", "onKeyup"])
203
+ ]),
204
+ _: 1
205
+ })
206
+ ]),
207
+ n(l(u), {
208
+ type: "primary",
209
+ onClick: o[2] || (o[2] = (e) => z())
210
+ }, {
211
+ default: a(() => [
212
+ d(" 搜索 ")
213
+ ]),
214
+ _: 1
215
+ }),
216
+ n(l(u), {
217
+ onClick: o[3] || (o[3] = (e) => Y())
218
+ }, {
219
+ default: a(() => [
220
+ d("重置")
221
+ ]),
222
+ _: 1
223
+ })
224
+ ]),
225
+ n(l(oe), {
226
+ data: U.value,
227
+ "row-key": "id",
228
+ onSelectionChange: B
229
+ }, {
230
+ default: a(() => [
231
+ n(l(v), {
232
+ type: "selection",
233
+ width: "50"
234
+ }),
235
+ n(l(v), {
236
+ label: "#",
237
+ type: "index",
238
+ width: "66",
239
+ left: ""
240
+ }),
241
+ n(l(v), {
242
+ label: "报表代码",
243
+ "min-width": "100",
244
+ prop: "code"
245
+ }),
246
+ n(l(v), {
247
+ label: "报表名称",
248
+ "min-width": "100",
249
+ prop: "name"
250
+ }),
251
+ n(l(v), {
252
+ label: "描述",
253
+ "min-width": "200",
254
+ prop: "description"
255
+ }),
256
+ n(l(v), {
257
+ label: "操作",
258
+ width: "490",
259
+ fixed: "right"
260
+ }, {
261
+ default: a((e) => [
262
+ n(l(u), {
263
+ link: "",
264
+ title: "本系统前台菜单地址",
265
+ onClick: (r) => x(e.row, "inner")
266
+ }, {
267
+ default: a(() => [
268
+ d(" 菜单 ")
269
+ ]),
270
+ _: 2
271
+ }, 1032, ["onClick"]),
272
+ n(l(u), {
273
+ link: "",
274
+ title: "后台测试",
275
+ onClick: (r) => x(e.row, "admin")
276
+ }, {
277
+ default: a(() => [
278
+ d(" 后台 ")
279
+ ]),
280
+ _: 2
281
+ }, 1032, ["onClick"]),
282
+ n(l(u), {
283
+ link: "",
284
+ title: "其他系统嵌入地址",
285
+ onClick: (r) => x(e.row, "outside")
286
+ }, {
287
+ default: a(() => [
288
+ d(" 外嵌 ")
289
+ ]),
290
+ _: 2
291
+ }, 1032, ["onClick"]),
292
+ n(l(u), {
293
+ type: "primary",
294
+ link: "",
295
+ onClick: (r) => j(e.row)
296
+ }, {
297
+ default: a(() => [
298
+ fe,
299
+ d(" 设计 ")
300
+ ]),
301
+ _: 2
302
+ }, 1032, ["onClick"]),
303
+ n(l(u), {
304
+ type: "primary",
305
+ link: "",
306
+ onClick: (r) => F(e.row)
307
+ }, {
308
+ default: a(() => [
309
+ ye,
310
+ d(" 查看 ")
311
+ ]),
312
+ _: 2
313
+ }, 1032, ["onClick"]),
314
+ n(l(u), {
315
+ type: "primary",
316
+ link: "",
317
+ onClick: (r) => P(e.row)
318
+ }, {
319
+ default: a(() => [
320
+ ge,
321
+ d(" 编辑 ")
322
+ ]),
323
+ _: 2
324
+ }, 1032, ["onClick"]),
325
+ n(l(u), {
326
+ type: "primary",
327
+ link: "",
328
+ onClick: (r) => A(e.row)
329
+ }, {
330
+ default: a(() => [
331
+ ke,
332
+ d(" 复制 ")
333
+ ]),
334
+ _: 2
335
+ }, 1032, ["onClick"]),
336
+ n(l(u), {
337
+ type: "danger",
338
+ link: "",
339
+ onClick: (r) => M(e.row)
340
+ }, {
341
+ default: a(() => [
342
+ ve,
343
+ d(" 删除 ")
344
+ ]),
345
+ _: 2
346
+ }, 1032, ["onClick"])
347
+ ]),
348
+ _: 1
349
+ })
350
+ ]),
351
+ _: 1
352
+ }, 8, ["data"]),
353
+ n(l(ne), {
354
+ background: "",
355
+ style: { "padding-top": "10px", "justify-content": "flex-end" },
356
+ "page-sizes": [10, 20, 50, 100],
357
+ "page-size": i.pageSize,
358
+ "onUpdate:pageSize": o[4] || (o[4] = (e) => i.pageSize = e),
359
+ total: i.total,
360
+ "current-page": i.pageNumber,
361
+ "onUpdate:currentPage": o[5] || (o[5] = (e) => i.pageNumber = e),
362
+ layout: "sizes,prev,pager,next,total"
363
+ }, null, 8, ["page-size", "total", "current-page"]),
364
+ n(l(le), {
365
+ modelValue: b.value,
366
+ "onUpdate:modelValue": o[10] || (o[10] = (e) => b.value = e),
367
+ onClose: $,
368
+ title: s.id ? "编辑报表" : "新建报表"
369
+ }, {
370
+ footer: a(() => [
371
+ m("span", be, [
372
+ n(l(u), { onClick: $ }, {
373
+ default: a(() => [
374
+ d("取消")
375
+ ]),
376
+ _: 1
377
+ }),
378
+ n(l(u), {
379
+ type: "primary",
380
+ onClick: o[9] || (o[9] = (e) => K())
381
+ }, {
382
+ default: a(() => [
383
+ d(" 保存 ")
384
+ ]),
385
+ _: 1
386
+ })
387
+ ])
388
+ ]),
389
+ default: a(() => [
390
+ n(l(ae), {
391
+ model: s,
392
+ "label-width": "120"
393
+ }, {
394
+ default: a(() => [
395
+ n(l(h), {
396
+ label: "报表代码",
397
+ required: ""
398
+ }, {
399
+ default: a(() => [
400
+ n(l(C), {
401
+ modelValue: s.code,
402
+ "onUpdate:modelValue": o[6] || (o[6] = (e) => s.code = e),
403
+ autocomplete: "off"
404
+ }, null, 8, ["modelValue"])
405
+ ]),
406
+ _: 1
407
+ }),
408
+ n(l(h), {
409
+ label: "报表名称",
410
+ required: ""
411
+ }, {
412
+ default: a(() => [
413
+ n(l(C), {
414
+ modelValue: s.name,
415
+ "onUpdate:modelValue": o[7] || (o[7] = (e) => s.name = e),
416
+ autocomplete: "off"
417
+ }, null, 8, ["modelValue"])
418
+ ]),
419
+ _: 1
420
+ }),
421
+ n(l(h), {
422
+ label: "描述",
423
+ required: ""
424
+ }, {
425
+ default: a(() => [
426
+ n(l(C), {
427
+ modelValue: s.description,
428
+ "onUpdate:modelValue": o[8] || (o[8] = (e) => s.description = e),
429
+ type: "textarea",
430
+ autocomplete: "off"
431
+ }, null, 8, ["modelValue"])
432
+ ]),
433
+ _: 1
434
+ })
435
+ ]),
436
+ _: 1
437
+ }, 8, ["model"])
438
+ ]),
439
+ _: 1
440
+ }, 8, ["modelValue", "title"])
441
+ ]));
442
+ }
443
+ });
444
+ export {
445
+ Se as default
446
+ };
447
+ //# sourceMappingURL=StatementList-a64a45bc.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatementList-a64a45bc.mjs","sources":["../libs/util.ts","../StatementList.vue"],"sourcesContent":["/**\n * 复制文本\n * @param {string} str 要复制的文本\n * @returns {Promise<void>}\n */\nexport function copyString(str) {\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(str);\n return Promise.resolve();\n } else {\n let textArea = document.createElement('textarea');\n textArea.value = str;\n textArea.style.position = 'absolute';\n textArea.style.opacity = '0';\n textArea.style.left = '-200%';\n textArea.style.top = '-200%';\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n let flag = document.execCommand('copy');\n textArea.remove();\n if (flag) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error('copy error'));\n }\n }\n}\n\nexport function isColorLight(color) {\n let rgb;\n if (color.startsWith('#')) {\n color = color.slice(1).toUpperCase();\n\n if (color.length === 3) {\n color = color\n .split('')\n .map((char) => char + char)\n .join('');\n }\n rgb = color.match(/.{2}/g).map((hex) => parseInt(hex, 16));\n } else if (color.startsWith('rgb(')) {\n const rgbMatch = color.match(/\\d+/g);\n rgb = rgbMatch.map((num) => parseInt(num, 10));\n } else {\n console.error('Invalid color format');\n return false;\n }\n const luminance = (0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]) / 255;\n return luminance > 0.5;\n}\n\nexport function getEnumOptions<T extends Record<string, any>>(enumObj: T, filters: string[] = []) {\n return Object.keys(enumObj)\n .filter((key) => !filters.includes(enumObj[key as keyof T]))\n .map((key) => ({\n value: enumObj[key as keyof T],\n label: key,\n }));\n}\n","<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 <div class=\"form-context\">\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 </div>\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=\"490\"\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, 'admin')\">\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=\"yhreport-icon report-sheji\"></i>\n 设计\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 查看\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 编辑\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 复制\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 删除\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, 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';\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 case 'outside':\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":["copyString","str","textArea","flag","router","useRouter","listForm","reactive","data","ref","getStatementList","res","getList","copyLink","row","type","href","hrefName","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"],"mappings":"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"}
@@ -2440,13 +2440,21 @@ function changeConfig(Y, Z) {
2440
2440
  };
2441
2441
  if (o.type === CellType.FIELD && (o.colData || o.rowData || Z)) {
2442
2442
  if (o.format === FormatType.STRING && o.fun)
2443
- o.rawData = o.fun.replace(StringFunRex, (t, r) => (r = r.toUpperCase(), get(n, r, t)));
2443
+ o.rawData = o.fun.replace(StringFunRex, (t, r) => {
2444
+ r = r.toUpperCase();
2445
+ const l = get(n, r, t);
2446
+ return l === t ? "" : l;
2447
+ });
2444
2448
  else if (o.isStaticData && o.data && o.data.startsWith("row:")) {
2445
2449
  let t = o.data.replace("row:", "").toUpperCase();
2446
2450
  o.rawData = n[t];
2447
2451
  }
2448
2452
  }
2449
- if (o.type === CellType.FUN && o.fun ? (o.fun = o.fun.replace(StringFunRex, (t, r) => (r = r.toUpperCase(), get(n, r, t))), o.computedType === ComputedType.loopRow ? needComputedCell.set(`${a}:${o.index}`, o) : o.computedType === ComputedType.loopGroup && Array.isArray(o.groupIndices) && o.groupLevel !== void 0 ? needComputedCell.set(`${a}:${o.groupIndices[o.groupLevel]}:${o.groupLevel}`, o) : needComputedCell.set(a, o)) : o.format ? o.text = formatCellValue(o.rawData || o.text || "", o.format, o.formatType) : o.text = o.rawData || o.text || "-", o.customRender)
2453
+ if (o.type === CellType.FUN && o.fun ? (o.fun = o.fun.replace(StringFunRex, (t, r) => {
2454
+ r = r.toUpperCase();
2455
+ const l = get(n, r, t);
2456
+ return l === t ? "" : l;
2457
+ }), o.computedType === ComputedType.loopRow ? needComputedCell.set(`${a}:${o.index}`, o) : o.computedType === ComputedType.loopGroup && Array.isArray(o.groupIndices) && o.groupLevel !== void 0 ? needComputedCell.set(`${a}:${o.groupIndices[o.groupLevel]}:${o.groupLevel}`, o) : needComputedCell.set(a, o)) : o.format ? o.text = formatCellValue(o.rawData || o.text || "", o.format, o.formatType) : o.text = o.rawData || o.text || "-", o.customRender)
2450
2458
  try {
2451
2459
  o = new Function(
2452
2460
  "cell",
@@ -2472,7 +2480,7 @@ function computeCell(Y, Z) {
2472
2480
  let T;
2473
2481
  e.computedType === ComputedType.loopRow ? T = e.index : e.computedType === ComputedType.loopGroup && Array.isArray(e.groupIndices) && e.groupLevel !== void 0 && (T = `g-${e.groupIndices[e.groupLevel]}-${e.groupLevel}`);
2474
2482
  const { isError: k, result: m } = parseExpression(e.fun, !0, T);
2475
- k || (e.rawData = m, e.format ? e.text = formatCellValue(e.rawData || e.text || "", e.format, e.formatType) : e.text = e.rawData || e.text || "-");
2483
+ k ? e.rawData = e.fun : e.rawData = m, e.format ? e.text = formatCellValue(e.rawData || e.text || "", e.format, e.formatType) : e.text = e.rawData || e.text || "-";
2476
2484
  }
2477
2485
  }), innerConfig = {}, needComputedCell = /* @__PURE__ */ new Map();
2478
2486
  }
@@ -32724,7 +32732,7 @@ const exportExcel = async (Y, Z, e = "gray", T = 0) => {
32724
32732
  title: "报表列表",
32725
32733
  icon: "iconfont icon-s-grid"
32726
32734
  },
32727
- component: () => import("./StatementList-64f5c841.mjs")
32735
+ component: () => import("./StatementList-a64a45bc.mjs")
32728
32736
  }), e.addRoute("Index", {
32729
32737
  path: "statement/design/:id",
32730
32738
  name: "报表设计",
@@ -32733,7 +32741,7 @@ const exportExcel = async (Y, Z, e = "gray", T = 0) => {
32733
32741
  title: "报表设计",
32734
32742
  icon: "iconfont icon-s-grid"
32735
32743
  },
32736
- component: () => import("./StatementDesign-2c24b262.mjs")
32744
+ component: () => import("./StatementDesign-babd14e4.mjs")
32737
32745
  }), e.addRoute("Index", {
32738
32746
  path: "statement/detail/:id",
32739
32747
  name: "后台报表查看",
@@ -32742,7 +32750,7 @@ const exportExcel = async (Y, Z, e = "gray", T = 0) => {
32742
32750
  title: "后台报表查看",
32743
32751
  icon: "iconfont icon-s-grid"
32744
32752
  },
32745
- component: () => import("./StatementDetail-12dd8717.mjs")
32753
+ component: () => import("./StatementDetail-fda47311.mjs")
32746
32754
  })), e.addRoute({
32747
32755
  path: "/statementdetail/:id",
32748
32756
  name: "报表查看",
@@ -32752,7 +32760,7 @@ const exportExcel = async (Y, Z, e = "gray", T = 0) => {
32752
32760
  icon: "iconfont icon-s-grid"
32753
32761
  },
32754
32762
  props: !0,
32755
- component: () => import("./StatementDetail-12dd8717.mjs")
32763
+ component: () => import("./StatementDetail-fda47311.mjs")
32756
32764
  });
32757
32765
  }
32758
32766
  };
@@ -32783,7 +32791,7 @@ function dynamicReportView(Y) {
32783
32791
  })
32784
32792
  );
32785
32793
  }
32786
- console.info("%cyh-report %cVer 2.4.2", "color:#409EFF;font-size: 22px;font-weight:bolder;text-shadow: 2px 2px 4px #84c1ff;", "color:#fff;font-size: 12px;background-color:#409EFF;padding:2px 4px;border-radius:3px;");
32794
+ console.info("%cyh-report %cVer 2.4.4", "color:#409EFF;font-size: 22px;font-weight:bolder;text-shadow: 2px 2px 4px #84c1ff;", "color:#fff;font-size: 12px;background-color:#409EFF;padding:2px 4px;border-radius:3px;");
32787
32795
  export {
32788
32796
  CellType as C,
32789
32797
  DataSourceColumnDataType as D,
@@ -32815,4 +32823,4 @@ export {
32815
32823
  validateAndCompleteTableConfig as v,
32816
32824
  dynamicReportView as w
32817
32825
  };
32818
- //# sourceMappingURL=index-416faa40.mjs.map
32826
+ //# sourceMappingURL=index-fde0bda8.mjs.map