Browse Source

任务列表,接取了任务以后,不刷新整个列表,而是更新指定的任务的状态

master
秦汉 2 weeks ago
parent
commit
ae458f7c9b
  1. 34
      Build_God_Game/src/views/DailyMissionView.vue

34
Build_God_Game/src/views/DailyMissionView.vue

@ -45,11 +45,41 @@ const loadMissions = async () => {
}
}
/** 接取成功后的本地状态(与后端 AcceptMission 一致,避免整表重拉) */
const patchMissionAfterAccept = (mission: DailyMission) => {
const startMs = Date.now()
const endMs = startMs + mission.spendTimeMinutes * 60 * 1000
missions.value = missions.value.map((m) =>
m.id === mission.id
? {
...m,
status: DailyMissionStatus.InProgress,
startTime: new Date(startMs).toISOString(),
endTime: new Date(endMs).toISOString(),
}
: m
)
}
/** 领取成功后的本地状态(todayClaimedCount 在每条 DTO 上重复,需一并 +1) */
const patchMissionAfterClaim = (mission: DailyMission) => {
const nextClaimed = mission.todayClaimedCount + 1
missions.value = missions.value.map((m) =>
m.id === mission.id
? { ...m, status: DailyMissionStatus.Claimed, todayClaimedCount: nextClaimed }
: { ...m, todayClaimedCount: nextClaimed }
)
todayStats.value = {
claimed: nextClaimed,
total: mission.todayTotalCount,
}
}
const handleAccept = async (mission: DailyMission) => {
try {
await dailyMissionApi.accept(mission.id)
showMsg('接取任务成功')
await loadMissions()
patchMissionAfterAccept(mission)
} catch (error: any) {
const errorMsg = error?.data?.message || error?.data || error?.message || '接取任务失败'
showMsg(errorMsg, 'error')
@ -60,7 +90,7 @@ const handleClaim = async (mission: DailyMission) => {
try {
await dailyMissionApi.claim(mission.id)
showMsg('领取奖励成功!')
await loadMissions()
patchMissionAfterClaim(mission)
} catch (error: any) {
const errorMsg = error?.data?.message || error?.data || error?.message || '领取奖励失败'
showMsg(errorMsg, 'error')

Loading…
Cancel
Save