This commit is contained in:
@fawn-nine
2024-08-27 17:10:44 +08:00
parent 4792202081
commit 48a5c3400e
18 changed files with 735 additions and 102 deletions

16
package (2).json Normal file
View File

@@ -0,0 +1,16 @@
{
"id": "yk-screenRecord",
"name": "实现微信小程序安卓IOS禁止截屏、录屏功能",
"displayName": "实现微信小程序安卓IOS禁止截屏、录屏功能",
"version": "1.0.0",
"description": "禁止截屏、录屏功能支持安卓、IOS、小程序等多端通用哪里需要那里应引用即可方便快捷",
"keywords": [
"uniapp、微信小程序、截屏、录屏、方便快捷"
],
"dcloudext": {
"category": [
"前端组件",
"通用组件"
]
}
}

View File

@@ -599,6 +599,13 @@
"navigationBarTitleText" : "课程下可加入班级列表"
}
},
{
"path" : "pages/miniClass/allLearningClassList",
"style" :
{
"navigationBarTitleText" : "全部可加入班级列表"
}
},
{
"path" : "pages/miniClass/myClassList",
"style" :

View File

@@ -66,8 +66,11 @@
<view class="" v-html="curriculumData.questions"></view>
<view class="haveAnswer" v-if="myAnswer.id">
<!-- 有答案 -->
<view class="PM_font flex_box flex_between" style="padding: 20rpx; align-items: center;">
<text style="padding: 20rpx 0; font-size: 40rpx; color: #333">我的见解</text>
<view class=" flex_box flex_between" style="padding: 20rpx; align-items: center;">
<view class="">
<text class="PM_font" style="padding: 20rpx 0; font-size: 40rpx; color: #333">我的见解</text>
<text class="classLink" @click="gotoClass(classList[0])" v-if="classList[0].id">@{{classList[0].title}}</text>
</view>
<view class="rightBtn" @click="showBlank(myAnswer)" v-if="myAnswer.scoreSuccess == 0 && myAnswer.scoreInfo == ''">
<text>修改</text>
</view>
@@ -104,9 +107,10 @@
</view>
<view class="welc">
<text>欢迎留下你的见解</text>
<text v-if="classList.length > 0" class="className1" @click="gotoClass(classList[0])" >提交到{{classList[0].title}}</text>
</view>
<view class="btn">
<text @click="showBlank()">写见解</text>
<view class="flex_box flex_center " style="align-items: center;">
<text class="btn" @click="showBlank()">写见解</text>
</view>
</view>
</view>
@@ -365,6 +369,11 @@
}
this.showEditBlank = true
},
gotoClass(item){
uni.navigateTo({
url: `/pages/miniClass/classInfo?id=${item.id}`
});
},
closePup() {
this.showEditBlank = false
this.answerForm = {
@@ -796,7 +805,7 @@
checkDisable() {
console.log("点击了");
},
// 判断用户是否加入了小班 小班列表为0 表示已经加入
// 判断用户是否加入了小班
getClassList(){
$http.request({
url: '/common/class/getClassByUser',
@@ -938,33 +947,6 @@
<style lang="scss" scoped>
@import "@/style/mixin.scss";
// .page-body {
// height: calc(100vh - var(--window-top) - var(--status-bar-height));
// }
// .wrapper {
// height: 100%;
// }
// .editor-wrapper {
// height: calc(100vh - var(--window-top) - var(--status-bar-height) - 140px);
// background: #fff;
// }
// .iconfont {
// display: inline-block;
// padding: 8px 8px;
// width: 24px;
// height: 24px;
// cursor: pointer;
// font-size: 20px;
// }
// .toolbar {
// box-sizing: border-box;
// border-bottom: 0;
// font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
// }
.ql-container {
box-sizing: border-box;
@@ -1043,6 +1025,7 @@
// border-bottom: 1px solid #eee;
.welc{ display: block; border-top: 1px solid #eee; margin-bottom: 20rpx; padding-top: 20rpx;}
.lockView{display: none;}
.className1{color: #06c;}
.btn {
display: inline-block;
border-radius: 20rpx;
@@ -1117,7 +1100,7 @@
}
}
}
.classLink{color: #06c;}
.coursePart {
margin-top: 20rpx;
@include ptop_bottm(10px);

View File

@@ -83,6 +83,19 @@
</view>
</view>
</view>
<view class="classEntrance" v-if="classInfo.id">
<view class="flex_box" style="justify-content: space-between;">
<view class="flex_box classTitleBox">
<image src="../../static/icon/class.png" mode="" style="width: 64rpx; height: 64rpx;"></image>
<text class="mainTxt">
<span style="font-weight: bold; padding: 0 16rpx;"></span>
班级{{classInfo.title}}</text>
</view>
<view class="btntext">
<text @click="onPageJump('/pages/miniClass/classInfo', classInfo.id)">进入班级 >></text>
</view>
</view>
</view>
<view class="containerBg2">
<!-- 目录 -->
<view :class="['coursePart','flexbox', userMsg.vip != 0 ? 'vipBgColor':'']"
@@ -476,7 +489,8 @@
},
isAndorid: true,
oprateOsName:'',
linkClassList:[], // 关联班级数组
linkClassList:[], // 可加入关联班级数组
classInfo:[] // 所在班级信息
};
},
//第一次加载
@@ -570,6 +584,8 @@
this.linkClassList = res.result
}else{
this.linkClassList = []
// 查询是否有所在的班级
this.getClassList()
}
}).catch(e => {
uni.showToast({
@@ -997,6 +1013,31 @@
console.log("提交报错", e);
});
},
getClassList(){
$http.request({
url: '/common/class/getClassByUser',
method: "POST",
data: {
"courseId": this.courseId
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
this.classInfo = {}
console.log('获取班级列表',res.result);
if(res.code == 0){
if(res.result.id){
this.classInfo = res.result
}
}
console.log('获取班级列表++++++',this.classList);
}).catch(e => {
console.log('获取班级列表失败',e);
this.classInfo = {}
});
},
// 查询课程的评论
getSayList() {
this.status = 1;
@@ -1402,13 +1443,13 @@
</script>
<style lang="scss" scoped>
@import "@/style/mixin.scss";
.classEntrance{background-color: #f2f8ff; padding:20rpx;
.classEntrance{background-color: #d0ecc1; padding:20rpx;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
.flex_box{align-items: center;}
}
.btntext{color: $themeColor; }
.classTitleBox{font-size: 28rpx;
.mainTxt{font-size: 30rpx;}
.classTitleBox{font-size: 28rpx; flex: 1;
.mainTxt{font-size: 30rpx; flex: 1; padding-left: 10rpx;}
}
.completionBg { padding: 10rpx 0;
background-color: #fff; border-bottom: 1px solid #eee;

View File

@@ -7,16 +7,7 @@
<!-- <uni-icons type="info" size="24"></uni-icons> 课程说明</view> -->
</z-nav-bar>
<!-- <view class="tabsBox" :class="[fixed ? 'fixed' : '' ]">
<u-tabs v-if="tabList.length > 0" :class="['tabList']" @click="fatherClick" :current="curTagId"
:activeStyle="activeStyle" :scrollable="scrollable" :list="tabList"
itemStyle="padding-left: 15px; background-color:#fff; padding-right: 15px; height: 50px;"></u-tabs>
</view> -->
<view class="containerBg">
<!-- <view class="subCate flex" v-if="subList.length> 0">
<text :class="['item',subTabId == item.id ? 'active' : '']" v-for="(item, index) in subList"
@click="curseClick(item)" :key="index">{{item.title}}</text>
</view> -->
<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 File

@@ -553,6 +553,7 @@
}
.containerBg {
min-height: calc(100vh - 120rpx);
// background-color: $containerColor;
background-color: #f6f6f8;
padding: 0 20rpx;

View File

@@ -427,7 +427,7 @@
this.fileList1 = []
this.fileList2 = []
uni.navigateTo({
url:`/pages/miniClass/miniClassMan?id=${this.form.modelId}&modelTitle=${this.modelTitle}`
url:`/pages/miniClass/miniClassMan?id=${this.form.modelId}&title=${this.modelTitle}`
})
// this.$nextTick(() => {
// uni.navigateBack({

View File

@@ -0,0 +1,445 @@
<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>

View File

@@ -12,11 +12,8 @@
</view>
<view class="className">
<h3>{{thisClass.title}}</h3>
<text class="tuichu" v-if="thisClass.state == 0" @click="outClass()">退出班级</text>
<text class="tuichu" v-if="thisClass.state == 0 && isHave" @click="outClass()">退出班级</text>
</view>
<!-- <view class="gotoExams" v-if="thisClass.state == '2'">
<text>去考试</text>
</view> -->
<view class="otherItems flex_box">
<view v-if="thisClass.state == 0">
<text class="ciyao">创建日期</text><text
@@ -61,6 +58,21 @@
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text>
</view>
</view>
<!-- <view class="optionsBox" >
<view class="">
<view class="gotoExams" >
<text>去考试</text>
</view>
</view>
<view class="chengji">
<view>总成绩为<text class="scoreNumber greenScore">90</text> <text class="c999">50考试分+40平时表现分</text></view>
<view style="margin-top: 20rpx;">恭喜您获得<text class="greenScore">A证</text> <text class="small_btn border_radius_10 zhengshu">查看证书</text></view>
<view style="margin-top: 20rpx; text-align: center;">很遗憾您的成绩未达标</view>
<view class="" style="margin-top: 20rpx; text-align: center;">
<text class="small_btn chongxiu border_radius_10">加入新班级重修</text>
</view>
</view>
</view> -->
</view>
<view class="mainBox">
<view class="">
@@ -168,11 +180,15 @@
<view class="leve1 flex_box">
<text>{{item.title}}</text>
</view>
<view class="leve2">
<view :class="['leve2']">
<view :class="[item.zhedie ? '' : 'zhedie']">
{{item.content}}
</view>
</view>
<view class="leve3">
<view class="tips flex_box">
<view class="btn1" @click.stop="changeZheDie(item, index)">{{item.zhedie ? '收起' : '展开'}}</view>
<!-- <text>发布者{{item.createUser.nickname != null && item.createUser.nickname != '' ? item.createUser.nickname : '匿名用户'}}</text> -->
<text style="" class="date">日期{{item.createTime}}</text>
</view>
@@ -203,12 +219,10 @@
<u-divider text="暂无数据"></u-divider>
</view> -->
</view>
</view>
</view>
</view>
<view class="bottomBox" v-if=" thisClass.state == '0'&& students.length < thisClass.number">
<view class="bottomBox" v-if=" thisClass.state == '0' && !isHave && students.length < thisClass.number">
<button type="primary" @click="addClass">一键加入班级</button>
</view>
<!-- 管理弹出 -->
@@ -264,7 +278,7 @@
</view>
</view>
</u-popup>
<z-navigation></z-navigation>
<!-- <z-navigation></z-navigation> -->
</view>
</template>
@@ -454,6 +468,10 @@
},
},
methods: {
changeZheDie(item, index){
this.taskList[index].zhedie = !this.taskList[index].zhedie
},
// 查询平时表现分
getScore() {
$http.request({
@@ -565,7 +583,6 @@
this.loadFlag = true;
this.pPage++;
var data = {
"limit": 10,
"page": this.pPage,
"classId": this.thisClass.id,
@@ -587,6 +604,9 @@
if (res.page.records.length > 0) {
console.log('数据获取成功', res.page.records);
var lis = res.page.records
lis.forEach(item => {
item.zhedie = false
})
this.taskList = this.taskList.concat(lis)
if (res.page.pages > 1) {
this.taskHaveMore = true
@@ -1078,7 +1098,13 @@
}
}
}
.zhengshu{color: #ffaa7f; border:1px solid #ffaa7f}
.chongxiu{color: #00aaff; border:1px solid #00aaff}
.greenScore{color: #55aa00;}
.blueScore{color: #00aaff;}
.redScore{color: #ff8a8c;}
.scoreNumber{font-size: 60rpx;}
.chengji{padding-top: 20rpx; margin-top: 20rpx; border-top: 1px solid #eee; }
.manBtnBox {
justify-content: center;
@@ -1167,7 +1193,7 @@
}
.date {}
.btn1{color: $themeColor; font-size: 30rpx;}
.btn {
border: 1px solid $themeColor;
margin-top: 20rpx;
@@ -1185,7 +1211,9 @@
}
}
}
.zhedie{
@include bov(2);
}
.nobg {
background-color: transparent !important;
}

View File

@@ -26,7 +26,7 @@
<view class="optionsBtn daikaibtn " v-show="thisClass.state == '0' ">
<view class="flex_box" >
<view class="item editClass"
@click="onPageJump('/pages/miniClass/addClass',thisClass.id, classModel.type)">
@click="goEditClass('/pages/miniClass/addClass',thisClass.id, classModel.type)">
<text>修改班级</text>
</view>
<!-- <view class="item delClass" v-if="thisClass.state == '0' && (roleCode.includes('主任') || roleCode.includes('副主任'))" @click="delClass()"> -->
@@ -672,6 +672,11 @@ import { ref, onMounted } from 'vue';
url: `${url}?id=${id}&type=${modeType}`
});
},
goEditClass(url, id, modeType){
uni.navigateTo({
url: `${url}?id=${id}&type=${modeType}&modelTitle=${this.classModel.title}`
});
},
tabClick(e) {
console.log('e', e);
this.tabId = e.id
@@ -954,6 +959,7 @@ import { ref, onMounted } from 'vue';
var off70 = undefined // 时长过70%显示结班按钮天数
off70 = Math.ceil(parseInt(this.classModel.days) * 0.7 )
var off70miniSecond = off70 * 1000*60*60*24
console.log('时间比较',(off70miniSecond + time3), nowTime)
if((off70miniSecond + time3) <= nowTime){
console.log('显示结班按钮');
this.thisClass.showOverBtn = true

View File

@@ -379,7 +379,7 @@
onPageJump(url, id, have) {
// console.log('进来了',url,id);
uni.navigateTo({
url: `${url}?id=${id}&have=${have}`
url: `${url}?id=${id}`
});
},

View File

@@ -15,6 +15,9 @@
</view>
<view :class="['leve2']">
<view class="" v-show="item.zhedie" v-html="item.questions"></view>
<view class="laiyuan" v-show="item.zhedie">
来源{{item.courseTitle}}>{{item.chapterTitle}}
</view>
<text class="btn" @click.stop="item.zhedie = false" v-show="item.zhedie">收起</text>
<text class="btn" @click.stop="item.zhedie = true" v-show="!item.zhedie">查看原题</text>
</view>
@@ -418,7 +421,7 @@
border-bottom: 1px dashed #eee;
padding-bottom: 20rpx;
margin-bottom: 20rpx;
.pp{font-size: 30rpx !important;}
.pp{font-size: 30rpx !important; @include bov(2); line-height: 50rpx;}
// .userName{}
}
@@ -427,7 +430,7 @@
justify-content: center;
color: #666;
font-size: 28rpx;
.laiyuan{font-size: 22rpx; padding: 10rpx; background-color: #eee; margin-top: 16rpx;}
.btn {
display: block;padding: 10rpx;
text-align: center;

View File

@@ -71,18 +71,19 @@
</template>
</view>
<view class="leve2">
<view class="imgBox flex_box" v-if="item.fileList.length > 0">
<view :class="['contentss',item.zhedie ? '' : 'zhedie']">
{{item.content}}
</view>
<view class="imgBox flex_box" v-if="item.fileList.length > 0 && item.zhedie">
<view class="item" v-for="(item, index) in item.fileList" :key="index">
<image @click="previewImage(item.url)" :src="item.url" mode="widthFix"></image>
</view>
</view>
<view class="">
{{item.content}}
</view>
<view class="">
<view class="btnTime" style="margin-top: 20rpx;">
<view class="date">
{{item.createTime}}
</view>
<view class="btn" @click="changeZheDie(item, index)">{{item.zhedie ? '收起' : '展开'}}</view>
</view>
</view>
@@ -351,6 +352,9 @@
},
});
},
changeZheDie(item, index){
this.zuoyeList[index].zhedie = !this.zuoyeList[index].zhedie
},
getZuoyeList() {
this.status = 1;
if (this.loadFlag) {
@@ -589,7 +593,12 @@
background-color: $themeColor;
}
}
.contentss{
}
.zhedie{
@include bov(2);
}
.anserBox {
border: 4rpx dotted #2bb447;
margin-top: 30rpx;
@@ -642,9 +651,11 @@
// .userName{}
}
.leve2{ overflow: hidden;
.imgBox{margin-top: 20rpx;}
.score{ margin-top: 20rpx;
float: left;
}
.btn{color: $themeColor;}
.date{color: #999; float: right; text-align: right; font-size: 26rpx;}
}
}

View File

@@ -12,13 +12,12 @@
<view class="taskTitle">
{{thisTask.title}}
</view>
<view :class="['taskContent']" v-html="thisTask.content">
</view>
<view class="imgBox flex_box" v-if="FileList11.length > 0">
<view class="item" v-for="(item, index) in FileList11" :key="index">
<image @click="previewImage(item.url)" :src="item.url" mode="widthFix"></image>
</view>
</view>
<view class="taskContent" v-html="thisTask.content">
</view>
<!-- <view class="editBtn" @click="goEdit" v-if="
( classState == 0 && taskType == 0 || taskType != 0) && zuoyeList.length == 0 && (roleCode.includes('1') || roleCode.includes('2'))"> -->
@@ -34,7 +33,8 @@
<view class="newBox">
<view class="item " v-for="(item, index) in zuoyeList" @click="editOrAdd(item)">
<view class="leve1 flex_box" style="justify-content: space-between;">
<view class="flex_box" style="justify-items: center;">
<view class="flex_box flex_between" style="justify-items: center; width: 100%;">
<view class="flex_box">
<view class="classmateImg">
<image v-if="item.createUser.avatar != null && item.createUser.avatar != ''"
:src="item.createUser.avatar" mode="aspectFit"></image>
@@ -46,10 +46,11 @@
<text v-else>匿名用户</text>
</view>
</view>
<view class="btn1" @click.stop="changeZheDie(item, index)">{{item.zhedie ? '收起' : '展开'}}</view>
</view>
</view>
<view class="leve2">
<view class="">
<view :class="['contentss',item.zhedie ? '' : 'zhedie']">
{{item.content}}
</view>
<view class="" style="margin-top: 20rpx;">
@@ -320,9 +321,9 @@
})
.then(res => {
if (res.code == 0) {
// that.isHave = true
// console.log(res)
this.thisTask = res.result.classTask
// this.zuoyeList = res.result.userList
// this.thisTask = taskinfo1.classTask
this.fileList11 = []
@@ -417,6 +418,9 @@
})
})
},
changeZheDie(item, index){
this.zuoyeList[index].zhedie = !this.zuoyeList[index].zhedie
},
editOrAdd(item) {
// console.log('item', item);
this.getHomeWorkDetail(item.id)
@@ -470,6 +474,7 @@
if (res.page.records.length > 0) {
var list = res.page.records
list.forEach(item => {
item.zhedie = false
item.scoreInfos = 0
item.haveGiveScore = false
item.fileList = []
@@ -481,7 +486,6 @@
})
})
}
console.log('item.scoreInfo',item.scoreInfo);
if(item.scoreInfo != ""){
var i = 0
@@ -792,11 +796,12 @@
// border-bottom: 1px solid #eee;
// border-radius: 0 !important;
.leve1 {
.leve1 { width: 100%;
align-items: center;
border-bottom: 1px dashed #eee;
padding-bottom: 20rpx;
margin-bottom: 20rpx;
.btn1{color: $themeColor; float: right;}
}
.leve2 { overflow: hidden;
@@ -805,7 +810,9 @@
}
}
}
.zhedie{
@include bov(2);
}
.taskContent {
font-size: 30rpx; line-height: 50rpx;
margin-top: 20rpx;

View File

@@ -1,7 +1,7 @@
<template>
<view style="min-height: calc(100vh - 120rpx); background-color: #ebf2f5;">
<z-nav-bar :title="pageName">
<uni-icons v-if="pageType == 1 && classState == '1' && (roleCode.includes('1') || roleCode.includes('2'))" type="plus" class="addBtn" slot="right" @click="addTask()" size="14">添加医案</uni-icons>
<uni-icons v-if="pageType == 1 && classState == '1' && (roleCode.includes('1') || roleCode.includes('2'))" type="plus" class="addBtn" color="#258feb" slot="right" @click="addTask()" size="14">添加医案</uni-icons>
</z-nav-bar>
<view class="pad20">
<view class="" v-if="pageType == 0 && classState == '0'">

View File

@@ -78,6 +78,55 @@
</view>
</view>
</view>
<!-- 可加入的班级列表 -->
<view class="" style="padding:0 5px;" v-if="classList.length > 0">
<view class="learnBox" >
<view class="flexbox flex_between">
<view class="titleBox flexbox">
<image src="../../static/class.png" mode="aspectFit"></image>
<text>班级列表</text>
</view>
<view class="moreBtn" @click="onPageJump('/pages/miniClass/allLearningClassList')">
<text>更多班级</text>
</view>
</view>
<view class="classItemBox uni-margin-wrap">
<view class="uni-margin-wrap">
<swiper class="swiper" circular :indicator-dots="false" :autoplay="true" interval="3000"
duration="500">
<swiper-item v-for="(item, index) in classList" :key="index" >
<view class="classItem flex_box" @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<view class="img" style="overflow: hidden;">
<image v-if="item.icon && item.icon != ''" :src="item.icon" mode="aspectFit"></image>
<image v-else src="@/static/my_04.png" mode="widthFix"></image>
</view>
<view class="textBox flex_box">
<view class="">
<view class="className">{{item.title}}</view>
<view class="fuzhu">目标学员人数{{item.number}}</view>
<view class="fuzhu jianjie" v-html="item.content"></view>
</view>
</view>
</view>
</swiper-item>
<!-- <swiper-item v-for="(item, index) in classList" :key="index">
<view class="classItem flex_box" @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<view class="img" style="overflow: hidden;">
<image v-if="item.icon && item.icon != ''" :src="item.icon" mode="aspectFit"></image>
<image v-else src="@/static/my_04.png" mode="widthFix"></image>
</view>
<view class="txt555">
{{item.title}}
</view>
</view>
</swiper-item> -->
</swiper>
</view>
</view>
</view>
</view>
<!-- 健康超市 -->
<view class="supermarketBox" v-if="tjProList.length > 0">
<view class="hightLightTitleBox " @click="onPageJump('/pages/course/healthMarket',2,'健康超市')">
@@ -289,6 +338,7 @@
sbuMedicalTagsList: [],
newsList: [], // 播报新闻列表
weburl: '',
classList : [],
// webviewStyles: {
// progress: true,
// width: '100%',
@@ -307,13 +357,17 @@
this.page = 1
},
//页面显示
onShow() {
async onShow() {
uni.hideTabBar();
// #ifdef APP-PLUS
plus.screen.unlockOrientation();
plus.screen.lockOrientation("portrait-primary");
// #endif
this.requestAll()
this.classList = await this.getClassNoUser()
if(this.classList.length > 6){
this.classList = this.classList.slice(0,6)
}
},
onTabItemTap() {
@@ -357,6 +411,29 @@
//方法
methods: {
...mapMutations(['setUserInfo']),
// 查询可加入的小班
async getClassNoUser(){
var _list = []
await $http.request({
url: "common/class/getClassNoUser",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(async res => {
if (res.code == 0) {
if (res.result.length > 0) {
_list = res.result
}
}
}).catch(e => {
console.log(e, '获取医学班级列表错误')
});
return _list
},
goGoodsDetail(v,isMiaosha) {
console.log(v);
uni.navigateTo({
@@ -1000,7 +1077,9 @@
font-weight: bold;
}
}
.moreBtn{
color: $themeColor; font-size: 26rpx;
}
.learnBox {
background-color: #fff;
margin-top: 10px;
@@ -1505,4 +1584,19 @@
.imgcontainer {
background-color: $imgBg;
}
.classItemBox{margin-top: 20rpx; height: 250rpx;
swiper-item{ padding: 10rpx; width: 90% !important;
.wid90{width: 90% !important;}
.classItem{border: 1px solid #eee; border-radius: 10rpx; padding: 10rpx;}
padding-right:20rpx ; box-sizing:border-box}
}
.classItem{
.className{font-weight: bold; font-size: 32rpx;}
.textBox{margin-left: 20rpx; flex: 1; align-items: center;}
.img{width: 200rpx; height: 200rpx; overflow: hidden;
imgage{
width: 100%; height: 100%;
}}
}
</style>

BIN
static/class.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -85,7 +85,7 @@ $themeBgColor: #EDF6F5 !important;
// font-weight: 600;
}
.c999{color: #999;}
.PM_font {
font-family: PangMenZhengDaoBiaoTiTiMianFeiBan;
}