151 lines
4.0 KiB
JavaScript
151 lines
4.0 KiB
JavaScript
Component({
|
||
properties: {
|
||
top: {
|
||
type: null,
|
||
},
|
||
type: {
|
||
type: null,
|
||
},
|
||
start: {
|
||
type: null,
|
||
},
|
||
end: {
|
||
type: null,
|
||
},
|
||
},
|
||
data: {
|
||
date_obj_arr: [],
|
||
m_index: 8888,
|
||
d_index: 9999,
|
||
}, // 私有数据,可用于模板渲染
|
||
|
||
lifetimes: {
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {
|
||
this.getData();
|
||
},
|
||
moved() {},
|
||
detached() {},
|
||
},
|
||
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {}, // 此处attached的声明会被lifetimes字段中的声明覆盖
|
||
ready() {},
|
||
|
||
pageLifetimes: {
|
||
// 组件所在页面的生命周期函数
|
||
show() {},
|
||
hide() {},
|
||
resize() {},
|
||
},
|
||
|
||
methods: {
|
||
getData() {
|
||
//获取日期数组
|
||
let month_arr = this.getMonthsArr();
|
||
//获取今天的日期和月份
|
||
let now_month =
|
||
new Date().getMonth() + 1 < 10
|
||
? "0" + (new Date().getMonth() + 1)
|
||
: new Date().getMonth() + 1 + "";
|
||
let current_day = new Date().getDate();
|
||
month_arr.forEach((item) => {
|
||
//获取天数
|
||
let days = this.getMonthDay(item.year, item.month),
|
||
day_arr = [],
|
||
null_arr = [];
|
||
//获取null个数
|
||
let nulls = new Date(item.full).getDay();
|
||
//处理天数数组
|
||
for (let i = 0; i < days; i++) {
|
||
let obj = {};
|
||
obj["all_date"] = item.full + `-${i + 1}`;
|
||
if (current_day == i + 1 && now_month == item.month) {
|
||
obj["value"] = "今天";
|
||
} else {
|
||
obj["value"] = i + 1;
|
||
}
|
||
if (current_day > obj.value && now_month == item.month) {
|
||
obj["isOld"] = "-1";
|
||
} else if (current_day < obj.value && now_month == item.month) {
|
||
obj["isOld"] = "1";
|
||
} else {
|
||
if (now_month == item.month) {
|
||
obj["isOld"] = "0";
|
||
} else {
|
||
obj["isOld"] = "1";
|
||
}
|
||
}
|
||
|
||
day_arr.push(obj);
|
||
}
|
||
//获取null数组
|
||
for (let i = 0; i < nulls; i++) {
|
||
null_arr.push("null");
|
||
}
|
||
item.null = null_arr; //加入数组null
|
||
item.day = day_arr; //加入数组day_arr
|
||
});
|
||
this.setData({
|
||
date_obj_arr: month_arr,
|
||
});
|
||
},
|
||
getMonthDay(year, month) {
|
||
let d = new Date(year, month, 0);
|
||
return d.getDate();
|
||
},
|
||
//获取month循环数组(获取动态12个月数组)
|
||
getMonthsArr() {
|
||
let dataArr = [],
|
||
data = new Date(),
|
||
year = data.getFullYear(),
|
||
currentObj = {};
|
||
currentObj.year = year.toString();
|
||
currentObj.month =
|
||
data.getMonth() + 1 < 10
|
||
? "0" + (data.getMonth() + 1)
|
||
: data.getMonth() + 1 + "";
|
||
currentObj.full = currentObj.year + "-" + currentObj.month;
|
||
for (let i = 0; i < 11; i++) {
|
||
data.setDate(1);
|
||
data.setMonth(data.getMonth() + 1); //每次循环一次 月份值加1
|
||
// let current_month = data.getMonth();
|
||
let obj = {};
|
||
obj.year = data.getFullYear().toString();
|
||
obj.month =
|
||
data.getMonth() + 1 < 10
|
||
? "0" + (data.getMonth() + 1)
|
||
: data.getMonth() + 1 + "";
|
||
obj.full = obj.year + "-" + obj.month;
|
||
dataArr.push(obj);
|
||
}
|
||
dataArr.unshift(currentObj);
|
||
return dataArr;
|
||
},
|
||
close() {
|
||
this.triggerEvent("close", this.data.type);
|
||
},
|
||
chooseDate(e) {
|
||
let index1 = e.currentTarget.dataset.index;
|
||
let index2 = e.currentTarget.dataset.dayindex;
|
||
let date = e.currentTarget.dataset.alldate;
|
||
this.toggle(index1, index2);
|
||
this.triggerEvent("timeChange", {
|
||
type: this.data.type,
|
||
date: date,
|
||
});
|
||
},
|
||
toggle(index1, index2, date) {
|
||
//切换选中
|
||
if (this.data.m_index == index1 && this.data.d_index == index2) {
|
||
return;
|
||
} else {
|
||
this.setData({
|
||
m_index: index1,
|
||
d_index: index2,
|
||
});
|
||
}
|
||
},
|
||
},
|
||
});
|