|
| 1 | +<template> |
| 2 | + <transition name="slide"> |
| 3 | + <PartsMusicList |
| 4 | + :bgImage="selectedTopList.picUrl" |
| 5 | + :title="selectedTopList.topTitle" |
| 6 | + :songs="songList" |
| 7 | + /> |
| 8 | + </transition> |
| 9 | +</template> |
| 10 | + |
| 11 | +<script> |
| 12 | +import PartsMusicList from 'components/parts-music-list/parts-music-list' |
| 13 | +import { getFullRankingList } from 'api/the-ranking' |
| 14 | +import { mapGetters } from 'vuex' |
| 15 | +import { ERR_OK } from 'api/config' |
| 16 | +import { createSong } from 'common/js/normalize-song' |
| 17 | +
|
| 18 | +export default { |
| 19 | + data () { |
| 20 | + return { |
| 21 | + songList: [] // 格式化后的歌曲容器 |
| 22 | + } |
| 23 | + }, |
| 24 | +
|
| 25 | + methods: { |
| 26 | + _getFullRankingList (id) { |
| 27 | + if (!this.selectedTopList.id) { |
| 28 | + this.$router.push({ path: '/ranking' }) |
| 29 | + return |
| 30 | + } |
| 31 | + getFullRankingList(id).then(res => { |
| 32 | + if (res.code === ERR_OK) { |
| 33 | + this.songList = this._normalizeSong(res.songlist) |
| 34 | + } else { |
| 35 | + throw new Error('Check ERR_OK failed.') |
| 36 | + } |
| 37 | + }) |
| 38 | + }, |
| 39 | +
|
| 40 | + _normalizeSong (list) { |
| 41 | + let ret = [] |
| 42 | + list.forEach(musicData => { |
| 43 | + if (musicData.data.songmid && musicData.data.albumid) { |
| 44 | + ret.push(createSong(musicData.data)) |
| 45 | + } |
| 46 | + }) |
| 47 | + return ret |
| 48 | + } |
| 49 | + }, |
| 50 | +
|
| 51 | + created () { |
| 52 | + this._getFullRankingList(this.selectedTopList.id) |
| 53 | + }, |
| 54 | +
|
| 55 | + computed: { |
| 56 | + ...mapGetters([ |
| 57 | + 'selectedTopList' |
| 58 | + ]) |
| 59 | + }, |
| 60 | +
|
| 61 | + components: { |
| 62 | + PartsMusicList |
| 63 | + } |
| 64 | +} |
| 65 | +</script> |
| 66 | + |
| 67 | +<style lang="scss" scoped> |
| 68 | +.slide-enter, .slide-leave-to { |
| 69 | + transform: translateX(100%); |
| 70 | +} |
| 71 | +.slide-enter-active, .slide-leave-active { |
| 72 | + transition: all .3s ease; |
| 73 | +} |
| 74 | +</style> |
0 commit comments