RotationSelect.vue 916 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <el-select
  3. class="rotation-select"
  4. v-model="selected"
  5. placeholder="请选择"
  6. @change="select"
  7. >
  8. <el-option
  9. v-for="item in optionList"
  10. :key="item"
  11. :label="item"
  12. :value="item"
  13. >
  14. </el-option>
  15. </el-select>
  16. </template>
  17. <script>
  18. const PREDEFINE_OPTIONS = [0, 90, 180, 270];
  19. export default {
  20. name: "rotation-select",
  21. props: {
  22. value: Number,
  23. predefine: Array,
  24. },
  25. data() {
  26. return {
  27. optionList: [],
  28. selected: "",
  29. };
  30. },
  31. watch: {
  32. value: {
  33. immediate: true,
  34. handler(val) {
  35. this.selected = val;
  36. },
  37. },
  38. },
  39. created() {
  40. this.optionList =
  41. this.predefine && this.predefine.length
  42. ? this.predefine
  43. : PREDEFINE_OPTIONS;
  44. },
  45. methods: {
  46. select() {
  47. this.$emit("input", this.selected);
  48. this.$emit("change", this.selected);
  49. },
  50. },
  51. };
  52. </script>