From 3d47a6a7748e4d361dfda074f59379ffc93bea18 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Sun, 25 May 2025 08:57:13 +1000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20TrackItem=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=B9=B6=E4=BC=98=E5=8C=96=E4=B8=93=E8=BE=91?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 TrackItem 组件,用于展示专辑曲目信息 - 将 artistsOrganize 函数提取到 utils 模块中 - 添加 DIN Alternate 字体并应用于曲目编号 --- public/assets/din1451alt.ttf | Bin 0 -> 52208 bytes src/components/TrackItem.vue | 27 +++++++++++++++++++++++++++ src/pages/AlbumDetail.vue | 23 +++-------------------- src/style.css | 11 +++++++++++ src/utils/artistsOrganize.ts | 6 ++++++ src/utils/index.ts | 3 +++ 6 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 public/assets/din1451alt.ttf create mode 100644 src/components/TrackItem.vue create mode 100644 src/utils/artistsOrganize.ts create mode 100644 src/utils/index.ts diff --git a/public/assets/din1451alt.ttf b/public/assets/din1451alt.ttf new file mode 100644 index 0000000000000000000000000000000000000000..aef931a092e778250195ae78674aae39b3ee3e91 GIT binary patch literal 52208 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 literal 0 HcmV?d00001 diff --git a/src/components/TrackItem.vue b/src/components/TrackItem.vue new file mode 100644 index 0000000..c190ad4 --- /dev/null +++ b/src/components/TrackItem.vue @@ -0,0 +1,27 @@ + + + \ No newline at end of file diff --git a/src/pages/AlbumDetail.vue b/src/pages/AlbumDetail.vue index 7ad7a14..c722a96 100644 --- a/src/pages/AlbumDetail.vue +++ b/src/pages/AlbumDetail.vue @@ -3,6 +3,8 @@ import { ref, onMounted } from 'vue' import apis from '../apis' import { useRoute } from 'vue-router' import { usePlayQueueStore } from '../stores/usePlayQueueStore' +import { artistsOrganize } from '../utils' +import TrackItem from '../components/TrackItem.vue' const album = ref() @@ -24,13 +26,6 @@ onMounted(async () => { } }) -function artistsOrganize(list: string[]) { - if (list.length === 0) { return '未知音乐人' } - return list.map((artist) => { - return artist - }).join(' / ') -} - function playTheAlbum() { if (playQueue.queueReplaceLock) { if (!confirm("当前操作会将你的待播列表清空、放入这张专辑所有曲目,并从新待播清单的开头播放。继续吗?")) { return } @@ -112,19 +107,7 @@ function playTheAlbum() {
- +
diff --git a/src/style.css b/src/style.css index f5d6ce2..8c2c557 100644 --- a/src/style.css +++ b/src/style.css @@ -7,6 +7,13 @@ font-display: swap; } +@font-face { + font-family: 'Alte DIN'; + src: url('/assets/din1451alt.ttf') format('truetype-variations'); + font-weight: 1 999; + font-display: swap; +} + * { @apply font-[MiSans]; } @@ -17,4 +24,8 @@ button { input { @apply focus:outline-none; +} + +.track_num { + font-family: 'DIN Alternate', 'Alte DIN' !important; } \ No newline at end of file diff --git a/src/utils/artistsOrganize.ts b/src/utils/artistsOrganize.ts new file mode 100644 index 0000000..f25a8b1 --- /dev/null +++ b/src/utils/artistsOrganize.ts @@ -0,0 +1,6 @@ +export default (list: string[]) => { + if (list.length === 0) { return '未知音乐人' } + return list.map((artist) => { + return artist + }).join(' / ') +} \ No newline at end of file diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..07aa77b --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,3 @@ +import artistsOrganize from "./artistsOrganize" + +export { artistsOrganize }