gbe8.vue 6.46 KB
<template>
    <div class="gbe8-bg">
        <div class="port-wrapper">
            <div class="port-container part1">
                <div class="port-area">
                    <interface v-for="item in ifList1"
                                :key="item.ifNum"
                               :item="item"
                               :if-type="ifType"
                               :data-set="dataSet"
                                class="port-item"
                                :class="{
                                   'icon-gray-port-bg-pic':item.class === 'icon-gray-port' ? true : false,
                                   'icon-green-port-bg-pic':item.class === 'icon-green-port' ? true : false,
                                   'icon-blue-port-bg-pic':item.class === 'icon-blue-port' ? true : false,
                                    'upside':parseInt(item.ifNum) % 2 === 0 ? true : false
                                }"
                               @right-click="rightClick"
                               @pop-up-click="handlePopUp"
                    >
                    </interface>
                </div>
            </div>
            <div class="port-container part2">
                <div class="port-area">
                    <interface v-for="item in ifList2"
                               :key="item.ifNum"
                               :item="item"
                               :if-type="ifType"
                               :data-set="dataSet"
                               class="port-item"
                               :class="{
                                   'icon-gray-port-bg-pic':item.class === 'icon-gray-port' ? true : false,
                                   'icon-green-port-bg-pic':item.class === 'icon-green-port' ? true : false,
                                   'icon-blue-port-bg-pic':item.class === 'icon-blue-port' ? true : false,
                                    'upside':parseInt(item.ifNum) % 2 === 0 ? true : false
                               }"
                               @right-click="rightClick"
                               @pop-up-click="handlePopUp"
                    >
                    </interface>
                </div>
            </div>
            <div class="port-container part3">
                <div class="port-area">
                    <interface v-for="item in ifList3"
                               :key="item.ifNum"
                               :item="item"
                               :if-type="ifType"
                               :data-set="dataSet"
                               class="port-item"
                               :class="{
                                   'icon-gray-port-bg-pic':item.class === 'icon-gray-port' ? true : false,
                                   'icon-green-port-bg-pic':item.class === 'icon-green-port' ? true : false,
                                   'icon-blue-port-bg-pic':item.class === 'icon-blue-port' ? true : false,
                                    'upside':parseInt(item.ifNum) % 2 === 0 ? true : false
                               }"
                               @right-click="rightClick"
                               @pop-up-click="handlePopUp"
                    >
                    </interface>
                </div>
            </div>
            <div class="port-container part4">
                <div class="port-area">
                    <interface v-for="item in ifList4"
                               :key="item.ifNum"
                               :item="item"
                               :if-type="ifType"
                               :data-set="dataSet"
                               class="port-item"
                               :class="{
                                   'icon-gray-port-bg-pic':item.class === 'icon-gray-port' ? true : false,
                                   'icon-green-port-bg-pic':item.class === 'icon-green-port' ? true : false,
                                   'icon-blue-port-bg-pic':item.class === 'icon-blue-port' ? true : false,
                                    'upside':parseInt(item.ifNum) % 2 === 0 ? true : false
                               }"
                               @right-click="rightClick"
                               @pop-up-click="handlePopUp"
                    >
                    </interface>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
import Interface from '../../interface/interface'
export default {
    name: "gbe8",
    props: {
        ifList: {
            type: Array,
            required: true
        },
        ifType: {
            type: String
        },
        dataSet:{
            type: Object,
            default: function () {
                return {devId: '',ifType:'',vpnName:'' }
            }
        }
    },
    methods: {
        rightClick(item) {
            //console.log(item)
            this.$emit('right-click',item)
        },
        handlePopUp(item,event){
            this.$emit('pop-up-click',item,event)
        }
    },
    components:{Interface},
    computed: {
        ifList1() {
            return this.ifList.filter(item => parseInt(item.ifNum) === 0 || parseInt(item.ifNum) === 1)
        },
        ifList2() {
            return this.ifList.filter(item => parseInt(item.ifNum) === 2 || parseInt(item.ifNum) === 3)
        },
        ifList3() {
            return this.ifList.filter(item => parseInt(item.ifNum) === 4 || parseInt(item.ifNum) === 5)
        },
        ifList4() {
            return this.ifList.filter(item => parseInt(item.ifNum) === 6 || parseInt(item.ifNum) === 7)
        }
    }
}
</script>

<style lang="scss">
.gbe8-bg {
    height: 76px;
    width: 280px;
    background: url("../../../../assets/actualView/8GBE.png");
    position: absolute;
    .port-wrapper {
        height: 100%;
        display: flex;
        padding-left: 38px;
        .port-container {
            height: 50px;
            width: 38px;
            background: #ffffff;
            border: 1px solid #8b8b8b;
            padding: 2px 2px;
            margin-top: 15px;
            &.part1,&.part2,&.part3 {
                margin-right: 18px;
            }
            .port-area {
                height: 100%;
                display: flex;
                flex-direction: column-reverse;
                align-items: center;
                justify-content: space-between;
                .port-item {
                    height: 19px;
                    width: 26px;
                }
            }
        }
    }
}
</style>