|
@@ -88,7 +88,9 @@
|
|
|
<el-button class="btn" type="primary" @click="confirmPdf">确定</el-button>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 自定义导出作业pdf弹框 -->
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
<el-dialog
|
|
|
:visible.sync="worksDialog"
|
|
|
:before-close="handleClose"
|
|
@@ -100,6 +102,487 @@
|
|
|
<div style="color: #fff">{{dataJson.state == 5 ?"按任务导出" :'自定义导出' + ':' +dataJson.title }}</div>
|
|
|
</div>
|
|
|
|
|
|
+ <div class="worksDiaCon" ref="reportPdf">
|
|
|
+ <div style="margin-bottom: 30px;font-size: 42px;">
|
|
|
+ {{ dataJson.title }}
|
|
|
+ </div>
|
|
|
+ <!-- <div
|
|
|
+ v-for="(userP, upi) in pdfUser"
|
|
|
+ style="background-color: #fff;border-radius: 8px;margin-top: 10px;"
|
|
|
+ :key="upi + 'upi'"
|
|
|
+ >-->
|
|
|
+ <!-- <div style="padding: 10px;box-sizing: border-box;">
|
|
|
+ <h1>{{ userP.username }}</h1>
|
|
|
+ </div> -->
|
|
|
+
|
|
|
+ <div
|
|
|
+ v-for="(i, wip) in workList"
|
|
|
+
|
|
|
+ :key="i.id"
|
|
|
+ class="stageCon"
|
|
|
+ >
|
|
|
+ <!-- v-if="
|
|
|
+ isStage(i.taskList, userP.userid) &&
|
|
|
+ (chap.length ? chap.indexOf(wip) != -1 : true)
|
|
|
+ " -->
|
|
|
+ <div v-if="dataJson.state != 5" class="stageTit">
|
|
|
+ 第{{ i.id * 1 + 1 }}阶段<span v-if="i.name">:{{ i.name }}</span>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-for="k in i.taskList"
|
|
|
+ :key="k.task + 'a'"
|
|
|
+
|
|
|
+ style="margin-bottom: 15px"
|
|
|
+ >
|
|
|
+ <!-- v-if="isTask(k.toolEList, userP.userid, k)" -->
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div class="taskTitInd">
|
|
|
+ <span>任务{{ k.task + 1 }}</span>
|
|
|
+ <span>{{ k.taskTit }}</span>
|
|
|
+ </div>
|
|
|
+ <div></div>
|
|
|
+ </div>
|
|
|
+ <div v-if="k.taskDetail" class="taskBri">
|
|
|
+ <div v-html="k.taskDetail"></div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="WorksCon"
|
|
|
+ v-for="(l, lind) in k.toolEList"
|
|
|
+ :key="lind + 'l'"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ v-if="l.content && l.content.length"
|
|
|
+ v-for="(imgp, imgIdx) in l.content"
|
|
|
+ :key="imgIdx + 'img'"
|
|
|
+ >
|
|
|
+ <!-- <div
|
|
|
+ v-if="
|
|
|
+ (imgp && imgp[0] && imgp[0].userid == userP.userid) ||
|
|
|
+ imgp.userid == userP.userid
|
|
|
+ "
|
|
|
+ > -->
|
|
|
+ <div
|
|
|
+ v-for="(userP, upi) in pdfUser"
|
|
|
+ style="background-color: #fff;border-radius: 8px;margin-top: 10px;"
|
|
|
+ :key="upi + 'upi'"
|
|
|
+ >
|
|
|
+ <div v-if="
|
|
|
+ (imgp && imgp[0] && imgp[0].userid == userP.userid) ||
|
|
|
+ imgp.userid == userP.userid
|
|
|
+ ">
|
|
|
+ <div style="padding: 10px;box-sizing: border-box;">
|
|
|
+ <h1>{{ userP.username }}</h1>
|
|
|
+ </div>
|
|
|
+ <div v-if="l.tool[0] == 15">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ src="../../../assets/icon/thirdToolList/answer.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>工具{{ lind + 1 }}:问答工具</div>
|
|
|
+ <div>提问:{{ l.content[0][0].answerTitle }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="answerTxt">
|
|
|
+ 回答:{{ l.content[0][0].answer }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="l.tool[0] == 52">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ src="../../../assets/icon/fourthToolList/text.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>工具{{ lind + 1 }}:文档工具</div>
|
|
|
+ <div>
|
|
|
+ 根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="answerTxt" v-html="l.content[0].text"></div>
|
|
|
+ </div>
|
|
|
+ <div v-if="l.tool[0] == 16 || l.tool[0] == 50">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ v-if="l.tool[0] == 16"
|
|
|
+ src="../../../assets/icon/thirdToolList/work.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ v-if="l.tool[0] == 50"
|
|
|
+ src="../../../assets/icon/thirdToolList/plwork.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>
|
|
|
+ 工具{{ lind + 1 }}:{{
|
|
|
+ l.tool[0] == 16 ? "作业提交" : "批量上传"
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ 根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-for="(i, codex) in l.content" :key="codex + 'co'">
|
|
|
+ <div class="answerTxt" v-html="i.con"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-if="l.tool[0] == 7 || l.tool[0] == 1 || l.tool[0] == 3"
|
|
|
+ >
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ v-if="l.tool[0] == 1"
|
|
|
+ src="../../../assets/icon/secondToolList/whiteBoard.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ v-if="l.tool[0] == 3"
|
|
|
+ src="../../../assets/icon/secondToolList/mindMapping.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ v-if="l.tool[0] == 7"
|
|
|
+ src="../../../assets/icon/secondToolList/mindNetwork.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>
|
|
|
+ 工具{{ lind + 1 }}:{{
|
|
|
+ l.tool[0] == 1
|
|
|
+ ? "电子白板"
|
|
|
+ : l.tool[0] == 7
|
|
|
+ ? "思维网格"
|
|
|
+ : "思维导图"
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ 根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <img
|
|
|
+ style="max-width: 200px"
|
|
|
+ :src="l.content[0].con"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div>{{ l.content[0].con }}</div>
|
|
|
+ </div>
|
|
|
+ <div v-if="l.tool[0] == 48">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ src="../../../assets/icon/fourthToolList/table.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>工具{{ lind + 1 }}:表格</div>
|
|
|
+ <div>
|
|
|
+ 根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-form>
|
|
|
+ <div class="cont" v-html="l.content[0].text"></div>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <div v-if="l.tool[0] == 4">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ src="../../../assets/icon/thirdToolList/ask.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>工具{{ lind + 1 }}:问卷调查</div>
|
|
|
+ <div>标题:{{ l.content[0][0].askJson.askTitle }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div
|
|
|
+ style="margin-bottom: 5px"
|
|
|
+ v-for="(i, index) in l.content[0][0].askJson.askJson"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <div>题目:{{ i.askstitle }}</div>
|
|
|
+ <el-radio-group
|
|
|
+ v-if="!i.type"
|
|
|
+ v-model="l.content[0][0].anwer[index]"
|
|
|
+ >
|
|
|
+ <el-radio
|
|
|
+ v-for="(item2, checkIndex) in i.checkList"
|
|
|
+ :key="checkIndex + 'b'"
|
|
|
+ :label="checkIndex"
|
|
|
+ disabled
|
|
|
+ >
|
|
|
+ {{ item2 }}
|
|
|
+ </el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <el-checkbox-group
|
|
|
+ v-model="l.content[0][0].anwer[index]"
|
|
|
+ v-else
|
|
|
+ >
|
|
|
+ <div class="radioBox">
|
|
|
+ <el-checkbox
|
|
|
+ v-for="(item2, checkIndex) in i.checkList"
|
|
|
+ :key="checkIndex + 'c'"
|
|
|
+ :label="checkIndex"
|
|
|
+ disabled
|
|
|
+ >
|
|
|
+ {{ item2 }}
|
|
|
+ </el-checkbox>
|
|
|
+ </div>
|
|
|
+ </el-checkbox-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="l.tool[0] == 45">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ src="../../../assets/icon/thirdToolList/choose.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>工具{{ lind + 1 }}:选择题</div>
|
|
|
+ <div>
|
|
|
+ 根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-for="(i, index) in l.content[0].testJson"
|
|
|
+ :key="index + 'm'"
|
|
|
+ >
|
|
|
+ <div>题目:{{ i.teststitle }}</div>
|
|
|
+ <div
|
|
|
+ v-if="i.type == 1"
|
|
|
+ style="display: flex; flex-direction: column"
|
|
|
+ >
|
|
|
+ <el-radio-group v-model="l.content[0].radio[index]">
|
|
|
+ <div class="radioBox">
|
|
|
+ <el-radio
|
|
|
+ v-for="(item2, checkIndex) in i.checkList"
|
|
|
+ :key="checkIndex + 'b'"
|
|
|
+ :label="checkIndex"
|
|
|
+ disabled
|
|
|
+ :class="[
|
|
|
+ i.answer == checkIndex
|
|
|
+ ? 'redioStyle5'
|
|
|
+ : 'redioStyle2'
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ v-if="
|
|
|
+ item2 && item2.imgType && item2.imgType == 1
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ class="inImg"
|
|
|
+ @click.stop="previewImg(item2.src)"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ style="display: block"
|
|
|
+ :src="item2.src"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <span>{{ item2.src }}</span>
|
|
|
+ </div>
|
|
|
+ <span v-else v-html="item2"></span>
|
|
|
+ </el-radio>
|
|
|
+ </div>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ <div class="radioBox">
|
|
|
+ <el-checkbox-group
|
|
|
+ v-model="l.content[0].radio[index]"
|
|
|
+ v-if="i.type == '2'"
|
|
|
+ >
|
|
|
+ <div class="radioBox">
|
|
|
+ <el-checkbox
|
|
|
+ v-for="(item2, checkIndex) in i.checkList"
|
|
|
+ :key="checkIndex + 'c'"
|
|
|
+ :label="checkIndex"
|
|
|
+ disabled
|
|
|
+ :class="[
|
|
|
+ i.answer.includes(checkIndex)
|
|
|
+ ? 'redioStyle3'
|
|
|
+ : 'redioStyle4'
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <div style="display: flex">
|
|
|
+ <div
|
|
|
+ v-if="
|
|
|
+ item2 &&
|
|
|
+ item2.imgType &&
|
|
|
+ item2.imgType == 1
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ class="inImg"
|
|
|
+ @click.stop="previewImg(item2.src)"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ style="display: block"
|
|
|
+ :src="item2.src"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <span v-else v-html="item2"></span>
|
|
|
+ </div>
|
|
|
+ </el-checkbox>
|
|
|
+ </div>
|
|
|
+ </el-checkbox-group>
|
|
|
+ </div>
|
|
|
+ </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
|
|
|
+ style="max-width: 200px"
|
|
|
+ :src="l.selectJson.url"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div>
|
|
|
+ {{ l.selectJson.url }}
|
|
|
+ </div>
|
|
|
+ <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
|
|
|
+ style="margin-right: 10px"
|
|
|
+ v-for="(item, itInd) in l.content[0].con"
|
|
|
+ :key="itInd"
|
|
|
+ >{{ itInd + 1 }}、{{
|
|
|
+ l.selectJson.select[item]
|
|
|
+ }}</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="l.tool[0] == 47">
|
|
|
+ <div class="toolBlk">
|
|
|
+ <img
|
|
|
+ src="../../../assets/icon/fourthToolList/conSentences.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ <div class="toolTit">
|
|
|
+ <div>工具{{ lind + 1 }}:排序</div>
|
|
|
+ <div>
|
|
|
+ 根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-for="(i, index) in l.content[0]"
|
|
|
+ :key="index"
|
|
|
+ style="margin-bottom: 10px"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ height: 20px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 题目:
|
|
|
+ <div
|
|
|
+ class="sortTool"
|
|
|
+ v-for="(i, index) in i.addSentence"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ {{ i }}
|
|
|
+ </div>
|
|
|
+ <span
|
|
|
+ v-if="
|
|
|
+ JSON.stringify(i.chooseSenList) ==
|
|
|
+ JSON.stringify(i.addSentence)
|
|
|
+ "
|
|
|
+ style="color: #868ce4"
|
|
|
+ >回答正确</span
|
|
|
+ >
|
|
|
+ <span v-else style="color: red">回答错误</span>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ margin: 10px 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 学生回答:
|
|
|
+ <div
|
|
|
+ class="sortTool"
|
|
|
+ v-for="(i, index) in i.chooseSenList"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ {{ i }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ 正确答案:
|
|
|
+ <span style="margin: 0 5px">{{
|
|
|
+ i.addSentence.join(",")
|
|
|
+ }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- </div> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- </div> -->
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <!-- 自定义导出作业pdf弹框 -->
|
|
|
+ <!-- <el-dialog
|
|
|
+ :visible.sync="worksDialog"
|
|
|
+ :before-close="handleClose"
|
|
|
+ class="worksDialogCSSExp"
|
|
|
+ :append-to-body="true"
|
|
|
+ :fullscreen="true"
|
|
|
+ >
|
|
|
+ <div slot="title" class="header-title">
|
|
|
+ <div style="color: #fff">{{dataJson.state == 5 ?"按任务导出" :'自定义导出' + ':' +dataJson.title }}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
<div class="worksDiaCon" ref="reportPdf">
|
|
|
<div style="margin-bottom: 30px;font-size: 42px;">
|
|
|
{{ dataJson.title }}
|
|
@@ -549,7 +1032,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </el-dialog>
|
|
|
+ </el-dialog> -->
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -716,7 +1199,7 @@ export default {
|
|
|
taskName += `${e.name}、`;
|
|
|
}
|
|
|
});
|
|
|
- taskName = taskName.slice(0 , -1 ) + '-'
|
|
|
+ taskName = taskName.slice(0 , -1 )
|
|
|
|
|
|
pdf.save(className + this.dataJson.title + "-" + taskName + ".pdf");
|
|
|
} else {
|
|
@@ -734,17 +1217,17 @@ export default {
|
|
|
this.ajax
|
|
|
.get(this.$store.state.api + "getCourseWorksReport1", params)
|
|
|
.then(res => {
|
|
|
- res.data[1];
|
|
|
- res.data[3]; //问卷
|
|
|
- res.data[4]; //问答题
|
|
|
- res.data[5];
|
|
|
- res.data[6]; //选择题
|
|
|
- res.data[7]; //个人评价作业
|
|
|
- res.data[8]; //选择匹配作业
|
|
|
- res.data[9]; //排序作业
|
|
|
- res.data[10]; //表格作业
|
|
|
- res.data[11]; //cocopi或源码编辑作业
|
|
|
- res.data[12]; //文档作业
|
|
|
+ // res.data[1];
|
|
|
+ // res.data[3]; //问卷
|
|
|
+ // res.data[4]; //问答题
|
|
|
+ // res.data[5];
|
|
|
+ // res.data[6]; //选择题
|
|
|
+ // res.data[7]; //个人评价作业
|
|
|
+ // res.data[8]; //选择匹配作业
|
|
|
+ // res.data[9]; //排序作业
|
|
|
+ // res.data[10]; //表格作业
|
|
|
+ // res.data[11]; //cocopi或源码编辑作业
|
|
|
+ // res.data[12]; //文档作业
|
|
|
this.workEvaList = res.data[13];
|
|
|
this.userAarrayCopy = JSON.parse(JSON.stringify(res.data[14]));
|
|
|
this.userAarray = res.data[14];
|
|
@@ -901,7 +1384,7 @@ export default {
|
|
|
}
|
|
|
console.log("this.pdfUser", this.pdfUser);
|
|
|
|
|
|
- this.worksDialog = true;
|
|
|
+ this.worksDialog = true;
|
|
|
setTimeout(() => {
|
|
|
this.getPdf();
|
|
|
}, 500);
|