elementui el-select选项框组件封装

1. el-select组件封装

<template>
  <el-select
    v-model="status"
    :style="{
      width:width
    }"
    :placeholder="placeholder"
    clearable
    @change="onchange"
  >
    <el-option
      v-for="item in EnumList"
      :key="item.value"
      :label="item.label || item.dictName"
      :value="Number(item.value) || Number(item.dictKey)"
    />
  </el-select>
</template>
<script>
import { getenumList } from '@/api/public'
export default {
  name: 'EnumSelect',
  props: {
    placeholder: {
      type: String,
      default: '状态'
    },
    paramname: {
      type: String,
      default: 'status'
    },
    code: {
      type: String,
      default: ''
    },
    /**
     * 是否需要网络请求
     * */
    fetchType: {
      type: Boolean,
      default: true
    },
    width: {
      type: String,
      default: ''
    },
    list: {
      type: Array,
      default: () => {
        return []
      }
    },
    dictKey: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      status: '',
      EnumList: [],
      newCode: ''
    }
  },
  watch: {
    dictKey: {
      handler(newV) {
        this.status = newV ? Number(newV) : ''
      },
      deep: true,
      immediate: true
    },
    code: {
      handler(newV) {
        this.newCode = newV
      },
      deep: true,
      immediate: true
    }
  },
  created() {
    if (!this.fetchType) {
      this.EnumList = this.list
    } else {
      this.fetchEnumListData()
    }
  },
  methods: {

    async fetchEnumListData() {
      const res = await getenumList(this.newCode)
      if (res.code === 200) {
        this.EnumList = res.data
      }
    },

    onchange(e) {
      this.$emit('useEnumSelect', { paramname: this.paramname, value: this.status })
    }
  }
}
</script>

2.父组件调用示例

<template>
  <div class="dialog">
    <EnumSelect
      placeholder="请选择"
      paramname="paramname"
      code="code"
      :dict-key="String(dictKey)"
      @useEnumSelect="useEnumSelect"
    />
  </div>
</template>

<script>
import EnumSelect from '@/components/EnumSelect'
export default {
  components: {
    EnumSelect
  },
  data() {
    return {
      dictKey: '',
      form: {
        paramname: ''
      }
    }
  },
  methods: {
    useEnumSelect(data) {
      this.form[data.paramname] = data.value
    }
  }
}
</script>

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值