|
@@ -1,5 +1,9 @@
|
|
<template>
|
|
<template>
|
|
- <div class="pbl" :style='{padding: isStu == 2 ? 0 : "0 50px 20px"}' v-loading="loading">
|
|
|
|
|
|
+ <div
|
|
|
|
+ class="pbl"
|
|
|
|
+ :style="{ padding: isStu == 2 ? 0 : '0 50px 20px' }"
|
|
|
|
+ v-loading="loading"
|
|
|
|
+ >
|
|
<div class="titBri">
|
|
<div class="titBri">
|
|
<div class="claInfo">
|
|
<div class="claInfo">
|
|
<img style="height: 100%;" src="../../../assets/avatar.png" alt="" />
|
|
<img style="height: 100%;" src="../../../assets/avatar.png" alt="" />
|
|
@@ -10,7 +14,14 @@
|
|
/> -->
|
|
/> -->
|
|
<span>{{ userName }}</span>
|
|
<span>{{ userName }}</span>
|
|
<span>{{ courseName }}</span>
|
|
<span>{{ courseName }}</span>
|
|
- <el-button v-if="isStu != 2" size="small" type="primary" style="margin-left: 10px;height: 25px;line-height: 8px;" @click="expPdf">导出</el-button>
|
|
|
|
|
|
+ <el-button
|
|
|
|
+ v-if="isStu != 2"
|
|
|
|
+ size="small"
|
|
|
|
+ type="primary"
|
|
|
|
+ style="margin-left: 10px;height: 25px;line-height: 8px;"
|
|
|
|
+ @click="expPdf"
|
|
|
|
+ >导出</el-button
|
|
|
|
+ >
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div v-if="isStu == 0">
|
|
<div v-if="isStu == 0">
|
|
@@ -52,13 +63,12 @@
|
|
<el-menu-item
|
|
<el-menu-item
|
|
v-for="(k, kin) in i.taskList"
|
|
v-for="(k, kin) in i.taskList"
|
|
:key="k.id"
|
|
:key="k.id"
|
|
- :index="i.id+'-'+k.id"
|
|
|
|
|
|
+ :index="i.id + '-' + k.id"
|
|
style="display: flex; align-items: center"
|
|
style="display: flex; align-items: center"
|
|
|
|
+ @click="positT(k.id)"
|
|
>
|
|
>
|
|
- <div @click.stop="positT(k.id)" class="TitBti">
|
|
|
|
- 任务{{ kin + 1 }}
|
|
|
|
- </div>
|
|
|
|
- <div @click.stop="positT(k.id)" class="eliP">
|
|
|
|
|
|
+ <div class="TitBti">任务{{ kin + 1 }}</div>
|
|
|
|
+ <div class="eliP">
|
|
{{ k.name }}
|
|
{{ k.name }}
|
|
</div>
|
|
</div>
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
@@ -76,7 +86,9 @@
|
|
v-if="isStage(i.taskList)"
|
|
v-if="isStage(i.taskList)"
|
|
class="stageCon"
|
|
class="stageCon"
|
|
>
|
|
>
|
|
- <div v-if="CState != 5" class="stageTit">阶段{{ i.id + 1 }}:{{ i.name }}</div>
|
|
|
|
|
|
+ <div v-if="CState != 5" class="stageTit">
|
|
|
|
+ 阶段{{ i.id + 1 }}:{{ i.name }}
|
|
|
|
+ </div>
|
|
|
|
|
|
<div
|
|
<div
|
|
v-for="(k, kIndex) in i.taskList"
|
|
v-for="(k, kIndex) in i.taskList"
|
|
@@ -307,7 +319,18 @@
|
|
v-for="(i, index) in l.content[0].testJson"
|
|
v-for="(i, index) in l.content[0].testJson"
|
|
:key="index + 'm'"
|
|
:key="index + 'm'"
|
|
>
|
|
>
|
|
- <div>题目:{{ i.teststitle }}</div>
|
|
|
|
|
|
+ <div>
|
|
|
|
+ 题目:{{ i.teststitle }}
|
|
|
|
+ <span
|
|
|
|
+ v-if="
|
|
|
|
+ JSON.stringify(l.content[0].radio[index]) ==
|
|
|
|
+ JSON.stringify(i.answer)
|
|
|
|
+ "
|
|
|
|
+ style="color: #868ce4"
|
|
|
|
+ >回答正确</span
|
|
|
|
+ >
|
|
|
|
+ <span v-else style="color: red">回答错误</span>
|
|
|
|
+ </div>
|
|
<div
|
|
<div
|
|
v-if="i.type == 1"
|
|
v-if="i.type == 1"
|
|
style="display: flex; flex-direction: column"
|
|
style="display: flex; flex-direction: column"
|
|
@@ -392,6 +415,7 @@
|
|
<div v-if="l.tool[0] == 41">
|
|
<div v-if="l.tool[0] == 41">
|
|
<div class="toolBlk">
|
|
<div class="toolBlk">
|
|
<img
|
|
<img
|
|
|
|
+ class="toolImg"
|
|
src="../../../assets/icon/thirdToolList/select.png"
|
|
src="../../../assets/icon/thirdToolList/select.png"
|
|
alt=""
|
|
alt=""
|
|
/>
|
|
/>
|
|
@@ -417,9 +441,68 @@
|
|
>{{ item }}</span
|
|
>{{ item }}</span
|
|
>
|
|
>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div style="margin: 10px 0;">
|
|
|
|
+ <span style="margin-right: 10px">回答:</span>
|
|
|
|
+
|
|
|
|
+ <div
|
|
|
|
+ style="margin-right: 10px"
|
|
|
|
+ v-for="(item, itInd) in l.content[0]"
|
|
|
|
+ :key="itInd"
|
|
|
|
+ >
|
|
|
|
+ 选项{{ itInd + 1 }}:{{ l.selectJson.select[item] }}
|
|
|
|
+ <span
|
|
|
|
+ v-if="
|
|
|
|
+ l.selectJson.answer[itInd] == l.content[0][itInd]
|
|
|
|
+ "
|
|
|
|
+ style="color: #868ce4"
|
|
|
|
+ >回答正确</span
|
|
|
|
+ >
|
|
|
|
+ <span v-else style="color: red">回答错误</span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
<div>
|
|
<div>
|
|
<span style="margin-right: 10px">答案:</span>
|
|
<span style="margin-right: 10px">答案:</span>
|
|
|
|
|
|
|
|
+ <span
|
|
|
|
+ style="margin-right: 10px"
|
|
|
|
+ v-for="(item, itInd) in l.selectJson.answer"
|
|
|
|
+ :key="itInd"
|
|
|
|
+ >选项{{ itInd + 1 }}:{{
|
|
|
|
+ l.selectJson.select[item]
|
|
|
|
+ }}</span
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- <div v-if="l.tool[0] == 41">
|
|
|
|
+ <div class="toolBlk">
|
|
|
|
+ <img
|
|
|
|
+ src="../../../assets/icon/thirdToolList/select.png"
|
|
|
|
+ alt=""
|
|
|
|
+ />
|
|
|
|
+ <div class="toolTit">
|
|
|
|
+ <div>工具{{ lind + 1 }}:选择匹配</div>
|
|
|
|
+ <div>
|
|
|
|
+ 根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <img
|
|
|
|
+ @click.stop="previewImg(l.selectJson.url)"
|
|
|
|
+ style="max-width: 200px"
|
|
|
|
+ :src="l.selectJson.url"
|
|
|
|
+ alt=""
|
|
|
|
+ />
|
|
|
|
+ <div>
|
|
|
|
+ <span style="margin-right: 10px">选项:</span
|
|
|
|
+ ><span
|
|
|
|
+ style="margin-right: 10px"
|
|
|
|
+ v-for="(item, itInd) in l.selectJson.select"
|
|
|
|
+ :key="itInd"
|
|
|
|
+ >{{ item }}</span
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ <div>
|
|
|
|
+ <span style="margin-right: 10px">学生回答:</span>
|
|
<span
|
|
<span
|
|
style="margin-right: 10px"
|
|
style="margin-right: 10px"
|
|
v-for="(item, itInd) in l.content[0]"
|
|
v-for="(item, itInd) in l.content[0]"
|
|
@@ -427,7 +510,7 @@
|
|
>{{ itInd + 1 }}、{{ l.selectJson.select[item] }}</span
|
|
>{{ itInd + 1 }}、{{ l.selectJson.select[item] }}</span
|
|
>
|
|
>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
|
|
+ </div> -->
|
|
|
|
|
|
<!-- 排序 -->
|
|
<!-- 排序 -->
|
|
<div v-if="l.tool[0] == 47">
|
|
<div v-if="l.tool[0] == 47">
|
|
@@ -519,10 +602,7 @@
|
|
<!-- 作业评分 -->
|
|
<!-- 作业评分 -->
|
|
<div class="taskScoCon">
|
|
<div class="taskScoCon">
|
|
<!-- 分数详情与素养 -->
|
|
<!-- 分数详情与素养 -->
|
|
- <div
|
|
|
|
- v-if="l.eList"
|
|
|
|
- class="taskScoConEList"
|
|
|
|
- >
|
|
|
|
|
|
+ <div v-if="l.eList" class="taskScoConEList">
|
|
<div style="width: 49%; margin: 0 20px 10px 0">
|
|
<div style="width: 49%; margin: 0 20px 10px 0">
|
|
<div class="taskScoConTit">分数详情</div>
|
|
<div class="taskScoConTit">分数详情</div>
|
|
<div style="display: flex;flex-wrap: wrap;">
|
|
<div style="display: flex;flex-wrap: wrap;">
|
|
@@ -576,13 +656,14 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- 阶段 -->
|
|
<!-- 阶段 -->
|
|
<div
|
|
<div
|
|
class="taskSco"
|
|
class="taskSco"
|
|
- v-if="l.eList && CState != 5 && lind == k.toolEList.length - 1"
|
|
|
|
|
|
+ v-if="
|
|
|
|
+ l.eList && CState != 5 && lind == k.toolEList.length - 1
|
|
|
|
+ "
|
|
>
|
|
>
|
|
<div class="taskScoTit">
|
|
<div class="taskScoTit">
|
|
<div>
|
|
<div>
|
|
@@ -597,10 +678,7 @@
|
|
<!-- 作业评分 -->
|
|
<!-- 作业评分 -->
|
|
<div class="taskScoCon">
|
|
<div class="taskScoCon">
|
|
<!-- 分数详情与素养 -->
|
|
<!-- 分数详情与素养 -->
|
|
- <div
|
|
|
|
- v-if="l.eList"
|
|
|
|
- class="taskScoConEList"
|
|
|
|
- >
|
|
|
|
|
|
+ <div v-if="l.eList" class="taskScoConEList">
|
|
<div style="width: 49%; margin: 0 20px 10px 0">
|
|
<div style="width: 49%; margin: 0 20px 10px 0">
|
|
<div class="taskScoConTit">分数详情</div>
|
|
<div class="taskScoConTit">分数详情</div>
|
|
<div style="display: flex;flex-wrap: wrap;">
|
|
<div style="display: flex;flex-wrap: wrap;">
|
|
@@ -631,7 +709,11 @@
|
|
<div class="WorkConSY">
|
|
<div class="WorkConSY">
|
|
<div v-for="(wItem, ind) in l.eList" :key="ind + 's'">
|
|
<div v-for="(wItem, ind) in l.eList" :key="ind + 's'">
|
|
<div class="RootImgBlockSy">
|
|
<div class="RootImgBlockSy">
|
|
- <span v-if="wItem.target && wItem.target.length"> {{ wItem.target[wItem.target.length - 1] }}</span>
|
|
|
|
|
|
+ <span v-if="wItem.target && wItem.target.length">
|
|
|
|
+ {{
|
|
|
|
+ wItem.target[wItem.target.length - 1]
|
|
|
|
+ }}</span
|
|
|
|
+ >
|
|
<span v-else> {{ wItem.target }}</span>
|
|
<span v-else> {{ wItem.target }}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -654,9 +736,9 @@
|
|
{{ l.rate.content || l.rate.comment }}
|
|
{{ l.rate.content || l.rate.comment }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -675,7 +757,8 @@ export default {
|
|
type: String,
|
|
type: String,
|
|
default: ""
|
|
default: ""
|
|
},
|
|
},
|
|
- isStu: { // 0正常 1不显示上一个下一个 2不显示上一个下一个+导出
|
|
|
|
|
|
+ isStu: {
|
|
|
|
+ // 0正常 1不显示上一个下一个 2不显示上一个下一个+导出
|
|
type: Number,
|
|
type: Number,
|
|
default: 0
|
|
default: 0
|
|
}
|
|
}
|
|
@@ -700,7 +783,7 @@ export default {
|
|
CState: 0,
|
|
CState: 0,
|
|
tableData: [],
|
|
tableData: [],
|
|
loading: false,
|
|
loading: false,
|
|
- resData:{}
|
|
|
|
|
|
+ resData: {}
|
|
};
|
|
};
|
|
},
|
|
},
|
|
|
|
|
|
@@ -733,11 +816,11 @@ export default {
|
|
return isShow;
|
|
return isShow;
|
|
};
|
|
};
|
|
},
|
|
},
|
|
- isSU(){
|
|
|
|
|
|
+ isSU() {
|
|
return function(val) {
|
|
return function(val) {
|
|
let isShow = false;
|
|
let isShow = false;
|
|
// console.log('isSU',val);
|
|
// console.log('isSU',val);
|
|
-
|
|
|
|
|
|
+
|
|
val.forEach(e => {
|
|
val.forEach(e => {
|
|
if (e.target) {
|
|
if (e.target) {
|
|
isShow = true;
|
|
isShow = true;
|
|
@@ -772,9 +855,9 @@ export default {
|
|
this.uid = JSON.parse(JSON.stringify(this.studentId));
|
|
this.uid = JSON.parse(JSON.stringify(this.studentId));
|
|
|
|
|
|
// if (this.isStu == 0) {
|
|
// if (this.isStu == 0) {
|
|
- this.getWorks1();
|
|
|
|
|
|
+ this.getWorks1();
|
|
// } else {
|
|
// } else {
|
|
- // this.exportPdfSet();
|
|
|
|
|
|
+ // this.exportPdfSet();
|
|
// }
|
|
// }
|
|
},
|
|
},
|
|
watch: {
|
|
watch: {
|
|
@@ -785,15 +868,15 @@ export default {
|
|
this.uid = JSON.parse(JSON.stringify(this.studentId));
|
|
this.uid = JSON.parse(JSON.stringify(this.studentId));
|
|
|
|
|
|
// if (this.isStu == 0) {
|
|
// if (this.isStu == 0) {
|
|
- this.getWorks1();
|
|
|
|
|
|
+ this.getWorks1();
|
|
// } else {
|
|
// } else {
|
|
- // this.exportPdfSet();
|
|
|
|
|
|
+ // this.exportPdfSet();
|
|
// }
|
|
// }
|
|
}
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- expPdf(){
|
|
|
|
- this.$emit('childExportPdfSetBtn',{uid:this.uid,con:this.resData});
|
|
|
|
|
|
+ expPdf() {
|
|
|
|
+ this.$emit("childExportPdfSetBtn", { uid: this.uid, con: this.resData });
|
|
},
|
|
},
|
|
// 下一个
|
|
// 下一个
|
|
nxtPer() {
|
|
nxtPer() {
|
|
@@ -810,32 +893,30 @@ export default {
|
|
// 提交分数
|
|
// 提交分数
|
|
updateRate(stage, task, tool) {
|
|
updateRate(stage, task, tool) {
|
|
// console.log('updateRate',this.workList[stage].taskList[task].toolEList[tool]);
|
|
// console.log('updateRate',this.workList[stage].taskList[task].toolEList[tool]);
|
|
- let processedData = {}
|
|
|
|
|
|
+ let processedData = {};
|
|
|
|
|
|
- let elist = this.workList[stage].taskList[task].toolEList[tool].eList
|
|
|
|
|
|
+ let elist = this.workList[stage].taskList[task].toolEList[tool].eList;
|
|
|
|
|
|
- elist.forEach(e=>{
|
|
|
|
|
|
+ elist.forEach(e => {
|
|
if (this.CState == 5) {
|
|
if (this.CState == 5) {
|
|
- processedData[e.detail] = 0
|
|
|
|
- }else{
|
|
|
|
- processedData[e.value] = 0
|
|
|
|
|
|
+ processedData[e.detail] = 0;
|
|
|
|
+ } else {
|
|
|
|
+ processedData[e.value] = 0;
|
|
}
|
|
}
|
|
- })
|
|
|
|
-
|
|
|
|
- let RateData = this.workList[stage].taskList[task].toolEList[tool]
|
|
|
|
- .rate;
|
|
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ let RateData = this.workList[stage].taskList[task].toolEList[tool].rate;
|
|
|
|
|
|
for (const key in processedData) {
|
|
for (const key in processedData) {
|
|
- processedData[key] = RateData[key]
|
|
|
|
|
|
+ processedData[key] = RateData[key];
|
|
}
|
|
}
|
|
// console.log('processedData',JSON.parse(JSON.stringify(processedData)));
|
|
// console.log('processedData',JSON.parse(JSON.stringify(processedData)));
|
|
// console.log('RateData',JSON.parse(JSON.stringify(RateData)));
|
|
// console.log('RateData',JSON.parse(JSON.stringify(RateData)));
|
|
|
|
|
|
- processedData.content = RateData.content
|
|
|
|
|
|
+ processedData.content = RateData.content;
|
|
|
|
|
|
// console.log("processedData", processedData);
|
|
// console.log("processedData", processedData);
|
|
|
|
|
|
-
|
|
|
|
// console.log(stage, task, tool);
|
|
// console.log(stage, task, tool);
|
|
// return
|
|
// return
|
|
let params = {
|
|
let params = {
|
|
@@ -912,14 +993,13 @@ export default {
|
|
this.workEvaList = res.data[13];
|
|
this.workEvaList = res.data[13];
|
|
|
|
|
|
// console.log('res.data[0][0]',res.data[0][0]);
|
|
// console.log('res.data[0][0]',res.data[0][0]);
|
|
- this.resData = JSON.parse(JSON.stringify(res.data[0][0]))
|
|
|
|
-
|
|
|
|
|
|
+ this.resData = JSON.parse(JSON.stringify(res.data[0][0]));
|
|
|
|
+
|
|
this.courseName = res.data[0][0].course;
|
|
this.courseName = res.data[0][0].course;
|
|
this.CState = res.data[0][0].state;
|
|
this.CState = res.data[0][0].state;
|
|
|
|
|
|
var dyJSON = JSON.parse(res.data[0][0].chapters);
|
|
var dyJSON = JSON.parse(res.data[0][0].chapters);
|
|
// console.log('dyJSON',JSON.parse(JSON.stringify(dyJSON)));
|
|
// console.log('dyJSON',JSON.parse(JSON.stringify(dyJSON)));
|
|
-
|
|
|
|
|
|
|
|
let dyList = [];
|
|
let dyList = [];
|
|
for (var i = 0; i < dyJSON.length; i++) {
|
|
for (var i = 0; i < dyJSON.length; i++) {
|
|
@@ -1069,18 +1149,28 @@ export default {
|
|
});
|
|
});
|
|
|
|
|
|
// 将没有提交作业,但是有评分标准的数据填上数据,防止报错
|
|
// 将没有提交作业,但是有评分标准的数据填上数据,防止报错
|
|
- if (!l.rate && l.eList && l.eList.length && this.CState == 5) {
|
|
|
|
|
|
+ if (
|
|
|
|
+ !l.rate &&
|
|
|
|
+ l.eList &&
|
|
|
|
+ l.eList.length &&
|
|
|
|
+ this.CState == 5
|
|
|
|
+ ) {
|
|
l.rate = { content: "" };
|
|
l.rate = { content: "" };
|
|
l.eList.forEach(elp => {
|
|
l.eList.forEach(elp => {
|
|
l.rate[elp.detail] = 0;
|
|
l.rate[elp.detail] = 0;
|
|
});
|
|
});
|
|
- }else if ((!l.rate && l.eList && l.eList.length && this.CState != 5)) {
|
|
|
|
- l.rate = { content: "" };
|
|
|
|
- l.eList.forEach(elp => {
|
|
|
|
- l.rate[elp.value] = 0;
|
|
|
|
- });
|
|
|
|
|
|
+ } else if (
|
|
|
|
+ !l.rate &&
|
|
|
|
+ l.eList &&
|
|
|
|
+ l.eList.length &&
|
|
|
|
+ this.CState != 5
|
|
|
|
+ ) {
|
|
|
|
+ l.rate = { content: "" };
|
|
|
|
+ l.eList.forEach(elp => {
|
|
|
|
+ l.rate[elp.value] = 0;
|
|
|
|
+ });
|
|
}
|
|
}
|
|
- // }
|
|
|
|
|
|
+ // }
|
|
// if (!l.rate && l.eList && l.eList.length) {
|
|
// if (!l.rate && l.eList && l.eList.length) {
|
|
// l.rate = { content: "" };
|
|
// l.rate = { content: "" };
|
|
// l.eList.forEach(elp => {
|
|
// l.eList.forEach(elp => {
|
|
@@ -1109,8 +1199,8 @@ export default {
|
|
},
|
|
},
|
|
// 点击任务滑动跳转
|
|
// 点击任务滑动跳转
|
|
positT(val) {
|
|
positT(val) {
|
|
- console.log('666666');
|
|
|
|
-
|
|
|
|
|
|
+ console.log("666666");
|
|
|
|
+
|
|
let a = document.getElementById(val);
|
|
let a = document.getElementById(val);
|
|
if (a) {
|
|
if (a) {
|
|
a.scrollIntoView({
|
|
a.scrollIntoView({
|