<template> <view class="page"> <view class=""> <u-navbar :title="tit" :border-bottom="false" :background="background" title-color='#000' title-size='36' back-icon-color='#000' height='45'></u-navbar> </view> <!-- --> <view class="" v-if="typeflag"> <view class="vipcard"> <view class="card_top"> <view class="name"> 购买会员 </view> </view> <view class="card_bot"> <view class="txts"> 开通立享超值会员特权 </view> <view class="txts" v-if="flase"> 会员23天后到期 </view> <view class="topage" @click="topage"> 购买记录 > </view> </view> </view> <view class="" style="background-color: #fff;"> <image class="mc" src="https://lxnapi.ccttiot.com/bike/img/static/uCIpavkHbM18al7gpxH8" mode=""></image> <view class="cont_box"> <view class="cont_li" v-for="(item,index) in huiyuanzaishoulist" :key="index" @click="choose(item,index)" :class="chooseidx == index ? 'act1' : ''"> <view class="tit"> {{item.name == null ? '--' : item.name}} </view> <view class="tips"> {{item.time == null ? '--' :item.time}}天享{{item.discount == null ? '--' : item.discount}}折 </view> <view class="tips"> <view class="" v-if="item.limitType == 1"> 没有限制 </view> <view class="" v-if="item.limitType == 2"> 每周最多用{{item.limitCount == null ? '--' : item.limitCount}}次 </view> <view class="" v-if="item.limitType == 3"> 每30天最多用{{item.limitCount == null ? '--' : item.limitCount}}次 </view> </view> <view class="tips"> 总共可用{{item.limitTotal == null ? '--' : item.limitTotal}}次 </view> <view class="money"> ¥ {{item.price == null ? '--' : item.price}} </view> <view class="tips" style="text-decoration: line-through; "> ¥{{item.originalPrice == null ? '--' : item.originalPrice}} </view> <view class="tips"> 立省¥{{Number(item.originalPrice) - Number(item.price)}} </view> </view> </view> <view class="txt"> 该会员只能用于付费享折扣 </view> </view> <view class="pay_btn" @click="btnzf"> ¥{{price}}立即开通 </view> </view> <view class="" style="height: 500rpx;overflow: scroll;" v-if="storeId != ''"> <view class="vip_box1" v-for="(item,index) in huiyuanlist" :key="index"> <view class="txt1">{{item.vipLevelName == null ? '--' : item.vipLevelName}}</view> <view class="txt1" style="position: absolute;top: 70rpx;font-size: 24rpx;font-weight: 400;display: flex;">每单享{{item.discount == null ? '--' : item.discount}}折 <view class="" v-if="item.limitType == 1"> 使用无限制 </view> <view class="" v-if="item.limitType == 2"> 每周最多用{{item.limitCount == null ? '--' : item.limitCount}}次 </view> <view class="" v-if="item.limitType == 3"> 每30天最多用{{item.limitCount == null ? '--' : item.limitCount}}次 </view> </view> <view class="txt2">会员将在{{item.endTime.slice(0,10)}}后到期,剩余{{item.surplusCount}}次</view> <view class="btn"> 已开通 </view> </view> </view> <view class="" style="max-height: 1400rpx;overflow: scroll;" v-else> <view class="vip_box1" v-for="(item,index) in huiyuanlist" :key="index"> <view class="txt1" >{{item.vipLevelName == null ? '--' : item.vipLevelName}}</view> <view class="txt1" style="position: absolute;top: 70rpx;font-size: 24rpx;font-weight: 400;display: flex;">每单享{{item.discount == null ? '--' : item.discount}}折 <view class="" v-if="item.limitType == 1"> 使用无限制 </view> <view class="" v-if="item.limitType == 2"> 每周最多用{{item.limitCount == null ? '--' : item.limitCount}}次 </view> <view class="" v-if="item.limitType == 3"> 每30天最多用{{item.limitCount == null ? '--' : item.limitCount}}次 </view> </view> <view class="txt2">会员将在{{item.endTime.slice(0,10)}}后到期,剩余{{item.surplusCount}}次</view> <view class="btn"> 已开通 </view> </view> </view> <view v-if="zanwuflag && storeId == '' " style="width: 100%;text-align: center;margin-top: 50rpx;font-size: 32rpx;color: #ccc;"> 暂无更多会员... </view> </view> </template> <script> export default { data() { return { background: { backgroundColor: '#fff' }, userinfo:{}, chooseInfo:{}, chooseidx:0, typeflag:false, tit:'会员中心', huiyuanlist:[], zanwuflag:false, storeId:'', huiyuanzaishoulist:[], price:'', channelId:'', mchid:'', zfobj:{} } }, onLoad(option) { if(option.storeId){ this.typeflag = true this.storeId = option.storeId this.tit = '购买会员' this.getlist() this.getzaishou() }else{ this.typeflag = false this.tit = '会员中心' this.getlist() } this.getinfo() }, onShow() { }, methods: { // 根据店铺id查询在售会员列表 getzaishou(){ this.$u.get(`/app/vipLevel/list?pageNum=1&pageSize=99&storeId=${this.storeId}`).then((res) => { if (res.code == 200) { this.huiyuanzaishoulist = res.rows this.price = this.huiyuanzaishoulist[0].price this.mchid = this.huiyuanzaishoulist[0].mchId this.zfobj = this.huiyuanzaishoulist[0] this.getzfqd() } }) }, // 请求个人会员列表 getlist(){ this.$u.get(`/app/vip/list?pageNum=1&pageSize=999&orderByColumn=createTime&isAsc=desc&inValid=true`).then((res) => { if (res.code == 200) { this.huiyuanlist = res.rows if(res.rows != ''){ this.zanwuflag = false }else{ this.zanwuflag = true } } }) }, // 请求个人信息 getinfo(){ this.$u.get("/app/user/userInfo").then((res) => { if (res.code == 200) { this.userinfo = res.data } }) }, // 点击开通会员 btnkt(num){ if(num == 1){ //月卡开通 uni.navigateTo({ url:'/page_geren/kaitonghuiyuan' }) }else{ //年卡开通 uni.navigateTo({ url:'/page_geren/kaitonghuiyuan' }) } }, // 点击跳转到购买记录 topage(){ uni.navigateTo({ url:'/page_geren/vip_his' }) }, // 点击切换高亮 choose(itm,idx){ this.price = itm.price this.zfobj = itm this.chooseInfo = itm this.chooseidx = idx }, // 获取支付渠道 getzfqd(){ this.$u.get(`/app/channel/recharge/enabledList?mchId=` + this.mchid).then(res =>{ if(res.code == 200){ this.channelId = res.data[0].channelId } }) }, // 点击支付购买会员 btnzf(){ let data={ amount:this.price, channelId:this.channelId, levelId: this.zfobj.id, levelTime: this.zfobj.time, levelPrice: this.price, levelLimitType: this.zfobj.limitType, levelLimitCount: this.zfobj.limitCount, levelLimitTotal: this.zfobj.limitTotal, levelDiscount: this.zfobj.discount, levelStoreId: this.storeId } let that = this that.$u.post("/app/vipOrder",data).then((res) => { if (res.code == 200) { uni.requestPayment({ provider: 'wxpay', timeStamp: res.data.payParams.timeStamp, nonceStr: res.data.payParams.nonceStr, package: res.data.payParams.packageVal, signType: res.data.payParams.signType, paySign: res.data.payParams.paySign, success(ress) { // 刷新支付接口 that.$u.put(`/app/vipOrder/refreshPayResult?orderNo=${res.data.orderNo}`).then(res =>{ uni.navigateBack() }).catch(()=>{ uni.navigateBack() }) }, fail(err) { uni.showToast({ title: '支付失败', icon: 'none', duration: 2000 }) } }) } }) }, } } </script> <style lang="scss"> /deep/ .uni-navbar { background: transparent !important; // 使用 !important 确保覆盖原样式 } page { background-color: #F4F4F4; } .custom-select { .mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); z-index: 999; } .select-content { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; border-radius: 20rpx 20rpx 0 0; z-index: 1000; height: 50vh; // 最大高度 // min-height: 400rpx; // 添加最小高度 display: flex; flex-direction: column; padding-bottom: 20rpx; .select-header { padding: 20rpx 30rpx; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #eee; .close { font-size: 40rpx; color: #999; } } .search-box { padding: 15rpx 20rpx; border-bottom: 1px solid #eee; input { width: 100%; height: 60rpx; background: #f5f5f5; border-radius: 30rpx; padding: 0 30rpx; font-size: 28rpx; } } .select-list { flex: 1; max-height: calc(50vh - 140rpx); min-height: 260rpx; // 为列表添加最小高度 .select-item { display: flex; // flex-direction: column; justify-content: space-between; align-items: center; padding: 20rpx 30rpx; border-bottom: 1px solid #eee; font-size: 28rpx; &.highlight { background-color: #f0f9ff; color: #2d8cf0; } &:active { background: #f5f5f5; } } } } } .page { .fee_box { margin-top: 18rpx; position: relative; margin-left: 38rpx; width: 680rpx; height: 288rpx; background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ugciMYClSGgJxP8HYoRU'); background-size: cover; background-position: center; background-repeat: no-repeat; .auto_box::-webkit-scrollbar { display: none; } .auto_box { padding-left: 24rpx; display: flex; overflow-x: auto; /* 允许横向滚动 */ flex-wrap: nowrap; /* 禁止换行,保持所有元素在一行 */ position: absolute; top: 90rpx; width: 100%; /* 根据需要调整宽度 */ height: auto; /* 根据内容自动调整高度 */ .auto_li { position: relative; padding: 24rpx 28rpx; margin-right: 22rpx; width: 408rpx; height: 176rpx; flex-shrink: 0; /* 防止子元素被压缩 */ background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ui88NWy9R1j2zFGojdHU'); background-size: cover; background-position: center; .txt1{ width: 100%; font-weight: 600; font-size: 32rpx; color: #495E74; } .txt2{ font-weight: 400; font-size: 24rpx; color: #495E74; } .buy_btn{ position: absolute; right: 26rpx; bottom: 38rpx; display: flex; align-items: center; justify-content: center; width: 132rpx; height: 50rpx; background: #495E74; border-radius: 25rpx 25rpx 25rpx 25rpx; font-weight: 500; font-size: 28rpx; color: #FFF3DB; } } } } .fixed { z-index: 999; position: fixed; top: 0; } .tipss{ margin-left: 40rpx; font-weight: 500; font-size: 36rpx; color: #3D3D3D; } .vipcard { padding: 36rpx ; width: 680rpx; height: 244rpx; margin: auto; margin-top: 30rpx; z-index: 1; background-image: url('https://lxnapi.ccttiot.com/bike/img/static/u78FEc5oHRKzdvopQpZE'); background-size: cover; /* 背景图片等比缩放以覆盖整个容器 */ background-position: center; /* 背景图片居中显示 */ background-repeat: no-repeat; .card_top{ display: flex; flex-wrap: nowrap; align-items: center; .name{ font-weight: 500; font-size: 44rpx; color: #B07C1E; } .type{ margin-left: 30rpx; padding: 4rpx 18rpx; font-weight: 400; font-size: 24rpx; color: #B07C1E; border-radius: 35rpx 35rpx 35rpx 35rpx; border: 1rpx solid #B07C1E; } } .card_bot{ margin-top: 20rpx; display: flex; flex-wrap: nowrap; align-items: center; .txts{ font-weight: 400; font-size: 28rpx; color: #B07C1E; } .topage{ margin-left: auto; font-weight: 400; font-size: 28rpx; color: #B07C1E; } } } .pay_btn{ display: flex; align-items: center; justify-content: center; margin: 20rpx auto ; width: 680rpx; height: 104rpx; background: linear-gradient( 90deg, rgba(255,201,87,0.84) 0%, rgba(255,224,158,0.58) 100%); border-radius: 58rpx 58rpx 58rpx 58rpx; font-weight: 500; font-size: 44rpx; color: #B07C1E; position: fixed; left: 50%; transform: translateX(-50%); bottom: 30rpx; } .backimg { position: fixed; width: 750rpx; height: 670rpx; top: 0; left: 0; z-index: -1; // 确保背景图片在所有内容之下 } .txt{ margin: 40rpx 48rpx; font-weight: 400; font-size: 24rpx; color: #64B6A7; padding-bottom: 20rpx; box-sizing: border-box; } .cont_box { display: flex; flex-wrap: nowrap; padding: 0 38rpx; box-sizing: border-box; z-index: 10; overflow-x: auto; // 允许横向滚动 white-space: nowrap; // 保持内容不换行 -webkit-overflow-scrolling: touch; // 使滚动更流畅 // 隐藏横向滚动条 ::-webkit-scrollbar { display: none; height: 0; } scrollbar-width: none; // 针对 Firefox -ms-overflow-style: none; // 针对 Internet Explorer 和 Edge .act1{ background: #FFFBF1; } .cont_li { width: 230rpx; height: 330rpx; background: rgba(255, 224, 158, 0.15) #FFFFFF; border-radius: 20rpx; border: 1rpx solid rgba(176, 124, 30, 0.56); z-index: 10; flex-shrink: 0; // 防止子元素缩小 margin-right: 20rpx; // 子元素之间的间距 .tit{ width: 100%; text-align: center; font-weight: 500; font-size: 32rpx; color: #B07C1E; margin-top: 10rpx; } .money{ width: 100%; text-align: center; margin-top: 10rpx; font-weight: 600; font-size: 32rpx; color: #E46666; } .tips{ margin-top: 10rpx; width: 100%; text-align: center; font-weight: 400; font-size: 24rpx; color: #979797; } } } .cont_box::-webkit-scrollbar { display: none; } .mc { width: 750rpx; height: 40rpx; z-index: 2; position: relative; top: -40rpx; } } .page { width: 750rpx; .fee_box { margin-top: 40rpx; position: relative; margin-left: 38rpx; width: 680rpx; height: 288rpx; background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ugciMYClSGgJxP8HYoRU'); background-size: cover; background-position: center; background-repeat: no-repeat; .auto_box::-webkit-scrollbar { display: none; } .auto_box { padding-left: 24rpx; display: flex; overflow-x: auto; /* 允许横向滚动 */ flex-wrap: nowrap; /* 禁止换行,保持所有元素在一行 */ position: absolute; top: 90rpx; width: 100%; /* 根据需要调整宽度 */ height: auto; /* 根据内容自动调整高度 */ .auto_li { position: relative; padding: 24rpx 28rpx; margin-right: 22rpx; width: 408rpx; height: 176rpx; flex-shrink: 0; /* 防止子元素被压缩 */ background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ui88NWy9R1j2zFGojdHU'); background-size: cover; background-position: center; .txt1 { width: 100%; font-weight: 600; font-size: 32rpx; color: #495E74; } .txt2 { font-weight: 400; font-size: 24rpx; color: #495E74; } .buy_btn { position: absolute; right: 26rpx; bottom: 38rpx; display: flex; align-items: center; justify-content: center; width: 132rpx; height: 50rpx; background: #495E74; border-radius: 25rpx 25rpx 25rpx 25rpx; font-weight: 500; font-size: 28rpx; color: #FFF3DB; } } } } .vip_box1 { position: relative; margin-left: 38rpx; width: 680rpx; height: 158rpx; background-image: url('https://lxnapi.ccttiot.com/bike/img/static/uiaiNkMy7221n3bk2ta0'); background-size: cover; /* 背景图片等比缩放以覆盖整个容器 */ background-position: center; /* 背景图片居中显示 */ background-repeat: no-repeat; margin-bottom: 20rpx; .txt1 { top: 20rpx; left: 171rpx; position: absolute; font-weight: 500; font-size: 39rpx; color: #B07C1E; } .txt2 { position: absolute; left: 171rpx; bottom: 20rpx; font-weight: 400; font-size: 25rpx; color: #B07C1E; } .btn { display: flex; align-items: center; justify-content: center; position: absolute; top: 18rpx; right: 23rpx; width: 150rpx; height: 43rpx; border-radius: 31rpx 31rpx 31rpx 31rpx; border: 1rpx solid #B07C1E; font-weight: 400; font-size: 25rpx; color: #B07C1E; } } .vip_box { position: relative; margin-left: 38rpx; width: 680rpx; height: 158rpx; background-image: url('https://lxnapi.ccttiot.com/bike/img/static/uw6bYgjn1bS1ayNm6VI9'); background-size: cover; /* 背景图片等比缩放以覆盖整个容器 */ background-position: center; /* 背景图片居中显示 */ background-repeat: no-repeat; margin-top: 40rpx; .txt1 { top: 20rpx; left: 100rpx; position: absolute; font-weight: 500; font-size: 44rpx; color: #FFE09E; } .txt2 { position: absolute; right: 74rpx; bottom: 10rpx; font-weight: 400; font-size: 24rpx; color: #FFE09E; } } .btns { display: flex; align-items: center; justify-content: center; width: 680rpx; height: 90rpx; background: #64B6A7; color: #fff; font-size: 36rpx; border-radius: 20rpx; margin: 40rpx auto; } .fixed { z-index: 999; position: fixed; top: 0; } .backimg-container { position: fixed; top: -7px; left: 0; width: 100%; height: 564rpx; z-index: 0; .backimg { width: 100%; height: 100%; position: absolute; top: 0; left: 0; } } .topbg { width: 750rpx; // background: #fff; height: 184rpx; .topbox { width: 750rpx; // background: #fff; height: 184rpx; border-radius: 0 0 100rpx 0; .info { padding-top: 40rpx; margin-left: 100rpx; display: flex; flex-wrap: nowrap; align-items: center; image { width: 90rpx; height: 90rpx; border-radius: 50%; } .cont { margin-left: 40rpx; width: 70%; .name { font-weight: 400; font-size: 32rpx; color: #FFFFFF; width: 100%; text-shadow: 0px 8px 20px rgba(0, 0, 0, 0.3); } .phone { margin-top: 4rpx; width: 100%; font-weight: 400; font-size: 20rpx; color: #FFFFFF; text-shadow: 0px 8px 20px rgba(0, 0, 0, 0.3); } } } } } .type_cont { width: 680rpx; padding: 58rpx 54rpx; // height: 608rpx; background: #FFFFFF; border-radius: 20rpx 20rpx 20rpx 20rpx; margin: 0 auto; margin-top: 30rpx; .type_li { width: 100%; display: flex; align-items: center; flex-wrap: nowrap; font-weight: 400; font-size: 32rpx; color: #2F3240; image { width: 44rpx; height: 44rpx; margin-right: 20rpx; } .icon-xiangyou1 { margin-left: auto; color: #2F3240; font-size: 36rpx; } } } .tocont { display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-around; margin: 0 auto; margin-top: 100rpx; width: 680rpx; height: 176rpx; background: #fff; border-radius: 20rpx 20rpx 20rpx 20rpx; z-index: 10; position: relative; .cont_li { width: 112rpx; display: flex; flex-wrap: wrap; justify-content: center; image { margin-top: 10rpx; width: 44rpx; height: 44rpx; } .txt { width: 112rpx; text-align: center; font-weight: 400; font-size: 28rpx; color: #2F3240; } } } .btnbg { width: 750rpx; // background: #4C97E7; .btnbox { padding-top: 36rpx; width: 750rpx; background: #fff; border-radius: 100rpx 0 0 0; .btncard { padding: 0 54rpx; margin: 0 auto; width: 680rpx; // height: 438rpx; padding: 0 56rpx; background: #FFFFFF; box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0, 0, 0, 0.08); border-radius: 34rpx 34rpx 34rpx 34rpx; .card_li { padding-top: 18rpx; width: 100%; display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; border-bottom: 2rpx solid #D8D8D8; padding-bottom: 26rpx; .card_left { // width: 100%; display: flex; flex-wrap: nowrap; // align-items: center; image { margin-right: 28rpx; width: 40rpx; height: 40rpx; } .text { margin-right: 24rpx; font-weight: 400; font-size: 28rpx; color: #3D3D3D; } .tip { display: flex; align-items: center; justify-content: center; width: 80rpx; height: 28rpx; background: #FFEFEF; border-radius: 17rpx 17rpx 17rpx 17rpx; font-weight: 400; font-size: 16rpx; color: #FA5F5F; } } .icon-xiangyou1 { font-size: 42rpx; color: #3D3D3D; } } } } } } </style>