@ibiz-template/vue3-components 0.7.41-alpha.30 → 0.7.41-alpha.31

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.
Files changed (26) hide show
  1. package/dist/{index-D4IkVaSK.js → index-DST5Qlx-.js} +4 -4
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/{wang-editor-C3XEOBFy.js → wang-editor-DiFxehIR.js} +1 -1
  5. package/dist/{xlsx-util-DQkYfUKS.js → xlsx-util-C0MooQCo.js} +1 -1
  6. package/es/control/report-panel/index.mjs +2 -0
  7. package/es/control/report-panel/report-detail/bi-report/bi-report.css +1 -0
  8. package/es/control/report-panel/report-detail/bi-report/bi-report.mjs +46 -0
  9. package/es/control/report-panel/report-detail/bi-report/commons/bi-number-report/bi-number-report.css +1 -0
  10. package/es/control/report-panel/report-detail/bi-report/commons/bi-number-report/bi-number-report.mjs +184 -0
  11. package/es/control/report-panel/report-detail/bi-report/commons/index.mjs +3 -0
  12. package/es/control/report-panel/report-detail/bi-report/index.mjs +9 -0
  13. package/es/control/report-panel/report-detail/index.mjs +1 -0
  14. package/es/control/report-panel/report-panel.mjs +9 -8
  15. package/es/web-app/guard/auth-guard/auth-guard.mjs +1 -1
  16. package/lib/control/report-panel/index.cjs +8 -6
  17. package/lib/control/report-panel/report-detail/bi-report/bi-report.cjs +48 -0
  18. package/lib/control/report-panel/report-detail/bi-report/bi-report.css +1 -0
  19. package/lib/control/report-panel/report-detail/bi-report/commons/bi-number-report/bi-number-report.cjs +186 -0
  20. package/lib/control/report-panel/report-detail/bi-report/commons/bi-number-report/bi-number-report.css +1 -0
  21. package/lib/control/report-panel/report-detail/bi-report/commons/index.cjs +7 -0
  22. package/lib/control/report-panel/report-detail/bi-report/index.cjs +14 -0
  23. package/lib/control/report-panel/report-detail/index.cjs +2 -0
  24. package/lib/control/report-panel/report-panel.cjs +9 -8
  25. package/lib/web-app/guard/auth-guard/auth-guard.cjs +1 -1
  26. package/package.json +6 -6
@@ -3,6 +3,7 @@ import { withInstall } from '@ibiz-template/vue3-util';
3
3
  import { ReportPanelControl } from './report-panel.mjs';
4
4
  import { ReportPanelProvider } from './report-panel.provider.mjs';
5
5
  import './report-detail/index.mjs';
6
+ import { IBizBIReport } from './report-detail/bi-report/index.mjs';
6
7
  import { IBizUserReportPanel } from './report-detail/user-report-panel/index.mjs';
7
8
  import { IBizUser2ReportPanel } from './report-detail/user2-report-panel/index.mjs';
8
9
  import { IBizBIReportPanel } from './report-detail/bi-report-panel/index.mjs';
@@ -11,6 +12,7 @@ import { IBizBIReportPanel } from './report-detail/bi-report-panel/index.mjs';
11
12
  const IBizReportPanelControl = withInstall(
12
13
  ReportPanelControl,
13
14
  function(v) {
15
+ v.use(IBizBIReport);
14
16
  v.use(IBizUserReportPanel);
15
17
  v.use(IBizUser2ReportPanel);
16
18
  v.use(IBizBIReportPanel);
@@ -0,0 +1 @@
1
+ .ibiz-bi-report{width:100%;height:100%}.ibiz-bi-report .ibiz-control-grid.is-single-select .el-table__body-wrapper .el-table__body tbody>tr td{padding-left:var(--ibiz-spacing-tight)!important}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__header .el-table__cell{font-style:var(--ibiz-control-grid-header-font-style);text-align:var(--ibiz-control-grid-header-align)}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__header .el-table__cell .cell{--ibiz-grid-column-justify-content:var(--ibiz-control-grid-header-align)}.ibiz-bi-report .ibiz-control-grid .el-table .ibiz-grid-field-column__text{overflow:visible;font-size:var(--ibiz-control-grid-content-font-size);font-style:var(--ibiz-control-grid-content-font-style);font-weight:var(--ibiz-control-grid-content-font-weight);color:var(--ibiz-control-grid-content-text-color)}.ibiz-bi-report .ibiz-control-grid .el-table .ibiz-grid-field-column__script{line-height:23px}.ibiz-bi-report .ibiz-control-grid .el-table{--el-table-border-color:var(--ibiz-color-border);--ibiz-control-grid-row-hover-color:transparent;--el-table-current-row-bg-color:transparent;--ibiz-control-grid-row-bg-color-2:var(--ibiz-control-grid-row-bg-color)}.ibiz-bi-report .ibiz-control-grid .el-table tr td{pointer-events:none}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__header-wrapper .el-table__header thead>tr th:nth-child(1){padding-left:0}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__body-wrapper .el-table__body tbody>tr td:nth-child(1){padding-left:0}.ibiz-bi-report .ibiz-control-grid .el-table--border .el-table__cell{border-right:var(--el-table-border)}.ibiz-bi-report .ibiz-control-grid .el-table td.el-table__cell,.ibiz-bi-report .ibiz-control-grid .el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-table__inner-wrapper{overflow:auto}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-table__header-wrapper{position:sticky;top:0}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-table__body-wrapper{flex:none;height:auto}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-scrollbar__bar{display:none}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__header-wrapper{order:0}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__footer-wrapper{order:1}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__footer-wrapper .el-table__footer{height:var(--ibiz-control-grid-content-row-height)}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__body-wrapper{order:2}
@@ -0,0 +1,46 @@
1
+ import { defineComponent, createVNode, resolveComponent } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import './commons/index.mjs';
4
+ import './bi-report.css';
5
+ import { IBizBINumberReport } from './commons/bi-number-report/bi-number-report.mjs';
6
+
7
+ "use strict";
8
+ const BIReport = /* @__PURE__ */ defineComponent({
9
+ name: "IBizBIReport",
10
+ props: {
11
+ controller: {
12
+ type: Object,
13
+ required: true
14
+ }
15
+ },
16
+ setup(props) {
17
+ const c = props.controller;
18
+ const ns = useNamespace("bi-report");
19
+ const generator = c.generator;
20
+ const reportType = generator.reportType;
21
+ return {
22
+ c,
23
+ ns,
24
+ reportType
25
+ };
26
+ },
27
+ render() {
28
+ if (!this.c.state.biReport)
29
+ return;
30
+ return createVNode("div", {
31
+ "class": this.ns.b()
32
+ }, [this.reportType === "NUMBER" ? createVNode(IBizBINumberReport, {
33
+ "model": this.c.state.biReport.model,
34
+ "data": this.c.state.biReport.data
35
+ }, null) : createVNode(resolveComponent("iBizControlShell"), {
36
+ "isSimple": true,
37
+ "context": this.c.context,
38
+ "data": this.c.state.biReport.data,
39
+ "modelData": this.c.state.biReport.model,
40
+ "style": this.c.state.biReport.options.vars,
41
+ "class": this.c.state.biReport.options.classList
42
+ }, null)]);
43
+ }
44
+ });
45
+
46
+ export { BIReport };
@@ -0,0 +1 @@
1
+ .ibiz-bi-number-report{width:100%;height:100%}.ibiz-bi-number-report__content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.ibiz-bi-number-report__content--number-text{cursor:pointer}.ibiz-bi-number-report__content--yoy{display:flex}.ibiz-bi-number-report__content--qoq{display:flex}.ibiz-bi-number-report__content--compare-number{display:flex;align-items:baseline;width:150px}.ibiz-bi-number-report__content--yoy-value{display:none;margin-left:10px}.ibiz-bi-number-report__content--yoy-value.is-show{display:block}.ibiz-bi-number-report__content--yoy-lastyearMonth{display:none;flex:1;margin-left:10px}.ibiz-bi-number-report__content--yoy-lastyearMonth.is-show{display:block}.ibiz-bi-number-report__content--qoq-lastMonth{display:none;flex:1;margin-left:10px}.ibiz-bi-number-report__content--qoq-lastMonth.is-show{display:block}.ibiz-bi-number-report__content--qoq-value{display:none;margin-left:10px}.ibiz-bi-number-report__content--qoq-value.is-show{display:block}.ibiz-bi-number-report__content--yoy-yoyTotal{display:none}.ibiz-bi-number-report__content--yoy-yoyTotal.is-show{display:block}.ibiz-bi-number-report__content--qoq-qoqTotal{display:none}.ibiz-bi-number-report__content--qoq-qoqTotal.is-show{display:block}.ibiz-bi-number-report__down{display:flex;gap:10px;align-items:center;justify-content:center;margin-left:10px}.ibiz-bi-number-report__down svg{color:var(--ibiz-color-danger-active)}.ibiz-bi-number-report__up{display:flex;gap:10px;align-items:center;justify-content:center;margin-left:10px}.ibiz-bi-number-report__up svg{color:var(--ibiz-color-success-light-active)}
@@ -0,0 +1,184 @@
1
+ import { defineComponent, createVNode, createTextVNode, ref, computed } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import './bi-number-report.css';
4
+
5
+ "use strict";
6
+ const IBizBINumberReport = /* @__PURE__ */ defineComponent({
7
+ name: "IBizBINumberReport",
8
+ props: {
9
+ model: {
10
+ type: Object,
11
+ required: true
12
+ },
13
+ data: {
14
+ type: Array,
15
+ required: true
16
+ }
17
+ },
18
+ setup(props) {
19
+ const ns = useNamespace("bi-number-report");
20
+ const uiState = ref({
21
+ visible: false,
22
+ // 查看明细是否显示
23
+ yoy: 0,
24
+ // 同比差异值,年与年比较
25
+ qoq: 0,
26
+ // 环比差异值,月与月比较
27
+ currentTotal: 0,
28
+ // 当前总数
29
+ yoyTotal: 0,
30
+ // 同比总数
31
+ qoqTotal: 0
32
+ // 环比总数
33
+ });
34
+ const handleCompareData = () => {
35
+ var _a, _b;
36
+ const codeName = (_b = (_a = props.model.measure) == null ? void 0 : _a.measureTag) == null ? void 0 : _b.toLowerCase();
37
+ if (codeName) {
38
+ props.data.forEach((item) => {
39
+ if (item && item.srfperiodtype === "PoP1") {
40
+ uiState.value.qoqTotal = Number.isNaN(Number(item[codeName])) ? 0 : Number(item[codeName]);
41
+ } else if (item && item.srfperiodtype === "YoY1") {
42
+ uiState.value.yoyTotal = Number.isNaN(Number(item[codeName])) ? 0 : Number(item[codeName]);
43
+ } else if (item && item[codeName]) {
44
+ uiState.value.currentTotal = Number.isNaN(Number(item[codeName])) ? 0 : Number(item[codeName]);
45
+ }
46
+ });
47
+ uiState.value.qoq = uiState.value.currentTotal - uiState.value.qoqTotal;
48
+ uiState.value.yoy = uiState.value.currentTotal - uiState.value.yoyTotal;
49
+ }
50
+ };
51
+ handleCompareData();
52
+ const style = computed(() => {
53
+ const tempStyle = {};
54
+ const {
55
+ number_fontstyle,
56
+ number_fontsize,
57
+ number_fontcolor
58
+ } = props.model;
59
+ if (number_fontstyle) {
60
+ if (number_fontstyle.includes("bold")) {
61
+ tempStyle.fontWeight = "bold";
62
+ } else {
63
+ tempStyle.fontStyle = number_fontstyle;
64
+ }
65
+ }
66
+ if (number_fontsize)
67
+ tempStyle.fontSize = "".concat(number_fontsize, "px");
68
+ if (number_fontcolor)
69
+ tempStyle.color = number_fontcolor;
70
+ return tempStyle;
71
+ });
72
+ const handleFormat = (value) => {
73
+ var _a;
74
+ const format = (_a = props.model.measure) == null ? void 0 : _a.jsonFormat;
75
+ if (format)
76
+ return ibiz.util.text.format(String(value), format);
77
+ return value;
78
+ };
79
+ const renderUpIcon = () => {
80
+ return createVNode("svg", {
81
+ "viewBox": "0 0 16 16",
82
+ "xmlns": "http://www.w3.org/2000/svg",
83
+ "height": "1em",
84
+ "width": "1em",
85
+ "focusable": "false",
86
+ "fill": "currentColor",
87
+ "style": "transform: rotate(180deg);"
88
+ }, [createVNode("g", {
89
+ "id": "aft1.Base\u57FA\u7840/1.icon\u56FE\u6807/5.navigation/caret-down",
90
+ "stroke-width": "1",
91
+ "fill-rule": "evenodd"
92
+ }, [createVNode("path", {
93
+ "d": "M5.02 8.233l5.952-5.952a.6.6 0 0 1 1.025.424v5.952a.6.6 0 0 1-.6.6H5.445a.6.6 0 0 1-.424-1.024z",
94
+ "id": "aft\u8DEF\u5F84",
95
+ "transform": "rotate(45 7.997 5.257)"
96
+ }, null)])]);
97
+ };
98
+ const renderDownIcon = () => {
99
+ return createVNode("svg", {
100
+ "viewBox": "0 0 16 16",
101
+ "xmlns": "http://www.w3.org/2000/svg",
102
+ "height": "1em",
103
+ "width": "1em",
104
+ "focusable": "false",
105
+ "fill": "currentColor"
106
+ }, [createVNode("g", {
107
+ "id": "aft1.Base\u57FA\u7840/1.icon\u56FE\u6807/5.navigation/caret-down",
108
+ "stroke-width": "1",
109
+ "fill-rule": "evenodd"
110
+ }, [createVNode("path", {
111
+ "d": "M5.02 8.233l5.952-5.952a.6.6 0 0 1 1.025.424v5.952a.6.6 0 0 1-.6.6H5.445a.6.6 0 0 1-.424-1.024z",
112
+ "id": "aft\u8DEF\u5F84",
113
+ "transform": "rotate(45 7.997 5.257)"
114
+ }, null)])]);
115
+ };
116
+ const renderUpDownResult = (baseValue, targetValue) => {
117
+ if (baseValue === 0) {
118
+ if (targetValue === 0) {
119
+ return createVNode("span", null, [createTextVNode("-")]);
120
+ }
121
+ return createVNode("div", {
122
+ "class": ns.e("up")
123
+ }, [renderUpIcon(), createVNode("span", null, [createTextVNode("100%")])]);
124
+ }
125
+ const temp = targetValue - baseValue;
126
+ const percentage = (Math.abs(temp) / baseValue * 100).toFixed(0);
127
+ if (temp < 0) {
128
+ return createVNode("div", {
129
+ "class": ns.e("down")
130
+ }, [renderDownIcon(), createVNode("span", null, [percentage, createTextVNode("%")])]);
131
+ }
132
+ if (temp === 0) {
133
+ return createVNode("span", null, [createTextVNode("-")]);
134
+ }
135
+ return createVNode("div", {
136
+ "class": ns.e("up")
137
+ }, [renderUpIcon(), createVNode("span", null, [percentage, createTextVNode("%")])]);
138
+ };
139
+ return {
140
+ ns,
141
+ style,
142
+ uiState,
143
+ handleFormat,
144
+ renderUpDownResult
145
+ };
146
+ },
147
+ render() {
148
+ var _a, _b, _c, _d;
149
+ return createVNode("div", {
150
+ "class": this.ns.b()
151
+ }, [createVNode("div", {
152
+ "class": this.ns.e("content")
153
+ }, [createVNode("div", {
154
+ "class": this.ns.em("content", "number")
155
+ }, [createVNode("span", {
156
+ "class": this.ns.em("content", "number-text"),
157
+ "style": this.style
158
+ }, [this.handleFormat(this.uiState.currentTotal)])]), createVNode("div", {
159
+ "class": this.ns.em("content", "compare")
160
+ }, [this.model.number_yoy_show === 1 && createVNode("div", {
161
+ "class": this.ns.em("content", "yoy")
162
+ }, [createVNode("div", {
163
+ "class": this.ns.em("content", "compare-number")
164
+ }, [createVNode("span", null, [createTextVNode("\u540C\u6BD4")]), createVNode("span", {
165
+ "class": [this.ns.em("content", "yoy-yoyTotal"), this.ns.is("show", (_a = this.model.number_yoy_value) == null ? void 0 : _a.includes("orgin"))]
166
+ }, [this.uiState.yoyTotal]), createVNode("span", {
167
+ "class": [this.ns.em("content", "yoy-value"), this.ns.is("show", (_b = this.model.number_yoy_value) == null ? void 0 : _b.includes("difference"))]
168
+ }, [createTextVNode("("), this.uiState.yoy > 0 ? "+" : "", this.uiState.yoy, createTextVNode(")")])]), createVNode("div", {
169
+ "class": this.ns.em("content", "icon")
170
+ }, [this.renderUpDownResult(this.uiState.yoyTotal, this.uiState.currentTotal)])]), this.model.number_qoq_show === 1 && createVNode("div", {
171
+ "class": this.ns.em("content", "qoq")
172
+ }, [createVNode("div", {
173
+ "class": this.ns.em("content", "compare-number")
174
+ }, [createVNode("span", null, [createTextVNode("\u73AF\u6BD4")]), createVNode("span", {
175
+ "class": [this.ns.em("content", "qoq-qoqTotal"), this.ns.is("show", (_c = this.model.number_qoq_value) == null ? void 0 : _c.includes("orgin"))]
176
+ }, [this.uiState.qoqTotal]), createVNode("span", {
177
+ "class": [this.ns.em("content", "qoq-value"), this.ns.is("show", (_d = this.model.number_qoq_value) == null ? void 0 : _d.includes("difference"))]
178
+ }, [createTextVNode("("), this.uiState.qoq > 0 ? "+" : "", this.uiState.qoq, createTextVNode(")")])]), createVNode("div", {
179
+ "class": this.ns.em("content", "icon")
180
+ }, [this.renderUpDownResult(this.uiState.qoqTotal, this.uiState.currentTotal)])])])])]);
181
+ }
182
+ });
183
+
184
+ export { IBizBINumberReport };
@@ -0,0 +1,3 @@
1
+ export { IBizBINumberReport } from './bi-number-report/bi-number-report.mjs';
2
+
3
+ "use strict";
@@ -0,0 +1,9 @@
1
+ import { withInstall } from '@ibiz-template/vue3-util';
2
+ import { BIReport } from './bi-report.mjs';
3
+
4
+ "use strict";
5
+ const IBizBIReport = withInstall(BIReport, (v) => {
6
+ v.component(BIReport.name, BIReport);
7
+ });
8
+
9
+ export { IBizBIReport, IBizBIReport as default };
@@ -1,5 +1,6 @@
1
1
  export { IBizUserReportPanel } from './user-report-panel/index.mjs';
2
2
  export { IBizUser2ReportPanel } from './user2-report-panel/index.mjs';
3
3
  export { IBizBIReportPanel } from './bi-report-panel/index.mjs';
4
+ export { IBizBIReport } from './bi-report/index.mjs';
4
5
 
5
6
  "use strict";
@@ -51,10 +51,8 @@ const ReportPanelControl = /* @__PURE__ */ defineComponent({
51
51
  const c = useControlController((...args) => new ReportPanelController(...args));
52
52
  const ns = useNamespace("control-".concat(c.model.controlType.toLowerCase()));
53
53
  const renderContent = () => {
54
- const {
55
- reportType
56
- } = c.state;
57
- switch (reportType) {
54
+ var _a;
55
+ switch ((_a = c.model.appDEReport) == null ? void 0 : _a.reportType) {
58
56
  case "USER":
59
57
  return createVNode(resolveComponent("iBizUserReportPanel"), {
60
58
  "controller": c
@@ -63,14 +61,18 @@ const ReportPanelControl = /* @__PURE__ */ defineComponent({
63
61
  return createVNode(resolveComponent("iBizUser2ReportPanel"), {
64
62
  "controller": c
65
63
  }, null);
64
+ case "SYSBIREPORT":
66
65
  case "DESYSBIREPORTS":
67
66
  case "SYSBICUBE":
68
67
  case "DESYSBICUBES":
69
68
  case "ALLSYSBICUBES":
70
- case "SYSBIREPORT":
71
69
  case "SYSBICUBEREPORTS":
72
70
  case "ALLSYSBIREPORTS":
73
- return createVNode(resolveComponent("iBizBIReportPanel"), {
71
+ if (c.isBIReportDesign)
72
+ return createVNode(resolveComponent("iBizBIReportPanel"), {
73
+ "controller": c
74
+ }, null);
75
+ return createVNode(resolveComponent("iBizBIReport"), {
74
76
  "controller": c
75
77
  }, null);
76
78
  default:
@@ -85,9 +87,8 @@ const ReportPanelControl = /* @__PURE__ */ defineComponent({
85
87
  },
86
88
  render() {
87
89
  let _slot;
88
- if (!this.c.state.isCreated) {
90
+ if (!this.c.state.isCreated)
89
91
  return;
90
- }
91
92
  return createVNode(resolveComponent("iBizControlBase"), {
92
93
  "controller": this.c
93
94
  }, _isSlot(_slot = this.renderContent()) ? _slot : {
@@ -111,7 +111,7 @@ class AuthGuard {
111
111
  const viewName = urlPaths[urlPaths.length - 2];
112
112
  let viewModel;
113
113
  try {
114
- if (viewName === "#" && ibiz.hub.defaultPage) {
114
+ if (["#", "index"].includes(viewName) && ibiz.hub.defaultPage) {
115
115
  viewModel = await ibiz.hub.getAppView(ibiz.hub.defaultPage.id);
116
116
  } else {
117
117
  viewModel = await ibiz.hub.getAppView(viewName);
@@ -7,17 +7,19 @@ var vue3Util = require('@ibiz-template/vue3-util');
7
7
  var reportPanel = require('./report-panel.cjs');
8
8
  var reportPanel_provider = require('./report-panel.provider.cjs');
9
9
  require('./report-detail/index.cjs');
10
- var index = require('./report-detail/user-report-panel/index.cjs');
11
- var index$1 = require('./report-detail/user2-report-panel/index.cjs');
12
- var index$2 = require('./report-detail/bi-report-panel/index.cjs');
10
+ var index = require('./report-detail/bi-report/index.cjs');
11
+ var index$1 = require('./report-detail/user-report-panel/index.cjs');
12
+ var index$2 = require('./report-detail/user2-report-panel/index.cjs');
13
+ var index$3 = require('./report-detail/bi-report-panel/index.cjs');
13
14
 
14
15
  "use strict";
15
16
  const IBizReportPanelControl = vue3Util.withInstall(
16
17
  reportPanel.ReportPanelControl,
17
18
  function(v) {
18
- v.use(index.IBizUserReportPanel);
19
- v.use(index$1.IBizUser2ReportPanel);
20
- v.use(index$2.IBizBIReportPanel);
19
+ v.use(index.IBizBIReport);
20
+ v.use(index$1.IBizUserReportPanel);
21
+ v.use(index$2.IBizUser2ReportPanel);
22
+ v.use(index$3.IBizBIReportPanel);
21
23
  v.component(reportPanel.ReportPanelControl.name, reportPanel.ReportPanelControl);
22
24
  runtime.registerControlProvider(
23
25
  runtime.ControlType.REPORT_PANEL,
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ require('./commons/index.cjs');
6
+ require('./bi-report.css');
7
+ var biNumberReport = require('./commons/bi-number-report/bi-number-report.cjs');
8
+
9
+ "use strict";
10
+ const BIReport = /* @__PURE__ */ vue.defineComponent({
11
+ name: "IBizBIReport",
12
+ props: {
13
+ controller: {
14
+ type: Object,
15
+ required: true
16
+ }
17
+ },
18
+ setup(props) {
19
+ const c = props.controller;
20
+ const ns = vue3Util.useNamespace("bi-report");
21
+ const generator = c.generator;
22
+ const reportType = generator.reportType;
23
+ return {
24
+ c,
25
+ ns,
26
+ reportType
27
+ };
28
+ },
29
+ render() {
30
+ if (!this.c.state.biReport)
31
+ return;
32
+ return vue.createVNode("div", {
33
+ "class": this.ns.b()
34
+ }, [this.reportType === "NUMBER" ? vue.createVNode(biNumberReport.IBizBINumberReport, {
35
+ "model": this.c.state.biReport.model,
36
+ "data": this.c.state.biReport.data
37
+ }, null) : vue.createVNode(vue.resolveComponent("iBizControlShell"), {
38
+ "isSimple": true,
39
+ "context": this.c.context,
40
+ "data": this.c.state.biReport.data,
41
+ "modelData": this.c.state.biReport.model,
42
+ "style": this.c.state.biReport.options.vars,
43
+ "class": this.c.state.biReport.options.classList
44
+ }, null)]);
45
+ }
46
+ });
47
+
48
+ exports.BIReport = BIReport;
@@ -0,0 +1 @@
1
+ .ibiz-bi-report{width:100%;height:100%}.ibiz-bi-report .ibiz-control-grid.is-single-select .el-table__body-wrapper .el-table__body tbody>tr td{padding-left:var(--ibiz-spacing-tight)!important}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__header .el-table__cell{font-style:var(--ibiz-control-grid-header-font-style);text-align:var(--ibiz-control-grid-header-align)}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__header .el-table__cell .cell{--ibiz-grid-column-justify-content:var(--ibiz-control-grid-header-align)}.ibiz-bi-report .ibiz-control-grid .el-table .ibiz-grid-field-column__text{overflow:visible;font-size:var(--ibiz-control-grid-content-font-size);font-style:var(--ibiz-control-grid-content-font-style);font-weight:var(--ibiz-control-grid-content-font-weight);color:var(--ibiz-control-grid-content-text-color)}.ibiz-bi-report .ibiz-control-grid .el-table .ibiz-grid-field-column__script{line-height:23px}.ibiz-bi-report .ibiz-control-grid .el-table{--el-table-border-color:var(--ibiz-color-border);--ibiz-control-grid-row-hover-color:transparent;--el-table-current-row-bg-color:transparent;--ibiz-control-grid-row-bg-color-2:var(--ibiz-control-grid-row-bg-color)}.ibiz-bi-report .ibiz-control-grid .el-table tr td{pointer-events:none}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__header-wrapper .el-table__header thead>tr th:nth-child(1){padding-left:0}.ibiz-bi-report .ibiz-control-grid .el-table .el-table__body-wrapper .el-table__body tbody>tr td:nth-child(1){padding-left:0}.ibiz-bi-report .ibiz-control-grid .el-table--border .el-table__cell{border-right:var(--el-table-border)}.ibiz-bi-report .ibiz-control-grid .el-table td.el-table__cell,.ibiz-bi-report .ibiz-control-grid .el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-table__inner-wrapper{overflow:auto}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-table__header-wrapper{position:sticky;top:0}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-table__body-wrapper{flex:none;height:auto}.ibiz-bi-report .ibiz-control-grid.el-table--scroll-header .el-scrollbar__bar{display:none}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__header-wrapper{order:0}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__footer-wrapper{order:1}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__footer-wrapper .el-table__footer{height:var(--ibiz-control-grid-content-row-height)}.ibiz-bi-report .ibiz-control-grid .el-table--top-agg .el-table__body-wrapper{order:2}
@@ -0,0 +1,186 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ require('./bi-number-report.css');
6
+
7
+ "use strict";
8
+ const IBizBINumberReport = /* @__PURE__ */ vue.defineComponent({
9
+ name: "IBizBINumberReport",
10
+ props: {
11
+ model: {
12
+ type: Object,
13
+ required: true
14
+ },
15
+ data: {
16
+ type: Array,
17
+ required: true
18
+ }
19
+ },
20
+ setup(props) {
21
+ const ns = vue3Util.useNamespace("bi-number-report");
22
+ const uiState = vue.ref({
23
+ visible: false,
24
+ // 查看明细是否显示
25
+ yoy: 0,
26
+ // 同比差异值,年与年比较
27
+ qoq: 0,
28
+ // 环比差异值,月与月比较
29
+ currentTotal: 0,
30
+ // 当前总数
31
+ yoyTotal: 0,
32
+ // 同比总数
33
+ qoqTotal: 0
34
+ // 环比总数
35
+ });
36
+ const handleCompareData = () => {
37
+ var _a, _b;
38
+ const codeName = (_b = (_a = props.model.measure) == null ? void 0 : _a.measureTag) == null ? void 0 : _b.toLowerCase();
39
+ if (codeName) {
40
+ props.data.forEach((item) => {
41
+ if (item && item.srfperiodtype === "PoP1") {
42
+ uiState.value.qoqTotal = Number.isNaN(Number(item[codeName])) ? 0 : Number(item[codeName]);
43
+ } else if (item && item.srfperiodtype === "YoY1") {
44
+ uiState.value.yoyTotal = Number.isNaN(Number(item[codeName])) ? 0 : Number(item[codeName]);
45
+ } else if (item && item[codeName]) {
46
+ uiState.value.currentTotal = Number.isNaN(Number(item[codeName])) ? 0 : Number(item[codeName]);
47
+ }
48
+ });
49
+ uiState.value.qoq = uiState.value.currentTotal - uiState.value.qoqTotal;
50
+ uiState.value.yoy = uiState.value.currentTotal - uiState.value.yoyTotal;
51
+ }
52
+ };
53
+ handleCompareData();
54
+ const style = vue.computed(() => {
55
+ const tempStyle = {};
56
+ const {
57
+ number_fontstyle,
58
+ number_fontsize,
59
+ number_fontcolor
60
+ } = props.model;
61
+ if (number_fontstyle) {
62
+ if (number_fontstyle.includes("bold")) {
63
+ tempStyle.fontWeight = "bold";
64
+ } else {
65
+ tempStyle.fontStyle = number_fontstyle;
66
+ }
67
+ }
68
+ if (number_fontsize)
69
+ tempStyle.fontSize = "".concat(number_fontsize, "px");
70
+ if (number_fontcolor)
71
+ tempStyle.color = number_fontcolor;
72
+ return tempStyle;
73
+ });
74
+ const handleFormat = (value) => {
75
+ var _a;
76
+ const format = (_a = props.model.measure) == null ? void 0 : _a.jsonFormat;
77
+ if (format)
78
+ return ibiz.util.text.format(String(value), format);
79
+ return value;
80
+ };
81
+ const renderUpIcon = () => {
82
+ return vue.createVNode("svg", {
83
+ "viewBox": "0 0 16 16",
84
+ "xmlns": "http://www.w3.org/2000/svg",
85
+ "height": "1em",
86
+ "width": "1em",
87
+ "focusable": "false",
88
+ "fill": "currentColor",
89
+ "style": "transform: rotate(180deg);"
90
+ }, [vue.createVNode("g", {
91
+ "id": "aft1.Base\u57FA\u7840/1.icon\u56FE\u6807/5.navigation/caret-down",
92
+ "stroke-width": "1",
93
+ "fill-rule": "evenodd"
94
+ }, [vue.createVNode("path", {
95
+ "d": "M5.02 8.233l5.952-5.952a.6.6 0 0 1 1.025.424v5.952a.6.6 0 0 1-.6.6H5.445a.6.6 0 0 1-.424-1.024z",
96
+ "id": "aft\u8DEF\u5F84",
97
+ "transform": "rotate(45 7.997 5.257)"
98
+ }, null)])]);
99
+ };
100
+ const renderDownIcon = () => {
101
+ return vue.createVNode("svg", {
102
+ "viewBox": "0 0 16 16",
103
+ "xmlns": "http://www.w3.org/2000/svg",
104
+ "height": "1em",
105
+ "width": "1em",
106
+ "focusable": "false",
107
+ "fill": "currentColor"
108
+ }, [vue.createVNode("g", {
109
+ "id": "aft1.Base\u57FA\u7840/1.icon\u56FE\u6807/5.navigation/caret-down",
110
+ "stroke-width": "1",
111
+ "fill-rule": "evenodd"
112
+ }, [vue.createVNode("path", {
113
+ "d": "M5.02 8.233l5.952-5.952a.6.6 0 0 1 1.025.424v5.952a.6.6 0 0 1-.6.6H5.445a.6.6 0 0 1-.424-1.024z",
114
+ "id": "aft\u8DEF\u5F84",
115
+ "transform": "rotate(45 7.997 5.257)"
116
+ }, null)])]);
117
+ };
118
+ const renderUpDownResult = (baseValue, targetValue) => {
119
+ if (baseValue === 0) {
120
+ if (targetValue === 0) {
121
+ return vue.createVNode("span", null, [vue.createTextVNode("-")]);
122
+ }
123
+ return vue.createVNode("div", {
124
+ "class": ns.e("up")
125
+ }, [renderUpIcon(), vue.createVNode("span", null, [vue.createTextVNode("100%")])]);
126
+ }
127
+ const temp = targetValue - baseValue;
128
+ const percentage = (Math.abs(temp) / baseValue * 100).toFixed(0);
129
+ if (temp < 0) {
130
+ return vue.createVNode("div", {
131
+ "class": ns.e("down")
132
+ }, [renderDownIcon(), vue.createVNode("span", null, [percentage, vue.createTextVNode("%")])]);
133
+ }
134
+ if (temp === 0) {
135
+ return vue.createVNode("span", null, [vue.createTextVNode("-")]);
136
+ }
137
+ return vue.createVNode("div", {
138
+ "class": ns.e("up")
139
+ }, [renderUpIcon(), vue.createVNode("span", null, [percentage, vue.createTextVNode("%")])]);
140
+ };
141
+ return {
142
+ ns,
143
+ style,
144
+ uiState,
145
+ handleFormat,
146
+ renderUpDownResult
147
+ };
148
+ },
149
+ render() {
150
+ var _a, _b, _c, _d;
151
+ return vue.createVNode("div", {
152
+ "class": this.ns.b()
153
+ }, [vue.createVNode("div", {
154
+ "class": this.ns.e("content")
155
+ }, [vue.createVNode("div", {
156
+ "class": this.ns.em("content", "number")
157
+ }, [vue.createVNode("span", {
158
+ "class": this.ns.em("content", "number-text"),
159
+ "style": this.style
160
+ }, [this.handleFormat(this.uiState.currentTotal)])]), vue.createVNode("div", {
161
+ "class": this.ns.em("content", "compare")
162
+ }, [this.model.number_yoy_show === 1 && vue.createVNode("div", {
163
+ "class": this.ns.em("content", "yoy")
164
+ }, [vue.createVNode("div", {
165
+ "class": this.ns.em("content", "compare-number")
166
+ }, [vue.createVNode("span", null, [vue.createTextVNode("\u540C\u6BD4")]), vue.createVNode("span", {
167
+ "class": [this.ns.em("content", "yoy-yoyTotal"), this.ns.is("show", (_a = this.model.number_yoy_value) == null ? void 0 : _a.includes("orgin"))]
168
+ }, [this.uiState.yoyTotal]), vue.createVNode("span", {
169
+ "class": [this.ns.em("content", "yoy-value"), this.ns.is("show", (_b = this.model.number_yoy_value) == null ? void 0 : _b.includes("difference"))]
170
+ }, [vue.createTextVNode("("), this.uiState.yoy > 0 ? "+" : "", this.uiState.yoy, vue.createTextVNode(")")])]), vue.createVNode("div", {
171
+ "class": this.ns.em("content", "icon")
172
+ }, [this.renderUpDownResult(this.uiState.yoyTotal, this.uiState.currentTotal)])]), this.model.number_qoq_show === 1 && vue.createVNode("div", {
173
+ "class": this.ns.em("content", "qoq")
174
+ }, [vue.createVNode("div", {
175
+ "class": this.ns.em("content", "compare-number")
176
+ }, [vue.createVNode("span", null, [vue.createTextVNode("\u73AF\u6BD4")]), vue.createVNode("span", {
177
+ "class": [this.ns.em("content", "qoq-qoqTotal"), this.ns.is("show", (_c = this.model.number_qoq_value) == null ? void 0 : _c.includes("orgin"))]
178
+ }, [this.uiState.qoqTotal]), vue.createVNode("span", {
179
+ "class": [this.ns.em("content", "qoq-value"), this.ns.is("show", (_d = this.model.number_qoq_value) == null ? void 0 : _d.includes("difference"))]
180
+ }, [vue.createTextVNode("("), this.uiState.qoq > 0 ? "+" : "", this.uiState.qoq, vue.createTextVNode(")")])]), vue.createVNode("div", {
181
+ "class": this.ns.em("content", "icon")
182
+ }, [this.renderUpDownResult(this.uiState.qoqTotal, this.uiState.currentTotal)])])])])]);
183
+ }
184
+ });
185
+
186
+ exports.IBizBINumberReport = IBizBINumberReport;
@@ -0,0 +1 @@
1
+ .ibiz-bi-number-report{width:100%;height:100%}.ibiz-bi-number-report__content{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.ibiz-bi-number-report__content--number-text{cursor:pointer}.ibiz-bi-number-report__content--yoy{display:flex}.ibiz-bi-number-report__content--qoq{display:flex}.ibiz-bi-number-report__content--compare-number{display:flex;align-items:baseline;width:150px}.ibiz-bi-number-report__content--yoy-value{display:none;margin-left:10px}.ibiz-bi-number-report__content--yoy-value.is-show{display:block}.ibiz-bi-number-report__content--yoy-lastyearMonth{display:none;flex:1;margin-left:10px}.ibiz-bi-number-report__content--yoy-lastyearMonth.is-show{display:block}.ibiz-bi-number-report__content--qoq-lastMonth{display:none;flex:1;margin-left:10px}.ibiz-bi-number-report__content--qoq-lastMonth.is-show{display:block}.ibiz-bi-number-report__content--qoq-value{display:none;margin-left:10px}.ibiz-bi-number-report__content--qoq-value.is-show{display:block}.ibiz-bi-number-report__content--yoy-yoyTotal{display:none}.ibiz-bi-number-report__content--yoy-yoyTotal.is-show{display:block}.ibiz-bi-number-report__content--qoq-qoqTotal{display:none}.ibiz-bi-number-report__content--qoq-qoqTotal.is-show{display:block}.ibiz-bi-number-report__down{display:flex;gap:10px;align-items:center;justify-content:center;margin-left:10px}.ibiz-bi-number-report__down svg{color:var(--ibiz-color-danger-active)}.ibiz-bi-number-report__up{display:flex;gap:10px;align-items:center;justify-content:center;margin-left:10px}.ibiz-bi-number-report__up svg{color:var(--ibiz-color-success-light-active)}
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var biNumberReport = require('./bi-number-report/bi-number-report.cjs');
4
+
5
+ "use strict";
6
+
7
+ exports.IBizBINumberReport = biNumberReport.IBizBINumberReport;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var vue3Util = require('@ibiz-template/vue3-util');
6
+ var biReport = require('./bi-report.cjs');
7
+
8
+ "use strict";
9
+ const IBizBIReport = vue3Util.withInstall(biReport.BIReport, (v) => {
10
+ v.component(biReport.BIReport.name, biReport.BIReport);
11
+ });
12
+
13
+ exports.IBizBIReport = IBizBIReport;
14
+ exports.default = IBizBIReport;
@@ -3,9 +3,11 @@
3
3
  var index = require('./user-report-panel/index.cjs');
4
4
  var index$1 = require('./user2-report-panel/index.cjs');
5
5
  var index$2 = require('./bi-report-panel/index.cjs');
6
+ var index$3 = require('./bi-report/index.cjs');
6
7
 
7
8
  "use strict";
8
9
 
9
10
  exports.IBizUserReportPanel = index.IBizUserReportPanel;
10
11
  exports.IBizUser2ReportPanel = index$1.IBizUser2ReportPanel;
11
12
  exports.IBizBIReportPanel = index$2.IBizBIReportPanel;
13
+ exports.IBizBIReport = index$3.IBizBIReport;