lxf
2025-07-16 8588fe30f17d0d28190a279aab8675de0dbf1a5b
src/components/fx-footer/index.vue
@@ -1,36 +1,39 @@
<template>
  <div class="relative z-30 footer">
    <!-- 底部 bar -->
    <van-tabbar route v-model="active" active-color="#1194F7" @change="changeIndex" fixed safe-area-inset-bottom>
      <van-tabbar-item name="optional" to="/optional">
        <span :class="[active === 'optional' ? 'active' : '']">{{ $t('Optional') }}</span>
      <van-tabbar-item name="news" to="/news">
        <span :class="[active === 'news' ? 'active' : 'cor_t1']">{{ $t('首页') }}</span>
        <template #icon="props">
          <img :src="props.active ? icon.optional.active : icon.optional.inactive" />
          <img :src="props.active ? icon.news.active : icon.news.inactive" />
        </template>
      </van-tabbar-item>
      <van-tabbar-item name="quotes" to="/quotes">
        <span :class="[active === 'quotes' ? 'active' : '']">{{ $t('quotes') }}</span>
        <span :class="[active === 'quotes' ? 'active' : 'cor_t1']">{{ $t('quotes') }}</span>
        <template #icon="props">
          <img :src="props.active ? icon.quotes.active : icon.quotes.inactive" />
        </template>
      </van-tabbar-item>
      <van-tabbar-item name="trade" to="/trade">
      <!-- /foreign -->
      <!-- <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> -->
      <!-- <van-tabbar-item name="funds" to="/cryptos/funds">
        <span>{{ $t('资金') }}</span>
        <template #icon="props">
          <img :src="props.active ? icon.funds.active : icon.funds.inactive" />
        </template>
      </van-tabbar-item> -->
      <van-tabbar-item name="news" to="/news">
        <span :class="[active === 'news' ? 'active' : '']">{{ $t('news') }}</span>
      <van-tabbar-item name="optional" to="/optional">
        <span :class="[active === 'optional' ? 'active' : 'cor_t1']">{{ $t('资产') }}</span>
        <template #icon="props">
          <img :src="props.active ? icon.news.active : icon.news.inactive" />
          <img :src="props.active ? icon.optional.active : icon.optional.inactive" />
        </template>
      </van-tabbar-item>
      <!-- <van-tabbar-item name="trade" to="/exchange">
        <span>{{ $t('trade') }}</span>
        <template #icon="props">
@@ -38,7 +41,7 @@
        </template>
      </van-tabbar-item> -->
      <van-tabbar-item name="mine" to="/my">
        <span :class="[active === 'mine' ? 'active' : '']">{{ $t('my') }}</span>
        <span :class="[active === 'mine' ? 'active' : 'cor_t1']">{{ $t('my') }}</span>
        <template #icon="props">
          <img :src="props.active ? icon.mine.active : icon.mine.inactive" />
        </template>
@@ -53,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) {
@@ -64,14 +70,18 @@
  active.value = 'news'
} else if (route.path == "/my/index") {
  active.value = 'mine'
} else if (route.path == "/optional/index") {
} else if (route.path == "/foreign/index") {
  active.value = 'optional'
}else if (route.path.startsWith("/foreign/deliveryContract/")) {
  console.log('出现了')
  active.value = 'trade'
}else if (route.path == "/cryptos/funds") {
  active.value = 'funds'
}
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) {
@@ -82,33 +92,36 @@
    active.value = 'mine'
  } else if (route.path == "/optional/index") {
    active.value = 'optional'
  }else if (route.path.startsWith("/foreign/deliveryContract/")) {
  console.log('出现了')
    active.value = 'trade'
  }
})
// 底部列表
const icon = {
  optional: {
    active: new URL('@/assets/imgs/footer/optional-active.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/optional.png', import.meta.url),
    active: new URL('@/assets/imgs/footer/position-select.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/position-unselect.png', import.meta.url),
  },
  quotes: {
    active: new URL('@/assets/imgs/footer/quotes-active.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/quotes.png', import.meta.url),
    active: new URL('@/assets/imgs/footer/quotes-select.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/quotes-unselect.png', import.meta.url),
  },
  news: {
    active: new URL('@/assets/imgs/footer/news-active.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/news.png', import.meta.url),
    active: new URL('@/assets/imgs/footer/home-select.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/home-unselect.png', import.meta.url),
  },
  trade: {
    active: new URL('@/assets/imgs/footer/trade-active.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/trade.png', import.meta.url),
    active: new URL('@/assets/imgs/footer/position-select.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/position-unselect.png', import.meta.url),
  },
  // funds: {
  //   active: new URL('@/assets/imgs/footer/funds-active.png', import.meta.url),
  //   inactive: new URL('@/assets/imgs/footer/funds.png', import.meta.url),
  // },
  mine: {
    active: new URL('@/assets/imgs/footer/menu-active.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/menu.png', import.meta.url),
    active: new URL('@/assets/imgs/footer/mine-select.png', import.meta.url),
    inactive: new URL('@/assets/imgs/footer/mine-unselect.png', import.meta.url),
  }
}
const changeIndex = (index) => {
@@ -122,15 +135,15 @@
}
:deep(.van-tabbar-item--active) {
  background-color: #12192F;
  color: $color_main !important;
  // background-color: #12192F;
  // color: $color_main !important;
}
.van-tabbar--fixed {
  z-index: 10;
  padding-bottom: constant(safe-area-inset-bottom);
  padding-bottom: env(safe-area-inset-bottom);
  background-color: #12192F;
  background-color: #fff;
}
.van-tabbar--fixed::after {
@@ -142,7 +155,10 @@
}
.active {
  color: $blue !important;
  color: #000 !important;
}
.cor_t1{
  color: #333;
}
.footer {