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