|
@@ -1,9 +1,11 @@
|
|
|
-import { Sticky, Cell, Tag, Icon, Popup } from 'vant'
|
|
|
+import { Sticky, Cell, Tag, Icon, Popup, Tabs, Tab } from 'vant'
|
|
|
import { defineComponent, onMounted, ref } from 'vue'
|
|
|
import Search from '@/components/col-search'
|
|
|
import { useLocalStorage } from '@vueuse/core'
|
|
|
import AlbumItem from '../album/item'
|
|
|
+import AlbumList from '../album'
|
|
|
import MusicItem from '../list/item'
|
|
|
+import MusicList from '../list'
|
|
|
import styles from './index.module.less'
|
|
|
import classNames from 'classnames'
|
|
|
import request from '@/helpers/request'
|
|
@@ -20,24 +22,25 @@ export default defineComponent({
|
|
|
const sheetRows = ref([])
|
|
|
const tagVisibility = ref(false)
|
|
|
const words = useLocalStorage<string[]>('music-search', [])
|
|
|
+ const activeTab = ref('album')
|
|
|
const FetchList = async () => {
|
|
|
- loading.value = true
|
|
|
- try {
|
|
|
- const res = await request.post(
|
|
|
- '/api-student/music/sheet/albumAndSheetList',
|
|
|
- {
|
|
|
- data: {
|
|
|
- albumRow: 3,
|
|
|
- sheetRow: 10,
|
|
|
- search: keyword.value,
|
|
|
- musicTagIds: tagids.value
|
|
|
- }
|
|
|
- }
|
|
|
- )
|
|
|
- albumRows.value = res.data.musicAlbumList.rows
|
|
|
- sheetRows.value = res.data.musicSheetList.rows
|
|
|
- } catch (error) {}
|
|
|
- loading.value = false
|
|
|
+ // loading.value = true
|
|
|
+ // try {
|
|
|
+ // const res = await request.post(
|
|
|
+ // '/api-student/music/sheet/albumAndSheetList',
|
|
|
+ // {
|
|
|
+ // data: {
|
|
|
+ // albumRow: 3,
|
|
|
+ // sheetRow: 10,
|
|
|
+ // search: keyword.value,
|
|
|
+ // musicTagIds: tagids.value
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // )
|
|
|
+ // albumRows.value = res.data.musicAlbumList.rows
|
|
|
+ // sheetRows.value = res.data.musicSheetList.rows
|
|
|
+ // } catch (error) {}
|
|
|
+ // loading.value = false
|
|
|
}
|
|
|
const onSearch = val => {
|
|
|
keyword.value = val
|
|
@@ -49,28 +52,50 @@ export default defineComponent({
|
|
|
words.value.unshift(val)
|
|
|
words.value.length = Math.min(words.value.length, 5)
|
|
|
}
|
|
|
- FetchList()
|
|
|
+ const activeRef = activeTab.value === 'album' ? albumList : musicList
|
|
|
+ ;(activeRef.value as any).onSearch?.(val)
|
|
|
+ // FetchList()
|
|
|
}
|
|
|
|
|
|
const onComfirm = tags => {
|
|
|
const data = Object.values(tags).flat().filter(Boolean).join(',')
|
|
|
tagids.value = data
|
|
|
- FetchList()
|
|
|
+ // FetchList()
|
|
|
+ const activeRef = activeTab.value === 'album' ? albumList : musicList
|
|
|
+ ;(activeRef.value as any).onComfirm?.(tags)
|
|
|
tagVisibility.value = false
|
|
|
}
|
|
|
|
|
|
- onMounted(() => onSearch(''))
|
|
|
+ const albumList = ref(null)
|
|
|
+ const musicList = ref(null)
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
+ const activeRef = activeTab.value === 'album' ? albumList : musicList
|
|
|
+ ;(activeRef.value as any).onSearch?.('')
|
|
|
+ })
|
|
|
return () => {
|
|
|
return (
|
|
|
<div class={styles.search}>
|
|
|
- <Sticky>
|
|
|
+ <Sticky class={styles.sticky}>
|
|
|
<Search
|
|
|
modelValue={keyword.value}
|
|
|
showAction
|
|
|
autofocus
|
|
|
onSearch={onSearch}
|
|
|
onFilter={() => (tagVisibility.value = true)}
|
|
|
+ filterDot={!!tagids.value}
|
|
|
/>
|
|
|
+ <Tabs
|
|
|
+ color="var(--van-primary)"
|
|
|
+ background="transparent"
|
|
|
+ lineWidth={20}
|
|
|
+ shrink
|
|
|
+ v-model:active={activeTab.value}
|
|
|
+ onChange={val => (activeTab.value = val)}
|
|
|
+ >
|
|
|
+ <Tab title="专辑" name="album"></Tab>
|
|
|
+ <Tab title="单曲" name="songe"></Tab>
|
|
|
+ </Tabs>
|
|
|
</Sticky>
|
|
|
{words.value.length > 0 && (
|
|
|
<div class={classNames(styles.keywords, 'van-hairline--bottom')}>
|
|
@@ -93,7 +118,8 @@ export default defineComponent({
|
|
|
/>
|
|
|
</div>
|
|
|
)}
|
|
|
- {albumRows.value.length > 0 && (
|
|
|
+
|
|
|
+ {/* {albumRows.value.length > 0 && (
|
|
|
<>
|
|
|
<Cell
|
|
|
class={styles.title}
|
|
@@ -112,8 +138,8 @@ export default defineComponent({
|
|
|
<AlbumItem data={item} />
|
|
|
))}
|
|
|
</>
|
|
|
- )}
|
|
|
- <Cell
|
|
|
+ )} */}
|
|
|
+ {/* <Cell
|
|
|
class={styles.title}
|
|
|
title="曲谱"
|
|
|
is-link
|
|
@@ -125,13 +151,36 @@ export default defineComponent({
|
|
|
}
|
|
|
}}
|
|
|
value="更多"
|
|
|
- />
|
|
|
- {sheetRows.value.map(item => (
|
|
|
- <MusicItem data={item} />
|
|
|
- ))}
|
|
|
- {!loading.value && sheetRows.value.length === 0 && (
|
|
|
- <ColResult tips="暂无曲目" classImgSize="SMALL" btnStatus={false} />
|
|
|
+ /> */}
|
|
|
+ {activeTab.value === 'album' ? (
|
|
|
+ <AlbumList
|
|
|
+ hideSearch
|
|
|
+ ref={albumList}
|
|
|
+ defauleParams={{
|
|
|
+ search: keyword.value,
|
|
|
+ tagids: tagids.value
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ ) : (
|
|
|
+ <MusicList
|
|
|
+ hideSearch
|
|
|
+ ref={musicList}
|
|
|
+ defauleParams={{
|
|
|
+ search: keyword.value,
|
|
|
+ tagids: tagids.value
|
|
|
+ }}
|
|
|
+ />
|
|
|
)}
|
|
|
+ {/* {sheetRows.value.map(item => (
|
|
|
+ <MusicItem data={item} />
|
|
|
+ ))} */}
|
|
|
+ {/* {!loading.value && sheetRows.value.length === 0 && (
|
|
|
+ <ColResult
|
|
|
+ tips={activeTab.value === 'album' ? '暂无专辑' : '暂无曲目'}
|
|
|
+ classImgSize="SMALL"
|
|
|
+ btnStatus={false}
|
|
|
+ />
|
|
|
+ )} */}
|
|
|
<Popup
|
|
|
show={tagVisibility.value}
|
|
|
round
|