435 lines
12 KiB
Vue
435 lines
12 KiB
Vue
|
<template>
|
|||
|
<view class="xilu">
|
|||
|
<view class="page-foot bg-normal">
|
|||
|
<view class="p30">
|
|||
|
<view v-if="info.order_status == 1 || info.order_status == 2" @click="codeOpen()" class="xilu_foot_btn1">查看签到码</view>
|
|||
|
<view v-if="info.order_status == 3 " @click="to_comment(info.id)" class="xilu_foot_btn1">去评价</view>
|
|||
|
<view class="xilu_foot_btn2" v-if="info.order_status == 5 ">已过期</view>
|
|||
|
<view class="xilu_foot_btn2" v-if="info.order_status == 6 ">课时已完成</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="container">
|
|||
|
<view class="pr">
|
|||
|
<swiper class="xilu_swiper_info" @change="swiperTab" :current="current" :circular="true"
|
|||
|
:autoplay="true" :interval="3000" :duration="1000">
|
|||
|
<swiper-item v-for="(vo,index) in thumb_images">
|
|||
|
<image :src="vo" mode="aspectFill"></image>
|
|||
|
</swiper-item>
|
|||
|
</swiper>
|
|||
|
<view class="xilu_swiper_dot">{{ current + 1 }}/{{ thumb_images.length }}</view>
|
|||
|
<image v-if="web_url" :src="web_url+'/uniapp_image/xilu_mask.png'" mode="aspectFill" class="xilu_mask"></image>
|
|||
|
</view>
|
|||
|
<view class="pr mt_132 z5 plr25 pb30">
|
|||
|
<view class="flex-box">
|
|||
|
<view class="col2 fs36 fw500 lh50 flex-grow-1" v-if="info">
|
|||
|
{{info.course_camp.course.title || info.course_camp.camp.title}}
|
|||
|
</view>
|
|||
|
<view>
|
|||
|
<image @click="returnTips()" src="@/static/images/xilu_icon18.png" mode="aspectFill"
|
|||
|
class="ico24"></image>
|
|||
|
<text @click="returnTips()" class="ml10 fs28 col2">退款须知</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="pr mt30 xilu_lession_info">
|
|||
|
<image v-if="web_url" :src="web_url + '/uniapp_image/xilu_bg_info_big.png'" mode="aspectFill" class="xilu_lession_info_bg">
|
|||
|
</image>
|
|||
|
<view class="xilu_lession_info_view p30">
|
|||
|
<view class="flex-box">
|
|||
|
<image src="@/static/images/xilu_icon_time.png" mode="aspectFill" class="ico28 mid"></image>
|
|||
|
<view class="flex-grow-1 fs28 colf lh40 pl10">{{info.course_camp.class_time_txt || ''}}
|
|||
|
{{info.course_camp.start_at || ''}}–{{info.course_camp.end_at || ''}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="mt40 flex"
|
|||
|
@tap="openLocation(info.course_camp.shop.lat,info.course_camp.shop.lng)">
|
|||
|
<image src="@/static/images/xilu_icon_address_gray.png" mode="aspectFill" class="ico28 mt8">
|
|||
|
</image>
|
|||
|
<view class="flex-grow-1 plr10">
|
|||
|
<view class="w460 fs28 colf lh40 m-ellipsis-l2">{{info.course_camp.shop.address || ''}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="tc">
|
|||
|
<image src="@/static/images/xilu_guide.png" mode="aspectFill" class="ico30 mt5"></image>
|
|||
|
<view class="col9 fs24 mt10 lh34">导航</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="xilu_box flex-box" v-if="info">
|
|||
|
<image :src="info.course_camp.coach.xilufitness_urls.coach_avatar" mode="aspectFill"
|
|||
|
class="xilu_head_big"></image>
|
|||
|
<view class="flex-grow-1 pl30">
|
|||
|
<view class="fs40 fw500 lh56 colf">{{info.course_camp.coach.coach_name || ''}}</view>
|
|||
|
<view class="mt30 fs28 col9 lh40" v-if="info.course_camp.coach.lable_list.length > 0">
|
|||
|
{{info.course_camp.coach.lable_list.join('·')}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="xilu_box" style="padding-left: 28rpx;padding-right: 28rpx;"
|
|||
|
v-if="sign_list.list && sign_list.list.length > 0">
|
|||
|
<view class="colf fs36 fw500 lh50">本期报名({{sign_list.user_count || 0}}人)</view>
|
|||
|
<view style="font-size: 0;">
|
|||
|
<image :src="vo.user.xilufitness_urls.avatar || '../../static/images/avatar.png' "
|
|||
|
mode="aspectFill" class="xilu_mini_head" v-for="(vo,index) in sign_list.list"></image>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<template v-if="info.order_type == 3">
|
|||
|
<view class="xilu_box" v-if="info.course_camp.camp.content">
|
|||
|
<view class="pb30 mb30 fs36 fw500 colf lh50 bb">课程介绍</view>
|
|||
|
<view class="colf">
|
|||
|
<mp-html :content="info.course_camp.camp.content"></mp-html>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="xilu_box" v-if="info.course_camp.camp.tip_content">
|
|||
|
<view class="pb30 mb30 fs36 fw500 colf lh50 bb">注意事项</view>
|
|||
|
<view class="colf">
|
|||
|
<mp-html :content="info.course_camp.camp.tip_content"></mp-html>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<template v-else>
|
|||
|
<view class="xilu_box" v-if="info.course_camp.course.content">
|
|||
|
<view class="pb30 mb30 fs36 fw500 colf lh50 bb">课程介绍</view>
|
|||
|
<view class="colf">
|
|||
|
<mp-html :content="info.course_camp.course.content"></mp-html>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="xilu_box" v-if="info.course_camp.course.tip_content">
|
|||
|
<view class="pb30 mb30 fs36 fw500 colf lh50 bb">注意事项</view>
|
|||
|
<view class="colf">
|
|||
|
<mp-html :content="info.course_camp.course.tip_content"></mp-html>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<u-popup :show="showCode" mode="center" bgColor="transparent" @open="codeOpen" @close="codeClose"
|
|||
|
:safeAreaInsetBottom="false">
|
|||
|
<view class="xilu_code_popup pr pt40">
|
|||
|
<view class="tc fs34 col9 lh40">签到<text
|
|||
|
class="col2">{{info.code_num || 0}}</text>/{{info.code_total_num || 1}}</view>
|
|||
|
<image @click="codeClose()" src="@/static/images/xilu_close.png" mode="aspectFill" class="xilu_close">
|
|||
|
</image>
|
|||
|
|
|||
|
<image :src="info.code_url" mode="aspectFill" class="xilu_code"></image>
|
|||
|
<view class="tc fs34 colf lh40">出示二维码核销</view>
|
|||
|
</view>
|
|||
|
</u-popup>
|
|||
|
<u-popup :show="showTips" mode="center" bgColor="transparent" @open="tipsOpen" @close="tipsClose"
|
|||
|
:safeAreaInsetBottom="false">
|
|||
|
<view class="xilu_code_popup pr pt40" style="width: 680rpx;">
|
|||
|
<view class="tc fs34 col9 lh40">退款须知</view>
|
|||
|
<image @tap="tipsClose()" src="@/static/images/xilu_close.png" mode="aspectFill" class="xilu_close">
|
|||
|
</image>
|
|||
|
<view class="plr20 fs28 colf lh40 mt40">
|
|||
|
<mp-html :content="tips_content"></mp-html>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</u-popup>
|
|||
|
<!-- <u-popup :show="showAttendance" mode="center" bgColor="transparent" @open="attendanceOpen"
|
|||
|
@close="attendanceClose" :safeAreaInsetBottom="false">
|
|||
|
<view class="xilu_code_popup pr pt40">
|
|||
|
<view class="tc fs34 col9 lh40">已签到<text class="col2">2</text>/10</view>
|
|||
|
<image src="@/static/images/xilu_close.png" mode="aspectFill" class="xilu_close"></image>
|
|||
|
<image src="@/static/logo.png" mode="aspectFill" class="xilu_code"></image>
|
|||
|
<view class="tc fs34 colf lh40">出示二维码核销</view>
|
|||
|
</view>
|
|||
|
</u-popup> -->
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
const app = getApp();
|
|||
|
const webConfig = require("@/util/config");
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
current: 0,
|
|||
|
showCode: false,
|
|||
|
showTips: false,
|
|||
|
showAttendance: false,
|
|||
|
info: '',
|
|||
|
thumb_images: [],
|
|||
|
sign_list: [],
|
|||
|
codeList: [],
|
|||
|
tips_content: '',
|
|||
|
web_url:''
|
|||
|
}
|
|||
|
},
|
|||
|
methods: {
|
|||
|
swiperTab(e) {
|
|||
|
this.current = Number(e.target.current)
|
|||
|
console.log(this.current);
|
|||
|
},
|
|||
|
codeOpen() {
|
|||
|
this.showCode = true
|
|||
|
},
|
|||
|
codeClose() {
|
|||
|
this.showCode = false
|
|||
|
},
|
|||
|
tipsOpen() {
|
|||
|
this.showTips = true
|
|||
|
},
|
|||
|
tipsClose() {
|
|||
|
this.showTips = false
|
|||
|
},
|
|||
|
attendanceOpen() {
|
|||
|
this.showAttendance = true
|
|||
|
},
|
|||
|
attendanceClose() {
|
|||
|
this.showAttendance = false
|
|||
|
},
|
|||
|
//去评价
|
|||
|
to_comment(id) {
|
|||
|
let _this = this;
|
|||
|
this.$api.navigate('../white_appraise/white_appraise?id=' + id,function(res){
|
|||
|
res.eventChannel.on('reloadOrder',function(){
|
|||
|
_this.getDetail(_this.info.id || 0);
|
|||
|
});
|
|||
|
});
|
|||
|
},
|
|||
|
//打开退款弹窗
|
|||
|
returnTips() {
|
|||
|
this.showTips = true;
|
|||
|
},
|
|||
|
//打开地图
|
|||
|
openLocation(lat, lng) {
|
|||
|
this.$api.openLocation(lat, lng);
|
|||
|
},
|
|||
|
//订单详情
|
|||
|
getDetail(id) {
|
|||
|
let _this = this;
|
|||
|
this.$http({
|
|||
|
url: '/addons/xilufitness/order/getDetail',
|
|||
|
data: {
|
|||
|
id: id
|
|||
|
},
|
|||
|
method: 'get'
|
|||
|
}).then(res => {
|
|||
|
if (res.code == 1) {
|
|||
|
_this.info = res.data.info;
|
|||
|
|
|||
|
if (res.data.info.order_type == 3) {
|
|||
|
_this.thumb_images = res.data.info.course_camp.camp.xilufitness_urls.thumb_images ||
|
|||
|
[];
|
|||
|
} else {
|
|||
|
_this.thumb_images = res.data.info.course_camp.course.xilufitness_urls.thumb_images ||
|
|||
|
[];
|
|||
|
}
|
|||
|
_this.sign_list = res.data.userList || [];
|
|||
|
_this.codeList = res.data.codeList || [];
|
|||
|
}
|
|||
|
}).catch(error => {
|
|||
|
console.log('orderDetailError', error);
|
|||
|
})
|
|||
|
},
|
|||
|
//退款须知
|
|||
|
getTips() {
|
|||
|
let _this = this;
|
|||
|
this.$http({
|
|||
|
url: '/addons/xilufitness/cms/detail',
|
|||
|
data: {
|
|||
|
is_type: 4
|
|||
|
},
|
|||
|
method: 'get'
|
|||
|
}).then(res => {
|
|||
|
if(res.code == 1){
|
|||
|
_this.tips_content = (res.data.info && res.data.info.content) ? res.data.info.content : '';
|
|||
|
}
|
|||
|
}).catch(error => {
|
|||
|
console.log('cmsError', error);
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad(options) {
|
|||
|
this.web_url = webConfig.base_url || '';
|
|||
|
this.getDetail(options.id || 0);
|
|||
|
this.getTips();
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.xilu {
|
|||
|
&_swiper_info {
|
|||
|
width: 100%;
|
|||
|
height: 750rpx;
|
|||
|
position: relative;
|
|||
|
|
|||
|
image {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
display: block;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
&_mask {
|
|||
|
width: 100%;
|
|||
|
height: 380rpx;
|
|||
|
position: absolute;
|
|||
|
bottom: 0;
|
|||
|
z-index: 3;
|
|||
|
left: 0;
|
|||
|
}
|
|||
|
|
|||
|
&_swiper_dot {
|
|||
|
display: inline-block;
|
|||
|
height: 39rpx;
|
|||
|
line-height: 39rpx;
|
|||
|
background: rgba(0, 0, 0, 0.25);
|
|||
|
border-radius: 20rpx;
|
|||
|
position: absolute;
|
|||
|
font-size: 24rpx;
|
|||
|
font-weight: 400;
|
|||
|
color: #FFFFFF;
|
|||
|
right: 30rpx;
|
|||
|
bottom: 194rpx;
|
|||
|
padding-left: 15rpx;
|
|||
|
padding-right: 15rpx;
|
|||
|
z-index: 4;
|
|||
|
}
|
|||
|
|
|||
|
&_lession_info {
|
|||
|
width: 700rpx;
|
|||
|
height: 220rpx;
|
|||
|
z-index: 1;
|
|||
|
|
|||
|
&_bg {
|
|||
|
width: 700rpx;
|
|||
|
height: 220rpx;
|
|||
|
position: relative;
|
|||
|
z-index: 1;
|
|||
|
}
|
|||
|
|
|||
|
&_view {
|
|||
|
width: 700rpx;
|
|||
|
height: 220rpx;
|
|||
|
position: absolute;
|
|||
|
z-index: 1;
|
|||
|
left: 0;
|
|||
|
top: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
&_box {
|
|||
|
background: #292B2C;
|
|||
|
border-radius: 20rpx;
|
|||
|
width: 100%;
|
|||
|
margin-top: 30rpx;
|
|||
|
padding: 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
&_head_big {
|
|||
|
width: 130rpx;
|
|||
|
height: 130rpx;
|
|||
|
border-radius: 50%;
|
|||
|
}
|
|||
|
|
|||
|
&_mini_head {
|
|||
|
width: 90rpx;
|
|||
|
height: 90rpx;
|
|||
|
border: 2rpx solid #FFFFFF;
|
|||
|
position: relative;
|
|||
|
margin-top: 30rpx;
|
|||
|
margin-left: -12rpx;
|
|||
|
display: inline-block;
|
|||
|
vertical-align: top;
|
|||
|
border-radius: 50%;
|
|||
|
|
|||
|
&:first-child,
|
|||
|
&:nth-of-type(9n) {
|
|||
|
margin-left: 0;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
&_btn_more {
|
|||
|
font-size: 22rpx;
|
|||
|
font-weight: 400;
|
|||
|
color: #999999;
|
|||
|
width: 146rpx;
|
|||
|
height: 55rpx;
|
|||
|
line-height: calc(55rpx - 2px);
|
|||
|
text-align: center;
|
|||
|
border-radius: 28rpx;
|
|||
|
border: 1px solid #979797;
|
|||
|
}
|
|||
|
|
|||
|
&_pj_item {
|
|||
|
|
|||
|
border-top: 1px solid #434343;
|
|||
|
padding-top: 20rpx;
|
|||
|
padding-bottom: 20rpx;
|
|||
|
|
|||
|
&_head_img {
|
|||
|
width: 75rpx;
|
|||
|
height: 75rpx;
|
|||
|
border-radius: 50%;
|
|||
|
}
|
|||
|
|
|||
|
&_star {
|
|||
|
width: 23rpx;
|
|||
|
height: 21rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
&_code_popup {
|
|||
|
width: 600rpx;
|
|||
|
background: #404243;
|
|||
|
border-radius: 20rpx;
|
|||
|
border: 1px solid #454545;
|
|||
|
padding: 40rpx 0 50rpx;
|
|||
|
}
|
|||
|
|
|||
|
&_close {
|
|||
|
width: 30rpx;
|
|||
|
height: 30rpx;
|
|||
|
position: absolute;
|
|||
|
top: 45rpx;
|
|||
|
right: 47rpx;
|
|||
|
}
|
|||
|
|
|||
|
&_code {
|
|||
|
width: 405rpx;
|
|||
|
height: 400rpx;
|
|||
|
display: block;
|
|||
|
margin: 40rpx auto;
|
|||
|
}
|
|||
|
&_foot_btn1 {
|
|||
|
width: 690rpx;
|
|||
|
height: 90rpx;
|
|||
|
line-height: 90rpx;
|
|||
|
text-align: center;
|
|||
|
font-size: 30rpx;
|
|||
|
font-weight: 400;
|
|||
|
color: #0E0E0F;
|
|||
|
background: #FFCF00;
|
|||
|
border-radius: 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
&_foot_btn2 {
|
|||
|
width: 690rpx;
|
|||
|
height: 90rpx;
|
|||
|
line-height: 90rpx;
|
|||
|
text-align: center;
|
|||
|
font-size: 30rpx;
|
|||
|
font-weight: 400;
|
|||
|
color: #0E0E0F;
|
|||
|
background: #999999;
|
|||
|
border-radius: 20rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.mt_132 {
|
|||
|
margin-top: -132rpx;
|
|||
|
}
|
|||
|
|
|||
|
.z5 {
|
|||
|
z-index: 5;
|
|||
|
}
|
|||
|
|
|||
|
.bb {
|
|||
|
border-bottom: 1px solid #434343;
|
|||
|
}
|
|||
|
</style>
|