Browse Source

Merge branch 'gyt-feature-tianyong' into online

TIANYONG 1 year ago
parent
commit
2679698774

+ 2 - 2
src/pages/detail/state.ts

@@ -90,8 +90,8 @@ const state = reactive({
   isHideEvaluatReportSaveBtn: false,    
 })
 
-export const isRhythmicExercises = () => {
-  const examSongName = state?.activeDetail?.examSongName || ''
+export const isRhythmicExercises = (musicName?: string) => {
+  const examSongName = musicName ? musicName : state?.activeDetail?.musicSheetName || ''
   // console.log("🚀 ~ examSongName:", examSongName,state)
   return examSongName.indexOf('节奏练习') > -1
 }

+ 2 - 2
src/subpages/colexiu-report/index.tsx

@@ -12,7 +12,7 @@ import {
   getParentNote,
 } from '/src/pages/detail/helpers'
 import SettingState from '/src/pages/detail/setting-state'
-import detailState from '/src/pages/detail/state'
+import detailState, { isRhythmicExercises } from '/src/pages/detail/state'
 import { useOriginSearch } from '../colexiu/uses'
 import styles from '../colexiu/index.module.less'
 import detailStyles from './index.module.less'
@@ -72,7 +72,7 @@ const useDetail = (id: number | string): [Ref<ShaeetStatusType>, Ref<MusicSheelD
       const res = await request.get(`/musicSheet/detail/${record.value?.musicalNotesPlayStats.examSongId}`)
       data.value = res.data
       detailState.partIndex = recordRes.data.partIndex || 0
-      detailState.isPercussion = res.data?.background?.[detailState.partIndex]?.musicSubject == 1
+      detailState.isPercussion = res.data?.background?.[detailState.partIndex]?.musicSubject == 1 || isRhythmicExercises(res.data?.musicSheetName);
       status.value = 'success'
     } catch (error) {
       status.value = 'error'

+ 18 - 2
src/subpages/colexiu/buttons/evaluating.tsx

@@ -1,7 +1,7 @@
 import { Button, Toast } from 'vant'
 import { defineComponent, onBeforeUnmount, onMounted, Ref, ref, Teleport, Transition } from 'vue'
 import '@dotlottie/player-component'
-import detailState from '/src/pages/detail/state'
+import detailState, { isRhythmicExercises } from '/src/pages/detail/state'
 import SettingState from '/src/pages/detail/setting-state'
 import {
   IPostMessage,
@@ -45,6 +45,21 @@ const endResult = ref(null)
 const browserInfo = browser()
 const scoreList: any[] = []
 
+// frequency 频率, amplitude 振幅, decibels 分贝
+type TCriteria = "frequency" | "amplitude" | "decibels";
+/** 获取评测标准 */
+const getEvaluationCriteria = () => {
+	let criteria: TCriteria = "frequency";
+	// 声部打击乐
+	if ([23, 113, 121].includes(detailState.subjectId)) {
+		criteria = "amplitude";
+	} else if (isRhythmicExercises()) {
+		// 分类为节奏练习
+		criteria = "decibels";
+	}
+	return criteria;
+};
+
 /**
  * 默认按照442计算的音符频率,此处转化为按照设置进行调整
  * @param num 频率
@@ -171,7 +186,7 @@ const connect = async () => {
 
   const content = {
     musicXmlInfos: formatTimes(),
-    subjectId: detailState.subjectId,
+    subjectId: detailState.subjectId ? detailState.subjectId : detailState.isPercussion ? 1 : detailState.subjectId,
     detailId: detailState.activeDetail?.id,
     examSongId: search.id,
     xmlUrl: detailState?.activeDetail?.xmlUrl,
@@ -188,6 +203,7 @@ const connect = async () => {
     heardLevel: SettingState.eva.difficulty,
     // beatLength: Math.round((RuntimeUtils.getFixTime(detailState.times[0].beatSpeed) * 1000) / rate),
     beatLength: actualBeatLength,
+    evaluationCriteria: getEvaluationCriteria(),
   }
   // console.log("🚀 ~ content:", content, rate)
   const clientType = useClientType()

+ 2 - 2
src/subpages/colexiu/uses/use-app.ts

@@ -4,7 +4,7 @@ import request from '/src/helpers/request'
 import originRequest from 'umi-request'
 import store from 'store'
 import runtime, * as RuntimeUtils from '/src/pages/detail/runtime'
-import detailState, { GradualTimes } from '/src/pages/detail/state'
+import detailState, { GradualTimes, isRhythmicExercises } from '/src/pages/detail/state'
 import SettingState from '/src/pages/detail/setting-state'
 import { listenerMessage, postMessage } from '/src/helpers/native-message'
 import audiosInstance from '/src/helpers/multiple-audio'
@@ -76,7 +76,6 @@ export const useMp3s = async (detail: MusicSheelDetail) => {
     music: musicSong ? musicSong + '?t=music' : '',
   }
   detailState.isAppPlay = detail.audioType === 'MIDI'
-  detailState.isPercussion = musicInfo.musicSubject == '1'
   let defaultExtConfigJson = {
     skipTick: false,
     repeatedBeats: false,
@@ -92,6 +91,7 @@ export const useMp3s = async (detail: MusicSheelDetail) => {
       ...defaultExtConfigJson,
     },
   }
+  detailState.isPercussion = musicInfo.musicSubject == '1' || isRhythmicExercises();
   try {
     extConfigJson = JSON.parse(detail?.extConfigJson || '')
   } catch (error) {}