新增Scheme URL对音乐搜索的调用支持;新增Scheme URL以url传参的方式调用

This commit is contained in:
lyswhut
2022-02-15 18:49:02 +08:00
parent 13ffcfbbcd
commit 2f56a7090a
9 changed files with 450 additions and 307 deletions
+40 -25
View File
@@ -2,7 +2,7 @@
div(:class="$style.search")
//- transition
div(:class="$style.header")
base-tab(:class="$style.tab" :list="sources" align="left" item-key="id" item-name="name" v-model="searchSourceId")
base-tab(:class="$style.tab" :list="sources" align="left" item-key="id" item-name="name" @change="handleSourceChange" v-model="searchSourceId")
div(:class="$style.main")
div(:class="$style.list" v-show="isLoading || listInfo.list.length")
div.thead(:class="$style.thead")
@@ -109,12 +109,28 @@ export default {
isLoading: false,
}
},
beforeRouteUpdate(to, from, next) {
if (to.query.text === undefined) return
this.text = to.query.text
this.page = 1
this.handleSearch(this.text, this.page)
next()
beforeRouteUpdate(to, from) {
if (to.query.source && (this.sourceList[to.query.source] || to.query.source == 'all')) {
if (this.setting.search.searchSource != to.query.source) {
this.setSearchSource({
searchSource: to.query.source,
})
}
if (this.searchSourceId != to.query.source) {
this.searchSourceId = to.query.source
}
this.$nextTick(() => {
this.handleGetHotSearch()
})
}
if (to.query.text != null && this.text != to.query.text) {
this.text = to.query.text
}
this.$nextTick(() => {
this.page = 1
this.handleSearch(this.text, this.page)
})
},
created() {
this.listenEvent()
@@ -124,18 +140,20 @@ export default {
},
mounted() {
// console.log('mounted')
// 处理搜索源不存在时页面报错的问题
if (!this.sourceList[this.setting.search.searchSource] && this.setting.search.searchSource != 'all') {
if (this.$route.query.source && (this.sourceList[this.$route.query.source] || this.$route.query.source == 'all')) {
this.setSearchSource({
searchSource: this.$route.query.source,
})
} else if (!this.sourceList[this.setting.search.searchSource] && this.setting.search.searchSource != 'all') { // 处理搜索源不存在时页面报错的问题
this.setSearchSource({
searchSource: 'kw',
})
}
this.searchSourceId = this.setting.search.searchSource
if (this.$route.query.text === undefined) {
if (this.$route.query.text == null) {
this.text = this.$store.getters['search/searchText']
this.page = this.listInfo.page
} else if (this.$route.query.text === '') {
} else if (this.$route.query.text == '') {
this.clearList()
} else {
this.text = this.$route.query.text
@@ -156,18 +174,6 @@ export default {
'listInfo.list'() {
this.removeAllSelect()
},
searchSourceId(n) {
if (n === this.setting.search.searchSource) return
if (this.text !== '') this.isLoading = true
this.$nextTick(() => {
this.page = 1
this.handleSearch(this.text, this.page)
this.handleGetHotSearch()
})
this.setSearchSource({
searchSource: n,
})
},
},
computed: {
...mapGetters(['userInfo', 'setting']),
@@ -417,7 +423,7 @@ export default {
this.getHotSearch(this.setting.search.searchSource)
},
handleNoitemSearch(text) {
this.$router.push({
this.$router.replace({
path: 'search',
query: {
text,
@@ -512,6 +518,15 @@ export default {
break
}
},
handleSourceChange(source) {
this.$router.replace({
path: 'search',
query: {
text: this.text,
source,
},
})
},
},
}
</script>