Merge branch 'master-0726' into dev_master

This commit is contained in:
nisen
2024-08-28 14:57:01 +08:00
22 changed files with 368 additions and 143 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

View File

@@ -37,7 +37,7 @@
</div> </div>
</div> </div>
<div style="text-align: center;padding-bottom: 10px;"> <div style="text-align: center;padding-bottom: 10px;">
<el-button type="primary" @click="submitHomework()">{{records.length>0?'重新提交':'提交'}}</el-button> <el-button type="primary" :disabled="isSubmit" @click="submitHomework()">{{records.length>0?'重新提交':'提交'}}</el-button>
</div> </div>
</div> </div>
<div v-show="showRecord"><!--作业提交记录--> <div v-show="showRecord"><!--作业提交记录-->
@@ -87,10 +87,12 @@ export default {
has:true, has:true,
info:{}, info:{},
studyItemId:'', studyItemId:'',
studyItemIdOnce: '',
filePath:'', filePath:'',
answer:'', answer:'',
close:false, close:false,
records:[],//作业记录 records:[],//作业记录
isSubmit:false,
}; };
}, },
mounted() { mounted() {
@@ -134,7 +136,11 @@ export default {
} }
apiCourseStudy.myHomeworkList(params).then(rs=>{ apiCourseStudy.myHomeworkList(params).then(rs=>{
if(rs.status==200){ if(rs.status==200){
this.studyItemId = ''
this.records=rs.result; this.records=rs.result;
if(rs.result.length>0){
this.studyItemIdOnce = rs.result[rs.result.length - 1].id;
}
} }
}) })
}, },
@@ -171,9 +177,9 @@ export default {
return; return;
} }
} }
this.isSubmit = true
let pamars = { let pamars = {
studyItemId: this.studyItemId,//学习内容记录id, studyItemId: this.studyItemId || this.studyItemIdOnce,//学习内容记录id,
studyId: this.studyId,//学习id, studyId: this.studyId,//学习id,
courseId: this.content.courseId,//课程id, courseId: this.content.courseId,//课程id,
contentId: this.content.id,//内容id, contentId: this.content.id,//内容id,
@@ -185,6 +191,7 @@ export default {
score: 0 score: 0
} }
apiCourseStudy.saveHomework(pamars).then(res=>{ apiCourseStudy.saveHomework(pamars).then(res=>{
this.isSubmit = false
if(res.status==200){ if(res.status==200){
this.$message.success("作业已提交"); this.$message.success("作业已提交");
this.filePath=''; this.filePath='';
@@ -203,7 +210,7 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.homework-div { .homework-div {
border: 1px solid #dadada; border: 1px solid #dadada;
min-height: 500px; min-height: 500px;
padding: 20px; padding: 20px;
@@ -225,5 +232,5 @@ export default {
} }
} }
} }
</style> </style>

View File

@@ -1049,6 +1049,7 @@
this.cwareChange.curriculumData = deepClone(this.cware.curriculumData) this.cwareChange.curriculumData = deepClone(this.cware.curriculumData)
} }
}else if(index==2){ }else if(index==2){
this.homework.content.contentName = this.homework.info.name || '作业'
postData.content=this.homework.content; postData.content=this.homework.content;
postData.homework=this.homework.info; postData.homework=this.homework.info;
this.homeworkChange = deepClone(this.homework) this.homeworkChange = deepClone(this.homework)
@@ -1087,9 +1088,11 @@
this.exam.info.paperContent=JSON.stringify(this.exam.paperJson); this.exam.info.paperContent=JSON.stringify(this.exam.paperJson);
} }
postData.exam=this.exam.info; postData.exam=this.exam.info;
postData.content.contentName='考试';
this.examChange = deepClone(this.exam); this.examChange = deepClone(this.exam);
}else if(index==4){ }else if(index==4){
this.assess.content.content=JSON.stringify(this.assess.json); this.assess.content.content=JSON.stringify(this.assess.json);
this.assess.content.contentName='评估';
postData.content=this.assess.content; postData.content=this.assess.content;
} }

View File

@@ -6,7 +6,7 @@
<span v-else style="margin:0 10px;">{{ currentPage }} / {{ pageCount }}</span> <span v-else style="margin:0 10px;">{{ currentPage }} / {{ pageCount }}</span>
<el-button @click="nextPage('header')" :disabled="loadedRatio !== 1" icon="el-icon-arrow-right"></el-button> <el-button @click="nextPage('header')" :disabled="loadedRatio !== 1" icon="el-icon-arrow-right"></el-button>
</div> </div>
<div class="pdf-box"> <div class="pdf-box" style="max-height: 725px;">
<transition name="progress"> <transition name="progress">
<el-progress v-if="showProgress" :percentage="Math.floor(loadedRatio * 100)" :text-inside="true" :show-text="false"></el-progress> <el-progress v-if="showProgress" :percentage="Math.floor(loadedRatio * 100)" :text-inside="true" :show-text="false"></el-progress>
</transition> </transition>

View File

@@ -36,7 +36,8 @@
<el-dropdown placement="bottom" @command="handleCommand"> <el-dropdown placement="bottom" @command="handleCommand">
<span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">专区</span> <span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">专区</span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="one">BOE系列公开课</el-dropdown-item> <el-dropdown-item command="zero">热点论坛</el-dropdown-item>
<el-dropdown-item command="one" divided>BOE系列公开课</el-dropdown-item>
<el-dropdown-item command="two" divided>Grow180</el-dropdown-item> <el-dropdown-item command="two" divided>Grow180</el-dropdown-item>
<el-dropdown-item command="three" divided>管理者进阶</el-dropdown-item> <el-dropdown-item command="three" divided>管理者进阶</el-dropdown-item>
<el-dropdown-item command="four" divided>U选小课堂</el-dropdown-item> <el-dropdown-item command="four" divided>U选小课堂</el-dropdown-item>
@@ -256,6 +257,7 @@ export default {
let urlPre = window.location.protocol + "//" + window.location.host; let urlPre = window.location.protocol + "//" + window.location.host;
// process.env.VUE_APP_BOE_WEB_URL // process.env.VUE_APP_BOE_WEB_URL
let obj = { let obj = {
zero: urlPre + "/pc/hotforum",
one: urlPre + "/web/teacherLesson", one: urlPre + "/web/teacherLesson",
two: urlPre + "/grow180/login", two: urlPre + "/grow180/login",
three: this.webBaseUrl + "/study/index?study=1", three: this.webBaseUrl + "/study/index?study=1",

View File

@@ -95,9 +95,9 @@
<el-col :offset="12" :span="4"> <el-col :offset="12" :span="4">
<div class="grid-content bg-purple"> <div class="grid-content bg-purple">
<el-select v-model="learningRecords.status" clearable placeholder="状态"> <el-select v-model="learningRecords.status" clearable placeholder="状态">
<el-option label="已完成" :value="9"></el-option>
<el-option label="未开始" :value="1"></el-option> <el-option label="未开始" :value="1"></el-option>
<el-option label="进行中" :value="8"></el-option> <el-option label="进行中" :value="2"></el-option>
<el-option label="已完成" :value="9"></el-option>
</el-select> </el-select>
</div> </div>
</el-col> </el-col>
@@ -285,12 +285,12 @@
<el-form-item label="状态:"> <el-form-item label="状态:">
<el-select v-model="learningSituation.status" clearable placeholder="状态"> <el-select v-model="learningSituation.status" clearable placeholder="状态">
<el-option label="未开始" :value="1"></el-option> <el-option label="未开始" :value="1"></el-option>
<el-option label="已开始" :value="2"></el-option>
<el-option label="进行中" :value="3"></el-option> <el-option label="进行中" :value="3"></el-option>
<el-option label="已完成" :value="2"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="studyContentRecords">搜索</el-button> <el-button type="primary" @click="studyContentRecordsSearch">搜索</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table max-height="500" border :data="learningSituation.list" style="width: 100%"> <el-table max-height="500" border :data="learningSituation.list" style="width: 100%">
@@ -344,6 +344,10 @@ export default {
manageStudyData: { manageStudyData: {
type: Object, type: Object,
default: () => ({}) default: () => ({})
},
isShowDialog:{
type: Boolean,
default: false
} }
}, },
data() { data() {
@@ -372,7 +376,9 @@ export default {
pageSize: 10, // 每页多少条 pageSize: 10, // 每页多少条
count: 0, count: 0,
type: "", type: "",
list: [] list: [],
name: '',
status: '',
}, },
learningRecords: { learningRecords: {
pageIndex: 1, //第几页 pageIndex: 1, //第几页
@@ -409,6 +415,21 @@ export default {
this.getDetail(); this.getDetail();
} }
} }
},
'study.catalogueShow'(val){
if(!val){
this.learningSituation.status = null
this.learningSituation.name = ''
}
},
isShowDialog(val){
if(!val){
this.signup.status = null
this.signup.name = ''
this.learningRecords.status = null
this.learningRecords.name = ''
this.value = ''
}
} }
}, },
mounted() { mounted() {
@@ -480,6 +501,10 @@ export default {
} }
}); });
}, },
studyContentRecordsSearch(){
this.learningSituation.pageIndex = 1;
this.studyContentRecords()
},
// 资源里的学习详情 // 资源里的学习详情
studyContentRecords() { studyContentRecords() {
let params = { let params = {
@@ -700,7 +725,7 @@ export default {
if(type=='考试'){ if(type=='考试'){
this.typePress = true this.typePress = true
}else{ }else{
this.typePress = false this.typePress = true
} }
this.contentId = row.id; this.contentId = row.id;
this.study.catalogueShow = true; this.study.catalogueShow = true;

View File

@@ -320,6 +320,13 @@ export const constantRoutes = [{
name: 'videotest', name: 'videotest',
meta: {title: '课程视频测试', icon: 'dashboard', noCache: true, affix: true}, meta: {title: '课程视频测试', icon: 'dashboard', noCache: true, affix: true},
}, },
{
path: '/hotforum',
hidden: true,
component: (resolve) => require(['@/views/hotforum/Index'], resolve),
name: 'hotforum',
meta: {title: '热点论坛', icon: 'dashboard', noCache: true, affix: true},
},
{ {
path: '/404', path: '/404',
component: (resolve) => require(['@/views/error/404'], resolve), component: (resolve) => require(['@/views/error/404'], resolve),

View File

@@ -196,7 +196,7 @@
</el-dialog> </el-dialog>
<!--课程管理--> <!--课程管理-->
<el-dialog custom-class="g-dialog" title="课程学习管理" width="900px" :visible.sync="manageStudy.dlgShow" :close-on-click-modal="false"> <el-dialog custom-class="g-dialog" title="课程学习管理" width="900px" :visible.sync="manageStudy.dlgShow" :close-on-click-modal="false">
<manager :manageStudyData="manageStudyData"></manager> <manager :manageStudyData="manageStudyData" :isShowDialog="manageStudy.dlgShow"></manager>
<template #footer> <template #footer>
<el-button @click="manageStudy.dlgShow = false">关闭</el-button> <el-button @click="manageStudy.dlgShow = false">关闭</el-button>
</template> </template>

View File

@@ -0,0 +1,179 @@
<template>
<div class="hot">
<div>
<div class="center">
<div class="item" :style="{marginRight:(i%2==0||i==0)?'49px':'0'}" v-for="item,i in imgData" :key="i">
<img class="img" @click="goLearn(item.url)" :src="require(`../../assets/images/hotforum/${item.img}.png`)" alt="">
</div>
</div>
<div style="display: flex;justify-content: center;margin-bottom: 52px;">
<img src="../../assets/images/hotforum/foot.png" alt="">
</div>
</div>
</div>
</template>
<script>
export default {
name: "hotforum",
data() {
return {
imgData:[
{img:'01',url:'1265897142383042560'},
{img:'02',url:'1265697724606210048'},
{img:'03',url:''},
{img:'4',url:''},
],
}
},
methods: {
goLearn(item){
if(item){
// this.$router.push({path:'/course/detail',query:{id:item}})
window.open(`https://u.boe.com/pc/course/detail?id=${item}`)
}
},
},
}
</script>
<style lang="scss" scoped>
.hot{
width: 100%;
// max-width: 1920px;
min-height: 100%;
// min-height: 1373px;
background: url("../../assets/images/hotforum/back.jpg") no-repeat;
background-size: 100% 100%;
display: flex;
justify-content: center;
.center{
max-width: 1270px;
max-height: 700px;
margin-bottom: 5%;
margin-top: 22%;
display: flex;
flex-wrap: wrap;
.item{
width: 610px;
height: 330px;
background: url("../../assets/images/hotforum/border.png") no-repeat;
background-size: 100%;
padding: 14px;
padding-top: 31px;
margin-bottom: 59px;
cursor: pointer;
.img{
width: 581px;
height: 283px;
}
}
}
/* 当窗口宽度大于3068px时的样式 */
}
@media (min-width: 3000px) {
.hot{
width: 100%;
// max-width: 1920px;
min-height: 100%;
// min-height: 1373px;
background: url("../../assets/images/hotforum/back.jpg") no-repeat;
background-size: 100% 100%;
display: flex;
justify-content: center;
.center {
max-width: 2560px;
max-height: 1300px;
margin-bottom: 5%;
margin-top: 30vh;
display: flex;
flex-wrap: wrap;
.item {
width: 1220px;
height: 660px;
background: url("../../assets/images/hotforum/border.png") no-repeat;
background-size: 100%;
padding: 28px;
padding-top: 62px;
margin-bottom: 59px;
.img {
width: 100%; // 图片宽度占满item宽度
height: auto; // 自动调整高度
}
}
}
}
}
@media (min-height: 1500px) {
.hot{
width: 100%;
// max-width: 1920px;
min-height: 100%;
// min-height: 1373px;
background: url("../../assets/images/hotforum/back.jpg") no-repeat;
background-size: 100% 100%;
display: flex;
justify-content: center;
.center {
max-width: 1068px;
max-height: 580px;
margin-bottom: 5%;
margin-top: 30vh;
display: flex;
flex-wrap: wrap;
.item {
width: 500px;
height: 271px;
background: url("../../assets/images/hotforum/border.png") no-repeat;
background-size: 100%;
padding: 14px;
padding-top: 26px;
margin-bottom: 30px;
.img {
width: 100%; // 图片宽度占满item宽度
height: auto; // 自动调整高度
}
}
}
}
}
@media (min-width: 1928px) and (max-width: 3000px) {
.hot{
width: 100%;
// max-width: 1920px;
min-height: 100%;
// min-height: 1373px;
background: url("../../assets/images/hotforum/back.jpg") no-repeat;
background-size: 100% 100%;
display: flex;
justify-content: center;
.center {
max-width: 1800px;
max-height: 1100px;
margin-bottom: 5%;
margin-top: 35vh;
display: flex;
flex-wrap: wrap;
.item {
width: 860px;
height: 466px;
background: url("../../assets/images/hotforum/border.png") no-repeat;
background-size: 100%;
padding: 28px;
padding-top: 48px;
margin-bottom: 70px;
.img {
width: 100%; // 图片宽度占满item宽度
height: auto; // 自动调整高度
}
}
}
}
}
</style>

View File

@@ -369,6 +369,7 @@
}, },
data() { data() {
return { return {
tentative: false,
isContentTypeTwo: null, isContentTypeTwo: null,
isContentType: null, isContentType: null,
activeId: '', activeId: '',
@@ -658,7 +659,7 @@
}, },
//替换播放区域 //替换播放区域
changePlayRes(r,item){ changePlayRes(r,item){
this.tentative = false;
if(this.appendStudyOtherHandle!=null){ if(this.appendStudyOtherHandle!=null){
window.clearTimeout(this.appendStudyOtherHandle); window.clearTimeout(this.appendStudyOtherHandle);
} }
@@ -1454,6 +1455,7 @@
}); });
}, },
saveStudyInfo() { saveStudyInfo() {
this.tentative = true
if(this.isContentType){ if(this.isContentType){
if(this.isContentType != this.contentData.contentType){ if(this.isContentType != this.contentData.contentType){
//定时器产生的,不记录 //定时器产生的,不记录
@@ -1647,7 +1649,7 @@
finishStudyItem() { //设置完成学习的内容,针对于音视频的内容 finishStudyItem() { //设置完成学习的内容,针对于音视频的内容
if (!this.contentData.studyItemId) { if (!this.contentData.studyItemId) {
//这种可能没有不过这里也是为了万中那个1 //这种可能没有不过这里也是为了万中那个1
this.saveStudyInfo(); !this.tentative && this.saveStudyInfo();
} else { } else {
let params = { let params = {
itemId: this.contentData.studyItemId, itemId: this.contentData.studyItemId,