歌曲列表右击菜单新增跳转到当前歌曲源官方详情页菜单
This commit is contained in:
@@ -36,7 +36,8 @@ div(:class="$style.download")
|
||||
|
||||
<script>
|
||||
import { mapGetters, mapActions, mapMutations } from 'vuex'
|
||||
import { checkPath, openDirInExplorer, findParentNode } from '../utils'
|
||||
import { checkPath, openDirInExplorer, findParentNode, openUrl } from '../utils'
|
||||
import musicSdk from '../utils/music'
|
||||
import path from 'path'
|
||||
|
||||
export default {
|
||||
@@ -63,6 +64,7 @@ export default {
|
||||
file: true,
|
||||
search: true,
|
||||
remove: true,
|
||||
sourceDetail: true,
|
||||
},
|
||||
menuLocation: {
|
||||
x: 0,
|
||||
@@ -145,6 +147,11 @@ export default {
|
||||
action: 'file',
|
||||
hide: !this.listMenu.itemMenuControl.file,
|
||||
},
|
||||
{
|
||||
name: this.$t('view.download.menu_source_detail'),
|
||||
action: 'sourceDetail',
|
||||
disabled: !this.listMenu.itemMenuControl.sourceDetail,
|
||||
},
|
||||
{
|
||||
name: this.$t('view.download.menu_search'),
|
||||
action: 'search',
|
||||
@@ -359,6 +366,7 @@ export default {
|
||||
this.selectdData = []
|
||||
},
|
||||
handleListItemRigthClick(event, index) {
|
||||
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.showList[index].musicInfo.source].getMusicDetailPageUrl
|
||||
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
|
||||
if (dom_selected) dom_selected.classList.remove('selected')
|
||||
this.$refs.dom_tbody.querySelectorAll('tr')[index].classList.add('selected')
|
||||
@@ -401,6 +409,7 @@ export default {
|
||||
this.hideListMenu()
|
||||
// let key
|
||||
let item
|
||||
let url
|
||||
|
||||
switch (action && action.action) {
|
||||
case 'play':
|
||||
@@ -456,6 +465,11 @@ export default {
|
||||
})
|
||||
}
|
||||
break
|
||||
case 'sourceDetail':
|
||||
item = this.showList[index].musicInfo
|
||||
url = musicSdk[item.source].getMusicDetailPageUrl(item)
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
|
||||
<script>
|
||||
import { mapGetters, mapMutations, mapActions } from 'vuex'
|
||||
import { openUrl } from '../utils'
|
||||
import musicSdk from '../utils/music'
|
||||
export default {
|
||||
name: 'Leaderboard',
|
||||
data() {
|
||||
@@ -99,6 +101,8 @@ export default {
|
||||
}
|
||||
},
|
||||
handleMenuClick(info) {
|
||||
let minfo
|
||||
let url
|
||||
switch (info.action) {
|
||||
case 'download':
|
||||
if (this.selectedData.length) {
|
||||
@@ -132,6 +136,11 @@ export default {
|
||||
})
|
||||
}
|
||||
break
|
||||
case 'sourceDetail':
|
||||
minfo = this.list[info.index]
|
||||
url = musicSdk[minfo.source].getMusicDetailPageUrl(minfo)
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
}
|
||||
},
|
||||
testPlay(index) {
|
||||
|
||||
@@ -69,7 +69,8 @@
|
||||
|
||||
<script>
|
||||
import { mapMutations, mapGetters, mapActions } from 'vuex'
|
||||
import { throttle, scrollTo, clipboardWriteText, assertApiSupport, findParentNode } from '../utils'
|
||||
import { throttle, scrollTo, clipboardWriteText, assertApiSupport, findParentNode, openUrl } from '../utils'
|
||||
import musicSdk from '../utils/music'
|
||||
export default {
|
||||
name: 'List',
|
||||
data() {
|
||||
@@ -120,6 +121,7 @@ export default {
|
||||
moveTo: true,
|
||||
download: true,
|
||||
remove: true,
|
||||
sourceDetail: true,
|
||||
},
|
||||
menuLocation: {
|
||||
x: 0,
|
||||
@@ -211,6 +213,11 @@ export default {
|
||||
action: 'copyName',
|
||||
disabled: !this.listMenu.itemMenuControl.copyName,
|
||||
},
|
||||
{
|
||||
name: this.$t('view.list.list_source_detail'),
|
||||
action: 'sourceDetail',
|
||||
disabled: !this.listMenu.itemMenuControl.sourceDetail,
|
||||
},
|
||||
{
|
||||
name: this.$t('view.list.list_add_to'),
|
||||
action: 'addTo',
|
||||
@@ -658,6 +665,7 @@ export default {
|
||||
})
|
||||
},
|
||||
handleListItemRigthClick(event, index) {
|
||||
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.list[index].source].getMusicDetailPageUrl
|
||||
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
|
||||
if (dom_selected) dom_selected.classList.remove('selected')
|
||||
this.$refs.dom_tbody.querySelectorAll('tr')[index].classList.add('selected')
|
||||
@@ -711,6 +719,7 @@ export default {
|
||||
let index = this.listMenu.rightClickItemIndex
|
||||
this.hideListMenu()
|
||||
let minfo
|
||||
let url
|
||||
switch (action && action.action) {
|
||||
case 'play':
|
||||
this.testPlay(index)
|
||||
@@ -765,6 +774,11 @@ export default {
|
||||
this.handleRemove(index)
|
||||
}
|
||||
break
|
||||
case 'sourceDetail':
|
||||
minfo = this.list[index]
|
||||
url = musicSdk[minfo.source].getMusicDetailPageUrl(minfo)
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
|
||||
<script>
|
||||
import { mapGetters, mapActions, mapMutations } from 'vuex'
|
||||
import { scrollTo, clipboardWriteText, assertApiSupport, findParentNode } from '../utils'
|
||||
// import music from '../utils/music'
|
||||
import { scrollTo, clipboardWriteText, assertApiSupport, findParentNode, openUrl } from '../utils'
|
||||
import musicSdk from '../utils/music'
|
||||
export default {
|
||||
name: 'Search',
|
||||
data() {
|
||||
@@ -90,6 +90,7 @@ export default {
|
||||
play: true,
|
||||
addTo: true,
|
||||
download: true,
|
||||
sourceDetail: true,
|
||||
},
|
||||
menuLocation: {
|
||||
x: 0,
|
||||
@@ -178,6 +179,11 @@ export default {
|
||||
action: 'addTo',
|
||||
disabled: !this.listMenu.itemMenuControl.addTo,
|
||||
},
|
||||
{
|
||||
name: this.$t('view.search.list_source_detail'),
|
||||
action: 'sourceDetail',
|
||||
disabled: !this.listMenu.itemMenuControl.sourceDetail,
|
||||
},
|
||||
]
|
||||
},
|
||||
listInfo() {
|
||||
@@ -414,6 +420,7 @@ export default {
|
||||
return assertApiSupport(source)
|
||||
},
|
||||
handleListItemRigthClick(event, index) {
|
||||
this.listMenu.itemMenuControl.sourceDetail = !!musicSdk[this.listInfo.list[index].source].getMusicDetailPageUrl
|
||||
let dom_selected = this.$refs.dom_tbody.querySelector('tr.selected')
|
||||
if (dom_selected) dom_selected.classList.remove('selected')
|
||||
this.$refs.dom_tbody.querySelectorAll('tr')[index].classList.add('selected')
|
||||
@@ -436,6 +443,7 @@ export default {
|
||||
let index = this.listMenu.rightClickItemIndex
|
||||
this.hideListMenu()
|
||||
let minfo
|
||||
let url
|
||||
switch (action && action.action) {
|
||||
case 'play':
|
||||
if (this.selectedData.length) {
|
||||
@@ -468,6 +476,12 @@ export default {
|
||||
})
|
||||
}
|
||||
break
|
||||
case 'sourceDetail':
|
||||
minfo = this.listInfo.list[index]
|
||||
url = musicSdk[minfo.source].getMusicDetailPageUrl(minfo)
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
break
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
|
||||
<script>
|
||||
import { mapGetters, mapMutations, mapActions } from 'vuex'
|
||||
import { scrollTo, assertApiSupport } from '../utils'
|
||||
// import music from '../utils/music'
|
||||
import { scrollTo, assertApiSupport, openUrl } from '../utils'
|
||||
import musicSdk from '../utils/music'
|
||||
export default {
|
||||
name: 'SongList',
|
||||
data() {
|
||||
@@ -203,6 +203,8 @@ export default {
|
||||
}
|
||||
},
|
||||
handleMenuClick(info) {
|
||||
let minfo
|
||||
let url
|
||||
switch (info.action) {
|
||||
case 'download':
|
||||
if (this.selectedData.length) {
|
||||
@@ -236,6 +238,11 @@ export default {
|
||||
})
|
||||
}
|
||||
break
|
||||
case 'sourceDetail':
|
||||
minfo = this.listDetail.list[info.index]
|
||||
url = musicSdk[minfo.source].getMusicDetailPageUrl(minfo)
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
}
|
||||
},
|
||||
testPlay(index) {
|
||||
|
||||
Reference in New Issue
Block a user