<template>
    <el-select v-model="svalue"
        :placeholder="placeholder"
        @change="handleButton"
        :size="size"
        clearable
        filterable
        :collapse-tags="iscollapse"
        :multiple="ismult"
        :disabled="disabled"
        >
        <el-option
            v-for="(item, index) in options"
            :key="index"
            :label="item.key"
            :value="item.vaule">
        </el-option>
    </el-select>
</template>
<!--调用写法  @handleButton='handleButton'  handleButton是方法名-->
<!--<xdh-select :dictType="'Crm_'" v-model="queryParam.notifyType" @handleButton="handleButton"></xdh-select>-->

<script>
  import commonSelectList from '@/common/commonSelectList.js'
    export default {
       name: 'common-select',
        data() {
            return {
                options:[],
                svalue: this.value
            }
        },
        props: {
            dictType: {
                type:String
            },//请求的码表值
            value: {
                // type: String
            }, //接受外部v-model传入的值
            size: {
              type: String,
              default: 'mini'
            },
            placeholder:{
              type: String,
              default: '请选择'
            },
            ismult: {
              type: Boolean,
              default: false
            },
            iscollapse: {//多选时是否将选中值按文字的形式展示
              type: Boolean,
              default: false
            },
            disabled:{
              type: Boolean,
              default: false
            }
        },
        methods: {
            // 获取下拉框数据
          async getDictionary_option(dictType){
                this.options = await commonSelectList.initDictDataGet(this,dictType);
            },
            // 下拉框点击事件
            handleButton(){
                /* 子组件通过事件发射向父组件传递事件及参数，$emit即为发射事件
                   第一个参数为向父组件传递的事件名，第二个参数为向父组件传递的参数 */
                this.$emit( 'handleButton', this.svalue);
            }
        },
        watch:{
            //判断下拉框的值是否有改变
            value(val) {
                this.svalue = val;//②监听外部对props属性result的变更，并同步到组件内的data属性myResult中
            },
            svalue(val, oldVal){
                if(val!=oldVal) {
                    this.$emit("input", val);//③组件内对myResult变更后向外部发送事件通知
                }
            }
        },
        mounted(){
            // this.svalue=this.value;//初始话下拉框的值
            this.getDictionary_option(this.dictType);
        }
    }
</script>
