common.js 4.0 KB

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