Browse Source

feat: 播放倍率不等于1,或者是选段评测,APP暂时不支持保存演奏,需要给出提示

TIANYONG 8 months ago
parent
commit
54b2b9533f

+ 2 - 0
src/pages/detail/runtime.ts

@@ -148,6 +148,8 @@ const state = reactive({
   preAppAudioPlayTime: 0,
   /** app返回的音频文件总时长 */
   appAudioTotalTime: 0,
+  /** 播放倍率不等于1,或者是选段评测,APP暂时不支持保存演奏,需要给出提示 */
+  initShow: true,
 })
 
 const syncStepIndex = (i: number) => {

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

@@ -1,5 +1,5 @@
 import { Button, Toast, Popup } from 'vant'
-import { defineComponent, onBeforeUnmount, onMounted, Ref, ref, Teleport, Transition, reactive } from 'vue'
+import { defineComponent, onBeforeUnmount, onMounted, Ref, ref, Teleport, Transition, reactive, computed } from 'vue'
 import '@dotlottie/player-component'
 import detailState, { isRhythmicExercises } from '/src/pages/detail/state'
 import SettingState from '/src/pages/detail/setting-state'
@@ -993,6 +993,15 @@ export default defineComponent({
       submitMaxScore()
     })
 
+    // 播放倍率不等于1,或者是选段评测,APP暂时不支持保存演奏,需要给出提示
+    const showNotSaveTip = computed(() => {
+      if ((runtime.basePlayRate != 1 || detailState.section.length === 2) && runtime.initShow) {
+        return true
+      } else {
+        return false
+      }
+    })
+
     expose({
       setPlayer,
       startPlay,
@@ -1010,6 +1019,8 @@ export default defineComponent({
         <Teleport to="body" key="StartEvaluating">
           {/* 评测完成结果显示 */}
           <Evaluating data={endResult.value} />
+          {/** 调速或者选段后,评测给出提示 */}
+          { showNotSaveTip.value && <div class={styles.noSaveTip}>调整速度或选段后评测暂不支持保存演奏哦~<i onClick={() => runtime.initShow = false}></i></div> }
 
           <Transition name="finish">
             {startButtonShow.value && !delayData.open && modelType.value !== 'init' && (
@@ -1019,6 +1030,7 @@ export default defineComponent({
                 }}
                 class={[styles.evaluatStartBtn]}
                 onClick={async () => {
+                  runtime.initShow = false
                   // 评测模式,如果有系统节拍器,需要先播放系统节拍器
                   if (detailState.needTick) {
                     await RuntimeUtils.setEvaluatTick()

BIN
src/subpages/colexiu/buttons/icons/close_icon.png


+ 25 - 0
src/subpages/colexiu/buttons/index.module.less

@@ -493,3 +493,28 @@ body {
     }
   }
 }
+
+.noSaveTip {
+  background: rgba(0,0,0,0.7);
+  font-size: 14Px;
+  border-radius: 8Px;
+  display: flex;
+  align-items: center;
+  padding: 8Px 12Px;
+  position: fixed;
+  left: 50%;
+  top: 100Px;
+  transform: translateX(-50%);
+  z-index: 1;
+  color: #fff;
+  > i {
+    width: 12Px;
+    height: 12Px;
+    background-image: url('./icons//close_icon.png');
+    background-size: 100% 100%;
+    background-position: center center;
+    background-repeat: no-repeat;
+    margin-left: 16Px;
+    cursor: pointer;
+  }
+}

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

@@ -102,6 +102,7 @@ const back: () => void = () => {
 export type IModelType = 'practice' | 'evaluation' | 'follow' | 'init'
 export const modelType = ref<IModelType>('init')
 export const onChangeModelType = (type: IModelType) => {
+  runtime.initShow = true;
   if (type === modelType.value) return
   // 跟练模式,光标只有音符模式,无节拍模式
   if (type === 'follow' && metronomeData.cursorMode === 2) {

+ 1 - 1
src/subpages/colexiu/popups/evaluating/content.tsx

@@ -250,7 +250,7 @@ export default defineComponent({
                 </div>
               </div>
 
-              {isUnitTest || detailState.section.length === 2 ? null : !detailState.isHideEvaluatReportSaveBtn ? (
+              {(isUnitTest || detailState.section.length === 2 || runtime.basePlayRate != 1) ? null : !detailState.isHideEvaluatReportSaveBtn ? (
                 // <div class={styles.rigthBtns}>
                 //   <div class={styles.skepBtn} onClick={() => emit('upload')}>
                 //     <img src={iconUpload} />