Ver código fonte

修改提示和返回页面问题

lex 1 ano atrás
pai
commit
caf47c8b98

+ 1 - 1
public/project/preRegister.html

@@ -424,7 +424,7 @@
             this.instrumentPriceImg = orchestraDetail.data.data.instrumentPriceImg || ''
             this.canSignUp = orchestraDetail.data.data.status
             if (orchestraDetail.data.data.status !== 'PRE_REGISTER') {
-              vant.showToast('乐团预报名阶段已结束')
+              vant.showToast('家长会调查问卷已结束')
               return
             }
           }

+ 34 - 2
src/student/pre-register-active/index.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, onMounted, reactive } from 'vue'
+import { defineComponent, onMounted, onUnmounted, reactive } from 'vue'
 import styles from './index.module.less'
 import signinTips from './images/signin-tips.png'
 import { Button, CellGroup, Field, Picker, Popup, closeToast, showToast } from 'vant'
@@ -42,7 +42,9 @@ export default defineComponent({
       username: '',
       currentGrade: '', // 年级
       currentClass: '', // 班级
-      intervalFnRef: null as any
+      intervalFnRef: null as any,
+      applyStatus: false,
+      isPageHide: false
     })
 
     const message = (value: string) => {
@@ -57,6 +59,11 @@ export default defineComponent({
 
     const onSubmit = async () => {
       try {
+        if (forms.applyStatus) {
+          showToast('家长会调查问卷已结束')
+          return
+        }
+
         if (message(forms.username)) {
           showToast(message(forms.username))
           return
@@ -142,6 +149,11 @@ export default defineComponent({
 
         // 判断是否获取微信code码
         if (!forms.code) return
+        if (data.status !== 'PRE_REGISTER') {
+          showToast('家长会调查问卷已结束')
+          forms.applyStatus = true
+          return
+        }
         const recordAdd = await request.post('/api-student/open/studentBrowseRecord/add', {
           data: {
             orchestraId: forms.orchestraId,
@@ -207,6 +219,26 @@ export default defineComponent({
         forms.code = code
       }
     }
+
+    const onPageShow = () => {
+      console.log(forms.isPageHide, 'showInfo')
+      if (forms.isPageHide) {
+        window.location.reload()
+      }
+    }
+    // 处理监听页面返回不刷新的问题
+    window.addEventListener('pageshow', onPageShow)
+
+    const onPageHide = () => {
+      console.log(forms.isPageHide, 'showInfo')
+      forms.isPageHide = true
+    }
+    window.addEventListener('pagehide', onPageHide)
+
+    onUnmounted(() => {
+      window.removeEventListener('pageshow', onPageShow)
+      window.removeEventListener('pagehide', onPageHide)
+    })
     return () => (
       <div class={styles['per-register-active']}>
         <div class={styles.flowPath}>

+ 27 - 4
src/student/pre-register-active/video.tsx

@@ -24,6 +24,7 @@ export default defineComponent({
     const forms = reactive({
       coverImg: '',
       introductionVideo: '',
+      introductionVideoTime: 0, // 视频总时长
       videoBrowsePoint: 0,
       saveId: route.query.saveId,
       orchestraId: route.query.id,
@@ -31,7 +32,8 @@ export default defineComponent({
       loading: false,
       player: null as any,
       playerSpeed: 1,
-      intervalFnRef: null as any
+      intervalFnRef: null as any,
+      isPageHide: false // 处理页面返回没有刷新的问题
     })
 
     // 播放视频总时长
@@ -244,6 +246,7 @@ export default defineComponent({
     }
 
     watch(pageVisibility, (value: any) => {
+      console.log('watch', value)
       if (value == 'hidden') {
         forms.player.pause()
       }
@@ -255,9 +258,8 @@ export default defineComponent({
         const videoBrowseData = moreTime.value.length > 0 ? formatEffectiveTime(moreTime.value) : []
         const time = moreTime.value.length > 0 ? formatTimer(moreTime.value) : 0
         // const videoCountTime = videoIntervalRef?.counter.value
-        const videoDuration = forms.player.duration
         // 判断如何视屏播放时间大于视屏播放有效时间则说明数据有问题,进行重置数据
-        const rate = Math.floor((time / Math.floor(videoDuration)) * 100)
+        const rate = Math.floor((time / Math.floor(forms.introductionVideoTime)) * 100)
         // console.log('videoIntervalRef?.counter.value', videoIntervalRef?.counter.value)
         await request.post('/api-student/open/studentBrowseRecord/updateStat', {
           data: {
@@ -314,7 +316,7 @@ export default defineComponent({
 
     onMounted(async () => {
       try {
-        const { data } = await request.get('/api-student//open/studentBrowseRecord/query', {
+        const { data } = await request.get('/api-student/open/studentBrowseRecord/query', {
           params: {
             openId: forms.openId,
             orchestraId: forms.orchestraId
@@ -325,6 +327,7 @@ export default defineComponent({
           forms.player.currentTime = data.videoBrowsePoint || 0
         }
         forms.introductionVideo = data.introductionVideo
+        forms.introductionVideoTime = data.introductionVideoTime
         forms.coverImg = data.coverImg
         moreTime.value = data.videoBrowseData ? JSON.parse(data.videoBrowseData) : []
 
@@ -358,6 +361,26 @@ export default defineComponent({
         }
       })
     }
+
+    const onPageShow = () => {
+      console.log(forms.isPageHide, 'showInfo')
+      if (forms.isPageHide) {
+        window.location.reload()
+      }
+    }
+    // 处理监听页面返回不刷新的问题
+    window.addEventListener('pageshow', onPageShow)
+
+    const onPageHide = () => {
+      console.log(forms.isPageHide, 'showInfo')
+      forms.isPageHide = true
+    }
+    window.addEventListener('pagehide', onPageHide)
+
+    onUnmounted(() => {
+      window.removeEventListener('pageshow', onPageShow)
+      window.removeEventListener('pagehide', onPageHide)
+    })
     return () => (
       <div class={styles['pre-register-video']}>
         <div class={styles.videoContainer}>