index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <div class="coupon">
  3. <div class="coupon-list">
  4. <div class="coupon-item" v-for="(item,index) in couponsData" :key="index" :class="item.state && item.state !== 3 && 'isReceive'">
  5. <img class="coupon-item-bg" src="../../../static/images/coupon/bg-coupon.png" v-if="item.state && item.state === 3" mode="widthFix">
  6. <img class="coupon-item-bg" src="../../../static/images/coupon/bg-coupon2.png" v-else mode="widthFix">
  7. <div class="coupon-item-cont">
  8. <div class="coupon-item-content">
  9. <div class="coupon-item-price">
  10. <div class="span" v-if="item.couponType !== 2">¥</div>
  11. <div class="b" v-if="typeId !== 1">{{item.couponContent}}</div>
  12. <div class="b" v-else>{{item.reduceMoney}}</div>
  13. <div class="b" v-if="item.couponType == 2">折券</div>
  14. </div>
  15. <div class="coupon-item-date">{{item.startTime.split(' ')[0]}} - {{item.endTime.split(' ')[0]}}</div>
  16. <div class="coupon-item-text">{{item.content}}</div>
  17. </div>
  18. <button v-if="item.state === 0" class="coupon-item-btn">已领取</button>
  19. <button v-else-if="item.state === 1" class="coupon-item-btn">已使用</button>
  20. <button v-else-if="item.state === 2" class="coupon-item-btn">已过期</button>
  21. <button v-else @click="receiveCoupon(item)" class="coupon-item-btn">立即领取</button>
  22. </div>
  23. </div>
  24. </div>
  25. </div>
  26. </template>
  27. <script>
  28. import {commonMixin} from '../mixin'
  29. export default {
  30. mixins: [commonMixin]
  31. }
  32. </script>
  33. <style lang="scss" scoped>
  34. .coupon {
  35. padding: 25upx;
  36. &-list{
  37. display: flex;
  38. flex-wrap: wrap;
  39. }
  40. &-item{
  41. width: 335upx;
  42. height: 292upx;
  43. margin-left: 28upx;
  44. text-align: center;
  45. position: relative;
  46. margin-bottom: 10upx;
  47. &-bg{
  48. width: 100%;
  49. height: 100%;
  50. }
  51. &-cont{
  52. position: absolute;
  53. width: 100%;
  54. height: 100%;
  55. left: 0;
  56. top: 0;
  57. }
  58. &:nth-child(2n+1){
  59. margin-left: 0;
  60. }
  61. &-content{
  62. text-align: center;
  63. }
  64. &-price{
  65. color: #C5AA7B;
  66. margin: 26upx 0 10upx;
  67. .span{
  68. display: inline;
  69. font-size: 36upx;
  70. line-height: 68upx;
  71. }
  72. .b{
  73. display: inline;
  74. font-size: 50upx;
  75. line-height: 68upx;
  76. }
  77. }
  78. &-date,&-text{
  79. font-size: 20upx;
  80. line-height: 28upx;
  81. color: #999999;
  82. }
  83. &-date{
  84. margin-bottom: 8upx;
  85. }
  86. &-btn{
  87. display: inline-block;
  88. margin: 60upx auto 0;
  89. height: 48upx;
  90. line-height: 48upx;
  91. background-color: #C5AA7B;
  92. color: #fff;
  93. font-size: 14upx
  94. }
  95. &.isReceive{
  96. &-price{
  97. color: #999;
  98. }
  99. &-btn{
  100. background-color: #ccc;
  101. }
  102. }
  103. }
  104. }
  105. </style>