@ibiz-template/vue3-util 0.5.3-beta.1 → 0.5.3-beta.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/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/es/common/badge/badge.css +1 -0
- package/es/common/badge/badge.d.ts +26 -0
- package/es/common/badge/badge.d.ts.map +1 -0
- package/es/common/badge/badge.mjs +32 -0
- package/es/common/index.d.ts +1 -0
- package/es/common/index.d.ts.map +1 -1
- package/es/common/index.mjs +1 -0
- package/es/common/view-shell/view-shell.d.ts.map +1 -1
- package/es/common/view-shell/view-shell.mjs +50 -44
- package/es/index.mjs +2 -0
- package/es/panel-component/index.d.ts +1 -0
- package/es/panel-component/index.d.ts.map +1 -1
- package/es/panel-component/index.mjs +1 -0
- package/es/panel-component/nav-pos/nav-pos.mjs +1 -1
- package/es/panel-component/panel-item-render/index.d.ts +25 -0
- package/es/panel-component/panel-item-render/index.d.ts.map +1 -0
- package/es/panel-component/panel-item-render/index.mjs +19 -0
- package/es/panel-component/panel-item-render/panel-item-render.controller.d.ts +32 -0
- package/es/panel-component/panel-item-render/panel-item-render.controller.d.ts.map +1 -0
- package/es/panel-component/panel-item-render/panel-item-render.controller.mjs +29 -0
- package/es/panel-component/panel-item-render/panel-item-render.d.ts +27 -0
- package/es/panel-component/panel-item-render/panel-item-render.d.ts.map +1 -0
- package/es/panel-component/panel-item-render/panel-item-render.mjs +47 -0
- package/es/panel-component/panel-item-render/panel-item-render.provider.d.ts +17 -0
- package/es/panel-component/panel-item-render/panel-item-render.provider.d.ts.map +1 -0
- package/es/panel-component/panel-item-render/panel-item-render.provider.mjs +15 -0
- package/es/plugin/plugin-factory/plugin-factory.d.ts +15 -4
- package/es/plugin/plugin-factory/plugin-factory.d.ts.map +1 -1
- package/es/plugin/plugin-factory/plugin-factory.mjs +58 -10
- package/es/use/view/use-view-controller/use-view-controller.d.ts.map +1 -1
- package/es/use/view/use-view-controller/use-view-controller.mjs +13 -3
- package/es/util/route/route.d.ts.map +1 -1
- package/es/util/route/route.mjs +8 -3
- package/es/util/store/async-action/async-action.d.ts.map +1 -1
- package/es/util/store/async-action/async-action.mjs +10 -2
- package/lib/index.cjs +19 -15
- package/package.json +6 -6
- package/src/common/badge/badge.scss +29 -0
- package/src/common/badge/badge.tsx +26 -0
- package/src/common/index.ts +1 -0
- package/src/common/view-shell/view-shell.tsx +74 -55
- package/src/panel-component/index.ts +1 -0
- package/src/panel-component/nav-pos/nav-pos.tsx +1 -1
- package/src/panel-component/panel-item-render/index.ts +18 -0
- package/src/panel-component/panel-item-render/panel-item-render.controller.ts +52 -0
- package/src/panel-component/panel-item-render/panel-item-render.provider.ts +30 -0
- package/src/panel-component/panel-item-render/panel-item-render.tsx +50 -0
- package/src/plugin/plugin-factory/plugin-factory.ts +67 -10
- package/src/use/view/use-view-controller/use-view-controller.ts +14 -3
- package/src/util/route/route.ts +10 -5
- package/src/util/store/async-action/async-action.ts +14 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
|
-
import { isNumber } from 'lodash-es';
|
|
2
|
+
import { isNumber, isNil } from 'lodash-es';
|
|
3
3
|
import { ref, computed, onUnmounted } from 'vue';
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
@@ -15,6 +15,13 @@ function formatAsyncAction(data) {
|
|
|
15
15
|
data[key] = dayjs(data[key]).format("YYYY-MM-DD HH:mm:ss");
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
if (!isNil(data.actionresult)) {
|
|
19
|
+
try {
|
|
20
|
+
const json = JSON.parse(data.actionresult);
|
|
21
|
+
data.actionresult = json;
|
|
22
|
+
} catch (error) {
|
|
23
|
+
}
|
|
24
|
+
}
|
|
18
25
|
return data;
|
|
19
26
|
}
|
|
20
27
|
function useAsyncAction() {
|
|
@@ -27,6 +34,7 @@ function useAsyncAction() {
|
|
|
27
34
|
});
|
|
28
35
|
const load = async () => {
|
|
29
36
|
const res = await ibiz.asyncAction.fetch();
|
|
37
|
+
res.data.forEach(formatAsyncAction);
|
|
30
38
|
allAsyncActions.value = res.data;
|
|
31
39
|
};
|
|
32
40
|
const asyncActionCallBack = (msg) => {
|
|
@@ -37,7 +45,7 @@ function useAsyncAction() {
|
|
|
37
45
|
const findIndex = allAsyncActions.value.findIndex(
|
|
38
46
|
(item) => item.asyncacitonid === asyncAction.asyncacitonid
|
|
39
47
|
);
|
|
40
|
-
if (findIndex
|
|
48
|
+
if (findIndex === -1) {
|
|
41
49
|
allAsyncActions.value.unshift(asyncAction);
|
|
42
50
|
showLength.value += 1;
|
|
43
51
|
} else {
|
package/lib/index.cjs
CHANGED
|
@@ -16,6 +16,7 @@ var controlShell = require('./common/control-shell/control-shell.cjs');
|
|
|
16
16
|
var viewShell = require('./common/view-shell/view-shell.cjs');
|
|
17
17
|
var codeList = require('./common/code-list/code-list.cjs');
|
|
18
18
|
var controlLoadingPlaceholder = require('./common/control-loading-placeholder/control-loading-placeholder.cjs');
|
|
19
|
+
var badge = require('./common/badge/badge.cjs');
|
|
19
20
|
var panelContainer_state = require('./panel-component/panel-container/panel-container.state.cjs');
|
|
20
21
|
var panelContainer_controller = require('./panel-component/panel-container/panel-container.controller.cjs');
|
|
21
22
|
var index = require('./panel-component/panel-container/index.cjs');
|
|
@@ -49,13 +50,14 @@ var panelContainerGroup_state = require('./panel-component/panel-container-group
|
|
|
49
50
|
var panelContainerGroup_controller = require('./panel-component/panel-container-group/panel-container-group.controller.cjs');
|
|
50
51
|
var index$a = require('./panel-component/panel-container-group/index.cjs');
|
|
51
52
|
var index$b = require('./panel-component/panel-tab-page/index.cjs');
|
|
53
|
+
var index$c = require('./panel-component/panel-item-render/index.cjs');
|
|
52
54
|
var appRedirectView = require('./view/app-redirect-view/app-redirect-view.cjs');
|
|
53
|
-
var index$
|
|
55
|
+
var index$d = require('./view/common/index.cjs');
|
|
54
56
|
var todoRedirect = require('./view/todo-redirect/todo-redirect.cjs');
|
|
55
|
-
var index$
|
|
56
|
-
var index$
|
|
57
|
-
var index$
|
|
58
|
-
var index$
|
|
57
|
+
var index$e = require('./view/portal-view/index.cjs');
|
|
58
|
+
var index$f = require('./view/de-redirect-view/index.cjs');
|
|
59
|
+
var index$g = require('./control/panel/view-layout-panel/index.cjs');
|
|
60
|
+
var index$h = require('./control/panel/panel/index.cjs');
|
|
59
61
|
var pluginFactory = require('./plugin/plugin-factory/plugin-factory.cjs');
|
|
60
62
|
var clickOutside = require('./use/click-outside/click-outside.cjs');
|
|
61
63
|
var useControlController = require('./use/control/use-control-controller/use-control-controller.cjs');
|
|
@@ -63,7 +65,7 @@ var event = require('./use/event/event.cjs');
|
|
|
63
65
|
var focusBlur = require('./use/focus-blur/focus-blur.cjs');
|
|
64
66
|
var namespace = require('./use/namespace/namespace.cjs');
|
|
65
67
|
var route = require('./use/route/route.cjs');
|
|
66
|
-
var index$
|
|
68
|
+
var index$i = require('./use/util/index.cjs');
|
|
67
69
|
var useViewController = require('./use/view/use-view-controller/use-view-controller.cjs');
|
|
68
70
|
var vue = require('./use/vue/vue.cjs');
|
|
69
71
|
var overlayContainer = require('./util/overlay-container/overlay-container.cjs');
|
|
@@ -77,7 +79,7 @@ var render = require('./util/render/render.cjs');
|
|
|
77
79
|
var overlayViewUtil = require('./util/overlay-view-util/overlay-view-util.cjs');
|
|
78
80
|
var appStore = require('./util/store/app-store/app-store.cjs');
|
|
79
81
|
var uiStore = require('./util/store/ui-store/ui-store.cjs');
|
|
80
|
-
var index$
|
|
82
|
+
var index$j = require('./util/store/index.cjs');
|
|
81
83
|
var common = require('./props/common.cjs');
|
|
82
84
|
var textBox = require('./props/editor/text-box.cjs');
|
|
83
85
|
var span = require('./props/editor/span.cjs');
|
|
@@ -114,6 +116,7 @@ exports.IBizControlShell = controlShell.IBizControlShell;
|
|
|
114
116
|
exports.IBizViewShell = viewShell.IBizViewShell;
|
|
115
117
|
exports.IBizCodeList = codeList.IBizCodeList;
|
|
116
118
|
exports.ControlLoadingPlaceholder = controlLoadingPlaceholder.ControlLoadingPlaceholder;
|
|
119
|
+
exports.IBizBadge = badge.IBizBadge;
|
|
117
120
|
exports.PanelContainerState = panelContainer_state.PanelContainerState;
|
|
118
121
|
exports.PanelContainerController = panelContainer_controller.PanelContainerController;
|
|
119
122
|
exports.IBizPanelContainer = index.IBizPanelContainer;
|
|
@@ -147,13 +150,14 @@ exports.PanelContainerGroupState = panelContainerGroup_state.PanelContainerGroup
|
|
|
147
150
|
exports.PanelContainerGroupController = panelContainerGroup_controller.PanelContainerGroupController;
|
|
148
151
|
exports.IBizPanelContainerGroup = index$a.IBizPanelContainerGroup;
|
|
149
152
|
exports.IBizPanelTabPage = index$b.IBizPanelTabPage;
|
|
153
|
+
exports.IBizPanelItemRender = index$c.IBizPanelItemRender;
|
|
150
154
|
exports.AppRedirectView = appRedirectView.AppRedirectView;
|
|
151
|
-
exports.IBizView = index$
|
|
155
|
+
exports.IBizView = index$d.IBizView;
|
|
152
156
|
exports.TodoRedirect = todoRedirect.TodoRedirect;
|
|
153
|
-
exports.IBizPortalView = index$
|
|
154
|
-
exports.IBizDeRedirectView = index$
|
|
155
|
-
exports.IBizViewLayoutPanelControl = index$
|
|
156
|
-
exports.IBizPanelControl = index$
|
|
157
|
+
exports.IBizPortalView = index$e.IBizPortalView;
|
|
158
|
+
exports.IBizDeRedirectView = index$f.IBizDeRedirectView;
|
|
159
|
+
exports.IBizViewLayoutPanelControl = index$g.IBizViewLayoutPanelControl;
|
|
160
|
+
exports.IBizPanelControl = index$h.IBizPanelControl;
|
|
157
161
|
exports.PluginFactory = pluginFactory.PluginFactory;
|
|
158
162
|
exports.useClickOutside = clickOutside.useClickOutside;
|
|
159
163
|
exports.useControlController = useControlController.useControlController;
|
|
@@ -162,8 +166,8 @@ exports.useFocusAndBlur = focusBlur.useFocusAndBlur;
|
|
|
162
166
|
exports.useNamespace = namespace.useNamespace;
|
|
163
167
|
exports.useRouteKey = route.useRouteKey;
|
|
164
168
|
exports.useRouterQuery = route.useRouterQuery;
|
|
165
|
-
exports.useCtx = index$
|
|
166
|
-
exports.useMobCtx = index$
|
|
169
|
+
exports.useCtx = index$i.useCtx;
|
|
170
|
+
exports.useMobCtx = index$i.useMobCtx;
|
|
167
171
|
exports.useViewController = useViewController.useViewController;
|
|
168
172
|
exports.EmptyVNode = vue.EmptyVNode;
|
|
169
173
|
exports.getOrigin = vue.getOrigin;
|
|
@@ -197,7 +201,7 @@ exports.openViewModal = overlayViewUtil.openViewModal;
|
|
|
197
201
|
exports.openViewPopover = overlayViewUtil.openViewPopover;
|
|
198
202
|
exports.useAppStore = appStore.useAppStore;
|
|
199
203
|
exports.useUIStore = uiStore.useUIStore;
|
|
200
|
-
exports.piniaInstance = index$
|
|
204
|
+
exports.piniaInstance = index$j.piniaInstance;
|
|
201
205
|
exports.RequiredProp = common.RequiredProp;
|
|
202
206
|
exports.getGridInputIpProps = textBox.getGridInputIpProps;
|
|
203
207
|
exports.getGridInputNumberProps = textBox.getGridInputNumberProps;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/vue3-util",
|
|
3
|
-
"version": "0.5.3-beta.
|
|
3
|
+
"version": "0.5.3-beta.11",
|
|
4
4
|
"description": "vue3 工具包",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@ibiz-template/cli": "^0.3.10",
|
|
34
|
-
"@ibiz-template/core": "^0.5.
|
|
35
|
-
"@ibiz-template/runtime": "^0.5.3-beta.
|
|
34
|
+
"@ibiz-template/core": "^0.5.3-beta.11",
|
|
35
|
+
"@ibiz-template/runtime": "^0.5.3-beta.11",
|
|
36
36
|
"@ibiz-template/theme": "^0.5.0",
|
|
37
|
-
"@ibiz/model-core": "^0.1.
|
|
37
|
+
"@ibiz/model-core": "^0.1.5",
|
|
38
38
|
"@types/path-browserify": "^1.0.2",
|
|
39
39
|
"@types/qs": "^6.9.11",
|
|
40
40
|
"@types/systemjs": "^6.13.5",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@ibiz-template/core": "^0.5.0-beta.0",
|
|
53
53
|
"@ibiz-template/runtime": "^0.5.0-beta.0",
|
|
54
|
-
"@ibiz/model-core": "^0.1.
|
|
54
|
+
"@ibiz/model-core": "^0.1.5",
|
|
55
55
|
"dayjs": "^1.11.10",
|
|
56
56
|
"path-browserify": "^1.0.1",
|
|
57
57
|
"pinia": "^2.1.7",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"vue": "^3.3.4",
|
|
62
62
|
"vue-router": "^4.2.4"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "776931de0bca05f5e83edb1d584e155374776374"
|
|
65
65
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
$badge: (
|
|
2
|
+
bg-color: getCssVar(color, danger),
|
|
3
|
+
);
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@include b(badge) {
|
|
7
|
+
display: inline-block;
|
|
8
|
+
padding: 3px 6px;
|
|
9
|
+
line-height: 1rem;
|
|
10
|
+
color: #fff;
|
|
11
|
+
background-color: getCssVar(badge, bg-color);
|
|
12
|
+
border-radius: 10px;
|
|
13
|
+
|
|
14
|
+
@include m(danger){
|
|
15
|
+
#{getCssVarName(badge, bg-color)}: getCssVar(color,danger);
|
|
16
|
+
}
|
|
17
|
+
@include m(success){
|
|
18
|
+
#{getCssVarName(badge, bg-color)}: getCssVar(color,success);
|
|
19
|
+
}
|
|
20
|
+
@include m(warning){
|
|
21
|
+
#{getCssVarName(badge, bg-color)}: getCssVar(color,warning);
|
|
22
|
+
}
|
|
23
|
+
@include m(info){
|
|
24
|
+
#{getCssVarName(badge, bg-color)}: getCssVar(color,info);
|
|
25
|
+
}
|
|
26
|
+
@include m(primary){
|
|
27
|
+
#{getCssVarName(badge, bg-color)}: getCssVar(color,primary);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { defineComponent, PropType } from 'vue';
|
|
2
|
+
import { useNamespace } from '../../use';
|
|
3
|
+
import './badge.scss';
|
|
4
|
+
|
|
5
|
+
export const IBizBadge = defineComponent({
|
|
6
|
+
name: 'IBizBadge',
|
|
7
|
+
props: {
|
|
8
|
+
value: {
|
|
9
|
+
type: Number,
|
|
10
|
+
required: true,
|
|
11
|
+
},
|
|
12
|
+
type: {
|
|
13
|
+
type: String as PropType<
|
|
14
|
+
'primary' | 'success' | 'warning' | 'danger' | 'info'
|
|
15
|
+
>,
|
|
16
|
+
default: 'danger',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
setup() {
|
|
20
|
+
const ns = useNamespace('badge');
|
|
21
|
+
return { ns };
|
|
22
|
+
},
|
|
23
|
+
render() {
|
|
24
|
+
return <div class={[this.ns.b(), this.ns.m(this.type)]}>{this.value}</div>;
|
|
25
|
+
},
|
|
26
|
+
});
|
package/src/common/index.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
|
2
2
|
/* eslint-disable vue/no-mutating-props */
|
|
3
3
|
import {
|
|
4
|
-
convertNavData,
|
|
5
|
-
getControl,
|
|
6
4
|
getViewProvider,
|
|
7
5
|
IViewProvider,
|
|
8
|
-
|
|
6
|
+
getMatchResPath,
|
|
9
7
|
} from '@ibiz-template/runtime';
|
|
10
8
|
import { defineComponent, h, PropType, ref, resolveComponent } from 'vue';
|
|
11
|
-
import {
|
|
9
|
+
import { IAppDataEntity, IAppView } from '@ibiz/model-core';
|
|
12
10
|
import { RuntimeError } from '@ibiz-template/core';
|
|
13
|
-
import { createUUID
|
|
11
|
+
import { createUUID } from 'qx-util';
|
|
14
12
|
import { isEmpty, isNil } from 'ramda';
|
|
15
13
|
import { useNamespace } from '../../use';
|
|
16
14
|
import './view-shell.scss';
|
|
@@ -42,73 +40,94 @@ export const IBizViewShell = defineComponent({
|
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
if (viewModel.dynaSysMode === 1) {
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
let
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
43
|
+
//* 计算实体资源路径上下文参数
|
|
44
|
+
const appDataEntityId = viewModel.appDataEntityId;
|
|
45
|
+
let appDe: IAppDataEntity | undefined;
|
|
46
|
+
if (appDataEntityId) {
|
|
47
|
+
appDe = await ibiz.hub.getAppDataEntity(
|
|
48
|
+
appDataEntityId,
|
|
49
|
+
viewModel.appId,
|
|
50
|
+
);
|
|
51
|
+
} else {
|
|
52
|
+
throw new RuntimeError(
|
|
53
|
+
`${viewModel.codeName}无实体,暂不支持加载动态模型`,
|
|
53
54
|
);
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
/** 加载动态模型的请求参数 */
|
|
58
|
+
const loadModelParams: IParams = {};
|
|
59
|
+
// * 计算资源路径上下文参数
|
|
60
|
+
// 主键
|
|
61
|
+
const srfkey = props.context[appDe.codeName!.toLowerCase()];
|
|
62
|
+
if (srfkey) {
|
|
63
|
+
loadModelParams.srfkey = srfkey;
|
|
64
|
+
}
|
|
65
|
+
// 上层资源路径主实体名称和主键
|
|
66
|
+
const match = getMatchResPath(props.context, appDe);
|
|
67
|
+
if (match && match.keys.length > 1) {
|
|
68
|
+
const parentDeKey = match.keys[match.keys.length - 2];
|
|
69
|
+
loadModelParams.srfparentkey = props.context[parentDeKey];
|
|
70
|
+
loadModelParams.srfparentdeanme = parentDeKey;
|
|
65
71
|
}
|
|
66
72
|
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
73
|
+
// 工作流视图加载数据补充srfwftag
|
|
74
|
+
if (appDe && viewModel.enableWF) {
|
|
75
|
+
// 处理数据请求的上下文
|
|
76
|
+
const context: IContext = { ...props.context };
|
|
77
|
+
// 存在主键则加载数据计算对应的参数
|
|
78
|
+
if (loadModelParams.srfkey) {
|
|
79
|
+
const noSrfSessionId =
|
|
80
|
+
isNil(props.context.srfsessionid) ||
|
|
81
|
+
isEmpty(props.context.srfsessionid);
|
|
82
|
+
const id = createUUID();
|
|
83
|
+
// 只要上下文中无 srfsessionid 则生成一个
|
|
84
|
+
if (noSrfSessionId) {
|
|
85
|
+
// 生成一个界面域,界面域标识为当前控制器实例的标识
|
|
86
|
+
const domain = ibiz.uiDomainManager.create(id);
|
|
87
|
+
context.srfsessionid = domain.id;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const app = ibiz.hub.getApp(viewModel.appId);
|
|
91
|
+
const service = await app.deService.getService(
|
|
92
|
+
props.context,
|
|
93
|
+
appDataEntityId!,
|
|
94
|
+
);
|
|
95
|
+
const res = await service.get(context, props.params || {});
|
|
96
|
+
if (res.ok && res.data) {
|
|
97
|
+
const { srfwftag, processdefinitionkey, taskdefinitionkey } =
|
|
98
|
+
res.data;
|
|
99
|
+
if (srfwftag) {
|
|
100
|
+
loadModelParams.srfwftag = srfwftag;
|
|
83
101
|
}
|
|
84
102
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
params.srfwftag = srfwftag;
|
|
103
|
+
// *动态工作流编辑视图从数据里额外获取参数
|
|
104
|
+
if (
|
|
105
|
+
['DEWFDYNAEDITVIEW3', 'DEWFDYNAEDITVIEW'].includes(
|
|
106
|
+
viewModel.viewType!,
|
|
107
|
+
)
|
|
108
|
+
) {
|
|
109
|
+
const viewParams = props.params!;
|
|
110
|
+
// 如果视图参数中没有获取到对应流程实例标识与步骤标识,则从请求回来的数据中获取对应信息
|
|
111
|
+
if (isNil(viewParams.processDefinitionKey)) {
|
|
112
|
+
viewParams.processDefinitionKey = processdefinitionkey;
|
|
113
|
+
}
|
|
114
|
+
if (isNil(viewParams.taskDefinitionKey)) {
|
|
115
|
+
viewParams.taskDefinitionKey = taskdefinitionkey;
|
|
99
116
|
}
|
|
100
117
|
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (noSrfSessionId) {
|
|
101
121
|
ibiz.uiDomainManager.destroy(id);
|
|
102
122
|
}
|
|
103
|
-
} else {
|
|
104
|
-
throw new RuntimeError('未找到数据控件');
|
|
105
123
|
}
|
|
106
124
|
}
|
|
107
125
|
|
|
126
|
+
// *加载动态模型
|
|
108
127
|
viewModelData.value = await ibiz.hub.loadAppView(
|
|
109
128
|
viewModel.appId,
|
|
110
129
|
viewModel.id!,
|
|
111
|
-
|
|
130
|
+
loadModelParams,
|
|
112
131
|
);
|
|
113
132
|
} else {
|
|
114
133
|
viewModelData.value = viewModel;
|
|
@@ -92,7 +92,7 @@ export const NavPos = defineComponent({
|
|
|
92
92
|
? h(resolveComponent('IBizViewShell'), {
|
|
93
93
|
context: navViewMsgs[currentKey].context,
|
|
94
94
|
params: navViewMsgs[currentKey].params,
|
|
95
|
-
key:
|
|
95
|
+
key: currentKey,
|
|
96
96
|
viewId: navViewMsgs[currentKey].viewId,
|
|
97
97
|
onCreated: this.onViewCreated,
|
|
98
98
|
})
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { registerPanelItemProvider } from '@ibiz-template/runtime';
|
|
2
|
+
import { App } from 'vue';
|
|
3
|
+
import { withInstall } from '../../util';
|
|
4
|
+
import { PanelItemRender } from './panel-item-render';
|
|
5
|
+
import { PanelItemRenderProvider } from './panel-item-render.provider';
|
|
6
|
+
|
|
7
|
+
export const IBizPanelItemRender = withInstall(
|
|
8
|
+
PanelItemRender,
|
|
9
|
+
function (v: App) {
|
|
10
|
+
v.component(PanelItemRender.name, PanelItemRender);
|
|
11
|
+
registerPanelItemProvider(
|
|
12
|
+
'PREDEFINE_RENDER',
|
|
13
|
+
() => new PanelItemRenderProvider(),
|
|
14
|
+
);
|
|
15
|
+
},
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export default IBizPanelItemRender;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { IControlRender, IPanelContainer } from '@ibiz/model-core';
|
|
2
|
+
import {
|
|
3
|
+
PanelItemController,
|
|
4
|
+
ScriptFactory,
|
|
5
|
+
ViewLayoutPanelController,
|
|
6
|
+
} from '@ibiz-template/runtime';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 面板绘制器控制器
|
|
10
|
+
*
|
|
11
|
+
* @author zk
|
|
12
|
+
* @date 2024-01-15 06:01:08
|
|
13
|
+
* @export
|
|
14
|
+
* @class PanelItemRenderController
|
|
15
|
+
* @extends {PanelItemController<IPanelContainer>}
|
|
16
|
+
*/
|
|
17
|
+
export class PanelItemRenderController extends PanelItemController<IPanelContainer> {
|
|
18
|
+
/**
|
|
19
|
+
* 面板控制器
|
|
20
|
+
*
|
|
21
|
+
* @author lxm
|
|
22
|
+
* @date 2022-08-24 22:08:59
|
|
23
|
+
* @type {PanelController}
|
|
24
|
+
*/
|
|
25
|
+
declare panel: ViewLayoutPanelController;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 获取面板绘制器自定义html
|
|
29
|
+
*
|
|
30
|
+
* @author zk
|
|
31
|
+
* @date 2024-01-15 01:01:11
|
|
32
|
+
* @export
|
|
33
|
+
* @param {IControlRender[]} controlRenders
|
|
34
|
+
* @return {*} {(string | undefined)}
|
|
35
|
+
*/
|
|
36
|
+
getPanelItemCustomHtml(
|
|
37
|
+
controlRenders: IControlRender[],
|
|
38
|
+
data: IData | undefined,
|
|
39
|
+
): string | undefined {
|
|
40
|
+
if (controlRenders.length === 0) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const controlRender = controlRenders[0];
|
|
44
|
+
if (controlRender.layoutPanelModel) {
|
|
45
|
+
return ScriptFactory.execScriptFn(
|
|
46
|
+
{ data: data || {} },
|
|
47
|
+
controlRender.layoutPanelModel,
|
|
48
|
+
{ singleRowReturn: true, isAsync: false },
|
|
49
|
+
) as string;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IPanelItemProvider,
|
|
3
|
+
PanelController,
|
|
4
|
+
PanelItemController,
|
|
5
|
+
} from '@ibiz-template/runtime';
|
|
6
|
+
import { IPanelContainer } from '@ibiz/model-core';
|
|
7
|
+
import { PanelItemRenderController } from './panel-item-render.controller';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 面板绘制器适配器
|
|
11
|
+
*
|
|
12
|
+
* @author zk
|
|
13
|
+
* @date 2024-01-15 06:01:32
|
|
14
|
+
* @export
|
|
15
|
+
* @class PanelItemRenderProvider
|
|
16
|
+
* @implements {IPanelItemProvider}
|
|
17
|
+
*/
|
|
18
|
+
export class PanelItemRenderProvider implements IPanelItemProvider {
|
|
19
|
+
component: string = 'IBizPanelItemRender';
|
|
20
|
+
|
|
21
|
+
async createController(
|
|
22
|
+
panelItem: IPanelContainer,
|
|
23
|
+
panel: PanelController,
|
|
24
|
+
parent: PanelItemController | undefined,
|
|
25
|
+
): Promise<PanelItemRenderController> {
|
|
26
|
+
const c = new PanelItemRenderController(panelItem, panel, parent);
|
|
27
|
+
await c.init();
|
|
28
|
+
return c;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { IPanelContainer } from '@ibiz/model-core';
|
|
2
|
+
import { computed, defineComponent, PropType } from 'vue';
|
|
3
|
+
import { useNamespace } from '../../use';
|
|
4
|
+
import { PanelItemRenderController } from './panel-item-render.controller';
|
|
5
|
+
|
|
6
|
+
export const PanelItemRender = defineComponent({
|
|
7
|
+
name: 'IBizPanelItemRender',
|
|
8
|
+
props: {
|
|
9
|
+
modelData: {
|
|
10
|
+
type: Object as PropType<IPanelContainer>,
|
|
11
|
+
required: true,
|
|
12
|
+
},
|
|
13
|
+
controller: {
|
|
14
|
+
type: PanelItemRenderController,
|
|
15
|
+
required: true,
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
setup(props) {
|
|
19
|
+
const ns = useNamespace('panel-item-render');
|
|
20
|
+
|
|
21
|
+
const nsType = useNamespace(
|
|
22
|
+
`panel-${props.modelData.itemType?.toLowerCase()}`,
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
const { id } = props.modelData;
|
|
26
|
+
|
|
27
|
+
// 类名控制
|
|
28
|
+
const classArr = computed(() => {
|
|
29
|
+
const result: Array<string | false> = [
|
|
30
|
+
ns.b(),
|
|
31
|
+
ns.m(id),
|
|
32
|
+
nsType.b(),
|
|
33
|
+
ns.is('hidden', !props.controller.state.visible),
|
|
34
|
+
];
|
|
35
|
+
return result;
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const htmlCode = computed(() => {
|
|
39
|
+
return props.controller.getPanelItemCustomHtml(
|
|
40
|
+
props.modelData.controlRenders!,
|
|
41
|
+
props.controller.data,
|
|
42
|
+
);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return { ns, classArr, htmlCode };
|
|
46
|
+
},
|
|
47
|
+
render() {
|
|
48
|
+
return <div class={this.classArr} v-html={this.htmlCode}></div>;
|
|
49
|
+
},
|
|
50
|
+
});
|