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
<template>
<div class="app-alert-group">
<template v-for="(item, index) in items">
<app-alert
:key="index"
:tag="item.tag"
:context="context"
:viewparam="viewparam"
:position="item.position"
:infoGroup="infoGroup"
:viewname="viewname"/>
</template>
</div>
</template>
<script lang="ts">
import {Vue, Component, Prop} from 'vue-property-decorator';
import ViewMessageGroupService from '@/message/view-message-group-service';
@Component({})
export default class AppAlertGroup extends Vue {
/**
* 视图消息组服务
*
* @type {any}
* @memberof AppAlertGroup
*/
public viewMessageGroupService = ViewMessageGroupService.getInstance();
/**
* 视图消息组tag
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() infoGroup: any;
/**
* 应用上下文
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() context: any;
/**
* 视图参数
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() viewparam: any;
/**
* 视图消息组显示位置
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() position: any;
/**
* 视图名称
*
* @type {any}
* @memberof AppAlertGroup
*/
@Prop() viewname: any;
/**
* 当前位置视图消息集合
*
* @type {any}
* @memberof AppAlertGroup
*/
public items: any[] = [];
/**
* Vue生命周期
*
* @memberof AppAlertGroup
*/
public created() {
if(this.infoGroup) {
this.getItems();
}
}
/**
* 获取当前位置视图消息集合
*
* @memberof AppAlertGroup
*/
public getItems() {
this.viewMessageGroupService.getViewMessageDetailsByTag(this.infoGroup).then((response: any) => {
if(response) {
response.forEach((data: any) => {
if(this.position && Object.is(this.position, data.position)) {
this.items.push(data);
}
if(Object.is('TOP', this.position) && Object.is('POPUP', data.position)) {
this.items.push(data);
}
})
}
}).catch(error => {
console.log(error);
});
}
}
</script>
<style lang="less">
.view-body-messages {
margin-bottom: 6px;
}
</style>