<template> <view class="content"> <view class="flex nav-list"> <view class="item" v-for="(item,index) in navList" :class="{'action': current == index}" @click="changeNavT(index)"> {{item.tit}} <text v-if="item.loaded">({{item.count}})</text> </view> </view> <swiper class="good-content" :style="{'height':height }" :current="current"> <swiper-item v-for="item in navList" :style="{'height':height }"> <scroll-view scroll-y="true" :style="{'height':height }" @scrolltolower="getList"> <view class="dyquan-wrap" v-for="(itemt,index) in item.list" :key="index"> <view class="showtime"> <text class="float_left order-no-text">{{ itemt.verify_code|| '' }}</text> </view> <view class="item-info"> <image src="../../static/img/tyq.png" mode=""></image> <view class="info-info"> <view class="clamp2"> 太空舱体验券 </view> <view class="clamp2"> X1 </view> </view> </view> <view class="btm"> <view v-if="itemt.status == 0 && itemt.source_uid == 0" class="btn" @click="giveFriend(itemt.id)"> 转赠好友 </view> <view v-if="itemt.status == 0 && itemt.source_uid != userInfo.uid" class="btn btn-2" @click="navto(itemt.verify_code)"> 立即使用 </view> </view> </view> <uni-load-more v-if="!(item.list == 0 && item.loaded)" :status="item.loadingType"></uni-load-more> <empty v-else></empty> </scroll-view> </swiper-item> </swiper> <!-- 核销弹窗 --> <uni-popup ref="popuphx" class="agree-wrapper"> <view class="hx-wrapper"> <view class="hx-img"> <image src="../../static/img/hxbg.png" mode=""></image> </view> <view class="hx-body"> <view class="hx-title"> 接收人UID </view> <input type="text" v-model="code" placeholder="请输入接收人UID" placeholder-class="hx-placeholder" /> <view class="hx-btn" @click="qhx"> 赠送 </view> </view> <view class="hx-close" @click="close"> <image src="../../static/icon/close.png" mode=""></image> </view> </view> </uni-popup> </view> </template> <script> import { mapState, mapMutations } from 'vuex'; import { getUserCard,giveCard} from '@/api/user.js' import empty from '@/components/empty'; export default { components: { empty }, data() { return { code: '', give_id: 0, height: '', current: 0, navList: [ { count: 0, status: -1, tit: '全部', list: [], page: 1, limit: 10, loaded: false, loadingType: 'more' },{ count: 0, status: 0, tit: '待使用', list: [], page: 1, limit: 10, loaded: false, loadingType: 'more' }, { count: 0, status: 1, tit: '已使用', list: [], page: 1, limit: 10, loaded: false, loadingType: 'more' }, ] } }, onLoad() { }, computed: { ...mapState('user', ['userInfo', 'orderInfo', 'hasLogin']), }, onShow() { console.log('ddd ') this.getList('re') }, onReachBottom() { }, onReady(res) { var that = this; uni.getSystemInfo({ success: resu => { const query = uni.createSelectorQuery(); query.select('.good-content').boundingClientRect(); query.exec(function(res) { that.height = resu.windowHeight - res[0].top + 'px'; }); }, fail: res => {} }); }, methods: { qhx() { if(!this.code) { return this.$api.msg('请输入接收人UID') } if(this.code == this.userInfo.uid) { return this.$api.msg('接收人不能为自己') } console.log(this.give_id) giveCard({ id: this.give_id, to_uid:this.code }).then(res => { uni.showToast({ icon:'success', title:'赠送成功' }) this.close() this.getList('re') }) }, close() { this.code = '' this.give_id = '' this.$refs.popuphx.close() }, navto(val) { uni.navigateTo({ url: '/pages/user/hxqm?val=' + val }) }, giveFriend(id) { console.log(id) this.give_id = id this.$refs.popuphx.open() }, changeNavT(index) { if (index == this.current) { return } this.current = index this.getList('re') }, getList(type) { let that = this let item = that.navList[that.current] if(type == 're') { item.page = 1 item.list = [] item.loadingType = 'more' } if(item.loadingType == 'loading' || item.loadingType == 'noMore') { return } item.loadingType = 'loading' getUserCard({ uid: that.userInfo.uid, page: item.page, limit: item.limit, status: item.status }).then(res => { let arr = res.data.list item.list = item.list.concat(arr) item.count = res.data.count if(item.limit == arr.length) { item.loadingType = 'more' item.page++ }else { item.loadingType = 'noMore' } item.loaded = true }) } } } </script> <style lang="scss" scoped> .nav-list { justify-content: space-around; background-color: #fff; font-weight: 500; color: #333333; .item { padding: 28rpx 20rpx 16rpx; } .action { color: #333; font-weight: bold; border-bottom: 2px solid $base-color; } } .dyquan-wrap { padding: 20rpx; background-color: #fff; margin-bottom: 15rpx; .showtime { height: 50rpx; } .item-info { width: 750rpx; height: 205rpx; background: #F7F7F7; display: flex; justify-content: flex-start; align-items: center; image { width: 160rpx; height: 160rpx; margin-right: 30rpx; } .info-info { height: 160rpx; padding: 15rpx 0; padding-right: 50rpx; font-size: 30rpx; font-weight: 500; color: #666666; display: flex; flex-direction: column; justify-content: space-between; align-items: flex-start; .info-cs { font-size: 26rpx; font-weight: 500; color: #999999; } } } .btn-list { } .btm { width: 100%; height: 95rpx; background-color: #fff; display: flex; justify-content: flex-end; align-items: center; .btn { width: 144rpx; height: 55rpx; border-radius: 28rpx; font-size: 26rpx; font-weight: 500; color:$base-color; line-height: 55rpx; text-align: center; border: 1px solid $base-color; } .btn-2 { background-color: $base-color;color: #fff; margin-left: 15rpx; } } } .hx-wrapper { width: 536rpx; // height: 630rpx; position: relative; padding-bottom: 40rpx; background-color: #fff; border-radius: 20rpx; .hx-img { width: 536rpx; height: 281rpx; image { width: 536rpx; height: 281rpx; } } .hx-close { position: absolute; left: 243rpx; bottom: -80rpx; width: 52rpx; height: 52rpx; image { width: 52rpx; height: 52rpx; } } .hx-body { width: 536rpx; // min-height: 349rpx; background-color: #fff; border-radius: 0 0 10rpx 10rpx; padding-top: 40rpx; .hx-title { width: 536rpx; font-size: 36rpx; font-weight: 500; color: #333333; line-height: 1; padding-top: 20rpx; text-align: center; padding-bottom: 20rpx; } input { width: 439rpx; height: 68rpx; background: #f1faf6; border-radius: 10rpx; margin: 0 auto 40rpx; padding-left: 26rpx; .hx-placeholder { font-size: 26rpx; font-weight: 500; color: $base-color; } } .hx-btn { margin: 44rpx auto 0; width: 353rpx; height: 71rpx; background: $base-color; border-radius: 34rpx; font-size: 36rpx; font-weight: 500; color: #F8F9F9; line-height: 71rpx; text-align: center; } } } </style>