517 lines
14 KiB
Vue
517 lines
14 KiB
Vue
<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> |