You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.5 KiB
107 lines
2.5 KiB
/** |
|
* 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 } |