|
@@ -24,7 +24,7 @@
|
|
|
<div class="r_pub_button_retrun" @click="retrunCourse">返回</div>
|
|
|
</div>
|
|
|
<div class="step_box" ref="stepBox" v-loading="pdfLoading">
|
|
|
- <div class="test_title">
|
|
|
+ <div class="test_title" :style="!isDesktop?'justify-content: center;':''">
|
|
|
<div class="left">
|
|
|
<div class="title">{{ testJson.title }}</div>
|
|
|
<div class="info" v-if="isDesktop">
|
|
@@ -61,7 +61,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="search_nav">
|
|
|
+ <div class="search_nav" v-if="isDesktop">
|
|
|
<div class="right">
|
|
|
<span :class="{ active: stype == 1 }" @click="checkDataType(1)">按题目查看</span>
|
|
|
<span :class="{ active: stype == 2 }" @click="checkDataType(2)">按人员查看</span>
|
|
@@ -118,7 +118,15 @@
|
|
|
<div class="btnA" v-if="stype == 3" @click="exportAllWord2">导出人员数据</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="title_content" v-if="stype == 1">
|
|
|
+ <div class="search_nav" style="display:flex;justify-content:space-evenly;border: none;" v-if="!isDesktop">
|
|
|
+ <div class="right">
|
|
|
+ <span :class="{ active2: stype == 1 }" @click="checkDataType(1)">按题目查看</span>
|
|
|
+ <span :class="{ active2: stype == 2 }" @click="checkDataType(2)">按人员查看</span>
|
|
|
+ <span :class="{ active2: stype == 3 }" @click="checkDataType(3)" v-show="false">按数量查看</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="title_content" v-if="stype == 1 && isDesktop" v-loading="isLoading">
|
|
|
<div class="title_box" v-if="!testArray.length"
|
|
|
style="display: flex;align-items: center;justify-content: center;height: 500px;">
|
|
|
暂无内容
|
|
@@ -276,7 +284,190 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="table_content" v-if="stype == 2">
|
|
|
+ <div class="title_content" v-if="stype == 1 && !isDesktop" v-loading="isLoading">
|
|
|
+ <div class="title_box" v-if="!testArray.length"
|
|
|
+ style="display: flex;align-items: center;justify-content: center;height: 500px;">
|
|
|
+ 暂无内容
|
|
|
+ </div>
|
|
|
+ <div class="title_box" v-for="(item, index) in testArray" :key="index">
|
|
|
+ <div class="title" style="font-size: 16px;display: flex;justify-content: space-between;align-items: center;">
|
|
|
+ <!-- <el-tooltip :content="selectType(item)" placement="top" effect="dark">
|
|
|
+ <span class="test_icon"
|
|
|
+ :class="{ test_icon_check: item.type == 1 && item.atype == 2, test_icon_checkO: item.type == 1 && item.atype == 1, test_icon_gap: item.type == 3, test_icon_file: item.type == 5, test_course_file: item.type == 6, test_eva_file: item.type == 7,test_icon_time: item.type == 8 }"></span>
|
|
|
+ </el-tooltip> -->
|
|
|
+ <div style="display: flex;">
|
|
|
+ <div class="topicTitCss">第{{ index+1 }}题:</div>
|
|
|
+ <el-tooltip :content="item.title" placement="top" effect="dark">
|
|
|
+ <div style="width: 100px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">{{ item.title }}</div>
|
|
|
+ </el-tooltip>
|
|
|
+
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div style="display: flex;">
|
|
|
+ <!-- <div v-if="item.type==7" style="right:0;position: absolute;">平均分:{{ getAverageScore(index) }}</div> -->
|
|
|
+ <div style="color: rgba(0, 0, 0, 0.4);display: flex;align-items: center;">[{{ selectType(item) }}]</div>
|
|
|
+ <!-- <el-button style="padding: 5px;" v-if="item.type == 5 && item.array.length>0" class="title_downBtn" type="primary" size="small" @click.stop="downloadFileType5(item.array,item.title)">批量下载附件</el-button> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="detail" v-if="item.detail">{{ item.detail }}</div>
|
|
|
+ <div class="content1" style="width:100%;display: block;" v-if="item.type == 1">
|
|
|
+ <div class="left" style="width:100%" v-if="!item.cut">
|
|
|
+ <div class="isDesktopTitle">
|
|
|
+ <div>选项</div>
|
|
|
+ <div>小计</div>
|
|
|
+ <div>比例</div>
|
|
|
+ </div>
|
|
|
+ <div class="isDesktopTitle" v-for="(data, index2) in item.array" :key="index + '-' + index2">
|
|
|
+ <!-- <span> -->
|
|
|
+ <el-tooltip :content="data.name" placement="top" effect="dark">
|
|
|
+ <!-- content to trigger tooltip here -->
|
|
|
+ <div>{{ data.name }}</div>
|
|
|
+ </el-tooltip>
|
|
|
+ <!-- </span> -->
|
|
|
+ <div>{{ data.count }}</div>
|
|
|
+ <div>
|
|
|
+ {{ data.count ? parseFloat(((data.count / item.count) * 100).toFixed(2)) : 0 }}
|
|
|
+ <!-- <el-progress style="display: flex;align-items: center;" :stroke-width="12" color="#3681fc"
|
|
|
+ :percentage="data.count ? parseFloat(((data.count / item.count) * 100).toFixed(2)) : 0"></el-progress> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="right isDesktopRight" v-if="item.cut">
|
|
|
+ <checkPie :dataJ="item.array"></checkPie>
|
|
|
+ </div>
|
|
|
+ <div class="cutBtnBlockCss">
|
|
|
+ <div class="cutBtnCss" @click="item.cut=!item.cut">{{ item.cut?'查看详情':'查看视图' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content2" style="width:100%;display: block;" v-if="item.type == 3">
|
|
|
+ <div class="left" style="width:100%" v-if="!item.cut">
|
|
|
+ <div class="title">
|
|
|
+ <span>序号</span>
|
|
|
+ <span>词频</span>
|
|
|
+ <span>答案文本</span>
|
|
|
+ </div>
|
|
|
+ <div class="data" v-for="(data, index2) in item.array" :key="index + '-' + index2">
|
|
|
+ <span>{{ index2 + 1 }}</span>
|
|
|
+ <span>{{ data.count }}次</span>
|
|
|
+ <el-tooltip :content="data.name" placement="top" effect="dark">
|
|
|
+ <!-- content to trigger tooltip here -->
|
|
|
+ <span>{{ data.name }}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="right isDesktopRight" v-if="item.cut">
|
|
|
+ <wordcloud :data="item.array" nameKey="name" valueKey="count" :showTooltip="false"
|
|
|
+ :wordClick="wordClickHandler">
|
|
|
+ </wordcloud>
|
|
|
+ </div>
|
|
|
+ <div class="cutBtnBlockCss">
|
|
|
+ <div class="cutBtnCss" @click="item.cut=!item.cut">{{ item.cut?'查看详情':'查看视图' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content3" v-if="item.type == 5">
|
|
|
+ <div class="file" v-for="(file, index2) in item.array" :key="index + '-' + index2"
|
|
|
+ @click.stop="checkFile(file)">
|
|
|
+ <img class="download" src="../../../../assets/icon/fileIcon/download.png"
|
|
|
+ @click.stop="downloadFile(file)" :style="{ right: '10px' }" />
|
|
|
+ <img class="img" :src="wordIcon" alt="" v-if="file.type == 1" />
|
|
|
+ <img class="img" :src="videoIcon" alt="" v-if="file.type == 2" />
|
|
|
+ <img class="img" :src="file.url" alt="" v-if="file.type == 3" />
|
|
|
+ <img class="img" :src="wordIcon" alt="" v-if="file.type == 4" />
|
|
|
+ <img class="img" :src="fileIcon" alt="" v-if="file.type == 5" />
|
|
|
+ <div class="name">
|
|
|
+ <el-tooltip :content="file.name" placement="top" effect="dark">
|
|
|
+ <span>{{ file.name }}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content4" v-if="item.type == 6">
|
|
|
+ <div class="out_box" v-for="(item, index) in item.courseArray" :key="index + '-' + index2">
|
|
|
+ <div class="tup">
|
|
|
+ <img :src="item.cover != null && item.cover != ''
|
|
|
+ ? JSON.parse(item.cover).length > 0
|
|
|
+ ? JSON.parse(item.cover)[0].url
|
|
|
+ : mr
|
|
|
+ : mr
|
|
|
+ " alt />
|
|
|
+ <div class="bottom_box">
|
|
|
+ <div>
|
|
|
+ <el-tooltip :content="item.title" popper-class="text_tooltip" placement="top" effect="dark">
|
|
|
+ <span>{{ item.title }}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ <div class="kc_t">
|
|
|
+ <span>{{ item.username }}</span>
|
|
|
+ <span>{{ item.state == 1 ? '阶段模式' : item.state == 2 ? '任务模式' : '极简模式' }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="kc_time">
|
|
|
+ <span style="color: #717C8D">创建日期:</span>{{ item.time }}
|
|
|
+ </div>
|
|
|
+ <div class="kc_time">
|
|
|
+ <span style="color: #717C8D">修改日期:</span>{{ item.update_at }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- <div class="courses" v-for="(courses, index2) in item.array" :key="index + '-' + index2">
|
|
|
+ {{ courses }}
|
|
|
+ </div> -->
|
|
|
+ </div>
|
|
|
+ <div class="content1" style="width:100%;display: block;" v-if="item.type == 7">
|
|
|
+ <div class="left" style="width:100%" v-if="!item.cut">
|
|
|
+ <div class="isDesktopTitle">
|
|
|
+ <div>评分</div>
|
|
|
+ <div>小计</div>
|
|
|
+ <div style="width: 120px;">比例</div>
|
|
|
+ </div>
|
|
|
+ <div class="isDesktopTitle" v-for="(data, index2) in item.array" :key="index + '-' + index2">
|
|
|
+ <!-- <span> -->
|
|
|
+ <div>{{ data.name }}</div>
|
|
|
+ <!-- </span> -->
|
|
|
+ <div>{{ data.count }}</div>
|
|
|
+ <div style="width: 120px;">
|
|
|
+ {{ data.count ? parseFloat(((data.count / item.count) * 100).toFixed(2)) : 0 }}
|
|
|
+ <!-- <el-progress style="display: flex;align-items: center;" :stroke-width="12" color="#3681fc"
|
|
|
+ :percentage="data.count ? parseFloat(((data.count / item.count) * 100).toFixed(2)) : 0"></el-progress> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="right isDesktopRight" v-if="item.cut">
|
|
|
+ <checkPie :dataJ="item.array"></checkPie>
|
|
|
+ </div>
|
|
|
+ <div class="cutBtnBlockCss">
|
|
|
+ <div class="cutBtnCss" @click="item.cut=!item.cut">{{ item.cut?'查看详情':'查看视图' }}</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div class="content2" style="width:100%;display: block;" v-if="item.type == 8">
|
|
|
+ <div class="left" style="width:100%" v-if="!item.cut">
|
|
|
+ <div class="title">
|
|
|
+ <span>序号</span>
|
|
|
+ <span>词频</span>
|
|
|
+ <span>日期</span>
|
|
|
+ </div>
|
|
|
+ <div class="data" v-for="(data, index2) in item.array" :key="index + '-' + index2">
|
|
|
+ <span>{{ index2 + 1 }}</span>
|
|
|
+ <span>{{ data.count }}次</span>
|
|
|
+ <el-tooltip :content="data.name" placement="top" effect="dark">
|
|
|
+ <!-- content to trigger tooltip here -->
|
|
|
+ <span>{{ data.name }}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="right isDesktopRight" v-if="item.cut">
|
|
|
+ <wordcloud :data="item.array" nameKey="name" valueKey="count" :showTooltip="false"
|
|
|
+ :wordClick="wordClickHandler">
|
|
|
+ </wordcloud>
|
|
|
+ </div>
|
|
|
+ <div class="cutBtnBlockCss">
|
|
|
+ <div class="cutBtnCss" @click="item.cut=!item.cut">{{ item.cut?'查看详情':'查看视图' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="table_content" v-if="stype == 2 && isDesktop">
|
|
|
<el-table class="el-table" ref="table" :data="worksArray" border :fit="true" :key="2" v-loading="isLoading"
|
|
|
style="width: 100%" :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
|
|
|
@filter-change="handleFilterChange">
|
|
@@ -341,6 +532,205 @@
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</div>
|
|
|
+ <div class="table_content" v-if="stype == 2 && !isDesktop">
|
|
|
+
|
|
|
+ <div v-for="(i,index) in worksArray" :key="i.id" class="isDesktopTable_content">
|
|
|
+ <div class="isDTitle CutCss">
|
|
|
+ <div style="font-size: 16px;font-weight: 600;">{{ i.name }}</div>
|
|
|
+ <div :style="'font-size: 14px',i.cut?'color:rgba(54, 129, 252, 1)':'color: rgba(0, 0, 0, 0.6);'">{{ i.time }}</div>
|
|
|
+ <div @click="i.cut=!i.cut">
|
|
|
+ <img v-if="!i.cut" src="../../../../assets/icon/fileIcon/downImg.png" alt="">
|
|
|
+ <img v-else src="../../../../assets/icon/fileIcon/upImg.png" alt="">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="i.cut">
|
|
|
+ <div class="isDBri">
|
|
|
+ <div>序号:{{ i.time }}</div>
|
|
|
+ <div>提交时间:{{ i.time }}</div>
|
|
|
+ <div>评课人:</div>
|
|
|
+ </div>
|
|
|
+ <div style="height: 1px;background-color: #717C8D;width: 100%;margin-bottom: 10px;"></div>
|
|
|
+ <div>
|
|
|
+ <div v-for="(k,kin) in chapters" :key="k.id" class="isCTiBlc">
|
|
|
+ <div v-if="k.type == 1">
|
|
|
+ <div class="isDTitle2">
|
|
|
+ <div style="display: flex;justify-content: space-between;">
|
|
|
+ <div style="display: flex;">
|
|
|
+ <span class="topicTitCss">第{{kin+1}}题:</span>
|
|
|
+ <div class="isDTitle2JsonTit">
|
|
|
+ {{ k.json.title }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="color: rgba(0, 0, 0, 0.4);">[{{ selectType2(k.type,k.json.type) }}]</div>
|
|
|
+ </div>
|
|
|
+ <div class="IsDAnswer">
|
|
|
+ <div v-for="(r, index2) in i.array[kin].json.answer2"
|
|
|
+ :key="index + '-' + index2">
|
|
|
+ {{ i.array[kin].json.array[r].option }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="k.type == 3 || k.type == 8">
|
|
|
+ <div class="isDTitle2">
|
|
|
+ <div style="display: flex;justify-content: space-between;">
|
|
|
+ <div style="display: flex;">
|
|
|
+ <span class="topicTitCss">第{{kin+1}}题:</span>
|
|
|
+ <div class="isDTitle2JsonTit">
|
|
|
+ {{ k.json.title }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="color: rgba(0, 0, 0, 0.4);">[{{ selectType2(k.type,k.json.type) }}]</div>
|
|
|
+ </div>
|
|
|
+ <div class="IsDAnswer">
|
|
|
+ {{ i.array[kin].json.answer2 }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="k.type == 5">
|
|
|
+ <div class="isDTitle2">
|
|
|
+ <div style="display: flex;justify-content: space-between;">
|
|
|
+ <div style="display: flex;">
|
|
|
+ <span class="topicTitCss">第{{kin+1}}题:</span>
|
|
|
+ <div class="isDTitle2JsonTit">
|
|
|
+ {{ k.json.title }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="color: rgba(0, 0, 0, 0.4);">[{{ selectType2(k.type,k.json.type) }}]</div>
|
|
|
+ </div>
|
|
|
+ <div class="IsDAnswer">
|
|
|
+ <div class="IsDFile" v-for="(file, index2) in i.array[kin].json.file"
|
|
|
+ :key="index + '-' + index2" @click.stop="checkFile(file)">
|
|
|
+ <img class="IsDownload" src="../../../../assets/icon/fileIcon/download.png"
|
|
|
+ @click.stop="downloadFile(file)" :style="{ right: '10px' }" />
|
|
|
+ <img class="IsDImg" :src="wordIcon" alt="" v-if="file.type == 1" />
|
|
|
+ <img class="IsDImg" :src="videoIcon" alt="" v-if="file.type == 2" />
|
|
|
+ <img class="IsDImg" :src="file.url" alt="" v-if="file.type == 3" />
|
|
|
+ <img class="IsDImg" :src="wordIcon" alt="" v-if="file.type == 4" />
|
|
|
+ <img class="IsDImg" :src="fileIcon" alt="" v-if="file.type == 5" />
|
|
|
+ <div class="name" style="height: 30px;background-color: #ccc;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">
|
|
|
+ <!-- <el-tooltip :content="file.name" placement="top" effect="dark"> -->
|
|
|
+ {{ file.name }}
|
|
|
+ <!-- </el-tooltip> -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="k.type.type == 6">
|
|
|
+ <div class="isDTitle2">
|
|
|
+ <div style="display: flex;justify-content: space-between;">
|
|
|
+ <div style="display: flex;">
|
|
|
+ <span class="topicTitCss">第{{kin+1}}题:</span>
|
|
|
+ <div class="isDTitle2JsonTit">
|
|
|
+ {{ k.json.title }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="color: rgba(0, 0, 0, 0.4);">[{{ selectType2(k.type,k.json.type) }}]</div>
|
|
|
+ </div>
|
|
|
+ <div class="IsDAnswer">
|
|
|
+ {{ i.array[kin].json.answer2 }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="k.type == 7">
|
|
|
+ <div class="isDTitle2">
|
|
|
+ <div style="display: flex;justify-content: space-between;">
|
|
|
+ <div style="display: flex;">
|
|
|
+ <span class="topicTitCss">第{{kin+1}}题:</span>
|
|
|
+ <div class="isDTitle2JsonTit">
|
|
|
+ {{ k.json.title }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="color: rgba(0, 0, 0, 0.4);">[{{ selectType2(k.type,k.json.type) }}]</div>
|
|
|
+ </div>
|
|
|
+ <div class="IsDAnswer">
|
|
|
+ {{ getScore(i.array[index].json) }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div style="width: 100%;display: flex;justify-content: end;">
|
|
|
+ <div @click="i.cut=!i.cut" style="display: flex;flex-direction: column;align-items: center">
|
|
|
+ <img src="../../../../assets/icon/fileIcon/retractImg.png" alt="">
|
|
|
+ <div style="color: rgba(0, 0, 0, 0.4);font-size: 16px;">收起</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div style="height: 1px;background-color: #717C8D;width: 100%;margin-bottom: 10px;"></div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <!-- <el-table class="el-table" ref="table" :data="worksArray" border :fit="true" :key="2" v-loading="isLoading"
|
|
|
+ style="width: 100%" :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
|
|
|
+ @filter-change="handleFilterChange">
|
|
|
+ <el-table-column fixed label="序号" width="80px" align="left">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.$index + 1 }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column fixed prop="name" label="提交人" width="120px" align="left">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="time" label="提交时间" width="170px" align="left">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span :style="`${testJson.overtime&&new Date(testJson.overtime)<new Date(scope.row.time)?'color:#d12920':''}`">{{ scope.row.time }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column v-for="(item, index) in chapters" :key="index" :label="item.json.title"
|
|
|
+ :min-width="item.type == 5 ? 200 : 150" align="left" :filters="item.type == 1 ? item.nameFilters : item.type == 6? item.nameFilters : null"
|
|
|
+ :filter-method="item.type == 1 ? (value, row) => { return filterName(value, row, index) } : item.type == 6?(value, row) => { return filterCourse(value, row, index)}:null"
|
|
|
+ :filter-placement="item.type == 1 || item.type ==6 ? filterPlacement : null">
|
|
|
+
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div v-if="scope.row.array[index].type == 1" style="display: flex; flex-wrap: wrap;">
|
|
|
+ <span class="answer_type" v-for="(answer2, index2) in scope.row.array[index].json.answer2"
|
|
|
+ :key="index + '-' + index2">{{ scope.row.array[index].json.array[answer2].option }}</span>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.row.array[index].type == 3 || scope.row.array[index].type == 8" style="display: flex; flex-wrap: wrap;">
|
|
|
+ {{ scope.row.array[index].json.answer2 }}
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.row.array[index].type == 5" style="display: flex; flex-wrap: wrap;"
|
|
|
+ class="table_file">
|
|
|
+ <div class="file" v-for="(file, index2) in scope.row.array[index].json.file"
|
|
|
+ :key="index + '-' + index2" @click.stop="checkFile(file)">
|
|
|
+ <img class="download" src="../../../../assets/icon/fileIcon/download.png"
|
|
|
+ @click.stop="downloadFile(file)" :style="{ right: '10px' }" />
|
|
|
+ <img class="img" :src="wordIcon" alt="" v-if="file.type == 1" />
|
|
|
+ <img class="img" :src="videoIcon" alt="" v-if="file.type == 2" />
|
|
|
+ <img class="img" :src="file.url" alt="" v-if="file.type == 3" />
|
|
|
+ <img class="img" :src="wordIcon" alt="" v-if="file.type == 4" />
|
|
|
+ <img class="img" :src="fileIcon" alt="" v-if="file.type == 5" />
|
|
|
+ <div class="name">
|
|
|
+ <el-tooltip :content="file.name" placement="top" effect="dark">
|
|
|
+ <span>{{ file.name }}</span>
|
|
|
+ </el-tooltip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.row.array[index].type == 6" style="display: flex; flex-wrap: wrap;">
|
|
|
+ {{ scope.row.array[index].json.answer2}}
|
|
|
+ </div>
|
|
|
+ <div v-if="scope.row.array[index].type == 7" style="display: flex; flex-wrap: wrap;">
|
|
|
+ {{ getScore(scope.row.array[index].json) }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="300px" fixed="right" v-if="isN!=1">
|
|
|
+
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button @click="getTest(scope.row)" type="primary" size="small">查看</el-button>
|
|
|
+ <el-button @click="setWordHtml(scope.row)" type="primary" size="small">导出答题信息</el-button>
|
|
|
+ <el-button @click="deleteTest(scope.row.id)" type="primary" size="small">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table> -->
|
|
|
+ </div>
|
|
|
<div class="table_content" v-if="stype == 3">
|
|
|
<div class="student_table">
|
|
|
<el-table ref="table" :data="tableData" border :fit="true" v-loading="isLoading" style="width: 100%"
|
|
@@ -509,17 +899,6 @@ export default {
|
|
|
// `this` 指向 vm 实例
|
|
|
return this.TeachingOptions.filter(i => {return i.id == this.TeachingValue})
|
|
|
},
|
|
|
- // TeachNameCpt(){
|
|
|
- // return function (val) {
|
|
|
- // let a = this.TeachingOptions.filter(i => {
|
|
|
- // if (i.id == val) {
|
|
|
- // return i.name
|
|
|
- // }}
|
|
|
- // )
|
|
|
- // console.log('aaaaaaaaaaaaaa',a);
|
|
|
- // return a;
|
|
|
- // };
|
|
|
- // },
|
|
|
// vcWords() {
|
|
|
// return function (array) {
|
|
|
// let _array = [];
|
|
@@ -564,6 +943,25 @@ export default {
|
|
|
return '日期'
|
|
|
}
|
|
|
};
|
|
|
+ },
|
|
|
+ selectType2() {
|
|
|
+ return function (val1,val2) {
|
|
|
+ if (val1 == 1 && val2 == 2) {
|
|
|
+ return '多选题'
|
|
|
+ } else if (val1 == 1 && val2 == 1) {
|
|
|
+ return '单选题'
|
|
|
+ } else if (val1 == 3) {
|
|
|
+ return '问答题'
|
|
|
+ } else if (val1 == 5) {
|
|
|
+ return '附件'
|
|
|
+ } else if (val1 == 6) {
|
|
|
+ return '课程'
|
|
|
+ } else if (val1 == 7) {
|
|
|
+ return '评分'
|
|
|
+ } else if (val1 == 8) {
|
|
|
+ return '日期'
|
|
|
+ }
|
|
|
+ };
|
|
|
},
|
|
|
// 获取评分的平均分
|
|
|
getAverageScore(){
|
|
@@ -574,8 +972,8 @@ export default {
|
|
|
_result+=i1.array[_index].json.answer2
|
|
|
_sum+=1;
|
|
|
})
|
|
|
- _result=(_result/_sum).toFixed(2)
|
|
|
- return _result;
|
|
|
+ _result = _sum ? (_result/_sum).toFixed(2) : 0
|
|
|
+ return _result ? _result : 0;
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -743,7 +1141,7 @@ export default {
|
|
|
let _json2 = _json[ja].json
|
|
|
if (_json[ja].type == 6) {
|
|
|
let _cjson = await this.getCourse(_json2.answer2)
|
|
|
- _json2.answer2 = _cjson.title
|
|
|
+ _json2.answer2 = _cjson ? _cjson.title : ''
|
|
|
}
|
|
|
}
|
|
|
array.push({
|
|
@@ -753,6 +1151,7 @@ export default {
|
|
|
name: this.works[i].username ? this.works[i].username : '匿名',
|
|
|
time: this.works[i].time,
|
|
|
array: _json,
|
|
|
+ cut:0,
|
|
|
courseJson: JSON.parse(this.works[i].courseJson),
|
|
|
})
|
|
|
}
|
|
@@ -762,6 +1161,7 @@ export default {
|
|
|
let el = this.chapters[i]
|
|
|
let topic = {
|
|
|
type: el.type,
|
|
|
+ cut: 0,
|
|
|
title: el.json ? el.json.title : '',
|
|
|
detail: el.json ? el.json.detail : '',
|
|
|
atype: el.json ? el.json.type : '',
|
|
@@ -789,7 +1189,7 @@ export default {
|
|
|
topic.array = _answer
|
|
|
topic.courseArray = [];
|
|
|
let params = {
|
|
|
- cid:topic.array.join(",")
|
|
|
+ cid:topic.array ? topic.array.join(",") : ''
|
|
|
}
|
|
|
|
|
|
let data = await this.ajax.get(this.$store.state.api + 'getCourseInfoTestAll',params);
|
|
@@ -859,7 +1259,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- console.log(topic)
|
|
|
+ console.log('topictopictopictopic',topic)
|
|
|
testArray.push(topic)
|
|
|
}
|
|
|
this.testArray = testArray
|
|
@@ -1349,7 +1749,7 @@ export default {
|
|
|
}
|
|
|
} else if (item.type == 6 && item.json.answer2) {
|
|
|
let _cjson = await this.getCourse(item.json.answer2)
|
|
|
- let _option = `<div style='margin:10px 0 0 40px;'>打分课程:${_cjson.title}</div>`
|
|
|
+ let _option = `<div style='margin:10px 0 0 40px;'>打分课程:${ _cjson ? _cjson.title : ''}</div>`
|
|
|
_test += _option
|
|
|
} else if (item.type == 7 && item.json.answer2 ) {
|
|
|
let _score = this.getScore2(item.json)
|
|
@@ -1640,7 +2040,68 @@ export default {
|
|
|
height: 100% !important;
|
|
|
/* margin: 0 20px 0 20px; */
|
|
|
}
|
|
|
+.cutBtnBlockCss{
|
|
|
+ width: 100%;display: flex;justify-content: end;
|
|
|
+}
|
|
|
+.cutBtnCss{
|
|
|
+ width: 68px;
|
|
|
+ height: 27px;
|
|
|
+ font-size: 14px;
|
|
|
+ border-radius: 5px;
|
|
|
+ display: flex;
|
|
|
+ color: rgba(54, 129, 252, 1);
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ margin-top: 10px;
|
|
|
+ border: 1px rgba(54, 129, 252, 1) solid;
|
|
|
+}
|
|
|
+.isDesktopRight{
|
|
|
+ width:100% !important;
|
|
|
+ margin:0 !important;
|
|
|
+ height: 300px !important;
|
|
|
+ border: none !important;
|
|
|
+}
|
|
|
+.isDTitle2JsonTit{
|
|
|
+ width: 130px;
|
|
|
+ color: rgba(0, 0, 0, 0.9);
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+}
|
|
|
+.IsDAnswer{
|
|
|
+ margin: 20px 0 30px;color: rgba(0, 0, 0, 0.6);
|
|
|
+}
|
|
|
|
|
|
+.CutCss{
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+}
|
|
|
+.topicTitCss{
|
|
|
+ color: rgba(0, 0, 0, 0.9);
|
|
|
+ font-weight: 600;
|
|
|
+ margin-right: 5px;
|
|
|
+}
|
|
|
+.IsDFile{
|
|
|
+ width: 150px;
|
|
|
+ height: 120px;
|
|
|
+ border-radius: 10px;
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ overflow: hidden;
|
|
|
+ margin-bottom: 5px;
|
|
|
+}
|
|
|
+.IsDownload{
|
|
|
+ position: absolute;
|
|
|
+ width: 30px;
|
|
|
+ top: 5px;
|
|
|
+ right: 5px;
|
|
|
+}
|
|
|
+.IsDImg{
|
|
|
+ width: 100%;
|
|
|
+ height: 70px;
|
|
|
+ flex: 1;
|
|
|
+}
|
|
|
.pb_content_body {
|
|
|
width: 100% !important;
|
|
|
height: 100%;
|
|
@@ -1816,7 +2277,11 @@ export default {
|
|
|
cursor: pointer;
|
|
|
position: relative;
|
|
|
}
|
|
|
-
|
|
|
+.search_nav>.isDesktopRightCut{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ width: 60%;
|
|
|
+}
|
|
|
.search_nav>.right>span+span {
|
|
|
margin-left: 35px;
|
|
|
}
|
|
@@ -1843,6 +2308,21 @@ export default {
|
|
|
margin-left: auto;
|
|
|
}
|
|
|
|
|
|
+.search_nav>.right>span.active2 {
|
|
|
+ color: #3681FC;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+.search_nav>.right>span.active2::before {
|
|
|
+ content: "";
|
|
|
+ position: absolute;
|
|
|
+ bottom: -10px;
|
|
|
+ width: 100%;
|
|
|
+ height: 3px;
|
|
|
+ background: #3681fc;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
.student_input>>>.el-input__inner {
|
|
|
height: 40px;
|
|
@@ -1945,6 +2425,27 @@ export default {
|
|
|
.title_content>.title_box>.content1>.left>.data>span:nth-child(3) {
|
|
|
width: 320px;
|
|
|
}
|
|
|
+.isDesktopTitle{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
+}
|
|
|
+.isDesktopTitle >div {
|
|
|
+ width: 60px;
|
|
|
+ height: 30px;
|
|
|
+ line-height: 30px;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+}
|
|
|
+/* .isDesktopTitle:nth-child(1){
|
|
|
+ width: 60px;
|
|
|
+}
|
|
|
+.isDesktopTitle:nth-child(2){
|
|
|
+ width: 60px;
|
|
|
+}
|
|
|
+.isDesktopTitle:nth-child(3){
|
|
|
+ flex: 1;
|
|
|
+} */
|
|
|
|
|
|
.title_content>.title_box>.content1>.left>.title {
|
|
|
font-weight: 700;
|
|
@@ -2097,6 +2598,22 @@ export default {
|
|
|
.table_content>>>.el-table td {
|
|
|
padding: 5px 0;
|
|
|
}
|
|
|
+.isDesktopTable_content{
|
|
|
+ width: 100%;
|
|
|
+}
|
|
|
+.isDTitle{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+}
|
|
|
+.isDBri{
|
|
|
+ display: flex;
|
|
|
+ padding: 15px 0;
|
|
|
+ font-size: 14px;
|
|
|
+ color: rgba(0, 0, 0, 0.4);
|
|
|
+ flex-direction: column;
|
|
|
+ height: 80px;
|
|
|
+ justify-content: space-between;
|
|
|
+}
|
|
|
|
|
|
.answer_type {
|
|
|
background: #F0F2F5;
|