|
@@ -30,7 +30,10 @@ import {
|
|
|
randomScoreElement,
|
|
|
renderScore,
|
|
|
setting,
|
|
|
- elementDirection
|
|
|
+ elementDirection,
|
|
|
+ setting_modal,
|
|
|
+ initSelectScorePartModal,
|
|
|
+ renderScoreModal
|
|
|
} from './setting';
|
|
|
import { handleStartTick, hendleEndTick } from './tick';
|
|
|
import { handleStartBeat, hendleEndBeat } from './beat-tick';
|
|
@@ -39,6 +42,7 @@ import { useRoute } from 'vue-router';
|
|
|
import useDrag from '@/hooks/useDrag';
|
|
|
import useDragGuidance from '@/hooks/useDrag/useDragGuidance';
|
|
|
import { state as stateData } from '@/state';
|
|
|
+import SettingPcModal from './setting-pc-modal';
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'tempo-practice',
|
|
@@ -63,6 +67,7 @@ export default defineComponent({
|
|
|
platform: route.query.platform,
|
|
|
win: route.query.win,
|
|
|
settingStatus: false,
|
|
|
+ settingPcStatus: false,
|
|
|
speedList: [
|
|
|
{ text: '40', value: 40, color: '#060606' },
|
|
|
{ text: '50', value: 50, color: '#060606' },
|
|
@@ -86,8 +91,10 @@ export default defineComponent({
|
|
|
playPos: (route.query.imagePos || 'left') as 'left' | 'right' // 数字课堂老师端上课 镜像字段
|
|
|
});
|
|
|
// 返回
|
|
|
- const goback = () => {
|
|
|
- if (route.query.backBtnType === 'microapp') { // microapp 老师端应用里面打开单独处理返回逻辑
|
|
|
+ const goback = (e: any) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ if (route.query.backBtnType === 'microapp') {
|
|
|
+ // microapp 老师端应用里面打开单独处理返回逻辑
|
|
|
window.parent.postMessage(
|
|
|
{
|
|
|
api: 'iframe_exit'
|
|
@@ -104,14 +111,35 @@ export default defineComponent({
|
|
|
postMessage({ api: 'goBack' });
|
|
|
};
|
|
|
|
|
|
+ /* 修改设置的某个值 */
|
|
|
+ const updateSettingValue = (key: string, value: any) => {
|
|
|
+ if (state.settingStatus) {
|
|
|
+ setting_modal[key] = value;
|
|
|
+ } else {
|
|
|
+ setting[key] = value;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ /* 获取设置的某一个值 */
|
|
|
+ const getSettingValue = (key: string) => {
|
|
|
+ let value: any = null;
|
|
|
+ if (state.settingStatus) {
|
|
|
+ value = setting_modal[key];
|
|
|
+ } else {
|
|
|
+ value = setting[key];
|
|
|
+ }
|
|
|
+ return value;
|
|
|
+ };
|
|
|
+
|
|
|
/** 播放切换 */
|
|
|
const handlePlay = async () => {
|
|
|
- if (setting.playState === 'pause') {
|
|
|
- setting.playState = 'play';
|
|
|
- if (setting.playType === 'beat') {
|
|
|
- await handleStartTick();
|
|
|
+ const playState = getSettingValue('playState');
|
|
|
+ const playType = getSettingValue('playType');
|
|
|
+ if (playState === 'pause') {
|
|
|
+ updateSettingValue('playState', 'play');
|
|
|
+ if (playType === 'beat') {
|
|
|
+ await handleStartTick(state.settingStatus);
|
|
|
} else {
|
|
|
- await handleStartBeat();
|
|
|
+ await handleStartBeat(state.settingStatus);
|
|
|
}
|
|
|
} else {
|
|
|
handleStop();
|
|
@@ -120,19 +148,23 @@ export default defineComponent({
|
|
|
/** 播放类型 */
|
|
|
const handlePlayType = () => {
|
|
|
handleStop();
|
|
|
+ // 判断是否有设置
|
|
|
+
|
|
|
if (setting.playType === 'beat') {
|
|
|
- setting.playType = 'tempo';
|
|
|
+ updateSettingValue('playType', 'tempo');
|
|
|
} else {
|
|
|
- setting.playType = 'beat';
|
|
|
+ updateSettingValue('playType', 'beat');
|
|
|
}
|
|
|
};
|
|
|
|
|
|
const handleStop = () => {
|
|
|
- setting.playState = 'pause';
|
|
|
- if (setting.playType === 'beat') {
|
|
|
- hendleEndTick();
|
|
|
+ const playType = getSettingValue('playType');
|
|
|
+ updateSettingValue('playState', 'pause');
|
|
|
+
|
|
|
+ if (playType === 'beat') {
|
|
|
+ hendleEndTick(state.settingStatus);
|
|
|
} else {
|
|
|
- hendleEndBeat();
|
|
|
+ hendleEndBeat(state.settingStatus);
|
|
|
}
|
|
|
};
|
|
|
|
|
@@ -186,7 +218,7 @@ export default defineComponent({
|
|
|
if (route.query.dataJson) {
|
|
|
dataJson = JSON.parse(route.query.dataJson as any);
|
|
|
}
|
|
|
- console.log(dataJson, 'dataJson', props.dataJson);
|
|
|
+ // console.log(dataJson, 'dataJson', props.dataJson);
|
|
|
|
|
|
setting.element = dataJson.element;
|
|
|
setting.beat = dataJson.beat;
|
|
@@ -196,6 +228,14 @@ export default defineComponent({
|
|
|
setting.playType = dataJson.playType;
|
|
|
setting.speed = dataJson.speed;
|
|
|
|
|
|
+ setting_modal.element = dataJson.element;
|
|
|
+ setting_modal.beat = dataJson.beat;
|
|
|
+ setting_modal.barLine = dataJson.barLine;
|
|
|
+ setting_modal.tempo = dataJson.tempo;
|
|
|
+ setting_modal.scorePart = dataJson.scorePart;
|
|
|
+ setting_modal.playType = dataJson.playType;
|
|
|
+ setting_modal.speed = dataJson.speed;
|
|
|
+
|
|
|
state.dataJson = dataJson;
|
|
|
} catch {
|
|
|
//
|
|
@@ -214,6 +254,21 @@ export default defineComponent({
|
|
|
// }
|
|
|
// );
|
|
|
|
|
|
+ /** 打开设置 */
|
|
|
+ const onOpenSetting = () => {
|
|
|
+ handleStop();
|
|
|
+ // 初始化设置的数据
|
|
|
+ for (let i in setting) {
|
|
|
+ setting_modal[i] = JSON.parse(JSON.stringify(setting[i]));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (state.win === 'pc' || state.platform === 'modal') {
|
|
|
+ state.settingPcStatus = true;
|
|
|
+ } else {
|
|
|
+ state.settingStatus = true;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
if (route.query.modeType) {
|
|
|
state.modeType = route.query.modeType;
|
|
@@ -243,7 +298,7 @@ export default defineComponent({
|
|
|
settingBoxDragData = useDrag(
|
|
|
[`${settingBoxClass} .iconTitBoxMove`, `${settingBoxClass} .bom_drag`],
|
|
|
settingBoxClass,
|
|
|
- toRef(state, 'settingStatus'),
|
|
|
+ toRef(state, 'settingPcStatus'),
|
|
|
stateData.user.data.id
|
|
|
);
|
|
|
}
|
|
@@ -252,6 +307,7 @@ export default defineComponent({
|
|
|
return () => (
|
|
|
<div
|
|
|
onClick={() => {
|
|
|
+ state.settingStatus = false;
|
|
|
window.parent.postMessage(
|
|
|
{
|
|
|
api: 'clickTempo'
|
|
@@ -265,238 +321,303 @@ export default defineComponent({
|
|
|
state.platform === 'modal' ? styles.modal : '',
|
|
|
state.modeType === 'courseware' ? styles.courseware : ''
|
|
|
]}>
|
|
|
- <div class={styles.head}>
|
|
|
- {state.modeType !== 'courseware' && (
|
|
|
- <div
|
|
|
- class={[styles.back, styles.iconBack]}
|
|
|
- onClick={goback}
|
|
|
- style={{ cursor: 'pointer' }}>
|
|
|
- <img src={icon_back} />
|
|
|
- </div>
|
|
|
- )}
|
|
|
- <div class={styles.title}>
|
|
|
- <img src={icon_title} />
|
|
|
- </div>
|
|
|
- {state.modeType !== 'courseware' && state.platform !== 'modal' ? (
|
|
|
- <div
|
|
|
- class={styles.back}
|
|
|
- style={{ cursor: 'pointer' }}
|
|
|
- onClick={() => {
|
|
|
- handleStop();
|
|
|
- state.settingStatus = true;
|
|
|
- }}>
|
|
|
- <img src={icon_setting} />
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.containerLeft,
|
|
|
+ state.settingStatus ? styles.leftShow : ''
|
|
|
+ ]}>
|
|
|
+ <div class={styles.head}>
|
|
|
+ {state.modeType !== 'courseware' && (
|
|
|
+ <div
|
|
|
+ class={[styles.back, styles.iconBack]}
|
|
|
+ onClick={goback}
|
|
|
+ style={{ cursor: 'pointer' }}>
|
|
|
+ <img src={icon_back} />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ <div class={styles.title}>
|
|
|
+ <img src={icon_title} />
|
|
|
</div>
|
|
|
- ) : (
|
|
|
- <div class={styles.back}></div>
|
|
|
- )}
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class={styles.conCon}>
|
|
|
- <div class={styles.container}>
|
|
|
- {setting.scorePart?.map((item: any, i: number) => (
|
|
|
+ {state.modeType !== 'courseware' &&
|
|
|
+ state.platform !== 'modal' &&
|
|
|
+ !state.settingStatus ? (
|
|
|
<div
|
|
|
- class={[
|
|
|
- styles.beatSection,
|
|
|
- setting.scorePart.length >= 2 &&
|
|
|
- item.length !== 1 &&
|
|
|
- styles.small
|
|
|
- ]}>
|
|
|
- {item.map((child: any, jIndex: number) => (
|
|
|
- <div
|
|
|
- class={[styles.beat, child.selected ? styles.active : '']}
|
|
|
- onClick={(e: any) => {
|
|
|
- e.stopPropagation();
|
|
|
- }}>
|
|
|
- <div class={styles.direction}>
|
|
|
- <div
|
|
|
- class={styles.up}
|
|
|
- style={{ cursor: 'pointer' }}
|
|
|
- onClick={() => {
|
|
|
- if (setting.playState === 'play') return;
|
|
|
- if (setting.tempo.length <= 1) {
|
|
|
- showToast('无法切换,请选择至少2种节奏型');
|
|
|
- return;
|
|
|
- }
|
|
|
- // const obj = randomScoreElement(child.index);
|
|
|
- const obj = elementDirection('up', child.index);
|
|
|
- child.index = obj.index;
|
|
|
- child.url = obj.url;
|
|
|
- }}></div>
|
|
|
- <div
|
|
|
- class={styles.down}
|
|
|
- style={{ cursor: 'pointer' }}
|
|
|
- onClick={() => {
|
|
|
- if (setting.playState === 'play') return;
|
|
|
- if (setting.tempo.length <= 1) {
|
|
|
- showToast('无法切换,请选择至少2种节奏型');
|
|
|
- return;
|
|
|
- }
|
|
|
- // const obj = randomScoreElement(child.index);
|
|
|
- const obj = elementDirection('down', child.index);
|
|
|
- child.index = obj.index;
|
|
|
- child.url = obj.url;
|
|
|
- }}></div>
|
|
|
- </div>
|
|
|
- <div class={styles.imgSection}>
|
|
|
- <img src={getImage(child.url)} />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- ))}
|
|
|
+ class={styles.back}
|
|
|
+ style={{ cursor: 'pointer' }}
|
|
|
+ onClick={(e: any) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ onOpenSetting();
|
|
|
+ }}>
|
|
|
+ <img src={icon_setting} />
|
|
|
</div>
|
|
|
- ))}
|
|
|
+ ) : (
|
|
|
+ <div class={styles.back}></div>
|
|
|
+ )}
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div
|
|
|
- class={styles.footer}
|
|
|
- onClick={(e: any) => {
|
|
|
- e.stopPropagation();
|
|
|
- }}>
|
|
|
- {/* 播放 */}
|
|
|
- {state.playPos === 'left' && (
|
|
|
- <>
|
|
|
- {route.query.back === 'show' && (
|
|
|
+ <div class={styles.conCon}>
|
|
|
+ <div class={styles.container}>
|
|
|
+ {getSettingValue('scorePart')?.map((item: any, i: number) => (
|
|
|
<div
|
|
|
- class={[styles.play]}
|
|
|
- onClick={goback}
|
|
|
- style={{ cursor: 'pointer' }}>
|
|
|
- <img src={icon_back1} />
|
|
|
+ class={[
|
|
|
+ styles.beatSection,
|
|
|
+ getSettingValue('scorePart').length >= 2 &&
|
|
|
+ item.length !== 1 &&
|
|
|
+ styles.small
|
|
|
+ ]}>
|
|
|
+ {item.map((child: any, jIndex: number) => (
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.beat,
|
|
|
+ child.selected ? styles.active : '',
|
|
|
+ state.settingStatus && styles.disabledChange
|
|
|
+ ]}
|
|
|
+ // draggable={true}
|
|
|
+ onDragenter={(e: any) => {
|
|
|
+ e.preventDefault();
|
|
|
+ }}
|
|
|
+ onDragover={(e: any) => {
|
|
|
+ e.preventDefault();
|
|
|
+ }}
|
|
|
+ onDrop={(e: any) => {
|
|
|
+ let dropItem = e.dataTransfer.getData('text');
|
|
|
+ dropItem = dropItem ? JSON.parse(dropItem) : {};
|
|
|
+ // 判断是否有数据
|
|
|
+ if (dropItem.url) {
|
|
|
+ handleStop();
|
|
|
+ setting_modal.scorePart.forEach(
|
|
|
+ (part: Array<any>, ci: number) => {
|
|
|
+ part.forEach((child: any, cj: number) => {
|
|
|
+ if (i === ci && jIndex === cj) {
|
|
|
+ child.url = dropItem.url;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ onClick={(e: any) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ // 编辑时可以操作
|
|
|
+ if (state.settingStatus) {
|
|
|
+ handleStop();
|
|
|
+ initSelectScorePartModal();
|
|
|
+ child.selected = true;
|
|
|
+ }
|
|
|
+ }}>
|
|
|
+ {/* 编辑时不可上下切换 */}
|
|
|
+ {!state.settingStatus && (
|
|
|
+ <div class={styles.direction}>
|
|
|
+ <div
|
|
|
+ class={styles.up}
|
|
|
+ style={{ cursor: 'pointer' }}
|
|
|
+ onClick={() => {
|
|
|
+ if (setting.playState === 'play') return;
|
|
|
+ if (setting.tempo.length <= 1) {
|
|
|
+ showToast('无法切换,请选择至少2种节奏型');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // const obj = randomScoreElement(child.index);
|
|
|
+ const obj = elementDirection('up', child.index);
|
|
|
+ child.index = obj.index;
|
|
|
+ child.url = obj.url;
|
|
|
+ }}></div>
|
|
|
+ <div
|
|
|
+ class={styles.down}
|
|
|
+ style={{ cursor: 'pointer' }}
|
|
|
+ onClick={() => {
|
|
|
+ if (setting.playState === 'play') return;
|
|
|
+ if (setting.tempo.length <= 1) {
|
|
|
+ showToast('无法切换,请选择至少2种节奏型');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // const obj = randomScoreElement(child.index);
|
|
|
+ const obj = elementDirection('down', child.index);
|
|
|
+ child.index = obj.index;
|
|
|
+ child.url = obj.url;
|
|
|
+ }}></div>
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ <div class={styles.imgSection}>
|
|
|
+ <img src={getImage(child.url)} />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
</div>
|
|
|
- )}
|
|
|
- <div class={styles.play} onClick={handlePlay}>
|
|
|
- {setting.playState === 'pause' ? (
|
|
|
- <img src={iconPause} />
|
|
|
- ) : (
|
|
|
- <img src={iconPlay} />
|
|
|
- )}
|
|
|
- </div>
|
|
|
- </>
|
|
|
- )}
|
|
|
- {/* 老师端来的时候的设置按钮 */}
|
|
|
- {state.platform === 'modal' && state.playPos === 'right' && (
|
|
|
- <div
|
|
|
- class={styles.setting}
|
|
|
- onClick={() => {
|
|
|
- handleStop();
|
|
|
- state.settingStatus = true;
|
|
|
- }}>
|
|
|
- <img src={setImg} />
|
|
|
+ ))}
|
|
|
</div>
|
|
|
- )}
|
|
|
- {/* 播放类型 */}
|
|
|
- <div class={styles.playType} onClick={handlePlayType}>
|
|
|
- {setting.playType === 'beat' ? (
|
|
|
- <img src={beat} />
|
|
|
- ) : (
|
|
|
- <img src={tempo} />
|
|
|
- )}
|
|
|
</div>
|
|
|
- {/* 随机生成 */}
|
|
|
+
|
|
|
<div
|
|
|
- class={styles.randomTempo}
|
|
|
- onClick={() => {
|
|
|
- renderScore();
|
|
|
- handleStop();
|
|
|
+ class={styles.footer}
|
|
|
+ onClick={(e: any) => {
|
|
|
+ e.stopPropagation();
|
|
|
}}>
|
|
|
- <img src={randDom} />
|
|
|
- </div>
|
|
|
- {/* 速度 */}
|
|
|
- <div class={styles.speedChange}>
|
|
|
- <img
|
|
|
- src={iconPlus}
|
|
|
- class={styles.speedPlus}
|
|
|
- onClick={() => {
|
|
|
- if (setting.speed <= 40) return;
|
|
|
- setting.speed -= 1;
|
|
|
- handleStop();
|
|
|
-
|
|
|
- state.speedList.forEach((item: any) => {
|
|
|
- if (item.value === setting.speed) {
|
|
|
- item.color = '#1CACF1';
|
|
|
- setting.speed = setting.speed;
|
|
|
- } else {
|
|
|
- item.color = '#060606';
|
|
|
- }
|
|
|
- });
|
|
|
- }}
|
|
|
- />
|
|
|
- <Popover
|
|
|
- placement="top"
|
|
|
- class={styles.popupContainer}
|
|
|
- actions={state.speedList}
|
|
|
- onSelect={(val: any) => {
|
|
|
- if (val.value === setting.speed) return;
|
|
|
- state.speedList.forEach((item: any) => {
|
|
|
- if (item.value === val.value) {
|
|
|
- item.color = '#1CACF1';
|
|
|
- setting.speed = val.value;
|
|
|
- } else {
|
|
|
- item.color = '#060606';
|
|
|
- }
|
|
|
- });
|
|
|
- handleStop();
|
|
|
- }}>
|
|
|
- {{
|
|
|
- reference: () => (
|
|
|
- <div class={styles.speedNum}>{setting.speed}</div>
|
|
|
- )
|
|
|
- }}
|
|
|
- </Popover>
|
|
|
-
|
|
|
- <img
|
|
|
- src={iconAdd}
|
|
|
- class={styles.speedAdd}
|
|
|
- onClick={() => {
|
|
|
- if (setting.speed >= 200) return;
|
|
|
- setting.speed += 1;
|
|
|
- handleStop();
|
|
|
-
|
|
|
- state.speedList.forEach((item: any) => {
|
|
|
- if (item.value === setting.speed) {
|
|
|
- item.color = '#1CACF1';
|
|
|
- setting.speed = setting.speed;
|
|
|
- } else {
|
|
|
- item.color = '#060606';
|
|
|
- }
|
|
|
- });
|
|
|
- }}
|
|
|
- />
|
|
|
- </div>
|
|
|
- {/* 播放 */}
|
|
|
- {state.playPos === 'right' && (
|
|
|
- <div class={styles.play} onClick={handlePlay}>
|
|
|
- {setting.playState === 'pause' ? (
|
|
|
- <img src={iconPause} />
|
|
|
+ {/* 播放 */}
|
|
|
+ {state.playPos === 'left' && (
|
|
|
+ <>
|
|
|
+ {route.query.back === 'show' && (
|
|
|
+ <div
|
|
|
+ class={[styles.play]}
|
|
|
+ onClick={goback}
|
|
|
+ style={{ cursor: 'pointer' }}>
|
|
|
+ <img src={icon_back1} />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ <div class={styles.play} onClick={handlePlay}>
|
|
|
+ {getSettingValue('playState') === 'pause' ? (
|
|
|
+ <img src={iconPause} />
|
|
|
+ ) : (
|
|
|
+ <img src={iconPlay} />
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+ {/* 老师端来的时候的设置按钮 */}
|
|
|
+ {state.platform === 'modal' && state.playPos === 'right' && (
|
|
|
+ <div
|
|
|
+ class={styles.setting}
|
|
|
+ onClick={() => {
|
|
|
+ onOpenSetting();
|
|
|
+ }}>
|
|
|
+ <img src={setImg} />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ {/* 播放类型 */}
|
|
|
+ <div class={styles.playType} onClick={handlePlayType}>
|
|
|
+ {getSettingValue('playType') === 'beat' ? (
|
|
|
+ <img src={beat} />
|
|
|
) : (
|
|
|
- <img src={iconPlay} />
|
|
|
+ <img src={tempo} />
|
|
|
)}
|
|
|
</div>
|
|
|
- )}
|
|
|
- {/* 老师端来的时候的设置按钮 */}
|
|
|
- {state.platform === 'modal' && state.playPos === 'left' && (
|
|
|
+ {/* 随机生成 */}
|
|
|
<div
|
|
|
- class={styles.setting}
|
|
|
+ class={styles.randomTempo}
|
|
|
onClick={() => {
|
|
|
+ if (state.settingStatus) {
|
|
|
+ renderScoreModal();
|
|
|
+ } else {
|
|
|
+ renderScore();
|
|
|
+ }
|
|
|
handleStop();
|
|
|
- state.settingStatus = true;
|
|
|
}}>
|
|
|
- <img src={setImg} />
|
|
|
+ <img src={randDom} />
|
|
|
</div>
|
|
|
- )}
|
|
|
+ {/* 速度 */}
|
|
|
+ <div class={styles.speedChange}>
|
|
|
+ <img
|
|
|
+ src={iconPlus}
|
|
|
+ class={styles.speedPlus}
|
|
|
+ onClick={() => {
|
|
|
+ const speed = getSettingValue('speed');
|
|
|
+ if (speed <= 40) return;
|
|
|
+ updateSettingValue('speed', speed - 1);
|
|
|
+ handleStop();
|
|
|
+
|
|
|
+ state.speedList.forEach((item: any) => {
|
|
|
+ if (item.value === getSettingValue('speed')) {
|
|
|
+ item.color = '#1CACF1';
|
|
|
+ updateSettingValue('speed', getSettingValue('speed'));
|
|
|
+ } else {
|
|
|
+ item.color = '#060606';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ <Popover
|
|
|
+ placement="top"
|
|
|
+ class={styles.popupContainer}
|
|
|
+ actions={state.speedList}
|
|
|
+ onSelect={(val: any) => {
|
|
|
+ const speed = getSettingValue('speed');
|
|
|
+ if (val.value === speed) return;
|
|
|
+ state.speedList.forEach((item: any) => {
|
|
|
+ if (item.value === val.value) {
|
|
|
+ item.color = '#1CACF1';
|
|
|
+ updateSettingValue('speed', val.value);
|
|
|
+ } else {
|
|
|
+ item.color = '#060606';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ handleStop();
|
|
|
+ }}>
|
|
|
+ {{
|
|
|
+ reference: () => (
|
|
|
+ <div class={styles.speedNum}>
|
|
|
+ {getSettingValue('speed')}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </Popover>
|
|
|
+
|
|
|
+ <img
|
|
|
+ src={iconAdd}
|
|
|
+ class={styles.speedAdd}
|
|
|
+ onClick={() => {
|
|
|
+ const speed = getSettingValue('speed');
|
|
|
+
|
|
|
+ if (speed >= 200) return;
|
|
|
+ updateSettingValue('speed', speed + 1);
|
|
|
+ handleStop();
|
|
|
+
|
|
|
+ state.speedList.forEach((item: any) => {
|
|
|
+ if (item.value === getSettingValue('speed')) {
|
|
|
+ item.color = '#1CACF1';
|
|
|
+ updateSettingValue('speed', getSettingValue('speed'));
|
|
|
+ } else {
|
|
|
+ item.color = '#060606';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ {/* 播放 */}
|
|
|
+ {state.playPos === 'right' && (
|
|
|
+ <div class={styles.play} onClick={handlePlay}>
|
|
|
+ {getSettingValue('playState') === 'pause' ? (
|
|
|
+ <img src={iconPause} />
|
|
|
+ ) : (
|
|
|
+ <img src={iconPlay} />
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ {/* 老师端来的时候的设置按钮 */}
|
|
|
+ {state.platform === 'modal' && state.playPos === 'left' && (
|
|
|
+ <div
|
|
|
+ class={styles.setting}
|
|
|
+ onClick={() => {
|
|
|
+ onOpenSetting();
|
|
|
+ }}>
|
|
|
+ <img src={setImg} />
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class={[
|
|
|
+ styles.containerRight,
|
|
|
+ state.settingStatus ? '' : styles.rightHide
|
|
|
+ ]}
|
|
|
+ onClick={(e: any) => {
|
|
|
+ e.stopPropagation();
|
|
|
+ }}>
|
|
|
+ <SettingModal
|
|
|
+ class={styles.settingModalShow}
|
|
|
+ onClose={() => (state.settingStatus = false)}
|
|
|
+ />
|
|
|
</div>
|
|
|
|
|
|
<Popup
|
|
|
style={
|
|
|
state.platform === 'modal' ? settingBoxDragData.styleDrag.value : {}
|
|
|
}
|
|
|
- v-model:show={state.settingStatus}
|
|
|
+ v-model:show={state.settingPcStatus}
|
|
|
class={[styles.settingPopup, settingBoxClass]}>
|
|
|
- <SettingModal
|
|
|
+ <SettingPcModal
|
|
|
onGuideDone={setGuidanceShow}
|
|
|
showGuide={guidanceShow.value}
|
|
|
- dataJson={state.dataJson}
|
|
|
- onClose={() => (state.settingStatus = false)}
|
|
|
+ onClose={() => (state.settingPcStatus = false)}
|
|
|
/>
|
|
|
</Popup>
|
|
|
</div>
|