press-next
Version:
Vue3 组件库,支持 Composition API
80 lines (67 loc) • 1.85 kB
text/typescript
const LABEL_SYMBOL_MAP = {
未开始: 'isLabelGray',
报名中: 'isLabelYellow',
报名结束: 'isLabelGray',
待开赛: 'isLabelPurple',
已报名: 'isLabelGreen',
比赛中: 'isLabelPurple',
已结束: 'isLabelGray',
};
export function getLabelSymbol(labelName: string) {
return LABEL_SYMBOL_MAP[labelName as keyof typeof LABEL_SYMBOL_MAP] || '';
}
function getCurDatePosAtChild(childInfo: {
act_start_time?: number;
act_end_time?: number;
}) {
const now = (new Date()).getTime();
const startTime = (childInfo.act_start_time || 0) * 1000;
const endTime = (childInfo.act_end_time || 0) * 1000;
if (now < startTime) {
// 未开始
return -1;
}
if (now >= startTime && now <= endTime) {
// 进行中
return 0;
}
if (now > endTime) {
// 已结束
return 1;
}
}
// 与竖版基本一致,考虑到后续可能不同,所以并未直接复用
export function getLabelName(item: {
state?: number;
disp_status?: number;
child_info?: {
act_start_time: number;
act_end_time: number;
}
}) {
const curPos = getCurDatePosAtChild(item.child_info || {});
// state, 报名状态 1可报名 2已报名 3不可报名
// disp_status, 展示状态 1报名中 2待比赛 3比赛中 4已结束
if (item.state == 2 && curPos === -1) {
return '已报名';
} if (item.state == 2 && curPos === 0) {
return '比赛中';
} if (item.state == 2 && curPos === 1) {
return '已结束';
} if (item.state == 1 && curPos === -1) {
return '报名中';
}
if (item.disp_status == 4) {
return '已结束';
}
if (item.state == 1 && item.disp_status == 1) {
return '报名中';
}
if (item.state == 1 && (curPos == 0 || curPos == 1)) {
return '报名结束';
}
if (curPos == -1) {
return '未开始';
}
return '报名结束';
}