MySelect.vue 988 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <el-select
  3. v-model="selectValue"
  4. :filterable="filterable"
  5. :clearable="clearable"
  6. :placeholder="placeholder"
  7. :disabled="disabled"
  8. style="width:100%"
  9. @change="change"
  10. >
  11. <slot />
  12. <el-option
  13. v-for="option in options"
  14. :key="option.id"
  15. :value="option.id"
  16. :label="option.name"
  17. ></el-option>
  18. </el-select>
  19. </template>
  20. <script>
  21. export default {
  22. name: 'MySelect',
  23. props: {
  24. value: {
  25. required: true
  26. },
  27. options: {
  28. required: true,
  29. type: Array
  30. },
  31. filterable: {
  32. type: Boolean
  33. },
  34. clearable: {
  35. type: Boolean
  36. },
  37. placeholder: {},
  38. disabled: {
  39. type: Boolean
  40. }
  41. },
  42. computed: {
  43. selectValue: {
  44. set (value) {
  45. this.$emit('input', value)
  46. },
  47. get () {
  48. return this.value
  49. }
  50. }
  51. },
  52. methods: {
  53. change (...args) {
  54. this.$emit('change', ...args)
  55. }
  56. }
  57. }
  58. </script>
  59. <style lang="scss"></style>