|
@@ -1,4 +1,4 @@
|
|
|
-import { defineComponent, onMounted, onUnmounted, reactive, Ref, ref, watch, nextTick } from 'vue'
|
|
|
+import { defineComponent, onMounted, onUnmounted, reactive, Ref, ref, watch, nextTick, Transition } from 'vue'
|
|
|
import MusicSheet from '/src/music-sheet'
|
|
|
import store from 'store'
|
|
|
// import { throttle } from 'lodash'
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
useActivity,
|
|
|
useConfigMusicSheetFreeRate,
|
|
|
} from './uses'
|
|
|
-import Buttons, { IModelType, modelType, onChangeModelType } from './buttons'
|
|
|
+import Buttons, { followRef, IModelType, modelType, onChangeModelType } from './buttons'
|
|
|
import ButtonsPlayer from './buttons/player'
|
|
|
import Permission from './popups/permission'
|
|
|
import MusicList from './music-list'
|
|
@@ -43,9 +43,8 @@ import { useRoute } from 'vue-router'
|
|
|
import styles from './index.module.less'
|
|
|
import Tips from './tips'
|
|
|
import AfterClassTraining from './afterClassTraining'
|
|
|
-
|
|
|
-const search = useOriginSearch()
|
|
|
-const browserInfo = browser()
|
|
|
+import ModelWraper from './buttons/model-wraper'
|
|
|
+import Follow from './popups/follow'
|
|
|
|
|
|
// json化曲谱的note信息和svg
|
|
|
export const musicJSON = reactive({
|
|
@@ -60,8 +59,11 @@ export const MusicSheetRef = ref()
|
|
|
export default defineComponent({
|
|
|
name: 'Colexiu',
|
|
|
setup() {
|
|
|
+ const search = useOriginSearch()
|
|
|
+ const browserInfo = browser()
|
|
|
+ const tipShow = ref(false)
|
|
|
const route = useRoute()
|
|
|
- // console.log("🚀 ~ route", route.query, search)
|
|
|
+ console.log("🚀 ~ route", route.query, search)
|
|
|
detailState.midiPlayIniting = true
|
|
|
const renderLoading = ref(true)
|
|
|
const renderError = ref(false)
|
|
@@ -214,14 +216,6 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
console.timeEnd('获取数据')
|
|
|
- // console.time('循环引用')
|
|
|
- // if (detailState.times.length) {
|
|
|
- // for(let i = 0; i < detailState.times.length;i++){
|
|
|
- // let item = detailState.times[i]
|
|
|
- // item.measures = item.measures.map((n: any) => detailState.times.find((m: any) => m.NoteToGraphicalNoteObjectId === n.NoteToGraphicalNoteObjectId))
|
|
|
- // }
|
|
|
- // }
|
|
|
- // console.timeEnd('循环引用')
|
|
|
console.log('🚀 ~ detailState.times', detailState.times)
|
|
|
|
|
|
const songEndTime = detailState.times[detailState.times.length - 1 || 0]?.endtime || 0
|
|
@@ -253,6 +247,7 @@ export default defineComponent({
|
|
|
modelType.value = 'evaluation'
|
|
|
}
|
|
|
|
|
|
+ // 如果进来为评测模式,直接设置成评测模式
|
|
|
const _modelType: IModelType = route.query.modelType as IModelType
|
|
|
if (_modelType && _modelType == 'evaluation') {
|
|
|
nextTick(() => {
|
|
@@ -318,7 +313,7 @@ export default defineComponent({
|
|
|
browserInfo.android && 'android',
|
|
|
]}
|
|
|
>
|
|
|
- <Buttons class={styles.buttons} />
|
|
|
+ <Transition name="van-slide-down">{!renderLoading.value && <Buttons class={styles.buttons} />}</Transition>
|
|
|
<div
|
|
|
id="colexiu-detail-music-sheet"
|
|
|
class={[styles.musicSheet, { evaluating: runtime.evaluatingStatus || modelType.value === 'follow' }]}
|
|
@@ -333,10 +328,13 @@ export default defineComponent({
|
|
|
: '',
|
|
|
}}
|
|
|
>
|
|
|
- <div style={{width: !renderLoading.value ? musicSheetStyle.width : ''}} class={styles.headTitle}>{detail.value.musicSheetName}</div>
|
|
|
+ {!!detail.value.musicSheetName && (
|
|
|
+ <div style={{ width: !renderLoading.value ? musicSheetStyle.width : '' }} class={styles.headTitle}>
|
|
|
+ {detail.value.musicSheetName}
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
<Skeleton class={styles.skeleton} rowWidth="80%" title loading={detailStatus.value === 'loading'} />
|
|
|
- <Skeleton class={styles.skeleton} row={6} loading={renderLoading.value && !error} />
|
|
|
- {error && <Empty />}
|
|
|
+ <Skeleton class={styles.skeleton} row={6} loading={renderLoading.value} />
|
|
|
{score.value && fingeringInited && (
|
|
|
<>
|
|
|
<MusicSheet
|
|
@@ -380,8 +378,9 @@ export default defineComponent({
|
|
|
)}
|
|
|
</>
|
|
|
)}
|
|
|
+ {modelType.value === 'follow' && <Follow ref={followRef} />}
|
|
|
</div>
|
|
|
- {!loading && !error && <ButtonsPlayer />}
|
|
|
+ {!renderLoading.value && <ButtonsPlayer />}
|
|
|
{/* 节拍器弹窗 */}
|
|
|
<TickPopup score={score.value} />
|
|
|
<Permission />
|
|
@@ -393,10 +392,30 @@ export default defineComponent({
|
|
|
<MusicList />
|
|
|
{/* 保存json */}
|
|
|
<ProductJson ref={productRef} />
|
|
|
- {/* 引导 */}
|
|
|
- <Tips />
|
|
|
+
|
|
|
{/* 后台课后训练小节选择 */}
|
|
|
<AfterClassTraining />
|
|
|
+
|
|
|
+ {/* 模式选择 */}
|
|
|
+ <Transition
|
|
|
+ name="van-slide-up"
|
|
|
+ onAfterEnter={() => {
|
|
|
+ tipShow.value = true
|
|
|
+ console.log('2342')
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {!renderLoading.value && modelType.value == 'init' && <ModelWraper onChangeModelType={onChangeModelType} />}
|
|
|
+ </Transition>
|
|
|
+
|
|
|
+ {/* 引导 */}
|
|
|
+ {tipShow.value && <Tips />}
|
|
|
+
|
|
|
+ {/* 加载错误 */}
|
|
|
+ {error && (
|
|
|
+ <div class={styles.errorWrap}>
|
|
|
+ <Empty />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
</div>
|
|
|
)
|
|
|
}
|