瀏覽代碼

feat: 选择声轨增加重置按钮

TIANYONG 5 月之前
父節點
當前提交
e20203eba9

+ 17 - 1
src/page-instrument/header-top/settting/index.tsx

@@ -84,7 +84,23 @@ export default defineComponent({
                                     <div class={styles.tit}>循环播放</div>
                                     <Switch v-model={state.setting.repeatAutoPlay}></Switch>
                                 </div>
-                        }                        
+                        }    
+                        {   !state.isCombineRender &&                    
+                            <div class={styles.cellBox}>
+                                <div class={styles.tit}>合并休止小节</div>
+                                <Switch 
+                                    v-model={state.setting.combineMultipleRest}
+                                    onChange={ async (value) => {
+                                        await checkMoveNoSave();
+                                        headTopData.settingMode = false
+                                        const _time = setTimeout(() => {
+                                            clearTimeout(_time)
+                                            refreshMusicSvg();
+                                        }, 100);
+                                    }}
+                                ></Switch>
+                            </div>
+                        }                                            
                         {/* {
                             state.isSingleLine && state.modeType === "practise" && !state.isCombineRender && !state.isPercussion && 
                                 <div class={styles.cellBox}>

+ 5 - 0
src/state.ts

@@ -441,6 +441,8 @@ const state = reactive({
     reactionTimeMs: 0,
     /** 节拍器音量 */
     beatVolume: 50,
+    /** 合并休止小节 */
+    combineMultipleRest: true,
   },
   /** 后台设置的基准评测频率 */
   baseFrequency: 440,
@@ -1520,6 +1522,9 @@ function xmlToTracks(xmlString: string) {
   const partNames = Array.from(xmlParse.getElementsByTagName('part-name'));
   return partNames.reduce((arr: string[], item) => {
     const textContent = item?.textContent?.trim()
+    if (textContent?.toLocaleLowerCase() === "common") {
+      (window as any).HasCommonTrack = true;
+    }
     if (textContent != "COMMON" && textContent != "common" && textContent) {
       arr.push(textContent)
     }

+ 2 - 2
src/view/music-score/index.tsx

@@ -97,7 +97,6 @@ export default defineComponent({
 					drawComposer: false, // 渲染作词家
 					// pageBackgroundColor: '#609FCF',
 					// autoGenerateMultipleRestMeasuresFromRestMeasures: state.isSingleLine ? false : true, // 连续休止小节是否合并显示
-					autoGenerateMultipleRestMeasuresFromRestMeasures: true,
 					// darkMode: true, // 暗黑模式
 					// pageFormat: 'A4_P',
 					// autoBeam: true,
@@ -115,7 +114,8 @@ export default defineComponent({
 				drawLyrics: (((!state.accompany && !state.music ) || state.playType === 'sing' || !state.isEvxml) && !state.isSimplePage) ? true : false, // 演唱模式才渲染歌词,simple页面不显示歌词
 				drawPartNames: props.showPartNames, // 是否渲染声轨名称
 				defaultColorMusic: props.musicColor, // 颜色
-				renderSingleHorizontalStaffline: state.isSingleLine ? true : false
+				renderSingleHorizontalStaffline: state.isSingleLine ? true : false,
+				autoGenerateMultipleRestMeasuresFromRestMeasures: state.setting.combineMultipleRest, // 是否自动合并休止小节
 			})
 			// osmd.EngravingRules.CompactMode = true // 紧凑模式
 			// osmd.EngravingRules.PageRightMargin = state.isSingleLine ? (window.innerWidth+200)/10 : 2;

二進制
src/view/plugins/toggleMusicSheet/choosePartName/imgs/resetBtn.png


+ 10 - 6
src/view/plugins/toggleMusicSheet/choosePartName/index.module.less

@@ -1,5 +1,6 @@
 .container {
-  width: 334px;
+  width: 510px;
+  height: 320px;
   .head{
       height: 42px;
       position: relative;
@@ -40,7 +41,7 @@
       .titCon{
         display: flex;
         align-items: center;
-        padding: 10px 0;
+        padding-top: 10px;
         &.stickyTit{
           position: sticky;
           top: -1px;
@@ -61,8 +62,12 @@
         }
       }
       .content{
+        display: flex;
+        flex-wrap: wrap;
+        .specialBtn {
+          width: 96px;
+        }
         .selBtn{
-          width: 100%;
           height: 34px;
           line-height: 34px;
           background: #F6F6F6;
@@ -74,9 +79,8 @@
           cursor: pointer;
           border:1px solid transparent;
           margin-top: 10px;
-          &:first-child{
-            margin-top: 0;
-          }
+          margin-right: 10px;
+          padding: 0 8px;
           &.active{
             background: #F2FFFC;
             border-color: #01C1B5;

+ 19 - 7
src/view/plugins/toggleMusicSheet/choosePartName/index.tsx

@@ -6,7 +6,8 @@ import changeName from "./imgs/changeName.png"
 import { headImg } from "/src/page-instrument/header-top/image";
 import { toggleMusicSheet } from "../index"
 import okBtn from "./imgs/okBtn.png"
-import cancelBtn from "./imgs/cancelBtn.png"
+import resetBtn from "./imgs/resetBtn.png"
+import { getQuery } from "/src/utils/queryString";
 
 export default defineComponent({
   name: 'choosePartName',
@@ -22,6 +23,7 @@ export default defineComponent({
   },
   emits: ['close'],
   setup(props, { emit }) {
+    const query: any = getQuery();
     const selValues = ref([...props.partIndexs]);
     watch(
       () => toggleMusicSheet.show,
@@ -76,11 +78,11 @@ export default defineComponent({
             {
               state.isScoreRender &&
                 <>
-                  <div class={styles.titCon}>
+                  {/* <div class={styles.titCon}>
                     <div class={styles.tit}>选择总谱</div>
-                  </div>
+                  </div> */}
                   <div class={styles.content}>
-                    <div class={[styles.selBtn, selValues.value.includes(999) && styles.active]} onClick={()=>{ hanldeSelSheet(999, true) }}>总谱</div>
+                  <div class={[styles.selBtn, styles.specialBtn, selValues.value.includes(999) && styles.active]} onClick={()=>{ hanldeSelSheet(999, true) }}>总谱</div>
                   </div>
                 </>
             }
@@ -100,12 +102,22 @@ export default defineComponent({
             </div>
           </div>
           <div class={styles.btnCon}>
-              <img src={ cancelBtn } class={styles.btn} onClick={async () => {
-                  emit('close')
+              <img src={ resetBtn } class={styles.btn} onClick={async () => {
+                  selValues.value = []
                 }
               }></img>
               <img src={ okBtn } class={styles.btn} onClick={async () => {
-                  await checkMoveNoSave();
+                  if (!selValues.value.length) {
+                    showToast({
+                      position: "top",
+                      message: "最少需要选择一个声部"
+                    });
+                    return
+                  }
+                  if (query.isMove) {
+                    await checkMoveNoSave();
+                  }
+                  toggleMusicSheet.show = false
                   nextTick(()=>{
                     emit('close', selValues.value)
                   })