skyblued 2 years ago
parent
commit
793d10338f

+ 0 - 1
src/pages/detail/helpers.ts

@@ -839,7 +839,6 @@ export const getActtiveNoteByTimes = (evt: MouseEvent) => {
     }
   }
   const activeNote = data[el.id || '']
-  // state.timesById = data
   return activeNote
 }
 

+ 1 - 1
src/pages/detail/runtime.ts

@@ -685,7 +685,7 @@ const cloudToggleState = async () => {
         startTime: state.currentTimeNum * 1000,
         originalSpeed: detailState.activeDetail.originalSpeed,
         speed: state.speed,
-        hertz: 440//SettingState.sett.hertz,
+        hertz: SettingState.sett.hertz,
       },
     })
     startCapture()

+ 1 - 1
src/pages/detail/setting-state.ts

@@ -55,7 +55,7 @@ let initState: SettingState = {
     opacity: 70,
     loop: true,
     fingering: true,
-    hertz: 440,
+    hertz: 442,
     scoreSize: 'middle',
     type: 'staff',
     keySignature: false

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

@@ -1,5 +1,4 @@
-import { Toast } from 'vant'
-import { reactive, watchEffect } from 'vue'
+import { reactive } from 'vue'
 import { GradualNote } from './calcSpeed'
 import { IDifficulty } from './setting-state'
 
@@ -19,7 +18,6 @@ const state = reactive({
   maskStatus: false,
   section: [] as any[],
   times: [] as any[],
-  timesById: {} as any,
   sectionBoundingBoxs: [] as any[],
   activeTick: -1,
   activeTickRepeat: 1,
@@ -44,7 +42,7 @@ const state = reactive({
   repeatedBeats: false,
   sectionFlash: false,
   befireSection: null as any,
-  /* 是否是打击乐 */
+  /** 是否是打击乐 true: 是, false: 不是 */
   isPercussion: false,
   enableEvaluation: true, // 是否开启评测
   isAppPlay: false, // 是否是app播放
@@ -75,31 +73,6 @@ const state = reactive({
   gradualTimes: null as GradualTimes
 })
 
-let toastItem: any = null
-watchEffect(() => {
-  const data: any = {}
-  for (const time of state.times) {
-    if (time.id) {
-      data[time.id] = time
-    }
-  }
-  state.timesById = data
-  if (state.subjectId > 0) {
-    state.isPercussion = state.subjectId == 23 || state.subjectId == 113
-  }
-  if (state.renderLoading) {
-    // toastItem = Toast({
-    //   duration: 0,
-    //   message: '加载中...',
-    // })
-  } else {
-    if (toastItem) {
-      toastItem.close()
-      toastItem = null
-    }
-  }
-})
-
 export default state
 export type GradualTimes = null | {
   [key: string]: string

+ 0 - 1
src/subpages/colexiu/buttons/evaluating.tsx

@@ -113,7 +113,6 @@ const formatTimes = () => {
       frequency: formatPitch(item.noteElement?.pitch?.frequency),
       nextFrequency: formatPitch(item.noteElement?.pitch?.nextFrequency),
       prevFrequency: formatPitch(item.noteElement?.pitch?.prevFrequency),
-      // 重复的情况index会自然累加,render的index是谱面渲染的index
       measureIndex: measureIndex, //note.measureOpenIndex,
       measureRenderIndex: note.noteElement.sourceMeasure.measureListIndex,
       dontEvaluating: ListenMode || dontEvaluatingMode || item.skipMode,

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

@@ -337,7 +337,7 @@ export default defineComponent({
                 </Button>
               </>
             )}
-            {['practice', 'evaluation'].includes(modelType.value) && (
+            {/* {['practice', 'evaluation'].includes(modelType.value) && (
               <Popover
                 trigger="manual"
                 overlay={false}
@@ -374,7 +374,7 @@ export default defineComponent({
                   class={styles.speed}
                 />
               </Popover>
-            )}
+            )} */}
             {detailState.activeDetail?.notation ? (
               <Popover
                 class={styles.toggleMusicType}

+ 59 - 61
src/subpages/colexiu/popups/evaluating/content.tsx

@@ -1,7 +1,6 @@
 import { Button, Dialog, Grid, GridItem, Popup, Toast } from 'vant'
-import { defineComponent, onBeforeUnmount, onMounted, ref, toRefs, watch } from 'vue'
+import { defineComponent, ref, toRefs } from 'vue'
 import qs from 'query-string'
-// import { getImageUrl } from '../../header'
 import appState from '/src/state'
 import detailState from '/src/pages/detail/state'
 import styles from './index.module.less'
@@ -13,7 +12,6 @@ import TryIcon from './icons/icon-try.png'
 import IntegrityIcon from './icons/integrity.svg'
 import IntonationIcon from './icons/intonation.svg'
 import CadenceIcon from './icons/cadence.svg'
-// import bg from './icons/bg.svg'
 import runtime from '/src/pages/detail/runtime'
 import { postMessage } from '/src/helpers/native-message'
 import { evaluatingShow, ResultContent } from './index'
@@ -28,7 +26,6 @@ import iconShare from './icons/icon-share.svg'
 import iconUpload from './icons/icon-upload.svg'
 import { useOriginSearch } from '../../uses'
 import { onChangeModelType } from '../../buttons'
-import { useRoute } from 'vue-router'
 
 const scoreInfos: any = {
   1: {
@@ -86,11 +83,6 @@ export default defineComponent({
         score: data.value?.score || 0,
         examSongName: detailState.activeDetail?.examSongName || '',
       }
-      // if (!this.isStrike) {
-      //   data.intonation = data.value?.intonation
-      //   data.cadence = data.value?.cadence
-      //   data.integrity = data.value?.integrity
-      // }
       if (!detailState.isPercussion) {
         shareData.intonation = data.value?.intonation
         shareData.cadence = data.value?.cadence
@@ -161,7 +153,6 @@ export default defineComponent({
             <div class={styles.wrap}>
               <div class={styles.wrapContainer}>
                 <div class={styles.top}>
-                  {/* {info === 5 && <img class={styles.iconLeft} src={iconBadge} />} */}
                   <div class={styles.title}>
                     <div style={{ position: 'relative', zIndex: 1, 'white-space': 'nowrap' }}>
                       <span class={styles.num}>{data.value?.score}</span>
@@ -173,22 +164,24 @@ export default defineComponent({
                 </div>
                 <div class={styles.evaluatWrap}>
                   <Grid>
-                    <GridItem
-                      vSlots={{
-                        icon: () => (
-                          <div>
-                            <img class={styles.evaluatIcon} src={IntonationIcon} />
-                            <span class={styles.evaluatTitle}>音准</span>
-                          </div>
-                        ),
-                        text: () => (
-                          <span class={styles.fraction}>
-                            {data.value?.intonation}
-                            <span>分</span>
-                          </span>
-                        ),
-                      }}
-                    ></GridItem>
+                    {detailState.isPercussion ? null : (
+                      <GridItem
+                        vSlots={{
+                          icon: () => (
+                            <div>
+                              <img class={styles.evaluatIcon} src={IntonationIcon} />
+                              <span class={styles.evaluatTitle}>音准</span>
+                            </div>
+                          ),
+                          text: () => (
+                            <span class={styles.fraction}>
+                              {data.value?.intonation}
+                              <span>分</span>
+                            </span>
+                          ),
+                        }}
+                      ></GridItem>
+                    )}
                     <div class={styles.line}></div>
                     <GridItem
                       vSlots={{
@@ -207,56 +200,63 @@ export default defineComponent({
                       }}
                     ></GridItem>
                     <div class={styles.line}></div>
-                    <GridItem
-                      vSlots={{
-                        icon: () => (
-                          <div>
-                            <img class={styles.evaluatIcon} src={IntegrityIcon} />
-                            <span class={styles.evaluatTitle}>完整性</span>
-                          </div>
-                        ),
-                        text: () => (
-                          <span class={styles.fraction}>
-                            {data.value?.integrity}
-                            <span>分</span>
-                          </span>
-                        ),
-                      }}
-                    ></GridItem>
+                    {detailState.isPercussion ? null : (
+                      <GridItem
+                        vSlots={{
+                          icon: () => (
+                            <div>
+                              <img class={styles.evaluatIcon} src={IntegrityIcon} />
+                              <span class={styles.evaluatTitle}>完整性</span>
+                            </div>
+                          ),
+                          text: () => (
+                            <span class={styles.fraction}>
+                              {data.value?.integrity}
+                              <span>分</span>
+                            </span>
+                          ),
+                        }}
+                      ></GridItem>
+                    )}
                   </Grid>
                 </div>
 
                 <div class={styles.tips}>{scoreInfos[info].tips}</div>
-                
               </div>
               <div class={styles.btns}>
                 {detailState.frozenMode || isUnitTest ? null : (
-                  <Button onClick={() => {
-                    runtime.evaluatingStatus = false
-                    detailState.evaluatings = {}
-                    evaluatingShow.value = false
-                    onChangeModelType('practice')
-                  }}>
+                  <Button
+                    onClick={() => {
+                      runtime.evaluatingStatus = false
+                      detailState.evaluatings = {}
+                      evaluatingShow.value = false
+                      onChangeModelType('practice')
+                    }}
+                  >
                     <img class={styles.btnIcon} src={iconLianxi} />
                   </Button>
                 )}
                 <Button style={{ margin: '0 4px' }} onClick={() => emit('restart')}>
                   <img class={styles.btnIcon} src={TryIcon} />
                 </Button>
-                {isUnitTest ? null : <Button onClick={viewReport}>
-                  <img class={styles.btnIcon} src={iconReport} alt="查看报告" />
-                </Button>}
+                {isUnitTest ? null : (
+                  <Button onClick={viewReport}>
+                    <img class={styles.btnIcon} src={iconReport} alt="查看报告" />
+                  </Button>
+                )}
               </div>
-              {isUnitTest ? null : <div class={styles.rigthBtns}>
-                <div class={styles.skepBtn} onClick={() => emit('upload')}>
-                  <img src={iconUpload} />
-                  上传
-                </div>
-                {/* <div class={styles.skepBtn} onClick={() => (shareShow.value = true)}>
+              {isUnitTest ? null : (
+                <div class={styles.rigthBtns}>
+                  <div class={styles.skepBtn} onClick={() => emit('upload')}>
+                    <img src={iconUpload} />
+                    上传
+                  </div>
+                  {/* <div class={styles.skepBtn} onClick={() => (shareShow.value = true)}>
                   <img src={iconShare} />
                   分享
                 </div> */}
-              </div>}
+                </div>
+              )}
             </div>
             <Popup
               teleport="body"
@@ -285,8 +285,6 @@ export default defineComponent({
               />
             </Popup>
             <Button class={styles.button} icon={backIcon} onClick={() => emit('restart')}></Button>
-
-            
           </div>
         </div>
       )

+ 5 - 12
src/subpages/colexiu/uses/use-app.ts

@@ -1,4 +1,4 @@
-import { onBeforeUnmount, onMounted, Ref, ref } from 'vue'
+import { onBeforeUnmount, onMounted, Ref, ref, watch } from 'vue'
 import { useClientType, useOriginSearch } from '.'
 import request from '/src/helpers/request'
 import originRequest from 'umi-request'
@@ -64,18 +64,16 @@ export const useMp3s = async (detail: MusicSheelDetail) => {
     } catch (error) {}
   }
   // 伴奏
-  const backgroundSong = encodeURI(detail.metronomeUrl || detail.audioFileUrl || detail.url || '')
+  const backgroundSong = detail.metronomeUrl || ''
   // 原音
-  const musicSong = encodeURI(activebg?.metronomeUrl || activebg?.audioFileUrl || '')
+  const musicSong = activebg?.audioFileUrl|| ''
   // 兼容未修改之前
   runtime.songs = {
     background: backgroundSong ? backgroundSong + '?t=background' : '',
     music: musicSong ? musicSong + '?t=music' : '',
   }
-  // console.log('backgroundUrl', runtime.songs.background)
-  // console.log('musicUrl', runtime.songs.music)
   detailState.isAppPlay = detail.audioType === 'MIDI'
-
+  detailState.isPercussion = musicInfo.musicSubject == '1'
   let defaultExtConfigJson = {
     skipTick: false,
     repeatedBeats: false,
@@ -91,10 +89,6 @@ export const useMp3s = async (detail: MusicSheelDetail) => {
       ...defaultExtConfigJson,
     },
   }
-
-  /** 按照后台配置的设置频率 */
-  SettingState.sett.hertz = detail.aiDefaultFrequency ? parseInt('' + detail.aiDefaultFrequency || '440') || 440 : 440
-
   try {
     extConfigJson = JSON.parse(detail?.extConfigJson || '')
   } catch (error) {}
@@ -172,8 +166,7 @@ export const useDetail = (id: number | string): [Ref<ShaeetStatusType>, Ref<Musi
       }
       // 设置是否特殊曲谱, 是特殊曲谱取反(不理解之前的思考逻辑), 使用后台设置的速度
       detailState.isSpecialBookCategory = !classids.includes(res.data.musicSheetCategoriesId) 
-      // console.log("🚀 ~ detailState.isSpecialBookCategory:", detailState.isSpecialBookCategory, res.data.musicSheetCategoriesId)
-      detailState.subjectId = (res.data.musicSubject || '').split(',')[0] || 0
+      detailState.subjectId = Number(musicInfo.musicSubject)
       ;(window as any).DYSubjectId = formatId(data.value.code as any)
       status.value = 'success'