lx-music-desktop/src/renderer/views/List/index.vue
2022-10-29 11:36:35 +08:00

73 lines
1.6 KiB
Vue

<template>
<div id="my-list" :class="$style.container" @click="handleContainerClick">
<MyList ref="myList" :list-id="listId" @show-menu="$refs.musicList.handleMenuClick()" />
<MusicList ref="musicList" :list-id="listId" @show-menu="$refs.myList.handleMenuClick()" />
</div>
</template>
<script>
import { getListPrevSelectId } from '@renderer/utils/data'
import MyList from './MyList'
import MusicList from './MusicList'
export default {
name: 'List',
components: {
MyList,
MusicList,
},
async beforeRouteEnter(to, from, next) {
let id = to.query.id
if (!id) {
id = await getListPrevSelectId()
next({
path: to.path,
query: { id },
})
} else next()
},
beforeRouteUpdate(to, from) {
// console.log(to, from)
if (to.query.updated) return
let id = to.query.id
if (id == null) return
// if (!getList(id)) {
// id = defaultList.id
// }
this.listId = id
const scrollIndex = to.query.scrollIndex
const isAnimation = from.query.id == to.query.id
this.$refs.musicList?.handleRestoreScroll(scrollIndex, isAnimation)
return {
path: '/list',
query: { id, updated: true },
}
},
beforeRouteLeave(to, from) {
this.$refs.musicList?.saveListPosition()
},
data() {
return {
listId: null,
}
},
created() {
this.listId = this.$route.query.id
},
}
</script>
<style lang="less" module>
@import '@renderer/assets/styles/layout.less';
.container {
overflow: hidden;
height: 100%;
display: flex;
position: relative;
}
</style>