lex 2 年之前
父节点
当前提交
0e903d1518

+ 85 - 0
src/views/music/album-detail/index.module.less

@@ -96,3 +96,88 @@
     margin-top: 0;
   }
 }
+
+.bgImg {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 265px;
+  object-fit: cover;
+  filter: blur(10px);
+}
+.musicContent {
+  position: relative;
+  height: 265px;
+  padding-top: 55px;
+  z-index: 10;
+  background-color: rgba(0, 0, 0, 0.6);
+  backdrop-filter: blur(20px);
+  -webkit-backdrop-filter: blur(20px);
+}
+
+.bg {
+  position: relative;
+  height: 100%;
+  padding: 16px;
+}
+.alumWrap {
+  display: flex;
+  align-items: center;
+  .img {
+    width: 115px;
+    height: 115px;
+    flex-shrink: 0;
+    border-radius: 6px;
+    overflow: hidden;
+    margin-right: 14px;
+  }
+  .alumTitle {
+    font-size: 18px;
+    font-weight: 500;
+    color: #fff;
+  }
+  .alumDes {
+    width: calc(100% - 129px);
+    .des {
+      color: #999;
+    }
+  }
+}
+.tags {
+  margin: 6px -2px 24px -2px;
+  .tag {
+    margin: 0 2px;
+    padding: 2px 6px;
+    color: #000;
+    background-color: rgba(113, 138, 147, 1);
+    border-radius: 20px;
+  }
+}
+.alumCollect {
+  display: flex;
+  align-items: center;
+  padding-top: 20px;
+  color: #999;
+  font-size: 14px;
+  & > img {
+    display: inline-block;
+    width: 20px;
+    height: 20px;
+    margin-right: 6px;
+  }
+  .right {
+    margin-left: 26px;
+  }
+}
+.alumnContainer {
+  position: relative;
+  padding: 0 16px;
+  margin-top: -16px;
+  z-index: 10;
+  .alumnList {
+    padding: 0 12px;
+    border-radius: 6px;
+    background-color: #fff;
+  }
+}

+ 46 - 3
src/views/music/album-detail/index.tsx

@@ -12,6 +12,8 @@ import Item from '../list/item'
 import { useRect } from '@vant/use'
 import { getRandomKey, musicBuy } from '../music'
 import { state } from '@/state'
+import IconPan from './pan.png'
+import oStart from './oStart.png'
 
 const noop = () => {}
 
@@ -55,7 +57,11 @@ export default defineComponent({
         })
         const { musicSheetList, ...rest } = res.data
         rows.value = [...rows.value, ...musicSheetList.rows]
-        albumDetail.value = rest
+        const musicTagNames = rest?.musicTagNames?.split(',') || []
+        albumDetail.value = {
+          ...rest,
+          musicTagNames
+        }
         data.value = musicSheetList
         params.page = musicSheetList.pageNo + 1
         finished.value = musicSheetList.pageNo >= musicSheetList.totalPage
@@ -96,7 +102,44 @@ export default defineComponent({
       // console.log(albumFavoriteCount.value)
       return (
         <div class={styles.detail}>
-          <Sticky
+          <img class={styles.bgImg} src={albumDetail.value?.albumCoverUrl} />
+          <div class={styles.musicContent}>
+            <div class={styles.bg}>
+              <div class={styles.alumWrap}>
+                <div class={styles.img}>
+                  {/* <TheImage src={albumDetail.value?.albumCoverUrl} /> */}
+                  <Image
+                    class={styles.image}
+                    width="100%"
+                    height="100%"
+                    lazy-load
+                    fit="cover"
+                    src={albumDetail.value?.albumCoverUrl}
+                  />
+                </div>
+                <div class={styles.alumDes}>
+                  <div class={[styles.alumTitle, 'van-ellipsis']}>
+                    {albumDetail.value?.albumName}
+                  </div>
+                  <div class={styles.tags}>
+                    {albumDetail.value?.musicTagNames?.map((tag: any) => (
+                      <span class={styles.tag}>{tag}</span>
+                    ))}
+                  </div>
+                  <div class={[styles.des, 'van-multi-ellipsis--l3']}>
+                    {albumDetail.value?.albumDesc}
+                  </div>
+                </div>
+              </div>
+              <div class={styles.alumCollect}>
+                <img src={IconPan} />
+                <span>共{albumDetail.value?.musicSheetCount}首曲目</span>
+                <img class={styles.right} src={oStart} />
+                <span>{albumDetail.value?.albumFavoriteCount}人收藏</span>
+              </div>
+            </div>
+          </div>
+          {/* <Sticky
             class={[styles.base, 'sticky']}
             style={{
               height: heights.value + 'px !important',
@@ -149,7 +192,7 @@ export default defineComponent({
                 </div>
               </div>
             </div>
-          </Sticky>
+          </Sticky> */}
           <List
             loading={loading.value}
             finished={finished.value}

二进制
src/views/music/album-detail/oStart.png


二进制
src/views/music/album-detail/pan.png