Browse Source

feat: 评测增加佩戴耳机提醒弹窗

TIANYONG 1 year ago
parent
commit
ae9ba0e0ed

+ 1 - 1
src/helpers/utils.ts

@@ -37,7 +37,7 @@ export const browser = () => {
     isTeacher: u.indexOf('ORCHESTRATEACHER') > -1,
     isStudent: u.indexOf('ORCHESTRASTUDENT') > -1,
     isSchool: u.indexOf('ORCHESTRASCHOOL') > -1,
-    iPad: u.indexOf('iPad') > -1, //是否iPad
+    iPad: (navigator.userAgent.match(/(iPad)/) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)), //是否iPad
     webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
     weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
     huawei: !!u.match(/huawei/i) || !!u.match(/honor/i),

+ 2 - 2
src/pages/detail/CheckDelayPopup/index.module.less

@@ -14,8 +14,8 @@
         left: -20%;
     }
     .delayPadBg {
-        width: 160%;
-        left: -30%;
+        width: 170%;
+        left: -35%;
     }
     .delayAdorn {
         position: absolute;

+ 9 - 3
src/subpages/colexiu/buttons/evaluating.tsx

@@ -14,7 +14,7 @@ import {
 import { browser } from '/src/helpers/utils'
 import runtime, * as RuntimeUtils from '/src/pages/detail/runtime'
 import { getBoundingBoxByverticalNote, getNoteByMeasuresSlursStart, getParentNote } from '/src/pages/detail/helpers'
-import { handleCheckEvaluatStatus, useClientType, useOriginSearch } from '../uses'
+import { handleCheckEvaluatStatus, useClientType, useOriginSearch, setWiredStatus } from '../uses'
 import { startButtonShow } from './index'
 import { getLeveByScoreMeasure } from '/src/pages/detail/evaluating/helper'
 import Evaluating, { evaluatingShow } from '../popups/evaluating'
@@ -77,7 +77,7 @@ const browserInfo = browser()
 const scoreList: any[] = []
 let calculateInfo: any = {}
 /** 延迟数据 */
-const delayData =  reactive({
+export const delayData =  reactive({
   /** 是否强制检测 */
   isForce: true,
   /** 弹窗 */
@@ -253,6 +253,12 @@ let startTuneTimer: any = null
       setTimeout(() => {
         delayData.checkStatus = 'init'
         delayData.step = 1
+        postMessage(
+          {
+            api: 'isWiredHeadsetOn',
+          },
+          setWiredStatus
+        )
       }, 500);
 			handleToggleTune('stop')
 			// this.close();
@@ -904,7 +910,7 @@ export default defineComponent({
       } else {
         RuntimeUtils.changeMode('background', 'all')
       }
-      handleCheckEvaluatStatus()
+      // handleCheckEvaluatStatus()
       // 如果为单元测验和课后训练,不清楚选段数据
       if (!unitTestData.isSelectMeasureMode) {
         detailState.section = []

+ 11 - 10
src/subpages/colexiu/uses/use-evaluat.ts

@@ -8,6 +8,7 @@ import detailState from '/src/pages/detail/state'
 import { storeKeys } from '/src/constant/store-keys'
 import { soundEffectShow } from '../popups/sound-effect'
 import { evaluatingShow } from '../popups/evaluating'
+import { delayData } from '/src/subpages/colexiu/buttons/evaluating'
 import { Toast } from 'vant'
 
 /** 打开校音或者距离上一次校音超过一天 */
@@ -34,8 +35,8 @@ const soundNeedShow = () => {
  * 检查耳机连接状态,并且打开耳机连接状态的提示,以及校音
  * @param res IPostMessage
  */
-const setWiredStatus = (res?: IPostMessage) => {
-  if (runtime.evaluatingStatus) {
+export const setWiredStatus = (res?: IPostMessage) => {
+  if (runtime.evaluatingStatus && !delayData.open) {
     permissionPopup.active = 'earphone'
     permissionPopup.show = !res?.content.checkIsWired
     soundNeedShow()
@@ -53,8 +54,8 @@ export const handleCheckEvaluatStatus = () => {
   // postMessage({ api: 'isWiredHeadsetOn' }, setWiredStatus)
   postMessage({ api: 'isWiredHeadsetOn' }, (evt) => {
     // console.log('🚀 ~ 耳机状态', evt)
-    // permissionPopup.active = 'earphone'
-    // permissionPopup.show = !evt?.content.checkIsWired
+    permissionPopup.active = 'earphone'
+    permissionPopup.show = !evt?.content.checkIsWired
   })
 }
 
@@ -110,13 +111,13 @@ export const useWiredHeadsetCheck = () => {
     }
   )
 
-  // onMounted(() => {
-  //   listenerMessage('listenerWiredStatus', setWiredStatus)
-  // })
+  onMounted(() => {
+    listenerMessage('listenerWiredStatus', setWiredStatus)
+  })
 
-  // onBeforeUnmount(() => {
-  //   removeListenerMessage('listenerWiredStatus', setWiredStatus)
-  // })
+  onBeforeUnmount(() => {
+    removeListenerMessage('listenerWiredStatus', setWiredStatus)
+  })
 
   return [wiredStatus]
 }