• wangxl's avatar
    2222 · 5d76244e
    wangxl authored
    5d76244e
paraSelect.vue 2.01 KB
<template>
  <div style=" width:auto; display:inline-block !important; display:inline;">
    <a-select :style="{width: width? width+ 'px':'80%'}" v-model="selected" @change="paraChange($event)" :key="0">
      <a-select-option v-for="item in selectArray" :key="item.key" :value="item.key" select>{{ item.title }}</a-select-option>
    </a-select>
  </div>
</template>
<script>
// 用法 <para-select  v-model="formData.projClass"  :typeId="52" />
export default {
  name: "paraSelect",
  data () {
    return {
      selectArray: [],
      selected: "",
      defaultValue: {
        title: "--请选择" + this.title + "--",
        key: "",
        description: "",
        selected: true,
        disabled: true,
      },
    };
  },
  props: {
    value: {
      type: String,
      default () {
        return null
      }
    },
    typeId: {
      type: Number,
      default () {
        return null
      }
    },
    title: {
      type: String,
      default () {
        return ''
      }
    },
    width: {
      type: Number,
      default () {
        return null
      }
    },
  },
  created () {
    this.loadSelected()
  },
  methods: {
    loadSelected () {
      let pars = { typeId: this.typeId }
      this.$api.parameter.getParameterList(pars).then(({ data = { data } }) => {
        if (data) {
          this.selectArray = data.data
          this.selectArray.unshift(this.defaultValue)
          if (!!this.value) {
            this.loadState = true
            this.selected = this.value
          }
          else
            this.selected = ""
        }
      }).catch(() => { })
    },
    paraChange (value) {
      this.$emit("input", value);
      var newArr = this.selectArray.filter(x => x.key == value);
      if (!!newArr && newArr.length > 0) {
        var text = !!value ? newArr[0].title : ''
        this.$emit('changeTitle', text)
      }
      this.$emit("change");
    }
  },
  watch: {
    value: {
      handler (value) {
        if (!!value)
          this.selected = value
      },
    }
  }
};
</script>