/** * LunarFullCalendar 公共 js * * @version 1.0.0 * @author sunjianlei * * */ import { getRefPromise } from '@/utils/JEditableTableUtil' /* 日历的视图类型 */ const calendarViewType = { month: 'month', // 月视图 basicWeek: 'basicWeek', // 基础周视图 basicDay: 'basicDay',// 基础天视图 agendaWeek: 'agendaWeek', // 议程周视图 agendaDay: 'agendaDay', // 议程天视图 } /* 定义默认视图 */ const defaultView = calendarViewType.month /* 定义日历默认配置 */ const defaultSettings = { locale: 'zh-cn', // 按钮文字 buttonText: { today: '今天', month: '月', week: '周', day: '日' }, // 头部排列方式 header: { left: 'prev,next, today', center: 'title', right: 'hide, custom, month,agendaWeek,agendaDay' }, //点击今天日列表图 eventLimitClick: 'day', // 隐藏超出的事件 eventLimit: true, // 设置每周开始日期为周日 firstDay: 0, // 默认显示视图 defaultView, timeFormat: 'H:mm', axisFormat: 'H:mm', // agenda视图下是否显示all-day allDaySlot: true, // agenda视图下all-day的显示文本 allDayText: '全天', // 时区默认本地的 timezone: 'local', // 周视图和日视同的左侧时间显示 slotLabelFormat: 'HH:mm', // 设置第二天阈值 nextDayThreshold: '00:00:00', } /** 提供了一些增强方法 */ const CalendarMixins = { data() { return { calenderCurrentViewType: defaultView } }, methods: { getCalendarConfigEventHandler() { return { // 处理 view changed 事件 viewRender: (view, element) => { let { type } = view let lastViewType = this.calenderCurrentViewType this.calenderCurrentViewType = type if (typeof this.handleViewRender === 'function') { this.handleViewRender(type, view, element) } if (lastViewType !== this.calenderCurrentViewType && typeof this.handleViewChanged === 'function') { this.handleViewChanged(type, view, element) } }, } }, /** 获取 LunarFullCalendar 实例,ref = baseCalendar */ getCalendar(fn) { return getRefPromise(this, 'baseCalendar').then(fn) }, calendarEmit(name, data) { this.getCalendar(ref => ref.$emit(name, data)) }, /** 强制重新加载所有的事件(日程)*/ calendarReloadEvents() { this.calendarEmit('reload-events') } } } export { defaultSettings, calendarViewType, CalendarMixins }