function registerEvent(picker, index) { function setBackground(target) { target.css({ "background-color": "#FD4845", color: "#fff" }); target .siblings("button") .css({ "background-color": "#FFF4F4", color: "#666" }); } //点击某一个元素时手动添加第一次选中样式 const dom = $(picker.$el).find(".el-picker-panel__shortcut")[index]; setBackground($(dom)); $(picker.$el) .find(".el-picker-panel__shortcut") .on("click", function() { setBackground($(this)); }); } export const dataTime = { today: { text: "今日", onClick(picker) { registerEvent(picker, 0); // 选中样式 return picker.$emit("pick", [new Date(), new Date()]); } }, yesterday: { text: "昨日", onClick(picker) { registerEvent(picker, 1); const date = new Date(); date.setTime(date.getTime() - 3600 * 1000 * 24); return picker.$emit("pick", [date, date]); } }, thisWeek: { text: "本周", onClick(picker) { let end = new Date(); let week = end.getDay(); //一天的毫秒数 let millisecond = 1000 * 60 * 60 * 24; //减去的天数 let minusDay = week != 0 ? week - 1 : 6; //本周 周一 let monday = new Date(end.getTime() - minusDay * millisecond); const start = new Date(monday); start.setHours(0, 0, 0, 0); registerEvent(picker, 2); return picker.$emit("pick", [start, end]); } }, lastWeek: { text: "上周", onClick(picker) { const starta = new Date(); let first = starta.getDate() - starta.getDay() - 6; let startDate = new Date(starta.setDate(first)); const start = new Date(startDate); start.setHours(0, 0, 0, 0); // 上周结束时间 let currentDate = new Date(); let firsts = currentDate.getDate() - currentDate.getDay() - 6; let last = firsts + 6; let endDate = new Date(currentDate.setDate(last)); const end = new Date(endDate); end.setHours(23, 59, 59, 0); registerEvent(picker, 3); return picker.$emit("pick", [start, end]); } }, thisMonth: { text: "本月", onClick(picker) { let currentDate = new Date(); let currentMonth = currentDate.getMonth(); //获得当前年份4位年 let currentYear = currentDate.getFullYear(); //求出本月第一天 const start = new Date(currentYear, currentMonth, 1); const end = new Date(); registerEvent(picker, 4); return picker.$emit("pick", [start, end]); } }, lastMonth: { text: "上月", onClick(picker) { let that = this; //获取当前时间 let currentDate = new Date(); //获得当前月份0-11 let currentMonth = currentDate.getMonth(); //获得当前年份4位年 let currentYear = currentDate.getFullYear(); //获得上一个月的第一天 if (currentMonth == 0) { currentMonth = 11; //月份为上年的最后月份 currentYear--; //年份减1 return new Date(currentYear, currentMonth, 1); } else { //否则,只减去月份 currentMonth--; } const start = new Date(currentYear, currentMonth, 1); //获取当前时间 let currentDates = new Date(); //获得当前月份0-11 let currentMonths = currentDates.getMonth(); //获得当前年份4位年 let currentYears = currentDates.getFullYear(); //当为12月的时候年份需要加1 //月份需要更新为0 也就是下一年的第一个月 if (currentMonths == 11) { currentYears++; currentMonths = 0; //就为 } else { //否则只是月份增加,以便求的下一月的第一天 currentMonths++; } //一天的毫秒数 let millisecond = 1000 * 60 * 60 * 24; //求出上月的最后一天 let aa = new Date(); let thisMonth = aa.getMonth(); //获得当前年份4位年 let thisYear = aa.getFullYear(); //求出本月第一天 let firstDay = new Date(thisYear, thisMonth, 1); let lastDay = new Date(firstDay.getTime() - millisecond); const end = new Date(lastDay); end.setHours(23, 59, 59, 0); registerEvent(picker, 5); return picker.$emit("pick", [start, end]); } }, nearlyAMonth: { text: "近一个月", onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); registerEvent(picker, 6); return picker.$emit("pick", [start, end]); } }, nearlyThreeMonths: { text: "近三个月", onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); registerEvent(picker, 7); return picker.$emit("pick", [start, end]); } }, nearlySixMonths: { text: "近6个月", onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 180); registerEvent(picker, 8); return picker.$emit("pick", [start, end]); } }, withinThisYear: { text: "今年内", onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 365); registerEvent(picker, 9); return picker.$emit("pick", [start, end]); } } };