|
|
@ -1,148 +1,97 @@ |
|
|
|
<template> |
|
|
|
<template> |
|
|
|
<div style="padding: 24px"> |
|
|
|
<div style="padding: 24px"> |
|
|
|
<el-card shadow="hover" |
|
|
|
<el-card shadow="hover" class="m-b-20"> |
|
|
|
class="m-b-20"> |
|
|
|
|
|
|
|
<div class="flex-between"> |
|
|
|
<div class="flex-between"> |
|
|
|
<el-page-header @back="back" |
|
|
|
<el-page-header @back="back" :content="curriculumName || courseName"></el-page-header> |
|
|
|
:content="curriculumName || courseName"></el-page-header> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</el-card> |
|
|
|
<el-card class="source-card" |
|
|
|
<el-card class="source-card" shadow="hover" style="background: none;"> |
|
|
|
shadow="hover" |
|
|
|
|
|
|
|
style="background: none;"> |
|
|
|
|
|
|
|
<div class="flex"> |
|
|
|
<div class="flex"> |
|
|
|
<div class="cover" |
|
|
|
<div class="cover" :class="{ 'is-word': showMask1 }"> |
|
|
|
:class="{'is-word': showMask1}"> |
|
|
|
|
|
|
|
<!--实验台不显示课程封面--> |
|
|
|
<!--实验台不显示课程封面--> |
|
|
|
<img v-if="coverUrl" |
|
|
|
<img v-if="coverUrl" :src="coverUrl" alt="" width="100%" height="100%"> |
|
|
|
:src="coverUrl" |
|
|
|
|
|
|
|
alt="" |
|
|
|
|
|
|
|
width="100%" |
|
|
|
|
|
|
|
height="100%"> |
|
|
|
|
|
|
|
<template v-else-if="iframeSrc"> |
|
|
|
<template v-else-if="iframeSrc"> |
|
|
|
<iframe class="inner fileIframe" |
|
|
|
<iframe class="inner fileIframe" id="fileIframe" :src="iframeSrc" frameborder="0"></iframe> |
|
|
|
id="fileIframe" |
|
|
|
|
|
|
|
:src="iframeSrc" |
|
|
|
|
|
|
|
frameborder="0"></iframe> |
|
|
|
|
|
|
|
<template v-if="showMask"> |
|
|
|
<template v-if="showMask"> |
|
|
|
<div class="mask" |
|
|
|
<div class="mask" style="top: 0;width:100%;height: 48px;"></div> |
|
|
|
style="top: 0;width:100%;height: 48px;"></div> |
|
|
|
<div class="mask" style="top: 53px;width:100%;height: 30px;"></div> |
|
|
|
<div class="mask" |
|
|
|
<div class="mask" style="bottom: 0;right: 0;width:280px;height: 22px;background-color: #444;"></div> |
|
|
|
style="top: 53px;width:100%;height: 30px;"></div> |
|
|
|
|
|
|
|
<div class="mask" |
|
|
|
|
|
|
|
style="bottom: 0;right: 0;width:280px;height: 22px;background-color: #444;"></div> |
|
|
|
|
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template v-if="showMask1"> |
|
|
|
<template v-if="showMask1"> |
|
|
|
<div class="word-mask" |
|
|
|
<div class="word-mask" style="height: 40px;"></div> |
|
|
|
style="height: 40px;"></div> |
|
|
|
<div class="word-mask2" style="top: 55px;left: 28%;width: 44%;height: calc(100% - 80px);"></div> |
|
|
|
<div class="word-mask2" |
|
|
|
|
|
|
|
style="top: 55px;left: 28%;width: 44%;height: calc(100% - 80px);"></div> |
|
|
|
|
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template v-if="showMask2"> |
|
|
|
<template v-if="showMask2"> |
|
|
|
<div class="excel-mask1" |
|
|
|
<div class="excel-mask1" style="height: 48px;"></div> |
|
|
|
style="height: 48px;"></div> |
|
|
|
|
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<div class="pdf inner" |
|
|
|
<div class="pdf inner" v-else-if="pdfSrc"> |
|
|
|
v-else-if="pdfSrc"> |
|
|
|
<img class="full" src="@/assets/img/screen/full.png" alt="" @click="fullScreen"> |
|
|
|
<img class="full" |
|
|
|
|
|
|
|
src="@/assets/img/screen/full.png" |
|
|
|
|
|
|
|
alt="" |
|
|
|
|
|
|
|
@click="fullScreen"> |
|
|
|
|
|
|
|
<p class="arrow"> |
|
|
|
<p class="arrow"> |
|
|
|
<span @click="changePdfPage(0)" |
|
|
|
<span @click="changePdfPage(0)" class="turn el-icon-arrow-left" |
|
|
|
class="turn el-icon-arrow-left" |
|
|
|
|
|
|
|
:class="{ grey: currentPage == 1 }"></span> |
|
|
|
:class="{ grey: currentPage == 1 }"></span> |
|
|
|
{{ currentPage }} / {{ pageCount }} |
|
|
|
{{ currentPage }} / {{ pageCount }} |
|
|
|
<span @click="changePdfPage(1)" |
|
|
|
<span @click="changePdfPage(1)" class="turn el-icon-arrow-right" |
|
|
|
class="turn el-icon-arrow-right" |
|
|
|
|
|
|
|
:class="{ grey: currentPage == pageCount }"></span> |
|
|
|
:class="{ grey: currentPage == pageCount }"></span> |
|
|
|
</p> |
|
|
|
</p> |
|
|
|
<div style='color:#393A3D;height: 30px;background: #393A3D;'></div> |
|
|
|
<div style='color:#393A3D;height: 30px;background: #393A3D;'></div> |
|
|
|
<pdf class="pdf-wrap" |
|
|
|
<pdf class="pdf-wrap" :src="pdfSrc" :page="currentPage" @num-pages="pageCount = $event" |
|
|
|
:src="pdfSrc" |
|
|
|
@page-loaded="currentPage = $event" @loaded="loadPdfHandler"> |
|
|
|
:page="currentPage" |
|
|
|
|
|
|
|
@num-pages="pageCount=$event" |
|
|
|
|
|
|
|
@page-loaded="currentPage=$event" |
|
|
|
|
|
|
|
@loaded="loadPdfHandler"> |
|
|
|
|
|
|
|
</pdf> |
|
|
|
</pdf> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="inner" |
|
|
|
<div class="inner" v-else-if="playAuth"> |
|
|
|
v-else-if="playAuth"> |
|
|
|
<div class="video_wid" id="player"></div> |
|
|
|
<div class="video_wid" |
|
|
|
|
|
|
|
id="player"></div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="inner" |
|
|
|
<div class="inner" v-else-if="videoSrc"> |
|
|
|
v-else-if="videoSrc"> |
|
|
|
<video class="video" :key="videoSrc" width="100%" height="100%" autoplay controls> |
|
|
|
<video class="video" |
|
|
|
<source :src="videoSrc" type="video/mp4"> |
|
|
|
:key="videoSrc" |
|
|
|
|
|
|
|
width="100%" |
|
|
|
|
|
|
|
height="100%" |
|
|
|
|
|
|
|
autoplay |
|
|
|
|
|
|
|
controls> |
|
|
|
|
|
|
|
<source :src="videoSrc" |
|
|
|
|
|
|
|
type="video/mp4"> |
|
|
|
|
|
|
|
您的浏览器不支持 video 标签。 |
|
|
|
您的浏览器不支持 video 标签。 |
|
|
|
</video> |
|
|
|
</video> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="catalog"> |
|
|
|
<div class="catalog"> |
|
|
|
<div class="m-b-20"> |
|
|
|
<div class="m-b-20"> |
|
|
|
<el-button v-if="!overdue" |
|
|
|
<el-button v-if="!overdue" class="entry" type="primary" size="small" @click="showBuy">续费</el-button> |
|
|
|
class="entry" |
|
|
|
<el-button v-else class="entry" type="primary" @click="entry">进 入 实 验</el-button> |
|
|
|
type="primary" |
|
|
|
|
|
|
|
size="small" |
|
|
|
|
|
|
|
@click="showBuy">续费</el-button> |
|
|
|
|
|
|
|
<el-button v-else |
|
|
|
|
|
|
|
class="entry" |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
@click="entry">进 入 实 验</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="list"> |
|
|
|
<div class="list"> |
|
|
|
<h4 class="title">{{ curriculumName || courseName }}</h4> |
|
|
|
<h4 class="title">{{ curriculumName || courseName }}</h4> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<h6 class="pro-title">当前教学进度</h6> |
|
|
|
<h6 class="pro-title">当前教学进度</h6> |
|
|
|
<el-progress :stroke-width="12" |
|
|
|
<el-progress :stroke-width="12" :percentage="schedule" :format="percentFormat" |
|
|
|
:percentage="schedule" |
|
|
|
|
|
|
|
:format="percentFormat" |
|
|
|
|
|
|
|
:text-color="'#fff'"></el-progress> |
|
|
|
:text-color="'#fff'"></el-progress> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="types"> |
|
|
|
<div class="types"> |
|
|
|
<div :class="['item', { active: type === 1 }]" |
|
|
|
<div :class="['item', { active: type === 1 }]" @click="typeChange(1)"> |
|
|
|
@click="typeChange(1)"> |
|
|
|
|
|
|
|
<i class="icon el-icon-notebook-2"></i> 目录 |
|
|
|
<i class="icon el-icon-notebook-2"></i> 目录 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div :class="['item', { active: type === 2 }]" |
|
|
|
<div :class="['item', { active: type === 2 }]" @click="typeChange(2)"> |
|
|
|
@click="typeChange(2)"> |
|
|
|
|
|
|
|
<i class="icon el-icon-timer"></i> 教学进度 |
|
|
|
<i class="icon el-icon-timer"></i> 教学进度 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="chapters"> |
|
|
|
<div class="chapters"> |
|
|
|
<template v-if="type === 1"> |
|
|
|
<template v-if="type === 1"> |
|
|
|
<template v-if="chapterList.length"> |
|
|
|
<template v-if="chapterList.length"> |
|
|
|
<div class="chapter" |
|
|
|
<div class="chapter" v-for="(item, i) in chapterList" :key="i"> |
|
|
|
v-for="(item,index) in chapterList" |
|
|
|
|
|
|
|
:key="index"> |
|
|
|
|
|
|
|
<div class="chapterName">{{ item.name }}</div> |
|
|
|
<div class="chapterName">{{ item.name }}</div> |
|
|
|
<div class="section" |
|
|
|
<div class="section" v-if="item.subsectionList.length"> |
|
|
|
v-if="item.subsectionList.length"> |
|
|
|
<p class="sectionName" :class="{ active: curLink === `${item.name}${section.name}` }" |
|
|
|
<div v-for="(section,i) in item.subsectionList" |
|
|
|
v-for="(section, i) in item.subsectionList" :key="i" @click="preview(section, item.name)"> |
|
|
|
:key="i" |
|
|
|
<img v-if="section.fileType === 'pptx'" src="@/assets/img/exts/ppt.png" alt=""> |
|
|
|
@click="preview(section, item.name)"> |
|
|
|
<img v-else-if="section.fileType === 'mp4'" src="@/assets/img/exts/video.png" alt=""> |
|
|
|
<p class="sectionName" |
|
|
|
<img v-else-if="section.fileType === 'doc' || section.fileType === 'docx'" |
|
|
|
:title="section.name" |
|
|
|
src="@/assets/img/exts/word.png" alt=""> |
|
|
|
:class="{active: curLink === `${item.name}${section.name}`}">{{ section.name }}</p> |
|
|
|
<img v-else-if="section.fileType === 'txt'" src="@/assets/img/exts/txt.png" alt=""> |
|
|
|
</div> |
|
|
|
<img v-else-if="section.fileType === 'pdf'" src="@/assets/img/exts/pdf.png" alt=""> |
|
|
|
|
|
|
|
<img v-else src="@/assets/img/exts/pic.png" alt=""> |
|
|
|
|
|
|
|
{{ section.name }} |
|
|
|
|
|
|
|
</p> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<div v-else |
|
|
|
<div v-else class="section"> |
|
|
|
class="section"> |
|
|
|
<p class="sectionName" v-for="(item, i) in progressList" :key="i" :title="item.projectName"> |
|
|
|
<p class="sectionName" |
|
|
|
|
|
|
|
v-for="(item, i) in progressList" |
|
|
|
|
|
|
|
:key="i" |
|
|
|
|
|
|
|
:title="item.projectName"> |
|
|
|
|
|
|
|
{{ i + 1 }}. |
|
|
|
{{ i + 1 }}. |
|
|
|
{{ item.projectName }} |
|
|
|
{{ item.projectName }} |
|
|
|
<i :class="['icon', item.whetherToStudyOrNot ? 'el-icon-success' : 'circle']" |
|
|
|
<i :class="['icon', item.whetherToStudyOrNot ? 'el-icon-success' : 'circle']" |
|
|
@ -156,46 +105,33 @@ |
|
|
|
</el-card> |
|
|
|
</el-card> |
|
|
|
|
|
|
|
|
|
|
|
<div class="tabs"> |
|
|
|
<div class="tabs"> |
|
|
|
<a class="item" |
|
|
|
<a class="item" v-for="(item, i) in tabs" :key="i" :class="{ active: item.id == active }" |
|
|
|
v-for="(item, i) in tabs" |
|
|
|
@click="tabChange(item)">{{ |
|
|
|
:key="i" |
|
|
|
item.name }}</a> |
|
|
|
:class="{active: item.id == active}" |
|
|
|
|
|
|
|
@click="tabChange(item)">{{ item.name }}</a> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="flex"> |
|
|
|
<div class="flex"> |
|
|
|
<div class="tab-content"> |
|
|
|
<div class="tab-content"> |
|
|
|
<template v-if="active === 1"> |
|
|
|
<template v-if="active === 1"> |
|
|
|
<div class="page"> |
|
|
|
<div class="page"> |
|
|
|
<div class="des" |
|
|
|
<div class="des" v-html="briefIntroduction"></div> |
|
|
|
v-html="briefIntroduction"></div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template v-if="active === 2"> |
|
|
|
<template v-if="active === 2"> |
|
|
|
<div class="page"> |
|
|
|
<div class="page"> |
|
|
|
<template v-if="showNoteAdd || !notes.length"> |
|
|
|
<template v-if="showNoteAdd || !notes.length"> |
|
|
|
<el-form class="form" |
|
|
|
<el-form class="form" ref="form" label-width="120px" center> |
|
|
|
ref="form" |
|
|
|
<el-form-item class="required" label="笔记标题"> |
|
|
|
label-width="120px" |
|
|
|
<el-input placeholder="请输入笔记标题" v-model="noteForm.noteName" maxlength="30" |
|
|
|
center> |
|
|
|
|
|
|
|
<el-form-item class="required" |
|
|
|
|
|
|
|
label="笔记标题"> |
|
|
|
|
|
|
|
<el-input placeholder="请输入笔记标题" |
|
|
|
|
|
|
|
v-model="noteForm.noteName" |
|
|
|
|
|
|
|
maxlength="30" |
|
|
|
|
|
|
|
style="width: 400px"></el-input> |
|
|
|
style="width: 400px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item class="required" |
|
|
|
<el-form-item class="required" label="笔记内容"> |
|
|
|
label="笔记内容"> |
|
|
|
<Editor api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda' v-model="noteForm.noteContent" |
|
|
|
<Editor api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda' |
|
|
|
|
|
|
|
v-model="noteForm.noteContent" |
|
|
|
|
|
|
|
:init="editorConfig" /> |
|
|
|
:init="editorConfig" /> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</el-form> |
|
|
|
<div class="text-right"> |
|
|
|
<div class="text-right"> |
|
|
|
<el-button v-if="notes.length" |
|
|
|
<el-button v-if="notes.length" @click="showNoteAdd = false">取消</el-button> |
|
|
|
@click="showNoteAdd = false">取消</el-button> |
|
|
|
<el-button type="primary" @click="submitNote">保存</el-button> |
|
|
|
<el-button type="primary" |
|
|
|
|
|
|
|
@click="submitNote">保存</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template v-else> |
|
|
|
<template v-else> |
|
|
@ -203,32 +139,24 @@ |
|
|
|
<ul class="filter"> |
|
|
|
<ul class="filter"> |
|
|
|
<li> |
|
|
|
<li> |
|
|
|
<label>搜索:</label> |
|
|
|
<label>搜索:</label> |
|
|
|
<el-input placeholder="请输入标题" |
|
|
|
<el-input placeholder="请输入标题" v-model="noteKeyword" clearable></el-input> |
|
|
|
v-model="noteKeyword" |
|
|
|
|
|
|
|
clearable></el-input> |
|
|
|
|
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-button type="primary" |
|
|
|
<el-button type="primary" @click="addNote">新增笔记</el-button> |
|
|
|
@click="addNote">新增笔记</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-timeline class="timeline"> |
|
|
|
<el-timeline class="timeline"> |
|
|
|
<el-timeline-item placement="top" |
|
|
|
<el-timeline-item placement="top" v-for="(item, i) in notes" :key="i"> |
|
|
|
v-for="(item, i) in notes" |
|
|
|
|
|
|
|
:key="i"> |
|
|
|
|
|
|
|
<p class="sign">{{ item.createTime }}</p> |
|
|
|
<p class="sign">{{ item.createTime }}</p> |
|
|
|
<div class="ver"> |
|
|
|
<div class="ver"> |
|
|
|
{{ item.noteName }} |
|
|
|
{{ item.noteName }} |
|
|
|
<span class="action"> |
|
|
|
<span class="action"> |
|
|
|
<i class="el-icon-edit-outline" |
|
|
|
<i class="el-icon-edit-outline" @click="editNote(item)"></i> |
|
|
|
@click="editNote(item)"></i> |
|
|
|
<i class="el-icon-delete" @click="delNote(item)"></i> |
|
|
|
<i class="el-icon-delete" |
|
|
|
|
|
|
|
@click="delNote(item)"></i> |
|
|
|
|
|
|
|
</span> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="des" |
|
|
|
<div class="des" v-html="item.noteContent"></div> |
|
|
|
v-html="item.noteContent"></div> |
|
|
|
|
|
|
|
</el-timeline-item> |
|
|
|
</el-timeline-item> |
|
|
|
</el-timeline> |
|
|
|
</el-timeline> |
|
|
|
</template> |
|
|
|
</template> |
|
|
@ -236,39 +164,26 @@ |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<template v-if="active === 4"> |
|
|
|
<template v-if="active === 4"> |
|
|
|
<div class="page"> |
|
|
|
<div class="page"> |
|
|
|
<quill ref="quill" |
|
|
|
<quill ref="quill" :border="true" v-model="comment" :height="150" :toTop="false" /> |
|
|
|
:border="true" |
|
|
|
|
|
|
|
v-model="comment" |
|
|
|
|
|
|
|
:height="150" |
|
|
|
|
|
|
|
:toTop="false" /> |
|
|
|
|
|
|
|
<div class="m-t-10 text-right"> |
|
|
|
<div class="m-t-10 text-right"> |
|
|
|
<el-button type="primary" |
|
|
|
<el-button type="primary" size="mini" @click="submitComment(0)">提交</el-button> |
|
|
|
size="mini" |
|
|
|
|
|
|
|
@click="submitComment(0)">提交</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<ul class="msg"> |
|
|
|
<ul class="msg"> |
|
|
|
<li v-for="(item, i) in comments" |
|
|
|
<li v-for="(item, i) in comments" :key="i" :id="'comment' + item.commentId"> |
|
|
|
:key="i" |
|
|
|
|
|
|
|
:id="'comment' + item.commentId"> |
|
|
|
|
|
|
|
<div class="li-wrap"> |
|
|
|
<div class="li-wrap"> |
|
|
|
<img :src="item.createUserAvatars" |
|
|
|
<img :src="item.createUserAvatars" alt="" class="avatar"> |
|
|
|
alt="" |
|
|
|
|
|
|
|
class="avatar"> |
|
|
|
|
|
|
|
<div class="texts"> |
|
|
|
<div class="texts"> |
|
|
|
<h6> |
|
|
|
<h6> |
|
|
|
<span class="name">{{ item.createUsername }}</span> |
|
|
|
<span class="name">{{ item.createUsername }}</span> |
|
|
|
发表于 {{ item.createTime }} |
|
|
|
发表于 {{ item.createTime }} |
|
|
|
</h6> |
|
|
|
</h6> |
|
|
|
<div class="m-t-8" |
|
|
|
<div class="m-t-8" v-html="item.content"></div> |
|
|
|
v-html="item.content"></div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="action"> |
|
|
|
<div class="action"> |
|
|
|
<i class="icon el-icon-chat-dot-square" |
|
|
|
<i class="icon el-icon-chat-dot-square" @click="showReplay(item)"></i> |
|
|
|
@click="showReplay(item)"></i> |
|
|
|
|
|
|
|
<!-- 当前用户是管理员 || 该条评论是学生发的(没有createRoleName即是学生) || 当前用户的account==该条评论的创建人accountId --> |
|
|
|
<!-- 当前用户是管理员 || 该条评论是学生发的(没有createRoleName即是学生) || 当前用户的account==该条评论的创建人accountId --> |
|
|
|
<i v-if="(item.currentRoleName && item.currentRoleName.includes('管理员')) || !item.createRoleName || item.currentAccountId == item.createAccountId" |
|
|
|
<i v-if="(item.currentRoleName && item.currentRoleName.includes('管理员')) || !item.createRoleName || item.currentAccountId == item.createAccountId" |
|
|
|
class="icon el-icon-delete" |
|
|
|
class="icon el-icon-delete" @click="delComment(item)"></i> |
|
|
|
@click="delComment(item)"></i> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- <div class="like-wrap" |
|
|
|
<!-- <div class="like-wrap" |
|
|
|
@click="like(item)"> |
|
|
|
@click="like(item)"> |
|
|
@ -284,27 +199,16 @@ |
|
|
|
</div> --> |
|
|
|
</div> --> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="reply" |
|
|
|
<div class="reply" v-if="item.showReply"> |
|
|
|
v-if="item.showReply"> |
|
|
|
<quill :border="true" v-model="item.replyContent" :toTop="false" :height="150" /> |
|
|
|
<quill :border="true" |
|
|
|
|
|
|
|
v-model="item.replyContent" |
|
|
|
|
|
|
|
:toTop="false" |
|
|
|
|
|
|
|
:height="150" /> |
|
|
|
|
|
|
|
<div class="m-v-10 text-right"> |
|
|
|
<div class="m-v-10 text-right"> |
|
|
|
<el-button type="primary" |
|
|
|
<el-button type="primary" size="mini" @click="submitComment(item)">提交</el-button> |
|
|
|
size="mini" |
|
|
|
|
|
|
|
@click="submitComment(item)">提交</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<ul class="msg children" |
|
|
|
<ul class="msg children" v-if="item.showChildren"> |
|
|
|
v-if="item.showChildren"> |
|
|
|
<li v-for="(reply, i) in item.children" :key="i" :id="'comment' + reply.commentId"> |
|
|
|
<li v-for="(reply,i) in item.children" |
|
|
|
|
|
|
|
:key="i" |
|
|
|
|
|
|
|
:id="'comment' + reply.commentId"> |
|
|
|
|
|
|
|
<div class="li-wrap"> |
|
|
|
<div class="li-wrap"> |
|
|
|
<img class="avatar" |
|
|
|
<img class="avatar" :src="reply.createUserAvatars" alt=""> |
|
|
|
:src="reply.createUserAvatars" |
|
|
|
|
|
|
|
alt=""> |
|
|
|
|
|
|
|
<div class="texts"> |
|
|
|
<div class="texts"> |
|
|
|
<div class="name">{{ reply.createUsername }}</div> |
|
|
|
<div class="name">{{ reply.createUsername }}</div> |
|
|
|
<div class="flex m-v-8"> |
|
|
|
<div class="flex m-v-8"> |
|
|
@ -317,12 +221,10 @@ |
|
|
|
<div class="date">{{ reply.createTime }}</div> |
|
|
|
<div class="date">{{ reply.createTime }}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="action"> |
|
|
|
<div class="action"> |
|
|
|
<i class="icon el-icon-chat-dot-square" |
|
|
|
<i class="icon el-icon-chat-dot-square" @click="showReplay(reply)"></i> |
|
|
|
@click="showReplay(reply)"></i> |
|
|
|
|
|
|
|
<!-- 当前用户是管理员 || 该条评论是学生发的(没有createRoleName即是学生) || 当前用户的account==该条评论的创建人accountId --> |
|
|
|
<!-- 当前用户是管理员 || 该条评论是学生发的(没有createRoleName即是学生) || 当前用户的account==该条评论的创建人accountId --> |
|
|
|
<i v-if="(reply.currentRoleName && reply.currentRoleName.includes('管理员')) || !reply.createRoleName || reply.currentAccountId == reply.createAccountId" |
|
|
|
<i v-if="(reply.currentRoleName && reply.currentRoleName.includes('管理员')) || !reply.createRoleName || reply.currentAccountId == reply.createAccountId" |
|
|
|
class="icon el-icon-delete" |
|
|
|
class="icon el-icon-delete" @click="delComment(reply)"></i> |
|
|
|
@click="delComment(reply)"></i> |
|
|
|
|
|
|
|
<!-- <div class="like-wrap" |
|
|
|
<!-- <div class="like-wrap" |
|
|
|
@click="like(item, reply)"> |
|
|
|
@click="like(item, reply)"> |
|
|
|
<img v-if="reply.isLike" |
|
|
|
<img v-if="reply.isLike" |
|
|
@ -337,22 +239,17 @@ |
|
|
|
</div> --> |
|
|
|
</div> --> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="reply" |
|
|
|
<div class="reply" v-if="reply.showReply"> |
|
|
|
v-if="reply.showReply"> |
|
|
|
<quill :border="true" v-model="reply.replyContent" :toTop="false" :height="150" /> |
|
|
|
<quill :border="true" |
|
|
|
|
|
|
|
v-model="reply.replyContent" |
|
|
|
|
|
|
|
:toTop="false" |
|
|
|
|
|
|
|
:height="150" /> |
|
|
|
|
|
|
|
<div class="p-b-10 m-t-10 text-right"> |
|
|
|
<div class="p-b-10 m-t-10 text-right"> |
|
|
|
<el-button type="primary" |
|
|
|
<el-button type="primary" size="mini" @click="submitComment(item, reply)">提交</el-button> |
|
|
|
size="mini" |
|
|
|
|
|
|
|
@click="submitComment(item, reply)">提交</el-button> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
<div v-if="item.children" |
|
|
|
<div v-if="item.children" class="toggle"><span @click="item.showChildren = !item.showChildren">{{ |
|
|
|
class="toggle"><span @click="item.showChildren = !item.showChildren">{{item.showChildren ? '收起所有回复' : `查看所有${item.children.length}条回复`}} <i class="el-icon-arrow-down"></i></span></div> |
|
|
|
item.showChildren ? |
|
|
|
|
|
|
|
'收起所有回复' : `查看所有${item.children.length}条回复` }} <i class="el-icon-arrow-down"></i></span></div> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -360,77 +257,48 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="rank"> |
|
|
|
<div class="rank"> |
|
|
|
<h6 class="title">练习成绩排行</h6> |
|
|
|
<h6 class="title">练习成绩排行</h6> |
|
|
|
<el-select style="width: 100%" |
|
|
|
<el-select style="width: 100%" v-model="archProject" placeholder="请选择" @change="getMaximumScore"> |
|
|
|
v-model="archProject" |
|
|
|
<el-option v-for="(item, i) in progressList" :key="i" :label="item.projectName" |
|
|
|
placeholder="请选择" |
|
|
|
|
|
|
|
@change="getMaximumScore"> |
|
|
|
|
|
|
|
<el-option v-for="(item, i) in progressList" |
|
|
|
|
|
|
|
:key="i" |
|
|
|
|
|
|
|
:label="item.projectName" |
|
|
|
|
|
|
|
:value="item.projectId"></el-option> |
|
|
|
:value="item.projectId"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
<div v-if="maximumScores.length" |
|
|
|
<div v-if="maximumScores.length" class="arches"> |
|
|
|
class="arches"> |
|
|
|
<div v-for="(item, i) in maximumScores" :key="i" class="line"> |
|
|
|
<div v-for="(item, i) in maximumScores" |
|
|
|
|
|
|
|
:key="i" |
|
|
|
|
|
|
|
class="line"> |
|
|
|
|
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<img :src="item.userAvatars" |
|
|
|
<img :src="item.userAvatars" alt="" class="avatar"> |
|
|
|
alt="" |
|
|
|
|
|
|
|
class="avatar"> |
|
|
|
|
|
|
|
<span class="name">{{ item.userName }}</span> |
|
|
|
<span class="name">{{ item.userName }}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<span class="point">{{ item.highestScore }}分</span> |
|
|
|
<span class="point">{{ item.highestScore }}分</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<p v-else |
|
|
|
<p v-else class="none">暂无数据</p> |
|
|
|
class="none">暂无数据</p> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<el-dialog title="请选择项目" |
|
|
|
<el-dialog title="请选择项目" v-loading="loading" :visible.sync="projectVisible" width="828px" custom-class="project-dia" |
|
|
|
v-loading="loading" |
|
|
|
|
|
|
|
:visible.sync="projectVisible" |
|
|
|
|
|
|
|
width="828px" |
|
|
|
|
|
|
|
custom-class="project-dia" |
|
|
|
|
|
|
|
:close-on-click-modal="false"> |
|
|
|
:close-on-click-modal="false"> |
|
|
|
<ul class="projects"> |
|
|
|
<ul class="projects"> |
|
|
|
<li v-for="(item, i) in projects" |
|
|
|
<li v-for="(item, i) in projects" :key="i" :class="{ active: curProject == item.projectId }" |
|
|
|
:key="i" |
|
|
|
|
|
|
|
:class="{active: curProject == item.projectId}" |
|
|
|
|
|
|
|
@click="selectProject(item)"> |
|
|
|
@click="selectProject(item)"> |
|
|
|
<img src="@/assets/img/project.png" |
|
|
|
<img src="@/assets/img/project.png" alt=""> |
|
|
|
alt=""> |
|
|
|
|
|
|
|
<span>{{ i + 1 }}. {{ item.projectName }}</span> |
|
|
|
<span>{{ i + 1 }}. {{ item.projectName }}</span> |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
|
|
|
|
|
|
|
|
<span slot="footer" |
|
|
|
<span slot="footer" class="dialog-footer"> |
|
|
|
class="dialog-footer"> |
|
|
|
<el-button size="small" @click="projectVisible = false">取 消</el-button> |
|
|
|
<el-button size="small" |
|
|
|
<el-button size="small" type="primary" @click="toSub">确 定</el-button> |
|
|
|
@click="projectVisible = false">取 消</el-button> |
|
|
|
|
|
|
|
<el-button size="small" |
|
|
|
|
|
|
|
type="primary" |
|
|
|
|
|
|
|
@click="toSub">确 定</el-button> |
|
|
|
|
|
|
|
</span> |
|
|
|
</span> |
|
|
|
</el-dialog> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 购买弹框 --> |
|
|
|
<!-- 购买弹框 --> |
|
|
|
<el-dialog title="温馨提示" |
|
|
|
<el-dialog title="温馨提示" :visible.sync="buyVisible" width="420px" center :close-on-click-modal="false"> |
|
|
|
:visible.sync="buyVisible" |
|
|
|
|
|
|
|
width="420px" |
|
|
|
|
|
|
|
center |
|
|
|
|
|
|
|
:close-on-click-modal="false"> |
|
|
|
|
|
|
|
<div class="buy"> |
|
|
|
<div class="buy"> |
|
|
|
<p class="tips">该课程订阅期限已到期,若需要续费请扫码添加客服咨询</p> |
|
|
|
<p class="tips">该课程订阅期限已到期,若需要续费请扫码添加客服咨询</p> |
|
|
|
<img src="@/assets/img/wechat-code.jpeg" |
|
|
|
<img src="@/assets/img/wechat-code.jpeg" alt=""> |
|
|
|
alt=""> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
<pdfDia :key="pdfVisible" |
|
|
|
<pdfDia :key="pdfVisible" :visible.sync="pdfVisible" :src.sync="pdfSrc" /> |
|
|
|
:visible.sync="pdfVisible" |
|
|
|
|
|
|
|
:src.sync="pdfSrc" /> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
@ -1030,8 +898,10 @@ export default { |
|
|
|
<style lang="scss" scoped> |
|
|
|
<style lang="scss" scoped> |
|
|
|
@import '../../../styles/page/station.scss'; |
|
|
|
@import '../../../styles/page/station.scss'; |
|
|
|
$height: 700px; |
|
|
|
$height: 700px; |
|
|
|
|
|
|
|
|
|
|
|
.page { |
|
|
|
.page { |
|
|
|
border-radius: 0; |
|
|
|
border-radius: 0; |
|
|
|
|
|
|
|
|
|
|
|
.intro { |
|
|
|
.intro { |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
|
color: #333; |
|
|
|
color: #333; |
|
|
@ -1046,11 +916,13 @@ $height: 700px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/deep/.source-card { |
|
|
|
/deep/.source-card { |
|
|
|
.el-card__body { |
|
|
|
.el-card__body { |
|
|
|
padding: 0; |
|
|
|
padding: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.video_wid, |
|
|
|
.video_wid, |
|
|
|
.cover { |
|
|
|
.cover { |
|
|
|
position: relative; |
|
|
|
position: relative; |
|
|
@ -1058,26 +930,62 @@ $height: 700px; |
|
|
|
height: $height !important; |
|
|
|
height: $height !important; |
|
|
|
border: 0; |
|
|
|
border: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.cover { |
|
|
|
.cover { |
|
|
|
flex: 1; |
|
|
|
flex: 1; |
|
|
|
width: auto; |
|
|
|
width: auto; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.cover { |
|
|
|
.cover { |
|
|
|
img { |
|
|
|
img { |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.is-word { |
|
|
|
&.is-word { |
|
|
|
overflow: hidden; |
|
|
|
overflow: hidden; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.fileIframe { |
|
|
|
|
|
|
|
height: $height !important; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.video_wid, |
|
|
|
|
|
|
|
.inner { |
|
|
|
|
|
|
|
width: 100%; |
|
|
|
|
|
|
|
height: 100% !important; |
|
|
|
|
|
|
|
border: 0; |
|
|
|
|
|
|
|
overflow: auto; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.cover.is-word { |
|
|
|
|
|
|
|
.inner { |
|
|
|
|
|
|
|
height: calc(100% + 38px) !important; |
|
|
|
|
|
|
|
margin-top: -38px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.video_wid:focus { |
|
|
|
|
|
|
|
outline: none; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.catalog { |
|
|
|
|
|
|
|
width: 296px; |
|
|
|
|
|
|
|
padding: 16px; |
|
|
|
|
|
|
|
margin-left: 12px; |
|
|
|
|
|
|
|
background-color: #252528; |
|
|
|
|
|
|
|
|
|
|
|
.entry { |
|
|
|
.entry { |
|
|
|
width: 100%; |
|
|
|
width: 100%; |
|
|
|
height: 50px; |
|
|
|
height: 50px; |
|
|
|
font-size: 18px; |
|
|
|
font-size: 18px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.types { |
|
|
|
.types { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
margin: 15px 0; |
|
|
|
margin: 15px 0; |
|
|
|
|
|
|
|
|
|
|
|
.item { |
|
|
|
.item { |
|
|
|
display: inline-flex; |
|
|
|
display: inline-flex; |
|
|
|
justify-content: center; |
|
|
|
justify-content: center; |
|
|
@ -1085,75 +993,68 @@ $height: 700px; |
|
|
|
width: 120px; |
|
|
|
width: 120px; |
|
|
|
height: 40px; |
|
|
|
height: 40px; |
|
|
|
color: #fff; |
|
|
|
color: #fff; |
|
|
|
background-color: #b5b5b5; |
|
|
|
background-color: #4e4e4e; |
|
|
|
border-radius: 4px; |
|
|
|
border-radius: 4px; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
|
|
|
|
|
|
|
|
&:first-child { |
|
|
|
&:first-child { |
|
|
|
margin-right: 10px; |
|
|
|
margin-right: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
background-color: #ac89fd; |
|
|
|
background-color: #ac89fd; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.active { |
|
|
|
&.active { |
|
|
|
background-color: $main-color; |
|
|
|
background-color: $main-color; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.icon { |
|
|
|
.icon { |
|
|
|
margin-right: 5px; |
|
|
|
margin-right: 5px; |
|
|
|
font-size: 18px; |
|
|
|
font-size: 18px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
.fileIframe { |
|
|
|
|
|
|
|
height: $height !important; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.video_wid, |
|
|
|
|
|
|
|
.inner { |
|
|
|
|
|
|
|
width: 100%; |
|
|
|
|
|
|
|
height: 100% !important; |
|
|
|
|
|
|
|
border: 0; |
|
|
|
|
|
|
|
overflow: auto; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.cover.is-word { |
|
|
|
|
|
|
|
.inner { |
|
|
|
|
|
|
|
height: calc(100% + 38px) !important; |
|
|
|
|
|
|
|
margin-top: -38px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.video_wid:focus { |
|
|
|
|
|
|
|
outline: none; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.catalog { |
|
|
|
|
|
|
|
width: 330px; |
|
|
|
|
|
|
|
margin-left: 20px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.list { |
|
|
|
.list { |
|
|
|
height: calc(700px - 70px); |
|
|
|
height: calc(700px - 104px); |
|
|
|
padding: 24px 16px; |
|
|
|
overflow-y: auto; |
|
|
|
background: #fff; |
|
|
|
|
|
|
|
.title { |
|
|
|
.title { |
|
|
|
margin-bottom: 8px; |
|
|
|
margin-bottom: 11px; |
|
|
|
color: rgba(0, 0, 0, 0.85); |
|
|
|
color: #fff; |
|
|
|
font-size: 20px; |
|
|
|
font-size: 16px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.pro-title { |
|
|
|
.pro-title { |
|
|
|
margin-bottom: 5px; |
|
|
|
margin-bottom: 5px; |
|
|
|
font-size: 14px; |
|
|
|
color: #fff; |
|
|
|
|
|
|
|
font-size: 12px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/deep/.el-progress-bar { |
|
|
|
/deep/.el-progress-bar { |
|
|
|
width: 86%; |
|
|
|
width: 92%; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/deep/.el-progress__text { |
|
|
|
|
|
|
|
color: #fff; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.desc-wrap { |
|
|
|
.desc-wrap { |
|
|
|
position: relative; |
|
|
|
position: relative; |
|
|
|
|
|
|
|
|
|
|
|
.desc { |
|
|
|
.desc { |
|
|
|
font-size: 14px; |
|
|
|
font-size: 12px; |
|
|
|
color: rgba(0, 0, 0, 0.65); |
|
|
|
color: rgba(0, 0, 0, 0.65); |
|
|
|
line-height: 22px; |
|
|
|
line-height: 22px; |
|
|
|
@include mul-ellipsis(2); |
|
|
|
@include mul-ellipsis(2); |
|
|
|
|
|
|
|
|
|
|
|
&.active { |
|
|
|
&.active { |
|
|
|
display: block; |
|
|
|
display: block; |
|
|
|
overflow: visible; |
|
|
|
overflow: visible; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.arrow { |
|
|
|
.arrow { |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
|
bottom: 2px; |
|
|
|
bottom: 2px; |
|
|
@ -1162,76 +1063,97 @@ $height: 700px; |
|
|
|
justify-content: space-between; |
|
|
|
justify-content: space-between; |
|
|
|
width: 46px; |
|
|
|
width: 46px; |
|
|
|
background-color: #fff; |
|
|
|
background-color: #fff; |
|
|
|
|
|
|
|
|
|
|
|
span { |
|
|
|
span { |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
|
color: rgba(0, 0, 0, 0.65); |
|
|
|
color: rgba(0, 0, 0, 0.65); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
img { |
|
|
|
img { |
|
|
|
width: 16px; |
|
|
|
width: 16px; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.active { |
|
|
|
&.active { |
|
|
|
span { |
|
|
|
span { |
|
|
|
opacity: 0; |
|
|
|
opacity: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
img { |
|
|
|
img { |
|
|
|
transform: rotate(180deg); |
|
|
|
transform: rotate(180deg); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.chapters { |
|
|
|
.chapters { |
|
|
|
margin-top: 16px; |
|
|
|
margin-top: 16px; |
|
|
|
max-height: calc(100% - 167px); |
|
|
|
max-height: calc(100% - 53px); |
|
|
|
overflow: auto; |
|
|
|
overflow: auto; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.chapter { |
|
|
|
.chapter { |
|
|
|
margin-bottom: 20px; |
|
|
|
margin-bottom: 20px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.chapterName { |
|
|
|
.chapterName { |
|
|
|
color: rgba(0, 0, 0, 0.85); |
|
|
|
color: #fff; |
|
|
|
font-size: 16px; |
|
|
|
font-size: 14px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.section { |
|
|
|
.section { |
|
|
|
padding: 5px 15px; |
|
|
|
padding: 5px 15px; |
|
|
|
margin-top: 8px; |
|
|
|
margin-top: 12px; |
|
|
|
background: rgba(0, 0, 0, 0.02); |
|
|
|
background-color: #121214; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.sectionName { |
|
|
|
.sectionName { |
|
|
|
position: relative; |
|
|
|
position: relative; |
|
|
|
padding-right: 15px; |
|
|
|
padding-right: 15px; |
|
|
|
margin: 10px 0; |
|
|
|
margin: 12px 0; |
|
|
|
font-size: 14px; |
|
|
|
font-size: 12px; |
|
|
|
color: rgba(0, 0, 0, 0.65); |
|
|
|
color: #999; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
@include ellipsis; |
|
|
|
@include ellipsis; |
|
|
|
&.active { |
|
|
|
|
|
|
|
color: #9278ff; |
|
|
|
img { |
|
|
|
|
|
|
|
margin-right: 8px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.icon { |
|
|
|
.icon { |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
|
right: 0; |
|
|
|
right: 0; |
|
|
|
font-size: 16px; |
|
|
|
font-size: 14px; |
|
|
|
color: #00c935; |
|
|
|
color: #00c935; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.circle { |
|
|
|
.circle { |
|
|
|
width: 14px; |
|
|
|
width: 14px; |
|
|
|
height: 14px; |
|
|
|
height: 14px; |
|
|
|
border-radius: 50%; |
|
|
|
border-radius: 50%; |
|
|
|
border: 1px solid #ccc; |
|
|
|
border: 1px solid #ccc; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&.active { |
|
|
|
|
|
|
|
color: #fff; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.buy { |
|
|
|
.buy { |
|
|
|
text-align: center; |
|
|
|
text-align: center; |
|
|
|
|
|
|
|
|
|
|
|
.tips { |
|
|
|
.tips { |
|
|
|
margin-bottom: 10px; |
|
|
|
margin-bottom: 10px; |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
img { |
|
|
|
img { |
|
|
|
width: 85%; |
|
|
|
width: 85%; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-image-viewer__wrapper { |
|
|
|
.el-image-viewer__wrapper { |
|
|
|
transform: translateY(-10px); |
|
|
|
transform: translateY(-10px); |
|
|
|
transition: transform 0.5s; |
|
|
|
transition: transform 0.5s; |
|
|
@ -1240,19 +1162,23 @@ $height: 700px; |
|
|
|
transform: translateY(0); |
|
|
|
transform: translateY(0); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-image-viewer__close { |
|
|
|
.el-image-viewer__close { |
|
|
|
z-index: 2000; |
|
|
|
z-index: 2000; |
|
|
|
top: 15px; |
|
|
|
top: 15px; |
|
|
|
right: 15px; |
|
|
|
right: 15px; |
|
|
|
|
|
|
|
|
|
|
|
&.doc-close { |
|
|
|
&.doc-close { |
|
|
|
i { |
|
|
|
i { |
|
|
|
color: #000 !important; |
|
|
|
color: #000 !important; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.list::-webkit-scrollbar { |
|
|
|
.list::-webkit-scrollbar { |
|
|
|
width: 4px; |
|
|
|
width: 4px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.list::-webkit-scrollbar-thumb { |
|
|
|
.list::-webkit-scrollbar-thumb { |
|
|
|
border-radius: 10px; |
|
|
|
border-radius: 10px; |
|
|
|
background: rgba(0, 0, 0, 0.06); |
|
|
|
background: rgba(0, 0, 0, 0.06); |
|
|
@ -1263,6 +1189,7 @@ $height: 700px; |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
|
background-color: rgb(57, 58, 61); |
|
|
|
background-color: rgb(57, 58, 61); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.word-mask { |
|
|
|
.word-mask { |
|
|
|
z-index: 9; |
|
|
|
z-index: 9; |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
@ -1271,6 +1198,7 @@ $height: 700px; |
|
|
|
width: 100%; |
|
|
|
width: 100%; |
|
|
|
background-color: rgb(243, 242, 241); |
|
|
|
background-color: rgb(243, 242, 241); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.word-mask1 { |
|
|
|
.word-mask1 { |
|
|
|
z-index: 9; |
|
|
|
z-index: 9; |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
@ -1279,11 +1207,13 @@ $height: 700px; |
|
|
|
width: 100%; |
|
|
|
width: 100%; |
|
|
|
background-color: #185abd; |
|
|
|
background-color: #185abd; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.word-mask2 { |
|
|
|
.word-mask2 { |
|
|
|
z-index: 9; |
|
|
|
z-index: 9; |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
|
background-color: transparent; |
|
|
|
background-color: transparent; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.excel-mask1 { |
|
|
|
.excel-mask1 { |
|
|
|
z-index: 9; |
|
|
|
z-index: 9; |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
@ -1292,31 +1222,39 @@ $height: 700px; |
|
|
|
width: 60%; |
|
|
|
width: 60%; |
|
|
|
background-color: #107c41; |
|
|
|
background-color: #107c41; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/deep/.pdf-dia { |
|
|
|
/deep/.pdf-dia { |
|
|
|
border-radius: 0 !important; |
|
|
|
border-radius: 0 !important; |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__header { |
|
|
|
.el-dialog__header { |
|
|
|
display: none; |
|
|
|
display: none; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__body { |
|
|
|
.el-dialog__body { |
|
|
|
padding: 0; |
|
|
|
padding: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__headerbtn { |
|
|
|
.el-dialog__headerbtn { |
|
|
|
top: 10px; |
|
|
|
top: 10px; |
|
|
|
|
|
|
|
|
|
|
|
.el-dialog__close { |
|
|
|
.el-dialog__close { |
|
|
|
color: #fff; |
|
|
|
color: #fff; |
|
|
|
font-size: 16px; |
|
|
|
font-size: 16px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.pdf { |
|
|
|
.pdf { |
|
|
|
position: relative; |
|
|
|
position: relative; |
|
|
|
margin-top: 0 !important; |
|
|
|
margin-top: 0 !important; |
|
|
|
|
|
|
|
|
|
|
|
.full { |
|
|
|
.full { |
|
|
|
position: absolute; |
|
|
|
position: absolute; |
|
|
|
top: 7px; |
|
|
|
top: 7px; |
|
|
|
right: 10px; |
|
|
|
right: 10px; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.arrow { |
|
|
|
.arrow { |
|
|
|
padding: 10px 0; |
|
|
|
padding: 10px 0; |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
@ -1325,54 +1263,65 @@ $height: 700px; |
|
|
|
font-size: 16px; |
|
|
|
font-size: 16px; |
|
|
|
color: #fff; |
|
|
|
color: #fff; |
|
|
|
background-color: #333; |
|
|
|
background-color: #333; |
|
|
|
|
|
|
|
|
|
|
|
.turn { |
|
|
|
.turn { |
|
|
|
margin: 0 10px; |
|
|
|
margin: 0 10px; |
|
|
|
font-size: 18px; |
|
|
|
font-size: 18px; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.pdf-wrap { |
|
|
|
.pdf-wrap { |
|
|
|
width: 80%; |
|
|
|
width: 80%; |
|
|
|
margin: 0 auto; |
|
|
|
margin: 0 auto; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.tabs { |
|
|
|
.tabs { |
|
|
|
margin-bottom: 10px; |
|
|
|
margin-bottom: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.tab-content { |
|
|
|
.tab-content { |
|
|
|
width: 80%; |
|
|
|
width: 80%; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.rank { |
|
|
|
.rank { |
|
|
|
width: calc(20% - 12px); |
|
|
|
width: calc(20% - 12px); |
|
|
|
padding: 20px; |
|
|
|
padding: 20px; |
|
|
|
margin-left: 12px; |
|
|
|
margin-left: 12px; |
|
|
|
background-color: #fff; |
|
|
|
background-color: #fff; |
|
|
|
|
|
|
|
|
|
|
|
.title { |
|
|
|
.title { |
|
|
|
margin-bottom: 10px; |
|
|
|
margin-bottom: 10px; |
|
|
|
font-size: 15px; |
|
|
|
font-size: 15px; |
|
|
|
font-weight: 400; |
|
|
|
font-weight: 400; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.arches { |
|
|
|
.arches { |
|
|
|
max-height: 223px; |
|
|
|
max-height: 223px; |
|
|
|
padding-right: 10px; |
|
|
|
padding-right: 10px; |
|
|
|
margin-top: 20px; |
|
|
|
margin-top: 20px; |
|
|
|
overflow: auto; |
|
|
|
overflow: auto; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.line { |
|
|
|
.line { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
|
margin-bottom: 10px; |
|
|
|
margin-bottom: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.avatar { |
|
|
|
.avatar { |
|
|
|
width: 35px; |
|
|
|
width: 35px; |
|
|
|
height: 35px; |
|
|
|
height: 35px; |
|
|
|
margin-right: 10px; |
|
|
|
margin-right: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.point { |
|
|
|
.point { |
|
|
|
font-weight: 600; |
|
|
|
font-weight: 600; |
|
|
|
color: #9278ff; |
|
|
|
color: #9278ff; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.none { |
|
|
|
.none { |
|
|
|
margin-top: 10px; |
|
|
|
margin-top: 10px; |
|
|
|
text-align: center; |
|
|
|
text-align: center; |
|
|
@ -1380,16 +1329,19 @@ $height: 700px; |
|
|
|
color: #727272; |
|
|
|
color: #727272; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/deep/.project-dia { |
|
|
|
/deep/.project-dia { |
|
|
|
.el-dialog__body { |
|
|
|
.el-dialog__body { |
|
|
|
padding: 28px 32px; |
|
|
|
padding: 28px 32px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.projects { |
|
|
|
.projects { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
flex-wrap: wrap; |
|
|
|
flex-wrap: wrap; |
|
|
|
max-height: 400px; |
|
|
|
max-height: 400px; |
|
|
|
overflow: auto; |
|
|
|
overflow: auto; |
|
|
|
|
|
|
|
|
|
|
|
li { |
|
|
|
li { |
|
|
|
display: inline-flex; |
|
|
|
display: inline-flex; |
|
|
|
align-items: center; |
|
|
|
align-items: center; |
|
|
@ -1399,21 +1351,26 @@ $height: 700px; |
|
|
|
background-color: #f6f8fa; |
|
|
|
background-color: #f6f8fa; |
|
|
|
border-radius: 16px; |
|
|
|
border-radius: 16px; |
|
|
|
cursor: pointer; |
|
|
|
cursor: pointer; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
span { |
|
|
|
span { |
|
|
|
color: #007eff; |
|
|
|
color: #007eff; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&:nth-child(3n) { |
|
|
|
&:nth-child(3n) { |
|
|
|
margin-right: 0; |
|
|
|
margin-right: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.active { |
|
|
|
&.active { |
|
|
|
background-color: #f2f7ff; |
|
|
|
background-color: #f2f7ff; |
|
|
|
|
|
|
|
|
|
|
|
span { |
|
|
|
span { |
|
|
|
color: #3988ff; |
|
|
|
color: #3988ff; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
span { |
|
|
|
span { |
|
|
|
max-width: 140px; |
|
|
|
max-width: 140px; |
|
|
|
margin-left: 14px; |
|
|
|
margin-left: 14px; |
|
|
|