<template> <view class="relative" style="height: 100vh;"> <image style="width: 100%;height: 600rpx;" src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/vip%E9%A1%B5%E8%83%8C%E6%99%AF%E5%9B%BE_20230830214136.png"></image> <view class="p14"> <view class="flex jc-sb ai-c wp100"> <view class="option_tem relative" :class="checkedId===item.memberId?'checked_item':''" v-for="(item,index) of priceList" :key="index" @click="checkPrice(item.memberId,item.price)"> <text class="fw600 fs12 cor-333">{{item.memberName}}</text> <view class="mt5"> <text class="fs14" style="color: #FF6E02;">¥</text> <text class="fs30 fw600" style="color: #FF6E02;">{{item.price}}</text> </view> <text class="fs12 cor-999">长期有效</text> <view class="bottom_box fs12 cor-333" :class="checkedId===item.memberId?'checked_bottom':''">赠送vip题库</view> <view class="tag" v-if="item.all"> <text style="transform:scale(0.83);">合买更优惠</text> </view> </view> </view> <view class="mt15 intr_box"> <view class="fw600 fs16 cor-000">免费获赠<text style="color: #FF6E02;">价值68元</text>的VIP题库</view> <view class="flex ai-c jc-sb mt15"> <view class="flex ai-c"> <image style="width: 63rpx;height: 63rpx;margin-right: 5px;" src="../../static/image/index/vip500.png"></image> <view class="vip_item">含精简500题</view> </view> <view class="flex ai-c"> <image style="width: 63rpx;height: 63rpx;margin-right: 5px;" src="../../static/image/index/vipmijuan.png"></image> <view class="vip_item">含考前密卷2套</view> </view> </view> </view> </view> <view class="wp100 p14" style="position: absolute;left: 0;bottom:20px" @tap="handlePay()"> <view class="sub_btn flex ai-c jc-sb"> <text class="cor-fff fs14">¥<text class="fs24 cor-fff">{{nowPrice}}</text></text> <image style="width: 276rpx;height: 88rpx;margin-top: -5px;" src="../../static/image/index/buy.png"></image> </view> </view> </view> </template> <script> import { mapState, mapActions } from 'pinia' //引入映射函数 import { getVipList } from '@/jtools/api/vip' import storage from '@/jtools/storage'; import Pay from '@/jtools/pay/index.js'; import useUserStore from '@/jtools/store/user' export default { data(){ return{ subject:'1', loading:true, nowPrice:168, checkedId:0, priceList:[], order:{ money:0, description:'会员充值' } } }, onLoad(op){ if(op.subject){ this.subject=op.subject } this.loading=true this.getVipList() this.getWXOpenId() this.$set(this.order, 'userId', this.userInfo.userId); }, computed: { ...mapState(useUserStore, ["userInfo"]) }, methods:{ async handlePay(){ if(this.loading){ this.loading=false await this.getWXOpenId() new Pay('wechat', this.order); this.loading=true } }, getWXOpenId() { const that = this uni.login({ success(res) { that.$set(that.order, 'code', res.code); } }) }, getVipList(){ getVipList({ currentCartype: storage.get('carType') || '1001', subject:this.subject }).then(resp=>{ this.priceList=resp.data this.checkedId=this.priceList[0].memberId this.order.outTradeNo=this.priceList[0].memberId this.order.money=this.priceList[0].price this.nowPrice=this.priceList[0].price this.priceList.forEach(item=>{ if(item.subjects.length>1){ item.all=true } }) }) }, checkPrice(val,price){ this.checkedId=val this.order.outTradeNo=val this.nowPrice=price this.order.money=price } } } </script> <style scoped> .option_tem{ width: 220rpx; height: 241rpx; text-align: center; background: #FFFFFF; border: 2px solid #D8D8D8; border-radius: 16rpx 46rpx 16rpx 16rpx; padding: 14px; } .checked_item{ width: 228rpx; background: #FFF0E5; border: 4px solid #FF6E02; } .bottom_box{ width: 214rpx; height: 40rpx; line-height: 40rpx; text-align: center; background: rgb(239,239,239); border-radius: 0 0 16rpx 16rpx; position: absolute; bottom: 0; left: 0; } .checked_bottom{ width: 218rpx; border-radius: 0 0 16rpx 5rpx; background-color: #FF6E02; color:#fff } .tag{ width: 122rpx; height: 36rpx; background: linear-gradient(90deg, #E66501 0%, #F8A42C 100%); border-radius: 8rpx 20rpx 8rpx 8rpx; line-height: 36rpx; text-align: center; font-size: 12px; color: #FFFC27; position: absolute; left: 10rpx; top:-18rpx } .intr_box{ width: 100%; text-align: center; padding: 40rpx; background: #FFF0E5; border-radius: 16rpx; } .vip_item{ width: 208rpx; height: 54rpx; line-height: 54rpx; text-align: center; font-size: 14px; background: #F3D7C2; border-radius: 0rpx 10rpx 10rpx 10rpx; } .sub_btn{ width:100%; height: 110rpx; border: 4px solid #F59B26; background: linear-gradient(0deg, #E66501 0%, #F8A42C 100%); box-shadow: 0rpx 16rpx 20rpx 1rpx rgba(245,155,38,0.78); border-radius: 55rpx; padding: 14rpx; } </style>