schedule.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 || [], this.detail.type)
  42. }
  43. this.init()
  44. },
  45. methods: {
  46. init () { },
  47. transformEvents (events) {
  48. return events
  49. },
  50. getEvents () {
  51. return this.events
  52. },
  53. save () {
  54. return saveScheduleEvents(this.scheduleOptions, this.getEvents())
  55. },
  56. submit () {
  57. submitSchedule(this.scheduleOptions, this.getEvents()).then(() => {
  58. this.editable = false
  59. this.$emit('submit')
  60. })
  61. }
  62. }
  63. }