basic-range.vue 982 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <template>
  2. <div class="example-basic">
  3. <el-time-picker
  4. v-model="value1"
  5. :disabled-hours="disabledHours"
  6. :disabled-minutes="disabledMinutes"
  7. :disabled-seconds="disabledSeconds"
  8. placeholder="Arbitrary time"
  9. />
  10. </div>
  11. </template>
  12. <script lang="ts" setup>
  13. import { ref } from 'vue'
  14. const value1 = ref(new Date(2016, 9, 10, 18, 30))
  15. const makeRange = (start: number, end: number) => {
  16. const result: number[] = []
  17. for (let i = start; i <= end; i++) {
  18. result.push(i)
  19. }
  20. return result
  21. }
  22. const disabledHours = () => {
  23. return makeRange(0, 16).concat(makeRange(19, 23))
  24. }
  25. const disabledMinutes = (hour: number) => {
  26. if (hour === 17) {
  27. return makeRange(0, 29)
  28. }
  29. if (hour === 18) {
  30. return makeRange(31, 59)
  31. }
  32. }
  33. const disabledSeconds = (hour: number, minute: number) => {
  34. if (hour === 18 && minute === 30) {
  35. return makeRange(1, 59)
  36. }
  37. }
  38. </script>
  39. <style>
  40. .example-basic .el-date-editor {
  41. margin: 8px;
  42. }
  43. </style>