mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 11:19:56 +00:00
126 lines
3.5 KiB
Vue
126 lines
3.5 KiB
Vue
<template>
|
|
<div ref="container" class="calendar-wrapper"/>
|
|
</template>
|
|
|
|
<script>
|
|
import Calendar from "tui-calendar-hi";
|
|
|
|
export default {
|
|
name: 'Calendar',
|
|
props: {
|
|
view: String,
|
|
useFormPopup: {
|
|
type: Boolean,
|
|
default: () => undefined,
|
|
},
|
|
useDetailPopup: {
|
|
type: Boolean,
|
|
default: () => undefined,
|
|
},
|
|
isReadOnly: {
|
|
type: Boolean,
|
|
default: () => undefined,
|
|
},
|
|
usageStatistics: {
|
|
type: Boolean,
|
|
default: () => undefined,
|
|
},
|
|
eventFilter: Function,
|
|
week: Object,
|
|
month: Object,
|
|
gridSelection: {
|
|
type: [Object, Boolean],
|
|
default: () => undefined,
|
|
},
|
|
timezone: Object,
|
|
theme: Object,
|
|
template: Object,
|
|
calendars: Array,
|
|
events: Array,
|
|
},
|
|
data() {
|
|
return {
|
|
calendarInstance: null,
|
|
};
|
|
},
|
|
watch: {
|
|
view(value) {
|
|
this.calendarInstance.changeView(value);
|
|
},
|
|
useFormPopup(value) {
|
|
this.calendarInstance.setOptions({useFormPopup: value});
|
|
},
|
|
useDetailPopup(value) {
|
|
this.calendarInstance.setOptions({useDetailPopup: value});
|
|
},
|
|
isReadOnly(value) {
|
|
this.calendarInstance.setOptions({isReadOnly: value});
|
|
},
|
|
eventFilter(value) {
|
|
this.calendarInstance.setOptions({eventFilter: value});
|
|
},
|
|
week(value) {
|
|
this.calendarInstance.setOptions({week: value});
|
|
},
|
|
month(value) {
|
|
this.calendarInstance.setOptions({month: value});
|
|
},
|
|
gridSelection(value) {
|
|
this.calendarInstance.setOptions({gridSelection: value});
|
|
},
|
|
timezone(value) {
|
|
this.calendarInstance.setOptions({timezone: value});
|
|
},
|
|
theme(value) {
|
|
this.calendarInstance.setTheme(value);
|
|
},
|
|
template(value) {
|
|
this.calendarInstance.setOptions({template: value});
|
|
},
|
|
calendars(value) {
|
|
this.calendarInstance.setCalendars(value);
|
|
},
|
|
events(value) {
|
|
this.calendarInstance.clear();
|
|
this.calendarInstance.createEvents(value);
|
|
},
|
|
},
|
|
mounted() {
|
|
this.calendarInstance = new Calendar(this.$refs.container, {
|
|
defaultView: this.view,
|
|
useFormPopup: this.useFormPopup,
|
|
useDetailPopup: this.useDetailPopup,
|
|
isReadOnly: this.isReadOnly,
|
|
usageStatistics: this.usageStatistics,
|
|
eventFilter: this.eventFilter,
|
|
week: this.week,
|
|
month: this.month,
|
|
gridSelection: this.gridSelection,
|
|
timezone: this.timezone,
|
|
theme: this.theme,
|
|
template: this.template,
|
|
calendars: this.calendars,
|
|
});
|
|
this.addEventListeners();
|
|
this.calendarInstance.createEvents(this.events);
|
|
},
|
|
beforeDestroy() {
|
|
this.calendarInstance.off();
|
|
this.calendarInstance.destroy();
|
|
},
|
|
methods: {
|
|
addEventListeners() {
|
|
Object.keys(this.$listeners).forEach((eventName) => {
|
|
this.calendarInstance.on(eventName, (...args) => this.$emit(eventName, ...args));
|
|
});
|
|
},
|
|
getRootElement() {
|
|
return this.$refs.container;
|
|
},
|
|
getInstance() {
|
|
return this.calendarInstance;
|
|
},
|
|
},
|
|
}
|
|
</script>
|