|
@@ -103,7 +103,7 @@
|
|
|
style="padding: 0 0 8px 0"
|
|
style="padding: 0 0 8px 0"
|
|
|
>
|
|
>
|
|
|
<div>
|
|
<div>
|
|
|
- <span>随机码:{{ inviteCode }}</span>
|
|
|
|
|
|
|
+ <span>识别码:{{ inviteCode }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -227,6 +227,7 @@
|
|
|
<div v-if="t.tool == 62">交互视频</div>
|
|
<div v-if="t.tool == 62">交互视频</div>
|
|
|
<div v-if="t.tool == 71">AI智能体</div>
|
|
<div v-if="t.tool == 71">AI智能体</div>
|
|
|
<div v-if="t.tool == 72">应用中心</div>
|
|
<div v-if="t.tool == 72">应用中心</div>
|
|
|
|
|
+ <div v-if="t.tool == 73">PPT</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -521,6 +522,7 @@
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
"
|
|
"
|
|
|
|
|
+ class="renderedFor"
|
|
|
>
|
|
>
|
|
|
<div
|
|
<div
|
|
|
style="
|
|
style="
|
|
@@ -568,12 +570,12 @@
|
|
|
style="height: 650px; width: calc(100% - 50px)"
|
|
style="height: 650px; width: calc(100% - 50px)"
|
|
|
>
|
|
>
|
|
|
<video-player
|
|
<video-player
|
|
|
- class="video-player vjs-custom-skin"
|
|
|
|
|
|
|
+ class="video-player vjs-custom-skin notop"
|
|
|
:class="contentDialog == false ? 'isAllWidth' : ''"
|
|
:class="contentDialog == false ? 'isAllWidth' : ''"
|
|
|
:playsinline="true"
|
|
:playsinline="true"
|
|
|
:options="playerO[0]"
|
|
:options="playerO[0]"
|
|
|
@play="onPlayerPlay($event)"
|
|
@play="onPlayerPlay($event)"
|
|
|
- style="width: 100%; height: 100%; margin: 0 0 0 30px"
|
|
|
|
|
|
|
+ style="width: 100%; height: 650px; margin: 0 0 0 30px"
|
|
|
></video-player>
|
|
></video-player>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -730,12 +732,12 @@
|
|
|
<span v-if="vitem.text">{{ vitem.text }}-</span
|
|
<span v-if="vitem.text">{{ vitem.text }}-</span
|
|
|
>{{ vitem.name }}
|
|
>{{ vitem.name }}
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
|
|
|
|
+ <!-- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
<img
|
|
<img
|
|
|
src="../../assets/icon/newIcon/down.png"
|
|
src="../../assets/icon/newIcon/down.png"
|
|
|
alt
|
|
alt
|
|
|
/>
|
|
/>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
<div class="navListItem" v-if="vitem.type == 6">
|
|
<div class="navListItem" v-if="vitem.type == 6">
|
|
|
<div
|
|
<div
|
|
@@ -794,12 +796,12 @@
|
|
|
alt
|
|
alt
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
|
|
|
|
+ <!-- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
<img
|
|
<img
|
|
|
src="../../assets/icon/newIcon/down.png"
|
|
src="../../assets/icon/newIcon/down.png"
|
|
|
alt
|
|
alt
|
|
|
/>
|
|
/>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
<div class="navListItem" v-if="vitem.type == 12">
|
|
<div class="navListItem" v-if="vitem.type == 12">
|
|
|
<div class="navText" @click="downloadFile2(vitem)">
|
|
<div class="navText" @click="downloadFile2(vitem)">
|
|
@@ -815,12 +817,12 @@
|
|
|
alt
|
|
alt
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
|
|
|
|
+ <!-- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
<img
|
|
<img
|
|
|
src="../../assets/icon/newIcon/down.png"
|
|
src="../../assets/icon/newIcon/down.png"
|
|
|
alt
|
|
alt
|
|
|
/>
|
|
/>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
<div class="navListItem" v-if="vitem.type == 13">
|
|
<div class="navListItem" v-if="vitem.type == 13">
|
|
|
<div
|
|
<div
|
|
@@ -830,12 +832,12 @@
|
|
|
>
|
|
>
|
|
|
{{ vitem.name }}
|
|
{{ vitem.name }}
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
|
|
|
|
+ <!-- <div class="downIcon" @click="downloadFile2(vitem)">
|
|
|
<img
|
|
<img
|
|
|
src="../../assets/icon/newIcon/down.png"
|
|
src="../../assets/icon/newIcon/down.png"
|
|
|
alt
|
|
alt
|
|
|
/>
|
|
/>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
<div class="navListItem" v-if="vitem.type == 16">
|
|
<div class="navListItem" v-if="vitem.type == 16">
|
|
|
<div
|
|
<div
|
|
@@ -855,6 +857,24 @@
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div class="navListItem" v-if="vitem.type == 17">
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="navText"
|
|
|
|
|
+ @click="checkHtml(vitem, vindex)"
|
|
|
|
|
+ :class="isClickNav == vindex ? 'isClickNav' : ''"
|
|
|
|
|
+ >
|
|
|
|
|
+ {{ vitem.name }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="downIcon"
|
|
|
|
|
+ @click="checkFileFull1(vitem.type, vitem)"
|
|
|
|
|
+ >
|
|
|
|
|
+ <img
|
|
|
|
|
+ src="../../assets/icon/newIcon/allScreen.png"
|
|
|
|
|
+ alt
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="fileC_box" v-if="fileC[0].length > 0">
|
|
<div class="fileC_box" v-if="fileC[0].length > 0">
|
|
|
<div class="fileC_title">以下文件不支持预览</div>
|
|
<div class="fileC_title">以下文件不支持预览</div>
|
|
@@ -868,7 +888,7 @@
|
|
|
<span v-if="vitem.text">{{ vitem.text }}-</span
|
|
<span v-if="vitem.text">{{ vitem.text }}-</span
|
|
|
>{{ vitem.name }}
|
|
>{{ vitem.name }}
|
|
|
</div>
|
|
</div>
|
|
|
- <div
|
|
|
|
|
|
|
+ <!-- <div
|
|
|
class="downIcon"
|
|
class="downIcon"
|
|
|
@click="downloadFile2(vitem)"
|
|
@click="downloadFile2(vitem)"
|
|
|
>
|
|
>
|
|
@@ -876,7 +896,7 @@
|
|
|
src="../../assets/icon/newIcon/down.png"
|
|
src="../../assets/icon/newIcon/down.png"
|
|
|
alt
|
|
alt
|
|
|
/>
|
|
/>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -1480,6 +1500,14 @@
|
|
|
分析
|
|
分析
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div v-if="tooC == 73">
|
|
|
|
|
+ <img
|
|
|
|
|
+ src="../../assets/icon/secondToolList/ppt.png"
|
|
|
|
|
+ alt
|
|
|
|
|
+ @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,73)"
|
|
|
|
|
+ />
|
|
|
|
|
+ <div style="margin: 5px 0">PPT</div>
|
|
|
|
|
+ </div>
|
|
|
<div v-if="tooC == 65">
|
|
<div v-if="tooC == 65">
|
|
|
<img
|
|
<img
|
|
|
@click="addTools(tooC, toolIndex, taskCount)"
|
|
@click="addTools(tooC, toolIndex, taskCount)"
|
|
@@ -1547,7 +1575,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="tooldetail" v-if="tool.toolDetail != ''" :class="{isUpdateToolDetailClass:toolDetailIndex == toolIndex}">
|
|
|
|
|
|
|
+ <div class="tooldetail renderedFor" v-if="tool.toolDetail != ''" :class="{isUpdateToolDetailClass:toolDetailIndex == toolIndex}">
|
|
|
<!-- <div class="toolTitle">工具描述</div> -->
|
|
<!-- <div class="toolTitle">工具描述</div> -->
|
|
|
<!-- @click.stop="updateToolDetail(toolIndex, 2)" 点击开启修改-->
|
|
<!-- @click.stop="updateToolDetail(toolIndex, 2)" 点击开启修改-->
|
|
|
<div style="height:100%;"
|
|
<div style="height:100%;"
|
|
@@ -3888,7 +3916,7 @@
|
|
|
<div
|
|
<div
|
|
|
v-for="(s, sIndex) in noWorksS[toolIndex]"
|
|
v-for="(s, sIndex) in noWorksS[toolIndex]"
|
|
|
:key="sIndex"
|
|
:key="sIndex"
|
|
|
- class="noWorksName"
|
|
|
|
|
|
|
+ class="noWorksName2"
|
|
|
@click="teacherWorkSubmit(72, toolIndex, taskCount, s)"
|
|
@click="teacherWorkSubmit(72, toolIndex, taskCount, s)"
|
|
|
>
|
|
>
|
|
|
<el-tooltip
|
|
<el-tooltip
|
|
@@ -4464,6 +4492,7 @@
|
|
|
word-break: break-word;
|
|
word-break: break-word;
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
"
|
|
"
|
|
|
|
|
+ class="renderedFor"
|
|
|
>
|
|
>
|
|
|
{{ index + 1 + "、" }} <span v-html="renderedFormula(item.teststitle)"></span>
|
|
{{ index + 1 + "、" }} <span v-html="renderedFormula(item.teststitle)"></span>
|
|
|
</div>
|
|
</div>
|
|
@@ -9657,21 +9686,21 @@
|
|
|
:key="index1"
|
|
:key="index1"
|
|
|
>
|
|
>
|
|
|
<div class="a_add_head">
|
|
<div class="a_add_head">
|
|
|
- <div style="display: flex;align-items: center;">
|
|
|
|
|
|
|
+ <div style="display: flex;">
|
|
|
<span class="askIndex">{{ index1 + 1 }}</span>
|
|
<span class="askIndex">{{ index1 + 1 }}</span>
|
|
|
<div
|
|
<div
|
|
|
v-if="testJson.testJson[index1].type == '1'"
|
|
v-if="testJson.testJson[index1].type == '1'"
|
|
|
- style="margin-right: 5px; min-width: 70px"
|
|
|
|
|
|
|
+ style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
|
|
|
>
|
|
>
|
|
|
(单选题)
|
|
(单选题)
|
|
|
</div>
|
|
</div>
|
|
|
<div
|
|
<div
|
|
|
v-if="testJson.testJson[index1].type == '2'"
|
|
v-if="testJson.testJson[index1].type == '2'"
|
|
|
- style="margin-right: 5px; min-width: 70px"
|
|
|
|
|
|
|
+ style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
|
|
|
>
|
|
>
|
|
|
(多选题)
|
|
(多选题)
|
|
|
</div>
|
|
</div>
|
|
|
- <div>题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
|
|
|
|
|
|
|
+ <div class="renderedFor">题目:<span v-html="renderedFormula(testJson.testJson[index1].teststitle)"></span></div>
|
|
|
</div>
|
|
</div>
|
|
|
<img
|
|
<img
|
|
|
v-if="testJson.testJson[index1].img"
|
|
v-if="testJson.testJson[index1].img"
|
|
@@ -9790,13 +9819,13 @@
|
|
|
<span class="askIndex">{{ index1 + 1 }}</span>
|
|
<span class="askIndex">{{ index1 + 1 }}</span>
|
|
|
<div
|
|
<div
|
|
|
v-if="testJson.testJson[index1].type == '1'"
|
|
v-if="testJson.testJson[index1].type == '1'"
|
|
|
- style="margin-right: 5px; min-width: 70px"
|
|
|
|
|
|
|
+ style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
|
|
|
>
|
|
>
|
|
|
(单选题)
|
|
(单选题)
|
|
|
</div>
|
|
</div>
|
|
|
<div
|
|
<div
|
|
|
v-if="testJson.testJson[index1].type == '2'"
|
|
v-if="testJson.testJson[index1].type == '2'"
|
|
|
- style="margin-right: 5px; min-width: 70px"
|
|
|
|
|
|
|
+ style="margin-right: 5px; min-width: 70px;flex-shrink: 0;"
|
|
|
>
|
|
>
|
|
|
(多选题)
|
|
(多选题)
|
|
|
</div>
|
|
</div>
|
|
@@ -10119,7 +10148,9 @@
|
|
|
@change="updateLookOpen"
|
|
@change="updateLookOpen"
|
|
|
></el-switch>
|
|
></el-switch>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="switch_box" v-if="courseDetail.userid == userid">
|
|
|
|
|
|
|
+ <div class="switch_box" v-if="(courseDetail.userid == userid ||
|
|
|
|
|
+ (courseDetail.course_teacher &&
|
|
|
|
|
+ courseDetail.course_teacher.indexOf(userid) != -1)) && !splitScreenData.isOpen">
|
|
|
<span>开启跟随模式</span>
|
|
<span>开启跟随模式</span>
|
|
|
<el-switch
|
|
<el-switch
|
|
|
v-model="IsFollow"
|
|
v-model="IsFollow"
|
|
@@ -10595,7 +10626,7 @@
|
|
|
sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts allow-popups"
|
|
sandbox="allow-top-navigation allow-same-origin allow-forms allow-scripts allow-popups"
|
|
|
:src="fullUrl"
|
|
:src="fullUrl"
|
|
|
></iframe>
|
|
></iframe>
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
<!-- <div slot="footer">
|
|
<!-- <div slot="footer">
|
|
|
<el-button @click="fullDialogVisible = false">关 闭</el-button>
|
|
<el-button @click="fullDialogVisible = false">关 闭</el-button>
|
|
@@ -12727,6 +12758,7 @@ export default {
|
|
|
},
|
|
},
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+ startTime: "",
|
|
|
// 是否允许学生查看内容资料 2不可以 1可以
|
|
// 是否允许学生查看内容资料 2不可以 1可以
|
|
|
IsStulook:false,
|
|
IsStulook:false,
|
|
|
homeWorkLoading:false,
|
|
homeWorkLoading:false,
|
|
@@ -13109,7 +13141,14 @@ export default {
|
|
|
},
|
|
},
|
|
|
confirmOpenDig:false,
|
|
confirmOpenDig:false,
|
|
|
confirmOpenDigData:'',
|
|
confirmOpenDigData:'',
|
|
|
- diffKey:"1"
|
|
|
|
|
|
|
+ diffKey:"1",
|
|
|
|
|
+ getCourseGroupLoading: false,
|
|
|
|
|
+ selectSWorksLoading:false,
|
|
|
|
|
+ selectStudentLoading:false,
|
|
|
|
|
+ selectSLookLoading:false,
|
|
|
|
|
+ getPickLoading:false,
|
|
|
|
|
+ selectPzLoading:false,
|
|
|
|
|
+ getSplitScreenDataLoading:false,
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
@@ -13448,7 +13487,12 @@ export default {
|
|
|
this.insertMemorandum(`选择<span class="variable">阶段${i+1}${this.navList[i].dyName?':'+this.navList[i].dyName:''}</span>→<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
|
|
this.insertMemorandum(`选择<span class="variable">阶段${i+1}${this.navList[i].dyName?':'+this.navList[i].dyName:''}</span>→<span class="variable">任务${j+1}${this.navList[i].task[j].taskName?':'+this.navList[i].task[j].taskName:''}</span>→<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ if ((this.courseDetail.userid == this.userid ||
|
|
|
|
|
+ (this.courseDetail.course_teacher &&
|
|
|
|
|
+ this.courseDetail.course_teacher.indexOf(this.userid) != -1)) &&
|
|
|
|
|
+ this.IsFollow) {
|
|
|
|
|
+ this.setCTask();
|
|
|
|
|
+ }
|
|
|
// var b = this.$refs["bz" + k][0];
|
|
// var b = this.$refs["bz" + k][0];
|
|
|
// a.scrollTop = b.offsetTop;
|
|
// a.scrollTop = b.offsetTop;
|
|
|
},
|
|
},
|
|
@@ -14579,6 +14623,8 @@ export default {
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
selectStudent() {
|
|
selectStudent() {
|
|
|
|
|
+ if(this.selectStudentLoading) return
|
|
|
|
|
+ this.selectStudentLoading = true
|
|
|
//学生查看自己作业
|
|
//学生查看自己作业
|
|
|
let params = {
|
|
let params = {
|
|
|
uid: this.userid,
|
|
uid: this.userid,
|
|
@@ -14901,8 +14947,12 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ this.selectStudentLoading = false
|
|
|
|
|
+
|
|
|
})
|
|
})
|
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
|
|
|
+ this.selectStudentLoading = false
|
|
|
|
|
+
|
|
|
console.error(err);
|
|
console.error(err);
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
@@ -15258,6 +15308,8 @@ export default {
|
|
|
.catch(() => {});
|
|
.catch(() => {});
|
|
|
},
|
|
},
|
|
|
selectSWorks(gindex) {
|
|
selectSWorks(gindex) {
|
|
|
|
|
+ if(this.selectSWorksLoading) return
|
|
|
|
|
+ this.selectSWorksLoading = true
|
|
|
//教师查看全部作业
|
|
//教师查看全部作业
|
|
|
let params = {
|
|
let params = {
|
|
|
cid: this.id,
|
|
cid: this.id,
|
|
@@ -16357,8 +16409,12 @@ export default {
|
|
|
}, 0)
|
|
}, 0)
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
+ this.selectSWorksLoading = false
|
|
|
|
|
+
|
|
|
})
|
|
})
|
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
|
|
|
+ this.selectSWorksLoading = false
|
|
|
|
|
+
|
|
|
console.error(err);
|
|
console.error(err);
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
@@ -17112,7 +17168,9 @@ export default {
|
|
|
this.getHomeWork();
|
|
this.getHomeWork();
|
|
|
this.getCourseDetail(2);
|
|
this.getCourseDetail(2);
|
|
|
this.$forceUpdate();
|
|
this.$forceUpdate();
|
|
|
- if (this.courseDetail.userid == this.userid && this.IsFollow) {
|
|
|
|
|
|
|
+ if ((this.courseDetail.userid == this.userid ||
|
|
|
|
|
+ (this.courseDetail.course_teacher &&
|
|
|
|
|
+ this.courseDetail.course_teacher.indexOf(this.userid) != -1)) && this.IsFollow) {
|
|
|
this.setCTask();
|
|
this.setCTask();
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
@@ -17224,7 +17282,9 @@ export default {
|
|
|
this.selectPz();
|
|
this.selectPz();
|
|
|
this.getHomeWork();
|
|
this.getHomeWork();
|
|
|
this.getCourseDetail(2);
|
|
this.getCourseDetail(2);
|
|
|
- if (this.courseDetail.userid == this.userid && this.IsFollow) {
|
|
|
|
|
|
|
+ if ((this.courseDetail.userid == this.userid ||
|
|
|
|
|
+ (this.courseDetail.course_teacher &&
|
|
|
|
|
+ this.courseDetail.course_teacher.indexOf(this.userid) != -1)) && this.IsFollow) {
|
|
|
this.setCTask();
|
|
this.setCTask();
|
|
|
}
|
|
}
|
|
|
if(flag){
|
|
if(flag){
|
|
@@ -17355,7 +17415,11 @@ export default {
|
|
|
this.ajax
|
|
this.ajax
|
|
|
.get(this.$store.state.api + "selectCourseDetail3", params)
|
|
.get(this.$store.state.api + "selectCourseDetail3", params)
|
|
|
.then((res) => {
|
|
.then((res) => {
|
|
|
- this.addCourseState(1, JSON.parse(res.data[0][0].chapters));
|
|
|
|
|
|
|
+ if ((this.courseDetail.userid == this.userid ||
|
|
|
|
|
+ (this.courseDetail.course_teacher &&
|
|
|
|
|
+ this.courseDetail.course_teacher.indexOf(this.userid) != -1)) && this.IsFollow) {
|
|
|
|
|
+ this.addCourseState(1, JSON.parse(res.data[0][0].chapters));
|
|
|
|
|
+ }
|
|
|
if (type != 2) {
|
|
if (type != 2) {
|
|
|
loading.close();
|
|
loading.close();
|
|
|
if (
|
|
if (
|
|
@@ -17553,6 +17617,9 @@ export default {
|
|
|
} else if (_chapterData[taskCount][0].type == 16) {
|
|
} else if (_chapterData[taskCount][0].type == 16) {
|
|
|
this.showType = 16;
|
|
this.showType = 16;
|
|
|
this.pptImgUrl1 = _url;
|
|
this.pptImgUrl1 = _url;
|
|
|
|
|
+ } else if (_chapterData[taskCount][0].type == 17) {
|
|
|
|
|
+ this.showType = 16;
|
|
|
|
|
+ this.pptImgUrl1 = _url;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -17723,6 +17790,9 @@ export default {
|
|
|
} else if (_chapterData[taskCount][0].type == 16) {
|
|
} else if (_chapterData[taskCount][0].type == 16) {
|
|
|
this.showType = 16;
|
|
this.showType = 16;
|
|
|
this.pptImgUrl1 = _url;
|
|
this.pptImgUrl1 = _url;
|
|
|
|
|
+ } else if (_chapterData[taskCount][0].type == 17) {
|
|
|
|
|
+ this.showType = 16;
|
|
|
|
|
+ this.pptImgUrl1 = _url;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -17758,11 +17828,11 @@ export default {
|
|
|
console.log('this.courseDetail.userid',this.courseDetail.userid);
|
|
console.log('this.courseDetail.userid',this.courseDetail.userid);
|
|
|
console.log('this.userid',this.userid);
|
|
console.log('this.userid',this.userid);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (this.courseDetail.userid == this.userid) {
|
|
if (this.courseDetail.userid == this.userid) {
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 开局关闭学生查看内容
|
|
// 开局关闭学生查看内容
|
|
|
- this.StulookMode(false)
|
|
|
|
|
|
|
+ this.StulookMode(true)
|
|
|
// 开局打开跟随模式
|
|
// 开局打开跟随模式
|
|
|
this.followingMode(true)
|
|
this.followingMode(true)
|
|
|
}
|
|
}
|
|
@@ -17853,6 +17923,8 @@ export default {
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
getCourseGroup(gindex) {
|
|
getCourseGroup(gindex) {
|
|
|
|
|
+ if(this.getCourseGroupLoading) return
|
|
|
|
|
+ this.getCourseGroupLoading = true
|
|
|
let params = {
|
|
let params = {
|
|
|
cid: this.id,
|
|
cid: this.id,
|
|
|
classid: this.tcid ? this.tcid : "1",
|
|
classid: this.tcid ? this.tcid : "1",
|
|
@@ -17902,8 +17974,12 @@ export default {
|
|
|
this.selectSWorks(gindex);
|
|
this.selectSWorks(gindex);
|
|
|
this.isGroup = false;
|
|
this.isGroup = false;
|
|
|
}
|
|
}
|
|
|
|
|
+ this.getCourseGroupLoading = false
|
|
|
|
|
+
|
|
|
})
|
|
})
|
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
|
|
|
+ this.getCourseGroupLoading = false
|
|
|
|
|
+
|
|
|
// this.$message.error("网络不佳");
|
|
// this.$message.error("网络不佳");
|
|
|
console.error(err);
|
|
console.error(err);
|
|
|
});
|
|
});
|
|
@@ -18073,6 +18149,8 @@ export default {
|
|
|
this.selectPz();
|
|
this.selectPz();
|
|
|
},
|
|
},
|
|
|
selectPz() {
|
|
selectPz() {
|
|
|
|
|
+ if(this.selectPzLoading) return
|
|
|
|
|
+ this.selectPzLoading = true
|
|
|
let params = {
|
|
let params = {
|
|
|
cid: this.id,
|
|
cid: this.id,
|
|
|
s: this.courseType,
|
|
s: this.courseType,
|
|
@@ -18095,8 +18173,12 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ this.selectPzLoading = false
|
|
|
|
|
+
|
|
|
})
|
|
})
|
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
|
|
|
+ this.selectPzLoading = false
|
|
|
|
|
+
|
|
|
console.error(err);
|
|
console.error(err);
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
@@ -18160,7 +18242,7 @@ export default {
|
|
|
this.ajax
|
|
this.ajax
|
|
|
.post(this.$store.state.api + "updateCourseStulook", params)
|
|
.post(this.$store.state.api + "updateCourseStulook", params)
|
|
|
.then(res => {
|
|
.then(res => {
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (this.IsStulook == true) {
|
|
if (this.IsStulook == true) {
|
|
|
this.$message({
|
|
this.$message({
|
|
|
message: "学生查看内容资料权限已开启",
|
|
message: "学生查看内容资料权限已开启",
|
|
@@ -18250,6 +18332,8 @@ export default {
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
selectSLook() {
|
|
selectSLook() {
|
|
|
|
|
+ if(this.selectSLookLoading) return
|
|
|
|
|
+ this.selectSLookLoading = true
|
|
|
let params = {
|
|
let params = {
|
|
|
cid: this.id,
|
|
cid: this.id,
|
|
|
};
|
|
};
|
|
@@ -18282,8 +18366,12 @@ export default {
|
|
|
this.getCourseDetail(2);
|
|
this.getCourseDetail(2);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ this.selectSLookLoading = false
|
|
|
|
|
+
|
|
|
})
|
|
})
|
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
|
|
|
+ this.selectSLookLoading = false
|
|
|
|
|
+
|
|
|
console.error(err);
|
|
console.error(err);
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
@@ -19599,6 +19687,8 @@ export default {
|
|
|
this.insertMemorandum(`点击工作区<span class="variable">工具${index+1}:${this.toolsList[t]}</span>`)
|
|
this.insertMemorandum(`点击工作区<span class="variable">工具${index+1}:${this.toolsList[t]}</span>`)
|
|
|
},
|
|
},
|
|
|
teacherWorkSubmit(t, i, index, s) {
|
|
teacherWorkSubmit(t, i, index, s) {
|
|
|
|
|
+ console.log('t',t);
|
|
|
|
|
+ if(t == 72) return
|
|
|
this.sStudent = s;
|
|
this.sStudent = s;
|
|
|
this.toolindex = i;
|
|
this.toolindex = i;
|
|
|
this.sTool = t;
|
|
this.sTool = t;
|
|
@@ -19977,9 +20067,9 @@ export default {
|
|
|
if (t == 6) {
|
|
if (t == 6) {
|
|
|
this.fulltype = 1;
|
|
this.fulltype = 1;
|
|
|
console.log('checkFileFull1',f);
|
|
console.log('checkFileFull1',f);
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
this.fullUrl = JSON.parse(JSON.stringify(f));
|
|
this.fullUrl = JSON.parse(JSON.stringify(f));
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
} else if (t == 8) {
|
|
} else if (t == 8) {
|
|
|
this.fulltype = 2;
|
|
this.fulltype = 2;
|
|
|
this.fullUrl = f.url;
|
|
this.fullUrl = f.url;
|
|
@@ -21072,6 +21162,9 @@ export default {
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
|
getPick() {
|
|
getPick() {
|
|
|
|
|
+ if(this.getPickLoading) return
|
|
|
|
|
+ this.getPickLoading = true
|
|
|
|
|
+
|
|
|
let params = {
|
|
let params = {
|
|
|
cid: this.id,
|
|
cid: this.id,
|
|
|
};
|
|
};
|
|
@@ -21109,8 +21202,12 @@ export default {
|
|
|
})
|
|
})
|
|
|
.catch(() => {});
|
|
.catch(() => {});
|
|
|
}
|
|
}
|
|
|
|
|
+ this.getPickLoading = false
|
|
|
|
|
+
|
|
|
})
|
|
})
|
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
|
|
|
+ this.getPickLoading = false
|
|
|
|
|
+
|
|
|
this.$message.error("网络不佳");
|
|
this.$message.error("网络不佳");
|
|
|
console.error(err);
|
|
console.error(err);
|
|
|
});
|
|
});
|
|
@@ -21297,6 +21394,8 @@ export default {
|
|
|
getSplitScreenData() {
|
|
getSplitScreenData() {
|
|
|
// return;
|
|
// return;
|
|
|
// if (this.tType != 1) return;
|
|
// if (this.tType != 1) return;
|
|
|
|
|
+ if(this.getSplitScreenDataLoading) return
|
|
|
|
|
+ this.getSplitScreenDataLoading = true
|
|
|
let params = {
|
|
let params = {
|
|
|
cid: this.id
|
|
cid: this.id
|
|
|
};
|
|
};
|
|
@@ -21363,8 +21462,12 @@ export default {
|
|
|
.catch(() => {});
|
|
.catch(() => {});
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ this.getSplitScreenDataLoading = false
|
|
|
|
|
+
|
|
|
})
|
|
})
|
|
|
.catch(e => {
|
|
.catch(e => {
|
|
|
|
|
+ this.getSplitScreenDataLoading = false
|
|
|
|
|
+
|
|
|
console.log("获取分屏数出错:", e);
|
|
console.log("获取分屏数出错:", e);
|
|
|
});
|
|
});
|
|
|
},
|
|
},
|
|
@@ -21616,6 +21719,22 @@ export default {
|
|
|
clearInterval(this.opertimer);
|
|
clearInterval(this.opertimer);
|
|
|
this.opertimer = null;
|
|
this.opertimer = null;
|
|
|
this.updateSplitScreenData(1);
|
|
this.updateSplitScreenData(1);
|
|
|
|
|
+ if(this.courseDetail.userid == this.userid && this.org == '16ace517-b5c7-4168-a9bb-a9e0035df840'){
|
|
|
|
|
+ let endTime = new Date().toLocaleString("zh-CN", {
|
|
|
|
|
+ hour12: false,
|
|
|
|
|
+ timeZone: "Asia/Shanghai"
|
|
|
|
|
+ }).replace(/\//g, "-")
|
|
|
|
|
+ let courseTime = Math.floor((new Date(endTime) - new Date(this.startTime)) / (1000 * 60))
|
|
|
|
|
+ this.syncClassData({
|
|
|
|
|
+ courseId: this.id,
|
|
|
|
|
+ title: this.courseDetail.title,
|
|
|
|
|
+ courseGrade: this.tcid2 ? this.tcid2 : '',
|
|
|
|
|
+ courseTime: courseTime,
|
|
|
|
|
+ startTime: this.startTime,
|
|
|
|
|
+ endTime: endTime,
|
|
|
|
|
+ })
|
|
|
|
|
+ console.log('同步数据')
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
computed: {
|
|
computed: {
|
|
|
renderedFormula2() {
|
|
renderedFormula2() {
|
|
@@ -21624,7 +21743,7 @@ export default {
|
|
|
const normalized = val
|
|
const normalized = val
|
|
|
.replace(/&/g, '&')
|
|
.replace(/&/g, '&')
|
|
|
.replace(/<br\/?>/g, '\n');
|
|
.replace(/<br\/?>/g, '\n');
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 匹配行内公式($...$)和块级公式($$...$$)
|
|
// 匹配行内公式($...$)和块级公式($$...$$)
|
|
|
return normalized.replace(/(\${1,2})([^$]+)(\${1,2})/g, (_, delim, expr) => {
|
|
return normalized.replace(/(\${1,2})([^$]+)(\${1,2})/g, (_, delim, expr) => {
|
|
|
try {
|
|
try {
|
|
@@ -21822,12 +21941,16 @@ export default {
|
|
|
|
|
|
|
|
},
|
|
},
|
|
|
mounted() {
|
|
mounted() {
|
|
|
- if (this.tType == 1) {
|
|
|
|
|
- // 开局关闭学生查看内容
|
|
|
|
|
- this.StulookMode(false)
|
|
|
|
|
- // 开局打开跟随模式
|
|
|
|
|
- this.followingMode(true)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ this.startTime = new Date().toLocaleString("zh-CN", {
|
|
|
|
|
+ hour12: false,
|
|
|
|
|
+ timeZone: "Asia/Shanghai"
|
|
|
|
|
+ }).replace(/\//g, "-")
|
|
|
|
|
+ // if (this.tType == 1) {
|
|
|
|
|
+ // // 开局关闭学生查看内容
|
|
|
|
|
+ // this.StulookMode(false)
|
|
|
|
|
+ // // 开局打开跟随模式
|
|
|
|
|
+ // this.followingMode(true)
|
|
|
|
|
+ // }
|
|
|
document.body.addEventListener("click", (e) => {
|
|
document.body.addEventListener("click", (e) => {
|
|
|
if (this.isUpdateToolDetail1) {
|
|
if (this.isUpdateToolDetail1) {
|
|
|
this.updateToolDetail(this.toolDetailIndex);
|
|
this.updateToolDetail(this.toolDetailIndex);
|
|
@@ -23638,6 +23761,30 @@ export default {
|
|
|
text-overflow: ellipsis;
|
|
text-overflow: ellipsis;
|
|
|
white-space: nowrap;
|
|
white-space: nowrap;
|
|
|
}
|
|
}
|
|
|
|
|
+.noWorksName2 {
|
|
|
|
|
+ background: #fff;
|
|
|
|
|
+ color: #0061ff;
|
|
|
|
|
+ width: 90px;
|
|
|
|
|
+ height: 25px;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ line-height: 25px;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ margin: 10px 15px 10px 0;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ padding: 5px;
|
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ border: 1px solid #0061ff;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.noWorksName2 > span {
|
|
|
|
|
+ max-width: 100%;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
.isWorksName2 {
|
|
.isWorksName2 {
|
|
|
width: 100px;
|
|
width: 100px;
|
|
@@ -26328,4 +26475,23 @@ div::-webkit-scrollbar {
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
text-overflow: ellipsis;
|
|
text-overflow: ellipsis;
|
|
|
}
|
|
}
|
|
|
|
|
+.renderedFor >>> .katex {
|
|
|
|
|
+ font-size: 18px;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ white-space: normal;
|
|
|
|
|
+ font-family: '黑体' !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.renderedFor >>> .katex .base{
|
|
|
|
|
+ display: inline !important;
|
|
|
|
|
+ display: contents !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.renderedFor >>> .katex .base .cjk_fallback{
|
|
|
|
|
+ white-space: normal !important;
|
|
|
|
|
+ display: inline !important;
|
|
|
|
|
+}
|
|
|
|
|
+.notop >>> .vjs-fluid{
|
|
|
|
|
+ padding-top: 0 !important;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|