eventSelect.vue 822 B

12345678910111213141516171819202122232425262728293031323334
  1. <template>
  2. <el-select v-model="value" style="width: 100%;">
  3. <el-option v-for="item in events" :key="item.key" :value="item.name" :label="item.name">
  4. <div style="display: flex;justify-content: space-between;align-items: center;">
  5. <span>{{item.name}}</span>
  6. <el-tag size="small" :type="item.type == 'rule' ? 'warning' : 'success'">{{item.type == 'rule' ? 'VIS' : 'JS'}}</el-tag>
  7. </div>
  8. </el-option>
  9. </el-select>
  10. </template>
  11. <script>
  12. export default {
  13. props: ['value'],
  14. data () {
  15. return {
  16. modelValue: this.value,
  17. events: []
  18. }
  19. },
  20. inject: ['getEventsArray'],
  21. mounted () {
  22. this.events = this.getEventsArray()
  23. },
  24. watch: {
  25. modelValue (val) {
  26. this.$emit('input', val)
  27. },
  28. value (val) {
  29. this.modelValue = val
  30. }
  31. }
  32. }
  33. </script>