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
import { IPSAppDEWFDynaActionView, IPSDEForm } from '@ibiz/dynamic-model-api';
import { ModelTool, WFDynaActionViewInterface } from 'ibiz-core';
import { MainViewBase } from './mainview-base';
/**
* 工作流动态操作视图基类
*
* @export
* @class WFDynaActionViewBase
* @extends {MainViewBase}
* @implements {WFDynaActionViewInterface}
*/
export class WFDynaActionViewBase extends MainViewBase implements WFDynaActionViewInterface {
/**
* 视图实例
*
* @memberof WFDynaActionViewBase
*/
public declare viewInstance: IPSAppDEWFDynaActionView;
/**
* 表单实例
*
* @memberof WFDynaActionViewBase
*/
protected editFormInstance!: IPSDEForm;
/**
* 初始化挂载状态集合
*
* @memberof WFDynaActionViewBase
*/
public initUIContainerMountedMap(){
this.mountedMap.set('self', false);
}
/**
* 设置已经绘制完成状态
*
* @memberof WFDynaActionViewBase
*/
public setContainerIsMounted(name: string = 'self') {
super.setContainerIsMounted(name);
if(this.editFormInstance?.name == name){
this.viewState.next({ tag: this.editFormInstance.name, action: 'autoload', data: {srfkey:this.context[this.appDeCodeName.toLowerCase()]} });
}
}
/**
* 视图挂载
*
* @memberof WFDynaActionViewBase
*/
public containerMounted() {
super.containerMounted();
if(this.viewparams && this.viewparams.actionForm) {
this.computeActivedForm(this.viewparams.actionForm);
} else {
this.computeActivedForm(null);
}
}
/**
* 计算激活表单
*
* @memberof WFDynaActionViewBase
*/
public computeActivedForm(inputForm: any) {
if (!inputForm) {
this.editFormInstance = ModelTool.findPSControlByName('form', this.viewInstance.getPSControls()) as IPSDEForm;
} else {
this.editFormInstance = ModelTool.findPSControlByName(`wfform_${inputForm.toLowerCase()}`, this.viewInstance.getPSControls()) as IPSDEForm;
}
this.mountedMap.set(this.editFormInstance.name, false);
this.$forceUpdate();
}
/**
* 确认
*
* @memberof WFDynaActionViewBase
*/
public onClickOk() {
let form: any = (this.$refs.form as any).ctrl;
if (!form) {
return;
}
if (this.viewInstance && this.viewInstance.tempMode && Object.is(this.viewInstance.tempMode, 2)) {
if (form.save && form.save instanceof Function) {
form.save().then((data: any) => {
let preFormData: any = data;
let nextFormData: any = form.transformData(preFormData);
Object.assign(preFormData, nextFormData);
this.$emit("view-event", { action: "viewdataschange", data: [preFormData] });
this.$emit("view-event", { action: "close", data: null });
})
}
} else {
if (form && form.formValidateStatus()) {
let preFormData: any = form.getData();
let nextFormData: any = form.transformData(preFormData);
Object.assign(preFormData, nextFormData);
this.$store.commit('viewAction/setViewDataChange', { viewTag: this.viewtag, viewDataChange: false });
this.$emit("view-event", { action: "viewdataschange", data: [preFormData] });
this.$emit("view-event", { action: "close", data: null });
}
}
}
/**
* 取消
*
* @memberof WFDynaActionViewBase
*/
public onClickCancel() {
this.$store.commit('viewAction/setViewDataChange', { viewTag: this.viewtag, viewDataChange: false });
this.$emit("view-event", { action: "close", data: null });
}
/**
* 初始化编辑视图实例
*
* @memberof WFDynaActionViewBase
*/
public async viewModelInit() {
await super.viewModelInit();
}
/**
* 渲染视图主体内容区
*
* @memberof WFDynaActionViewBase
*/
public renderMainContent() {
if (!this.editFormInstance) {
return;
}
let { targetCtrlName, targetCtrlParam, targetCtrlEvent } = this.computeTargetCtrlData(this.editFormInstance);
if (this.viewInstance && this.viewInstance.tempMode && Object.is(this.viewInstance.tempMode, 2)) {
Object.assign(targetCtrlParam.staticProps, { tempmode: true });
}
return this.$createElement(targetCtrlName, { slot: 'default', props: targetCtrlParam, ref: "form", on: targetCtrlEvent });
}
}