瀏覽代碼

周计算算法

CzRger 1 年之前
父節點
當前提交
441787ed4c
共有 2 個文件被更改,包括 21 次插入19 次删除
  1. 10 7
      src/store/modules/app.ts
  2. 11 12
      src/views/staging/zby/center/statistic.vue

+ 10 - 7
src/store/modules/app.ts

@@ -3,7 +3,7 @@ import {getSignTime} from "@/api/modules/sign";
 import {ElMessage} from "element-plus";
 import {ElMessage} from "element-plus";
 import {getSeatDutyPersonSearch} from "@/api/modules/seat";
 import {getSeatDutyPersonSearch} from "@/api/modules/seat";
 import * as Handle from "@/views/staging/common/handle";
 import * as Handle from "@/views/staging/common/handle";
-import {YMD} from '@/utils/util'
+import {YMD, YMDHms} from '@/utils/util'
 
 
 const state = {
 const state = {
 	apiProxy: {
 	apiProxy: {
@@ -12,7 +12,8 @@ const state = {
 	userInfo: <any>{},
 	userInfo: <any>{},
 	userRoleList: [],
 	userRoleList: [],
 	timestamp: new Date().getTime(),
 	timestamp: new Date().getTime(),
-	weekStart: 6,
+	weekStart: 6,	//	日历起始日期,周六
+	weeklySubmitDay: 5,	// 周报提交日期,周五
 	dutyInfo: {}
 	dutyInfo: {}
 }
 }
 
 
@@ -21,24 +22,25 @@ const getters = {
 		return state.userRoleList.some(v => v.permissionValue === 'ZBY')
 		return state.userRoleList.some(v => v.permissionValue === 'ZBY')
 	},
 	},
 	isWeeklyDay: (state) => {
 	isWeeklyDay: (state) => {
-		return new Date(state.timestamp).getDay() === 5
+		return new Date(state.timestamp).getDay() === state.weeklySubmitDay
 	},
 	},
 	yearWeeks: (state) => {
 	yearWeeks: (state) => {
-		const weeklySubmitDay = 5	// 周报提交日期,周五
 		const arr: any = []
 		const arr: any = []
 		const map = new Map()
 		const map = new Map()
-		const firstDate = new Date('2021-11-29')
+		const firstDate = new Date('2023-11-24 00:00:00')
+		let index = 0
 		for (let year = firstDate.getFullYear(); year <= new Date(state.timestamp).getFullYear(); year++) {
 		for (let year = firstDate.getFullYear(); year <= new Date(state.timestamp).getFullYear(); year++) {
 			let num = 1
 			let num = 1
 			let firstWeeklyDate = new Date(year, 0, 1)
 			let firstWeeklyDate = new Date(year, 0, 1)
-			while (firstWeeklyDate.getDay() !== weeklySubmitDay) {
+			while (firstWeeklyDate.getDay() !== state.weeklySubmitDay) {
 				firstWeeklyDate = new Date(firstWeeklyDate.getTime() + Handle.oneDayTime)
 				firstWeeklyDate = new Date(firstWeeklyDate.getTime() + Handle.oneDayTime)
 			}
 			}
 			let start = new Date(firstWeeklyDate.getTime() - Handle.oneDayTime * 6)
 			let start = new Date(firstWeeklyDate.getTime() - Handle.oneDayTime * 6)
 			while (new Date(start).getTime() < new Date(year + 1, 0, 1).getTime()) {
 			while (new Date(start).getTime() < new Date(year + 1, 0, 1).getTime()) {
 				const end = new Date(start).getTime() + Handle.oneDayTime * 6
 				const end = new Date(start).getTime() + Handle.oneDayTime * 6
-				if (end >= firstDate.getTime() &&  end <= state.timestamp) {
+				if (end >= firstDate.getTime() && end <= state.timestamp) {
 					const obj = {
 					const obj = {
+						index: index,
 						date: [new Date(start), new Date(end)],
 						date: [new Date(start), new Date(end)],
 						yearWeekStr: `${year}年第${num}周`,
 						yearWeekStr: `${year}年第${num}周`,
 						weekStr: `第${num}周`,
 						weekStr: `第${num}周`,
@@ -51,6 +53,7 @@ const getters = {
 					}
 					}
 					arr.push(obj)
 					arr.push(obj)
 					map.set(obj.id, obj)
 					map.set(obj.id, obj)
+					index++
 				}
 				}
 				start = new Date(end + Handle.oneDayTime)
 				start = new Date(end + Handle.oneDayTime)
 				num++
 				num++

+ 11 - 12
src/views/staging/zby/center/statistic.vue

@@ -57,7 +57,7 @@
               <div class="page-content-item __hover"
               <div class="page-content-item __hover"
                    :class="{today: item.isToday, active: dateValue.selectWeek === item.id}"
                    :class="{today: item.isToday, active: dateValue.selectWeek === item.id}"
                    @click="onWeekClick(item)"
                    @click="onWeekClick(item)"
-              >{{item.yearWeekStr}}</div>
+              >{{item.weekStr}}</div>
             </template>
             </template>
           </template>
           </template>
           <template v-if="dateType === 'month'">
           <template v-if="dateType === 'month'">
@@ -353,8 +353,8 @@ export default defineComponent({
       let flag = false
       let flag = false
       if (state.dateType === 'day' && state.dateCalendar.day.length > 0) {
       if (state.dateType === 'day' && state.dateCalendar.day.length > 0) {
         flag = true
         flag = true
-      } else if (state.dateType === 'week' && state.dateCalendar.week.length > 0 && store.getters['app/yearWeeks'].length > 0) {
-        flag = state.dateCalendar.week[0].week > store.getters['app/yearWeeks'][0].week
+      } else if (state.dateType === 'week' && state.dateCalendar.week.length > 0 && store.getters['app/yearWeeks'].list.length > 0) {
+        flag = state.dateCalendar.week[0].index > 0
       } else if (state.dateType === 'month' && state.dateCalendar.month.length > 0) {
       } else if (state.dateType === 'month' && state.dateCalendar.month.length > 0) {
         flag = true
         flag = true
       }
       }
@@ -364,8 +364,8 @@ export default defineComponent({
       let flag = false
       let flag = false
       if (state.dateType === 'day' && state.dateCalendar.day.length > 0) {
       if (state.dateType === 'day' && state.dateCalendar.day.length > 0) {
         flag = state.dateCalendar.day.every(v => new Date(that.$util.YMD(v.date)).getTime() < new Date(that.$util.YMD(store.state.app.timestamp)).getTime())
         flag = state.dateCalendar.day.every(v => new Date(that.$util.YMD(v.date)).getTime() < new Date(that.$util.YMD(store.state.app.timestamp)).getTime())
-      } else if (state.dateType === 'week' && state.dateCalendar.week.length > 0 && store.getters['app/yearWeeks'].length > 0) {
-        flag = state.dateCalendar.week[state.dateCalendar.week.length - 1].week < store.getters['app/yearWeeks'][store.getters['app/yearWeeks'].length - 1].week
+      } else if (state.dateType === 'week' && state.dateCalendar.week.length > 0 && store.getters['app/yearWeeks'].list.length > 0) {
+        flag = state.dateCalendar.week[state.dateCalendar.week.length - 1].index < store.getters['app/yearWeeks'].list.length - 1
       } else if (state.dateType === 'month' && state.dateCalendar.month.length > 0) {
       } else if (state.dateType === 'month' && state.dateCalendar.month.length > 0) {
         flag = state.dateCalendar.month.every(v => new Date(that.$util.YM(v.date)).getTime() < new Date(that.$util.YM(store.state.app.timestamp)).getTime())
         flag = state.dateCalendar.month.every(v => new Date(that.$util.YM(v.date)).getTime() < new Date(that.$util.YM(store.state.app.timestamp)).getTime())
       }
       }
@@ -389,7 +389,7 @@ export default defineComponent({
       if (state.dateType === 'day') {
       if (state.dateType === 'day') {
         initStaticDay(isLast ? state.dateCalendar.day[0].date.getTime() - oneDayTime : state.dateCalendar.day[6].date.getTime() + oneDayTime * 7)
         initStaticDay(isLast ? state.dateCalendar.day[0].date.getTime() - oneDayTime : state.dateCalendar.day[6].date.getTime() + oneDayTime * 7)
       } else if (state.dateType === 'week') {
       } else if (state.dateType === 'week') {
-        initStaticWeek(isLast ? state.dateCalendar.week[0].week - 7 : state.dateCalendar.week[0].week + 7)
+        initStaticWeek(isLast ? state.dateCalendar.week[0].index - 1 : state.dateCalendar.week[0].index + 7)
       } else if (state.dateType === 'month') {
       } else if (state.dateType === 'month') {
         initStaticMonth(isLast ? getM(state.dateCalendar.month[0].date, -1) : getM(state.dateCalendar.month[6].date, 7))
         initStaticMonth(isLast ? getM(state.dateCalendar.month[0].date, -1) : getM(state.dateCalendar.month[6].date, 7))
       }
       }
@@ -417,11 +417,12 @@ export default defineComponent({
       }
       }
       state.dateCalendar.day = arr
       state.dateCalendar.day = arr
     }
     }
-    const initStaticWeek = (firstWeek) => {
+    const initStaticWeek = (weekIndex) => {
+      const firstWeekIndex = parseInt(String(weekIndex / 7)) * 7
       state.dateCalendar.week = []
       state.dateCalendar.week = []
       const arr: any = []
       const arr: any = []
       for (let i = 0; i <= 6; i++) {
       for (let i = 0; i <= 6; i++) {
-        const w = store.getters['app/yearWeeks']?.list[firstWeek - 1 + i]
+        const w = store.getters['app/yearWeeks']?.list?.[firstWeekIndex + i]
         if (w) {
         if (w) {
           arr.push(w)
           arr.push(w)
         }
         }
@@ -446,10 +447,9 @@ export default defineComponent({
       const today = new Date(state.tempToday)
       const today = new Date(state.tempToday)
       state.dateValue.selectDay = JSON.parse(JSON.stringify(that.$util.YMD(today)))
       state.dateValue.selectDay = JSON.parse(JSON.stringify(that.$util.YMD(today)))
       state.dateValue.selectWeek = store.getters['app/yearWeeks'].list[store.getters['app/yearWeeks'].list.length - 1].id
       state.dateValue.selectWeek = store.getters['app/yearWeeks'].list[store.getters['app/yearWeeks'].list.length - 1].id
-      console.log(state.dateValue.selectWeek)
       state.dateValue.selectMonth = JSON.parse(JSON.stringify(that.$util.YM(today)))
       state.dateValue.selectMonth = JSON.parse(JSON.stringify(that.$util.YM(today)))
       initStaticDay(today)
       initStaticDay(today)
-      initStaticWeek(store.getters['app/yearWeeks'].list.length - 7 + store.getters['app/yearWeeks'].list.length % 7 + 1)
+      initStaticWeek(store.getters['app/yearWeeks'].list.length - 1)
       initStaticMonth(today)
       initStaticMonth(today)
     }
     }
     const onDayClick = (item) => {
     const onDayClick = (item) => {
@@ -468,8 +468,7 @@ export default defineComponent({
       initStaticDay(ld)
       initStaticDay(ld)
     }
     }
     const handleWeek = (val) => {
     const handleWeek = (val) => {
-      const obj = store.getters['app/yearWeeks'].list.filter(v => v.selectValue === val)[0]
-      initStaticWeek(obj.week - obj.week % 7 + 1)
+      initStaticWeek(store.getters['app/yearWeeks'].map.get(val).index)
     }
     }
     const handleMonth = (val) => {
     const handleMonth = (val) => {
       const d = new Date(that.$util.YM(val))
       const d = new Date(that.$util.YM(val))