<template>
    <div class="go-label" :title="labelItem.label" :style="labelStyle">
        <span class="start-require" v-if="labelItem.required">*</span>
        <span v-show="labelItem.showLabel"> {{ labelItem.label }}</span>
        <span v-show="labelItem.showSlot">&nbsp;</span>
        <span v-show="labelItem.labelSplit">:</span>
    </div>
</template>

<script>
    import {AssertUtils} from "goingutils";

    export default {
        name: 'go-label',
        data(){
            let _labelItem = {};
            if (this.item != null) {
                for(let propName in this.$props){
                    if(propName!=="item"){
                        this.setPropValue(this.item,propName,this.$props[propName]);
                    }
                }
                _labelItem=this.item;
            } else {
                for(let propName in this.$props){
                    this.setPropValue(_labelItem,propName,this.$props[propName]);
                }
            }
            //如果没有设置showLabel  则添加默认值为true
            if(_labelItem["labelSplit"]==null){
                this.setPropValue(_labelItem,"labelSplit",true);
            }
            //显示站位宽度
            if(_labelItem["showSlot"]==null){
                this.setPropValue(_labelItem,"showSlot",false);
            }
            if(_labelItem["showLabel"]==null){
                this.setPropValue(_labelItem,"showLabel",true);
            }
            return {
                labelItem:_labelItem
            };
        },
        props: {
            //显示的labe值
            label:{},
            //是否显示分割点
            labelSplit: {},
            //是否显示label
            showLabel: {},
            //是否现在label的占位宽度
            showSlot:{},
            item: {
                type: Object,
                default: () => {
                }
            }
        },
        mounted(){

        },
        methods:{
            //设置参数值
            setPropValue(itemObj, propName, propValue) {
                if(itemObj==null){
                    return void(0);
                }
                //如果对象属性存在 而且对象属性的值跟传入的值不一样
                if (itemObj[propName] != null&&AssertUtils.isNotNull(propValue)&&itemObj[propName]!==propValue) {
                    //如果是字符串  则不能为空
                    if(typeof(propValue)==='string'&&propValue===""){
                        return void(0);
                    }
                    itemObj[propName] = propValue;
                } else if(itemObj[propName] == null&&AssertUtils.isNotNull(propValue)){
                    //如果对象属性不存在 则需要通过set来设置
                    this.$set(itemObj, propName, propValue);
                }
            },
        },
        computed: {
            labelStyle() {
                let styles = {
                    textAlign: this.labelItem.labelAlign
                };
                //如果是文字
                if (this.labelItem.labelAlign === 'top') {
                    styles['float'] = 'none';
                    styles['line-height'] = '24px';
                    styles['textAlign'] = 'left';
                    styles['paddingLeft'] = '10px';
                }
                //设置label的宽度
                if (AssertUtils.isNotEmpty(this.labelItem.labelWidth) && this.labelItem.labelWidth !== 110) {
                    styles['width'] = this.labelItem.labelWidth + 'px';
                    styles['minWidth'] = this.labelItem.labelWidth + 'px';
                }
                return styles;
            }
        }
    };
</script>
