index.vue 3.2 KB

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