|
@@ -223,6 +223,7 @@
|
|
<div v-if="t.tool == 67">分子结构</div>
|
|
<div v-if="t.tool == 67">分子结构</div>
|
|
<div v-if="t.tool == 68">时间轴</div>
|
|
<div v-if="t.tool == 68">时间轴</div>
|
|
<div v-if="t.tool == 69">英语写作</div>
|
|
<div v-if="t.tool == 69">英语写作</div>
|
|
|
|
+ <div v-if="t.tool == 70">英语口语</div>
|
|
<div v-if="t.tool == 25">目标管理</div>
|
|
<div v-if="t.tool == 25">目标管理</div>
|
|
<div v-if="t.tool == 26">课程设计</div>
|
|
<div v-if="t.tool == 26">课程设计</div>
|
|
<div v-if="t.tool == 62">交互视频</div>
|
|
<div v-if="t.tool == 62">交互视频</div>
|
|
@@ -1304,6 +1305,14 @@
|
|
/>
|
|
/>
|
|
<div style="margin: 5px 0">英语写作</div>
|
|
<div style="margin: 5px 0">英语写作</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div v-if="tooC == 70">
|
|
|
|
+ <img
|
|
|
|
+ @click="addTools(tooC, toolIndex, taskCount)"
|
|
|
|
+ src="../assets/icon/thirdToolList/englishVoice.png"
|
|
|
|
+ alt
|
|
|
|
+ />
|
|
|
|
+ <div style="margin: 5px 0">英语口语</div>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -2846,6 +2855,155 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div
|
|
|
|
+ v-if="
|
|
|
|
+ tType &&
|
|
|
|
+ ((tType == 2 && sIsOpen == true) ||
|
|
|
|
+ tType == 1 ||
|
|
|
|
+ tType == 4) &&
|
|
|
|
+ tool.tool.indexOf(70) != -1
|
|
|
|
+ "
|
|
|
|
+ class="worksBox"
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ class="zuoyeYulan"
|
|
|
|
+ v-if="
|
|
|
|
+ (worksStudent.length &&
|
|
|
|
+ worksStudent[toolIndex].length > 0)
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <div class="worksTop">
|
|
|
|
+ <div>作业预览</div>
|
|
|
|
+ <div
|
|
|
|
+ class="corOpen"
|
|
|
|
+ @click="contract(toolIndex)"
|
|
|
|
+ v-if="
|
|
|
|
+ (isCloseList[toolIndex].isCloseBoolean) &&
|
|
|
|
+ isCloseList[toolIndex].isClose == 0
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ 折叠
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ class="corOpen"
|
|
|
|
+ @click="contract(toolIndex)"
|
|
|
|
+ v-if="isCloseList[toolIndex].isClose == 1"
|
|
|
|
+ >
|
|
|
|
+ 展开
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ :id="'tool-' + toolIndex"
|
|
|
|
+ :style="{
|
|
|
|
+ height:isCloseList[toolIndex].isClose == 1 ? retrnToolHeight('tool-' + toolIndex) : 'auto',
|
|
|
|
+ overflow: isCloseList[toolIndex].isClose == 1 ? 'hidden' : 'unset'
|
|
|
|
+ }"
|
|
|
|
+ class="worksDetailBox"
|
|
|
|
+ v-if="
|
|
|
|
+ worksStudent.length &&
|
|
|
|
+ worksStudent[toolIndex].length > 0
|
|
|
|
+ "
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ class="works"
|
|
|
|
+ style="
|
|
|
|
+ width: 200px;
|
|
|
|
+ height: 140px;
|
|
|
|
+ margin: 10px 10px 10px 0;
|
|
|
|
+ border-radius: 15px;
|
|
|
|
+ box-shadow: 0 0 6px 1px #dfdada;
|
|
|
|
+ "
|
|
|
|
+ v-for="(w, wIndex) in worksStudent[toolIndex]"
|
|
|
|
+ :key="wIndex"
|
|
|
|
+ :class="w.type == 1 ? 'isTypeOne' : ''"
|
|
|
|
+ >
|
|
|
|
+ <div class="workImg" @click.stop="openScore(w,toolIndex)">
|
|
|
|
+ <img :src="word" alt />
|
|
|
|
+ <img
|
|
|
|
+ class="deleteImg"
|
|
|
|
+ src="../assets/deleteworks.png"
|
|
|
|
+ v-if="
|
|
|
|
+ w.userid == userid || tType == 1 || tType == 4
|
|
|
|
+ "
|
|
|
|
+ @click.stop="deleteWorks(w.wid)"
|
|
|
|
+ alt
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="comment" style="min-width: 200px">
|
|
|
|
+ <div class="worksName">
|
|
|
|
+ <div>{{ w.sName }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div style="font-size: 18px" v-if="courseDetail.juri != ''">
|
|
|
|
+ 未提交
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ class="noWorksS"
|
|
|
|
+ v-if="noWorksS && noWorksS[toolIndex].length"
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ v-for="(s, sIndex) in noWorksS[toolIndex]"
|
|
|
|
+ :key="sIndex"
|
|
|
|
+ class="noWorksName"
|
|
|
|
+ >
|
|
|
|
+ {{ s.student }}
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ v-if="
|
|
|
|
+ tType &&
|
|
|
|
+ tType == 2 &&
|
|
|
|
+ !sIsOpen &&
|
|
|
|
+ tool.tool.indexOf(70) != -1
|
|
|
|
+ "
|
|
|
|
+ class="worksBox"
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ class="zuoyeYulan"
|
|
|
|
+ v-if="workStudent[toolIndex].length > 0"
|
|
|
|
+ >
|
|
|
|
+ <span class="worksTitle">作业预览</span>
|
|
|
|
+ <!-- <el-button type="text" @click="jump()" v-if="tType == 2" class="buttonA">我的评价</el-button> -->
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ class="worksDetailBox"
|
|
|
|
+ v-if="workStudent[toolIndex].length > 0"
|
|
|
|
+ >
|
|
|
|
+ <div
|
|
|
|
+ class="works"
|
|
|
|
+ style="
|
|
|
|
+ width: 200px;
|
|
|
|
+ height: 140px;
|
|
|
|
+ margin: 10px 10px 10px 0;
|
|
|
|
+ box-shadow: 0 0 6px 1px #dfdada;
|
|
|
|
+ "
|
|
|
|
+ v-for="(w, wIndex) in workStudent[toolIndex]"
|
|
|
|
+ :key="wIndex"
|
|
|
|
+ >
|
|
|
|
+ <div class="workImg" @click.stop="openScore(w,toolIndex)">
|
|
|
|
+ <img :src="word" alt />
|
|
|
|
+ <img
|
|
|
|
+ class="deleteImg"
|
|
|
|
+ src="../assets/deleteworks.png"
|
|
|
|
+ v-if="
|
|
|
|
+ w.userid == userid || tType == 1 || tType == 4
|
|
|
|
+ "
|
|
|
|
+ @click.stop="deleteWorks(w.wid)"
|
|
|
|
+ alt
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <div class="worksName">
|
|
|
|
+ <div>{{ w.sName }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
<div
|
|
<div
|
|
v-if="
|
|
v-if="
|
|
tType &&
|
|
tType &&
|
|
@@ -11472,6 +11630,25 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
+ <EnglishVoice :EnglishVoiceDialog.sync='EnglishVoiceDialog'
|
|
|
|
+ :englishVoiceJson='englishVoiceJson'
|
|
|
|
+ :userid="userid"
|
|
|
|
+ :id="id"
|
|
|
|
+ :courseType="courseType"
|
|
|
|
+ :taskCount="taskCount"
|
|
|
|
+ :toolindex="toolindex"
|
|
|
|
+ @selectSWorks="selectSWorks"
|
|
|
|
+ @selectStudent="selectStudent"
|
|
|
|
+ :englishVoiceJsonWork="englishVoiceJsonWork"></EnglishVoice>
|
|
|
|
+ <checkEnglishVoice :englishVoiceJson='englishVoiceJson'
|
|
|
|
+ :userid="userid"
|
|
|
|
+ :dialogVisibleENScore.sync='dialogVisibleENScore'
|
|
|
|
+ :commentDetail="commentDetail"
|
|
|
|
+ :courseDetail="courseDetail"
|
|
|
|
+ :wScore="wScore"
|
|
|
|
+ :scoreDetail="scoreDetail"
|
|
|
|
+ @selectSWorks="selectSWorks"
|
|
|
|
+ @selectStudent="selectStudent"></checkEnglishVoice>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
@@ -11503,6 +11680,8 @@ import FileSaver from "file-saver";
|
|
import onlineWrite from "./components/onlineWrite";
|
|
import onlineWrite from "./components/onlineWrite";
|
|
import englishEva from "./components/englishEva";
|
|
import englishEva from "./components/englishEva";
|
|
import * as Diff from 'diff'
|
|
import * as Diff from 'diff'
|
|
|
|
+import EnglishVoice from './EnglishVoice2/index.vue'
|
|
|
|
+import checkEnglishVoice from './checkEnglishVoice/index.vue'
|
|
|
|
|
|
const getFile = (url) => {
|
|
const getFile = (url) => {
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
@@ -11573,6 +11752,8 @@ export default {
|
|
wordCloud,
|
|
wordCloud,
|
|
onlineWrite,
|
|
onlineWrite,
|
|
englishEva,
|
|
englishEva,
|
|
|
|
+ EnglishVoice,
|
|
|
|
+ checkEnglishVoice
|
|
},
|
|
},
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
@@ -11590,6 +11771,7 @@ export default {
|
|
dialogVisibleSelect: false,
|
|
dialogVisibleSelect: false,
|
|
dialogVisibleSelectTeacher: false,
|
|
dialogVisibleSelectTeacher: false,
|
|
dialogVisibleScore: false,
|
|
dialogVisibleScore: false,
|
|
|
|
+ dialogVisibleENScore: false,
|
|
dialogVisibleSentence: false,
|
|
dialogVisibleSentence: false,
|
|
dialogVisibleSentenceTeacher: false,
|
|
dialogVisibleSentenceTeacher: false,
|
|
dialogVisibleSentence1: false,
|
|
dialogVisibleSentence1: false,
|
|
@@ -11926,6 +12108,9 @@ export default {
|
|
greyType: false,
|
|
greyType: false,
|
|
correctWord: [],
|
|
correctWord: [],
|
|
isUpdateText: "",
|
|
isUpdateText: "",
|
|
|
|
+ EnglishVoiceDialog: false,
|
|
|
|
+ englishVoiceJson: {},
|
|
|
|
+ englishVoiceJsonWork:[]
|
|
};
|
|
};
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
@@ -13125,7 +13310,7 @@ export default {
|
|
if (
|
|
if (
|
|
Object.keys(this.commentDetail).length &&
|
|
Object.keys(this.commentDetail).length &&
|
|
Object.keys(this.commentIndexJson).length &&
|
|
Object.keys(this.commentIndexJson).length &&
|
|
- !this.dialogVisibleScore
|
|
|
|
|
|
+ !this.dialogVisibleScore && !this.dialogVisibleENScore
|
|
) {
|
|
) {
|
|
let a = 1;
|
|
let a = 1;
|
|
let c = this.commentIndexJson;
|
|
let c = this.commentIndexJson;
|
|
@@ -13502,6 +13687,18 @@ export default {
|
|
aiCode: b[j].aiCode,
|
|
aiCode: b[j].aiCode,
|
|
teacherCode: b[j].teacherCode
|
|
teacherCode: b[j].teacherCode
|
|
});
|
|
});
|
|
|
|
+ } else if (b[j].type == 17 && a[i].tool[0] == 70) {
|
|
|
|
+ //英语口语
|
|
|
|
+ this.workStudent[i].push({
|
|
|
|
+ works: b[j].content,
|
|
|
|
+ sName: b[j].name,
|
|
|
|
+ score: b[j].score,
|
|
|
|
+ img: b[j].img,
|
|
|
|
+ type: 17,
|
|
|
|
+ time: b[j].time,
|
|
|
|
+ userid: b[j].userid,
|
|
|
|
+ wid: b[j].id,
|
|
|
|
+ });
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -13639,12 +13836,16 @@ export default {
|
|
].toolChoose[toolIndex].wordJson;
|
|
].toolChoose[toolIndex].wordJson;
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- openScore(w) {
|
|
|
|
|
|
+ openScore(w, index) {
|
|
this.wScore = 0;
|
|
this.wScore = 0;
|
|
this.wScore = w.score ? JSON.parse(w.score).wScore : 0;
|
|
this.wScore = w.score ? JSON.parse(w.score).wScore : 0;
|
|
this.scoreDetail = w.score ? JSON.parse(w.score).detail : "";
|
|
this.scoreDetail = w.score ? JSON.parse(w.score).detail : "";
|
|
this.commentDetail = [];
|
|
this.commentDetail = [];
|
|
- this.dialogVisibleScore = true;
|
|
|
|
|
|
+ if(w.type == 17){
|
|
|
|
+ this.dialogVisibleENScore = true;
|
|
|
|
+ }else{
|
|
|
|
+ this.dialogVisibleScore = true;
|
|
|
|
+ }
|
|
this.commentDetail = w;
|
|
this.commentDetail = w;
|
|
|
|
|
|
if (w.works && w.type == 1) {
|
|
if (w.works && w.type == 1) {
|
|
@@ -13672,6 +13873,15 @@ export default {
|
|
this.videoDetail = {};
|
|
this.videoDetail = {};
|
|
this.playerOptions1.sources[0].src = w.works;
|
|
this.playerOptions1.sources[0].src = w.works;
|
|
this.videoDetail = this.playerOptions1;
|
|
this.videoDetail = this.playerOptions1;
|
|
|
|
+ }else if(w.type == 17){
|
|
|
|
+ let englishVoiceJson = {}
|
|
|
|
+ englishVoiceJson = this.chapInfoList[this.courseType].chapterInfo[0]
|
|
|
|
+ .taskJson[this.taskCount].toolChoose[index].englishVoiceJson
|
|
|
|
+ ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount]
|
|
|
|
+ .toolChoose[index].englishVoiceJson
|
|
|
|
+ : {};
|
|
|
|
+
|
|
|
|
+ this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
|
|
}
|
|
}
|
|
},
|
|
},
|
|
addComment(wid, uid, t) {
|
|
addComment(wid, uid, t) {
|
|
@@ -14595,6 +14805,26 @@ export default {
|
|
_worksStudent[i].push(_work);
|
|
_worksStudent[i].push(_work);
|
|
_worksStudent2[i].push(_work);
|
|
_worksStudent2[i].push(_work);
|
|
this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
|
|
this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
|
|
|
|
+ } else if (b[j].type == 17 && a[i].tool[0] == 70) {
|
|
|
|
+ //英语口语
|
|
|
|
+ let _work = {
|
|
|
|
+ userid: b[j].userid,
|
|
|
|
+ ateacher: b[j].ateacher,
|
|
|
|
+ wid: b[j].id,
|
|
|
|
+ works: b[j].content,
|
|
|
|
+ sName: b[j].name,
|
|
|
|
+ type: 17,
|
|
|
|
+ time: b[j].time,
|
|
|
|
+ score: b[j].score,
|
|
|
|
+ img: b[j].img,
|
|
|
|
+ likesCount: likesCount,
|
|
|
|
+ commentCount: commentCount,
|
|
|
|
+ isLikes: isLikes,
|
|
|
|
+ commentJson: commentJson,
|
|
|
|
+ };
|
|
|
|
+ _worksStudent[i].push(_work);
|
|
|
|
+ _worksStudent2[i].push(_work);
|
|
|
|
+ this.isWorksS[i].push({ uid: b[j].userid, sName: b[j].name });
|
|
} else if (b[j].type == 11 && a[i].tool[0] == 49) {
|
|
} else if (b[j].type == 11 && a[i].tool[0] == 49) {
|
|
let _gindex = JSON.parse(b[j].content);
|
|
let _gindex = JSON.parse(b[j].content);
|
|
if (
|
|
if (
|
|
@@ -17594,6 +17824,28 @@ export default {
|
|
this.englishToolIndex = i;
|
|
this.englishToolIndex = i;
|
|
this.myAnList = this.myAnswerList1;
|
|
this.myAnList = this.myAnswerList1;
|
|
this.engDialogVisible = true;
|
|
this.engDialogVisible = true;
|
|
|
|
+ } else if (t == 70) {
|
|
|
|
+ if (this.worksStudent[i].length) {
|
|
|
|
+ for (var k = 0; k < this.worksStudent[i].length; k++) {
|
|
|
|
+ if (this.userid == this.worksStudent[i][k].userid && this.worksStudent[i][k].type == 17) {
|
|
|
|
+ this.englishVoiceJsonWork = JSON.parse(this.worksStudent[i][k].works)
|
|
|
|
+ break;
|
|
|
|
+ } else {
|
|
|
|
+ this.englishVoiceJsonWork = [];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.englishVoiceJsonWork = [];
|
|
|
|
+ }
|
|
|
|
+ let englishVoiceJson = {}
|
|
|
|
+ englishVoiceJson = this.chapInfoList[this.courseType].chapterInfo[0]
|
|
|
|
+ .taskJson[index].toolChoose[i].englishVoiceJson
|
|
|
|
+ ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
|
|
|
|
+ .toolChoose[i].englishVoiceJson
|
|
|
|
+ : {};
|
|
|
|
+
|
|
|
|
+ this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
|
|
|
|
+ this.EnglishVoiceDialog = true;
|
|
} else if (t == 65) {
|
|
} else if (t == 65) {
|
|
if (this.tType == 2) {
|
|
if (this.tType == 2) {
|
|
this.$message.error("不支持学生使用");
|
|
this.$message.error("不支持学生使用");
|