import { defineComponent, reactive, computed, toRef } from "vue"; import styles from "./index.module.less" import { headImg } from "../image"; import { headTopData } from "../index" import { Switch, showToast, Field, Popup, Slider } from "vant"; import state, { refreshMusicSvg, IPlatform, checkMoveNoSave } from "/src/state" import { api_closeCamera, api_openCamera, api_savePicture } from "/src/helpers/communication"; import { smoothAnimationState} from "/src/page-instrument/view-detail/smoothAnimation" import Recommendation from "../../custom-plugins/helper-model/recommendation"; import { resetRenderMusicScore } from "/src/view/music-score"; import ScreenModel from "../../custom-plugins/helper-model/screen-model"; import { getQuery } from "/src/utils/queryString"; import { reCheckDelay } from "/src/page-instrument/evaluat-model" import { audioData, changeMingSongType } from "/src/view/audio-list" import useDrag from "/src/view/plugins/useDrag/index"; import Dragbom from "/src/view/plugins/useDrag/dragbom"; import { storeData } from "/src/store"; import { getGuidance, setGuidance } from "../../custom-plugins/guide-page/api"; import { handleLoadBeatMusic } from "/src/view/audio-list" export default defineComponent({ name: "settting", setup() { const query = getQuery(); const helperData = reactive({ screenModelShow: false, // 投屏帮助 recommendationShow: false, // 建议 }); const zoomList = [{name:'0.5x',value: 0.5},{name:'0.75x',value: 0.65},{name:'1x',value: 0.8},{name:'1.25x',value: 1.25},{name:'1.5x',value: 1.5},{name:'1.75x',value: 1.75},{name:'2x',value: 2},{name:'2.25x',value: 2.25}] const parentClassName = "recommenBoxClass_drag"; const userId = storeData.user?.id ? String(storeData.user?.id) : ""; const positionInfo = state.platform !== IPlatform.PC ? { styleDrag: { value: null }, } : useDrag([`${parentClassName} .top_draging`, `${parentClassName} .bom_drag`], parentClassName, toRef(helperData, "recommendationShow"), userId); // 完成拖动弹窗引导页 const handleGuide = async () => { state.guideInfo.teacherDrag = true; try { const res = await setGuidance({ guideTag: "guideInfo", guideValue: JSON.stringify(state.guideInfo) }); } catch (e) { console.log(e); } }; // 加减评测频率 const operateHz = (type: number) => { const minFrequency = state.baseFrequency - 10, maxFrequency = state.baseFrequency + 10 let currentFrequency = state.setting.frequency if (type === 1) { if (currentFrequency - 1 < minFrequency) return showToast({ message: `最低标准音高${minFrequency}HZ` }) currentFrequency = currentFrequency - 1 } else { if (currentFrequency + 1 > maxFrequency) return showToast({ message: `最高标准音高${maxFrequency}HZ` }) currentFrequency = currentFrequency + 1 } 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 () => (
{ headTopData.settingMode = false }} />
{ state.isShowFingering && state.fingeringInfo.name && ["practise", "follow", "evaluating"].includes(state.modeType) && state.playType === "play" &&
指法
} { ["practise", "follow"].includes(state.modeType) &&
循环播放
} { !state.isCombineRender &&
合并休止小节
{ await checkMoveNoSave(); headTopData.settingMode = false const _time = setTimeout(() => { clearTimeout(_time) refreshMusicSvg(); }, 100); }} >
} { state.isSingleLine && state.modeType === "practise" && !state.isCombineRender && !state.isPercussion &&
旋律线
{ state.melodyLine = value }} >
} { state.modeType === 'practise' && state.playSource === "mingSong" && state.mingSong && state.mingSongGirl &&
唱名类型
{ [{name:'男声',value:1}, {name:'女声',value:0}].map(item=>{ return
{ if(audioData.mingSongType === item.value){ return } audioData.mingSongType = item.value as 0|1 // 加载节拍器音频 handleLoadBeatMusic() changeMingSongType() } }>{item.name}
}) }
} { state.modeType === "evaluating" && <> { !query.workRecord &&
评测难度
{ [{name:'入门',value:"BEGINNER"},{name:'进阶',value:"ADVANCED"},{name:'大师',value:"PERFORMER"}].map(item=>{ return
{ state.setting.evaluationDifficulty = item.value as any } }>{item.name}
}) }
}
延迟检测
{/* */}
{ reCheckDelay(); }}>重新检测
摄像头
{ if (value) { const res = await api_openCamera(); // 没有授权 if (res?.content?.reson) { state.setting.camera = false } else { state.setting.camera = true } } else { api_closeCamera(); state.setting.camera = false; } }} >
不透明度
{{ button: () =>
{ state.setting.cameraOpacity }
}}
标准音高
operateHz(1)} />
{state.setting.frequency}HZ
operateHz(2)} />
反应时间
毫秒
} {/** 练习模式才有单行/多行谱切换功能,跟练、评测只有单行谱模式 */} { ["practise", "evaluating"].includes(state.modeType) ?
切换谱面
{ [{name:'单行谱',value:true},{name:'多行谱',value:false}].map(item=>{ return
{ if(state.isSingleLine === item.value){ return } await checkMoveNoSave(); headTopData.settingMode = false // resetRenderMusicScore(state.musicRenderType) const _time = setTimeout(() => { state.isSingleLine = item.value clearTimeout(_time) refreshMusicSvg(); }, 100); // musicScoreRef.value?.refreshMusicScore() } }>{item.name}
}) }
: null } { state.enableNotation || state.specialShowNotation ?
转谱
{ notationList.value.map(item=>{ return
{ if(state.musicRenderType === item.value){ return } await checkMoveNoSave(); headTopData.settingMode = false // resetRenderMusicScore(state.musicRenderType) const _time = setTimeout(() => { state.musicRenderType = item.value as any clearTimeout(_time) refreshMusicSvg(); }, 100); } }>{item.name}
}) }
: null } { !state.isCbsView ?
谱面大小
{ zoomList.map(item=>{ return
{ if(state.zoom === item.value){ return } await checkMoveNoSave(); headTopData.settingMode = false // resetRenderMusicScore(state.musicRenderType) const _time = setTimeout(() => { state.zoom = item.value as any localStorage.setItem('scoreZoom',String(state.zoom)) clearTimeout(_time) refreshMusicSvg(); }, 100); } }>{item.name}
}) }
: null }
(helperData.screenModelShow = true)} /> { !query.isCbs && (helperData.recommendationShow = true)} /> }
{ helperData.recommendationShow = false; }} /> {state.platform === IPlatform.PC && } { helperData.screenModelShow = false; }} position="right" teleport="body" > { helperData.screenModelShow = false; }} />
); }, });