app-alert-group.vue 2.5 KB
Newer Older
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
<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);
        });
    }
}
113 114 115 116 117 118 119
</script>

<style lang="less">
.view-body-messages {
    margin-bottom: 6px;
}
</style>