74 lines
2.0 KiB
JavaScript
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
|
|
}
|
|
}
|