Browse Source

feat: bug修改

TIANYONG 6 months ago
parent
commit
7c570edd51
5 changed files with 33 additions and 8 deletions
  1. 2 1
      src/page-instrument/main.ts
  2. 14 1
      src/page-instrument/view-detail/index.tsx
  3. 12 5
      src/state.ts
  4. 3 0
      src/store.ts
  5. 2 1
      src/utils/index.ts

+ 2 - 1
src/page-instrument/main.ts

@@ -29,7 +29,8 @@ import { getRequestHostname } from "/src/utils"
 		isApp: instance ? true : false,
 		platformApi: apiPrefix,
 		platformType: "",
-		proxy: import.meta.env.DEV ? "/instrument" : ""
+		proxy: import.meta.env.DEV ? "/instrument" : "",
+		isTeacher: u.includes('DAYAAPPTEACHER'),
 	});
 })();
 

+ 14 - 1
src/page-instrument/view-detail/index.tsx

@@ -1,5 +1,5 @@
 import { Popup, Skeleton } from "vant";
-import { computed, defineComponent, nextTick, onBeforeMount, onBeforeUnmount, onMounted, reactive, Transition, watch, watchEffect, defineAsyncComponent, ref } from "vue";
+import { computed, defineComponent, nextTick, onBeforeMount, onBeforeUnmount, onMounted, onUnmounted, reactive, Transition, watch, watchEffect, defineAsyncComponent, ref } from "vue";
 import { formateTimes } from "../../helpers/formateMusic";
 import Metronome, { metronomeData } from "../../helpers/metronome";
 import state, { EnumMusicRenderType, evaluatCreateMusicPlayer, handleSetSpeed, IAudioState, IPlatform, isRhythmicExercises, resetPlaybackToStart, togglePlay, getMusicDetail, addNoteBBox } from "/src/state";
@@ -141,6 +141,14 @@ export default defineComponent({
     const pushAppMusic = () => {
       api_cloudAccompanyMessage(state.accompany);
     };
+    const changePlay = (res: any) => {
+      if (res?.data?.api === 'setPlayState') {
+        console.log('父页面的切换事件关闭播放')
+        if (state.playState === "play") {
+          togglePlay("paused")
+        }
+      }
+    };
     // console.log(route.params, query)
     onMounted(async () => {
       (window as any).appName = "colexiu";
@@ -160,6 +168,7 @@ export default defineComponent({
       // Promise.all([sysMusicScoreAccompanimentQueryPage(id)]).then((values) => {
       //   getMusicInfo(values[0]);
       // });
+      window.addEventListener('message', changePlay)
       try { 
         await getMusicDetail(id);
       } catch (err) {
@@ -186,6 +195,10 @@ export default defineComponent({
       }
       // api_setEventTracking();
     });
+    
+    onUnmounted(() => {
+      window.removeEventListener('message', changePlay)
+    });
 
     /** 渲染完成 */
     const handleRendered = (osmd: any) => {

+ 12 - 5
src/state.ts

@@ -914,6 +914,7 @@ export const resetPlaybackToStart = () => {
 
 /** 跳转到指定音符 */
 export const gotoCustomNote = (index: number) => {
+  console.log('跳转位置1111',index)
   try {
     state.osmd.cursor.reset();
   } catch (error) { }
@@ -1042,6 +1043,7 @@ export const gotoNext = (note: any, skipNote?: boolean) => {
   let prev = state.activeNoteIndex;
   state.activeNoteIndex = num;
   state.activeMeasureIndex = note.MeasureNumberXML;
+  osmd.cursor.activeMeasureNum = note.MeasureNumberXML;
   dynamicShowPlaySpeed(state.activeNoteIndex);
   if (prev && num - prev === 1) {
     // console.log('跳转音符',11111,osmd.cursor)
@@ -1052,14 +1054,19 @@ export const gotoNext = (note: any, skipNote?: boolean) => {
     // }
     osmd.cursor.next();
 
-  } else if (prev && num - prev > 0) {
+  } else if (prev >= 0 && num - prev > 0) {
     while (num - prev > 0) {
       prev++;
       // console.log('跳转音符',22222)
       osmd.cursor.next();
     }
-  } else {
-    gotoCustomNote(num);
+  } else if (prev >= 0) {
+    // gotoCustomNote(num);
+    while (prev - num > 0) {
+      prev--;
+      // console.log('跳转音符',22222)
+      osmd.cursor.previous();
+    }
   }
   /* 取消光标了 */
   // try {
@@ -1135,7 +1142,7 @@ export const handleSetSpeed = (speed: number) => {
   // setStorageSpeed(state.examSongId, speed);
   state.speed = speed;
   // 当前的音符
-  const currentItem: any = (state.sectionStatus && state.section.length === 2) ? state.sectionFirst || state.section[0] : state.times[state.activeNoteIndex];
+  const currentItem: any = (state.sectionStatus && state.section.length === 2) ? state.section[0] : state.times[state.activeNoteIndex];
   state.basePlayRate = currentItem?.measureSpeed ? state.speed / currentItem.measureSpeed : state.speed / state.originSpeed;
   const actualRate = state.originAudioPlayRate * state.basePlayRate;
   console.log('速度设置',speed,'小节计算的倍率',state.basePlayRate,'实际播放倍率',actualRate)
@@ -1294,7 +1301,7 @@ export const hanldeDirectSelection = (list: any[]) => {
   setTimeout(() => {
     state.section = formateSelectMearure(list);
     // 选段完成后,需要根据预报小节的速度,设置右下角显示的速度
-    const currentItem: any = (state.sectionStatus && state.section.length === 2) ? state.sectionFirst || state.section[0] : state.times[state.activeNoteIndex];
+    const currentItem: any = (state.sectionStatus && state.section.length === 2) ? state.section[0] : state.times[state.activeNoteIndex];
     if (currentItem.measureSpeed && query.workRecord === undefined && query.evaluatingRecord === undefined) {
       handleSetSpeed(currentItem.measureSpeed);
     }

+ 3 - 0
src/store.ts

@@ -36,6 +36,7 @@ export interface IStoreData {
   platformApi: IPlatformApi;
   proxy: IProxy;
   isApp: boolean;
+  isTeacher: boolean;
 }
 
 export const storeData = reactive({
@@ -50,6 +51,8 @@ export const storeData = reactive({
   proxy: "" as IProxy,
   /** 是否在APP中 */
   isApp: false,
+  /** 是否是老师端 */
+  isTeacher: false,
 });
 
 /** 初始化 */

+ 2 - 1
src/utils/index.ts

@@ -1,5 +1,6 @@
 import store from 'store'
 import { getQuery } from "./queryString";
+import { storeData } from "../store";
 
 /** 获取浏览器信息 */
 export const browser = () => {
@@ -141,7 +142,7 @@ export const getRequestHostname = () => {
 	let webBlankOld = ["mandev.dayaedu.com", "mantest.dayaedu.com", "manonline.dayaedu.com", "test.dayaedu.com", "online.dayaedu.com"];
 	let webBlank = ["dev.gym.lexiaoya.cn/accompany-web/", "test.gym.lexiaoya.cn/accompany-web/", "gym.lexiaoya.cn/accompany-web/"];
 	const host = location.hostname + location.pathname
-	if (blank.includes(host) || blankOld.includes(location.hostname) || query.systemType === "teacher") {
+	if (blank.includes(host) || blankOld.includes(location.hostname) || query.systemType === "teacher" || storeData.isTeacher) {
 		return "/api-teacher";
 	} else if (webBlank.includes(host) || webBlankOld.includes(location.hostname) || query.systemType === "web") {
 		return "/api-web";