Files
medicine_app/pages/miniClass/DirectorModalList.vue
@fawn-nine 3227a6542a 暂存
2024-08-28 10:28:12 +08:00

449 lines
10 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<z-nav-bar title="教研室列表">
<!-- <view class="curseSet" slot="right" @click="shuomingPage('/pages/course/courseSet',tagId,pid)"> -->
<!-- <uni-icons type="info" size="24"></uni-icons> 课程说明</view> -->
</z-nav-bar>
<view class="containerBg">
<view class="learnBox box">
<view class="newBox" v-if="classList.length > 0">
<view class="item flexbox" v-for="(item, index) in classList" :key="index" @click="onPageJump('/pages/miniClass/miniClassMan',item)">
<!-- <view class="imgcontainer" :style="{backgroundImage:surl(item.image)}"> -->
<view class="flexbox" v-if="item.icon != ''" style="align-items: center; border: 1px solid #ddd; margin-right: 10rpx; border-radius: 10rpx;">
<text v-show="item.type == 0">普通班</text>
<text v-show="item.type == 1">联合班</text>
<text v-show="item.type == 2">精英班</text>
</view>
<view class="buyItems">
<view class="txt555" >
{{item.title}}
</view>
<view class="jianjie">
教学时长{{item.days}}
</view>
<view class="btn_box" >
<!-- <text @click="enterClass" v-show="item.state == '0'">一键加入</text> -->
<!-- <text class="seeInfo" >进入班级</text> -->
</view>
</view>
</view>
</view>
<u-divider v-else text="暂无数据"></u-divider>
<!-- <u-divider v-show="status == 2" text="已加载全部"></u-divider> -->
<!-- <u-divider v-show="status == 3" text="暂无数据"></u-divider> -->
<!-- <u-divider v-show="status == 1" text="加载中..."></u-divider> -->
</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, // 小班类型
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: '#333',
fontWeight: 'bold',
transform: 'scale(1.2)',
// backgroundColor: '#258feb'
},
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, // 函数是否执行完
userMes: undefined,
isMonitor :undefined,
isDirector :undefined,
};
},
//第一次加载
onLoad(e) {
// 隐藏原生的tabbar
uni.hideTabBar();
// this.tagId = e.id
this.subTabId = this.subList[0].id
this.pageTitle = e.title
this.pid = e.pid
console.log(e, '传入分类id')
this.getUserInfo()
// this.getCateList(this.tagId)
},
onPageScroll(e) {
this.scrollTop = e.scrollTop;
if (this.scrollTop > 500) {
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() {
// this.addType = undefined
this.getData()
// 隐藏原生的tabbar
// uni.hideTabBar();
},
components: {
musicPlay
},
//方法
methods: {
goAddClasss(){
uni.navigateTo({
url:'/pages/miniClass/addClass'
})
},
getUserInfo() {
// 获取个人信息
if (this.userInfo.id != undefined) {
this.$http.post("common/user/getUserInfo").then((res) => {
this.userMes = res.result;
this.isMonitor = res.isMonitor
this.isDirector = res.isDirector
}).catch(e => {
uni.showToast({
title: '获取用户信息失败',
icon: 'none'
})
});
}
},
// 加入班级
enterClass(){
},
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) {
// if (!this.flag) {
// console.log('正在执行,未完成')
// return
// }
this.status = 1
this.flag = false
// uni.showLoading({
// title:'正在加载'
// })
$http.request({
url: "common/class/getClassModelByUserid",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
"userId": this.userInfo.id,
"type": "" // 班类型 0小班 1联合班 2精英班
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
console.log('用户的模型列表');
if (res.code == 0) {
if (res.classModelList.length > 0) {
this.classList = res.classModelList
}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,val) {
// console.log('进来了',url,id);
uni.navigateTo({
url: `${url}?id=${val.id}&title=${val.title}&type=${val.type}`
});
},
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
}
.addType{width: 100%; margin-top: 40rpx;margin-bottom: 40rpx; border: 1px solid #eee;}
.classNewBtn{text-align: center; height:200rpx; padding: 30rpx;
background-image: linear-gradient(-60deg, #fdf0ed 0%, #bfe3f0 40%, #e4eefa 60%, #bfe3f0 80%, #fdf0ed 100%);
border-radius: 0 0 40rpx 40rpx;
.box88{ border-radius: 40rpx; padding: 30rpx; justify-content: center; align-items: center;
// box-shadow: 0 10rpx 8rpx #eee;
button{border-radius: 40rpx;}
}
}
.box6{
.btnBox{justify-content: center;}
}
.containerBg {
min-height: calc(100vh - 70rpx);
// 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: 120rpx;
// 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>