tt0101 4 dagar sedan
förälder
incheckning
4e395eb5bb
2 ändrade filer med 833 tillägg och 301 borttagningar
  1. 342 162
      src/views/login.vue
  2. 491 139
      src/views/register.vue

+ 342 - 162
src/views/login.vue

@@ -1,60 +1,58 @@
 <template>
   <div class="login">
-    <div class="contents">
-      <!-- 头部logo -->
-      <div class="header">
-        <img src="@/assets/hongqi.png" alt="logo" />
-        <div class="title">让理想飞扬</div>
+    <div class="login-container">
+      <!-- Logo区域 -->
+      <div class="logo-section">
+        <div class="logo-box">
+          <img src="@/assets/hongqi.png" alt="logo" />
+        </div>
       </div>
-      <!-- 主体表单 -->
-      <div class="main">
-        <wInput
-          type="text"
-          maxlength="11"
-          placeholder="用户名/电话"
-          v-model="phoneData"
-        ></wInput>
-        <wInput
-          type="password"
-          maxlength="11"
-          placeholder="密码"
-          v-model="passData"
-          :isShowPass="true"
-        ></wInput>
-      </div>
-      <wButton
-        text="登 录"
-        :rotate="isRotate"
-        @click.native="startLogin()"
-        class="wbutton"
-      ></wButton>
+      
+      <!-- 登录卡片 -->
+      <div class="login-card">
+        <!-- 输入框区域 -->
+        <div class="input-section">
+          <div class="input-group">
+            <i class="icon-user"></i>
+            <wInput
+              type="text"
+              maxlength="11"
+              placeholder="账号"
+              v-model="phoneData"
+              class="custom-input"
+            ></wInput>
+          </div>
+          
+          <div class="input-group">
+            <i class="icon-lock"></i>
+            <wInput
+              type="password"
+              maxlength="11"
+              placeholder="密码"
+              v-model="passData"
+              :isShowPass="true"
+              class="custom-input"
+            ></wInput>
+          </div>
+        </div>
 
-      <!-- 底部信息 -->
-      <div class="footer">
-        <div style="color: #fff;font-size: 14px;cursor:pointer;" @click="toKefu">找回密码</div>
-        <span>|</span>
-        <router-link to="register">注册账号</router-link>
-      </div>
-    </div>
+        <!-- 登录按钮 -->
+        <wButton
+          text="登录"
+          :rotate="isRotate"
+          @click.native="startLogin()"
+          class="login-btn"
+        ></wButton>
 
-    <!-- 网站底部信息 -->
-    <div class="site-footer">
-      <div class="footer-links">
-        <a href="#" class="footer-link">网站声明</a>
-        <span class="divider">|</span>
-        <a href="#" class="footer-link">隐私政策</a>
-        <span class="divider">|</span>
-        <a href="#" class="footer-link">中国一汽</a>
-      </div>
-      <div class="copyright">© 2020中国第一汽车集团有限公司版权所有</div>
-      <div class="beian">
-        <a href="https://beian.miit.gov.cn/" target="_blank" class="beian-link">吉ICP备17008829号-1</a>
-      </div>
-      <div class="police-beian">
-        <!-- <img src="@/assets/beian.png" alt="备案图标" class="beian-icon" /> -->
-        <a href="http://www.beian.gov.cn/portal/registerSystemInfo" target="_blank" class="beian-link">
-          吉公网安备 22017102000237 号
-        </a>
+        <!-- 注册按钮 -->
+        <div class="register-btn" @click="$router.push('register')">
+          注册
+        </div>
+
+        <!-- 联系客服 -->
+        <div class="contact-service" @click="toKefu">
+          联系客服
+        </div>
       </div>
     </div>
   </div>
@@ -140,163 +138,345 @@ export default {
 
 <style lang="scss" scoped>
 .login {
-  height: 100%;
+  height: 100vh;
   width: 100%;
-  background: url('~@/assets/dabag.png') no-repeat center center;
-  background-size: cover;
-  background-position: center;
-  overflow: hidden;
-}
-
-.contents {
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
   display: flex;
-  flex-direction: column;
   align-items: center;
-  height: 100%;
-  padding-bottom: 180px;
-}
-
-.header {
-  width: 144px;
-  height: 104px;
-  margin-top: 100px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  background-color: #fff;
+  justify-content: center;
   padding: 20px;
-  border-radius: 50px 50px 50px 50px;
-  img {
-    width: 80px;
-    width: 80px;
-    object-fit: cover;
-    
+  box-sizing: border-box;
+  position: relative;
+  
+  // 添加背景装饰元素
+  &::before {
+    content: '';
+    position: absolute;
+    top: 20%;
+    left: 10%;
+    width: 200px;
+    height: 200px;
+    background: rgba(255, 255, 255, 0.1);
+    border-radius: 50%;
+    filter: blur(40px);
+  }
+  
+  &::after {
+    content: '';
+    position: absolute;
+    bottom: 20%;
+    right: 10%;
+    width: 150px;
+    height: 150px;
+    background: rgba(255, 255, 255, 0.08);
+    border-radius: 50%;
+    filter: blur(30px);
   }
 }
 
-.title {
-  font-size: 10px;
-  color: #000;
-  margin-top: 16px;
-  font-weight: 500;
-  letter-spacing: 4px;
-}
-
-.main {
+.login-container {
   width: 100%;
-  max-width: 320px;
-  margin: 20px 0 0 0;
+  max-width: 400px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  position: relative;
+  z-index: 2;
 }
 
-.wbutton {
-  margin-top: 40px;
-  width: 100%;
-  max-width: 320px;
+.logo-section {
+  margin-bottom: 40px;
+  
+  .logo-box {
+    width: 100px;
+    height: 100px;
+    background: linear-gradient(145deg, #ff6b6b, #e74c3c);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    border-radius: 20px;
+    box-shadow: 
+      0 8px 25px rgba(231, 76, 60, 0.3),
+      0 4px 12px rgba(0, 0, 0, 0.15),
+      inset 0 1px 0 rgba(255, 255, 255, 0.2);
+    position: relative;
+    transform: translateY(0);
+    transition: all 0.3s ease;
+    
+    &::before {
+      content: '';
+      position: absolute;
+      top: -2px;
+      left: -2px;
+      right: -2px;
+      bottom: -2px;
+      background: linear-gradient(145deg, rgba(255, 255, 255, 0.3), transparent);
+      border-radius: 22px;
+      z-index: -1;
+    }
+    
+    &:hover {
+      transform: translateY(-5px);
+      box-shadow: 
+        0 15px 35px rgba(231, 76, 60, 0.4),
+        0 8px 20px rgba(0, 0, 0, 0.2);
+    }
+    
+    img {
+      width: 60px;
+      height: 60px;
+      object-fit: contain;
+      filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
+    }
+  }
 }
 
-.footer {
-  margin-top: 32px;
+.login-card {
+  width: 80%;
+  background: linear-gradient(145deg, #ffffff, #f8f9fa);
+  border-radius: 20px;
+  padding: 10px 30px 30px 30px;
+  box-shadow: 
+    0 20px 60px rgba(0, 0, 0, 0.15),
+    0 8px 25px rgba(0, 0, 0, 0.1),
+    inset 0 1px 0 rgba(255, 255, 255, 0.8),
+    inset 0 -1px 0 rgba(0, 0, 0, 0.05);
   display: flex;
-  justify-content: center;
+  flex-direction: column;
   align-items: center;
-  gap: 16px;
+  position: relative;
+  backdrop-filter: blur(10px);
   
-  a {
-    color: #fff;
-    text-decoration: none;
-    font-size: 14px;
-    opacity: 0.9;
-    transition: opacity 0.3s;
-    
-    &:hover {
-      opacity: 1;
-    }
+  // 添加顶部高光效果
+  &::before {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 60%;
+    height: 1px;
+    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.8), transparent);
   }
   
-  span {
-    color: #fff;
-    opacity: 0.5;
+  // 添加底部阴影线
+  &::after {
+    content: '';
+    position: absolute;
+    bottom: 0;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 80%;
+    height: 1px;
+    background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1), transparent);
   }
 }
 
-/* 网站底部样式 */
-.site-footer {
-  position: fixed;
-  bottom: 0;
-  left: 0;
+.input-section {
   width: 100%;
-  padding: 15px 0;
-  background: rgba(0, 0, 0, 0.5);
-  text-align: center;
+  margin-bottom: 30px;
 }
 
-.footer-links {
-  margin-bottom: 10px;
+.input-group {
+  position: relative;
+  margin-bottom: 20px;
   
-  .footer-link {
-    color: #fff;
-    text-decoration: none;
-    font-size: 12px;
-    opacity: 0.8;
-    transition: opacity 0.3s;
-    
-    &:hover {
-      opacity: 1;
-    }
+  .icon-user, .icon-lock {
+    position: absolute;
+    left: 15px;
+    top: 50%;
+    transform: translateY(-50%);
+    color: #667eea;
+    font-size: 18px;
+    z-index: 2;
+    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
   }
   
-  .divider {
-    color: #fff;
-    opacity: 0.5;
-    margin: 0 8px;
+  .icon-user::before {
+    content: "👤";
+  }
+  
+  .icon-lock::before {
+    content: "🔒";
   }
 }
 
-.copyright {
-  color: #fff;
-  font-size: 12px;
-  opacity: 0.8;
-  margin-bottom: 8px;
+.custom-input {
+  width: 90%;
+  
+  :deep(input) {
+    width: 100%;
+    height: 50px;
+    border: 1px solid #e0e6ed;
+    border-radius: 12px;
+    padding: 0 15px 0 45px;
+    font-size: 16px;
+    color: #333;
+    background: linear-gradient(145deg, #ffffff, #f8f9fa);
+    transition: all 0.3s ease;
+    box-sizing: border-box;
+    box-shadow: 
+      inset 0 2px 4px rgba(0, 0, 0, 0.06),
+      0 1px 2px rgba(0, 0, 0, 0.05);
+    
+    &::placeholder {
+      color: #9ca3af;
+    }
+    
+    &:focus {
+      border-color: #667eea;
+      background: #ffffff;
+      outline: none;
+      box-shadow: 
+        0 0 0 3px rgba(102, 126, 234, 0.1),
+        inset 0 2px 4px rgba(0, 0, 0, 0.06),
+        0 4px 12px rgba(102, 126, 234, 0.15);
+      transform: translateY(-1px);
+    }
+  }
 }
 
-.beian {
-  margin-bottom: 8px;
+.login-btn {
+  width: 100%;
+  margin-bottom: 15px;
   
-  .beian-link {
-    color: #fff;
-    text-decoration: none;
-    font-size: 12px;
-    opacity: 0.8;
-    transition: opacity 0.3s;
+  :deep(button) {
+    width: 100%;
+    height: 50px;
+    background: linear-gradient(145deg, #667eea, #764ba2);
+    border: none;
+    border-radius: 12px;
+    color: white;
+    font-size: 16px;
+    font-weight: 600;
+    cursor: pointer;
+    transition: all 0.3s ease;
+    box-shadow: 
+      0 8px 20px rgba(102, 126, 234, 0.3),
+      0 4px 10px rgba(0, 0, 0, 0.1),
+      inset 0 1px 0 rgba(255, 255, 255, 0.2);
+    position: relative;
+    overflow: hidden;
+    
+    // 添加按钮高光效果
+    &::before {
+      content: '';
+      position: absolute;
+      top: 0;
+      left: -100%;
+      width: 100%;
+      height: 100%;
+      background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
+      transition: left 0.5s ease;
+    }
     
     &:hover {
-      opacity: 1;
+      transform: translateY(-3px);
+      box-shadow: 
+        0 12px 30px rgba(102, 126, 234, 0.4),
+        0 8px 20px rgba(0, 0, 0, 0.15);
+      
+      &::before {
+        left: 100%;
+      }
+    }
+    
+    &:active {
+      transform: translateY(-1px);
+      box-shadow: 
+        0 6px 15px rgba(102, 126, 234, 0.35),
+        0 4px 10px rgba(0, 0, 0, 0.1);
     }
   }
 }
 
-.police-beian {
+.register-btn {
+  width: 100%;
+  height: 50px;
+  background: linear-gradient(145deg, #ffffff, #f8f9fa);
+  border: 2px solid #667eea;
+  border-radius: 12px;
+  color: #667eea;
+  font-size: 16px;
+  font-weight: 600;
   display: flex;
   align-items: center;
   justify-content: center;
-  gap: 5px;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  margin-bottom: 20px;
+  box-shadow: 
+    0 4px 12px rgba(102, 126, 234, 0.1),
+    inset 0 1px 0 rgba(255, 255, 255, 0.8);
+  position: relative;
+  overflow: hidden;
   
-  .beian-icon {
-    width: 14px;
-    height: 14px;
+  &::before {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: -100%;
+    width: 100%;
+    height: 100%;
+    background: linear-gradient(145deg, #667eea, #764ba2);
+    transition: left 0.3s ease;
+    z-index: 0;
   }
   
-  .beian-link {
-    color: #fff;
-    text-decoration: none;
-    font-size: 12px;
-    opacity: 0.8;
-    transition: opacity 0.3s;
+  &:hover {
+    color: white;
+    transform: translateY(-2px);
+    box-shadow: 
+      0 8px 20px rgba(102, 126, 234, 0.25),
+      0 4px 12px rgba(0, 0, 0, 0.1);
     
-    &:hover {
-      opacity: 1;
+    &::before {
+      left: 0;
     }
   }
+  
+  // 确保文字在最上层
+  span {
+    position: relative;
+    z-index: 1;
+  }
+}
+
+.contact-service {
+  color: #667eea;
+  font-size: 14px;
+  cursor: pointer;
+  text-decoration: none;
+  transition: all 0.3s ease;
+  padding: 8px 16px;
+  border-radius: 8px;
+  position: relative;
+  
+  &::before {
+    content: '';
+    position: absolute;
+    bottom: 0;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 0;
+    height: 2px;
+    background: linear-gradient(90deg, #667eea, #764ba2);
+    transition: width 0.3s ease;
+  }
+  
+  &:hover {
+    color: #764ba2;
+    background: rgba(102, 126, 234, 0.05);
+    
+    &::before {
+      width: 100%;
+    }
+  }
+}
+
+// 移除原来的site-footer样式,因为新设计不需要
+.site-footer {
+  display: none;
 }
 </style>
 

+ 491 - 139
src/views/register.vue

@@ -1,63 +1,104 @@
 <template>
   <div class="register">
-    <div class="content">
-      <div class="back" @click="goBack">
-        X
+    <div class="register-container">
+      <!-- 返回按钮 -->
+      <div class="back-btn" @click="goBack">
+        <i class="back-icon">←</i>
       </div>
-      <!-- 头部logo -->
-      <div class="header">
-        <img src="@/assets/hongqi.png" alt="logo" />
-        <div class="title">让理想飞扬</div>
-      </div>
-      <!-- 主体 -->
-      <div class="main">
-        <wInput
-          type="text"
-          maxlength="11"
-          placeholder="请输入手机号"
-          v-model="phoneData"
-        ></wInput>
-        <wInput
-          type="text"
-          maxlength="4"
-          placeholder="姓名"
-          v-model="name"
-        ></wInput>
-        <wInput
-          type="password"
-          maxlength="11"
-          placeholder="请输入密码"
-          v-model="passData"
-          :isShowPass="true"
-        ></wInput>
-        <wInput
-          type="number"
-          maxlength="6"
-          placeholder="邀请码"
-          ref="codeRef"
-          v-model="inviteCode"
-        ></wInput>
-        <div class="captcha-box">
-          <input v-model="captchaInput" maxlength="4" placeholder="验证码" style="width:216px;margin-right:8px;" />
-          <canvas ref="captchaCanvas" width="80" height="32" @click="generateCaptcha" style="cursor:pointer;vertical-align:middle;"></canvas>
+
+      <!-- Logo区域 -->
+      <div class="logo-section">
+        <div class="logo-box">
+          <img src="@/assets/hongqi.png" alt="logo" />
         </div>
       </div>
+      
+      <!-- 注册卡片 -->
+      <div class="register-card">
+        <!-- 输入框区域 -->
+        <div class="input-section">
+          <div class="input-group">
+            <i class="icon-phone"></i>
+            <wInput
+              type="text"
+              maxlength="11"
+              placeholder="请输入手机号"
+              v-model="phoneData"
+              class="custom-input"
+            ></wInput>
+          </div>
+          
+          <div class="input-group">
+            <i class="icon-user"></i>
+            <wInput
+              type="text"
+              maxlength="4"
+              placeholder="姓名"
+              v-model="name"
+              class="custom-input"
+            ></wInput>
+          </div>
+          
+          <div class="input-group">
+            <i class="icon-lock"></i>
+            <wInput
+              type="password"
+              maxlength="11"
+              placeholder="请输入密码"
+              v-model="passData"
+              :isShowPass="true"
+              class="custom-input"
+            ></wInput>
+          </div>
+          
+          <div class="input-group">
+            <i class="icon-invite"></i>
+            <wInput
+              type="number"
+              maxlength="6"
+              placeholder="邀请码"
+              ref="codeRef"
+              v-model="inviteCode"
+              class="custom-input"
+            ></wInput>
+          </div>
+
+          <!-- 验证码区域 -->
+          <div class="captcha-group">
+            <div class="captcha-input">
+              <i class="icon-captcha"></i>
+              <input 
+                v-model="captchaInput" 
+                maxlength="4" 
+                placeholder="验证码" 
+                class="captcha-field"
+              />
+            </div>
+            <canvas 
+              ref="captchaCanvas" 
+              width="90" 
+              height="50" 
+              @click="generateCaptcha" 
+              class="captcha-canvas"
+            ></canvas>
+          </div>
+        </div>
 
-      <wButton
-        text="注 册"
-        :rotate="isRotate"
-        @click.native="startReg()"
-        class="wbutton"
-      ></wButton>
+        <!-- 注册按钮 -->
+        <wButton
+          text="注册"
+          :rotate="isRotate"
+          @click.native="startReg()"
+          class="register-btn"
+        ></wButton>
 
-      <!-- 底部信息 -->
-      <div class="footer">
-        <span
-          @tap="isShowAgree"
-          class="cuIcon"
-          :class="showAgree ? 'cuIcon-radiobox' : 'cuIcon-round'"
-        >同意</span>
-        <span>《协议》</span>
+        <!-- 协议区域 -->
+        <div class="agreement-section">
+          <div class="agreement-checkbox" @click="isShowAgree">
+            <i class="checkbox-icon" :class="showAgree ? 'checked' : 'unchecked'"></i>
+            <span>同意《用户协议》</span>
+          </div>
+        </div>
       </div>
     </div>
   </div>
@@ -121,16 +162,40 @@ export default {
       const canvas = this.$refs.captchaCanvas;
       if (!canvas) return;
       const ctx = canvas.getContext('2d');
-      ctx.clearRect(0, 0, 80, 32);
-      ctx.font = '24px Arial';
-      ctx.fillStyle = '#333';
-      ctx.fillText(this.captcha, 10, 26);
-      // 添加雪花点干扰
-      for (let i = 0; i < 20; i++) {
+      
+      // 清除画布
+      ctx.clearRect(0, 0, 90, 50);
+      
+      // 设置背景渐变
+      const gradient = ctx.createLinearGradient(0, 0, 90, 50);
+      gradient.addColorStop(0, '#f8f9fa');
+      gradient.addColorStop(1, '#e9ecef');
+      ctx.fillStyle = gradient;
+      ctx.fillRect(0, 0, 90, 50);
+      
+      // 绘制验证码文字
+      ctx.font = 'bold 20px Arial';
+      ctx.fillStyle = '#667eea';
+      ctx.textAlign = 'center';
+      ctx.textBaseline = 'middle';
+      ctx.fillText(this.captcha, 45, 25);
+      
+      // 添加干扰线
+      for (let i = 0; i < 3; i++) {
+        ctx.beginPath();
+        ctx.moveTo(Math.random() * 90, Math.random() * 50);
+        ctx.lineTo(Math.random() * 90, Math.random() * 50);
+        ctx.strokeStyle = this.randomColor();
+        ctx.lineWidth = 1;
+        ctx.stroke();
+      }
+      
+      // 添加干扰点
+      for (let i = 0; i < 30; i++) {
         ctx.beginPath();
         ctx.arc(
-          Math.random() * 80,
-          Math.random() * 32,
+          Math.random() * 90,
+          Math.random() * 50,
           Math.random() * 2 + 1,
           0,
           2 * Math.PI
@@ -140,10 +205,8 @@ export default {
       }
     },
     randomColor() {
-      const r = Math.floor(Math.random() * 256);
-      const g = Math.floor(Math.random() * 256);
-      const b = Math.floor(Math.random() * 256);
-      return `rgb(${r},${g},${b})`;
+      const colors = ['#667eea', '#764ba2', '#ff6b6b', '#51cf66', '#ffd43b'];
+      return colors[Math.floor(Math.random() * colors.length)];
     },
     checkCaptcha() {
       return this.captchaInput.trim().toLowerCase() === this.captcha.toLowerCase();
@@ -153,7 +216,7 @@ export default {
         return false;
       }
       if (!this.showAgree) {
-        Toast("请先同意《协议》");
+        Toast("请先同意《用户协议》");
         return false;
       }
       if (!this.phoneData) {
@@ -195,7 +258,7 @@ export default {
           this.goBack();
         }else{
           Toast(res.msg);
-        this.isRotate = false;
+          this.isRotate = false;
         }
       } catch (error) {
         this.isRotate = false;
@@ -213,114 +276,403 @@ export default {
 .register {
   height: 100vh;
   width: 100%;
-  background: url('~@/assets/dabag.png') no-repeat center center;
-  background-size: cover;
-  background-position: center;
+  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 20px;
+  box-sizing: border-box;
   position: relative;
+  
+  // 添加背景装饰元素
+  &::before {
+    content: '';
+    position: absolute;
+    top: 15%;
+    left: 5%;
+    width: 180px;
+    height: 180px;
+    background: rgba(255, 255, 255, 0.08);
+    border-radius: 50%;
+    filter: blur(40px);
+  }
+  
+  &::after {
+    content: '';
+    position: absolute;
+    bottom: 15%;
+    right: 5%;
+    width: 120px;
+    height: 120px;
+    background: rgba(255, 255, 255, 0.06);
+    border-radius: 50%;
+    filter: blur(30px);
+  }
 }
 
-.content {
+.register-container {
+  width: 100%;
+  max-width: 420px;
   display: flex;
   flex-direction: column;
   align-items: center;
   position: relative;
+  z-index: 2;
 }
 
-.back {
+.back-btn {
   position: absolute;
-  top: 20px;
-  left: 20px;
-  color: #fff;
-  font-size: 20px;
+  top: -50px;
+  left: 0;
+  width: 40px;
+  height: 40px;
+  background: rgba(255, 255, 255, 0.2);
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
   cursor: pointer;
-  z-index: 1;
+  transition: all 0.3s ease;
+  backdrop-filter: blur(10px);
+  
+  &:hover {
+    background: rgba(255, 255, 255, 0.3);
+    transform: translateY(-2px);
+  }
+  
+  .back-icon {
+    color: white;
+    font-size: 18px;
+    font-weight: bold;
+  }
 }
 
-.header {
-  width: 144px;
-  height: 104px;
-  margin-top: 100px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  background-color: #fff;
-  padding: 20px;
-  border-radius: 50px 50px 50px 50px;
-  img {
-    width: 80px;
+.logo-section {
+  margin-bottom: 30px;
+  
+  .logo-box {
     width: 80px;
-    object-fit: cover;
+    height: 80px;
+    background: linear-gradient(145deg, #ff6b6b, #e74c3c);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    border-radius: 16px;
+    box-shadow: 
+      0 6px 20px rgba(231, 76, 60, 0.3),
+      0 3px 8px rgba(0, 0, 0, 0.15),
+      inset 0 1px 0 rgba(255, 255, 255, 0.2);
+    position: relative;
+    transform: translateY(0);
+    transition: all 0.3s ease;
+    
+    &::before {
+      content: '';
+      position: absolute;
+      top: -1px;
+      left: -1px;
+      right: -1px;
+      bottom: -1px;
+      background: linear-gradient(145deg, rgba(255, 255, 255, 0.3), transparent);
+      border-radius: 17px;
+      z-index: -1;
+    }
+    
+    &:hover {
+      transform: translateY(-3px);
+      box-shadow: 
+        0 10px 25px rgba(231, 76, 60, 0.4),
+        0 6px 15px rgba(0, 0, 0, 0.2);
+    }
     
+    img {
+      width: 45px;
+      height: 45px;
+      object-fit: contain;
+      filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
+    }
   }
 }
 
-
-.title {
-  font-size: 10px;
-  color: #000;
-  margin-top: 16px;
-  font-weight: 500;
-  letter-spacing: 4px;
-}
-
-.main {
-  width: 100%;
-  max-width: 320px;
-  margin: 60px 0 0 0;
+.register-card {
+  width: 80%;
+  background: linear-gradient(145deg, #ffffff, #f8f9fa);
+  border-radius: 20px;
+  padding: 35px 25px;
+  box-shadow: 
+    0 20px 60px rgba(0, 0, 0, 0.15),
+    0 8px 25px rgba(0, 0, 0, 0.1),
+    inset 0 1px 0 rgba(255, 255, 255, 0.8),
+    inset 0 -1px 0 rgba(0, 0, 0, 0.05);
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  position: relative;
+  backdrop-filter: blur(10px);
+  
+  // 添加顶部高光效果
+  &::before {
+    content: '';
+    position: absolute;
+    top: 0;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 60%;
+    height: 1px;
+    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.8), transparent);
+  }
+  
+  // 添加底部阴影线
+  &::after {
+    content: '';
+    position: absolute;
+    bottom: 0;
+    left: 50%;
+    transform: translateX(-50%);
+    width: 80%;
+    height: 1px;
+    background: linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.1), transparent);
+  }
 }
 
-.wbutton {
+.input-section {
   width: 100%;
-  max-width: 320px;
+  margin-bottom: 25px;
 }
 
-.footer {
-  margin-top: 32px;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  gap: 8px;
-  color: #fff;
-  font-size: 14px;
+.input-group {
+  position: relative;
+  margin-bottom: 16px;
   
-  .cuIcon {
-    margin-right: 4px;
+  .icon-phone, .icon-user, .icon-lock, .icon-invite {
+    position: absolute;
+    left: 15px;
+    top: 50%;
+    transform: translateY(-50%);
+    color: #667eea;
     font-size: 16px;
+    z-index: 2;
+    filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.1));
   }
   
-  span {
-    opacity: 0.9;
+  .icon-phone::before { content: "📱"; }
+  .icon-user::before { content: "👤"; }
+  .icon-lock::before { content: "🔒"; }
+  .icon-invite::before { content: "🎫"; }
+}
+
+.custom-input {
+  width: 80%;
+  
+  :deep(input) {
+    width: 100%;
+    height: 45px;
+    border: 1px solid #e0e6ed;
+    border-radius: 10px;
+    padding: 0 15px 0 40px;
+    font-size: 14px;
+    color: #333;
+    background: linear-gradient(145deg, #ffffff, #f8f9fa);
+    transition: all 0.3s ease;
+    box-sizing: border-box;
+    box-shadow: 
+      inset 0 2px 4px rgba(0, 0, 0, 0.06),
+      0 1px 2px rgba(0, 0, 0, 0.05);
+    
+    &::placeholder {
+      color: #9ca3af;
+      font-size: 14px;
+    }
+    
+    &:focus {
+      border-color: #667eea;
+      background: #ffffff;
+      outline: none;
+      box-shadow: 
+        0 0 0 3px rgba(102, 126, 234, 0.1),
+        inset 0 2px 4px rgba(0, 0, 0, 0.06),
+        0 4px 12px rgba(102, 126, 234, 0.15);
+      transform: translateY(-1px);
+    }
   }
 }
 
-.captcha-box {
+// 验证码组合
+.captcha-group {
   display: flex;
   align-items: center;
-  margin-top: 10px;
-  margin-bottom: 10px;
+  gap: 10px;
+  margin-bottom: 16px;
+  
+  .captcha-input {
+    position: relative;
+    flex: 1;
+    
+    .icon-captcha {
+      position: absolute;
+      left: 15px;
+      top: 50%;
+      transform: translateY(-50%);
+      color: #667eea;
+      font-size: 16px;
+      z-index: 2;
+      
+      &::before {
+        content: "🔢";
+      }
+    }
+    
+    .captcha-field {
+      width: 100%;
+      height: 45px;
+      border: 1px solid #e0e6ed;
+      border-radius: 10px;
+      padding: 0 15px 0 40px;
+      font-size: 14px;
+      color: #333;
+      background: linear-gradient(145deg, #ffffff, #f8f9fa);
+      transition: all 0.3s ease;
+      box-sizing: border-box;
+      box-shadow: 
+        inset 0 2px 4px rgba(0, 0, 0, 0.06),
+        0 1px 2px rgba(0, 0, 0, 0.05);
+      
+      &::placeholder {
+        color: #9ca3af;
+        font-size: 14px;
+      }
+      
+      &:focus {
+        border-color: #667eea;
+        background: #ffffff;
+        outline: none;
+        box-shadow: 
+          0 0 0 3px rgba(102, 126, 234, 0.1),
+          inset 0 2px 4px rgba(0, 0, 0, 0.06),
+          0 4px 12px rgba(102, 126, 234, 0.15);
+        transform: translateY(-1px);
+      }
+    }
+  }
+  
+  .captcha-canvas {
+    height: 45px;
+    border-radius: 10px;
+    cursor: pointer;
+    transition: all 0.3s ease;
+    box-shadow: 
+      0 2px 8px rgba(0, 0, 0, 0.1),
+      inset 0 1px 0 rgba(255, 255, 255, 0.5);
+    
+    &:hover {
+      transform: translateY(-1px);
+      box-shadow: 
+        0 4px 12px rgba(0, 0, 0, 0.15),
+        inset 0 1px 0 rgba(255, 255, 255, 0.5);
+    }
+  }
 }
 
-.captcha-box input {
-  height: 44px;
-  border-radius: 22px;
-  border: none;
-  background: #fff;
-  padding-left: 16px;
-  font-size: 16px;
-  outline: none;
-  box-sizing: border-box;
-  margin-right: 8px;
-  width: 180px;
-  box-shadow: 0 2px 8px rgba(0,0,0,0.04);
+.register-btn {
+  width: 100%;
+  margin-bottom: 20px;
+  
+  :deep(button) {
+    width: 100%;
+    height: 45px;
+    background: linear-gradient(145deg, #667eea, #764ba2);
+    border: none;
+    border-radius: 10px;
+    color: white;
+    font-size: 16px;
+    font-weight: 600;
+    cursor: pointer;
+    transition: all 0.3s ease;
+    box-shadow: 
+      0 6px 18px rgba(102, 126, 234, 0.3),
+      0 3px 8px rgba(0, 0, 0, 0.1),
+      inset 0 1px 0 rgba(255, 255, 255, 0.2);
+    position: relative;
+    overflow: hidden;
+    
+    // 添加按钮高光效果
+    &::before {
+      content: '';
+      position: absolute;
+      top: 0;
+      left: -100%;
+      width: 100%;
+      height: 100%;
+      background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
+      transition: left 0.5s ease;
+    }
+    
+    &:hover {
+      transform: translateY(-2px);
+      box-shadow: 
+        0 10px 25px rgba(102, 126, 234, 0.4),
+        0 6px 15px rgba(0, 0, 0, 0.15);
+      
+      &::before {
+        left: 100%;
+      }
+    }
+    
+    &:active {
+      transform: translateY(-1px);
+      box-shadow: 
+        0 4px 12px rgba(102, 126, 234, 0.35),
+        0 3px 8px rgba(0, 0, 0, 0.1);
+    }
+  }
 }
 
-.captcha-box canvas {
-  height: 44px;
-  width: 90px;
-  // border-radius: 22px;
-  background: #fff;
-  box-shadow: 0 2px 8px rgba(0,0,0,0.04);
-  display: inline-block;
+.agreement-section {
+  .agreement-checkbox {
+    display: flex;
+    align-items: center;
+    cursor: pointer;
+    padding: 8px;
+    border-radius: 8px;
+    transition: all 0.3s ease;
+    
+    &:hover {
+      background: rgba(102, 126, 234, 0.05);
+    }
+    
+    .checkbox-icon {
+      width: 18px;
+      height: 18px;
+      border-radius: 4px;
+      margin-right: 8px;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      font-size: 12px;
+      transition: all 0.3s ease;
+      
+      &.checked {
+        background: linear-gradient(145deg, #667eea, #764ba2);
+        color: white;
+        box-shadow: 0 2px 6px rgba(102, 126, 234, 0.3);
+        
+        &::before {
+          content: "✓";
+        }
+      }
+      
+      &.unchecked {
+        border: 2px solid #e0e6ed;
+        background: #ffffff;
+      }
+    }
+    
+    span {
+      color: #667eea;
+      font-size: 14px;
+      font-weight: 500;
+    }
+  }
 }
 </style>