QuestionTypeSelect.vue 1019 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <el-select
  3. v-model="selected"
  4. :clearable="clearable"
  5. :disabled="disabled"
  6. :placeholder="placeholder"
  7. @change="select"
  8. >
  9. <el-option
  10. v-for="item in QUESTION_TYPES"
  11. :key="item.code"
  12. :label="item.name"
  13. :value="item.code"
  14. ></el-option>
  15. </el-select>
  16. </template>
  17. <script>
  18. import { QUESTION_TYPES } from "@/constants/constants";
  19. export default {
  20. name: "QuestionTypeSelect",
  21. props: {
  22. value: {
  23. type: [String, Number],
  24. default: "",
  25. },
  26. disabled: { type: Boolean, default: false },
  27. placeholder: { type: String, default: "请选择题型" },
  28. clearable: { type: Boolean, default: true },
  29. },
  30. data() {
  31. return {
  32. QUESTION_TYPES,
  33. selected: "",
  34. };
  35. },
  36. watch: {
  37. value: {
  38. immediate: true,
  39. handler(val) {
  40. this.selected = val;
  41. },
  42. },
  43. },
  44. methods: {
  45. select() {
  46. this.$emit("input", this.selected);
  47. this.$emit("change", this.selected);
  48. },
  49. },
  50. };
  51. </script>