|
@@ -11,7 +11,7 @@ import {
|
|
SwipeItem,
|
|
SwipeItem,
|
|
Tag
|
|
Tag
|
|
} from 'vant'
|
|
} from 'vant'
|
|
-import { defineComponent, nextTick, onMounted, onUnmounted, reactive, ref } from 'vue'
|
|
|
|
|
|
+import { defineComponent, nextTick, onMounted, onUnmounted, reactive, ref, watch } from 'vue'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import styles from './index.module.less'
|
|
import styles from './index.module.less'
|
|
import iconQuestionNums from '../images/icon-question-nums.png'
|
|
import iconQuestionNums from '../images/icon-question-nums.png'
|
|
@@ -29,6 +29,7 @@ import dayjs from 'dayjs'
|
|
import ResultFinish from '../model/result-finish'
|
|
import ResultFinish from '../model/result-finish'
|
|
import { eventUnit, QuestionType } from '../unit'
|
|
import { eventUnit, QuestionType } from '../unit'
|
|
import { useRect } from '@vant/use'
|
|
import { useRect } from '@vant/use'
|
|
|
|
+import { useInterval } from '@vueuse/core'
|
|
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: 'unit-detail',
|
|
name: 'unit-detail',
|
|
@@ -54,6 +55,23 @@ export default defineComponent({
|
|
quitStatus: false
|
|
quitStatus: false
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+ // 计时
|
|
|
|
+ const { counter, resume, pause } = useInterval(1000, { controls: true })
|
|
|
|
+
|
|
|
|
+ watch(
|
|
|
|
+ () => counter.value,
|
|
|
|
+ async () => {
|
|
|
|
+ console.log(counter.value, state.time / 1000, dayjs().format('HH:mm:ss'))
|
|
|
|
+ // 秒
|
|
|
|
+ if (counter.value >= state.time / 1000) {
|
|
|
|
+ pause()
|
|
|
|
+ eventUnit.emit('unitAudioStop')
|
|
|
|
+ await onConfirmExam()
|
|
|
|
+ state.visiableExam = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ )
|
|
|
|
+
|
|
const getExamDetails = async () => {
|
|
const getExamDetails = async () => {
|
|
try {
|
|
try {
|
|
const { data } = await request.post(
|
|
const { data } = await request.post(
|
|
@@ -97,8 +115,10 @@ export default defineComponent({
|
|
state.visiableExam = true
|
|
state.visiableExam = true
|
|
} else {
|
|
} else {
|
|
state.time = Math.ceil(minu / 1000) * 1000
|
|
state.time = Math.ceil(minu / 1000) * 1000
|
|
|
|
+ pause()
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
countDownRef.value?.start()
|
|
countDownRef.value?.start()
|
|
|
|
+ resume()
|
|
}, 10)
|
|
}, 10)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -265,6 +285,7 @@ export default defineComponent({
|
|
}
|
|
}
|
|
|
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
|
+ pause()
|
|
await getExamDetails()
|
|
await getExamDetails()
|
|
|
|
|
|
// 初始化高度
|
|
// 初始化高度
|
|
@@ -302,9 +323,9 @@ export default defineComponent({
|
|
format={'mm:ss'}
|
|
format={'mm:ss'}
|
|
autoStart={false}
|
|
autoStart={false}
|
|
onFinish={async () => {
|
|
onFinish={async () => {
|
|
- eventUnit.emit('unitAudioStop')
|
|
|
|
- await onConfirmExam()
|
|
|
|
- state.visiableExam = true
|
|
|
|
|
|
+ // eventUnit.emit('unitAudioStop')
|
|
|
|
+ // await onConfirmExam()
|
|
|
|
+ // state.visiableExam = true
|
|
}}
|
|
}}
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|