|
@@ -29,24 +29,14 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="赛事类型" prop="eventType">
|
|
<el-form-item label="赛事类型" prop="eventType">
|
|
<el-select v-model="basicForm.eventType" placeholder="请选择赛事类型" style="width: 100%">
|
|
<el-select v-model="basicForm.eventType" placeholder="请选择赛事类型" style="width: 100%">
|
|
- <el-option
|
|
|
|
- v-for="dict in game_event_type"
|
|
|
|
- :key="dict.value"
|
|
|
|
- :label="dict.label"
|
|
|
|
- :value="dict.value"
|
|
|
|
- />
|
|
|
|
|
|
+ <el-option v-for="dict in game_event_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="用途" prop="purpose">
|
|
<el-form-item label="用途" prop="purpose">
|
|
<el-select v-model="basicForm.purpose" placeholder="请选择用途" style="width: 100%">
|
|
<el-select v-model="basicForm.purpose" placeholder="请选择用途" style="width: 100%">
|
|
- <el-option
|
|
|
|
- v-for="dict in game_event_purpose"
|
|
|
|
- :key="dict.value"
|
|
|
|
- :label="dict.label"
|
|
|
|
- :value="dict.value"
|
|
|
|
- />
|
|
|
|
|
|
+ <el-option v-for="dict in game_event_purpose" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
@@ -105,11 +95,7 @@
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
<el-form-item label="状态" prop="status">
|
|
<el-form-item label="状态" prop="status">
|
|
<el-radio-group v-model="basicForm.status">
|
|
<el-radio-group v-model="basicForm.status">
|
|
- <el-radio
|
|
|
|
- v-for="dict in game_event_status"
|
|
|
|
- :key="dict.value"
|
|
|
|
- :value="dict.value"
|
|
|
|
- >{{ dict.label }}</el-radio>
|
|
|
|
|
|
+ <el-radio v-for="dict in game_event_status" :key="dict.value" :value="dict.value">{{ dict.label }} </el-radio>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
@@ -139,7 +125,6 @@
|
|
<el-form-item label="备注" prop="remark">
|
|
<el-form-item label="备注" prop="remark">
|
|
<el-input v-model="basicForm.remark" type="textarea" placeholder="请输入备注" :rows="3" />
|
|
<el-input v-model="basicForm.remark" type="textarea" placeholder="请输入备注" :rows="3" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
-
|
|
|
|
</el-form>
|
|
</el-form>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
|
|
|
|
@@ -150,14 +135,14 @@
|
|
<h3>赛事菜单</h3>
|
|
<h3>赛事菜单</h3>
|
|
<el-button type="primary" @click="addMenuItem" icon="Plus">添加菜单项</el-button>
|
|
<el-button type="primary" @click="addMenuItem" icon="Plus">添加菜单项</el-button>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
|
|
+
|
|
<el-table :data="menuItems" border style="width: 100%">
|
|
<el-table :data="menuItems" border style="width: 100%">
|
|
- <el-table-column label="菜单名称" prop="menuName" width="200">
|
|
|
|
|
|
+ <el-table-column label="菜单名称" prop="menuName">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.menuName" placeholder="请输入菜单名称" />
|
|
<el-input v-model="scope.row.menuName" placeholder="请输入菜单名称" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="活动类型" prop="activityStatus" width="200">
|
|
|
|
|
|
+ <el-table-column label="活动类型" prop="activityStatus">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-radio-group v-model="scope.row.activityStatus">
|
|
<el-radio-group v-model="scope.row.activityStatus">
|
|
<el-radio :value="0">赛前</el-radio>
|
|
<el-radio :value="0">赛前</el-radio>
|
|
@@ -166,17 +151,17 @@
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="图标" prop="icon" width="200">
|
|
|
|
|
|
+ <el-table-column label="图标" prop="icon">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.icon" placeholder="请输入图标" />
|
|
<el-input v-model="scope.row.icon" placeholder="请输入图标" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="颜色" prop="color" width="200">
|
|
|
|
|
|
+ <el-table-column label="颜色" prop="color">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.color" placeholder="请输入颜色" />
|
|
<el-input v-model="scope.row.color" placeholder="请输入颜色" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="是否站外" prop="isFrame" width="200">
|
|
|
|
|
|
+ <el-table-column label="是否站外" prop="isFrame">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-radio-group v-model="scope.row.isFrame">
|
|
<el-radio-group v-model="scope.row.isFrame">
|
|
<el-radio :value="1">站内</el-radio>
|
|
<el-radio :value="1">站内</el-radio>
|
|
@@ -184,19 +169,19 @@
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="链接" prop="siteLink" width="200">
|
|
|
|
|
|
+ <el-table-column label="链接" prop="siteLink">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.siteLink" placeholder="请输入链接" />
|
|
<el-input v-model="scope.row.siteLink" placeholder="请输入链接" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="排序" prop="orderNum" width="180">
|
|
|
|
|
|
+ <el-table-column label="排序" prop="orderNum">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input-number v-model="scope.row.orderNum" :min="1" :max="999" />
|
|
<el-input-number v-model="scope.row.orderNum" :min="1" :max="999" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="操作" width="120">
|
|
|
|
|
|
+ <el-table-column label="操作">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button type="danger" size="small" @click="removeMenuItem(scope.$index)" icon="Delete">删除</el-button>
|
|
|
|
|
|
+ <el-button type="danger" size="small" @click="removeMenuItem(scope.$index)" icon="Delete">删除 </el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -212,36 +197,26 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table :data="projectItems" border style="width: 100%">
|
|
<el-table :data="projectItems" border style="width: 100%">
|
|
- <el-table-column label="項目类型" prop="projectType" width="180">
|
|
|
|
|
|
+ <el-table-column label="項目类型" prop="projectType">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-select v-model="scope.row.projectType" placeholder="请选择項目类型" style="width: 100%">
|
|
<el-select v-model="scope.row.projectType" placeholder="请选择項目类型" style="width: 100%">
|
|
- <el-option
|
|
|
|
- v-for="dict in game_project_type"
|
|
|
|
- :key="dict.value"
|
|
|
|
- :label="dict.label"
|
|
|
|
- :value="dict.value"
|
|
|
|
- />
|
|
|
|
|
|
+ <el-option v-for="dict in game_project_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="项目名称" prop="projectName" width="200">
|
|
|
|
|
|
+ <el-table-column label="项目名称" prop="projectName">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.projectName" placeholder="请输入项目名称" />
|
|
<el-input v-model="scope.row.projectName" placeholder="请输入项目名称" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="项目组别" prop="groupType" width="200">
|
|
|
|
|
|
+ <el-table-column label="项目组别" prop="groupType">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-select v-model="scope.row.groupType" placeholder="请选择项目组别" style="width: 100%">
|
|
<el-select v-model="scope.row.groupType" placeholder="请选择项目组别" style="width: 100%">
|
|
- <el-option
|
|
|
|
- v-for="group in groupItems"
|
|
|
|
- :key="group.groupId"
|
|
|
|
- :label="group.groupName"
|
|
|
|
- :value="group.groupName"
|
|
|
|
- />
|
|
|
|
|
|
+ <el-option v-for="group in groupItems" :key="group.groupId" :label="group.groupName" :value="group.groupName" />
|
|
</el-select>
|
|
</el-select>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="排序" prop="orderType" width="100">
|
|
|
|
|
|
+ <el-table-column label="排序" prop="orderType">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-radio-group v-model="scope.row.orderType">
|
|
<el-radio-group v-model="scope.row.orderType">
|
|
<el-radio value="0">降序</el-radio>
|
|
<el-radio value="0">降序</el-radio>
|
|
@@ -249,24 +224,24 @@
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="比赛地点" prop="location" width="100">
|
|
|
|
|
|
+ <el-table-column label="比赛地点" prop="location">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.location" placeholder="请输入比赛地点" />
|
|
<el-input v-model="scope.row.location" placeholder="请输入比赛地点" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="录取名次" prop="roundType" width="100">
|
|
|
|
|
|
+ <el-table-column label="录取名次" prop="roundType">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.roundType" placeholder="请输入录取名次" />
|
|
<el-input v-model="scope.row.roundType" placeholder="请输入录取名次" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="分数" prop="scoreValue" width="100">
|
|
|
|
|
|
+ <el-table-column label="分数" prop="scoreValue">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.scoreValue" placeholder="请输入分数" />
|
|
<el-input v-model="scope.row.scoreValue" placeholder="请输入分数" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="操作" width="120">
|
|
|
|
|
|
+ <el-table-column label="操作">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button type="danger" size="small" @click="removeProjectItem(scope.$index)" icon="Delete">移除</el-button>
|
|
|
|
|
|
+ <el-button type="danger" size="small" @click="removeProjectItem(scope.$index)" icon="Delete">移除 </el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -280,7 +255,7 @@
|
|
<h3>赛事配置信息</h3>
|
|
<h3>赛事配置信息</h3>
|
|
<el-button type="primary" @click="addConfigItem" icon="Plus">添加配置</el-button>
|
|
<el-button type="primary" @click="addConfigItem" icon="Plus">添加配置</el-button>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
|
|
+
|
|
<el-table :data="configItems" border style="width: 100%">
|
|
<el-table :data="configItems" border style="width: 100%">
|
|
<el-table-column label="配置类型" prop="configType" width="150">
|
|
<el-table-column label="配置类型" prop="configType" width="150">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
@@ -299,24 +274,24 @@
|
|
<el-input v-model="scope.row.configKey" placeholder="请输入配置键" />
|
|
<el-input v-model="scope.row.configKey" placeholder="请输入配置键" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="配置值" prop="configValue" width="300">
|
|
|
|
|
|
+ <el-table-column label="配置值" prop="configValue">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<image-or-url-input v-model="scope.row.configValue" />
|
|
<image-or-url-input v-model="scope.row.configValue" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="配置描述" prop="configDesc" width="200">
|
|
|
|
|
|
+ <el-table-column label="配置描述" prop="configDesc">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.configDesc" placeholder="请输入配置描述" />
|
|
<el-input v-model="scope.row.configDesc" placeholder="请输入配置描述" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <!-- <el-table-column label="是否启用" prop="isEnabled" width="120">
|
|
|
|
|
|
+ <!-- <el-table-column label="是否启用" prop="isEnabled">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-switch v-model="scope.row.isEnabled" />
|
|
<el-switch v-model="scope.row.isEnabled" />
|
|
</template>
|
|
</template>
|
|
</el-table-column> -->
|
|
</el-table-column> -->
|
|
- <el-table-column label="操作" width="120">
|
|
|
|
|
|
+ <el-table-column label="操作">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button type="danger" size="small" @click="removeConfigItem(scope.$index)" icon="Delete">删除</el-button>
|
|
|
|
|
|
+ <el-button type="danger" size="small" @click="removeConfigItem(scope.$index)" icon="Delete">删除 </el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -332,24 +307,24 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table :data="teamItems" border style="width: 100%">
|
|
<el-table :data="teamItems" border style="width: 100%">
|
|
- <el-table-column label="单位名称" prop="teamName" width="200">
|
|
|
|
|
|
+ <el-table-column label="单位名称" prop="teamName">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.teamName" placeholder="请输入单位名称" />
|
|
<el-input v-model="scope.row.teamName" placeholder="请输入单位名称" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="编号" prop="teamCode" width="100">
|
|
|
|
|
|
+ <el-table-column label="编号" prop="teamCode">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.teamCode" placeholder="请输入编号" />
|
|
<el-input v-model="scope.row.teamCode" placeholder="请输入编号" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="团队描述" prop="teamDescribe" width="200">
|
|
|
|
|
|
+ <el-table-column label="团队描述" prop="teamDescribe">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.teamDescribe" placeholder="请描述一下你的团队吧~" />
|
|
<el-input v-model="scope.row.teamDescribe" placeholder="请描述一下你的团队吧~" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="操作" width="120">
|
|
|
|
|
|
+ <el-table-column label="操作">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button type="danger" size="small" @click="removeTeamItem(scope.$index)" icon="Delete">删除</el-button>
|
|
|
|
|
|
+ <el-button type="danger" size="small" @click="removeTeamItem(scope.$index)" icon="Delete">删除 </el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -365,12 +340,12 @@
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table :data="groupItems" border style="width: 100%">
|
|
<el-table :data="groupItems" border style="width: 100%">
|
|
- <el-table-column label="分组名称" prop="groupName" width="200">
|
|
|
|
|
|
+ <el-table-column label="分组名称" prop="groupName">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-input v-model="scope.row.groupName" placeholder="请输入分组名称" />
|
|
<el-input v-model="scope.row.groupName" placeholder="请输入分组名称" />
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="成员性别" prop="memberGender" width="200">
|
|
|
|
|
|
+ <el-table-column label="成员性别" prop="memberGender">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
<el-radio-group v-model="scope.row.memberGender">
|
|
<el-radio-group v-model="scope.row.memberGender">
|
|
<el-radio value="0">不分男女</el-radio>
|
|
<el-radio value="0">不分男女</el-radio>
|
|
@@ -379,9 +354,9 @@
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="操作" width="120">
|
|
|
|
|
|
+ <el-table-column label="操作">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button type="danger" size="small" @click="removeGroupItem(scope.$index)" icon="Delete">删除</el-button>
|
|
|
|
|
|
+ <el-button type="danger" size="small" @click="removeGroupItem(scope.$index)" icon="Delete">删除 </el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -408,18 +383,18 @@ import { GameEventConfigTypeVO } from '@/api/system/gameEventConfigType/types';
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
import { listGameEventMenu, addGameEventMenu, updateGameEventMenu, delGameEventMenu } from '@/api/system/gameEventMenu';
|
|
import { listGameEventMenu, addGameEventMenu, updateGameEventMenu, delGameEventMenu } from '@/api/system/gameEventMenu';
|
|
import { GameEventMenuVO, GameEventMenuForm } from '@/api/system/gameEventMenu/types';
|
|
import { GameEventMenuVO, GameEventMenuForm } from '@/api/system/gameEventMenu/types';
|
|
-import { listGameTeam, addGameTeam, updateGameTeam,delGameTeam } from '@/api/system/gameTeam';
|
|
|
|
|
|
+import { listGameTeam, addGameTeam, updateGameTeam, delGameTeam } from '@/api/system/gameTeam';
|
|
import { GameTeamVO, GameTeamForm } from '@/api/system/gameTeam/types';
|
|
import { GameTeamVO, GameTeamForm } from '@/api/system/gameTeam/types';
|
|
import { listGameEventGroup, addGameEventGroup, updateGameEventGroup, delGameEventGroup } from '@/api/system/gameEventGroup';
|
|
import { listGameEventGroup, addGameEventGroup, updateGameEventGroup, delGameEventGroup } from '@/api/system/gameEventGroup';
|
|
-import { GameEventGroupForm,GameEventGroupVO } from '@/api/system/gameEventGroup/types';
|
|
|
|
-import { addGameEventProject, listGameEventProject, updateGameEventProject,delGameEventProject } from '@/api/system/gameEventProject';
|
|
|
|
|
|
+import { GameEventGroupForm, GameEventGroupVO } from '@/api/system/gameEventGroup/types';
|
|
|
|
+import { addGameEventProject, listGameEventProject, updateGameEventProject, delGameEventProject } from '@/api/system/gameEventProject';
|
|
import { GameEventProjectForm, GameEventProjectVO } from '@/api/system/gameEventProject/types';
|
|
import { GameEventProjectForm, GameEventProjectVO } from '@/api/system/gameEventProject/types';
|
|
|
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
-const { game_event_type, game_event_purpose, game_event_status, sys_yes_no,game_project_type } = toRefs<any>(
|
|
|
|
- proxy?.useDict('game_event_type', 'game_event_purpose', 'game_event_status', 'sys_yes_no','game_project_type')
|
|
|
|
|
|
+const { game_event_type, game_event_purpose, game_event_status, sys_yes_no, game_project_type } = toRefs<any>(
|
|
|
|
+ proxy?.useDict('game_event_type', 'game_event_purpose', 'game_event_status', 'sys_yes_no', 'game_project_type')
|
|
);
|
|
);
|
|
|
|
|
|
// 页面状态
|
|
// 页面状态
|
|
@@ -448,27 +423,15 @@ const basicForm = ref<GameEventForm>({
|
|
remark: ''
|
|
remark: ''
|
|
});
|
|
});
|
|
|
|
|
|
-
|
|
|
|
// 表单验证规则
|
|
// 表单验证规则
|
|
const basicRules = {
|
|
const basicRules = {
|
|
- eventCode: [
|
|
|
|
- { required: true, message: '请输入赛事编号', trigger: 'blur' }
|
|
|
|
- ],
|
|
|
|
- eventName: [
|
|
|
|
- { required: true, message: '请输入赛事名称', trigger: 'blur' }
|
|
|
|
- ],
|
|
|
|
- eventType: [
|
|
|
|
- { required: true, message: '请选择赛事类型', trigger: 'change' }
|
|
|
|
- ],
|
|
|
|
- startTime: [
|
|
|
|
- { required: true, message: '请选择开始时间', trigger: 'change' }
|
|
|
|
- ],
|
|
|
|
- endTime: [
|
|
|
|
- { required: true, message: '请选择结束时间', trigger: 'change' }
|
|
|
|
- ]
|
|
|
|
|
|
+ eventCode: [{ required: true, message: '请输入赛事编号', trigger: 'blur' }],
|
|
|
|
+ eventName: [{ required: true, message: '请输入赛事名称', trigger: 'blur' }],
|
|
|
|
+ eventType: [{ required: true, message: '请选择赛事类型', trigger: 'change' }],
|
|
|
|
+ startTime: [{ required: true, message: '请选择开始时间', trigger: 'change' }],
|
|
|
|
+ endTime: [{ required: true, message: '请选择结束时间', trigger: 'change' }]
|
|
};
|
|
};
|
|
|
|
|
|
-
|
|
|
|
// 初始化页面
|
|
// 初始化页面
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
const eventId = route.params.id as string;
|
|
const eventId = route.params.id as string;
|
|
@@ -489,10 +452,10 @@ const loadEventData = async (eventId: string | number) => {
|
|
try {
|
|
try {
|
|
const res = await getGameEvent(eventId);
|
|
const res = await getGameEvent(eventId);
|
|
const data = res.data;
|
|
const data = res.data;
|
|
-
|
|
|
|
|
|
+
|
|
// 填充基本信息
|
|
// 填充基本信息
|
|
Object.assign(basicForm.value, data);
|
|
Object.assign(basicForm.value, data);
|
|
-
|
|
|
|
|
|
+
|
|
// 加载图片配置数据
|
|
// 加载图片配置数据
|
|
try {
|
|
try {
|
|
await loadImageConfigData(eventId);
|
|
await loadImageConfigData(eventId);
|
|
@@ -500,7 +463,7 @@ const loadEventData = async (eventId: string | number) => {
|
|
console.warn('加载图片配置数据失败,继续加载其他数据:', error);
|
|
console.warn('加载图片配置数据失败,继续加载其他数据:', error);
|
|
// 不中断其他数据的加载
|
|
// 不中断其他数据的加载
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
await loadMenuData(eventId); // 加载菜单数据
|
|
await loadMenuData(eventId); // 加载菜单数据
|
|
await loadGroupData(eventId); // 加载分组数据
|
|
await loadGroupData(eventId); // 加载分组数据
|
|
await loadProjectData(eventId); // 加载项目数据
|
|
await loadProjectData(eventId); // 加载项目数据
|
|
@@ -508,7 +471,6 @@ const loadEventData = async (eventId: string | number) => {
|
|
await loadConfigData(eventId); // 加载配置数据
|
|
await loadConfigData(eventId); // 加载配置数据
|
|
// TODO: 加载菜单、项目、配置数据
|
|
// TODO: 加载菜单、项目、配置数据
|
|
// 这里需要调用相应的API来加载数据
|
|
// 这里需要调用相应的API来加载数据
|
|
-
|
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
proxy?.$modal.msgError('加载赛事数据失败');
|
|
proxy?.$modal.msgError('加载赛事数据失败');
|
|
}
|
|
}
|
|
@@ -550,7 +512,7 @@ const addGroupItem = () => {
|
|
groupId: '',
|
|
groupId: '',
|
|
eventId: '',
|
|
eventId: '',
|
|
groupName: '',
|
|
groupName: '',
|
|
- memberGender: '',
|
|
|
|
|
|
+ memberGender: ''
|
|
});
|
|
});
|
|
};
|
|
};
|
|
// 删除赛事分组项
|
|
// 删除赛事分组项
|
|
@@ -612,7 +574,7 @@ const addMenuItem = () => {
|
|
isFrame: 1,
|
|
isFrame: 1,
|
|
siteLink: '',
|
|
siteLink: '',
|
|
orderNum: menuItems.value.length + 1,
|
|
orderNum: menuItems.value.length + 1,
|
|
- eventId: isEdit.value ? route.params.id as string : '' // 关联赛事ID
|
|
|
|
|
|
+ eventId: isEdit.value ? (route.params.id as string) : '' // 关联赛事ID
|
|
});
|
|
});
|
|
};
|
|
};
|
|
// 删除菜单项
|
|
// 删除菜单项
|
|
@@ -669,12 +631,12 @@ const loadImageConfigData = async (eventId: string | number) => {
|
|
pageNum: 1,
|
|
pageNum: 1,
|
|
pageSize: 100
|
|
pageSize: 100
|
|
});
|
|
});
|
|
-
|
|
|
|
|
|
+
|
|
const eventImageConfigs = Array.isArray(eventRes.rows) ? eventRes.rows : [];
|
|
const eventImageConfigs = Array.isArray(eventRes.rows) ? eventRes.rows : [];
|
|
|
|
|
|
// 合并配置:以模板为基础,用当前赛事的数据覆盖
|
|
// 合并配置:以模板为基础,用当前赛事的数据覆盖
|
|
- imageConfigItems.value = allImageConfigs.map(template => {
|
|
|
|
- const existingConfig = eventImageConfigs.find(item => item.configKey === template.configKey);
|
|
|
|
|
|
+ imageConfigItems.value = allImageConfigs.map((template) => {
|
|
|
|
+ const existingConfig = eventImageConfigs.find((item) => item.configKey === template.configKey);
|
|
return {
|
|
return {
|
|
...template,
|
|
...template,
|
|
eventId: eventId,
|
|
eventId: eventId,
|
|
@@ -733,7 +695,7 @@ const refreshImageConfigs = async () => {
|
|
// 保存图片配置数据
|
|
// 保存图片配置数据
|
|
const saveImageConfigData = async (eventId?: string | number) => {
|
|
const saveImageConfigData = async (eventId?: string | number) => {
|
|
try {
|
|
try {
|
|
- const targetEventId = eventId || route.params.id as string;
|
|
|
|
|
|
+ const targetEventId = eventId || (route.params.id as string);
|
|
const updates: GameEventConfigForm[] = [];
|
|
const updates: GameEventConfigForm[] = [];
|
|
const adds: GameEventConfigForm[] = [];
|
|
const adds: GameEventConfigForm[] = [];
|
|
|
|
|
|
@@ -746,7 +708,7 @@ const saveImageConfigData = async (eventId?: string | number) => {
|
|
configType: 'IMAGE'
|
|
configType: 'IMAGE'
|
|
};
|
|
};
|
|
|
|
|
|
- if (item.configId && item.configValue) {
|
|
|
|
|
|
+ if (item.configId && item.configValue) {
|
|
updates.push(configData);
|
|
updates.push(configData);
|
|
} else if (!item.configId && item.configValue) {
|
|
} else if (!item.configId && item.configValue) {
|
|
adds.push(configData);
|
|
adds.push(configData);
|
|
@@ -799,7 +761,7 @@ const addProjectItem = () => {
|
|
remark: '',
|
|
remark: '',
|
|
location: '',
|
|
location: '',
|
|
scoreValue: '',
|
|
scoreValue: '',
|
|
- groupType: '',
|
|
|
|
|
|
+ groupType: ''
|
|
});
|
|
});
|
|
};
|
|
};
|
|
// 删除项目项
|
|
// 删除项目项
|
|
@@ -834,7 +796,6 @@ const saveProjectData = async (eventId: string | number) => {
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
-
|
|
|
|
// 配置信息数据
|
|
// 配置信息数据
|
|
const configItems = ref<GameEventConfigForm[]>([]);
|
|
const configItems = ref<GameEventConfigForm[]>([]);
|
|
// 配置类型选项
|
|
// 配置类型选项
|
|
@@ -911,7 +872,6 @@ const saveconfigData = async (eventId: string | number) => {
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
-
|
|
|
|
// 参赛队伍数据
|
|
// 参赛队伍数据
|
|
const teamItems = ref<GameTeamForm[]>([]);
|
|
const teamItems = ref<GameTeamForm[]>([]);
|
|
// 加载队伍数据
|
|
// 加载队伍数据
|
|
@@ -934,7 +894,7 @@ const addTeamItem = () => {
|
|
teamCode: '',
|
|
teamCode: '',
|
|
eventId: '',
|
|
eventId: '',
|
|
teamDescribe: '',
|
|
teamDescribe: '',
|
|
- remark: '',
|
|
|
|
|
|
+ remark: ''
|
|
});
|
|
});
|
|
};
|
|
};
|
|
// 删除参赛队伍项
|
|
// 删除参赛队伍项
|
|
@@ -979,7 +939,7 @@ const saveEvent = async () => {
|
|
|
|
|
|
// 合并表单数据
|
|
// 合并表单数据
|
|
const formData: GameEventForm = {
|
|
const formData: GameEventForm = {
|
|
- ...basicForm.value,
|
|
|
|
|
|
+ ...basicForm.value
|
|
};
|
|
};
|
|
|
|
|
|
let savedEventId: string;
|
|
let savedEventId: string;
|
|
@@ -995,7 +955,6 @@ const saveEvent = async () => {
|
|
} else {
|
|
} else {
|
|
const addRes = await addGameEvent(formData);
|
|
const addRes = await addGameEvent(formData);
|
|
// 假设返回的数据中包含新创建的赛事ID
|
|
// 假设返回的数据中包含新创建的赛事ID
|
|
- console.log('addRes', addRes);
|
|
|
|
savedEventId = addRes?.data as string;
|
|
savedEventId = addRes?.data as string;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1011,13 +970,12 @@ const saveEvent = async () => {
|
|
await saveGroupData(savedEventId);
|
|
await saveGroupData(savedEventId);
|
|
// 保存赛事项目数据
|
|
// 保存赛事项目数据
|
|
await saveProjectData(savedEventId);
|
|
await saveProjectData(savedEventId);
|
|
-
|
|
|
|
|
|
+
|
|
proxy?.$modal.msgSuccess('保存成功');
|
|
proxy?.$modal.msgSuccess('保存成功');
|
|
-
|
|
|
|
|
|
+
|
|
// 保存成功后,设置一个标识,表示需要刷新列表数据
|
|
// 保存成功后,设置一个标识,表示需要刷新列表数据
|
|
sessionStorage.setItem('needRefreshGameEventList', 'true');
|
|
sessionStorage.setItem('needRefreshGameEventList', 'true');
|
|
goBack();
|
|
goBack();
|
|
-
|
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
console.error('保存失败:', error);
|
|
console.error('保存失败:', error);
|
|
proxy?.$modal.msgError('保存失败');
|
|
proxy?.$modal.msgError('保存失败');
|
|
@@ -1038,13 +996,13 @@ const goBack = () => {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
gap: 16px;
|
|
gap: 16px;
|
|
-
|
|
|
|
|
|
+
|
|
.page-title {
|
|
.page-title {
|
|
font-size: 18px;
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
font-weight: 600;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.menu-config,
|
|
.menu-config,
|
|
.project-config,
|
|
.project-config,
|
|
.config-info,
|
|
.config-info,
|
|
@@ -1057,7 +1015,7 @@ const goBack = () => {
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
align-items: center;
|
|
margin-bottom: 16px;
|
|
margin-bottom: 16px;
|
|
-
|
|
|
|
|
|
+
|
|
h3 {
|
|
h3 {
|
|
margin: 0;
|
|
margin: 0;
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
@@ -1065,7 +1023,7 @@ const goBack = () => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.image-config {
|
|
.image-config {
|
|
.config-info {
|
|
.config-info {
|
|
margin-top: 8px;
|
|
margin-top: 8px;
|
|
@@ -1074,7 +1032,7 @@ const goBack = () => {
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.team-config {
|
|
.team-config {
|
|
.team-header {
|
|
.team-header {
|
|
display: flex;
|
|
display: flex;
|
|
@@ -1122,4 +1080,4 @@ const goBack = () => {
|
|
:deep(.el-form-item) {
|
|
:deep(.el-form-item) {
|
|
margin-bottom: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
}
|
|
-</style>
|
|
|
|
|
|
+</style>
|