Browse Source

fix: 活动截止时间显示NaN

getActivityList 在 loadMore 时把已格式化过的旧项(signupEndTime 变成
"2026.09.15 10:00")再丢给 new Date(),该格式不是 Date 可解析的 ISO 串,
返回 Invalid Date,导致 getMonth/getDate 输出 NaN,模板渲染出 NaN。

改为只对本次新增的 res.data.list 做格式化与倒计时,旧项已格式化过直接保留。
Developer 5 ngày trước cách đây
mục cha
commit
c066cb3fc8
1 tập tin đã thay đổi với 5 bổ sung2 xóa
  1. 5 2
      pages/home.vue

+ 5 - 2
pages/home.vue

@@ -211,12 +211,15 @@
 	const getActivityList = () => {
 		proxy.$api.get('/core/activity/page',queryParams.value).then(({data:res})=>{
 			if(res.code!==0) return proxy.$showToast(res.msg)
-			activityList.value = [...activityList.value,...res.data.list];
-			activityList.value.forEach(a=>{
+			// 只对本次新增项做格式化,避免 loadMore 时旧项(已格式化成 "yyyy.MM.dd hh:mm")
+			// 被再次 new Date() 解析为 Invalid Date 导致显示 NaN
+			const newItems = res.data.list.map(a=>{
 				let cc = calculateCountdown(a?.signupEndTime);
 				a.endTimeText = cc===-1?a?.signupEndTime:(`还有${cc.days}天${cc.hours}小时${cc.minutes}分钟`)
 				a.signupEndTime = a.signupEndTime?new Date(a.signupEndTime).Format('yyyy.MM.dd hh:mm'):''
+				return a
 			})
+			activityList.value = [...activityList.value, ...newItems];
 			queryParams.value.page++;
 			if(res.data.list.length===0) isOver.value = true;
 		})