74 lines
2.0 KiB
JavaScript

/**
* 购买记录管理 Composable
*/
import { ref } from 'vue'
import { getIssueDrawLogs } from '@/api/appUser'
import { levelToAlpha } from '@/utils/activity'
/**
* 购买记录管理
*/
export function useRecords() {
const winRecords = ref([])
const loading = ref(false)
/**
* 获取购买记录
* @param {string} activityId - 活动ID
* @param {string} issueId - 期ID
*/
async function fetchWinRecords(activityId, issueId) {
if (!activityId || !issueId) return
loading.value = true
try {
const res = await getIssueDrawLogs(activityId, issueId)
const list = (res && res.list) || (Array.isArray(res) ? res : [])
// 直接使用原始记录列表,不进行聚合
// 映射字段以符合 RecordsList 组件的展示需求
winRecords.value = list.map(it => ({
id: it.id,
title: it.reward_name || it.title || it.name || '-', // 奖品名称
image: it.reward_image || it.image || '', // 奖品图片
count: 1, // 单个记录数量为1
// 用户信息
user_id: it.user_id,
user_name: it.user_name || '匿名用户',
avatar: it.avatar,
// 时间信息
created_at: it.created_at,
// 其他元数据
is_winner: it.is_winner,
level: it.level,
level_name: getLevelName(it.level)
}))
} catch (e) {
console.error('fetchWinRecords error', e)
winRecords.value = []
} finally {
loading.value = false
}
}
function getLevelName(level) {
if (!level) return ''
const alpha = levelToAlpha(level)
return alpha + '赏'
}
function clearRecords() {
winRecords.value = []
}
return {
winRecords,
loading,
fetchWinRecords,
clearRecords
}
}