From 349c48e168b9f2580334422228acde7d1b21bede Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Fri, 05 Jun 2026 11:19:15 +0800
Subject: [PATCH] 1

---
 src/views/trade/index.vue |  103 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 56 insertions(+), 47 deletions(-)

diff --git a/src/views/trade/index.vue b/src/views/trade/index.vue
index 9201c55..ac1e74a 100644
--- a/src/views/trade/index.vue
+++ b/src/views/trade/index.vue
@@ -21,7 +21,7 @@
         <span class="time">{{ chartData.market.time_str }}</span>&nbsp;
         <span>{{ chartData.market.time_zone && $t(chartData.market.time_zone) }}</span>
       </p>
-      <div :class="{ slide2: animated1 }" v-if="selectIndex === 1">
+      <div :class="{ slide2: animated1 }" v-if="Number(selectIndex) === 1">
         <section class="value-container" v-if="showMore">
           <div class="flex-l">
             <p class="first-line red">{{ formatMoney(chartData?.close) }}</p>
@@ -215,16 +215,13 @@
       showLength = 7
     },
     initFutrue(val) {
-      if (val) {
-        if (this.$route.query.selectIndex == 2) {
-          if (this.isUpdate) {
-            setTimeout(() => {
-              this.onTopTab(2)
-            })
-            this.isUpdate = false
-          }
-        }
+      if (!val || !this.symbol) return
+      if (Number(this.selectIndex) === 2 && this.curTab && typeof this[this.curTab] === 'function') {
+        this.$nextTick(() => {
+          this[this.curTab](this.symbol)
+        })
       }
+      this.isUpdate = false
     }
   },
   data() {
@@ -259,7 +256,7 @@
         deep: null /// 深度
       },
       curTab: '', // 当前委托还是持有仓位
-      selectIndex: 1, // 当前tab
+      selectIndex: 2, // 当前tab(仅AI量化)
       initFutrue: {}, /// 交割合约
       show: false, // popup
       animated1: false,
@@ -373,36 +370,43 @@
     handleClickShowMore() {
       this.showMore = !this.showMore
     },
-    onTopTab(evt) { // 当前tab 永续/交割
-      this.keyIndex += 1
-      this.selectIndex = evt
+    onTopTab(evt) { // 仅AI量化
+      const tab = Number(evt) === 1 ? 2 : Number(evt)
+      this.syncContractTab(tab, true)
+      if (String(this.$route.query.selectIndex) !== String(tab)) {
+        this.$router.replace({
+          path: this.$route.path,
+          query: { ...this.$route.query, selectIndex: String(tab) }
+        }).catch(() => {})
+      }
+    },
+    syncContractTab(evt, bumpKey = true) {
+      const idx = Number(evt)
+      if (bumpKey) {
+        this.keyIndex += 1
+      }
+      this.selectIndex = idx
       this.clearTimer()
-      if (this.selectIndex / 1 === 1) {
-        //this.curTab = 'fetchOrderListCur'
+      if (idx === 1) {
         this.curTab = 'fetchOrderListHold'
-        // this.animated1 = true
-        // this.timer = setTimeout(() => {
-        //     this.animated1 = false
-        //     clearTimeout(this.timer)
-        // }, 200)
         this.animated2 = true
         this.timer = setTimeout(() => {
           this.animated2 = false
           clearTimeout(this.timer)
         }, 200)
       } else {
-        // this.animated2 = true
-        // this.timer = setTimeout(() => {
-        //     this.animated2 = false
-        //     clearTimeout(this.timer)
-        // }, 200)
+        this.curTab = 'fetchFutrueHoldList'
         this.animated1 = true
         this.timer = setTimeout(() => {
           this.animated1 = false
           clearTimeout(this.timer)
         }, 200)
       }
-      this[this.curTab](this.symbol)
+      if (this.symbol && this.curTab && typeof this[this.curTab] === 'function') {
+        this.$nextTick(() => {
+          this[this.curTab](this.symbol)
+        })
+      }
     },
     onOrdered(evt) { // 下单过后的回调
       this.clearTimer()
@@ -679,28 +683,33 @@
     if (!symbol && catchSymbol) {
       symbol = catchSymbol
     } else if (!symbol && !catchSymbol) {
-      return
+      symbol = 'btcusdt'
+      setStorage('symbol', symbol)
     }
-    if (symbol) {
-      next(vm => {
-        if (selectIndex) {
-          // vm.selectIndex = selectIndex
-          if (vm.selectIndex / 1 === 2) {
-            vm.curTab = 'fetchFutrueHoldList'
-          } else {
-            //vm.curTab = 'fetchOrderListCur'
-            vm.curTab = 'fetchOrderListHold'
-          }
-        } else {
-          //vm.curTab = 'fetchOrderListCur'
-          vm.curTab = 'fetchOrderListHold'
-        }
-        vm.symbol = symbol
-        vm.init(symbol)
-      })
-    } else {
-      next()
+    next(vm => {
+      let idx = selectIndex !== undefined && selectIndex !== null && selectIndex !== ''
+        ? Number(selectIndex)
+        : 2
+      if (idx === 1) idx = 2
+      vm.selectIndex = idx
+      vm.curTab = 'fetchFutrueHoldList'
+      vm.symbol = symbol
+      vm.init(symbol)
+      if (idx === 2) {
+        vm.$nextTick(() => vm.syncContractTab(2, false))
+      }
+    })
+  },
+  beforeRouteUpdate(to, from, next) {
+    const selectIndex = to.query.selectIndex
+    if (selectIndex !== undefined && selectIndex !== null && selectIndex !== '') {
+      let idx = Number(selectIndex)
+      if (idx === 1) idx = 2
+      if (Number(this.selectIndex) !== idx) {
+        this.syncContractTab(idx, true)
+      }
     }
+    next()
   },
   deactivated() {
     this.closeSocket()

--
Gitblit v1.9.3