|
@@ -43,6 +43,9 @@ import request from '@/helpers/request';
|
|
|
import { useRoute } from 'vue-router';
|
|
|
import { addWatermark, convasToImg, imgToCanvas } from './imageFunction';
|
|
|
import { browser } from '@/helpers/utils';
|
|
|
+import ChangeVoice from './change-voice';
|
|
|
+import { storage } from '@/helpers/storage';
|
|
|
+import { ACCESS_TOKEN } from '@/store/mutation-types';
|
|
|
export default defineComponent({
|
|
|
name: 'co-ai',
|
|
|
setup() {
|
|
@@ -77,6 +80,10 @@ export default defineComponent({
|
|
|
loading: true,
|
|
|
finshed: false,
|
|
|
|
|
|
+ showChangeVoice: false,
|
|
|
+ selectMusicInstrumentIndex: 0,
|
|
|
+ iframeSrc: '',
|
|
|
+
|
|
|
searchNoticeShow: false,
|
|
|
searchNotice: {
|
|
|
left: '',
|
|
@@ -176,6 +183,7 @@ export default defineComponent({
|
|
|
const waterCanvasImg = await addWatermark(canvas);
|
|
|
// canvas转图片
|
|
|
const dataURL = await convasToImg(waterCanvasImg);
|
|
|
+ console.log(dataURL, 'dataURL');
|
|
|
setTimeout(() => {
|
|
|
showToast('已保存到相册');
|
|
|
}, 500);
|
|
@@ -249,6 +257,15 @@ export default defineComponent({
|
|
|
getMusicList();
|
|
|
};
|
|
|
|
|
|
+ const musicIframeLoad = () => {
|
|
|
+ const token = storage.get(ACCESS_TOKEN);
|
|
|
+ const details = data.musics[data.musicIndex];
|
|
|
+ const origin = /(localhost|192)/.test(location.host)
|
|
|
+ ? 'https://test.lexiaoya.cn'
|
|
|
+ : location.origin;
|
|
|
+ data.iframeSrc = `${origin}/instrument/?id=${details.id}&modelType=practise&modeType=json&Authorization=${token}&isPreView=true&part-index=${data.selectMusicInstrumentIndex}`;
|
|
|
+ };
|
|
|
+
|
|
|
const setSearchBox = () => {
|
|
|
const el = document.querySelector('.searchNotice .van-field__control');
|
|
|
if (el) {
|
|
@@ -259,6 +276,16 @@ export default defineComponent({
|
|
|
data.searchNotice.height = rect.height + 'px';
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+ const isEnsemble = computed(() => {
|
|
|
+ const musics = data.musics[data.musicIndex]?.musicalInstruments;
|
|
|
+ if (musics && musics.length > 1) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
// 安卓的状态栏
|
|
|
postMessage({
|
|
@@ -269,7 +296,7 @@ export default defineComponent({
|
|
|
});
|
|
|
|
|
|
await getMusicSheetCategories();
|
|
|
- getMusicList();
|
|
|
+ await getMusicList();
|
|
|
|
|
|
const obv = new IntersectionObserver(entries => {
|
|
|
if (entries[0].intersectionRatio > 0) {
|
|
@@ -406,7 +433,10 @@ export default defineComponent({
|
|
|
? styles.musicActive
|
|
|
: styles.disableNotic
|
|
|
]}
|
|
|
- onClick={() => (data.musicIndex = index)}>
|
|
|
+ onClick={() => {
|
|
|
+ data.musicIndex = index;
|
|
|
+ musicIframeLoad();
|
|
|
+ }}>
|
|
|
<img
|
|
|
class={styles.musicAvtor}
|
|
|
src={item.titleImg}
|
|
@@ -449,56 +479,91 @@ export default defineComponent({
|
|
|
</div>
|
|
|
<div class={[styles.opacityBg, styles.right]}>
|
|
|
<div class={styles.rightBox}>
|
|
|
+ {isEnsemble.value && (
|
|
|
+ <div
|
|
|
+ class={styles.iconTransfer}
|
|
|
+ onClick={() => (data.showChangeVoice = true)}>
|
|
|
+ 切换声轨
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+
|
|
|
<div ref={downRef}>
|
|
|
<div class={styles['right-musicName']}>
|
|
|
{data.musics[data.musicIndex]?.musicSheetName}
|
|
|
</div>
|
|
|
- {data.showMusicImg === 'first' ? (
|
|
|
- <>
|
|
|
- {data.musics[data.musicIndex]?.musicSvg
|
|
|
- ?.split(',')
|
|
|
- .map((item: any, index: number) => {
|
|
|
- return (
|
|
|
- <img
|
|
|
- class={styles.staff}
|
|
|
- src={item + '?v=' + Date.now()}
|
|
|
- key={item}
|
|
|
- crossorigin="anonymous"
|
|
|
- />
|
|
|
- );
|
|
|
- })}
|
|
|
- </>
|
|
|
- ) : data.showMusicImg === 'fixed' ? (
|
|
|
- <>
|
|
|
- <TransitionGroup name="van-fade">
|
|
|
- {data.musics[data.musicIndex]?.musicJianSvg
|
|
|
- ?.split(',')
|
|
|
- .map((item: any, index: number) => {
|
|
|
- return (
|
|
|
- <img
|
|
|
- class={styles.staff}
|
|
|
- src={item + '?v=' + Date.now()}
|
|
|
- key={item}
|
|
|
- crossorigin="anonymous"
|
|
|
- />
|
|
|
- );
|
|
|
- })}
|
|
|
- </TransitionGroup>
|
|
|
- </>
|
|
|
+ {/* ensembleDetail */}
|
|
|
+ {isEnsemble.value ? (
|
|
|
+ <div>
|
|
|
+ <>
|
|
|
+ {/* {loading.value && (
|
|
|
+ <div>
|
|
|
+ <Vue3Lottie
|
|
|
+ animationData={AstronautJSON}
|
|
|
+ class={styles.finch}></Vue3Lottie>
|
|
|
+ <p class={styles.finchLoad}>加载中...</p>
|
|
|
+ </div>
|
|
|
+ )} */}
|
|
|
+ <iframe
|
|
|
+ id="staffIframeRef"
|
|
|
+ style={{
|
|
|
+ width: '100%'
|
|
|
+ // opacity: loading.value ? 0 : 1
|
|
|
+ }}
|
|
|
+ src={data.iframeSrc}
|
|
|
+ onLoad={musicIframeLoad}></iframe>
|
|
|
+ {/* <OsmdPreview ref={osmdPreviewRef} /> */}
|
|
|
+ </>
|
|
|
+ </div>
|
|
|
) : (
|
|
|
<>
|
|
|
- {data.musics[data.musicIndex]?.musicImg
|
|
|
- ?.split(',')
|
|
|
- .map((item: any, index: number) => {
|
|
|
- return (
|
|
|
- <img
|
|
|
- class={styles.staff}
|
|
|
- src={item + '?v=' + Date.now()}
|
|
|
- key={item}
|
|
|
- crossorigin="anonymous"
|
|
|
- />
|
|
|
- );
|
|
|
- })}
|
|
|
+ {data.showMusicImg === 'first' ? (
|
|
|
+ <>
|
|
|
+ {data.musics[data.musicIndex]?.musicSvg
|
|
|
+ ?.split(',')
|
|
|
+ .map((item: any, index: number) => {
|
|
|
+ return (
|
|
|
+ <img
|
|
|
+ class={styles.staff}
|
|
|
+ src={item + '?v=' + Date.now()}
|
|
|
+ key={item}
|
|
|
+ crossorigin="anonymous"
|
|
|
+ />
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </>
|
|
|
+ ) : data.showMusicImg === 'fixed' ? (
|
|
|
+ <>
|
|
|
+ <TransitionGroup name="van-fade">
|
|
|
+ {data.musics[data.musicIndex]?.musicJianSvg
|
|
|
+ ?.split(',')
|
|
|
+ .map((item: any, index: number) => {
|
|
|
+ return (
|
|
|
+ <img
|
|
|
+ class={styles.staff}
|
|
|
+ src={item + '?v=' + Date.now()}
|
|
|
+ key={item}
|
|
|
+ crossorigin="anonymous"
|
|
|
+ />
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </TransitionGroup>
|
|
|
+ </>
|
|
|
+ ) : (
|
|
|
+ <>
|
|
|
+ {data.musics[data.musicIndex]?.musicImg
|
|
|
+ ?.split(',')
|
|
|
+ .map((item: any, index: number) => {
|
|
|
+ return (
|
|
|
+ <img
|
|
|
+ class={styles.staff}
|
|
|
+ src={item + '?v=' + Date.now()}
|
|
|
+ key={item}
|
|
|
+ crossorigin="anonymous"
|
|
|
+ />
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </>
|
|
|
+ )}
|
|
|
</>
|
|
|
)}
|
|
|
</div>
|
|
@@ -521,7 +586,10 @@ export default defineComponent({
|
|
|
}}
|
|
|
</Popover>
|
|
|
|
|
|
- <img id="coai-2" src={icon_down} onClick={handleSave} />
|
|
|
+ {!isEnsemble.value && (
|
|
|
+ <img id="coai-2" src={icon_down} onClick={handleSave} />
|
|
|
+ )}
|
|
|
+
|
|
|
<div class={styles.rightBtnsRight} id="coai-3">
|
|
|
<img src={icons.icon_start} onClick={() => handleGoto()} />
|
|
|
</div>
|
|
@@ -560,6 +628,47 @@ export default defineComponent({
|
|
|
}}
|
|
|
/>
|
|
|
</Popup>
|
|
|
+
|
|
|
+ <Popup
|
|
|
+ class="popup-custom van-scale"
|
|
|
+ transition="van-scale"
|
|
|
+ closeOnClickOverlay={false}
|
|
|
+ v-model:show={data.showVip}>
|
|
|
+ <TheVip
|
|
|
+ onClose={val => {
|
|
|
+ if (val) {
|
|
|
+ postMessage({
|
|
|
+ api: 'openWebView',
|
|
|
+ content: {
|
|
|
+ url: `${location.origin}${location.pathname}#/member-center`,
|
|
|
+ orientation: 1
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ data.showVip = false;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Popup>
|
|
|
+
|
|
|
+ <Popup
|
|
|
+ class="popup-custom van-scale"
|
|
|
+ transition="van-scale"
|
|
|
+ closeOnClickOverlay={false}
|
|
|
+ v-model:show={data.showChangeVoice}>
|
|
|
+ <ChangeVoice
|
|
|
+ musicalInstruments={
|
|
|
+ data.musics[data.musicIndex]?.musicalInstruments || []
|
|
|
+ }
|
|
|
+ musicalInstrumentIndex={data.selectMusicInstrumentIndex}
|
|
|
+ onClose={() => (data.showChangeVoice = false)}
|
|
|
+ onConfirm={(index: number) => {
|
|
|
+ data.selectMusicInstrumentIndex = index;
|
|
|
+
|
|
|
+ musicIframeLoad();
|
|
|
+ data.showChangeVoice = false;
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </Popup>
|
|
|
</div>
|
|
|
);
|
|
|
}
|