Merge branch '20250821-hz' into 20250709-wzy

This commit is contained in:
2025-08-29 14:29:51 +08:00
580 changed files with 1191 additions and 1102 deletions

View File

@@ -1,10 +1,12 @@
<template> <template>
<view> <view>
<view v-if="!xvideoBool || xvideoBool&&drag" id="xvideoPlayer-box" :class="fullScreenFlag?'video-box video-full-screen':'video-box'"> <view v-if="!xvideoBool || xvideoBool&&drag" id="xvideoPlayer-box"
:class="fullScreenFlag?'video-box video-full-screen':'video-box'">
<!-- <div style="color:#ffffff">{{currtimeText}}</div> --> <!-- <div style="color:#ffffff">{{currtimeText}}</div> -->
<!--webkit-playsinline playsinline x5-video-player-type="h5-page--> <!--webkit-playsinline playsinline x5-video-player-type="h5-page-->
<!-- :src="url" <video id="xvideoPlayer" :class="fullScreenFlag?'video-scree-rotate':''" :style="{width: fullScreenFlag?videoPageHeight+'px':'100%',height: fullScreenFlag?videoPageWidth+'px': '','margin-left':fullScreenFlag?-1*(videoPageWidth/videoPageHeight*256)+'px':'','top':fullScreenFlag?videoPageHeight/2+'px':''}" --> <!-- :src="url" <video id="xvideoPlayer" :class="fullScreenFlag?'video-scree-rotate':''" :style="{width: fullScreenFlag?videoPageHeight+'px':'100%',height: fullScreenFlag?videoPageWidth+'px': '','margin-left':fullScreenFlag?-1*(videoPageWidth/videoPageHeight*256)+'px':'','top':fullScreenFlag?videoPageHeight/2+'px':''}" -->
<video id="xvideoPlayer" :class="fullScreenFlag?'video-scree-rotate':''" :style="{width: fullScreenFlag?videoPageHeight+'px':'100%',height: fullScreenFlag?videoPageWidth+'px': '','margin-left':fullScreenFlag?-1*(videoPageHeight-videoPageWidth)/2+'px':''}" <video id="xvideoPlayer" :class="fullScreenFlag?'video-scree-rotate':''"
:style="{width: fullScreenFlag?videoPageHeight+'px':'100%',height: fullScreenFlag?videoPageWidth+'px': '','margin-left':fullScreenFlag?-1*(videoPageHeight-videoPageWidth)/2+'px':''}"
:src="url" :src="url"
:controls="false" :controls="false"
:enable-play-gesture="false" :enable-play-gesture="false"
@@ -24,7 +26,8 @@
</video> </video>
<view id="xplayer-control"> <view id="xplayer-control">
<!-- <view class="process-container" v-if="contrlShow" :class="fullScreenFlag?'video-scree-rotate':''" :style="{width: fullScreenFlag?videoPageHeight+'px':'100%','margin-left':fullScreenFlag?'-320px':'','top':fullScreenFlag?'300px':videoFullHeight + 'px'}"> --> <!-- <view class="process-container" v-if="contrlShow" :class="fullScreenFlag?'video-scree-rotate':''" :style="{width: fullScreenFlag?videoPageHeight+'px':'100%','margin-left':fullScreenFlag?'-320px':'','top':fullScreenFlag?'300px':videoFullHeight + 'px'}"> -->
<view class="process-container" v-if="contrlShow" :class="fullScreenFlag?'video-scree-rotate':''" :style="{width: fullScreenFlag?videoPageHeight*0.98+'px':'96%','margin-top':-1*videoPageHeight*0.02+'px','margin-left':fullScreenFlag?-1*(videoPageHeight-videoPageWidth)/2-174 - (videoPageWidth-375)/2+'px':'','bottom':fullScreenFlag?'auto':'0px'}"> <view class="process-container" v-if="contrlShow" :class="fullScreenFlag?'video-scree-rotate':''"
:style="{width: fullScreenFlag?videoPageHeight*0.98+'px':'96%','margin-top':-1*videoPageHeight*0.02+'px','margin-left':fullScreenFlag?-1*(videoPageHeight-videoPageWidth)/2-174 - (videoPageWidth-375)/2+'px':'','bottom':fullScreenFlag?'auto':'0px'}">
<view class="controller-play"> <view class="controller-play">
<image :src="require(playing? './images/pause.png':'./images/play.png')" @click.stop='videoOpreation'/> <image :src="require(playing? './images/pause.png':'./images/play.png')" @click.stop='videoOpreation'/>
</view> </view>
@@ -76,7 +79,9 @@
</view> </view>
<view v-if="xvideoBool && !drag" class="video-box-error"> <view v-if="xvideoBool && !drag" class="video-box-error">
<view style="color: #ffffff;padding: 0px 50px 0px;font-size: 16px;">{{ mobileVideoDragText }}</view> <view style="color: #ffffff;padding: 0px 50px 0px;font-size: 16px;">{{ mobileVideoDragText }}</view>
<button style="display: inline-block;font-size: 14px;padding: 0px 10px;line-height: 28px;" v-if="mobileVideoDragSwitch == 'true'" @click="xvideoBoolFun">仍要使用此浏览器观看</button> <button style="display: inline-block;font-size: 14px;padding: 0px 10px;line-height: 28px;"
v-if="mobileVideoDragSwitch == 'true'" @click="xvideoBoolFun">仍要使用此浏览器观看
</button>
</view> </view>
</view> </view>
</template> </template>
@@ -85,6 +90,7 @@
import {mapGetters} from 'vuex' import {mapGetters} from 'vuex'
import studyUtil from '@/utils/study.js'; import studyUtil from '@/utils/study.js';
import apiManage from '@/api/manage/manage.js'; import apiManage from '@/api/manage/manage.js';
// getDictCode // getDictCode
function agentFullScreen() { function agentFullScreen() {
let bool = false let bool = false
@@ -94,6 +100,7 @@
} }
return bool return bool
} }
//alert(navigator.userAgent +'----'+ agentFullScreen()) //alert(navigator.userAgent +'----'+ agentFullScreen())
export default { export default {
components: {progressBar}, components: {progressBar},
@@ -272,6 +279,13 @@
}, },
// 全屏+退出全屏 // 全屏+退出全屏
fullScreen() { fullScreen() {
const u = navigator.userAgent, app = navigator.appVersion;
const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isIOS) {
document.querySelector("#xvideoPlayer").webkitEnterFullscreen()
// return
// this.$refs["videoPlayer"].webkitEnterFullscreen()
}
var _this = this var _this = this
if (this.fullScreenFlag) { if (this.fullScreenFlag) {
//this.videoContext.exitFullScreen(); //this.videoContext.exitFullScreen();
@@ -288,10 +302,11 @@
} else { } else {
//this.videoContext.requestFullScreen(); //this.videoContext.requestFullScreen();
this.fullScreenFlag = true; this.fullScreenFlag = true;
if (document.documentElement.requestFullscreen) { if (document.documentElement.requestFullscreen) {
// document.documentElement.requestFullscreen(); // document.documentElement.requestFullscreen();
} else { } else {
window.screenTop(0) // window.screenTop(0)
} }
uni.getSystemInfo({ uni.getSystemInfo({
success: function (info) { success: function (info) {
@@ -300,7 +315,8 @@
} }
}); });
} }
this.$listeners['fullscreenchange'](this.fullScreenFlag) console.log("full screen")
!isIOS && this.$listeners['fullscreenchange'](this.fullScreenFlag)
}, },
// // 全屏模式下,横屏+竖屏 // // 全屏模式下,横屏+竖屏
// horizontalScreen(){ // horizontalScreen(){
@@ -372,7 +388,6 @@
// } // }
if (this.updateState) { //判断拖拽完成后才触发更新,避免拖拽失效 if (this.updateState) { //判断拖拽完成后才触发更新,避免拖拽失效
this.sliderValue = sliderValue; this.sliderValue = sliderValue;
} else { } else {
@@ -579,6 +594,7 @@
height: 100%; height: 100%;
position: relative; position: relative;
} }
.video-box-error { .video-box-error {
width: 100%; width: 100%;
height: 110px; height: 110px;
@@ -589,6 +605,7 @@
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
} }
.video-full-screen { .video-full-screen {
position: fixed; position: fixed;
width: 100vw; width: 100vw;
@@ -598,18 +615,22 @@
display: flex; display: flex;
align-items: center; align-items: center;
} }
.video-scree-rotate { .video-scree-rotate {
transform: rotate(90deg); transform: rotate(90deg);
// width: 100vw; // width: 100vw;
// height: 100vh; // height: 100vh;
position: fixed; position: fixed;
} }
.screen { .screen {
position: relative; position: relative;
} }
.screen-full { .screen-full {
position: static; position: static;
} }
.process-container { .process-container {
width: 100%; width: 100%;
padding: 1% 2% 1% 2%; padding: 1% 2% 1% 2%;
@@ -625,11 +646,13 @@
align-items: center; align-items: center;
background: rgba(59, 57, 57, 0.2); background: rgba(59, 57, 57, 0.2);
} }
.process-container image { .process-container image {
max-width: 30rpx; max-width: 30rpx;
max-height: 30rpx; max-height: 30rpx;
text-align: center; text-align: center;
} }
.slider-container { .slider-container {
z-index: 13; z-index: 13;
height: 60rpx; height: 60rpx;
@@ -637,15 +660,19 @@
flex: 6; flex: 6;
max-width: 50%; max-width: 50%;
} }
.slider-container.new-bar { .slider-container.new-bar {
margin: 7px 10px 10px 10px; margin: 7px 10px 10px 10px;
} }
.controller-play { .controller-play {
width: 8%; width: 8%;
} }
.controller-screen { .controller-screen {
// width: 10%; // width: 10%;
} }
.currtime { .currtime {
color: #ffffff; color: #ffffff;
font-size: 22rpx; font-size: 22rpx;
@@ -654,6 +681,7 @@
line-height: 60rpx; line-height: 60rpx;
text-align: center; text-align: center;
} }
.druationTime { .druationTime {
color: #ffffff; color: #ffffff;
font-size: 22rpx; font-size: 22rpx;
@@ -662,6 +690,7 @@
line-height: 60rpx; line-height: 60rpx;
text-align: center; text-align: center;
} }
.player-speed { .player-speed {
position: relative; position: relative;
color: #e5e5e5; color: #e5e5e5;
@@ -669,15 +698,18 @@
transition: color 0.3s; transition: color 0.3s;
height: 22px; height: 22px;
} }
.btn-speed:hover .speed-control { .btn-speed:hover .speed-control {
// visibility: visible; // visibility: visible;
} }
.speed-control { .speed-control {
position: absolute; position: absolute;
//top: 180px; //top: 180px;
transition: visibility 0.3s; transition: visibility 0.3s;
transform: translate(-50%, -100%); transform: translate(-50%, -100%);
} }
.speed-control .speed-control-list { .speed-control .speed-control-list {
list-style: none; list-style: none;
color: #e5e5e5; color: #e5e5e5;
@@ -690,16 +722,19 @@
border-radius: 4px; border-radius: 4px;
background: rgba(21, 21, 21, 0.8); background: rgba(21, 21, 21, 0.8);
} }
.speed-control .speed-control-list .li { .speed-control .speed-control-list .li {
position: relative; position: relative;
display: block; display: block;
height: 25px; height: 25px;
line-height: 25px; line-height: 25px;
} }
.speed-control .speed-control-list .li:hover { .speed-control .speed-control-list .li:hover {
color: #fff; color: #fff;
background: rgba(99, 99, 99, 0.8); background: rgba(99, 99, 99, 0.8);
} }
.speed-control .speed-control-list .li.current { .speed-control .speed-control-list .li.current {
color: var(--primaryColor); color: var(--primaryColor);
} }

View File

@@ -5,7 +5,7 @@
<page-title :showBack="true">查看我的答卷</page-title> <page-title :showBack="true">查看我的答卷</page-title>
<view style="background-color: #FFFFFF;"> <view style="background-color: #FFFFFF;">
<u-cell-group> <u-cell-group>
<u-cell title="答卷时间" :value="lastTime"></u-cell> <u-cell title="答卷时间" :value="answerSurveyTime"></u-cell>
<u-cell title="答卷用时" :value="testDuration+'秒'"></u-cell> <u-cell title="答卷用时" :value="testDuration+'秒'"></u-cell>
<u-cell title="本次得分" :value="score"></u-cell> <u-cell title="本次得分" :value="score"></u-cell>
</u-cell-group> </u-cell-group>
@@ -18,7 +18,8 @@
<view>[{{ getTypeName(curItem.type) }}]{{ curItem.content }}</view> <view>[{{ getTypeName(curItem.type) }}]{{ curItem.content }}</view>
<view class="qimg" v-if="curItem.images"><img class="qimg-fit" :src="imageBaseUrl+curItem.images"/></view> <view class="qimg" v-if="curItem.images"><img class="qimg-fit" :src="imageBaseUrl+curItem.images"/></view>
</view> </view>
<view v-for="(opt,optIdx) in curItem.options" :key="optIdx" class="qitem-opt" :class="{'qitem-opt-user':userOptIdxs.indexOf(optIdx)>-1}"> <view v-for="(opt,optIdx) in curItem.options" :key="optIdx" class="qitem-opt"
:class="{'qitem-opt-user':userOptIdxs.indexOf(optIdx)>-1}">
<view> <view>
<view>{{ toLetter(optIdx + 1) }}, {{ opt.content }}</view> <view>{{ toLetter(optIdx + 1) }}, {{ opt.content }}</view>
<view v-if="opt.images" class="qimg"> <view v-if="opt.images" class="qimg">
@@ -26,8 +27,10 @@
</view> </view>
</view> </view>
<view> <view>
<text v-if="userOptIdxs.indexOf(optIdx)>-1 && correctOptIdxs.indexOf(optIdx)>-1" style="color: #00aa00; "></text> <text v-if="userOptIdxs.indexOf(optIdx)>-1 && correctOptIdxs.indexOf(optIdx)>-1" style="color: #00aa00; ">
<text v-if="userOptIdxs.indexOf(optIdx)>-1 && correctOptIdxs.indexOf(optIdx)==-1" style="color: #ff0000; ">×</text> </text>
<text v-if="userOptIdxs.indexOf(optIdx)>-1 && correctOptIdxs.indexOf(optIdx)==-1" style="color: #ff0000; ">×
</text>
</view> </view>
</view> </view>
</view> </view>
@@ -56,7 +59,8 @@
<view class="analysis-con">联言判断就是断定集中事物情况同时存在的判断,因此该判断属于联言判断,答案为A</view> --> <view class="analysis-con">联言判断就是断定集中事物情况同时存在的判断,因此该判断属于联言判断,答案为A</view> -->
<view class="bottom-btns"> <view class="bottom-btns">
<u-button type="info" text="上一题" @click="prevSub" class="next" :disabled="this.curIndex<1"></u-button> <u-button type="info" text="上一题" @click="prevSub" class="next" :disabled="this.curIndex<1"></u-button>
<u-button type="info" text="下一题" @click="nextSub" class="next" :disabled="this.curIndex>=(this.total-1)"></u-button> <u-button type="info" text="下一题" @click="nextSub" class="next"
:disabled="this.curIndex>=(this.total-1)"></u-button>
</view> </view>
</view> </view>
</template> </template>
@@ -65,6 +69,7 @@
import config from '@/config/index.js' import config from '@/config/index.js'
import apiCourseStudy from '@/api/modules/courseStudy.js' import apiCourseStudy from '@/api/modules/courseStudy.js'
import {formatDate, getQuestionType, correctJudgment, numberToLetter} from '@/utils/tools.js'; import {formatDate, getQuestionType, correctJudgment, numberToLetter} from '@/utils/tools.js';
export default { export default {
data() { data() {
return { return {
@@ -90,6 +95,14 @@
userOptIdxs: [],//用户的答案 userOptIdxs: [],//用户的答案
} }
}, },
computed: {
answerSurveyTime() {
console.log(`answer time: ` , this.lastTime)
if (!this.lastTime.length) return "Error Date"
const [y, m, d, h, min, s] = this.lastTime
return `${y}${m}${d}${h}:${min}:${s}`
}
},
onLoad(options) { onLoad(options) {
//如果id不存在应该返回错误页面 //如果id不存在应该返回错误页面
this.recordId = options.id;//当前考试记录的id this.recordId = options.id;//当前考试记录的id
@@ -179,11 +192,14 @@
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
} }
.qitem { .qitem {
padding: 20upx 40upx; padding: 20upx 40upx;
.qitem-content { .qitem-content {
padding: 20upx 0upx; padding: 20upx 0upx;
} }
.qitem-opt { .qitem-opt {
margin-bottom: 20upx; margin-bottom: 20upx;
min-height: 50upx; min-height: 50upx;
@@ -193,25 +209,31 @@
justify-content: space-between; justify-content: space-between;
padding: 30upx 20upx; padding: 30upx 20upx;
} }
.qitem-opt-user { .qitem-opt-user {
background-color: #fff3e5; background-color: #fff3e5;
} }
.qitem-opt-correct { .qitem-opt-correct {
background-color: #5BA2FC; background-color: #5BA2FC;
color: #FFFFFF; color: #FFFFFF;
} }
.qitem-opt-wrong { .qitem-opt-wrong {
background-color: #EF826B; background-color: #EF826B;
color: #FFFFFF; color: #FFFFFF;
} }
} }
.ed-top { .ed-top {
display: flex; display: flex;
.preface { .preface {
color: #D5D5D5; color: #D5D5D5;
margin-left: 16px; margin-left: 16px;
margin-top: 19px; margin-top: 19px;
} }
.mold { .mold {
font-size: 12px; font-size: 12px;
color: #C1C1C1; color: #C1C1C1;
@@ -219,12 +241,14 @@
margin-left: 5px; margin-left: 5px;
} }
} }
.ed-center { .ed-center {
.topic { .topic {
color: #2E2E2E; color: #2E2E2E;
margin-left: 16px; margin-left: 16px;
margin-top: 10px; margin-top: 10px;
} }
.topic-center { .topic-center {
&-1 { &-1 {
width: 344px; width: 344px;
@@ -235,22 +259,26 @@
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.topic_left { .topic_left {
line-height: 64px; line-height: 64px;
margin-left: 16px; margin-left: 16px;
color: #FFFFFF; color: #FFFFFF;
display: flex; display: flex;
.liany { .liany {
font-size: 12px; font-size: 12px;
margin-left: 5px; margin-left: 5px;
} }
} }
.topic_right { .topic_right {
color: #FFFFFF; color: #FFFFFF;
line-height: 64px; line-height: 64px;
margin-right: 13px; margin-right: 13px;
} }
} }
&-2 { &-2 {
width: 344px; width: 344px;
height: 64px; height: 64px;
@@ -260,22 +288,26 @@
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.topic_left { .topic_left {
line-height: 64px; line-height: 64px;
margin-left: 16px; margin-left: 16px;
color: #FFFFFF; color: #FFFFFF;
display: flex; display: flex;
.liany { .liany {
font-size: 12px; font-size: 12px;
margin-left: 5px; margin-left: 5px;
} }
} }
.topic_right { .topic_right {
color: #FFFFFF; color: #FFFFFF;
line-height: 64px; line-height: 64px;
margin-right: 13px; margin-right: 13px;
} }
} }
&-3 { &-3 {
width: 344px; width: 344px;
height: 64px; height: 64px;
@@ -285,22 +317,26 @@
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.topic_left { .topic_left {
line-height: 64px; line-height: 64px;
margin-left: 16px; margin-left: 16px;
color: #000000; color: #000000;
display: flex; display: flex;
.liany { .liany {
font-size: 12px; font-size: 12px;
margin-left: 5px; margin-left: 5px;
} }
} }
.topic_right { .topic_right {
color: #000000; color: #000000;
line-height: 64px; line-height: 64px;
margin-right: 13px; margin-right: 13px;
} }
} }
&-4 { &-4 {
width: 344px; width: 344px;
height: 64px; height: 64px;
@@ -310,16 +346,19 @@
margin-top: 10px; margin-top: 10px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.topic_left { .topic_left {
line-height: 64px; line-height: 64px;
margin-left: 16px; margin-left: 16px;
color: #000000; color: #000000;
display: flex; display: flex;
.liany { .liany {
font-size: 12px; font-size: 12px;
margin-left: 5px; margin-left: 5px;
} }
} }
.topic_right { .topic_right {
color: #000000; color: #000000;
line-height: 64px; line-height: 64px;
@@ -329,49 +368,59 @@
} }
} }
.tit { .tit {
color: #333333; color: #333333;
margin-left: 14px; margin-left: 14px;
margin-top: 38px; margin-top: 38px;
} }
.answer { .answer {
width: 346px; width: 346px;
height: 112px; height: 112px;
background: #FFFFFF; background: #FFFFFF;
margin-left: 14px; margin-left: 14px;
margin-top: 18px; margin-top: 18px;
.result { .result {
font-size: 12px; font-size: 12px;
color: #EF826B; color: #EF826B;
padding-left: 20px; padding-left: 20px;
padding-top: 10px; padding-top: 10px;
} }
.wrought { .wrought {
display: flex; display: flex;
.correct-response { .correct-response {
width: 87px; width: 87px;
height: 70px; height: 70px;
.response-tit { .response-tit {
font-size: 14px; font-size: 14px;
color: #B3B3B3; color: #B3B3B3;
text-align: center; text-align: center;
padding-top: 10px; padding-top: 10px;
} }
.response-sels { .response-sels {
color: #5B5B5B; color: #5B5B5B;
text-align: center; text-align: center;
padding-top: 8px; padding-top: 8px;
} }
} }
.wrong-response { .wrong-response {
width: 87px; width: 87px;
height: 70px; height: 70px;
.wrong-tit { .wrong-tit {
font-size: 14px; font-size: 14px;
color: #B3B3B3; color: #B3B3B3;
text-align: center; text-align: center;
padding-top: 10px; padding-top: 10px;
} }
.wrong-sels { .wrong-sels {
color: #5B5B5B; color: #5B5B5B;
text-align: center; text-align: center;
@@ -380,18 +429,21 @@
} }
} }
} }
.analysis { .analysis {
font-size: 14px; font-size: 14px;
color: #D3D3D3; color: #D3D3D3;
margin-left: 14px; margin-left: 14px;
margin-top: 20px; margin-top: 20px;
} }
.analysis-con { .analysis-con {
font-size: 12px; font-size: 12px;
color: #000000; color: #000000;
margin-left: 14px; margin-left: 14px;
margin-top: 10px; margin-top: 10px;
} }
.question { .question {
height: 52px; height: 52px;
background: #EF826B; background: #EF826B;
@@ -400,10 +452,12 @@
text-align: center; text-align: center;
line-height: 52px; line-height: 52px;
} }
.qimg { .qimg {
//padding-left: 30px; //padding-left: 30px;
width: 100%; width: 100%;
text-align: left; text-align: left;
.qimg-fit { .qimg-fit {
width: 100%; width: 100%;

Some files were not shown because too many files have changed in this diff Show More