diff --git a/src/views/health/activity/index.vue b/src/views/health/activity/index.vue index 5cc747d..48d962b 100644 --- a/src/views/health/activity/index.vue +++ b/src/views/health/activity/index.vue @@ -448,19 +448,46 @@ function confirmSummary() { const totalAmount = parseFloat(calculateTotalAmount()) const currentTotal = parseFloat(activity.totalCost) || 0 + // 判断活动是否跨天 + const startDate = activity.startTime ? dayjs(activity.startTime).format('YYYY-MM-DD') : '' + const endDate = activity.endTime ? dayjs(activity.endTime).format('YYYY-MM-DD') : '' + const isMultiDay = startDate !== endDate + // 构建费用明细 - const details = selectedExpenses.value - .map((item) => { + let detailsWithDate = '' + + if (isMultiDay) { + // 多天活动:按日期分组 + const groupedByDate = {} + selectedExpenses.value.forEach((item) => { + const date = dayjs(item.createTime).format('MM-DD') + if (!groupedByDate[date]) { + groupedByDate[date] = [] + } const category = item.childCategoryName || '' - return `${category} ${item.amount}元${item.remark ? '(' + item.remark + ')' : ''}` + groupedByDate[date].push(`${category} ${item.amount}元${item.remark ? '(' + item.remark + ')' : ''}`) }) - .join(';') + + // 按日期组装明细 + detailsWithDate = Object.keys(groupedByDate) + .sort() + .map((date) => `${date} ${groupedByDate[date].join('、')}`) + .join(';') + } else { + // 单天活动:不带日期 + detailsWithDate = selectedExpenses.value + .map((item) => { + const category = item.childCategoryName || '' + return `${category} ${item.amount}元${item.remark ? '(' + item.remark + ')' : ''}` + }) + .join(';') + } // 更新活动费用 const updateData = { ...activity, totalCost: (currentTotal + totalAmount).toFixed(2), - costDetail: activity.costDetail ? `${activity.costDetail};${details}` : details + costDetail: activity.costDetail ? `${activity.costDetail};${detailsWithDate}` : detailsWithDate } updateActivity(updateData).then(() => {