CouponPop.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <template>
  2. <div>
  3. <div class="coupon-list-window" :class="coupon.coupon === true ? 'on' : ''">
  4. <div class="title">
  5. 优惠券<span class="iconfont icon-guanbi" @click="close"></span>
  6. </div>
  7. <div class="coupon-list" v-if="coupon.list.length > 0">
  8. <div
  9. class="item acea-row row-center-wrapper"
  10. v-for="(item, index) in coupon.list"
  11. :key="index"
  12. @click="getCouponUser(index, item.id)"
  13. >
  14. <div class="money" :class="!item.is_use ? '' : 'moneyGray'">
  15. <div>
  16. ¥<span class="num">{{ item.coupon_price }}</span>
  17. </div>
  18. <div class="pic-num">满{{ item.use_min_price }}元可用</div>
  19. </div>
  20. <div class="text">
  21. <div class="condition line1">
  22. <span
  23. class="line-title"
  24. :class="!item.is_use ? 'bg-color-check' : 'bg-color-huic'"
  25. v-if="item.type === 0"
  26. >通用劵</span
  27. >
  28. <span
  29. class="line-title"
  30. :class="!item.is_use ? 'bg-color-check' : 'bg-color-huic'"
  31. v-else-if="item.type === 1"
  32. >品类券</span
  33. >
  34. <span
  35. class="line-title"
  36. :class="!item.is_use ? 'bg-color-check' : 'bg-color-huic'"
  37. v-else
  38. >商品券</span
  39. >
  40. <span>{{ item.title }}</span>
  41. </div>
  42. <div class="data acea-row row-between-wrapper">
  43. <div>
  44. {{ item.start_time ? item.start_time + "-" : ""
  45. }}{{ item.end_time }}
  46. </div>
  47. <div
  48. class="bnt acea-row row-center-wrapper"
  49. :class="!item.is_use ? 'bg-color-red' : 'gray'"
  50. >
  51. {{ !item.is_use ? "立即领取" : "已领取" }}
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. <!--无优惠券-->
  58. <div class="pictrue" v-else>
  59. <img src="@assets/images/noCoupon.png" class="image" />
  60. </div>
  61. </div>
  62. <div
  63. class="mask"
  64. @touchmove.prevent
  65. :hidden="coupon.coupon === false"
  66. @click="close"
  67. ></div>
  68. </div>
  69. </template>
  70. <script>
  71. import { getCouponReceive } from "@api/user";
  72. export default {
  73. name: "CouponPop",
  74. props: {
  75. coupon: {
  76. type: Object,
  77. default: () => {}
  78. }
  79. },
  80. data: function() {
  81. return {};
  82. },
  83. mounted: function() {},
  84. methods: {
  85. close: function() {
  86. this.$emit("changeFun", { action: "changecoupon", value: false }); //$emit():注册事件;
  87. },
  88. getCouponUser: function(index, id) {
  89. let that = this,
  90. list = that.coupon.list;
  91. if (list[index].is_use === true) return;
  92. getCouponReceive(id)
  93. .then(function() {
  94. that.$dialog.toast({ mes: "已领取" });
  95. that.$set(list[index], "is_use", true);
  96. that.$emit("changefun", { action: "currentcoupon", value: index });
  97. that.$emit("changeFun", { action: "changecoupon", value: false });
  98. })
  99. .catch(function(res) {
  100. that.$dialog.toast({ mes: res.msg });
  101. });
  102. }
  103. }
  104. };
  105. </script>
  106. <style scoped>
  107. .condition .line-title {
  108. width: 0.9rem;
  109. padding: 0 0.1rem;
  110. box-sizing: border-box;
  111. background: rgba(255, 247, 247, 1);
  112. border: 1px solid rgba(232, 51, 35, 1);
  113. opacity: 1;
  114. border-radius: 0.22rem;
  115. font-size: 0.2rem;
  116. color: #e83323;
  117. margin-right: 0.12rem;
  118. }
  119. .coupon-list .pic-num {
  120. color: #ffffff;
  121. font-size: 0.24rem;
  122. }
  123. </style>