|
@@ -18,6 +18,7 @@
|
|
|
:key="item.value"
|
|
|
:class="{ s_b_m_t_l_active: showType === item.value }"
|
|
|
@click="changeShowType(item.value)"
|
|
|
+ v-if="item.showType.includes(toolType)"
|
|
|
>{{ item.label }}</span
|
|
|
>
|
|
|
</div>
|
|
@@ -26,39 +27,23 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="s_b_m_bottom">
|
|
|
- <div class="s_b_m_b_item" v-if="showType === 0">
|
|
|
+ <div class="s_b_m_b_item" v-if="showType === 0 && dialogTypeList[0].showType.includes(toolType)">
|
|
|
<div class="s_b_m_b_i_main">
|
|
|
<div class="s_b_m_b_i_m_title" v-if="testData">
|
|
|
<div>
|
|
|
- <svg
|
|
|
- t="1731461684123"
|
|
|
- class="icon"
|
|
|
- viewBox="0 0 1024 1024"
|
|
|
- version="1.1"
|
|
|
- xmlns="http://www.w3.org/2000/svg"
|
|
|
- p-id="4452"
|
|
|
- width="200"
|
|
|
- height="200"
|
|
|
- >
|
|
|
- <path
|
|
|
- d="M361.425 318.506h389.4v427.6h-389.4z"
|
|
|
- fill="#CFD5F8"
|
|
|
- p-id="4453"
|
|
|
- ></path>
|
|
|
- <path
|
|
|
- d="M773.825 514.306h-293.3v-48.1h293.3v48.1z m0-216.4h-293.3v48.1h293.3v-48.1z m0 336.7h-293.3v48.1h293.3v-48.1z m-415.5-168.4c-13.3 0.2-23.9 11.2-23.7 24.4 0.2 13.3 11.2 23.9 24.4 23.7 13.1-0.2 23.7-10.9 23.7-24 0-13.3-10.8-24.1-24-24.1h-0.4m0-48.1c39.8 0.6 71.6 33.5 71 73.3s-33.5 71.6-73.3 71c-39.4-0.6-71-32.7-71-72.2 0-39.9 32.3-72.2 72.2-72.2 0.3 0.1 0.7 0.1 1.1 0.1z m0-120.2c-13.3 0.2-23.9 11.2-23.7 24.4 0.2 13.3 11.2 23.9 24.4 23.7 13.1-0.2 23.7-10.9 23.7-24 0-13.3-10.8-24.1-24.1-24.1h-0.3m0-48.1c39.8 0.6 71.6 33.5 71 73.3s-33.5 71.6-73.3 71c-39.4-0.6-71-32.8-71-72.2 0-39.9 32.3-72.2 72.1-72.2 0.4 0 0.8 0 1.2 0.1z m0 384.8c-13.3 0.2-23.9 11.2-23.7 24.4 0.2 13.3 11.2 23.9 24.4 23.7 13.1-0.2 23.7-10.9 23.7-24 0-13.3-10.8-24.1-24-24.1h-0.4m0-48.2c39.8 0.6 71.6 33.5 71 73.3-0.6 39.8-33.5 71.6-73.3 71-39.4-0.6-71-32.7-71-72.2 0-39.9 32.3-72.2 72.2-72.2 0.3 0.1 0.7 0.1 1.1 0.1z"
|
|
|
- fill="#486EFF"
|
|
|
- p-id="4454"
|
|
|
- ></path>
|
|
|
- </svg>
|
|
|
- <span>选择题</span>
|
|
|
+
|
|
|
+ <img :src="toolList.find(item=>item.value===toolType).img" alt/>
|
|
|
+
|
|
|
+ <span>{{ toolList.find(item=>item.value===toolType).label }}</span>
|
|
|
</div>
|
|
|
<span v-if="testData.toolDetail">{{ testData.toolDetail }}</span>
|
|
|
+ <span v-else>无</span>
|
|
|
</div>
|
|
|
|
|
|
<span>题目内容</span>
|
|
|
|
|
|
<div
|
|
|
+ v-if="[45].includes(toolType)"
|
|
|
class="s_b_m_b_i_m_choseList"
|
|
|
v-for="(item, index) in testJson"
|
|
|
>
|
|
@@ -133,9 +118,86 @@
|
|
|
</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div v-if="[15].includes(toolType)" class="s_b_m_b_i_m_question">
|
|
|
+ <div class="s_b_m_b_i_m_c_title">
|
|
|
+ <span>{{1 }}</span>
|
|
|
+ <svg
|
|
|
+ width="16"
|
|
|
+ height="16"
|
|
|
+ viewBox="0 0 16 16"
|
|
|
+ fill="none"
|
|
|
+ xmlns="http://www.w3.org/2000/svg"
|
|
|
+ >
|
|
|
+ <path
|
|
|
+ d="M15.3536 8.35355C15.5488 8.15829 15.5488 7.84171 15.3536 7.64645L12.1716 4.46447C11.9763 4.2692 11.6597 4.2692 11.4645 4.46447C11.2692 4.65973 11.2692 4.97631 11.4645 5.17157L14.2929 8L11.4645 10.8284C11.2692 11.0237 11.2692 11.3403 11.4645 11.5355C11.6597 11.7308 11.9763 11.7308 12.1716 11.5355L15.3536 8.35355ZM1 8.5H15V7.5H1V8.5Z"
|
|
|
+ fill="#3681FC"
|
|
|
+ />
|
|
|
+ </svg>
|
|
|
+
|
|
|
+ <span>提问:{{ testData.answerQ }}</span>
|
|
|
+ </div>
|
|
|
+ <span>
|
|
|
+
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div v-if="[41].includes(toolType)" class="s_b_m_b_i_m_selectiveMatching">
|
|
|
+ <div class="sm_left">
|
|
|
+ <img :src="testData.selectJson.url" alt="" @click="$hevueImgPreview(testData.selectJson.url)">
|
|
|
+ </div>
|
|
|
+ <div class="sm_right">
|
|
|
+ <div class="sm_right_item" v-for="(item,index) in testData.selectJson.answer">
|
|
|
+ <el-select v-model="testData.selectJson.answer[index]" placeholder="请选择">
|
|
|
+ <el-option
|
|
|
+ v-for="(item2,index2) in testData.selectJson.select"
|
|
|
+ :disabled="item!==index2"
|
|
|
+ :key="index2"
|
|
|
+ :label="item2"
|
|
|
+ :value="index2">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div
|
|
|
+
|
|
|
+ >
|
|
|
+
|
|
|
+ <div v-if="[47].includes(toolType)" class="s_b_m_b_i_m_sorting">
|
|
|
+ <div class="sortingItem" v-for="(item,index) in testData.sentenceList" :key="index">
|
|
|
+ <div class="s_b_m_b_i_m_c_title">
|
|
|
+ <span>{{ index + 1 }}</span>
|
|
|
+ <svg
|
|
|
+ width="16"
|
|
|
+ height="16"
|
|
|
+ viewBox="0 0 16 16"
|
|
|
+ fill="none"
|
|
|
+ xmlns="http://www.w3.org/2000/svg"
|
|
|
+ >
|
|
|
+ <path
|
|
|
+ d="M15.3536 8.35355C15.5488 8.15829 15.5488 7.84171 15.3536 7.64645L12.1716 4.46447C11.9763 4.2692 11.6597 4.2692 11.4645 4.46447C11.2692 4.65973 11.2692 4.97631 11.4645 5.17157L14.2929 8L11.4645 10.8284C11.2692 11.0237 11.2692 11.3403 11.4645 11.5355C11.6597 11.7308 11.9763 11.7308 12.1716 11.5355L15.3536 8.35355ZM1 8.5H15V7.5H1V8.5Z"
|
|
|
+ fill="#3681FC"
|
|
|
+ />
|
|
|
+ </svg>
|
|
|
+
|
|
|
+ <span>{{ item.sentenceTitle?item.sentenceTitle:"无标题" }}</span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="si_box">
|
|
|
+ <!-- <span v-for="(item2,index2) in item.sentenceContent" :key="index2">{{ item2 }}</span> -->
|
|
|
+ <div class="si_b_top">
|
|
|
+ <span class="si_b_t_item" v-for="(item2,index2) in item.addSentence" :key="index2">{{ item.rightAnswer[index2] }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="si_b_bottom">
|
|
|
+ <span class="si_b_b_item" v-for="(item2,index2) in item.rightAnswer" :key="index2">{{ item2 }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|
|
|
</div>
|
|
|
- <div class="s_b_m_b_item" v-if="showType === 1">
|
|
|
+ <div class="s_b_m_b_item" v-if="showType === 1 && dialogTypeList[1].showType.includes(toolType)">
|
|
|
|
|
|
<div class="s_b_m_b_i_eChartsArea">
|
|
|
<div class="s_b_m_b_i_e_title">
|
|
@@ -207,8 +269,8 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="s_b_m_b_item s_b_m_b_worksSubmit" v-if="showType === 2">
|
|
|
- <div class="s_b_b_i_noSubmit">
|
|
|
+ <div class="s_b_m_b_item s_b_m_b_worksSubmit" v-if="showType === 2 && dialogTypeList[2].showType.includes(toolType)">
|
|
|
+ <div class="s_b_b_i_noSubmit" v-if="[45,15,41,47].includes(toolType)">
|
|
|
<div class="s_b_b_i_ws_top">
|
|
|
<div class="s_b_b_i_ws_t_left">
|
|
|
<div @click="foldList.noSubmit = !foldList.noSubmit">
|
|
@@ -233,7 +295,7 @@
|
|
|
</div>
|
|
|
<div class="s_b_b_i_ws_t_right"></div>
|
|
|
</div>
|
|
|
- <div class="s_b_b_i_ws_bottom" v-show="!foldList.noSubmit">
|
|
|
+ <div class="s_b_b_i_ws_bottom" v-show="!foldList.noSubmit" >
|
|
|
<div
|
|
|
class="s_b_b_i_ws_b_noSubmitItem"
|
|
|
v-if="noWorksStudent.length > 0"
|
|
@@ -247,7 +309,7 @@
|
|
|
>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="s_b_b_i_worksPreview">
|
|
|
+ <div class="s_b_b_i_worksPreview" v-if="[45,15,41,47].includes(toolType)">
|
|
|
<div class="s_b_b_i_ws_top">
|
|
|
<div class="s_b_b_i_ws_t_left">
|
|
|
<div
|
|
@@ -281,7 +343,7 @@
|
|
|
v-for="item in worksStudent"
|
|
|
:key="item.userid"
|
|
|
>
|
|
|
- <div class="s_b_b_i_ws_b_i_s_i_t_top" @click="openTools(item)">
|
|
|
+ <div class="s_b_b_i_ws_b_i_s_i_t_top" :style="`cursor: ${[45].includes(toolType)?'pointer':'default'}`" @click="openTools(item)">
|
|
|
<div
|
|
|
class="s_b_b_i_ws_b_i_s_i_t_t_delIcon"
|
|
|
@click.stop="deleteWorks(item.wid)"
|
|
@@ -291,7 +353,11 @@
|
|
|
|
|
|
<div class="s_b_b_i_ws_b_i_s_i_t_t_answer">
|
|
|
|
|
|
- <span v-for="(answer,answerIndex) in worksCheckAnswer(item)" :key="item.userid+'-'+answerIndex+'-'+answer.index">
|
|
|
+
|
|
|
+
|
|
|
+ <span v-if="[15].includes(toolType)" class="questionsAndAnswersSpan">{{ questionsAndAnswers(item) }}</span>
|
|
|
+
|
|
|
+ <span v-for="(answer,answerIndex) in worksCheckAnswer(item)" :key="item.userid+'-'+answerIndex+'-'+answer.index" v-if="[45].includes(toolType)">
|
|
|
<span v-if="answer.type===1" v-for="item2 in answer.label" :key="answer.index+'-'+item.userid+'-1'">
|
|
|
<span :class="`${item2.right?'answerRight':'answerWrong'}`">{{ item2.label }}</span>
|
|
|
</span>
|
|
@@ -300,6 +366,10 @@
|
|
|
</span>
|
|
|
</span>
|
|
|
|
|
|
+ <div class="answerSelect" v-if="[41].includes(toolType)">
|
|
|
+ <span v-for="(item2,index2) in item.works.split(',')" :key="index2" :class="`${testData.selectJson.answer[index2]===parseInt(item2)?'answerRight':'answerWrong'}`">{{ optionTypeList[item2] }}</span>
|
|
|
+ </div>
|
|
|
+
|
|
|
<!-- <span>{{ worksCheckAnswer(item) }}</span> -->
|
|
|
</div>
|
|
|
</div>
|
|
@@ -348,7 +418,7 @@ export default {
|
|
|
default: () => []
|
|
|
},
|
|
|
courseType: {
|
|
|
- type: String,
|
|
|
+ type: String || Number,
|
|
|
default: ""
|
|
|
},
|
|
|
taskCount: {
|
|
@@ -367,15 +437,33 @@ export default {
|
|
|
toolIndex: null,
|
|
|
worksStudent: [],
|
|
|
noWorksStudent: [],
|
|
|
+ toolType:null,
|
|
|
foldList: {
|
|
|
noSubmit: false,
|
|
|
worksPreview: false
|
|
|
},
|
|
|
dialogTypeList: [
|
|
|
- { label: "作业详细", value: 0, loading: false },
|
|
|
- { label: "题目统计", value: 1, loading: false },
|
|
|
- { label: "学生统计", value: 2, loading: false }
|
|
|
+ { label: "作业详细", value: 0,showType:[45,15,41,47], loading: false },
|
|
|
+ { label: "题目统计", value: 1,showType:[45], loading: false },
|
|
|
+ { label: "学生统计", value: 2,showType:[45,15,41,47], loading: false }
|
|
|
],
|
|
|
+ // toolTypeList:{
|
|
|
+ // 41:"选择匹配",
|
|
|
+ // 45:"选择题",
|
|
|
+ // 15:"问答题",
|
|
|
+ // 47:"排序",
|
|
|
+ // },
|
|
|
+ // toolImageList:{
|
|
|
+ // 15:require("../../assets/icon/thirdToolList/answer.png")
|
|
|
+ // 41:require("../../assets/icon/thirdToolList/select.png"),
|
|
|
+ // 47:require("../../assets/icon/fourthToolList/conSentences.png")
|
|
|
+ // },
|
|
|
+ toolList:[
|
|
|
+ {label:"选择题",value:45,img:require("../../assets/icon/thirdToolList/choose.png")},
|
|
|
+ {label:"问答题",value:15,img:require("../../assets/icon/thirdToolList/answer.png")},
|
|
|
+ {label:"选择匹配",value:41,img:require("../../assets/icon/thirdToolList/select.png")},
|
|
|
+ {label:"排序",value:47,img:require("../../assets/icon/fourthToolList/conSentences.png")}
|
|
|
+ ],
|
|
|
statisticsTypeList:[
|
|
|
{label:"准确率",value:0},
|
|
|
{label:"选项汇总",value:1}
|
|
@@ -386,7 +474,7 @@ export default {
|
|
|
computed: {
|
|
|
tableData() {
|
|
|
let _result = [];
|
|
|
- if (this.show && this.toolIndex !== null) {
|
|
|
+ if (this.show && this.toolIndex !== null && [45].includes(this.toolType)) {
|
|
|
let worksJson = [];
|
|
|
if (this.testJson) {
|
|
|
worksJson = JSON.parse(JSON.stringify(this.testJson));
|
|
@@ -528,7 +616,8 @@ export default {
|
|
|
worksCheckAnswer(){
|
|
|
return data=>{
|
|
|
let _result = [];
|
|
|
- let works = JSON.parse(data.works);
|
|
|
+ if([45].includes(this.toolType)){
|
|
|
+ let works = JSON.parse(data.works);
|
|
|
let testJson = works[0].testJson.testJson;
|
|
|
let worksAnswer = works[0].anwer;
|
|
|
|
|
@@ -559,10 +648,20 @@ export default {
|
|
|
})
|
|
|
|
|
|
_result = answerList;
|
|
|
- // _result = works[0].anwer;
|
|
|
-
|
|
|
-
|
|
|
+ }
|
|
|
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ questionsAndAnswers(){
|
|
|
+ return data=>{
|
|
|
+ let _result = "";
|
|
|
+ if([15].includes(this.toolType)){
|
|
|
+ let _work = data.works?JSON.parse(data.works)[0]:null;
|
|
|
+ if(_work){
|
|
|
+ _result = _work.answer;
|
|
|
+ }
|
|
|
+ }
|
|
|
return _result;
|
|
|
}
|
|
|
}
|
|
@@ -608,6 +707,7 @@ export default {
|
|
|
this.show = true;
|
|
|
this.data = data;
|
|
|
this.toolIndex = data.toolIndex;
|
|
|
+ this.toolType = data.toolType;
|
|
|
this.setData();
|
|
|
},
|
|
|
setData() {
|
|
@@ -640,6 +740,7 @@ export default {
|
|
|
this.noWorksStudent = [];
|
|
|
this.toolIndex = null;
|
|
|
this.testData = null;
|
|
|
+ this.toolType = null;
|
|
|
this.foldList = {
|
|
|
noSubmit: false,
|
|
|
worksPreview: false
|
|
@@ -661,7 +762,9 @@ export default {
|
|
|
this.dialogTypeList[2].loading = true;
|
|
|
},
|
|
|
openTools(data){
|
|
|
- this.$emit("openTools",45,this.toolIndex,this.taskCount,data.works,data.sName)
|
|
|
+ if([45].includes(this.toolType)){
|
|
|
+ this.$emit("openTools",this.toolType,this.toolIndex,this.taskCount,data.works,data.sName)
|
|
|
+ }
|
|
|
},
|
|
|
changeShowStatisticsType(type){
|
|
|
this.showStatisticsType = type;
|
|
@@ -675,13 +778,15 @@ export default {
|
|
|
}})
|
|
|
},
|
|
|
splitScreenFn(data){
|
|
|
- console.log("splitScreenFn",data)
|
|
|
if(data.type!==undefined){
|
|
|
this.showType = data.type;
|
|
|
}
|
|
|
if(data.showStatisticsType!==undefined){
|
|
|
this.showStatisticsType = data.showStatisticsType;
|
|
|
}
|
|
|
+ if(data.toolType!==undefined){
|
|
|
+ this.toolType = data.toolType;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -819,6 +924,13 @@ export default {
|
|
|
margin-right: 5px;
|
|
|
}
|
|
|
|
|
|
+.s_b_m_b_i_m_title > div >img {
|
|
|
+ width: 50px;
|
|
|
+ height: 50px;
|
|
|
+ margin: 5px;
|
|
|
+ margin-right: 5px;
|
|
|
+}
|
|
|
+
|
|
|
.s_b_m_b_i_m_title > div > span {
|
|
|
font-size: 20px;
|
|
|
font-weight: bold;
|
|
@@ -1034,7 +1146,6 @@ export default {
|
|
|
#e3eeff 100%
|
|
|
);
|
|
|
position: relative;
|
|
|
- cursor: pointer;
|
|
|
overflow: auto;
|
|
|
}
|
|
|
|
|
@@ -1220,7 +1331,129 @@ export default {
|
|
|
border-radius: 4px;
|
|
|
}
|
|
|
|
|
|
+.questionsAndAnswersSpan{
|
|
|
+ font-size: 18px;
|
|
|
+}
|
|
|
|
|
|
+.s_b_m_b_i_m_question{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 10px 0 10px 15px;
|
|
|
+}
|
|
|
+
|
|
|
+.s_b_m_b_i_m_question>span{
|
|
|
+ width: 100%;
|
|
|
+ height: 150px;
|
|
|
+ display: block;
|
|
|
+ margin-top: 15px;
|
|
|
+ border-radius: 10px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 2px;
|
|
|
+ border: solid 1px #d7d9e0;
|
|
|
+}
|
|
|
+
|
|
|
+.s_b_m_b_i_m_selectiveMatching{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ padding-left: 15px;
|
|
|
+ display: flex;
|
|
|
+}
|
|
|
+
|
|
|
+.sm_left{
|
|
|
+ width: calc(100% - 300px);
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.sm_left>img{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ cursor: pointer;
|
|
|
+ border-radius: 2px;
|
|
|
+}
|
|
|
+
|
|
|
+.sm_right{
|
|
|
+ width: 300px;
|
|
|
+ min-height: 600px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 10px;
|
|
|
+ height: auto;
|
|
|
+ overflow: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.sm_right_item{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+
|
|
|
+.sm_right_item>>>.el-select{
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.answerSelect>span{
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ margin: 2px 4px;
|
|
|
+ display: block;
|
|
|
+ float: left;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+.s_b_m_b_i_m_sorting{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding-left: 15px;
|
|
|
+}
|
|
|
+
|
|
|
+.sortingItem{
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.si_box{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.si_b_top{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ margin-top: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.si_b_top>span{
|
|
|
+ font-size: 24px;
|
|
|
+ margin-right: 20px;
|
|
|
+ padding: 10px 40px;
|
|
|
+ border: dashed 2px #d7d9e0;
|
|
|
+ border-radius: 5px;
|
|
|
+ color: #ebedf3;
|
|
|
+ font-weight: bold;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+
|
|
|
+.si_b_bottom{
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ margin-top: 40px;
|
|
|
+}
|
|
|
+
|
|
|
+.si_b_bottom>span{
|
|
|
+ font-size: 24px;
|
|
|
+ margin-right: 20px;
|
|
|
+ padding: 10px 40px;
|
|
|
+ border: solid 2px #A3C7F9;
|
|
|
+ border-radius: 5px;
|
|
|
+ color: black;
|
|
|
+ font-weight: bold;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
|
|
|
/* F9FAFB */
|
|
|
|