Przeglądaj źródła

feat: 默认谱面,能否转谱使用新的字段

TIANYONG 11 miesięcy temu
rodzic
commit
0693ce6d70
2 zmienionych plików z 49 dodań i 22 usunięć
  1. 26 16
      src/page-instrument/header-top/settting/index.tsx
  2. 23 6
      src/state.ts

+ 26 - 16
src/page-instrument/header-top/settting/index.tsx

@@ -1,4 +1,4 @@
-import { defineComponent, reactive } from "vue";
+import { defineComponent, reactive, computed } from "vue";
 import styles from "./index.module.less"
 import { headImg } from "../image";
 import { headTopData } from "../index"
@@ -33,6 +33,12 @@ export default defineComponent({
 			state.setting.frequency = currentFrequency >= 0 ? currentFrequency : 0
 		}
         const formatterTimeMs = (value: any) => value = String(Math.min(3000, value));
+
+        const notationList = computed(() => {
+            const list = state.enableNotation ? [{name:'五线谱',value:'staff'},{name:'首调',value:'firstTone'},{name:'固定谱',value:'fixedTone'}] : [{name:'首调',value:'firstTone'},{name:'固定谱',value:'fixedTone'}];
+            return list;
+        });
+
 		return () => (
 			<div class={[styles.settting, styles[state.modeType]]}>
                 <div class={styles.head}>
@@ -158,21 +164,25 @@ export default defineComponent({
                                 </div>
                             </div> : null                        
                         }
-                        <div class={styles.cellBox}>
-                            <div class={styles.tit}>转谱</div>
-                            <div class={styles.radioBox}>
-                                {
-                                    [{name:'五线谱',value:'staff'},{name:'首调',value:'firstTone'},{name:'固定谱',value:'fixedTone'}].map(item=>{
-                                        return <div class={ state.musicRenderType===item.value && styles.active } onClick={ ()=>{ 
-                                            state.musicRenderType = item.value as any
-                                            // resetRenderMusicScore(state.musicRenderType)
-                                            headTopData.settingMode = false
-                                            refreshMusicSvg();
-                                        } }>{item.name}</div>
-                                    })
-                                }
-                            </div>
-                        </div>
+                        {
+                            state.enableNotation || state.specialShowNotation ? 
+                            <div class={styles.cellBox}>
+                                <div class={styles.tit}>转谱</div>
+                                <div class={styles.radioBox}>
+                                    {
+                                        notationList.value.map(item=>{
+                                            return <div class={ state.musicRenderType===item.value && styles.active } onClick={ ()=>{ 
+                                                state.musicRenderType = item.value as any
+                                                // resetRenderMusicScore(state.musicRenderType)
+                                                headTopData.settingMode = false
+                                                refreshMusicSvg();
+                                            } }>{item.name}</div>
+                                        })
+                                    }
+                                </div>
+                            </div> : null
+                        }
+
                         <div class={styles.cellBtnBox}>
                             <img  src={headImg("tpbz.png")} onClick={() => (helperData.screenModelShow = true)} />
                             <img  src={headImg("yjfk.png")} onClick={() => (helperData.recommendationShow = true)} />

+ 23 - 6
src/state.ts

@@ -28,7 +28,7 @@ export type IDifficulty = "BEGINNER" | "ADVANCED" | "PERFORMER";
 export enum EnumMusicRenderType {
   /** 五线谱 */
   staff = "staff",
-  /** 简谱 */
+  /** 简谱(首调) */
   firstTone = "firstTone",
   /** 固定音高 */
   fixedTone = "fixedTone",
@@ -277,6 +277,8 @@ const state = reactive({
   enableEvaluation: true,
   /** 是否支持转谱 */
   enableNotation: false,
+  /** 后台设置不能转谱,但是默认谱面不是五线谱时,需要显示转谱按钮,此时只能转首调和固定调 */
+  specialShowNotation: false,
   /** 曲谱ID */
   examSongId: "",
   /** 内容平台的曲谱ID,可能会和业务端的id不一样 */
@@ -1471,10 +1473,17 @@ const setState = (data: any, index: number) => {
     pitchTrack = data.musicalInstruments?.find((item: any) => item.code === musicalCode)
   }
   let musicalRenderType = ''
-  if (pitchTrack?.defaultScore) {
-    musicalRenderType = pitchTrack?.defaultScore === 'STAVE' ? 'staff' : pitchTrack?.defaultScore === 'JIAN' ? 'fixedTone' : pitchTrack?.defaultScore === 'FIRST' ? 'firstTone' : ''
-  }
-  state.musicRenderType = query.musicRenderType || musicalRenderType || EnumMusicRenderType.firstTone;
+  // if (pitchTrack?.defaultScore) {
+  //   musicalRenderType = pitchTrack?.defaultScore === 'STAVE' ? 'staff' : pitchTrack?.defaultScore === 'JIAN' ? 'fixedTone' : pitchTrack?.defaultScore === 'FIRST' ? 'firstTone' : ''
+  // }
+  // state.musicRenderType = query.musicRenderType || musicalRenderType || EnumMusicRenderType.firstTone;
+  /**
+   * 2024.7.30,使用新的字段
+   * 谱面类型,scoreType
+   * STAVE("五线谱"),JIAN("固定调"),FIRST("首调"),
+   */
+  musicalRenderType = data.scoreType === 'STAVE' ? 'staff' : data.scoreType === 'JIAN' ? 'fixedTone' : data.scoreType === 'FIRST' ? '' : 'firstTone';
+  state.musicRenderType = query.musicRenderType || musicalRenderType || EnumMusicRenderType.firstTone;  
   /**
    * TODO:摇篮曲特殊处理
    */
@@ -1483,7 +1492,15 @@ const setState = (data: any, index: number) => {
       state.musicRenderType = EnumMusicRenderType.firstTone;
     }
   }
-  state.enableNotation = pitchTrack ? data.isConvertibleScore && pitchTrack.transferFlag : data.isConvertibleScore
+  /**
+   * 2024.7.30,使用新的字段
+   * 能否转谱,isConvertibleScore
+   * true:能转谱,false:不能转谱
+   * 额外的逻辑:后台设置不能转谱时,如果默认谱面不是五线谱,需要显示转谱按钮,但是只能转首调和固定调
+   */  
+  // state.enableNotation = pitchTrack ? data.isConvertibleScore && pitchTrack.transferFlag : data.isConvertibleScore
+  state.enableNotation = data.isConvertibleScore
+  state.specialShowNotation = !data.isConvertibleScore && data.scoreType !== 'STAVE';
   console.log("state对象", state);
   // 评测基准频率
   state.baseFrequency = data.evaluationFrequency ? data.evaluationFrequency.split(",")[0] : 440