fd012f2010b00556f7466e24eecda6c1fbb039e7.svn-base 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /**
  2. * LunarFullCalendar 公共 js
  3. *
  4. * @version 1.0.0
  5. * @author sunjianlei
  6. *
  7. * */
  8. import { getRefPromise } from '@/utils/JEditableTableUtil'
  9. /* 日历的视图类型 */
  10. const calendarViewType = {
  11. month: 'month', // 月视图
  12. basicWeek: 'basicWeek', // 基础周视图
  13. basicDay: 'basicDay',// 基础天视图
  14. agendaWeek: 'agendaWeek', // 议程周视图
  15. agendaDay: 'agendaDay', // 议程天视图
  16. }
  17. /* 定义默认视图 */
  18. const defaultView = calendarViewType.month
  19. /* 定义日历默认配置 */
  20. const defaultSettings = {
  21. locale: 'zh-cn',
  22. // 按钮文字
  23. buttonText: {
  24. today: '今天',
  25. month: '月',
  26. week: '周',
  27. day: '日'
  28. },
  29. // 头部排列方式
  30. header: {
  31. left: 'prev,next, today',
  32. center: 'title',
  33. right: 'hide, custom, month,agendaWeek,agendaDay'
  34. },
  35. //点击今天日列表图
  36. eventLimitClick: 'day',
  37. // 隐藏超出的事件
  38. eventLimit: true,
  39. // 设置每周开始日期为周日
  40. firstDay: 0,
  41. // 默认显示视图
  42. defaultView,
  43. timeFormat: 'H:mm',
  44. axisFormat: 'H:mm',
  45. // agenda视图下是否显示all-day
  46. allDaySlot: true,
  47. // agenda视图下all-day的显示文本
  48. allDayText: '全天',
  49. // 时区默认本地的
  50. timezone: 'local',
  51. // 周视图和日视同的左侧时间显示
  52. slotLabelFormat: 'HH:mm',
  53. // 设置第二天阈值
  54. nextDayThreshold: '00:00:00',
  55. }
  56. /** 提供了一些增强方法 */
  57. const CalendarMixins = {
  58. data() {
  59. return {
  60. calenderCurrentViewType: defaultView
  61. }
  62. },
  63. methods: {
  64. getCalendarConfigEventHandler() {
  65. return {
  66. // 处理 view changed 事件
  67. viewRender: (view, element) => {
  68. let { type } = view
  69. let lastViewType = this.calenderCurrentViewType
  70. this.calenderCurrentViewType = type
  71. if (typeof this.handleViewRender === 'function') {
  72. this.handleViewRender(type, view, element)
  73. }
  74. if (lastViewType !== this.calenderCurrentViewType && typeof this.handleViewChanged === 'function') {
  75. this.handleViewChanged(type, view, element)
  76. }
  77. },
  78. }
  79. },
  80. /** 获取 LunarFullCalendar 实例,ref = baseCalendar */
  81. getCalendar(fn) {
  82. return getRefPromise(this, 'baseCalendar').then(fn)
  83. },
  84. calendarEmit(name, data) {
  85. this.getCalendar(ref => ref.$emit(name, data))
  86. },
  87. /** 强制重新加载所有的事件(日程)*/
  88. calendarReloadEvents() {
  89. this.calendarEmit('reload-events')
  90. }
  91. }
  92. }
  93. export { defaultSettings, calendarViewType, CalendarMixins }