This commit is contained in:
@fawn-nine
2024-08-26 17:35:18 +08:00
parent 57d5beaa72
commit 4792202081
21 changed files with 726 additions and 693 deletions

View File

@@ -25,7 +25,7 @@
<view class="img">
<image src="@/static/icon/sikaoti.png" mode="widthFix"></image>
</view>
<text>思考题</text>
<text>思考题评分</text>
</view>
</view>
</view>

View File

@@ -27,15 +27,6 @@
<view style="height: 200px" v-else></view>
</view>
<!-- <common-sticky
style=""
itemStyle="width:auto; height: 80rpx;font-size:20rpx;color:#fff"
:list="ordersTabs"
label="name"
:currentCateIndex="currentCateIndex"
@handleselectCate="ordersTabCLi"
></common-sticky> -->
<scroll-view
:style="`height:calc(100% - 200px - 40rpx) ;`"
scroll-y="true"
@@ -90,141 +81,6 @@
<p class="aui-text-danger" style="text-align: center">
本课程版权归天津众妙之门科技有限公司所有翻版必究!
</p>
<!-- <view class="small_class_teaching_box" v-if="medicalCasesList.length > 0">
<view class="small_class_teaching_top">
<view class="small_class_teaching_top_left">
<image
src="@/static/icon/course_ic.png"
mode="aspectFil"
class="icon1"
></image>
<text>相关医案</text>
</view>
</view>
<view class="small_class_teaching_content"> </view>
</view>
<view
class="small_class_teaching_box related_courses_box"
v-if="relatedCoursesList.length > 0"
>
<view class="small_class_teaching_top">
<view class="small_class_teaching_top_left">
<image
src="@/static/icon/course_ic.png"
mode="aspectFil"
class="icon1"
></image>
<text>相关课程</text>
</view>
</view>
<view class="small_class_teaching_content">
<common-curriculum-list
imgUrl="url"
:isCondition="true"
:dataList="relatedCoursesList"
@hancleClick="goCourseDescription"
label="title"
>
<template slot="labelSlot" slot-scope="slotProps">
<view class="related_courses_name hidden1">{{
slotProps.row.title
}}</view>
</template>
<template slot="rightSlot" slot-scope="slotProps">
<text class="aui-text-danger">
{{ slotProps.row.courseFee }}</text
>
<view> </view>
</template>
</common-curriculum-list>
</view>
</view>
<view
class="small_class_teaching_box correlation_box"
v-for="(v, i) in correlationiList"
>
<view class="small_class_teaching_top">
<view class="small_class_teaching_top_left">
<template v-if="v.iconType == 'uni'">
<uni-icons
:type="v.icon"
:color="v.color ? v.color : '#71d5a1'"
:size="v.iconSize"
style="display: inline-block; margin-right: 10rpx"
></uni-icons>
</template>
<template v-else>
<u-icon
:name="v.icon"
:color="v.color ? v.color : '#71d5a1'"
:size="v.iconSize"
style="display: inline-block; margin-right: 10rpx"
></u-icon>
</template>
<text
:style="`color:${v.color ? v.color : '#71d5a1'}`"
class="title"
>{{ v.name }}</text
>
</view>
<view class="small_class_teaching_top_right"
><text
:style="`color:#b0b0b0`"
class="more"
@click="handleClickMore(v, i, true)"
v-show="!v.isOpen"
v-if="v.type != 'dashang'"
>查看全部</text
>
</view>
</view>
<view
:class="`small_class_teaching_content dianzan_box ${
v.isOpen ? '' : 'hidden5'
}`"
v-if="v.type == 'dianzan'"
>
{{ praise }}
</view>
<view
:class="`small_class_teaching_content dianzan_box ${
v.isOpen ? '' : 'hidden5'
}`"
v-if="v.type == 'pinglun'"
>
<view v-for="(item, index) in commentLst">
<text>{{ item.name }}:</text>
<text>{{ item.content }}</text>
</view>
</view>
<view
:class="`small_class_teaching_content dianzan_box dashang_box ${
v.isOpen ? '' : 'hidden5'
}`"
v-if="v.type == 'dashang'"
>
<rich-text :nodes="reward"></rich-text>
</view>
<view
@click="handleClickMore(v, i, false)"
class="close"
v-show="v.isOpen"
>收起
<u-icon
name="arrow-up"
color="#b0b0b0"
size="18"
style="display: inline-block; margin-left: 10rpx"
></u-icon>
</view>
</view> -->
</view>
</template>
@@ -240,15 +96,6 @@
v-show="screenLoading"
>
</view>
<!-- <u-modal
:show="show"
:title="modalInfo.title"
:content="modalInfo.content"
showCancelButton
@confirm="hancleModalConfirm"
@cancel="hancleModalCancel"
></u-modal> -->
<!-- <z-navigation></z-navigation> -->
</view>
</template>

View File

@@ -19,7 +19,7 @@
<view style="height: 200px" v-else></view>
</view>
<!-- <scroll-view :style="`height:calc(100% - 200px - 40rpx) ;`" scroll-y="true" class="scroll-Y" style="background-color: #fff"> -->
<view class="PM_font" style="padding: 20rpx; font-size: 40rpx; color: #2979ff; margin-top: 360rpx;">视频教学
<view class="PM_font" style="padding: 20rpx; font-size: 40rpx; color: #2979ff; margin-top: 400rpx;">视频教学
</view>
<view class="scroll-view-item">
<view style="padding: 20rpx; font-size: 26rpx">
@@ -65,12 +65,18 @@
<view v-if="curriculumData.questions != ''" class="">
<view class="" v-html="curriculumData.questions"></view>
<view class="haveAnswer" v-if="myAnswer.id">
<!-- 有答案
{{myAnswer}} -->
<view class="PM_font" style="padding: 20rpx; font-size: 40rpx; color: #333">我的见解
<view class="rightBtn" @click="showBlank(myAnswer)">
<!-- 有答案 -->
<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="rightBtn" @click="showBlank(myAnswer)" v-if="myAnswer.scoreSuccess == 0 && myAnswer.scoreInfo == ''">
<text>修改</text>
</view>
<view class="score" v-if="myAnswer.scoreSuccess == 0 && myAnswer.scoreInfo != ''">
<text>正在评分</text>
</view>
<view class="score" v-if="myAnswer.scoreSuccess != 0">
<text>{{myAnswer.score}}</text>
</view>
</view>
<view class="htmlText" v-html="myAnswer.content"></view>
<!-- {{myAnswer.fileList.length}} -->
@@ -79,9 +85,13 @@
<image @click="previewImage(item.url)" :src="item.url" mode="widthFix"></image>
</view>
</view>
<view class="timeInfo">
{{myAnswer.createTime}}
</view>
<view :class="['noanser', isInClass ? '' : 'lock']" v-else>
</view>
<view :class="['noanser', isInClass ? '' : 'lock']" v-else-if="classList.length > 0">
<view class="lockView flex_box">
<view class="">
<view class="">
@@ -168,6 +178,7 @@
},
data() {
return {
classList:[], // 进行中的小班
isInClass:false, // 是否加入了班级
showEditBlank: false,
answerForm: {
@@ -382,6 +393,8 @@
.then(res => {
if (res.code == 0 && res.classTaskAndQuesReply != null) {
this.myAnswer = res.classTaskAndQuesReply
// 赋值给编辑器
this.onEditorReady()
this.myAnswer.fileList = []
if (res.classTaskAndQuesReply.img != '') {
var imgList = res.classTaskAndQuesReply.img.split(',')
@@ -472,9 +485,8 @@
'common/class/editClassTaskAndQuesReply' : _url = 'common/class/addClassTaskAndQuesReply'
// this.form.id ? _url =
// 'common/class/editClassTaskReply' : _url = 'common/class/addClassTaskReply'
var data1 = {
'classId': this.answerForm.id ? undefined : this.classList[0].id,
"relationId": this.answerForm.id ? undefined : this.curriculumData.id,
"id": this.answerForm.id,
"type": this.answerForm.type, //类型0任务1课后题
@@ -787,25 +799,27 @@
// 判断用户是否加入了小班 小班列表为0 表示已经加入
getClassList(){
$http.request({
url: '/common/class/getClassByCourseIdNoUser',
url: '/common/class/getClassByUser',
method: "POST",
data: {
"courseId": this.options.courseId,
"state": "", //小班状态0待开班1已开班2完成
"type": "" // 班类型 0小班 1联合班 2精英班
// "state": "", //小班状态0待开班1已开班2完成
// "type": "" // 班类型 0小班 1联合班 2精英班
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
console.log('获取班级列表',res.result.length,this.options.courseId);
this.classList = []
console.log('获取班级列表',res.result);
if(res.code == 0){
if(res.result.length > 0){
this.isInClass = false
}else{
if(res.result.id){
this.isInClass = true
this.classList.push(res.result)
}else{
this.isInClass = false
// this.classList = []
}
}
console.log('获取班级列表++++++',this.isInClass);
@@ -988,7 +1002,7 @@
white-space: nowrap;
padding: 10rpx;
}
.timeInfo{font-size: 28rpx; color: #838383; text-align: right; margin: 16rpx 0;}
.imgBox {
flex-wrap: wrap;
@@ -1149,7 +1163,7 @@
}
}
}
.score{color: #06c;}
.rightBtn {
float: right;

View File

@@ -363,9 +363,9 @@
var _list = []
this.status = 1
// this.flag = false
uni.showLoading({
title: '正在加载'
})
// uni.showLoading({
// title: '正在加载'
// })
await $http.request({
url: "common/class/MyClassList",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
@@ -403,10 +403,10 @@
}
// this.flag = true
}
uni.hideLoading()
// uni.hideLoading()
}).catch(e => {
_list = []
uni.hideLoading()
// uni.hideLoading()
// this.flag = true
console.log(e, '数据报错')
// this.status = 3

View File

@@ -76,8 +76,17 @@
班级简介:<span style="font-weight: normal; color: #999; font-size: 26rpx;">(600字以内)</span></text>
<view class="in">
<view class="uni-textarea">
<textarea placeholder-style="font-size:26rpx" v-model="form.content" maxlength="600"
placeholder="请输入您的班级简介600字以内" />
<!-- <view class='wrapper'> -->
<view class="editor-wrapper">
<editor id="editor" class="ql-container" placeholder="请输入班级简介..."
show-img-size show-img-toolbar show-img-resize
@statuschange="onStatusChange" :read-only="readOnly"
@ready="onEditorReady">
</editor>
</view>
<!-- </view> -->
<!-- <textarea placeholder-style="font-size:26rpx" v-model="form.content" maxlength="600"
placeholder="请输入您的班级简介600字以内" /> -->
</view>
</view>
</uni-forms-item>
@@ -111,6 +120,8 @@
number: '', // 联系电话
qrcode:'' // 群二维码
},
readOnly: false,
formats: {},
telError: false,
range:[
{ value: '0', text: "普通小班",name:"普通小班"},
@@ -203,6 +214,7 @@
this.refresh = false
if (res.code == 0) {
this.form = res.result.class
this.onEditorReady()
if(this.form.icon != ''){
this.fileList1.push({url:this.form.icon})
}
@@ -223,6 +235,42 @@
})
});
},
readOnlyChange() {
this.readOnly = !this.readOnly
},
getHtml() {
return new Promise((resolve, reject) => {
this.editorCtx.getContents({
success: (res) => {
resolve(res);
},
fail: (error) => {
reject(err);
},
});
});
},
onEditorReady() {
// #ifdef APP-PLUS || MP-WEIXIN || H5
uni.createSelectorQuery().select('#editor').context((res) => {
this.editorCtx = res.context
if (this.form.content == '') return
res.context.setContents({
html: this.form.content
})
}).exec()
// #endif
},
undo() {
this.editorCtx.undo()
},
redo() {
this.editorCtx.redo()
},
onStatusChange(e) {
const formats = e.detail
this.formats = formats
},
getUserModel() {
console.log('获取用户的可添加模型列表');
$http.request({
@@ -319,8 +367,18 @@
deletePic2(event) {
this.fileList2.splice(event.index, 1)
},
onSubmit() {
this.$refs.form.validate().then(res => {
async onSubmit() {
this.$refs.form.validate().then(async res => {
let data = await this.getHtml();
var _data = data.html.replace(/<.*?>/g, "")
// if (!_data || _data == '') {
// uni.showToast({
// title: '请输入您的答案',
// icon: 'none'
// })
// return
// }
this.form.content = data.html
if (this.fileList1.length > 0) {
let _list = this.fileList1
_list = _list.map(item => item.url)

View File

@@ -131,8 +131,8 @@ import $http from '@/config/requestConfig.js';
//第一次加载
onLoad(e) {
console.log('收到的值', e);
if(e.sort){
this.form.sort = e.sort+''
if(e.sort != 'undefined'){
this.form.sort = e.sort
}
this.pageType = e.type
this.form.classId = e.classId
@@ -274,20 +274,19 @@ import $http from '@/config/requestConfig.js';
}else{
this.form.img = ''
}
var newSort = undefined
console.log('this.sort',this.form.sort);
if(this.form.sort != undefined) {
console.log('this.sort',this.form.sort);
var oldsort = this.form.sort.split('')
if(oldsort[oldsort.length-1] == '9'){
oldsort.push('0')
}else{
console.log('符合');
oldsort[oldsort.length-1] = ( parseInt(oldsort[oldsort.length-1]) + 1) + ''
}
newSort = oldsort.join('')
}
// console.log('this.sort',newSort);
// var newSort = undefined
// if(this.form.sort) {
// console.log('this.sort',this.form.sort);
// // var oldsort = this.form.sort.split('')
// if(oldsort[oldsort.length-1] == '9'){
// oldsort.push('0')
// }else{
// console.log('符合');
// oldsort[oldsort.length-1] = ( parseInt(oldsort[oldsort.length-1]) + 1) + ''
// }
// newSort = oldsort.join('')
// }
console.log('this.form',this.form);
var _url = ""
this.form.id ? _url = "common/class/editClassTask" : _url = "common/class/addClassTask"
$http.request({
@@ -301,7 +300,7 @@ import $http from '@/config/requestConfig.js';
"title": this.form.title,
"content": this.form.content,
"img": this.form.img,
"sort": newSort
"sort": this.form.sort ? parseInt(this.form.sort)+1 : undefined
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
@@ -373,7 +372,7 @@ import $http from '@/config/requestConfig.js';
// overflow: hidden;
// height: 100rpx;
padding-top: 10rpx;
margin-bottom: 20rpx;
// border-bottom: 1rpx solid #eeeeee;
align-items: center;

View File

@@ -12,13 +12,22 @@
</view>
<view class="className">
<h3>{{thisClass.title}}</h3>
<text class="tuichu" v-if="isHave && thisClass.state == 0" @click="outClass()">退出班级</text>
<text class="tuichu" v-if="thisClass.state == 0" @click="outClass()">退出班级</text>
</view>
<view class="gotoExams" v-if="thisClass.state == '2'">
<!-- <view class="gotoExams" v-if="thisClass.state == '2'">
<text>去考试</text>
</view>
</view> -->
<view class="otherItems flex_box">
<view><text class="ciyao">创建日期</text><text
<view v-if="thisClass.state == 0">
<text class="ciyao">创建日期</text><text
class="mainTxt">{{thisClass.createTime.substring(0,10)}}</text>
</view>
<view v-if="thisClass.state == 1">
<text class="ciyao">开班日期</text><text
class="mainTxt">{{thisClass.createTime.substring(0,10)}}</text>
</view>
<view v-if="thisClass.state == 2">
<text class="ciyao">结班日期</text><text
class="mainTxt">{{thisClass.createTime.substring(0,10)}}</text>
</view>
<view><text class="ciyao">班级类型</text>
@@ -26,10 +35,11 @@
<text class="mainTxt" v-if="classModel.type == '1'">联合班</text>
<text class="mainTxt" v-if="classModel.type == '2'">精英班</text>
</view>
<view><text class="ciyao">人数</text><text class="mainTxt">{{students.length}}/{{thisClass.number}}</text></view>
<view><text class="ciyao">人数</text><text
class="mainTxt">{{students.length}}/{{thisClass.number}}</text></view>
<view><text class="ciyao">管理成员</text><text class="mainTxt" @click="seeManager">点击查看</text></view>
</view>
<view class="pingfenBox" >
<view class="pingfenBox" v-if="thisClass.state != 0">
<view class="scoreTitle">
<view class="titles flex_box">
<text>表现分</text><uni-icons type="help" size="18" color="#fff" @click="clickHelp"></uni-icons>
@@ -45,9 +55,11 @@
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.task1Score}}</i></text>
</view>
<view><text class="ciyao">心得得分</text>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.experienceScore}}</i></text></view>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.experienceScore}}</i></text>
</view>
<view><text class="ciyao">思考题分</text>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text></view>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text>
</view>
</view>
</view>
<view class="mainBox">
@@ -73,7 +85,8 @@
<view class="jianjie" v-html="item.content"></view>
</view>
</view>
<view class="" v-if="classModel.days > 0" style="text-align: center; color: #999; font-size: 28rpx;">
<view class="" v-if="classModel.days > 0"
style="text-align: center; color: #999; font-size: 28rpx;">
教学时长{{classModel.days}}
</view>
</view>
@@ -100,12 +113,13 @@
<view :class="['item','flexbox']" v-for="(item, index) in students" :key="index">
<!-- <view class="imgcontainer" :style="{backgroundImage:surl(item.image)}"> -->
<view class="classmateImg">
<image v-if="item.student.avatar != null && item.student.avatar != ''" :src="item.student.avatar"
mode="aspectFit"></image>
<image v-if="item.student.avatar != null && item.student.avatar != ''"
:src="item.student.avatar" mode="aspectFit"></image>
<image v-else src="/static/icon/morenAvavter.png" mode="aspectFit"></image>
</view>
<view class="textItems flex_box">
<text class="txt555" v-if="item.student.nickname != null && item.student.nickname != ''">
<text class="txt555"
v-if="item.student.nickname != null && item.student.nickname != ''">
{{item.student.nickname}}
</text>
<text v-else>匿名用户</text>
@@ -118,14 +132,14 @@
<u-divider text="暂无学员加入"></u-divider>
</view>
<!-- 班内提交 -->
<view class="" v-if=" tabId == '3'">
<view class="" v-if=" tabId == '3' && thisClass.state != '0'">
<view class="flex_box tijiaoTitle">
<text :class="tijiaoTitleId == item.id ? 'active' :''" @click="titleClick(item,index)"
v-for="(item, index) in tijiaoTitleList" :key="index">{{item.name}}</text>
</view>
<!-- 班内任务 --><!-- 医案 --> <!-- 心得 -->
<view class="">
<view class="" v-if="tijiaoTitleId == 2 && thisClass.state != 2" >
<view class="" v-if="tijiaoTitleId == 2 && thisClass.state == '1'">
<view class="noanser">
<view class="">
<text>快来添加一条记录吧~</text>
@@ -157,7 +171,7 @@
<view class="leve2">
{{item.content}}
</view>
<view class="leve3" >
<view class="leve3">
<view class="tips flex_box">
<!-- <text>发布者{{item.createUser.nickname != null && item.createUser.nickname != '' ? item.createUser.nickname : '匿名用户'}}</text> -->
<text style="" class="date">日期{{item.createTime}}</text>
@@ -167,7 +181,9 @@
分数{{item.score}}
</view>
</view>
<text class="btn" v-show="tijiaoTitleId == 2 && myExperience == 1 && item.scoreSuccess == 0" @click.stop="editMyXinde(item)" >修改</text>
<text class="btn"
v-show="tijiaoTitleId == 2 && myExperience == 1 && item.scoreSuccess == 0"
@click.stop="editMyXinde(item)">修改</text>
</view>
<view class="leve3" v-show="item.reply && tijiaoTitleId != 2">
<text>已提交答案</text>
@@ -192,7 +208,7 @@
</view>
</view>
</view>
<view class="bottomBox" v-if="!isHave && !isDirector && !isMonitor && students.length < thisClass.number">
<view class="bottomBox" v-if=" thisClass.state == '0'&& students.length < thisClass.number">
<button type="primary" @click="addClass">一键加入班级</button>
</view>
<!-- 管理弹出 -->
@@ -210,7 +226,8 @@
<view class="item">
<text class="adminName">副班长</text>
<view class="personbox" v-if="admins.dmonitor.user != null">
<text>{{admins.dmonitor.user.nickname != null && admins.dmonitor.user.nickname != '' ? admins.dmonitor.user.nickname : '匿名用户'}}</text> -->
<text>{{admins.dmonitor.user.nickname != null && admins.dmonitor.user.nickname != '' ? admins.dmonitor.user.nickname : '匿名用户'}}</text>
-->
<text>({{admins.dmonitor.user.tel}})</text>
</view>
<text v-else>暂未设置</text>
@@ -247,7 +264,7 @@
</view>
</view>
</u-popup>
<z-navigation ></z-navigation>
<z-navigation></z-navigation>
</view>
</template>
@@ -264,8 +281,8 @@
horizontal: 'right',
vertical: 'bottom',
direction: 'vertical',
status:88,
loadFlag:false,
status: 88,
loadFlag: false,
pattern: {
color: '#7A7E83',
backgroundColor: '#fff',
@@ -292,10 +309,9 @@
tabId: '3',
curTagIndex: 0,
scrollable: false,
pPage:0,
pPage: 0,
// 已开班
tabList02: [
{
tabList02: [{
name: '班内提交',
id: '3'
},
@@ -365,10 +381,10 @@
},
],
tijiaoTitleId: '0',
taskList:[], // 任务列表
taskHaveMore:false, // 是否还有更多
myExperience:'0',
performanceScore:{
taskList: [], // 任务列表
taskHaveMore: false, // 是否还有更多
myExperience: '0',
performanceScore: {
task1Score: 0,
experienceScore: 0,
task0Score: 0,
@@ -380,12 +396,19 @@
uni.hideTabBar();
this.classId = e.id
this.getUserInfo()
uni.$on('refreshData',() => {
uni.$on('refreshData', () => {
console.log('开始刷新列表数据');
this.pPage = 0
this.taskList = []
this.getList()
})
// uni.$on('refreshUserAnswerList',() => {
// console.log('开始刷新用户提交列表');
// this.pPage = 0
// this.taskList = []
// this.getList()
// })
},
onReachBottom() {
if (this.status != 2 && this.status != 3) {
@@ -405,7 +428,7 @@
},
computed: {
...mapState(["userInfo"]),
getClassStatus(){
getClassStatus() {
var _roleName = ''
switch (this.thisClass.state) {
case '0':
@@ -419,12 +442,12 @@
break;
}
return _roleName
}
,tabList(){
},
tabList() {
var list = []
if(this.thisClass.state == 0){
if (this.thisClass.state == 0) {
list = this.tabList01
}else{
} else {
list = this.tabList02
}
return list
@@ -432,7 +455,7 @@
},
methods: {
// 查询平时表现分
getScore(){
getScore() {
$http.request({
url: "common/class/getUserScore",
method: "POST",
@@ -444,10 +467,10 @@
},
})
.then((res) => {
if(res.code == 0){
if (res.code == 0) {
this.performanceScore = res.result
console.log('this.performanceScore-------',this.performanceScore);
}else{
console.log('this.performanceScore-------', this.performanceScore);
} else {
uni.showToast({
title: '平时成绩获取失败',
icon: 'none'
@@ -460,39 +483,36 @@
})
});
},
editMyXinde(item){
editMyXinde(item) {
// var options = JSON.stringify(item)
uni.navigateTo({
url:`/pages/miniClass/addHomeWork?id=${item.id}&type=2`
url: `/pages/miniClass/addHomeWork?id=${item.id}&type=2`
})
},
radioChange1(e){
radioChange1(e) {
this.myExperience = e.detail.value
console.log('点了',this.myExperience);
console.log('点了', this.myExperience);
this.pPage = 0
this.taskList = []
this.getList()
},
goPingfen(url,classId,type){
goPingfen(url, classId, type) {
uni.navigateTo({
url:`${url}?classId=${classId}&type=${type}`
url: `${url}?classId=${classId}&type=${type}`
})
},
// 点击作业或者医案,进入详细介绍
clickTask(item){
var options = JSON.stringify(item)
if(this.tijiaoTitleId == 2){
clickTask(item) {
// var options = JSON.stringify(item)
if (this.tijiaoTitleId == 2) {
// 进入的是心得
uni.navigateTo({
url:`/pages/miniClass/xindeDetail?options=${options}`
url: `/pages/miniClass/xindeDetail?id=${item.id}`
})
return
}
console.log('this.tijiaoTitleId',this.tijiaoTitleId);
// console.log('options',options);
uni.navigateTo({
url:`/pages/miniClass/taskDetail?id=${item.id}&`
url: `/pages/miniClass/taskDetail?id=${item.id}&classState=${this.thisClass.state}`
})
},
delClass() {
@@ -532,7 +552,7 @@
}
})
},
getList(){
getList() {
console.log('进入函数了吗');
this.status = 1;
if (this.loadFlag) {
@@ -540,7 +560,7 @@
return;
}
uni.showLoading({
title:'加载中'
title: '加载中'
})
this.loadFlag = true;
this.pPage++;
@@ -549,11 +569,11 @@
"limit": 10,
"page": this.pPage,
"classId": this.thisClass.id,
"type": this.tijiaoTitleId+'', //类型 0班内任务1医案2心得
"type": this.tijiaoTitleId + '', //类型 0班内任务1医案2心得
"myExperience": this.myExperience, //0全部心得1我的心得
"title": ""
}
console.log('data',data);
console.log('data', data);
$http.request({
url: "common/class/getClassTaskListStudent",
method: "POST",
@@ -564,11 +584,11 @@
})
.then(res => {
if (res.code == 0) {
if(res.page.records.length > 0){
console.log('数据获取成功',res.page.records);
if (res.page.records.length > 0) {
console.log('数据获取成功', res.page.records);
var lis = res.page.records
this.taskList = this.taskList.concat(lis)
if(res.page.pages > 1){
if (res.page.pages > 1) {
this.taskHaveMore = true
}
if (res.page.pages > this.pPage) {
@@ -576,7 +596,7 @@
} else {
this.status = 2;
}
}else{
} else {
this.status = 3; // 暂无数据
}
this.loadFlag = false;
@@ -595,7 +615,7 @@
},
titleClick(item, textIndex) {
console.log('进来了吗');
if(this.tijiaoTitleId == textIndex){
if (this.tijiaoTitleId == textIndex) {
return
}
this.tijiaoTitleId = textIndex
@@ -623,7 +643,7 @@
// 添加心得
addXinde(url, id, modeType) {
uni.navigateTo({
url: `${url}?classId=${this.thisClass.id}&type=${modeType}`
url: `${url}?classId=${this.thisClass.id}&type=${modeType}&sort=undefined`
});
},
// 跳转
@@ -635,7 +655,7 @@
tabClick(e) {
console.log('e', e);
this.tabId = e.id
if(e.id == 3){
if (e.id == 3) {
console.log('心得');
this.getList()
}
@@ -783,7 +803,7 @@
})
});
},
taskEdit(item){
taskEdit(item) {
console.log('taskEdit'.item);
},
// 退出班级 // 踢出班级
@@ -791,13 +811,13 @@
let that = this
var _useId = undefined
var _txt = ''
if (userId) {
_useId = userId
_txt = '即将踢出该学员,是否继续?'
} else {
// if (userId) {
// _useId = userId
// _txt = '即将踢出该学员,是否继续?'
// } else {
_useId = this.userInfo.id
_txt = '您即将退出当前班级,退出班级后,在本班级提交的作业、医案、心得都将被删除,是否继续?'
}
// }
uni.showModal({
title: '提示',
@@ -844,17 +864,17 @@
}
});
},
clickHelp(){
clickHelp() {
uni.showModal({
title:'说明',
content:"表现分占最终总成绩的40%,由作业,医案,心得,思考题四部分构成每部分各占四分之一且每部分最高为10分总计40分。",
showCancel:false,
confirmText:'好的'
title: '说明',
content: "表现分占最终总成绩的40%,由作业,医案,心得,思考题四部分构成每部分各占四分之一且每部分最高为10分总计40分。",
showCancel: false,
confirmText: '好的'
})
},
showmoreTask(){
showmoreTask() {
uni.navigateTo({
url:`/pages/miniClass/classCaskList?id=${this.thisClass.id}&type=${this.tijiaoTitleId}`
url: `/pages/miniClass/classCaskList?id=${this.thisClass.id}&type=${this.tijiaoTitleId}`
})
},
getClassInfo() {
@@ -876,6 +896,11 @@
if (res.code == 0) {
this.isHave = res.result.isJoin
this.thisClass = res.result.class
if(this.thisClass.state == '0'){
this.tabId = '0'
}else{
this.tabId = '3'
}
this.admins.list = res.result.admins
this.admins.monitor = {}
this.admins.dmonitor = {}
@@ -909,7 +934,7 @@
this.courses = res.result.courses
this.students = res.result.students
this.refresh = true
if(this.thisClass.state != 0){
if (this.thisClass.state != 0) {
this.getList()
}
}
@@ -930,7 +955,13 @@
<style lang="scss" scoped>
@import "@/style/mixin.scss";
.score{color: #55aaff; font-size: 30rpx !important; font-weight: bold;}
.score {
color: #55aaff;
font-size: 30rpx !important;
font-weight: bold;
}
.flexbox {
display: flex;
}
@@ -955,29 +986,73 @@
color: #fff;
font-weight: normal;
}
.classStatus{padding: 10rpx; color: #fff;}
.daikai{background-image: linear-gradient(90deg, #258feb 0%, rgba(255, 255, 255, 0.1) 80%, rgba(255, 255, 255, 0) 100% );}
.xuexizhong{background-image: linear-gradient(90deg, #55aa00 0%, rgba(255, 255, 255, 0.1) 80%, rgba(255, 255, 255, 0) 100% );}
.yijieban{background-image: linear-gradient(90deg, #999 0%, rgba(255, 255, 255, 0.1) 80%, rgba(255, 255, 255, 0) 100% );}
.noanser{ padding: 20rpx;
.classStatus {
padding: 10rpx;
color: #fff;
}
.daikai {
background-image: linear-gradient(90deg, #258feb 0%, rgba(255, 255, 255, 0.1) 80%, rgba(255, 255, 255, 0) 100%);
}
.xuexizhong {
background-image: linear-gradient(90deg, #55aa00 0%, rgba(255, 255, 255, 0.1) 80%, rgba(255, 255, 255, 0) 100%);
}
.yijieban {
background-image: linear-gradient(90deg, #999 0%, rgba(255, 255, 255, 0.1) 80%, rgba(255, 255, 255, 0) 100%);
}
.noanser {
padding: 20rpx;
background-color: rgba(255, 255, 255, .6);
text-align: center; border-bottom: 1px solid #eee;
.btn{display: inline-block; border-radius: 20rpx ; padding: 10rpx 20rpx; background-color: $themeColor; color: #fff;}
text-align: center;
border-bottom: 1px solid #eee;
.btn {
display: inline-block;
border-radius: 20rpx;
padding: 10rpx 20rpx;
background-color: $themeColor;
color: #fff;
}
.taskEdit{color: $themeColor; display: inline-block; padding-left: 20rpx;}
.scoreTitle{text-align: center; margin-bottom: 20rpx;
.titles{display: inline-block; padding: 6rpx 20rpx; background-color: #258feb;
border-radius: 0 0 30rpx 30rpx ; color: #fff;
text{ font-size: 40rpx !important;}
}
span{display: block;}
.taskEdit {
color: $themeColor;
display: inline-block;
padding-left: 20rpx;
}
.scoreTitle {
text-align: center;
margin-bottom: 20rpx;
.titles {
display: inline-block;
padding: 6rpx 20rpx;
background-color: #258feb;
border-radius: 0 0 30rpx 30rpx;
color: #fff;
text {
font-size: 40rpx !important;
}
}
span {
display: block;
}
}
.pingfenBox {
border: 2px dotted #bed4ee;
padding: 20rpx;
background-color: #fff;
border-radius: 20rpx;
padding-top: 0;
.flex_box {
justify-content: space-between;
}
@@ -1030,10 +1105,17 @@
}
}
.showMore{ width: 100%;
text-align: center; margin: 20rpx 0;
text{color: $themeColor;}
.showMore {
width: 100%;
text-align: center;
margin: 20rpx 0;
text {
color: $themeColor;
}
}
.submitRecode {
// padding: 20rpx;
@@ -1062,22 +1144,44 @@
margin-bottom: 20rpx;
// .userName{}
}
.leve2{
.leve2 {
color: #666;
line-height: 56rpx;
@include bov(3); padding-bottom: 6rpx;
@include bov(3);
padding-bottom: 6rpx;
border-bottom: 1px dotted #eee !important;
}
.leve3{
color: $themeColor; text-align: center; padding-top: 10rpx;
.tips{
width: 100%; justify-content: space-between;font-size: 26rpx; color: #999;
.leve3 {
color: $themeColor;
text-align: center;
padding-top: 10rpx;
.tips {
width: 100%;
justify-content: space-between;
font-size: 26rpx;
color: #999;
}
.date{ }
.btn{border: 1px solid $themeColor; margin-top: 20rpx; display: inline-block; width: 50%; padding: 6rpx 0; border-radius: 10rpx;}
.date {}
.btn {
border: 1px solid $themeColor;
margin-top: 20rpx;
display: inline-block;
width: 50%;
padding: 6rpx 0;
border-radius: 10rpx;
}
}
.leve3.no {
color: #ff9277;
text-align: center;
}
.leve3.no{color: #ff9277; text-align: center;}
}
}
}
@@ -1085,8 +1189,13 @@
.nobg {
background-color: transparent !important;
}
.nopad{padding-left: 0 !important;}
.bottomBox { border-top: 1px solid #eee;
.nopad {
padding-left: 0 !important;
}
.bottomBox {
border-top: 1px solid #eee;
position: fixed;
padding: 20rpx 0;
text-align: center;
@@ -1102,29 +1211,58 @@
border-radius: 40rpx;
}
}
.userScore{ text-align: center;
.mainTxt{font-size: 50rpx; color: $themeColor; font-style: normal; padding-right: 4rpx;}
.userScore {
text-align: center;
.mainTxt {
font-size: 50rpx;
color: $themeColor;
font-style: normal;
padding-right: 4rpx;
}
.qrcode{width:100%;
image{
width: 200rpx;height: 200rpx;
}
.qrcode {
width: 100%;
image {
width: 200rpx;
height: 200rpx;
}
}
.mainContent {
color: #333;
padding: 0 20rpx;
padding-bottom:120rpx;
padding-bottom: 120rpx;
background-image: linear-gradient(30deg, #d4eaf0 0%, #d4eaf0 50%, #fdf0ed 100%);
min-height: 100vh;
}
.gotoExams{ margin: 20rpx 0; margin-top: -10rpx;
text{ display: block; text-align: center; width: 100%; border-radius: 10rpx; box-sizing: border-box; padding: 20rpx; color:#fff ;
.gotoExams {
margin: 20rpx 0;
margin-top: -10rpx;
text {
display: block;
text-align: center;
width: 100%;
border-radius: 10rpx;
box-sizing: border-box;
padding: 20rpx;
color: #fff;
background-image: linear-gradient(-90deg, #576afc 0%, #97a1ff 100%);
}
}
.classMateBox {
.newBox{justify-content: space-between; flex-wrap: wrap;}
.newBox {
justify-content: space-between;
flex-wrap: wrap;
}
.zmVip {
background-image: linear-gradient(-60deg, #53966a 0%, #e1feef 50%, #e1feef 100%);
}
@@ -1138,7 +1276,7 @@
}
.item {
width:48%;
width: 48%;
position: relative;
.textItems {
@@ -1278,6 +1416,7 @@
.tijiaoTitle {
justify-content: space-between;
margin-bottom: 20rpx;
text {
display: block;
width: 30%;

View File

@@ -8,9 +8,7 @@
<!-- <view class="" style="background-color: #f4f7ff; min-height: calc(100vh - 200rpx);"> -->
<view class="mainContent" v-if="thisClass.id">
<!-- <view class="" style="height: 40rpx;">
</view> -->
<!-- <view class="" style="height: 40rpx;"></view> -->
<view :class="['classStatus',
thisClass.state == '0' ? 'daikai' :'',
thisClass.state == '1' ? 'xuexizhong' :'',
@@ -106,14 +104,17 @@
</view>
</view>
<view class="flex_box" v-if="thisClass.state == '1'">
<view class="item fabuhomework" @click="goAddHomeWork('1')" v-if="thisClass.state == '1' && ( roleCode.includes('2') || roleCode.includes('1'))">
<text>发布医案</text>
<view class="item fabuhomework" @click="goTaskListForWait('0')" v-if="thisClass.state == '1'">
<text>作业列表</text>
</view>
<view class="item yianList" @click="goTaskListForWait('1')" v-if="thisClass.state == '1'">
<text>医案列表</text>
</view>
<view class="item setBanewei" v-if="thisClass.state != '2'"
@click="goSetAdmin('/pages/miniClass/memberSet')">
<text>设置班委</text>
</view>
<view class="item overClass" @click="opClass('2')" v-if="thisClass.state == '1' && (roleCode.includes('1') || roleCode.includes('2'))">
<view class="item overClass" @click="changeClassStatu('2')" v-if="thisClass.state == '1' && thisClass.showOverBtn && (roleCode.includes('1') || roleCode.includes('2'))">
<text>结班</text>
</view>
@@ -133,7 +134,6 @@
</view>
<!-- 学员列表 -->
<view class="" v-if="tabId == '2'">
<view class="classMateBox" v-show="students.length> 0 ">
<uni-section class="mb-10 nobg xueyuanTitle" title="班内学员" type="line" sub-title=""> {{students.length}} 名学员</uni-section>
<view class="newBox" >
@@ -155,12 +155,11 @@
<template >
<text >{{item.student.tel}}</text>
</template>
</text>
<text class="txt555" v-else>
匿名用户
</text>
<text @click.stop="outClass(item.student.id)" class="outBtn">踢出班级</text>
<text @click.stop="outClass(item.student.id)" class="outBtn" v-if="thisClass.state != '2'">踢出班级</text>
<!-- <text class="userType" v-if="item.student.vip == '1'">超级VIP用户</text>
<text class="userType" v-if="item.student.vip == '2' ">医学VIP用户</text>
<text class="userType" v-if="item.student.vip == '3' ">国学VIP用户</text> -->
@@ -175,9 +174,23 @@
</view>
<view class="" v-if="tabId == '0'">
<view class="otherItems flex_box">
<view class="itt"><text class="ciyao">创建日期</text><text
<view class="itt" v-if="thisClass.state == 0">
<text class="ciyao">创建日期</text>
<text
class="mainTxt">{{thisClass.createTime.substring(0,10)}}</text>
</view>
<view class="itt" v-if="thisClass.state == 1">
<text class="ciyao">开班日期</text>
<text
class="mainTxt">{{thisClass.startTime.substring(0,10)}}</text>
</view>
<view class="itt" v-if="thisClass.state == 2">
<text class="ciyao">结班日期</text>
<text
class="mainTxt">{{thisClass.endTime.substring(0,10)}}</text>
</view>
<view class="itt"><text class="ciyao">班级类型</text>
<text class="mainTxt" v-if="classModel.type == '0'">普通小班</text>
<text class="mainTxt" v-if="classModel.type == '1'">联合班</text>
@@ -280,6 +293,7 @@
</template>
<script>
import { ref, onMounted } from 'vue';
import classInfoWorkBlank from "@/components/classInfoWorkBlank.vue";
import $http from '@/config/requestConfig.js';
import {
@@ -481,7 +495,7 @@
},
goTaskListForWait(type){
uni.navigateTo({
url: `/pages/miniClass/taskListForWaitOpen?classId=${this.thisClass.id}&type=${type}&minNumber=${this.thisClass.homeWorkNumber}&roleCode=${this.roleCode}&classState=0`
url: `/pages/miniClass/taskListForWaitOpen?classId=${this.thisClass.id}&type=${type}&roleCode=${this.roleCode}&classState=${this.thisClass.state}`
})
},
goAddHomeWork(type){
@@ -786,9 +800,29 @@
},
})
}
}else if(statusCode == '2'){
var nowTime = Date.now()
var datecc = new Date(this.thisClass.endTime);
var time3 = datecc.getTime(); // 创建时间的时间戳 毫秒
console.log('datecc...',datecc,nowTime,time3)
if(nowTime < time3){
uni.showModal({
title: "提示",
content:'是否要提前结班?',
success(res) {
if (res.confirm) {
that.opClass(statusCode)
}else{
return
}
},
})
}else{
that.opClass(statusCode)
}
// that.opClass(statusCode)
}
},
// 班级操作
@@ -816,7 +850,7 @@
}, 500)
}else{
uni.showToast({
title: `res.msg`,
title: res.msg,
icon:'none',
duration: 300
})
@@ -836,9 +870,9 @@
if (userId) {
_useId = userId
_txt = '即将踢出该学员,是否继续?'
} else {
_useId = this.userInfo.id
_txt = '您即将退出当前班级,是否继续?'
}
else {
return
}
uni.showModal({
@@ -907,8 +941,26 @@
console.log('res--------',this.classId,res,);
this.refresh = false
if (res.code == 0) {
this.isHave = res.result.isJoin
// this.isHave = res.result.isJoin
this.thisClass = res.result.class
this.classModel = res.result.classModel
this.thisClass.showOverBtn = false
const nowTime = Date.now()
// console.log('starting timer...毫秒',nowTime)
var datecc = new Date(this.thisClass.startTime);
console.log('datecc...',datecc)
var time3 = datecc.getTime(); // 开班时间的时间戳 毫秒
console.log('time3...毫秒',time3, this.classModel.days)
var off70 = undefined // 时长过70%显示结班按钮天数
off70 = Math.ceil(parseInt(this.classModel.days) * 0.7 )
var off70miniSecond = off70 * 1000*60*60*24
if((off70miniSecond + time3) <= nowTime){
console.log('显示结班按钮');
this.thisClass.showOverBtn = true
}else{
console.log('不显示');
}
console.log('off70...天数',off70,off70miniSecond)
this.thisClass.homeWorkNumber = 4
if(res.result.classModel.days > 0){
this.thisClass.homeWorkNumber = Math.ceil(res.result.classModel.days / 7)
@@ -943,13 +995,15 @@
})
}
this.classModel = res.result.classModel
this.courses = res.result.courses
this.students = res.result.students
this.refresh = true
if(this.thisClass.state == 0){
this.homeWorkList = await this.getHomeWorkLength()
}
}
uni.hideLoading()
@@ -1096,6 +1150,7 @@
.fabuhomework{
background-color: #97a1ff;
}
.yianList{background-color: #55aa7f;}
.setBanewei {
background-color: #e7b772;
}

View File

@@ -63,7 +63,6 @@
<text class="txt555" v-else>
匿名用户
</text>
<!-- <text @click.stop="outClass(item.student.id)" class="outBtn">踢出班级</text> -->
<!-- <text class="userType" v-if="item.student.vip == '1'">超级VIP用户</text>
<text class="userType" v-if="item.student.vip == '2' ">医学VIP用户</text>
<text class="userType" v-if="item.student.vip == '3' ">国学VIP用户</text> -->
@@ -78,9 +77,22 @@
</view>
<view class="" v-if="tabId == '0'">
<view class="otherItems flex_box">
<view><text class="ciyao">创建日期</text><text
<view class="itt" v-if="thisClass.state == 0">
<text class="ciyao">创建日期</text>
<text
class="mainTxt">{{thisClass.createTime.substring(0,10)}}</text>
</view>
<view class="itt" v-if="thisClass.state == 1">
<text class="ciyao">开班日期</text>
<text
class="mainTxt">{{thisClass.startTime.substring(0,10)}}</text>
</view>
<view class="itt" v-if="thisClass.state == 2">
<text class="ciyao">结班日期</text>
<text
class="mainTxt">{{thisClass.endTime.substring(0,10)}}</text>
</view>
<view><text class="ciyao">班级类型</text>
<text class="mainTxt" v-if="classModel.type == '0'">普通小班</text>
<text class="mainTxt" v-if="classModel.type == '1'">联合班</text>
@@ -725,62 +737,6 @@
taskEdit(item) {
console.log('taskEdit'.item);
},
// 退出班级 // 踢出班级
outClass(userId) {
let that = this
var _useId = undefined
var _txt = ''
if (userId) {
_useId = userId
_txt = '即将踢出该学员,是否继续?'
} else {
_useId = this.userInfo.id
_txt = '您即将退出当前班级,是否继续?'
}
uni.showModal({
title: '提示',
content: `${_txt}`,
success: function(res) {
if (res.confirm) {
// console.log('用户点击确定');
$http.request({
url: "common/class/quitClass",
method: "POST",
data: {
"classId": that.classId,
"userId": _useId
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
if (res.code == 0) {
that.isHave = true
uni.showToast({
title: `操作成功!`,
icon: 'success'
})
setTimeout(() => {
this.getClassInfo()
}, 200)
}
}).catch(e => {
console.log(e, '数据报错')
// this.status = 3
uni.showToast({
title: `操作失败`,
icon: 'error'
})
});
} else if (res.cancel) {
console.log('用户点击取消');
return
}
}
});
},
showmoreTask() {
uni.navigateTo({
url: `/pages/miniClass/classCaskList?id=${this.thisClass.id}&type=${this.tijiaoTitleId}`

View File

@@ -8,12 +8,12 @@
<view class="containerBg">
<view class="learnBox box">
<view class="newBox">
<view class="item flexbox" v-for="(item, index) in courseList" :key="index" >
<view class="item flexbox" v-for="(item, index) in courseList" :key="index" @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<!-- <view class="imgcontainer" :style="{backgroundImage:surl(item.image)}"> -->
<view class="imgcontainer" v-if="item.icon != ''" @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<view class="imgcontainer" v-if="item.icon != ''" >
<image :src="item.icon" mode="aspectFit"></image>
</view>
<view class="imgcontainer defaultImg" v-else @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<view class="imgcontainer defaultImg" v-else >
<image src="@/static/my_04.png" mode="aspectFit"></image>
</view>
<view class="buyItems">
@@ -21,7 +21,7 @@
<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" @click="onPageJump('/pages/miniClass/classInfo',item.id)">
<text class="txt555" >
{{item.title}}
</text>
</view>
@@ -180,12 +180,17 @@
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: '加入失败',
title: e.errMsg,
icon: 'none'
})
});

View File

@@ -572,30 +572,6 @@
})
}
// if (!this.form.counter[0] && !this.form.counter[1]) {
// newCounter = [0, 0]
// } else {
// this.form.counter.forEach((item, index) => {
// if (!item || item == null) {
// newCounter[index] = {
// id: 0
// }
// // newCounter.splice(index, 1)
// }
// })
// if (newCounter[0].id == newCounter[1].id) {
// uni.showToast({
// title: '两名记分员不能是同一人',
// icon: 'none'
// })
// return
// }
// newCounter = newCounter.map(item => {
// return item.id
// })
// // console.log('删除后的newCounter',newCounter);
// }
var _url = 'common/class/setUserRole'
// this.form.classId ? _url = 'common/class/editClass' : _url = "common/class/addClass"

View File

@@ -340,9 +340,6 @@
},
curseClick(item) {
this.subTabId = item.id
// this.classList = []
// this.page = 1
// this.getData(this.subTabId);
},
async getData(state) {
// if (!this.flag) {
@@ -352,9 +349,9 @@
var _list = []
this.status = 1
// this.flag = false
uni.showLoading({
title: '正在加载'
})
// uni.showLoading({
// title: '正在加载'
// })
await $http.request({
url: "common/class/getClassByDirectorid",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
@@ -387,10 +384,10 @@
}
console.log('res.classEntityList',res.classEntityList);
}
uni.hideLoading()
// uni.hideLoading()
}).catch(e => {
_list = []
uni.hideLoading()
// uni.hideLoading()
// this.flag = true
console.log(e, '数据报错')
// this.status = 3

View File

@@ -335,9 +335,9 @@
var _list = []
this.status = 1
// this.flag = false
uni.showLoading({
title: '正在加载'
})
// uni.showLoading({
// title: '正在加载'
// })
await $http.request({
url: "common/class/MyClassList",
@@ -362,9 +362,9 @@
}
// this.flag = true
}
uni.hideLoading()
// uni.hideLoading()
}).catch(e => {
uni.hideLoading()
// uni.hideLoading()
// this.flag = true
console.log(e, '数据报错')
// this.status = 3

View File

@@ -10,7 +10,7 @@
<view class="leve1 flex_box">
<view class="pp" style="flex: 1;" v-html="item.content"></view>
<text v-if="item.scoreSuccess == '0'" class="red light"></text>
<text v-else class="score" style="padding-left: 10rpx;">{{item.score}}'</text>
<text v-else class="score" style="padding-left: 10rpx;">{{item.score}}</text>
<!-- <text v-if="" class="blue light"></text> -->
</view>
<view :class="['leve2']">
@@ -133,13 +133,13 @@
this.getList()
// this.getList()
},
onBackPress() {
if (this.showRight || this.showLeft) {
this.$refs.showLeft.close()
this.$refs.showRight.close()
return true
}
},
// onBackPress() {
// if (this.showRight || this.showLeft) {
// this.$refs.showLeft.close()
// this.$refs.showRight.close()
// return true
// }
// },
computed: {
...mapState(["userInfo"]),
},
@@ -165,7 +165,7 @@
this.curReplay = {}
},
onSubmit() {
if(!this.form.score){
if(!this.form.score && this.form.score != 0){
uni.showToast({
title:'请选择分值',
icon:'none'
@@ -389,9 +389,7 @@
/* #endif */
flex: 1
}
.light{display: block; width: 20rpx; height: 20rpx; border-radius: 50rpx;}
.red{background-color: red;}
.blue{background-color: #55aaff;}
.submitRecode {
// padding: 20rpx;

View File

@@ -22,7 +22,7 @@
</view>
</view>
<!-- 还没提交提示 -->
<view class="noanser" v-show="!thisTask.reply">
<view class="noanser" v-show="!thisTask.reply && classState == '1'">
<view class="">
<text>还没有提交你的答案呢现在开始作答吧</text>
</view>
@@ -47,7 +47,7 @@
<view class="newBox" >
<view class="item " v-for="(item, index) in zuoyeList" >
<view class="leve1 flex_box" style="justify-content: space-between;">
<view class="flex_box" style="justify-items: center;">
<view class="flex_box" style="justify-items: center; flex:1">
<view class="classmateImg">
<image v-if="item.createUser.avatar != null && item.createUser.avatar != ''" :src="item.createUser.avatar" mode="aspectFit"></image>
<image v-else src="/static/icon/morenAvavter.png" mode="aspectFit"></image>
@@ -61,6 +61,14 @@
<view class="editBtn" v-if="listDisplay == '1' && item.scoreSuccess == 0 && item.scoreInfo == ''">
<text @click="editOrAdd(item)">修改</text>
</view>
<template v-if="item.scoreInfo != '' && listDisplay == '1'">
<view class="score" v-show="item.scoreSuccess >= 2">
分数{{item.score}}
</view>
<view class="score" v-show="item.scoreSuccess < 2">
正在评分
</view>
</template>
</view>
<view class="leve2">
<view class="imgBox flex_box" v-if="item.fileList.length > 0">
@@ -72,9 +80,6 @@
{{item.content}}
</view>
<view class="">
<view class="score" v-show="listDisplay == '1' && item.scoreSuccess == 1">
分数{{item.score}}
</view>
<view class="date">
{{item.createTime}}
</view>
@@ -178,13 +183,14 @@
},
listDisplay: '1', // 提交记录展示类型 0 全部 1 自己的
classState:undefined
}
},
onLoad(e) {
uni.hideTabBar();
// this.thisTask = JSON.parse(e.options)
console.log('e',e)
this.classState = e.classState
if(e.id){
this.thisTask.id = e.id
this.getTaskInfo()
@@ -209,6 +215,14 @@
this.form.taskId = this.thisTask.id
},
// onBackPress() {
// setTimeout(()=>{
// uni.$emit('refreshData');
// uni.navigateBack({
// delta: 1
// })
// },1000)
// },
computed: {
...mapState(["userInfo"]),
},
@@ -228,7 +242,7 @@
.then(res => {
if (res.code == 0) {
// that.isHave = true
console.log(res)
console.log('学生作业详情',res)
this.thisTask = res.classTask
this.fileList11 = []
if (this.thisTask.img != '') {
@@ -365,6 +379,7 @@
if(res.page.records.length > 0){
var list = res.page.records
list.forEach(item => {
item.zhedie = false
item.fileList = []
if(item.img != ''){
var _urs = item.img.split(',')
@@ -418,7 +433,6 @@
},
onSubmit() {
this.$refs.form.validate().then(res => {
if (this.fileList1.length > 0) {
let _list = this.fileList1
_list = _list.map(item => item.url)
@@ -432,9 +446,8 @@
'common/class/editClassTaskAndQuesReply' : _url = 'common/class/addClassTaskAndQuesReply'
// this.form.id ? _url =
// 'common/class/editClassTaskReply' : _url = 'common/class/addClassTaskReply'
var data = {
'classId': this.thisTask.classId,
"relationId": this.form.id ? undefined : this.form.taskId,
"id": this.form.id,
"type": this.thisTask.type == '0' || this.thisTask.type == '1' ? '0' : '1', //类型0任务1课后题
@@ -458,6 +471,7 @@
icon: 'success'
})
this.FileList = []
this.FileList11 = []
this.closePup()
setTimeout(()=>{
this.pPage = 0
@@ -597,7 +611,7 @@
}
.nobg{background: transparent;}
.taskTitle {
font-size: 30rpx;
font-size: 36rpx;
margin: 20rpx 0;
}
.newBox {
@@ -628,7 +642,7 @@
// .userName{}
}
.leve2{ overflow: hidden;
.score{
.score{ margin-top: 20rpx;
float: left;
}
.date{color: #999; float: right; text-align: right; font-size: 26rpx;}

View File

@@ -22,10 +22,10 @@
</view>
<!-- <view class="editBtn" @click="goEdit" v-if="
( classState == 0 && taskType == 0 || taskType != 0) && zuoyeList.length == 0 && (roleCode.includes('1') || roleCode.includes('2'))"> -->
<view class="editBtn" v-if="taskType != '0' && classState == '1' && zuoyeList.length == 0 && (roleCode.includes('1') || roleCode.includes('2'))">
<!-- <view class="editBtn" v-if="taskType != '0' && classState == '1' && zuoyeList.length == 0 && (roleCode.includes('1') || roleCode.includes('2'))">
<text @click="goEdit" class="border_radius_10 small_btn edit">修改</text>
<text @click="delTask" class="border_radius_10 small_btn del">删除</text>
</view>
</view> -->
</view>
<!-- 提交记录 -->
<view>
@@ -53,7 +53,7 @@
{{item.content}}
</view>
<view class="" style="margin-top: 20rpx;">
<view class="score" v-if="item.scoreSuccess == 1">
<view class="score" v-if="item.scoreSuccess >= 2">
分数:{{item.score}}
</view>
<view class="score noscore" v-else-if="item.scoreInfo != ''">
@@ -99,9 +99,9 @@
学员信息:{{curReplay.createUser.nickname != null && curReplay.createUser.nickname != '' ? curReplay.createUser.nickname : '匿名用户'}}
/ {{curReplay.createUser.tel}}
</view>
<view class="score" v-show="curReplay.scoreSuccess != 0">
<!-- <view class="score" v-show="curReplay.scoreSuccess != 0">
分数:{{curReplay.score}}
</view>
</view> -->
<view class="score noscore" v-show="curReplay.scoreSuccess == 0">
未生成成绩
</view>
@@ -114,8 +114,9 @@
</text>
</view>
</view>
{{curReplay.haveGiveScore}}
<view class="btn_box ">
<button class="submit" @click="onSubmit">提 交</button>
<button class="submit" @click="onSubmit" v-show="!form.hasGiveScore">提 交</button>
</view>
</template>
</view>
@@ -388,6 +389,7 @@
}else{
this.curReplay.scoreInfo = {}
}
this.form.hasGiveScore = false
if(this.curReplay.scoreInfo != {}){
for (let k in this.curReplay.scoreInfo){
console.log(k)
@@ -545,7 +547,7 @@
},
onSubmit() {
// this.$refs.form.validate().then(res => {
if(!this.form.score){
if(!this.form.score && this.form.score != 0){
uni.showToast({
title:'请选择分值',
icon:'none'

View File

@@ -1,24 +1,30 @@
<template>
<view style="min-height: calc(100vh - 120rpx); background-color: #ebf2f5;">
<z-nav-bar :title="pageName"></z-nav-bar>
<view class="pad20">
<z-nav-bar :title="pageName">
</z-nav-bar>
<view class="pad20">
<view v-if="taskList.length > 0 ">
<view class="submitRecode">
<view class="newBox">
<view class="item " v-for="(item, index) in taskList" @click="clickTask(item)">
<view class="leve1 flex_box">
<text>{{item.title}}</text>
<text style="font-size: 30rpx; font-weight: blod; flex: 1;">{{item.title}}</text>
<template v-if="item.otherInfo.setNoGiveScoreNumber > 0">
<text v-if="item.otherInfo.setNoGiveScoreNumber > 0 && item.scoreSuccess <= 1" class="red light_text">{{item.otherInfo.setNoGiveScoreNumber}}</text>
<text v-if="item.otherInfo.setNoGiveScoreNumber > 0 && item.scoreSuccess >= 2" class="blue light_text">{{item.otherInfo.setNoGiveScoreNumber}}</text>
<!-- <text v-else class="score" style="padding-left: 10rpx;">{{item.score}}'</text> -->
</template>
</view>
<view class="leve2 " >
<view class="jianjie">
<view class="jianjie timeText">
发布时间:{{item.createTime}}
</view>
<view class="item flex_box" style="align-items: center;" v-if="item.otherInfo.setNoGiveScoreNumber > 0">
<!-- <view class="item flex_box" style="align-items: center;" v-if="item.otherInfo.setNoGiveScoreNumber > 0">
<view class="">
未评分 <b>{{item.otherInfo.setNoGiveScoreNumber}}</b> 人
</view>
</view>
</view> -->
</view>
</view>
</view>
@@ -81,13 +87,6 @@
this.getList()
// this.getList()
},
onBackPress() {
if (this.showRight || this.showLeft) {
this.$refs.showLeft.close()
this.$refs.showRight.close()
return true
}
},
methods: {
// 点击作业或者医案,进入作业提交情况
clickTask(item){
@@ -206,6 +205,7 @@
margin-top: 20rpx;
color: #999; font-size: 24rpx; border-top: 1px dashed #eee;
border-top: 1px dashed #eee;
.timeText{font-size: 26rpx; padding-top: 16rpx;}
b{font-size: 34rpx; padding: 0 4rpx; font-weight: normal; color: #333; color: red;}
.item{text-align: center; padding-top: 0; padding-bottom: 0; margin-bottom: 0;}
}
@@ -241,7 +241,7 @@
}
}
}
.light_text{padding: 4rpx; color: #fff; font-size: 26rpx; border-radius: 50rpx;}
// 处理抽屉内容滚动
.scroll-view-box {
flex: 1;

View File

@@ -1,10 +1,12 @@
<template>
<view style="min-height: calc(100vh - 120rpx); background-color: #ebf2f5;">
<z-nav-bar :title="pageName"></z-nav-bar>
<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>
</z-nav-bar>
<view class="pad20">
<view class="" v-if="taskList.length == 0">
<view class="" v-if="pageType == 0 && classState == '0'">
<view class="listTitle">
<text>根据教学时长,须至少发布 {{minNumber}} 条作业</text>
<!-- <text>根据教学时长,须至少发布 {{minNumber}} 条作业</text> -->
</view>
<view class="addTips border_radius_10">
<view class="" >
@@ -13,7 +15,7 @@
</view>
<view class="btnBox flex_box flex_center">
<text class="zidong border_radius_10" @click="autoCreate()">自动生成</text>
<text class="shoudong border_radius_10" @click="addTask()">手动创建</text>
<text class="shoudong border_radius_10" @click="addTask()">逐个添加</text>
</view>
</view>
</view>
@@ -25,13 +27,13 @@
<view class="item " v-for="(item, index) in taskList" @click="clickTask(item)">
<view class="leve1 flex_box flex_between">
<text style="flex: 1;">{{item.title}}</text>
<text class="edit border_radius_10 small_btn" @click.stop="goEdit(item)">修改</text>
<text class="edit border_radius_10 small_btn" @click.stop="goEdit(item)" v-if="pageType == 0 && classState == 0 || pageType == 1 && classState == 1 && item.otherInfo.setGiveHomeWorkNumber == 0">修改</text>
</view>
<view class="leve2 ">
<view class="jianjie" v-html="item.content">
</view>
</view>
<view class="leve3">
<view class="leve3" v-if="pageType == 0 && classState == 0">
<text class="border_radius_10 small_btn add" @click.stop="addTask(item)">在本条后面添加一条</text>
<text class="border_radius_10 small_btn del" @click.stop="delTask(item)">删除</text>
</view>
@@ -211,10 +213,13 @@
})
},
addTask(item){
var _sort = undefined
item ? _sort = item.sort : undefined
uni.navigateTo({
url: `/pages/miniClass/addHomeWork?classId=${this.classId}&sort=${item.sort}`
url: `/pages/miniClass/addHomeWork?classId=${this.classId}&sort=${_sort}&type=${this.pageType}`
})
},
clickHelp(){
uni.showModal({
title:'说明',
@@ -319,7 +324,7 @@
/* #endif */
flex: 1
}
.addBtn{padding-right:20rpx;}
.submitRecode {
// padding: 20rpx;
@@ -352,7 +357,7 @@
.leve2 { justify-content: center; margin-top: 20rpx;
color: #999; font-size: 24rpx;border-top: 1px dashed #eee;
.jianjie{@include bov(2)}
.jianjie{@include bov(2); margin-top: 20rpx;}
b{font-size: 34rpx; padding: 0 4rpx; font-weight: normal; color: #333; color: red;}
.item{text-align: center; padding-top: 0; padding-bottom: 0; margin-bottom: 0;}
}

View File

@@ -24,68 +24,7 @@
提交时间{{thisTask.createTime}}
</view>
</view>
<!-- 提交记录 -->
<view v-show="thisTask.reply">
<uni-section class="mb-10 nobg" title="提交记录" type="line"></uni-section>
<view class="">
<radio-group @change="radioChange1" class="flex_box">
<view class="" style="margin-right:20rpx ;">
<radio value="0" />全部同学的提交</label>
</view>
<view class="">
<radio value="1" checked="true" />只看我自己提交的</label>
</view>
</radio-group>
</view>
</view>
</view>
<u-popup key="1" :show="showEditBlank" :round="10" @close="closePup" ref="">
<view class="" style="padding: 40rpx; max-height: 80vh; overflow-y:scroll">
<view class="anserBox" >
<h3>我的答案</h3>
<uni-forms :modelValue="form" :rules="rules" ref="form">
<view class="input_box">
<uni-forms-item label="" name="content" label-width="0">
<text class="input_tit"><i>*</i>内容:<span
style="font-weight: normal; color: #999; font-size: 26rpx;">(600字以内)</span></text>
<view class="in">
<view class="uni-textarea">
<textarea placeholder-style="font-size:26rpx" v-model="form.content" maxlength="600"
auto-height placeholder="请输入内容" />
</view>
</view>
</uni-forms-item>
</view>
<view class="input_box">
<text class="input_tit">上传图片:</text>
<view class="in" style="border: none;" @click="checkPermision">
<u-upload :fileList="fileList1" @afterRead="addPic" @delete="deletePic" multiple
:maxCount="4" width="40" height="40" :previewFullImage="true">
</u-upload>
<!-- <text style="font-size: 24rpx; color: #999;">可上传4张问题截图</text> -->
</view>
<!-- <input type="password" maxlength="8" v-model="confirmPassword" placeholder="请确认密码" /> -->
</view>
<view class="input_box">
<radio-group @change="radioChange" class="flex_box">
<view class="" style="margin-right:20rpx ;">
<radio value="0" :checked="0 == form.display" />他人不可见</label>
</view>
<view class="">
<radio value="1" :checked="1 == form.display" />他人可见</label>
</view>
</radio-group>
<span
style="color: #999; font-size: 28rpx; margin-top: 20rpx; display: block;">不勾选时班级管理员以外的人看不见提交的内容</span>
</view>
</uni-forms>
<view class="btn_box"><button @click="onSubmit"> </button></view>
</view>
</view>
</u-popup>
<z-navigation></z-navigation>
</view>
</template>
@@ -127,26 +66,16 @@
},
listDisplay: '1', // 提交记录展示类型 0 全部 1 自己的
}
},
onLoad(e) {
uni.hideTabBar();
this.thisTask = JSON.parse(e.options)
this.TaskId = e.id
// this.thisTask = JSON.parse(e.options)
console.log('e', this.thisTask)
this.classState = e.classState
if (this.thisTask.img != '') {
var imgs = this.thisTask.img.split(',')
imgs = imgs.forEach((item, index) => {
this.FileList11.push({
url: item
})
})
} else {
this.FileList11 = []
}
console.log('this.FileList', this.FileList)
// this.TaskId = e.id
this.getTask()
this.getUserInfo()
this.getZuoyeList()
},
@@ -168,6 +97,42 @@
...mapState(["userInfo"]),
},
methods: {
getTask(){
$http.request({
url: "common/class/getClassTaskInfo",
method: "POST",
data: {
"taskId": this.TaskId
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
if (res.code == 0) {
this.thisTask = res.result.classTask
this.FileList11 = []
if (this.thisTask.img != '') {
var imgs = this.thisTask.img.split(',')
imgs = imgs.forEach((item, index) => {
this.FileList11.push({
url: item
})
})
} else {
this.FileList11 = []
}
console.log('thisTask', this.thisTask);
}
}).catch(e => {
console.log(e, '数据报错')
// this.status = 3
uni.showToast({
title: e.msg,
icon: 'error'
})
});
},
closePup(){
this.showEditBlank = false
this.form = {
@@ -497,7 +462,7 @@
}
.nobg{background: transparent;}
.taskTitle {
font-size: 30rpx;
font-size: 36rpx;
margin: 20rpx 0;
}
.newBox {

View File

@@ -147,8 +147,8 @@
// this.ispreviewImage = false
// }
},
onBackPress() {
},
// onBackPress() {
// },
methods: {
setScore(val){
// if(this.form.score == val) return
@@ -156,7 +156,7 @@
},
onSubmit() {
// this.$refs.form.validate().then(res => {
if(!this.form.score){
if(!this.form.score && this.form.score != 0){
uni.showToast({
title:'请选择分值',
icon:'none'

View File

@@ -89,6 +89,9 @@ $themeBgColor: #EDF6F5 !important;
.PM_font {
font-family: PangMenZhengDaoBiaoTiTiMianFeiBan;
}
.light{display: block; width: 20rpx; height: 20rpx; border-radius: 50rpx;}
.red{background-color: red;}
.blue{background-color: #55aaff;}
.nobg{background-color: transparent !important;}
.border_radius_10{
border-radius: 10rpx;