common.js 4.0 KB

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