|
@@ -36,23 +36,23 @@
|
|
|
<span>{{ toolList.find(item=>item.value===toolType).label }}</span>
|
|
|
</div>
|
|
|
|
|
|
- <el-button type="primary"
|
|
|
- size="small"
|
|
|
- v-if="[7,1,3].includes(toolType)"
|
|
|
+ <el-button type="primary"
|
|
|
+ size="small"
|
|
|
+ v-if="[7,1,3].includes(toolType)"
|
|
|
@click="captureScreenshot">作业提交</el-button>
|
|
|
|
|
|
- <el-button type="primary"
|
|
|
- size="small"
|
|
|
- v-if="[45,4,48,52,15,41,47,40].includes(toolType)"
|
|
|
+ <el-button type="primary"
|
|
|
+ size="small"
|
|
|
+ v-if="[45,4,48,52,15,41,47,40].includes(toolType)"
|
|
|
@click="submitWork">作业提交</el-button>
|
|
|
|
|
|
- <el-button type="primary"
|
|
|
- size="small"
|
|
|
- v-if="[57].includes(toolType)"
|
|
|
+ <el-button type="primary"
|
|
|
+ size="small"
|
|
|
+ v-if="[57].includes(toolType)"
|
|
|
@click="upLoadCocoPi">作业提交</el-button>
|
|
|
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<span v-if="testData.toolDetail">{{ testData.toolDetail }}</span>
|
|
|
<span v-else>无</span>
|
|
|
</div>
|
|
@@ -140,7 +140,7 @@
|
|
|
v-for="(item2, checkIndex) in item1.checkList"
|
|
|
:key="checkIndex"
|
|
|
:label="checkIndex"
|
|
|
-
|
|
|
+
|
|
|
class="redioStyle"
|
|
|
>
|
|
|
<span>{{ optionTypeList[checkIndex] }}.</span>
|
|
@@ -206,10 +206,10 @@
|
|
|
|
|
|
<div class="si_box2">
|
|
|
<div class="si_b_bottom">
|
|
|
- <div class="si_b_t_item"
|
|
|
+ <div class="si_b_t_item"
|
|
|
style="line-height: 47px;"
|
|
|
- @click="sentenceBtn2(index,index2)"
|
|
|
- v-for="(item2,index2) in radioS[index]"
|
|
|
+ @click="sentenceBtn2(index,index2)"
|
|
|
+ v-for="(item2,index2) in radioS[index]"
|
|
|
:key="index2">
|
|
|
{{ item2 }}</div>
|
|
|
</div>
|
|
@@ -217,13 +217,13 @@
|
|
|
<div style="height: 1px;background-color: #ccc;width: 100%;margin: 10px 0"></div>
|
|
|
|
|
|
<div class="si_b_bottom">
|
|
|
- <div class="si_b_b_item"
|
|
|
+ <div class="si_b_b_item"
|
|
|
:style="{border : isShowList[index][index2] ? 'solid 2px #A3C7F9' : 'none'}"
|
|
|
- v-for="(item2,index2) in item.addSentence"
|
|
|
+ v-for="(item2,index2) in item.addSentence"
|
|
|
:key="index2">
|
|
|
- <div v-show="isShowList[index][index2]"
|
|
|
+ <div v-show="isShowList[index][index2]"
|
|
|
style="width: 100%;height: 100%;line-height: 47px;text-align: center;"
|
|
|
- @click="sentenceBtn(index,index2,'0')"
|
|
|
+ @click="sentenceBtn(index,index2,'0')"
|
|
|
>{{ item2 }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -242,7 +242,7 @@
|
|
|
</div>
|
|
|
<div v-if="e.detail">{{ e.detail }}</div>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<div class="bz">
|
|
|
<textarea
|
|
|
rows="4"
|
|
@@ -350,7 +350,7 @@
|
|
|
!testData.askJson[index1].type
|
|
|
"
|
|
|
>
|
|
|
-
|
|
|
+
|
|
|
<el-radio
|
|
|
v-for="(item2, checkIndex) in testData.askJson[index1]
|
|
|
.checkList"
|
|
@@ -383,21 +383,21 @@
|
|
|
</div>
|
|
|
<!-- 思维网格 电子白板 思维导图 -->
|
|
|
<div id="loadLi_JieE" v-if="[7,1,3,57,18,21,71].includes(toolType)" style="position: relative; " class="s_b_m_b_i_m_iframe">
|
|
|
- <div style="display: none;
|
|
|
- position: absolute;
|
|
|
+ <div style="display: none;
|
|
|
+ position: absolute;
|
|
|
height: 100%;
|
|
|
top: 50%; left: 50%;
|
|
|
transform: translate(-50%, -50%); ">
|
|
|
- <div style="color: rgb(255, 255, 255);
|
|
|
- padding: 15px; background: rgba(0, 0, 0, 0.44);
|
|
|
- font-size: 18px;display: flex; align-items: center;
|
|
|
+ <div style="color: rgb(255, 255, 255);
|
|
|
+ padding: 15px; background: rgba(0, 0, 0, 0.44);
|
|
|
+ font-size: 18px;display: flex; align-items: center;
|
|
|
justify-content: center;width: 100%;height: 100%;box-sizing: border-box;">
|
|
|
- <img src="//beta.pbl.cocorobo.cn/pbl-student-table/dist/js/loading.gif"
|
|
|
+ <img src="//beta.pbl.cocorobo.cn/pbl-student-table/dist/js/loading.gif"
|
|
|
style="width: 26px; margin-right: 10px;">
|
|
|
<span>上传中...</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
|
|
|
<!-- 思维网格 -->
|
|
|
<div v-if="[7].includes(toolType)">
|
|
@@ -416,7 +416,7 @@
|
|
|
ref="iframeWhiteBoardRef"
|
|
|
></iframe>
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<!-- 思维导图 -->
|
|
|
<div v-if="[3].includes(toolType)">
|
|
|
<iframe id="dialogFrame"
|
|
@@ -444,7 +444,7 @@
|
|
|
</div>
|
|
|
|
|
|
<!-- AIoT Blockly -->
|
|
|
- <div v-if="[21].includes(toolType)">
|
|
|
+ <div v-if="[21].includes(toolType)">
|
|
|
<iframe
|
|
|
allow="camera *; microphone *;display-capture;midi;encrypted-media;"
|
|
|
src="https://x.cocorobo.cn"
|
|
@@ -452,7 +452,7 @@
|
|
|
</div>
|
|
|
|
|
|
<!-- ai智能体 -->
|
|
|
- <div v-if="[71].includes(toolType)">
|
|
|
+ <div v-if="[71].includes(toolType)">
|
|
|
<iframe
|
|
|
allow="camera *; microphone *;display-capture;midi;encrypted-media;"
|
|
|
:src="AIUrl"
|
|
@@ -473,7 +473,7 @@
|
|
|
</div>
|
|
|
<!-- 英语写口语 -->
|
|
|
<div v-if="[70].includes(toolType)" class="s_b_m_b_i_m_evaluation">
|
|
|
- <EnglishVoice
|
|
|
+ <EnglishVoice
|
|
|
:englishVoiceJson='englishVoiceJson'
|
|
|
:userid="userId"
|
|
|
:id="id"
|
|
@@ -494,7 +494,7 @@
|
|
|
<div style="color: rgb(171 171 171); margin: 0 10px 0 0">
|
|
|
提示:开启【开放选座】,学生能够自由加入和退出小组。
|
|
|
</div>
|
|
|
-
|
|
|
+
|
|
|
<div class="group_switch">
|
|
|
<span>开放选座</span>
|
|
|
<el-switch
|
|
@@ -1066,14 +1066,14 @@
|
|
|
<span :class="`${item3.right?'answerRight':'answerWrong'}`">{{ item3.label }}</span>
|
|
|
</span>
|
|
|
</span>
|
|
|
-
|
|
|
+
|
|
|
<div class="answerSelect " v-if="[57].includes(toolType)">
|
|
|
<!-- <img style="width: 300px;" src="../../assets/icon/word2.png" /> -->
|
|
|
<div style="width: 100%;height: 110px;text-align: center;line-height: 110px;">CocoPi作业</div>
|
|
|
</div>
|
|
|
<div class="answerSelect" v-if="[4].includes(toolType)">
|
|
|
- <span v-for="(item2,index2) in JSON.parse(item.works)[0].anwer"
|
|
|
- :key="index2"
|
|
|
+ <span v-for="(item2,index2) in JSON.parse(item.works)[0].anwer"
|
|
|
+ :key="index2"
|
|
|
>
|
|
|
<div style="border-bottom: 3px #ccc solid;" v-if="typeof item2 === 'number'">{{ optionTypeList[item2] }}</div>
|
|
|
<div style="border-bottom: 3px #ccc solid;" v-else>
|
|
@@ -1166,7 +1166,7 @@ export default {
|
|
|
default: () => []
|
|
|
},
|
|
|
oid: {
|
|
|
- type: String
|
|
|
+ type: String
|
|
|
},
|
|
|
org: {
|
|
|
type: String
|
|
@@ -1471,7 +1471,7 @@ export default {
|
|
|
return _result;
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
cy(){
|
|
|
let _result = ''
|
|
|
if(this.toolType==15){
|
|
@@ -1507,9 +1507,9 @@ export default {
|
|
|
watch: {
|
|
|
worksStudentData: {
|
|
|
handler(newValue) {
|
|
|
-
|
|
|
- if (this.toolIndex == null) return
|
|
|
-
|
|
|
+
|
|
|
+ if (this.toolIndex == null) return
|
|
|
+
|
|
|
let workSData = []
|
|
|
|
|
|
// 工具几的学生作业
|
|
@@ -1527,7 +1527,7 @@ export default {
|
|
|
JSON.stringify(newValue[this.toolIndex])
|
|
|
);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// 新增作业时进入这个,和上方代码一样,都是为了筛选作业
|
|
|
if (
|
|
|
this.show &&
|
|
@@ -1617,7 +1617,7 @@ export default {
|
|
|
},
|
|
|
];
|
|
|
// console.log('params',params);
|
|
|
-
|
|
|
+
|
|
|
this.ajax
|
|
|
.post(this.$store.state.api + "addCourseWorks5", params)
|
|
|
.then((res) => {
|
|
@@ -1625,7 +1625,7 @@ export default {
|
|
|
message: "提交成功",
|
|
|
type: "success",
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
this.englishList = {};
|
|
|
})
|
|
|
.catch((err) => {
|
|
@@ -1635,7 +1635,7 @@ export default {
|
|
|
},
|
|
|
lockChair(){
|
|
|
let a = this.islock ? true : false
|
|
|
-
|
|
|
+
|
|
|
this.islock = JSON.parse(JSON.stringify(a))
|
|
|
console.log('this.islock',this.islock);
|
|
|
|
|
@@ -1643,14 +1643,14 @@ export default {
|
|
|
updateGroup(){
|
|
|
console.log('testData estJson',this.testData);
|
|
|
console.log('groupStudent',this.groupStudent);
|
|
|
-
|
|
|
+
|
|
|
console.log('分组设置');
|
|
|
-
|
|
|
+
|
|
|
},
|
|
|
|
|
|
// 加入分组前检查人员是否已经满了
|
|
|
selectGroup(index) {
|
|
|
-
|
|
|
+
|
|
|
//教师查看全部作业
|
|
|
let params = {
|
|
|
cid: this.id,
|
|
@@ -1663,12 +1663,12 @@ export default {
|
|
|
var workS = res.data[3];
|
|
|
// 每组人数
|
|
|
let GroupSize = this.groupJson.number
|
|
|
-
|
|
|
+
|
|
|
// 当前组人数
|
|
|
let nowSize = 0
|
|
|
-
|
|
|
+
|
|
|
console.log('groupJson',this.groupJson);
|
|
|
-
|
|
|
+
|
|
|
console.log('workS',workS);
|
|
|
|
|
|
let classID = [];
|
|
@@ -1692,7 +1692,7 @@ export default {
|
|
|
})
|
|
|
|
|
|
console.log("nowSize",nowSize);
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -1700,7 +1700,7 @@ export default {
|
|
|
.catch((err) => {
|
|
|
console.error(err);
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
|
|
|
},
|
|
|
// 学生分组判断与学生一个班级的学生
|
|
@@ -1803,7 +1803,7 @@ export default {
|
|
|
async captureScreenshot(){
|
|
|
// this.$refs.iframeWhiteBoardRef.contentWindow;
|
|
|
document.getElementById('loadLi_JieE').children[0].style.display = "block"
|
|
|
-
|
|
|
+
|
|
|
let iframeWindow = ''
|
|
|
let text = ''
|
|
|
let str = ''
|
|
@@ -1917,9 +1917,9 @@ export default {
|
|
|
}
|
|
|
|
|
|
let zjm = []
|
|
|
-
|
|
|
+
|
|
|
zjm.push({ testJson: this.testData.testJson, anwer: this.radioS });
|
|
|
-
|
|
|
+
|
|
|
answerData = JSON.stringify(zjm)
|
|
|
}else if (this.toolType == 15) { //问答
|
|
|
if (!this.questionsData) return this.$message.error('请填写答案')
|
|
@@ -1984,7 +1984,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
answerType = 2
|
|
|
-
|
|
|
+
|
|
|
answerData=[{askJson:{askCount:this.testData.askCount,askTitle:this.testData.askTitle,
|
|
|
askJson:this.testData.askJson},
|
|
|
anwer:this.radioS}]
|
|
@@ -2018,9 +2018,9 @@ export default {
|
|
|
},
|
|
|
];
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// return console.log('params',params);
|
|
|
-
|
|
|
+
|
|
|
this.ajax
|
|
|
.post(this.$store.state.api + urlT, params)
|
|
|
.then((res) => {
|
|
@@ -2037,7 +2037,7 @@ export default {
|
|
|
this.$message.error("提交失败");
|
|
|
console.error(err);
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
},
|
|
|
selectSWorks(){
|
|
|
this.$emit("selectSWorks")
|
|
@@ -2054,7 +2054,7 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
this.radioS[val].splice(val1,1,'')
|
|
|
-
|
|
|
+
|
|
|
},
|
|
|
// 排序操作题目
|
|
|
sentenceBtn(val,val1){
|
|
@@ -2068,14 +2068,14 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+
|
|
|
jumpTo(val){
|
|
|
let a = document.getElementById(val+"JP");
|
|
|
a.scrollIntoView({
|
|
|
behavior: "smooth" // 平滑滚动效果
|
|
|
});
|
|
|
|
|
|
- },
|
|
|
+ },
|
|
|
open(data) {
|
|
|
if (this.show) return;
|
|
|
this.show = true;
|
|
@@ -2086,10 +2086,10 @@ export default {
|
|
|
this.changeShowType(this.dialogTypeList.findIndex(i=>i.showType.includes(this.toolType)))
|
|
|
}
|
|
|
this.setData();
|
|
|
- if([3,1,7,57,71].includes(this.toolType)){
|
|
|
+ if([3,1,7,57,71].includes(this.toolType)){
|
|
|
this.$nextTick(() => {
|
|
|
this.getIframeWorksData();
|
|
|
- });
|
|
|
+ });
|
|
|
}
|
|
|
},
|
|
|
openWordCloud() {
|
|
@@ -2097,7 +2097,7 @@ export default {
|
|
|
},
|
|
|
StudentWork(item){
|
|
|
console.log('item',item);
|
|
|
-
|
|
|
+
|
|
|
if (this.toolType == 57) {
|
|
|
this.$message('投影下不可查看')
|
|
|
return
|
|
@@ -2174,8 +2174,8 @@ export default {
|
|
|
JSON.stringify(this.worksStudentData[this.toolIndex])
|
|
|
);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
this.noWorksStudent = JSON.parse(
|
|
|
JSON.stringify(this.noWorksSData[this.toolIndex])
|
|
|
);
|
|
@@ -2220,7 +2220,7 @@ export default {
|
|
|
this.radioS[i].push('')
|
|
|
})
|
|
|
})
|
|
|
-
|
|
|
+
|
|
|
//把题目选项点击隐藏写好
|
|
|
this.testData.sentenceList.forEach((e,i)=>{
|
|
|
this.isShowList.push([])
|
|
@@ -2242,7 +2242,7 @@ export default {
|
|
|
})
|
|
|
}else if (this.toolType == 69) {
|
|
|
console.log('this.testJsonCopy',this.testJsonCopy);
|
|
|
-
|
|
|
+
|
|
|
// if (this.testJsonCopy.length) {
|
|
|
// this.myAnswerList1 = JSON.parse(this.testJsonCopy[0].works)
|
|
|
// } else {
|
|
@@ -2257,13 +2257,13 @@ export default {
|
|
|
}else if (this.toolType == 70) { //英语口语
|
|
|
|
|
|
if (this.testJsonCopy.length) {
|
|
|
- this.englishVoiceJsonWork = JSON.parse(this.testJsonCopy.works)
|
|
|
+ this.englishVoiceJsonWork = JSON.parse(this.testJsonCopy[0].works)
|
|
|
} else {
|
|
|
this.englishVoiceJsonWork = [];
|
|
|
}
|
|
|
|
|
|
console.log('this.testData',this.testData);
|
|
|
-
|
|
|
+
|
|
|
let englishVoiceJson = {}
|
|
|
englishVoiceJson = this.testData.englishVoiceJson
|
|
|
? this.testData.englishVoiceJson
|
|
@@ -2278,7 +2278,7 @@ export default {
|
|
|
// console.log('groupStudentUid',this.groupStudentUid);
|
|
|
|
|
|
// console.log('this.testData',this.testData);
|
|
|
-
|
|
|
+
|
|
|
|
|
|
this.groupJson = this.testData.groupJson;
|
|
|
this.islock = this.groupJson.islock == 1 ? true : false;
|
|
@@ -2381,19 +2381,19 @@ export default {
|
|
|
type:"2"
|
|
|
}
|
|
|
let _iframe = this.$refs.iframeMainMapRef;
|
|
|
-
|
|
|
+
|
|
|
|
|
|
this.ajax.get(this.$store.state.api+"selectWord2",params).then(res=>{
|
|
|
let _data = res.data[0]
|
|
|
// console.log('_data',_data);
|
|
|
console.log('_data[0].text',_data[0].text)
|
|
|
console.log('JSON.parse(_data[0].text',JSON.parse(_data[0].text))
|
|
|
-
|
|
|
+
|
|
|
// this.$nextTick(()=>{
|
|
|
// _iframe.onload = () =>{
|
|
|
console.log("思维导图iframe加载数据👈")
|
|
|
// iframe.contentWindow.editor.minder.importData('json', JSON.parse(xmlhttp.response)[0][0].text)
|
|
|
-
|
|
|
+
|
|
|
if(_data[0]){
|
|
|
_iframe.contentWindow.editor.minder.importData('json',_data[0].text)
|
|
|
}
|
|
@@ -2411,7 +2411,7 @@ export default {
|
|
|
});
|
|
|
// }
|
|
|
|
|
|
- // })
|
|
|
+ // })
|
|
|
|
|
|
})
|
|
|
}else if([1].includes(this.toolType)){ //电子白板ok
|
|
@@ -2425,12 +2425,12 @@ export default {
|
|
|
}
|
|
|
let _iframe = this.$refs.iframeWhiteBoardRef;
|
|
|
console.log('电子白板_iframe',_iframe);
|
|
|
-
|
|
|
+
|
|
|
this.ajax.get(this.$store.state.api+"selectWord2",params).then(res=>{
|
|
|
let _data = res.data[0]
|
|
|
console.log('_data',_data);
|
|
|
-
|
|
|
- // this.$nextTick(()=>{
|
|
|
+
|
|
|
+ // this.$nextTick(()=>{
|
|
|
let onloadListener = _iframe.onload = () =>{
|
|
|
console.log("电子白板iframe加载数据👈")
|
|
|
if(_data[0]){
|
|
@@ -2438,7 +2438,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
console.log(' _iframe.contentWindow', _iframe.contentWindow);
|
|
|
-
|
|
|
+
|
|
|
const scripts = [
|
|
|
"https://cloud.cocorobo.cn/js/Common/jquery-3.6.0.min.js",
|
|
|
"https://cloud.cocorobo.cn/js/Common/aws-sdk-2.235.1.min.js",
|
|
@@ -2474,7 +2474,7 @@ export default {
|
|
|
this.ajax.get(this.$store.state.api+"selectWordsY",params).then(res=>{
|
|
|
let _data = res.data[0]
|
|
|
console.log('_data',_data[0]);
|
|
|
-
|
|
|
+
|
|
|
_iframe.contentWindow.loadingXml(_data[0].text)
|
|
|
|
|
|
})
|
|
@@ -2501,7 +2501,7 @@ export default {
|
|
|
|
|
|
this.AIUrl=`https://cloud.cocorobo.cn/aigpt/?userid=${this.userId}&oid=${this.oid}&org=${this.org}&role=0#/AgentVue`
|
|
|
console.log("AI智能体iframe加载数据👈")
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
},
|
|
|
}
|