This commit is contained in:
ltx 2026-10-30 13:07:16 +08:00
commit 78ae76db56

View File

@ -16,7 +16,7 @@
</template>
<el-form ref="formRef" :model="form" :rules="rules" label-width="140px" class="sync-form">
<el-form-item label="悦动赛事" prop="eventId">
<el-form-item label="跃动赛事" prop="eventId">
<el-select
v-model="form.eventId"
filterable
@ -57,33 +57,40 @@
<el-card v-if="previewResult" class="mt16" shadow="never">
<template #header>数据预览</template>
<el-descriptions :column="4" border>
<el-descriptions-item label="悦动赛事">{{ previewResult.eventName }}</el-descriptions-item>
<el-descriptions-item label="跃动赛事">{{ previewResult.eventName }}</el-descriptions-item>
<el-descriptions-item label="报名人数">{{ previewResult.registrationCount }}</el-descriptions-item>
<el-descriptions-item label="待上传人数">{{ previewResult.uploadRecordCount }}</el-descriptions-item>
<el-descriptions-item label="组别数">{{ previewResult.typeCount }}</el-descriptions-item>
</el-descriptions>
<el-table :data="previewResult.types || []" border class="mt16">
<el-table :data="previewResult.types || []" border max-height="300" class="mt16">
<el-table-column prop="typeName" label="平台组别" min-width="200" />
<el-table-column prop="playerCount" label="人数" width="120" />
</el-table>
<div class="detail-title">待上传人员明细</div>
<el-table :data="previewResult.players || []" border height="520">
<el-table-column type="index" label="序号" width="70" fixed="left" />
<el-table-column prop="typeName" label="平台组别" min-width="160" fixed="left" />
<el-table-column prop="playerName" label="姓名" width="110" fixed="left" />
<el-table-column prop="playerId" label="用户ID" min-width="180" />
<el-table-column prop="cardType" label="证件类型" width="100" />
<el-table-column prop="cardNumber" label="证件号码" min-width="190" />
<el-table-column label="性别" width="80">
<template #default="scope">{{ formatSex(scope.row.playerSex) }}</template>
</el-table-column>
<el-table-column prop="playerPhone" label="手机号" width="140" />
<el-table-column prop="playerBirth" label="出生日期" width="120" />
<el-table-column prop="groupName" label="队伍名称" min-width="160" />
<el-table-column prop="deleteStatus" label="删除状态" width="100" />
</el-table>
<el-collapse v-model="activePreviewPanels" class="detail-collapse">
<el-collapse-item name="players">
<template #title>
<span class="detail-collapse-title">待上传人员明细({{ previewResult.uploadRecordCount }} 人)</span>
</template>
<el-table :data="previewResult.players || []" border height="520">
<el-table-column type="index" label="序号" width="70" fixed="left" />
<el-table-column prop="typeName" label="平台组别" min-width="160" fixed="left" />
<el-table-column prop="playerName" label="姓名" width="110" fixed="left" />
<el-table-column prop="playerId" label="人员唯一ID" min-width="180" />
<el-table-column label="证件类型" width="110">
<template #default="scope">{{ formatCardType(scope.row.cardType) }}</template>
</el-table-column>
<el-table-column prop="cardNumber" label="证件号码" min-width="190" />
<el-table-column label="性别" width="80">
<template #default="scope">{{ formatSex(scope.row.playerSex) }}</template>
</el-table-column>
<el-table-column prop="playerPhone" label="手机号" width="140" />
<el-table-column prop="playerBirth" label="出生日期" width="120" />
<el-table-column prop="groupName" label="队伍名称" min-width="160" />
</el-table>
</el-collapse-item>
</el-collapse>
<el-alert
v-if="previewResult.canUpload"
@ -152,7 +159,7 @@ const form = reactive({
seriesName: '',
});
const rules = {
eventId: [{ required: true, message: '请选择悦动赛事', trigger: 'change' }],
eventId: [{ required: true, message: '请选择跃动赛事', trigger: 'change' }],
platformEventName: [{ required: true, message: '请输入平台赛事名称', trigger: 'blur' }],
};
@ -163,7 +170,9 @@ const previewLoading = ref(false);
const uploading = ref(false);
const previewResult = ref(null);
const executeResult = ref(null);
const activePreviewPanels = ref([]);
const formatCardType = (value) => ({ 1: '身份证', 2: '护照', 5: '户口本' })[value] || value || '-';
const formatSex = (value) => ({ 1: '男', 2: '女' })[value] || value || '-';
const requestInput = () => ({
@ -273,8 +282,11 @@ onMounted(() => searchEvents());
max-width: 760px;
}
.detail-title {
margin: 20px 0 12px;
.detail-collapse {
margin-top: 16px;
}
.detail-collapse-title {
font-weight: 600;
}
</style>