|
@@ -875,7 +875,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in workStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -893,6 +893,14 @@
|
|
|
alt
|
|
|
/>
|
|
|
</div>
|
|
|
+ <div class="workImg" v-if="w.type == 3">
|
|
|
+ <img
|
|
|
+ style="cursor: pointer"
|
|
|
+ src="../assets/icon/works/noImg.png"
|
|
|
+ @click="openVideo(w.works)"
|
|
|
+ alt
|
|
|
+ />
|
|
|
+ </div>
|
|
|
<div class="worksName">
|
|
|
<div>{{ w.sName }}</div>
|
|
|
</div>
|
|
@@ -1006,7 +1014,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in workStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1039,7 +1047,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in workStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1072,7 +1080,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in workStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1105,7 +1113,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in workStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1138,7 +1146,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in workStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1181,7 +1189,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in worksStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
:class="w.type == 1 ? 'isTypeOne' : ''"
|
|
@@ -1200,8 +1208,44 @@
|
|
|
alt
|
|
|
/>
|
|
|
</div>
|
|
|
- <div class="worksName">
|
|
|
- <div>{{ w.sName }}</div>
|
|
|
+ <div class="workImg" v-if="w.type == 3">
|
|
|
+ <img
|
|
|
+ style="cursor: pointer"
|
|
|
+ src="../assets/icon/works/noImg.png"
|
|
|
+ @click="openVideo(w.works)"
|
|
|
+ alt
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="comment" style="min-width: 200px">
|
|
|
+ <div class="worksName">
|
|
|
+ <div>{{ w.sName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentList">
|
|
|
+ <div
|
|
|
+ class="commentImg"
|
|
|
+ @click="
|
|
|
+ isLikes(w.wid, userid, 1, null, w.isLikes)
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="w.isLikes == true ? likes : noLikes"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.likesCount }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg" @click="commentOther(w)">
|
|
|
+ <img
|
|
|
+ src="../assets/icon/comment/comment.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.commentCount }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -1369,15 +1413,15 @@
|
|
|
</div>
|
|
|
<div>{{ w.likesCount }}</div>
|
|
|
</div>
|
|
|
- <!-- <div class="commentList">
|
|
|
- <div class="commentImg">
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg" @click="commentOther(w)">
|
|
|
<img
|
|
|
src="../assets/icon/comment/comment.png"
|
|
|
alt=""
|
|
|
/>
|
|
|
</div>
|
|
|
<div>{{ w.commentCount }}</div>
|
|
|
- </div> -->
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -1419,7 +1463,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in worksStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1431,8 +1475,35 @@
|
|
|
alt
|
|
|
/>
|
|
|
</div>
|
|
|
- <div class="worksName">
|
|
|
- <div>{{ w.sName }}</div>
|
|
|
+ <div class="comment" style="min-width: 200px">
|
|
|
+ <div class="worksName">
|
|
|
+ <div>{{ w.sName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentList">
|
|
|
+ <div
|
|
|
+ class="commentImg"
|
|
|
+ @click="
|
|
|
+ isLikes(w.wid, userid, 1, null, w.isLikes)
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="w.isLikes == true ? likes : noLikes"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.likesCount }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg" @click="commentOther(w)">
|
|
|
+ <img
|
|
|
+ src="../assets/icon/comment/comment.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.commentCount }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -1473,7 +1544,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in worksStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1488,6 +1559,36 @@
|
|
|
<div class="worksName">
|
|
|
<div>{{ w.sName }}</div>
|
|
|
</div>
|
|
|
+ <div class="comment" style="min-width: 200px">
|
|
|
+ <div class="worksName">
|
|
|
+ <div>{{ w.sName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentList">
|
|
|
+ <div
|
|
|
+ class="commentImg"
|
|
|
+ @click="
|
|
|
+ isLikes(w.wid, userid, 1, null, w.isLikes)
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="w.isLikes == true ? likes : noLikes"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.likesCount }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg" @click="commentOther(w)">
|
|
|
+ <img
|
|
|
+ src="../assets/icon/comment/comment.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.commentCount }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div style="padding-top: 15px; font-size: 18px">未提交</div>
|
|
@@ -1527,7 +1628,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in worksStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1539,8 +1640,35 @@
|
|
|
alt
|
|
|
/>
|
|
|
</div>
|
|
|
- <div class="worksName">
|
|
|
- <div>{{ w.sName }}</div>
|
|
|
+ <div class="comment" style="min-width: 200px">
|
|
|
+ <div class="worksName">
|
|
|
+ <div>{{ w.sName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentList">
|
|
|
+ <div
|
|
|
+ class="commentImg"
|
|
|
+ @click="
|
|
|
+ isLikes(w.wid, userid, 1, null, w.isLikes)
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="w.isLikes == true ? likes : noLikes"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.likesCount }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg" @click="commentOther(w)">
|
|
|
+ <img
|
|
|
+ src="../assets/icon/comment/comment.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.commentCount }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -1581,7 +1709,7 @@
|
|
|
>
|
|
|
<div
|
|
|
class="works"
|
|
|
- style="width: 200px; height: 140px; padding-top: 25px"
|
|
|
+ style="width: 200px; height: 140px; padding: 25px 0"
|
|
|
v-for="(w, wIndex) in worksStudent[toolIndex]"
|
|
|
:key="wIndex"
|
|
|
>
|
|
@@ -1593,8 +1721,35 @@
|
|
|
alt
|
|
|
/>
|
|
|
</div>
|
|
|
- <div class="worksName">
|
|
|
- <div>{{ w.sName }}</div>
|
|
|
+ <div class="comment" style="min-width: 200px">
|
|
|
+ <div class="worksName">
|
|
|
+ <div>{{ w.sName }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentList">
|
|
|
+ <div
|
|
|
+ class="commentImg"
|
|
|
+ @click="
|
|
|
+ isLikes(w.wid, userid, 1, null, w.isLikes)
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="w.isLikes == true ? likes : noLikes"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.likesCount }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg" @click="commentOther(w)">
|
|
|
+ <img
|
|
|
+ src="../assets/icon/comment/comment.png"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ w.commentCount }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -1896,7 +2051,7 @@
|
|
|
</div>
|
|
|
<input
|
|
|
type="file"
|
|
|
- accept="application/pdf, application/.ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*"
|
|
|
+ accept="video/mp4, video/quicktime, video/x-msvideo,application/pdf, application/.ppt, .pptx, .xlsx, .xls, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/*"
|
|
|
capture="camera"
|
|
|
style="display: none"
|
|
|
@change="beforeUpload1($event, 1)"
|
|
@@ -1927,6 +2082,7 @@
|
|
|
alt
|
|
|
v-if="fileType == 0"
|
|
|
/>
|
|
|
+ <img :src="word" alt v-else-if="fileType == 1" />
|
|
|
<img :src="word" alt v-else />
|
|
|
<span class="picName">{{ studyJuri[0].cover[0].name }}</span>
|
|
|
|
|
@@ -2298,6 +2454,171 @@
|
|
|
>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ title="查看视频"
|
|
|
+ :visible.sync="videoVisible"
|
|
|
+ :append-to-body="true"
|
|
|
+ width="600px"
|
|
|
+ :before-close="handleClose"
|
|
|
+ class="dialog_diy"
|
|
|
+ >
|
|
|
+ <div class="workd_media" style="height: 100%" v-if="videoDetail.sources">
|
|
|
+ <video-player
|
|
|
+ class="video-player vjs-custom-skin"
|
|
|
+ :playsinline="true"
|
|
|
+ :options="videoDetail"
|
|
|
+ @play="onPlayerPlay($event)"
|
|
|
+ style="width: 90%; height: 100%; margin: 0 0 0 30px"
|
|
|
+ ></video-player>
|
|
|
+ </div>
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button
|
|
|
+ style="background: #409efe; color: #fff"
|
|
|
+ @click="videoVisible = false"
|
|
|
+ >关 闭</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ title="查看详情"
|
|
|
+ :visible.sync="commentDialogVisible"
|
|
|
+ :append-to-body="true"
|
|
|
+ width="400px"
|
|
|
+ :before-close="handleClose"
|
|
|
+ class="dialog_diy"
|
|
|
+ >
|
|
|
+ <div class="commentTop">
|
|
|
+ <div class="studentDetail">
|
|
|
+ <div class="tx"><img src="../assets/avatar.png" alt="" /></div>
|
|
|
+ <div class="nameAndTime">
|
|
|
+ <div style="margin-bottom: 5px">{{ commentDetail.sName }}</div>
|
|
|
+ <div>{{ commentDetail.time }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="worksAnswer"
|
|
|
+ v-if="commentDetail.works && commentDetail.type == 2"
|
|
|
+ >
|
|
|
+ {{ JSON.parse(commentDetail.works)[0].answer }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="worksAnswer"
|
|
|
+ v-if="commentDetail.works && commentDetail.type == 1"
|
|
|
+ >
|
|
|
+ <pdf
|
|
|
+ v-if="showPDF"
|
|
|
+ :pdfUrl="pptImgUrl"
|
|
|
+ style="width: 100%; height: 520px; overflow: auto"
|
|
|
+ :class="{ fullStyle: full }"
|
|
|
+ ></pdf>
|
|
|
+ <iframe
|
|
|
+ v-else
|
|
|
+ :src="pptImgUrl"
|
|
|
+ frameborder="0"
|
|
|
+ width="100%"
|
|
|
+ height="600"
|
|
|
+ :class="{ fullStyle: full }"
|
|
|
+ ></iframe>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="worksAnswer"
|
|
|
+ v-if="commentDetail.works && commentDetail.type == 0"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ :src="commentDetail.works"
|
|
|
+ alt=""
|
|
|
+ @click="previewImg(commentDetail.works)"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="worksAnswer"
|
|
|
+ v-if="commentDetail.works && commentDetail.type == 3"
|
|
|
+ >
|
|
|
+ <video-player
|
|
|
+ class="video-player vjs-custom-skin"
|
|
|
+ :playsinline="true"
|
|
|
+ :options="videoDetail"
|
|
|
+ @play="onPlayerPlay($event)"
|
|
|
+ style="width: 90%; height: 100%; margin: 0 0 0 30px"
|
|
|
+ ></video-player>
|
|
|
+ </div>
|
|
|
+ <div class="comment">
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg">
|
|
|
+ <img
|
|
|
+ :src="commentDetail.isLikes == true ? likes : noLikes"
|
|
|
+ alt=""
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>{{ commentDetail.likesCount }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="commentList">
|
|
|
+ <div class="commentImg">
|
|
|
+ <img src="../assets/icon/comment/comment.png" alt="" />
|
|
|
+ </div>
|
|
|
+ <div>{{ commentDetail.commentCount }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="commentBox">
|
|
|
+ <div class="pl">评论:</div>
|
|
|
+ <div style="height: 200px; overflow: auto">
|
|
|
+ <div v-if="commentDetail.commentJson" style="padding: 10px 0 0 0">
|
|
|
+ <div
|
|
|
+ class="studentDetail"
|
|
|
+ style="padding-top: 10px"
|
|
|
+ v-for="(co, coIndex) in commentDetail.commentJson"
|
|
|
+ :key="coIndex"
|
|
|
+ >
|
|
|
+ <div class="tx" style="width: 40px">
|
|
|
+ <img src="../assets/avatar.png" alt="" />
|
|
|
+ </div>
|
|
|
+ <div class="plPerson">
|
|
|
+ <div class="plName">
|
|
|
+ <div>{{ co.commentPeople }}</div>
|
|
|
+ <div style="margin-left: 5px">
|
|
|
+ {{ co.commentTime }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="plContent">{{ co.commentText }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else style="padding: 10px 0 0 0">暂无评论</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ color: #556db4;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: bold;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ 评价
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <textarea
|
|
|
+ rows="3"
|
|
|
+ class="pj"
|
|
|
+ style="padding: 10px 5px"
|
|
|
+ cols
|
|
|
+ v-model="commentText"
|
|
|
+ placeholder="请输入对该学生的评价"
|
|
|
+ ></textarea>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div slot="footer">
|
|
|
+ <el-button @click="commentDialogVisible = false">取 消</el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click="addComment(commentDetail.wid, userid, 2)"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
<el-dialog
|
|
|
title="查看文档"
|
|
|
:visible.sync="fullDialogVisible"
|
|
@@ -2381,6 +2702,10 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
dialogVisible: false,
|
|
|
+ commentDialogVisible: false,
|
|
|
+ videoVisible: false,
|
|
|
+ commentDetail: [],
|
|
|
+ videoDetail: {},
|
|
|
id: this.$route.query.courseId,
|
|
|
userid: this.$route.query.userid,
|
|
|
classId: this.$route.query.cid,
|
|
@@ -2392,6 +2717,7 @@ export default {
|
|
|
screenType: this.$route.query.screenType,
|
|
|
pptImgUrl: "",
|
|
|
pptImgUrl1: "",
|
|
|
+ commentText: "",
|
|
|
full: false,
|
|
|
sIsOpen: false,
|
|
|
type: 1,
|
|
@@ -2455,6 +2781,31 @@ export default {
|
|
|
fullscreenToggle: true, //全屏按钮
|
|
|
},
|
|
|
},
|
|
|
+ playerOptions1: {
|
|
|
+ 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: {},
|
|
|
noneBtnImg: false,
|
|
|
proVisible: false,
|
|
@@ -2585,8 +2936,10 @@ export default {
|
|
|
var typesql;
|
|
|
if (this.fileType === 0) {
|
|
|
typesql = 1;
|
|
|
- } else {
|
|
|
+ } else if (this.fileType === 1) {
|
|
|
typesql = 4;
|
|
|
+ } else {
|
|
|
+ typesql = 5;
|
|
|
}
|
|
|
if (this.workTypeA == true) {
|
|
|
this.$confirm(
|
|
@@ -2761,6 +3114,12 @@ export default {
|
|
|
console.error(err);
|
|
|
});
|
|
|
},
|
|
|
+ openVideo(w) {
|
|
|
+ this.videoDetail = {};
|
|
|
+ this.playerOptions1.sources[0].src = w;
|
|
|
+ this.videoDetail = this.playerOptions1;
|
|
|
+ this.videoVisible = true;
|
|
|
+ },
|
|
|
isLikes(wid, uid, t, c, isLikes) {
|
|
|
if (isLikes == false) {
|
|
|
let params = [
|
|
@@ -2788,7 +3147,7 @@ export default {
|
|
|
let params = {
|
|
|
wid: wid,
|
|
|
lid: uid,
|
|
|
- type: 1,
|
|
|
+ type: t,
|
|
|
};
|
|
|
this.ajax
|
|
|
.get(this.$store.state.api + "deleteComment", params)
|
|
@@ -2804,6 +3163,64 @@ export default {
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
+ commentOther(w) {
|
|
|
+ this.commentDetail = [];
|
|
|
+ this.commentDialogVisible = true;
|
|
|
+ this.commentDetail = w;
|
|
|
+ if (w.works && w.type == 1) {
|
|
|
+ this.pptImgUrl = "";
|
|
|
+ var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
|
|
|
+ if (
|
|
|
+ a.indexOf(
|
|
|
+ w.works
|
|
|
+ .split(".")
|
|
|
+ [w.works.split(".").length - 1].toLocaleUpperCase()
|
|
|
+ ) != -1
|
|
|
+ ) {
|
|
|
+ this.pptImgUrl =
|
|
|
+ "https://view.officeapps.live.com/op/view.aspx?src=" + w.works;
|
|
|
+ this.showPDF = false;
|
|
|
+ } else if (
|
|
|
+ w.works
|
|
|
+ .split(".")
|
|
|
+ [w.works.split(".").length - 1].toLocaleUpperCase() == "PDF"
|
|
|
+ ) {
|
|
|
+ this.pptImgUrl = w.works;
|
|
|
+ this.showPDF = true;
|
|
|
+ }
|
|
|
+ } else if (w.works && w.type == 3) {
|
|
|
+ this.videoDetail = {};
|
|
|
+ this.playerOptions1.sources[0].src = w.works;
|
|
|
+ this.videoDetail = this.playerOptions1;
|
|
|
+ this.videoVisible = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ addComment(wid, uid, t) {
|
|
|
+ let params = [
|
|
|
+ {
|
|
|
+ wid: wid,
|
|
|
+ lid: uid,
|
|
|
+ t: t,
|
|
|
+ c: this.commentText,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ this.ajax
|
|
|
+ .post(this.$store.state.api + "insertComment", params)
|
|
|
+ .then((res) => {
|
|
|
+ this.$message({
|
|
|
+ message: "评论成功",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ this.commentText = "";
|
|
|
+ this.commentDialogVisible = false;
|
|
|
+ this.selectSWorks();
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.$message.error("评论失败");
|
|
|
+ console.error(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
selectSWorks() {
|
|
|
//教师查看全部作业
|
|
|
let params = {
|
|
@@ -2820,6 +3237,38 @@ export default {
|
|
|
].toolChoose;
|
|
|
var b = res.data[0];
|
|
|
var c = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
|
|
|
+ var y = [
|
|
|
+ "AVI",
|
|
|
+ "NAVI",
|
|
|
+ "MPEG",
|
|
|
+ "ASF",
|
|
|
+ "MOV",
|
|
|
+ "WMV",
|
|
|
+ "3GP",
|
|
|
+ "RM",
|
|
|
+ "RMVB",
|
|
|
+ "FLV",
|
|
|
+ "F4V",
|
|
|
+ "H.264",
|
|
|
+ "H.265",
|
|
|
+ "REAL VIDEO",
|
|
|
+ "MKV",
|
|
|
+ "WebM",
|
|
|
+ "HDDVD",
|
|
|
+ "MP4",
|
|
|
+ "MPG",
|
|
|
+ "M4V",
|
|
|
+ "MGV",
|
|
|
+ "OGV",
|
|
|
+ "QTM",
|
|
|
+ "STR",
|
|
|
+ "AMC",
|
|
|
+ "DVX",
|
|
|
+ "EVO",
|
|
|
+ "DAT",
|
|
|
+ "OGG",
|
|
|
+ "OGM",
|
|
|
+ ];
|
|
|
var d = res.data[1];
|
|
|
var e = res.data[2];
|
|
|
|
|
@@ -2831,6 +3280,7 @@ export default {
|
|
|
var likesCount = 0;
|
|
|
var commentCount = 0;
|
|
|
var isLikes = false;
|
|
|
+ var commentJson = [];
|
|
|
var data = b[j];
|
|
|
if (i == b[j].tool) {
|
|
|
if (data.type == 2 && a[i].tool[0] == 4) {
|
|
@@ -2866,12 +3316,19 @@ export default {
|
|
|
}
|
|
|
for (var l = 0; l < e.length; l++) {
|
|
|
//评论
|
|
|
- if (d[k].workId == b[j].id) {
|
|
|
+ if (e[l].workId == b[j].id) {
|
|
|
commentCount++;
|
|
|
+ if (e[l].comment != "") {
|
|
|
+ commentJson.push({
|
|
|
+ commentText: e[l].comment,
|
|
|
+ commentTime: e[l].commentTime,
|
|
|
+ commentPeople: e[l].commentPeople,
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if (
|
|
|
- (b[j].type == 1 || b[j].type == 4) &&
|
|
|
+ (b[j].type == 1 || b[j].type == 4 || b[j].type == 5) &&
|
|
|
a[i].tool[0] != 15 &&
|
|
|
a[i].tool[0] != 4
|
|
|
) {
|
|
@@ -2891,6 +3348,25 @@ export default {
|
|
|
likesCount: likesCount,
|
|
|
commentCount: commentCount,
|
|
|
isLikes: isLikes,
|
|
|
+ commentJson: commentJson,
|
|
|
+ });
|
|
|
+ } else if (
|
|
|
+ y.indexOf(
|
|
|
+ b[j].content
|
|
|
+ .split(".")
|
|
|
+ [b[j].content.split(".").length - 1].toLocaleUpperCase()
|
|
|
+ ) != -1
|
|
|
+ ) {
|
|
|
+ this.worksStudent[i].push({
|
|
|
+ wid: b[j].id,
|
|
|
+ works: b[j].content,
|
|
|
+ sName: b[j].name,
|
|
|
+ type: 3,
|
|
|
+ time: b[j].time,
|
|
|
+ likesCount: likesCount,
|
|
|
+ commentCount: commentCount,
|
|
|
+ isLikes: isLikes,
|
|
|
+ commentJson: commentJson,
|
|
|
});
|
|
|
} else {
|
|
|
this.worksStudent[i].push({
|
|
@@ -2902,6 +3378,7 @@ export default {
|
|
|
likesCount: likesCount,
|
|
|
commentCount: commentCount,
|
|
|
isLikes: isLikes,
|
|
|
+ commentJson: commentJson,
|
|
|
});
|
|
|
}
|
|
|
} else if (b[j].type == 3 && a[i].tool[0] == 15) {
|
|
@@ -2914,6 +3391,7 @@ export default {
|
|
|
likesCount: likesCount,
|
|
|
commentCount: commentCount,
|
|
|
isLikes: isLikes,
|
|
|
+ commentJson: commentJson,
|
|
|
});
|
|
|
} else if (b[j].type == 2 && a[i].tool[0] == 4) {
|
|
|
this.worksStudent[i].push({
|
|
@@ -2925,6 +3403,7 @@ export default {
|
|
|
likesCount: likesCount,
|
|
|
commentCount: commentCount,
|
|
|
isLikes: isLikes,
|
|
|
+ commentJson: commentJson,
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -3059,7 +3538,49 @@ export default {
|
|
|
uid: file.uid,
|
|
|
});
|
|
|
var b = ["PDF", "DOC", "DOCX", "PPT", "PPTX", "XLSX", "XLS"];
|
|
|
+ var c = [
|
|
|
+ "AVI",
|
|
|
+ "NAVI",
|
|
|
+ "MPEG",
|
|
|
+ "ASF",
|
|
|
+ "MOV",
|
|
|
+ "WMV",
|
|
|
+ "3GP",
|
|
|
+ "RM",
|
|
|
+ "RMVB",
|
|
|
+ "FLV",
|
|
|
+ "F4V",
|
|
|
+ "H.264",
|
|
|
+ "H.265",
|
|
|
+ "REAL VIDEO",
|
|
|
+ "MKV",
|
|
|
+ "WebM",
|
|
|
+ "HDDVD",
|
|
|
+ "MP4",
|
|
|
+ "MPG",
|
|
|
+ "M4V",
|
|
|
+ "MGV",
|
|
|
+ "OGV",
|
|
|
+ "QTM",
|
|
|
+ "STR",
|
|
|
+ "AMC",
|
|
|
+ "DVX",
|
|
|
+ "EVO",
|
|
|
+ "DAT",
|
|
|
+ "OGG",
|
|
|
+ "OGM",
|
|
|
+ ];
|
|
|
if (
|
|
|
+ c.indexOf(
|
|
|
+ _this.studyJuri[0].cover[0].url
|
|
|
+ .split(".")
|
|
|
+ [
|
|
|
+ _this.studyJuri[0].cover[0].url.split(".").length - 1
|
|
|
+ ].toLocaleUpperCase()
|
|
|
+ ) != -1
|
|
|
+ ) {
|
|
|
+ _this.fileType = 2;
|
|
|
+ } else if (
|
|
|
b.indexOf(
|
|
|
_this.studyJuri[0].cover[0].url
|
|
|
.split(".")
|
|
@@ -5011,7 +5532,8 @@ export default {
|
|
|
bottom: 0;
|
|
|
}
|
|
|
|
|
|
-.binfo_input {
|
|
|
+.binfo_input,
|
|
|
+.pj {
|
|
|
font: inherit;
|
|
|
color: currentColor;
|
|
|
width: 100%;
|
|
@@ -5833,7 +6355,6 @@ export default {
|
|
|
align-items: center;
|
|
|
justify-content: flex-end;
|
|
|
height: 35px;
|
|
|
- padding-right: 15px;
|
|
|
}
|
|
|
.commentList {
|
|
|
display: flex;
|
|
@@ -5844,4 +6365,50 @@ export default {
|
|
|
align-content: center;
|
|
|
margin-left: 15px;
|
|
|
}
|
|
|
+.studentDetail {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.tx {
|
|
|
+ width: 50px;
|
|
|
+}
|
|
|
+.tx > img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+.nameAndTime {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ align-items: flex-start;
|
|
|
+ margin-left: 10px;
|
|
|
+}
|
|
|
+.worksAnswer {
|
|
|
+ color: #91b7a2;
|
|
|
+ margin: 10px 0;
|
|
|
+ font-size: 16px;
|
|
|
+}
|
|
|
+.worksAnswer > img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+.commentTop {
|
|
|
+ border-bottom: 1px solid #eaeaea;
|
|
|
+ padding-bottom: 10px;
|
|
|
+}
|
|
|
+.commentBox {
|
|
|
+ padding-top: 15px;
|
|
|
+}
|
|
|
+.pl {
|
|
|
+ font-size: 18px;
|
|
|
+}
|
|
|
+.plName {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ align-items: baseline;
|
|
|
+ color: #78787a;
|
|
|
+}
|
|
|
</style>
|