Select.vue 1.24 KB
Newer Older
liuxin 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
<template>
  <el-select
    :id="id"  v-model="model" v-bind="$attrs"
    v-on="$listeners" v-bind:disabled="isDisable" :clearable="clearable" @click.native="handleClick" >
    <slot></slot>
  </el-select>
</template>

<script>
export default {
  props: {
    value: {
      type: [String, Array, Number],
      default: undefined
    },
    disabled: {
      type: Boolean,
      default: false
    },
    clearable: {
      type: Boolean,
      default: true
    },
    id: {
      type: String,
      default: ''
    }
  },
  computed: {
    model: {
      get() {
        return this.value
      },
      set(newVal) {
        this.$emit('input', newVal)
      }
    },
    mode() {
      return this.$store.state.Status.mode
    },
    isDisable: {
      get() {
        return this.mode === 'display' || this.disabled
      }
    },
    highlight () {
      return this.$store.state.Status.highlights.indexOf(this.id) !== -1
    }
  }, 
  methods: {
    handleClick: function (e) {
      let ev = new Event("click", {"bubbles": true})
      let node = e.target
      if (node.parentElement) {
        node.parentElement.dispatchEvent(ev)
      }
    }
  }
}
</script>

<style>
/* .el-select.highlight .el-input .el-input__inner {
  border-color: red;
} */
</style>