1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import { CreateElement } from 'vue';
import { Prop, Watch } from 'vue-property-decorator';
import { Util } from 'ibiz-core';
import { AppLayoutService } from '../../../app-service/common-service/app-layout-service';
import { DeIndexViewBase } from '../../../view';
/**
* 应用实体首页视图
*
* @export
* @class AppDEIndexViewBase
* @extends {DeIndexViewBase}
*/
export class AppDEIndexViewBase extends DeIndexViewBase {
/**
* 视图动态参数
*
* @type {string}
* @memberof AppDEIndexViewBase
*/
@Prop() public declare dynamicProps: any;
/**
* 视图静态参数
*
* @type {string}
* @memberof AppDEIndexViewBase
*/
@Prop() public declare staticProps: any;
/**
* 监听视图动态参数变化
*
* @param {*} newVal
* @param {*} oldVal
* @memberof AppDEIndexViewBase
*/
@Watch('dynamicProps', {
immediate: true,
})
public onDynamicPropsChange(newVal: any, oldVal: any) {
if (newVal && !Util.isFieldsSame(newVal, oldVal)) {
super.onDynamicPropsChange(newVal, oldVal);
}
}
/**
* 监听视图静态参数变化
*
* @memberof AppDEIndexViewBase
*/
@Watch('staticProps', {
immediate: true,
})
public onStaticPropsChange(newVal: any, oldVal: any) {
if (newVal && !Util.isFieldsSame(newVal, oldVal)) {
super.onStaticPropsChange(newVal, oldVal);
}
}
/**
* @description 渲染表单部件
* @return {*}
* @memberof AppDEIndexViewBase
*/
public renderForm() {
if (!this.formInstance) {
return;
}
const { targetCtrlName, targetCtrlParam, targetCtrlEvent } = this.computeTargetCtrlData(this.formInstance);
return this.$createElement(targetCtrlName, { props: targetCtrlParam, ref: this.formInstance?.name, on: targetCtrlEvent });
}
/**
* @description 渲染数据关系栏部件
* @return {*}
* @memberof AppDEIndexViewBase
*/
public renderDrBar() {
if (!this.drBarInstance) {
return;
}
const { targetCtrlName, targetCtrlParam, targetCtrlEvent } = this.computeTargetCtrlData(this.drBarInstance);
Object.assign(targetCtrlParam.staticProps, {
showMode: 'INDEXMODE'
});
return this.$createElement(targetCtrlName, { props: targetCtrlParam, ref: this.drBarInstance?.name, on: targetCtrlEvent });
}
/**
* @description 渲染主体内容
* @return {*}
* @memberof AppDEIndexViewBase
*/
public renderMainContent() {
return (
<div slot="default" class="ctrl-container">
<div class="form-container">
{this.renderForm()}
</div>
<div class="drbar-container">
{this.renderDrBar()}
</div>
</div>
)
}
/**
* 渲染目标组件
*
* @return {*}
* @memberof AppDEIndexViewBase
*/
public renderTargetControls() {
if (this.useDefaultLayout) {
return [
this.renderCaptionBar(),
this.renderDataInfoBar(),
this.renderTopMessage(),
this.renderBodyMessage(),
this.renderToolBar(),
this.renderMainContent(),
this.renderBottomMessage()
]
} else {
return this.renderViewControls();
}
}
/**
* @description 渲染实体首页视图
* @param {CreateElement} h
* @return {*}
* @memberof AppDEIndexViewBase
*/
render(h: CreateElement) {
if (!this.viewIsLoaded) {
return;
}
const targetViewLayoutComponent: any = AppLayoutService.getLayoutComponent(`${this.viewInstance?.viewType}-${this.viewInstance?.viewStyle}`);
return h(targetViewLayoutComponent, {
props: { viewInstance: this.viewInstance, model: this.model, modelService: this.modelService },
ref: `${this.viewInstance.codeName}Layout`,
}, this.renderTargetControls());
}
/**
* 销毁视图回调
*
* @memberof AppDEIndexViewBase
*/
public destroyed() {
this.viewDestroyed();
}
}