赛事新增限制
This commit is contained in:
parent
b87373ee94
commit
1c15442978
@ -218,14 +218,60 @@ const handleCityChange = async () => {
|
||||
}
|
||||
};
|
||||
|
||||
const validateEventTime = (rule, value, callback) => {
|
||||
const regTime = localFormData.value.registrationTime;
|
||||
const matchTime = localFormData.value.matchTime;
|
||||
|
||||
if (!regTime || !Array.isArray(regTime) || regTime.length !== 2 || !regTime[0] || !regTime[1]) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
if (!matchTime || !Array.isArray(matchTime) || matchTime.length !== 2 || !matchTime[0] || !matchTime[1]) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
const regStart = new Date(regTime[0]);
|
||||
const regEnd = new Date(regTime[1]);
|
||||
const matchStart = new Date(matchTime[0]);
|
||||
const matchEnd = new Date(matchTime[1]);
|
||||
|
||||
if (regStart >= regEnd) {
|
||||
return callback(new Error('报名结束时间必须晚于报名开始时间'));
|
||||
}
|
||||
|
||||
if (matchStart >= matchEnd) {
|
||||
return callback(new Error('比赛结束时间必须晚于比赛开始时间'));
|
||||
}
|
||||
|
||||
if (matchStart <= regStart) {
|
||||
return callback(new Error('比赛开始时间必须晚于报名开始时间'));
|
||||
}
|
||||
|
||||
if (matchStart <= regEnd) {
|
||||
return callback(new Error('比赛开始时间必须晚于报名结束时间'));
|
||||
}
|
||||
|
||||
if (matchEnd <= regEnd) {
|
||||
return callback(new Error('比赛结束时间必须晚于报名结束时间'));
|
||||
}
|
||||
|
||||
callback();
|
||||
};
|
||||
|
||||
const rules = ref({
|
||||
eventName: [{ required: true, message: '请输入赛事名称', trigger: 'blur' }],
|
||||
coverImage: [{ required: true, message: '请上传封面', trigger: 'change' }],
|
||||
eventType: [{ required: true, message: '请选择赛事类型', trigger: 'change' }],
|
||||
registrationType: [{ required: true, message: '请选择报名方式', trigger: 'change' }],
|
||||
pointsRuleId: [{ required: true, message: '请选择积分规则', trigger: 'change' }],
|
||||
registrationTime: [{ type: 'array', required: true, message: '请选择报名起止时间', trigger: 'change' }],
|
||||
matchTime: [{ type: 'array', required: true, message: '请选择比赛起止时间', trigger: 'change' }],
|
||||
registrationTime: [
|
||||
{ type: 'array', required: true, message: '请选择报名起止时间', trigger: 'change' },
|
||||
{ validator: validateEventTime, trigger: 'change' }
|
||||
],
|
||||
matchTime: [
|
||||
{ type: 'array', required: true, message: '请选择比赛起止时间', trigger: 'change' },
|
||||
{ validator: validateEventTime, trigger: 'change' }
|
||||
],
|
||||
materialUploadTime: [
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
|
||||
@ -20,8 +20,8 @@
|
||||
<el-image :src="scope.row.coverImage" style="height: 80px" fit="cover" />
|
||||
</template>
|
||||
<template #eventStatus="scope">
|
||||
<el-tag :type="scope.row.eventStatus === 0 ? 'success' : scope.row.eventStatus === 1 ? 'warning' : 'danger'">
|
||||
{{ scope.row.eventStatus === 0 ? '报名中' : scope.row.eventStatus === 1 ? '比赛中' : '已结束' }}
|
||||
<el-tag :type="getEventStatusTagType(scope.row.eventStatus)">
|
||||
{{ getEventStatusText(scope.row.eventStatus) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
<template #action="scope">
|
||||
@ -56,6 +56,25 @@ const initParam = ref({
|
||||
refresh: true,
|
||||
});
|
||||
|
||||
// 赛事状态映射
|
||||
const eventStatusMap = {
|
||||
0: { type: 'info', text: '未开始' },
|
||||
1: { type: 'success', text: '报名中' },
|
||||
2: { type: 'warning', text: '报名结束' },
|
||||
3: { type: 'primary', text: '比赛中' },
|
||||
4: { type: 'danger', text: '已结束' },
|
||||
};
|
||||
|
||||
const getEventStatusTagType = (status) => {
|
||||
const normalizedStatus = typeof status === 'string' ? Number(status) : status;
|
||||
return eventStatusMap[normalizedStatus]?.type ?? 'info';
|
||||
};
|
||||
|
||||
const getEventStatusText = (status) => {
|
||||
const normalizedStatus = typeof status === 'string' ? Number(status) : status;
|
||||
return eventStatusMap[normalizedStatus]?.text ?? (status ?? '-');
|
||||
};
|
||||
|
||||
const refreshTable = () =>{
|
||||
initParam.value.refresh = !initParam.value.refresh
|
||||
}
|
||||
@ -130,9 +149,11 @@ const columns = reactive([
|
||||
el: 'select',
|
||||
},
|
||||
enum: [
|
||||
{ label: '报名中', value: 0 },
|
||||
{ label: '比赛中', value: 1 },
|
||||
{ label: '已结束', value: 2 },
|
||||
{ label: '未开始', value: 0 },
|
||||
{ label: '报名中', value: 1 },
|
||||
{ label: '报名结束', value: 2 },
|
||||
{ label: '比赛中', value: 3 },
|
||||
{ label: '已结束', value: 4 },
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@ -22,8 +22,8 @@
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
<template #eventStatus="scope">
|
||||
<el-tag :type="scope.row.eventStatus === 0 ? 'success' : scope.row.eventStatus === 1 ? 'warning' : 'danger'">
|
||||
{{ scope.row.eventStatus === 0 ? '报名中' : scope.row.eventStatus === 1 ? '比赛中' : '已结束' }}
|
||||
<el-tag :type="getEventStatusTagType(scope.row.eventStatus)">
|
||||
{{ getEventStatusText(scope.row.eventStatus) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
<template #registrationStartTime="scope">
|
||||
@ -464,6 +464,25 @@ const chargeModeMap = {
|
||||
const getEventTypeText = (v) => eventTypeMap[normalizeToNumber(v)] ?? (v ?? '-');
|
||||
const getChargeModeText = (v) => chargeModeMap[normalizeToNumber(v)] ?? (v ?? '-');
|
||||
|
||||
// 赛事状态映射
|
||||
const eventStatusMap = {
|
||||
0: { type: 'info', text: '未开始' },
|
||||
1: { type: 'success', text: '报名中' },
|
||||
2: { type: 'warning', text: '报名结束' },
|
||||
3: { type: 'primary', text: '比赛中' },
|
||||
4: { type: 'danger', text: '已结束' },
|
||||
};
|
||||
|
||||
const getEventStatusTagType = (status) => {
|
||||
const normalizedStatus = typeof status === 'string' ? Number(status) : status;
|
||||
return eventStatusMap[normalizedStatus]?.type ?? 'info';
|
||||
};
|
||||
|
||||
const getEventStatusText = (status) => {
|
||||
const normalizedStatus = typeof status === 'string' ? Number(status) : status;
|
||||
return eventStatusMap[normalizedStatus]?.text ?? (status ?? '-');
|
||||
};
|
||||
|
||||
const disableCancel = computed(() => {
|
||||
if (!currentRow.value) return true;
|
||||
const status = normalizeToNumber(currentRow.value.status);
|
||||
|
||||
@ -824,6 +824,8 @@ const formatGender = (gender) => {
|
||||
const v = Number(gender);
|
||||
if (v === 0) return '男';
|
||||
if (v === 1) return '女';
|
||||
if (v === 2) return '保密';
|
||||
if (v === 3) return '不限';
|
||||
return '不限';
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user