|
@@ -1,2780 +0,0 @@
|
|
|
-<template>
|
|
|
- <div class="pb_content" style="background: unset">
|
|
|
- <div class="pb_content_body" style="
|
|
|
- background: #fff;
|
|
|
- padding: 25px 0 0;
|
|
|
- box-sizing: border-box;
|
|
|
- border-radius: 5px;
|
|
|
- ">
|
|
|
- <div class="student_head">
|
|
|
- <!-- <div class="student_search">
|
|
|
- <div>班级筛选</div>
|
|
|
- <el-select v-model="sClass" placeholder="请选择班级" @change="searchWork">
|
|
|
- <el-option label="所有班级" value></el-option>
|
|
|
- <el-option
|
|
|
- v-for="(item, index) in grade"
|
|
|
- :key="index"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </div>-->
|
|
|
- <!-- chooseDy
|
|
|
- chooseTask-->
|
|
|
- <div class="student_search">
|
|
|
- <div>课程筛选</div>
|
|
|
- <div style="display: flex; width: 90%">
|
|
|
- <el-select class="r_select" v-model="uname" placeholder="请选择学生" @change="searchWork2">
|
|
|
- <el-option label="所有学生" value></el-option>
|
|
|
- <el-option v-for="item in userAarray" :key="item.userid" :label="item.username" :value="item.userid">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- <el-select v-model="chooseDy" placeholder="请选择阶段" @change="searchWork1">
|
|
|
- <el-option label="所有阶段" value></el-option>
|
|
|
- <el-option v-for="(item, index) in dyList" :key="index" :label="item.name" :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- <el-select v-model="chooseTask" placeholder="请选择任务" @change="searchWork2">
|
|
|
- <el-option label="所有任务" value></el-option>
|
|
|
- <el-option v-for="(item, index) in dyList[chooseDy]
|
|
|
- ? dyList[chooseDy].taskList
|
|
|
- : []" :key="index" :label="item.name" :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="pb_content_body">
|
|
|
- <div class="student_table">
|
|
|
- <el-table ref="table" :data="tableData" border :height="tableHeight" :fit="true" v-loading="isLoading"
|
|
|
- style="width: 100%" :header-cell-style="{ background: '#f1f1f1' }" :row-class-name="tableRowClassName" stripe>
|
|
|
- <el-table-column prop="sName" label="姓名" min-width="15" align="center"></el-table-column>
|
|
|
- <el-table-column prop="class" label="班级" min-width="20" align="center">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div>{{ scope.row.class ? scope.row.class : "暂无班级" }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="course" label="项目" min-width="20" align="center" show-overflow-tooltip>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="course" label="阶段" min-width="20" align="center" show-overflow-tooltip>
|
|
|
- <template slot-scope="scope">
|
|
|
- <div>
|
|
|
- {{ dyList.length > 0 ? dyList[scope.row.stage].name : "" }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="course" label="任务" min-width="20" align="center" show-overflow-tooltip>
|
|
|
- <template slot-scope="scope">
|
|
|
- <div>
|
|
|
- {{
|
|
|
- dyList.length > 0
|
|
|
- ? dyList[scope.row.stage].taskList[scope.row.task]
|
|
|
- ? dyList[scope.row.stage].taskList[scope.row.task].name
|
|
|
- : ""
|
|
|
- : ""
|
|
|
- }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="time" label="时间" width="100px" align="center"></el-table-column>
|
|
|
- <el-table-column label="操作" width="200px">
|
|
|
- <template slot-scope="scope">
|
|
|
- <el-button type="primary" size="small" class="btnClassGM" @click="
|
|
|
- lookWork(
|
|
|
- scope.row.id,
|
|
|
- scope.row.userid,
|
|
|
- scope.row.stage,
|
|
|
- scope.row.task
|
|
|
- )
|
|
|
- ">查看作业</el-button>
|
|
|
- <!-- <el-button
|
|
|
- type="primary"
|
|
|
- size="small"
|
|
|
- @click="lookData(scope.row.userid)"
|
|
|
- >生成报告</el-button
|
|
|
- >-->
|
|
|
- <el-button class="btnClassGM" type="primary" size="small" @click="
|
|
|
- lookWork2(
|
|
|
- scope.row.id,
|
|
|
- scope.row.userid,
|
|
|
- scope.row.stage,
|
|
|
- scope.row.task
|
|
|
- )
|
|
|
- ">导出报告</el-button>
|
|
|
- <!-- <el-button
|
|
|
- class="de_button"
|
|
|
- type="primary"
|
|
|
- size="small"
|
|
|
- @click="deleteWork(scope.row.id)"
|
|
|
- >删除</el-button>-->
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- <el-dialog title="查看作业" :visible.sync="dialogVisible3" :append-to-body="true" :before-close="handleClose"
|
|
|
- width="100%" class="dialog_diy2 max_diy" :class="{ fullStyle: full }">
|
|
|
- <div slot="title" class="header-title">
|
|
|
- <div style="color: #fff">查看作业</div>
|
|
|
- <div style="position: absolute; top: 14px; right: 50px">
|
|
|
- <img src="../../../assets/full.png" style="height: 14px; cursor: pointer" alt="" @click="fullTools" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="zyBoxC">
|
|
|
- <div class="courseTitle" v-if="allWorks.course">
|
|
|
- <div class="txName">
|
|
|
- <div class="tx"><img :src="tx" alt="" /></div>
|
|
|
- <div>{{ allWorks.sName }}</div>
|
|
|
- </div>
|
|
|
- <div>{{ allWorks.course }}</div>
|
|
|
- </div>
|
|
|
- <div class="cBox">
|
|
|
- <div class="pb_left">
|
|
|
- <el-tooltip class="cTitle" effect="light" :content="allWorks.course" placement="top">
|
|
|
- <div>{{ allWorks.course }}</div>
|
|
|
- </el-tooltip>
|
|
|
- <div class="ml">目录</div>
|
|
|
- <div class="cru_selectBox">
|
|
|
- <div v-for="(dy, dyIndex) in dyList2" :key="dyIndex">
|
|
|
- <div class="blue_box_one" @click="isOpen(dyIndex)">
|
|
|
- <div>第{{ dy.id + 1 }}阶段</div>
|
|
|
- <div>{{ dy.name }}</div>
|
|
|
- </div>
|
|
|
- <div class="twoChild" :class="{
|
|
|
- navActive: dy.isOpen,
|
|
|
- }">
|
|
|
- <div class="navChild" v-for="(nav, navIndex) in dy.taskList" :key="navIndex">
|
|
|
- <div class="navTask" @click="openTask(dy.id, nav.id)" :class="{
|
|
|
- openTaskActive:
|
|
|
- nav.id == taskCount &&
|
|
|
- dy.id + '-' + nav.id == navId &&
|
|
|
- dy.id == stageIndex,
|
|
|
- }">
|
|
|
- <div class="vedioNav" :class="{
|
|
|
- isClick:
|
|
|
- nav.id == taskCount &&
|
|
|
- dy.id + '-' + nav.id == navId &&
|
|
|
- dy.id == stageIndex,
|
|
|
- }" style="margin: 0">
|
|
|
- 任务{{ navIndex + 1 }}
|
|
|
- </div>
|
|
|
- <el-tooltip class="navTaskname item" effect="light" :content="nav.name" placement="top">
|
|
|
- <div>{{ nav.name }}</div>
|
|
|
- </el-tooltip>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="shuBox" v-if="worksDetail.length" :class="{ fullBox: full }">
|
|
|
- <div class="allBox" v-for="(sin, sIndex) in sInfo" :key="sIndex">
|
|
|
- <div class="zyBox" v-if="sin.course" :class="{ fullZyBox: full }">
|
|
|
- <div class="top">
|
|
|
- <div class="jdName">
|
|
|
- <div>
|
|
|
- {{
|
|
|
- "第" +
|
|
|
- (sin.stage + 1) +
|
|
|
- "阶段 " +
|
|
|
- dyList[sin.stage].name
|
|
|
- }}
|
|
|
- </div>
|
|
|
- <div class="taskName" style="width: 100%; justify-content: space-between">
|
|
|
- <div class="taskName" :id="sin.stage + '-' + sin.task" :scrollindex="sIndex">
|
|
|
- <div class="task">任务{{ sin.task + 1 }}</div>
|
|
|
- <div>
|
|
|
- {{ dyList[sin.stage].taskList[sin.task].name }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-if="worksDetail[sIndex].wpptInfo.length > 0">
|
|
|
- <el-button class="btnClassGM" type="primary" size="small" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
|
|
|
- 查看文档</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="contentBox">
|
|
|
- <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
|
|
|
- v-if="worksDetail[sIndex].img.length > 0">
|
|
|
- <div class="bigImg" v-if="
|
|
|
- worksDetail[sIndex].img &&
|
|
|
- worksDetail[sIndex].img.length
|
|
|
- ">
|
|
|
- <img @click="
|
|
|
- previewImg(
|
|
|
- worksDetail[sIndex].img[
|
|
|
- worksDetail[sIndex].imgIndex
|
|
|
- ].src
|
|
|
- )
|
|
|
- " :src="
|
|
|
- worksDetail[sIndex].img[
|
|
|
- worksDetail[sIndex].imgIndex
|
|
|
- ].src
|
|
|
- " alt />
|
|
|
- </div>
|
|
|
- <div class="thumbnail" v-if="
|
|
|
- worksDetail[sIndex].img &&
|
|
|
- worksDetail[sIndex].img.length
|
|
|
- ">
|
|
|
- <div v-for="(item, index) in worksDetail[sIndex].img" :key="index" :class="
|
|
|
- worksDetail[sIndex].imgIndex == index
|
|
|
- ? 'isClick2'
|
|
|
- : ''
|
|
|
- ">
|
|
|
- <img :src="item.src" alt @click="worksDetail[sIndex].imgIndex = index" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="work_nopicture" v-else>暂无上传截图</div>
|
|
|
- </div>
|
|
|
- <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
|
|
|
- v-else-if="worksDetail[sIndex].answerInfo.length > 0">
|
|
|
- <div class="answerbox">
|
|
|
- <div style="min-width: 80px">问答标题</div>
|
|
|
- <div>
|
|
|
- {{ worksDetail[sIndex].answerInfo[0].answerTitle }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="answerbox1">
|
|
|
- <div>学生回答</div>
|
|
|
- <div>
|
|
|
- {{ worksDetail[sIndex].answerInfo[0].answer }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
|
|
|
- v-else-if="worksDetail[sIndex].askInfo.length > 0">
|
|
|
- <div>
|
|
|
- <div class="a_add_title" style="
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- flex-wrap: wrap;
|
|
|
- ">
|
|
|
- <div style="margin-right: 20px; font-size: 20px">
|
|
|
- 标题:
|
|
|
- </div>
|
|
|
- <div style="font-size: 20px">
|
|
|
- {{ worksDetail[sIndex].askInfo[0].askTitle }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="a_addBox">
|
|
|
- <div style="font-size: 16px; color: #c7c7c7">
|
|
|
- 内容
|
|
|
- </div>
|
|
|
- <div class="a_add_box" v-for="(item1, index1) in worksDetail[sIndex]
|
|
|
- .askInfo[0].askCount" :key="index1">
|
|
|
- <div class="a_add_head">
|
|
|
- <div style="display: flex">
|
|
|
- {{ index1 + 1 + "、" }}
|
|
|
- <div>
|
|
|
- 题目:{{
|
|
|
- worksDetail[sIndex].askInfo[0].askJson[
|
|
|
- index1
|
|
|
- ].askstitle
|
|
|
- }}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="a_add_body">
|
|
|
- <div class="a_add_input">
|
|
|
- <el-radio-group v-model="
|
|
|
- worksDetail[sIndex].askInfo[0].radio[
|
|
|
- index1
|
|
|
- ]
|
|
|
- ">
|
|
|
- <el-radio v-for="(item2, checkIndex) in worksDetail[
|
|
|
- sIndex
|
|
|
- ].askInfo[0].askJson[index1].checkList" :key="checkIndex" :label="checkIndex"
|
|
|
- disabled class="redioStyle"><span v-html="item2"></span></el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
|
|
|
- v-else-if="worksDetail[sIndex].wpptInfo.length > 0">
|
|
|
- <div style="height: 238px" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
|
|
|
- <div @click="openFile(worksDetail[sIndex].wpptInfo[0])" style="
|
|
|
- width: 300px;
|
|
|
- height: 300px;
|
|
|
- position: absolute;
|
|
|
- z-index: 999;
|
|
|
- "></div>
|
|
|
- <pdf v-if="showPDF" :pdfUrl="worksDetail[sIndex].wpptInfo[0]"
|
|
|
- style="width: 100%; height: 520px; overflow: auto"></pdf>
|
|
|
- <iframe v-else :src="worksDetail[sIndex].wpptInfo[0]" frameborder="0" width="100%"
|
|
|
- height="100%"></iframe>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="right_top" v-show="worksDetail[sIndex].eList.length">
|
|
|
- <div class="ech">
|
|
|
- <img src="../../../assets/icon/pj/ech.png" alt="" />
|
|
|
- </div>
|
|
|
- <div class="data_body">
|
|
|
- <div style="width: 100%">
|
|
|
- <div class="echart charts_canvas" style="
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- margin: 0 0 0 1rem;
|
|
|
- "></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="right_score" :class="{ rightScoreFullBox: full }">
|
|
|
- <div class="sd_score" style="
|
|
|
- box-sizing: border-box;
|
|
|
- width: 100%;
|
|
|
- box-shadow: none;
|
|
|
- position: relative;
|
|
|
- ">
|
|
|
- <div class="worksTime">
|
|
|
- 作业提交时间:<span style="width: auto">{{ worksDetail[sIndex].time }}
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- <div class="ech" style="margin-left: 23px">
|
|
|
- <img src="../../../assets/icon/pj/score.png" alt="" />
|
|
|
- </div>
|
|
|
- <div style="height: 80%;overflow: auto;">
|
|
|
- <div class="score_box" v-for="(item, index) in worksDetail[sIndex].eList" :key="index">
|
|
|
- <el-tooltip class="item" effect="dark" :content="item.value" placement="top-start">
|
|
|
- <span>{{ item.value }}</span>
|
|
|
- </el-tooltip>
|
|
|
- <el-rate class="rate_size" style="min-width: 120px"
|
|
|
- v-model="worksDetail[sIndex].rateList[item.value]" @change="getStar(sIndex)"></el-rate>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="buttonCss">
|
|
|
- <el-button type="primary" size="small" @click="updatePj" class="btnClassGM">保存评分</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
- </div>
|
|
|
- <div class="student_page">
|
|
|
- <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page"
|
|
|
- @current-change="handleCurrentChange"></el-pagination>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-dialog :visible.sync="pictureDialog" size="tiny">
|
|
|
- <img width="100%" :src="dialogImageUrl" alt />
|
|
|
- </el-dialog>
|
|
|
- <el-dialog title="项目评分" :visible.sync="dataVisible" :append-to-body="true" width="1100px"
|
|
|
- :before-close="handleClose" class="dialog_diy">
|
|
|
- <div>
|
|
|
- <div class="a_addBox2">
|
|
|
- <StudentData :studentInfo="studentInfo"></StudentData>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dataVisible = false" class="cancel_button">关 闭</el-button>
|
|
|
- </span>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog title="查看选择题" :visible.sync="dialogVisible4" :append-to-body="true" width="800px"
|
|
|
- :before-close="handleClose" class="dialog_diy">
|
|
|
- <div>
|
|
|
- <div class="a_add_title" style="
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- ">
|
|
|
- <div style="font-size: 20px">{{ askJson.askTitle }}</div>
|
|
|
- </div>
|
|
|
- <div class="a_addBox">
|
|
|
- <div style="font-size: 16px; color: #c7c7c7">内容</div>
|
|
|
- <div class="a_add_box" v-for="(item, index) in askJson.askJson" :key="index">
|
|
|
- <div class="a_add_head">
|
|
|
- <div style="display: flex">
|
|
|
- {{ index + 1 + "、" }}
|
|
|
- <div>题目:{{ item.askstitle }}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="a_add_body">
|
|
|
- <div class="a_add_input">
|
|
|
- <el-radio-group v-model="askJson.radio[index]">
|
|
|
- <el-radio v-for="(item3, checkIndex1) in item.checkList" :key="checkIndex1" :label="checkIndex1"
|
|
|
- class="redioStyle" disabled>{{ item3 }}</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button type="primary" @click="dialogVisible4 = false" class="cancel_button">关 闭</el-button>
|
|
|
- </span>
|
|
|
- </el-dialog>
|
|
|
- <el-dialog title="文件预览" :visible.sync="dialogVisible6" width="100%" :before-close="handleClose" class="full_diy"
|
|
|
- :append-to-body="true">
|
|
|
- <div slot="title" class="header-title">
|
|
|
- <div style="color: #fff">文件预览</div>
|
|
|
- </div>
|
|
|
- <pdf v-if="showPDF" :pdfUrl="pptImgUrl" style="width: 100%; height: 520px; overflow: auto"></pdf>
|
|
|
- <iframe v-else :src="pptImgUrl" frameborder="0" width="100%" height="600"></iframe>
|
|
|
- </el-dialog>
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import StudentData from "./studentData";
|
|
|
-import htmlDocx from "html-docx-js/dist/html-docx";
|
|
|
-import saveAs from "file-saver";
|
|
|
-export default {
|
|
|
- components: {
|
|
|
- StudentData,
|
|
|
- },
|
|
|
- props: ["cid", "uid", "ooid"],
|
|
|
- data() {
|
|
|
- return {
|
|
|
- tableHeight: "500px",
|
|
|
- isLoading: false,
|
|
|
- id: this.cid,
|
|
|
- userid: this.uid,
|
|
|
- oid: this.ooid,
|
|
|
- formLabelWidth: "100px",
|
|
|
- dialogImageUrl: "",
|
|
|
- pictureDialog: false,
|
|
|
- dialogVisible: false,
|
|
|
- dialogVisible1: false,
|
|
|
- dialogVisible2: false,
|
|
|
- dialogVisible3: false,
|
|
|
- dialogVisible4: false,
|
|
|
- dataVisible: false,
|
|
|
- full: true,
|
|
|
- isStar: 0,
|
|
|
- studentInfo: {},
|
|
|
- courseByUser: "诗词中的植物",
|
|
|
- userName: "林点",
|
|
|
- answerName: "宿赞公房",
|
|
|
- studentAnswer: "雨荒深院菊,霜倒半池莲.唐杜甫《宿赞公房》",
|
|
|
- commentCount: 0,
|
|
|
- publicIndex: 0,
|
|
|
- allWorks: [],
|
|
|
- playerOptions: {
|
|
|
- playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
|
|
|
- autoplay: false, //如果true,浏览器准备好时开始回放。
|
|
|
- muted: false, // 默认情况下将会消除任何音频。
|
|
|
- loop: false, // 导致视频一结束就重新开始。
|
|
|
- preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
|
|
|
- language: "zh-CN",
|
|
|
- aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
|
|
|
- fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
|
|
|
- sources: [
|
|
|
- {
|
|
|
- type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目 || "video/ogg"|| "video/webm"
|
|
|
- src: "", //url地址require("../../../assets/media/aaa.mp4")
|
|
|
- },
|
|
|
- ],
|
|
|
- // poster: require("../../../assets/tu31.png"), //你的封面地址
|
|
|
- // poster: dataRes.imgUrl, //你的封面地址
|
|
|
- notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
|
|
|
- controlBar: {
|
|
|
- timeDivider: true, //当前时间和持续时间的分隔符
|
|
|
- durationDisplay: true, //显示持续时间
|
|
|
- remainingTimeDisplay: false, //是否显示剩余时间功能
|
|
|
- fullscreenToggle: true, //全屏按钮
|
|
|
- },
|
|
|
- },
|
|
|
- playerO: {},
|
|
|
- commentName: "谭子松",
|
|
|
- commentTime: "2021/2/5",
|
|
|
- commentAnswer:
|
|
|
- "作为家长我很高兴看到孩子的进步,希望这个进步只是一个开始,在新学期能够继续延续,这样才能不负老师的期望",
|
|
|
- tableData: [],
|
|
|
- uploadBoolean: false,
|
|
|
- studentMessage: [],
|
|
|
- subject: "",
|
|
|
- sClass: "",
|
|
|
- stageIndex: "",
|
|
|
- taskCount: "",
|
|
|
- navId: "",
|
|
|
- chooseDy: "",
|
|
|
- uname: "",
|
|
|
- chooseTask: "",
|
|
|
- subjectJuri: [],
|
|
|
- projectJuri: [],
|
|
|
- pptImgUrl: "",
|
|
|
- grade: [],
|
|
|
- mr: require("../../../assets/icon/wheel.png"),
|
|
|
- tx: require("../../../assets/avatar.png"),
|
|
|
- projectchoose: "",
|
|
|
- scopeId: "",
|
|
|
- thumbnail: [],
|
|
|
- rateList: {
|
|
|
- ca: 0,
|
|
|
- sia: 0,
|
|
|
- eta: 0,
|
|
|
- pia: 0,
|
|
|
- lra: 0,
|
|
|
- content: "",
|
|
|
- },
|
|
|
- rateParams: [],
|
|
|
- page: 1,
|
|
|
- total: 0,
|
|
|
- worksDetail: [],
|
|
|
- suserId: "",
|
|
|
- sInfo: {},
|
|
|
- chapInfo: [],
|
|
|
- showPDF: false,
|
|
|
- dialogVisible6: false,
|
|
|
- vedio: [],
|
|
|
- file: [],
|
|
|
- tType: 0,
|
|
|
- chartObj: [],
|
|
|
- pptImgUrl: "",
|
|
|
- ooption: [],
|
|
|
- option: {
|
|
|
- tooltip: {
|
|
|
- trigger: "item",
|
|
|
- },
|
|
|
- series: [
|
|
|
- {
|
|
|
- name: "量规评分",
|
|
|
- type: "pie",
|
|
|
- radius: "70%",
|
|
|
- center: ["50%", "50%"],
|
|
|
- data: [
|
|
|
- { value: 0, name: "意识能力" },
|
|
|
- { value: 0, name: "科学探究能力" },
|
|
|
- { value: 0, name: "实践创新能力" },
|
|
|
- { value: 0, name: "学习反思能力" },
|
|
|
- { value: 0, name: "工程思维能力" },
|
|
|
- ],
|
|
|
- itemStyle: {
|
|
|
- emphasis: {
|
|
|
- shadowBlur: 10,
|
|
|
- shadowOffsetX: 0,
|
|
|
- shadowColor: "rgba(0, 0, 0, 0.5)",
|
|
|
- },
|
|
|
- normal: {
|
|
|
- label: {
|
|
|
- show: true,
|
|
|
- formatter: "{d}%",
|
|
|
- inside: true,
|
|
|
- position: "inner",
|
|
|
- },
|
|
|
- labelLine: { show: false },
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- // 雷达图的数据
|
|
|
- radarOption: {
|
|
|
- splitNumber: 5,
|
|
|
- tooltip: {
|
|
|
- triggerOn: "mousemove",
|
|
|
- //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
|
|
|
- confine: true,
|
|
|
- enterable: true, //鼠标是否可以移动到tooltip区域内
|
|
|
- backgroundColor: "rgba(255,255,255,0.7)",
|
|
|
- textStyle: {
|
|
|
- // 文字样式
|
|
|
- align: "left",
|
|
|
- },
|
|
|
- left: "right",
|
|
|
- top: "bottom",
|
|
|
- },
|
|
|
- radar: {
|
|
|
- radius: ["0%", "70%"],
|
|
|
- shape: "circle",
|
|
|
- center: ["50%", "50%"],
|
|
|
- axisName: {
|
|
|
- textStyle: {
|
|
|
- // 文字样式
|
|
|
- color: "#58a5e6",
|
|
|
- },
|
|
|
- formatter: function (value, indicator) {
|
|
|
- // value = value.replace(/\S{2}/g, function (match) {
|
|
|
- // return match + "\n";
|
|
|
- // });
|
|
|
- return value;
|
|
|
- },
|
|
|
- },
|
|
|
- indicator: [
|
|
|
- // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
|
|
|
- ],
|
|
|
- },
|
|
|
- // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
|
|
|
- splitArea: {
|
|
|
- show: true,
|
|
|
- areaStyle: {
|
|
|
- color: "rgba(255,0,0,0)", // 图表背景的颜色
|
|
|
- },
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- width: 1,
|
|
|
- color: "rgba(131,141,158,.1)", // 设置网格的颜色
|
|
|
- },
|
|
|
- },
|
|
|
- series: [
|
|
|
- {
|
|
|
- name: "能力图", // tooltip中的标题
|
|
|
- type: "radar", // 表示是雷达图
|
|
|
- symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
|
|
|
- symbolSize: 8, // 拐点的大小
|
|
|
- areaStyle: {
|
|
|
- normal: {
|
|
|
- width: 1,
|
|
|
- opacity: 0.2,
|
|
|
- },
|
|
|
- },
|
|
|
- data: [
|
|
|
- {
|
|
|
- // 设置各个指标原始值
|
|
|
- value: [],
|
|
|
- // 设置区域边框和区域的颜色
|
|
|
- itemStyle: {
|
|
|
- normal: {
|
|
|
- color: "#5c549f",
|
|
|
- lineStyle: {
|
|
|
- color: "#5c549f",
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- askJson: {},
|
|
|
- dyList: [],
|
|
|
- dyList2: [],
|
|
|
- userAarray: [],
|
|
|
- };
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- this.$nextTick(function () {
|
|
|
- this.tableHeight =
|
|
|
- window.innerHeight - this.$refs.table.$el.offsetTop - 200;
|
|
|
- if (this.tableHeight <= 530) {
|
|
|
- this.tableHeight = 530;
|
|
|
- }
|
|
|
- // 监听窗口大小变化
|
|
|
- let self = this;
|
|
|
- window.onresize = function () {
|
|
|
- self.tableHeight =
|
|
|
- window.innerHeight - self.$refs.table.$el.offsetTop - 200;
|
|
|
- if (self.tableHeight <= 530) {
|
|
|
- self.tableHeight = 530;
|
|
|
- }
|
|
|
- };
|
|
|
- });
|
|
|
- },
|
|
|
- methods: {
|
|
|
- previewImg(url) {
|
|
|
- this.$hevueImgPreview(url);
|
|
|
- },
|
|
|
- lookData(uid) {
|
|
|
- let params = {
|
|
|
- uid: uid,
|
|
|
- cid: this.id,
|
|
|
- };
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "selectWorksDetail", params)
|
|
|
- .then((res) => {
|
|
|
- this.studentInfo = res.data[0][0];
|
|
|
- this.dataVisible = true;
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- tableRowClassName({ row, rowIndex }) {
|
|
|
- if ((rowIndex + 1) % 2 === 0) {
|
|
|
- return "even_row";
|
|
|
- } else {
|
|
|
- return "";
|
|
|
- }
|
|
|
- },
|
|
|
- handleClose(done) {
|
|
|
- done();
|
|
|
- },
|
|
|
- tableRowClassName({ row, rowIndex }) {
|
|
|
- if ((rowIndex + 1) % 2 === 0) {
|
|
|
- return "even_row";
|
|
|
- } else {
|
|
|
- return "";
|
|
|
- }
|
|
|
- },
|
|
|
- handleCurrentChange(val) {
|
|
|
- this.page = val;
|
|
|
- this.getWorks();
|
|
|
- },
|
|
|
- lookWork(id, uid, stage, task) {
|
|
|
- // this.scopeId = id;
|
|
|
- let params = {
|
|
|
- uid: uid,
|
|
|
- cid: this.id,
|
|
|
- stage: stage,
|
|
|
- task: task,
|
|
|
- };
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "selectWorksDetail3", params)
|
|
|
- .then((res) => {
|
|
|
- this.sInfo = res.data[0];
|
|
|
- var chapters = [],
|
|
|
- eList = [],
|
|
|
- _ooption = [],
|
|
|
- _rate = [],
|
|
|
- _rateList = [];
|
|
|
- var worksDetail = res.data[1];
|
|
|
- // this.scopeId = res.data[2][0].id;
|
|
|
- // var scopeId = res.data[2][0].id;
|
|
|
- var askInfo = res.data[3];
|
|
|
- var answerInfo = res.data[4];
|
|
|
- var pptInfo = res.data[5];
|
|
|
- var workJson = [];
|
|
|
- for (var k = 0; k < res.data[0].length; k++) {
|
|
|
- this.allWorks = res.data[0][k];
|
|
|
- this.chapInfo.push(JSON.parse(res.data[0][k].chapters));
|
|
|
- chapters.push(JSON.parse(res.data[0][k].chapters));
|
|
|
- if (!chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
|
|
|
- res.data[0][k].task
|
|
|
- ]) {
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
- workJson.push({
|
|
|
- img: [],
|
|
|
- imgIndex: 0,
|
|
|
- eList: [],
|
|
|
- rateList: {},
|
|
|
- askInfo: [],
|
|
|
- answerInfo: [],
|
|
|
- wpptInfo: [],
|
|
|
- scopeId: res.data[0][k].id,
|
|
|
- stagetask: "",
|
|
|
- time: "",
|
|
|
- });
|
|
|
-
|
|
|
- eList =
|
|
|
- chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
|
|
|
- res.data[0][k].task
|
|
|
- ].eList;
|
|
|
- workJson[k].time = res.data[0][k].time;
|
|
|
- workJson[k].stagetask =
|
|
|
- res.data[0][k].stage + "-" + res.data[0][k].task;
|
|
|
- if (eList && eList.length) {
|
|
|
- _ooption = [];
|
|
|
- workJson[k].eList = eList;
|
|
|
- for (var i = 0; i < eList.length; i++) {
|
|
|
- _ooption.push({ value: 0, name: eList[i].value });
|
|
|
- workJson[k].rateList[eList[i].value] = 0;
|
|
|
- }
|
|
|
- workJson[k].rateList.content = "";
|
|
|
- this.ooption[k] = _ooption;
|
|
|
- }
|
|
|
- // else {
|
|
|
- // _ooption = [];
|
|
|
- // workJson[k].eList = [
|
|
|
- // { value: "意识能力", detail: "", score: 5 },
|
|
|
- // { value: "科学探究能力", detail: "", score: 5 },
|
|
|
- // { value: "实践创新能力", detail: "", score: 5 },
|
|
|
- // { value: "学习反思能力", detail: "", score: 5 },
|
|
|
- // { value: "工程思维能力", detail: "", score: 5 },
|
|
|
- // ];
|
|
|
- // for (var i = 0; i < workJson[k].eList.length; i++) {
|
|
|
- // _ooption.push({ value: 0, name: workJson[k].eList[i].value });
|
|
|
- // workJson[k].rateList[workJson[k].eList[i].value] = 0;
|
|
|
- // }
|
|
|
- // workJson[k].rateList.content = "";
|
|
|
- // this.ooption[k] = [
|
|
|
- // { value: 0, name: "意识能力" },
|
|
|
- // { value: 0, name: "科学探究能力" },
|
|
|
- // { value: 0, name: "实践创新能力" },
|
|
|
- // { value: 0, name: "学习反思能力" },
|
|
|
- // { value: 0, name: "工程思维能力" },
|
|
|
- // ];
|
|
|
- // }
|
|
|
- if (res.data[0][k].rate && eList && eList.length) {
|
|
|
- _rate[k] = JSON.parse(res.data[0][k].rate);
|
|
|
- _rateList[k] = Object.keys(JSON.parse(res.data[0][k].rate));
|
|
|
- for (var i = 0; i < _rateList[k].length; i++) {
|
|
|
- var _c = Object.keys(workJson[k].rateList);
|
|
|
- if (_c.indexOf(_rateList[k][i]) != -1) {
|
|
|
- workJson[k].rateList[_rateList[k][i]] =
|
|
|
- _rate[k][_rateList[k][i]];
|
|
|
- }
|
|
|
- }
|
|
|
- for (var i = 0; i < this.ooption[k].length; i++) {
|
|
|
- if (_rateList[k].indexOf(this.ooption[k][i].name) != -1) {
|
|
|
- this.ooption[k][i].value = _rate[k][this.ooption[k][i].name];
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- _rate[k] = [];
|
|
|
- _rateList[k] = [];
|
|
|
- }
|
|
|
-
|
|
|
- for (var i = 0; i < worksDetail.length; i++) {
|
|
|
- if (
|
|
|
- res.data[0][k].stage == worksDetail[i].stage &&
|
|
|
- res.data[0][k].task == worksDetail[i].task
|
|
|
- ) {
|
|
|
- workJson[k].img.push({ src: worksDetail[i].content, id: i });
|
|
|
- }
|
|
|
- }
|
|
|
- for (var i = 0; i < askInfo.length; i++) {
|
|
|
- if (
|
|
|
- res.data[0][k].stage == askInfo[i].stage &&
|
|
|
- res.data[0][k].task == askInfo[i].task
|
|
|
- ) {
|
|
|
- const element = askInfo[i];
|
|
|
- let a = JSON.parse(element.content)[0];
|
|
|
- let b = a.anwer.split(",");
|
|
|
- let c = [];
|
|
|
- for (var j = 0; j < b.length; j++) {
|
|
|
- c.push(parseInt(b[j]));
|
|
|
- }
|
|
|
- a.askJson.radio = c;
|
|
|
- a.askJson.time = element.time;
|
|
|
- workJson[k].askInfo.push(a.askJson);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for (var i = 0; i < pptInfo.length; i++) {
|
|
|
- if (
|
|
|
- res.data[0][k].stage == pptInfo[i].stage &&
|
|
|
- res.data[0][k].task == pptInfo[i].task
|
|
|
- ) {
|
|
|
- var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
|
|
|
- if (
|
|
|
- a.indexOf(
|
|
|
- pptInfo[i].content
|
|
|
- .split(".")
|
|
|
- [
|
|
|
- pptInfo[i].content.split(".").length - 1
|
|
|
- ].toLocaleUpperCase()
|
|
|
- ) != -1
|
|
|
- ) {
|
|
|
- var a =
|
|
|
- "https://view.officeapps.live.com/op/view.aspx?src=" +
|
|
|
- pptInfo[i].content;
|
|
|
- workJson[k].wpptInfo.push(a);
|
|
|
- this.showPDF = false;
|
|
|
- } else if (
|
|
|
- pptInfo[i].content
|
|
|
- .split(".")
|
|
|
- [
|
|
|
- pptInfo[i].content.split(".").length - 1
|
|
|
- ].toLocaleUpperCase() == "PDF"
|
|
|
- ) {
|
|
|
- workJson[k].wpptInfo.push(pptInfo[i].content);
|
|
|
- this.showPDF = true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for (var i = 0; i < answerInfo.length; i++) {
|
|
|
- if (
|
|
|
- res.data[0][k].stage == answerInfo[i].stage &&
|
|
|
- res.data[0][k].task == answerInfo[i].task
|
|
|
- ) {
|
|
|
- const element = answerInfo[i];
|
|
|
- workJson[k].answerInfo.push(JSON.parse(element.content)[0]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- this.worksDetail = workJson;
|
|
|
-
|
|
|
- this.courseDetail = res.data[0][0];
|
|
|
-
|
|
|
- this.$forceUpdate;
|
|
|
- this.dialogVisible3 = true;
|
|
|
- setTimeout(() => {
|
|
|
- for (var p = 0; p < res.data[0].length; p++) {
|
|
|
- if (!this.ooption[p]) {
|
|
|
- this.chartObj[p] = null;
|
|
|
- continue
|
|
|
- }
|
|
|
- var _ooption = JSON.parse(JSON.stringify(this.ooption[p]));
|
|
|
- var _option = JSON.parse(JSON.stringify(this.radarOption));
|
|
|
- _option.radar.indicator = [];
|
|
|
- _option.series[0].data[0].value = [];
|
|
|
- for (var i = 0; i < _ooption.length; i++) {
|
|
|
- _option.radar.indicator.push({
|
|
|
- name: _ooption[i].name,
|
|
|
- max: 5,
|
|
|
- });
|
|
|
- _option.series[0].data[0].value.push(_ooption[i].value);
|
|
|
- }
|
|
|
- console.log(_option);
|
|
|
- this.setChart(_option, p);
|
|
|
- }
|
|
|
- }, 0);
|
|
|
-
|
|
|
- let _dyList = JSON.parse(JSON.stringify(this.dyList));
|
|
|
- let _dyList2 = [];
|
|
|
- let _dyList3 = [];
|
|
|
- for (var c = 0; c < _dyList.length; c++) {
|
|
|
- _dyList[c].taskList = [];
|
|
|
- _dyList2.push(_dyList[c]);
|
|
|
- }
|
|
|
- _dyList = JSON.parse(JSON.stringify(this.dyList));
|
|
|
- for (var c = 0; c < workJson.length; c++) {
|
|
|
- let _stage = workJson[c].stagetask.split("-")[0];
|
|
|
- let _task = workJson[c].stagetask.split("-")[1];
|
|
|
- _dyList2[_stage].taskList.push(_dyList[_stage].taskList[_task]);
|
|
|
- _dyList2[_stage].taskList;
|
|
|
- }
|
|
|
- for (var c = 0; c < _dyList2.length; c++) {
|
|
|
- if (_dyList2[c].taskList.length) {
|
|
|
- _dyList2[c].isOpen = c === 0 ? true : false;
|
|
|
- _dyList3.push(_dyList2[c]);
|
|
|
- }
|
|
|
- }
|
|
|
- this.dyList2 = _dyList3;
|
|
|
- this.stageIndex = this.dyList2[0].id;
|
|
|
- this.taskCount = this.dyList2[0].taskList[0].id;
|
|
|
- this.navId =
|
|
|
- this.dyList2[0].id + "-" + this.dyList2[0].taskList[0].id;
|
|
|
- // this.sInfo = res.data[0][0];
|
|
|
- // this.chapInfo = JSON.parse(res.data[0][0].chapters);
|
|
|
- // var chapters = JSON.parse(res.data[0][0].chapters);
|
|
|
- // var worksDetail = res.data[1];
|
|
|
- // // var askArray = res.data[2];
|
|
|
- // this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
|
|
|
- // var askInfo = res.data[3];
|
|
|
- // var answerInfo = res.data[4];
|
|
|
- // var workJson = {
|
|
|
- // img: [],
|
|
|
- // imgIndex: 0,
|
|
|
- // eList: [],
|
|
|
- // rateList: {},
|
|
|
- // askInfo: [],
|
|
|
- // answerInfo: [],
|
|
|
- // };
|
|
|
- // var eList =
|
|
|
- // chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
|
|
|
- // .eList;
|
|
|
- // var _ooption = [];
|
|
|
- // if (eList) {
|
|
|
- // workJson.eList = eList;
|
|
|
- // for (var i = 0; i < eList.length; i++) {
|
|
|
- // _ooption.push({ value: 0, name: eList[i].value });
|
|
|
- // workJson.rateList[eList[i].value] = 0;
|
|
|
- // }
|
|
|
- // workJson.rateList.content = "";
|
|
|
- // this.ooption = _ooption;
|
|
|
- // } else {
|
|
|
- // workJson.eList = [
|
|
|
- // { value: "意识能力", detail: "", score: 5 },
|
|
|
- // { value: "科学探究能力", detail: "", score: 5 },
|
|
|
- // { value: "实践创新能力", detail: "", score: 5 },
|
|
|
- // { value: "学习反思能力", detail: "", score: 5 },
|
|
|
- // { value: "工程思维能力", detail: "", score: 5 },
|
|
|
- // ];
|
|
|
- // for (var i = 0; i < workJson.eList.length; i++) {
|
|
|
- // _ooption.push({ value: 0, name: workJson.eList[i].value });
|
|
|
- // workJson.rateList[workJson.eList[i].value] = 0;
|
|
|
- // }
|
|
|
- // workJson.rateList.content = "";
|
|
|
- // this.ooption = [
|
|
|
- // { value: 0, name: "意识能力" },
|
|
|
- // { value: 0, name: "科学探究能力" },
|
|
|
- // { value: 0, name: "实践创新能力" },
|
|
|
- // { value: 0, name: "学习反思能力" },
|
|
|
- // { value: 0, name: "工程思维能力" },
|
|
|
- // ];
|
|
|
- // }
|
|
|
- // if (this.sInfo.rate) {
|
|
|
- // var _rate = JSON.parse(this.sInfo.rate);
|
|
|
- // var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
|
|
|
- // for (var i = 0; i < _rateList.length; i++) {
|
|
|
- // var _c = Object.keys(workJson.rateList);
|
|
|
- // if (_c.indexOf(_rateList[i]) != -1) {
|
|
|
- // workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
|
|
|
- // }
|
|
|
- // }
|
|
|
- // for (var i = 0; i < this.ooption.length; i++) {
|
|
|
- // if (_rateList.indexOf(this.ooption[i].name) != -1) {
|
|
|
- // this.ooption[i].value = _rate[this.ooption[i].name];
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // for (var i = 0; i < worksDetail.length; i++) {
|
|
|
- // workJson.img.push({ src: worksDetail[i].content, id: i });
|
|
|
- // }
|
|
|
- // for (var i = 0; i < askInfo.length; i++) {
|
|
|
- // const element = askInfo[i];
|
|
|
- // let a = JSON.parse(element.content)[0];
|
|
|
- // let b = a.anwer.split(",");
|
|
|
- // let c = [];
|
|
|
- // for (var j = 0; j < b.length; j++) {
|
|
|
- // c.push(parseInt(b[j]));
|
|
|
- // }
|
|
|
- // a.askJson.radio = c;
|
|
|
- // a.askJson.time = element.time;
|
|
|
- // workJson.askInfo.push(a.askJson);
|
|
|
- // }
|
|
|
-
|
|
|
- // for (var i = 0; i < answerInfo.length; i++) {
|
|
|
- // const element = answerInfo[i];
|
|
|
- // workJson.answerInfo.push(JSON.parse(element.content)[0]);
|
|
|
- // }
|
|
|
-
|
|
|
- // this.worksDetail = workJson;
|
|
|
-
|
|
|
- // this.courseDetail = res.data[0][0];
|
|
|
-
|
|
|
- // this.$forceUpdate;
|
|
|
- // this.dialogVisible3 = true;
|
|
|
-
|
|
|
- // setTimeout(() => {
|
|
|
- // var _ooption = JSON.parse(JSON.stringify(this.ooption));
|
|
|
- // var _option = this.radarOption;
|
|
|
- // _option.radar.indicator = [];
|
|
|
- // _option.series[0].data[0].value = [];
|
|
|
- // for (var i = 0; i < _ooption.length; i++) {
|
|
|
- // _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
|
|
|
- // _option.series[0].data[0].value.push(_ooption[i].value);
|
|
|
- // }
|
|
|
- // console.log(_option);
|
|
|
- // this.setChart(_option);
|
|
|
-
|
|
|
- // }, 0);
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- checkAsk(askJson) {
|
|
|
- this.askJson = askJson;
|
|
|
- this.dialogVisible4 = true;
|
|
|
- },
|
|
|
- setChart(option, k) {
|
|
|
- let _this = this;
|
|
|
- // 雷达图显示的标签
|
|
|
- let newPromise = new Promise((resolve) => {
|
|
|
- resolve();
|
|
|
- });
|
|
|
- //然后异步执行echarts的初始化函数
|
|
|
- newPromise.then(() => {
|
|
|
- console.log(_this.option);
|
|
|
-
|
|
|
- const chartObj = _this.$echarts.init(
|
|
|
- //劳动课程
|
|
|
- // _this.$el.querySelector("#charts_canvas")
|
|
|
- document.getElementsByClassName("charts_canvas")[k]
|
|
|
- );
|
|
|
- // 初始化雷达图
|
|
|
- _this.chartObj[k] = chartObj;
|
|
|
- _this.chartObj[k].setOption(option);
|
|
|
- });
|
|
|
- },
|
|
|
- giveScore() {
|
|
|
- this.rateList = this.chapInfo[this.publicIndex].rate;
|
|
|
- this.dialogVisible2 = true;
|
|
|
- },
|
|
|
- openFile(f) {
|
|
|
- this.pptImgUrl = f;
|
|
|
- this.dialogVisible6 = true;
|
|
|
- },
|
|
|
- //获取班级列表
|
|
|
- getClass() {
|
|
|
- this.isLoading = true;
|
|
|
- let params = {
|
|
|
- oid: this.oid,
|
|
|
- };
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "selectClassBySchool", params)
|
|
|
- .then((res) => {
|
|
|
- this.isLoading = false;
|
|
|
- this.grade = res.data[0];
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.isLoading = false;
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- //获取分组分类
|
|
|
- getGroup() {
|
|
|
- let params = {};
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "getGroup", params)
|
|
|
- .then((res) => {
|
|
|
- this.subjectJuri = res.data[0];
|
|
|
- this.projectJuri = res.data[0];
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- searchWork1() {
|
|
|
- this.page = 1;
|
|
|
- this.chooseTask = "";
|
|
|
- this.getWorks();
|
|
|
- },
|
|
|
- searchWork2() {
|
|
|
- this.page = 1;
|
|
|
- this.getWorks();
|
|
|
- },
|
|
|
- fullTools() {
|
|
|
- this.full = !this.full;
|
|
|
- },
|
|
|
- //获取作业
|
|
|
- getWorks() {
|
|
|
- this.isLoading = true;
|
|
|
- var mr = this.mr;
|
|
|
- let params = {
|
|
|
- cid: this.id,
|
|
|
- uname: this.uname,
|
|
|
- stage: this.chooseDy,
|
|
|
- task: this.chooseTask,
|
|
|
- page: this.page,
|
|
|
- };
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "getCourseWorks3", params)
|
|
|
- .then((res) => {
|
|
|
- this.isLoading = false;
|
|
|
- this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
|
|
|
- this.tableData = res.data[0];
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.isLoading = false;
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- getCourseDetail() {
|
|
|
- let params = {
|
|
|
- cid: this.cid,
|
|
|
- };
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "getCourseWorksReport", params)
|
|
|
- .then((res) => {
|
|
|
- this.course = res.data[0][0];
|
|
|
- var dyJSON = JSON.parse(res.data[0][0].chapters);
|
|
|
- let dyList = [];
|
|
|
- for (var i = 0; i < dyJSON.length; i++) {
|
|
|
- dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
|
|
|
- var a = dyJSON[i].chapterInfo[0].taskJson;
|
|
|
- for (var j = 0; j < a.length; j++) {
|
|
|
- dyList[i].taskList.push({ name: a[j].task, id: j });
|
|
|
- }
|
|
|
- }
|
|
|
- this.dyList = dyList;
|
|
|
- this.userAarray = res.data[1];
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- // getCourseDetail() {
|
|
|
- // const loading = this.$loading.service({
|
|
|
- // background: "rgba(255, 255, 255, 0.7)",
|
|
|
- // target: document.querySelector(".student_table"),
|
|
|
- // });
|
|
|
- // console.log(this.id);
|
|
|
- // let params = {
|
|
|
- // courseId: this.id,
|
|
|
- // };
|
|
|
- // this.ajax
|
|
|
- // .get(this.$store.state.api + "selectCourseDetail", params)
|
|
|
- // .then((res) => {
|
|
|
- // loading.close();
|
|
|
- // // this.chapInfo = JSON.parse(res.data[0][0].chapters);
|
|
|
- // var dyJSON = JSON.parse(res.data[0][0].chapters);
|
|
|
- // let dyList = [];
|
|
|
- // for (var i = 0; i < dyJSON.length; i++) {
|
|
|
- // dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
|
|
|
- // var a = dyJSON[i].chapterInfo[0].taskJson;
|
|
|
- // for (var j = 0; j < a.length; j++) {
|
|
|
- // dyList[i].taskList.push({ name: a[j].task, id: j });
|
|
|
- // }
|
|
|
- // }
|
|
|
- // console.log(dyList);
|
|
|
- // this.dyList = dyList;
|
|
|
- // // var dyJSON = JSON.parse()
|
|
|
- // })
|
|
|
- // .catch((err) => {
|
|
|
- // loading.close();
|
|
|
- // console.error(err);
|
|
|
- // });
|
|
|
- // },
|
|
|
- handlePictureCardPreview(url) {
|
|
|
- this.dialogImageUrl = url;
|
|
|
- this.pictureDialog = true;
|
|
|
- },
|
|
|
- updatePj() {
|
|
|
- for (var i = 0; i < this.worksDetail.length; i++) {
|
|
|
- if (!this.worksDetail[i].eList.length) {
|
|
|
- continue
|
|
|
- }
|
|
|
- this.updateWorks(
|
|
|
- this.worksDetail[i].scopeId,
|
|
|
- this.worksDetail[i].rateList,
|
|
|
- i
|
|
|
- );
|
|
|
- }
|
|
|
- },
|
|
|
- getStar(i) {
|
|
|
- const k = i;
|
|
|
- var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
|
|
|
- var _rate = this.worksDetail[i].rateList;
|
|
|
- var _rateList = Object.keys(this.worksDetail[i].rateList);
|
|
|
- for (var i = 0; i < _ooption.length; i++) {
|
|
|
- if (_rateList.indexOf(_ooption[i].name) != -1) {
|
|
|
- _ooption[i].value = _rate[_ooption[i].name];
|
|
|
- }
|
|
|
- }
|
|
|
- // var _option = JSON.parse(JSON.stringify(this.radarOption));
|
|
|
- var _option = this.radarOption;
|
|
|
- _option.radar.indicator = [];
|
|
|
- _option.series[0].data[0].value = [];
|
|
|
- for (var i = 0; i < _ooption.length; i++) {
|
|
|
- _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
|
|
|
- _option.series[0].data[0].value.push(_ooption[i].value);
|
|
|
- }
|
|
|
- if (this.chartObj && this.chartObj[k]) {
|
|
|
- // _option.series[0].data = _ooption;
|
|
|
- this.chartObj[k].setOption(_option);
|
|
|
- } else {
|
|
|
- this.setChart(_ooption);
|
|
|
- }
|
|
|
- },
|
|
|
- updateWorks(scopeId, rateList, i) {
|
|
|
- let params = {
|
|
|
- rate: rateList,
|
|
|
- tuid: this.userid,
|
|
|
- id: scopeId,
|
|
|
- };
|
|
|
- const k = i;
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "updateWorks", params)
|
|
|
- .then((res) => {
|
|
|
- var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
|
|
|
- // var _option = JSON.parse(JSON.stringify(this.option));
|
|
|
-
|
|
|
- var _rate = rateList;
|
|
|
- var _rateList = Object.keys(rateList);
|
|
|
- for (var i = 0; i < _ooption.length; i++) {
|
|
|
- if (_rateList.indexOf(_ooption[i].name) != -1) {
|
|
|
- _ooption[i].value = _rate[_ooption[i].name];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // var _option = JSON.parse(JSON.stringify(this.radarOption));
|
|
|
- var _option = this.radarOption;
|
|
|
- _option.radar.indicator = [];
|
|
|
- _option.series[0].data[0].value = [];
|
|
|
- for (var i = 0; i < _ooption.length; i++) {
|
|
|
- _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
|
|
|
- _option.series[0].data[0].value.push(_ooption[i].value);
|
|
|
- }
|
|
|
- console.log(_option);
|
|
|
- if (this.chartObj) {
|
|
|
- // _option.series[0].data = _ooption;
|
|
|
- this.chartObj[k].setOption(_option);
|
|
|
- } else {
|
|
|
- this.setChart(_ooption);
|
|
|
- }
|
|
|
- // this.uploadBoolean = false;
|
|
|
- // this.dialogVisible2 = false;
|
|
|
- let _k = 0
|
|
|
- for (var i = 0; i < this.worksDetail.length; i++) {
|
|
|
- if (this.worksDetail[i].eList.length) {
|
|
|
- _k = i
|
|
|
- }
|
|
|
- }
|
|
|
- if (k == _k) {
|
|
|
- this.$message({
|
|
|
- message: "评价成功",
|
|
|
- type: "success",
|
|
|
- });
|
|
|
- }
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.$message.error("评价失败");
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- switchVideo(media, index) {
|
|
|
- this.playerO = {};
|
|
|
- this.playerOptions.poster = "";
|
|
|
- this.playerOptions.sources[0].src = media;
|
|
|
- this.playerO = this.playerOptions;
|
|
|
- },
|
|
|
- onPlayerPlay() { },
|
|
|
- // this.$store.commit("update", ["userInfo", userInfo]);
|
|
|
- lookWork2(id, uid, stage, task) {
|
|
|
- // this.scopeId = id;
|
|
|
- let params = {
|
|
|
- uid: uid,
|
|
|
- cid: this.id,
|
|
|
- stage: stage,
|
|
|
- task: task,
|
|
|
- };
|
|
|
- this.ajax
|
|
|
- .get(this.$store.state.api + "selectWorksDetail2", params)
|
|
|
- .then((res) => {
|
|
|
- this.sInfo = res.data[0][0];
|
|
|
- this.chapInfo = JSON.parse(res.data[0][0].chapters);
|
|
|
- var chapters = JSON.parse(res.data[0][0].chapters);
|
|
|
- var worksDetail = res.data[1];
|
|
|
- // var askArray = res.data[2];
|
|
|
- this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
|
|
|
- var askInfo = res.data[3];
|
|
|
- var answerInfo = res.data[4];
|
|
|
- var linkInfo = res.data[5];
|
|
|
- var workJson = {
|
|
|
- img: [],
|
|
|
- imgIndex: 0,
|
|
|
- eList: [],
|
|
|
- rateList: {},
|
|
|
- wpptInfo: [],
|
|
|
- askInfo: [],
|
|
|
- answerInfo: [],
|
|
|
- };
|
|
|
- var eList =
|
|
|
- chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
|
|
|
- .eList;
|
|
|
- // ooption: [
|
|
|
- // { value: 0, name: "意识能力" },
|
|
|
- // { value: 0, name: "科学探究能力" },
|
|
|
- // { value: 0, name: "实践创新能力" },
|
|
|
- // { value: 0, name: "学习反思能力" },
|
|
|
- // { value: 0, name: "工程思维能力" },
|
|
|
- // ],
|
|
|
- var _ooption = [];
|
|
|
- if (eList) {
|
|
|
- workJson.eList = eList;
|
|
|
- for (var i = 0; i < eList.length; i++) {
|
|
|
- _ooption.push({ value: 0, name: eList[i].value });
|
|
|
- workJson.rateList[eList[i].value] = 0;
|
|
|
- }
|
|
|
- workJson.rateList.content = "";
|
|
|
- this.ooption = _ooption;
|
|
|
- } else {
|
|
|
- workJson.eList = [
|
|
|
- { value: "意识能力", detail: "", score: 5 },
|
|
|
- { value: "科学探究能力", detail: "", score: 5 },
|
|
|
- { value: "实践创新能力", detail: "", score: 5 },
|
|
|
- { value: "学习反思能力", detail: "", score: 5 },
|
|
|
- { value: "工程思维能力", detail: "", score: 5 },
|
|
|
- ];
|
|
|
- for (var i = 0; i < workJson.eList.length; i++) {
|
|
|
- _ooption.push({ value: 0, name: workJson.eList[i].value });
|
|
|
- workJson.rateList[workJson.eList[i].value] = 0;
|
|
|
- }
|
|
|
- workJson.rateList.content = "";
|
|
|
- this.ooption = [
|
|
|
- { value: 0, name: "意识能力" },
|
|
|
- { value: 0, name: "科学探究能力" },
|
|
|
- { value: 0, name: "实践创新能力" },
|
|
|
- { value: 0, name: "学习反思能力" },
|
|
|
- { value: 0, name: "工程思维能力" },
|
|
|
- ];
|
|
|
- }
|
|
|
- if (this.sInfo.rate) {
|
|
|
- var _rate = JSON.parse(this.sInfo.rate);
|
|
|
- var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
|
|
|
- for (var i = 0; i < _rateList.length; i++) {
|
|
|
- var _c = Object.keys(workJson.rateList);
|
|
|
- if (_c.indexOf(_rateList[i]) != -1) {
|
|
|
- workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
|
|
|
- }
|
|
|
- }
|
|
|
- for (var i = 0; i < this.ooption.length; i++) {
|
|
|
- if (_rateList.indexOf(this.ooption[i].name) != -1) {
|
|
|
- this.ooption[i].value = _rate[this.ooption[i].name];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for (var i = 0; i < worksDetail.length; i++) {
|
|
|
- workJson.img.push({ src: worksDetail[i].content, id: i });
|
|
|
- }
|
|
|
- for (var i = 0; i < askInfo.length; i++) {
|
|
|
- const element = askInfo[i];
|
|
|
- let a = JSON.parse(element.content)[0];
|
|
|
- let b = a.anwer.split(",");
|
|
|
- let c = [];
|
|
|
- for (var j = 0; j < b.length; j++) {
|
|
|
- c.push(parseInt(b[j]));
|
|
|
- }
|
|
|
- a.askJson.radio = c;
|
|
|
- a.askJson.time = element.time;
|
|
|
- workJson.askInfo.push(a.askJson);
|
|
|
- }
|
|
|
-
|
|
|
- for (var i = 0; i < answerInfo.length; i++) {
|
|
|
- const element = answerInfo[i];
|
|
|
- workJson.answerInfo.push(JSON.parse(element.content)[0]);
|
|
|
- }
|
|
|
-
|
|
|
- this.worksDetail = workJson;
|
|
|
-
|
|
|
- this.courseDetail = res.data[0][0];
|
|
|
-
|
|
|
- this.$forceUpdate;
|
|
|
-
|
|
|
- var _course = `<h1>${this.sInfo.course}</h1>`;
|
|
|
- var _title =
|
|
|
- "<h2>" +
|
|
|
- "第" +
|
|
|
- (this.sInfo.stage + 1) +
|
|
|
- "阶段 " +
|
|
|
- this.dyList[this.sInfo.stage].name +
|
|
|
- "</h2>";
|
|
|
- var _subtitle =
|
|
|
- "<h3>" +
|
|
|
- "任务" +
|
|
|
- (this.sInfo.task + 1) +
|
|
|
- " " +
|
|
|
- this.dyList[this.sInfo.stage].taskList[this.sInfo.task].name +
|
|
|
- "-" +
|
|
|
- this.sInfo.sName +
|
|
|
- "</h3>";
|
|
|
- var _img = "";
|
|
|
- if (workJson.img.length > 0) {
|
|
|
- for (var i = 0; i < workJson.img.length; i++) {
|
|
|
- // _img += `<div style="margin-top:10px"><div>图片${
|
|
|
- // i + 1
|
|
|
- // }:<a href='${workJson.img[i].src}'>${
|
|
|
- // workJson.img[i].src
|
|
|
- // }</a></div>`;
|
|
|
- _img += `<div style="margin-top:10px"><div>图片${i + 1
|
|
|
- }</div><img style="max-width:500px" src="${workJson.img[i].src
|
|
|
- }"/></div>`;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var _ask = "";
|
|
|
- if (workJson.askInfo.length > 0) {
|
|
|
- var _ask = "<h3>选择题</h3>";
|
|
|
- for (var i = 0; i < workJson.askInfo.length; i++) {
|
|
|
- var _div = document.createElement("div");
|
|
|
- _div.innerHTML = `<h4>标题:${workJson.askInfo[i].askTitle}</h4>`;
|
|
|
- for (var j = 0; j < workJson.askInfo[i].askJson.length; j++) {
|
|
|
- var _div2 = document.createElement("div");
|
|
|
- _div2.innerHTML = `<h5>第${j + 1}题:${workJson.askInfo[i].askJson[j].askstitle
|
|
|
- } 选择:${workJson.askInfo[i].radio[j] + 1}</h5> `;
|
|
|
- var _div3 = document.createElement("div");
|
|
|
- for (
|
|
|
- var z = 0;
|
|
|
- z < workJson.askInfo[i].askJson[j].checkList.length;
|
|
|
- z++
|
|
|
- ) {
|
|
|
- _div3.innerHTML += `<span style="margin-right:5px">${z + 1}.${workJson.askInfo[i].askJson[j].checkList[z]
|
|
|
- }</span>`;
|
|
|
- }
|
|
|
- _div2.innerHTML += `<div>${_div3.innerHTML}</div>`;
|
|
|
- _div.innerHTML += `<div>${_div2.innerHTML}</div>`;
|
|
|
- }
|
|
|
- _ask += `<div>${_div.innerHTML}</div>`;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var _answer = "";
|
|
|
- if (workJson.answerInfo.length > 0) {
|
|
|
- var _answer = "<h3>问答</h3>";
|
|
|
- for (var i = 0; i < workJson.answerInfo.length; i++) {
|
|
|
- var _div = document.createElement("div");
|
|
|
- _div.innerHTML = `<h4>问答:${workJson.answerInfo[i].answerTitle}</h4>`;
|
|
|
- _div.innerHTML += `<div>${workJson.answerInfo[i].answer}</div>`;
|
|
|
- _answer += `<div>${_div.innerHTML}</div>`;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var _link = "";
|
|
|
- if (linkInfo.length > 0) {
|
|
|
- for (var i = 0; i < linkInfo.length; i++) {
|
|
|
- _link += `<div style="margin-top:10px"><a href='${linkInfo[i].content}'>${linkInfo[i].content}</a></div>`;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var _html =
|
|
|
- _course + _title + _subtitle + _img + _ask + _answer + _link;
|
|
|
- this.generate(_html);
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.error(err);
|
|
|
- });
|
|
|
- },
|
|
|
- isOpen(s) {
|
|
|
- // this.stageIndex = s;
|
|
|
- this.dyList2[s].isOpen = !this.dyList2[s].isOpen;
|
|
|
- },
|
|
|
- openTask(s, i) {
|
|
|
- var a = s + "-" + i;
|
|
|
- var b = document.getElementById(a);
|
|
|
- var d = b.getAttribute("scrollindex");
|
|
|
- var c = document.getElementsByClassName("shuBox")[0];
|
|
|
- c.scrollTop = parseInt(d) * 375;
|
|
|
- this.stageIndex = s;
|
|
|
- this.taskCount = i;
|
|
|
- this.navId = a;
|
|
|
- },
|
|
|
- async generate(a) {
|
|
|
- // 将html文件中需要用到的数据挂载到store上
|
|
|
- this.$store.commit("update", ["report", a]);
|
|
|
- console.log(this.$store.state.report);
|
|
|
- const content = `<!DOCTYPE html>
|
|
|
- <html lang="en">
|
|
|
- <head>
|
|
|
- <meta charset="UTF-8">
|
|
|
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
- <title>报告</title>
|
|
|
- </head>
|
|
|
- <body>
|
|
|
- ${this.$store.state.report}
|
|
|
- </body>
|
|
|
- </html>`;
|
|
|
- // debugger
|
|
|
- // 生成报告
|
|
|
- const link = document.createElement("a");
|
|
|
- let dname = this.sInfo.course + "-" + this.sInfo.sName + ".html";
|
|
|
- // link.download = "报告.html"; // 文件名
|
|
|
- link.download = dname; // 文件名
|
|
|
- link.style.display = "none";
|
|
|
- // 创建文件流
|
|
|
- // 创建bolb实例时,内容一定要放在[]中
|
|
|
- const blob = new Blob([content], {
|
|
|
- type: "text/plain;charset='utf-8'",
|
|
|
- });
|
|
|
- link.href = window.URL.createObjectURL(blob);
|
|
|
- document.body.appendChild(link);
|
|
|
- link.click();
|
|
|
- document.body.removeChild(link);
|
|
|
- // saveAs(
|
|
|
- // htmlDocx.asBlob(content, {
|
|
|
- // orientation: "landscape", //跨域设置
|
|
|
- // }),
|
|
|
- // //文件名
|
|
|
- // "报告.doc"
|
|
|
- // );
|
|
|
- },
|
|
|
- },
|
|
|
- created() {
|
|
|
- this.page = 1;
|
|
|
- this.getCourseDetail();
|
|
|
- this.getClass();
|
|
|
- this.getGroup();
|
|
|
- this.getWorks();
|
|
|
- },
|
|
|
-};
|
|
|
-</script>
|
|
|
-
|
|
|
-<style scoped>
|
|
|
-.pb_head>span:nth-child(2) {
|
|
|
- font-size: 16px;
|
|
|
- margin-left: 80px;
|
|
|
- color: #ab582f;
|
|
|
-}
|
|
|
-
|
|
|
-.pb_head {
|
|
|
- margin: 0 !important;
|
|
|
- width: 100% !important;
|
|
|
-}
|
|
|
-
|
|
|
-.student_page {
|
|
|
- margin-top: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.student_head {
|
|
|
- margin-top: 10px;
|
|
|
- padding-bottom: 15px;
|
|
|
-}
|
|
|
-
|
|
|
-.student_search {
|
|
|
- display: flex;
|
|
|
-}
|
|
|
-
|
|
|
-.student_search>div:nth-child(1) {
|
|
|
- line-height: 35px;
|
|
|
- font-size: 14px;
|
|
|
-}
|
|
|
-
|
|
|
-.student_search>>>.el-input__inner {
|
|
|
- width: 190px;
|
|
|
- height: 35px;
|
|
|
- margin-left: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.student_table>>>.el-table--border td {
|
|
|
- border-right: 0px !important;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-dialog__header {
|
|
|
- padding: 20px 20px 10px;
|
|
|
- text-align: center;
|
|
|
- background: #32455b;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-dialog__title {
|
|
|
- font-size: 14px !important;
|
|
|
- color: #fff !important;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-dialog__headerbtn {
|
|
|
- font-size: 20px !important;
|
|
|
- top: 5px !important;
|
|
|
- right: 8px !important;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-form-item__label {
|
|
|
- margin-left: 65px;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-form-item {
|
|
|
- display: flex;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-form-item__content {
|
|
|
- margin: 0 !important;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-dialog__footer {
|
|
|
- text-align: center !important;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-dialog {
|
|
|
- min-width: 650px !important;
|
|
|
- width: 1080px;
|
|
|
-}
|
|
|
-
|
|
|
-.add_work>>>.el-dialog__body {
|
|
|
- background: #fff;
|
|
|
- height: 660px;
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.header-title {
|
|
|
- display: flex;
|
|
|
-}
|
|
|
-
|
|
|
-.logoImg {
|
|
|
- width: 30px;
|
|
|
-}
|
|
|
-
|
|
|
-.logoImg>img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.title_add_student {
|
|
|
- margin: 0 auto;
|
|
|
- color: #fff;
|
|
|
-}
|
|
|
-
|
|
|
-.first {
|
|
|
- margin-top: 25px;
|
|
|
- border-bottom: 1px solid #c5c5c5;
|
|
|
-}
|
|
|
-
|
|
|
-.one_top {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
-}
|
|
|
-
|
|
|
-.one_top>div:nth-child(1) {
|
|
|
- color: #2490bf;
|
|
|
- font-size: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-.one_top>button {
|
|
|
- width: 100px;
|
|
|
- background: #24a0a4;
|
|
|
- height: 30px;
|
|
|
- color: #e0e0e0;
|
|
|
- font-size: 13px;
|
|
|
- padding: 0 !important;
|
|
|
-}
|
|
|
-
|
|
|
-.work_Img {
|
|
|
- width: 150px;
|
|
|
- margin: 10px 0;
|
|
|
-}
|
|
|
-
|
|
|
-.assess_Img {
|
|
|
- width: 400px;
|
|
|
- margin: 0 auto;
|
|
|
- padding: 15px 0;
|
|
|
-}
|
|
|
-
|
|
|
-.work_Img>img,
|
|
|
-.assess_Img>img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.work_input {
|
|
|
- border: 1px solid;
|
|
|
- width: 135px;
|
|
|
- height: 20px;
|
|
|
- line-height: 20px;
|
|
|
- font-size: 13px;
|
|
|
- padding: 5px;
|
|
|
-}
|
|
|
-
|
|
|
-.poetry {
|
|
|
- margin: 10px 0 15px 0;
|
|
|
-}
|
|
|
-
|
|
|
-.assess {
|
|
|
- background: #169bd5 !important;
|
|
|
-}
|
|
|
-
|
|
|
-.assess_top {
|
|
|
- border-bottom: 2px solid #eee;
|
|
|
- padding-bottom: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.assess_top>div:nth-child(1) {
|
|
|
- color: #2490bf;
|
|
|
- font-size: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-.student_Answer {
|
|
|
- display: flex;
|
|
|
- margin: 5px 10px;
|
|
|
- /* padding-bottom: 25px; */
|
|
|
-}
|
|
|
-
|
|
|
-.workName {
|
|
|
- font-size: 18px;
|
|
|
- font-weight: bold;
|
|
|
- margin: 5px 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.toux {
|
|
|
- width: 35px;
|
|
|
- /* margin: auto 0; */
|
|
|
- height: 35px;
|
|
|
-}
|
|
|
-
|
|
|
-.toux>img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.nav {
|
|
|
- display: flex;
|
|
|
- flex-wrap: wrap;
|
|
|
- margin-top: 10px;
|
|
|
- flex-direction: column;
|
|
|
-}
|
|
|
-
|
|
|
-.studentName {
|
|
|
- margin-left: 10px;
|
|
|
- font-size: 13px;
|
|
|
-}
|
|
|
-
|
|
|
-.studentAnswer {
|
|
|
- font-size: 12px;
|
|
|
- margin: 5px 0 0 10px;
|
|
|
- height: 42px;
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.comment {
|
|
|
- /* margin: 20px 0 0 10px;
|
|
|
- overflow: auto;
|
|
|
- height: 75%;
|
|
|
- max-height: 330px; */
|
|
|
- overflow: auto;
|
|
|
- /* height: 290px; */
|
|
|
- height: 525px;
|
|
|
- background: #fff;
|
|
|
- border-radius: 5px;
|
|
|
- padding: 10px;
|
|
|
- box-sizing: border-box;
|
|
|
-}
|
|
|
-
|
|
|
-.comment_body {
|
|
|
- height: calc(100% - 25px);
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.comment>.comment_title {
|
|
|
- font-size: 18px;
|
|
|
-}
|
|
|
-
|
|
|
-.comment>.comment_title>span {
|
|
|
- font-size: 14px;
|
|
|
-}
|
|
|
-
|
|
|
-.other_Answer {
|
|
|
- display: flex;
|
|
|
- margin: 5px 10px;
|
|
|
- padding: 15px 0;
|
|
|
- justify-content: center;
|
|
|
-}
|
|
|
-
|
|
|
-.nav {
|
|
|
- margin-left: 5px;
|
|
|
- width: 80%;
|
|
|
-}
|
|
|
-
|
|
|
-.nameAndTime {
|
|
|
- display: flex;
|
|
|
-}
|
|
|
-
|
|
|
-.otherName {
|
|
|
- font-weight: bold;
|
|
|
- margin-left: 10px;
|
|
|
- font-size: 13px;
|
|
|
-}
|
|
|
-
|
|
|
-.time {
|
|
|
- margin-left: 25px;
|
|
|
- font-size: 12px;
|
|
|
- margin-top: 3px;
|
|
|
-}
|
|
|
-
|
|
|
-.otherAnswer {
|
|
|
- width: 80%;
|
|
|
- word-wrap: break-word;
|
|
|
- word-break: break-all;
|
|
|
- overflow: hidden;
|
|
|
- font-size: 12px;
|
|
|
- margin: 5px 0 0 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.doingAssess {
|
|
|
- margin: 0 auto;
|
|
|
- width: 300px;
|
|
|
- background: #169bd5;
|
|
|
- height: 35px;
|
|
|
- line-height: 35px;
|
|
|
- border-radius: 3px;
|
|
|
- font-size: 13px;
|
|
|
- text-align: center;
|
|
|
- color: #fff;
|
|
|
- margin-top: 30px;
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-
|
|
|
-.score_top {
|
|
|
- display: flex;
|
|
|
- margin-bottom: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.userTou {
|
|
|
- width: 50px;
|
|
|
-}
|
|
|
-
|
|
|
-.userTou>img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.score_user_name {
|
|
|
- line-height: 53px;
|
|
|
- margin-left: 15px;
|
|
|
-}
|
|
|
-
|
|
|
-.course_top {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-
|
|
|
-.course_top>div:nth-child(1) {
|
|
|
- line-height: 25px;
|
|
|
-}
|
|
|
-
|
|
|
-.course_top>div:nth-child(2) {
|
|
|
- border: 1px solid #ccc;
|
|
|
- width: 250px;
|
|
|
- text-align: center;
|
|
|
- height: 25px;
|
|
|
- line-height: 25px;
|
|
|
- margin-left: 30px;
|
|
|
-}
|
|
|
-
|
|
|
-.sd_score {
|
|
|
- font-size: 15px;
|
|
|
- background: #fff;
|
|
|
- height: 100%;
|
|
|
- padding-top: 40px;
|
|
|
- border-radius: 5px;
|
|
|
- width: 90%;
|
|
|
- box-shadow: 2px 2px 5px #909090;
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.sd_score .score_box {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- margin-bottom: 15px;
|
|
|
- /* margin-left: 30px; */
|
|
|
-}
|
|
|
-
|
|
|
-.sd_score .score_box:last-child {
|
|
|
- margin-bottom: 0;
|
|
|
-}
|
|
|
-
|
|
|
-.rate_size>>>.el-rate__icon {
|
|
|
- font-size: 25px;
|
|
|
-}
|
|
|
-
|
|
|
-.rate_size>>>.el-icon-star-off {
|
|
|
- font-size: 22px;
|
|
|
-}
|
|
|
-
|
|
|
-.sd_score span {
|
|
|
- width: 130px;
|
|
|
- text-align: justify;
|
|
|
- text-align-last: justify;
|
|
|
- display: block;
|
|
|
- margin-right: 20px;
|
|
|
- white-space: nowrap;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- font-size: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-.moreSay {
|
|
|
- margin: 0px 0 5px 20px;
|
|
|
-}
|
|
|
-
|
|
|
-.more_say_input {
|
|
|
- margin-left: 20px;
|
|
|
- width: 80%;
|
|
|
-}
|
|
|
-
|
|
|
-.more_say_input>>>.el-input__inner {
|
|
|
- height: 75px;
|
|
|
- font-size: 13px;
|
|
|
- padding: 0 0 0 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.assess_right {
|
|
|
- width: 200px;
|
|
|
- background: #82b0ee;
|
|
|
- color: #fff;
|
|
|
- text-align: center;
|
|
|
- height: 30px;
|
|
|
- line-height: 30px;
|
|
|
- border-radius: 5px;
|
|
|
- margin: 0 auto;
|
|
|
- margin-top: 20px;
|
|
|
- font-size: 13px;
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-
|
|
|
-.student_page {
|
|
|
- margin-top: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.display {
|
|
|
- display: none;
|
|
|
-}
|
|
|
-
|
|
|
-.firstTop {
|
|
|
- background: #fff;
|
|
|
- display: flex;
|
|
|
- margin-bottom: 15px;
|
|
|
- flex-direction: column;
|
|
|
- align-items: flex-start;
|
|
|
- height: 90px;
|
|
|
- padding: 10px 25px;
|
|
|
- border-radius: 5px;
|
|
|
- width: 90%;
|
|
|
- box-shadow: 2px 2px 5px #909090;
|
|
|
-}
|
|
|
-
|
|
|
-.talkScore>>>.el-dialog__body {
|
|
|
- background: #efefef;
|
|
|
- margin: 0 !important;
|
|
|
-}
|
|
|
-
|
|
|
-.lastTop {
|
|
|
- background: #fff;
|
|
|
- border-radius: 5px;
|
|
|
- width: 98%;
|
|
|
- height: 120px;
|
|
|
- box-shadow: 2px 2px 5px #909090;
|
|
|
-}
|
|
|
-
|
|
|
-.left,
|
|
|
-.right {
|
|
|
- /* background: #fff; */
|
|
|
- border-radius: 5px;
|
|
|
- /* padding: 10px; */
|
|
|
- box-sizing: border-box;
|
|
|
-}
|
|
|
-
|
|
|
-.left {
|
|
|
- margin-right: 10px;
|
|
|
- width: 30%;
|
|
|
- min-height: 425px;
|
|
|
-}
|
|
|
-
|
|
|
-/* .left .left_top {
|
|
|
- background: #fff;
|
|
|
- padding: 10px;
|
|
|
- border-radius: 5px;
|
|
|
- margin-bottom: 15px;
|
|
|
-} */
|
|
|
-.left .left_bottom {
|
|
|
- background: #fff;
|
|
|
- padding: 10px;
|
|
|
- border-radius: 5px;
|
|
|
- height: 160px;
|
|
|
-}
|
|
|
-
|
|
|
-.right {
|
|
|
- width: 20%;
|
|
|
- background: none;
|
|
|
- padding: 0;
|
|
|
-}
|
|
|
-
|
|
|
-.courseTitle {
|
|
|
- font-size: 16px;
|
|
|
- color: #7c7c7c;
|
|
|
- width: 100%;
|
|
|
- margin-bottom: 10px;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-
|
|
|
-.course_t {
|
|
|
- font-size: 19px;
|
|
|
- display: flex;
|
|
|
- align-items: flex-end;
|
|
|
-}
|
|
|
-
|
|
|
-.course_t span:nth-child(2) {
|
|
|
- font-size: 16px;
|
|
|
- margin-left: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.courseTitle span:nth-child(2) {
|
|
|
- /* font-size: 14px;
|
|
|
- cursor: pointer; */
|
|
|
-}
|
|
|
-
|
|
|
-.bigImg {
|
|
|
- margin-top: 10px;
|
|
|
- /* height: 300px; */
|
|
|
- height: 150px;
|
|
|
-}
|
|
|
-
|
|
|
-.bigImg>img,
|
|
|
-.thumbnail>div>img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- object-fit: contain;
|
|
|
-}
|
|
|
-
|
|
|
-.thumbnail {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- justify-content: flex-start;
|
|
|
- margin: 5px 0 8px;
|
|
|
- overflow-x: auto;
|
|
|
- overflow-y: hidden;
|
|
|
-}
|
|
|
-
|
|
|
-.isClick2 {
|
|
|
- border: 3px solid #8f7fe2;
|
|
|
- border-radius: 5px;
|
|
|
-}
|
|
|
-
|
|
|
-.thumbnail>div {
|
|
|
- width: 80px;
|
|
|
- height: 80px;
|
|
|
- margin-right: 5px;
|
|
|
- cursor: pointer;
|
|
|
- flex-shrink: 0;
|
|
|
- box-sizing: border-box;
|
|
|
-}
|
|
|
-
|
|
|
-.zyBoxC {
|
|
|
- background: #ededed;
|
|
|
- display: flex;
|
|
|
- align-items: flex-start;
|
|
|
- justify-content: center;
|
|
|
- padding: 20px 0px;
|
|
|
- flex-direction: column;
|
|
|
- height: calc(100% - 50px);
|
|
|
-}
|
|
|
-
|
|
|
-.zyBox {
|
|
|
- display: flex;
|
|
|
- min-width: 600px;
|
|
|
- width: 600px;
|
|
|
- position: relative;
|
|
|
- background: #fff;
|
|
|
- flex-direction: column;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: flex-start;
|
|
|
- overflow: hidden;
|
|
|
-}
|
|
|
-
|
|
|
-.zyBoxC+.zyBoxC {
|
|
|
- margin-top: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.rbButtom {
|
|
|
- position: absolute;
|
|
|
- bottom: 0;
|
|
|
- right: 0;
|
|
|
- background: #06a7ff;
|
|
|
- width: 100px;
|
|
|
- height: 30px;
|
|
|
- border-radius: 5px;
|
|
|
- text-align: center;
|
|
|
- color: #fff;
|
|
|
- line-height: 30px;
|
|
|
- font-size: 14px;
|
|
|
- cursor: pointer;
|
|
|
- right: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.bigImg>>>.vjs-tech,
|
|
|
-.bigImg>>>.video-js {
|
|
|
- height: 300px !important;
|
|
|
-}
|
|
|
-
|
|
|
-.el-table>>>.even_row {
|
|
|
- background-color: #f1f1f1;
|
|
|
-}
|
|
|
-
|
|
|
-.data_body {
|
|
|
- height: 200px;
|
|
|
- display: flex;
|
|
|
- position: relative;
|
|
|
- border-radius: 5px;
|
|
|
- box-sizing: border-box;
|
|
|
- width: 100%;
|
|
|
- background: #fff;
|
|
|
-}
|
|
|
-
|
|
|
-.data_body .title {
|
|
|
- position: absolute;
|
|
|
- top: 10px;
|
|
|
- left: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy>>>.el-dialog__header {
|
|
|
- padding: 9px 20px 10px;
|
|
|
- background: #32455b !important;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy>>>.el-dialog__title {
|
|
|
- color: #fff;
|
|
|
- font-size: 15px;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy>>>.el-dialog__headerbtn {
|
|
|
- top: 14px;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
|
|
|
- color: #fff;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
|
|
|
- color: #fff;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy>>>.el-dialog__body,
|
|
|
-.dialog_diy>>>.el-dialog__footer {
|
|
|
- background: #fafafa;
|
|
|
-}
|
|
|
-
|
|
|
-.max_diy>>>.el-dialog {
|
|
|
- /* max-width: 1200px; */
|
|
|
- max-width: 1300px;
|
|
|
- /* height:800px */
|
|
|
-}
|
|
|
-
|
|
|
-.max_diy>>>.el-dialog__body {
|
|
|
- height: 800px;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy2>>>.el-dialog__header {
|
|
|
- padding: 9px 20px 10px;
|
|
|
- background: #32455b !important;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy2>>>.el-dialog__title {
|
|
|
- color: #fff;
|
|
|
- font-size: 15px;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy2>>>.el-dialog__headerbtn {
|
|
|
- top: 12px;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close {
|
|
|
- color: #fff;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close:hover {
|
|
|
- color: #fff;
|
|
|
-}
|
|
|
-
|
|
|
-.dialog_diy2>>>.el-dialog__body,
|
|
|
-.dialog_diy2>>>.el-dialog__footer {
|
|
|
- background: #ededed;
|
|
|
- padding: 15px 20px;
|
|
|
-}
|
|
|
-
|
|
|
-.a_addBox2 {
|
|
|
- margin: 10px 0;
|
|
|
- background: #fff;
|
|
|
- padding: 15px;
|
|
|
-}
|
|
|
-
|
|
|
-.a_addBox {
|
|
|
- margin: 10px 0;
|
|
|
- background: #fff;
|
|
|
- padding: 15px;
|
|
|
- /* max-height: 400px; */
|
|
|
- max-height: 160px;
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_box {
|
|
|
- border-bottom: 2px solid #eee;
|
|
|
- padding-bottom: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_head {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
- margin: 10px 0;
|
|
|
- font-size: 18px;
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_head .a_add_head_input {
|
|
|
- width: 300px;
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_head .a_add_head_div {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_body {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_input {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- flex-wrap: wrap;
|
|
|
- /* flex-direction: column; */
|
|
|
- /* width: 100%; */
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_input>>>el-radio-group {
|
|
|
- margin: 10px 0;
|
|
|
-}
|
|
|
-
|
|
|
-.a_add_input>>>.el-radio-group {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: wrap;
|
|
|
-}
|
|
|
-
|
|
|
-.redioStyle>>>.el-radio__label {
|
|
|
- font-size: 18px;
|
|
|
-}
|
|
|
-
|
|
|
-.task_title {
|
|
|
- font-size: 18px;
|
|
|
- font-weight: 700;
|
|
|
-}
|
|
|
-
|
|
|
-.ask_Answer {
|
|
|
- /* margin-top: 10px; */
|
|
|
-}
|
|
|
-
|
|
|
-.ask_Answer_title {
|
|
|
- font-size: 18px;
|
|
|
-}
|
|
|
-
|
|
|
-.ask_Answer_content {
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- margin: 10px 0;
|
|
|
-}
|
|
|
-
|
|
|
-.answer_body {
|
|
|
- padding: 10px 0;
|
|
|
- border-bottom: 1px solid #f5f5f5;
|
|
|
-}
|
|
|
-
|
|
|
-.answer_title {
|
|
|
- font-size: 15px;
|
|
|
- font-weight: 700;
|
|
|
-}
|
|
|
-
|
|
|
-.answer_content {
|
|
|
- margin-top: 5px;
|
|
|
-}
|
|
|
-
|
|
|
-.ask_body {
|
|
|
- display: flex;
|
|
|
- font-size: 16px;
|
|
|
- margin-top: 10px;
|
|
|
- flex-direction: column;
|
|
|
- height: 130px;
|
|
|
- overflow: auto;
|
|
|
- /* padding: 0 10px; */
|
|
|
- box-sizing: border-box;
|
|
|
-}
|
|
|
-
|
|
|
-.ask_body div {
|
|
|
- /* cursor: pointer; */
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
-}
|
|
|
-
|
|
|
-.ask_body div .btn {
|
|
|
- cursor: pointer;
|
|
|
- color: #fff;
|
|
|
- background-color: #409eff;
|
|
|
- text-align: center;
|
|
|
- font-size: 12px;
|
|
|
- padding: 6px 12px;
|
|
|
- box-sizing: border-box;
|
|
|
- border-radius: 5px;
|
|
|
- width: 60px;
|
|
|
-}
|
|
|
-
|
|
|
-.ask_body div span:nth-child(1) {
|
|
|
- max-width: 250px;
|
|
|
- white-space: nowrap;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
-}
|
|
|
-
|
|
|
-.ask_body div+div {
|
|
|
- margin-top: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.work_nopicture {
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- /* height: 350px; */
|
|
|
- height: 352px;
|
|
|
-}
|
|
|
-
|
|
|
-.student_table>>>.el-table,
|
|
|
-.student_table>>>.el-table__body-wrapper {
|
|
|
- height: auto !important;
|
|
|
-}
|
|
|
-
|
|
|
-.tx {
|
|
|
- width: 35px;
|
|
|
-}
|
|
|
-
|
|
|
-.ech {
|
|
|
- width: 100px;
|
|
|
-}
|
|
|
-
|
|
|
-.tx>img,
|
|
|
-.ech>img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.txName {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- align-items: center;
|
|
|
- margin-left: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.txName>div:nth-child(2) {
|
|
|
- margin-left: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.top {
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- padding: 15px 0 15px 20px;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- width: 95%;
|
|
|
-}
|
|
|
-
|
|
|
-.jdName>div:nth-child(1) {
|
|
|
- font-size: 20px;
|
|
|
- font-weight: bold;
|
|
|
-}
|
|
|
-
|
|
|
-.taskName {
|
|
|
- font-size: 14px;
|
|
|
- margin-top: 10px;
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-
|
|
|
-.task {
|
|
|
- background: #8f7fe2;
|
|
|
- color: #fff;
|
|
|
- width: 50px;
|
|
|
- height: 22px;
|
|
|
- border-radius: 5px;
|
|
|
- text-align: center;
|
|
|
- line-height: 22px;
|
|
|
- margin-right: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.contentBox {
|
|
|
- width: 100%;
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: flex-start;
|
|
|
- height: 253px;
|
|
|
-}
|
|
|
-
|
|
|
-.left_top {
|
|
|
- width: 45%;
|
|
|
- padding-left: 20px;
|
|
|
-}
|
|
|
-
|
|
|
-.right_top {
|
|
|
- width: 53%;
|
|
|
-}
|
|
|
-
|
|
|
-.cBox {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: flex-start;
|
|
|
- width: 100%;
|
|
|
- height: calc(100% - 60px);
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.right_score {
|
|
|
- min-width: 370px;
|
|
|
- height: 351px;
|
|
|
- margin-left: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.pb_left {
|
|
|
- width: 20%;
|
|
|
- margin-right: 10px;
|
|
|
- background: rgb(255, 255, 255);
|
|
|
- /* padding-right: 10px; */
|
|
|
- /* height: 500px; */
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.cTitle {
|
|
|
- background: #634fa4;
|
|
|
- width: 85%;
|
|
|
- margin: 10px auto;
|
|
|
- height: 50px;
|
|
|
- color: #fff;
|
|
|
- line-height: 50px;
|
|
|
- text-align: center;
|
|
|
- font-size: 20px;
|
|
|
- font-weight: bold;
|
|
|
- border-radius: 5px;
|
|
|
- cursor: pointer;
|
|
|
- white-space: nowrap;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- padding: 0 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.ml {
|
|
|
- margin-left: 20px;
|
|
|
- color: #5b7dba;
|
|
|
- border-left: 3px solid #5b7dba;
|
|
|
- padding-left: 5px;
|
|
|
- font-weight: bold;
|
|
|
-}
|
|
|
-
|
|
|
-.cru_selectBox {
|
|
|
- width: 100%;
|
|
|
- margin: 0 auto;
|
|
|
- overflow: auto;
|
|
|
- height: calc(100% - 90px);
|
|
|
- overflow-x: hidden;
|
|
|
-}
|
|
|
-
|
|
|
-.cru_selectBox::-webkit-scrollbar {
|
|
|
- /*滚动条整体样式*/
|
|
|
- width: 6px;
|
|
|
- /*高宽分别对应横竖滚动条的尺寸*/
|
|
|
- height: 6px;
|
|
|
-}
|
|
|
-
|
|
|
-/*定义滚动条轨道 内阴影+圆角*/
|
|
|
-.cru_selectBox::-webkit-scrollbar-track {
|
|
|
- border-radius: 10px;
|
|
|
- background-color: #b8bdc9;
|
|
|
-}
|
|
|
-
|
|
|
-/*定义滑块 内阴影+圆角*/
|
|
|
-.cru_selectBox::-webkit-scrollbar-thumb {
|
|
|
- border-radius: 10px;
|
|
|
- -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
|
|
|
- background-color: #2c5ab3;
|
|
|
-}
|
|
|
-
|
|
|
-.blue_box_one {
|
|
|
- text-align: center;
|
|
|
- color: #fff;
|
|
|
- background-image: linear-gradient(90deg, #7960d5, #65b9fc);
|
|
|
- border-radius: 7px;
|
|
|
- margin: 10px auto;
|
|
|
- cursor: pointer;
|
|
|
- width: 95%;
|
|
|
- height: 45px;
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- justify-content: flex-start;
|
|
|
- align-items: center;
|
|
|
-}
|
|
|
-
|
|
|
-.blue_box_one>div:nth-child(1) {
|
|
|
- line-height: 30px;
|
|
|
- margin: 0 5px 0 10px;
|
|
|
- width: 30%;
|
|
|
- min-width: 70px;
|
|
|
- border-radius: 4px;
|
|
|
-}
|
|
|
-
|
|
|
-.blue_box_one>div:nth-child(2) {
|
|
|
- white-space: nowrap;
|
|
|
- text-overflow: ellipsis;
|
|
|
- overflow: hidden;
|
|
|
- word-break: break-all;
|
|
|
- width: 70%;
|
|
|
- text-align: left;
|
|
|
- margin-right: 10px;
|
|
|
- max-width: calc(100% - 85px);
|
|
|
-}
|
|
|
-
|
|
|
-.blue_box_one>div:nth-child(2):hover {
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- white-space: nowrap;
|
|
|
- cursor: pointer;
|
|
|
-}
|
|
|
-
|
|
|
-.twoChild {
|
|
|
- width: 95%;
|
|
|
- margin: 10px auto;
|
|
|
- border-radius: 5px;
|
|
|
- background: #f2f2f2;
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- flex-wrap: nowrap;
|
|
|
- justify-content: flex-start;
|
|
|
- align-items: flex-start;
|
|
|
- transition: all 0.5s;
|
|
|
- overflow: hidden;
|
|
|
- height: 0;
|
|
|
- background: #e7f3ff;
|
|
|
-}
|
|
|
-
|
|
|
-.twoChild>div:nth-child(1) {
|
|
|
- margin-top: 5px;
|
|
|
-}
|
|
|
-
|
|
|
-.navChild {
|
|
|
- width: 100%;
|
|
|
- cursor: pointer;
|
|
|
- margin-bottom: 10px;
|
|
|
-}
|
|
|
-
|
|
|
-.navActive {
|
|
|
- height: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.navTask {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: center;
|
|
|
- align-content: flex-start;
|
|
|
- height: 40px;
|
|
|
- justify-content: flex-start;
|
|
|
- padding: 0 10px;
|
|
|
- width: 100%;
|
|
|
- box-sizing: border-box;
|
|
|
-}
|
|
|
-
|
|
|
-.vedioNav {
|
|
|
- margin: 10px 0 0 15px;
|
|
|
- /* border-bottom: 1px solid #d7d7d7; */
|
|
|
- padding-bottom: 5px;
|
|
|
- background: #b7aadf;
|
|
|
- width: 55px;
|
|
|
- min-width: 55px;
|
|
|
- border-radius: 5px;
|
|
|
- color: #fff;
|
|
|
- text-align: center;
|
|
|
- height: 20px;
|
|
|
- line-height: 26px;
|
|
|
- font-size: 14px;
|
|
|
-}
|
|
|
-
|
|
|
-.navTaskname {
|
|
|
- white-space: nowrap;
|
|
|
- text-overflow: ellipsis;
|
|
|
- overflow: hidden;
|
|
|
- word-break: break-all;
|
|
|
- padding-left: 5px;
|
|
|
-}
|
|
|
-
|
|
|
-.allBox {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: flex-start;
|
|
|
- width: 100%;
|
|
|
- height: 351px;
|
|
|
- margin-bottom: 20px;
|
|
|
-}
|
|
|
-
|
|
|
-.shuBox {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: center;
|
|
|
- width: 100%;
|
|
|
- flex-wrap: nowrap;
|
|
|
- overflow: auto;
|
|
|
- /* height: 500px; */
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.answerbox {
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- /* align-items: center; */
|
|
|
- margin-bottom: 20px;
|
|
|
- font-size: 18px;
|
|
|
- font-weight: bold;
|
|
|
-}
|
|
|
-
|
|
|
-.answerbox>div:nth-child(2) {
|
|
|
- margin-left: 15px;
|
|
|
-}
|
|
|
-
|
|
|
-.answerbox1 {
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- align-items: flex-start;
|
|
|
- flex-wrap: nowrap;
|
|
|
- font-size: 16px;
|
|
|
-}
|
|
|
-
|
|
|
-.answerbox1>div:nth-child(2) {
|
|
|
- margin-top: 10px;
|
|
|
- width: 265px;
|
|
|
- max-height: 147px;
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.jdName {
|
|
|
- width: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.full_diy>>>.el-dialog {
|
|
|
- margin: 0 !important;
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-
|
|
|
-.full_diy>>>.el-dialog__body {
|
|
|
- height: calc(100% - 100px);
|
|
|
-}
|
|
|
-
|
|
|
-.openTaskActive {
|
|
|
- color: #8f7fe2;
|
|
|
-}
|
|
|
-
|
|
|
-.isClick {
|
|
|
- background: #8f7fe2;
|
|
|
-}
|
|
|
-
|
|
|
-.buttonCss {
|
|
|
- width: 100%;
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- justify-content: flex-end;
|
|
|
- margin: 10px 0;
|
|
|
-}
|
|
|
-
|
|
|
-.fullStyle>>>.el-dialog__body {
|
|
|
- height: 100% !important;
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
-
|
|
|
-.fullStyle>>>.el-dialog,
|
|
|
-.fullStyle {
|
|
|
- width: 100% !important;
|
|
|
- max-width: 100% !important;
|
|
|
- height: 100% !important;
|
|
|
- margin: 0 !important;
|
|
|
-}
|
|
|
-
|
|
|
-.worksTime {
|
|
|
- position: absolute;
|
|
|
- top: 10px;
|
|
|
- right: 0;
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: baseline;
|
|
|
-}
|
|
|
-
|
|
|
-.fullBox {
|
|
|
- /* overflow: unset !important;
|
|
|
- height: auto !important; */
|
|
|
-}
|
|
|
-
|
|
|
-.fullZyBox {
|
|
|
- width: 60% !important;
|
|
|
-}
|
|
|
-
|
|
|
-.rightScoreFullBox {
|
|
|
- width: 40%;
|
|
|
-}
|
|
|
-
|
|
|
-.student_page
|
|
|
- >>> .el-pagination.is-background
|
|
|
- .el-pager
|
|
|
- li:not(.disabled).active {
|
|
|
- background-color: #5c549f;
|
|
|
-}
|
|
|
-.student_page
|
|
|
- >>> .el-pagination.is-background
|
|
|
- .el-pager
|
|
|
- li:not(.disabled):hover {
|
|
|
- color: #5c549f;
|
|
|
-}
|
|
|
-
|
|
|
-.cancel_button:focus,
|
|
|
-.cancel_button:hover {
|
|
|
- color: rgb(92, 84, 159);
|
|
|
- border-color: #5c549f;
|
|
|
- background-color: #dbd7ff;
|
|
|
-}
|
|
|
-</style>
|