优化歌单打开机制

This commit is contained in:
lyswhut
2020-03-14 20:58:03 +08:00
parent 91063075d3
commit bb080c2d18
12 changed files with 124 additions and 82 deletions
+17 -48
View File
@@ -15,7 +15,8 @@
//- material-btn(:class="$style.closeDetailButton" :disabled="detailLoading" @click="playSongListDetail") 播放
//- |  
material-btn(:class="$style.closeDetailButton" @click="hideListDetail") {{$t('view.song_list.back')}}
material-song-list(v-model="selectdData" @action="handleSongListAction" :source="source" :page="listDetail.page" :limit="listDetail.limit" :total="listDetail.total" :noItem="$t('material.song_list.loding_list')" :list="listDetail.list")
material-song-list(v-model="selectdData" @action="handleSongListAction" :source="source" :page="listDetail.page" :limit="listDetail.limit"
:total="listDetail.total" :noItem="isGetDetailFailed ? $t('view.song_list.loding_list_fail') : $t('view.song_list.loding_list')" :list="listDetail.list")
transition(enter-active-class="animated-fast fadeIn" leave-active-class="animated-fast fadeOut")
div(:class="$style.songListContainer" v-if="!isVisibleListDetail")
div(:class="$style.header")
@@ -74,6 +75,7 @@ export default {
isShowListAddMultiple: false,
importSongListText: '',
listWidth: 645,
isGetDetailFailed: false,
// detailLoading: true,
}
},
@@ -164,7 +166,7 @@ export default {
methods: {
...mapMutations(['setSongList']),
...mapActions('songList', ['getTags', 'getList', 'getListDetail']),
...mapMutations('songList', ['setVisibleListDetail', 'setSelectListInfo', 'clearListDetail']),
...mapMutations('songList', ['setVisibleListDetail', 'setSelectListInfo']),
...mapActions('download', ['createDownload', 'createDownloadMultiple']),
...mapMutations('list', ['listAdd', 'listAddMultiple']),
...mapMutations('player', ['setList']),
@@ -229,7 +231,7 @@ export default {
})
},
handleToggleListDetailPage(page) {
this.getListDetail({ id: this.selectListInfo.id, page }).then(() => {
this.handleGetListDetail(this.selectListInfo.id, page).then(() => {
this.$nextTick(() => {
scrollTo(this.$refs.dom_scrollContent, 0)
})
@@ -254,9 +256,8 @@ export default {
// this.detailLoading = true
this.setSelectListInfo(this.listData.list[index])
this.setVisibleListDetail(true)
this.clearListDetail()
this.$nextTick(() => {
this.getListDetail({ id: this.selectListInfo.id, page: 1 })
this.handleGetListDetail(this.selectListInfo.id, 1)
})
},
handleFlowBtnClick(action) {
@@ -301,13 +302,11 @@ export default {
case 'submit':
this.handleGetSongListDetail()
break
case 'blur':
this.parseImportSongListInputText()
break
// case 'blur':
// break
}
},
handleGetSongListDetail() {
this.parseImportSongListInputText()
this.setSelectListInfo({
play_count: null,
id: this.importSongListText,
@@ -317,45 +316,8 @@ export default {
desc: '',
source: this.source,
})
this.clearListDetail()
this.$nextTick(() => {
this.setVisibleListDetail(true)
this.getListDetail({ id: this.importSongListText, page: 1 })
})
},
parseImportSongListInputText() {
if (!(/[?&:/]/.test(this.importSongListText))) return
const text = this.importSongListText
let regx
switch (this.source) {
case 'wy':
regx = /^.+(?:\?|&)id=(\d+)(?:&.*$|#.*$|$)/
break
case 'tx':
// https://y.qq.com/n/yqq/playlist/7217720898.html
// https://i.y.qq.com/n2/m/share/details/taoge.html?platform=11&appshare=android_qq&appversion=9050006&id=7217720898&ADTAG=qfshare
regx = /\/\/i\.y\.qq\.com/.test(text) ? /^.+(?:\?|&)id=(\d+)(?:&.*$|#.*$|$)/ : /^.+\/(\d+)\.html(?:\?.*|&.*$|#.*$|$)/
break
case 'kw':
// http://www.kuwo.cn/playlist_detail/2886046289
regx = /^.+\/playlist_detail\/(\d+)(?:\?.*|&.*$|#.*$|$)/
break
case 'bd':
// http://music.taihe.com/songlist/566347741
regx = /^.+\/songlist\/(\d+)(?:\?.*|&.*$|#.*$|$)/
break
case 'mg':
// http://music.migu.cn/v3/music/playlist/161044573?page=1
regx = /^.+\/playlist\/(\d+)(?:\?.*|&.*$|#.*$|$)/
break
case 'kg':
// https://www.kugou.com/yy/special/single/1067062.html
regx = /^.+\/(\d+)\.html(?:\?.*|&.*$|#.*$|$)/
break
default:
return
}
this.importSongListText = text.replace(regx, '$1')
this.setVisibleListDetail(true)
this.handleGetListDetail(this.importSongListText, 1)
},
filterList(list) {
return this.setting.apiSource == 'temp' ? list.filter(s => s.source == 'kw') : [...list]
@@ -363,6 +325,13 @@ export default {
setTagListWidth() {
this.listWidth = this.$refs.tagList.$el.clientWidth + this.$refs.tab.$el.clientWidth + 2
},
handleGetListDetail(id, page) {
this.isGetDetailFailed = false
this.getListDetail({ id, page }).catch(err => {
this.isGetDetailFailed = true
return Promise.reject(err)
})
},
/* addSongListDetail() {
// this.detailLoading = true
// this.getListDetailAll(this.selectListInfo.id).then(() => {