This commit is contained in:
@fawn-nine
2024-08-28 17:28:14 +08:00
parent 3227a6542a
commit a4b86b0220
9 changed files with 261 additions and 125 deletions

View File

@@ -3,30 +3,41 @@
<view class="">
<view v-if="thisClass.state != 0" class="flex_box">
<view class="item" @click="goPingfen('/pages/miniClass/taskList',thisClass.id, '0')">
<view class="item" @click="goPingfen('/pages/miniClass/taskList',thisClass.id, '0')"
v-if="classModel.isTask == 1">
<view class="img">
<image src="@/static/icon/pigai2.png" mode="widthFix"></image>
</view>
<text>作业评分</text>
</view>
<view class="item" @click="goPingfen('/pages/miniClass/taskList',thisClass.id, '1')">
<view class="item" @click="goPingfen('/pages/miniClass/taskList',thisClass.id, '1')"
v-if="classModel.isMedicalcase == 1">
<view class="img">
<image src="@/static/icon/pigai1.png" mode="widthFix"></image>
</view>
<text>医案评分</text>
</view>
<view class="item" @click="goXindeList('/pages/miniClass/xindeList')">
<view class="item" @click="goXindeList('/pages/miniClass/xindeList')"
v-if="classModel.isExperience == 1">
<view class="img">
<image src="@/static/icon/pigai3.png" mode="widthFix"></image>
</view>
<text>心得评分</text>
</view>
<view class="item" @click="goSikaoList('/pages/miniClass/sikaoQuestionList', thisClass.id)">
<view class="item" @click="goSikaoList('/pages/miniClass/sikaoQuestionList', thisClass.id)"
v-if="classModel.isQuestion == 1">
<view class="img">
<image src="@/static/icon/sikaoti.png" mode="widthFix"></image>
</view>
<text>思考题评分</text>
</view>
<view class="item" @click="goSikaoList('/pages/miniClass/sikaoQuestionList', thisClass.id)"
v-if="classModel.isExam == 1 && thisClass.state == '2'">
<view class="img">
<image src="@/static/icon/teseIcon.png" mode="widthFix"></image>
</view>
<text>考试评分</text>
</view>
</view>
</view>
</view>
@@ -34,14 +45,15 @@
<script>
export default {
props:['thisClass','roleCode'],
name:"classInfoWorkBlank",
props: ['thisClass', 'roleCode', 'classModel'],
name: "classInfoWorkBlank",
data() {
return {
};
},methods:{
goAddHomeWork(type){
},
methods: {
goAddHomeWork(type) {
uni.navigateTo({
url: `/pages/miniClass/addHomeWork?classId=${this.thisClass.id}&type=${type}`
@@ -53,14 +65,14 @@
url: `${url}?classId=${classId}&type=${type}&roleCode=${this.roleCode}&classState=${this.thisClass.state}`
})
},
goSikaoList(url,id){
goSikaoList(url, id) {
uni.navigateTo({
url:`${url}?classId=${id}&roleCode=${this.roleCode}&classState=${this.thisClass.state}`
url: `${url}?classId=${id}&roleCode=${this.roleCode}&classState=${this.thisClass.state}`
})
},
goXindeList(url){
goXindeList(url) {
uni.navigateTo({
url:`${url}?classId=${this.thisClass.id}&type=2&roleCode=${this.roleCode}&classState=${this.thisClass.state}`
url: `${url}?classId=${this.thisClass.id}&type=2&roleCode=${this.roleCode}&classState=${this.thisClass.state}`
})
},
}
@@ -68,13 +80,27 @@
</script>
<style lang="scss" scoped>
.flex_box{justify-content: space-between;}
.flex_box {
justify-content: space-between;
}
// .item1{border: 1px solid;}
.fabuhomework{ margin: 20rpx 0; margin-top: -10rpx; width: 100%;
text{ display: block; text-align: center; border-radius: 10rpx; box-sizing: border-box; padding: 20rpx; color:#fff ;
.fabuhomework {
margin: 20rpx 0;
margin-top: -10rpx;
width: 100%;
text {
display: block;
text-align: center;
border-radius: 10rpx;
box-sizing: border-box;
padding: 20rpx;
color: #fff;
background-image: linear-gradient(-90deg, #576afc 0%, #97a1ff 100%);
}
}
.item {
text-align: center;

View File

@@ -82,7 +82,7 @@ import $http from '@/config/requestConfig.js';
playData: {},
//手机号账号
form: {
id: '', // 作业或者医案id
id: undefined, // 作业或者医案id
classId: undefined,
display:'1',
content: '', // 描述
@@ -131,7 +131,7 @@ import $http from '@/config/requestConfig.js';
//第一次加载
onLoad(e) {
console.log('收到的值', e);
if(e.sort != 'undefined'){
if(e.sort != 'undefined' && e.sort){
this.form.sort = e.sort
}
this.pageType = e.type
@@ -300,7 +300,7 @@ import $http from '@/config/requestConfig.js';
"title": this.form.title,
"content": this.form.content,
"img": this.form.img,
"sort": this.form.sort ? parseInt(this.form.sort)+1 : undefined
"sort": this.form.sort && !this.form.id ? parseInt(this.form.sort)+1 : undefined
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'

View File

@@ -44,19 +44,26 @@
</view>
<view class="otherItems flex_box userScore">
<view>
<view v-if="classModel.isTask == 1">
<text class="ciyao">作业得分</text>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.task0Score}}</i></text>
</view>
<view><text class="ciyao">医案得分</text>
<view v-if="classModel.isMedicalcase == 1">
<text class="ciyao">医案得分</text>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.task1Score}}</i></text>
</view>
<view><text class="ciyao">心得得分</text>
<view v-if="classModel.isExperience == 1">
<text class="ciyao">心得得分</text>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.experienceScore}}</i></text>
</view>
<view><text class="ciyao">思考题分</text>
<view v-if="classModel.isQuestion == 1">
<text class="ciyao">思考题分</text>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text>
</view>
<!-- <view v-if="classModel.isExam == 1 && thisClass.state == '2'">
<text class="ciyao">考试分</text>
<text class="ciyao"><i class="mainTxt PM_font">{{performanceScore.questionScore}}</i></text>
</view> -->
</view>
<!-- <view class="optionsBox" >
<view class="flex_box flex_between">
@@ -149,15 +156,16 @@
<view class="" v-show="students.length == 0 && tabId == '2'">
<u-divider text="暂无学员加入"></u-divider>
</view>
{{getTijiaoTitleList}}
<!-- 班内提交 -->
<view class="" v-if=" tabId == '3' && thisClass.state != '0'">
<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 == '1'">
<view class="" v-if="tijiaoTitleId == 2 && thisClass.state == '1' && roleCode.includes('0')">
<view class="noanser">
<view class="">
<text>快来添加一条记录吧~</text>
@@ -207,12 +215,14 @@
v-show="tijiaoTitleId == 2 && myExperience == 1 && item.scoreSuccess == 0"
@click.stop="editMyXinde(item)">修改</text>
</view>
<template v-if="roleCode.includes('0')">
<view class="leve3" v-show="item.reply && tijiaoTitleId != 2">
<text>已提交答案</text>
</view>
<view class="leve3 no" v-show="!item.reply && tijiaoTitleId != 2">
<text>未提交答案 点击开始答题</text>
</view>
</template>
</view>
</view>
</view>
@@ -239,7 +249,7 @@
<text class="adminName">班长</text>
<view class="personbox" v-if="admins.monitor.user != null">
<text>{{admins.monitor.user.nickname != null && admins.monitor.user.nickname != '' ? admins.monitor.user.nickname : '匿名用户'}}</text>
<text v-if="admins.monitor.id">({{admins.monitor.user.tel}})</text>
<!-- <text v-if="admins.monitor.id">({{admins.monitor.user.tel}})</text> -->
</view>
<text v-else>暂未设置</text>
</view>
@@ -247,8 +257,8 @@
<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.tel}})</text>
<!-- <text>({{admins.dmonitor.user.tel}})</text> -->
</view>
<text v-else>暂未设置</text>
</view>
@@ -256,7 +266,7 @@
<view class="personbox" v-if="admins.learner.user != null">
<text>{{admins.learner.user.nickname != null && admins.learner.user.nickname != '' ? admins.learner.user.nickname : '匿名用户'}}</text>
<text>({{admins.learner.user.tel}})</text>
<!-- <text>({{admins.learner.user.tel}})</text> -->
</view>
<text v-else>暂未设置</text>
</view>
@@ -275,8 +285,8 @@
<template v-if="admins.scorer.length > 0">
<view class="arryItemSub" v-for="(item,index) in admins.scorer" :key="index">
<template v-if="item.user != null">
<text>{{item.user.nickname != null && item.user.nickname != '' ? item.user.nickname : '匿名用户'}}</text>
<text>({{item.user.tel}}),</text>
<text>{{item.user.nickname != null && item.user.nickname != '' ? item.user.nickname+' ' : '匿名用户 '}}</text>
<!-- <text>({{item.user.tel}}),</text> -->
</template>
</view>
</template>
@@ -326,7 +336,7 @@
thisClass: {},
students: [],
tabId: '3',
tabId:'3',
curTagIndex: 0,
scrollable: false,
pPage: 0,
@@ -387,7 +397,8 @@
isDirector: false, // 是主任
isHave: false,
showMan: false,
tijiaoTitleList: [{
tijiaoTitleList:[],
defaultTijiaoTitleList: [{
name: '班内作业',
id: '0'
},
@@ -409,12 +420,14 @@
experienceScore: 0,
task0Score: 0,
questionScore: 0
}
},
roleCode:[]
}
},
onLoad(e) {
uni.hideTabBar();
this.classId = e.id
this.getUserInfo()
uni.$on('refreshData', () => {
console.log('开始刷新列表数据');
@@ -445,6 +458,15 @@
onShow() {
this.getClassInfo()
this.getScore()
// this.getTijiaoTitleList()
if (this.thisClass.state != 0) {
this.pPage = 0
this.taskList = []
this.getList()
}
// this.pPage = 0
// this.taskList = []
// this.getList()
},
computed: {
...mapState(["userInfo"]),
@@ -472,6 +494,23 @@
}
return list
},
// 获得提交项目的tab
getTijiaoTitleList(){
var _list = []
if(this.classModel.isTask == 1){
_list.push(this.defaultTijiaoTitleList[0])
}
if(this.classModel.isMedicalcase == 1){
_list.push(this.defaultTijiaoTitleList[1])
}
if(this.classModel.isExperience == 1){
_list.push(this.defaultTijiaoTitleList[2])
}
// return _list
this.tijiaoTitleList = _list
this.tijiaoTitleId = this.tijiaoTitleList[0].id
// this.tabId =
},
},
methods: {
@@ -482,6 +521,32 @@
this.taskList[index].zhedie = !this.taskList[index].zhedie
},
// 获取用户身份
getUserRole(){
$http.request({
url: "common/class/getUserRole",
method: "POST",
data: {
"classId": this.classId
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then((res) => {
uni.hideLoading()
console.log('res获取身份信息',res);
this.roleCode = res.result
}).catch(e => {
uni.hideLoading()
this.roleCode = []
uni.showToast({
title: '获取身份信息失败',
icon: 'error'
})
});
},
// 查询平时表现分
getScore() {
$http.request({
@@ -648,8 +713,8 @@
if (this.tijiaoTitleId == textIndex) {
return
}
this.tijiaoTitleId = textIndex
console.log('e班内提交子按钮');
this.tijiaoTitleId = item.id
console.log('e班内提交子按钮',this.tijiaoTitleId);
this.pPage = 0
this.taskList = []
this.myExperience = 0
@@ -841,13 +906,9 @@
let that = this
var _useId = undefined
var _txt = ''
// if (userId) {
// _useId = userId
// _txt = '即将踢出该学员,是否继续?'
// } else {
_useId = this.userInfo.id
_txt = '您即将退出当前班级,退出班级后,在本班级提交的作业、医案、心得都将被删除,是否继续?'
// }
uni.showModal({
title: '提示',
@@ -897,7 +958,7 @@
clickHelp() {
uni.showModal({
title: '说明',
content: "表现分占最终总成绩的40%,由作业,医案,心得,思考题四部分构成每部分各占四分之一且每部分最高为10分总计40分。",
content: `表现分由${this.classModel.isTask == 1 ? '作业('+this.classModel.taskScore+'%)' : ''}${this.classModel.isMedicalcase == 1 ? '医案('+this.classModel.medicalcaseScore+'%)' : ''}${this.classModel.isExperience == 1 ? '心得('+this.classModel.experienceScore+'%)' : ''} ${this.classModel.isQuestion == 1 ? '思考题('+this.classModel.questionScore+'%)' : ''}构成。`,
showCancel: false,
confirmText: '好的'
})
@@ -964,9 +1025,7 @@
this.courses = res.result.courses
this.students = res.result.students
this.refresh = true
if (this.thisClass.state != 0) {
this.getList()
}
}
uni.hideLoading()
}).catch(e => {
@@ -1452,7 +1511,7 @@
}
.tijiaoTitle {
justify-content: space-between;
justify-content:space-around;
margin-bottom: 20rpx;
text {

View File

@@ -53,9 +53,9 @@
</view>
<!-- 待开班班长 -->
<view class="stepBox" v-if="thisClass.state == '0' && (roleCode.includes('1') || roleCode.includes('2'))">
<h3 class="PM_font threeStepTitle">3步操作快速开班</h3>
<h3 class="PM_font threeStepTitle">快速开班流程</h3>
<view class="flex_box item">
<i class="PM_font stepItem">1.</i>
<!-- <i class="PM_font stepItem">1.</i> -->
<view class="textBox">
<text class="PM_font">设置班委</text><br/>
<span>开班之前需要完成副班长学委评分员的任命</span>
@@ -70,8 +70,8 @@
</view>
</view>
</view>
<view class="flex_box item">
<i class="PM_font stepItem">2.</i>
<view class="flex_box item" v-if="classModel.isTask == 1">
<!-- <i class="PM_font stepItem">2.</i> -->
<view class="textBox">
<text class="PM_font">作业设置</text><br/>
<span>根据教学时长,至少发布{{thisClass.homeWorkNumber}}条作业</span>
@@ -88,7 +88,7 @@
</view>
</view>
<view class="flex_box item">
<i class="PM_font stepItem">3.</i>
<!-- <i class="PM_font stepItem">3.</i> -->
<view class="textBox">
<text class="PM_font">招收学员</text><br/>
<span>班级内学员人满后可开班</span>
@@ -104,10 +104,10 @@
</view>
</view>
<view class="flex_box" v-if="thisClass.state == '1'">
<view class="item fabuhomework" @click="goTaskListForWait('0')" v-if="thisClass.state == '1'">
<view class="item fabuhomework" @click="goTaskListForWait('0')" v-if="thisClass.state == '1' && classModel.isTask == 1">
<text>作业列表</text>
</view>
<view class="item yianList" @click="goTaskListForWait('1')" v-if="thisClass.state == '1'">
<view class="item yianList" @click="goTaskListForWait('1')" v-if="thisClass.state == '1' && classModel.isMedicalcase == 1">
<text>医案列表</text>
</view>
<view class="item setBanewei" v-if="thisClass.state != '2'"
@@ -124,7 +124,7 @@
</view>
<!-- 作业批改 -->
<class-infoWork-blank v-if="thisClass.state != '0'" :thisClass="thisClass" :roleCode="roleCode"></class-infoWork-blank>
<class-infoWork-blank v-if="thisClass.state != '0'" :thisClass="thisClass" :classModel="classModel" :roleCode="roleCode"></class-infoWork-blank>
</view>
<view class="mainBox">
<view class="">
@@ -135,6 +135,20 @@
<!-- 学员列表 -->
<view class="" v-if="tabId == '2'">
<view class="classMateBox" v-show="students.length> 0 ">
<view class="flex_box tips">
<view class="item flex_box">
<span class=""></span><text>普通用户</text>
</view>
<view class="item flex_box">
<span class="superVip"></span><text>超级VIP</text>
</view>
<view class="item flex_box">
<span class="wumenVip"></span><text>医学VIP</text>
</view>
<view class="item flex_box">
<span class="zmVip"></span><text>国学VIP</text>
</view>
</view>
<uni-section class="mb-10 nobg xueyuanTitle" title="班内学员" type="line" sub-title=""> {{students.length}} 名学员</uni-section>
<view class="newBox" >
<view
@@ -784,7 +798,7 @@ import { ref, onMounted } from 'vue';
let that = this
if (statusCode == '1') {
console.log('this.admins',this.admins);
if(this.homeWorkList.length == 0){
if(this.homeWorkList.length == 0 && this.classModel.isTask == 1){
uni.showToast({
title: '开班前请发布班内作业,开班后将不可添加和更改',
icon: 'none',
@@ -792,19 +806,7 @@ import { ref, onMounted } from 'vue';
})
return
}
if (this.students.length < this.thisClass.number) {
uni.showModal({
title: "提示",
content:'班内成员还没有招满,确定开班操作吗?',
success(res) {
if (res.confirm) {
that.opClass(statusCode)
}else{
return
}
},
})
}
}else if(statusCode == '2'){
var nowTime = Date.now()
var datecc = new Date(this.thisClass.endTime);
@@ -850,7 +852,7 @@ import { ref, onMounted } from 'vue';
title: '操作成功',
icon: 'success'
})
setTimeout(() => {
setTimeout( () => {
this.getClassInfo()
}, 500)
}else{
@@ -905,7 +907,7 @@ import { ref, onMounted } from 'vue';
icon: 'success'
})
setTimeout(() => {
this.getClassInfo()
that.getClassInfo()
}, 2000)
}
}).catch(e => {
@@ -1128,6 +1130,14 @@ import { ref, onMounted } from 'vue';
background-image: linear-gradient(-90deg, #258feb 0%, rgba(255, 255, 255, 0.1) 80%, rgba(255, 255, 255, 0) 100%);
}
.tips{
padding:20rpx 10rpx ; background-color: #eee; border-radius: 10rpx;
font-size: 24rpx; color: #666; margin: 20rpx 0; margin-bottom: 30rpx;
.item{align-items: center;}
span{display: inline-block; margin-right: 10rpx; border-radius: 4rpx;; width: 30rpx; height: 30rpx; background-color: #fff; border: 1px solid #999;}
}
.daikaibtn{
.item{ padding: 10rpx 6rpx;}
}

View File

@@ -201,6 +201,7 @@
</view>
</uni-forms>
<view class="btn_box"><button @click="onSubmit"> </button></view>
<u-popup v-if="MemberAdd" key="1" :show="MemberAdd" :round="10" @close="closePup">
<view style="padding: 40rpx;" class="flex_box box6">
<view class="" style="width: 100%; text-align: center;">
@@ -560,13 +561,19 @@
if (!this.form.scorer[0] && !this.form.scorer[1] && !this.form.scorer[2]) {
newScorer = []
} else {
// console.log('删除之前newScorer', newScorer);
console.log('删除之前newScorer', newScorer);
var _scorerList = []
this.form.scorer.forEach((item, index) => {
console.log('item', item);
if (!item) {
newScorer.splice(1,1)
// if (!item) {
// newScorer.splice(1,1)
// }
if (item && item != null) {
_scorerList.push(item)
}
})
newScorer = _scorerList
console.log('处理后的newScorer', newScorer);
newScorer = newScorer.map(item => {
return item.id
})

View File

@@ -22,7 +22,7 @@
</view>
</view>
<!-- 还没提交提示 -->
<view class="noanser" v-show="!thisTask.reply && classState == '1'">
<view class="noanser" v-show="!thisTask.reply && classState == '1' && roleCode.includes('0')">
<view class="">
<text>还没有提交你的答案呢现在开始作答吧</text>
</view>
@@ -184,7 +184,8 @@
},
listDisplay: '1', // 提交记录展示类型 0 全部 1 自己的
classState:undefined
classState:undefined,
roleCode:[]
}
},
onLoad(e) {
@@ -228,6 +229,32 @@
...mapState(["userInfo"]),
},
methods: {
// 获取用户身份
getUserRole(){
$http.request({
url: "common/class/getUserRole",
method: "POST",
data: {
"classId": this.thisTask.classId
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then((res) => {
uni.hideLoading()
console.log('res获取身份信息',res);
this.roleCode = res.result
}).catch(e => {
uni.hideLoading()
this.roleCode = []
uni.showToast({
title: '获取身份信息失败',
icon: 'error'
})
});
},
// 获取医案任务详情
getTaskInfo(){
$http.request({
@@ -255,6 +282,7 @@
})
}
console.log('this.fileList11',this.fileList11);
this.getUserRole()
}
}).catch(e => {
console.log(e, '数据报错')

View File

@@ -49,10 +49,18 @@
<view class="btn1" @click.stop="changeZheDie(item, index)">{{item.zhedie ? '收起' : '展开'}}</view>
</view>
</view>
<view class="leve2">
<view :class="['contentss',item.zhedie ? '' : 'zhedie']">
{{item.content}}
</view>
<view class="">
<view class="imgBox flex_box" v-if="item.fileList.length > 0">
<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>
<view class="" style="margin-top: 20rpx;">
<view class="score" v-if="item.scoreSuccess >= 2">
分数:{{item.score}}
@@ -321,9 +329,7 @@
})
.then(res => {
if (res.code == 0) {
this.thisTask = res.result.classTask
// this.zuoyeList = res.result.userList
// this.thisTask = taskinfo1.classTask
this.fileList11 = []

BIN
static/icon/teseIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB