|
@@ -1,7 +1,9 @@
|
|
import {
|
|
import {
|
|
computed,
|
|
computed,
|
|
defineComponent,
|
|
defineComponent,
|
|
|
|
+ nextTick,
|
|
onMounted,
|
|
onMounted,
|
|
|
|
+ onUnmounted,
|
|
reactive,
|
|
reactive,
|
|
ref,
|
|
ref,
|
|
Teleport,
|
|
Teleport,
|
|
@@ -22,7 +24,7 @@ import { api_musicSheetPage } from '../co-ai/api';
|
|
import { state as baseState } from '@/state';
|
|
import { state as baseState } from '@/state';
|
|
import request from '@/helpers/request';
|
|
import request from '@/helpers/request';
|
|
import MEmpty from '@/components/m-empty';
|
|
import MEmpty from '@/components/m-empty';
|
|
-import { postMessage } from '@/helpers/native-message';
|
|
|
|
|
|
+import { listenerMessage, postMessage } from '@/helpers/native-message';
|
|
import { audioPlayType } from '@/helpers/constant';
|
|
import { audioPlayType } from '@/helpers/constant';
|
|
import MusicDetail from './music-detail';
|
|
import MusicDetail from './music-detail';
|
|
import TheVip from '@/components/the-vip';
|
|
import TheVip from '@/components/the-vip';
|
|
@@ -150,6 +152,7 @@ export default defineComponent({
|
|
name: ''
|
|
name: ''
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+ const tabsRef = ref();
|
|
|
|
|
|
const musicForms = reactive({
|
|
const musicForms = reactive({
|
|
page: 1,
|
|
page: 1,
|
|
@@ -166,6 +169,7 @@ export default defineComponent({
|
|
tagActive: {} as any,
|
|
tagActive: {} as any,
|
|
childSelectId: null as any
|
|
childSelectId: null as any
|
|
});
|
|
});
|
|
|
|
+ const contentRef = ref()
|
|
|
|
|
|
const searchValue = computed(() => {
|
|
const searchValue = computed(() => {
|
|
if (state.tabActive === 'RECOMMEND') {
|
|
if (state.tabActive === 'RECOMMEND') {
|
|
@@ -251,6 +255,24 @@ export default defineComponent({
|
|
getMusicList();
|
|
getMusicList();
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ const onReset = () => {
|
|
|
|
+ //
|
|
|
|
+ state.sNt = '';
|
|
|
|
+ state.sAPT = '';
|
|
|
|
+ data.tagActiveId = '';
|
|
|
|
+ data.childSelectId = null;
|
|
|
|
+ data.selectParents = {}
|
|
|
|
+ state.allSearch.bookVersionId = data.childSelectId || data.tagActiveId;
|
|
|
|
+ state.allSearch.audioPlayTypes = state.sAPT
|
|
|
|
+ ? state.sAPT === 'PLAY_SING'
|
|
|
|
+ ? ['SING', 'PLAY']
|
|
|
|
+ : [state.sAPT]
|
|
|
|
+ : [];
|
|
|
|
+ state.allSearch.musicTagIds = state.sNt;
|
|
|
|
+ state.searchPopup = false;
|
|
|
|
+ onSearch();
|
|
|
|
+ };
|
|
|
|
+
|
|
const onDetail = (item: any) => {
|
|
const onDetail = (item: any) => {
|
|
state.item = item;
|
|
state.item = item;
|
|
state.musicDetailPopup = true;
|
|
state.musicDetailPopup = true;
|
|
@@ -358,11 +380,17 @@ export default defineComponent({
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ const tabResize = () => {
|
|
|
|
+ tabsRef.value?.resize();
|
|
|
|
+ };
|
|
|
|
+
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
if (route.query.type) {
|
|
if (route.query.type) {
|
|
state.tabActive = route.query.type;
|
|
state.tabActive = route.query.type;
|
|
state.isAllStatus = false;
|
|
state.isAllStatus = false;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // tabsRef
|
|
// 场景
|
|
// 场景
|
|
const tempAudio = Object.keys(audioPlayType).map(key => {
|
|
const tempAudio = Object.keys(audioPlayType).map(key => {
|
|
return {
|
|
return {
|
|
@@ -373,10 +401,20 @@ export default defineComponent({
|
|
state.audioPlayTypeList = [{ name: '全部', id: '' }, ...tempAudio];
|
|
state.audioPlayTypeList = [{ name: '全部', id: '' }, ...tempAudio];
|
|
|
|
|
|
state.loading = true;
|
|
state.loading = true;
|
|
- getUserInfo()
|
|
|
|
|
|
+ getUserInfo();
|
|
await getTags();
|
|
await getTags();
|
|
await getMusicTagTree();
|
|
await getMusicTagTree();
|
|
getMusicList();
|
|
getMusicList();
|
|
|
|
+
|
|
|
|
+ window.addEventListener('resize', tabResize);
|
|
|
|
+
|
|
|
|
+ listenerMessage('webViewOnResume', () => {
|
|
|
|
+ tabResize();
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ onUnmounted(() => {
|
|
|
|
+ window.removeEventListener('resize', tabResize);
|
|
});
|
|
});
|
|
return () => (
|
|
return () => (
|
|
<div
|
|
<div
|
|
@@ -404,6 +442,7 @@ export default defineComponent({
|
|
styles.leftArrow
|
|
styles.leftArrow
|
|
]}></i>
|
|
]}></i>
|
|
<Tabs
|
|
<Tabs
|
|
|
|
+ ref={tabsRef}
|
|
class={styles.tabSection}
|
|
class={styles.tabSection}
|
|
v-model:active={state.tabActive}
|
|
v-model:active={state.tabActive}
|
|
shrink
|
|
shrink
|
|
@@ -419,6 +458,7 @@ export default defineComponent({
|
|
onSearch();
|
|
onSearch();
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
|
|
+ state.searchPopup = false;
|
|
state.isAllStatus = false;
|
|
state.isAllStatus = false;
|
|
onSearch();
|
|
onSearch();
|
|
}
|
|
}
|
|
@@ -453,6 +493,9 @@ export default defineComponent({
|
|
background={'transparent'}
|
|
background={'transparent'}
|
|
inputBackground="transparent"
|
|
inputBackground="transparent"
|
|
class={styles.mSearch11}
|
|
class={styles.mSearch11}
|
|
|
|
+ onFocus={() => {
|
|
|
|
+ state.searchPopup = false;
|
|
|
|
+ }}
|
|
onSearch={(val: any) => {
|
|
onSearch={(val: any) => {
|
|
if (state.tabActive === 'RECOMMEND') {
|
|
if (state.tabActive === 'RECOMMEND') {
|
|
state.recommendSearch.name = val;
|
|
state.recommendSearch.name = val;
|
|
@@ -463,6 +506,7 @@ export default defineComponent({
|
|
} else {
|
|
} else {
|
|
state.allSearch.name = val;
|
|
state.allSearch.name = val;
|
|
}
|
|
}
|
|
|
|
+ state.searchPopup = false;
|
|
onSearch();
|
|
onSearch();
|
|
}}></MSearch>
|
|
}}></MSearch>
|
|
</MSticky>
|
|
</MSticky>
|
|
@@ -513,7 +557,12 @@ export default defineComponent({
|
|
</span>
|
|
</span>
|
|
)}
|
|
)}
|
|
|
|
|
|
- {item.composer && <p>{item.composer}</p>}
|
|
|
|
|
|
+ {item.composer && (
|
|
|
|
+ <p>
|
|
|
|
+ {item.composer}
|
|
|
|
+ {item.composer}
|
|
|
|
+ </p>
|
|
|
|
+ )}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
),
|
|
),
|
|
@@ -547,7 +596,6 @@ export default defineComponent({
|
|
<div
|
|
<div
|
|
class={[
|
|
class={[
|
|
styles.subjectItem,
|
|
styles.subjectItem,
|
|
- styles.subjectItem4,
|
|
|
|
subject.id === state.sNt && styles.active
|
|
subject.id === state.sNt && styles.active
|
|
]}
|
|
]}
|
|
onClick={() => {
|
|
onClick={() => {
|
|
@@ -583,7 +631,7 @@ export default defineComponent({
|
|
|
|
|
|
{data.tags.length > 0 && (
|
|
{data.tags.length > 0 && (
|
|
<>
|
|
<>
|
|
- <div class={styles.title}>
|
|
|
|
|
|
+ <div class={styles.title} ref={contentRef}>
|
|
{data.tags[0]?.columnName}
|
|
{data.tags[0]?.columnName}
|
|
|
|
|
|
{state.isTagExpand && (
|
|
{state.isTagExpand && (
|
|
@@ -616,11 +664,14 @@ export default defineComponent({
|
|
)
|
|
)
|
|
)}
|
|
)}
|
|
|
|
|
|
- {!state.isTagExpand && (
|
|
|
|
|
|
+ {!state.isTagExpand && data.tags.length > 5 && (
|
|
<div
|
|
<div
|
|
class={[styles.subjectItem]}
|
|
class={[styles.subjectItem]}
|
|
onClick={() => {
|
|
onClick={() => {
|
|
state.isTagExpand = true;
|
|
state.isTagExpand = true;
|
|
|
|
+ nextTick(() => {
|
|
|
|
+ contentRef.value?.scrollIntoView({ behavior: 'smooth', block: 'start' })
|
|
|
|
+ })
|
|
}}>
|
|
}}>
|
|
更多 <Icon name="arrow-down" />
|
|
更多 <Icon name="arrow-down" />
|
|
</div>
|
|
</div>
|
|
@@ -638,10 +689,8 @@ export default defineComponent({
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class={styles.searchHead}>
|
|
<div class={styles.searchHead}>
|
|
- <span
|
|
|
|
- class={styles.cancel}
|
|
|
|
- onClick={() => (state.searchPopup = false)}>
|
|
|
|
- 取消
|
|
|
|
|
|
+ <span class={styles.cancel} onClick={() => onReset()}>
|
|
|
|
+ 重置
|
|
</span>
|
|
</span>
|
|
{/* <span>筛选</span> */}
|
|
{/* <span>筛选</span> */}
|
|
<span
|
|
<span
|