zxl
昨天 f971ff5f338eff3778a408096539660b72ba6ae2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<template>
  <div>
    <div class="wrapper" v-if="type === 'goodsDetail'">
      <div class="wr-l"><Icon size="23" type="ios-alarm-outline" /> 秒杀活动</div>
      <div class="count-down" v-if="end === ''">
      <p>倒计时:</p><span>{{ hours }}</span><span>{{ minutes }}</span><span>{{ seconds }}</span>
      </div>
      <div v-else>{{end}}</div>
    </div>
    <span v-else class="cart-promotion">
      <span v-if="end === ''">距活动结束:<span>{{ hours }}</span> : <span>{{ minutes }}</span> : <span>{{ seconds }}</span></span>
      <span v-else>活动已结束</span>
    </span>
  </div>
</template>
<script>
export default {
  props: {
    time: { // 传入的初始时间
      default: 1718977559428
    },
    type: { // 区分是在详情还是购物车调用
      default: 'goodsDetail', // 设置两个值,goodsDetail和cart,样式不同
      type: String
    }
  },
  data () {
    return {
      end: '', // 结束状态
      hours: '', // 小时
      minutes: '', // 分钟
      seconds: '', // 秒
      interval: '' // 定时器
    };
  },
  mounted () {
    this.init()
  },
  methods: {
    countDown (val) { // 倒计时方法
      function addZero (i) {
        return i < 10 ? '0' + i : i + '';
      }
      var nowtime = new Date();
      var endtime = new Date(val);
      var lefttime = parseInt((endtime.getTime() - nowtime.getTime()) / 1000);
      var h = parseInt((lefttime / (60 * 60)) % 24);
      var m = parseInt((lefttime / 60) % 60);
      var s = parseInt(lefttime % 60);
      h = addZero(h);
      m = addZero(m);
      s = addZero(s);
      this.hours = h;
      this.minutes = m
      this.seconds = s;
      if (lefttime <= 0) {
        this.end = `活动已结束`;
        clearInterval(this.interval)
      }
    },
    init () { // 初始化
      this.interval = setInterval(() => {
        this.countDown(this.time);
      }, 1000);
    }
  }
};
</script>
<style scoped lang="scss">
.cart-promotion{
  font-size: 13px;
  color: #999;
  margin-left: 10px;
}
.wrapper {
  background-image: linear-gradient(266deg, #ff0b33, #ff4257, #ff5f7c, #fa78a2);
  height: 32px;
  color: #fff;
  line-height: 32px;
  font-size: 16px;
  padding: 0 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.wr-r{
  font-size: 13px;
}
.count-down {
  margin-right: -20px;
  p{
    float: left;
    line-height: 20px;
  }
  > span {
    position: relative;
    float: left;
    width: 20px;
    height: 20px;
    text-align: center;
    background-color: #2f3430;
    margin-right: 20px;
    color: white;
    font-size: 14px;
    line-height: 20px;
    &::after {
      content: ":";
      display: block;
      position: absolute;
      right: -20px;
      font-weight: bolder;
      font-size: 14px;
      width: 20px;
      height: 100%;
      top: 0;
    }
  }
  > span:last-child::after {
    content: "";
  }
}
 
</style>