app-ctrl-pos.vue 1.4 KB
Newer Older
tony001's avatar
tony001 committed
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
<template>
    <div :class="curClassName" :style="curStyle">
        <slot></slot>
    </div>
</template>
<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";

@Component({})
export default class AppCtrlPos extends Vue {

    /**
     * 名称
     *
     * @type {string}
     * @memberof AppCtrlPos
     */
    @Prop() public name!: string;

    /**
     * 布局模型详情
     *
     * @type {*}
     * @memberof AppCtrlPos
     */
    @Prop() public layoutModelDetails: any;

    /**
     * 下标
     *
     * @type {number}
     * @memberof AppCtrlPos
     */
tony001's avatar
tony001 committed
34
    @Prop() public index?: number;
tony001's avatar
tony001 committed
35 36 37 38 39 40 41 42

    /**
     * 项名称
     *
     * @type {*}
     * @memberof AppCtrlPos
     */
    get itemName() {
tony001's avatar
tony001 committed
43
        return (this.index || this.index === 0) ? `${this.name}_${this.index}` : this.name;
tony001's avatar
tony001 committed
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
    }

    /**
     * 当前容器类名
     *
     * @memberof AppCtrlPos
     */
    get curClassName() {
        const layoutModel = this.layoutModelDetails[this.itemName];
        if (layoutModel) {
            return `app-ctrl-pos ${this.itemName} ${layoutModel.sysCss}`;
        }
    }

    /**
     * 当前容器样式
     *
     * @memberof AppCtrlPos
     */
    get curStyle() {
        const layoutModel = this.layoutModelDetails[this.itemName];
        if (layoutModel) {
            return layoutModel.getElementStyle();
        }
    }

}
</script>
72 73
<style lang='scss'>
@import './app-ctrl-pos.scss';
74
</style>