update:赛事管理

This commit is contained in:
ltx 2026-05-14 01:36:20 +08:00
parent 002940a41b
commit ab25758e05
3 changed files with 55 additions and 17 deletions

View File

@ -1,20 +1,16 @@
<template>
<el-dialog :title="dialog.title" v-model="dialog.isShowDialog" width="80%">
<div class="step-form-container">
<el-card class="step-form-card">
<!-- 步骤条导航 -->
<el-dialog :title="dialog.title" v-model="dialog.isShowDialog" width="80%" fullscreen>
<template #header>
<div style="font-size: 18px; font-weight: bold;">{{ dialog.title }}</div>
<!-- 步骤条导航 -->
<el-steps :active="activeStep" finish-status="success" align-center>
<el-step title="基本信息" />
<el-step title="参与单位" />
<el-step title="项目与限报配置" />
<el-step title="费用与账户配置" />
</el-steps>
<!-- 步骤内容区域 -->
<div class="step-content">
<component :is="currentStepComponent" :key="activeStep" ref="stepRef" :model-value="currentStepData" @update:model-value="handleStepDataUpdate" />
</div>
</template>
<template #footer>
<!-- 底部操作按钮 -->
<div class="step-actions">
<el-button v-if="activeStep > 0" @click="handlePrevious">
@ -38,6 +34,17 @@
提交
</el-button>
</div>
</template>
<div class="step-form-container">
<el-card class="step-form-card">
<!-- 步骤内容区域 -->
<div class="step-content">
<component :is="currentStepComponent" :key="activeStep" ref="stepRef" :model-value="currentStepData" @update:model-value="handleStepDataUpdate" />
</div>
</el-card>
<!-- 提交成功对话框 -->
@ -397,6 +404,10 @@ defineExpose({
</script>
<style scoped>
div{
box-sizing: border-box;
}
.step-form-container {
/* max-width: 1000px; */
margin: 0 auto;
@ -431,9 +442,10 @@ defineExpose({
display: flex;
justify-content: center;
gap: 20px;
padding-top: 30px;
/* padding-top: 30px;
border-top: 1px solid #ebeef5;
margin-top: 20px;
box-sizing: border-box; */
/* margin-top: 20px; */
}
/* .step-actions .el-button {

View File

@ -34,15 +34,15 @@
<div class="expand-content">
<el-table :data="scope.row.items || []" border style="width: 100%; margin-top: 10px;">
<el-table-column label="项目名称" prop="projectName" min-width="150" />
<el-table-column label="项目类型" prop="projectTypeName" width="120" />
<!-- <el-table-column label="项目类型" prop="projectTypeName" width="120" /> -->
<el-table-column label="参赛组别" prop="groupName" width="120" />
<el-table-column label="姓名" prop="memberNames" min-width="200" />
<el-table-column label="成绩" prop="score" width="120" />
<el-table-column label="姓名" prop="participantName" min-width="140" />
<el-table-column label="成绩" prop="score" width="100" />
<el-table-column label="名次" prop="rank" width="100" />
<el-table-column label="操作" width="150" align="center" fixed="right">
<template #default="item">
<el-button
v-if="item.row.memberIds && item.row.memberIds.length > 0"
v-if="item.row.certificateUrl"
size="small"
text
type="primary"
@ -198,6 +198,8 @@ const onBatchAudit = async () => {
// 查看证书 - 根据项目类型处理
const viewCertificates = async (item) => {
console.log('查看证书', item);
openCertificate(item.certificateUrl);
return;
const members = item.members || [];
if (members.length === 0) {
ElMessage.warning('暂无证书');

View File

@ -125,7 +125,15 @@
</div>
</div>
<!-- 赛事介绍 -->
<div class="edc-section" v-if="formData.basicInfo.eventIntroduction">
<div class="edc-section-hd">
<el-icon class="edc-section-icon"><Document /></el-icon>
<span class="edc-section-title">赛事介绍</span>
</div>
<div class="edc-intro" v-html="formData.basicInfo.eventIntroduction"></div>
</div>
<!-- 报名项目 -->
<div class="edc-section" v-if="formData.projectConfig?.projects?.length">
<div class="edc-section-hd">
@ -140,6 +148,12 @@
<strong>{{ formData.projectConfig.registrationLimit.teamProjectLimit ?? 1 }}</strong> 个团队、<strong>{{ formData.projectConfig.registrationLimit.individualProjectLimit ?? 1 }}</strong> 个个人
</span>
</div>
<div class="edc-reg-limit-bar" v-if="formData.projectConfig.registrationLimit">
<el-icon><InfoFilled /></el-icon>
<span>限报
<strong>{{ formData.projectConfig.registrationLimit.teamProjectLimit ?? 1 }}</strong> 个团队、<strong>{{ formData.projectConfig.registrationLimit.individualProjectLimit ?? 1 }}</strong> 个个人
</span>
</div>
<div class="edc-proj-list">
<div class="edc-proj-card" v-for="(proj, pi) in formData.projectConfig.projects" :key="proj.id ?? pi">
<div class="edc-proj-hd">
@ -269,6 +283,7 @@
<div class="project-card" v-for="project in projects" :key="project.id">
<div class="project-card-left">
<div class="project-card-name">名称:{{ project.name }}</div>
<div class="project-card-limit" v-if="project.limitCount">限报人数:{{ project.limitCount }} 人</div>
<div class="project-card-type">类型:{{ project.parentProjectTypeName ??
project.projectTypeName ?? '' }}</div>
<div class="project-card-count">完成人数:{{ project.completionCount ?? 0 }}</div>
@ -3037,6 +3052,15 @@ const handleCreateOrderAndPay = async () => {
font-size: 14px;
}
&-limit {
font-size: 12px;
color: #ffe082;
background: rgba(0, 0, 0, 0.15);
border-radius: 4px;
padding: 1px 6px;
display: inline-block;
}
&-right {
flex: 1;
display: flex;