liuqiwen пре 1 недеља
родитељ
комит
02bc5076b7

+ 3 - 1
src/pages/LearningSystem/CourseDetail.vue

@@ -346,7 +346,9 @@ const signIn = async () => {
   min-height: 100vh;
   background: #f8faff;
 }
-
+.container{
+  padding: 20px;
+}
 /* ===== HERO SECTION ===== */
 .cd-hero {
   position: relative;

+ 1 - 0
src/pages/LearningSystem/LearningSystemDetail.vue

@@ -276,6 +276,7 @@ const goDetail = (item) => {
 
 .container{
   min-width: auto;
+  padding: 20px;
 }
 
 /* ===== HERO SECTION ===== */

Разлика између датотеке није приказан због своје велике величине
+ 1045 - 292
src/pages/Personal/Wallet.vue


Разлика између датотеке није приказан због своје велике величине
+ 852 - 297
src/pages/PersonalCenter.vue


+ 1 - 0
src/pages/SearchPlatform.vue

@@ -214,6 +214,7 @@
   }
 }
 .search-platform {
+  padding: 20px;
   .search-platform-top{
     padding: 12px 12px 0 12px;
   }

+ 757 - 20
src/pages/order/orderConfirm.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="orderConfirm container-height">
+  <div class="orderConfirm">
     <!-- <Breadcrumb /> -->
     <el-button class="mt20 mb20" @click="router.back()">
       <el-icon><ArrowLeft /></el-icon>
@@ -150,11 +150,12 @@
         <div class="font_size18">{{$t('orderConfirm.payAmount')}}:</div>
         <div class="font_size24 bold color_price">¥{{orderInfo.orderAmt}}</div>
       </div>
-      <div style="display: inline-block;" class="mt20" @click="payNowFn" v-loading="loading">
-        <div class="gap5 gradient border_radius_4 cursor-pointer zhifu">
-          <img :src="qianbaoIcon" alt="" style="width:16px;height:16px">
-          <div>{{$t('common.payNow')}}</div>
-        </div>
+      <div class="wta-actions mt24">
+        <button class="wta-btn-primary" @click="payNowFn" :disabled="loading" :class="{ 'wta-btn--loading': loading }">
+          <span v-if="loading" class="wta-btn-spinner"></span>
+          <svg v-else width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>
+          <span>{{$t('common.payNow')}}</span>
+        </button>
       </div>
       <!-- 支付二维码 -->
       <div class="payment-qrcode mt20">
@@ -424,26 +425,762 @@ const payConfigDearchFn = () => {
 
 </script>
 <style scoped lang="scss">
-.orderConfirm{
-  .order_table{
-    background-color: #F5F7FA ;
+.orderConfirm {
+  min-height: 100vh;
+  background: linear-gradient(160deg, #eef2ff 0%, #ede9fe 28%, #e8e4ff 52%, #f3e8ff 72%, #fce7f3 100%);
+  padding: 20px 20px 150px;
+}
+
+// 容器
+.container {
+  max-width: 1200px;
+  margin: 0 auto;
+  padding: 0 20px;
+}
+
+// 面包屑
+.wta-hero__breadcrumb-wrap {
+  padding: 24px 0;
+}
+
+// 主内容
+.wta-body {
+  padding-bottom: 48px;
+}
+
+// 页面头部
+.wta-header {
+  margin-bottom: 32px;
+  
+  .wta-back-btn {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+    margin-bottom: 16px;
+    background: #ffffff;
+    border: 1px solid #e5e7eb;
+    color: #374151;
+    border-radius: 8px;
+    padding: 8px 16px;
+    transition: all 0.3s ease;
+    
+    &:hover {
+      background: #f9fafb;
+      border-color: #d1d5db;
+    }
+  }
+  
+  .wta-title {
+    font-size: 28px;
+    font-weight: 700;
+    color: #111827;
+    margin-bottom: 8px;
+  }
+  
+  .wta-subtitle {
+    font-size: 16px;
+    color: #6b7280;
+  }
+}
+
+// 卡片样式
+.wta-card {
+  background: #ffffff;
+  border: 1px solid #e5e7eb;
+  border-radius: 12px;
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
+  overflow: hidden;
+  transition: all 0.3s ease;
+  
+  &:hover {
+    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05);
+  }
+  
+  &__header {
+    display: flex;
+    align-items: center;
+    gap: 12px;
+    padding: 20px 24px;
+    border-bottom: 1px solid #e5e7eb;
+    
+    &-icon {
+      width: 40px;
+      height: 40px;
+      border-radius: 8px;
+      background: linear-gradient(135deg, #6366f1, #a855f7);
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      color: white;
+      flex-shrink: 0;
+      
+      &--purple {
+        background: linear-gradient(135deg, #a855f7, #d946ef);
+      }
+      
+      &--green {
+        background: linear-gradient(135deg, #10b981, #34d399);
+      }
+    }
+    
+    &-title {
+      font-size: 18px;
+      font-weight: 600;
+      color: #111827;
+    }
+    
+    &-subtitle {
+      font-size: 14px;
+      color: #6b7280;
+      margin-top: 4px;
+    }
+  }
+  
+  &__body {
+    padding: 24px;
+  }
+}
+
+// 订单头部
+.wta-order-header {
+  display: grid;
+  grid-template-columns: repeat(3, 1fr);
+  gap: 16px;
+  padding-bottom: 16px;
+  border-bottom: 1px solid #e5e7eb;
+  
+  &__item {
+    font-size: 14px;
+    font-weight: 500;
+    color: #6b7280;
+    text-align: center;
+  }
+}
+
+// 订单内容
+.wta-order-content {
+  display: grid;
+  grid-template-columns: repeat(3, 1fr);
+  gap: 24px;
+  margin-top: 24px;
+}
+
+// 订单类型选择
+.wta-order-type {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+  
+  &__item {
+    display: flex;
+    align-items: center;
+    gap: 12px;
+    padding: 16px;
+    background: #f9fafb;
+    border: 1px solid #e5e7eb;
+    border-radius: 8px;
+    cursor: pointer;
+    transition: all 0.3s ease;
+    
+    &:hover {
+      background: #f3f4f6;
+    }
+    
+    &--active {
+      background: #eef2ff;
+      border-color: #c7d2fe;
+      
+      .wta-order-type__radio {
+        border-color: #6366f1;
+        background: #6366f1;
+        
+        &::after {
+          opacity: 1;
+        }
+      }
+    }
   }
-  .payway{
-    padding: 20px 16px;
-    background-color: #F5F7FA ;
+  
+  &__radio {
+    width: 20px;
+    height: 20px;
+    border: 2px solid #d1d5db;
+    border-radius: 50%;
+    position: relative;
+    transition: all 0.3s ease;
+    
+    &::after {
+      content: '';
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 10px;
+      height: 10px;
+      border-radius: 50%;
+      background: white;
+      opacity: 0;
+      transition: all 0.3s ease;
+    }
+  }
+  
+  &__text {
+    font-size: 14px;
+    color: #111827;
+  }
+}
+
+// 输入框包装器
+.wta-input-wrap {
+  position: relative;
+  background: #ffffff;
+  border: 1px solid #e5e7eb;
+  border-radius: 8px;
+  transition: all 0.3s ease;
+  
+  &:hover {
+    border-color: #d1d5db;
+  }
+}
+
+// 输入框样式
+.wta-input {
+  background: transparent !important;
+  border: none !important;
+  color: #111827 !important;
+  height: 44px;
+  line-height: 44px;
+  width: 100%;
+  
+  &::placeholder {
+    color: #9ca3af !important;
+  }
+  
+  &--has-prefix {
+    padding-left: 44px !important;
+  }
+}
+
+// 输入框前缀图标
+.wta-input-prefix-icon {
+  position: absolute;
+  left: 12px;
+  top: 50%;
+  transform: translateY(-50%);
+  color: #9ca3af;
+  transition: color 0.3s ease;
+  
+  .wta-input-wrap:hover & {
+    color: #6366f1;
+  }
+}
+
+// 字段提示
+.wta-field-hint {
+  margin-top: 8px;
+  font-size: 14px;
+  color: #6366f1;
+}
+
+// 订单数量
+.wta-order-quantity {
+  font-size: 16px;
+  font-weight: 500;
+  color: #111827;
+}
+
+// 支付类型选择
+.wta-pay-type {
+  display: flex;
+  gap: 16px;
+  
+  &__item {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    gap: 12px;
+    padding: 16px;
+    background: #f9fafb;
+    border: 1px solid #e5e7eb;
     border-radius: 8px;
     cursor: pointer;
-    &.active{
-      background-color: #EAF0FF;
-      .checkType{
-        border:4px solid $primary-color;
+    transition: all 0.3s ease;
+    
+    &:hover {
+      background: #f3f4f6;
+    }
+    
+    &--active {
+      background: #eef2ff;
+      border-color: #c7d2fe;
+      
+      .wta-pay-type__radio {
+        border-color: #6366f1;
+        background: #6366f1;
+        
+        &::after {
+          opacity: 1;
+        }
+      }
+    }
+  }
+  
+  &__radio {
+    width: 20px;
+    height: 20px;
+    border: 2px solid #d1d5db;
+    border-radius: 50%;
+    position: relative;
+    transition: all 0.3s ease;
+    
+    &::after {
+      content: '';
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 10px;
+      height: 10px;
+      border-radius: 50%;
+      background: white;
+      opacity: 0;
+      transition: all 0.3s ease;
+    }
+  }
+  
+  &__text {
+    font-size: 14px;
+    color: #111827;
+  }
+}
+
+// 支付方式选择
+.wta-pay-methods {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 16px;
+}
+
+// 支付方式项
+.wta-pay-method {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  padding: 16px;
+  background: #f9fafb;
+  border: 1px solid #e5e7eb;
+  border-radius: 8px;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  
+  &:hover {
+    background: #f3f4f6;
+  }
+  
+  &--active {
+    background: #eef2ff;
+    border-color: #c7d2fe;
+    
+    .wta-pay-method__radio {
+      border-color: #6366f1;
+      background: #6366f1;
+      
+      &::after {
+        opacity: 1;
+      }
+    }
+  }
+  
+  &__radio {
+    width: 20px;
+    height: 20px;
+    border: 2px solid #d1d5db;
+    border-radius: 50%;
+    position: relative;
+    transition: all 0.3s ease;
+    
+    &::after {
+      content: '';
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      width: 10px;
+      height: 10px;
+      border-radius: 50%;
+      background: white;
+      opacity: 0;
+      transition: all 0.3s ease;
+    }
+  }
+  
+  &__icon {
+    width: 40px;
+    height: 40px;
+  }
+  
+  &__text {
+    font-size: 14px;
+    color: #111827;
+  }
+}
+
+// 对公账户信息
+.wta-bank-transfer {
+  
+  .wta-bank-account {
+    background: #f9fafb;
+    border: 1px solid #e5e7eb;
+    border-radius: 8px;
+    padding: 20px;
+    
+    &__item {
+      display: flex;
+      align-items: center;
+      gap: 12px;
+      margin-bottom: 12px;
+      
+      &:last-child {
+        margin-bottom: 0;
       }
+      
+      &-label {
+        font-size: 14px;
+        color: #6b7280;
+        min-width: 80px;
+      }
+      
+      &-value {
+        font-size: 14px;
+        color: #111827;
+        word-break: break-all;
+      }
+    }
+  }
+}
+
+// 上传区域
+.wta-upload-section {
+  
+  .wta-field-label {
+    display: flex;
+    align-items: center;
+    gap: 6px;
+    
+    .wta-required {
+      color: #ef4444;
+    }
+    
+    .wta-label-text {
+      font-size: 14px;
+      font-weight: 500;
+      color: #111827;
+    }
+  }
+  
+  .wta-upload-area {
+    margin-top: 12px;
+  }
+}
+
+// 订单汇总
+.wta-order-summary {
+  background: #f9fafb;
+  border: 1px solid #e5e7eb;
+  border-radius: 8px;
+  padding: 20px;
+  
+  &__row {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    
+    &-label {
+      font-size: 14px;
+      color: #6b7280;
+    }
+    
+    &-value {
+      font-size: 14px;
+      color: #111827;
+    }
+  }
+  
+  &__total {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-top: 12px;
+    padding-top: 12px;
+    border-top: 1px solid #e5e7eb;
+    
+    &-label {
+      font-size: 16px;
+      font-weight: 500;
+      color: #111827;
+    }
+    
+    &-value {
+      font-size: 20px;
+      font-weight: 700;
+      color: #6366f1;
+    }
+  }
+}
+
+// 操作按钮
+.wta-actions {
+  display: flex;
+  justify-content: flex-end;
+  gap: 12px;
+}
+
+// 主要按钮
+.wta-btn-primary {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  background: linear-gradient(90deg, #6366f1, #a855f7);
+  border: none;
+  color: white;
+  border-radius: 8px;
+  padding: 12px 24px;
+  font-size: 14px;
+  font-weight: 500;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  position: relative;
+  overflow: hidden;
+  
+  &:hover {
+    opacity: 0.9;
+    box-shadow: 0 4px 16px rgba(99, 102, 241, 0.3);
+  }
+  
+  &:disabled {
+    opacity: 0.6;
+    cursor: not-allowed;
+  }
+  
+  &--loading {
+    cursor: not-allowed;
+  }
+  
+  .wta-btn-spinner {
+    width: 16px;
+    height: 16px;
+    border: 2px solid rgba(255, 255, 255, 0.3);
+    border-top-color: white;
+    border-radius: 50%;
+    animation: spin 1s linear infinite;
+  }
+  
+  @keyframes spin {
+    to {
+      transform: rotate(360deg);
+    }
+  }
+}
+
+// 支付二维码
+.wta-payment-qrcode {
+  background: #f9fafb;
+  border: 1px solid #e5e7eb;
+  border-radius: 8px;
+  padding: 20px;
+  
+  &__title {
+    font-size: 16px;
+    font-weight: 500;
+    color: #111827;
+    margin-bottom: 16px;
+    text-align: center;
+  }
+  
+  &__content {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    min-height: 200px;
+  }
+  
+  &__image {
+    width: 200px;
+    height: 200px;
+    border-radius: 8px;
+  }
+  
+  &__iframe {
+    width: 200px;
+    height: 200px;
+    border-radius: 8px;
+    
+    &--full {
+      width: 100%;
+      height: 400px;
+    }
+  }
+  
+  &__paypal {
+    width: 100%;
+    min-height: 200px;
+  }
+}
+
+// 协议同意
+.wta-agreement {
+  display: flex;
+  align-items: flex-start;
+  gap: 12px;
+  
+  &__checkbox {
+    width: 20px;
+    height: 20px;
+    border: 2px solid #d1d5db;
+    border-radius: 4px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+    transition: all 0.3s ease;
+    flex-shrink: 0;
+    margin-top: 2px;
+    
+    &--checked {
+      background: #6366f1;
+      border-color: #6366f1;
+    }
+  }
+  
+  &__text {
+    font-size: 14px;
+    color: #6b7280;
+    line-height: 1.5;
+  }
+  
+  &__link {
+    color: #6366f1;
+    font-weight: 500;
+    cursor: pointer;
+    transition: color 0.3s ease;
+    
+    &:hover {
+      color: #818cf8;
+      text-decoration: underline;
+    }
+  }
+}
+
+// 响应式设计
+@media (max-width: 768px) {
+  .orderConfirm {
+    padding: 10px;
+  }
+  
+  .container {
+    padding: 0 10px;
+  }
+  
+  .wta-order-content {
+    grid-template-columns: 1fr;
+  }
+  
+  .wta-pay-methods {
+    grid-template-columns: 1fr;
+  }
+  
+  .wta-pay-type {
+    flex-direction: column;
+  }
+  
+  .wta-order-header {
+    grid-template-columns: 1fr;
+    gap: 8px;
+  }
+  
+  .wta-actions {
+    justify-content: center;
+  }
+}
+.wta-actions {
+  display: flex;
+  justify-content: flex-end;
+  gap: 12px;
+}
+
+// 主要按钮
+.wta-btn-primary {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  background: linear-gradient(90deg, #6366f1, #a855f7);
+  border: none;
+  color: white;
+  border-radius: 8px;
+  padding: 14px 28px;
+  font-size: 16px;
+  font-weight: 600;
+  cursor: pointer;
+  transition: all 0.3s ease;
+  position: relative;
+  overflow: hidden;
+  box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3);
+  
+  &:hover {
+    opacity: 0.95;
+    box-shadow: 0 6px 20px rgba(99, 102, 241, 0.4);
+    transform: translateY(-2px);
+  }
+  
+  &:active {
+    transform: translateY(0);
+    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.3);
+  }
+  
+  &:disabled {
+    opacity: 0.6;
+    cursor: not-allowed;
+    transform: none;
+    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.2);
+  }
+  
+  &--loading {
+    cursor: not-allowed;
+  }
+  
+  .wta-btn-spinner {
+    width: 18px;
+    height: 18px;
+    border: 2px solid rgba(255, 255, 255, 0.3);
+    border-top-color: white;
+    border-radius: 50%;
+    animation: spin 1s linear infinite;
+  }
+  
+  svg {
+    transition: transform 0.3s ease;
+  }
+  
+  &:hover svg {
+    transform: translateX(2px);
+  }
+  
+  @keyframes spin {
+    to {
+      transform: rotate(360deg);
     }
   }
-  .zhifu{
-    padding: 10px 20px;
-    color: #ffffff;
-    border-radius: 10px;
+}
+
+// 响应式设计
+@media (max-width: 768px) {
+  .wta-actions {
+    justify-content: center;
+  }
+  
+  .wta-btn-primary {
+    padding: 12px 24px;
+    font-size: 14px;
   }
 }
 </style>