|
@@ -508,15 +508,81 @@ function getFiledNames(formData) {
|
|
|
|
|
|
//根据开始时间 结束时间计算天数
|
|
|
function startEndFun(start, end) {
|
|
|
- if (start && end) {
|
|
|
- let startTime = new Date(start) // 开始时间
|
|
|
- let endTime = new Date(end) // 结束时间
|
|
|
- let usedTime = endTime - startTime // 相差的毫秒数
|
|
|
- let days = (usedTime / 1000 / 60 / 60).toFixed(2) // 计算出天数
|
|
|
- return days
|
|
|
- } else {
|
|
|
- return null
|
|
|
- }
|
|
|
+ let startTime=new Date(start)
|
|
|
+ let endTime=new Date(end)
|
|
|
+ if (startTime >= endTime) return 0;
|
|
|
+ //1,分钟取整
|
|
|
+ startTime = carryTime(startTime);
|
|
|
+ endTime = carryTime(endTime);
|
|
|
+ //2,计算总天数
|
|
|
+ var totalTime = 0;//工时,天数
|
|
|
+ if (startTime.getDay() == 6 || startTime.getDay() == 0) {
|
|
|
+ totalTime = endTime.getDate() - startTime.getDate();
|
|
|
+ } else {
|
|
|
+ totalTime = Math.floor(((endTime - startTime) / (3600 * 1000)) / 24);
|
|
|
+ }
|
|
|
+ //3,拿初始值赋值给一个临时变量
|
|
|
+ var tempStartTime = new Date();
|
|
|
+ tempStartTime.setTime(startTime.getTime());
|
|
|
+ //4,计算出总天数
|
|
|
+ while (tempStartTime.getDate() < endTime.getDate()) {
|
|
|
+ if (tempStartTime.getDay() == 6 || tempStartTime.getDay() == 0) {//周六或者周日减去
|
|
|
+ totalTime--;
|
|
|
+ }
|
|
|
+ tempStartTime.setDate(tempStartTime.getDate() + 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ //5,计算出总小时数
|
|
|
+ var temp = 0;//工时,小时
|
|
|
+ do {
|
|
|
+ if (startTime.getDay() == 6 || startTime.getDay() == 0) {//周六周日
|
|
|
+ startTime.setDate(startTime.getDate() + 1);
|
|
|
+ //*********周六周日直接跳过,初始化为早晨9点
|
|
|
+ startTime.setHours(9);
|
|
|
+ startTime.setMinutes(0);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (endTime.getDay() == 6 || endTime.getDay() == 0) {//周六周日
|
|
|
+ endTime.setDate(endTime.getDate() + 1);
|
|
|
+ //*********周六周日直接跳过,初始化为早晨9点
|
|
|
+ endTime.setHours(9);
|
|
|
+ endTime.setMinutes(0);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ let tempMinutes = startTime.getHours() * 60 + startTime.getMinutes();
|
|
|
+ //上午9点到12点半,算工时
|
|
|
+ if (tempMinutes >= 9 * 60 && tempMinutes < (12 * 60 )) {
|
|
|
+ temp += 0.05;
|
|
|
+ }
|
|
|
+ //上午14点到18点半,算工时
|
|
|
+ if (tempMinutes >= 13 * 60 && tempMinutes < (18 * 60 )) {
|
|
|
+ temp += 0.05;
|
|
|
+ }
|
|
|
+ startTime.setTime(startTime.getTime() + 0.5 * 3600 * 1000);//每次增加半个小时
|
|
|
+ } while (startTime.getHours() * 60 + startTime.getMinutes() != endTime.getHours() * 60 + endTime.getMinutes())
|
|
|
+ {
|
|
|
+
|
|
|
+ totalTime += Math.floor(temp / 0.8);
|
|
|
+ totalTime += temp % 0.8;
|
|
|
+ totalTime = Math.round(totalTime * 100) / 100
|
|
|
+ }
|
|
|
+ var days = Math.floor(totalTime);
|
|
|
+ var hours = Math.round((totalTime - days) * 100) / 10;
|
|
|
+ console.log(days + '天', hours + '小时');
|
|
|
+
|
|
|
+ return days * 8 + hours;
|
|
|
+
|
|
|
+ // if (start && end) {
|
|
|
+ // let startTime = new Date(start) // 开始时间
|
|
|
+ // let endTime = new Date(end) // 结束时间
|
|
|
+ // let usedTime = endTime - startTime // 相差的毫秒数
|
|
|
+ // let days = (usedTime / 1000 / 60 / 60).toFixed(2) // 计算出天数
|
|
|
+ // return days
|
|
|
+ // } else {
|
|
|
+ // return null
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
//格式化时间
|
|
@@ -540,9 +606,32 @@ function formatDate(date, fmt) {
|
|
|
return fmt
|
|
|
}
|
|
|
|
|
|
+
|
|
|
function padLeftZero(str) {
|
|
|
return ('00' + str).substr(str.length)
|
|
|
}
|
|
|
+
|
|
|
+/*
|
|
|
+ * 0-15分不算工时
|
|
|
+ * 15-45算半个小时
|
|
|
+ * 45-60算一个小时
|
|
|
+ * */
|
|
|
+ function carryTime(date) {
|
|
|
+ if (date.getMinutes() > 0 && date.getMinutes() < 15) {
|
|
|
+ date.setMinutes(0);
|
|
|
+ }
|
|
|
+ if (date.getMinutes() >= 15 && date.getMinutes() < 30) {
|
|
|
+ date.setMinutes(30);
|
|
|
+ }
|
|
|
+ if (date.getMinutes() > 30 && date.getMinutes() < 45) {
|
|
|
+ date.setMinutes(30);
|
|
|
+ }
|
|
|
+ if (date.getMinutes() >= 45) {
|
|
|
+ date.setHours(date.getHours() + 1);
|
|
|
+ date.setMinutes(0);
|
|
|
+ }
|
|
|
+ return date;
|
|
|
+ }
|
|
|
</script>
|
|
|
<style lang="less" scoped>
|
|
|
.form-main {
|