445 lines
9.9 KiB
Vue
445 lines
9.9 KiB
Vue
<template>
|
||
<view>
|
||
<!-- 公共组件-每个页面必须引入 -->
|
||
<public-module></public-module>
|
||
<z-nav-bar title="班级列表">
|
||
</z-nav-bar>
|
||
|
||
<view class="containerBg">
|
||
<view class="learnBox box">
|
||
<view class="newBox">
|
||
<view class="item flexbox" v-for="(item, index) in classList" :key="index" @click="onPageJump('/pages/miniClass/classInfo',item.id)">
|
||
<!-- <view class="imgcontainer" :style="{backgroundImage:surl(item.image)}"> -->
|
||
<view class="imgcontainer" v-if="item.icon != ''" >
|
||
<image :src="item.icon" mode="aspectFit"></image>
|
||
</view>
|
||
<view class="imgcontainer defaultImg" v-else >
|
||
<image src="@/static/my_04.png" mode="aspectFit"></image>
|
||
</view>
|
||
<view class="buyItems">
|
||
<view class="">
|
||
<!-- <text v-show="item.classModel.type == 0">【普通班】</text>
|
||
<text v-show="item.classModel.type == 1">【联合班】</text>
|
||
<text v-show="item.classModel.type == 2">【精英班】</text> -->
|
||
<text class="txt555" >
|
||
{{item.title}}
|
||
</text>
|
||
</view>
|
||
<view class="jianjie">
|
||
目标学员人数:{{item.number}} 人
|
||
</view>
|
||
<!-- <view class="jianjie" v-html="item.content">
|
||
</view> -->
|
||
<view class="btn_box" >
|
||
<text v-show="item.state == '0'" @click.stop="addClass(item.id)">一键加入</text>
|
||
<!-- <text class="seeInfo" @click="onPageJump('/pages/miniClass/classInfo',item.id)">查看班内情况</text> -->
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
<view>
|
||
<!-- <u-back-top scroll-top="100"></u-back-top> -->
|
||
<u-back-top :scroll-top="scrollTop" bottom="150" :customStyle='bgiStyle'
|
||
:iconStyle="iconStyle"></u-back-top>
|
||
</view>
|
||
<z-navigation></z-navigation>
|
||
<!-- <music-play :playData="playData"></music-play> -->
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import musicPlay from '@/components/music.vue'
|
||
import $http from '@/config/requestConfig.js';
|
||
var clear;
|
||
import {
|
||
mapState
|
||
} from 'vuex';
|
||
export default {
|
||
data() {
|
||
return {
|
||
playData: {},
|
||
addType:undefined, // 小班类型
|
||
range:[
|
||
{ value: '0', text: "普通小班",name:"普通小班"},
|
||
{ value: '1', text: "联合班" ,name:"普通小班"},
|
||
{ value: '2', text: "精英班" ,name:"普通小班"},
|
||
],
|
||
tagId: null,
|
||
pid:null,
|
||
fixed: false,
|
||
pupShow:false,
|
||
fatherTabId: null,
|
||
subTabId: null, //
|
||
bgiStyle: {
|
||
background: '#fff'
|
||
},
|
||
iconStyle: {
|
||
fontSize: '40rpx',
|
||
fontWeight: 'bold',
|
||
color: '#258feb',
|
||
},
|
||
scrollTop: 0,
|
||
activeStyle: {
|
||
color: '#000',
|
||
fontWeight: 'bold',
|
||
transform: 'scale(1.2)',
|
||
// backgroundColor: '#258feb'
|
||
|
||
},
|
||
courseTitle:'',
|
||
subList: [{title:'待开班',id:'0'},{title:'已开班',id:'1'},{title:'已结班',id:'2'}],
|
||
scrollable: false,
|
||
pageTitle: '',
|
||
tabList: [
|
||
{name:'普通小班', id:'0'},{name:'联合班', id:'1'},{name:'精英班',id:'2'}],
|
||
curTagId: 0,
|
||
classList: [],
|
||
status: 3, // 0 不显示, 1 加载中,2 加载全部完成,3 暂无数据
|
||
page: 1,
|
||
flag: true, // 函数是否执行完
|
||
courseId:undefined
|
||
};
|
||
},
|
||
//第一次加载
|
||
onLoad(e) {
|
||
// 隐藏原生的tabbar
|
||
uni.hideTabBar();
|
||
this.courseTitle = e.courseTitle
|
||
this.courseId = e.courseId
|
||
// this.tagId = e.id
|
||
this.curTagId = this.range[0].value
|
||
this.subTabId = this.subList[0].id
|
||
this.pageTitle = e.title
|
||
this.pid = e.pid
|
||
console.log(e, '传入分类id')
|
||
this.getData()
|
||
// this.getCateList(this.tagId)
|
||
},
|
||
onPageScroll(e) {
|
||
this.scrollTop = e.scrollTop;
|
||
if (this.scrollTop >300) {
|
||
this.fixed = true
|
||
} else {
|
||
this.fixed = false
|
||
}
|
||
// console.log(this.scrollTop,'this.scrollTop')
|
||
},
|
||
onPullDownRefresh() {
|
||
console.log('下拉刷新')
|
||
// this.status = 3
|
||
// this.page = 1
|
||
this.classList = []
|
||
this.getData()
|
||
uni.stopPullDownRefresh()
|
||
},
|
||
onReachBottom() {
|
||
// if (this.status != 2 && this.flag) {
|
||
// this.page++
|
||
// this.getData(this.subTabId)
|
||
// }
|
||
console.log('触底加载', this.page)
|
||
},
|
||
computed: {
|
||
...mapState(['userInfo'])
|
||
},
|
||
//页面显示
|
||
onShow() {
|
||
// 隐藏原生的tabbar
|
||
// uni.hideTabBar();
|
||
this.getData()
|
||
},
|
||
components: {
|
||
musicPlay
|
||
},
|
||
//方法
|
||
methods: {
|
||
// 加入班级
|
||
// 加入班级
|
||
addClass(classId){
|
||
$http.request({
|
||
url: "common/class/joinClass",
|
||
method: "POST",
|
||
data: {
|
||
"classId": classId ,
|
||
},
|
||
header: { //默认 无 说明:请求头
|
||
'Content-Type': 'application/json'
|
||
},
|
||
})
|
||
.then(res => {
|
||
if (res.code == 0) {
|
||
uni.showToast({
|
||
title: `加入成功!`,
|
||
icon: 'success'
|
||
})
|
||
setTimeout(()=>{
|
||
uni.navigateTo({
|
||
url:`/pages/miniClass/classInfo?id=${classId}`
|
||
})
|
||
},200)
|
||
}else{
|
||
uni.showToast({
|
||
title: res.msg,
|
||
icon: 'none'
|
||
})
|
||
}
|
||
}).catch(e => {
|
||
console.log(e, '数据报错')
|
||
// this.status = 3
|
||
uni.showToast({
|
||
title: e.errMsg,
|
||
icon: 'none'
|
||
})
|
||
});
|
||
},
|
||
selectChange(e){
|
||
console.log("e:", e);
|
||
},
|
||
closePup(){
|
||
this.pupShow = false
|
||
},
|
||
surl(imageurl) {
|
||
return `url(${imageurl})`
|
||
},
|
||
fatherClick(e) {
|
||
console.log('点击', e)
|
||
this.page = 1
|
||
// var item = e
|
||
this.curTagId = e.id
|
||
this.subTabId = this.subList[0].id
|
||
this.getData(this.subTabId);
|
||
},
|
||
curseClick(item) {
|
||
this.subTabId = item.id
|
||
this.classList = []
|
||
this.page = 1
|
||
this.getData(this.subTabId);
|
||
},
|
||
getData(id) {
|
||
this.status = 1
|
||
this.flag = false
|
||
uni.showLoading({
|
||
title:'正在加载'
|
||
})
|
||
$http.request({
|
||
url: "common/class/getClassNoUser",
|
||
method: "POST", // POST、GET、PUT、DELETE,具体说明查看官方文档
|
||
header: { //默认 无 说明:请求头
|
||
'Content-Type': 'application/json'
|
||
},
|
||
})
|
||
.then(res => {
|
||
if (res.code == 0) {
|
||
if (res.result.length > 0) {
|
||
this.classList = res.result
|
||
}else{
|
||
this.classList = []
|
||
}
|
||
this.flag = true
|
||
}
|
||
uni.hideLoading()
|
||
}).catch(e => {
|
||
uni.hideLoading()
|
||
this.flag = true
|
||
console.log(e, '数据报错')
|
||
// this.status = 3
|
||
uni.showToast({
|
||
title:`获取数据失败`,
|
||
icon:'error'
|
||
})
|
||
});
|
||
},
|
||
// 跳转
|
||
onPageJump(url,id,have) {
|
||
// console.log('进来了',url,id);
|
||
uni.navigateTo({
|
||
url: `${url}?id=${id}&have=${have}`
|
||
});
|
||
},
|
||
|
||
shuomingPage(url,id,pid){
|
||
uni.navigateTo({
|
||
url: `${url}?id=${id}&pid=${pid}`
|
||
});
|
||
}
|
||
},
|
||
};
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
@import '@/style/mixin.scss';
|
||
/deep/.uni-select__selector{
|
||
top:unset;
|
||
bottom:calc(100% + 12px) ;
|
||
}
|
||
/deep/.uni-select{
|
||
border: none;
|
||
}
|
||
/deep/.uni-select__input-text{
|
||
font-size:14px;
|
||
color:#7f7f7f //修改为你的字体颜色
|
||
}
|
||
/deep/.uni-select__input-placeholder{
|
||
font-size:14px;
|
||
color:#7f7f7f //修改为你的字体颜色
|
||
}
|
||
/deep/.uni-popper__arrow{
|
||
top:unset;
|
||
bottom: -6px;
|
||
transform: rotate(180deg);
|
||
}
|
||
/deep/.uni-popper__arrow::after{
|
||
top:0
|
||
}
|
||
.box6{
|
||
.btnBox{justify-content: center;}
|
||
}
|
||
.containerBg {
|
||
// background-color: $containerColor;
|
||
background-color: #f6f6f8;
|
||
padding: 0 20rpx;
|
||
|
||
}
|
||
.curseSet{margin-right: 20rpx; font-size: 28rpx; display: flex; align-items: center;}
|
||
.fixed {
|
||
position: fixed; top: 100rpx; border-bottom: 1px solid #eee;
|
||
z-index: 1; width: 100%; background-color: #fff;
|
||
}
|
||
|
||
.newBox {
|
||
|
||
.item {
|
||
margin-bottom: 20rpx;
|
||
background-color: #fff;
|
||
border-radius: 20rpx;
|
||
@include ptop_bottm(10px);
|
||
@include pleft_right(10px);
|
||
|
||
@include mshadow(10px, 1) .imgcontainer {
|
||
display: block;
|
||
width: 110rpx;
|
||
margin-right: 20rpx;
|
||
// background-size: cover;
|
||
// background-position: center;
|
||
height: 200rpx;
|
||
flex-grow: 1;
|
||
// @include ptop_bottm(10px);
|
||
overflow: hidden;
|
||
|
||
// @include pleft_right(10px);
|
||
image {
|
||
width: 100%;
|
||
height: 200rpx;
|
||
}
|
||
}
|
||
.btn_box{ text-align: right;
|
||
text{
|
||
border-radius: 20rpx;
|
||
padding: 3px 5px; @include theme("btn_bg");
|
||
font-size: 28rpx; color: #fff;
|
||
}
|
||
.seeInfo{background-color:#fff; background-image: none; border: 1px solid #666; color: #333; margin-left: 20rpx;}
|
||
}
|
||
.buyItems {
|
||
width: 60%;
|
||
}
|
||
|
||
.jianjie {
|
||
line-height: 30rpx; height: 60rpx; overflow: hidden;
|
||
overflow: hidden!important;
|
||
margin-top: 10rpx;
|
||
font-size: 24rpx;
|
||
@include bov();
|
||
color: #9c9c9c;
|
||
}
|
||
|
||
.txt555 {
|
||
font-size: 30rpx;
|
||
color: #000;
|
||
@include bov()
|
||
}
|
||
}
|
||
}
|
||
|
||
.subCate {
|
||
padding-top:10px;
|
||
padding-bottom: 10px;
|
||
display: flex;
|
||
.item {
|
||
border: 1px solid #bfcad9;
|
||
display: inline-block;
|
||
text-align: center;
|
||
font-size: 26rpx;
|
||
background-color: #fff;
|
||
border-radius: 4px; width: 100%;
|
||
color: #333;
|
||
margin-right: 16rpx;
|
||
padding: 14rpx 30rpx;
|
||
}
|
||
|
||
.item:last-child() {
|
||
margin-right: 0;
|
||
}
|
||
|
||
.item.active {
|
||
border-color: $themeColor;
|
||
background-color: $themeColor;
|
||
color: #fff;
|
||
}
|
||
}
|
||
|
||
.tabList {
|
||
text-align: center;
|
||
}
|
||
|
||
.flexbox {
|
||
display: flex;
|
||
}
|
||
|
||
.imgcontainer {
|
||
background-color: $imgBg;
|
||
}
|
||
|
||
.box {
|
||
// background-color: #fff;
|
||
min-height: calc(100vh - 270rpx);
|
||
}
|
||
|
||
.learnBox {
|
||
// background-color: #fff;
|
||
margin-top: 10px;
|
||
|
||
.learn {
|
||
flex-wrap: wrap;
|
||
justify-content: space-between;
|
||
margin-top: 20rpx;
|
||
|
||
.item {
|
||
width: 48%;
|
||
margin-bottom: 16px;
|
||
|
||
overflow: hidden;
|
||
|
||
image {
|
||
width: 100%;
|
||
height: 200rpx;
|
||
}
|
||
|
||
.txt555 {
|
||
display: block;
|
||
text-align: center;
|
||
height: 40rpx;
|
||
width: 100%;
|
||
line-height: 40rpx;
|
||
@include bov(1);
|
||
margin-top: 10rpx;
|
||
font-size: 24rpx;
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
</style> |