liuqiwen пре 1 недеља
родитељ
комит
ce92049d29
4 измењених фајлова са 795 додато и 89 уклоњено
  1. 188 48
      src/pages/Member.vue
  2. 122 4
      src/pages/Personal/Orders.vue
  3. 63 27
      src/pages/Personal/Wallet.vue
  4. 422 10
      src/pages/PersonalCenter.vue

+ 188 - 48
src/pages/Member.vue

@@ -36,7 +36,8 @@
       </div>
     </div>
 
-    <el-dialog v-model="dialogVisible" :title="$t('common.tip')" width="600" align-center>
+    <!-- Payment Dialog -->
+    <el-dialog v-model="dialogVisible" :title="$t('common.tip')" width="600" align-center custom-class="member-payment-dialog">
       <span>{{ $t('common.payNow') }} {{ itemData.price }} {{ $t('common.baomibi') }}?</span>
       <template #footer>
         <div class="flex-center-between">
@@ -213,13 +214,17 @@ onMounted(() => {
 </script>
 <style lang="scss">
 .member {
-  max-width: 1246px;
-  margin: 0 auto;
-  position: relative;
+  min-height: 100vh;
+  background: linear-gradient(135deg, #f5f7fa 0%, #e4e7eb 100%);
+  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+  padding: 0;
 }
 
 .member-head {
-  padding: 70px 0;
+  padding: 60px 0 40px;
+  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
+  color: white;
+  box-shadow: 0 4px 20px rgba(79, 70, 229, 0.3);
   display: flex;
   align-items: center;
   justify-content: center;
@@ -227,19 +232,20 @@ onMounted(() => {
   line-height: 1;
 
   .member-head-title {
-    color: #8B3D22;
+    color: white;
     font-size: 36px;
-    font-weight: bold;
+    font-weight: 700;
+    letter-spacing: -0.02em;
   }
 
   .member-head-list {
     display: flex;
-
     margin-top: 24px;
 
     .li {
-      font-size: 18px;
-      margin-right: 66px;
+      font-size: 16px;
+      margin-right: 40px;
+      opacity: 0.9;
 
       &:last-child {
         margin-right: 0;
@@ -249,111 +255,245 @@ onMounted(() => {
 }
 
 .member-list {
-  display: flex;
-  gap: 48px;
-  flex-wrap: wrap;
+  max-width: 1200px;
+  margin: 0 auto;
+  padding: 0 24px 48px;
+  display: grid;
+  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
+  gap: 24px;
+  margin-top: -24px;
 
   .li {
-    width: 383px;
-    padding: 24px 32px;
-    background: #FFFFFF;
-    border-radius: 16px;
+    position: relative;
+    background: rgba(255, 255, 255, 0.85);
+    backdrop-filter: blur(20px);
+    -webkit-backdrop-filter: blur(20px);
+    border: 1px solid rgba(255, 255, 255, 0.9);
+    border-radius: 20px;
+    padding: 32px 24px;
     display: flex;
     align-items: center;
     flex-direction: column;
-
-    .desc {
-      margin: 16px 0 24px;
-      font-size: 16px;
+    transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+    overflow: hidden;
+    
+    &::before {
+      content: '';
+      position: absolute;
+      top: 0;
+      left: 0;
+      right: 0;
+      height: 4px;
+      background: linear-gradient(90deg, #4f46e5, #7c3aed);
+    }
+    
+    &:hover {
+      transform: translateY(-8px);
+      box-shadow: 
+        0 12px 32px rgba(79, 70, 229, 0.15),
+        0 4px 16px rgba(0, 0, 0, 0.08);
     }
 
     .name {
-      color: #8B3D22;
-      font-size: 24px;
-      font-weight: bold;
+      font-size: 20px;
+      font-weight: 600;
+      color: #1f2937;
+      margin-top: 16px;
+    }
+
+    .desc {
+      margin: 16px 0 20px;
+      font-size: 14px;
+      color: #6b7280;
+      text-align: center;
+      line-height: 1.5;
     }
 
     .price {
       font-size: 14px;
       line-height: 1;
       align-items: flex-end;
+      margin: 16px 0;
 
       .price-left {
         span {
+          &:first-child {
+            font-size: 16px;
+            color: #4f46e5;
+          }
           &:nth-child(2) {
-            font-size: 24px;
-            font-weight: bold;
+            font-size: 32px;
+            font-weight: 700;
+            color: #4f46e5;
           }
         }
       }
 
       .price-right {
         margin-left: 20px;
+        color: #9ca3af;
+        text-decoration: line-through;
       }
     }
 
     .btn {
       width: 100%;
       margin: 24px 0;
-      color: #5A1D07;
+      color: white;
       font-size: 16px;
-      font-weight: bold;
+      font-weight: 600;
       text-align: center;
       line-height: 50px;
       cursor: pointer;
-      background: linear-gradient(270deg, #FBE8CF 0%, #F8C79D 52.05%, #FADCB9 100%);
-      border-radius: 10px;
+      background: linear-gradient(135deg, #4f46e5, #7c3aed);
+      border-radius: 12px;
+      box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3);
+      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+      
+      &:hover {
+        transform: translateY(-2px);
+        box-shadow: 0 6px 16px rgba(79, 70, 229, 0.4);
+      }
     }
 
     .btns {
-      color: #FAD8B4;
-      background: #3B3843;
+      background: linear-gradient(135deg, #1e293b, #334155);
+      box-shadow: 0 4px 12px rgba(30, 41, 59, 0.3);
+      
+      &:hover {
+        box-shadow: 0 6px 16px rgba(30, 41, 59, 0.4);
+      }
     }
 
     .line {
-      // width: 164px;
       display: flex;
       align-items: center;
-
-      // background: url('/src/assets/imgs/line@2x.png') no-repeat;
-      // background-size: 164px 3px;
-      // background-position: center center;
+      width: 100%;
+      margin: 20px 0;
+      
       div {
         &:nth-child(2) {
-          color: #8B3D22;
-          font-weight: bold;
+          color: #4f46e5;
+          font-weight: 600;
           font-size: 14px;
           text-align: center;
-          margin: 0 8px;
+          margin: 0 12px;
         }
 
         &:first-child,
         &:last-child {
-          width: 46px;
-          height: 3px;
-
-
+          flex: 1;
+          height: 2px;
         }
 
         &:first-child {
-          background: linear-gradient(270deg, #8B3D22 0%, rgba(139, 61, 34, 0) 100%);
+          background: linear-gradient(270deg, #4f46e5 0%, rgba(79, 70, 229, 0) 100%);
         }
 
         &:last-child {
-          background: linear-gradient(90deg, #8B3D22 0%, rgba(139, 61, 34, 0) 100%);
+          background: linear-gradient(90deg, #4f46e5 0%, rgba(79, 70, 229, 0) 100%);
         }
       }
     }
 
     .uls {
       width: 100%;
-      color: #8B3D22;
+      color: #374151;
       font-size: 14px;
 
       .lis {
-        margin-top: 16px;
+        margin-top: 12px;
+        padding: 8px 0;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        
+        &::before {
+          content: '✓';
+          color: #10b981;
+          font-weight: 600;
+          margin-right: 12px;
+        }
       }
     }
+
+    &.popular {
+      border-color: #4f46e5;
+      box-shadow: 
+        0 8px 24px rgba(79, 70, 229, 0.2),
+        0 2px 8px rgba(0, 0, 0, 0.1);
+      
+      .popular-badge {
+        position: absolute;
+        top: -10px;
+        right: 20px;
+        background: linear-gradient(135deg, #4f46e5, #7c3aed);
+        color: white;
+        padding: 6px 16px;
+        border-radius: 12px;
+        font-size: 12px;
+        font-weight: 600;
+        box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3);
+      }
+    }
+  }
+}
+
+/* ===== 响应式设计 ===== */
+@media (max-width: 1200px) {
+  .member-list {
+    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+    gap: 20px;
+  }
+}
+
+@media (max-width: 768px) {
+  .member-head {
+    padding: 40px 0 32px;
+    
+    .member-head-title {
+      font-size: 28px;
+    }
+  }
+  
+  .member-list {
+    padding: 0 16px 32px;
+  }
+  
+  .member-list .li {
+    padding: 24px 20px;
+  }
+}
+
+@media (max-width: 480px) {
+  .member-head {
+    padding: 32px 0 24px;
+    
+    .member-head-title {
+      font-size: 24px;
+    }
+    
+    .member-head-list {
+      flex-direction: column;
+      align-items: center;
+      gap: 8px;
+      
+      .li {
+        margin-right: 0;
+      }
+    }
+  }
+  
+  .member-list {
+    padding: 0 12px 24px;
+  }
+  
+  .member-list .li {
+    padding: 20px 16px;
+  }
+  
+  .price .price-left span:nth-child(2) {
+    font-size: 24px;
   }
 }
 </style>

+ 122 - 4
src/pages/Personal/Orders.vue

@@ -107,7 +107,7 @@
         @page-change="handlePageChange" />
     </template>
     <el-empty v-else :description="$t('common.empty')" />
-    <el-dialog v-model="dialogVisible" :title="$t('common.applyInvoice')" width="784">
+    <el-dialog v-model="dialogVisible" :title="$t('common.applyInvoice')" width="784" :lock-scroll="false">
       <div class="dialog_title">{{ $t('personalCenter.fpttxx') }}</div>
       <el-form :model="invoiceData" class="demo-form-inline" label-position="top" :rules="rules" ref="ruleFormRef">
         <el-row :gutter="16">
@@ -473,11 +473,129 @@ onMounted(() => {
     }
   }
 }
+.el-dialog {
+  border-radius: 12px;
+  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
+  overflow: hidden;
+  
+  .el-dialog__header {
+    padding: 20px 24px;
+    border-bottom: 1px solid #f0f0f0;
+    background: #fff;
+  }
+
+  .el-dialog__title {
+    font-size: 18px;
+    font-weight: 600;
+    color: #1f2937;
+  }
+
+  .el-dialog__body {
+    padding: 24px;
+    max-height: 70vh;
+    overflow-y: auto;
+    overflow-x: hidden;
+  }
+
+  .el-dialog__footer {
+    padding: 16px 24px;
+    background: #fff;
+    border-top: 1px solid #f0f0f0;
+  }
+}
 
 .dialog_title {
-  color: #3D3D3D;
-  font-weight: bold;
   font-size: 16px;
-  margin-bottom: 16px;
+  font-weight: 600;
+  color: #606266;
+  margin-bottom: 20px;
+  padding-bottom: 12px;
+  border-bottom: 1px solid #f0f0f0;
+}
+.demo-form-inline {
+  .el-form-item {
+    margin-bottom: 20px;
+  }
+  
+  .el-form-item__label {
+    font-size: 14px;
+    font-weight: 500;
+    color: #606266;
+    margin-bottom: 8px;
+    line-height: 1.5;
+  }
+}
+.el-input {
+  :deep(.el-input__wrapper) {
+    background-color: #fff;
+    box-shadow: 0 0 0 1px #dcdfe6 inset !important;
+    padding: 8px 15px;
+    border-radius: 6px;
+    transition: all 0.3s ease;
+    
+    &:hover {
+      box-shadow: 0 0 0 1px #c0c4cc inset !important;
+    }
+    
+    &.is-focus {
+      box-shadow: 0 0 0 1px #409eff inset !important;
+    }
+  }
+
+  :deep(.el-input__inner) {
+    font-size: 14px;
+    font-weight: 400;
+    color: #606266;
+  }
+}
+.el-radio-group {
+  display: flex;
+  gap: 24px;
+  
+  .el-radio {
+    margin-right: 0;
+    
+    .el-radio__label {
+      font-size: 14px;
+      color: #606266;
+    }
+    
+    &.is-checked {
+      .el-radio__label {
+        color: #409eff;
+        font-weight: 500;
+      }
+    }
+  }
+}
+.dialog-footer {
+  display: flex;
+  gap: 12px;
+  justify-content: flex-end;
+  
+  .el-button {
+    padding: 10px 20px;
+    border-radius: 4px;
+    font-size: 14px;
+    font-weight: 400;
+    transition: all 0.3s ease;
+  }
+  
+  .gradient {
+    background: linear-gradient(135deg, #4f46e5, #7c3aed);
+    border: none;
+    color: white;
+    
+    &:hover {
+      opacity: 0.9;
+    }
+  }
+}
+.el-row {
+  margin-bottom: 0;
+  
+  .el-col {
+    padding: 0 8px;
+  }
 }
 </style>

+ 63 - 27
src/pages/Personal/Wallet.vue

@@ -140,6 +140,7 @@
         v-model="dialogVisible"
         :title="`${transformationIndex == 0 ? $t('personalCenter.zhuanhuanbaomibi') : $t('personalCenter.zhuanghuanmibi')}`"
         width="523"
+        :lock-scroll="false"
         custom-class="wallet-dialog"
       >
         <div class="wallet-dialog-content">
@@ -253,6 +254,7 @@
       <!-- Withdrawal Dialog -->
       <el-dialog 
         v-model="show" 
+        :lock-scroll="false"
         :title="$t('personalCenter.shenqingtixian')" 
         width="500"
         custom-class="wallet-dialog"
@@ -344,6 +346,7 @@
         v-model="showWithdraw" 
         :title="agreementTitle" 
         width="50%"
+        :lock-scroll="false"
         custom-class="wallet-dialog"
       >
         <div class="wallet-agreement-content" style="height: 500px;overflow-y: scroll;" v-html="agreementContent"></div>
@@ -1069,39 +1072,57 @@ onMounted(() => {
 
 /* ===== DIALOG ===== */
 .wallet-dialog {
+  border-radius: 12px;
+  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
+  overflow: hidden;
+  
   .el-dialog__header {
-    padding: 24px 24px 0;
+    padding: 20px 24px;
+    border-bottom: 1px solid #f0f0f0;
+    background: #fff;
   }
 
   .el-dialog__title {
     font-size: 18px;
-    font-weight: 700;
+    font-weight: 600;
     color: #1f2937;
-    letter-spacing: -0.02em;
   }
 
   .el-dialog__body {
     padding: 24px;
+    max-height: 60vh;
+    overflow-y: auto;
+    overflow-x: hidden;
   }
 
   .el-dialog__footer {
-    padding: 0 24px 24px;
+    padding: 16px 24px;
+    background: #fff;
+    border-top: 1px solid #f0f0f0;
   }
 }
 
 .wallet-dialog-content {
-  background: rgba(255, 255, 255, 0.9);
-  border-radius: 16px;
-  padding: 24px;
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
+  background: #fff;
+  padding: 0;
 }
 
 .wallet-input-group {
-  padding: 16px;
-  background: rgba(249, 250, 251, 0.6);
-  border-radius: 16px;
-  margin-bottom: 16px;
-  border: 1px solid rgba(229, 231, 235, 0.5);
+  margin-bottom: 12px;
+  
+  :deep(.el-form-item__label) {
+    font-size: 14px;
+    font-weight: 500;
+    color: #606266;
+    margin-bottom: 8px;
+    line-height: 1.5;
+  }
+}
+
+.wallet-form {
+  :deep(.el-form-item) {
+    margin-bottom: 16px;
+  }
 }
 
 .wallet-conversion-arrow {
@@ -1134,16 +1155,25 @@ onMounted(() => {
 .wallet-input,
 .wallet-input-number {
   :deep(.el-input__wrapper) {
-    background-color: transparent;
-    box-shadow: none !important;
-    padding: 0;
-    border: none;
+    background-color: #fff;
+    box-shadow: 0 0 0 1px #dcdfe6 inset !important;
+    padding: 8px 15px;
+    border-radius: 6px;
+    transition: all 0.3s ease;
+    
+    &:hover {
+      box-shadow: 0 0 0 1px #c0c4cc inset !important;
+    }
+    
+    &.is-focus {
+      box-shadow: 0 0 0 1px #409eff inset !important;
+    }
   }
 
   :deep(.el-input__inner) {
-    font-size: 28px;
-    font-weight: 600;
-    color: #1f2937;
+    font-size: 14px;
+    font-weight: 400;
+    color: #606266;
   }
 
   :deep(.el-input-number__increase),
@@ -1173,25 +1203,32 @@ onMounted(() => {
 }
 
 .wallet-checkbox {
+  margin-top: 12px;
+  
   :deep(.el-checkbox__label) {
     font-size: 14px;
-    color: #374151;
+    color: #606266;
+    line-height: 1.5;
   }
 
   :deep(.el-checkbox__input.is-checked .el-checkbox__inner) {
-    background-color: #4f46e5;
-    border-color: #4f46e5;
+    background-color: #409eff;
+    border-color: #409eff;
+  }
+  
+  :deep(.el-checkbox__inner) {
+    border-radius: 4px;
   }
 }
 
 .wallet-link {
-  color: #4f46e5;
-  font-weight: 600;
+  color: #409eff;
+  font-weight: 500;
   cursor: pointer;
   transition: color 0.3s ease;
 
   &:hover {
-    color: #7c3aed;
+    color: #66b1ff;
     text-decoration: underline;
   }
 }
@@ -1200,7 +1237,6 @@ onMounted(() => {
   display: flex;
   gap: 12px;
   justify-content: flex-end;
-  margin-top: 24px;
 }
 
 .wallet-dialog-btn {

+ 422 - 10
src/pages/PersonalCenter.vue

@@ -108,25 +108,25 @@
     </div>
 
     <!-- Work Order Dialog -->
-    <el-dialog v-model="show" :title="`${$t('personalCenter.gongdan')}`" width="784" custom-class="personal-dialog">
+    <el-dialog v-model="show" :title="`${$t('personalCenter.gongdan')}`" width="784" custom-class="work-order-dialog">
       <el-tabs v-model="activeName" @tab-click="handleClick">
         <el-tab-pane v-for="tab in tabs" :key="tab.name" :label="`${$t(tab.label)}`" :name="tab.name">
           <template v-if="activeName == 0">
             <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="auto">
               <el-form-item :label="`${$t('personalCenter.gongdanleixing')}`" prop="issueCategory">
                 <el-select v-model="ruleForm.issueCategory"
-                  :placeholder="`${$t('personalCenter.gongdanleixing_placeholder')}`" style="width: 100%">
+                  :placeholder="`${$t('personalCenter.gongdanleixing_placeholder')}`" class="work-input-style" style="width: 100%">
                   <el-option v-for="item in workTypeList" :key="item.value" :label="`${$t(item.label)}`"
                     :value="item.value" />
                 </el-select>
               </el-form-item>
               <el-form-item :label="`${$t('personalCenter.gongdanbiaoti')}`" prop="issueTitle">
                 <el-input v-model="ruleForm.issueTitle"
-                  :placeholder="`${$t('personalCenter.gongdanbiaoti_placeholder')}`" />
+                  :placeholder="`${$t('personalCenter.gongdanbiaoti_placeholder')}`" class="work-input-style" />
               </el-form-item>
               <el-form-item :label="`${$t('personalCenter.gongdanneirong')}`" prop="issueContent">
                 <el-input v-model="ruleForm.issueContent"
-                  :placeholder="`${$t('personalCenter.gongdanneirong_placeholder')}`" :rows="10" type="textarea" />
+                  :placeholder="`${$t('personalCenter.gongdanneirong_placeholder')}`" class="work-input-style" :rows="10" type="textarea" />
               </el-form-item>
             </el-form>
           </template>
@@ -1407,16 +1407,355 @@ onMounted(() => {
 
 /* ===== DIALOGS ===== */
 .personal-dialog {
+  border-radius: 12px;
+  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
+  overflow: hidden;
   .el-dialog__header {
     padding: 24px 24px 0;
+    border-bottom: 1px solid #f0f0f0;
+    background: #fff;
+  }
+  .el-dialog__title {
+    font-size: 18px;
+    font-weight: 600;
+    color: #1f2937;
   }
-  
   .el-dialog__body {
     padding: 24px;
+    max-height: 70vh;
+    overflow-y: auto;
+    overflow-x: hidden;
   }
   
   .el-dialog__footer {
-    padding: 0 24px 24px;
+    padding: 16px 24px;
+    background: #fff;
+    border-top: 1px solid #f0f0f0;
+  }
+}
+
+/* ===== WORK ORDER DIALOG ===== */
+.work-order-dialog {
+  border-radius: 16px;
+  box-shadow: 
+    0 20px 60px rgba(0, 0, 0, 0.3),
+    0 8px 20px rgba(0, 0, 0, 0.2);
+  overflow: hidden;
+  backdrop-filter: blur(20px);
+  -webkit-backdrop-filter: blur(20px);
+  background: rgba(17, 24, 39, 0.95);
+  border: 1px solid rgba(79, 70, 229, 0.2);
+  
+  .el-dialog__header {
+    padding: 24px;
+    border-bottom: 1px solid rgba(79, 70, 229, 0.15);
+    background: rgba(17, 24, 39, 0.5);
+  }
+
+  .el-dialog__title {
+    font-size: 20px;
+    font-weight: 600;
+    color: #F9FAFB;
+    letter-spacing: -0.02em;
+  }
+
+  .el-dialog__body {
+    padding: 24px;
+    max-height: 70vh;
+    overflow-y: auto;
+    overflow-x: hidden;
+    
+    &::-webkit-scrollbar {
+      width: 6px;
+    }
+    
+    &::-webkit-scrollbar-track {
+      background: rgba(255, 255, 255, 0.05);
+      border-radius: 3px;
+    }
+    
+    &::-webkit-scrollbar-thumb {
+      background: rgba(79, 70, 229, 0.3);
+      border-radius: 3px;
+      
+      &:hover {
+        background: rgba(79, 70, 229, 0.5);
+      }
+    }
+  }
+
+  .el-dialog__footer {
+    padding: 20px 24px;
+    background: rgba(17, 24, 39, 0.5);
+    border-top: 1px solid rgba(79, 70, 229, 0.15);
+  }
+  
+  // 工单弹窗表单样式
+  .el-form {
+    :deep(.el-form-item) {
+      margin-bottom: 24px;
+    }
+    
+    :deep(.el-form-item__label) {
+      font-size: 14px;
+      font-weight: 500;
+      color: #ffffff !important;
+      margin-bottom: 8px;
+      line-height: 1.5;
+    }
+  }
+  
+  .el-input,
+  .el-textarea {
+    :deep(.el-input__wrapper),
+    :deep(.el-textarea__inner) {
+      background: rgba(255, 255, 255, 0.08);
+      box-shadow: 
+        0 0 0 1px rgba(79, 70, 229, 0.2) inset,
+        0 2px 8px rgba(0, 0, 0, 0.1);
+      padding: 10px 16px;
+      border-radius: 8px;
+      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+      backdrop-filter: blur(10px);
+      
+      &:hover {
+        box-shadow: 
+          0 0 0 1px rgba(79, 70, 229, 0.3) inset,
+          0 4px 12px rgba(79, 70, 229, 0.15);
+        background: rgba(255, 255, 255, 0.12);
+      }
+      
+      &.is-focus {
+        box-shadow: 
+          0 0 0 2px rgba(79, 70, 229, 0.3),
+          0 0 0 4px rgba(79, 70, 229, 0.1) inset,
+          0 4px 16px rgba(79, 70, 229, 0.2);
+        background: rgba(255, 255, 255, 0.15);
+      }
+    }
+
+    :deep(.el-input__inner),
+    :deep(.el-textarea__inner) {
+      font-size: 14px;
+      font-weight: 400;
+      color: #ffffff !important;
+      
+      &::placeholder {
+        color: #9CA3AF !important;
+      }
+    }
+  }
+  
+  .el-select {
+    :deep(.el-select__wrapper) {
+      background: rgba(255, 255, 255, 0.08);
+      box-shadow: 
+        0 0 0 1px rgba(79, 70, 229, 0.2) inset,
+        0 2px 8px rgba(0, 0, 0, 0.1);
+      padding: 10px 16px;
+      border-radius: 8px;
+      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+      backdrop-filter: blur(10px);
+      
+      &:hover {
+        box-shadow: 
+          0 0 0 1px rgba(79, 70, 229, 0.3) inset,
+          0 4px 12px rgba(79, 70, 229, 0.15);
+        background: rgba(255, 255, 255, 0.12);
+      }
+      
+      &.is-focus {
+        box-shadow: 
+          0 0 0 2px rgba(79, 70, 229, 0.3),
+          0 0 0 4px rgba(79, 70, 229, 0.1) inset,
+          0 4px 16px rgba(79, 70, 229, 0.2);
+        background: rgba(255, 255, 255, 0.15);
+      }
+    }
+    
+    :deep(.el-select__placeholder) {
+      color: #9CA3AF !important;
+    }
+    
+    :deep(.el-select__selected-item) {
+      color: #ffffff !important;
+    }
+  }
+  
+  .el-collapse {
+    border: none;
+    
+    :deep(.el-collapse-item__header) {
+      background: rgba(255, 255, 255, 0.03);
+      border: 1px solid rgba(79, 70, 229, 0.15);
+      border-radius: 8px;
+      padding: 16px 20px;
+      color: #ffffff !important;
+      font-size: 15px;
+      font-weight: 500;
+      margin-bottom: 12px;
+      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+      
+      &:hover {
+        background: rgba(255, 255, 255, 0.05);
+        border-color: rgba(79, 70, 229, 0.25);
+        box-shadow: 0 4px 12px rgba(79, 70, 229, 0.1);
+      }
+      
+      &.is-active {
+        background: rgba(79, 70, 229, 0.08);
+        border-color: rgba(79, 70, 229, 0.3);
+      }
+    }
+    
+    :deep(.el-collapse-item__wrap) {
+      background: rgba(255, 255, 255, 0.02);
+      border: none;
+      border-radius: 0 0 8px 8px;
+      margin-bottom: 12px;
+      overflow: hidden;
+    }
+    
+    :deep(.el-collapse-item__content) {
+      padding: 20px;
+      color: #ffffff !important;
+      font-size: 14px;
+      line-height: 1.6;
+    }
+  }
+  
+  .el-descriptions {
+    :deep(.el-descriptions__header) {
+      margin-bottom: 16px;
+    }
+    
+    :deep(.el-descriptions__label) {
+      background: rgba(79, 70, 229, 0.08);
+      color: #ffffff !important;
+      font-weight: 500;
+      font-size: 14px;
+    }
+    
+    :deep(.el-descriptions__content) {
+      background: rgba(255, 255, 255, 0.02);
+      color: #ffffff !important;
+      font-size: 14px;
+    }
+    
+    :deep(.el-descriptions__cell) {
+      border-color: rgba(79, 70, 229, 0.15);
+    }
+  }
+  
+  .cell-item {
+    color: #ffffff !important;
+    font-weight: 500;
+    font-size: 14px;
+  }
+  
+  .el-tag {
+    background: rgba(79, 70, 229, 0.15);
+    border: 1px solid rgba(79, 70, 229, 0.3);
+    color: #818CF8;
+    border-radius: 6px;
+    padding: 4px 12px;
+    font-size: 13px;
+    font-weight: 500;
+    
+    &.el-tag--success {
+      background: rgba(16, 185, 129, 0.15);
+      border-color: rgba(16, 185, 129, 0.3);
+      color: #34D399;
+    }
+    
+    &.el-tag--primary {
+      background: rgba(79, 70, 229, 0.15);
+      border-color: rgba(79, 70, 229, 0.3);
+      color: #818CF8;
+    }
+  }
+  
+  .el-tabs {
+    :deep(.el-tabs__header) {
+      margin: 0 0 24px;
+      border-bottom: 1px solid rgba(79, 70, 229, 0.15);
+    }
+    
+    :deep(.el-tabs__nav-wrap::after) {
+      display: none;
+    }
+    
+    :deep(.el-tabs__item) {
+      color: #9CA3AF;
+      font-size: 15px;
+      font-weight: 500;
+      padding: 0 20px;
+      height: 44px;
+      line-height: 44px;
+      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+      
+      &:hover {
+        color: #F9FAFB;
+      }
+      
+      &.is-active {
+        color: #4F46E5;
+        font-weight: 600;
+      }
+    }
+    
+    :deep(.el-tabs__active-bar) {
+      background: linear-gradient(90deg, #4F46E5, #7C3AED);
+      height: 3px;
+      border-radius: 2px;
+    }
+  }
+  
+  .dialog-footer {
+    display: flex;
+    gap: 12px;
+    justify-content: flex-end;
+    
+    .el-button {
+      padding: 10px 24px;
+      border-radius: 8px;
+      font-size: 14px;
+      font-weight: 500;
+      transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
+      backdrop-filter: blur(10px);
+      
+      &:not(.gradient) {
+        background: rgba(255, 255, 255, 0.05);
+        border: 1px solid rgba(79, 70, 229, 0.3);
+        color: #F9FAFB;
+        
+        &:hover {
+          background: rgba(255, 255, 255, 0.1);
+          border-color: rgba(79, 70, 229, 0.5);
+          box-shadow: 0 4px 12px rgba(79, 70, 229, 0.2);
+        }
+      }
+    }
+    
+    .gradient {
+      background: linear-gradient(135deg, #4F46E5, #7C3AED);
+      border: none;
+      color: white;
+      box-shadow: 
+        0 4px 12px rgba(79, 70, 229, 0.4),
+        0 2px 4px rgba(0, 0, 0, 0.1);
+      
+      &:hover {
+        transform: translateY(-2px);
+        box-shadow: 
+          0 6px 16px rgba(79, 70, 229, 0.5),
+          0 4px 8px rgba(0, 0, 0, 0.15);
+      }
+      
+      &:active {
+        transform: translateY(0);
+      }
+    }
   }
 }
 
@@ -1494,10 +1833,10 @@ onMounted(() => {
 }
 
 .personal-tag {
-  background: rgba(79, 70, 229, 0.1);
-  color: #4f46e5;
-  border: none;
-  border-radius: 12px;
+  background: #ecf5ff;
+  color: #409eff;
+  border: 1px solid #d9ecff;
+  border-radius: 4px;
   padding: 6px 12px;
   font-size: 13px;
   font-weight: 600;
@@ -1715,4 +2054,77 @@ onMounted(() => {
     display: none;
   }
 }
+.inputStyle,
+.work-input-style {
+  :deep(.el-input__wrapper) {
+    background-color: #fff;
+    box-shadow: 0 0 0 1px #dcdfe6 inset !important;
+    padding: 8px 15px;
+    border-radius: 6px;
+    transition: all 0.3s ease;
+    
+    &:hover {
+      box-shadow: 0 0 0 1px #c0c4cc inset !important;
+    }
+    
+    &.is-focus {
+      box-shadow: 0 0 0 1px #409eff inset !important;
+    }
+  }
+
+  :deep(.el-input__inner) {
+    font-size: 14px;
+    font-weight: 400;
+    color: #606266;
+  }
+}
+.el-form-item {
+  margin-bottom: 20px;
+  
+  :deep(.el-form-item__label) {
+    font-size: 14px;
+    font-weight: 500;
+    color: #606266;
+    margin-bottom: 8px;
+    line-height: 1.5;
+  }
+}
+.el-tag {
+  background: #ecf5ff;
+  color: #409eff;
+  border: 1px solid #d9ecff;
+  border-radius: 4px;
+  padding: 6px 12px;
+  font-size: 13px;
+  font-weight: 600;
+}
+.dialog-footer {
+  display: flex;
+  gap: 12px;
+  justify-content: flex-end;
+  
+  .el-button {
+    padding: 10px 20px;
+    border-radius: 4px;
+    font-size: 14px;
+    font-weight: 400;
+    transition: all 0.3s ease;
+  }
+  
+  .gradient {
+    background: linear-gradient(135deg, #4f46e5, #7c3aed);
+    border: none;
+    color: white;
+    
+    &:hover {
+      opacity: 0.9;
+    }
+  }
+}
+.countdown-btn {
+  background: #f5f7fa !important;
+  color: #909399 !important;
+  border-color: #dcdfe6 !important;
+  cursor: not-allowed;
+}
 </style>