mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-01 05:30:45 +00:00
fix: 时间快选
This commit is contained in:
parent
9df56f9556
commit
844b2afaca
418
resources/assets/js/functions/web.js
vendored
418
resources/assets/js/functions/web.js
vendored
@ -153,104 +153,386 @@
|
||||
return this.formatTime(date)
|
||||
},
|
||||
|
||||
/**
|
||||
* 时间工具
|
||||
*/
|
||||
dateRangeUtil: {
|
||||
/***
|
||||
* 获得当前时间
|
||||
*/
|
||||
getCurrentDate() {
|
||||
return new Date();
|
||||
},
|
||||
|
||||
/***
|
||||
* 获得本周起止时间
|
||||
*/
|
||||
getCurrentWeek() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//返回date是一周中的某一天
|
||||
let week = currentDate.getDay();
|
||||
|
||||
//一天的毫秒数
|
||||
let millisecond = 1000 * 60 * 60 * 24;
|
||||
//减去的天数
|
||||
let minusDay = week != 0 ? week - 1 : 6;
|
||||
//alert(minusDay);
|
||||
//本周 周一
|
||||
let monday = new Date(currentDate.getTime() - (minusDay * millisecond));
|
||||
//本周 周日
|
||||
let sunday = new Date(monday.getTime() + (6 * millisecond));
|
||||
//添加本周时间
|
||||
startStop.push(monday); //本周起始时间
|
||||
//添加本周最后一天时间
|
||||
startStop.push(sunday); //本周终止时间
|
||||
//返回
|
||||
return startStop;
|
||||
},
|
||||
|
||||
/***
|
||||
* 获得本月的起止时间
|
||||
*/
|
||||
getCurrentMonth() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//获得当前月份0-11
|
||||
let currentMonth = currentDate.getMonth();
|
||||
//获得当前年份4位年
|
||||
let currentYear = currentDate.getFullYear();
|
||||
//求出本月第一天
|
||||
let firstDay = new Date(currentYear, currentMonth, 1);
|
||||
|
||||
|
||||
//当为12月的时候年份需要加1
|
||||
//月份需要更新为0 也就是下一年的第一个月
|
||||
if (currentMonth == 11) {
|
||||
currentYear++;
|
||||
currentMonth = 0; //就为
|
||||
} else {
|
||||
//否则只是月份增加,以便求的下一月的第一天
|
||||
currentMonth++;
|
||||
}
|
||||
|
||||
|
||||
//一天的毫秒数
|
||||
let millisecond = 1000 * 60 * 60 * 24;
|
||||
//下月的第一天
|
||||
let nextMonthDayOne = new Date(currentYear, currentMonth, 1);
|
||||
//求出上月的最后一天
|
||||
let lastDay = new Date(nextMonthDayOne.getTime() - millisecond);
|
||||
|
||||
//添加至数组中返回
|
||||
startStop.push(firstDay);
|
||||
startStop.push(lastDay);
|
||||
//返回
|
||||
return startStop;
|
||||
},
|
||||
|
||||
/**
|
||||
* 得到本季度开始的月份
|
||||
* @param month 需要计算的月份
|
||||
***/
|
||||
getQuarterSeasonStartMonth(month) {
|
||||
let spring = 0; //春
|
||||
let summer = 3; //夏
|
||||
let fall = 6; //秋
|
||||
let winter = 9; //冬
|
||||
//月份从0-11
|
||||
if (month < 3) {
|
||||
return spring;
|
||||
}
|
||||
|
||||
if (month < 6) {
|
||||
return summer;
|
||||
}
|
||||
|
||||
if (month < 9) {
|
||||
return fall;
|
||||
}
|
||||
|
||||
return winter;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获得该月的天数
|
||||
* @param year 年份
|
||||
* @param month 月份
|
||||
* */
|
||||
getMonthDays(year, month) {
|
||||
//本月第一天 1-31
|
||||
let relativeDate = new Date(year, month, 1);
|
||||
//获得当前月份0-11
|
||||
let relativeMonth = relativeDate.getMonth();
|
||||
//获得当前年份4位年
|
||||
let relativeYear = relativeDate.getFullYear();
|
||||
|
||||
//当为12月的时候年份需要加1
|
||||
//月份需要更新为0 也就是下一年的第一个月
|
||||
if (relativeMonth == 11) {
|
||||
relativeYear++;
|
||||
relativeMonth = 0;
|
||||
} else {
|
||||
//否则只是月份增加,以便求的下一月的第一天
|
||||
relativeMonth++;
|
||||
}
|
||||
//一天的毫秒数
|
||||
let millisecond = 1000 * 60 * 60 * 24;
|
||||
//下月的第一天
|
||||
let nextMonthDayOne = new Date(relativeYear, relativeMonth, 1);
|
||||
//返回得到上月的最后一天,也就是本月总天数
|
||||
return new Date(nextMonthDayOne.getTime() - millisecond).getDate();
|
||||
},
|
||||
|
||||
/**
|
||||
* 获得本季度的起止日期
|
||||
*/
|
||||
getCurrentSeason() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//获得当前月份0-11
|
||||
let currentMonth = currentDate.getMonth();
|
||||
//获得当前年份4位年
|
||||
let currentYear = currentDate.getFullYear();
|
||||
//获得本季度开始月份
|
||||
let quarterSeasonStartMonth = this.getQuarterSeasonStartMonth(currentMonth);
|
||||
//获得本季度结束月份
|
||||
let quarterSeasonEndMonth = quarterSeasonStartMonth + 2;
|
||||
|
||||
//获得本季度开始的日期
|
||||
let quarterSeasonStartDate = new Date(currentYear, quarterSeasonStartMonth, 1);
|
||||
//获得本季度结束的日期
|
||||
let quarterSeasonEndDate = new Date(currentYear, quarterSeasonEndMonth, this.getMonthDays(currentYear, quarterSeasonEndMonth));
|
||||
//加入数组返回
|
||||
startStop.push(quarterSeasonStartDate);
|
||||
startStop.push(quarterSeasonEndDate);
|
||||
//返回
|
||||
return startStop;
|
||||
},
|
||||
|
||||
/***
|
||||
* 得到本年的起止日期
|
||||
*
|
||||
*/
|
||||
getCurrentYear() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//获得当前年份4位年
|
||||
let currentYear = currentDate.getFullYear();
|
||||
|
||||
//本年第一天
|
||||
let currentYearFirstDate = new Date(currentYear, 0, 1);
|
||||
//本年最后一天
|
||||
let currentYearLastDate = new Date(currentYear, 11, 31);
|
||||
//添加至数组
|
||||
startStop.push(currentYearFirstDate);
|
||||
startStop.push(currentYearLastDate);
|
||||
//返回
|
||||
return startStop;
|
||||
},
|
||||
|
||||
/**
|
||||
* 返回上一个月的第一天Date类型
|
||||
* @param year 年
|
||||
* @param month 月
|
||||
**/
|
||||
getPriorMonthFirstDay(year, month) {
|
||||
//年份为0代表,是本年的第一月,所以不能减
|
||||
if (month == 0) {
|
||||
month = 11; //月份为上年的最后月份
|
||||
year--; //年份减1
|
||||
return new Date(year, month, 1);
|
||||
}
|
||||
//否则,只减去月份
|
||||
month--;
|
||||
return new Date(year, month, 1);
|
||||
},
|
||||
|
||||
/**
|
||||
* 获得上一月的起止日期
|
||||
* ***/
|
||||
getPreviousMonth() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//获得当前月份0-11
|
||||
let currentMonth = currentDate.getMonth();
|
||||
//获得当前年份4位年
|
||||
let currentYear = currentDate.getFullYear();
|
||||
//获得上一个月的第一天
|
||||
let priorMonthFirstDay = this.getPriorMonthFirstDay(currentYear, currentMonth);
|
||||
//获得上一月的最后一天
|
||||
let priorMonthLastDay = new Date(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth(), this.getMonthDays(priorMonthFirstDay.getFullYear(), priorMonthFirstDay.getMonth()));
|
||||
//添加至数组
|
||||
startStop.push(priorMonthFirstDay);
|
||||
startStop.push(priorMonthLastDay);
|
||||
//返回
|
||||
return startStop;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* 获得上一周的起止日期
|
||||
* **/
|
||||
getPreviousWeek() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//返回date是一周中的某一天
|
||||
let week = currentDate.getDay();
|
||||
//一天的毫秒数
|
||||
let millisecond = 1000 * 60 * 60 * 24;
|
||||
//减去的天数
|
||||
let minusDay = week != 0 ? week - 1 : 6;
|
||||
//获得当前周的第一天
|
||||
let currentWeekDayOne = new Date(currentDate.getTime() - (millisecond * minusDay));
|
||||
//上周最后一天即本周开始的前一天
|
||||
let priorWeekLastDay = new Date(currentWeekDayOne.getTime() - millisecond);
|
||||
//上周的第一天
|
||||
let priorWeekFirstDay = new Date(priorWeekLastDay.getTime() - (millisecond * 6));
|
||||
|
||||
//添加至数组
|
||||
startStop.push(priorWeekFirstDay);
|
||||
startStop.push(priorWeekLastDay);
|
||||
|
||||
return startStop;
|
||||
},
|
||||
|
||||
/**
|
||||
* 得到上季度的起始日期
|
||||
* year 这个年应该是运算后得到的当前本季度的年份
|
||||
* month 这个应该是运算后得到的当前季度的开始月份
|
||||
* */
|
||||
getPriorSeasonFirstDay(year, month) {
|
||||
let spring = 0; //春
|
||||
let summer = 3; //夏
|
||||
let fall = 6; //秋
|
||||
let winter = 9; //冬
|
||||
//月份从0-11
|
||||
switch (month) {//季度的其实月份
|
||||
case spring:
|
||||
//如果是第一季度则应该到去年的冬季
|
||||
year--;
|
||||
month = winter;
|
||||
break;
|
||||
case summer:
|
||||
month = spring;
|
||||
break;
|
||||
case fall:
|
||||
month = summer;
|
||||
break;
|
||||
case winter:
|
||||
month = fall;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
return new Date(year, month, 1);
|
||||
},
|
||||
|
||||
/**
|
||||
* 得到上季度的起止日期
|
||||
* **/
|
||||
getPreviousSeason() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//获得当前月份0-11
|
||||
let currentMonth = currentDate.getMonth();
|
||||
//获得当前年份4位年
|
||||
let currentYear = currentDate.getFullYear();
|
||||
//上季度的第一天
|
||||
let priorSeasonFirstDay = this.getPriorSeasonFirstDay(currentYear, currentMonth);
|
||||
//上季度的最后一天
|
||||
let priorSeasonLastDay = new Date(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth() + 2, this.getMonthDays(priorSeasonFirstDay.getFullYear(), priorSeasonFirstDay.getMonth() + 2));
|
||||
//添加至数组
|
||||
startStop.push(priorSeasonFirstDay);
|
||||
startStop.push(priorSeasonLastDay);
|
||||
return startStop;
|
||||
},
|
||||
|
||||
/**
|
||||
* 得到去年的起止日期
|
||||
* **/
|
||||
getPreviousYear() {
|
||||
//起止日期数组
|
||||
let startStop = [];
|
||||
//获取当前时间
|
||||
let currentDate = this.getCurrentDate();
|
||||
//获得当前年份4位年
|
||||
let currentYear = currentDate.getFullYear();
|
||||
currentYear--;
|
||||
let priorYearFirstDay = new Date(currentYear, 0, 1);
|
||||
let priorYearLastDay = new Date(currentYear, 11, 1);
|
||||
//添加至数组
|
||||
startStop.push(priorYearFirstDay);
|
||||
startStop.push(priorYearLastDay);
|
||||
return startStop;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取一些指定时间
|
||||
* @param str
|
||||
* @param retInt
|
||||
* @param retDate
|
||||
* @returns {*|string}
|
||||
*/
|
||||
getData(str, retInt = false) {
|
||||
let now = new Date(); //当前日期
|
||||
let nowDayOfWeek = now.getDay(); //今天本周的第几天
|
||||
let nowDay = now.getDate(); //当前日
|
||||
let nowMonth = now.getMonth(); //当前月
|
||||
let nowYear = now.getYear(); //当前年
|
||||
nowYear += (nowYear < 2000) ? 1900 : 0;
|
||||
let lastMonthDate = new Date(); //上月日期
|
||||
lastMonthDate.setDate(1);
|
||||
lastMonthDate.setMonth(lastMonthDate.getMonth()-1);
|
||||
let lastMonth = lastMonthDate.getMonth();
|
||||
let getQuarterStartMonth = () => {
|
||||
let quarterStartMonth = 0;
|
||||
if(nowMonth < 3) {
|
||||
quarterStartMonth = 0;
|
||||
}
|
||||
if (2 < nowMonth && nowMonth < 6) {
|
||||
quarterStartMonth = 3;
|
||||
}
|
||||
if (5 < nowMonth && nowMonth < 9) {
|
||||
quarterStartMonth = 6;
|
||||
}
|
||||
if (nowMonth > 8) {
|
||||
quarterStartMonth = 9;
|
||||
}
|
||||
return quarterStartMonth;
|
||||
};
|
||||
let getMonthDays = (myMonth) => {
|
||||
let monthStartDate = new Date(nowYear, myMonth, 1);
|
||||
let monthEndDate = new Date(nowYear, myMonth + 1, 1);
|
||||
return (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);
|
||||
};
|
||||
//
|
||||
let time = now.getTime();
|
||||
getSpecifyDate(str, retDate = false) {
|
||||
let time = new Date().getTime();
|
||||
switch (str) {
|
||||
case '今天':
|
||||
time = now;
|
||||
break;
|
||||
case '昨天':
|
||||
time = now - 86400000;
|
||||
time -= 86400 * 1000;
|
||||
break;
|
||||
case '前天':
|
||||
time = now - 86400000 * 2;
|
||||
time -= 86400 * 2000;
|
||||
break;
|
||||
case '本周':
|
||||
time = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
|
||||
time = $A.dateRangeUtil.getCurrentWeek()[0].getTime();
|
||||
break;
|
||||
case '本周结束':
|
||||
time = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
|
||||
time = $A.dateRangeUtil.getCurrentWeek()[1].getTime();
|
||||
break;
|
||||
case '上周':
|
||||
time = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7);
|
||||
time = $A.dateRangeUtil.getPreviousWeek()[0].getTime();
|
||||
break;
|
||||
case '上周结束':
|
||||
time = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1);
|
||||
break;
|
||||
case '本周2':
|
||||
time = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1);
|
||||
break;
|
||||
case '本周结束2':
|
||||
time = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek) + 1);
|
||||
break;
|
||||
case '上周2':
|
||||
time = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 7 + 1);
|
||||
break;
|
||||
case '上周结束2':
|
||||
time = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 1 + 1);
|
||||
time = $A.dateRangeUtil.getPreviousWeek()[1].getTime();
|
||||
break;
|
||||
case '本月':
|
||||
time = new Date(nowYear, nowMonth, 1);
|
||||
time = $A.dateRangeUtil.getCurrentMonth()[0].getTime();
|
||||
break;
|
||||
case '本月结束':
|
||||
time = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
|
||||
time = $A.dateRangeUtil.getCurrentMonth()[1].getTime();
|
||||
break;
|
||||
case '上个月':
|
||||
time = new Date(nowYear, lastMonth, 1);
|
||||
time = $A.dateRangeUtil.getPreviousMonth()[0].getTime();
|
||||
break;
|
||||
case '上个月结束':
|
||||
time = new Date(nowYear, lastMonth, getMonthDays(lastMonth));
|
||||
time = $A.dateRangeUtil.getPreviousMonth()[1].getTime();
|
||||
break;
|
||||
case '本季度':
|
||||
time = new Date(nowYear, getQuarterStartMonth(), 1);
|
||||
time = $A.dateRangeUtil.getCurrentSeason()[0].getTime();
|
||||
break;
|
||||
case '本季度结束':
|
||||
let quarterEndMonth = getQuarterStartMonth() + 2;
|
||||
time = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));
|
||||
time = $A.dateRangeUtil.getCurrentSeason()[1].getTime();
|
||||
break;
|
||||
}
|
||||
if (retInt === true) {
|
||||
return time;
|
||||
time = $A.formatDate("Y-m-d", Math.floor(time / 1000))
|
||||
if (retDate === true) {
|
||||
return new Date(time);
|
||||
}
|
||||
return $A.formatDate("Y-m-d", parseInt(time / 1000))
|
||||
return time
|
||||
},
|
||||
|
||||
/**
|
||||
@ -276,12 +558,12 @@
|
||||
}, {
|
||||
text: $A.L('本周'),
|
||||
value() {
|
||||
return [$A.getData('今天', true), lastSecond($A.getData('本周结束2', true))];
|
||||
return [new Date(), lastSecond($A.getSpecifyDate('本周结束', true).getTime())];
|
||||
}
|
||||
}, {
|
||||
text: $A.L('本月'),
|
||||
value() {
|
||||
return [$A.getData('今天', true), lastSecond($A.getData('本月结束', true))];
|
||||
return [new Date(), lastSecond($A.getSpecifyDate('本月结束', true).getTime())];
|
||||
}
|
||||
}, {
|
||||
text: $A.L('3天'),
|
||||
|
||||
@ -92,13 +92,10 @@ export default {
|
||||
|
||||
methods: {
|
||||
dateShortcuts(act) {
|
||||
const lastSecond = (e) => {
|
||||
return $A.Date($A.formatDate("Y-m-d 23:59:29", Math.round(e / 1000)))
|
||||
};
|
||||
if (act === 'prev') {
|
||||
return [$A.getData('上个月', true), lastSecond($A.getData('上个月结束', true))];
|
||||
return [$A.getSpecifyDate('上个月'), $A.getSpecifyDate('上个月结束')];
|
||||
} else if (act === 'this') {
|
||||
return [$A.getData('本月', true), lastSecond($A.getData('本月结束', true))]
|
||||
return [$A.getSpecifyDate('本月'), $A.getSpecifyDate('本月结束')]
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -84,13 +84,10 @@ export default {
|
||||
|
||||
methods: {
|
||||
dateShortcuts(act) {
|
||||
const lastSecond = (e) => {
|
||||
return $A.Date($A.formatDate("Y-m-d 23:59:29", Math.round(e / 1000)))
|
||||
};
|
||||
if (act === 'prev') {
|
||||
return [$A.getData('上个月', true), lastSecond($A.getData('上个月结束', true))];
|
||||
return [$A.getSpecifyDate('上个月'), $A.getSpecifyDate('上个月结束')];
|
||||
} else if (act === 'this') {
|
||||
return [$A.getData('本月', true), lastSecond($A.getData('本月结束', true))]
|
||||
return [$A.getSpecifyDate('本月'), $A.getSpecifyDate('本月结束')]
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -90,23 +90,6 @@ export default {
|
||||
},
|
||||
ruleData: {},
|
||||
|
||||
dateOptions: {
|
||||
shortcuts: [
|
||||
{
|
||||
text: this.$L('上个月'),
|
||||
value() {
|
||||
return [$A.getData('上个月', true), this.lastSecond($A.getData('上个月结束', true))];
|
||||
}
|
||||
},
|
||||
{
|
||||
text: this.$L('这个月'),
|
||||
value() {
|
||||
return [$A.getData('本周', true), this.lastSecond($A.getData('本月结束', true))];
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
allUserShow: false,
|
||||
exportShow: false,
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user