From 5ef5f50d09b49795c4cc9ca017294cbb74083cae Mon Sep 17 00:00:00 2001
From: lxf <1371462558@qq.com>
Date: Fri, 04 Jul 2025 17:16:07 +0800
Subject: [PATCH] style

---
 src/i18n/Deutsch.js                                             |   17 
 src/views/changeFundsPassword/index.vue                         |    6 
 src/views/news/index.vue                                        |   20 
 src/views/optional/index.vue                                    |   16 
 src/i18n/th.js                                                  |   18 
 src/assets/theme/dark/index.scss                                |    2 
 src/store/language.store.js                                     |    3 
 src/views/cryptos/Funds/components/history.css                  |    2 
 src/i18n/Italy.js                                               |   13 
 src/i18n/Japanese.js                                            |   13 
 src/i18n/vi.js                                                  |   13 
 src/components/fx-footer/index.vue                              |   14 
 src/i18n/en.js                                                  |   14 
 src/i18n/zhcn.js                                                |    3 
 src/views/foreign/foreignPerpetualContract/jg_kline.vue         |  822 +++++++++++++++++++++++++++++++++++++
 src/views/quotes/Detail.vue                                     |    2 
 src/views/language/index.vue                                    |    6 
 src/components/foreign/foreign-perpetual-open/index.vue         |    7 
 src/config/index.js                                             |    4 
 src/views/cryptos/AssetsCenter/components/history.css           |    2 
 src/i18n/Spanish.js                                             |    3 
 src/views/foreign/foreignPerpetualContract/deliveryContract.vue |   70 ++
 src/assets/css/copy.scss                                        |    4 
 src/components/foreign/foreign-contract-header/index.vue        |    6 
 src/i18n/korean.js                                              |   15 
 src/i18n/fa.js                                                  |   19 
 src/views/cryptos/promote/init.scss                             |    4 
 src/i18n/cn.js                                                  |   13 
 src/views/usStock/ConstituentDetail.vue                         |    2 
 src/views/foreign/CoinChart.vue                                 |   10 
 /dev/null                                                       |    0 
 src/views/my/newindex.vue                                       |   42 +
 src/assets/init.scss                                            |    4 
 src/components/Transform/list-quotation/index.vue               |   17 
 src/views/changePassword/index.vue                              |    6 
 src/assets/css/variable.scss                                    |    8 
 src/assets/css/variable-light.scss                              |    2 
 tailwind.config.cjs                                             |    4 
 src/utils/utis.js                                               |   76 ++-
 src/views/cryptos/pledgeLoan/index.vue                          |    2 
 src/views/usStock/Detail.vue                                    |    2 
 src/views/quotes/ConstituentDetail.vue                          |    2 
 42 files changed, 1,129 insertions(+), 179 deletions(-)

diff --git a/h5.rar b/h5.rar
deleted file mode 100644
index d0689aa..0000000
--- a/h5.rar
+++ /dev/null
Binary files differ
diff --git a/src/assets/css/copy.scss b/src/assets/css/copy.scss
index 87eb20b..7e6b376 100644
--- a/src/assets/css/copy.scss
+++ b/src/assets/css/copy.scss
@@ -54,8 +54,8 @@
 $border-grey: #E5E7ED;
 $blue: #1194F7;
 $light-blue: #1199FA;
-$red: #F43368;
-$green: #06CDA5;
+$red: #de5d56;
+$green: #3a7ff6;
 $purple: #9A4DFD;
 $night: #131a2e;
 // 第三版
diff --git a/src/assets/css/variable-light.scss b/src/assets/css/variable-light.scss
index 408c947..446f352 100644
--- a/src/assets/css/variable-light.scss
+++ b/src/assets/css/variable-light.scss
@@ -26,7 +26,7 @@
 $bg_dark: #f0f2f5; 
 $border_color: #e0e0e0; 
 $divi_line: #f0f0f0; // 分割线颜色
-
+$btn_000: #000;
 // ... 其他变量保持类似的浅色调整 ...
 
 // 类名映射保持不变,会自动使用新的颜色变量
diff --git a/src/assets/css/variable.scss b/src/assets/css/variable.scss
index 3f621e6..5710065 100644
--- a/src/assets/css/variable.scss
+++ b/src/assets/css/variable.scss
@@ -22,7 +22,7 @@
 $title_color:#B8BDC5;
 $line_color: #393E49;
 $bg_dark: #474B62;
-$border_color: #212C4E;
+$border_color: #e3e3e3;
 $divi_line: #151726; //分割线
 $bg_step: #868D9A;
 $bg_Bottom:#313346;
@@ -44,7 +44,7 @@
 $delivery_tab_background: #2A324D;
 $search_background: #1B233B;
 $pledgeLoan_background:#00E3FF;
-
+$btn_000: #000;
 .mainBackground{
     background: $main_background;
 }
@@ -153,7 +153,7 @@
   $border-grey: #E5E7ED;
   $blue: #1194F7;
   $light-blue: #1199FA;
-  $red: #F43368;
-  $green: #06CDA5;
+  $red: #de5d56;
+  $green: #3a7ff6;
   $purple: #9A4DFD;
   $night: #131a2e;
\ No newline at end of file
diff --git a/src/assets/init.scss b/src/assets/init.scss
index b2a772e..9cbffaf 100644
--- a/src/assets/init.scss
+++ b/src/assets/init.scss
@@ -55,8 +55,8 @@
   $border-grey: #E5E7ED;
   $blue: #1194F7;
   $light-blue: #1199FA;
-  $red: #F43368;
-  $green: #06CDA5;
+  $red: #de5d56;
+  $green: #3a7ff6;
   $purple: #9A4DFD;
   $night: #f5f7fa;
   // overwrite vant
diff --git a/src/assets/theme/dark/index.scss b/src/assets/theme/dark/index.scss
index 3ff5036..39c9594 100644
--- a/src/assets/theme/dark/index.scss
+++ b/src/assets/theme/dark/index.scss
@@ -14,7 +14,7 @@
 $title_color:#B8BDC5;
 $line_color: #393E49;
 $bg_dark: #474B62;
-$border_color: #474B62;
+$border_color: #e3e3e3;
 $divi_line: #151726; //分割线
 $bg_step: #868D9A;
 $bg_Bottom:#313346;
diff --git a/src/components/Transform/list-quotation/index.vue b/src/components/Transform/list-quotation/index.vue
index f5da2b7..e992434 100644
--- a/src/components/Transform/list-quotation/index.vue
+++ b/src/components/Transform/list-quotation/index.vue
@@ -18,7 +18,7 @@
       </van-cell> -->
 
       <div class="flex items-end justify-between">
-        <div class="block text-22 font-medium">行情</div>
+        <div class="block text-22 font-medium">{{$t('Market')}}</div>
         <div class="relative text-13">
           <!-- <div class="flex px-10 justify-between rounded-full bg-black text-white min-w-100 box-border">
             <div class="block">貨幣</div>
@@ -116,7 +116,6 @@
     </div> -->
   </div>
 </template>
-
 <script>
 import { List, Cell } from 'vant'
 import { mapGetters, mapActions } from 'vuex'
@@ -124,6 +123,8 @@
 import ExTabs from "@/components/Transform/ex-tabs/index.vue";
 import { HOST_URL } from '@/config'
 import { SET_CURRENCY } from "@/store/const.store";
+// import { useI18n } from "vue-i18n";
+// const t = useI18n()
 export default {
   name: 'ListQuotation',
   data() {
@@ -170,14 +171,14 @@
         });
       } else {
         setStorage('symbol', item.symbol)
-         this.$router.push({
-          path: `/foreign/deliveryContract/${item.symbol}`,
-          query: { type: 'cryptos' }
-        });
-        // this.$router.push({
-        //   path: `/cryptos/perpetualContract/${item.symbol}`,
+        //  this.$router.push({
+        //   path: `/foreign/deliveryContract/${item.symbol}`,
         //   query: { type: 'cryptos' }
         // });
+        this.$router.push({
+          path: `/cryptos/perpetualContract/${item.symbol}`,
+          query: { type: 'cryptos' }
+        });
       }
     },
     handleImage(url) {
diff --git a/src/components/foreign/foreign-contract-header/index.vue b/src/components/foreign/foreign-contract-header/index.vue
index 8e1f008..5c453cb 100644
--- a/src/components/foreign/foreign-contract-header/index.vue
+++ b/src/components/foreign/foreign-contract-header/index.vue
@@ -3,8 +3,8 @@
     <div>
         <div class="contract-header">
             <div class="pl-15 pr-15">
-                <div class="flex justify-start pt-10 pb-5 before">
-                    <img src="@/assets/image/icon_back.png" class="icon_back_1" alt="" @click="jump()">
+                <div class="flex justify-start pt-10 pb-5">
+                    <!-- <img src="@/assets/image/icon_back.png" class="icon_back_1" alt="" @click="jump()"> -->
                     <div class="flex items-center font-14">
                         <van-icon name="sort" @click="onSidebar" />
                         <!-- <img src="@/assets/theme/dark/image/black-convert.png" alt="convert-img" class="w-18 h-18" @click="onSidebar"> -->
@@ -144,9 +144,11 @@
 
 <style lang="scss" scoped>
 @import '@/assets/css/copy.scss';
+@import '@/assets/css/deepseek_css_20250625_30ff932.css';
 
 .contract-header {
     font-size: 15px;
+    margin-top: 40px;
 }
 
 .before {
diff --git a/src/components/foreign/foreign-perpetual-open/index.vue b/src/components/foreign/foreign-perpetual-open/index.vue
index e24bc38..2803161 100644
--- a/src/components/foreign/foreign-perpetual-open/index.vue
+++ b/src/components/foreign/foreign-perpetual-open/index.vue
@@ -14,9 +14,9 @@
             }}</span></div>
             <div class="flex textColor font-16 borderColor items-center h-40" style="border-radius:4px;">
               <div class="flex-1 text-center lh-40" style="border-top-left-radius:4px;border-bottom-left-radius:4px;"
-                :class="currentType == 'long' ? 'bg-green' : ''" @click="changeTab('long')">{{ $t('buy') }}</div>
+                :class="currentType == 'long' ? 'bg-green text_fff' : ''" @click="changeTab('long')">{{ $t('buy') }}</div>
               <div class="flex-1 text-center lh-40" style="border-top-right-radius:4px;border-bottom-right-radius:4px;"
-                :class="currentType == 'short' ? 'bg-red' : ''" @click="changeTab('short')">{{ $t('sell') }}</div>
+                :class="currentType == 'short' ? 'bg-red text_fff' : ''" @click="changeTab('short')">{{ $t('sell') }}</div>
             </div>
             <div class="flex justify-between h-30 items-center mt-10">
               <span class="textColor2 font-14">{{ $t('time') }}</span>
@@ -391,6 +391,9 @@
   font-size: 14px;
 }
 
+.text_fff{
+  color: #fff;
+}
 .options {
   box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.3);
   border-radius: 6px;
diff --git a/src/components/fx-footer/index.vue b/src/components/fx-footer/index.vue
index 624c19e..54cca41 100644
--- a/src/components/fx-footer/index.vue
+++ b/src/components/fx-footer/index.vue
@@ -15,10 +15,10 @@
         </template>
       </van-tabbar-item>
       <!-- /foreign -->
-      <van-tabbar-item name="trade" to="/foreign/deliveryContract/USDSGD">
+      <van-tabbar-item name="trade" :to="'/foreign/deliveryContract/'+jgSymbol">
         <span :class="[active === 'trade' ? 'active' : '']">{{ $t('trade') }}</span>
         <template #icon="props">
-          <img :src="props.active ? icon.trade.active : icon.trade.inactive" />
+          <img :src="active === 'trade' ? icon.trade.active : icon.trade.inactive" />
         </template>
       </van-tabbar-item>
       <!-- <van-tabbar-item name="funds" to="/cryptos/funds">
@@ -56,9 +56,12 @@
 import { useI18n } from "vue-i18n";
 import { useRoute } from 'vue-router';
 import { watch } from "vue";
+import { getLocalStorageValue } from '@/utils/utis.js'
 const { t } = useI18n()
 const active = ref('home')
 const route = useRoute()
+const jgSymbol = getLocalStorageValue('jgSymbol')
+
 if (route.path == "/trade/index") {
   active.value = 'trade'
 } else if (route.path.indexOf('/quotes') != -1) {
@@ -69,7 +72,8 @@
   active.value = 'mine'
 } else if (route.path == "/foreign/index") {
   active.value = 'optional'
-}else if (route.path == "/foreign/deliveryContract/USDSGD") {
+}else if (route.path.startsWith("/foreign/deliveryContract/")) {
+  console.log('出现了')
   active.value = 'trade'
 }else if (route.path == "/cryptos/funds") {
   active.value = 'funds'
@@ -77,6 +81,7 @@
 let quotesStore = useQuotesStore()
 
 watch(() => route.path, (nv) => {
+  console.log('path', route.path)
   if (route.path == "/trade/index") {
     active.value = 'trade'
   } else if (route.path.indexOf('/quotes') != -1) {
@@ -87,7 +92,8 @@
     active.value = 'mine'
   } else if (route.path == "/optional/index") {
     active.value = 'optional'
-  }else if (route.path == "/foreign/deliveryContract/USDSGD") {
+  }else if (route.path.startsWith("/foreign/deliveryContract/")) {
+  console.log('出现了')
     active.value = 'trade'
   }
 })
diff --git a/src/config/index.js b/src/config/index.js
index dd96314..cb1ded3 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -34,8 +34,8 @@
 export const defaultSeconds = 1 * 24 * 60 * 60 * 1000
 
 // const ENV_DEV = 'zhapi.coinbtcs.com' // dev
-const ENV_DEV = 'openapi.yanshiz.com' // dev
-// const ENV_DEV = '192.168.10.18:8086' // dev
+// const ENV_DEV = 'openapi.yanshiz.com' // dev
+const ENV_DEV = '192.168.10.18:8086' // dev
 
 
 // const ENV_PRO = 'qheufhj.site' //  app域名
diff --git a/src/i18n/Deutsch.js b/src/i18n/Deutsch.js
index 15c32ff..34e0dad 100644
--- a/src/i18n/Deutsch.js
+++ b/src/i18n/Deutsch.js
@@ -1767,6 +1767,8 @@
     "金额": "Geldbetrag",
     "全部": "Alle",
     "可用": "Verfügbare",
+    "处理中": "In Bearbeitung",
+    "转换": "Umwandeln",
     "到账数量": "Anzahl der eingehenden Konten",
     "金额不足": "Unzureichende Beträge",
     "请输入地址": "Bitte Adresse eingeben",
@@ -2083,6 +2085,7 @@
     "锁仓收益": "Rendite der esperrten Positionen",
     "锁仓推广收益": "empfohlene Rendite der esperrten Positionen",
     "账变记录": "Aufzeichnungen",
+    "现货订单": "Spot-Auftrag",
     "选择账户类型": "Kontotyp auswählen",
     "查询": "Anfrage",
     "永续合约": "unbefristete Verträge",
@@ -2780,18 +2783,18 @@
     'ETF交割': 'ETF-Lieferung',
     'ETF合约': 'ETF-Vertrag',
     'ETF交易': 'ETF-Transaktion',
-    '美股交割':  'US-Lagerlieferung',
+    '美股交割': 'US-Lagerlieferung',
     '美股合约': 'US-Aktienvertrag',
-    '美股指数':'US-Aktienindex',
+    '美股指数': 'US-Aktienindex',
     '公告中心': 'Ankündigungscenter',
     '搜索更多服务': 'Weitere Dienste suchen',
-    '股票':'Aktie',
-    '买家':'Käufer',
-    '卖家':'Verkäufer',
-    '已存入交易所账户,请放心付款':'Es wurde auf das Umtauschkonto eingezahlt, bitte seien Sie versichert zu bezahlen',
+    '股票': 'Aktie',
+    '买家': 'Käufer',
+    '卖家': 'Verkäufer',
+    '已存入交易所账户,请放心付款': 'Es wurde auf das Umtauschkonto eingezahlt, bitte seien Sie versichert zu bezahlen',
     '请输入推荐码': 'Bitte geben Sie den Empfehlungscode ein',
     '请输入正确的推荐码': 'Bitte geben Sie den richtigen Empfehlungscode ein',
-    '余额不足':'Mangelhaftes Gleichgewicht',
+    '余额不足': 'Mangelhaftes Gleichgewicht',
     "未实现盈亏(USD)": "Nicht realisierter Gewinn und Verlust (USD) ",
     "证件号码长度超过50": "Die Länge der Ausweisnummer überschreitet 50",
     "实名姓名长度超过50": "Die Länge des Namens überschreitet 50",
diff --git a/src/i18n/Italy.js b/src/i18n/Italy.js
index e4ec10c..c441b72 100644
--- a/src/i18n/Italy.js
+++ b/src/i18n/Italy.js
@@ -1844,6 +1844,8 @@
     "金额": "Importo",
     "全部": "Tutti",
     "可用": "Disponibile",
+    "处理中": "In elaborazione",
+    "转换": "Convertire",
     "到账数量": "Riceverete",
     "金额不足": "Equilibrio insufficiente",
     "请输入地址": "Inserire l'indirizzo del portafoglio",
@@ -2215,6 +2217,7 @@
     "法币交易": "Legale",
     "币币交易": "Valuta",
     "账变记录": "Consumare il record",
+    "现货订单": "Ordine spot",
     "选择账户类型": "Selezionare il tipo di conto",
     "查询": "Ricerca",
     "永续合约": "Perpetuo",
@@ -2875,13 +2878,13 @@
     '美股指数': 'Indice azionario statunitense',
     '公告中心': 'Centro annunci',
     '搜索更多服务': 'Cerca più servizi',
-    '股票':'Azione',
-    '买家':'Acquirente',
-    '卖家':'Venditore',
-    '已存入交易所账户,请放心付款':'È stato depositato sul conto di scambio, ti assicuriamo di pagare',
+    '股票': 'Azione',
+    '买家': 'Acquirente',
+    '卖家': 'Venditore',
+    '已存入交易所账户,请放心付款': 'È stato depositato sul conto di scambio, ti assicuriamo di pagare',
     '请输入推荐码': 'Inserisci il codice di riferimento',
     '请输入正确的推荐码': 'Inserisci il codice di riferimento corretto',
-    '余额不足':'Equilibrio insufficiente',
+    '余额不足': 'Equilibrio insufficiente',
     "未实现盈亏(USD)": "Non realizzato P/L (USD)",
     "证件号码长度超过50": "La lunghezza del numero di documento supera i 50",
     "实名姓名长度超过50": "La lunghezza del nome reale supera i 50",
diff --git a/src/i18n/Japanese.js b/src/i18n/Japanese.js
index 4c1fa11..9be87d3 100644
--- a/src/i18n/Japanese.js
+++ b/src/i18n/Japanese.js
@@ -1950,6 +1950,7 @@
     "法币交易": "法定通貨取引",
     "币币交易": "通貨取引",
     "账变记录": "アカウント変更記録",
+    "现货订单": "現物注文",
     "选择账户类型": "アカウントの種類を選択",
     "查询": "お問い合わせ",
     "永续合约": "無期限契約",
@@ -2195,6 +2196,8 @@
     "日元": "日本円",
     "英镑": "英ポンド",
     "可用:": "利用可能",
+    "处理中": '処理中',
+    "转换": '変換',
     "交割合约历史": "配送契約履歴",
     "涨幅榜": "ライジング",
     "跌幅榜": "下落リスト",
@@ -2643,13 +2646,13 @@
     '美股指数': '米国株価指数',
     '公告中心': 'アナウンス センター',
     '搜索更多服务': 'さらにサービスを検索',
-    '股票':'ストック',
-    '买家':'購入者',
-    '卖家':'販売者',
-    '已存入交易所账户,请放心付款':'取引所口座に入金されましたので、ご安心してお支払いください',
+    '股票': 'ストック',
+    '买家': '購入者',
+    '卖家': '販売者',
+    '已存入交易所账户,请放心付款': '取引所口座に入金されましたので、ご安心してお支払いください',
     '请输入推荐码': '紹介コードを入力してください',
     '请输入正确的推荐码': '正しい紹介コードを入力してください',
-    '余额不足':'残高不足',
+    '余额不足': '残高不足',
     "未实现盈亏(USD)": "未実現損益(USD)",
     "证件号码长度超过50": "IDカード番号の長さが50を超えています",
     "实名姓名长度超过50": "実名の長さが50を超えています",
diff --git a/src/i18n/Spanish.js b/src/i18n/Spanish.js
index 3ef6f45..43b337f 100644
--- a/src/i18n/Spanish.js
+++ b/src/i18n/Spanish.js
@@ -1746,6 +1746,8 @@
     "金额": "Cantidad",
     "全部": "Todo",
     "可用": "Disponible",
+    "处理中": 'En proceso',
+    "转换": "Convertir",
     "到账数量": "Número de créditos",
     "金额不足": "Cantidad insuficiente",
     "请输入地址": "Por favor, introduzca su dirección",
@@ -2063,6 +2065,7 @@
     "锁仓推广收益": "Ganancias de referencia bloqueadas",
     "签到奖励": "Bono de inscripción",
     "账变记录": "Historial de la cuenta",
+    "现货订单": "Orden al contado",
     "选择账户类型": "Seleccione el tipo de cuenta",
     "查询": "Consulta",
     "永续合约": "Contratos perpetuos",
diff --git a/src/i18n/cn.js b/src/i18n/cn.js
index e42d57c..b6cec79 100644
--- a/src/i18n/cn.js
+++ b/src/i18n/cn.js
@@ -2064,6 +2064,7 @@
     "锁仓收益": "鎖倉收益",
     "锁仓推广收益": "鎖倉推薦收益",
     "账变记录": "賬變記錄",
+    "现货订单": "現貨訂單",
     "选择账户类型": "選擇賬戶類型",
     "查询": "查詢",
     "永续合约": "永續合約",
@@ -2350,6 +2351,8 @@
     "日元": "日元",
     "英镑": "英鎊",
     "可用:": "可用:",
+    "处理中": "处理中",
+    "转换": "转换",
     "交割合约历史": "交割合約歷史",
     "涨幅榜": "漲幅榜",
     "跌幅榜": "跌幅榜",
@@ -2764,13 +2767,13 @@
     '美股指数': '美股指數',
     '公告中心': '公告中心',
     '搜索更多服务': '搜索更多服務',
-    '股票':'股票',
-    '买家':'買家的',
-    '卖家':'賣家的',
-    '已存入交易所账户,请放心付款':'已存入交易所賬戶,請放心付款',
+    '股票': '股票',
+    '买家': '買家的',
+    '卖家': '賣家的',
+    '已存入交易所账户,请放心付款': '已存入交易所賬戶,請放心付款',
     '请输入推荐码': '請輸入推薦碼',
     '请输入正确的推荐码': '請輸入正確的推薦碼',
-    '余额不足':'餘額不足',
+    '余额不足': '餘額不足',
     "未实现盈亏(USD)": "未實現盈虧(USD)",
     "证件号码长度超过50": "證件號碼長度超過50",
     "实名姓名长度超过50": "實名姓名長度超過50",
diff --git a/src/i18n/en.js b/src/i18n/en.js
index 7653200..a6453c0 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -1142,6 +1142,7 @@
     '兑入数量': 'Deposit amount',
     '兑出数量': 'Exchange amount',
     '兑换时间': 'Exchange time',
+    '兑换': 'Exchange',
     '官方充值通道': 'Official recharge channel',
     '公证时间为1-30个工作日': 'Notarization time is 1-30 working days',
     '复制失败': 'Replication failed',
@@ -1723,6 +1724,8 @@
     "金额": "Amount",
     "全部": "All",
     "可用": "Available",
+    "处理中": "Processing",
+    "转换": "Convert",
     "到账数量": "You receive",
     "金额不足": "Insufficient balance",
     "请输入地址": "Please enter wallet address",
@@ -2091,6 +2094,7 @@
     "法币交易": "Legal",
     "币币交易": "Currency",
     "账变记录": "Record",
+    "现货订单": "Spot Order",
     "选择账户类型": "Select account type",
     "查询": "Search",
     "永续合约": "Perpetual",
@@ -2739,13 +2743,13 @@
     '美股指数': 'US Exchange',
     '公告中心': 'Announcement',
     '搜索更多服务': 'Search for more services',
-    '股票':'Stock',
-    '买家':'Buyer',
-    '卖家':'Seller',
-    '已存入交易所账户,请放心付款':'It has been deposited into the exchange account, please rest assured to pay',
+    '股票': 'Stock',
+    '买家': 'Buyer',
+    '卖家': 'Seller',
+    '已存入交易所账户,请放心付款': 'It has been deposited into the exchange account, please rest assured to pay',
     '请输入推荐码': 'Please enter the referral code',
     '请输入正确的推荐码': 'Please enter the correct referral code',
-    '余额不足':'Insufficient balance',
+    '余额不足': 'Insufficient balance',
     "未实现盈亏(USD)": "Unrealized P/L (USD)",
     "证件号码长度超过50": "ID number length exceeds 50",
     "实名姓名长度超过50": "Real name length exceeds 50",
diff --git a/src/i18n/fa.js b/src/i18n/fa.js
index 2246791..641aefb 100644
--- a/src/i18n/fa.js
+++ b/src/i18n/fa.js
@@ -1658,6 +1658,8 @@
     "金额": "Montant",
     "全部": "Tous",
     "可用": "Disponible sur",
+    "处理中": "En cours de traitement",
+    "转换": "Convertir",
     "到账数量": "Montant reçu",
     "金额不足": "Solde insuffisant",
     "请输入地址": "Veuillez entrer l'adresse du portefeuille",
@@ -2000,6 +2002,7 @@
     "法币交易": "Légal",
     "币币交易": "Monnaie",
     "账变记录": "Enregistrée",
+    "现货订单": "Commande au comptant",
     "选择账户类型": "Sélectionner le type de compte",
     "查询": "Recherche",
     "永续合约": "éternel",
@@ -2671,24 +2674,24 @@
     "loanRuleTitle2": "2. Comment obtenir un prêt ? Quelles sont les exigences ?",
     "loanRuleContent1": "Bybit Loan est un service financier proposé en partenariat avec une société de prêt tiers, vous fournissant des prêts pour répondre à vos besoins de liquidité à court terme.",
     "loanRuleTitle1": "1. Qu'est-ce que Bybit Loan ?",
-    '外汇交割':  'Livraison en devises',
+    '外汇交割': 'Livraison en devises',
     '外汇合约': 'Contrat de change',
     '外汇交易': 'Foreign Exchange',
     'ETF交割': 'Livraison ETF',
     'ETF合约': 'Contrat ETF',
-    'ETF交易':  'Opération ETF',
+    'ETF交易': 'Opération ETF',
     '美股交割': 'Livraison stock US',
     '美股合约': 'Contrat boursier américain',
-    '美股指数':  'Indice boursier américain',
+    '美股指数': 'Indice boursier américain',
     '公告中心': 'Centre d annonces',
     '搜索更多服务': 'Rechercher plus de services',
-    '股票':'Action',
-    '买家':'Acheteur',
-    '卖家':'Vendeur',
-    '已存入交易所账户,请放心付款':'Il a été déposé sur le compte d échange, soyez assuré de payer',
+    '股票': 'Action',
+    '买家': 'Acheteur',
+    '卖家': 'Vendeur',
+    '已存入交易所账户,请放心付款': 'Il a été déposé sur le compte d échange, soyez assuré de payer',
     '请输入推荐码': 'Veuillez entrer le code de recommandation',
     '请输入正确的推荐码': 'Veuillez entrer le code de recommandation correct',
-    '余额不足':'Solde insuffisant',
+    '余额不足': 'Solde insuffisant',
     "未实现盈亏(USD)": "Non réalisé P/L (USD)",
     "证件号码长度超过50": "La longueur du numéro d'identification dépasse 50",
     "实名姓名长度超过50": "La longueur réelle du nom dépasse 50",
diff --git a/src/i18n/korean.js b/src/i18n/korean.js
index 3c41a8d..a915d93 100644
--- a/src/i18n/korean.js
+++ b/src/i18n/korean.js
@@ -2106,6 +2106,7 @@
     '锁仓收益': '잠금 수익 ',
     '锁仓推广收益': '잠금 판매 수익 ',
     '账变记录': '장부변동 기록 ',
+    "现货订单": "현물 주문",
     '选择账户类型': '계정 유형을 선택하십시오 ',
     '查询': '조회한다 ',
     '永续合约': '영속계약 ',
@@ -2380,6 +2381,8 @@
     '日元': '엔 ',
     '英镑': '파운드 ',
     '可用': '사용 가능',
+    "处理中": '처리 중',
+    "转换": "변환",
     '交割合约历史': '배송 계약 내역',
     '涨幅榜': '상승률 차트 ',
     '跌幅榜': '낙폭 차트 ',
@@ -2777,15 +2780,15 @@
     '美股交割': '미국 재고 배송',
     '美股合约': '미국 주식 계약',
     '美股指数': '미국 주가 지수',
-    '公告中心':'공지센터',
+    '公告中心': '공지센터',
     '搜索更多服务': '더 많은 서비스 검색',
-    '股票':'재고',
-    '买家':'구매자',
-    '卖家':'판매자',
-    '已存入交易所账户,请放心付款':'거래소 계좌로 입금되었습니다 안심하시고 입금하세요',
+    '股票': '재고',
+    '买家': '구매자',
+    '卖家': '판매자',
+    '已存入交易所账户,请放心付款': '거래소 계좌로 입금되었습니다 안심하시고 입금하세요',
     '请输入推荐码': '추천 코드를 입력하십시오',
     '请输入正确的推荐码': '올바른 추천 코드를 입력하십시오',
-    '余额不足':'잔액 불충분',
+    '余额不足': '잔액 불충분',
     '未实现盈亏(USD)': '미실현 손익(USD) ',
     "证件号码长度超过50": "ID 번호 길이가 50자를 초과합니다.",
     "实名姓名长度超过50": "실명 길이가 50자를 초과합니다.",
diff --git a/src/i18n/th.js b/src/i18n/th.js
index d310013..9b6b18f 100644
--- a/src/i18n/th.js
+++ b/src/i18n/th.js
@@ -1752,6 +1752,8 @@
     "金额": "จำนวนเงิน",
     "全部": "ทั้งหมด",
     "可用": "มีอยู่",
+    "处理中": 'กำลังดำเนินการ',
+    "转换": "แปลง",
     "到账数量": "จำนวนเงินที่มาถึง",
     "金额不足": "จำนวนเงินไม่เพียงพอ",
     "请输入地址": "กรุณากรอกที่อยู่",
@@ -2093,6 +2095,8 @@
     "法币交易": "ธุรกรรมสกุลเงิน Fiat",
     "币币交易": "การซื้อขายสกุลเงิน",
     "账变记录": "บันทึกการเปลี่ยนแปลงบัญชี",
+    "现货订单": "คำสั่งซื้อสปอต",
+    "现货订单": "",
     "选择账户类型": "เลือกประเภทบัญชี",
     "查询": "สอบถาม",
     "永续合约": "สัญญาถาวร",
@@ -2744,21 +2748,21 @@
     '外汇交易': 'การแลกเปลี่ยนเงินตราต่างประเทศ',
     'ETF交割': 'การนำส่ง ETF',
     'ETF合约': 'สัญญา ETF',
-    'ETF交易':  'ธุรกรรม ETF',
+    'ETF交易': 'ธุรกรรม ETF',
     '美股交割': 'การส่งมอบหุ้นสหรัฐฯ',
     '美股合约': 'สัญญาหุ้นสหรัฐ',
     '美股指数': 'ดัชนีหุ้นสหรัฐ',
     '公告中心': 'ศูนย์ประกาศ',
     '搜索更多服务': 'ค้นหาบริการเพิ่มเติม',
-    '股票':'คลังสินค้า',
-    '买家':'ผู้ซื้อ',
-    '卖家':'ผู้ขาย',
-    '已存入交易所账户,请放心付款':'มันถูกฝากเข้าบัญชีแลกเปลี่ยนแล้ว โปรดวางใจที่จะจ่าย',
+    '股票': 'คลังสินค้า',
+    '买家': 'ผู้ซื้อ',
+    '卖家': 'ผู้ขาย',
+    '已存入交易所账户,请放心付款': 'มันถูกฝากเข้าบัญชีแลกเปลี่ยนแล้ว โปรดวางใจที่จะจ่าย',
     '请输入推荐码': 'กรุณาใส่รหัสแนะนำ',
     '请输入正确的推荐码': 'กรุณาใส่รหัสแนะนำที่ถูกต้อง',
-    '余额不足':'ยอดเงินคงเหลือไม่เพียงพอ',
+    '余额不足': 'ยอดเงินคงเหลือไม่เพียงพอ',
     "未实现盈亏(USD)": "กำไรและขาดทุนที่ยังไม่เกิดขึ้นจริง (USD)",
     "证件号码长度超过50": "หมายเลข ID ยาวเกิน 50",
     "实名姓名长度超过50": "ความยาวชื่อเกิน 50",
-    
+
 }
\ No newline at end of file
diff --git a/src/i18n/vi.js b/src/i18n/vi.js
index 7b44450..63a2442 100644
--- a/src/i18n/vi.js
+++ b/src/i18n/vi.js
@@ -2110,6 +2110,7 @@
     "法币交易": "Hợp pháp",
     "币币交易": "Tiền tệ",
     "账变记录": "Kỷ lục thanh khoản",
+    "现货订单": "Đơn hàng giao ngay",
     "选择账户类型": "Chọn loại tài khoản",
     "查询": "Tìm kiếm",
     "永续合约": "Vĩnh viễn",
@@ -2355,6 +2356,8 @@
     "日元": "Đồng Yên",
     "英镑": "Đồng bảng Anh",
     "可用:": "Có sẵn",
+    "处理中": 'Đang xử lý',
+    "转换": "Chuyển đổi",
     "交割合约历史": "Lịch sử hợp đồng cung ứng",
     "涨幅榜": "Người được",
     "跌幅榜": "Người thua lỗ",
@@ -2729,13 +2732,13 @@
     '美股指数': 'Chỉ số chứng khoán Mỹ',
     '公告中心': 'Trung tâm thông báo',
     '搜索更多服务': 'Tìm thêm dịch vụ',
-    '股票':'Cổ phần',
-    '买家':'Người mua',
-    '卖家':'Người bán',
-    '已存入交易所账户,请放心付款':'Nó đã được gửi vào tài khoản trao đổi, hãy yên tâm thanh toán',
+    '股票': 'Cổ phần',
+    '买家': 'Người mua',
+    '卖家': 'Người bán',
+    '已存入交易所账户,请放心付款': 'Nó đã được gửi vào tài khoản trao đổi, hãy yên tâm thanh toán',
     '请输入推荐码': 'Vui lòng nhập mã giới thiệu',
     '请输入正确的推荐码': 'Vui lòng nhập mã giới thiệu chính xác',
-    '余额不足':'Thiếu cân bằng',
+    '余额不足': 'Thiếu cân bằng',
     "未实现盈亏(USD)": "Lãi/Lỗ chưa thực hiện (USD) ",
     "证件号码长度超过50": "Số ID vượt quá 50",
     "实名姓名长度超过50": "Tên thật vượt quá 50",
diff --git a/src/i18n/zhcn.js b/src/i18n/zhcn.js
index 47055a2..17badf8 100644
--- a/src/i18n/zhcn.js
+++ b/src/i18n/zhcn.js
@@ -1731,6 +1731,8 @@
     "金额": "金额",
     "全部": "全部",
     "可用": "可用",
+    "处理中": "处理中",
+    "转换": "转换",
     "到账数量": "到账数量",
     "金额不足": "金额不足",
     "请输入地址": "请输入地址",
@@ -2049,6 +2051,7 @@
     "锁仓收益": "锁仓收益",
     "锁仓推广收益": "锁仓推荐收益",
     "账变记录": "账变记录",
+    "现货订单": "现货订单",
     "选择账户类型": "选择账户类型",
     "查询": "查询",
     "永续合约": "永续合约",
diff --git a/src/store/language.store.js b/src/store/language.store.js
index 46c4052..3c0f78e 100644
--- a/src/store/language.store.js
+++ b/src/store/language.store.js
@@ -9,9 +9,10 @@
         language: getStorage('lang') || getBrowserLang() // 项目初始化时,默认为浏览器的语言,
     }),
     actions: {
-        [SET_LANGUAGE](locale) {
+        [SET_LANGUAGE](locale, tit = '') {
             this.language = locale
             setStorage('lang', locale)
+            setStorage('lang_tit', tit)
         }
 
     },
diff --git a/src/utils/utis.js b/src/utils/utis.js
index f9fb963..58f211e 100644
--- a/src/utils/utis.js
+++ b/src/utils/utis.js
@@ -10,7 +10,7 @@
 
 //import { Toast } from "vant";
 
- export const formatData = (data) => {
+export const formatData = (data) => {
     let thisData = formatTime(new Date(), "yyyy-MM-dd");
     let myData = data.substr(0, 10);
     if (thisData == myData) {
@@ -49,7 +49,7 @@
 }
 
 
-export const dataTime = (data,isTrue) =>{
+export const dataTime = (data, isTrue) => {
     var date = new Date(data);
     let Y = date.getFullYear() + '-';
     let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
@@ -58,27 +58,27 @@
     let m = date.getMinutes() + ':';
     let s = date.getSeconds();
     let str = Y + M + D
-    if (isTrue){
-         str = Y + M + D + h + m+ s
-    }else{
-         str = Y + M + D
+    if (isTrue) {
+        str = Y + M + D + h + m + s
+    } else {
+        str = Y + M + D
     }
     return str
 }
 
-export const dataTimeEx = (data,isTrue) =>{
+export const dataTimeEx = (data, isTrue) => {
     var date = new Date(data);
     let Y = date.getFullYear() + '-';
-    let M = ((date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '').padStart(2,'0') + '-';
-    let D = (date.getDate() + '').padStart(2,'0') + ' ';
-    let h = (date.getHours() + '').padStart(2,'0') + ':';
-    let m = (date.getMinutes() + '').padStart(2,'0') + ':';
-    let s = (date.getSeconds() + '').padStart(2,'0');
-    let str = Y + M + D 
-    if (isTrue){
-         str = Y + M + D + h + m+ s
-    }else{
-         str = Y + M + D 
+    let M = ((date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '').padStart(2, '0') + '-';
+    let D = (date.getDate() + '').padStart(2, '0') + ' ';
+    let h = (date.getHours() + '').padStart(2, '0') + ':';
+    let m = (date.getMinutes() + '').padStart(2, '0') + ':';
+    let s = (date.getSeconds() + '').padStart(2, '0');
+    let str = Y + M + D
+    if (isTrue) {
+        str = Y + M + D + h + m + s
+    } else {
+        str = Y + M + D
     }
     return str
 }
@@ -135,14 +135,14 @@
     return false;
 }
 // 设置localStorage
-export const setStorage = function(key, obj) {
+export const setStorage = function (key, obj) {
     let json = JSON.stringify(obj)
     window.localStorage.setItem(key, json)
     // console.log('设置语言', key, json)
 }
 
 // 获取localStorage
-export const getStorage = function(key) {
+export const getStorage = function (key) {
     const str = window.localStorage.getItem(key)
     if (!str) {
         return null
@@ -151,7 +151,7 @@
 }
 
 // 移除localStorage
-export const removeStorage = function(key) {
+export const removeStorage = function (key) {
     window.localStorage.removeItem(key)
 }
 // 设置sessionStorage
@@ -170,8 +170,8 @@
     return JSON.parse(str)
 }
 // 获取浏览器默认语言
-export const getBrowserLang = function() {
-    let browserLang = navigator.language ? navigator.language: navigator.browserLanguage
+export const getBrowserLang = function () {
+    let browserLang = navigator.language ? navigator.language : navigator.browserLanguage
     let defaultBrowserLang = ''
     if (browserLang.toLowerCase() === 'cn' || browserLang.toLowerCase() === 'zh' || browserLang.toLowerCase() === 'zh-cn') {
         defaultBrowserLang = 'CN'
@@ -202,7 +202,7 @@
     }
 }
 
-export const debounce=  (fn, delay = 500)=> {
+export const debounce = (fn, delay = 500) => {
     // timer 是在闭包中的
     let timer = null;
 
@@ -217,7 +217,7 @@
     }
 }
 
-export const changeTheme = (theme)=> {
+export const changeTheme = (theme) => {
     if ((navigator.userAgent).indexOf('Html5Plus') > -1) {
         if (theme == 'white') {
             plus.navigator.setStatusBarBackground('#ffffff');
@@ -233,10 +233,34 @@
  * 生成随机数
  */
 export function getRandom() {
-  return Math.floor(Math.random() * 10)
+    return Math.floor(Math.random() * 10)
 }
 
 
 export const handleImage = (url) => {
-  return new URL(url, import.meta.url).href
+    return new URL(url, import.meta.url).href
+}
+
+// 获取纯净字符串 
+export function getLocalStorageValue(key) {
+    const value = localStorage.getItem(key);
+    if (value === null) return null;
+
+    try {
+        // 尝试直接解析
+        const parsed = JSON.parse(value);
+
+        // 如果解析后仍是字符串,尝试二次解析
+        if (typeof parsed === 'string') {
+            try {
+                return JSON.parse(parsed);
+            } catch {
+                return parsed;
+            }
+        }
+        return parsed;
+    } catch (e) {
+        // 不是合法JSON时手动清理
+        return value.replace(/^"|"$/g, '');
+    }
 }
\ No newline at end of file
diff --git a/src/views/changeFundsPassword/index.vue b/src/views/changeFundsPassword/index.vue
index 7ce2865..8e20594 100644
--- a/src/views/changeFundsPassword/index.vue
+++ b/src/views/changeFundsPassword/index.vue
@@ -188,4 +188,10 @@
     color: $color_main;
   }
 }
+
+:deep(.van-button--primary){
+    background-color: $btn_000;
+    border-color: $btn_000;
+    border-radius: 10px;
+}
 </style>
diff --git a/src/views/changePassword/index.vue b/src/views/changePassword/index.vue
index c5a2c79..79aec7b 100644
--- a/src/views/changePassword/index.vue
+++ b/src/views/changePassword/index.vue
@@ -67,4 +67,10 @@
     background: $btn_main;
     color: $text_color;
 }
+
+:deep(.van-button--primary){
+    background-color: $btn_000;
+    border-color: $btn_000;
+    border-radius: 10px;
+}
 </style>
diff --git a/src/views/cryptos/AssetsCenter/components/history.css b/src/views/cryptos/AssetsCenter/components/history.css
index 3b41d34..486c813 100644
--- a/src/views/cryptos/AssetsCenter/components/history.css
+++ b/src/views/cryptos/AssetsCenter/components/history.css
@@ -22,7 +22,7 @@
   background-color: #F5D658; }
 
 .green-round {
-  background-color: #06CDA5; }
+  background-color: #3a7ff6; }
 
 .red-round {
   background-color: red; }
diff --git a/src/views/cryptos/Funds/components/history.css b/src/views/cryptos/Funds/components/history.css
index 3b41d34..486c813 100644
--- a/src/views/cryptos/Funds/components/history.css
+++ b/src/views/cryptos/Funds/components/history.css
@@ -22,7 +22,7 @@
   background-color: #F5D658; }
 
 .green-round {
-  background-color: #06CDA5; }
+  background-color: #3a7ff6; }
 
 .red-round {
   background-color: red; }
diff --git a/src/views/cryptos/pledgeLoan/index.vue b/src/views/cryptos/pledgeLoan/index.vue
index 0acabe2..0e92931 100644
--- a/src/views/cryptos/pledgeLoan/index.vue
+++ b/src/views/cryptos/pledgeLoan/index.vue
@@ -27,7 +27,7 @@
                                 </div>
                             </div>
                         </div>
-                        <div class="errorInfo font-24 h-28 lh-28 mt-20 mb-30" style="color:#F43368;">{{ errorMsg ? errorMsg
+                        <div class="errorInfo font-24 h-28 lh-28 mt-20 mb-30" style="color:#de5d56;">{{ errorMsg ? errorMsg
                             : ''
                         }}
                         </div>
diff --git a/src/views/cryptos/promote/init.scss b/src/views/cryptos/promote/init.scss
index 30edd56..b06e2df 100644
--- a/src/views/cryptos/promote/init.scss
+++ b/src/views/cryptos/promote/init.scss
@@ -50,8 +50,8 @@
   $border-grey: $border-grey;
   $blue: #1194F7;
   $light-blue: #1199FA;
-  $red: #F43368;
-  $green: #06CDA5;
+  $red: #de5d56;
+  $green: #3a7ff6;
   $purple: #9A4DFD;
   $night: #131a2e;
 
diff --git a/src/views/foreign/CoinChart.vue b/src/views/foreign/CoinChart.vue
index 2169740..a301ff4 100644
--- a/src/views/foreign/CoinChart.vue
+++ b/src/views/foreign/CoinChart.vue
@@ -125,7 +125,7 @@
         </div>
       </section>
       <van-popup overlay-class="left-modal" v-model:show="showLeftPopup" position="left"
-        :style="{ width: '80%', height: '100%', background: '#1F233D' }" round safe-area-inset-top safe-area-inset-bottom>
+        :style="{ width: '80%', height: '100%', }" round safe-area-inset-top safe-area-inset-bottom>
         <div class="modal-inner-box">
           <div class="sidebar">
             <div class="flex justify-between">
@@ -386,9 +386,10 @@
   }
 
   .header {
-    position: relative;
+    // position: relative;
     display: flex;
     align-items: center;
+    margin-top: 40px;
 
     .flex-l {
       flex: 1;
@@ -764,7 +765,7 @@
     left: 0;
     right: 0;
     // bottom: 0px;
-    background: $black;
+    // background: $black;
     height: 70px;
     width: 100%;
     justify-content: center;
@@ -790,6 +791,7 @@
     .flex-r {
       display: flex;
       justify-content: flex-end;
+      color:#fff;
 
       .sell-btn,
       .buy-btn {
@@ -806,7 +808,7 @@
       }
 
       .buy-btn {
-        background: #5BB989;
+        background: #3a7ff6;
         margin-right: 20px;
       }
     }
diff --git a/src/views/foreign/foreignPerpetualContract/deliveryContract.vue b/src/views/foreign/foreignPerpetualContract/deliveryContract.vue
index 19fb26c..0f98ad4 100644
--- a/src/views/foreign/foreignPerpetualContract/deliveryContract.vue
+++ b/src/views/foreign/foreignPerpetualContract/deliveryContract.vue
@@ -1,27 +1,53 @@
 <template>
     <div :key="currentSymbol" class="pb-108 ">
-        <!-- 头部区 -->
-        <ContractHeader :symbol="currentSymbol" :range="range" :selectIndex="selectIndex"
-            :balance="userStore.userInfo.balance" @update-coin="onUpdate" page="perpetualContract">
-        </ContractHeader>
-        <div>
-            <div class="mainBackground rounded-view">
-                <PerpetualOpen class="pl-15 pr-15" :key="keyIndex + 'c'" :selectIndex="selectIndex" :symbol="currentSymbol"
-                    :green-data="bids" :red-data="asks" :price="price" :init-open="initOpen" :init-futrue="initFutrue"
-                    @ordered="onOrdered" :currentType="currentType" @changeCurrentType="changeCurrentType">
-                </PerpetualOpen>
-                <div class="line"></div>
-                <PerpetualOrder class="pl-15 pr-15" :key="keyIndex + 'd'" :symbol="currentSymbol" :order-cur="orderCur"
-                    :order-hold="orderHold" :price="price" :topIndex="selectIndex" :futrue-hold="futrueHold"
-                    :futrue-histroy="futrueHistroy" @tab="onTab" @recall="onRecall">
-                </PerpetualOrder>
+        <dev  class="status_bar fixed w-full top-0 left-0 h-44 flex items-center justify-between bg-white z-99">
+            <dev  class="status_bar absolute top-0 left-0 w-full h-44 flex items-center justify-center z--1">
+                <dev  class="p-3 bg-#EEE rounded-full flex text-12 font-medium">
+                    <span  
+                    :class="['block h-24 w-84.5 text-center leading-24 rounded-full', currentTab === 'spot' ? 'bg-#3640f0 text-white' : '']"
+                        @click="goToTab('spot')"
+                        style="cursor:pointer;">
+                        <span>{{ t('现货') }}</span>
+                    </span>
+                    <span   
+                    :class="['block h-24 w-84.5 text-center leading-24 rounded-full', currentTab === 'delivery' ? 'bg-#3640f0 text-white' : '']"
+                        @click="goToTab('delivery')"
+                        style="cursor:pointer;"
+           >
+                        <span>{{ t('交割') }}</span>
+                    </span>
+                </dev>
+            </dev>
+        </dev>
+        <div v-show="currentTab === 'delivery'">
+            <!-- 头部区 -->
+            <ContractHeader :symbol="currentSymbol" :range="range" :selectIndex="selectIndex"
+                :balance="userStore.userInfo.balance" @update-coin="onUpdate" page="perpetualContract">
+            </ContractHeader>
+            <JGKline></JGKline>
+            <div>
+                <div class="mainBackground rounded-view">
+                    <PerpetualOpen class="pl-15 pr-15" :key="keyIndex + 'c'" :selectIndex="selectIndex" :symbol="currentSymbol"
+                        :green-data="bids" :red-data="asks" :price="price" :init-open="initOpen" :init-futrue="initFutrue"
+                        @ordered="onOrdered" :currentType="currentType" @changeCurrentType="changeCurrentType">
+                    </PerpetualOpen>
+                    <div class="line"></div>
+                    <PerpetualOrder class="pl-15 pr-15" :key="keyIndex + 'd'" :symbol="currentSymbol" :order-cur="orderCur"
+                        :order-hold="orderHold" :price="price" :topIndex="selectIndex" :futrue-hold="futrueHold"
+                        :futrue-histroy="futrueHistroy" @tab="onTab" @recall="onRecall">
+                    </PerpetualOrder>
+                </div>
             </div>
         </div>
-
+        <div v-show="currentTab === 'spot'">
+            <CoinChart></CoinChart>
+        </div>
     </div>
 </template>
 
 <script setup>
+import CoinChart from '@/views/foreign/CoinChart.vue';
+import JGKline from './jg_kline.vue';
 import PerpetualOpen from '@/components/foreign/foreign-perpetual-open/index.vue'
 import PerpetualOrder from '@/components/foreign/foreign-perpetual-order/index.vue'
 import { ref, onMounted, onActivated, onDeactivated, onBeforeUnmount } from 'vue';
@@ -29,14 +55,22 @@
 import { _getRealtime } from '@/service/quotes.api'
 import { useUserStore } from '@/store/user';
 import { useQuotesStore } from '@/store/quotes.store';
-import { useRoute } from 'vue-router'
+import { useRoute, useRouter } from 'vue-router'
 import { WS_URL } from '@/config'
 import { SET_COIN_LIST, SET_USERINFO } from '@/store/types.store'
 import { _getBalance, _c2cPaymentMethodList } from '@/service/user.api.js'
 import { _futrueOrderInit, _futrueOrderList, _getDeepData, contractOrder } from "@/service/trade.api.js";
+import { useI18n } from 'vue-i18n';
 const userStore = useUserStore()
 const quotesStore = useQuotesStore()
+const router = useRouter()
 const route = useRoute()
+const { t } = useI18n()
+
+const currentTab = ref('delivery')
+const goToTab = (val) => {
+    currentTab.value = val
+}
 
 
 const initTimer = ref(null)
@@ -286,6 +320,8 @@
 </script>
 
 <style lang="scss" scoped>
+@import '@/assets/css/deepseek_css_20250625_30ff932.css';
+
 //.list-enter-active, .list-leave-active {
 //  transition: all .5s;
 //  transform: translateY(30px)
diff --git a/src/views/foreign/foreignPerpetualContract/jg_kline.vue b/src/views/foreign/foreignPerpetualContract/jg_kline.vue
new file mode 100644
index 0000000..1b89fca
--- /dev/null
+++ b/src/views/foreign/foreignPerpetualContract/jg_kline.vue
@@ -0,0 +1,822 @@
+<template>
+  <section class="pb-10">
+    <div class="container-box">
+      <!-- <header class="header">
+        <div class="flex-l">
+          <div class="icon back" @click="handleBack">
+            <img src="@/assets/image/back.png" alt="">
+          </div>
+          <div class="name-box flex">
+            <div class="icon" @click="handleShowSidebar()">
+              <img src="@/assets/image/foreign/exchange.png" alt="">
+            </div>
+            <p class="title">{{ symbol }}</p>
+          </div>
+        </div>
+        <div class="icon-group">
+          <div class="icon record" @click="onRoute('/position')">
+            <img src="../../assets/image/foreign/record.png" alt="">
+          </div>
+          <div class="icon setting">
+            <img src="../../assets/image/icon-star_active.png" class="collected-img" @click="openCurrency"
+              v-if="isCollect" />
+            <img v-else src="../../assets/image/icon-star.png" class="collected-img" @click="openCurrency" />
+          </div>
+        </div>
+      </header> -->
+      <!-- <section class="value-container"> -->
+        <!-- <div class="flex-l">
+          <p class="first-line red">{{ priceFormat(chartData?.close) }}</p>
+          <p class="second-line">
+            <span class="red">{{ chartData?.change_ratio ? `${chartData?.change_ratio}%` : '--' }}</span>&nbsp;
+          </p>
+        </div> -->
+        <!-- <div class="flex-r">
+          <div class="flex-r-item">
+            <p>
+              <span class="label">{{ t('high') }}</span>
+              <span class="value">{{ priceFormat(chartData?.high) }}</span>
+            </p>
+            <p>
+              <span class="label">{{ t('Low') }}</span>
+              <span class="value">{{ priceFormat(chartData?.low) }}</span>
+            </p>
+
+          </div>
+          <div class="flex-r-item">
+            <p>
+              <span class="label">{{ t('Open') }}</span>
+              <span class="value">{{ priceFormat(chartData?.open) }}</span>
+            </p>
+            <p>
+              <span class="label">{{ t('Close') }}</span>
+              <span class="value">{{ priceFormat(chartData?.close) }}</span>
+            </p>
+          </div>
+        </div> -->
+      <!-- </section> -->
+      <!-- <p class="status-info" v-if="chartData?.market?.status">
+        <span>{{ chartData?.market?.status && $t(chartData?.market?.status) }},</span>
+        <span class="time">{{ chartData?.market?.time_str }}</span>&nbsp;
+        <span>{{ chartData?.market?.time_zone && $t(chartData?.market?.time_zone) }}</span>
+      </p> -->
+      <section class="indicator-index-container">
+        <div class="indicator-index-box">
+          <div class="flex-l">
+            <ul>
+              <li v-for="(item, index) in filterOne" :key="item" @click="handleClickSelectTime(item, index)"
+                :class="[item.index === timeLabelActive ? 'active' : '']">{{
+                  item.name
+                }}</li>
+              <li @click="handleClickMoreBtn">{{ t('More') }}</li>
+            </ul>
+          </div>
+          <div class="flex-r">
+            <!-- <img src="@/assets/image/quotes/index-setting.png" alt=""> -->
+          </div>
+        </div>
+        <div class="indicator-index-box-second" v-if="showMore">
+          <ul>
+            <li v-for="(item, index) in filterTwo" :key="item" @click="handleClickSelectTime(item, index)"
+              :class="[item.index === timeLabelActive ? 'active' : '']">{{
+                item.name
+              }}</li>
+          </ul>
+        </div>
+      </section>
+      <section class="kline-container flex">
+        <div class="chart-index">
+          <fx-kline :height="450" :symbol="symbol" :isShowsolid="true" :chartType="chartType" v-if="symbol" @data="onData"
+            :key="`${symbol}-${timeValue}`" />
+        </div>
+        <!-- <div class="order-book-container" v-if="timeLabelActive === 0">
+          <keep-alive>
+            <trade-deep-data :symbol="symbol" v-if="symbol" :price="price" class="trade-deep-container" />
+          </keep-alive>
+        </div> -->
+      </section>
+      <!-- <section class="footer-btn-group">
+        <div class="flex-l" @click="onRoute('/cryptos/exchangeRate')">
+          <img src="@/assets/image/quotes/exchange.png" alt="">
+          <p class="rate">{{ t('汇率') }}</p>
+        </div>
+        <div class="flex btn-group">
+          <div class="flex-r flex">
+            <div :class="[noData ? 'disabled buy-btn' : 'buy-btn']" @click="gotoPage('buy')">{{
+              t('buy') }}</div>
+            <div :class="[noData ? 'disabled sell-btn' : 'sell-btn']" @click="gotoPage('sell')">{{ t('sell') }}</div>
+          </div>
+        </div>
+      </section> -->
+      <!-- <section class="footer-btn-group flex items-center">
+        <div class="flex-l exchangeRate-box" @click="onRoute('/cryptos/exchangeRate')">
+          <img src="@/assets/image/quotes/exchange.png" alt="">
+          <p class="rate">{{ t('汇率') }}</p>
+        </div>
+        <div class="flex btn-group">
+
+          <div class="flex btn-group">
+            <div class="flex-r flex">
+              <div :class="[noData ? 'disabled buy-btn' : 'buy-btn']" @click="gotoPage('buy')">{{
+                t('buy') }}</div>
+              <div :class="[noData ? 'disabled sell-btn' : 'sell-btn']" @click="gotoPage('sell')">{{ t('sell') }}</div>
+            </div>
+          </div>
+        </div>
+      </section> -->
+      <van-popup overlay-class="left-modal" v-model:show="showLeftPopup" position="left"
+        :style="{ width: '80%', height: '100%' }" round safe-area-inset-top safe-area-inset-bottom>
+        <div class="modal-inner-box">
+          <div class="sidebar">
+            <div class="flex justify-between">
+              <div class="flex items-center text-grey">
+                <div class="mr-12">{{ $t('Symbol') }}</div>
+              </div>
+              <div class="flex text-grey right-text">
+                <div class="item">
+                  <div>{{ $t('lastPrice') }} / 24H {{ $t('upsAndDowns') }}</div>
+                </div>
+              </div>
+            </div>
+            <div class="flex justify-between mt-4" v-for="    item     in     listData    " :key="item.name"
+              @click="handleSelectSymbol(item)">
+              <div>
+                <div class="font-700 textColor">{{ item.name || '--' }}</div>
+              </div>
+              <div class="text-right font-12">
+                <div class="textColor">{{ item.close || '--' }}</div>
+                <div class="value" :class="item.change_ratio > 0 ? 'green' : 'red'">{{ item.change_ratio
+                  || '--'
+                }}%</div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </van-popup>
+    </div>
+    <add-currency @updateItem="getIsItemHasAddGlobal" :isCollect="isCollect" ref="addCurrencyRef"></add-currency>
+  </section>
+</template>
+      
+<script setup>
+import { ref, onMounted, onBeforeMount } from 'vue';
+import { useRoute, useRouter } from 'vue-router';
+import { Popup } from 'vant';
+import { useI18n } from 'vue-i18n'
+import fxKline from '@/components/fx-kline/index.vue'
+import fxPopup from '@/components/fx-popup/charts-cycle.vue'
+import { useUserStore } from '@/store/user.js';
+import { useQuotesStore } from '@/store/quotes.store';
+import { SET_STAGE } from '@/store/types.store';
+import { _getQuotes, _isItemHasAddGlobal } from '@/service/quotes.api'
+import addCurrency from '@/components/add-currency/index.vue'
+
+const { t } = useI18n()
+const router = useRouter()
+const route = useRoute()
+const show = ref(false)
+const showSelect = ref(false)
+const quotesStore = useQuotesStore()
+const userStore = useUserStore()
+const symbol = ref('')
+const timeValue = ref('')
+const chartData = ref({})
+const listData = ref([])
+const active = ref(0)
+const timeLabelActive = ref(0)
+const chartType = ref('')
+const allEtfTabIndex = ref(0)
+const allEtfListData = ref([])
+const noData = ref(true)
+const price = ref('')
+const symbolType = ref('forex') //默认查询外汇
+const showMore = ref(false)
+const showLeftPopup = ref(false)
+const addCurrencyRef = ref(null)
+const isCollect = ref(false)
+
+const filterOne = ref([
+
+  { name: t('分时'), paramsValue: 'timeSharing', seconds: 1 * 60 * 1000, index: 0, },
+  { name: '1' + t('天'), paramsValue: '1day', seconds: 1 * 24 * 60 * 60 * 1000, index: 1, },
+  { name: '1' + t('周'), paramsValue: '1week', seconds: 7 * 24 * 60 * 60 * 1000, index: 2, },
+  { name: '1' + t('月'), paramsValue: '1mon', seconds: 30 * 24 * 60 * 60 * 1000, index: 3, },
+  { name: '5' + t('天'), paramsValue: '5day', seconds: 5 * 24 * 60 * 60 * 1000, index: 4, },
+])
+
+
+const filterTwo = ref([
+  { name: '120' + t('分'), paramsValue: '120min', seconds: 2 * 60 * 60 * 1000, index: 5, },
+  { name: '60' + t('分'), paramsValue: '60min', seconds: 1 * 60 * 60 * 1000, index: 6, },
+  { name: '30' + t('分'), paramsValue: '30min', seconds: 30 * 60 * 1000, index: 7, },
+  { name: '15' + t('分'), paramsValue: '15min', seconds: 15 * 60 * 1000, index: 8, },
+  { name: '5' + t('分'), paramsValue: '5min', seconds: 5 * 60 * 1000, index: 9, },
+  { name: '1' + t('分'), paramsValue: '1min', seconds: 1 * 60 * 1000, index: 10, },
+])
+
+onMounted(async () => {
+  if (route.query.symbol) {
+    symbol.value = route.query.symbol
+  } else {
+    symbol.value = quotesStore.coins.length ? quotesStore.coins[0].symbol : 'EURUSD'
+  }
+  if (quotesStore.stage === 'timeSharing') {
+    chartType.value = 'area'
+  } else {
+    chartType.value = 'candle_solid'
+  }
+  fetchQuotes()
+  fetchTableData()
+  getIsItemHasAddGlobal()
+})
+
+onBeforeMount(() => {
+  console.log('mount')
+
+})
+
+const onRoute = (path) => {
+  router.push(path)
+}
+
+const handleBack = () => {
+  if (route.query.isOptional == 1) {
+    router.push(`/optional/index`)
+    return
+  }
+  // if (route.query.isOptional == 2){
+  //   router.push(`/optional/search`)
+  //   return
+  // }
+  if (route.query.from === 'trade') {
+    router.push(`/trade/index?tabActive=2&navActive=2`)
+  } else {
+    router.push('/quotes/index?tabActive=2')
+  }
+}
+
+const handleSelectSymbol = (item) => {
+  symbol.value = item.name
+  showLeftPopup.value = false
+  getIsItemHasAddGlobal()
+}
+
+const gotoPage = (type) => {
+  if (noData.value || Object.keys(chartData.value).length === 0) {
+    return
+  }
+  if (!userStore.userInfo.token) {
+    router.push('/login')
+    return
+  }
+  router.push({
+    path: '/foreign/opening',
+    query: {
+      symbol: symbol.value,
+      type,
+      closePrice: Number(chartData.value.close).toFixed(4),
+    }
+
+  })
+}
+
+const handleClickSelectTime = (params) => {
+  const { paramsValue, seconds, index } = params;
+  timeLabelActive.value = index;
+  quotesStore[SET_STAGE]({ stage: paramsValue, seconds })
+  onSelectTime(paramsValue)
+}
+
+const onSelectTime = (evt) => {
+  timeValue.value = evt
+  if (evt == 'timeSharing') {
+    chartType.value = 'area'
+  } else {
+    chartType.value = 'candle_solid'
+  }
+}
+
+// 事件
+const onData = (data) => {
+  chartData.value = data
+  noData.value = false
+}
+const fetchQuotes = () => {
+  _getQuotes(quotesStore.coins).then(data => {
+    data.map(item => {
+      item.name = item.symbol
+    })
+    listData.value = data
+  })
+}
+
+const filterCoins = (type) => {
+  let arr = [...quotesStore.coins]
+  let result = []
+  if (type === "all") {
+    result = arr;
+  } else {
+    result = arr.filter(item => item.type === type)
+  }
+  return result;
+}
+
+const fetchTableData = () => {
+  const params = filterCoins(symbolType.value)
+  _getQuotes(params).then(data => {
+    allEtfListData.value = data
+  })
+}
+
+const handleClickMoreBtn = () => {
+  showMore.value = !showMore.value
+}
+
+const priceFormat = (value) => {
+  return Number(value || '0.00').toFixed(4)
+}
+
+const handleShowSidebar = () => {
+  showLeftPopup.value = true
+}
+const openCurrency = () => {
+  addCurrencyRef.value.openCurrency(symbol.value)
+}
+//判断是否加入收藏
+const getIsItemHasAddGlobal = () => {
+  let obj = {
+    symbol: symbol.value
+  }
+  _isItemHasAddGlobal(obj).then((data) => {
+    isCollect.value = data
+  })
+}
+</script>
+<style lang="scss" scoped>
+:deep(.van-sidebar) {
+  width: 100%;
+}
+
+:deep(.van-sidebar-item) {
+  background-color: $main2_background;
+  color: $text_color;
+  padding: 10px;
+}
+
+:deep(.van-sidebar-item--select) {
+  background-color: #1C2946;
+  color: $color_main;
+}
+
+:deep(.modal-inner-box) {
+  padding: 20px;
+  font-size: 14px;
+
+}
+
+.container-box {
+  padding: 0 10px 10px 10px;
+
+  .green {
+    color: $green;
+  }
+
+  .red {
+    color: $red;
+  }
+
+  .header {
+    // position: relative;
+    display: flex;
+    align-items: center;
+    margin-top: 40px;
+
+    .flex-l {
+      flex: 1;
+      display: inline-flex;
+      align-items: center;
+
+      .icon {
+        margin-right: 10px;
+        display: inline-block;
+        width: 20px;
+        height: 20px;
+
+        img {
+          height: 20px;
+          width: 20px;
+        }
+      }
+
+      .name-box {
+        position: absolute;
+        left: 50%;
+        transform: translateX(-50%);
+        align-items: center;
+
+        .title {
+          font-size: 16px;
+          font-weight: 700;
+          line-height: 16px;
+        }
+
+        .type {
+          font-size: 12px;
+          color: $text_color6;
+        }
+      }
+    }
+
+    .icon-group {
+      width: 100px;
+      text-align: right;
+
+      .icon {
+        display: inline-block;
+        width: 28px;
+        height: 28px;
+        padding: 4px;
+        margin-left: 16px;
+      }
+    }
+
+
+  }
+
+  .status-info {
+    padding: 0 6px;
+    font-size: 12px;
+    line-height: 32px;
+    height: 32px;
+    border-bottom: 1px solid $border_color;
+
+    .time {
+      display: inline-block;
+      width: 92px;
+    }
+  }
+
+  .value-container {
+    margin-top: 20px;
+    padding-bottom: 20px;
+    display: flex;
+    justify-content: space-between;
+    font-size: 12px;
+    color: #747A8F;
+    border-bottom: 1px solid $border_color;
+
+    .flex-l {
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      width: 160px;
+
+      .first-line {
+        font-weight: 700;
+        font-size: 24px;
+      }
+
+      .second-line {
+        margin-top: 8px;
+      }
+    }
+
+    .flex-r {
+      flex: 1;
+      display: flex;
+      align-items: center;
+      color: $text_color;
+
+      .flex-r-item {
+        flex: 1;
+        text-align: center;
+        font-size: 12px;
+
+        .label {
+          color: $lable_color;
+          margin-right: 10px;
+        }
+      }
+    }
+  }
+
+  .base-info {
+    .flex-r-item {
+      margin: 0 !important;
+
+      .label {
+        display: inline-block;
+        width: 130px;
+        text-align: left;
+      }
+
+      .value {
+        text-align: left;
+        flex: 1;
+      }
+    }
+  }
+
+  .indicator-index-container {
+    .indicator-index-box {
+      padding: 12px 0;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+
+      .flex-l {
+        flex: 1;
+
+        ul {
+          display: flex;
+
+          li {
+            text-align: center;
+            margin: 0 4px;
+            padding: 0 4px;
+            font-size: 12px;
+            border-radius: 4px;
+          }
+        }
+      }
+
+      .flex-r {
+        display: flex;
+        justify-content: flex-end;
+        width: 30px;
+
+        img {
+          width: 12px;
+          height: 16px;
+        }
+
+      }
+    }
+
+    .active {
+      background: $btn_main;
+    }
+
+    .indicator-index-box-second {
+      ul {
+        display: flex;
+        border: 1px solid $border_color;
+        align-items: center;
+        border-right: none;
+      }
+
+      li {
+        flex: 1;
+        height: 32px;
+        line-height: 32px;
+        text-align: center;
+        font-size: 12px;
+        border-right: 1px solid $border_color;
+      }
+    }
+  }
+
+  .kline-container {
+    margin-top: 10px;
+
+    .order-book-container {
+      padding: 100px 2px 0 6px;
+      width: 130px;
+      border-left: 1px solid $border_color;
+    }
+
+    .chart-index {
+      flex: 1;
+      min-width: 200px;
+    }
+
+
+
+    .text-sm {
+      position: relative;
+    }
+
+    .select-div {
+      width: 100px;
+      position: absolute;
+      top: 30px;
+      left: 0;
+      z-index: 100;
+
+      ul {
+        box-shadow: 0px 3px 11px 0px rgb(0 0 0 / 10%);
+
+        li {
+          background: $mainbgWhiteColor;
+          text-align: center;
+          padding: 10px 0;
+          font-size: 16px;
+        }
+
+        li:not(:last-child) {
+          border-bottom: 1px solid $border-grey;
+        }
+      }
+    }
+
+    .active {
+      background: $btn_main !important;
+      color: $text_color;
+    }
+  }
+
+  .all-etf-ranking {
+    margin-top: 10px;
+
+    .title {
+      font-weight: 700;
+      padding: 0 12px;
+    }
+
+    .tabs {
+      padding: 0 12px;
+      margin-top: 10px;
+      // height: 40px;
+      min-height: 40px;
+      line-height: 24px;
+      color: #BBBCBD;
+      width: 280px;
+
+      .tab-item {
+        margin: 4px;
+        text-align: center;
+        padding: 4px 6px;
+        font-size: 12px;
+        color: $text_color5;
+        background: $US_tab_background;
+        border-radius: 10px;
+        background-size: cover;
+      }
+
+      .active {
+        font-weight: 700;
+        color: $color_main !important;
+        background: $US_tabActice_background;
+        border-radius: 10px;
+        background-size: cover;
+      }
+    }
+
+    .etf-table {
+      .right {
+        text-align: right;
+      }
+
+      ul {
+        margin-top: 10px;
+      }
+
+      .title-line {
+        color: #747A8F;
+        font-size: 12px;
+        font-weight: 400;
+        padding: 0 12px;
+        border: none;
+      }
+
+      li {
+        padding: 14px 12px;
+        display: flex;
+        font-size: 12px;
+        line-height: 18px;
+        border-bottom: 1px solid $border_color;
+
+        .gray-text {
+          color: #BCBDC2;
+          font-size: 12px;
+        }
+
+        .flex-l {
+          width: 100px;
+        }
+
+        .flex-r {
+          display: inline-flex;
+          flex: 1;
+
+          .flex-r-item {
+            flex: 1;
+            align-self: center;
+            text-align: center;
+          }
+        }
+      }
+    }
+  }
+
+  .f10-container {
+    .title {
+      margin: 16px 0;
+      padding-bottom: 10px;
+      border-bottom: 1px solid $border_color;
+    }
+
+    .tabs {
+      margin-top: 10px;
+      height: 40px;
+      line-height: 24px;
+      color: #BBBCBD;
+      width: 120px;
+
+      .tab-item {
+        margin: 4px;
+        text-align: center;
+        padding: 4px 6px;
+        font-size: 12px;
+        font-weight: 700;
+        color: $color_main !important;
+        background: $US_tabActice_background;
+        border-radius: 10px;
+        background-size: cover;
+      }
+    }
+
+    .value-container {
+      margin-top: 10px;
+      border: none;
+    }
+
+    .flex-r {
+      align-items: flex-start;
+    }
+
+    .flex-r-item {
+      li {
+        display: flex;
+        justify-content: space-between;
+        line-height: 28px;
+      }
+    }
+
+    .flex-r-item:first-child {
+      margin-right: 40px;
+    }
+
+  }
+
+  .footer-btn-group {
+    position: fixed;
+    z-index: 10;
+    left: 0;
+    right: 0;
+    // bottom: 0px;
+    // background: $black;
+    height: 70px;
+    width: 100%;
+    justify-content: center;
+
+    .exchangeRate-box {
+      padding-right: 25px;
+    }
+
+    .flex-l {
+      text-align: center;
+
+      .rate {
+        font-size: 12px;
+      }
+
+      img {
+        width: 22px;
+        height: 22px;
+        margin: 0 auto;
+      }
+    }
+
+    .flex-r {
+      display: flex;
+      justify-content: flex-end;
+      color:#fff;
+
+      .sell-btn,
+      .buy-btn {
+        text-align: center;
+        font-size: 14px;
+        font-weight: 700;
+        width: 140px;
+        height: 36px;
+        line-height: 36px;
+      }
+
+      .sell-btn {
+        background: $red;
+      }
+
+      .buy-btn {
+        background: #3a7ff6;
+        margin-right: 20px;
+      }
+    }
+  }
+}
+
+.collected-img {
+  width: 30px !important;
+  height: 20px !important;
+}      
+</style>
\ No newline at end of file
diff --git a/src/views/language/index.vue b/src/views/language/index.vue
index 4ccc20e..1c83073 100644
--- a/src/views/language/index.vue
+++ b/src/views/language/index.vue
@@ -5,7 +5,7 @@
         {{ $t('setLanguage') }}
       </template>
     </fx-header>
-    <div v-for="(item, index) in lang" :key="index" class="lang-padding" @click="handleSetLang(item.key)">
+    <div v-for="(item, index) in lang" :key="index" class="lang-padding" @click="handleSetLang(item.key,item.title)">
       <div class="lang-title flex items-center font-13 textColor">
         <img class="h-6 mr-3" :src="item.image" alt="">
         {{ item.title }}
@@ -41,9 +41,9 @@
 onMounted(() => {
   console.log(locale.value)
 })
-const handleSetLang = (lang) => {
+const handleSetLang = (lang, tit) => {
   locale.value = lang
-  languageStore[SET_LANGUAGE](lang)
+  languageStore[SET_LANGUAGE](lang,tit)
 }
 
 </script>
diff --git a/src/views/my/newindex.vue b/src/views/my/newindex.vue
index 529c27c..78df43f 100644
--- a/src/views/my/newindex.vue
+++ b/src/views/my/newindex.vue
@@ -8,25 +8,26 @@
         <div class="flex">
           <div class="text-10">ID: {{userStore.userInfo.usercode}}</div>
         </div>
-        <div class="text-10 block">信用分: 100</div>
+        <!-- <div class="text-10 block">信用分: 100</div> -->
       </div>
     </div>
 
     <!-- 账户详情部分 -->
     <div class="mt-20 px-17">
-      <div class="text-22 font-medium">帳戶詳情</div>
+      <div class="text-22 font-medium">{{ t('账号') }} {{ t('详情') }}</div>
       <div class="mt-15 p-15 rounded-15 bg-#f5f7f9">
         <div 
           v-for="(item, index) in accountItems" 
           :key="index"
-          class="flex items-center justify-between"
+          class="flex items-center justify-between text-16"
           :class="{'mt-15': index > 0}"
+           @click="onRoute(item.path)"
         >
-          <div class="flex items-center" @click="onRoute(item.path)">
+          <div class="flex items-center">
             <img :src="`${item.icon}`" class="w-20 h-20">
             <div class="ml-10">{{ item.title }}</div>
           </div>
-          <div v-if="item.status" class="text-gray-400 text-12 py-5">
+          <div v-if="item.status" class="text-gray-400 text-14 py-5">
             {{ item.status }}
           </div>
           <div v-else class="i-material-symbols:arrow-right-rounded text-20 text-gray-400">
@@ -38,19 +39,20 @@
 
      <!-- 帮助和支持部分 -->
      <div class="mt-20 px-17">
-      <div class="text-22 font-medium">幫助和支持</div>
+      <div class="text-22 font-medium">{{ t('帮助')}}</div>
       <div class="mt-15 p-15 rounded-15 bg-#f5f7f9">
         <div 
           v-for="(item, index) in helpItems" 
           :key="index"
-          class="flex items-center justify-between"
+          class="flex items-center justify-between text-16"
           :class="{'mt-15': index > 0}"
+          @click="onRoute(item.path)"
         >
           <div v-if="item.button" class="flex items-center" @click="loginOut">
             <img :src="`${item.icon}`" class="w-20 h-20">
             <div class="ml-10">{{ item.title }}</div>
           </div>
-          <div v-else class="flex items-center" @click="onRoute(item.path)">
+          <div v-else class="flex items-center">
             <img :src="`${item.icon}`" class="w-20 h-20">
             <div class="ml-10">{{ item.title }}</div>
           </div>
@@ -81,29 +83,31 @@
 
 const router = useRouter()
 const userStore = useUserStore()
-const status = ref(null)
+const status = ref([t('未认证'),t("审核中"),t("已认证"),t("审核未通过")])
 const kycHighStatus = ref(null)
+// kyc_status
 
 // 账户详情选项数据
 const accountItems = ref([
   // { icon: 'icon-option.png', title: '貨幣訂單' , path: '/position/index'},
-  { icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: '現貨訂單' , path: '/position/index'},
-  { icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: '帳單' , path:'/cryptos/accountChange'},
-  { icon: new URL('../../assets/img/icon-wallet.png', import.meta.url), title: '錢包', path: '/payMentMethod/list'},
-  { icon: new URL('../../assets/img/icon-real.png', import.meta.url), title: '實名認證', status: '未認證' , path: '/certificationCenter'},
-  { icon: new URL('../../assets/img/icon-small-language.png', import.meta.url), title: '語言', status: '中文繁體', path: '/language' },
-  { icon: new URL('../../assets/img/icon-small-password.png', import.meta.url), title: '修改密碼', path: '/changePassword'},
-  { icon: new URL('../../assets/img/icon-small-password.png', import.meta.url), title: '修改提現密碼', path: '/changeFundsPassword' } 
+  { icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: t('现货订单') , path: '/position/index'},
+  { icon: new URL('../../assets/img/icon-option.png', import.meta.url), title: t('账变记录') , path:'/cryptos/accountChange'},
+  { icon: new URL('../../assets/img/icon-wallet.png', import.meta.url), title: t('银行卡'), path: '/payMentMethod/list'},
+  { icon: new URL('../../assets/img/icon-real.png', import.meta.url), title: t('实名认证'), status: status.value[userStore.userInfo.kyc_status] , path: '/certificationCenter'},
+  { icon: new URL('../../assets/img/icon-small-language.png', import.meta.url), title: t('语言'), status: JSON.parse(localStorage.getItem('lang_tit')), path: '/language' },
+  { icon: new URL('../../assets/img/icon-small-password.png', import.meta.url), title: t('修改密码'), path: '/changePassword'},
+  { icon: new URL('../../assets/img/icon-small-password.png', import.meta.url), title: t('修改资金密码'), path: '/changeFundsPassword' } 
 ]);
 
 // 帮助和支持选项数据
 const helpItems = ref([
   // { icon: 'icon-market.png', title: '市場模式' },
-  { icon: new URL('../../assets/img/icon-service.png', import.meta.url), title: '線上客服', path: '/customerService' },
+  // 客服
+  { icon: new URL('../../assets/img/icon-service.png', import.meta.url), title: t('onLineService'), path: '/customerService' },
   // { icon: 'icon-service.png', title: '專屬客服' },
-  { icon: new URL('../../assets/img/icon-about.png', import.meta.url), title: '關於我們', path: '/aboutUs' },
+  { icon: new URL('../../assets/img/icon-about.png', import.meta.url), title: t('关于我们'), path: '/aboutUs' },
   // { icon: 'icon-logout.png', title: '下載 APP' },
-  { icon: new URL('../../assets/img/icon-logout.png', import.meta.url), title: '註銷', button: true  }
+  { icon: new URL('../../assets/img/icon-logout.png', import.meta.url), title: t('退出'), button: true  }
 ]);
 
 const state = reactive({
diff --git a/src/views/news/index.vue b/src/views/news/index.vue
index 185cf77..f5bfdde 100644
--- a/src/views/news/index.vue
+++ b/src/views/news/index.vue
@@ -30,7 +30,7 @@
 
   <!-- 热门货币卡片部分 -->
   <div class="mt-10">
-    <div class="block text-22 font-medium px-17">熱門</div>
+    <div class="block text-22 font-medium px-17">{{ t('热门') }}</div>
     <div class="flex overflow-x-auto mt-10 px-17">
       <!-- DOGE/USDT 卡片 -->
       <div class="w-140 h-160 mr-10 flex-none rounded-15 text-black" v-for="(item, index) in hotItems" :key="item"
@@ -61,25 +61,25 @@
       <div class="w-40 h-40 rounded-full flex items-center justify-center">
         <img class="w-33 h-33" src="@/assets/a.jpg" draggable="false">
       </div>
-      <div class="text-center">理財</div>
+      <div class="text-center">{{t('理財')}}</div>
     </div>
     <div class="flex-1 flex flex-col items-center">
-      <div class="w-40 h-40 rounded-full flex items-center justify-center">
+      <!-- <div class="w-40 h-40 rounded-full flex items-center justify-center">
         <img class="w-33 h-33" src="@/assets/c.jpg" draggable="false">
       </div>
-      <div class="text-center">模拟交易</div>
+      <div class="text-center">模拟交易</div> -->
     </div>
     <div class="flex-1 flex flex-col items-center" @click="copyInviteLink">
       <div class="w-40 h-40 rounded-full flex items-center justify-center">
         <img class="w-33 h-33" src="@/assets/d.jpg" draggable="false">
       </div>
-      <div class="text-center">好友邀请</div>
+      <div class="text-center">{{t('邀请好友')}}</div>
     </div>
   </div>
 
   <!-- 新手指南部分 -->
   <div class="mt-20 mx-17 h-50 rounded-5 bg-#d8f0dd font-500 flex items-center justify-between text-16 px-15" @click="goToExplanation">
-    <span>新手指南</span>
+    <span>{{t('新手')}}</span>
     <div class="i-material-symbols:arrow-right-alt-rounded text-20"></div>
   </div>
 
@@ -91,7 +91,7 @@
 
   <div class="mt-20">
     <div class="flex items-end justify-between px-17">
-      <span class="block text-22 font-medium">新聞</span>
+      <span class="block text-22 font-medium">{{t('news')}}</span>
     </div>
     <div class="px-17 mt-10">
       <!-- 新闻条目1 -->
@@ -99,13 +99,13 @@
         <div class="bg-#f5f7f9 py-12 px-15 " @click="openOriginUrl(t.originUrl)">
           <div class="flex" style="border-bottom: 1px solid rgb(209, 209, 209);">
             <div class="text-12 h-70 flex-1 line3">{{ t.description }}</div>
-            <img class="w-90 h-55 flex-none rounded-10 ml-10"
+            <!-- <img class="w-90 h-55 flex-none rounded-10 ml-10"
               :src="t.img"
-              draggable="false">
+              draggable="false"> -->
           </div>
           <div class="mt-5 text-10 text-#8c8c8c flex justify-between">
             <span>{{t.createTime}}</span>
-            <div>全球股市</div>
+            <!-- <div>全球股市</div> -->
           </div>
         </div>
       </div>
diff --git a/src/views/optional/index.vue b/src/views/optional/index.vue
index 2b5bc5f..714a89d 100644
--- a/src/views/optional/index.vue
+++ b/src/views/optional/index.vue
@@ -1,17 +1,17 @@
 <template>
 <div class="status_bar">
   <div class="my-20 mx-17 h-172 box-border text-white pt-40 px-20 bgimglx">
-    <div class="text-17 font-medium block">帳戶總金額</div>
+    <div class="text-17 font-medium block">{{ t('总额') }}</div>
     <div class="text-34 font-medium block">{{symbol}}</div>
     <div class="flex items-center mt-20">
       <div class="flex items-center rounded-14 bg-#3640f0 px-10">
-        <div class="text-13 font-bold">儲值</div>
+        <div class="text-13 font-bold">{{ t('充值') }}</div>
       </div>
       <div class="flex items-center rounded-14 bg-#3640f0 px-10 ml-10">
-        <div class="text-13 font-bold">提現</div>
+        <div class="text-13 font-bold">{{ t('提现') }}</div>
       </div>
       <div class="flex items-center rounded-14 bg-#3640f0 px-10 ml-10">
-        <div class="text-13 font-bold">兌換</div>
+        <div class="text-13 font-bold">{{ t('兑换') }}</div>
       </div>
       <div class="flex flex-1 justify-end">
         <img src="@/assets/imgs/icon-order.png" class="w-14 h-15" draggable="false">
@@ -34,15 +34,15 @@
     </div>
     <div class="text-12 pt-10">
       <div class="flex justify-between items-center">
-        <div style="color: rgb(150, 150, 150);">可用({{ currency.name }})</div>
+        <div style="color: rgb(150, 150, 150);">{{t('可用')}}({{ currency.name }})</div>
         <div class="title text-blue-600">{{ currency.mark_price }}</div>
       </div>
       <div class="my-16 flex justify-between items-center">
-        <div style="color: rgb(150, 150, 150);">處理中({{ currency.name }})</div>
+        <div style="color: rgb(150, 150, 150);">{{ t('处理中') }}({{ currency.name }})</div>
         <div>{{ 0 }}</div>
       </div>
       <div class="flex justify-between items-center">
-        <div style="color: rgb(150, 150, 150);">轉換(USDT)</div>
+        <div style="color: rgb(150, 150, 150);">{{ t('转换') }}(USDT)</div>
         <div></div>
       </div>
     </div>
@@ -56,6 +56,8 @@
 <script setup>
 import { ref, onMounted } from 'vue';
 import { _getContractBySymbolType, _contractOrder } from '@/service/etf.api';
+import { useI18n } from "vue-i18n";
+const { t } = useI18n()
 
 
 onMounted(() => {
diff --git a/src/views/quotes/ConstituentDetail.vue b/src/views/quotes/ConstituentDetail.vue
index 15dbd5e..c675b51 100644
--- a/src/views/quotes/ConstituentDetail.vue
+++ b/src/views/quotes/ConstituentDetail.vue
@@ -724,7 +724,7 @@
       }
 
       .buy-btn {
-        background: #5BB989;
+        background: #3a7ff6;
         margin-right: 20px;
       }
     }
diff --git a/src/views/quotes/Detail.vue b/src/views/quotes/Detail.vue
index c603844..e32e7ff 100644
--- a/src/views/quotes/Detail.vue
+++ b/src/views/quotes/Detail.vue
@@ -1053,7 +1053,7 @@
       }
 
       .buy-btn {
-        background: #5BB989;
+        background: #3a7ff6;
         margin-right: 20px;
       }
     }
diff --git a/src/views/usStock/ConstituentDetail.vue b/src/views/usStock/ConstituentDetail.vue
index 1b7c7b8..50faa3a 100644
--- a/src/views/usStock/ConstituentDetail.vue
+++ b/src/views/usStock/ConstituentDetail.vue
@@ -705,7 +705,7 @@
       }
 
       .buy-btn {
-        background: #5BB989;
+        background: #3a7ff6;
         margin-right: 20px;
       }
     }
diff --git a/src/views/usStock/Detail.vue b/src/views/usStock/Detail.vue
index ce951cf..a5d70a4 100644
--- a/src/views/usStock/Detail.vue
+++ b/src/views/usStock/Detail.vue
@@ -1029,7 +1029,7 @@
       }
 
       .buy-btn {
-        background: #5BB989;
+        background: #3a7ff6;
         margin-right: 20px;
       }
     }
diff --git a/tailwind.config.cjs b/tailwind.config.cjs
index 7047b69..9d0581f 100644
--- a/tailwind.config.cjs
+++ b/tailwind.config.cjs
@@ -14,8 +14,8 @@
         gray: '#333333', // 文字颜色
         'btn-gray': '#F1F3F9', // 背景灰
         'bd-gray': '#C3C4CD', // 下单border
-        up: '#06CDA5',  // 升
-        down: '#F43368' // 降
+        up: '#3a7ff6',  // 升
+        down: '#de5d56' // 降
       }
     },
   },

--
Gitblit v1.9.3