Compare commits
5 Commits
84379210be
...
2579f3972d
Author | SHA1 | Date |
---|---|---|
hcj | 2579f3972d | 2 months ago |
hcj | 6e750da2c6 | 3 months ago |
hcj | bb49e55e75 | 3 months ago |
hcj | 51fae596c6 | 4 months ago |
hcj | 22784c38c7 | 4 months ago |
@ -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> |
@ -0,0 +1,237 @@ |
|||||||
|
<template> |
||||||
|
<view class="onLineCourseItemWrap" @click="toLearn(onLineCourse)"> |
||||||
|
<view class="onLineTitle"> |
||||||
|
<view v-if="rejectStatus == '1'" class="backVersion">预告</view> |
||||||
|
<view v-if="rejectStatus == '2'" class="starting">直播中<img src="./liveSteam.png" alt=""></view> |
||||||
|
<view v-if="rejectStatus == '3'" class="preVersion">回放</view> |
||||||
|
<view>{{ courseTime(onLineCourse.courseTime) }}</view> |
||||||
|
<view class="onLineClassName">{{ onLineCourse.courseName }}</view> |
||||||
|
</view> |
||||||
|
<view class="onLineCourse">{{ onLineCourse.className }}</view> |
||||||
|
<view class="onLineTeacher"> |
||||||
|
<img src="http://image.bjkeyware.com/static/index/teacher.png" alt=""> |
||||||
|
讲师: {{ onLineCourse.instructor }} |
||||||
|
</view> |
||||||
|
<!-- <view>{{ courseTime(onLineCourse.date_time) }}</view> --> |
||||||
|
|
||||||
|
<view class="onLineBtnWrap"> |
||||||
|
<view v-if="toLearnShow" class="onLineBtn toPay">付费学习¥{{ onLineCourse.amount }}</view> |
||||||
|
<view v-else class="onLineBtn toLearn">去学习</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import { dateFormat } from '../../utils/util'; |
||||||
|
|
||||||
|
export default { |
||||||
|
computed: { |
||||||
|
toLearnShow() { |
||||||
|
if ((this.onLineCourse.isPay == '1') && (this.onLineCourse.remark.indexOf(this.onLineCourse.courseId) == -1)) { |
||||||
|
return true |
||||||
|
} |
||||||
|
return false |
||||||
|
}, |
||||||
|
rejectStatus() { |
||||||
|
const endTime = new Date(this.onLineCourse.date_time).getTime() |
||||||
|
const startTime = new Date(this.onLineCourse.courseTime).getTime() |
||||||
|
const nowTime = new Date().getTime() |
||||||
|
if (startTime > nowTime) { |
||||||
|
return '1' |
||||||
|
} else if (startTime < nowTime && endTime > nowTime) { |
||||||
|
return '2' |
||||||
|
} else { |
||||||
|
return '3' |
||||||
|
} |
||||||
|
}, |
||||||
|
courseTime() { |
||||||
|
return function (val) { |
||||||
|
const tarTime = dateFormat(new Date(val)) |
||||||
|
const nowTime = dateFormat(new Date()) |
||||||
|
const day = tarTime.split(' ')[0]; |
||||||
|
const nday = nowTime.split(' ')[0]; |
||||||
|
|
||||||
|
let preDay = '' |
||||||
|
if (nday === day) { |
||||||
|
preDay = '今日' |
||||||
|
} else if ((day.substr(0, 8) === nday.substr(0, 8)) && (day.substr(8, 10) * 1 - nday.substr(8, 10)) == 1) { |
||||||
|
preDay = '明日' |
||||||
|
} else { |
||||||
|
preDay = day |
||||||
|
} |
||||||
|
const temp = tarTime.split(' ')[1] |
||||||
|
const time = temp.slice(0, temp.lastIndexOf(':')); |
||||||
|
console.log(time); |
||||||
|
console.log(preDay + ' ' + time); |
||||||
|
return preDay + ' ' + time |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
props: { |
||||||
|
onLineCourse: Object |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
|
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
toggleShow() { |
||||||
|
if ((this.onLineCourse.isPay == '1') && (this.onLineCourse.remark.indexOf(this.onLineCourse.courseId) == -1)) { |
||||||
|
this.onLineCourse.show = false |
||||||
|
return |
||||||
|
} |
||||||
|
this.onLineCourse.show = true |
||||||
|
return |
||||||
|
}, |
||||||
|
toLearn() { |
||||||
|
this.toggleShow() |
||||||
|
this.$emit('toLearn', this.onLineCourse) |
||||||
|
}, |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss"> |
||||||
|
.onLineCourseItemWrap { |
||||||
|
height: 270rpx; |
||||||
|
width: 700rpx; |
||||||
|
background: linear-gradient(135deg, #FCF5F0, #ECF3FD); |
||||||
|
box-shadow: 0rpx 2rpx 14rpx 1rpx rgba(8, 67, 140, 0.12); |
||||||
|
border-radius: 10rpx; |
||||||
|
margin: 0 auto; |
||||||
|
margin-bottom: 30rpx; |
||||||
|
|
||||||
|
|
||||||
|
.onLineTitle { |
||||||
|
font-size: 32rpx; |
||||||
|
display: flex; |
||||||
|
justify-content: flex-start; |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: bold; |
||||||
|
height: 88rpx; |
||||||
|
padding: 30rpx 0 0 20rpx; |
||||||
|
line-height: 54rpx; |
||||||
|
|
||||||
|
.starting { |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
color: #FFFFFF; |
||||||
|
font-size: 28rpx; |
||||||
|
line-height: 40rpx; |
||||||
|
margin-top: 7rpx; |
||||||
|
height: 40rpx; |
||||||
|
margin-right: 10rpx; |
||||||
|
min-width: 120rpx; |
||||||
|
text-align: center; |
||||||
|
background: linear-gradient(90deg, #09B885, #0BE8A5); |
||||||
|
border-radius: 8rpx; |
||||||
|
|
||||||
|
img { |
||||||
|
margin-left: 5rpx; |
||||||
|
width: 15rpx; |
||||||
|
height: 15rpx; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.backVersion { |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
color: #FFFFFF; |
||||||
|
font-size: 28rpx; |
||||||
|
line-height: 35rpx; |
||||||
|
margin-top: 10rpx; |
||||||
|
height: 35rpx; |
||||||
|
padding: 0 20rpx; |
||||||
|
background: linear-gradient(90deg, #FCA041, #FD6841); |
||||||
|
margin-right: 10rpx; |
||||||
|
border-radius: 8rpx; |
||||||
|
min-width: 95rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.preVersion { |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
color: #FFFFFF; |
||||||
|
font-size: 28rpx; |
||||||
|
line-height: 35rpx; |
||||||
|
margin-top: 10rpx; |
||||||
|
height: 35rpx; |
||||||
|
padding: 0 20rpx; |
||||||
|
margin-right: 10rpx; |
||||||
|
background: linear-gradient(90deg, #06466b, #1479b3af); |
||||||
|
border-radius: 8rpx; |
||||||
|
min-width: 95rpx; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
.onLineClassName { |
||||||
|
flex:1;width: 0; |
||||||
|
margin-left: 25rpx; |
||||||
|
overflow: hidden; |
||||||
|
white-space: nowrap; |
||||||
|
text-overflow: ellipsis; |
||||||
|
} |
||||||
|
|
||||||
|
.onLineCourse { |
||||||
|
display: inline; |
||||||
|
padding: 5rpx 15rpx; |
||||||
|
border-radius: 6rpx; |
||||||
|
font-size: 30rpx; |
||||||
|
// width: 320rpx; |
||||||
|
color: #1A1A1A; |
||||||
|
line-height: 46rpx; |
||||||
|
background: #DEE9FD; |
||||||
|
margin-left: 18rpx; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
.onLineTeacher { |
||||||
|
margin-top: 10rpx; |
||||||
|
margin-left: 24rpx; |
||||||
|
font-size: 28rpx; |
||||||
|
font-weight: 500; |
||||||
|
color: #666666; |
||||||
|
line-height: 46rpx; |
||||||
|
|
||||||
|
img { |
||||||
|
width: 20rpx; |
||||||
|
height: 20rpx; |
||||||
|
margin-right: 10rpx; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.onLineBtnWrap { |
||||||
|
display: flex; |
||||||
|
justify-content: flex-end; |
||||||
|
margin: 0 25rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.onLineBtn { |
||||||
|
min-width: 209rpx; |
||||||
|
padding: 0 5rpx; |
||||||
|
height: 56rpx; |
||||||
|
line-height: 56rpx; |
||||||
|
border-radius: 28rpx; |
||||||
|
// width: 209rpx; |
||||||
|
width: 167rpx; |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
font-size: 24rpx; |
||||||
|
color: #FFFFFF; |
||||||
|
line-height: 56rpx; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.toLearn { |
||||||
|
background: linear-gradient(90deg, #FB8C16, #FEC36E); |
||||||
|
} |
||||||
|
|
||||||
|
.toPay { |
||||||
|
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||||
|
border: 1px solid #AAD1FE; |
||||||
|
} |
||||||
|
</style> |
After Width: | Height: | Size: 348 B |
@ -0,0 +1,68 @@ |
|||||||
|
<template> |
||||||
|
<view class="posterWrapper"> |
||||||
|
<view>haibao</view> |
||||||
|
<button @click="drawPoster">生成海报</button> |
||||||
|
<view class="my_canvas_box"> |
||||||
|
<!-- <canvas></canvas> --> |
||||||
|
<view>长按分享</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import com from '../../utils/comstemutil' |
||||||
|
|
||||||
|
export default { |
||||||
|
|
||||||
|
data() { |
||||||
|
return { |
||||||
|
|
||||||
|
} |
||||||
|
}, |
||||||
|
onload(query) { |
||||||
|
// console.log('123'); |
||||||
|
|
||||||
|
// scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene |
||||||
|
const scene = decodeURIComponent(query.scene) |
||||||
|
console.log(scene); |
||||||
|
|
||||||
|
}, |
||||||
|
methods: { |
||||||
|
drawPoster() { |
||||||
|
const currentPage = getCurrentPages() |
||||||
|
const route = currentPage[currentPage.length - 1].route |
||||||
|
const options = currentPage[currentPage.length - 1].options |
||||||
|
let path = '' |
||||||
|
if (Object.keys(options).length == 0) { |
||||||
|
path = route |
||||||
|
} else { |
||||||
|
options.forEach((ele, index) => { |
||||||
|
if (index == 0) { |
||||||
|
path = route + '?' + ele + '=' + index |
||||||
|
} else { |
||||||
|
path = route + '&' + ele + '=' + index |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
this.draw(path) |
||||||
|
}, |
||||||
|
async draw(path) { |
||||||
|
// const tok = await com.refreshToken() |
||||||
|
// return |
||||||
|
let accessToken = uni.getStorageSync('accessToken') |
||||||
|
|
||||||
|
const data = { |
||||||
|
"path": path, |
||||||
|
"width": 430 |
||||||
|
} |
||||||
|
const res = await this.http.quickPost('https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' + accessToken, data, true) |
||||||
|
console.log(res); |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.posterWrapper {} |
||||||
|
</style> |
@ -0,0 +1,105 @@ |
|||||||
|
<template> |
||||||
|
<view class="courseInfo"> |
||||||
|
<view>xxxxx</view> |
||||||
|
<view @click="startLearn">开始学习</view> |
||||||
|
<view @click="openInputCode">输入口令</view> |
||||||
|
<view @click="pay">付费学习</view> |
||||||
|
|
||||||
|
<u-modal v-model="show"> |
||||||
|
<view class="slot-content"> |
||||||
|
<view v-if="toggleFlag === 'tolearn'"> |
||||||
|
<label>www.baidu.com</label> |
||||||
|
</view> |
||||||
|
<view v-else class="input-list"> |
||||||
|
<!-- input输入框 --> |
||||||
|
<input class="input-item" v-if="focus" adjust-position="false" auto-blur="true" |
||||||
|
@blur="inputCodeBlur" @input="inputCode" :focus="focus" v-model="code" @focus="inputFocus" |
||||||
|
type="number" oneTimeCode maxlength="6" /> |
||||||
|
<!-- 验证码输入框 --> |
||||||
|
<view class="code-list" @click="focusClick"> |
||||||
|
<view class="code-item" v-for="(item, index) in 6" :key="index" |
||||||
|
:style="(index == code.length && focus ? 'border-color:#3c9cff;' : '')">{{ code[index] || '' |
||||||
|
}} |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
|
||||||
|
</view> |
||||||
|
</u-modal> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
toggleFlag:'', |
||||||
|
show: false, |
||||||
|
focus: false, |
||||||
|
code: '' |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
startLearn() { |
||||||
|
this.show = true |
||||||
|
this.toggleFlag = 'tolearn' |
||||||
|
}, |
||||||
|
focusClick() { |
||||||
|
this.focus = true |
||||||
|
}, |
||||||
|
pay() { |
||||||
|
console.log('pay for this'); |
||||||
|
}, |
||||||
|
openInputCode() { |
||||||
|
this.show = true |
||||||
|
}, |
||||||
|
inputCode(e) { |
||||||
|
let value = e.detail.value |
||||||
|
this.code = value |
||||||
|
}, |
||||||
|
inputFocus(e) { |
||||||
|
console.log(e); |
||||||
|
}, |
||||||
|
inputCodeBlur(e) { |
||||||
|
let value = e.detail.value |
||||||
|
this.focus = false |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss"> |
||||||
|
.courseInfo { |
||||||
|
.slot-content { |
||||||
|
font-size: 28rpx; |
||||||
|
color: $u-content-color; |
||||||
|
padding-left: 30rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.input-list { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
|
||||||
|
.input-item { |
||||||
|
width: 0rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.code-list { |
||||||
|
width: 100%; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
|
||||||
|
.code-item { |
||||||
|
width: 80rpx; |
||||||
|
height: 80rpx; |
||||||
|
text-align: center; |
||||||
|
line-height: 80rpx; |
||||||
|
border: 1rpx solid #eee; |
||||||
|
border-radius: 10rpx; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,13 @@ |
|||||||
|
<template> |
||||||
|
|
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
export default { |
||||||
|
|
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style> |
||||||
|
|
||||||
|
</style> |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,491 @@ |
|||||||
|
<template> |
||||||
|
<view class="onLineCourseWrap" v-show="courseItem.courseName"> |
||||||
|
<view class="onLineTitle"> |
||||||
|
<img src="http://image.bjkeyware.com/static/index/olCourse.png" alt=""> |
||||||
|
<view style="max-width: calc(100% - 100rpx);word-break: break-all">{{ courseItem.courseName }}</view> |
||||||
|
</view> |
||||||
|
<view class="onLineTime">时间: {{ yyyDate(courseItem.courseTime) }}</view> |
||||||
|
<view class="onLineTeacher">讲师:{{ courseItem.instructor }}</view> |
||||||
|
<view class="onLine" v-show="courseItem.title">职称:{{ courseItem.title }}</view> |
||||||
|
<view class="onLineContent">授课内容: {{ courseItem.courseContent }}</view> |
||||||
|
<view class="onLineMask" v-show="maskShow"> |
||||||
|
<!-- <img src="http://image.bjkeyware.com/static/index/arr.png" alt=""> --> |
||||||
|
<img src="" alt=""> |
||||||
|
<view class="learnBtnWrap"> |
||||||
|
<view v-if="courseItem.status == '1'" class="learnBtn" @click="startLearn('pay')">付费学习¥{{ |
||||||
|
courseItem.amount }}</view> |
||||||
|
<view v-if="courseItem.status == '1'" class="passBtn" @click="startLearn('code')">输入口令学习</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
<view v-show="!maskShow" class="startLeranBtn" @click="urlShow = true">开始学习</view> |
||||||
|
<u-modal v-model="show" title="请输入口令" :show-confirm-button="false"> |
||||||
|
<view class="slot-content"> |
||||||
|
<view class="input-list"> |
||||||
|
<!-- input输入框 --> |
||||||
|
<input class="input-item" v-if="focus" adjust-position="false" auto-blur="true" |
||||||
|
@blur="inputCodeBlur" @input="inputCode" :focus="focus" v-model="code" @focus="inputFocus" |
||||||
|
type="number" oneTimeCode maxlength="6" /> |
||||||
|
<!-- 验证码输入框 --> |
||||||
|
<view class="code-list" @click="focusClick"> |
||||||
|
<view class="code-item" v-for="(_, index) in 4" :key="index" |
||||||
|
:style="(index == code.length && focus ? 'border-color:#3c9cff;' : '')">{{ code[index] || '' |
||||||
|
}} |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
<view class="codeBtnCoup"> |
||||||
|
<view class="codeBtn canle" @click="show = false">取消</view> |
||||||
|
<view class="codeBtn sure" @click="submitCode">确定</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</u-modal> |
||||||
|
<u-modal v-model="urlShow" title="学习链接" :show-confirm-button="false"> |
||||||
|
<view class="slot-content"> |
||||||
|
<view class="courseContent" style="text-align: center;"> |
||||||
|
<view style="color: #2084F9;">请使用腾讯会议打开</view> |
||||||
|
<view style="font-weight: 500;">{{ courseItem.url }}</view> |
||||||
|
</view> |
||||||
|
<view class="codeBtnCoup" style="justify-content: center;margin-top: 0;"> |
||||||
|
<view class="codeBtn sure" style="width: 80%;border-radius: 5rpx;" @click="copy">复制</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</u-modal> |
||||||
|
<!-- <u-popup style="background:#66666;padding: 20px;" v-model="isPopupShow" @close="close" mode="bottom" |
||||||
|
length="80%" height='60%' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||||
|
<view style="background:#66666;padding:15px 20px 30px 20px; "> |
||||||
|
<view style="background-color: #FFFFFF;"> |
||||||
|
<view class="horizontalline"></view> |
||||||
|
<view> |
||||||
|
<view class="commodity"> |
||||||
|
<p>课程名称:</p> |
||||||
|
<p style="color:#333333;">{{ courseItem.courseName }}</p> |
||||||
|
</view> |
||||||
|
<view class="commodity"> |
||||||
|
<p>商品价格:</p> |
||||||
|
<p style="color:#333333;"> |
||||||
|
<span>¥{{ '9.9' }}</span> |
||||||
|
</p> |
||||||
|
</view> |
||||||
|
<view class="commodity"> |
||||||
|
<p>支付金额:</p> |
||||||
|
<p style="color:#FD461A;margin-top: -3px;" v-if="addPriceAll != 0"> |
||||||
|
<span>¥ </span> |
||||||
|
<span style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">{{ addPriceAll |
||||||
|
}}</span> |
||||||
|
</p> |
||||||
|
<p style="color:#FD461A;margin-top: -3px;" v-else> |
||||||
|
<span>限时免费</span> |
||||||
|
</p> |
||||||
|
</view> |
||||||
|
<view class="commodity"> |
||||||
|
<p>支付方式:</p> |
||||||
|
<p style="color:#FD461A;margin-top: -3px;"> |
||||||
|
<u-radio-group v-model="payTypeBig" placement="row"> |
||||||
|
<u-radio name="0">微信支付</u-radio> |
||||||
|
<u-radio name="1" :disabled="lingqianIS">{{ lingqianIS ? '零钱不足' : '零钱' }}</u-radio> |
||||||
|
</u-radio-group> |
||||||
|
</p> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
<u-line></u-line> |
||||||
|
<view class="codeBtnCoup" style="justify-content: center;"> |
||||||
|
<view class="codeBtn sure" style="width: 80%;" @click="payOrder">支付</view> |
||||||
|
</view> |
||||||
|
</u-popup> --> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import { dateFormat } from '../../../utils/util'; |
||||||
|
|
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
maskShow: true, |
||||||
|
show: false, |
||||||
|
focus: false, |
||||||
|
code: '', |
||||||
|
courseItem: {}, |
||||||
|
courseId: '', |
||||||
|
urlShow: false, |
||||||
|
url: '', |
||||||
|
learnStatus: false, |
||||||
|
// isPopupShow: false, |
||||||
|
// payTypeBig: '0', |
||||||
|
// lingqianIS: false |
||||||
|
} |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
yyyDate() { |
||||||
|
return function (val) { |
||||||
|
return dateFormat(new Date(val)) |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
onLoad(course) { |
||||||
|
const id = course.courseId |
||||||
|
this.courseId = id |
||||||
|
this.http.quickGet('/course/online/course/' + id).then(res => { |
||||||
|
this.courseItem = res.data.data |
||||||
|
if ((this.courseItem.status == 0) || course.learnStatus == 'true') { |
||||||
|
this.maskShow = false |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
payOrder() { |
||||||
|
|
||||||
|
}, |
||||||
|
close() { |
||||||
|
this.isPopupShow = false |
||||||
|
// console.log('close'); |
||||||
|
}, |
||||||
|
startLearn(val) { |
||||||
|
if (val == 'code') { |
||||||
|
this.show = true |
||||||
|
} else if (val == 'pay') { |
||||||
|
// this.isPopupShow = true |
||||||
|
this.toPay() |
||||||
|
} |
||||||
|
// this.toggleFlag = 'tolearn' |
||||||
|
}, |
||||||
|
toPay() { |
||||||
|
const userinform = uni.getStorageSync('wxUserInfo'); |
||||||
|
if (!userinform) { |
||||||
|
uni.showToast({ title: '登录失效,请重新登录', icon: 'none', duration: 1000 }); |
||||||
|
setTimeout(() => { |
||||||
|
uni.navigateTo({ |
||||||
|
url: '/pages/personal/login' |
||||||
|
}) |
||||||
|
}, 1000) |
||||||
|
return |
||||||
|
} |
||||||
|
const id = userinform.userId |
||||||
|
// const data = { |
||||||
|
// courseId: this.tooldetilsdata.tool.toolId, |
||||||
|
// amount: this.cartnumber, |
||||||
|
// deliverType: this.tooldetilsdata.tool.deliverType, |
||||||
|
// price: '', |
||||||
|
// payType: 'W06', |
||||||
|
// paytype: 'W06', |
||||||
|
// toolType: this.tooldetilsdata.tool.toolType, |
||||||
|
// userId: id |
||||||
|
// } |
||||||
|
const data = { |
||||||
|
"price": this.courseItem.amount, |
||||||
|
"payType": "W06", |
||||||
|
"userId": id, |
||||||
|
// "recordName": this.courseItem.courseName, |
||||||
|
// "toolId":this.courseItem.courseId |
||||||
|
} |
||||||
|
// return |
||||||
|
const _this = this |
||||||
|
this.http.quickPost(`/play/course/pay`, data, true).then(res => { |
||||||
|
// console.log(res); |
||||||
|
if (res.data.data.retcode == 'SUCCESS') { |
||||||
|
const info = JSON.parse(res.data.data.payinfo) |
||||||
|
console.log(info); |
||||||
|
// return |
||||||
|
// 06 小程序 |
||||||
|
// 01 扫码 |
||||||
|
// return |
||||||
|
uni.requestPayment({ |
||||||
|
timeStamp: info.timeStamp, |
||||||
|
nonceStr: info.nonceStr, |
||||||
|
package: info.package, |
||||||
|
signType: info.signType, |
||||||
|
paySign: info.paySign, |
||||||
|
success(r) { |
||||||
|
const sucData = { |
||||||
|
"price": _this.courseItem.amount, |
||||||
|
"payType": "W06", |
||||||
|
"userId": id, |
||||||
|
"recordName": _this.courseItem.courseName, |
||||||
|
"toolId": _this.courseItem.courseId |
||||||
|
} |
||||||
|
_this.http.quickPost(`/play/course/pay/succes`, sucData, true).then(res => { }) |
||||||
|
uni.showToast({ |
||||||
|
icon: 'none', |
||||||
|
title: '支付成功' |
||||||
|
}) |
||||||
|
_this.maskShow = false |
||||||
|
// that.isPopupShow = false |
||||||
|
// setTimeout(() => { |
||||||
|
// uni.navigateTo({ |
||||||
|
// url: '/pages/personal/ordernumber/ordernumber?current=0' |
||||||
|
// }) |
||||||
|
// }, 1000) |
||||||
|
}, |
||||||
|
fail(error) { |
||||||
|
console.log(error); |
||||||
|
uni.showToast({ |
||||||
|
icon: 'none', |
||||||
|
title: '支付失败' |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
} else { |
||||||
|
uni.showToast({ |
||||||
|
icon: 'none', |
||||||
|
title: '支付错误,请联系管理员' |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
focusClick() { |
||||||
|
this.focus = true |
||||||
|
}, |
||||||
|
pay() { |
||||||
|
console.log('pay for this'); |
||||||
|
}, |
||||||
|
openInputCode() { |
||||||
|
this.show = true |
||||||
|
}, |
||||||
|
inputCode(e) { |
||||||
|
if (this.code.length > 4) { |
||||||
|
return |
||||||
|
} |
||||||
|
let value = e.detail.value |
||||||
|
this.code = value |
||||||
|
}, |
||||||
|
inputFocus(e) { |
||||||
|
console.log(e); |
||||||
|
}, |
||||||
|
inputCodeBlur(e) { |
||||||
|
let value = e.detail.value |
||||||
|
this.focus = false |
||||||
|
}, |
||||||
|
copy() { |
||||||
|
uni.setClipboardData({ |
||||||
|
data: this.courseItem.url, // 这里是个坑接受字符串类型 value转化为字符串 |
||||||
|
success: function () { |
||||||
|
//调用方法成功 |
||||||
|
uni.showToast({ |
||||||
|
title: '已复制到剪切板', |
||||||
|
icon: 'none' |
||||||
|
}) |
||||||
|
} |
||||||
|
}) |
||||||
|
this.urlShow = false |
||||||
|
}, |
||||||
|
submitCode() { |
||||||
|
this.http.quickPost('/train/course/enterPasswd/' + this.courseId, { password: this.code }, true).then(res => { |
||||||
|
if (res.data.code != 200) { |
||||||
|
uni.showToast({ |
||||||
|
title: res.data.msg, |
||||||
|
icon: 'none', |
||||||
|
duration: 2000, |
||||||
|
}) |
||||||
|
} else { |
||||||
|
// this.url = res.data.data |
||||||
|
this.maskShow = false |
||||||
|
} |
||||||
|
}) |
||||||
|
this.code = '' |
||||||
|
this.show = false |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.commodity { |
||||||
|
display: flex; |
||||||
|
color: #808080; |
||||||
|
font-size: 32rpx; |
||||||
|
margin: 20px 0; |
||||||
|
} |
||||||
|
|
||||||
|
.commodity input { |
||||||
|
min-height: 40rpx !important; |
||||||
|
} |
||||||
|
|
||||||
|
.onLineCourseWrap { |
||||||
|
margin: 25rpx; |
||||||
|
height: calc(100% - 50rpx); |
||||||
|
background: #FFFFFF; |
||||||
|
border-radius: 10rpx; |
||||||
|
padding: 24rpx; |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
font-size: 27rpx; |
||||||
|
color: #404040; |
||||||
|
|
||||||
|
.onLineTitle { |
||||||
|
font-weight: bold; |
||||||
|
font-size: 30rpx; |
||||||
|
color: #000000; |
||||||
|
line-height: 46rpx; |
||||||
|
margin: 30rpx 0; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
|
||||||
|
img { |
||||||
|
width: 38rpx; |
||||||
|
height: 38rpx; |
||||||
|
margin-right: 20rpx; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.onLineTime { |
||||||
|
margin: 15rpx 0; |
||||||
|
} |
||||||
|
|
||||||
|
.onLineTeacher { |
||||||
|
margin: 20rpx 0; |
||||||
|
} |
||||||
|
|
||||||
|
.onLine { |
||||||
|
margin: 20rpx 0; |
||||||
|
} |
||||||
|
|
||||||
|
.onLineContent { |
||||||
|
margin: 20rpx 0; |
||||||
|
line-height: 46rpx; |
||||||
|
// line-height: 1.5; |
||||||
|
} |
||||||
|
|
||||||
|
.onLineMask { |
||||||
|
position: fixed; |
||||||
|
top: 0; |
||||||
|
left: 0; |
||||||
|
width: 100%; |
||||||
|
height: 100%; |
||||||
|
|
||||||
|
img { |
||||||
|
width: 46rpx; |
||||||
|
height: 111rpx; |
||||||
|
margin: 619rpx 0 0 50%; |
||||||
|
} |
||||||
|
|
||||||
|
.learnBtnWrap { |
||||||
|
width: 279rpx; |
||||||
|
margin-top: 211rpx; |
||||||
|
margin-left: 50%; |
||||||
|
transform: translate(-50%); |
||||||
|
|
||||||
|
.learnBtn { |
||||||
|
width: 279rpx; |
||||||
|
height: 67rpx; |
||||||
|
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||||
|
box-shadow: 0rpx 1rpx 20rpx 1rpx rgba(13, 92, 187, 0.53); |
||||||
|
margin-bottom: 30rpx; |
||||||
|
border-radius: 33rpx; |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
font-size: 30rpx; |
||||||
|
color: #FFFFFF; |
||||||
|
line-height: 65rpx; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.passBtn { |
||||||
|
margin-bottom: 90rpx; |
||||||
|
height: 67rpx; |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
font-size: 30rpx; |
||||||
|
color: #1578ED; |
||||||
|
line-height: 65rpx; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
.startLeranBtn { |
||||||
|
position: fixed; |
||||||
|
bottom: 69rpx; |
||||||
|
width: 646rpx; |
||||||
|
height: 70rpx; |
||||||
|
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||||
|
box-shadow: 0rpx 1rpx 20rpx 1rpx rgba(13, 92, 187, 0.4); |
||||||
|
border-radius: 35rpx; |
||||||
|
|
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: 500; |
||||||
|
font-size: 30rpx; |
||||||
|
color: #FFFFFF; |
||||||
|
line-height: 65rpx; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
.slot-content { |
||||||
|
font-size: 28rpx; |
||||||
|
color: $u-content-color; |
||||||
|
padding-left: 30rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.input-list { |
||||||
|
padding-top: 20rpx; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
|
||||||
|
.input-item { |
||||||
|
width: 0rpx; |
||||||
|
} |
||||||
|
|
||||||
|
.code-list { |
||||||
|
width: 100%; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-around; |
||||||
|
|
||||||
|
.code-item { |
||||||
|
width: 80rpx; |
||||||
|
height: 80rpx; |
||||||
|
text-align: center; |
||||||
|
line-height: 80rpx; |
||||||
|
border: 1rpx solid #eee; |
||||||
|
border-radius: 10rpx; |
||||||
|
background: #EAEEF3; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
.codeBtnCoup { |
||||||
|
padding: 20rpx; |
||||||
|
display: flex; |
||||||
|
justify-content: space-between; |
||||||
|
margin-top: 40rpx; |
||||||
|
|
||||||
|
.codeBtn { |
||||||
|
width: 250rpx; |
||||||
|
line-height: 70rpx; |
||||||
|
border-radius: 35rpx; |
||||||
|
text-align: center; |
||||||
|
font-size: 28rpx; |
||||||
|
color: #FFFFFF; |
||||||
|
} |
||||||
|
|
||||||
|
.sure { |
||||||
|
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||||
|
} |
||||||
|
|
||||||
|
.canle { |
||||||
|
color: #666666; |
||||||
|
border: 1px solid #E0E0E0; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.courseContent { |
||||||
|
width: 372rpx; |
||||||
|
text-overflow: ellipsis; |
||||||
|
white-space: normal; |
||||||
|
word-break: break-all; |
||||||
|
margin: 30rpx auto 0 auto; |
||||||
|
font-family: PingFang SC; |
||||||
|
font-weight: bold; |
||||||
|
font-size: 28rpx; |
||||||
|
line-height: 49rpx; |
||||||
|
// background-color: #000000; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
</style> |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 1.5 KiB |
@ -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,145 @@ |
|||||||
|
<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 |
||||||
|
console.log(testerStatus); |
||||||
|
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,368 @@ |
|||||||
|
<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" :duration="swipeDuration" next-margin="30rpx" |
||||||
|
:current="currentImgIndex" @change="changeswiper"> |
||||||
|
<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: '0', |
||||||
|
avatar: '', |
||||||
|
phoneuserinfo: '', |
||||||
|
nickName: '', |
||||||
|
currentImgIndex: 0, |
||||||
|
swipeDuration:0, |
||||||
|
stateMap: Object.freeze({ |
||||||
|
'未达成': 'currentGrow3', |
||||||
|
'已达成': 'currentGrow1', |
||||||
|
'当前等级': 'currentGrow2' |
||||||
|
}), |
||||||
|
levelColor: Object.freeze(levelColor) |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
toToggle(url) { |
||||||
|
uni.navigateTo({ |
||||||
|
url: `./${url}` |
||||||
|
}) |
||||||
|
}, |
||||||
|
changeswiper(e) { |
||||||
|
this.currentImgIndex = e.detail.current |
||||||
|
} |
||||||
|
}, |
||||||
|
onShow() { |
||||||
|
|
||||||
|
}, |
||||||
|
onLoad() { |
||||||
|
this.http.quickGet('/getInfo', true).then(res => { |
||||||
|
const { growthValue } = res.data.user |
||||||
|
this.myScore = growthValue || 0 |
||||||
|
this.currentImgIndex = getLevel(this.myScore).level |
||||||
|
this.swipeDuration = 500 |
||||||
|
}) |
||||||
|
this.phoneuserinfo = uni.getStorageSync('wxUserInfo'); |
||||||
|
this.avatar = uni.getStorageSync('avatar'); |
||||||
|
this.nickName = uni.getStorageSync('nickName'); |
||||||
|
}, |
||||||
|
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,109 @@ |
|||||||
|
<template> |
||||||
|
<view class="allcourseWrapper"> |
||||||
|
<view v-if="onLineList.length"> |
||||||
|
<view v-for="course in onLineList" :key="course.courseId"> |
||||||
|
<onLineCourseItem :onLineCourse="course" @toLearn="toLearn"></onLineCourseItem> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import { dateFormat } from '@/utils/util'; |
||||||
|
import onLineCourseItem from '@/components/onLineCourseItem/index.vue' |
||||||
|
|
||||||
|
export default { |
||||||
|
components: { |
||||||
|
onLineCourseItem |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
onLineList: [], |
||||||
|
total: 10, |
||||||
|
classId: '', |
||||||
|
className: '', |
||||||
|
queryParams: { |
||||||
|
pageSize: 10, |
||||||
|
pageNum: 1, |
||||||
|
}, |
||||||
|
} |
||||||
|
}, |
||||||
|
onShow() { |
||||||
|
// const classId = options.id |
||||||
|
// const className = options.name |
||||||
|
// this.className = className |
||||||
|
// // console.log(options) |
||||||
|
// this.classId = classId |
||||||
|
// uni.setNavigationBarTitle({ title: className }) |
||||||
|
this.getCourseList() |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
async toLearn(course) { |
||||||
|
if (!course.signUp && course.isPay == '0') { |
||||||
|
const res = await this.http.quickPost(`/train/online/signUp/${course.courseId}`, {}, true) |
||||||
|
if (res.data.code == 200) { |
||||||
|
uni.navigateTo({ |
||||||
|
url: `/pages/index/testtraining/onLineCourse?courseId=${course.courseId}` |
||||||
|
}) |
||||||
|
} |
||||||
|
else { |
||||||
|
return |
||||||
|
} |
||||||
|
} else { |
||||||
|
uni.navigateTo({ |
||||||
|
url: `/pages/index/testtraining/onLineCourse?courseId=${course.courseId}&learnStatus=${course.show ? true : false}` |
||||||
|
}) |
||||||
|
} |
||||||
|
}, |
||||||
|
pagionChange(e) { |
||||||
|
console.log(e); |
||||||
|
this.queryParams.pageNum = e.current |
||||||
|
this.getCourseList() |
||||||
|
}, |
||||||
|
async getCourseList() { |
||||||
|
let accessToken = uni.getStorageSync('accessToken') |
||||||
|
if (accessToken) { |
||||||
|
const wxUserInfo = uni.getStorageSync('wxUserInfo') |
||||||
|
const userId = wxUserInfo.userId |
||||||
|
this.http.quickGet(`/course/online/courses?userId=${userId}`).then((res) => { |
||||||
|
// console.log(res); |
||||||
|
this.onLineList = res.data.data |
||||||
|
console.log(this.onLineList); |
||||||
|
|
||||||
|
}) |
||||||
|
} else { |
||||||
|
this.http.quickGet(`/course/online/courses`, false).then((res) => { |
||||||
|
// console.log(res); |
||||||
|
this.onLineList = res.data.data |
||||||
|
console.log(this.onLineList); |
||||||
|
|
||||||
|
}) |
||||||
|
} |
||||||
|
}, |
||||||
|
async onReachBottom() { |
||||||
|
if (this.total <= this.queryParams.pageSize) { |
||||||
|
return |
||||||
|
} |
||||||
|
this.queryParams.pageSize += 10 |
||||||
|
this.getCourseList() |
||||||
|
console.log("onReachBottom"); |
||||||
|
}, |
||||||
|
async onReachBottom() { |
||||||
|
// if (this.total <= this.queryParams.pageSize) { |
||||||
|
// return |
||||||
|
// } |
||||||
|
// this.queryParams.pageSize += 10 |
||||||
|
// this.getCourseList() |
||||||
|
console.log("onReachBottom"); |
||||||
|
}, |
||||||
|
|
||||||
|
}, |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.allcourseWrapper { |
||||||
|
// text-align: center; |
||||||
|
margin: 20rpx; |
||||||
|
} |
||||||
|
</style> |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -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