common.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. export default {
  2. isEmpty(v) {
  3. if (typeof v == "undefined" || v == null) {
  4. return true
  5. }
  6. if (v == 0 || v == "") {
  7. return true
  8. }
  9. return /^\s+$/g.test(v)
  10. },
  11. toTimeStamp(v, ymd) {
  12. if (this.isEmpty(v)) {
  13. return null
  14. }
  15. if (ymd) {
  16. v = ymd + " " + v
  17. }
  18. return new Date(v).getTime() / 1000
  19. },
  20. setActivityCountdownTime(now, activity) {
  21. let beginTime = activity.beginTime // 活动开始时间
  22. let endTime = activity.endTime // 活动结束时间
  23. let dayBeginTime = activity.dayBeginTime // 每天开始时间
  24. let dayEndTime = activity.dayEndTime // 每天结束时间
  25. let nowY = now.getFullYear()
  26. let nowM = now.getMonth() + 1
  27. let nowD = now.getDate()
  28. const Ymd = nowY + "-" + nowM + "-" + nowD;
  29. dayBeginTime = this.toTimeStamp(dayBeginTime, Ymd)
  30. dayEndTime = this.toTimeStamp(dayEndTime, Ymd)
  31. beginTime = this.toTimeStamp(beginTime)
  32. endTime = this.toTimeStamp(endTime)
  33. const nowTime = now.getTime() / 1000
  34. let diffSec = 0;
  35. if (activity.timeType == 2) {
  36. if (beginTime == null || endTime == null) {
  37. return
  38. }
  39. // 固定时间段内活动
  40. beginTime = this.fixBeginTime(beginTime, activity.dayBeginTime)
  41. endTime = this.fixEndTime(endTime, activity.dayEndTime)
  42. if (nowTime < beginTime) {
  43. diffSec = beginTime - nowTime
  44. activity.status = 4
  45. activity.countDownTime = this.formatTimeBySec(diffSec)
  46. activity.statusText = "即将开始"
  47. return
  48. }
  49. if (nowTime > endTime) {
  50. activity.status = 3
  51. activity.statusText = "已结束"
  52. return
  53. }
  54. }
  55. // 长期时间,只要计算,距离当天时间即可
  56. if (dayBeginTime == null || dayEndTime == null) {
  57. return
  58. }
  59. if (nowTime < dayBeginTime) {
  60. diffSec = dayBeginTime - nowTime
  61. activity.status = 4
  62. activity.countDownTime = this.formatTimeBySec(diffSec)
  63. activity.statusText = "即将开始"
  64. return
  65. }
  66. if (nowTime > dayEndTime) {
  67. diffSec = dayBeginTime + 86400 - nowTime
  68. activity.status = 5
  69. activity.countDownTime = this.formatTimeBySec(diffSec)
  70. activity.statusText = "即将开始"
  71. return
  72. }
  73. activity.status = 2
  74. activity.statusText = "进行中"
  75. },
  76. fixBeginTime(time, hourTime) {
  77. if (this.isEmpty(hourTime)) {
  78. return time
  79. }
  80. const date = new Date(time * 1000)
  81. const ymd = date.getFullYear(date) + "-" + (date.getMonth() + 1) + "-" + date.getDate()
  82. const fullH = new Date(ymd + " " + hourTime).getTime() / 1000;
  83. return fullH > time ? fullH : time
  84. },
  85. fixEndTime(time, hourTime) {
  86. if (this.isEmpty(hourTime)) {
  87. return time
  88. }
  89. const date = new Date(time * 1000)
  90. const ymd = date.getFullYear(date) + "-" + (date.getMonth() + 1) + "-" + date.getDate()
  91. const fullH = new Date(ymd + " " + hourTime).getTime() / 1000;
  92. return fullH < time ? fullH : time
  93. },
  94. formatTimeBySec(sec) {
  95. const day = Math.floor(sec / 86400)
  96. const hour = Math.floor((sec % 86400) / 3600)
  97. const min = Math.floor(((sec % 86400) % 3600) / 60)
  98. const s = Math.floor((sec % 86400) % 3600 % 60)
  99. let rt = ''
  100. if (day > 0) {
  101. rt = day + '天'
  102. }
  103. rt += this.formatHMS(hour || 0) + ":"
  104. rt += this.formatHMS(min || 0) + ":"
  105. rt += this.formatHMS(s || 0)
  106. return rt
  107. },
  108. formatHMS(h) {
  109. if (h < 10) {
  110. return 0 + "" + h
  111. }
  112. return h
  113. }
  114. }