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
import Vue from 'vue';
import AppPopoverComponent from "./app-popover.vue";
import { AppServiceBase, Util } from 'ibiz-core';
/**
* popover组件
*
* @export
* @class AppPopover
*/
export class AppPopover {
/**
* 实例对象
*
* @private
* @static
* @memberof AppPopover
*/
private static popover = new AppPopover();
/**
* store对象
*
* @private
* @memberof AppPopover
*/
private store: any;
/**
* i18n对象
*
* @private
* @memberof AppPopover
*/
private i18n: any;
/**
* 路由对象
*
* @private
* @memberof AppPopover
*/
private router: any;
/**
* Creates an instance of AppPopover.
*
* @memberof AppPopover
*/
private constructor() {
if (AppPopover.popover) {
return AppPopover.popover;
}
}
/**
* 初始化基础数据
*
* @memberof AppPopover
*/
private initBasicData() {
const appService = AppServiceBase.getInstance();
this.store = appService.getAppStore();
this.i18n = appService.getI18n();
this.router = appService.getRouter();
}
/**
* 获取单例对象
*
* @static
* @returns {AppPopover}
* @memberof AppPopover
*/
public static getInstance(): AppPopover {
if (!AppPopover.popover) {
AppPopover.popover = new AppPopover();
}
return AppPopover.popover;
}
/**
* 创建 Vue 实例对象
*
* @private
* @param {*} view
* @param {*} [context={}]
* @param {*} [viewparams={}]
* @param {string} uuid
* @return {*} {Promise<any>}
* @memberof AppPopover
*/
private async createVueExample(view: any, context: any = {}, viewparams: any = {}, customProps: any = {}): Promise<any> {
const self: any = this;
if (!self.store || !self.i18n) {
self.initBasicData();
}
let props = { view: view, context: context, viewparams: viewparams, ...customProps };
let component = AppPopoverComponent;
let vm: any = new Vue({
store: this.store,
i18n: this.i18n,
router: this.router,
render(h) {
return h(component, { props });
},
}).$mount();
let app = document.getElementById("app");
if (app) {
app.appendChild(vm.$el);
}
const comp: any = vm.$children[0];
return new Promise((resolve, reject) => {
const sub = comp.getSubject();
sub.subscribe((result: any) => {
resolve(result);
});
});
}
/**
* 打开模态视图
*
* @param {*} view
* @param {*} [context={}]
* @param {*} [viewparams={}]
* @return {*} {Promise<any>}
* @memberof AppPopover
*/
public async openPopOver(view: any, context: any = {}, viewparams: any = {}, customProps?: any): Promise<any> {
const result: any = await this.createVueExample(view, context, viewparams, customProps);
return result;
}
}