schedule.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {
  2. saveScheduleEvents,
  3. submitSchedule
  4. } from '@/api/calendar'
  5. import { State } from '@/constant'
  6. export default {
  7. props: {
  8. detail: {
  9. type: Object,
  10. default: null
  11. },
  12. hideHeader: {
  13. type: [Boolean, String],
  14. default: false
  15. }
  16. },
  17. data () {
  18. return {
  19. scheduleOptions: null,
  20. editable: false
  21. }
  22. },
  23. computed: {
  24. events () {
  25. return this.scheduleOptions?.events || []
  26. },
  27. isEmpty () {
  28. return this.events.length === 0
  29. },
  30. name () {
  31. return this.scheduleOptions?.name
  32. },
  33. ratio () {
  34. return this.scheduleOptions?.resolutionRatio
  35. }
  36. },
  37. created () {
  38. this.editable = this.detail.status === State.READY
  39. this.scheduleOptions = {
  40. ...this.detail,
  41. events: this.transformEvents(this.detail.events)
  42. }
  43. },
  44. methods: {
  45. transformEvents (events) {
  46. return events
  47. },
  48. getEvents () {
  49. return this.events
  50. },
  51. save () {
  52. return saveScheduleEvents(this.scheduleOptions, this.getEvents())
  53. },
  54. submit () {
  55. submitSchedule(this.scheduleOptions, this.getEvents()).then(() => {
  56. this.editable = false
  57. this.$emit('submit')
  58. })
  59. }
  60. }
  61. }