yuminge-app/yun-min-program-plugin-master/packageC/mycomponent/hotel/date_picker/date_picker.js

151 lines
4.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
});
}
},
},
});