oil-station/gasStation-uni/pagesMy/VIP/vip.vue

517 lines
14 KiB
Vue
Raw Normal View History

2024-08-16 18:26:19 +08:00
<template>
<view class="content">
<view class="container" v-if="isExist">
<view class="my-header">
<view class="my-icons" @click="goBack"> <uni-icons type="left" size="16"></uni-icons> </view>
<view class="my-text">会员</view>
<view class="my-icons"></view>
</view>
<!-- 顶部区域 -->
<uni-swiper-dot class="uni-swiper-dot-box" @clickItem=clickItem :info="info" :current="current" :mode="mode"
:dots-styles="dotsStyles" field="content">
<swiper class="swiper-box" @change="change" :current="swiperDotIndex">
<swiper-item v-for="(item, index) in userGradeList" :key="index">
<view>
<view class="top-box">
<view class="b-top">
<view style="width: 70%;">
<view class="title-size">
{{item.name}}
<span v-if="member.gradeId==item.id">(当前等级)</span>
</view>
<view class="min-size" style="margin-bottom: 20px;">升级会员享更多特权</view>
<!-- <view class="min-size" style="margin-bottom: 10px;" v-if="userBalance.gradeId == item.id && index < (userGradeList.length-1)">
在获得{{item.growthValue - userBalance.growthValue}}可升级至{{userGradeList[index+1].name}}
</view>
<view class="min-size" style="margin-bottom: 10px;" v-else-if="userBalance.gradeId == item.id && index == (userGradeList.length-1)">
已达到最高等级
</view> -->
<view class="min-size" style="margin-bottom: 10px;" >
达到当前等级所需成长值为{{item.growthValue}}
</view>
<u-line-progress :percentage="percentage" activeColor="#2F72F7"></u-line-progress>
</view>
<view class="right-img">
<image src="../../static/imgs/vipxz.png" mode="aspectFit"></image>
</view>
</view>
</view>
<!-- qy -->
<view class="c-box">
<!-- <view class="title-bai">会员权益</view> -->
<view class="wrap-box">
<view class="box-ba" v-for="(item,index) in oilNameList" :key="index">
<view class="min-box">
<image :src="item.imgurl" mode="aspectFit"></image>
</view>
<view class="mu_">{{item.name}}</view>
</view>
</view>
</view>
</view>
</swiper-item>
</swiper>
</uni-swiper-dot>
<!-- <view style="height: 300px; width: 100%;"></view> -->
<view class="bottom-box">
<!-- <scroll-view scroll-y="true" class="scroll-Y"> -->
<view class="bottom-bai-box">
<view class="b-top-bt">
<view class="title">汽油优惠信息</view>
<!-- <view class="times">每天04:00更新</view> -->
</view>
<view class="b-center" v-if="userGrade.preferential!='自定义优惠'">无优惠</view>
<view v-else>
<view class="b-center" v-if="userGrade.gasolineDiscount=='满减优惠'">
满减优惠:
<view class="b-center-spn" v-for="(item,index) in gasolineRule" :key="index">
消费满{{item.gasolineRule1}},立减{{item.gasolineRule2}}
</view>
</view>
<view class="b-center" v-else-if="userGrade.gasolineDiscount=='每升优惠'">
每升优惠:
<view class="b-center-spn" v-for="(item,index) in gasolineRule" :key="index">
消费满{{item.gasolineRule1}},每升优惠{{item.gasolineRule3}}
</view>
</view>
<view class="b-center" v-else>{{userGrade.gasolineDiscount}}</view>
</view>
<view class="title">成长规则每消费<text style=" margin: 0px 5px; color:#ff5c28 ;">1</text> 元加<text
style="margin: 0px 5px;color:#2c62cd ;">{{chainStoreConfig.gasGrowthValue}}</text>成长值</view>
</view>
<view class="bottom-bai-box">
<view class="b-top-bt">
<view class="title">柴油优惠信息</view>
<!-- <view class="times">每天04:00更新</view> -->
</view>
<view class="b-center" v-if="userGrade.preferential!='自定义优惠'">无优惠</view>
<view v-else>
<view class="b-center" v-if="userGrade.dieselDiscount=='满减优惠'">
满减优惠:
<view class="b-center-spn" v-for="(item,index) in dieselRule" :key="index">
消费满{{item.dieselRule1}},立减{{item.dieselRule2}}
</view>
</view>
<view class="b-center" v-else-if="userGrade.dieselDiscount=='每升优惠'">
每升优惠:
<view class="b-center-spn" v-for="(item,index) in dieselRule" :key="index">
消费满{{item.dieselRule1}},每升优惠{{item.dieselRule3}}
</view>
</view>
<view class="b-center" v-else>{{userGrade.dieselDiscount}}</view>
</view>
<view class="title">成长规则每消费<text style=" margin: 0px 5px; color:#ff5c28 ;">1</text> 元加<text
style="margin: 0px 5px;color:#2c62cd ;">{{chainStoreConfig.dieselGrowthValue}}</text>成长值</view>
</view>
<view class="bottom-bai-box">
<view class="b-top-bt">
<view class="title">天然气优惠信息</view>
<!-- <view class="times">每天04:00更新</view> -->
</view>
<view class="b-center" v-if="userGrade.preferential!='自定义优惠'">无优惠</view>
<view v-else>
<view class="b-center" v-if="userGrade.naturalGasDiscount=='满减优惠'">
满减优惠:
<view class="b-center-spn" v-for="(item,index) in naturalGasRule" :key="index">
消费满{{item.naturalGas1}},立减{{item.naturalGas2}}
</view>
</view>
<view class="b-center" v-else-if="userGrade.naturalGasDiscount=='每升优惠'">
每升优惠:
<view class="b-center-spn" v-for="(item,index) in naturalGasRule" :key="index">
消费满{{item.naturalGas1}},每升优惠{{item.naturalGas3}}
</view>
</view>
<view class="b-center" v-else>{{userGrade.naturalGasDiscount}}</view>
</view>
<view class="title">成长规则每消费<text style=" margin: 0px 5px; color:#ff5c28 ;">1</text> 元加<text
style="margin: 0px 5px;color:#2c62cd ;">{{chainStoreConfig.naturalGrowthValue}}</text>成长值</view>
</view>
<!-- <view class="bottom-bai-box">
<view class="title">每消费<text style=" margin: 0px 5px; color:#ff5c28 ;">200</text> 元加<text
style="margin: 0px 5px;color:#2c62cd ;">1%</text>成长值</view>
</view> -->
<!-- </scroll-view> -->
</view>
</view>
<view class="container" v-else>
<view class="my-header">
<view class="my-icons" @click="goBack"> <uni-icons type="left" size="16"></uni-icons> </view>
<view class="my-text">会员</view>
<view class="my-icons"></view>
</view>
<view style="width:100%;height: 90vh;background-color: white;text-align: center;">当前店铺不存在会员等级信息</view>
</view>
</view>
</template>
<script>
import request from '../../utils/request'
export default {
data() {
return {
percentage:0,
title: '',
info: [{
colorClass: 'uni-bg-red',
url: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg',
content: '内容 A'
},
{
colorClass: 'uni-bg-green',
url: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg',
content: '内容 B'
},
{
colorClass: 'uni-bg-blue',
url: 'https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/shuijiao.jpg',
content: '内容 C'
}
],
oilNameList: [
{name:"汽油",imgurl:"../../static/imgs/gasoline.png"},
{name:"柴油",imgurl:"../../static/imgs/diesel_oil.png"},
{name:"天然气",imgurl:"../../static/imgs/natural_gas.png"},
],
modeIndex: -1,
styleIndex: -1,
current: 0,
mode: 'default',
dotsStyles: {},
swiperDotIndex: 0,
// 会员等级列表信息
userGradeList:[],
storeId:uni.getStorageSync("storeId"),
userId:"",
userBalance:{},
userGrade:{},
// 汽油优惠
gasolineRule:[],
// 柴油优惠
dieselRule:[],
// 天然气优惠
naturalGasRule:[],
// 连锁店配置信息
chainStoreConfig: {},
// 当前店铺是否存在会员等级信息
isExist:false,
// 当前用户的会员信息
member:{},
}
},
onLoad() {
this.storeId = uni.getStorageSync("storeId")
this.getList(this.storeId)
this.getChainConfig(this.storeId)
this.getUserBalance()
this.getMember()
},
methods: {
getPercentage(id){
let grade = {}
request({
url: "business/userManager/userGrade/" + this.member.gradeId,
method: 'get',
}).then((res) => {
grade = res.data
this.userGradeList.forEach(item => {
if (item.id == id){
if (grade.grade > item.grade){
this.percentage = 100
}
if (grade.grade < item.grade){
this.percentage = 0
}
if (grade.grade == item.grade){
this.percentage = ((this.member.growthValue / item.growthValue) * 100).toFixed(0)
}
}
})
})
},
// 获取当前登入用户的等级信息
getMember(){
request({
url: "business/userManager/user/storeUserInfo/" + this.storeId,
method: 'get',
}).then((res) => {
this.member = res.data
this.getPercentage(this.userGrade.id)
})
},
getChainConfig(storeId){
let _this = this;
request({
url: "business/userManager/chainStoreConfig/" + storeId,
method: 'get',
}).then((res) => {
_this.chainStoreConfig = res.data
})
},
// 获取用户余额信息
getUserBalance(){
let _this = this;
request({
url: "business/userManager/user/userBalanceByUserId",
method: 'get',
}).then((res) => {
_this.userBalance = res.data
})
},
// 获取会员等级列表信息
getList(storeId){
let _this = this;
request({
url: "business/userManager/userGrade/getGradeList/"+storeId,
method: 'get',
}).then((res) => {
if (res.data){
this.isExist = true
this.userGradeList = res.data
this.userGrade = res.data[0]
if (res.data[0].preferential == '自定义优惠'){
this.gasolineRule = JSON.parse(res.data[0].gasolineRule)
this.dieselRule = JSON.parse(res.data[0].dieselRule)
this.naturalGasRule = JSON.parse(res.data[0].naturalGasRule)
}
// this.getPercentage(res.data[0].id)
}else{
this.isExist = false
}
})
},
change(e) {
this.current = e.detail.current
this.userGrade = this.userGradeList[this.current]
if (this.userGradeList[this.current].preferential == '自定义优惠'){
this.gasolineRule = JSON.parse(this.userGradeList[this.current].gasolineRule)
this.dieselRule = JSON.parse(this.userGradeList[this.current].dieselRule)
this.naturalGasRule = JSON.parse(this.userGradeList[this.current].naturalGasRule)
}
this.getPercentage(this.userGrade.id)
},
goBack() {
uni.navigateBack()
}
}
}
</script>
<style scoped lang="scss">
.b-center{
line-height: 25px;
margin: 10px 0;
margin-left: 10px;
font-size: 15px;
}
.b-center-spn{
margin-left: 20px;
}
.swiper-box {
height: 50vh;
}
.content {
background: #2F3648;
height: 100vh;
}
.container {
width: 100%;
box-sizing: border-box;
padding-top: 88px;
}
.my-header {
width: 100%;
height: 88px;
background: #ffffff;
display: flex;
align-items: center;
justify-content: space-between;
color: #000;
box-sizing: border-box;
padding: 0px 15px;
padding-top: 40px;
.my-icons {
width: 20px;
}
position: fixed;
top: 0px;
}
.top-box {
width: 90%;
border-radius: 8px;
box-sizing: border-box;
padding: 20px;
background: linear-gradient(90deg, #EEF4FF 0%, #AEC9FF 100%);
margin: 10px auto;
}
.b-top {
color: #2F72F7;
display: flex;
justify-content: space-between;
}
.right-img {
width: 80px;
height: 80px;
image {
width: 100%;
height: 100%;
}
}
.title-size {
font-weight: bold;
font-size: 18px;
}
.min-size {
font-size: 12px;
}
.c-box {
width: 90%;
box-sizing: border-box;
padding: 15px;
margin: 20px auto;
height: 188px;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0) 100%);
border-radius: 8px;
}
.title-bai {
font-size: 18px;
font-weight: bold;
color: #ffffff;
}
.wrap-box {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
.box-ba {
width: 33%;
text-align: center;
margin: 10px auto;
color: #ffffff;
font-size: 12px;
}
.min-box {
width: 90%;
height: 90px;
margin: 5px auto;
image {
width: 100%;
height: 100%;
}
}
.bottom-box {
background: #F3F5F9;
width: 100%;
border-radius: 16px 16px 0px 0px;
box-sizing: border-box;
padding: 15px;
position: fixed;
bottom: 0px;
height: 390px;
overflow-y: scroll;
}
.bottom-bai-box {
width: 100%;
border-radius: 8px;
background: #ffffff;
box-sizing: border-box;
padding: 10px;
margin: 15px auto;
}
.b-top-bt {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.title {
font-size: 16px;
font-weight: bold;
color: #333333;
}
.times {
font-size: 12px;
color: #999999;
}
.btimg {
image {
width: 44px;
height: 44px;
}
}
.anniu {
width: 70px;
height: 30px;
background: #EB3E67;
border-radius: 15px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 14px;
font-weight: bold;
}
.disa {
display: flex;
align-items: center;
justify-content: center;
}
.an-title {
font-size: 16px;
font-weight: bold;
color: #333333;
margin-left: 5px;
}
.mu_ {
font-size: 18px;
font-weight: bold;
margin: 15px auto;
}
</style>