coupon-order.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <view class="coupon-order flex-col">
  3. <scroll-view style="background-color: #F6F6F6" scroll-y="true" :style="{height: type == 0 ? '750rpx' : '852rpx'}">
  4. <view class="coupon-list">
  5. <view v-for="(item, index) in coupons" :key="index" class="m-b-20 bg-white" @tap="onSelect(item.id)">
  6. <view class="coupon-item flex">
  7. <view class="price white flex-col col-center">
  8. <view class="xl">
  9. <price-format :subscript-size="34" :first-size="60" :second-size="50"
  10. :price="item.money" :weight="500"></price-format>
  11. </view>
  12. <view>{{item.condition_type_desc}}</view>
  13. </view>
  14. <view class="flex row-between flex-1">
  15. <view class="info m-l-20">
  16. <view class="bold md bold m-b-10 line-1">{{item.coupon_name}}</view>
  17. <view class="xxs lighter m-b-10">{{item.user_time_desc}}</view>
  18. <view class="xxs lighter">{{item.use_scene_desc}}</view>
  19. </view>
  20. <u-checkbox shape="circle" v-if="type == 0" :value="selectId == item.id"></u-checkbox>
  21. </view>
  22. </view>
  23. <view class="xs" v-if="item.use_goods_desc && type == 1" style="padding: 14rpx 20rpx">
  24. {{item.use_goods_desc}}
  25. </view>
  26. </view>
  27. </view>
  28. <view v-if="coupons.length == 0" class="flex-col col-center" style="padding-top: 50rpx">
  29. <image class="img-null" src="/static/images/coupon_null.png"></image>
  30. <text class="muted">暂无优惠券~</text>
  31. </view>
  32. </scroll-view>
  33. <view v-if="type == 0">
  34. <view class="bg-primary btn white flex row-center br60 mb10 lg" @tap="onConfirmCoupon">
  35. 确定
  36. </view>
  37. </view>
  38. </view>
  39. </template>
  40. <script>
  41. export default {
  42. data() {
  43. return {
  44. coupons: [],
  45. selectId: ""
  46. };
  47. },
  48. props: {
  49. list: {
  50. type: Array,
  51. default: () => []
  52. },
  53. type: {
  54. type: Number
  55. },
  56. couponId: [Number, String]
  57. },
  58. watch: {
  59. list: {
  60. handler(val) {
  61. this.coupons = val
  62. },
  63. immediate: true,
  64. },
  65. couponId: {
  66. handler(val) {
  67. this.selectId = val
  68. },
  69. immediate: true,
  70. }
  71. },
  72. methods: {
  73. onSelect(id) {
  74. const {
  75. coupons,
  76. type,
  77. selectId
  78. } = this;
  79. if (type == 1) return;
  80. this.selectId = id == selectId ? "" : id
  81. },
  82. onConfirmCoupon() {
  83. this.$emit("change", this.selectId)
  84. }
  85. }
  86. };
  87. </script>
  88. <style scoped>
  89. .coupon-order .coupon-list {
  90. padding: 20rpx 24rpx;
  91. }
  92. .coupon-order .coupon-item {
  93. position: relative;
  94. height: 200rpx;
  95. background-image: url(../../static/images/coupon_bg.png);
  96. background-size: 100% 100%;
  97. }
  98. .coupon-order .coupon-item .price {
  99. width: 200rpx;
  100. }
  101. .coupon-order .btn {
  102. margin: 10rpx 20rpx;
  103. height: 82rpx;
  104. }
  105. </style>