|
@@ -0,0 +1,162 @@
|
|
|
+import { defineComponent, toRefs, reactive, onMounted, ref } from 'vue'
|
|
|
+import hold from '@/components/albumItem/images/hold.png'
|
|
|
+import start from '@/components/albumItem/images/start.png'
|
|
|
+import smallPan from '@/components/albumItem/images/pan.png'
|
|
|
+import classes from './index.module.less'
|
|
|
+import arrow from '@/components/musicLIstItem/images/arrow.png'
|
|
|
+import hot from '@/components/hotSearch/images/hot.png'
|
|
|
+import pan from './images/pan.png'
|
|
|
+import somePan from './images/somePan.png'
|
|
|
+import tagItem from '@/components/tagItem'
|
|
|
+import pagination from '@/components/pagination'
|
|
|
+import albumItem from './modals/albumItem'
|
|
|
+import request from '@/helpers/request'
|
|
|
+import musicLIstItem from '@/components/musicLIstItem'
|
|
|
+export default defineComponent({
|
|
|
+ name: 'albumDetail',
|
|
|
+ props: {
|
|
|
+ title: {
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: { tagItem, pagination, albumItem,musicLIstItem },
|
|
|
+ setup(props, conent) {
|
|
|
+ const state = reactive({
|
|
|
+ title: props.title,
|
|
|
+ hotList: [],
|
|
|
+ hotTagList:[],
|
|
|
+ relatedMusicAlbum:[],
|
|
|
+ musicList: [],
|
|
|
+ pageInfo: {
|
|
|
+ // 分页规则
|
|
|
+ limit: 10, // 限制显示条数
|
|
|
+ page: 1, // 当前页
|
|
|
+ total: 0, // 总条数
|
|
|
+ page_size: [10, 20, 40, 50] // 选择限制显示条数
|
|
|
+ },
|
|
|
+ details:{} as any
|
|
|
+ })
|
|
|
+ const getList = async () => {
|
|
|
+ try{
|
|
|
+ const res = await request.post('/api-website/open/music/album/detail', {
|
|
|
+ data: {
|
|
|
+ id: 15,
|
|
|
+ page: state.pageInfo.page,
|
|
|
+ rows: state.pageInfo.limit
|
|
|
+ }
|
|
|
+ })
|
|
|
+ state.details = res.data;
|
|
|
+ state.pageInfo.total = res.data.musicSheetList.total;
|
|
|
+ state.musicList = res.data.musicSheetList.rows;
|
|
|
+ state.hotList = res.data.hotMusicAlbum;
|
|
|
+ state.hotTagList = res.data.musicTagNames.split(',')||[]
|
|
|
+ state.relatedMusicAlbum = res.data.relatedMusicAlbum;
|
|
|
+ }catch(e){
|
|
|
+ console.log(e)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ onMounted(()=>{
|
|
|
+ getList()
|
|
|
+ })
|
|
|
+ return () => (
|
|
|
+ <>
|
|
|
+ <div class={classes.wall}></div>
|
|
|
+ <div class={[classes.w1200, classes.wrap]}>
|
|
|
+ <div class={classes.left}>
|
|
|
+ <div class={classes.albumInfo}>
|
|
|
+ <div class={classes.albumInfoTop}>
|
|
|
+ <div class={classes.albumInfoTopImg}>
|
|
|
+ <img src={state.details.albumCoverUrl?state.details.albumCoverUrl:hold} alt="" class={classes.albumCover} />
|
|
|
+ <img src={pan} alt="" class={classes.pan} />
|
|
|
+ </div>
|
|
|
+ <div class={classes.albumInfoTopConent}>
|
|
|
+ <h2>{state.details.albumName}</h2>
|
|
|
+ <p>
|
|
|
+ {state.details.albumDesc}
|
|
|
+ </p>
|
|
|
+ <div class={classes.tagWrap}>
|
|
|
+ {state.hotTagList.map((item: any) => {
|
|
|
+ return <tagItem title={item}></tagItem>
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class={classes.albumInfoBottom}>
|
|
|
+ <div class={classes.albumInfoLeft}>
|
|
|
+ <div class={classes.itemBottomL}>
|
|
|
+ <img src={smallPan} alt="" />
|
|
|
+ <span>{state.details.musicSheetCount}首</span>
|
|
|
+ </div>
|
|
|
+ <div class={classes.itemBottomR}>
|
|
|
+ <img src={start} alt="" />
|
|
|
+ <span>{state.details.favorite}人收藏</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class={classes.albumInfoRight}>
|
|
|
+ <div class={classes.itemBottomR}>
|
|
|
+ <img src={start} alt="" />
|
|
|
+ <span>已收藏</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class={classes.musicWrap}>
|
|
|
+ <div class={classes.title}>
|
|
|
+ <div class={classes.dot}></div>
|
|
|
+ <span>曲目列表</span>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ {state.musicList.map(item => {
|
|
|
+ return <musicLIstItem item={item}></musicLIstItem>
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <pagination
|
|
|
+ total={state.pageInfo.total}
|
|
|
+ v-model:page={state.pageInfo.page}
|
|
|
+ limit={state.pageInfo.limit}
|
|
|
+ pageSizes={state.pageInfo.page_size}
|
|
|
+ pagination={getList}
|
|
|
+ ></pagination>
|
|
|
+ </div>
|
|
|
+ <div class={classes.right}>
|
|
|
+ <div class={classes.some}>
|
|
|
+ <div class={classes.someTitle}>
|
|
|
+ <div class={classes.tilteL}>
|
|
|
+ <img src={somePan} alt="" />
|
|
|
+ <span>相关专辑</span>
|
|
|
+ </div>
|
|
|
+ <div class={classes.tilteR}>
|
|
|
+ <span>更多</span>
|
|
|
+ <img class={classes.arrow} src={arrow} alt="" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class={classes.someWrap}>
|
|
|
+ {state.relatedMusicAlbum.map(item=> <albumItem detail={item}></albumItem>)}
|
|
|
+
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class={classes.some}>
|
|
|
+ <div class={classes.someTitle}>
|
|
|
+ <div class={classes.tilteL}>
|
|
|
+ <img src={hot} alt="" />
|
|
|
+ <span>热门专辑</span>
|
|
|
+ </div>
|
|
|
+ <div class={classes.tilteR}>
|
|
|
+ <span>更多</span>
|
|
|
+ <img class={classes.arrow} src={arrow} alt="" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class={classes.someWrap}>
|
|
|
+ {state.hotList.map(item=> <albumItem detail={item}></albumItem>)}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ }
|
|
|
+})
|