chao пре 7 часа
родитељ
комит
e6ee3d058f
1 измењених фајлова са 174 додато и 169 уклоњено
  1. 174 169
      public/index.html

+ 174 - 169
public/index.html

@@ -4,7 +4,7 @@
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>比赛报名系统</title>
+    <title>第六届广东省青少年创新思维及科技实践大赛(创新思维类选手报名)</title>
     <style>
         * {
             margin: 0;
@@ -280,12 +280,9 @@
         }
 
         .menu-btn-add {
-            position: absolute;
-            right: 20px;
-            top: 1px;
             padding: 7px 15px;
             font-size: 14px;
-            background-color: #3498db;
+            background-color: #db3434;
             color: white;
             border: none;
             border-radius: 5px;
@@ -294,6 +291,11 @@
             text-align: center;
         }
 
+        .menu-btn-add:nth-last-child(1) {
+            margin-left: 10px;
+            background-color: #3498db;
+        }
+
         .step-container {
             display: none;
         }
@@ -398,6 +400,17 @@
             padding-bottom: 10px;
             border-bottom: 1px solid #e0e0e0;
         }
+
+        .button-Contestant{
+            display: none;
+            margin-right: 20px;
+        }
+        .button-Contestant.active{
+            display: block;
+        }
+        #registerBtn1{
+            display: none;
+        }
     </style>
     <script src="https://sdk.amazonaws.com/js/aws-sdk-2.235.1.min.js"></script>
     <script>
@@ -415,7 +428,7 @@
     <nav>
         <img src="https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/a/logo.png" alt="logo"
             style="width: 40px;margin-right: 15px;"></img>
-        <div class="event-name">第六届广东省青少年创新思维及科技实践大赛创新思维挑战赛(选手报名)</div>
+        <div class="event-name">第六届广东省青少年创新思维及科技实践大赛(创新思维类选手报名)</div>
 
     </nav>
 
@@ -476,9 +489,12 @@
                         <option value="2">智能体应用类</option>
                     </select>
                 </div> -->
-                <div class="content-header">
+                <div class="content-header" style="display: flex;justify-content: space-between;">
                     <h2 style="display: inline-block;font-size: 24px;">参赛信息登记</h2>
-                    <button class="menu-btn-add" onclick="addContestant()">添加选手</button>
+                    <div class="button-Contestant">
+                        <button class="menu-btn-add" onclick="removeContestant()">删除选手</button>
+                        <button class="menu-btn-add" onclick="addContestant()">添加选手</button>
+                    </div>
                 </div>
                 <!-- 步骤1:选择比赛类型 -->
                 <div id="step1" class="step-container active">
@@ -487,12 +503,12 @@
                     <div class="competition-grid">
                         <div class="competition-card" data-id="1">
                             <div class="competition-icon">🧮</div>
-                            <div class="competition-name">桌游设计挑战</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 class="competition-name">智能体应用</div>
                         </div>
                     </div>
 
@@ -575,10 +591,10 @@
                                         <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>
+                                            <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>
@@ -620,12 +636,6 @@
                         </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>
@@ -659,8 +669,15 @@
 
     <script>
         const requesturl = window.location.href;
-        console.log("requesturl:",requesturl);        
-
+        console.log("requesturl:", requesturl);
+
+        const nowTime = new Date();
+        const givenTime = new Date("2025-10-13")
+        if(givenTime - nowTime > 0){
+            document.getElementById('registerBtn1').style.display = "none";
+        }else{
+            document.getElementById('registerBtn1').style.display = "block";
+        }
         // 切换下载和报名区域
         document.getElementById('downloadBtn').addEventListener('click', function () {
             document.getElementById('downloadBtn').classList.add('active');
@@ -669,6 +686,7 @@
             document.getElementById('downloadSection').classList.add('active');
             document.getElementById('registrationSection').classList.remove('active');
             document.getElementById('uploadSection').classList.remove('active');
+            document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
         });
         document.getElementById('registerBtn1').addEventListener('click', function () {
             document.getElementById('registerBtn1').classList.add('active');
@@ -677,7 +695,9 @@
             document.getElementById('downloadSection').classList.remove('active');
             document.getElementById('registrationSection').classList.remove('active');
             document.getElementById('uploadSection').classList.add('active');
+            document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
         });
+        let buttonContestant = false
         document.getElementById('registerBtn').addEventListener('click', function () {
             document.getElementById('registerBtn').classList.add('active');
             document.getElementById('downloadBtn').classList.remove('active');
@@ -685,44 +705,15 @@
             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;
-            if (!idNumber) {
-                alert('请先填写身份证号');
-                e.target.value = ''; // 清空已选择的文件
-                return;
+            console.log("selectedCompetitionId:", selectedCompetitionId);
+            if(buttonContestant){
+                document.getElementsByClassName("button-Contestant")[0].classList.add('active');
+            }else{
+                document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
             }
-            const file = e.target.files[0];
-            if (!file) return;
-            console.log('选择文件:', file);
-
-            const fileName = `${idNumber}/${file.name}`;
-
-            var bucket = new window.AWS.S3({ params: { Bucket: 'ccrb' } });
-            var params = {
-                Key: fileName,
-                ContentType: file.type,
-                Body: file,
-                'Access-Control-Allow-Credentials': '*',
-                'ACL': 'public-read'
-            };
-            console.log(params)
-            bucket.upload(params, function (err, data) {
-                if (err) {
-                    console.error('上传失败:', err);
-                    alert('文件上传失败');
-                } else {
-                    console.log('上传成功:', data);
-                    uploadFileUrl = data.Location;
-                    alert('文件上传成功');
-                }
-            });
         });
 
+        let uploadFileUrl = ''
         // 比赛类型选择
         const competitionCards = document.querySelectorAll('.competition-card');
         let selectedCompetitionId = null;
@@ -747,24 +738,19 @@
                 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.getElementsByClassName("button-Contestant")[0].classList.add('active');
+            buttonContestant = true
         });
 
         document.getElementById('prevToStep1').addEventListener('click', function () {
             // 切换回步骤1
             document.getElementById('step2').classList.remove('active');
             document.getElementById('step1').classList.add('active');
+            document.getElementsByClassName("button-Contestant")[0].classList.remove('active');
+            buttonContestant = false
         });
 
         let num = 1;
@@ -779,114 +765,133 @@
             const formCrate = document.createElement('form');
             formCrate.id = `registrationForm${num}`;
             formCrate.innerHTML = `<div class="form-row">
-                            <div class="form-col">
-                                <div class="form-group">
-                                    <label class="form-label required" for="name">姓名</label>
-                                    <input type="text" id="name${num}" class="form-input" required>
-                                    <div class="error" id="name-error${num}">请输入姓名</div>
-                                </div>
-                            </div>
+                    <div class="form-col">
+                    <div class="form-group">
+                        <label class="form-label required" for="name">姓名</label>
+                        <input type="text" id="name${num}" class="form-input" required>
+                        <div class="error" id="name-error${num}">请输入姓名</div>
+                    </div>
+                    </div>
 
-                            <div class="form-col">
-                                <div class="form-group">
-                                    <label class="form-label required" for="gender">性别</label>
-                                    <select id="gender${num}" class="form-input" required>
-                                        <option value="">请选择</option>
-                                        <option value="1">男</option>
-                                        <option value="2">女</option>
-                                    </select>
-                                    <div class="error" id="gender-error${num}">请选择性别</div>
-                                </div>
-                            </div>
-                        </div>
+                    <div class="form-col">
+                    <div class="form-group">
+                        <label class="form-label required" for="gender">性别</label>
+                        <select id="gender${num}" class="form-input" required>
+                        <option value="">请选择</option>
+                        <option value="1">男</option>
+                        <option value="2">女</option>
+                        </select>
+                        <div class="error" id="gender-error${num}">请选择性别</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="ethnicity${num}" class="form-input" required>
-                                    <div class="error" id="ethnicity-error${num}">请输入民族</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="ethnicity${num}" class="form-input" required>
+                        <div class="error" id="ethnicity-error${num}">请输入民族</div>
+                    </div>
+                    </div>
 
-                            <div class="form-col">
-                                <div class="form-group">
-                                    <label class="form-label required" for="birthdate">出生年月</label>
-                                    <input type="date" id="birthdate${num}" class="form-input" required>
-                                    <div class="error" id="birthdate-error${num}">请选择出生年月</div>
-                                </div>
-                            </div>
-                        </div>
+                    <div class="form-col">
+                    <div class="form-group">
+                        <label class="form-label required" for="birthdate">出生年月</label>
+                        <input type="date" id="birthdate${num}" class="form-input" required>
+                        <div class="error" id="birthdate-error${num}">请选择出生年月</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="email${num}" class="form-input" required>
-                                    <div class="error" id="email-error${num}">请输入有效的电子邮箱</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="email${num}" class="form-input" required>
+                        <div class="error" id="email-error${num}">请输入有效的电子邮箱</div>
+                    </div>
+                    </div>
 
-                            <div class="form-col">
-                                <div class="form-group">
-                                    <label class="form-label required" for="idNumber">身份证号码</label>
-                                    <input type="text" id="idNumber${num}" class="form-input" required pattern="\d{17}[\dXx]">
-                                    <div class="error" id="idNumber-error${num}">请输入18位身份证号码</div>
-                                </div>
-                            </div>
-                        </div>
+                    <div class="form-col">
+                    <div class="form-group">
+                        <label class="form-label required" for="idNumber">身份证号码</label>
+                        <input type="text" id="idNumber${num}" class="form-input" required pattern="\d{17}[\dXx]">
+                        <div class="error" id="idNumber-error${num}">请输入18位身份证号码</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="group${num}" 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-error${num}">请选择组别</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="group${num}" 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-error${num}">请选择组别</div>
+                    </div>
+                    </div>
 
-                            <div class="form-col">
-                                <div class="form-group">
-                                    <label class="form-label required" for="grade">年级</label>
-                                    <input type="text" id="grade${num}" class="form-input" required>
-                                    <div class="error" id="grade-error${num}">请输入年级</div>
-                                </div>
-                            </div>
-                        </div>
+                    <div class="form-col">
+                    <div class="form-group">
+                        <label class="form-label required" for="grade">年级</label>
+                        <input type="text" id="grade${num}" class="form-input" required>
+                        <div class="error" id="grade-error${num}">请输入年级</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="school${num}" class="form-input" required>
-                                    <div class="error" id="school-error${num}">请输入学校名称</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="school${num}" class="form-input" required>
+                        <div class="error" id="school-error${num}">请输入学校名称</div>
+                    </div>
+                    </div>
 
-                            <div class="form-col">
-                                <div class="form-group">
-                                    <label class="form-label required" for="schoolRegion">学校所在地区</label>
-                                    <input type="text" id="schoolRegion${num}" class="form-input" required
-                                        placeholder="省/市/区">
-                                    <div class="error" id="schoolRegion-error${num}">请输入学校所在地区</div>
-                                </div>
-                            </div>
-                        </div>
+                    <div class="form-col">
+                    <div class="form-group">
+                        <label class="form-label required" for="schoolRegion">学校所在地区</label>
+                        <input type="text" id="schoolRegion${num}" class="form-input" required
+                        placeholder="省/市/区">
+                        <div class="error" id="schoolRegion-error${num}">请输入学校所在地区</div>
+                    </div>
+                    </div>
+                </div>
 
-                        <div class="form-group">
-                            <label class="form-label required" for="phone">联系电话</label>
-                            <input type="tel" id="phone${num}" class="form-input" required pattern="[0-9]{11}">
-                            <div class="error" id="phone-error${num}">请输入11位手机号码</div>
-                        </div>`;
+                <div class="form-group">
+                    <label class="form-label required" for="phone">联系电话</label>
+                    <input type="tel" id="phone${num}" class="form-input" required pattern="[0-9]{11}">
+                    <div class="error" id="phone-error${num}">请输入11位手机号码</div>
+                </div>`;
             html.appendChild(formCrate);
         }
 
+        function removeContestant() {
+            if (num <= 1) {
+            alert("至少需要保留一名选手");
+            return;
+            }
+            const html = document.getElementById('formContainer');
+            // 移除最后一个选手的 h3、br 和 form
+            // h3
+            let lastH3 = html.querySelector(`h3:last-of-type`);
+            if (lastH3) html.removeChild(lastH3);
+            // br
+            let lastBr = html.querySelector(`br:last-of-type`);
+            if (lastBr) html.removeChild(lastBr);
+            // form
+            let lastForm = html.querySelector(`form#registrationForm${num}`);
+            if (lastForm) html.removeChild(lastForm);
+            num = num - 1;
+        }
+
 
         async function submitData() {
             const requiredFields = ['name', 'gender', 'ethnicity', 'birthdate', 'email',
@@ -964,7 +969,7 @@
                     return;
                 }
                 // 发送报名信息请求
-                const registerResponse = await fetch(requesturl+'api/user', {
+                const registerResponse = await fetch(requesturl + 'api/user', {
                     method: 'POST',
                     headers: {
                         'Content-Type': 'application/json'
@@ -978,12 +983,12 @@
 
                 const registerData = await registerResponse.json();
                 console.log(registerData);
-                if(registerData.status == "ok"){
+                if (registerData.status == "ok") {
                     alert("报名完成,审核情况会通过邮箱通知,请注意邮箱信息");
-                }else{
+                } else {
                     alert(registerData.message);
                 }
-                
+
                 // document.getElementById('registrationForm').reset();
 
             } catch (error) {
@@ -1041,8 +1046,8 @@
                 return;
             }
 
-            try{
-                const response = await fetch(requesturl+"api/update", {
+            try {
+                const response = await fetch(requesturl + "api/update", {
                     method: "POST",
                     headers: {
                         "Content-Type": "application/json"
@@ -1052,7 +1057,7 @@
                         id_number: idNumber
                     })
                 })
-                
+
                 if (!response.ok) {
                     throw new Error('信息更新失败');
                 }
@@ -1060,7 +1065,7 @@
                 const registerData = await response.json();
                 console.log(registerData);
                 alert(registerData.message);
-            }catch (error) {
+            } catch (error) {
                 console.error('信息更新失败:', error);
                 alert(error.message);
             }