From bbf6d337c9641c0d1bf2c57f05310e59c104990b Mon Sep 17 00:00:00 2001
From: jhzh <1628036192@qq.com>
Date: Fri, 29 May 2026 15:04:43 +0800
Subject: [PATCH] 1

---
 src/views/cryptos/Recharge/rechargeDetail.vue              |    2 
 src/components/Transform/perpetual-position-list/index.vue |    2 
 src/views/my/index.vue                                     |   24 +++-
 src/views/login/index.vue                                  |   13 +-
 src/views/cryptos/AccountChange/index.vue                  |    2 
 .env                                                       |    2 
 src/views/cryptos/PerpetualContract/orderDetail.vue        |   31 +++++
 relicon.png                                                |    0 
 src/i18n/en.js                                             |   12 +-
 src/i18n/zhcn.js                                           |    2 
 src/components/Transform/entrust-item/index.vue            |   17 ++-
 src/views/authentication/index.vue                         |    9 +
 yarn.lock                                                  |   11 -
 index.html                                                 |    2 
 src/config/index.js                                        |    6 
 src/assets/imgs/logo.png                                   |    0 
 src/views/customerService/index.vue                        |    4 
 src/views/register/index.vue                               |   32 +++--
 src/components/Transform/perpetual-open/index.vue          |  122 ++++++++---------------
 19 files changed, 155 insertions(+), 138 deletions(-)

diff --git a/.env b/.env
index 2f60deb..8e21efe 100644
--- a/.env
+++ b/.env
@@ -1,2 +1,2 @@
-VITE_APP__TITLE = "Orion X"
+VITE_APP__TITLE = "Bitx"
 VUE_APP_THEME = "dark"
\ No newline at end of file
diff --git a/index.html b/index.html
index e40931f..663716e 100644
--- a/index.html
+++ b/index.html
@@ -11,7 +11,7 @@
   <meta name="theme-color" content="#131a2e">
   <meta name="apple-mobile-web-app-status-bar-style" content="#131a2e" />
   <link rel="apple-touch-icon" href="./public/img/App.png">
-  <title>Orion X</title>
+  <title>Bitx</title>
 </head>
 
 <body>
diff --git a/relicon.png b/relicon.png
index 60ffd13..d5a50f5 100644
--- a/relicon.png
+++ b/relicon.png
Binary files differ
diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png
index 60ffd13..d460224 100644
--- a/src/assets/imgs/logo.png
+++ b/src/assets/imgs/logo.png
Binary files differ
diff --git a/src/components/Transform/entrust-item/index.vue b/src/components/Transform/entrust-item/index.vue
index 7c10f71..4ce7c51 100644
--- a/src/components/Transform/entrust-item/index.vue
+++ b/src/components/Transform/entrust-item/index.vue
@@ -10,7 +10,7 @@
         </div>
       </div>
       <div class="text-grey font-26 flex flex-col justify-between">
-        {{ entrust.create_time_ts ? dayjs(entrust.create_time_ts * 1000).format('YYYY-MM-DD HH:mm:ss') : '--' }}
+        {{ entrust.create_time ? entrust.create_time : '--' }}
       </div>
     </div>
     <div class="flex justify-between pb-34">
@@ -41,13 +41,16 @@
       <div class="btn-wrap mt-64">
         <button class="detailBtn order-btn text-blue  h-54 lh-54 " @click.stop="goDetail(entrust.order_no)">
           {{ $t('详情') }}</button>
-        <button v-if="state == 'submitted'" class="ml-19 order-btn border-none h-54 lh-54 cancel-btn yellow-bg textColor"
+        <button v-if="state == 'submitted'"
+          class="ml-19 order-btn border-none h-54 lh-54 cancel-btn yellow-bg textColor"
           @click.stop="cancelSingle(entrust.order_no)">
           {{ $t('撤单') }}</button>
-        <button v-if="state == 'created'" class="ml-19 order-btn border-none h-54 lh-54 cancel-btn textColor yellow-bg">{{
-          $t('已完成') }}</button>
-        <button v-if="state == 'canceled'" class="ml-19 order-btn border-none h-54 lh-54 cancel-btn yellow-bg textColor">{{
-          $t('canceled') }}</button>
+        <button v-if="state == 'created'"
+          class="ml-19 order-btn border-none h-54 lh-54 cancel-btn textColor yellow-bg">{{
+            $t('已完成') }}</button>
+        <button v-if="state == 'canceled'"
+          class="ml-19 order-btn border-none h-54 lh-54 cancel-btn yellow-bg textColor">{{
+            $t('canceled') }}</button>
       </div>
     </div>
   </div>
@@ -97,7 +100,7 @@
   }
 }
 </script>
-<style lang="scss"  scoped>
+<style lang="scss" scoped>
 @import "@/assets/init.scss";
 
 #cryptos {
diff --git a/src/components/Transform/perpetual-open/index.vue b/src/components/Transform/perpetual-open/index.vue
index aa76ecb..160f4f6 100644
--- a/src/components/Transform/perpetual-open/index.vue
+++ b/src/components/Transform/perpetual-open/index.vue
@@ -364,19 +364,9 @@
             <div class="lever-popup-seg-item lever-popup-seg-right" :class="{ 'lever-popup-seg-active': leverPopupMargin === 0 }"
               @click="leverPopupMargin = 0">Part</div>
           </div>
-          <div class="lever-popup-row">
-            <div class="lever-popup-btn lever-popup-btn-minus" @click="leverPopupValue = Math.max(1, (leverPopupValue || 1) - 1)">−</div>
-            <input v-model.number="leverPopupValue" type="number" class="lever-popup-input" min="1" :max="maxLever"
-              @input="onLeverInput" />
-            <div class="lever-popup-btn lever-popup-btn-plus" @click="leverPopupValue = Math.min(maxLever, (leverPopupValue || 1) + 1)">+</div>
-          </div>
-          <div class="lever-popup-slider-wrap">
-            <span class="lever-popup-slider-label">1X</span>
-            <div class="lever-popup-slider-inner">
-              <van-slider v-model="leverPopupValue" :min="1" :max="maxLever" :step="1" class="lever-popup-slider"
-                bar-height="6px" active-color="#7c3aed" />
-            </div>
-            <span class="lever-popup-slider-label">{{ maxLever }}X</span>
+          <div class="lever-popup-presets">
+            <div v-for="lv in leverPresetList" :key="lv" class="lever-popup-preset-item"
+              :class="{ 'lever-popup-preset-active': leverPopupValue === lv }" @click="leverPopupValue = lv">{{ lv }}X</div>
           </div>
           <div class="lever-popup-confirm" @click="confirmLeverPopup">Confirm</div>
         </div>
@@ -566,7 +556,7 @@
       return max
     },
     maxLever() {
-      return 100 // 杠杆倍率固定 1~100,不从接口获取
+      return Math.max(...this.leverPresetList)
     },
     leverDisplayMode() {
       return this.locationVal === 1 ? 'Cross' : 'Part'
@@ -636,6 +626,7 @@
       locationTitle: this.$t('全仓'),
       locationVal: 1,
       showLeverPopup: false,
+      leverPresetList: [30, 50, 100, 200, 300],
       leverPopupValue: 100,
       leverPopupMargin: 1, // 1=全仓 Cross, 0=逐仓 Part
     }
@@ -816,7 +807,7 @@
     },
     handleChoose(item) {
       this.showOptions = !this.showOptions
-      this.form.lever_rate = item.lever_rate
+      this.form.lever_rate = this.snapLeverToPreset(item.lever_rate)
       console.log('handleChoose')
       this.handleInitSliderOption()
     },
@@ -873,24 +864,32 @@
       this.locationShow = false;
     },
     openLeverPopup() {
-      this.leverPopupValue = this.form.lever_rate || 1;
+      this.leverPopupValue = this.snapLeverToPreset(this.form.lever_rate);
       this.leverPopupMargin = this.locationVal !== undefined ? this.locationVal : 1;
       this.showLeverPopup = true;
     },
-    onLeverInput() {
-      let v = parseInt(this.leverPopupValue, 10);
-      if (isNaN(v) || v < 1) this.leverPopupValue = 1;
-      else if (v > this.maxLever) this.leverPopupValue = this.maxLever;
-      else this.leverPopupValue = v;
+    snapLeverToPreset(v) {
+      const list = this.leverPresetList;
+      const n = parseInt(v, 10);
+      if (isNaN(n) || n <= 0) return 100;
+      if (list.includes(n)) return n;
+      let best = list[0];
+      let bestD = Infinity;
+      for (const x of list) {
+        const d = Math.abs(x - n);
+        if (d < bestD || (d === bestD && x < best)) {
+          bestD = d;
+          best = x;
+        }
+      }
+      return best;
     },
     onLeverPopupClosed() {
-      this.leverPopupValue = this.form.lever_rate || 1;
+      this.leverPopupValue = this.snapLeverToPreset(this.form.lever_rate);
       this.leverPopupMargin = this.locationVal !== undefined ? this.locationVal : 1;
     },
     confirmLeverPopup() {
-      let val = parseInt(this.leverPopupValue, 10);
-      if (isNaN(val) || val < 1) val = 1;
-      if (val > this.maxLever) val = this.maxLever;
+      const val = this.snapLeverToPreset(this.leverPopupValue);
       this.form.lever_rate = val;
       this.locationVal = this.leverPopupMargin;
       this.locationTitle = this.leverPopupMargin === 1 ? this.$t('全仓') : this.$t('逐仓');
@@ -1461,66 +1460,33 @@
   font-weight: 600;
   box-shadow: 0 1px 6px rgba(0,0,0,0.06);
 }
-.lever-popup-row {
-  display: flex;
-  align-items: stretch;
+.lever-popup-presets {
   margin-top: 30px;
-  border-radius: 15px;
-  overflow: hidden;
-  border: 1px solid #eee;
-}
-.lever-popup-btn {
-  width: 78px;
-  min-width: 78px;
-  background: #f7f7f7;
   display: flex;
-  align-items: center;
-  justify-content: center;
-  font-size: 43px;
-  color: #333;
-  cursor: pointer;
-  font-weight: 400;
+  flex-wrap: wrap;
+  gap: 18px;
+  justify-content: flex-start;
 }
-.lever-popup-btn-minus { border-radius: 15px 0 0 15px; }
-.lever-popup-btn-plus { border-radius: 0 15px 15px 0; }
-.lever-popup-input {
-  flex: 1;
-  min-width: 0;
+.lever-popup-preset-item {
+  flex: 1 1 calc(33.33% - 12px);
+  min-width: calc(33.33% - 12px);
+  box-sizing: border-box;
+  padding: 21px 12px;
   text-align: center;
-  border: none;
-  font-size: 35px;
+  font-size: 30px;
   font-weight: 600;
+  color: #868e9a;
+  background: #f7f7f7;
+  border-radius: 15px;
+  border: 2px solid transparent;
+  cursor: pointer;
+  transition: background 0.2s, color 0.2s, border-color 0.2s;
+}
+.lever-popup-preset-item.lever-popup-preset-active {
   color: #1e1e1e;
   background: #fff;
-  padding: 21px 12px;
-}
-.lever-popup-input:focus { outline: none; }
-.lever-popup-slider-wrap {
-  margin-top: 36px;
-  display: flex;
-  align-items: center;
-  gap: 18px;
-}
-.lever-popup-slider-label {
-  font-size: 23px;
-  color: #868e9a;
-  flex-shrink: 0;
-}
-.lever-popup-slider-inner {
-  flex: 1;
-  min-width: 0;
-}
-.lever-popup-slider :deep(.van-slider__bar) {
-  height: 6px;
-  background: linear-gradient(90deg, #7c3aed 0%, #5b21b6 100%) !important;
-  border-radius: 3px;
-}
-.lever-popup-slider :deep(.van-slider__button) {
-  width: 30px;
-  height: 30px;
-  background: #666;
-  border: none;
-  box-shadow: 0 1px 4px rgba(0,0,0,0.2);
+  border-color: #7c3aed;
+  box-shadow: 0 1px 8px rgba(124, 58, 237, 0.15);
 }
 .lever-popup-confirm {
   margin-top: 42px;
diff --git a/src/components/Transform/perpetual-position-list/index.vue b/src/components/Transform/perpetual-position-list/index.vue
index e494a52..8568ef6 100644
--- a/src/components/Transform/perpetual-position-list/index.vue
+++ b/src/components/Transform/perpetual-position-list/index.vue
@@ -46,7 +46,7 @@
         </div>
         <div class="flex-1 text-right">
           <div class="text-grey">{{ $t('Margin Ratio') || 'Margin Ratio' }}</div>
-          <div class="mt-12 textColor">{{ item.margin_ratio != null ? item.margin_ratio + '%' : '-' }}</div>
+          <div class="mt-12 textColor">{{ item.change_ratio != null ? item.change_ratio + '%' : '-' }}</div>
         </div>
       </div>
       <!-- Entry Price / Mark Price / Liq. Price -->
diff --git a/src/config/index.js b/src/config/index.js
index 0b3acb3..10825a2 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -35,12 +35,12 @@
 
 // const ENV_DEV = 'zhapi.coinbtcs.com' // dev
 // const ENV_DEV = 'openapi.yanshiz.com' // dev
-const ENV_DEV = 'api.orionx.cyou' // dev
+const ENV_DEV = 'api.bitxworld.com' // dev
 // const ENV_DEV = '192.168.10.6:8086' // dev
 
 // const ENV_PRO = 'qheufhj.site' //  app域名
 // const ENV_PRO = window.location.hostname // 接口域名跟随 H5zhapi.coinbtcs.com
-const ENV_PRO = 'api.orionx.cyou' // 接口域名跟随 H5zhapi.coinbtcs.com
+const ENV_PRO = 'api.bitxworld.com' // 接口域名跟随 H5zhapi.coinbtcs.com
 // const ENV_PRO = '192.168.10.6:8086' // 接口域名跟随 H5zhapi.coinbtcs.com
 
 let base_url = ''
@@ -56,7 +56,7 @@
     ws_url = 'wss://' + ENV_PRO + '/api/websocket'
 }
 
-let imgUrl = 'https://img.orionx.cyou' // 暂时的 单独的图片地址
+let imgUrl = 'https://img.bitxworld.com' // 暂时的 单独的图片地址
 
 export const BASE_URL = base_url
 export const WS_URL = ws_url
diff --git a/src/i18n/en.js b/src/i18n/en.js
index 6f4b606..416c020 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -187,9 +187,9 @@
     setLanguage: "Set Language",
     quotes: "Quote",
     chart: "Chart",
-    trade: "Trade",
+    trade: "Contract",
     history: "History",
-    my: "My",
+    my: "Assets",
     welcome: "Welcome",
     notCertified: "Not Certified",
     verified: "Verified",
@@ -1842,7 +1842,7 @@
     "质押挖矿、DeFi等": "Staking Mining、Defi etc",
     "24H量": "24h vol",
     "推广总人数:": "Total referral",
-    "永续": "Perpetual",
+    "永续": "Contract",
     "全仓": "Cross",
     "开仓": "Open",
     "平仓": "Close",
@@ -2115,7 +2115,7 @@
     "账变记录": "Record",
     "选择账户类型": "Select account type",
     "查询": "Search",
-    "永续合约": "Perpetual",
+    "永续合约": "Contract",
     "交割合约": "Delivery",
     "最新价格": "Last price",
     "24h最高价": "24h High",
@@ -2900,12 +2900,14 @@
     "订金": "Deposit",
     "提取": "Withdraw",
     "人工智能交易": "AI Trading",
+    "Privacy Of BitX": "Privacy Of BitX",
+    "About BitX": "About BitX",
     "贸易竞争": "Trade Competition",
     "空投": "Airdrop",
     "加密货币交易": "Crypto Trading",
     "申请成为交易员": "Apply as Trader",
     "不适用": "N/A",
-    "期货订单": "Futures Orders",
+    "期货订单": "Contract Orders",
     "现货订单": "Spot Orders",
     "当日成交": "Daily Deal",
     "当日成交汇总": "Daily Deal Summary",
diff --git a/src/i18n/zhcn.js b/src/i18n/zhcn.js
index 0f3d428..764a423 100644
--- a/src/i18n/zhcn.js
+++ b/src/i18n/zhcn.js
@@ -2905,6 +2905,8 @@
     "订金": "订金",
     "提取": "提取",
     "人工智能交易": "人工智能交易",
+    "Privacy Of BitX": "BitX 隐私政策",
+    "About BitX": "关于 BitX",
     "贸易竞争": "贸易竞争",
     "空投": "空投",
     "加密货币交易": "加密货币交易",
diff --git a/src/views/authentication/index.vue b/src/views/authentication/index.vue
index 51ced38..9139f94 100644
--- a/src/views/authentication/index.vue
+++ b/src/views/authentication/index.vue
@@ -180,7 +180,14 @@
     showToast(t('pleaseSelectBirth'));
     return;
   }
-  // 证件照非必填,不校验 frontFile/reverseFile
+  if (!frontFile.value.length || !frontFile.value[0]?.resURL) {
+    showToast(frontFile.value[0]?.status === 'uploading' ? t('uploading') : t('uploadComplete'));
+    return;
+  }
+  if (!reverseFile.value.length || !reverseFile.value[0]?.resURL) {
+    showToast(reverseFile.value[0]?.status === 'uploading' ? t('uploading') : t('uploadComplete'));
+    return;
+  }
 
   _applyIdentify({
     countryName: countryCode.value,
diff --git a/src/views/cryptos/AccountChange/index.vue b/src/views/cryptos/AccountChange/index.vue
index 8c9f300..ff2f225 100644
--- a/src/views/cryptos/AccountChange/index.vue
+++ b/src/views/cryptos/AccountChange/index.vue
@@ -16,7 +16,7 @@
                   <div class="font-32 textColor">{{ orderTypes[item.content_type] }}</div>
                   <div class="text-grey font-26 mt-6">
                     {{ item.createTime }}
-                    (UTC+8)
+                    <!-- (UTC+8) -->
                   </div>
                   <!-- <div class="text-grey font-26 mt-6">{{ orderTypes[item.content_type] }}</div> -->
                 </div>
diff --git a/src/views/cryptos/PerpetualContract/orderDetail.vue b/src/views/cryptos/PerpetualContract/orderDetail.vue
index 0ed7323..00139c7 100644
--- a/src/views/cryptos/PerpetualContract/orderDetail.vue
+++ b/src/views/cryptos/PerpetualContract/orderDetail.vue
@@ -51,14 +51,12 @@
           <div class="text-grey">{{ $t('开仓时间') }}</div>
           <div class="textColor">
             {{ detail.create_time }}
-            (UTC+8)
+            <!-- (UTC+8) -->
           </div>
         </div>
         <div class="flex justify-between cell-item ">
           <div class="text-grey">{{ $t('平仓时间') }}</div>
-          <div class="textColor">{{ detail.close_time ? dayjs(detail.close_time * 1000).format('YYYY-MM-DD HH:mm:ss')
-            + '(UTC+8)'
-            : '--' }}</div>
+          <div class="textColor">{{ detail.close_time ? formatUsTime(detail.close_time * 1000) : '--' }}</div>
         </div>
       </div>
     </div>
@@ -70,6 +68,8 @@
 import assetsHead from "@/components/Transform/assets-head/index.vue";
 import { Popup } from "vant";
 import dayjs from 'dayjs'
+
+const US_TIMEZONE = 'America/New_York'
 export default {
   name: "orderDetail",
   data() {
@@ -93,6 +93,29 @@
 
   methods: {
     dayjs,
+    formatUsTime(timestampMs) {
+      if (!timestampMs) return '--'
+      try {
+        const dtf = new Intl.DateTimeFormat('en', {
+          hour12: false,
+          timeZone: US_TIMEZONE,
+          year: 'numeric',
+          month: '2-digit',
+          day: '2-digit',
+          hour: '2-digit',
+          minute: '2-digit',
+          second: '2-digit',
+        })
+        const parts = dtf.formatToParts(new Date(timestampMs))
+        const map = parts.reduce((acc, p) => {
+          acc[p.type] = p.value
+          return acc
+        }, {})
+        return `${map.year}-${map.month}-${map.day} ${map.hour}:${map.minute}:${map.second}`
+      } catch (e) {
+        return dayjs(timestampMs).format('YYYY-MM-DD HH:mm:ss')
+      }
+    },
     handleText(state) {
       let str = '';
       if (state == 'created') {
diff --git a/src/views/cryptos/Recharge/rechargeDetail.vue b/src/views/cryptos/Recharge/rechargeDetail.vue
index 88bd0ea..131425f 100644
--- a/src/views/cryptos/Recharge/rechargeDetail.vue
+++ b/src/views/cryptos/Recharge/rechargeDetail.vue
@@ -55,7 +55,7 @@
                 <div class="text-grey">{{ $t('日期') }}</div>
                 <div class="textColor">
                     {{ info.create_time }}
-                    (UTC+8)
+                    <!-- (UTC+8) -->
                 </div>
             </div>
             <div class="flex justify-between mb74">
diff --git a/src/views/customerService/index.vue b/src/views/customerService/index.vue
index 60a2619..e723b0a 100644
--- a/src/views/customerService/index.vue
+++ b/src/views/customerService/index.vue
@@ -329,7 +329,7 @@
 
 .right-chatBg {
   position: relative;
-  background: $color_main;
+  background: #e3e3e3;
   color: $text_color;
 
   &::after {
@@ -338,7 +338,7 @@
     height: 0;
     border-top: 5px solid transparent;
     border-bottom: 5px solid transparent;
-    border-left: 10px solid $color_main;
+    border-left: 10px solid #e3e3e3;
     position: absolute;
     right: -8px;
     top: 14px;
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 7833928..d5eb802 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -128,18 +128,19 @@
 
 /* Logo:紫色渐变圆角方框 */
 .login-logo-wrap {
-    width: 72px;
-    height: 72px;
-    border-radius: 18px;
-    background: linear-gradient(135deg, #2c1a5c 0%, #5a37a5 100%);
+    width: 100px;
+    height: 100%;
+    border-radius: 6px;
+    // background: linear-gradient(135deg, #2c1a5c 0%, #5a37a5 100%);
     display: flex;
     align-items: center;
     justify-content: center;
     margin-bottom: 24px;
 }
 .login-logo {
-    width: 44px;
-    height: 44px;
+    width: 100%;
+    height: 100%;
+    border-radius: 6px;
     object-fit: contain;
 }
 
diff --git a/src/views/my/index.vue b/src/views/my/index.vue
index ed10bf5..7d44ff1 100644
--- a/src/views/my/index.vue
+++ b/src/views/my/index.vue
@@ -64,23 +64,23 @@
         
       </div>
 
-      <!-- 列表块1:人工智能交易、资金明细、空投 -->
+      <!-- 列表块1:资金明细 -->
       <div class="my-list-card">
-        <div class="my-list-item" @click="onRoute('/my/aiDetail')">
+        <!-- <div class="my-list-item" @click="onRoute('/my/aiDetail')">
           <van-icon name="cluster-o" size="20" class="my-list-icon" />
           <span class="my-list-title">{{ $t('人工智能交易') }}</span>
           <van-icon name="arrow" size="16" class="my-list-arrow" />
-        </div>
+        </div> -->
         <div class="my-list-item" @click="onRoute('/cryptos/accountChange')">
           <van-icon name="chart-trending-o" size="20" class="my-list-icon" />
           <span class="my-list-title">{{ $t('资金明细') }}</span>
           <van-icon name="arrow" size="16" class="my-list-arrow" />
         </div>
-        <div class="my-list-item" @click="onRoute('/my/airdrop')">
+        <!-- <div class="my-list-item" @click="onRoute('/my/airdrop')">
           <van-icon name="gift-o" size="20" class="my-list-icon" />
           <span class="my-list-title">{{ $t('空投') }}</span>
           <van-icon name="arrow" size="16" class="my-list-arrow" />
-        </div>
+        </div> -->
       </div>
 
       <!-- 列表块2:加密货币交易、申请成为交易员、期货订单、现货订单 -->
@@ -120,6 +120,20 @@
           <van-icon name="arrow" size="16" class="my-list-arrow" />
         </div>
       </div>
+
+      <!-- 列表块4:Privacy Of BitX、About BitX -->
+      <div class="my-list-card">
+        <div class="my-list-item" @click="onRoute('/aboutUs?serviceTerm=24')">
+          <van-icon name="shield-o" size="20" class="my-list-icon" />
+          <span class="my-list-title">{{ $t('Privacy Of BitX') }}</span>
+          <van-icon name="arrow" size="16" class="my-list-arrow" />
+        </div>
+        <div class="my-list-item" @click="onRoute('/aboutUs?serviceTerm=20')">
+          <van-icon name="info-o" size="20" class="my-list-icon" />
+          <span class="my-list-title">{{ $t('About BitX') }}</span>
+          <van-icon name="arrow" size="16" class="my-list-arrow" />
+        </div>
+      </div>
     </div>
   </section>
 </template>
diff --git a/src/views/register/index.vue b/src/views/register/index.vue
index 7fe4147..7857eaf 100644
--- a/src/views/register/index.vue
+++ b/src/views/register/index.vue
@@ -64,13 +64,13 @@
                     <van-icon :name="repwdVisible ? 'eye-o' : 'closed-eye'" size="20" />
                 </span>
             </div>
-            <!-- Referral Code (optional) -->
+            <!-- Referral Code -->
             <div class="reg-field">
                 <input
                     v-model="invitCode"
                     type="text"
                     class="reg-input"
-                    :placeholder="`${$t('entryInvitCode')} (optional)`"
+                    :placeholder="$t('entryInvitCode')"
                 />
             </div>
 
@@ -173,19 +173,22 @@
         showToast(t('entryPassword'));
         return;
     }
-    if (!validatePassword(password.value)) {
+    if (!password.value || password.value.length < 6 || password.value.length > 16) {
         showToast(t('passwordTips'));
         return;
     }
     if (repassword.value !== password.value) {
         showToast(t('noSamePassword'));
+        return;
+    }
+    if (!invitCode.value.trim()) {
+        showToast(t('请输入邀请码'));
+        return;
+    }
     if (!agree.value) {
         showToast(t('agreeServiceCond'));
         return;
     }
-        return;
-    }
-    // 推荐码可选,无则传空
     registerApi();
 };
 
@@ -195,14 +198,14 @@
         password: password.value,
         type: '2',
         verifcode: verifyCode.value,
-        usercode: invitCode.value.trim() || '',
+        usercode: invitCode.value.trim(),
         safeword: password.value
     }).then((res) => {
         userStore[GET_USERINFO](res);
         store.state.user.userInfo = res;
         router.push('/login');
     }).catch((err) => {
-        showToast(err?.msg || t('register'));
+        showToast(err);
     });
 };
 
@@ -247,18 +250,19 @@
 }
 
 .reg-logo-wrap {
-    width: 72px;
-    height: 72px;
-    border-radius: 18px;
-    background: linear-gradient(135deg, #2c1a5c 0%, #5a37a5 100%);
+    width: 100px;
+    height: 100%;
+    border-radius: 6px;
+    // background: linear-gradient(135deg, #2c1a5c 0%, #5a37a5 100%);
     display: flex;
     align-items: center;
     justify-content: center;
     margin-bottom: 24px;
 }
 .reg-logo {
-    width: 44px;
-    height: 44px;
+    width: 100%;
+    height: 100%;
+    border-radius: 6px;
     object-fit: contain;
 }
 
diff --git a/yarn.lock b/yarn.lock
index 9560802..c7444f1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1128,9 +1128,9 @@
   dependencies:
     "is-arrayish" "^0.2.1"
 
-"esbuild-darwin-64@0.15.18":
-  "integrity" "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg=="
-  "resolved" "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz"
+"esbuild-windows-64@0.15.18":
+  "integrity" "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw=="
+  "resolved" "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz"
   "version" "0.15.18"
 
 "esbuild@^0.15.9":
@@ -1420,11 +1420,6 @@
   "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
   "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
   "version" "1.0.0"
-
-"fsevents@~2.3.2":
-  "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="
-  "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
-  "version" "2.3.2"
 
 "function-bind@^1.1.1":
   "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="

--
Gitblit v1.9.3