<template>
|
|
<view class="page__view">
|
|
|
|
<navbar title="我的优惠券" leftClick @leftClick="$utils.navigateBack" color="#191919" bgColor="#FFFFFF" />
|
|
|
|
<view class="list">
|
|
<uv-radio-group
|
|
v-model="selectedId"
|
|
placement="column"
|
|
shape="circle"
|
|
size="36rpx"
|
|
iconSize="36rpx"
|
|
activeColor="#00A9FF"
|
|
@change="onRadioChange"
|
|
>
|
|
<view class="list-item" v-for="item in list" :key="item.id">
|
|
<couponCard
|
|
:data="item"
|
|
@select="onSelect"
|
|
></couponCard>
|
|
</view>
|
|
</uv-radio-group>
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
import { mapState } from 'vuex'
|
|
|
|
import mixinsList from '@/mixins/list.js'
|
|
|
|
import couponCard from './couponCard.vue'
|
|
|
|
export default {
|
|
mixins: [mixinsList],
|
|
components: {
|
|
couponCard,
|
|
},
|
|
data() {
|
|
return {
|
|
// todo: check key
|
|
mixinsListApi: '',
|
|
queryParams: {
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
},
|
|
selectedId: null,
|
|
}
|
|
},
|
|
computed: {
|
|
...mapState(['couponInfo']),
|
|
},
|
|
onLoad(arg) {
|
|
if (this.couponInfo?.id) {
|
|
this.selectedId = this.couponInfo.id
|
|
}
|
|
|
|
this.getData()
|
|
},
|
|
onUnload() {
|
|
if (!this.selectedId) {
|
|
this.$store.commit('setCouponInfo', null)
|
|
return
|
|
}
|
|
|
|
const target = this.list.find(item => item.id === this.selectedId)
|
|
this.$store.commit('setCouponInfo', target)
|
|
},
|
|
methods: {
|
|
// todo: delete
|
|
getData() {
|
|
this.list = [
|
|
{
|
|
id: '001',
|
|
label: '专属福利】20元红包',
|
|
price: 20,
|
|
validTime: '2026-04-28',
|
|
},
|
|
{
|
|
id: '002',
|
|
label: '专属福利】400元红包',
|
|
price: 400,
|
|
validTime: '2026-04-28',
|
|
},
|
|
{
|
|
id: '003',
|
|
label: '专属福利】400元红包',
|
|
price: 400,
|
|
validTime: '2026-04-28',
|
|
},
|
|
{
|
|
id: '004',
|
|
label: '专属福利】400元红包',
|
|
price: 400,
|
|
validTime: '2026-04-28',
|
|
},
|
|
{
|
|
id: '005',
|
|
label: '专属福利】400元红包',
|
|
price: 400,
|
|
validTime: '2026-04-28',
|
|
},
|
|
]
|
|
|
|
},
|
|
onSelect(id) {
|
|
console.log('onSelect', id)
|
|
this.selectedId = id
|
|
},
|
|
onRadioChange(e) {
|
|
console.log('onRadioChange', e)
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.page__view {
|
|
width: 100vw;
|
|
min-height: 100vh;
|
|
background-color: $uni-bg-color;
|
|
position: relative;
|
|
}
|
|
|
|
.list {
|
|
padding: 32rpx 40rpx;
|
|
|
|
&-item {
|
|
|
|
& + & {
|
|
margin-top: 24rpx;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
</style>
|