yuminge-app/yun-min-program-plugin-master/packageE/appointment/mycomponent/calender.js

500 lines
13 KiB
JavaScript

// packageE/appointment/calender/calender.js
Component({
/**
* 组件的属性列表
*/
properties: {
calendarEvents: {
type: Array,
value: [],
},
},
/**
* 组件的初始数据
*/
data: {
datainfo: [],
calendarEvent: [],
preDateList: [],
currentDateList: [],
nextDateList: [],
dataList: [],
swiperCurrent: 0,
year: "",
month: "",
currentDate: "",
currentMonth:
getDateObj().getFullYear() + "-" + (getDateObj().getMonth() + 1),
current_date_id: getDateObj().getDate() - 1 + get_currentMonthDay(),
selected_data_id: getDateObj().getDate() - 1 + get_currentMonthDay(),
},
observers: {
calendarEvents: function (a) {
console.log(a);
this.setData({
datainfo: a,
});
},
},
ready() {
let dateObj = new Date();
let month = dateObj.getMonth() + 1;
let selected_data_id =
dateObj.getFullYear() +
"-" +
(month <= 9 ? "0" + month : month) +
"-" +
(dateObj.getDate() <= 9 ? "0" + dateObj.getDate() : dateObj.getDate());
this.setData({
current_date_id:
dateObj.getFullYear() +
"-" +
(month <= 9 ? "0" + month : month) +
"-" +
(dateObj.getDate() <= 9 ? "0" + dateObj.getDate() : dateObj.getDate()),
selected_data_id,
});
this.triggerEvent("select", {
work_date: selected_data_id,
disabled: this.data.datainfo.includes(selected_data_id),
});
this.setCurrentMonth("current");
this.setPreMonth("pre");
this.setNextMonth("next");
this.setData({
dataList: [
this.data.currentDateList,
this.data.nextDateList,
this.data.preDateList,
],
});
console.log(this.data.dataList);
},
/**
* 组件的方法列表
*/
methods: {
changeDate(e) {
this.setData({
selected_data_id: e.currentTarget.dataset.index,
});
let disabled = e.currentTarget.dataset.disabled || false;
this.triggerEvent("select", {
work_date: e.currentTarget.dataset.index,
disabled: disabled,
});
},
nextMonth() {
let oldValue = this.data.swiperCurrent;
let newValue =
this.data.swiperCurrent == 2 ? 0 : this.data.swiperCurrent + 1;
this.setData({
swiperCurrent: newValue,
});
this.changeMonth(oldValue, newValue);
},
preMonth() {
let oldValue = this.data.swiperCurrent;
let newValue =
this.data.swiperCurrent == 0 ? 2 : this.data.swiperCurrent - 1;
this.setData({
swiperCurrent: newValue,
});
this.changeMonth(oldValue, newValue);
},
changeMonth(oldValue, newValue) {
if (newValue == 0 && oldValue == 2) {
if (this.data.month == 11) {
this.data.month = 0;
this.data.year = this.data.year + 1;
} else {
this.data.month = this.data.month + 1;
}
} else if (newValue == 2 && oldValue == 0) {
if (this.data.month == 0) {
this.data.month = 11;
this.data.year = this.data.year - 1;
} else {
this.data.month = this.data.month - 1;
}
} else if (oldValue > newValue) {
if (this.data.month == 0) {
this.data.month = 11;
this.data.year = this.data.year - 1;
} else {
this.data.month = this.data.month - 1;
}
} else if (oldValue < newValue) {
if (this.data.month == 11) {
this.data.month = 0;
this.data.year = this.data.year + 1;
} else {
this.data.month = this.data.month + 1;
}
}
let pre = newValue == 0 ? 2 : newValue - 1;
let next = newValue == 2 ? 0 : newValue + 1;
let current = newValue;
this.setIndexMonth("current");
this.setNextMonth("next");
this.setPreMonth("prev");
let data = [];
data[pre] = this.data.preDateList;
data[next] = this.data.nextDateList;
data[current] = this.data.currentDateList;
this.setData({
dataList: data,
});
},
swiperChangeMonth(e) {
console.log(this.data.swiperCurrent);
console.log(e.detail.current);
let index = e.detail.current;
this.changeMonth(this.data.swiperCurrent, index);
this.data.swiperCurrent = index;
},
setCurrentMonth(monthType) {
var dateObj = getDateObj();
this.setData({
//currentDate: dateObj.getFullYear() + '年' + (dateObj.getMonth() + 1) + '月' + dateObj.getDate()+'日'
});
let currentDateList = getDateList(dateObj, this, monthType);
forDateList(this.data.datainfo, currentDateList);
console.log(currentDateList, this.data.datainfo);
this.setData({
currentDateList: currentDateList.array,
});
},
setIndexMonth(monthType) {
var dateObj = getDateObj();
dateObj.setMonth(this.data.month); //获取当前月份
dateObj.setFullYear(this.data.year); //获取当前年份
this.setData({
//currentDate: dateObj.getFullYear() + '年' + (dateObj.getMonth() + 1) + '月' + dateObj.getDate()+'日'
});
let currentDateList = getDateList(dateObj, this, monthType);
forDateList(this.data.datainfo, currentDateList);
console.log(currentDateList, this.data.datainfo);
this.setData({
currentDateList: currentDateList.array,
});
},
setPreMonth(monthType) {
console.log(this.data);
let obj = new Date();
if (this.data.month == 0) {
obj.setMonth(11); //获取当前月份
obj.setFullYear(this.data.year - 1); //获取当前年份
} else {
obj.setMonth(this.data.month - 1); //获取当前月份
obj.setFullYear(this.data.year); //获取当前年份
}
let preDateList = getDateList(obj, this, monthType);
this.data.preDateList = preDateList.array;
},
setNextMonth(monthType) {
let obj = new Date();
if (this.data.month == 11) {
obj.setMonth(0); //获取当前月份
obj.setFullYear(this.data.year + 1); //获取当前年份
} else {
obj.setMonth(this.data.month + 1); //获取当前月份
obj.setFullYear(this.data.year); //获取当前年份
}
let nextDateList = getDateList(obj, this, monthType);
this.data.nextDateList = nextDateList.array;
},
},
});
function forDateList(res, date_list) {
for (var i = 0, j = res.length; i < j; i++) {
for (var k = 0, l = date_list.array.length; k < l; k++) {
if (res[i] == date_list.array[k].work_date) {
date_list.array[k].disabled = true;
}
}
}
}
forDateList.judge = function (res, date_list, _this) {
if (res.length == 0) {
_this.setData({
currentDateList: date_list.array,
detail_content: "本月未写日记",
off_time: "",
detail_id: 0,
});
} else {
_this.setData({
currentDateList: date_list.array,
detail_content:
date_list.array[_this.data.date_id].content == undefined
? "当天没写日记"
: date_list.array[_this.data.date_id].content,
off_time:
date_list.array[_this.data.date_id].off_time == undefined
? ""
: date_list.array[_this.data.date_id].off_time,
detail_id:
date_list.array[_this.data.date_id].id == undefined
? 0
: date_list.array[_this.data.date_id].id,
});
}
};
function getDateObj() {
// var date = new Date();
// var a =
// date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate();
return new Date();
}
function getDateList(obj, _this, monthType) {
var array = [];
// var date = obj.getDate();
obj.setDate(1); // 设置日期为1,
var Dday = obj.getDay(); //获取当月第一天是星期几
var Dmonth = obj.getMonth(); //获取当前月份
var Dyear = obj.getFullYear(); //获取当前年份
var date_num = getDateNum(Dmonth + 1, Dyear);
var prev = get_prev_month({
month: obj.getMonth(),
year: obj.getFullYear(),
});
var next = get_next_month({
month: obj.getMonth(),
year: obj.getFullYear(),
});
if (Dday == 0) {
//本月第一天为星期天
var num = 42 - date_num;
prev.month += 1;
for (let i = 0; i < date_num; i++) {
let date = i < 9 ? "0" + (i + 1) : i + 1;
let month = Dmonth < 9 ? "0" + (Dmonth + 1) : Dmonth + 1;
array.push({
type: "current",
date,
month,
year: Dyear,
work_date: Dyear + "-" + month + "-" + date,
overdue: be_overdue(Dyear, Dmonth + 1, i + 1),
});
}
for (let i = 0; i < num; i++) {
let date = i < 9 ? "0" + (i + 1) : i + 1;
let month = next.month <= 9 ? "0" + next.month : next.month;
array.push({
type: "next",
date,
month,
year: next.year,
work_date: next.year + "-" + month + "-" + date,
overdue: be_overdue(next.year, next.month, i + 1),
});
}
} else {
for (let i = prev.date - Dday + 1; i < prev.date + 1; i++) {
let date = i;
let month = prev.month <= 9 ? "0" + prev.month : prev.month;
array.push({
type: "prev",
date,
month,
year: prev.year,
work_date: prev.year + "-" + month + "-" + date,
overdue: be_overdue(prev.year, prev.month, i),
});
}
for (let i = 0; i < date_num; i++) {
let date = i < 9 ? "0" + (i + 1) : i + 1;
let month = Dmonth < 9 ? "0" + (Dmonth + 1) : Dmonth + 1;
array.push({
type: "current",
date,
month,
year: Dyear,
work_date: Dyear + "-" + month + "-" + date,
overdue: be_overdue(Dyear, Dmonth + 1, i + 1),
});
}
for (let i = 0, j = 42 - array.length; i < j; i++) {
let date = i < 9 ? "0" + (i + 1) : i + 1;
let month = next.month <= 9 ? "0" + next.month : next.month;
array.push({
type: "next",
date,
month,
year: next.year,
work_date: next.year + "-" + month + "-" + date,
overdue: be_overdue(next.year, next.month, i + 1),
});
}
}
if (monthType == "current") {
_this.setData({
currentDateList: array,
year: Dyear,
month: Dmonth,
currentDate: Dyear + "-" + (Dmonth + 1),
});
}
return {
array: array,
prev:
prev.year +
"-" +
(prev.month <= 9 ? "0" + prev.month : prev.month) +
"-" +
array[0].date,
next:
next.year +
"-" +
(next.month <= 9 ? "0" + next.month : next.month) +
"-" +
array[41].date,
};
}
function getDateNum(month, year) {
var day30 = [4, 6, 9, 11];
var day31 = [1, 3, 5, 7, 8, 10, 12];
let month_num = 0; //设置当前月份的默认天数
if (inArray(day30, month)) {
//月份为30天
month_num = 30;
} else if (inArray(day31, month)) {
//月份为31天
month_num = 31;
} else {
//2月份
if (parseInt(year) % 4 == 0 || parseInt(year) % 400 == 0) {
//29天
month_num = 29;
} else {
//28天
month_num = 28;
}
}
return month_num;
}
function get_prev_month(obj) {
var date = new Date();
let Dday = null;
if (obj.month == 0) {
date.setFullYear(obj.year - 1);
date.setMonth(11);
date.setDate(getDateNum(12, obj.year - 1));
Dday = date.getDay();
return {
month: 12,
year: obj.year - 1,
day: Dday,
date: getDateNum(12, obj.year - 1),
};
} else {
date.setFullYear(obj.year);
date.setMonth(obj.month - 1);
date.setDate(getDateNum(obj.month, obj.year));
Dday = date.getDay();
return {
month: obj.month,
year: obj.year,
day: Dday,
date: getDateNum(obj.month, obj.year),
};
}
}
//获取本月的第一天是星期几
function get_currentMonthDay() {
var date = new Date();
date.setDate(1);
return date.getDay();
}
function get_next_month(obj) {
var date = new Date();
let Dday = null;
if (obj.month == 11) {
date.setFullYear(obj.year + 1);
date.setMonth(0);
date.setDate(1);
Dday = date.getDay();
return {
month: 1,
year: obj.year + 1,
day: Dday,
date: 1,
};
} else {
date.setFullYear(obj.year);
date.setMonth(obj.month + 1);
date.setDate(1);
Dday = date.getDay();
return {
month: obj.month + 2,
year: obj.year,
day: Dday,
date: 1,
};
}
}
function be_overdue(year, month, day) {
var date = new Date();
if (arguments.length == 3) {
if (year < date.getFullYear()) {
return "once";
} else if (year == date.getFullYear()) {
if (month < date.getMonth() + 1) {
return "once";
} else if (month == date.getMonth() + 1) {
if (day <= date.getDate()) {
return "once";
} else {
return "futrue";
}
} else {
return "futrue";
}
} else {
return "futrue";
}
} else if (arguments.length == 2) {
if (year < date.getFullYear()) {
return "once";
} else if (year == date.getFullYear()) {
if (month <= date.getMonth() + 1) {
return "once";
} else {
return "futrue";
}
} else {
return "futrue";
}
}
}
function inArray(array, value) {
for (var i in array) {
if (array[i] === value) return true;
}
return false;
}