diff --git a/src/components/userChallenge/tuc-challenge-item.vue b/src/components/userChallenge/tuc-challenge-item.vue new file mode 100644 index 00000000..495abf92 --- /dev/null +++ b/src/components/userChallenge/tuc-challenge-item.vue @@ -0,0 +1,232 @@ + + + + diff --git a/src/components/userChallenge/tuc-monster-tag.vue b/src/components/userChallenge/tuc-monster-tag.vue new file mode 100644 index 00000000..19cb0068 --- /dev/null +++ b/src/components/userChallenge/tuc-monster-tag.vue @@ -0,0 +1,95 @@ + + + + diff --git a/src/components/userChallenge/tuc-overview.vue b/src/components/userChallenge/tuc-overview.vue new file mode 100644 index 00000000..ecef186b --- /dev/null +++ b/src/components/userChallenge/tuc-overview.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/pages/User/Challenge.vue b/src/pages/User/Challenge.vue index 571e222f..901f2064 100644 --- a/src/pages/User/Challenge.vue +++ b/src/pages/User/Challenge.vue @@ -95,7 +95,16 @@ class="ucb-window-item" >
- {{ JSON.stringify(item, null, 2) }} +
+
+ {{ item.name }} + {{ item.startTime }} ~ {{ item.endTime }} + 更新于 {{ item.updated }} +
+
幽境危战 | Render by TeyvatGuide v{{ version }}
+
+ +
@@ -109,6 +118,7 @@ import showDialog from "@comp/func/dialog.js"; import showLoading from "@comp/func/loading.js"; import showSnackbar from "@comp/func/snackbar.js"; +import TucOverview from "@comp/userChallenge/tuc-overview.vue"; import TucPopItem from "@comp/userChallenge/tuc-pop-item.vue"; import { GameServerEnum, getGameServerDesc } from "@enum/game.js"; import recordReq from "@req/recordReq.js"; @@ -150,8 +160,8 @@ const popList = shallowRef>([]); onMounted(async () => { version.value = await getVersion(); await TGLogger.Info("[UserCombat][onMounted] 打开幽境危战页面"); - await refreshPopList(); await reloadChallenge(); + await refreshPopList(false); }); watch( @@ -301,10 +311,12 @@ async function deleteChallenge(): Promise { await reloadChallenge(); } -async function refreshPopList(): Promise { +async function refreshPopList(hint: boolean = true): Promise { if (reqPop.value) return; reqPop.value = true; - await showLoading.start("正在加载赋光之人列表", `服务器: ${getGameServerDesc(server.value)}`); + if (hint) { + await showLoading.start("正在加载赋光之人列表", `服务器: ${getGameServerDesc(server.value)}`); + } const resp = await recordReq.challenge.pop(server.value); if (resp.retcode !== 0) { reqPop.value = false; @@ -461,7 +473,7 @@ async function refreshPopList(): Promise { .ucb-window-box { display: flex; flex-direction: column; - gap: 8px; + gap: 16px; } .ucb-empty { @@ -479,4 +491,30 @@ async function refreshPopList(): Promise { color: var(--common-text-title); font-family: var(--font-title); } + +.ucw-top { + display: flex; + width: 100%; + align-items: flex-start; + justify-content: space-between; +} + +.ucw-title { + display: flex; + flex-direction: column; + column-gap: 4px; + font-size: 12px; + + :first-child { + color: var(--common-text-title); + font-family: var(--font-title); + font-size: 20px; + } +} + +.ucw-share { + z-index: -1; + font-size: 12px; + opacity: 0.8; +} diff --git a/src/types/Game/Challenge.d.ts b/src/types/Game/Challenge.d.ts index 67ca2dc6..746c97b9 100644 --- a/src/types/Game/Challenge.d.ts +++ b/src/types/Game/Challenge.d.ts @@ -149,14 +149,14 @@ declare namespace TGApp.Game.Challenge { * @since Beta v0.8.0 * @interface ChallengeList * @property {string} name - 怪物名称 - * @property {number} seconds - 挑战用时(秒) + * @property {number} second - 挑战用时(秒) * @property {Array} teams - 挑战队伍列表 * @property {Array} best_avatar - 最佳角色列表 * @property {ChallengeMonster} monster - 挑战怪物数据 */ type ChallengeList = { name: string; - seconds: number; + second: number; teams: Array; best_avatar: Array; monster: ChallengeMonster; @@ -191,9 +191,9 @@ declare namespace TGApp.Game.Challenge { * @property {number} avatar_id - 角色 ID * @property {string} side_icon - 角色侧边图标 URL * @property {string} dps - 角色 DPS 数据 - * @property {string} type - 1-最强一击,2-最高总伤害 + * @property {number} type - 1-最强一击,2-最高总伤害 */ - type ChallengeAvatar = { avatar_id: number; side_icon: string; dps: string; type: string }; + type ChallengeAvatar = { avatar_id: number; side_icon: string; dps: string; type: number }; /** * @description 单次挑战怪物数据