@ibiz-template/vue3-components 0.7.9 → 0.7.11
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/dist/{chart-jfPZ04eU.js → chart-Wh3LMgZ1.js} +1 -1
- package/dist/index-0Z8KS6t6.js +1 -0
- package/dist/index-GZW20-jI.js +4 -0
- package/dist/index-OkS9bkdl.js +1 -0
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/map-chart-A4-TpWet.js +1 -0
- package/dist/wang-editor-HlmvPsb1.js +1 -0
- package/dist/{xlsx-util-Fc3O95jH.js → xlsx-util-lBpTaCO_.js} +1 -1
- package/es/common/data-import2/data-import2.mjs +1 -1
- package/es/common/doing-notice/doing-notice.mjs +7 -5
- package/es/common/map-chart/map-chart.util.mjs +4 -1
- package/es/common/view-message/view-message.css +1 -1
- package/es/common/view-message/view-message.d.ts +848 -1
- package/es/common/view-message/view-message.mjs +52 -22
- package/es/control/app-menu/app-menu.mjs +6 -2
- package/es/control/calendar/calendar.mjs +1 -1
- package/es/control/chart/chart.mjs +1 -1
- package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.d.ts +19000 -27
- package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.mjs +4 -2
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +64 -0
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.mjs +14 -11
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.mjs +1 -1
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +2 -2
- package/es/control/form/form-detail/form-mdctrl/form-mdctrl.provider.mjs +3 -1
- package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.mjs +17 -11
- package/es/control/gantt/gantt.d.ts +1 -0
- package/es/control/gantt/gantt.mjs +15 -4
- package/es/control/gantt/index.d.ts +1 -0
- package/es/control/grid/grid/grid.mjs +3 -1
- package/es/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.mjs +3 -1
- package/es/control/grid/row-edit-popover/row-edit-popover.mjs +9 -5
- package/es/control/grid/row-edit-popover/use-row-edit-popover.mjs +3 -3
- package/es/control/kanban/kanban.mjs +17 -9
- package/es/control/report-panel/report-detail/user2-report-panel/user2-report-panel.mjs +2 -2
- package/es/control/report-panel/report-panel.mjs +2 -2
- package/es/control/search-bar/filter-tree/filter-tree.mjs +7 -5
- package/es/control/search-bar/search-bar.mjs +2 -2
- package/es/control/search-bar/search-groups/edit-group-util.mjs +10 -2
- package/es/control/search-bar/search-groups/new-group-util.mjs +13 -3
- package/es/control/search-bar/search-groups/search-groups.d.ts +1 -1
- package/es/control/search-bar/search-groups/search-groups.mjs +47 -38
- package/es/control/toolbar/export-excel/export-excel.mjs +23 -21
- package/es/control/tree/el-tree-util.mjs +4 -2
- package/es/control/tree/tree.mjs +3 -1
- package/es/control/tree-grid/tree-grid.mjs +3 -1
- package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/tree-grid-ex-edit-column.mjs +3 -1
- package/es/control/tree-grid-ex/tree-grid-ex.mjs +6 -2
- package/es/control/tree-grid-ex/use-row-edit-popover.mjs +3 -3
- package/es/control/wizard-panel/wizard-panel.mjs +3 -3
- package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +2 -1
- package/es/editor/html/html-editor.controller.mjs +11 -0
- package/es/editor/html/wang-editor/ai/ai-modules.d.ts +1 -0
- package/es/editor/html/wang-editor/ai/ai-modules.mjs +2 -2
- package/es/editor/html/wang-editor/wang-editor.mjs +11 -13
- package/es/index.mjs +1 -0
- package/es/locale/en/index.d.ts +109 -1
- package/es/locale/en/index.mjs +123 -15
- package/es/locale/zh-CN/index.d.ts +109 -1
- package/es/locale/zh-CN/index.mjs +113 -5
- package/es/panel-component/view-msg-pos/view-msg-pos.mjs +4 -1
- package/es/util/index.d.ts +1 -0
- package/es/util/index.mjs +1 -0
- package/es/util/render-util/render-util.d.ts +48 -0
- package/es/util/render-util/render-util.mjs +60 -0
- package/es/web-app/guard/auth-guard/auth-guard.mjs +6 -4
- package/es/web-app/main.mjs +2 -0
- package/lib/common/data-import2/data-import2.cjs +1 -1
- package/lib/common/doing-notice/doing-notice.cjs +6 -4
- package/lib/common/map-chart/map-chart.util.cjs +4 -1
- package/lib/common/view-message/view-message.cjs +52 -22
- package/lib/common/view-message/view-message.css +1 -1
- package/lib/control/app-menu/app-menu.cjs +6 -2
- package/lib/control/calendar/calendar.cjs +1 -1
- package/lib/control/chart/chart.cjs +1 -1
- package/lib/control/dashboard/custom-dashboard-container/custom-dashboard-container.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.cjs +3 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.cjs +13 -10
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +1 -1
- package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.provider.cjs +3 -1
- package/lib/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.cjs +16 -10
- package/lib/control/gantt/gantt.cjs +14 -3
- package/lib/control/grid/grid/grid.cjs +3 -1
- package/lib/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.cjs +3 -1
- package/lib/control/grid/row-edit-popover/row-edit-popover.cjs +8 -4
- package/lib/control/grid/row-edit-popover/use-row-edit-popover.cjs +3 -3
- package/lib/control/kanban/kanban.cjs +16 -8
- package/lib/control/report-panel/report-detail/user2-report-panel/user2-report-panel.cjs +1 -1
- package/lib/control/report-panel/report-panel.cjs +1 -1
- package/lib/control/search-bar/filter-tree/filter-tree.cjs +7 -5
- package/lib/control/search-bar/search-bar.cjs +2 -2
- package/lib/control/search-bar/search-groups/edit-group-util.cjs +10 -2
- package/lib/control/search-bar/search-groups/new-group-util.cjs +13 -3
- package/lib/control/search-bar/search-groups/search-groups.cjs +46 -37
- package/lib/control/toolbar/export-excel/export-excel.cjs +23 -21
- package/lib/control/tree/el-tree-util.cjs +4 -2
- package/lib/control/tree/tree.cjs +3 -1
- package/lib/control/tree-grid/tree-grid.cjs +3 -1
- package/lib/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-edit-column/tree-grid-ex-edit-column.cjs +3 -1
- package/lib/control/tree-grid-ex/tree-grid-ex.cjs +6 -2
- package/lib/control/tree-grid-ex/use-row-edit-popover.cjs +3 -3
- package/lib/control/wizard-panel/wizard-panel.cjs +3 -3
- package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +2 -1
- package/lib/editor/html/html-editor.controller.cjs +11 -0
- package/lib/editor/html/wang-editor/ai/ai-modules.cjs +2 -2
- package/lib/editor/html/wang-editor/wang-editor.cjs +11 -13
- package/lib/index.cjs +2 -0
- package/lib/locale/en/index.cjs +123 -15
- package/lib/locale/zh-CN/index.cjs +113 -5
- package/lib/panel-component/view-msg-pos/view-msg-pos.cjs +4 -1
- package/lib/util/index.cjs +2 -0
- package/lib/util/render-util/render-util.cjs +62 -0
- package/lib/web-app/guard/auth-guard/auth-guard.cjs +6 -4
- package/lib/web-app/main.cjs +2 -0
- package/package.json +6 -6
- package/dist/index-GAvjatsT.js +0 -4
- package/dist/index-dsmTOMa5.js +0 -1
- package/dist/index-sGpuIVYT.js +0 -1
- package/dist/map-chart-cmVrWpPw.js +0 -1
- package/dist/wang-editor-mq8sQSDK.js +0 -1
|
@@ -13,14 +13,34 @@ var index = {
|
|
|
13
13
|
noSupport: "\u6682\u672A\u652F\u6301",
|
|
14
14
|
add: "\u6DFB\u52A0",
|
|
15
15
|
delete: "\u5220\u9664",
|
|
16
|
-
save: "\u4FDD\u5B58"
|
|
16
|
+
save: "\u4FDD\u5B58",
|
|
17
|
+
edit: "\u7F16\u8F91",
|
|
18
|
+
complete: "\u5B8C\u6210",
|
|
19
|
+
more: "\u66F4\u591A"
|
|
17
20
|
},
|
|
18
21
|
// 视图
|
|
19
22
|
view: {},
|
|
20
23
|
// 部件
|
|
21
24
|
control: {
|
|
25
|
+
common: {
|
|
26
|
+
determine: "\u786E\u5B9A",
|
|
27
|
+
retreat: "\u540E\u9000",
|
|
28
|
+
forward: "\u524D\u8FDB",
|
|
29
|
+
noSupportItem: "{name}\u6682\u672A\u652F\u6301",
|
|
30
|
+
noFoundNode: "\u6CA1\u6709\u627E\u5230_uuid\u4E3A{id}\u7684\u8282\u70B9",
|
|
31
|
+
itemsSelected: "\u5DF2\u9009\u4E2D{length}\u9879",
|
|
32
|
+
citeErrMessage: "\u627E\u4E0D\u5230\u8868\u683C\u7EC4\u4EF6\u5F15\u7528",
|
|
33
|
+
noDomErrMessage: "\u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u8868\u683C\u884Cdom\u5143\u7D20",
|
|
34
|
+
noPopErrMessage: "\u62FF\u4E0D\u5230pop\u7EC4\u4EF6\u7684\u5B9E\u4F8B",
|
|
35
|
+
currentNoData: "\u6682\u65E0\u6570\u636E",
|
|
36
|
+
updateSuccess: "\u66F4\u65B0\u6210\u529F",
|
|
37
|
+
newSuccCreated: "\u65B0\u5EFA\u6210\u529F",
|
|
38
|
+
deleteSuccess: "\u5220\u9664\u6210\u529F"
|
|
39
|
+
},
|
|
22
40
|
menu: {
|
|
23
|
-
noSupportAlign: "\u6682\u672A\u652F\u6301\u83DC\u5355\u65B9\u5411\u4E3A {align}"
|
|
41
|
+
noSupportAlign: "\u6682\u672A\u652F\u6301\u83DC\u5355\u65B9\u5411\u4E3A {align}",
|
|
42
|
+
noFoundModel: "\u6CA1\u627E\u5230\u83DC\u5355\u9879\u6A21\u578B{menuKey}",
|
|
43
|
+
noFoundFunction: "{menuKey}\u7684\u9002\u914D\u5668\u6CA1\u6709renderText\u65B9\u6CD5"
|
|
24
44
|
},
|
|
25
45
|
calendar: {
|
|
26
46
|
lastYear: "\u53BB\u5E74",
|
|
@@ -33,6 +53,9 @@ var index = {
|
|
|
33
53
|
chartPlaceholder: "\u56FE\u8868"
|
|
34
54
|
},
|
|
35
55
|
dashboard: {
|
|
56
|
+
customDashboardContainer: {
|
|
57
|
+
portalCustomPrompt: "\u95E8\u6237\u5B9A\u5236"
|
|
58
|
+
},
|
|
36
59
|
dashboardDesign: {
|
|
37
60
|
global: "\u5168\u5C40",
|
|
38
61
|
add: "\u6DFB\u52A0",
|
|
@@ -53,8 +76,84 @@ var index = {
|
|
|
53
76
|
putAway: "\u6536\u8D77"
|
|
54
77
|
},
|
|
55
78
|
formMDctrlForm: {
|
|
56
|
-
|
|
79
|
+
noFindProvider: "\u672A\u627E\u5230\u8868\u5355\u7684\u9002\u914D\u5668"
|
|
80
|
+
},
|
|
81
|
+
formMDctrlRepeater: {
|
|
82
|
+
noSupportStyle: "\u6682\u672A\u652F\u6301\u91CD\u590D\u5668\u6837\u5F0F{repeaterStyle}"
|
|
83
|
+
},
|
|
84
|
+
repeaterGrid: {
|
|
85
|
+
promptInformation: "\u662F\u5426\u5220\u9664\u9009\u4E2D\u9879",
|
|
86
|
+
absentOrLoad: "\u4E0D\u5B58\u5728\u6216\u52A0\u8F7D\u4E2D"
|
|
87
|
+
},
|
|
88
|
+
repeaterSingleForm: {
|
|
89
|
+
errorMessage: "\u6CA1\u6709repeatedForm"
|
|
90
|
+
},
|
|
91
|
+
mdCtrlContainer: {
|
|
92
|
+
promptInformation: "\u662F\u5426\u5220\u9664\u9009\u4E2D\u9879",
|
|
93
|
+
noSlot: "\u672A\u63D0\u4F9Bitem\u63D2\u69FD"
|
|
94
|
+
},
|
|
95
|
+
formMDctrl: {
|
|
96
|
+
errorMessage: "\u6682\u672A\u652F\u6301\u5185\u5BB9\u7C7B\u578B\u4E3A{contentType}"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
gantt: {
|
|
100
|
+
complete: "\u5B8C\u6210\u91CF",
|
|
101
|
+
total: "\u603B\u91CF",
|
|
102
|
+
deadline: "\u622A\u6B62\u65F6\u95F4"
|
|
103
|
+
},
|
|
104
|
+
kanban: {
|
|
105
|
+
selectAll: "\u5168\u9009",
|
|
106
|
+
selectedDataCount: "\u5DF2\u9009\u62E9<span>{length}</span>\u6761\u6570\u636E",
|
|
107
|
+
newPrompt: "\u65B0\u5EFA",
|
|
108
|
+
natchOperation: "\u6279\u91CF\u64CD\u4F5C"
|
|
109
|
+
},
|
|
110
|
+
reportPanel: {
|
|
111
|
+
unrealized: "\u6682\u672A\u5B9E\u73B0"
|
|
112
|
+
},
|
|
113
|
+
searchBar: {
|
|
114
|
+
saveGroup: "\u4FDD\u5B58\u5206\u7EC4",
|
|
115
|
+
filter: "\u8FC7\u6EE4",
|
|
116
|
+
filterTree: {
|
|
117
|
+
addItem: "\u6DFB\u52A0\u9879",
|
|
118
|
+
search: "\u641C\u7D22",
|
|
119
|
+
reset: "\u91CD\u7F6E"
|
|
120
|
+
},
|
|
121
|
+
searchGroups: {
|
|
122
|
+
groupValueRule: "\u5206\u7EC4\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A",
|
|
123
|
+
errorMessage: "\u5206\u7EC4\u540D\u79F0\u4E0D\u80FD\u91CD\u590D\uFF01",
|
|
124
|
+
noEditPrompt: "\u914D\u7F6E\u7684\u5206\u7EC4\u4E0D\u53EF\u7F16\u8F91",
|
|
125
|
+
savePrompt: "\u8BF7\u5148\u4FDD\u5B58\u8BE5\u5206\u7EC4",
|
|
126
|
+
delTitle: "\u786E\u8BA4\u5220\u9664",
|
|
127
|
+
confirmDelPrompt: "\u786E\u8BA4\u5220\u9664\u5206\u7EC4<span>{itemName}</span>\u5417\uFF1F",
|
|
128
|
+
unrecoverablePrompt: "\u5206\u7EC4\u5220\u9664\u540E\u4E0D\u53EF\u6062\u590D",
|
|
129
|
+
newGroup: "\u65B0\u5EFA\u5206\u7EC4",
|
|
130
|
+
groupManage: "\u5206\u7EC4\u7BA1\u7406",
|
|
131
|
+
groupName: "\u5206\u7EC4\u540D\u79F0",
|
|
132
|
+
enterPrompt: "\u8BF7\u8F93\u5165\u5206\u7EC4\u540D\u79F0",
|
|
133
|
+
editGroup: "\u7F16\u8F91\u5206\u7EC4",
|
|
134
|
+
manageTips: "Tips\uFF1A\u7BA1\u7406\u641C\u7D22\u680F\u7684\u5206\u7EC4",
|
|
135
|
+
name: "\u540D\u79F0",
|
|
136
|
+
show: "\u663E\u793A",
|
|
137
|
+
operate: "\u64CD\u4F5C",
|
|
138
|
+
dialogCancel: "\u53D6 \u6D88",
|
|
139
|
+
dialogDetermine: "\u786E \u5B9A"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
toolbar: {
|
|
143
|
+
exportExcel: {
|
|
144
|
+
exportAll: "\u5BFC\u51FA\u5168\u90E8(\u6700\u5927\u5BFC\u51FA1000\u884C)",
|
|
145
|
+
expCurrentPage: "\u5BFC\u51FA\u5F53\u524D\u9875",
|
|
146
|
+
expCurrentSelect: "\u5BFC\u51FA\u5F53\u524D\u9009\u4E2D",
|
|
147
|
+
page: "\u9875",
|
|
148
|
+
export: "\u5BFC\u51FA"
|
|
57
149
|
}
|
|
150
|
+
},
|
|
151
|
+
tree: {
|
|
152
|
+
noFoundInstance: "\u627E\u4E0D\u5230el-tree\u5B9E\u4F8B\u5BF9\u8C61",
|
|
153
|
+
noSupported: "\u6682\u4E0D\u652F\u6301dropType:{dropType}"
|
|
154
|
+
},
|
|
155
|
+
treeGridEx: {
|
|
156
|
+
noFoundMessage: "\u627E\u4E0D\u5230{id}\u7684\u884C\u6570\u636E\u5BF9\u8C61"
|
|
58
157
|
}
|
|
59
158
|
},
|
|
60
159
|
// 组件
|
|
@@ -79,7 +178,8 @@ var index = {
|
|
|
79
178
|
saveMode: "\u5BFC\u5165\u6A21\u5F0F\u4FDD\u5B58",
|
|
80
179
|
reUpload: "\u91CD\u65B0\u4E0A\u4F20\u6587\u4EF6",
|
|
81
180
|
fileUpload: "\u6587\u4EF6\u4E0A\u4F20",
|
|
82
|
-
import: "\u5BFC\u5165"
|
|
181
|
+
import: "\u5BFC\u5165",
|
|
182
|
+
selectProperties: "\u8BF7\u9009\u62E9\u5217\u5BFC\u5165\u5C5E\u6027!"
|
|
83
183
|
},
|
|
84
184
|
dataImport2Select: {
|
|
85
185
|
selectMode: "\u9009\u62E9\u5BFC\u5165\u6A21\u5F0F",
|
|
@@ -88,9 +188,17 @@ var index = {
|
|
|
88
188
|
dataImport2Table: {
|
|
89
189
|
selectAttribute: "\u9009\u62E9\u5F53\u524D\u5217\u5BF9\u5E94\u7684\u5BFC\u5165\u5C5E\u6027"
|
|
90
190
|
},
|
|
191
|
+
doingNotice: {
|
|
192
|
+
jobInProgress: "\u6709<span class={class}>{num}</span>\u4E2A\u540E\u53F0\u4F5C\u4E1A\u6B63\u5728\u6267\u884C\uFF0C\u8BF7\u7A0D\u540E"
|
|
193
|
+
},
|
|
91
194
|
extendActionTimeLine: {
|
|
92
195
|
processTime: "\u5904\u7406\u65F6\u95F4",
|
|
93
|
-
comments: "\u5BA1\u6279\u610F\u89C1"
|
|
196
|
+
comments: "\u5BA1\u6279\u610F\u89C1",
|
|
197
|
+
reject: "\u9A73\u56DE"
|
|
198
|
+
},
|
|
199
|
+
mapChart: {
|
|
200
|
+
high: "\u9AD8",
|
|
201
|
+
low: "\u4F4E"
|
|
94
202
|
},
|
|
95
203
|
pagination: {
|
|
96
204
|
display: "\u663E\u793A",
|
|
@@ -37,7 +37,10 @@ const ViewMsgPos = /* @__PURE__ */ defineComponent({
|
|
|
37
37
|
"class": this.ns.b()
|
|
38
38
|
}, [createVNode(resolveComponent("view-message"), {
|
|
39
39
|
"messages": viewMessages,
|
|
40
|
-
"scroll": scroll
|
|
40
|
+
"scroll": scroll,
|
|
41
|
+
"context": c.panel.context,
|
|
42
|
+
"params": c.panel.params,
|
|
43
|
+
"controller": c.panel.view.viewMsgController
|
|
41
44
|
}, null)]);
|
|
42
45
|
}
|
|
43
46
|
return null;
|
package/es/util/index.d.ts
CHANGED
|
@@ -7,3 +7,4 @@ export { OpenViewUtil } from './open-view-util/open-view-util';
|
|
|
7
7
|
export { OverlayController } from './overlay-controller/overlay-controller';
|
|
8
8
|
export { usePagination } from './pagination/use-pagination';
|
|
9
9
|
export { NoticeUtil } from './notice-util/notice-util';
|
|
10
|
+
export { RenderUtil } from './render-util/render-util';
|
package/es/util/index.mjs
CHANGED
|
@@ -7,5 +7,6 @@ export { OpenViewUtil } from './open-view-util/open-view-util.mjs';
|
|
|
7
7
|
export { OverlayController } from './overlay-controller/overlay-controller.mjs';
|
|
8
8
|
export { usePagination } from './pagination/use-pagination.mjs';
|
|
9
9
|
export { NoticeUtil } from './notice-util/notice-util.mjs';
|
|
10
|
+
export { RenderUtil } from './render-util/render-util.mjs';
|
|
10
11
|
|
|
11
12
|
"use strict";
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { IRenderUtil } from '@ibiz-template/runtime';
|
|
2
|
+
import { IAppView, IControl } from '@ibiz/model-core';
|
|
3
|
+
/**
|
|
4
|
+
* 绘制工具类(包含逻辑中绘制视图、绘制部件等功能)
|
|
5
|
+
*
|
|
6
|
+
* @description 此实现类挂载在 ibiz.render
|
|
7
|
+
* @author tony001
|
|
8
|
+
* @date 2024-05-08 16:05:07
|
|
9
|
+
* @export
|
|
10
|
+
* @class RenderUtil
|
|
11
|
+
* @implements {IRenderUtil}
|
|
12
|
+
*/
|
|
13
|
+
export declare class RenderUtil implements IRenderUtil {
|
|
14
|
+
/**
|
|
15
|
+
* 绘制视图
|
|
16
|
+
*
|
|
17
|
+
* @author tony001
|
|
18
|
+
* @date 2024-05-08 16:05:56
|
|
19
|
+
* @param {string} viewId
|
|
20
|
+
* @param {IAppView} model
|
|
21
|
+
* @param {IContext} context
|
|
22
|
+
* @param {IParams} params
|
|
23
|
+
* @param {IData} [options]
|
|
24
|
+
* @return {*} {IObject}
|
|
25
|
+
*/
|
|
26
|
+
renderViewShell(viewId: string, model: IAppView, context: IContext, params: IParams, options?: IData): IObject;
|
|
27
|
+
/**
|
|
28
|
+
* 绘制部件
|
|
29
|
+
*
|
|
30
|
+
* @author tony001
|
|
31
|
+
* @date 2024-05-08 16:05:02
|
|
32
|
+
* @param {IControl} model
|
|
33
|
+
* @param {IContext} context
|
|
34
|
+
* @param {IParams} params
|
|
35
|
+
* @param {IData} [options]
|
|
36
|
+
*/
|
|
37
|
+
renderCtrlShell(model: IControl, context: IContext, params: IParams, options?: IData): IObject;
|
|
38
|
+
/**
|
|
39
|
+
* 绘制组件
|
|
40
|
+
*
|
|
41
|
+
* @author tony001
|
|
42
|
+
* @date 2024-05-08 16:05:08
|
|
43
|
+
* @param {string} name
|
|
44
|
+
* @param {IData} options
|
|
45
|
+
* @return {*} {IObject}
|
|
46
|
+
*/
|
|
47
|
+
renderComponent(name: string, options: IData): IObject;
|
|
48
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { resolveComponent, h } from 'vue';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
class RenderUtil {
|
|
5
|
+
/**
|
|
6
|
+
* 绘制视图
|
|
7
|
+
*
|
|
8
|
+
* @author tony001
|
|
9
|
+
* @date 2024-05-08 16:05:56
|
|
10
|
+
* @param {string} viewId
|
|
11
|
+
* @param {IAppView} model
|
|
12
|
+
* @param {IContext} context
|
|
13
|
+
* @param {IParams} params
|
|
14
|
+
* @param {IData} [options]
|
|
15
|
+
* @return {*} {IObject}
|
|
16
|
+
*/
|
|
17
|
+
renderViewShell(viewId, model, context, params, options = {}) {
|
|
18
|
+
const props = {
|
|
19
|
+
viewId,
|
|
20
|
+
modelData: model,
|
|
21
|
+
context,
|
|
22
|
+
params,
|
|
23
|
+
...options
|
|
24
|
+
};
|
|
25
|
+
return h(resolveComponent("IBizViewShell"), props);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 绘制部件
|
|
29
|
+
*
|
|
30
|
+
* @author tony001
|
|
31
|
+
* @date 2024-05-08 16:05:02
|
|
32
|
+
* @param {IControl} model
|
|
33
|
+
* @param {IContext} context
|
|
34
|
+
* @param {IParams} params
|
|
35
|
+
* @param {IData} [options]
|
|
36
|
+
*/
|
|
37
|
+
renderCtrlShell(model, context, params, options = {}) {
|
|
38
|
+
const props = {
|
|
39
|
+
modelData: model,
|
|
40
|
+
context,
|
|
41
|
+
params,
|
|
42
|
+
...options
|
|
43
|
+
};
|
|
44
|
+
return h(resolveComponent("IBizControlShell"), props);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 绘制组件
|
|
48
|
+
*
|
|
49
|
+
* @author tony001
|
|
50
|
+
* @date 2024-05-08 16:05:08
|
|
51
|
+
* @param {string} name
|
|
52
|
+
* @param {IData} options
|
|
53
|
+
* @return {*} {IObject}
|
|
54
|
+
*/
|
|
55
|
+
renderComponent(name, options) {
|
|
56
|
+
return h(resolveComponent(name), options);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { RenderUtil };
|
|
@@ -71,12 +71,14 @@ class AuthGuard {
|
|
|
71
71
|
const urlPaths = window.location.hash.split("/");
|
|
72
72
|
const viewName = urlPaths[urlPaths.length - 2];
|
|
73
73
|
let viewModel;
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
try {
|
|
75
|
+
if (viewName === "#" && ibiz.hub.defaultPage) {
|
|
76
|
+
viewModel = await ibiz.hub.getAppView(ibiz.hub.defaultPage.id);
|
|
77
|
+
} else {
|
|
76
78
|
viewModel = await ibiz.hub.getAppView(viewName);
|
|
77
|
-
} catch (error) {
|
|
78
|
-
ibiz.log.error(error);
|
|
79
79
|
}
|
|
80
|
+
} catch (error) {
|
|
81
|
+
ibiz.log.error(error);
|
|
80
82
|
}
|
|
81
83
|
if (!viewModel) {
|
|
82
84
|
ibiz.log.error(
|
package/es/web-app/main.mjs
CHANGED
|
@@ -11,6 +11,7 @@ import './guard/index.mjs';
|
|
|
11
11
|
import { UnauthorizedHandler } from './util/unauthorized-handler/unauthorized-handler.mjs';
|
|
12
12
|
import { DynaAuthGuard } from './guard/auth-guard/dyna-auth-guard.mjs';
|
|
13
13
|
import { OpenViewUtil } from '../util/open-view-util/open-view-util.mjs';
|
|
14
|
+
import { RenderUtil } from '../util/render-util/render-util.mjs';
|
|
14
15
|
import { MessageUtil } from '../util/message-util/message-util.mjs';
|
|
15
16
|
import { ModalUtil } from '../util/modal-util/modal-util.mjs';
|
|
16
17
|
import { ConfirmUtil } from '../util/confirm-util/confirm-util.mjs';
|
|
@@ -62,6 +63,7 @@ async function runApp(plugins, opts) {
|
|
|
62
63
|
AppRouter.setAuthGuard((notLogin) => authGuard.verify(notLogin));
|
|
63
64
|
app.use(AppRouter.getRouter());
|
|
64
65
|
ibiz.openView = new OpenViewUtil(AppRouter.getRouter());
|
|
66
|
+
ibiz.render = new RenderUtil();
|
|
65
67
|
ibiz.message = new MessageUtil();
|
|
66
68
|
ibiz.modal = new ModalUtil();
|
|
67
69
|
ibiz.confirm = new ConfirmUtil();
|
|
@@ -415,7 +415,7 @@ const DataImport2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
415
415
|
}, [vue.createVNode(vue.resolveComponent("el-button"), {
|
|
416
416
|
"onClick": this.onButtonImportClick,
|
|
417
417
|
"disabled": !this.selectValues.join(""),
|
|
418
|
-
"title": !this.selectValues.join("") ? "
|
|
418
|
+
"title": !this.selectValues.join("") ? ibiz.i18n.t("component.dataImport2.selectProperties") : ""
|
|
419
419
|
}, _isSlot(_slot2 = ibiz.i18n.t("component.dataImport2.import")) ? _slot2 : {
|
|
420
420
|
default: () => [_slot2]
|
|
421
421
|
})]) : ""])])])]), vue.createVNode(vue.resolveComponent("data-import2-table"), {
|
|
@@ -23,10 +23,12 @@ const DoingNotice = /* @__PURE__ */ vue.defineComponent({
|
|
|
23
23
|
return vue.createVNode("div", {
|
|
24
24
|
"class": [this.ns.b()]
|
|
25
25
|
}, [vue.createVNode("span", {
|
|
26
|
-
"class": this.ns.e("text")
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
"class": this.ns.e("text"),
|
|
27
|
+
"innerHTML": ibiz.i18n.t("component.doingNotice.jobInProgress", {
|
|
28
|
+
class: this.ns.e("num"),
|
|
29
|
+
num: this.info.num
|
|
30
|
+
})
|
|
31
|
+
}, null), vue.createVNode("svg", {
|
|
30
32
|
"class": this.ns.e("loading-icon"),
|
|
31
33
|
"viewBox": "-10, -10, 50, 50"
|
|
32
34
|
}, [vue.createVNode("path", {
|
|
@@ -8,7 +8,10 @@ const defaultOpts = {
|
|
|
8
8
|
/** 热力图配置 */
|
|
9
9
|
visualMap: {
|
|
10
10
|
/** 两端的文本,如 ['高', '低'] */
|
|
11
|
-
text: [
|
|
11
|
+
text: [
|
|
12
|
+
ibiz.i18n.t("component.mapChart.high"),
|
|
13
|
+
ibiz.i18n.t("component.mapChart.low")
|
|
14
|
+
],
|
|
12
15
|
/** 底部代表的值 */
|
|
13
16
|
min: 0,
|
|
14
17
|
/** 顶部代表的值 */
|
|
@@ -18,6 +18,17 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
18
18
|
scroll: {
|
|
19
19
|
type: Boolean,
|
|
20
20
|
default: false
|
|
21
|
+
},
|
|
22
|
+
context: {
|
|
23
|
+
type: Object,
|
|
24
|
+
required: false
|
|
25
|
+
},
|
|
26
|
+
params: {
|
|
27
|
+
type: Object,
|
|
28
|
+
required: false
|
|
29
|
+
},
|
|
30
|
+
controller: {
|
|
31
|
+
type: Object
|
|
21
32
|
}
|
|
22
33
|
},
|
|
23
34
|
setup(props) {
|
|
@@ -40,7 +51,7 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
40
51
|
initialIndex.value = 0;
|
|
41
52
|
uuid.value = qxUtil.createUUID();
|
|
42
53
|
if (Array.isArray(props.messages)) {
|
|
43
|
-
items.value = props.messages.filter((item) => item.title || item.message).map((item) => {
|
|
54
|
+
items.value = props.messages.filter((item) => item.title || item.message || item.layoutPanel && item.data).map((item) => {
|
|
44
55
|
return {
|
|
45
56
|
...item
|
|
46
57
|
};
|
|
@@ -68,6 +79,7 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
68
79
|
});
|
|
69
80
|
});
|
|
70
81
|
const handleAlertClose = (index) => {
|
|
82
|
+
var _a;
|
|
71
83
|
items.value[index].hidden = true;
|
|
72
84
|
const isHiddenCarouse = items.value.every((item2) => item2.hidden);
|
|
73
85
|
if (isHiddenCarouse) {
|
|
@@ -75,9 +87,7 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
75
87
|
}
|
|
76
88
|
uuid.value = qxUtil.createUUID();
|
|
77
89
|
const item = items.value[index];
|
|
78
|
-
|
|
79
|
-
localStorage.setItem(item.key, "1");
|
|
80
|
-
}
|
|
90
|
+
(_a = props.controller) == null ? void 0 : _a.setMsgRemoveModeStorage(item);
|
|
81
91
|
};
|
|
82
92
|
const handleChange = (index) => {
|
|
83
93
|
initialIndex.value = index;
|
|
@@ -96,6 +106,14 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
96
106
|
};
|
|
97
107
|
},
|
|
98
108
|
render() {
|
|
109
|
+
const renderLayoutPanel = (item) => {
|
|
110
|
+
return vue.createVNode(vue.resolveComponent("iBizControlShell"), {
|
|
111
|
+
"data": item.data,
|
|
112
|
+
"modelData": item.layoutPanel,
|
|
113
|
+
"context": this.context,
|
|
114
|
+
"params": this.params
|
|
115
|
+
}, null);
|
|
116
|
+
};
|
|
99
117
|
const renderScrollMessages = () => {
|
|
100
118
|
let _slot;
|
|
101
119
|
return vue.createVNode("div", {
|
|
@@ -112,24 +130,31 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
112
130
|
if (item.hidden) {
|
|
113
131
|
return;
|
|
114
132
|
}
|
|
133
|
+
const isRenderDefault = item.message || item.layoutPanel && item.data;
|
|
115
134
|
return vue.createVNode(vue.resolveComponent("el-carousel-item"), null, {
|
|
116
|
-
default: () =>
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
135
|
+
default: () => {
|
|
136
|
+
var _a;
|
|
137
|
+
return [vue.createVNode(vue.resolveComponent("el-alert"), {
|
|
138
|
+
"type": this.getType(item.messageType),
|
|
139
|
+
"class": [this.ns.b("carousel-alert"), this.ns.bm("carousel-alert", item.title && isRenderDefault ? "" : "single"), (_a = item.sysCss) == null ? void 0 : _a.cssName],
|
|
140
|
+
"closable": item.removeMode !== 0,
|
|
141
|
+
"onClose": () => this.handleAlertClose(i)
|
|
142
|
+
}, {
|
|
143
|
+
title: () => {
|
|
144
|
+
return vue.createVNode("div", {
|
|
145
|
+
"class": this.ns.be("carousel-alert", "title")
|
|
146
|
+
}, [item.title || ""]);
|
|
147
|
+
},
|
|
148
|
+
default: () => {
|
|
149
|
+
if (item.layoutPanel && item.data) {
|
|
150
|
+
return renderLayoutPanel(item);
|
|
151
|
+
}
|
|
152
|
+
return vue.createVNode("div", {
|
|
153
|
+
"class": this.ns.be("carousel-alert", "message")
|
|
154
|
+
}, [item.message || ""]);
|
|
155
|
+
}
|
|
156
|
+
})];
|
|
157
|
+
}
|
|
133
158
|
});
|
|
134
159
|
})) ? _slot : {
|
|
135
160
|
default: () => [_slot]
|
|
@@ -139,9 +164,11 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
139
164
|
return vue.createVNode("div", {
|
|
140
165
|
"class": [this.ns.b(), this.isHiddenContainer && this.ns.m("hidden")]
|
|
141
166
|
}, [this.items.map((item, i) => {
|
|
167
|
+
var _a;
|
|
168
|
+
const isRenderDefault = item.message || item.layoutPanel && item.data;
|
|
142
169
|
return vue.createVNode(vue.resolveComponent("el-alert"), {
|
|
143
170
|
"type": this.getType(item.messageType),
|
|
144
|
-
"class": [this.ns.b("alert"), this.ns.bm("alert", item.title &&
|
|
171
|
+
"class": [this.ns.b("alert"), this.ns.bm("alert", item.title && isRenderDefault ? "" : "single"), this.ns.bm("alert", !item.title && isRenderDefault ? "single-message" : ""), (_a = item.sysCss) == null ? void 0 : _a.cssName],
|
|
145
172
|
"closable": item.removeMode !== 0,
|
|
146
173
|
"onClose": () => this.handleAlertClose(i)
|
|
147
174
|
}, {
|
|
@@ -151,6 +178,9 @@ const ViewMessage = /* @__PURE__ */ vue.defineComponent({
|
|
|
151
178
|
}, [item.title || ""]);
|
|
152
179
|
},
|
|
153
180
|
default: () => {
|
|
181
|
+
if (item.layoutPanel && item.data) {
|
|
182
|
+
return renderLayoutPanel(item);
|
|
183
|
+
}
|
|
154
184
|
return vue.createVNode("div", {
|
|
155
185
|
"class": this.ns.be("alert", "message")
|
|
156
186
|
}, [item.message || ""]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ibiz-view-message{--ibiz-view-message-border--warning:1px solid var(--ibiz-color-warning-active);--ibiz-view-message-border--error:1px solid var(--ibiz-color-danger-active);--ibiz-view-message-border--info:1px solid var(--ibiz-color-info-active);padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none)}.ibiz-view-message--hidden{display:none}.ibiz-view-message .el-alert--warning.is-light{border:var(--ibiz-view-message-border--warning)}.ibiz-view-message .el-alert--error.is-light{border:var(--ibiz-view-message-border--error)}.ibiz-view-message .el-alert--info.is-light{border:var(--ibiz-view-message-border--info)}.ibiz-view-message-alert{margin-bottom:var(--ibiz-spacing-tight)}.ibiz-view-message-alert:last-child{margin-bottom:var(--ibiz-spacing-none)}.ibiz-view-message-alert--single .el-alert__description{margin:0}.ibiz-view-message-alert--single-message .el-alert__close-btn{top:calc(var(--ibiz-spacing-tight) + var(--ibiz-spacing-super-tight))}.ibiz-view-message-alert__title{line-height:calc(var(--ibiz-spacing-base-loose) - var(--ibiz-spacing-super-tight))}.ibiz-view-message-alert__message{line-height:var(--ibiz-spacing-base)}.ibiz-view-message-carousel-alert .el-alert__content{overflow:hidden}.ibiz-view-message-carousel-
|
|
1
|
+
.ibiz-view-message{--ibiz-view-message-border--warning:1px solid var(--ibiz-color-warning-active);--ibiz-view-message-border--error:1px solid var(--ibiz-color-danger-active);--ibiz-view-message-border--info:1px solid var(--ibiz-color-info-active);--ibiz-view-message-carousel-alert-height:64px;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none)}.ibiz-view-message--hidden{display:none}.ibiz-view-message--alert .el-message-box__status.el-icon{display:none}.ibiz-view-message--alert .el-message-box__status+.el-message-box__message{padding-left:var(--ibiz-spacing-none)}.ibiz-view-message .el-alert--warning.is-light{border:var(--ibiz-view-message-border--warning)}.ibiz-view-message .el-alert--error.is-light{border:var(--ibiz-view-message-border--error)}.ibiz-view-message .el-alert--info.is-light{border:var(--ibiz-view-message-border--info)}.ibiz-view-message-alert{margin-bottom:var(--ibiz-spacing-tight)}.ibiz-view-message-alert:last-child{margin-bottom:var(--ibiz-spacing-none)}.ibiz-view-message-alert--single .el-alert__description{margin:0}.ibiz-view-message-alert--single-message .el-alert__close-btn{top:calc(var(--ibiz-spacing-tight) + var(--ibiz-spacing-super-tight))}.ibiz-view-message-alert__title{line-height:calc(var(--ibiz-spacing-base-loose) - var(--ibiz-spacing-super-tight))}.ibiz-view-message-alert__message{line-height:var(--ibiz-spacing-base)}.ibiz-view-message-carousel-alert{height:var(--ibiz-view-message-carousel-alert-height)}.ibiz-view-message-carousel-alert .el-alert__content{overflow:hidden}.ibiz-view-message-carousel-alert--single .el-alert__description{margin:0}.ibiz-view-message-carousel-alert__title{overflow:hidden;line-height:calc(var(--ibiz-spacing-base-loose) - var(--ibiz-spacing-super-tight));text-overflow:ellipsis;white-space:nowrap}.ibiz-view-message-carousel-alert__message{overflow:hidden;line-height:var(--ibiz-spacing-base);text-overflow:ellipsis;white-space:nowrap}
|
|
@@ -33,11 +33,15 @@ function getMenus(items) {
|
|
|
33
33
|
function renderByProvider(itemId, c) {
|
|
34
34
|
const itemModel = c.allAppMenuItems.find((item) => item.id === itemId);
|
|
35
35
|
if (!itemModel) {
|
|
36
|
-
throw new core.RuntimeError("
|
|
36
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.menu.noFoundModel", {
|
|
37
|
+
menuKey: itemId
|
|
38
|
+
}));
|
|
37
39
|
}
|
|
38
40
|
const provider = c.itemProviders[itemId];
|
|
39
41
|
if (!provider.renderText) {
|
|
40
|
-
throw new core.RuntimeError(""
|
|
42
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.menu.noFoundFunction", {
|
|
43
|
+
menuKey: itemId
|
|
44
|
+
}));
|
|
41
45
|
}
|
|
42
46
|
return provider.renderText(itemModel, c);
|
|
43
47
|
}
|
|
@@ -135,7 +135,7 @@ const CalendarControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
135
135
|
reference: () => {
|
|
136
136
|
return vue.createVNode("span", {
|
|
137
137
|
"class": this.ns.b("more")
|
|
138
|
-
}, ["+".concat(items.length - 1, "
|
|
138
|
+
}, ["+".concat(items.length - 1, " ").concat(ibiz.i18n.t("app.more"), "...")]);
|
|
139
139
|
},
|
|
140
140
|
default: () => {
|
|
141
141
|
return items.map((item) => {
|
|
@@ -112,7 +112,7 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
112
112
|
"class": this.ns.b("chart-container")
|
|
113
113
|
}, [vue.createVNode(vue.resolveComponent("el-empty"), {
|
|
114
114
|
"class": [this.ns.e("empty"), this.ns.is("no-data", this.c.state.items.length === 0)],
|
|
115
|
-
"description": "
|
|
115
|
+
"description": ibiz.i18n.t("control.common.currentNoData")
|
|
116
116
|
}, null), vue.createVNode("div", {
|
|
117
117
|
"class": [this.ns.e("chart-grid"), this.ns.is("no-data", this.c.state.items.length === 0), this.ns.is("show-grid", this.c.state.showGrid), {
|
|
118
118
|
[this.ns.em("chart-grid", this.c.state.gridPosition)]: this.c.state.showGrid
|
|
@@ -124,7 +124,7 @@ const CustomDashboardContainer = /* @__PURE__ */ vue.defineComponent({
|
|
|
124
124
|
"class": this.ns.b("build-btn")
|
|
125
125
|
}, [this.showTypeDir ? vue.createVNode("div", null, [vue.createVNode(vue.resolveComponent("el-button"), {
|
|
126
126
|
"class": this.ns.b("deisgn-btn"),
|
|
127
|
-
"title": "
|
|
127
|
+
"title": ibiz.i18n.t("control.dashboard.customDashboardContainer.portalCustomPrompt"),
|
|
128
128
|
"onClick": this.openDesign
|
|
129
129
|
}, {
|
|
130
130
|
default: () => [vue.createVNode("ion-icon", {
|
|
@@ -59,7 +59,7 @@ const FormMDCtrlForm = /* @__PURE__ */ vue.defineComponent({
|
|
|
59
59
|
data
|
|
60
60
|
}) => {
|
|
61
61
|
if (!formProvider) {
|
|
62
|
-
return vue.createVNode("div", null, [ibiz.i18n.t("control.form.formMDctrlForm.
|
|
62
|
+
return vue.createVNode("div", null, [ibiz.i18n.t("control.form.formMDctrlForm.noFindProvider")]);
|
|
63
63
|
}
|
|
64
64
|
const formComponent = vue.h(vue.resolveComponent(formProvider.component), {
|
|
65
65
|
class: this.ns.be("item", "form"),
|
package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.cjs
CHANGED
|
@@ -51,7 +51,9 @@ const FormMDCtrlRepeater = /* @__PURE__ */ vue.defineComponent({
|
|
|
51
51
|
default:
|
|
52
52
|
return vue.createVNode("div", {
|
|
53
53
|
"class": classNames
|
|
54
|
-
}, [
|
|
54
|
+
}, [ibiz.i18n.t("control.form.formMDctrlRepeater.noSupportStyle", {
|
|
55
|
+
repeaterStyle: this.controller.repeaterStyle
|
|
56
|
+
})]);
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
});
|