LevelOne.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <el-select
  3. class="level-one"
  4. v-model="levelModel"
  5. style="width: 200px;"
  6. @change="selected"
  7. :placeholder="placeholder"
  8. :clearable="clearable"
  9. :disabled="disabled"
  10. >
  11. <el-option
  12. v-for="item in dataList"
  13. :key="item.id"
  14. :value="item.id"
  15. :label="item.name"
  16. >
  17. </el-option>
  18. </el-select>
  19. </template>
  20. <script>
  21. import { getData } from "./com-func";
  22. export default {
  23. name: "level-one",
  24. props: {
  25. value: {
  26. type: [String, Number]
  27. },
  28. setDefault: {
  29. type: Boolean,
  30. default: false
  31. },
  32. placeholder: {
  33. type: String,
  34. default: "请选择选项"
  35. },
  36. clearable: {
  37. type: Boolean,
  38. default: false
  39. },
  40. disabled: {
  41. type: Boolean,
  42. default: false
  43. }
  44. },
  45. data() {
  46. return {
  47. dataList: []
  48. };
  49. },
  50. computed: {
  51. levelModel: {
  52. get() {
  53. return this.value;
  54. },
  55. set(selectId) {
  56. this.$emit("input", selectId);
  57. }
  58. }
  59. },
  60. created() {
  61. this.search();
  62. },
  63. methods: {
  64. async search() {
  65. const data = await getData("level-one");
  66. this.dataList = data.map(item => {
  67. return {
  68. id: item.id,
  69. name: item.name
  70. };
  71. });
  72. if (this.setDefault) {
  73. this.levelModel = this.dataList[0] && this.dataList[0].id;
  74. const val = {
  75. value: this.dataList[0].id || "",
  76. label: this.dataList[0].name || ""
  77. };
  78. this.$emit("on-change", val);
  79. this.$emit("on-set");
  80. }
  81. },
  82. selected(val) {
  83. this.$emit("on-change", val);
  84. }
  85. }
  86. };
  87. </script>