|
@@ -186,6 +186,7 @@
|
|
|
display: flex;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
.form-container {
|
|
|
flex: 1;
|
|
|
padding-right: 10px;
|
|
@@ -282,7 +283,7 @@
|
|
|
position: absolute;
|
|
|
right: 20px;
|
|
|
top: 1px;
|
|
|
- padding: 5px 8px;
|
|
|
+ padding: 7px 15px;
|
|
|
font-size: 14px;
|
|
|
background-color: #3498db;
|
|
|
color: white;
|
|
@@ -292,6 +293,111 @@
|
|
|
transition: all 0.3s;
|
|
|
text-align: center;
|
|
|
}
|
|
|
+
|
|
|
+ .step-container {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .step-container.active {
|
|
|
+ display: block;
|
|
|
+ }
|
|
|
+
|
|
|
+ .competition-grid {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
|
|
+ gap: 20px;
|
|
|
+ margin-bottom: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .competition-card {
|
|
|
+ border: 1px solid #e0e0e0;
|
|
|
+ border-radius: 10px;
|
|
|
+ padding: 20px;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ transition: all 0.3s;
|
|
|
+ }
|
|
|
+
|
|
|
+ .competition-card:hover {
|
|
|
+ border-color: #1a73e8;
|
|
|
+ box-shadow: 0 4px 12px rgba(26, 115, 232, 0.15);
|
|
|
+ transform: translateY(-5px);
|
|
|
+ }
|
|
|
+
|
|
|
+ .competition-card.selected {
|
|
|
+ border-color: #1a73e8;
|
|
|
+ background-color: #e8f0fe;
|
|
|
+ }
|
|
|
+
|
|
|
+ .competition-icon {
|
|
|
+ font-size: 36px;
|
|
|
+ color: #1a73e8;
|
|
|
+ margin-bottom: 15px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .competition-name {
|
|
|
+ font-weight: 500;
|
|
|
+ color: #202124;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ padding: 12px 30px;
|
|
|
+ border-radius: 8px;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 500;
|
|
|
+ cursor: pointer;
|
|
|
+ transition: all 0.3s;
|
|
|
+ border: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-prev {
|
|
|
+ background-color: #f8f9fa;
|
|
|
+ color: #5f6368;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-prev:hover {
|
|
|
+ background-color: #e8f0fe;
|
|
|
+ color: #1a73e8;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-next {
|
|
|
+ background-color: #1a73e8;
|
|
|
+ color: white;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-next:hover {
|
|
|
+ background-color: #0d47a1;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-submit {
|
|
|
+ background-color: #34a853;
|
|
|
+ color: white;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-submit:hover {
|
|
|
+ background-color: #2d9249;
|
|
|
+ }
|
|
|
+
|
|
|
+ .error {
|
|
|
+ color: #ea4335;
|
|
|
+ font-size: 14px;
|
|
|
+ margin-top: 5px;
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ .button-group {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .step-title {
|
|
|
+ font-size: 18px;
|
|
|
+ color: #202124;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ border-bottom: 1px solid #e0e0e0;
|
|
|
+ }
|
|
|
</style>
|
|
|
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.235.1.min.js"></script>
|
|
|
<script>
|
|
@@ -363,136 +469,168 @@
|
|
|
|
|
|
<!-- 报名区域 -->
|
|
|
<div class="registration-section " id="registrationSection">
|
|
|
+ <!-- <div class="select-type">
|
|
|
+ <select id="selectType" class="form-input" required >
|
|
|
+ <option value="">请选择参赛类型</option>
|
|
|
+ <option value="1">桌游设计挑战类</option>
|
|
|
+ <option value="2">智能体应用类</option>
|
|
|
+ </select>
|
|
|
+ </div> -->
|
|
|
<div class="content-header">
|
|
|
<h2 style="display: inline-block;font-size: 24px;">参赛信息登记</h2>
|
|
|
- <select id="selectType" class="form-input" required style="width: 200px;margin-left: 10px;">
|
|
|
- <option value="">请选择</option>
|
|
|
- <option value="male">桌游设计挑战类</option>
|
|
|
- <option value="female">智能体应用类</option>
|
|
|
- </select>
|
|
|
- <button class="menu-btn-add" onclick="addContestant()">添加</button>
|
|
|
+ <button class="menu-btn-add" onclick="addContestant()">添加选手</button>
|
|
|
</div>
|
|
|
- <div class="form-container" id="formContainer">
|
|
|
- <h3>选手1:</h3>
|
|
|
- <br />
|
|
|
- <form id="registrationForm1">
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="name">姓名</label>
|
|
|
- <input type="text" id="name1" class="form-input" required>
|
|
|
- <div class="error" id="name-error1">请输入姓名</div>
|
|
|
+ <!-- 步骤1:选择比赛类型 -->
|
|
|
+ <div id="step1" class="step-container active">
|
|
|
+ <div class="step-title">第一步:请选择您要报名的比赛类型</div>
|
|
|
+
|
|
|
+ <div class="competition-grid">
|
|
|
+ <div class="competition-card" data-id="1">
|
|
|
+ <div class="competition-icon">🧮</div>
|
|
|
+ <div class="competition-name">桌游设计挑战类</div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="competition-card" data-id="2">
|
|
|
+ <div class="competition-icon">💻</div>
|
|
|
+ <div class="competition-name">智能体应用类</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="button-group">
|
|
|
+ <div></div> <!-- 占位 -->
|
|
|
+ <button class="btn btn-next" id="nextToStep2">下一步</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 步骤2:填写报名信息 -->
|
|
|
+ <div id="step2" class="step-container">
|
|
|
+ <div class="step-title">第二步:填写报名信息</div>
|
|
|
+
|
|
|
+ <div class="form-container" id="formContainer">
|
|
|
+ <input type="hidden" id="competitionType" value="">
|
|
|
+ <h3>选手1:</h3>
|
|
|
+ <br />
|
|
|
+ <form id="registrationForm1">
|
|
|
+ <div class="form-row">
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="name">姓名</label>
|
|
|
+ <input type="text" id="name1" class="form-input" required>
|
|
|
+ <div class="error" id="name-error1">请输入姓名</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="gender">性别</label>
|
|
|
- <select id="gender1" class="form-input" required>
|
|
|
- <option value="">请选择</option>
|
|
|
- <option value="male">男</option>
|
|
|
- <option value="female">女</option>
|
|
|
- </select>
|
|
|
- <div class="error" id="gender-error1">请选择性别</div>
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="gender">性别</label>
|
|
|
+ <select id="gender1" class="form-input" required>
|
|
|
+ <option value="">请选择</option>
|
|
|
+ <option value="1">男</option>
|
|
|
+ <option value="2">女</option>
|
|
|
+ </select>
|
|
|
+ <div class="error" id="gender-error1">请选择性别</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="ethnicity">民族</label>
|
|
|
- <input type="text" id="ethnicity1" class="form-input" required>
|
|
|
- <div class="error" id="ethnicity-error1">请输入民族</div>
|
|
|
+ <div class="form-row">
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="ethnicity">民族</label>
|
|
|
+ <input type="text" id="ethnicity1" class="form-input" required>
|
|
|
+ <div class="error" id="ethnicity-error1">请输入民族</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="birthdate">出生年月</label>
|
|
|
- <input type="date" id="birthdate1" class="form-input" required>
|
|
|
- <div class="error" id="birthdate-error1">请选择出生年月</div>
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="birthdate">出生年月</label>
|
|
|
+ <input type="date" id="birthdate1" class="form-input" required>
|
|
|
+ <div class="error" id="birthdate-error1">请选择出生年月</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="email">电子邮箱</label>
|
|
|
- <input type="email" id="email1" class="form-input" required>
|
|
|
- <div class="error" id="email-error1">请输入有效的电子邮箱</div>
|
|
|
+ <div class="form-row">
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="email">电子邮箱</label>
|
|
|
+ <input type="email" id="email1" class="form-input" required>
|
|
|
+ <div class="error" id="email-error1">请输入有效的电子邮箱</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="idNumber">身份证号码</label>
|
|
|
- <input type="text" id="idNumber1" class="form-input" required
|
|
|
- pattern="\d{17}[\dXx]">
|
|
|
- <div class="error" id="idNumber-error1">请输入18位身份证号码</div>
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="idNumber">身份证号码</label>
|
|
|
+ <input type="text" id="idNumber1" class="form-input" required
|
|
|
+ pattern="\d{17}[\dXx]">
|
|
|
+ <div class="error" id="idNumber-error1">请输入18位身份证号码</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="group">组别</label>
|
|
|
- <select id="group1" class="form-input" required>
|
|
|
- <option value="">请选择</option>
|
|
|
- <option value="1">小学组</option>
|
|
|
- <option value="2">初中组</option>
|
|
|
- <option value="3">高中组</option>
|
|
|
- <option value="4">大学组</option>
|
|
|
- </select>
|
|
|
- <div class="error" id="group-error1">请选择组别</div>
|
|
|
+ <div class="form-row">
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="group">组别</label>
|
|
|
+ <select id="group1" class="form-input" required>
|
|
|
+ <option value="">请选择</option>
|
|
|
+ <option value="1">小学组</option>
|
|
|
+ <option value="2">初中组</option>
|
|
|
+ <option value="3">高中组</option>
|
|
|
+ <option value="4">大学组</option>
|
|
|
+ </select>
|
|
|
+ <div class="error" id="group-error1">请选择组别</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="grade">年级</label>
|
|
|
- <input type="text" id="grade1" class="form-input" required>
|
|
|
- <div class="error" id="grade-error1">请输入年级</div>
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="grade">年级</label>
|
|
|
+ <input type="text" id="grade1" class="form-input" required>
|
|
|
+ <div class="error" id="grade-error1">请输入年级</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-row">
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="school">所在学校</label>
|
|
|
- <input type="text" id="school1" class="form-input" required>
|
|
|
- <div class="error" id="school-error1">请输入学校名称</div>
|
|
|
+ <div class="form-row">
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="school">所在学校</label>
|
|
|
+ <input type="text" id="school1" class="form-input" required>
|
|
|
+ <div class="error" id="school-error1">请输入学校名称</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="schoolRegion">学校所在地区</label>
|
|
|
- <input type="text" id="schoolRegion1" class="form-input" required
|
|
|
- placeholder="省/市/区">
|
|
|
- <div class="error" id="schoolRegion-error1">请输入学校所在地区</div>
|
|
|
+ <div class="form-col">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="schoolRegion">学校所在地区</label>
|
|
|
+ <input type="text" id="schoolRegion1" class="form-input" required
|
|
|
+ placeholder="省/市/区">
|
|
|
+ <div class="error" id="schoolRegion-error1">请输入学校所在地区</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="phone">联系电话</label>
|
|
|
- <input type="tel" id="phone1" class="form-input" required pattern="[0-9]{11}">
|
|
|
- <div class="error" id="phone-error1">请输入11位手机号码</div>
|
|
|
- </div>
|
|
|
- </form>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="form-label required" for="phone">联系电话</label>
|
|
|
+ <input type="tel" id="phone1" class="form-input" required pattern="[0-9]{11}">
|
|
|
+ <div class="error" id="phone-error1">请输入11位手机号码</div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
|
|
|
+ </div>
|
|
|
+ <div class="file-upload" id="photoSection">
|
|
|
+ <!-- <div class="upload-icon">📷</div> -->
|
|
|
+ <label class="form-label required" for="photo">上传文件</label>
|
|
|
+ <input type="file" id="photo" required>
|
|
|
+ <div class="error" id="photo-error">请上传照片</div>
|
|
|
+ </div>
|
|
|
+ <div class="button-group">
|
|
|
+ <button type="button" class="btn btn-prev" id="prevToStep1">上一步</button>
|
|
|
+ <button type="submit" class="btn btn-submit" onclick="submitData()">提交报名</button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <div class="file-upload">
|
|
|
- <!-- <div class="upload-icon">📷</div> -->
|
|
|
- <label class="form-label required" for="photo">上传文件</label>
|
|
|
- <input type="file" id="photo" required>
|
|
|
- <div class="error" id="photo-error">请上传照片</div>
|
|
|
- </div>
|
|
|
- <button type="submit" class="submit-btn" onclick="submitData()">提交报名</button>
|
|
|
</div>
|
|
|
|
|
|
<!-- 上传报名表单 -->
|
|
@@ -500,18 +638,11 @@
|
|
|
<h2 class="content-header">上传报名表</h2>
|
|
|
<div class="download-list">
|
|
|
<div class="form-row">
|
|
|
- <div class="form-col">
|
|
|
- <div class="form-group">
|
|
|
- <label class="form-label required" for="name">姓名</label>
|
|
|
- <input type="text" id="name1" class="form-input" required>
|
|
|
- <div class="error" id="name-error1">请输入姓名</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
<div class="form-col">
|
|
|
<div class="form-group">
|
|
|
<label class="form-label required" for="idNumber">身份证号码</label>
|
|
|
- <input type="text" id="idNumber1" class="form-input" required pattern="\d{17}[\dXx]">
|
|
|
+ <input type="text" id="idNumber1" class="form-input" required pattern="\d{17}[\dXx]"
|
|
|
+ placeholder="请填写在线报名时,团队内任一选手的身份证号码">
|
|
|
<div class="error" id="idNumber-error1">请输入18位身份证号码</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -546,7 +677,16 @@
|
|
|
document.getElementById('registrationSection').classList.remove('active');
|
|
|
document.getElementById('uploadSection').classList.add('active');
|
|
|
});
|
|
|
+ document.getElementById('registerBtn').addEventListener('click', function () {
|
|
|
+ document.getElementById('registerBtn').classList.add('active');
|
|
|
+ document.getElementById('downloadBtn').classList.remove('active');
|
|
|
+ document.getElementById('registerBtn1').classList.remove('active');
|
|
|
+ document.getElementById('registrationSection').classList.add('active');
|
|
|
+ document.getElementById('downloadSection').classList.remove('active');
|
|
|
+ document.getElementById('uploadSection').classList.remove('active');
|
|
|
+ });
|
|
|
|
|
|
+ let uploadFileUrl = ''
|
|
|
document.getElementById('photo').addEventListener('change', function (e) {
|
|
|
// 拼接文件名:身份证号_姓名_比赛类型_原文件名
|
|
|
const idNumber = document.getElementById('idNumber1').value;
|
|
@@ -576,18 +716,54 @@
|
|
|
alert('文件上传失败');
|
|
|
} else {
|
|
|
console.log('上传成功:', data);
|
|
|
+ uploadFileUrl = data.Location;
|
|
|
alert('文件上传成功');
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- document.getElementById('registerBtn').addEventListener('click', function () {
|
|
|
- document.getElementById('registerBtn').classList.add('active');
|
|
|
- document.getElementById('downloadBtn').classList.remove('active');
|
|
|
- document.getElementById('registerBtn1').classList.remove('active');
|
|
|
- document.getElementById('registrationSection').classList.add('active');
|
|
|
- document.getElementById('downloadSection').classList.remove('active');
|
|
|
- document.getElementById('uploadSection').classList.remove('active');
|
|
|
+ // 比赛类型选择
|
|
|
+ const competitionCards = document.querySelectorAll('.competition-card');
|
|
|
+ let selectedCompetitionId = null;
|
|
|
+
|
|
|
+ competitionCards.forEach(card => {
|
|
|
+ card.addEventListener('click', function () {
|
|
|
+ // 移除所有卡片的selected类
|
|
|
+ competitionCards.forEach(c => {
|
|
|
+ c.classList.remove('selected');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 添加当前卡片的selected类
|
|
|
+ this.classList.add('selected');
|
|
|
+
|
|
|
+ // 存储选择的比赛ID
|
|
|
+ selectedCompetitionId = this.getAttribute('data-id');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ // 步骤切换
|
|
|
+ document.getElementById('nextToStep2').addEventListener('click', function () {
|
|
|
+ if (!selectedCompetitionId) {
|
|
|
+ alert('请先选择比赛类型');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置隐藏字段的值
|
|
|
+ document.getElementById('competitionType').value = selectedCompetitionId;
|
|
|
+ if(selectedCompetitionId == 1){
|
|
|
+ document.getElementById('photoSection').style.display = 'block';
|
|
|
+ }else{
|
|
|
+ document.getElementById('photoSection').style.display = 'none';
|
|
|
+ }
|
|
|
+
|
|
|
+ // 切换到步骤2
|
|
|
+ document.getElementById('step1').classList.remove('active');
|
|
|
+ document.getElementById('step2').classList.add('active');
|
|
|
+ });
|
|
|
+
|
|
|
+ document.getElementById('prevToStep1').addEventListener('click', function () {
|
|
|
+ // 切换回步骤1
|
|
|
+ document.getElementById('step2').classList.remove('active');
|
|
|
+ document.getElementById('step1').classList.add('active');
|
|
|
});
|
|
|
|
|
|
let num = 1;
|
|
@@ -615,8 +791,8 @@
|
|
|
<label class="form-label required" for="gender">性别</label>
|
|
|
<select id="gender${num}" class="form-input" required>
|
|
|
<option value="">请选择</option>
|
|
|
- <option value="male">男</option>
|
|
|
- <option value="female">女</option>
|
|
|
+ <option value="1">男</option>
|
|
|
+ <option value="2">女</option>
|
|
|
</select>
|
|
|
<div class="error" id="gender-error${num}">请选择性别</div>
|
|
|
</div>
|
|
@@ -708,9 +884,9 @@
|
|
|
<div class="error" id="phone-error${num}">请输入11位手机号码</div>
|
|
|
</div>`;
|
|
|
html.appendChild(formCrate);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
+
|
|
|
async function submitData() {
|
|
|
const requiredFields = ['name', 'gender', 'ethnicity', 'birthdate', 'email',
|
|
|
'idNumber', 'group', 'grade', 'school', 'schoolRegion', 'phone',];
|
|
@@ -765,7 +941,7 @@
|
|
|
ethnicity: document.getElementById('ethnicity' + i).value,
|
|
|
birthdate: document.getElementById('birthdate' + i).value,
|
|
|
email: document.getElementById('email' + i).value,
|
|
|
- idNumber: document.getElementById('idNumber' + i).value,
|
|
|
+ id_number: document.getElementById('idNumber' + i).value,
|
|
|
group: document.getElementById('group' + i).value,
|
|
|
grade: document.getElementById('grade' + i).value,
|
|
|
school: document.getElementById('school' + i).value,
|
|
@@ -773,33 +949,33 @@
|
|
|
phone: document.getElementById('phone' + i).value,
|
|
|
})
|
|
|
}
|
|
|
- console.log('表单数据:', document.getElementById("selectType").value);
|
|
|
|
|
|
try {
|
|
|
// 收集表单数据
|
|
|
const formDataObj = {
|
|
|
- type: 1, // 报名类型,1代表个人报名,2代表团队报名
|
|
|
- uploadUrl: "", // 上传文件的URL
|
|
|
- idCard: "", // 选手身份证号拼接
|
|
|
+ type: selectedCompetitionId, // 报名类型,1桌游,2智能体
|
|
|
+ uploadUrl: uploadFileUrl, // 上传文件的URL
|
|
|
+ idCard: formData.map(item=>item.id_number).join(","), // 选手身份证号拼接
|
|
|
registrationFormUrl: "", // 报名表上传URL
|
|
|
- user: formData
|
|
|
+ user: JSON.stringify(formData),
|
|
|
};
|
|
|
+ console.log(formDataObj);
|
|
|
|
|
|
// 发送报名信息请求
|
|
|
- // const registerResponse = await fetch('https://api.example.com/register', {
|
|
|
- // method: 'POST',
|
|
|
- // headers: {
|
|
|
- // 'Content-Type': 'application/json'
|
|
|
- // },
|
|
|
- // body: JSON.stringify(formDataObj)
|
|
|
- // });
|
|
|
-
|
|
|
- // if (!registerResponse.ok) {
|
|
|
- // throw new Error('报名提交失败');
|
|
|
- // }
|
|
|
-
|
|
|
- // const registerData = await registerResponse.json();
|
|
|
- // alert(`报名成功!您的报名ID: ${registerData.id}`);
|
|
|
+ const registerResponse = await fetch('http://localhost:11111/api/user', {
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ body: JSON.stringify(formDataObj)
|
|
|
+ });
|
|
|
+
|
|
|
+ if (!registerResponse.ok) {
|
|
|
+ throw new Error('报名提交失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ const registerData = await registerResponse.json();
|
|
|
+ alert(`报名成功!您的报名ID: ${registerData.id}`);
|
|
|
// document.getElementById('registrationForm').reset();
|
|
|
|
|
|
} catch (error) {
|
|
@@ -808,19 +984,35 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async function submitRegistration(){
|
|
|
- const formData = new FormData();
|
|
|
- }
|
|
|
|
|
|
- fetch("http://localhost:8080/api/user", {
|
|
|
- method: "POST",
|
|
|
- headers: {
|
|
|
- "Content-Type": "application/json"
|
|
|
- },
|
|
|
- body: JSON.stringify({ name: "张三", age: 18 })
|
|
|
- }).then(res => res.json()).then(res => {
|
|
|
- console.log(res)
|
|
|
- })
|
|
|
+ const params = {
|
|
|
+ type: selectedCompetitionId, // 报名类型,1桌游,2智能体
|
|
|
+ uploadUrl: "", // 上传文件的URL
|
|
|
+ idCard: "", // 选手身份证号拼接
|
|
|
+ registrationFormUrl: "", // 报名表上传URL
|
|
|
+ user: JSON.stringify([{
|
|
|
+ name: "张三",
|
|
|
+ gender: "男",
|
|
|
+ ethnicity: "汉族",
|
|
|
+ birthdate: "1990-01-01",
|
|
|
+ email: "zhangsan@example.com",
|
|
|
+ idNumber: "110101199001011234",
|
|
|
+ group: "A",
|
|
|
+ grade: "大一",
|
|
|
+ school: "清华大学",
|
|
|
+ schoolRegion: "北京",
|
|
|
+ }])
|
|
|
+ };
|
|
|
+
|
|
|
+ // fetch("http://localhost:11111/api/user", {
|
|
|
+ // method: "POST",
|
|
|
+ // headers: {
|
|
|
+ // "Content-Type": "application/json"
|
|
|
+ // },
|
|
|
+ // body: JSON.stringify(params)
|
|
|
+ // }).then(res => res.json()).then(res => {
|
|
|
+ // console.log(res)
|
|
|
+ // })
|
|
|
|
|
|
</script>
|
|
|
</body>
|