|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div :class="classes">
|
|
|
- <div class="student-video">
|
|
|
+ <div class="student-video" title="点击放大播放" @click="toLargeView">
|
|
|
<flv-media
|
|
|
ref="ThirdViewVideo"
|
|
|
:live-url="data.liveUrl"
|
|
@@ -8,30 +8,50 @@
|
|
|
></flv-media>
|
|
|
</div>
|
|
|
<div class="student-info">
|
|
|
- <h6>
|
|
|
- <span>{{ data.name }}</span
|
|
|
- ><i class="icon icon-net-break"></i>
|
|
|
- </h6>
|
|
|
- <p>
|
|
|
- <span>证件号:</span><span>{{ data.identity }}</span>
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- <span>答题进度:</span><span>{{ data.progress || 0 }}%</span>
|
|
|
- </p>
|
|
|
- <div class="student-time">
|
|
|
- <i class="icon icon-alarm-clock"></i>
|
|
|
- <span>{{ data.remainTime }}</span>
|
|
|
+ <div class="student-info-header">
|
|
|
+ <h6 class="student-info-name">
|
|
|
+ <span>{{ data.name }}</span
|
|
|
+ ><i class="icon icon-net-break"></i>
|
|
|
+ </h6>
|
|
|
+ <div class="student-info-tips">
|
|
|
+ <div class="student-info-audio" @click="toMuted">
|
|
|
+ <i class="icon icon-audio"></i>
|
|
|
+ </div>
|
|
|
+ <div class="student-info-time">
|
|
|
+ <i class="icon icon-alarm-clock"></i>
|
|
|
+ <span>{{ data.remainTime }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="student-info-body">
|
|
|
+ <div class="student-info-content">
|
|
|
+ <p>证件号:{{ data.identity }}</p>
|
|
|
+ <p>答题进度:{{ data.progress || 0 }}%</p>
|
|
|
+ </div>
|
|
|
+ <div class="student-info-detail">
|
|
|
+ <el-button type="primary" size="mini" round @click="toDetail"
|
|
|
+ >详情</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- InvigilationStudentMediaDialog -->
|
|
|
+ <InvigilationStudentMediaDialog
|
|
|
+ ref="InvigilationStudentMediaDialog"
|
|
|
+ :data="data"
|
|
|
+ destroy-on-close
|
|
|
+ />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import FlvMedia from "./FlvMedia";
|
|
|
+import InvigilationStudentMediaDialog from "./InvigilationStudentMediaDialog.vue";
|
|
|
|
|
|
export default {
|
|
|
name: "invigilation-student",
|
|
|
- components: { FlvMedia },
|
|
|
+ components: { FlvMedia, InvigilationStudentMediaDialog },
|
|
|
props: {
|
|
|
data: {
|
|
|
type: Object,
|
|
@@ -41,7 +61,9 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
data() {
|
|
|
- return {};
|
|
|
+ return {
|
|
|
+ muted: false,
|
|
|
+ };
|
|
|
},
|
|
|
computed: {
|
|
|
classes() {
|
|
@@ -54,7 +76,28 @@ export default {
|
|
|
];
|
|
|
},
|
|
|
},
|
|
|
- methods: {},
|
|
|
+ methods: {
|
|
|
+ toDetail() {
|
|
|
+ this.$router.push({
|
|
|
+ name: "WarningDetail",
|
|
|
+ params: { recordId: this.data.examRecordId },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ toLargeView() {
|
|
|
+ this.$refs.ThirdViewVideo.destroyPlayer();
|
|
|
+ this.$emit("muted", true);
|
|
|
+
|
|
|
+ this.$refs.InvigilationStudentMediaDialog.open();
|
|
|
+ },
|
|
|
+ toMuted() {
|
|
|
+ this.muted = !this.muted;
|
|
|
+ this.$emit("muted", this.muted);
|
|
|
+ this.mutedPlayer(this.muted);
|
|
|
+ },
|
|
|
+ mutedPlayer(muted) {
|
|
|
+ this.$refs.ThirdViewVideo.mutedPlayer(muted);
|
|
|
+ },
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -118,8 +161,9 @@ export default {
|
|
|
height: 150px;
|
|
|
border-radius: 6px;
|
|
|
background: #626a82;
|
|
|
- margin-bottom: 20px;
|
|
|
+ margin-bottom: 15px;
|
|
|
position: relative;
|
|
|
+ cursor: pointer;
|
|
|
|
|
|
&::before {
|
|
|
content: "";
|
|
@@ -143,11 +187,38 @@ export default {
|
|
|
.student-info {
|
|
|
position: relative;
|
|
|
padding: 0 10px 10px;
|
|
|
- .student-time {
|
|
|
- position: absolute;
|
|
|
+
|
|
|
+ &-header {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 5px;
|
|
|
+ }
|
|
|
+ &-audio {
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: middle;
|
|
|
+ width: 24px;
|
|
|
+ height: 24px;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 24px;
|
|
|
+ background: #abb8c9;
|
|
|
+ border-radius: 50%;
|
|
|
+ margin-right: 5px;
|
|
|
+ cursor: pointer;
|
|
|
+ &:hover {
|
|
|
+ background: #1886fe;
|
|
|
+ }
|
|
|
+
|
|
|
+ .icon {
|
|
|
+ width: 16px;
|
|
|
+ height: 12px;
|
|
|
+ margin-top: -1px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ &-time {
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: middle;
|
|
|
height: 24px;
|
|
|
- top: 0;
|
|
|
- right: 10px;
|
|
|
padding: 4px 12px;
|
|
|
border-radius: 12px;
|
|
|
background: #abb8c9;
|
|
@@ -165,22 +236,38 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- > h6 {
|
|
|
+ &-name {
|
|
|
font-size: 18px;
|
|
|
- line-height: 25px;
|
|
|
- margin-bottom: 8;
|
|
|
+ margin-bottom: 0;
|
|
|
> .icon {
|
|
|
margin-top: -4px;
|
|
|
margin-left: 8px;
|
|
|
display: none;
|
|
|
}
|
|
|
}
|
|
|
- > p {
|
|
|
- font-size: 14px;
|
|
|
- font-weight: 400;
|
|
|
- color: #626a82;
|
|
|
- line-height: 20px;
|
|
|
- margin: 0;
|
|
|
+ &-body {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+ &-content {
|
|
|
+ flex-grow: 2;
|
|
|
+ overflow: hidden;
|
|
|
+ > p {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #626a82;
|
|
|
+ line-height: 20px;
|
|
|
+ margin: 0;
|
|
|
+ white-space: nowrap;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ &-detail {
|
|
|
+ margin-left: 5px;
|
|
|
+ flex-grow: 0;
|
|
|
+ flex-shrink: 0;
|
|
|
}
|
|
|
}
|
|
|
</style>
|