metric.vue 814 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <template>
  2. <a-select :value="selected" :dropdownMatchSelectWidth="false" @change="handleChange" style="padding: 2px;">
  3. <a-select-option v-for="m of options" :key="m.label" :value="m.value">
  4. {{ m.label }}
  5. </a-select-option>
  6. </a-select>
  7. </template>
  8. <script>
  9. export default {
  10. name: 'MetricSelect',
  11. props: {
  12. value: {
  13. type: Object,
  14. required: true,
  15. },
  16. options: {
  17. type: Array,
  18. default: () => ([]),
  19. },
  20. },
  21. data () {
  22. const value = this.value || {}
  23. return {
  24. selected: value.value || 0,
  25. }
  26. },
  27. watch: {
  28. value (val = {}) {
  29. this.selected = val.value || 0
  30. },
  31. },
  32. methods: {
  33. handleChange (v) {
  34. this.selected = v
  35. this.$emit('changeSelect', v)
  36. this.$emit('change', this.options[v])
  37. },
  38. },
  39. }
  40. </script>