|
@@ -22,14 +22,43 @@ import {
|
|
|
listenerMessage,
|
|
|
removeListenerMessage,
|
|
|
IPostMessage,
|
|
|
+ CallBack
|
|
|
} from '/src/helpers/native-message'
|
|
|
import SettingState from '/src/pages/detail/setting-state'
|
|
|
import { getLeveByScore, getLeveByScoreMeasure } from './helper'
|
|
|
import styles from './index.module.less'
|
|
|
import { browser, getRequestHostname } from '/src/helpers/utils'
|
|
|
+import CheckDelayPopup from "../CheckDelayPopup";
|
|
|
+import Headphone, { HeadphoneData } from "../Headphone";
|
|
|
+import PhoneTip from "../PhoneTip";
|
|
|
|
|
|
const browserInfo = browser()
|
|
|
|
|
|
+/** 初始化评测音频 */
|
|
|
+export const evaluatCreateMusicPlayer = () => {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ // 初始化曲谱音频 和效音音频
|
|
|
+ postMessage(
|
|
|
+ {
|
|
|
+ api: "createMusicPlayer",
|
|
|
+ content: {
|
|
|
+ musicSrc: runtime.songs.background || runtime.songs.music, // 曲谱音频url
|
|
|
+ tuneSrc: "https://oss.dayaedu.com/cloud-coach/1686725501654check_music1_(1).mp3", //效音音频url
|
|
|
+ },
|
|
|
+ },
|
|
|
+ () => {
|
|
|
+ if (browserInfo.ios) {
|
|
|
+ resolve(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ // 安卓不需要
|
|
|
+ if(!browserInfo.ios){
|
|
|
+ resolve(true)
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
let player: any = null
|
|
|
|
|
|
let backtime = 0
|
|
@@ -72,6 +101,24 @@ export const resetPlayer = () => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/** 监听评测弹窗是否隐藏保存演奏按钮 */
|
|
|
+const hideComplexButton = (callback: CallBack, listen?: boolean) => {
|
|
|
+ if (listen) {
|
|
|
+ listenerMessage("hideComplexButton", callback);
|
|
|
+ } else {
|
|
|
+ removeListenerMessage("hideComplexButton", callback);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 隐藏存演奏按钮
|
|
|
+const handleComplexButton = (res?: IPostMessage) => {
|
|
|
+ console.log('监听是否隐藏上传云端按钮', res)
|
|
|
+ if (res?.content) {
|
|
|
+ const { header, body } = res.content;
|
|
|
+ detailState.isHideEvaluatReportSaveBtn = true
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
export default defineComponent({
|
|
|
name: 'evaluating',
|
|
|
data() {
|
|
@@ -97,6 +144,22 @@ export default defineComponent({
|
|
|
shareLoadedPngData: null as null | string,
|
|
|
isSaveVideo: SettingState.sett.camera && SettingState.eva.save,
|
|
|
tuningStatus: false,
|
|
|
+ /** 延迟数据 */
|
|
|
+ delayData: {
|
|
|
+ /** 是否强制检测 */
|
|
|
+ isForce: true,
|
|
|
+ /** 弹窗 */
|
|
|
+ open: false,
|
|
|
+ /** 延迟次数 */
|
|
|
+ count: 0,
|
|
|
+ /** 延迟时间 */
|
|
|
+ time: 0,
|
|
|
+ /** 耳机状态 */
|
|
|
+ erji: false,
|
|
|
+ /** 检测状态 */
|
|
|
+ checkStatus: 'init' as 'init' | 'ing' | 'error',
|
|
|
+ step: 1,
|
|
|
+ },
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -435,7 +498,7 @@ export default defineComponent({
|
|
|
) {
|
|
|
skip = true
|
|
|
}
|
|
|
- console.log(note.measureOpenIndex, item.measureOpenIndex, note)
|
|
|
+ // console.log(note.measureOpenIndex, item.measureOpenIndex, note)
|
|
|
// console.log("skip", skip)
|
|
|
const data = {
|
|
|
timeStamp: (start * 1000) / rate,
|
|
@@ -461,159 +524,233 @@ export default defineComponent({
|
|
|
this.cancel(data?.content.reson)
|
|
|
}
|
|
|
},
|
|
|
- sendResult(evt?: IPostMessage) {
|
|
|
- console.log('sendResult', evt)
|
|
|
- if (evt?.content) {
|
|
|
- const data = evt?.content?.body
|
|
|
- if (evt?.content.header.commond === 'overall') {
|
|
|
- Toast.clear()
|
|
|
- this.res = data
|
|
|
- this.endloading = false
|
|
|
- RuntimeUtils.event.emit('onEvaluationResult', data)
|
|
|
- } else if (evt?.content.header.commond === 'checkDone') {
|
|
|
- this.checkStatus = true
|
|
|
- // postMessage({
|
|
|
- // api: 'endSoundCheck'
|
|
|
- // })
|
|
|
- } else if (evt?.content.header.commond === 'checking') {
|
|
|
- // this.trend = evt?.content?.body?.trend
|
|
|
- this.frequency = evt?.content?.body?.frequency
|
|
|
- } else {
|
|
|
- const getBeforeNote = (index: number) => {
|
|
|
- while (index >= 0) {
|
|
|
- const item = state.times[index]
|
|
|
- if (item.stave) {
|
|
|
- return item
|
|
|
- }
|
|
|
- index--
|
|
|
- }
|
|
|
- }
|
|
|
- const setEvaluatings = (
|
|
|
- note: any,
|
|
|
- data: any,
|
|
|
- dontTransition = false
|
|
|
- ) => {
|
|
|
- const startNote = getBoundingBoxByverticalNote(note)
|
|
|
- state.evaluatings = {
|
|
|
- ...state.evaluatings,
|
|
|
- [startNote.measureIndex]: {
|
|
|
- ...startNote,
|
|
|
- ...getLeveByScoreMeasure(data.score),
|
|
|
- score: data.score,
|
|
|
- dontTransition,
|
|
|
- },
|
|
|
- }
|
|
|
- }
|
|
|
+ // sendResult(evt?: IPostMessage) {
|
|
|
+ // console.log('sendResult', evt)
|
|
|
+ // if (evt?.content) {
|
|
|
+ // const data = evt?.content?.body
|
|
|
+ // if (evt?.content.header.commond === 'overall') {
|
|
|
+ // Toast.clear()
|
|
|
+ // this.res = data
|
|
|
+ // this.endloading = false
|
|
|
+ // RuntimeUtils.event.emit('onEvaluationResult', data)
|
|
|
+ // } else if (evt?.content.header.commond === 'checkDone') {
|
|
|
+ // this.checkStatus = true
|
|
|
+ // // postMessage({
|
|
|
+ // // api: 'endSoundCheck'
|
|
|
+ // // })
|
|
|
+ // } else if (evt?.content.header.commond === 'checking') {
|
|
|
+ // // this.trend = evt?.content?.body?.trend
|
|
|
+ // this.frequency = evt?.content?.body?.frequency
|
|
|
+ // } else {
|
|
|
+ // const getBeforeNote = (index: number) => {
|
|
|
+ // while (index >= 0) {
|
|
|
+ // const item = state.times[index]
|
|
|
+ // if (item.stave) {
|
|
|
+ // return item
|
|
|
+ // }
|
|
|
+ // index--
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // const setEvaluatings = (
|
|
|
+ // note: any,
|
|
|
+ // data: any,
|
|
|
+ // dontTransition = false
|
|
|
+ // ) => {
|
|
|
+ // const startNote = getBoundingBoxByverticalNote(note)
|
|
|
+ // state.evaluatings = {
|
|
|
+ // ...state.evaluatings,
|
|
|
+ // [startNote.measureIndex]: {
|
|
|
+ // ...startNote,
|
|
|
+ // ...getLeveByScoreMeasure(data.score),
|
|
|
+ // score: data.score,
|
|
|
+ // dontTransition,
|
|
|
+ // },
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
- for (let index = 0; index < state.times.length; index++) {
|
|
|
- let time = state.times[index]
|
|
|
- if (
|
|
|
- data.measureRenderIndex ==
|
|
|
- time.noteElement.sourceMeasure.measureListIndex
|
|
|
- ) {
|
|
|
- if (!time.stave) {
|
|
|
- const ntime = getBeforeNote(index)
|
|
|
- // console.log('ntime', ntime)
|
|
|
- if (ntime) {
|
|
|
- time = ntime
|
|
|
- }
|
|
|
- }
|
|
|
- // if (state.evaluatings[data.measureRenderIndex]) {
|
|
|
- // // 重复问题,老数据移除
|
|
|
- // state.evaluatings = {
|
|
|
- // ...state.evaluatings,
|
|
|
- // [data.measureRenderIndex]: undefined
|
|
|
- // }
|
|
|
- // }
|
|
|
- // console.log('sendResult', data, time, time.noteElement.tie)
|
|
|
+ // for (let index = 0; index < state.times.length; index++) {
|
|
|
+ // let time = state.times[index]
|
|
|
+ // if (
|
|
|
+ // data.measureRenderIndex ==
|
|
|
+ // time.noteElement.sourceMeasure.measureListIndex
|
|
|
+ // ) {
|
|
|
+ // if (!time.stave) {
|
|
|
+ // const ntime = getBeforeNote(index)
|
|
|
+ // // console.log('ntime', ntime)
|
|
|
+ // if (ntime) {
|
|
|
+ // time = ntime
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // // if (state.evaluatings[data.measureRenderIndex]) {
|
|
|
+ // // // 重复问题,老数据移除
|
|
|
+ // // state.evaluatings = {
|
|
|
+ // // ...state.evaluatings,
|
|
|
+ // // [data.measureRenderIndex]: undefined
|
|
|
+ // // }
|
|
|
+ // // }
|
|
|
+ // // console.log('sendResult', data, time, time.noteElement.tie)
|
|
|
|
|
|
- // const startNote = getBoundingBoxByverticalNote(time)
|
|
|
- // const endNote = getBoundingBoxByverticalNote(getNoteByMeasuresSlursStart(time))//getParentNote
|
|
|
+ // // const startNote = getBoundingBoxByverticalNote(time)
|
|
|
+ // // const endNote = getBoundingBoxByverticalNote(getNoteByMeasuresSlursStart(time))//getParentNote
|
|
|
|
|
|
- // if (!time.noteElement.tie) continue
|
|
|
- // for (const item of time.noteElement.tie.notes) {
|
|
|
- // const note = getParentNote(item)
|
|
|
- // if (!note) continue
|
|
|
- // const startNote = getBoundingBoxByverticalNote(note)
|
|
|
- // state.evaluatings = {
|
|
|
- // ...state.evaluatings,
|
|
|
- // [startNote.measureIndex]: {
|
|
|
- // ...startNote,
|
|
|
- // ...getLeveByScoreMeasure(data.score),
|
|
|
- // score: data.score,
|
|
|
- // dontTransition: item !== time.noteElement.tie.StartNote,
|
|
|
- // },
|
|
|
- // }
|
|
|
- // }
|
|
|
+ // // if (!time.noteElement.tie) continue
|
|
|
+ // // for (const item of time.noteElement.tie.notes) {
|
|
|
+ // // const note = getParentNote(item)
|
|
|
+ // // if (!note) continue
|
|
|
+ // // const startNote = getBoundingBoxByverticalNote(note)
|
|
|
+ // // state.evaluatings = {
|
|
|
+ // // ...state.evaluatings,
|
|
|
+ // // [startNote.measureIndex]: {
|
|
|
+ // // ...startNote,
|
|
|
+ // // ...getLeveByScoreMeasure(data.score),
|
|
|
+ // // score: data.score,
|
|
|
+ // // dontTransition: item !== time.noteElement.tie.StartNote,
|
|
|
+ // // },
|
|
|
+ // // }
|
|
|
+ // // }
|
|
|
|
|
|
- if (!time.noteElement.tie) {
|
|
|
- setEvaluatings(time, data)
|
|
|
- } else {
|
|
|
- for (const item of time.noteElement.tie.notes) {
|
|
|
- const note = getParentNote(item)
|
|
|
- if (!note) continue
|
|
|
- setEvaluatings(
|
|
|
- note,
|
|
|
- data,
|
|
|
- item !== time.noteElement.tie.StartNote
|
|
|
- )
|
|
|
- // const startNote = getBoundingBoxByverticalNote(note)
|
|
|
- // state.evaluatings = {
|
|
|
- // ...state.evaluatings,
|
|
|
- // [startNote.measureIndex]: {
|
|
|
- // ...startNote,
|
|
|
- // ...getLeveByScoreMeasure(data.score),
|
|
|
- // score: data.score,
|
|
|
- // dontTransition: item !== time.noteElement.tie.StartNote,
|
|
|
- // },
|
|
|
- // }
|
|
|
- }
|
|
|
- }
|
|
|
+ // if (!time.noteElement.tie) {
|
|
|
+ // setEvaluatings(time, data)
|
|
|
+ // } else {
|
|
|
+ // for (const item of time.noteElement.tie.notes) {
|
|
|
+ // const note = getParentNote(item)
|
|
|
+ // if (!note) continue
|
|
|
+ // setEvaluatings(
|
|
|
+ // note,
|
|
|
+ // data,
|
|
|
+ // item !== time.noteElement.tie.StartNote
|
|
|
+ // )
|
|
|
+ // // const startNote = getBoundingBoxByverticalNote(note)
|
|
|
+ // // state.evaluatings = {
|
|
|
+ // // ...state.evaluatings,
|
|
|
+ // // [startNote.measureIndex]: {
|
|
|
+ // // ...startNote,
|
|
|
+ // // ...getLeveByScoreMeasure(data.score),
|
|
|
+ // // score: data.score,
|
|
|
+ // // dontTransition: item !== time.noteElement.tie.StartNote,
|
|
|
+ // // },
|
|
|
+ // // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
- // if (startNote.measureIndex !== endNote.measureIndex) {
|
|
|
- // state.evaluatings = {
|
|
|
- // ...state.evaluatings,
|
|
|
- // [endNote.measureIndex]: {
|
|
|
- // ...endNote,
|
|
|
- // ...getLeveByScoreMeasure(data.score),
|
|
|
- // score: data.score,
|
|
|
- // dontTransition: true
|
|
|
- // },
|
|
|
- // }
|
|
|
- // }
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- // for (const time of state.times) {
|
|
|
- // if (data.measureRenderIndex == time.noteElement.sourceMeasure.measureListIndex) {
|
|
|
- // if (state.evaluatings[data.measureRenderIndex]) return
|
|
|
- // const startNote = getBoundingBoxByverticalNote(time)
|
|
|
- // const endNote = getBoundingBoxByverticalNote(getNoteBySlursStart(time, true, 'end'))
|
|
|
- // state.evaluatings = {
|
|
|
- // ...state.evaluatings,
|
|
|
- // [startNote.measureIndex]: {
|
|
|
- // ...startNote,
|
|
|
- // ...getLeveByScoreMeasure(data.score),
|
|
|
- // score: data.score,
|
|
|
- // },
|
|
|
- // }
|
|
|
- // if (startNote.measureIndex !== endNote.measureIndex) {
|
|
|
- // state.evaluatings = {
|
|
|
- // ...state.evaluatings,
|
|
|
- // [endNote.measureIndex]: {
|
|
|
- // ...endNote,
|
|
|
- // ...getLeveByScoreMeasure(data.score),
|
|
|
- // score: data.score,
|
|
|
- // dontTransition: true
|
|
|
- // },
|
|
|
- // }
|
|
|
- // }
|
|
|
- // break
|
|
|
- // }
|
|
|
- // }
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
+ // // if (startNote.measureIndex !== endNote.measureIndex) {
|
|
|
+ // // state.evaluatings = {
|
|
|
+ // // ...state.evaluatings,
|
|
|
+ // // [endNote.measureIndex]: {
|
|
|
+ // // ...endNote,
|
|
|
+ // // ...getLeveByScoreMeasure(data.score),
|
|
|
+ // // score: data.score,
|
|
|
+ // // dontTransition: true
|
|
|
+ // // },
|
|
|
+ // // }
|
|
|
+ // // }
|
|
|
+ // break
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // // for (const time of state.times) {
|
|
|
+ // // if (data.measureRenderIndex == time.noteElement.sourceMeasure.measureListIndex) {
|
|
|
+ // // if (state.evaluatings[data.measureRenderIndex]) return
|
|
|
+ // // const startNote = getBoundingBoxByverticalNote(time)
|
|
|
+ // // const endNote = getBoundingBoxByverticalNote(getNoteBySlursStart(time, true, 'end'))
|
|
|
+ // // state.evaluatings = {
|
|
|
+ // // ...state.evaluatings,
|
|
|
+ // // [startNote.measureIndex]: {
|
|
|
+ // // ...startNote,
|
|
|
+ // // ...getLeveByScoreMeasure(data.score),
|
|
|
+ // // score: data.score,
|
|
|
+ // // },
|
|
|
+ // // }
|
|
|
+ // // if (startNote.measureIndex !== endNote.measureIndex) {
|
|
|
+ // // state.evaluatings = {
|
|
|
+ // // ...state.evaluatings,
|
|
|
+ // // [endNote.measureIndex]: {
|
|
|
+ // // ...endNote,
|
|
|
+ // // ...getLeveByScoreMeasure(data.score),
|
|
|
+ // // score: data.score,
|
|
|
+ // // dontTransition: true
|
|
|
+ // // },
|
|
|
+ // // }
|
|
|
+ // // }
|
|
|
+ // // break
|
|
|
+ // // }
|
|
|
+ // // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+
|
|
|
+ sendResult(evt?: IPostMessage) {
|
|
|
+ console.log("sendResult", evt);
|
|
|
+ if (evt?.content) {
|
|
|
+ const data = evt?.content?.body;
|
|
|
+ if (evt?.content.header.commond === "overall") {
|
|
|
+ detailState.isHideEvaluatReportSaveBtn = false;
|
|
|
+ Toast.clear();
|
|
|
+ this.res = data;
|
|
|
+ this.endloading = false;
|
|
|
+ RuntimeUtils.event.emit("onEvaluationResult", data);
|
|
|
+ } else if (evt?.content.header.commond === "checkDone") {
|
|
|
+ this.checkStatus = true;
|
|
|
+ } else if (evt?.content.header.commond === "checking") {
|
|
|
+ this.frequency = evt?.content?.body?.frequency;
|
|
|
+ } else if (evt?.content.header.commond === "recordEnd") {
|
|
|
+ if (this.delayData.checkStatus !== 'ing') return
|
|
|
+ this.delayData.count++;
|
|
|
+ if (this.delayData.count >= 2) {
|
|
|
+ this.handleToggleTune('finishTune');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ setTimeout(() => {
|
|
|
+ this.startTune()
|
|
|
+ }, 100)
|
|
|
+ } else {
|
|
|
+ const getBeforeNote = (index: number) => {
|
|
|
+ while (index >= 0) {
|
|
|
+ const item = state.times[index];
|
|
|
+ if (item.stave) {
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ index--;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ const setEvaluatings = (note: any, data: any, dontTransition = false) => {
|
|
|
+ const startNote = getBoundingBoxByverticalNote(note);
|
|
|
+ state.evaluatings = {
|
|
|
+ ...state.evaluatings,
|
|
|
+ [startNote.measureIndex]: {
|
|
|
+ ...startNote,
|
|
|
+ ...getLeveByScoreMeasure(data.score),
|
|
|
+ score: data.score,
|
|
|
+ dontTransition,
|
|
|
+ },
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ for (let index = 0; index < state.times.length; index++) {
|
|
|
+ let time = state.times[index];
|
|
|
+ if (data.measureRenderIndex == time.noteElement.sourceMeasure.measureListIndex) {
|
|
|
+ if (!time.stave) {
|
|
|
+ const ntime = getBeforeNote(index);
|
|
|
+ // console.log('ntime', ntime)
|
|
|
+ if (ntime) {
|
|
|
+ time = ntime;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!time.noteElement.tie) {
|
|
|
+ setEvaluatings(time, data);
|
|
|
+ } else {
|
|
|
+ for (const item of time.noteElement.tie.notes) {
|
|
|
+ const note = getParentNote(item);
|
|
|
+ if (!note) continue;
|
|
|
+ setEvaluatings(note, data, item !== time.noteElement.tie.StartNote);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
setWiredStatus(res?: IPostMessage) {
|
|
|
this.erjiShow = !res?.content.checkIsWired
|
|
|
this.tuningStatus = true
|
|
@@ -741,10 +878,153 @@ export default defineComponent({
|
|
|
data.cadence = this.res?.cadence
|
|
|
data.integrity = this.res?.integrity
|
|
|
}
|
|
|
- return `${
|
|
|
- location.origin
|
|
|
- }/accompany/share-evaluating/index.html?${qs.stringify(data)}`
|
|
|
+ // return `${location.origin}/accompany/share-evaluating/index.html?${qs.stringify(data)}`
|
|
|
+ return ''
|
|
|
},
|
|
|
+
|
|
|
+
|
|
|
+ /** 评测效验 */
|
|
|
+ async checkEvaluating() {
|
|
|
+ this.delayData.erji = await this.getWiredStatus();
|
|
|
+ this.delayData.time = await this.getDeviceDelay();
|
|
|
+ // 没有设备延迟数据,显示检测组件,并持续检测耳机状态
|
|
|
+ if (!this.delayData.time || this.delayData.isForce) {
|
|
|
+ this.delayData.open = runtime.delayCheckFirst && this.$route.query.evaluatingRecord ? false : true
|
|
|
+ this.delayData.count = 0;
|
|
|
+ if (runtime.delayCheckFirst && this.$route.query.evaluatingRecord) {
|
|
|
+ this.closeErji()
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.handleCheckDelayEnd()
|
|
|
+ },
|
|
|
+ /** 获取设备延迟 */
|
|
|
+ getDeviceDelay(): Promise<number> {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ const timer = setTimeout(() => {
|
|
|
+ resolve(0);
|
|
|
+ }, 1000)
|
|
|
+ postMessage({
|
|
|
+ api: "getDeviceDelay",
|
|
|
+ }, (res) => {
|
|
|
+ const delay = res?.content?.value > 0 ? res?.content?.value : 0;
|
|
|
+ clearTimeout(timer)
|
|
|
+ resolve(delay);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 获取耳机状态 */
|
|
|
+ getWiredStatus(): Promise<boolean> {
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ const timer = setTimeout(() => {
|
|
|
+ resolve(false);
|
|
|
+ }, 1000)
|
|
|
+ postMessage({
|
|
|
+ api: "isWiredHeadsetOn",
|
|
|
+ }, (res) => {
|
|
|
+ const checkIsWired = res?.content?.checkIsWired ? true : false;
|
|
|
+ if (checkIsWired) {
|
|
|
+ if (this.delayData.step <= 5) {
|
|
|
+ this.delayData.step = 3
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (this.delayData.step === 2 || this.delayData.step === 3) {
|
|
|
+ this.delayData.step = 4
|
|
|
+ }
|
|
|
+ }
|
|
|
+ clearTimeout(timer)
|
|
|
+ resolve(checkIsWired);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /** 持续检测耳机状态 */
|
|
|
+ checkWiredStatus() {
|
|
|
+ console.log('耳机状态',this.delayData.checkStatus)
|
|
|
+ // 设备检测结束,停止获取耳机状态
|
|
|
+ if (this.delayData.checkStatus !== 'ing' || this.delayData.open === false) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ setTimeout(async () => {
|
|
|
+ this.delayData.erji = await this.getWiredStatus();
|
|
|
+ if (this.delayData.erji) {
|
|
|
+ this.delayData.count = 0;
|
|
|
+ this.delayData.time = 0;
|
|
|
+ this.delayData.checkStatus = 'error'
|
|
|
+ }
|
|
|
+ this.checkWiredStatus();
|
|
|
+ }, 1000)
|
|
|
+ },
|
|
|
+ /** 开始效音 */
|
|
|
+ startTune() {
|
|
|
+ // 带了耳机,停止播放效音
|
|
|
+ if (this.delayData.erji) return;
|
|
|
+ this.handleToggleTune('start')
|
|
|
+ setTimeout(() => {
|
|
|
+ this.handleToggleTune('stop')
|
|
|
+ }, 1500)
|
|
|
+ },
|
|
|
+ /** 设备延迟检测结束 */
|
|
|
+ handleCheckDelayEnd() {
|
|
|
+ if (this.delayData.erji) {
|
|
|
+ this.closeErji();
|
|
|
+ } else {
|
|
|
+ this.erjiShow = true;
|
|
|
+ HeadphoneData.toggle();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /** 切换效音 */
|
|
|
+ handleToggleTune(state: 'start' | 'stop' | 'finishTune'){
|
|
|
+ if (state === 'start') {
|
|
|
+ this.delayData.step = 5
|
|
|
+ // 开始效音
|
|
|
+ postMessage({
|
|
|
+ api: "startTune",
|
|
|
+ content: {
|
|
|
+ count: this.delayData.count + '',
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else if (state === 'stop') {
|
|
|
+ // 结束效音,触发时机: 1.监听后台效音返回 2.点击跳过效音或关闭效音
|
|
|
+ postMessage({
|
|
|
+ api: "endTune"
|
|
|
+ })
|
|
|
+ } else if (state === 'finishTune') {
|
|
|
+ this.delayData.step = 6
|
|
|
+ // 效音完成
|
|
|
+ postMessage({
|
|
|
+ api: "finishTune",
|
|
|
+ }, (res) => {
|
|
|
+ const result = res?.content?.result //1成功 0失败
|
|
|
+ // Toast('检测延迟完成')
|
|
|
+ // setTimeout(() => {
|
|
|
+ // this.delayData.open = false
|
|
|
+ // }, 500)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ /** 停止设备延迟检测 */
|
|
|
+ handleStopCheckDelay() {
|
|
|
+ runtime.delayCheckFirst = true
|
|
|
+ this.delayData.open = false
|
|
|
+ this.delayData.checkStatus = 'init'
|
|
|
+ this.handleToggleTune('stop')
|
|
|
+ this.close();
|
|
|
+ },
|
|
|
+ /** 开始检测设备延迟 */
|
|
|
+ async handleStartCheckDelay(){
|
|
|
+ if (this.delayData.checkStatus === 'ing') return;
|
|
|
+ this.delayData.step = 2
|
|
|
+ this.delayData.erji = await this.getWiredStatus();
|
|
|
+ if (this.delayData.erji) {
|
|
|
+ this.delayData.checkStatus = 'error'
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.delayData.checkStatus = 'ing';
|
|
|
+ this.startTune();
|
|
|
+ this.checkWiredStatus();
|
|
|
+ },
|
|
|
+
|
|
|
},
|
|
|
mounted() {
|
|
|
if (!SettingState.eva.mute) {
|
|
@@ -783,6 +1063,9 @@ export default defineComponent({
|
|
|
},
|
|
|
this.setWiredStatus
|
|
|
)
|
|
|
+ hideComplexButton(handleComplexButton, true);
|
|
|
+ // 开始效验
|
|
|
+ this.checkEvaluating()
|
|
|
},
|
|
|
unmounted() {
|
|
|
state.mode = this.oldMode
|
|
@@ -1053,6 +1336,26 @@ export default defineComponent({
|
|
|
</div>
|
|
|
) : null}
|
|
|
</Popup>
|
|
|
+
|
|
|
+ {/* 延迟检测窗口 */}
|
|
|
+ <Popup
|
|
|
+ teleport="body"
|
|
|
+ class="popup-scale"
|
|
|
+ transition="van-scale"
|
|
|
+ overlay={false}
|
|
|
+ show={this.delayData.open}
|
|
|
+ onClose={() => this.handleCheckDelayEnd()}
|
|
|
+ >
|
|
|
+ <CheckDelayPopup
|
|
|
+ delayData={this.delayData}
|
|
|
+ onStartCheckDelay={() => this.handleStartCheckDelay()}
|
|
|
+ onClose={() => this.handleStopCheckDelay()}
|
|
|
+ />
|
|
|
+ </Popup>
|
|
|
+
|
|
|
+ {/* <Headphone onClose={this.closeErji} />
|
|
|
+ <PhoneTip show={!this.delayData.erji && runtime.evaluatingTips} /> */}
|
|
|
+
|
|
|
</div>
|
|
|
)
|
|
|
},
|