173 lines
5.0 KiB
Vue
Raw Normal View History

2025-08-01 11:39:06 +08:00
<template>
<view class="xilu">
<view class="container">
<view class="p30">
<view class="xilu_part1">
<view class="m-ellipsis fs34 fw500 colf lh48" v-if="course_type == 3">{{info.camp.title || ''}}
</view>
<view class="m-ellipsis fs34 fw500 colf lh48" v-else>{{info.course.title || ''}}</view>
<view class="mt30 flex-box">
<image src="@/static/images/xilu_icon25.png" mode="aspectFill" class="ico28"></image>
<view class="plr10 w222 fs28 colf" v-if="course_type == 3">
{{info.plan.day_start_at || ''}}{{info.plan.day_end_at || ''}}
</view>
<view class="plr10 w222 fs28 colf" v-else>{{info.start_at || ''}}{{info.end_at || ''}}</view>
<image src="@/static/images/xilu_icon26.png" mode="aspectFill" class="ico28"></image>
<view class="fs28 colf plr10">总人数<text class="col2">{{user_count || 0}}</text></view>
</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" v-if="course_type == 3">
{{info.plan.day_date || ''}} {{info.plan.day_start_at || ''}}{{info.plan.day_end_at || ''}}
</view>
<view class="flex-grow-1 fs28 colf lh40 pl10" v-else>{{info.class_time_txt || ''}}
{{info.start_at || ''}}{{info.end_at || ''}}
</view>
</view>
<view class="mt40 flex" @tap="openLocation(info.shop.lat,info.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.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="colf mt30 fs36 lh36">总人数<text class="col2">{{user_count}}</text></view>
<view class="pb30">
<template v-if="userList.length > 0">
<view class="xilu_user_item flex-box" v-for="(vo,index) in userList">
<image :src="vo.user.xilufitness_urls.avatar || '../../static/images/avatar.png' "
mode="aspectFill" class="xilu_user_item_cover"></image>
<view class="flex-grow-1 pl20">
<view class="fs30 fw500 colf lh36">{{vo.user.nickname || ''}}</view>
<view class="mt20 fs28 col9 fw500 lh40">
<text>累计天数{{vo.user.train_day || 0}}</text>
<text class="pl30">训练次数{{vo.user.train_count || 0}}</text>
<text class="pl30">训练时长{{vo.user.train_duration || 0}}</text>
</view>
</view>
</view>
</template>
<template v-else>
<empty-data :tips="'暂无报名记录'" :lineHeight="200"></empty-data>
</template>
</view>
</view>
</view>
</view>
</template>
<script>
const app = getApp();
const webConfig = require("@/util/config");
export default {
data() {
return {
info: null,
shop_info: null,
userList: [],
user_count: 0,
course_type: 1,
web_url:''
}
},
methods: {
//获取详情
getDetail(id, work_camp_id, course_type) {
let _this = this;
this.$http({
url: '/addons/xilufitness/coach/getSchedulingDetail',
data: {
id: id,
work_camp_id: work_camp_id,
is_type: course_type
},
method: 'get'
}).then(res => {
if (res.code == 1) {
_this.info = res.data.info;
_this.shop_info = res.data.shop_info;
_this.userList = res.data.userList || [];
_this.course_type = course_type;
_this.user_count = res.data.user_count;
}
}).catch(error => {
console.log('schedulingDetailError', error);
});
}
},
onLoad(options) {
this.web_url = webConfig.base_url || '';
this.getDetail((options.id || 0), (options.work_camp_id), (options.is_type || 1));
}
}
</script>
<style lang="scss" scoped>
.xilu {
&_part1 {
width: 700rpx;
height: 178rpx;
background: #292B2C;
border-radius: 20rpx;
padding-left: 25rpx;
padding-right: 25rpx;
padding-top: 28rpx;
}
&_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;
}
}
&_user_item {
width: 700rpx;
height: 135rpx;
background: #404243;
border-radius: 20rpx;
padding: 0 20rpx;
margin-top: 30rpx;
&_cover {
width: 90rpx;
height: 90rpx;
border-radius: 50%;
}
}
}
.w222 {
width: 222rpx;
}
</style>