mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-13 09:28:14 +08:00
🌱 留影叙佳期备份页 #98
This commit is contained in:
@@ -83,7 +83,7 @@
|
||||
"vue-echarts": "^6.6.9",
|
||||
"vue-json-viewer": "^3.0.4",
|
||||
"vue-router": "^4.3.0",
|
||||
"vuetify": "^3.5.5",
|
||||
"vuetify": "^3.5.8",
|
||||
"wcag-color": "^1.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
22
pnpm-lock.yaml
generated
22
pnpm-lock.yaml
generated
@@ -60,8 +60,8 @@ dependencies:
|
||||
specifier: ^4.3.0
|
||||
version: 4.3.0(vue@3.4.19)
|
||||
vuetify:
|
||||
specifier: ^3.5.5
|
||||
version: 3.5.5(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19)
|
||||
specifier: ^3.5.8
|
||||
version: 3.5.8(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19)
|
||||
wcag-color:
|
||||
specifier: ^1.1.1
|
||||
version: 1.1.1
|
||||
@@ -171,7 +171,7 @@ devDependencies:
|
||||
version: 7.0.15(vite@5.1.4)(vue@3.4.19)
|
||||
vite-plugin-vuetify:
|
||||
specifier: ^2.0.1
|
||||
version: 2.0.1(vite@5.1.4)(vue@3.4.19)(vuetify@3.5.5)
|
||||
version: 2.0.1(vite@5.1.4)(vue@3.4.19)(vuetify@3.5.8)
|
||||
yaml-eslint-parser:
|
||||
specifier: ^1.2.2
|
||||
version: 1.2.2
|
||||
@@ -1579,7 +1579,7 @@ packages:
|
||||
/@vue/shared@3.4.19:
|
||||
resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==}
|
||||
|
||||
/@vuetify/loader-shared@2.0.1(vue@3.4.19)(vuetify@3.5.5):
|
||||
/@vuetify/loader-shared@2.0.1(vue@3.4.19)(vuetify@3.5.8):
|
||||
resolution: {integrity: sha512-zy5/ohEO7RcJaWYu2Xiy8TBEOkTb42XvWvSAJwXAtY8OlwqyGhzzBp9OvMVjLGIuFXumBpXKlsaVIkeN0OWWSw==}
|
||||
peerDependencies:
|
||||
vue: ^3.0.0
|
||||
@@ -1587,7 +1587,7 @@ packages:
|
||||
dependencies:
|
||||
upath: 2.0.1
|
||||
vue: 3.4.19(typescript@5.3.3)
|
||||
vuetify: 3.5.5(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19)
|
||||
vuetify: 3.5.8(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19)
|
||||
|
||||
/acorn-jsx@5.3.2(acorn@8.11.2):
|
||||
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
|
||||
@@ -4873,7 +4873,7 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/vite-plugin-vuetify@2.0.1(vite@5.1.4)(vue@3.4.19)(vuetify@3.5.5):
|
||||
/vite-plugin-vuetify@2.0.1(vite@5.1.4)(vue@3.4.19)(vuetify@3.5.8):
|
||||
resolution: {integrity: sha512-GlRVAruohE8b0FqmeYYh1cYg3n8THGOv066uMA44qLv9uhUxSLw55CS7fi2yU0wH363TJ2vq36zUsPTjRFrjGQ==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
@@ -4881,12 +4881,12 @@ packages:
|
||||
vue: ^3.0.0
|
||||
vuetify: ^3.0.0
|
||||
dependencies:
|
||||
'@vuetify/loader-shared': 2.0.1(vue@3.4.19)(vuetify@3.5.5)
|
||||
'@vuetify/loader-shared': 2.0.1(vue@3.4.19)(vuetify@3.5.8)
|
||||
debug: 4.3.4
|
||||
upath: 2.0.1
|
||||
vite: 5.1.4(@types/node@20.11.20)
|
||||
vue: 3.4.19(typescript@5.3.3)
|
||||
vuetify: 3.5.5(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19)
|
||||
vuetify: 3.5.8(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -5026,8 +5026,8 @@ packages:
|
||||
'@vue/shared': 3.4.19
|
||||
typescript: 5.3.3
|
||||
|
||||
/vuetify@3.5.5(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19):
|
||||
resolution: {integrity: sha512-WENee4TkmWmwMEtmAHaljQZjR2AdmK1zetzH2rpEhlvkiTDEuIB0yKLGBv+vshH0XBRS84cf7uSjfceOvAhhSQ==}
|
||||
/vuetify@3.5.8(typescript@5.3.3)(vite-plugin-vuetify@2.0.1)(vue@3.4.19):
|
||||
resolution: {integrity: sha512-8nGS+lKejZkev55HFwIfsRt+9fOqbeDQNmXxfmLKAlnUT8FtynVwbjAwHMtX/OQAQ3ZwRaR1ptqQQmx3OgxzbQ==}
|
||||
engines: {node: ^12.20 || >=14.13}
|
||||
peerDependencies:
|
||||
typescript: '>=4.7'
|
||||
@@ -5046,7 +5046,7 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
typescript: 5.3.3
|
||||
vite-plugin-vuetify: 2.0.1(vite@5.1.4)(vue@3.4.19)(vuetify@3.5.5)
|
||||
vite-plugin-vuetify: 2.0.1(vite@5.1.4)(vue@3.4.19)(vuetify@3.5.8)
|
||||
vue: 3.4.19(typescript@5.3.3)
|
||||
|
||||
/wcag-color@1.1.1:
|
||||
|
||||
BIN
public/source/UI/act_birthday.png
Normal file
BIN
public/source/UI/act_birthday.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
@@ -15,7 +15,7 @@
|
||||
</template>
|
||||
</v-list-item>
|
||||
<!-- 菜单项 -->
|
||||
<v-list-item value="home" :link="true" href="/" :title.attr="'首页'">
|
||||
<v-list-item :title.attr="'首页'" value="home" :link="true" href="/">
|
||||
<template #title>首页</template>
|
||||
<template #prepend>
|
||||
<img src="/source/UI/paimon.webp" alt="homeIcon" class="side-icon paimon" />
|
||||
@@ -163,6 +163,17 @@
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
<v-list-item
|
||||
:title.attr="'留影叙佳期'"
|
||||
value="archive-birthday"
|
||||
:link="true"
|
||||
href="/archive/birthday"
|
||||
>
|
||||
<template #title>留影叙佳期</template>
|
||||
<template #prepend>
|
||||
<img src="/source/UI/act_birthday.png" alt="archive_birthday_icon" class="side-icon" />
|
||||
</template>
|
||||
</v-list-item>
|
||||
<div class="bottom-menu">
|
||||
<v-menu :open-on-click="true" location="end">
|
||||
<template #activator="{ props }">
|
||||
@@ -304,10 +315,6 @@ function login(): void {
|
||||
});
|
||||
}
|
||||
|
||||
async function codeScan(detectedCodes): Promise<void> {
|
||||
console.log("codeScan", detectedCodes);
|
||||
}
|
||||
|
||||
onUnmounted(() => {
|
||||
themeListener();
|
||||
});
|
||||
|
||||
@@ -65,7 +65,6 @@
|
||||
import { ref, onMounted, onUnmounted } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
import { AppCharacterData } from "../../data";
|
||||
import Mys from "../../plugins/Mys";
|
||||
import { useHomeStore } from "../../store/modules/home";
|
||||
import { createPost, createTGWindow } from "../../utils/TGWindow";
|
||||
|
||||
@@ -17,7 +17,7 @@ const textColor = computed(() => {
|
||||
if (!props.data || !props.data.days) return "var(--tgc-blue-2)";
|
||||
const days = props.data.days;
|
||||
const day = new Date().getDay();
|
||||
if (day === 0 || days.includes(day.toString())) return "var(--tgc-pink-1)";
|
||||
if (day === 0 || days.includes(day)) return "var(--tgc-pink-1)";
|
||||
return "var(--tgc-blue-2)";
|
||||
});
|
||||
</script>
|
||||
|
||||
446
src/data/archive/birth_calendar.json
Normal file
446
src/data/archive/birth_calendar.json
Normal file
@@ -0,0 +1,446 @@
|
||||
{
|
||||
"1": [
|
||||
{
|
||||
"role_id": 10000039,
|
||||
"name": "迪奥娜",
|
||||
"role_birthday": "1/18",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/05679c9962fd54a4de2666d3bef2a134_2427497782284089493.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000045,
|
||||
"name": "罗莎莉亚",
|
||||
"role_birthday": "1/24",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/66042545a052ebf57a0c631e7d446090_4203031452652142260.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000050,
|
||||
"name": "托马",
|
||||
"role_birthday": "1/9",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/2a96bca659bcb6951f81737e1a7a3a93_5782948101374592251.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000075,
|
||||
"name": "流浪者",
|
||||
"role_birthday": "1/3",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/12/16/149d46e87b7805b916f24d8fa426dc4f_7980041467691988039.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"2": [
|
||||
{
|
||||
"role_id": 10000024,
|
||||
"name": "北斗",
|
||||
"role_birthday": "2/14",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/22204dda59512c8a5b35d20c017a5193_1871773170805398287.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000032,
|
||||
"name": "班尼特",
|
||||
"role_birthday": "2/29",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/dd311c7d5598ea1b62f6a57e35597aa4_4480671453733501864.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000054,
|
||||
"name": "珊瑚宫心海",
|
||||
"role_birthday": "2/22",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/1987e71779ee95abef18be97b79e0104_4521215417254992430.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"3": [
|
||||
{
|
||||
"role_id": 10000003,
|
||||
"name": "琴",
|
||||
"role_birthday": "3/14",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/03/14/f1b50706030675277cafd6bbf3f7823f_3094026770145526314.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000034,
|
||||
"name": "诺艾尔",
|
||||
"role_birthday": "3/21",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/4ec7ddb18da3556c9c72b0ada7697ecf_4860846387056216251.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000035,
|
||||
"name": "七七",
|
||||
"role_birthday": "3/3",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/04b61b747ddb7507c3c9aa6d1b41997d_6466358702657229529.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000063,
|
||||
"name": "申鹤",
|
||||
"role_birthday": "3/10",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/11df1956c9afddc976871f5cd18f3e55_1882264082162153303.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000066,
|
||||
"name": "神里绫人",
|
||||
"role_birthday": "3/26",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/03/30/0496e0c13ca5fa8f378fc55df1eea3fe_4076052981305794654.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"4": [
|
||||
{
|
||||
"role_id": 10000016,
|
||||
"name": "迪卢克",
|
||||
"role_birthday": "4/30",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/03/14/eea6ce40cb37799f89e97dbadf9157d4_1880203548262197077.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000026,
|
||||
"name": "魈",
|
||||
"role_birthday": "4/17",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/1f921c6295f98f98c6dbcb8c72d0a32d_920080275698026207.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000060,
|
||||
"name": "夜兰",
|
||||
"role_birthday": "4/20",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/09/13/ed74fcd862ff9bc4d73347724e8ba693_7444591801787948295.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"5": [
|
||||
{
|
||||
"role_id": 10000031,
|
||||
"name": "菲谢尔",
|
||||
"role_birthday": "5/27",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/f7b2718beeb8aa5b6573bd4e1d9463b9_3495984559760798145.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000055,
|
||||
"name": "五郎",
|
||||
"role_birthday": "5/18",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/30bc73cc884f78655d0e9c729c865f43_2572415383439957784.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000064,
|
||||
"name": "云堇",
|
||||
"role_birthday": "5/21",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/1f9b0724ab51b5181e3a5f7269e549d6_767077575275095470.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000067,
|
||||
"name": "柯莱",
|
||||
"role_birthday": "5/8",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/09/13/83a9c296217893e9af675497f8aa6f85_7316921063422802893.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000072,
|
||||
"name": "坎蒂丝",
|
||||
"role_birthday": "5/3",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/11/21/56151c2f9e79d9efb4489be04afb4639_2964652110904806138.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"6": [
|
||||
{
|
||||
"role_id": -1,
|
||||
"name": "派蒙",
|
||||
"role_birthday": "6/1",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/9b145c0c4d88bc2929ea99d0534b812f_5583948209845106042.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000006,
|
||||
"name": "丽莎",
|
||||
"role_birthday": "6/9",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/03/14/0dd41810b5d35e54e54c9df256b95bde_8244826722190419121.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000022,
|
||||
"name": "温迪",
|
||||
"role_birthday": "6/16",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/78ebb331495385322de259ee80f82492_7775816679283264612.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000049,
|
||||
"name": "宵宫",
|
||||
"role_birthday": "6/21",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/f634af08084be0a075bf5b03776157ba_5538059042307006334.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000052,
|
||||
"name": "雷电将军",
|
||||
"role_birthday": "6/26",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/c6f6c4d0beef79e456671bd54e22371c_7132785758367907766.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000057,
|
||||
"name": "荒泷一斗",
|
||||
"role_birthday": "6/1",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/33594d138995e8dcd18ef6eca21e29e1_5833973899387063282.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000058,
|
||||
"name": "八重神子",
|
||||
"role_birthday": "6/27",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/ad570995be64c8662c1ba95ab5af1d5c_4512120573239183654.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000071,
|
||||
"name": "赛诺",
|
||||
"role_birthday": "6/23",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/11/21/dfb2cb828138c8b79390ba5e10f2ffd2_1575691290377981976.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"7": [
|
||||
{
|
||||
"role_id": 10000014,
|
||||
"name": "芭芭拉",
|
||||
"role_birthday": "7/5",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/40ac5e95d40ceb392e83582d7f2817a9_8078446689869362867.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000029,
|
||||
"name": "可莉",
|
||||
"role_birthday": "7/27",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/14d919badc3ce82ea4396545f2dd6027_391183174961162855.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000033,
|
||||
"name": "达达利亚",
|
||||
"role_birthday": "7/20",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/eaf5281d523d1c825f1b8b9625312601_2965241403901684959.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000046,
|
||||
"name": "胡桃",
|
||||
"role_birthday": "7/15",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/6d12d1f75f8f30f576d371ef1f818885_1496180927996923875.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000048,
|
||||
"name": "烟绯",
|
||||
"role_birthday": "7/28",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/587b34181effb00cbd25ef9938a623cd_6253710526162637141.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000056,
|
||||
"name": "九条裟罗",
|
||||
"role_birthday": "7/14",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/4982f771fb4d62e719f93452a87283c6_8786878764960347655.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000059,
|
||||
"name": "鹿野院平藏",
|
||||
"role_birthday": "7/24",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/07/13/79ea4b1fdf861accae277279186edb50_5159300215311263819.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000065,
|
||||
"name": "久岐忍",
|
||||
"role_birthday": "7/27",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/06/20/d25065cdd0f2e16f6b5c3f28a343b492_7181900211254841503.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"8": [
|
||||
{
|
||||
"role_id": 10000021,
|
||||
"name": "安柏",
|
||||
"role_birthday": "8/10",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/676e4cba01b3bc79a24a8d034f784009_6702923680561346568.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000027,
|
||||
"name": "凝光",
|
||||
"role_birthday": "8/26",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/2869460b1bd922a0c005e4f4f5076041_7221739942442261136.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000041,
|
||||
"name": "莫娜",
|
||||
"role_birthday": "8/31",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/ef5259d534990bc0fa3784ad66dde03a_4978042498865211603.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000076,
|
||||
"name": "珐露珊",
|
||||
"role_birthday": "8/20",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/12/16/e472a6c16e5af333cc49fef339dc71b5_5881966747313782097.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"9": [
|
||||
{
|
||||
"role_id": 10000002,
|
||||
"name": "神里绫华",
|
||||
"role_birthday": "9/28",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/b6f195649a0e9534186d1e45cd24f6a0_7073949618149706539.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000020,
|
||||
"name": "雷泽",
|
||||
"role_birthday": "9/9",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/f82bc068ff8d1e5966b5c806b546505b_3138284627086354787.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000036,
|
||||
"name": "重云",
|
||||
"role_birthday": "9/7",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/7a8da06f361ac182ea89311bf15211c9_2154078965934195499.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000038,
|
||||
"name": "阿贝多",
|
||||
"role_birthday": "9/13",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/879e228684643d5c269ea46fb8f87a2d_8262390748306210857.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"10": [
|
||||
{
|
||||
"role_id": 10000025,
|
||||
"name": "行秋",
|
||||
"role_birthday": "10/9",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/e5a69c077a9d8b1bec78140fea4850ea_1138386718612757747.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000044,
|
||||
"name": "辛焱",
|
||||
"role_birthday": "10/16",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/40a3d06a8bec53fbdf1e6097706a5fb1_8505167500900981828.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000047,
|
||||
"name": "枫原万叶",
|
||||
"role_birthday": "10/29",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/f0ac5f716fad737e2413165ed10e39a7_2249057826858498337.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000051,
|
||||
"name": "优菈",
|
||||
"role_birthday": "10/25",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/6e1c215000c28626b0334bffdacad9eb_7258101385567508094.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000053,
|
||||
"name": "早柚",
|
||||
"role_birthday": "10/19",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/696cf2ea885d0f836cfa67e76355c955_5041797225394354184.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000073,
|
||||
"name": "纳西妲",
|
||||
"role_birthday": "10/27",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/11/21/e8b642a3fda4c4aa67232a3dd120c490_6184638667025833225.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"11": [
|
||||
{
|
||||
"role_id": 10000015,
|
||||
"name": "凯亚",
|
||||
"role_birthday": "11/30",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/03/14/02ae95498a9f2fac96bf622d4867e00f_2003922267451938697.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000023,
|
||||
"name": "香菱",
|
||||
"role_birthday": "11/2",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/0d27478a04d52bdf6dffd21b895e11b9_2474147698707133278.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000042,
|
||||
"name": "刻晴",
|
||||
"role_birthday": "11/20",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/e058dbbd8aa485eee10511962bc0d49c_4150490636421778681.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000043,
|
||||
"name": "砂糖",
|
||||
"role_birthday": "11/26",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/bba7cf971fd63b7a65312ce946da1755_362828863795999201.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
],
|
||||
"12": [
|
||||
{
|
||||
"role_id": 10000030,
|
||||
"name": "钟离",
|
||||
"role_birthday": "12/31",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/c1e535b5f11b1543cd9b8a1f47de740f_2109808831807282889.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000037,
|
||||
"name": "甘雨",
|
||||
"role_birthday": "12/2",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/02/24/b8f6c053b3d4372de8da9cc00dac6b8d_1480530930974442487.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000068,
|
||||
"name": "多莉",
|
||||
"role_birthday": "12/21",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/09/13/8eea93b99ecac47c45df3b87335c10c5_8049071345012609907.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000069,
|
||||
"name": "提纳里",
|
||||
"role_birthday": "12/29",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/09/13/0b6d40e40804f19a43bd7376bf4591f0_5299390755932718720.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000070,
|
||||
"name": "妮露",
|
||||
"role_birthday": "12/3",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/11/21/0218c45665769aa1e30698df46432518_1418696763840260481.png",
|
||||
"is_subscribe": true
|
||||
},
|
||||
{
|
||||
"role_id": 10000074,
|
||||
"name": "莱依拉",
|
||||
"role_birthday": "12/19",
|
||||
"head_icon": "https://webstatic.mihoyo.com/upload/static-resource/2022/11/21/481ab7c8ec92170c3159017c3f2cfc36_8829963866565670667.png",
|
||||
"is_subscribe": true
|
||||
}
|
||||
]
|
||||
}
|
||||
2018
src/data/archive/birth_draw.json
Normal file
2018
src/data/archive/birth_draw.json
Normal file
File diff suppressed because it is too large
Load Diff
1142
src/data/archive/birth_role.json
Normal file
1142
src/data/archive/birth_role.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@
|
||||
* @since Beta v0.4.4
|
||||
*/
|
||||
|
||||
// 应用数据
|
||||
import achievements from "./app/achievements.json";
|
||||
import achievementSeries from "./app/achievementSeries.json";
|
||||
import calendar from "./app/calendar.json";
|
||||
@@ -12,6 +13,11 @@ import gacha from "./app/gacha.json";
|
||||
import GCG from "./app/GCG.json";
|
||||
import nameCards from "./app/namecard.json";
|
||||
import weapon from "./app/weapon.json";
|
||||
// 存档数据
|
||||
import arcBirCalendar from "./archive/birth_calendar.json";
|
||||
import arcBirDraw from "./archive/birth_draw.json";
|
||||
import arcBirRole from "./archive/birth_role.json";
|
||||
// Wiki 数据
|
||||
import wikiCharacter from "./WIKI/character.json";
|
||||
import wikiMaterial from "./WIKI/material.json";
|
||||
import wikiWeapon from "./WIKI/weapon.json";
|
||||
@@ -24,6 +30,9 @@ export const AppGachaData: TGApp.App.Gacha.PoolItem[] = gacha;
|
||||
export const AppGCGData: TGApp.App.GCG.WikiBriefInfo[] = GCG;
|
||||
export const AppNameCardsData: TGApp.App.NameCard.Item[] = nameCards;
|
||||
export const AppWeaponData: TGApp.App.Weapon.WikiBriefInfo[] = weapon;
|
||||
export const ArcBirCalendar: TGApp.Archive.Birth.CalendarData = arcBirCalendar;
|
||||
export const ArcBirDraw: TGApp.Archive.Birth.DrawItem[] = arcBirDraw;
|
||||
export const ArcBirRole: TGApp.Archive.Birth.RoleItem[] = arcBirRole;
|
||||
export const WikiCharacterData: TGApp.App.Character.WikiItem[] = wikiCharacter;
|
||||
export const WikiWeaponData: TGApp.App.Weapon.WikiItem[] = wikiWeapon;
|
||||
export const WikiMaterialData: TGApp.App.Material.WikiItem[] = wikiMaterial;
|
||||
|
||||
60
src/pages/Archive/Birthday.vue
Normal file
60
src/pages/Archive/Birthday.vue
Normal file
@@ -0,0 +1,60 @@
|
||||
<template>
|
||||
<div class="ab-container">
|
||||
<div class="ab-draw-grid">
|
||||
<div
|
||||
v-for="item in selectedItem"
|
||||
:key="`${item.birthday}_${item.role_id}`"
|
||||
class="ab-draw-item"
|
||||
>
|
||||
<v-img :src="item.take_picture" :lazy-src="item.unread_picture" />
|
||||
<span>{{ item.year }} {{ item.birthday }} {{ item.role_name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<v-pagination v-model="page" :length="length" />
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { onMounted, ref, watch, watchEffect } from "vue";
|
||||
|
||||
import { ArcBirDraw } from "../../data";
|
||||
|
||||
const page = ref(1);
|
||||
const length = ref(0);
|
||||
const selectedItem = ref<TGApp.Archive.Birth.DrawItem[]>(ArcBirDraw);
|
||||
|
||||
watch(page, (val) => {
|
||||
const start = (val - 1) * 12;
|
||||
const end = start + 12;
|
||||
selectedItem.value = ArcBirDraw.slice(start, end);
|
||||
});
|
||||
|
||||
watchEffect(() => {
|
||||
selectedItem.value = ArcBirDraw.slice(0, 12);
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
length.value = Math.ceil(ArcBirDraw.length / 12);
|
||||
});
|
||||
</script>
|
||||
<style lang="css" scoped>
|
||||
.ab-container {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.ab-draw-grid {
|
||||
position: relative;
|
||||
display: grid;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
column-gap: 10px;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
|
||||
.ab-draw-item {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
15
src/router/modules/archive.ts
Normal file
15
src/router/modules/archive.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* @file router/modules/archive.ts
|
||||
* @description 存档路由模块
|
||||
* @since Beta v0.4.4
|
||||
*/
|
||||
|
||||
const archiveRoutes = [
|
||||
{
|
||||
path: "/archive/birthday",
|
||||
name: "留影叙佳期",
|
||||
component: async () => await import("../../pages/Archive/Birthday.vue"),
|
||||
},
|
||||
];
|
||||
|
||||
export default archiveRoutes;
|
||||
@@ -1,15 +1,16 @@
|
||||
/**
|
||||
* @file router routes.ts
|
||||
* @description 路由配置
|
||||
* @since Alpha v0.2.0
|
||||
* @since Beta v0.4.4
|
||||
*/
|
||||
|
||||
import archiveRoutes from "./modules/archive";
|
||||
import mainRoutes from "./modules/main";
|
||||
import subRoutes from "./modules/sub";
|
||||
import userRoutes from "./modules/user";
|
||||
import wikiRoutes from "./modules/wiki";
|
||||
|
||||
// 合并路由
|
||||
const routes = [...mainRoutes, ...subRoutes, ...wikiRoutes, ...userRoutes];
|
||||
const routes = [...mainRoutes, ...subRoutes, ...archiveRoutes, ...wikiRoutes, ...userRoutes];
|
||||
|
||||
export default routes;
|
||||
|
||||
6
src/types/App/Material.d.ts
vendored
6
src/types/App/Material.d.ts
vendored
@@ -30,17 +30,17 @@ declare namespace TGApp.App.Material {
|
||||
|
||||
/**
|
||||
* @description 材料来源
|
||||
* @since Beta v0.4.2
|
||||
* @since Beta v0.4.4
|
||||
* @interface Source
|
||||
* @property {string} name - 来源名称
|
||||
* @property {string} type - 来源类型
|
||||
* @property {string[]} days - 来源日
|
||||
* @property {number[]} days - 来源日
|
||||
* @return Source
|
||||
*/
|
||||
interface Source {
|
||||
name: string;
|
||||
type: string;
|
||||
days?: string[];
|
||||
days?: number[];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
120
src/types/Archive/Birth.d.ts
vendored
Normal file
120
src/types/Archive/Birth.d.ts
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
/**
|
||||
* @file types/Archive/Birth.d.ts
|
||||
* @description 存档-留影叙佳期-数据类型
|
||||
* @since Beta v0.4.4
|
||||
*/
|
||||
|
||||
/**
|
||||
* @description 存档-留影叙佳期-命名空间
|
||||
* @since Beta v0.4.4
|
||||
* @namespace TGApp.Archive.Birth
|
||||
* @memberof TGApp.Archive
|
||||
*/
|
||||
declare namespace TGApp.Archive.Birth {
|
||||
/**
|
||||
* @description 日历数据
|
||||
* @since Beta v0.4.4
|
||||
* @interface CalendarData
|
||||
* @returns CalendarData
|
||||
*/
|
||||
type CalendarData = Record<string, CalendarItem[]>;
|
||||
|
||||
/**
|
||||
* @description 日历数据-条目
|
||||
* @since Beta v0.4.4
|
||||
* @interface CalendarItem
|
||||
* @property {number} role_id 角色ID
|
||||
* @property {string} name 角色名
|
||||
* @property {string} role_birthday 角色生日
|
||||
* @property {string} head_icon 头像
|
||||
* @property {boolean} is_subscribe 是否订阅
|
||||
* @returns CalendarItem
|
||||
*/
|
||||
interface CalendarItem {
|
||||
role_id: number;
|
||||
name: string;
|
||||
role_birthday: string;
|
||||
head_icon: string;
|
||||
is_subscribe: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 卡片数据条目
|
||||
* @since Beta v0.4.4
|
||||
* @interface DrawItem
|
||||
* @property {string} draw_status - 画片状态
|
||||
* @property {string} take_picture - 画片地址
|
||||
* @property {string} unread_picture - 未读画片地址
|
||||
* @property {string} word_text - 留言
|
||||
* @property {number} year - 年份
|
||||
* @property {string} birthday - 生日 m/d
|
||||
* @property {boolean} is_new - 是否新画片
|
||||
* @property {number} role_id - 角色 id
|
||||
* @property {string} gal_xml - 画片 xml
|
||||
* @property {string} gal_resource - 画片资源
|
||||
* @property {boolean} is_collected - 是否收藏
|
||||
* @property {number} op_id - 操作 id
|
||||
* @property {boolean} is_compensate - 是否补偿
|
||||
* @property {string} role_name - 角色名
|
||||
* @returns DrawItem
|
||||
*/
|
||||
interface DrawItem {
|
||||
draw_status: string;
|
||||
take_picture: string;
|
||||
unread_picture: string;
|
||||
word_text: string;
|
||||
year: number;
|
||||
birthday: string;
|
||||
is_new: boolean;
|
||||
role_id: number;
|
||||
gal_xml: string;
|
||||
gal_resource: string;
|
||||
is_collected: boolean;
|
||||
op_id: number;
|
||||
is_compensate: boolean;
|
||||
role_name: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 角色数据条目
|
||||
* @since Beta v0.4.4
|
||||
* @interface RoleItem
|
||||
* @property {number} role_id - 角色 id
|
||||
* @property {string} name - 角色名
|
||||
* @property {string} belong - 所属
|
||||
* @property {string} divine_type - 神力类型
|
||||
* @property {boolean} is_god - 是否是神
|
||||
* @property {string} seat_life - 命座
|
||||
* @property {string} element - 元素
|
||||
* @property {string} text - 介绍
|
||||
* @property {string} role_birthday - 生日 m/d
|
||||
* @property {string} head_icon - 头像
|
||||
* @property {string} head_image - 头像
|
||||
* @property {string} introduce - 介绍
|
||||
* @property {boolean} is_subscribe - 是否订阅
|
||||
* @property {boolean} is_finish_task - 是否完成任务
|
||||
* @property {number} current_compensate_num - 当前补偿数量
|
||||
* @property {boolean} is_compensate_num - 是否补偿数量
|
||||
* @property {number} year_compensate_num - 年份补偿数量
|
||||
* @returns RoleItem
|
||||
*/
|
||||
interface RoleItem {
|
||||
role_id: number;
|
||||
name: string;
|
||||
belong: string;
|
||||
divine_type: string;
|
||||
is_god: boolean;
|
||||
seat_life: string;
|
||||
element: string;
|
||||
text: string;
|
||||
role_birthday: string;
|
||||
head_icon: string;
|
||||
head_image: string;
|
||||
introduce: string;
|
||||
is_subscribe: boolean;
|
||||
is_finish_task: boolean;
|
||||
current_compensate_num: number;
|
||||
is_compensate_num: boolean;
|
||||
year_compensate_num: number;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user