|
|
@@ -167,13 +167,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="比赛类型" prop="gameType">
|
|
|
<el-select aria-required="true" v-model="form.gameType" placeholder="请选择" :disabled="dialog.mode === 'view'">
|
|
|
- <el-option
|
|
|
- v-for="dict in tournaments_type.filter((item) => item.value !== '1')"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- >
|
|
|
- </el-option>
|
|
|
+ <el-option v-for="dict in tournaments_type" :key="dict.value" :label="dict.label" :value="dict.value"> </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<!-- 赛事名称 -->
|
|
|
@@ -279,6 +273,7 @@
|
|
|
multiple
|
|
|
collapse-tags
|
|
|
collapse-tags-tooltip
|
|
|
+ :multiple-limit="1"
|
|
|
>
|
|
|
<el-option v-for="item in itemOptionsTagList" :key="item.id" :label="item.label" :value="item.id" />
|
|
|
</el-select>
|
|
|
@@ -293,6 +288,7 @@
|
|
|
style="width: 200px"
|
|
|
:disabled="dialog.mode === 'view'"
|
|
|
multiple
|
|
|
+ :multiple-limit="1"
|
|
|
collapse-tags
|
|
|
collapse-tags-tooltip
|
|
|
>
|
|
|
@@ -422,7 +418,7 @@
|
|
|
<el-input v-model="form.startingChips" placeholder="请输入起始记分牌数量" :disabled="dialog.mode === 'view'" />
|
|
|
</el-form-item>
|
|
|
<!-- 报名条件 -->
|
|
|
- <el-form-item label="报名条件" prop="itemsId">
|
|
|
+ <el-form-item label="报名条件" prop="itemsId" v-if="form.gameType !== '3'">
|
|
|
<div style="display: flex; align-items: center; gap: 10px; width: 100%">
|
|
|
<el-select v-model="form.itemsId" placeholder="请选择道具类型" :disabled="dialog.mode === 'view'" style="flex: 1">
|
|
|
<el-option v-for="item in itemOptions" :key="item.id" :label="item.label" :value="item.id" />
|
|
|
@@ -527,18 +523,13 @@
|
|
|
<el-dialog :title="generateDialog.title" v-model="generateDialog.visible" width="400px" append-to-body>
|
|
|
<el-form ref="generateFormRef" :model="generateForm" :rules="generateRules" label-width="80px">
|
|
|
<el-form-item label="开始时间" prop="beginTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="generateForm.beginTime"
|
|
|
- type="datetime"
|
|
|
- placeholder="请选择开始时间"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="generateForm.beginTime" type="datetime" placeholder="请选择开始时间" value-format="YYYY-MM-DD HH:mm:ss" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
<el-button type="primary" @click="submitGenerateForm">生成</el-button>
|
|
|
- <el-button @click="cancelGenerate">取消</el-button>
|
|
|
+ <el-button @click="generateDialog.visible = false">取消</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
@@ -838,7 +829,26 @@ const data = reactive<PageData<TournamentsForm, TournamentsQuery>>({
|
|
|
qualifierType: [{ required: true, message: '晋级条件类型不能为空', trigger: 'change' }],
|
|
|
lateRegistrationLevel: [{ required: true, message: '截止报名级别不能为空', trigger: 'change' }],
|
|
|
signTime: [{ required: true, message: '报名时间不能为空', trigger: 'change' }],
|
|
|
- itemsId: [{ required: true, message: '报名条件不能为空', trigger: 'change' }],
|
|
|
+ itemsId: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '报名条件不能为空',
|
|
|
+ trigger: 'change',
|
|
|
+ validator: (rule: any, value: any, callback: any) => {
|
|
|
+ // 如果 gameType 为 3,则不进行校验
|
|
|
+ if (data.form.gameType === '3') {
|
|
|
+ callback();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 其他情况执行默认校验
|
|
|
+ if (!value) {
|
|
|
+ callback(new Error('报名条件不能为空'));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
blindStructureId: [{ required: true, message: '盲注表不能为空', trigger: 'change' }],
|
|
|
startingChips: [
|
|
|
{ required: true, message: '起始记分牌数量不能为空', trigger: 'blur' },
|
|
|
@@ -863,9 +873,17 @@ const data = reactive<PageData<TournamentsForm, TournamentsQuery>>({
|
|
|
}
|
|
|
],
|
|
|
itemsNum: [
|
|
|
- { required: true, message: '数量不能为空', trigger: 'blur' },
|
|
|
{
|
|
|
- validator: (rule, value, callback) => {
|
|
|
+ required: true,
|
|
|
+ message: '数量不能为空',
|
|
|
+ trigger: 'blur',
|
|
|
+ validator: (rule: any, value: any, callback: any) => {
|
|
|
+ // 如果 gameType 为 3,则不进行校验
|
|
|
+ if (data.form.gameType === '3') {
|
|
|
+ callback();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
// 检查是否为字符串类型且包含非数字字符
|
|
|
if (typeof value === 'string' && !/^\d+$/.test(value)) {
|
|
|
callback(new Error('数量必须为正整数'));
|
|
|
@@ -880,8 +898,7 @@ const data = reactive<PageData<TournamentsForm, TournamentsQuery>>({
|
|
|
} else {
|
|
|
callback();
|
|
|
}
|
|
|
- },
|
|
|
- trigger: 'blur'
|
|
|
+ }
|
|
|
}
|
|
|
],
|
|
|
delayCardTime: [
|
|
|
@@ -1272,7 +1289,16 @@ watch(
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
-
|
|
|
+// 监听 gameType 变化,当值为 '3' 时清空 itemsId 和 itemsNum
|
|
|
+watch(
|
|
|
+ () => form.value.gameType,
|
|
|
+ (newVal) => {
|
|
|
+ if (newVal === '3') {
|
|
|
+ form.value.itemsId = null;
|
|
|
+ form.value.itemsNum = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+);
|
|
|
const handleIconChange = async (file) => {
|
|
|
const index = fileList.value.findIndex((f) => f.uid === file.uid);
|
|
|
fileList.value = [];
|
|
|
@@ -1591,7 +1617,6 @@ const generateRules = {
|
|
|
};
|
|
|
// 新增:处理生成按钮点击
|
|
|
const generateTournamentByTemplate2 = (row: TournamentsVO) => {
|
|
|
- debugger;
|
|
|
generateForm.templateId = row.id as number;
|
|
|
generateDialog.visible = true;
|
|
|
generateDialog.title = '生成赛事';
|
|
|
@@ -1604,7 +1629,6 @@ const submitGenerateForm = () => {
|
|
|
// 调试:打印 templateId 值
|
|
|
console.log('templateId:', generateForm.templateId);
|
|
|
console.log('beginTime:', generateForm.beginTime);
|
|
|
- debugger;
|
|
|
// 调用后端接口
|
|
|
await generateTournamentByTemplate({
|
|
|
templateId: generateForm.templateId,
|