parent
bb49e55e75
commit
6e750da2c6
@ -0,0 +1,42 @@ |
||||
<template> |
||||
<span> |
||||
<!-- <span v-show="level ==>{{ level }}</span> --> |
||||
<span v-show="level == 1" class="levelTag v1">V{{ level }}</span> |
||||
<span v-show="level == 2" class="levelTag v2">V{{ level }}</span> |
||||
<span v-show="level == 3" class="levelTag v3">V{{ level }}</span> |
||||
</span> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
props: { |
||||
level: Number |
||||
}, |
||||
|
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
.levelTag { |
||||
padding: 5rpx 6rpx; |
||||
border-radius: 50%; |
||||
color: #FFFFFF; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
font-size: 12px; |
||||
margin-left: 10rpx; |
||||
line-height: 23px; |
||||
} |
||||
|
||||
.v1 { |
||||
background: linear-gradient(0deg, #29F19C, #02A1F9); |
||||
} |
||||
|
||||
.v2 { |
||||
background: linear-gradient(0deg, #015EEA, #00C0FA); |
||||
} |
||||
|
||||
.v3 { |
||||
background: linear-gradient(0deg, #FACC22, #F83600); |
||||
} |
||||
</style> |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,169 @@ |
||||
<template> |
||||
<view class="rulesWrap"> |
||||
<view class="rulesImage"> |
||||
<img src="http://image.bjkeyware.com/static/index/rulesBanner.png" alt=""> |
||||
</view> |
||||
<view class="rulesGroup"> |
||||
<view class="rulesTitle">等级及对应成长值:</view> |
||||
<u-table width="100%"> |
||||
<u-tr style="font-size: 25rpx;"> |
||||
<u-th style="width: 11%;">等级</u-th> |
||||
<u-th style="width: 30%;">对应成长值</u-th> |
||||
<u-th style="width: 59%;">权益等级</u-th> |
||||
</u-tr> |
||||
<u-tr v-for="(item, index) in scoreArray" :key="index" style="" v-show="index != scoreArray.length -1"> |
||||
<u-td style="width: 11%;">{{ scoreComputed(item.minScore, index, |
||||
'myLevel') }}</u-td> |
||||
<u-td style=" width: 30%;"> |
||||
<view>{{ |
||||
scoreComputed(item.minScore, index, |
||||
'scoreRange') }}</view> |
||||
</u-td> |
||||
<u-td style="width: 59%;"> |
||||
<view> 新增竞标 <span :style="{ |
||||
text: 'left', |
||||
color: scoreComputed(item.minScore, index, |
||||
'myGradeEquity') != '无门槛' ? '#FF5A4D' : '' |
||||
}">{{ scoreComputed(item.minScore, index, |
||||
'myGradeEquity') }}</span> 的众包任务的资格</view> |
||||
</u-td> |
||||
</u-tr> |
||||
|
||||
</u-table> |
||||
</view> |
||||
<view class="rulesGroup"> |
||||
<view class="rulesTitle">成长值获取途径:</view> |
||||
<view class="growWays"> |
||||
<view v-for="(item, index) in staticWays" :key="index"> |
||||
<view class="waysTitle">{{ index + 1 }}. {{ item.split(' ')[0] }}</view> |
||||
<view class="waysInfo">{{ item.split(' ')[1] }}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="moreWays">更多获取途径敬请期待</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
const staticWays = [ |
||||
'实名认证 通过在我的页面完成实名认证,可获取50成长值', |
||||
'云员工认证 通过去PC端https://bjkeyware.com/ability/user完成云员工认证可获得300成长值', |
||||
'竞标任务 竞标成功后,实施验收通过后,可自动获取到200成长值' |
||||
] |
||||
import { scoreStrategies, getLevel } from '@/utils/userlevel'; |
||||
const scoreArray = JSON.parse(JSON.stringify(scoreStrategies)).reverse() |
||||
export default { |
||||
data() { |
||||
return { |
||||
scoreArray: scoreArray, |
||||
staticWays: staticWays |
||||
} |
||||
}, |
||||
computed: { |
||||
scoreComputed() { |
||||
return (min, index, tag) => { |
||||
const { level, equity } = getLevel(min) |
||||
if (tag == 'myLevel') { |
||||
return 'L' + level |
||||
} else if (tag == 'myGradeEquity') { |
||||
return equity |
||||
} else { |
||||
if (index == this.scoreArray.length - 1) { |
||||
return `X ≥ ${this.scoreArray[index].minScore}` |
||||
} |
||||
const max = this.scoreArray[index + 1].minScore |
||||
return `${min} ≤X<${max} ` |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss"> |
||||
.u-td view { |
||||
text-align: start; |
||||
font-size: 24rpx; |
||||
} |
||||
|
||||
.u-th view { |
||||
text-align: start !important; |
||||
font-size: 23rpx; |
||||
padding-left: 15rpx; |
||||
background-color: #EAF1FD !important; |
||||
|
||||
} |
||||
|
||||
.u-td { |
||||
text-align: start !important; |
||||
flex: none !important; |
||||
} |
||||
|
||||
.u-th { |
||||
font-size: 26rpx; |
||||
text-align: start !important; |
||||
padding-left: 15rpx; |
||||
background-color: #EAF1FD !important; |
||||
flex: none !important; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
.rulesWrap { |
||||
padding: 35rpx 25rpx; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
|
||||
.rulesImage { |
||||
img { |
||||
height: 200rpx; |
||||
width: 100%; |
||||
} |
||||
} |
||||
|
||||
.rulesGroup { |
||||
margin: 30rpx auto; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
padding: 0 20rpx; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
padding: 30rpx 25rpx 30rpx 25rpx; |
||||
margin: 25rpx 0; |
||||
|
||||
.rulesTitle { |
||||
font-size: 28rpx; |
||||
color: #000000; |
||||
font-weight: bold; |
||||
line-height: 50rpx; |
||||
margin-bottom: 10rpx; |
||||
} |
||||
|
||||
.growWays { |
||||
line-height: 42rpx; |
||||
font-size: 24rpx; |
||||
|
||||
.waysTitle { |
||||
color: #333333; |
||||
} |
||||
|
||||
.waysInfo { |
||||
color: #666666; |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
.moreWays { |
||||
margin-top: 40rpx; |
||||
text-align: center; |
||||
font-size: 28rpx; |
||||
color: #5F6975; |
||||
line-height: 25rpx; |
||||
} |
||||
|
||||
} |
||||
</style> |
@ -0,0 +1,144 @@ |
||||
<template> |
||||
<view class="taskWrap"> |
||||
<view class="taskItem" v-for="(task, index) in taskArrays" :key="index"> |
||||
<view> |
||||
<view class="taskItemTitle">{{ task.lable }}</view> |
||||
<view class="taskItemInfo"><span style="margin-right: 15rpx;color: #FC4A4A;">+{{ task.score }} |
||||
</span>成长值 |
||||
</view> |
||||
</view> |
||||
<view v-if="!task.state" class="taskBtn missonSuccess" @click="dropTo(task.url)"> |
||||
{{ '去完成' }} |
||||
</view> |
||||
<view v-else class="taskBtn missonFaild"> |
||||
{{ '已完成' }} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
const taskArrays = [ |
||||
{ lable: '实名认证', score: '50', url: '/pages/personal/setup/certification', state: false }, |
||||
{ lable: '云员工认证', score: '300', url: 'cloud', state: false }, |
||||
{ lable: '去竞标任务', score: '200', url: '', state: false }, |
||||
] |
||||
export default { |
||||
data() { |
||||
return { |
||||
taskArrays: taskArrays, |
||||
phoneuserinfo: null |
||||
} |
||||
}, |
||||
onShow() { |
||||
this.phoneuserinfo = uni.getStorageSync('wxUserInfo'); |
||||
this.http.quickGet('/getInfo', true).then(res => { |
||||
const { testerStatus } = res.data.user |
||||
if (testerStatus == 1) { |
||||
this.taskArrays[0].state = true |
||||
} else if (testerStatus == 2) { |
||||
this.taskArrays[0].state = true |
||||
this.taskArrays[1].state = true |
||||
} else if (testerStatus == 0) { |
||||
this.taskArrays[0].state = false |
||||
} |
||||
}) |
||||
}, |
||||
methods: { |
||||
dropTo(url) { |
||||
if (url == 'cloud') { |
||||
uni.showModal({ |
||||
title: `云员工认证请前往PC端`, |
||||
content: 'PC端网址:https://bjkeyware.com', |
||||
showCancel: false, |
||||
confirmText: '复制网址', |
||||
success: function (res) { |
||||
if (res.confirm) { |
||||
uni.setClipboardData({ |
||||
data: url, |
||||
success: function () { |
||||
uni.showToast({ |
||||
title: '复制成功', |
||||
}) |
||||
}, |
||||
fail: function () { |
||||
uni.showToast({ |
||||
title: '复制失败', |
||||
}) |
||||
}, |
||||
}) |
||||
} |
||||
}, |
||||
}) |
||||
return |
||||
} |
||||
if (url) { |
||||
uni.navigateTo({ |
||||
url: `${url}` |
||||
}) |
||||
return |
||||
} |
||||
uni.switchTab({ |
||||
url: '/pages/index/testcrowdsourc/testcrowdsourc', |
||||
}) |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.taskWrap { |
||||
padding: 35rpx 0; |
||||
|
||||
.taskItem { |
||||
width: 700rpx; |
||||
height: 150rpx; |
||||
background: linear-gradient(90deg, #E2EDFD, #E5E4FE); |
||||
box-shadow: 0rpx 1rpx 10rpx 1rpx rgba(32, 37, 44, 0.2); |
||||
border-radius: 10rpx; |
||||
margin: 0 auto 30rpx auto; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
padding: 35rpx; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
|
||||
.taskItemTitle { |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
font-size: 30rpx; |
||||
color: #000; |
||||
line-height: 38rpx; |
||||
} |
||||
|
||||
.taskItemInfo { |
||||
margin-top: 20rpx; |
||||
font-size: 26rpx; |
||||
color: #666666; |
||||
line-height: 38rpx; |
||||
} |
||||
|
||||
.taskBtn { |
||||
width: 130rpx; |
||||
height: 46rpx; |
||||
border-radius: 23rpx; |
||||
text-align: center; |
||||
color: #fff; |
||||
line-height: 46rpx; |
||||
} |
||||
|
||||
.missonSuccess { |
||||
background: linear-gradient(90deg, #39DA8C, #2B8EFE); |
||||
|
||||
} |
||||
|
||||
.missonFaild { |
||||
background: linear-gradient(90deg, #FAD126, #FF544F); |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
||||
</style> |
@ -0,0 +1,360 @@ |
||||
<template> |
||||
<view> |
||||
<view class="gradeWrap"> |
||||
<view style="margin: 0 50rpx;display: flex;align-items: center;"> |
||||
<view @click="gouserHome"> |
||||
<img style='width:55px;height:55px;border-radius: 50%' v-if='avatar' |
||||
:src="avatar && avatar.indexOf('http') == 0 ? avatar : base + avatar" alt=""> |
||||
<img v-else style='width:55px;height:55px;border-radius: 50%' |
||||
src="../../../static/crowd/defaultAva.jpg" alt=""> |
||||
</view> |
||||
<p v-if='phoneuserinfo.companyName' style='margin-bottom:5px;font-size:17px;font-weight:600;'> |
||||
{{ phoneuserinfo.companyName }} |
||||
</p> |
||||
<p v-else style='margin-bottom:5px;font-size:17px;font-weight:600;margin-left: 10rpx;'>{{ nickName }} |
||||
</p> |
||||
</view> |
||||
<view class="gradeSwiperWrap"> |
||||
<swiper class="gradeSwiper" previous-margin="30rpx" next-margin="30rpx"> |
||||
<swiper-item v-for="(index) in scoreArray.length - 1" :key="index"> |
||||
<view class="swiper-item gradeSwiperItem"> |
||||
<view class="bothSide"> |
||||
<view> |
||||
<view class="currentState">{{ currentGrade(scoreArray[index].minScore, index, true) |
||||
}}</view> |
||||
<view class="currentLevel">Lv. {{ index }}</view> |
||||
</view> |
||||
<view @click="toToggle('gradeTask')" |
||||
v-show="currentGrade(scoreArray[index].minScore, index, true) == '当前等级'" |
||||
class="toGrow">去升级 |
||||
</view> |
||||
</view> |
||||
<view class="grailLayout"> |
||||
<view>Lv. {{ index }}</view> |
||||
<view style="font-size: 24rpx;color: #666666;">已获得{{ myScore }}成长值</view> |
||||
<view>Lv. {{ index + 1 }}</view> |
||||
</view> |
||||
<view class="splitLine"> |
||||
<view class="progress" :style="{ width: progressWidth(index) }"></view> |
||||
</view> |
||||
<view class="grailLayout"> |
||||
<view>{{ scoreArray[index].minScore }}</view> |
||||
<view |
||||
v-if="'currentGrow1' == stateMap[currentGrade(scoreArray[index].minScore, index, true)]" |
||||
class="currentGrow1">{{ currentGrade(scoreArray[index].minScore, index, false) }} |
||||
</view> |
||||
<view |
||||
v-if="'currentGrow2' == stateMap[currentGrade(scoreArray[index].minScore, index, true)]" |
||||
class="currentGrow2">{{ currentGrade(scoreArray[index].minScore, index, false) }} |
||||
</view> |
||||
<view |
||||
v-if="'currentGrow3' == stateMap[currentGrade(scoreArray[index].minScore, index, true)]" |
||||
class="currentGrow3">{{ currentGrade(scoreArray[index].minScore, index, false) }} |
||||
</view> |
||||
<view>{{ index == scoreArray.length - 1 ? scoreArray[scoreArray.length - 1].minScore : |
||||
scoreArray[index + 1]['minScore'] }} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</swiper-item> |
||||
</swiper> |
||||
</view> |
||||
<view class="newRight"><img src="http://image.bjkeyware.com/static/index/myRight.png" alt=""> 新增权益</view> |
||||
<view class="rightInfo">新增竞标 <span :style="{ color: levelColor[level] }">{{ level }}</span> 的众包任务的资格</view> |
||||
</view> |
||||
|
||||
<view class="rulesGroup"> |
||||
<view @click="toToggle('growInfo')"> |
||||
<view>成长值明细</view><img src="http://image.bjkeyware.com/static/index/xia.png" alt=""> |
||||
</view> |
||||
<view @click="toToggle('gradeRules')"> |
||||
<view>等级规则</view><img src="http://image.bjkeyware.com/static/index/xia.png" alt=""> |
||||
</view> |
||||
</view> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
const levelColor = { |
||||
'V1': '#6740E5', |
||||
'V2': '#E86914', |
||||
'V3': '#9752FF', |
||||
} |
||||
|
||||
import { scoreStrategies, getLevel } from '@/utils/userlevel'; |
||||
const scoreArray = JSON.parse(JSON.stringify(scoreStrategies)).reverse() |
||||
|
||||
export default { |
||||
data() { |
||||
return { |
||||
scoreArray: Object.freeze(scoreArray), |
||||
myScore: '1900', |
||||
avatar: '', |
||||
phoneuserinfo: '', |
||||
nickName: '', |
||||
stateMap: Object.freeze({ |
||||
'未达成': 'currentGrow3', |
||||
'已达成': 'currentGrow1', |
||||
'当前等级': 'currentGrow2' |
||||
}), |
||||
levelColor: Object.freeze(levelColor) |
||||
} |
||||
}, |
||||
methods: { |
||||
toToggle(url) { |
||||
uni.navigateTo({ |
||||
url: `./${url}` |
||||
}) |
||||
} |
||||
}, |
||||
onShow() { |
||||
this.http.quickGet('/getInfo',true).then(res=>{ |
||||
const {growthValue} = res.data.user |
||||
this.myScore = growthValue || 0 |
||||
}) |
||||
this.phoneuserinfo = uni.getStorageSync('wxUserInfo'); |
||||
this.avatar = uni.getStorageSync('avatar'); |
||||
this.nickName = uni.getStorageSync('nickName'); |
||||
}, |
||||
created() { |
||||
console.log(this.scoreArray); |
||||
}, |
||||
computed: { |
||||
level() { |
||||
const { _, equity } = getLevel(this.myScore) |
||||
return equity |
||||
}, |
||||
currentGrade() { |
||||
return (min, index, tag) => { |
||||
// if (index == this.scoreArray.length - 1) { |
||||
// return '未达成' |
||||
// } |
||||
const max = this.scoreArray[index + 1]['minScore'] |
||||
if (this.myScore >= max) { |
||||
return '已达成' |
||||
} else if (this.myScore <= max && this.myScore >= min) { |
||||
let result = '' |
||||
result = tag ? '当前等级' : `还差${max - this.myScore}可升级` |
||||
return result |
||||
} else { |
||||
return '未达成' |
||||
} |
||||
} |
||||
}, |
||||
progressWidth() { |
||||
return (index) => { |
||||
const max = this.scoreArray[index + 1]['minScore'] |
||||
if (this.myScore > max) { |
||||
return '100%' |
||||
} else if (this.myScore < this.scoreArray[index]['minScore']) { |
||||
return '0%' |
||||
} else { |
||||
return (((this.myScore - this.scoreArray[index]['minScore']) / (max - this.scoreArray[index]['minScore'])) * 100).toFixed(2) + "%" |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.gradeWrap { |
||||
background-color: #e3e6fe; |
||||
border-bottom-left-radius: 60rpx; |
||||
border-bottom-right-radius: 60rpx; |
||||
|
||||
padding: 20rpx 0; |
||||
|
||||
.gradeSwiperWrap { |
||||
|
||||
.gradeSwiper { |
||||
height: 300rpx; |
||||
box-sizing: border-box; |
||||
|
||||
.gradeSwiperItem { |
||||
padding: 22rpx 0rpx; |
||||
box-shadow: 0rpx 2rpx 18rpx 0rpx rgba(30, 66, 111, 0.15); |
||||
border-radius: 10rpx; |
||||
margin: 0 10rpx; |
||||
background: url('http://image.bjkeyware.com/static/index/gradeBg.png') no-repeat 0 0; |
||||
background-size: 100% 100%; |
||||
|
||||
} |
||||
|
||||
.bothSide { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
font-family: PingFang SC; |
||||
position: relative; |
||||
|
||||
.toGrow { |
||||
width: 130rpx; |
||||
height: 46rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 23rpx; |
||||
text-align: center; |
||||
font-weight: 500; |
||||
font-size: 26rpx; |
||||
color: #FFFFFF; |
||||
line-height: 46rpx; |
||||
position: absolute; |
||||
bottom: 10rpx; |
||||
right: 30rpx; |
||||
} |
||||
|
||||
.currentState { |
||||
width: 150rpx; |
||||
line-height: 46rpx; |
||||
font-weight: 500; |
||||
font-size: 26rpx; |
||||
color: #333333; |
||||
background: #EAF1FD; |
||||
text-align: center; |
||||
border-radius: 0rpx 23rpx 23rpx 0rpx; |
||||
} |
||||
|
||||
.currentLevel { |
||||
margin: 30rpx 40rpx; |
||||
height: 28rpx; |
||||
font-weight: 800; |
||||
font-size: 36rpx; |
||||
color: #000000; |
||||
line-height: 38rpx; |
||||
} |
||||
} |
||||
|
||||
.splitLine { |
||||
margin: 10rpx auto; |
||||
width: 572rpx; |
||||
height: 10rpx; |
||||
// background: #98C5FB; |
||||
background: #FFFFFF; |
||||
border-radius: 5rpx; |
||||
position: relative; |
||||
|
||||
.progress { |
||||
position: absolute; |
||||
height: 10rpx; |
||||
width: 15%; |
||||
background: #98C5FB; |
||||
border-radius: 5rpx; |
||||
} |
||||
} |
||||
|
||||
.grailLayout { |
||||
margin-top: 10rpx; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
margin: 0 40rpx; |
||||
|
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
font-size: 26rpx; |
||||
color: #333333; |
||||
line-height: 38rpx; |
||||
|
||||
.currentGrow1 { |
||||
background: url('http://image.bjkeyware.com/static/index/currentState1.png') no-repeat 0 0; |
||||
min-width: 10rpx; |
||||
padding: 0 20rpx; |
||||
height: 50rpx; |
||||
line-height: 58rpx; |
||||
background-size: 100% 100%; |
||||
text-align: center; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
font-size: 24rpx; |
||||
color: #FFFFFF; |
||||
} |
||||
|
||||
.currentGrow2 { |
||||
background: url('http://image.bjkeyware.com/static/index/currentState2.png') no-repeat 0 0; |
||||
min-width: 10rpx; |
||||
padding: 0 20rpx; |
||||
height: 50rpx; |
||||
line-height: 58rpx; |
||||
background-size: 100% 100%; |
||||
text-align: center; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
font-size: 24rpx; |
||||
color: #FFFFFF; |
||||
} |
||||
|
||||
.currentGrow3 { |
||||
background: url('http://image.bjkeyware.com/static/index/currentState3.png') no-repeat 0 0; |
||||
min-width: 10rpx; |
||||
padding: 0 20rpx; |
||||
height: 50rpx; |
||||
line-height: 58rpx; |
||||
background-size: 100% 100%; |
||||
text-align: center; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
font-size: 24rpx; |
||||
color: #FFFFFF; |
||||
} |
||||
|
||||
&:last-child { |
||||
border: none; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.newRight { |
||||
height: 29rpx; |
||||
font-family: PingFang SC; |
||||
font-weight: bold; |
||||
font-size: 30rpx; |
||||
color: #000000; |
||||
line-height: 38rpx; |
||||
margin: 30rpx 50rpx 20rpx 50rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
|
||||
img { |
||||
width: 41rpx; |
||||
height: 37rpx; |
||||
} |
||||
} |
||||
|
||||
.rightInfo { |
||||
margin: 0rpx 50rpx; |
||||
padding-bottom: 20rpx; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
font-size: 24rpx; |
||||
color: #4D4D4D; |
||||
} |
||||
} |
||||
|
||||
.rulesGroup { |
||||
width: 683rpx; |
||||
height: 180rpx; |
||||
margin: 30rpx auto; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
padding: 0 40rpx; |
||||
|
||||
img { |
||||
width: 13rpx; |
||||
height: 21rpx; |
||||
} |
||||
|
||||
>view { |
||||
height: 50%; |
||||
line-height: 90rpx; |
||||
border-bottom: 1px solid #EDEDED; |
||||
; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
&:last-child { |
||||
border: none; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,77 @@ |
||||
<template> |
||||
<view class="rulesGroupWrap"> |
||||
<view class="rulesGroup"> |
||||
<view v-for="(item, index) in growthDetail" :key="index"> |
||||
<view class="rulesItem"> |
||||
<view>{{ item.title }}</view> |
||||
<view><span style="color: #FC4A4A;margin-right: 15rpx;">+{{ item.growthValue }} </span> 成长值</view> |
||||
</view> |
||||
<view class="rulesTime">{{ item.date }}</view> |
||||
</view> |
||||
<view v-if="growthDetail.length == 0">暂无信息</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
onShow() { |
||||
this.http.quickGet('/getInfo', true).then(res => { |
||||
console.log(res.data.user.growthDetail); |
||||
|
||||
this.growthDetail = JSON.parse(res.data.user.growthDetail) |
||||
}) |
||||
console.log(this.growthDetail); |
||||
|
||||
}, |
||||
data() { |
||||
return { |
||||
growthDetail: [] |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.rulesGroupWrap { |
||||
padding: 30rpx 0; |
||||
|
||||
.rulesGroup { |
||||
width: 683rpx; |
||||
margin: 0rpx auto; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
padding: 0 40rpx; |
||||
font-family: PingFang SC; |
||||
font-weight: 500; |
||||
padding: 5rpx 25rpx 55rpx 25rpx; |
||||
|
||||
img { |
||||
width: 13rpx; |
||||
height: 21rpx; |
||||
} |
||||
|
||||
>view { |
||||
border-bottom: 1px solid #EDEDED; |
||||
padding: 25rpx 0; |
||||
|
||||
.rulesItem { |
||||
font-size: 30rpx; |
||||
color: #1A1A1A; |
||||
line-height: 38rpx; |
||||
line-height: 50rpx; |
||||
width: 100%; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
} |
||||
|
||||
.rulesTime { |
||||
margin-top: 10rpx; |
||||
font-size: 24rpx; |
||||
color: #808080; |
||||
line-height: 38rpx; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,56 @@ |
||||
/* 使用策略模式、消除if else语句 |
||||
* 若等级规则增加、给scoreStrategies数组添加对象即可 所有和等级相关的都会随之更改 |
||||
* 食用方式: |
||||
* const { level, equity} = getLevel(score) |
||||
* level:等级 equity:权益 |
||||
*/ |
||||
|
||||
export const scoreStrategies = [ |
||||
{ minScore: 5000, level: "4" }, |
||||
{ minScore: 2000, level: "3" }, |
||||
{ minScore: 500, level: "2" }, |
||||
{ minScore: 100, level: "1" }, |
||||
{ minScore: 0, level: "0" }, |
||||
]; |
||||
|
||||
export const gradeEquity = function (level) { |
||||
return `${level * 1 === 0 ? "无门槛" : "V" + level}`; |
||||
}; |
||||
|
||||
export function getLevel(score) { |
||||
for (let i = 0; i < scoreStrategies.length; i++) { |
||||
if (score >= scoreStrategies[i].minScore) { |
||||
return { |
||||
level: scoreStrategies[i].level, |
||||
equity: gradeEquity(`${scoreStrategies[i].level}`), |
||||
}; |
||||
} |
||||
} |
||||
|
||||
console.error(`score=${score},无法确定等级`); |
||||
return "无法确定等级"; |
||||
/* |
||||
strategyV1: function (score) { |
||||
return score >= 0 && score <= 600 ? "V1" : null; |
||||
}, |
||||
strategyV2: function (score) { |
||||
return score >= 0 && score <= 600 ? "V1" : null; |
||||
}, |
||||
strategyV3: function (score) { |
||||
return score >= 0 && score <= 600 ? "V1" : null; |
||||
}, |
||||
strategyV4: function (score) { |
||||
return score >= 0 && score <= 600 ? "V1" : null; |
||||
}, |
||||
}; |
||||
*/ |
||||
// const levelMap = {};
|
||||
// for (let strategy in scoreStrategies) {
|
||||
// const level = scoreStrategies(strategy)(score);
|
||||
// if (level) {
|
||||
// return level;
|
||||
// }
|
||||
// }
|
||||
// console.error(`score=${score},无法确定等级`);
|
||||
// return "无法确定等级";
|
||||
} |
Loading…
Reference in new issue