鸿宇研学生前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
2.5 KiB

  1. <template>
  2. <view class="page__view">
  3. <navbar title="我的优惠券" leftClick @leftClick="$utils.navigateBack" color="#191919" bgColor="#FFFFFF" />
  4. <view class="list">
  5. <uv-radio-group
  6. v-model="selectedId"
  7. placement="column"
  8. shape="circle"
  9. size="36rpx"
  10. iconSize="36rpx"
  11. activeColor="#00A9FF"
  12. >
  13. <view class="list-item" v-for="item in list" :key="item.id">
  14. <couponCard
  15. :data="item"
  16. ></couponCard>
  17. </view>
  18. </uv-radio-group>
  19. </view>
  20. </view>
  21. </template>
  22. <script>
  23. import { mapState } from 'vuex'
  24. import mixinsList from '@/mixins/list.js'
  25. import couponCard from './couponCard.vue'
  26. export default {
  27. mixins: [mixinsList],
  28. components: {
  29. couponCard,
  30. },
  31. data() {
  32. return {
  33. // todo: check key
  34. mixinsListApi: '',
  35. queryParams: {
  36. pageNo: 1,
  37. pageSize: 10,
  38. },
  39. selectedId: null,
  40. }
  41. },
  42. computed: {
  43. ...mapState(['couponInfo']),
  44. },
  45. onLoad(arg) {
  46. if (this.couponInfo?.id) {
  47. this.selectedId = this.couponInfo.id
  48. }
  49. this.getData()
  50. },
  51. onUnload() {
  52. if (!this.selectedId) {
  53. this.$store.commit('setCouponInfo', null)
  54. return
  55. }
  56. const target = this.list.find(item => item.id === this.selectedId)
  57. this.$store.commit('setCouponInfo', target)
  58. },
  59. methods: {
  60. // todo: delete
  61. getData() {
  62. this.list = [
  63. {
  64. id: '001',
  65. label: '专属福利】20元红包',
  66. price: 20,
  67. validTime: '2026-04-28',
  68. },
  69. {
  70. id: '002',
  71. label: '专属福利】400元红包',
  72. price: 400,
  73. validTime: '2026-04-28',
  74. },
  75. {
  76. id: '003',
  77. label: '专属福利】400元红包',
  78. price: 400,
  79. validTime: '2026-04-28',
  80. },
  81. {
  82. id: '004',
  83. label: '专属福利】400元红包',
  84. price: 400,
  85. validTime: '2026-04-28',
  86. },
  87. {
  88. id: '005',
  89. label: '专属福利】400元红包',
  90. price: 400,
  91. validTime: '2026-04-28',
  92. },
  93. ]
  94. },
  95. },
  96. }
  97. </script>
  98. <style scoped lang="scss">
  99. .page__view {
  100. width: 100vw;
  101. min-height: 100vh;
  102. background: $uni-bg-color;
  103. position: relative;
  104. }
  105. .list {
  106. padding: 32rpx 40rpx;
  107. &-item {
  108. & + & {
  109. margin-top: 24rpx;
  110. }
  111. }
  112. }
  113. </style>