|
|
@@ -114,10 +114,14 @@
|
|
|
<el-tooltip content="编辑" placement="top">
|
|
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row, 'edit')">编辑</el-button>
|
|
|
</el-tooltip>
|
|
|
- <el-tooltip content="分配盲注" placement="top">
|
|
|
- <el-button link type="success" icon="Document" @click="openAssignDialog(scope.row)"> 分配 </el-button>
|
|
|
+ <el-tooltip content="领奖审核" placement="top">
|
|
|
+ <el-button link type="primary" icon="Edit" @click="openAuditDialog(scope.row.id)">领奖审核</el-button>
|
|
|
</el-tooltip>
|
|
|
|
|
|
+ <!-- <el-tooltip content="分配盲注" placement="top">
|
|
|
+ <el-button link type="success" icon="Document" @click="openAssignDialog(scope.row)"> 分配 </el-button>
|
|
|
+ </el-tooltip>-->
|
|
|
+
|
|
|
<!-- <el-tooltip content="删除" placement="top">
|
|
|
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['business:tournaments:remove']"></el-button>
|
|
|
</el-tooltip>-->
|
|
|
@@ -219,11 +223,15 @@
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <!-- 报名时间 -->
|
|
|
+ <el-form-item label="比赛类型">
|
|
|
+ <el-select v-model="form.gameType" placeholder="请选择" :disabled="dialog.mode === 'view'">
|
|
|
+ <el-option v-for="dict in tournaments_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
<el-form-item label="报名时间">
|
|
|
<el-select v-model="form.signTime" placeholder="请选择" :disabled="dialog.mode === 'view'">
|
|
|
- <el-option label="比赛前5分钟" :value="5" />
|
|
|
- <el-option label="比赛前10分钟" :value="10" />
|
|
|
+ <el-option v-for="dict in tournaments_time" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
|
|
|
@@ -344,6 +352,64 @@
|
|
|
<el-dialog v-model="dialogVisible" title="图片预览" width="50%">
|
|
|
<img :src="previewSrc || iconPreviewUrl || competitionIcon" alt="预览图片" style="max-width: 100%; max-height: 80vh" />
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <el-dialog
|
|
|
+ :title="`${tournamentInfo.name} ${tournamentInfo.tournamentsBiId}`"
|
|
|
+ v-model="auditDialog.visible"
|
|
|
+ width="1000px"
|
|
|
+ append-to-body
|
|
|
+ @close="cancelAudit"
|
|
|
+ >
|
|
|
+ <!-- 查看对局记录按钮 -->
|
|
|
+ <div class="dialog-header-actions">
|
|
|
+ <el-button type="primary">查看对局记录</el-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 比赛信息展示 -->
|
|
|
+ <div class="tournament-info" v-if="tournamentInfo.id">
|
|
|
+ <p>比赛时间:{{ tournamentInfo.startTime }} ~ {{ tournamentInfo.endTime }}</p>
|
|
|
+ <p>参加人数:{{ tournamentInfo.id }}人</p>
|
|
|
+ <p v-if="tournamentInfo.id">比赛类型:{{ tournamentInfo.id }}</p>
|
|
|
+ <p v-if="tournamentInfo.id">报名条件:{{ tournamentInfo.itemsName }} x {{ tournamentInfo.itemsNum }}</p>
|
|
|
+ <p v-if="tournamentInfo.id">盲注表:{{ tournamentInfo.blindStructuresName }}</p>
|
|
|
+ <p v-if="tournamentInfo.id">报名截止等级:{{ tournamentInfo.lateRegistrationLevel }}</p>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 表格内容 -->
|
|
|
+ <el-table :data="auditData" border style="width: 100%">
|
|
|
+ <el-table-column prop="rank" label="排名" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="playerName" label="用户名" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="phone" label="手机" align="center"></el-table-column>
|
|
|
+ <el-table-column label="奖励" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <div v-for="(prize, index) in scope.row.rewardVoList" :key="index">{{ prize.itemName }} {{ prize.quantity }}</div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column prop="claimed" label="状态" align="center"></el-table-column>
|
|
|
+
|
|
|
+ <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-tooltip content="查看牌局" placement="top">
|
|
|
+ <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">查看牌局</el-button>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip content="审核" placement="top">
|
|
|
+ <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">审核</el-button>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip content="移除" placement="top">
|
|
|
+ <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">移除</el-button>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <!-- 对话框底部按钮 -->
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button @click="cancelAudit">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -361,10 +427,13 @@ import {
|
|
|
import { selectItemsSelList } from '@/api/system/business/items';
|
|
|
import { selectBlindLevelsById } from '@/api/system/business/levels';
|
|
|
import { selectBlingStructuresInfo } from '@/api/system/business/structures';
|
|
|
+import { listClaims } from '@/api/system/business/claims';
|
|
|
import { TournamentsVO, TournamentsQuery, TournamentsForm, TournamentsBindStructuresVO } from '@/api/system/business/tournaments/types';
|
|
|
import { ref } from 'vue';
|
|
|
import LevelsIndex from '@/views/system/business/levels/index.vue';
|
|
|
+import { ClaimsVO } from '@/api/system/business/claims/types';
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
+const { tournaments_type, tournaments_time } = toRefs<any>(proxy?.useDict('tournaments_type', 'tournaments_time'));
|
|
|
|
|
|
const tournamentsList = ref<TournamentsVO[]>([]);
|
|
|
const buttonLoading = ref(false);
|
|
|
@@ -568,7 +637,7 @@ const initFormData: TournamentsForm = {
|
|
|
status: undefined,
|
|
|
createdAt: undefined,
|
|
|
updatedAt: undefined,
|
|
|
- signTime: null,
|
|
|
+ signTime: undefined,
|
|
|
competitionIcon: null,
|
|
|
itemsId: null,
|
|
|
itemsNum: null,
|
|
|
@@ -682,8 +751,15 @@ const handleUpdate = async (row?: TournamentsVO, mode: 'edit' | 'view' = 'edit')
|
|
|
|
|
|
const _id = row?.id || ids.value[0];
|
|
|
const res = await getTournaments(_id);
|
|
|
-
|
|
|
+ // 确保 gameType 是 number 类型
|
|
|
+ const gameType = Number(res.data.gameType);
|
|
|
+ const signTime = Number(res.data.signTime);
|
|
|
+ debugger;
|
|
|
+ // 设置表单数据
|
|
|
Object.assign(form.value, res.data);
|
|
|
+ form.value.gameType = gameType; // 确保赋值正确
|
|
|
+ form.value.signTime = signTime;
|
|
|
+
|
|
|
competitionIcon.value = res.data.competitionIcon;
|
|
|
// 处理奖励表单数据
|
|
|
const prizeItems = res.data.itemsPrizeList || [];
|
|
|
@@ -943,4 +1019,52 @@ const handleSortChange = ({ prop, order }) => {
|
|
|
getList();
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+const auditDialog = ref({
|
|
|
+ visible: false,
|
|
|
+ title: ''
|
|
|
+});
|
|
|
+
|
|
|
+const tournamentInfo = ref<Partial<TournamentsVO>>({
|
|
|
+ id: '',
|
|
|
+ startTime: '',
|
|
|
+ endTime: '',
|
|
|
+ itemsNum: 0,
|
|
|
+ itemsName: '',
|
|
|
+ blindStructureId: 0,
|
|
|
+ blindStructuresName: '',
|
|
|
+ lateRegistrationLevel: 0,
|
|
|
+ tournamentsBiId: ''
|
|
|
+});
|
|
|
+
|
|
|
+const auditData = ref<ClaimsVO[]>([]);
|
|
|
+
|
|
|
+// 模拟打开对话框并获取数据
|
|
|
+const openAuditDialog = async (tournamentId) => {
|
|
|
+ auditDialog.value.visible = true;
|
|
|
+ try {
|
|
|
+ const res = await getTournaments(tournamentId);
|
|
|
+ debugger;
|
|
|
+ if (res.code === 200) {
|
|
|
+ tournamentInfo.value = res.data;
|
|
|
+ }
|
|
|
+ // 创建新的查询参数对象,不影响原始 queryParams
|
|
|
+ const auditQueryParams = {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ tournamentId: tournamentId
|
|
|
+ };
|
|
|
+ const res2 = await listClaims(auditQueryParams);
|
|
|
+ auditData.value = res2.rows;
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取数据失败', error);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 关闭对话框
|
|
|
+const cancelAudit = () => {
|
|
|
+ auditDialog.value.visible = false;
|
|
|
+ /*tournamentInfo.value = {};
|
|
|
+ auditData.value = [];*/
|
|
|
+};
|
|
|
</script>
|