|
@@ -0,0 +1,118 @@
|
|
|
|
+export default {
|
|
|
|
+ isEmpty(v) {
|
|
|
|
+ if (typeof v == "undefined" || v == null) {
|
|
|
|
+ return true
|
|
|
|
+ }
|
|
|
|
+ if (v == 0 || v == "") {
|
|
|
|
+ return true
|
|
|
|
+ }
|
|
|
|
+ return /^\s+$/g.test(v)
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ toTimeStamp(v, ymd) {
|
|
|
|
+ if (this.isEmpty(v)) {
|
|
|
|
+ return null
|
|
|
|
+ }
|
|
|
|
+ if (ymd) {
|
|
|
|
+ v = ymd + " " + v
|
|
|
|
+ }
|
|
|
|
+ return new Date(v).getTime() / 1000
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ setActivityCountdownTime(now, activity) {
|
|
|
|
+ let beginTime = activity.beginTime // 活动开始时间
|
|
|
|
+ let endTime = activity.endTime // 活动结束时间
|
|
|
|
+ let dayBeginTime = activity.dayBeginTime // 每天开始时间
|
|
|
|
+ let dayEndTime = activity.dayEndTime // 每天结束时间
|
|
|
|
+ let nowY = now.getFullYear()
|
|
|
|
+ let nowM = now.getMonth() + 1
|
|
|
|
+ let nowD = now.getDate()
|
|
|
|
+ const Ymd = nowY + "-" + nowM + "-" + nowD;
|
|
|
|
+ dayBeginTime = this.toTimeStamp(dayBeginTime, Ymd)
|
|
|
|
+ dayEndTime = this.toTimeStamp(dayEndTime, Ymd)
|
|
|
|
+ beginTime = this.toTimeStamp(beginTime)
|
|
|
|
+ endTime = this.toTimeStamp(endTime)
|
|
|
|
+ const nowTime = now.getTime() / 1000
|
|
|
|
+ let diffSec = 0;
|
|
|
|
+ if (activity.timeType == 2) {
|
|
|
|
+ if (beginTime == null || endTime == null) {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ // 固定时间段内活动
|
|
|
|
+ beginTime = this.fixBeginTime(beginTime, activity.dayBeginTime)
|
|
|
|
+ endTime = this.fixEndTime(endTime, activity.dayEndTime)
|
|
|
|
+ if (nowTime < beginTime) {
|
|
|
|
+ diffSec = beginTime - nowTime
|
|
|
|
+ activity.status = 4
|
|
|
|
+ activity.countDownTime = this.formatTimeBySec(diffSec)
|
|
|
|
+ activity.statusText = "即将开始"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (nowTime > endTime) {
|
|
|
|
+ activity.status = 3
|
|
|
|
+ activity.statusText = "已结束"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 长期时间,只要计算,距离当天时间即可
|
|
|
|
+ if (dayBeginTime == null || dayEndTime == null) {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (nowTime < dayBeginTime) {
|
|
|
|
+ diffSec = dayBeginTime - nowTime
|
|
|
|
+ activity.status = 4
|
|
|
|
+ activity.countDownTime = this.formatTimeBySec(diffSec)
|
|
|
|
+ activity.statusText = "即将开始"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (nowTime > dayEndTime) {
|
|
|
|
+ diffSec = dayBeginTime + 86400 - nowTime
|
|
|
|
+ activity.status = 5
|
|
|
|
+ activity.countDownTime = this.formatTimeBySec(diffSec)
|
|
|
|
+ activity.statusText = "即将开始"
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ activity.status = 2
|
|
|
|
+ activity.statusText = "进行中"
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ fixBeginTime(time, hourTime) {
|
|
|
|
+ if (this.isEmpty(hourTime)) {
|
|
|
|
+ return time
|
|
|
|
+ }
|
|
|
|
+ const date = new Date(time * 1000)
|
|
|
|
+ const ymd = date.getFullYear(date) + "-" + (date.getMonth() + 1) + "-" + date.getDate()
|
|
|
|
+ const fullH = new Date(ymd + " " + hourTime).getTime() / 1000;
|
|
|
|
+ return fullH > time ? fullH : time
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ fixEndTime(time, hourTime) {
|
|
|
|
+ if (this.isEmpty(hourTime)) {
|
|
|
|
+ return time
|
|
|
|
+ }
|
|
|
|
+ const date = new Date(time * 1000)
|
|
|
|
+ const ymd = date.getFullYear(date) + "-" + (date.getMonth() + 1) + "-" + date.getDate()
|
|
|
|
+ const fullH = new Date(ymd + " " + hourTime).getTime() / 1000;
|
|
|
|
+ return fullH < time ? fullH : time
|
|
|
|
+ },
|
|
|
|
+ formatTimeBySec(sec) {
|
|
|
|
+ const day = Math.floor(sec / 86400)
|
|
|
|
+ const hour = Math.floor((sec % 86400) / 3600)
|
|
|
|
+ const min = Math.floor(((sec % 86400) % 3600) / 60)
|
|
|
|
+ const s = Math.floor((sec % 86400) % 3600 % 60)
|
|
|
|
+ let rt = ''
|
|
|
|
+ if (day > 0) {
|
|
|
|
+ rt = day + '天'
|
|
|
|
+ }
|
|
|
|
+ rt += this.formatHMS(hour || 0) + ":"
|
|
|
|
+ rt += this.formatHMS(min || 0) + ":"
|
|
|
|
+ rt += this.formatHMS(s || 0)
|
|
|
|
+ return rt
|
|
|
|
+ },
|
|
|
|
+ formatHMS(h) {
|
|
|
|
+ if (h < 10) {
|
|
|
|
+ return 0 + "" + h
|
|
|
|
+ }
|
|
|
|
+ return h
|
|
|
|
+ }
|
|
|
|
+}
|