@ibiz-template/vue3-components 0.7.10 → 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-my1qbty8.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/wang-editor/ai/ai-modules.mjs +1 -1
- package/es/editor/html/wang-editor/wang-editor.mjs +11 -5
- 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/wang-editor/ai/ai-modules.cjs +1 -1
- package/lib/editor/html/wang-editor/wang-editor.cjs +11 -5
- 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-GoU343c8.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-Vch7U079.js +0 -1
|
@@ -15,7 +15,7 @@ function useElTreeUtil(treeRef, c) {
|
|
|
15
15
|
const getTreeInstance = () => {
|
|
16
16
|
const elTree = treeRef.value;
|
|
17
17
|
if (!elTree) {
|
|
18
|
-
throw new core.RuntimeError("
|
|
18
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.tree.noFoundInstance"));
|
|
19
19
|
}
|
|
20
20
|
return elTree;
|
|
21
21
|
};
|
|
@@ -68,7 +68,9 @@ function formatNodeDropType(dropType) {
|
|
|
68
68
|
case "after":
|
|
69
69
|
return "next";
|
|
70
70
|
default:
|
|
71
|
-
throw new core.RuntimeError(
|
|
71
|
+
throw new core.RuntimeError(
|
|
72
|
+
ibiz.i18n.t("control.tree.noSupported", { dropType })
|
|
73
|
+
);
|
|
72
74
|
}
|
|
73
75
|
}
|
|
74
76
|
|
|
@@ -351,7 +351,9 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
351
351
|
const updateNodeExpand = (data, expanded) => {
|
|
352
352
|
const nodeData = elTreeUtil.findNodeData(data._uuid, c);
|
|
353
353
|
if (!nodeData) {
|
|
354
|
-
throw new core.RuntimeError(
|
|
354
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.common.noFoundNode", {
|
|
355
|
+
id: data._uuid
|
|
356
|
+
}));
|
|
355
357
|
}
|
|
356
358
|
c.onExpandChange(nodeData, expanded);
|
|
357
359
|
};
|
|
@@ -155,7 +155,9 @@ const TreeGridControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
155
155
|
"class": ns.b("batch-toolbar-content")
|
|
156
156
|
}, [vue.createVNode("div", {
|
|
157
157
|
"class": ns.b("batch-toolbar-text")
|
|
158
|
-
}, [
|
|
158
|
+
}, [ibiz.i18n.t("control.common.itemsSelected", {
|
|
159
|
+
length: c.state.selectedData.length
|
|
160
|
+
})]), vue.createVNode("div", {
|
|
159
161
|
"class": ns.b("batch-toolbar-separator")
|
|
160
162
|
}, [vue.createTextVNode("|")]), vue.createVNode(vue.resolveComponent("iBizToolbarControl"), {
|
|
161
163
|
"modelData": batchToolbar,
|
|
@@ -45,7 +45,9 @@ const TreeGridExEditColumn = /* @__PURE__ */ vue.defineComponent({
|
|
|
45
45
|
case "all":
|
|
46
46
|
return allEdit.useAllEdit(props, componentRef);
|
|
47
47
|
default:
|
|
48
|
-
throw new core.RuntimeError(
|
|
48
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.common.noSupportItem", {
|
|
49
|
+
name: ibiz.config.grid.editShowMode
|
|
50
|
+
}));
|
|
49
51
|
}
|
|
50
52
|
};
|
|
51
53
|
const {
|
|
@@ -110,7 +110,9 @@ const TreeGridExControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
110
110
|
if (row && row.showRowEdit !== true) {
|
|
111
111
|
await c.switchRowEdit(row, true);
|
|
112
112
|
} else {
|
|
113
|
-
throw new core.RuntimeError(
|
|
113
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.treeGridEx.noFoundMessage", {
|
|
114
|
+
id: data.id
|
|
115
|
+
}));
|
|
114
116
|
}
|
|
115
117
|
} else {
|
|
116
118
|
c.onTreeNodeClick(nodeData, event);
|
|
@@ -153,7 +155,9 @@ const TreeGridExControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
153
155
|
const onExpandChange = (row, expanded) => {
|
|
154
156
|
const nodeData = c.getNodeData(row._uuid);
|
|
155
157
|
if (!nodeData) {
|
|
156
|
-
throw new core.RuntimeError(
|
|
158
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.common.noFoundNode", {
|
|
159
|
+
id: row._uuid
|
|
160
|
+
}));
|
|
157
161
|
}
|
|
158
162
|
c.onExpandChange(nodeData, expanded);
|
|
159
163
|
};
|
|
@@ -13,7 +13,7 @@ function useRowEditPopover(tableRef, c) {
|
|
|
13
13
|
const popStyle = vue.reactive({});
|
|
14
14
|
const findTrEl = (row) => {
|
|
15
15
|
if (!tableRef.value) {
|
|
16
|
-
throw new core.RuntimeError("
|
|
16
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.common.citeErrMessage"));
|
|
17
17
|
}
|
|
18
18
|
const tableEl = tableRef.value.$el;
|
|
19
19
|
let selector = ".el-table__row";
|
|
@@ -22,7 +22,7 @@ function useRowEditPopover(tableRef, c) {
|
|
|
22
22
|
}
|
|
23
23
|
const trEl = tableEl.querySelector(selector);
|
|
24
24
|
if (!trEl) {
|
|
25
|
-
throw new core.RuntimeError("
|
|
25
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.common.noDomErrMessage"));
|
|
26
26
|
}
|
|
27
27
|
return trEl;
|
|
28
28
|
};
|
|
@@ -31,7 +31,7 @@ function useRowEditPopover(tableRef, c) {
|
|
|
31
31
|
const trEl = findTrEl(row);
|
|
32
32
|
showPlaceholder.value = ((_a = trEl.parentNode) == null ? void 0 : _a.lastElementChild) === trEl;
|
|
33
33
|
if (!popInstance) {
|
|
34
|
-
throw new core.RuntimeError("
|
|
34
|
+
throw new core.RuntimeError(ibiz.i18n.t("control.common.noPopErrMessage"));
|
|
35
35
|
}
|
|
36
36
|
const popEl = popInstance.$el;
|
|
37
37
|
const {
|
|
@@ -73,19 +73,19 @@ const WizardPanelControl = /* @__PURE__ */ vue.defineComponent({
|
|
|
73
73
|
this.c.onPrevClick();
|
|
74
74
|
}
|
|
75
75
|
}, {
|
|
76
|
-
default: () => [dewizard.prevCaption ? dewizard.prevCaption : "
|
|
76
|
+
default: () => [dewizard.prevCaption ? dewizard.prevCaption : ibiz.i18n.t("control.common.retreat")]
|
|
77
77
|
}), ((_c = buttonsState["".concat(activeFormTag, "@NEXT")]) == null ? void 0 : _c.visible) && vue.createVNode(vue.resolveComponent("el-button"), {
|
|
78
78
|
"onClick": () => {
|
|
79
79
|
this.c.onNextClick();
|
|
80
80
|
}
|
|
81
81
|
}, {
|
|
82
|
-
default: () => [dewizard.nextCaption ? dewizard.nextCaption : "
|
|
82
|
+
default: () => [dewizard.nextCaption ? dewizard.nextCaption : ibiz.i18n.t("control.common.forward")]
|
|
83
83
|
}), ((_d = buttonsState["".concat(activeFormTag, "@FINISH")]) == null ? void 0 : _d.visible) && vue.createVNode(vue.resolveComponent("el-button"), {
|
|
84
84
|
"onClick": () => {
|
|
85
85
|
this.c.onFinishClick();
|
|
86
86
|
}
|
|
87
87
|
}, {
|
|
88
|
-
default: () => [dewizard.finishCaption ? dewizard.finishCaption : "
|
|
88
|
+
default: () => [dewizard.finishCaption ? dewizard.finishCaption : ibiz.i18n.t("app.complete")]
|
|
89
89
|
})]);
|
|
90
90
|
const {
|
|
91
91
|
dewizardSteps
|
|
@@ -302,7 +302,8 @@ const IBizMPicker = /* @__PURE__ */ vue.defineComponent({
|
|
|
302
302
|
"onFocus": this.onFocus,
|
|
303
303
|
"onBlur": this.onBlur,
|
|
304
304
|
"onKeyup": this.handleKeyUp,
|
|
305
|
-
"fit-input-width": isEllipsis
|
|
305
|
+
"fit-input-width": isEllipsis,
|
|
306
|
+
"remote-show-suffix": this.c.model.showTrigger
|
|
306
307
|
}, this.$attrs), _isSlot(_slot = this.items.map((item) => {
|
|
307
308
|
return vue.createVNode(vue.resolveComponent("el-option"), {
|
|
308
309
|
"title": isEllipsis ? item[this.c.textName] : "",
|
|
@@ -10,7 +10,7 @@ var __publicField = (obj, key, value) => {
|
|
|
10
10
|
class AIMenu {
|
|
11
11
|
constructor() {
|
|
12
12
|
__publicField(this, "title", "AI");
|
|
13
|
-
__publicField(this, "iconSvg", '<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <text x="0" y="
|
|
13
|
+
__publicField(this, "iconSvg", '<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <text x="0" y="13" font-size="16" fill="black">AI</text></svg>');
|
|
14
14
|
__publicField(this, "tag", "button");
|
|
15
15
|
}
|
|
16
16
|
// 菜单是否需要激活(如选中加粗文本,“加粗”菜单会激活),用不到则返回 false
|
|
@@ -73,12 +73,14 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
|
|
|
73
73
|
return url;
|
|
74
74
|
};
|
|
75
75
|
const toolbarConfig = {
|
|
76
|
-
excludeKeys: ["group-video"]
|
|
77
|
-
|
|
76
|
+
excludeKeys: ["group-video"]
|
|
77
|
+
};
|
|
78
|
+
if (c.chatCompletion) {
|
|
79
|
+
toolbarConfig.insertKeys = {
|
|
78
80
|
index: 60,
|
|
79
81
|
keys: ["|", "aichart"]
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
82
84
|
const editorConfig = {
|
|
83
85
|
placeholder: c.placeHolder,
|
|
84
86
|
readOnly: hasEnableEdit.value ? readonlyState.value : props.readonly,
|
|
@@ -205,7 +207,11 @@ const IBizHtml = /* @__PURE__ */ vue.defineComponent({
|
|
|
205
207
|
},
|
|
206
208
|
action: (action, message) => {
|
|
207
209
|
if (action === "backfill") {
|
|
208
|
-
|
|
210
|
+
if (hasEnableEdit.value) {
|
|
211
|
+
valueHtml.value = message.content;
|
|
212
|
+
} else {
|
|
213
|
+
emit("change", message.content);
|
|
214
|
+
}
|
|
209
215
|
}
|
|
210
216
|
}
|
|
211
217
|
});
|
package/lib/index.cjs
CHANGED
|
@@ -122,6 +122,7 @@ var openViewUtil = require('./util/open-view-util/open-view-util.cjs');
|
|
|
122
122
|
var overlayController = require('./util/overlay-controller/overlay-controller.cjs');
|
|
123
123
|
var usePagination = require('./util/pagination/use-pagination.cjs');
|
|
124
124
|
var noticeUtil = require('./util/notice-util/notice-util.cjs');
|
|
125
|
+
var renderUtil = require('./util/render-util/render-util.cjs');
|
|
125
126
|
var authGuard = require('./web-app/guard/auth-guard/auth-guard.cjs');
|
|
126
127
|
var main = require('./web-app/main.cjs');
|
|
127
128
|
var index$17 = require('./web-app/router/index.cjs');
|
|
@@ -250,6 +251,7 @@ exports.OpenViewUtil = openViewUtil.OpenViewUtil;
|
|
|
250
251
|
exports.OverlayController = overlayController.OverlayController;
|
|
251
252
|
exports.usePagination = usePagination.usePagination;
|
|
252
253
|
exports.NoticeUtil = noticeUtil.NoticeUtil;
|
|
254
|
+
exports.RenderUtil = renderUtil.RenderUtil;
|
|
253
255
|
exports.AuthGuard = authGuard.AuthGuard;
|
|
254
256
|
exports.runApp = main.runApp;
|
|
255
257
|
exports.AppRouter = index$17.AppRouter;
|
package/lib/locale/en/index.cjs
CHANGED
|
@@ -17,32 +17,55 @@ var index = {
|
|
|
17
17
|
noSupport: "Not supported currently",
|
|
18
18
|
add: "Add",
|
|
19
19
|
delete: "Delete",
|
|
20
|
-
save: "Save"
|
|
20
|
+
save: "Save",
|
|
21
|
+
edit: "Edit",
|
|
22
|
+
complete: "Complete",
|
|
23
|
+
more: "More"
|
|
21
24
|
},
|
|
22
25
|
// 视图
|
|
23
26
|
view: {},
|
|
24
27
|
// 部件
|
|
25
28
|
control: {
|
|
29
|
+
common: {
|
|
30
|
+
determine: "Determine",
|
|
31
|
+
retreat: "Retreat",
|
|
32
|
+
forward: "Forward",
|
|
33
|
+
noSupportItem: "{name} is currently not supported",
|
|
34
|
+
noFoundNode: "Node with _uuid {id} not found",
|
|
35
|
+
itemsSelected: "{length} items selected",
|
|
36
|
+
citeErrMessage: "Unable to find table component reference",
|
|
37
|
+
noDomErrMessage: "Unable to find corresponding table row dom element",
|
|
38
|
+
noPopErrMessage: "Unable to obtain an instance of the pop component",
|
|
39
|
+
currentNoData: "Current no data",
|
|
40
|
+
updateSuccess: "Update success",
|
|
41
|
+
newSuccCreated: "New successfully created",
|
|
42
|
+
deleteSuccess: "Delete successful"
|
|
43
|
+
},
|
|
26
44
|
menu: {
|
|
27
|
-
noSupportAlign: "The menu direction {align} is not supported temporarily"
|
|
45
|
+
noSupportAlign: "The menu direction {align} is not supported temporarily",
|
|
46
|
+
noFoundModel: "no find the menu item model {menuKey}",
|
|
47
|
+
noFoundFunction: "The adapter for {menuKey} does not have a renderText method"
|
|
28
48
|
},
|
|
29
49
|
calendar: {
|
|
30
|
-
lastYear: "Last
|
|
31
|
-
lastMonth: "Last
|
|
50
|
+
lastYear: "Last year",
|
|
51
|
+
lastMonth: "Last month",
|
|
32
52
|
today: "Today",
|
|
33
|
-
nextMonth: "Next
|
|
34
|
-
nextYear: "Next
|
|
53
|
+
nextMonth: "Next month",
|
|
54
|
+
nextYear: "Next year"
|
|
35
55
|
},
|
|
36
56
|
chart: {
|
|
37
|
-
chartPlaceholder: "
|
|
57
|
+
chartPlaceholder: "Chart"
|
|
38
58
|
},
|
|
39
59
|
dashboard: {
|
|
60
|
+
customDashboardContainer: {
|
|
61
|
+
portalCustomPrompt: "Portal customization"
|
|
62
|
+
},
|
|
40
63
|
dashboardDesign: {
|
|
41
64
|
global: "Global level",
|
|
42
65
|
add: "Add",
|
|
43
66
|
customPortal: "Customize portal",
|
|
44
67
|
colNum: "Column number",
|
|
45
|
-
cellHeight: "Cell
|
|
68
|
+
cellHeight: "Cell height",
|
|
46
69
|
restoreDefault: "Restore default",
|
|
47
70
|
save: "Save"
|
|
48
71
|
}
|
|
@@ -57,8 +80,84 @@ var index = {
|
|
|
57
80
|
putAway: "Put Away"
|
|
58
81
|
},
|
|
59
82
|
formMDctrlForm: {
|
|
60
|
-
|
|
83
|
+
noFindProvider: "Provider not found for form"
|
|
84
|
+
},
|
|
85
|
+
formMDctrlRepeater: {
|
|
86
|
+
noSupportStyle: "Repeater style {repeaterStyle} is currently not supported"
|
|
87
|
+
},
|
|
88
|
+
repeaterGrid: {
|
|
89
|
+
promptInformation: "Do you want to delete the selected item",
|
|
90
|
+
absentOrLoad: "Not present or loading"
|
|
91
|
+
},
|
|
92
|
+
repeaterSingleForm: {
|
|
93
|
+
errorMessage: "No repeatedForm"
|
|
94
|
+
},
|
|
95
|
+
mdCtrlContainer: {
|
|
96
|
+
promptInformation: "Do you want to delete the selected item",
|
|
97
|
+
noSlot: "Item slot not provided"
|
|
98
|
+
},
|
|
99
|
+
formMDctrl: {
|
|
100
|
+
errorMessage: "The content type is currently not supported as {contentType}"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
gantt: {
|
|
104
|
+
complete: "Completed amount",
|
|
105
|
+
total: "Total",
|
|
106
|
+
deadline: "Deadline"
|
|
107
|
+
},
|
|
108
|
+
kanban: {
|
|
109
|
+
selectAll: "Select all",
|
|
110
|
+
selectedDataCount: "Selected <span>{length}</span> pieces of data",
|
|
111
|
+
newPrompt: "Newly build",
|
|
112
|
+
natchOperation: "Batch operation"
|
|
113
|
+
},
|
|
114
|
+
reportPanel: {
|
|
115
|
+
unrealized: "Unrealized"
|
|
116
|
+
},
|
|
117
|
+
searchBar: {
|
|
118
|
+
saveGroup: "Save group",
|
|
119
|
+
filter: "Filter",
|
|
120
|
+
filterTree: {
|
|
121
|
+
addItem: "Add item",
|
|
122
|
+
search: "Search",
|
|
123
|
+
reset: "Reset"
|
|
124
|
+
},
|
|
125
|
+
searchGroups: {
|
|
126
|
+
groupValueRule: "Group name cannot be empty",
|
|
127
|
+
errorMessage: "Group name cannot be duplicate\uFF01",
|
|
128
|
+
noEditPrompt: "The configured grouping is not editable",
|
|
129
|
+
savePrompt: "Please save the group first",
|
|
130
|
+
delTitle: "Confirm delete",
|
|
131
|
+
confirmDelPrompt: "Are you sure to delete group <span>{itemName}</span\uFF1F",
|
|
132
|
+
unrecoverablePrompt: "Cannot recover after group deletion",
|
|
133
|
+
newGroup: "New group",
|
|
134
|
+
groupManage: "Group manage",
|
|
135
|
+
groupName: "Group Name",
|
|
136
|
+
enterPrompt: "Please enter the group name",
|
|
137
|
+
editGroup: "Edit grouping",
|
|
138
|
+
manageTips: "Tips\uFF1AManage grouping of search bars",
|
|
139
|
+
name: "Name",
|
|
140
|
+
show: "Show",
|
|
141
|
+
operate: "Operate",
|
|
142
|
+
dialogCancel: "Cancel",
|
|
143
|
+
dialogDetermine: "Determine"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
toolbar: {
|
|
147
|
+
exportExcel: {
|
|
148
|
+
exportAll: "Export all(Export up to 1000 rows)",
|
|
149
|
+
expCurrentPage: "Export current page",
|
|
150
|
+
expCurrentSelect: "Export the current selection",
|
|
151
|
+
page: "Page",
|
|
152
|
+
export: "Export"
|
|
61
153
|
}
|
|
154
|
+
},
|
|
155
|
+
tree: {
|
|
156
|
+
noFoundInstance: "Unable to find el tree instance object",
|
|
157
|
+
noSupported: "Not currently supported dropType:{dropType}"
|
|
158
|
+
},
|
|
159
|
+
treeGridEx: {
|
|
160
|
+
noFoundMessage: "Unable to find row data object for {id}"
|
|
62
161
|
}
|
|
63
162
|
},
|
|
64
163
|
// 组件
|
|
@@ -83,7 +182,8 @@ var index = {
|
|
|
83
182
|
saveMode: "Import Mode Save",
|
|
84
183
|
reUpload: "Re upload files",
|
|
85
184
|
fileUpload: "File upload",
|
|
86
|
-
import: "Import"
|
|
185
|
+
import: "Import",
|
|
186
|
+
selectProperties: "Please select column import properties!"
|
|
87
187
|
},
|
|
88
188
|
dataImport2Select: {
|
|
89
189
|
selectMode: "Select import mode",
|
|
@@ -92,15 +192,23 @@ var index = {
|
|
|
92
192
|
dataImport2Table: {
|
|
93
193
|
selectAttribute: "Select the import attribute corresponding to the current column"
|
|
94
194
|
},
|
|
195
|
+
doingNotice: {
|
|
196
|
+
jobInProgress: "There are <span class={class}>{num}</span> backend jobs currently executing, please wait"
|
|
197
|
+
},
|
|
95
198
|
extendActionTimeLine: {
|
|
96
|
-
processTime: "
|
|
97
|
-
comments: "Approval opinions"
|
|
199
|
+
processTime: "Processing time",
|
|
200
|
+
comments: "Approval opinions",
|
|
201
|
+
reject: "Reject"
|
|
202
|
+
},
|
|
203
|
+
mapChart: {
|
|
204
|
+
high: "High",
|
|
205
|
+
low: "Low"
|
|
98
206
|
},
|
|
99
207
|
pagination: {
|
|
100
208
|
display: "Display",
|
|
101
|
-
piece: "
|
|
102
|
-
total: "
|
|
103
|
-
pieceData: "
|
|
209
|
+
piece: "Piece",
|
|
210
|
+
total: "Total",
|
|
211
|
+
pieceData: "Piece of data"
|
|
104
212
|
},
|
|
105
213
|
rawItem: {
|
|
106
214
|
errorConfig: "{type} type custom parameter configuration error",
|
|
@@ -17,14 +17,34 @@ var index = {
|
|
|
17
17
|
noSupport: "\u6682\u672A\u652F\u6301",
|
|
18
18
|
add: "\u6DFB\u52A0",
|
|
19
19
|
delete: "\u5220\u9664",
|
|
20
|
-
save: "\u4FDD\u5B58"
|
|
20
|
+
save: "\u4FDD\u5B58",
|
|
21
|
+
edit: "\u7F16\u8F91",
|
|
22
|
+
complete: "\u5B8C\u6210",
|
|
23
|
+
more: "\u66F4\u591A"
|
|
21
24
|
},
|
|
22
25
|
// 视图
|
|
23
26
|
view: {},
|
|
24
27
|
// 部件
|
|
25
28
|
control: {
|
|
29
|
+
common: {
|
|
30
|
+
determine: "\u786E\u5B9A",
|
|
31
|
+
retreat: "\u540E\u9000",
|
|
32
|
+
forward: "\u524D\u8FDB",
|
|
33
|
+
noSupportItem: "{name}\u6682\u672A\u652F\u6301",
|
|
34
|
+
noFoundNode: "\u6CA1\u6709\u627E\u5230_uuid\u4E3A{id}\u7684\u8282\u70B9",
|
|
35
|
+
itemsSelected: "\u5DF2\u9009\u4E2D{length}\u9879",
|
|
36
|
+
citeErrMessage: "\u627E\u4E0D\u5230\u8868\u683C\u7EC4\u4EF6\u5F15\u7528",
|
|
37
|
+
noDomErrMessage: "\u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u8868\u683C\u884Cdom\u5143\u7D20",
|
|
38
|
+
noPopErrMessage: "\u62FF\u4E0D\u5230pop\u7EC4\u4EF6\u7684\u5B9E\u4F8B",
|
|
39
|
+
currentNoData: "\u6682\u65E0\u6570\u636E",
|
|
40
|
+
updateSuccess: "\u66F4\u65B0\u6210\u529F",
|
|
41
|
+
newSuccCreated: "\u65B0\u5EFA\u6210\u529F",
|
|
42
|
+
deleteSuccess: "\u5220\u9664\u6210\u529F"
|
|
43
|
+
},
|
|
26
44
|
menu: {
|
|
27
|
-
noSupportAlign: "\u6682\u672A\u652F\u6301\u83DC\u5355\u65B9\u5411\u4E3A {align}"
|
|
45
|
+
noSupportAlign: "\u6682\u672A\u652F\u6301\u83DC\u5355\u65B9\u5411\u4E3A {align}",
|
|
46
|
+
noFoundModel: "\u6CA1\u627E\u5230\u83DC\u5355\u9879\u6A21\u578B{menuKey}",
|
|
47
|
+
noFoundFunction: "{menuKey}\u7684\u9002\u914D\u5668\u6CA1\u6709renderText\u65B9\u6CD5"
|
|
28
48
|
},
|
|
29
49
|
calendar: {
|
|
30
50
|
lastYear: "\u53BB\u5E74",
|
|
@@ -37,6 +57,9 @@ var index = {
|
|
|
37
57
|
chartPlaceholder: "\u56FE\u8868"
|
|
38
58
|
},
|
|
39
59
|
dashboard: {
|
|
60
|
+
customDashboardContainer: {
|
|
61
|
+
portalCustomPrompt: "\u95E8\u6237\u5B9A\u5236"
|
|
62
|
+
},
|
|
40
63
|
dashboardDesign: {
|
|
41
64
|
global: "\u5168\u5C40",
|
|
42
65
|
add: "\u6DFB\u52A0",
|
|
@@ -57,8 +80,84 @@ var index = {
|
|
|
57
80
|
putAway: "\u6536\u8D77"
|
|
58
81
|
},
|
|
59
82
|
formMDctrlForm: {
|
|
60
|
-
|
|
83
|
+
noFindProvider: "\u672A\u627E\u5230\u8868\u5355\u7684\u9002\u914D\u5668"
|
|
84
|
+
},
|
|
85
|
+
formMDctrlRepeater: {
|
|
86
|
+
noSupportStyle: "\u6682\u672A\u652F\u6301\u91CD\u590D\u5668\u6837\u5F0F{repeaterStyle}"
|
|
87
|
+
},
|
|
88
|
+
repeaterGrid: {
|
|
89
|
+
promptInformation: "\u662F\u5426\u5220\u9664\u9009\u4E2D\u9879",
|
|
90
|
+
absentOrLoad: "\u4E0D\u5B58\u5728\u6216\u52A0\u8F7D\u4E2D"
|
|
91
|
+
},
|
|
92
|
+
repeaterSingleForm: {
|
|
93
|
+
errorMessage: "\u6CA1\u6709repeatedForm"
|
|
94
|
+
},
|
|
95
|
+
mdCtrlContainer: {
|
|
96
|
+
promptInformation: "\u662F\u5426\u5220\u9664\u9009\u4E2D\u9879",
|
|
97
|
+
noSlot: "\u672A\u63D0\u4F9Bitem\u63D2\u69FD"
|
|
98
|
+
},
|
|
99
|
+
formMDctrl: {
|
|
100
|
+
errorMessage: "\u6682\u672A\u652F\u6301\u5185\u5BB9\u7C7B\u578B\u4E3A{contentType}"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
gantt: {
|
|
104
|
+
complete: "\u5B8C\u6210\u91CF",
|
|
105
|
+
total: "\u603B\u91CF",
|
|
106
|
+
deadline: "\u622A\u6B62\u65F6\u95F4"
|
|
107
|
+
},
|
|
108
|
+
kanban: {
|
|
109
|
+
selectAll: "\u5168\u9009",
|
|
110
|
+
selectedDataCount: "\u5DF2\u9009\u62E9<span>{length}</span>\u6761\u6570\u636E",
|
|
111
|
+
newPrompt: "\u65B0\u5EFA",
|
|
112
|
+
natchOperation: "\u6279\u91CF\u64CD\u4F5C"
|
|
113
|
+
},
|
|
114
|
+
reportPanel: {
|
|
115
|
+
unrealized: "\u6682\u672A\u5B9E\u73B0"
|
|
116
|
+
},
|
|
117
|
+
searchBar: {
|
|
118
|
+
saveGroup: "\u4FDD\u5B58\u5206\u7EC4",
|
|
119
|
+
filter: "\u8FC7\u6EE4",
|
|
120
|
+
filterTree: {
|
|
121
|
+
addItem: "\u6DFB\u52A0\u9879",
|
|
122
|
+
search: "\u641C\u7D22",
|
|
123
|
+
reset: "\u91CD\u7F6E"
|
|
124
|
+
},
|
|
125
|
+
searchGroups: {
|
|
126
|
+
groupValueRule: "\u5206\u7EC4\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A",
|
|
127
|
+
errorMessage: "\u5206\u7EC4\u540D\u79F0\u4E0D\u80FD\u91CD\u590D\uFF01",
|
|
128
|
+
noEditPrompt: "\u914D\u7F6E\u7684\u5206\u7EC4\u4E0D\u53EF\u7F16\u8F91",
|
|
129
|
+
savePrompt: "\u8BF7\u5148\u4FDD\u5B58\u8BE5\u5206\u7EC4",
|
|
130
|
+
delTitle: "\u786E\u8BA4\u5220\u9664",
|
|
131
|
+
confirmDelPrompt: "\u786E\u8BA4\u5220\u9664\u5206\u7EC4<span>{itemName}</span>\u5417\uFF1F",
|
|
132
|
+
unrecoverablePrompt: "\u5206\u7EC4\u5220\u9664\u540E\u4E0D\u53EF\u6062\u590D",
|
|
133
|
+
newGroup: "\u65B0\u5EFA\u5206\u7EC4",
|
|
134
|
+
groupManage: "\u5206\u7EC4\u7BA1\u7406",
|
|
135
|
+
groupName: "\u5206\u7EC4\u540D\u79F0",
|
|
136
|
+
enterPrompt: "\u8BF7\u8F93\u5165\u5206\u7EC4\u540D\u79F0",
|
|
137
|
+
editGroup: "\u7F16\u8F91\u5206\u7EC4",
|
|
138
|
+
manageTips: "Tips\uFF1A\u7BA1\u7406\u641C\u7D22\u680F\u7684\u5206\u7EC4",
|
|
139
|
+
name: "\u540D\u79F0",
|
|
140
|
+
show: "\u663E\u793A",
|
|
141
|
+
operate: "\u64CD\u4F5C",
|
|
142
|
+
dialogCancel: "\u53D6 \u6D88",
|
|
143
|
+
dialogDetermine: "\u786E \u5B9A"
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
toolbar: {
|
|
147
|
+
exportExcel: {
|
|
148
|
+
exportAll: "\u5BFC\u51FA\u5168\u90E8(\u6700\u5927\u5BFC\u51FA1000\u884C)",
|
|
149
|
+
expCurrentPage: "\u5BFC\u51FA\u5F53\u524D\u9875",
|
|
150
|
+
expCurrentSelect: "\u5BFC\u51FA\u5F53\u524D\u9009\u4E2D",
|
|
151
|
+
page: "\u9875",
|
|
152
|
+
export: "\u5BFC\u51FA"
|
|
61
153
|
}
|
|
154
|
+
},
|
|
155
|
+
tree: {
|
|
156
|
+
noFoundInstance: "\u627E\u4E0D\u5230el-tree\u5B9E\u4F8B\u5BF9\u8C61",
|
|
157
|
+
noSupported: "\u6682\u4E0D\u652F\u6301dropType:{dropType}"
|
|
158
|
+
},
|
|
159
|
+
treeGridEx: {
|
|
160
|
+
noFoundMessage: "\u627E\u4E0D\u5230{id}\u7684\u884C\u6570\u636E\u5BF9\u8C61"
|
|
62
161
|
}
|
|
63
162
|
},
|
|
64
163
|
// 组件
|
|
@@ -83,7 +182,8 @@ var index = {
|
|
|
83
182
|
saveMode: "\u5BFC\u5165\u6A21\u5F0F\u4FDD\u5B58",
|
|
84
183
|
reUpload: "\u91CD\u65B0\u4E0A\u4F20\u6587\u4EF6",
|
|
85
184
|
fileUpload: "\u6587\u4EF6\u4E0A\u4F20",
|
|
86
|
-
import: "\u5BFC\u5165"
|
|
185
|
+
import: "\u5BFC\u5165",
|
|
186
|
+
selectProperties: "\u8BF7\u9009\u62E9\u5217\u5BFC\u5165\u5C5E\u6027!"
|
|
87
187
|
},
|
|
88
188
|
dataImport2Select: {
|
|
89
189
|
selectMode: "\u9009\u62E9\u5BFC\u5165\u6A21\u5F0F",
|
|
@@ -92,9 +192,17 @@ var index = {
|
|
|
92
192
|
dataImport2Table: {
|
|
93
193
|
selectAttribute: "\u9009\u62E9\u5F53\u524D\u5217\u5BF9\u5E94\u7684\u5BFC\u5165\u5C5E\u6027"
|
|
94
194
|
},
|
|
195
|
+
doingNotice: {
|
|
196
|
+
jobInProgress: "\u6709<span class={class}>{num}</span>\u4E2A\u540E\u53F0\u4F5C\u4E1A\u6B63\u5728\u6267\u884C\uFF0C\u8BF7\u7A0D\u540E"
|
|
197
|
+
},
|
|
95
198
|
extendActionTimeLine: {
|
|
96
199
|
processTime: "\u5904\u7406\u65F6\u95F4",
|
|
97
|
-
comments: "\u5BA1\u6279\u610F\u89C1"
|
|
200
|
+
comments: "\u5BA1\u6279\u610F\u89C1",
|
|
201
|
+
reject: "\u9A73\u56DE"
|
|
202
|
+
},
|
|
203
|
+
mapChart: {
|
|
204
|
+
high: "\u9AD8",
|
|
205
|
+
low: "\u4F4E"
|
|
98
206
|
},
|
|
99
207
|
pagination: {
|
|
100
208
|
display: "\u663E\u793A",
|
|
@@ -39,7 +39,10 @@ const ViewMsgPos = /* @__PURE__ */ vue.defineComponent({
|
|
|
39
39
|
"class": this.ns.b()
|
|
40
40
|
}, [vue.createVNode(vue.resolveComponent("view-message"), {
|
|
41
41
|
"messages": viewMessages,
|
|
42
|
-
"scroll": scroll
|
|
42
|
+
"scroll": scroll,
|
|
43
|
+
"context": c.panel.context,
|
|
44
|
+
"params": c.panel.params,
|
|
45
|
+
"controller": c.panel.view.viewMsgController
|
|
43
46
|
}, null)]);
|
|
44
47
|
}
|
|
45
48
|
return null;
|
package/lib/util/index.cjs
CHANGED
|
@@ -9,6 +9,7 @@ var openViewUtil = require('./open-view-util/open-view-util.cjs');
|
|
|
9
9
|
var overlayController = require('./overlay-controller/overlay-controller.cjs');
|
|
10
10
|
var usePagination = require('./pagination/use-pagination.cjs');
|
|
11
11
|
var noticeUtil = require('./notice-util/notice-util.cjs');
|
|
12
|
+
var renderUtil = require('./render-util/render-util.cjs');
|
|
12
13
|
|
|
13
14
|
"use strict";
|
|
14
15
|
|
|
@@ -21,3 +22,4 @@ exports.OpenViewUtil = openViewUtil.OpenViewUtil;
|
|
|
21
22
|
exports.OverlayController = overlayController.OverlayController;
|
|
22
23
|
exports.usePagination = usePagination.usePagination;
|
|
23
24
|
exports.NoticeUtil = noticeUtil.NoticeUtil;
|
|
25
|
+
exports.RenderUtil = renderUtil.RenderUtil;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var vue = require('vue');
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
class RenderUtil {
|
|
7
|
+
/**
|
|
8
|
+
* 绘制视图
|
|
9
|
+
*
|
|
10
|
+
* @author tony001
|
|
11
|
+
* @date 2024-05-08 16:05:56
|
|
12
|
+
* @param {string} viewId
|
|
13
|
+
* @param {IAppView} model
|
|
14
|
+
* @param {IContext} context
|
|
15
|
+
* @param {IParams} params
|
|
16
|
+
* @param {IData} [options]
|
|
17
|
+
* @return {*} {IObject}
|
|
18
|
+
*/
|
|
19
|
+
renderViewShell(viewId, model, context, params, options = {}) {
|
|
20
|
+
const props = {
|
|
21
|
+
viewId,
|
|
22
|
+
modelData: model,
|
|
23
|
+
context,
|
|
24
|
+
params,
|
|
25
|
+
...options
|
|
26
|
+
};
|
|
27
|
+
return vue.h(vue.resolveComponent("IBizViewShell"), props);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 绘制部件
|
|
31
|
+
*
|
|
32
|
+
* @author tony001
|
|
33
|
+
* @date 2024-05-08 16:05:02
|
|
34
|
+
* @param {IControl} model
|
|
35
|
+
* @param {IContext} context
|
|
36
|
+
* @param {IParams} params
|
|
37
|
+
* @param {IData} [options]
|
|
38
|
+
*/
|
|
39
|
+
renderCtrlShell(model, context, params, options = {}) {
|
|
40
|
+
const props = {
|
|
41
|
+
modelData: model,
|
|
42
|
+
context,
|
|
43
|
+
params,
|
|
44
|
+
...options
|
|
45
|
+
};
|
|
46
|
+
return vue.h(vue.resolveComponent("IBizControlShell"), props);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 绘制组件
|
|
50
|
+
*
|
|
51
|
+
* @author tony001
|
|
52
|
+
* @date 2024-05-08 16:05:08
|
|
53
|
+
* @param {string} name
|
|
54
|
+
* @param {IData} options
|
|
55
|
+
* @return {*} {IObject}
|
|
56
|
+
*/
|
|
57
|
+
renderComponent(name, options) {
|
|
58
|
+
return vue.h(vue.resolveComponent(name), options);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
exports.RenderUtil = RenderUtil;
|
|
@@ -73,12 +73,14 @@ class AuthGuard {
|
|
|
73
73
|
const urlPaths = window.location.hash.split("/");
|
|
74
74
|
const viewName = urlPaths[urlPaths.length - 2];
|
|
75
75
|
let viewModel;
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
try {
|
|
77
|
+
if (viewName === "#" && ibiz.hub.defaultPage) {
|
|
78
|
+
viewModel = await ibiz.hub.getAppView(ibiz.hub.defaultPage.id);
|
|
79
|
+
} else {
|
|
78
80
|
viewModel = await ibiz.hub.getAppView(viewName);
|
|
79
|
-
} catch (error) {
|
|
80
|
-
ibiz.log.error(error);
|
|
81
81
|
}
|
|
82
|
+
} catch (error) {
|
|
83
|
+
ibiz.log.error(error);
|
|
82
84
|
}
|
|
83
85
|
if (!viewModel) {
|
|
84
86
|
ibiz.log.error(
|