|
|
@@ -344,7 +344,7 @@
|
|
|
<el-form-item label="最小参赛人数" prop="minPlayers">
|
|
|
<el-input v-model="form.minPlayers" placeholder="请输入最小参赛人数" :disabled="dialog.mode === 'view'" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="报名条件备注" prop="minPlayers">
|
|
|
+ <el-form-item label="报名条件备注">
|
|
|
<el-input v-model="form.conditionNote" placeholder="请输入报名条件备注" :disabled="dialog.mode === 'view'" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="报名条件" prop="itemsId">
|
|
|
@@ -602,6 +602,7 @@ const data = reactive<PageData<TournamentsForm, TournamentsQuery>>({
|
|
|
gameType: [{ required: true, message: '游戏类型不能为空', trigger: 'change' }],
|
|
|
lateRegistrationLevel: [{ required: true, message: '截止报名级别不能为空', trigger: 'change' }],
|
|
|
signTime: [{ required: true, message: '报名时间不能为空', trigger: 'change' }],
|
|
|
+ judgeId: [{ required: true, message: '裁判不能为空', trigger: 'change' }],
|
|
|
// ...其他规则
|
|
|
// ... existing code ...
|
|
|
itemsId: [
|
|
|
@@ -707,14 +708,14 @@ const data = reactive<PageData<TournamentsForm, TournamentsQuery>>({
|
|
|
}
|
|
|
],
|
|
|
minPlayers: [
|
|
|
- { required: false, message: '最小参赛人数不能为空', trigger: 'blur' },
|
|
|
+ { required: false, message: '参赛人数不能为空', trigger: 'blur' },
|
|
|
{
|
|
|
validator: (rule: any, value: any, callback: any) => {
|
|
|
const num = Number(value);
|
|
|
if (!/^\d+$/.test(value)) {
|
|
|
callback(new Error('只能输入正整数'));
|
|
|
} else if (num < 0 || num > 999) {
|
|
|
- callback(new Error('最小参赛人数必须在0-999之间'));
|
|
|
+ callback(new Error('参赛人数必须在0-999之间'));
|
|
|
} else {
|
|
|
callback();
|
|
|
}
|
|
|
@@ -795,6 +796,8 @@ const handleAdd = () => {
|
|
|
competitionIcon.value = ''; // 如果需要清除后台加载的图标,可以在这里设置为空字符串
|
|
|
iconPreviewUrl2.value = '';
|
|
|
competitionBg.value = '';
|
|
|
+
|
|
|
+ form.value.leagueTournamentId = queryParams.value.leagueTournamentId ? Number(queryParams.value.leagueTournamentId) : undefined;
|
|
|
dialog.visible = true;
|
|
|
dialog.title = '创建比赛';
|
|
|
dialog.mode = 'add'; // 设置模式
|
|
|
@@ -864,7 +867,7 @@ const handleUpdate = async (row?: TournamentsVO, mode: 'edit' | 'view' = 'edit')
|
|
|
const submitForm = () => {
|
|
|
tournamentsFormRef.value?.validate(async (valid: boolean) => {
|
|
|
// 校验奖励内容是否至少填写了一项
|
|
|
- /* if (data.form.tournamentType !== 1) {
|
|
|
+ /* if (data.form.tournamentType !== 1) {
|
|
|
if (!formPrize.rewards.some((r) => r.itemId && r.quantity)) {
|
|
|
ElMessage.warning('请至少填写一项奖励内容');
|
|
|
return;
|
|
|
@@ -934,11 +937,11 @@ const handleExport = () => {
|
|
|
`大奖赛${parseTime(new Date(), '{y}{m}{d}{h}{i}{s}')}.xlsx`
|
|
|
);
|
|
|
};
|
|
|
-
|
|
|
onMounted(() => {
|
|
|
const route = proxy?.$route;
|
|
|
if (route.query.leagueTournamentId) {
|
|
|
queryParams.value.leagueTournamentId = String(route.query.leagueTournamentId);
|
|
|
+ form.value.leagueTournamentId = route.query.leagueTournamentId as number;
|
|
|
}
|
|
|
getList();
|
|
|
loadItemOptions();
|
|
|
@@ -948,6 +951,24 @@ onMounted(() => {
|
|
|
loadItemPrizeOptions();
|
|
|
loadLeagueRelatedTournaments();
|
|
|
});
|
|
|
+// 监听路由变化,重新加载数据
|
|
|
+watch(
|
|
|
+ () => proxy?.$route.query.leagueTournamentId,
|
|
|
+ (newVal) => {
|
|
|
+ if (newVal) {
|
|
|
+ queryParams.value.leagueTournamentId = String(newVal);
|
|
|
+ form.value.leagueTournamentId = Number(newVal);
|
|
|
+ getList();
|
|
|
+ loadItemOptions();
|
|
|
+ loadItemStructuresOptions();
|
|
|
+ loadLeagueTournamentOptions();
|
|
|
+ loadJudgeOptions();
|
|
|
+ loadItemPrizeOptions();
|
|
|
+ loadLeagueRelatedTournaments();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ { immediate: false }
|
|
|
+);
|
|
|
const itemOptions = ref<{ id: number; label: string }[]>([]);
|
|
|
// 加载报名条件选项
|
|
|
const loadItemOptions = async () => {
|