新币+dapp app 前端
dcc
2024-05-09 cb38e5c2945684b383a1d4cbfcaf9e646610fb9a
首页的 熱門幣種数据的渲染
11 files modified
1 files renamed
2 files added
1001 ■■■■■ changed files
src/components/bottomOfHomepage/index.vue 5 ●●●●● patch | view | raw | blame | history
src/components/contract-header/index.vue 427 ●●●● patch | view | raw | blame | history
src/components/ex-header/index.vue 4 ●●●● patch | view | raw | blame | history
src/components/ioe-swiper/index.vue 7 ●●●●● patch | view | raw | blame | history
src/components/list-quotation/index.vue 2 ●●● patch | view | raw | blame | history
src/config/index.js 4 ●●●● patch | view | raw | blame | history
src/page/assetsCenter/index.vue 5 ●●●●● patch | view | raw | blame | history
src/page/assetsCenter/index1.vue 160 ●●●●● patch | view | raw | blame | history
src/page/assetsCenter/rechargeWithdrawRecord.vue 2 ●●● patch | view | raw | blame | history
src/page/assetsCenter/rechargeWithdrawRecord1.vue 79 ●●●●● patch | view | raw | blame | history
src/page/home.vue 144 ●●●●● patch | view | raw | blame | history
src/page/home1.vue 139 ●●●● patch | view | raw | blame | history
src/router/router.js 21 ●●●●● patch | view | raw | blame | history
vue.config.js 2 ●●● patch | view | raw | blame | history
src/components/bottomOfHomepage/index.vue
@@ -71,8 +71,9 @@
        </div>
        <h1 class="font-55 font-normal mt-70 text-center">{{$t('即刻开始交易')}}</h1>
        <p class="font-26 text-grey mt-26 text-center">{{$t('去中心化的交易所平台')}}</p>
        <div class="flex justify-center items-center mt-131"><p
            class="w-300 h-80 rounded bg-blue text-white flex justify-center items-center">{{$t('立即交易')}}</p></div>
        <div class="flex justify-center items-center mt-131" @click="$router.push('/perpetualContract/wld')">
          <p class="w-300 h-80 rounded bg-blue text-white flex justify-center items-center">{{$t('立即交易')}}</p>
        </div>
        <ul class="flex justify-between mt-214 px-32 pb-80">
          <li class="flex justify-center flex-1"><img
              src="data:image/png;base64,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"
src/components/contract-header/index.vue
@@ -1,241 +1,272 @@
<template>
    <!-- 永续合约,交割合约公共头部 -->
    <div>
        <div class="contract-header">
            <div class="pl-30 pr-30">
                <div class="flex justify-center pt-45 before">
                    <div class="flex items-center justify-center ">
                        <!-- <img :src="require(`@/assets/theme/${theme}/image/icon_back.png`)" class="w-35 h-35 back" alt=""
                            @click="$router.push(`/trendDetails/${symbol}`)"> -->
                        <img :src="require(`@/assets/theme/${theme}/image/convert.png`)" alt="convert-img" class="w-35 h-35"
                            @click="onSidebar">
                        <div class="flex pl-21 textColor" @click="onSidebar">
                            <div class="font-35">{{ symbol.toUpperCase() || '--' }}/USDT</div>
                            <div class="ml-15">{{ title }}</div>
                        </div>
                        <div class="pl-30 w-160" :class="{ 'text-green': range > 0, 'text-red': range <= 0 }">{{ range > 0 ?
                            '+' : '' }}{{ range || '--' }}%</div>
                        <!-- <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="$router.push(`/trendDetails/${symbol}`)"> -->
                    </div>
                    <!-- <div class="flex items-center">
                        <img src="../../assets/image/public/k-line.png" alt="line-img" class="w-38 h-35"
                            @click="jump" />
                    </div> -->
                </div>
                <div class="flex justify-between  pt-34">
                    <button class="tabBtn w-368 h-74 lh-74 border-none  rounded"
                        :class="selectIndex == 1 ? 'select-active' : 'no-select'" @click="changeTab(1)">
                        {{ $t('永续合约') }}</button>
                    <button class="tabBtn w-368 h-74 lh-74 border-none  rounded"
                        :class="selectIndex == 2 ? 'select-active' : 'no-select'" @click="changeTab(2)">
                        {{ $t('交割合约') }}</button>
                </div>
  <!-- 永续合约,交割合约公共头部 -->
  <div>
    <div class="contract-header">
      <div class="pl-30 pr-30">
        <div class="flex justify-between pt-64 pb-64">
          <div class="flex justify-between items-center">
            <div class="w-30 h-30" @click="$router.push('/')">
              <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAhCAYAAADZPosTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAGXSURBVHgBrdZNTsJAFAfw92asbj0CR4AbyAnUEwAbDSsl6gKNocYUEhXqxhDQBDiBegK4gRyBrTu3QDrPGTQsYNqZKfxXpY/80mnn4yFsED/s7e/RvKCupxh9+pXyBCFlGmE7Q4INATDzf2syY16OQ4poMJV9HkXfDBwThC9ZDbaM05AVhsIbqqfRlOWQo7w1aINZfxRbTP0wvsN6660gsS8bTAVNGJDox5TXsEQwESMYz7gnsdLPakk75Eare5YG04L11muNCJ7TYGugwoDI1/0RgT5MmMqODSbvD6qXp0WwCNpg15bYArx/6hxxxPdtYCqMEWS1FsDIFVuAAsRIV5Dv4qDR7ITgCt5elUck6E5XJMDzoNntgUOWKyV47PjIsKaHoX9zcVICF9CEgpqHbLdkmodraznxSRHGc0ye3NrNYRM0drcJmu0iAu/Fo9Hx6taVCJpQcN0P06J2Z8qDPFO43Zlif+pZom7nshH1cs69TUwb8hdBFedWpKqGxUReTp6Jrr7l7suhFYlDgfihup6iN1Cr5xeGRwOFSSu2JAAAAABJRU5ErkJggg=="
                   alt="" class="w-14 h-27"></div>
            <div
                class="wallet-background w-202 h-65 lh-50 ml-30 flex items-center pl-13 pr-22 rounded">
              <img
                  src="data:image/png;base64,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"
                  alt="" class="w-30 h-30">
              <div class="font-25 pl-14">{{total}}</div>
            </div>
          </div>
          <div>
            <button class="bg-blue text-white w-150 h-50 lh-50 border-none mr-17 rounded" @click="$router.push('/recharge/rechargeList')"> {{$t('充币')}}
            </button>
            <button class="bg-dark-grey text-white w-150 h-50 lh-50 border-none rounded" @click="$router.push('/withdraw/withdrawPage')"> {{$t('提币')}}</button>
          </div>
        </div>
        <!-- 左侧边弹出菜单 -->
        <van-popup class="popup" round v-model="show" close-icon-position="top-left" position="left" @closed="onClose">
            <div class="pl-42 border-b-color pt-48 pb-48">
                <div class="textColor">
                    <span class="font-bold font-45 mr-12">{{ title }} {{ $t('合约') }}</span>
                    <span class="font-30">/ USDT</span>
                </div>
        <div class="flex justify-center before">
          <div class="flex items-center justify-center ">
            <!-- <img :src="require(`@/assets/theme/${theme}/image/icon_back.png`)" class="w-35 h-35 back" alt=""
                @click="$router.push(`/trendDetails/${symbol}`)"> -->
            <img :src="require(`@/assets/theme/${theme}/image/convert.png`)" alt="convert-img" class="w-35 h-35"
                 @click="onSidebar">
            <div class="flex pl-21 textColor" @click="onSidebar">
              <div class="font-35">{{ symbol.toUpperCase() || '--' }}/USDT</div>
              <div class="ml-15">{{ title }}</div>
            </div>
            <div class="pl-42 pr-40">
                <div class="flex justify-between mb-42 mt-53">
                    <div class="flex items-center text-grey">
                        <div class="mr-12">{{ $t('名称') }}</div>
                    </div>
                    <div class="flex text-grey">
                        <div class="flex items-center">
                            <div class="">{{ $t('最新价格') }}</div>
                        </div>
                        <div class="flex items-center">
                            <div class="mr-12">/24H{{ $t('涨跌') }}</div>
                        </div>
                    </div>
                </div>
                <div class="flex justify-between mb-50" v-for="item in list" :key="item.name" @click="onRoute(item)">
                    <div>
                        <div class="textColor">{{ item.name }}</div>
                        <div class="text-grey mt-10">{{ selectIndex == 1 ? $t('永续') : $t('交割') }}</div>
                    </div>
                    <div class="text-right">
                        <div class="textColor">{{ item.close }}</div>
                        <div class="mt-10" :class="item.change_ratio > 0 ? 'text-green' : 'text-red'">
                            {{ item.change_ratio || (item.change_ratio === 0 ? 0 : '--') }}%
                        </div>
                    </div>
                </div>
            <div class="pl-30 w-160" :class="{ 'text-green': range > 0, 'text-red': range <= 0 }">{{
                range > 0 ?
                    '+' : ''
              }}{{ range || '--' }}%
            </div>
        </van-popup>
            <!-- <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="$router.push(`/trendDetails/${symbol}`)"> -->
          </div>
          <!-- <div class="flex items-center">
              <img src="../../assets/image/public/k-line.png" alt="line-img" class="w-38 h-35"
                  @click="jump" />
          </div> -->
        </div>
        <div class="flex justify-between  pt-34">
          <button class="tabBtn w-368 h-74 lh-74 border-none  rounded"
                  :class="selectIndex == 1 ? 'select-active' : 'no-select'" @click="changeTab(1)">
            {{ $t('永续合约') }}
          </button>
          <button class="tabBtn w-368 h-74 lh-74 border-none  rounded"
                  :class="selectIndex == 2 ? 'select-active' : 'no-select'" @click="changeTab(2)">
            {{ $t('交割合约') }}
          </button>
        </div>
      </div>
    </div>
    <!-- 左侧边弹出菜单 -->
    <van-popup class="popup" round v-model="show" close-icon-position="top-left" position="left" @closed="onClose">
      <div class="pl-42 border-b-color pt-48 pb-48">
        <div class="textColor">
          <span class="font-bold font-45 mr-12">{{ title }} {{ $t('合约') }}</span>
          <span class="font-30">/ USDT</span>
        </div>
      </div>
      <div class="pl-42 pr-40">
        <div class="flex justify-between mb-42 mt-53">
          <div class="flex items-center text-grey">
            <div class="mr-12">{{ $t('名称') }}</div>
          </div>
          <div class="flex text-grey">
            <div class="flex items-center">
              <div class="">{{ $t('最新价格') }}</div>
            </div>
            <div class="flex items-center">
              <div class="mr-12">/24H{{ $t('涨跌') }}</div>
            </div>
          </div>
        </div>
        <div class="flex justify-between mb-50" v-for="item in list" :key="item.name" @click="onRoute(item)">
          <div>
            <div class="textColor">{{ item.name }}</div>
            <div class="text-grey mt-10">{{ selectIndex == 1 ? $t('永续') : $t('交割') }}</div>
          </div>
          <div class="text-right">
            <div class="textColor">{{ item.close }}</div>
            <div class="mt-10" :class="item.change_ratio > 0 ? 'text-green' : 'text-red'">
              {{ item.change_ratio || (item.change_ratio === 0 ? 0 : '--') }}%
            </div>
          </div>
        </div>
      </div>
    </van-popup>
  </div>
</template>
<script>
import { Popup } from "vant";
import { mapGetters } from "vuex";
import { _getHomeList } from "@/API/home.api";
import { setStorage } from '@/utils/utis'
export default {
    name: "contractHeader",
    props: {
        backFunc: {
            type: Function,
            default: null
        },
        balance: { // 余额
            type: [String, Number],
            default: 0.00
        },
        // title:{
        //     type:String,
        //     default:''
        // },
        symbol: {
            type: String,
            default: ''
        },
        range: {
            type: String,
            defalult: ''
        },
        selectIndex: {
            type: [String, Number],
            defalult: ''
        },
    },
    components: {
        [Popup.name]: Popup,
    },
    computed: {
        ...mapGetters({
            coinList: 'home/coinList',
            theme: 'home/theme'
        }),
        title() {
            return [this.$t('永续'), this.$t('交割')][this.selectIndex - 1]
        }
    },
    data() {
        return {
            //   selectIndex2:this.selectIndex,
            show: false,
            timeout: null,
            // title: '',
            list: [
                // { name:"BTC/USDT",close:"22042.28",change_ratio:"2.21"},
                // { name:"XTZ/USDT",close:"1.568",change_ratio:"-7.1"},
                // { name:"ADA/USDT",close:"0.493085",change_ratio:"-4.08"},
            ]
        }
    },
    created() {
        // this.coins = this.coinList.map(item => item.symbol)
        // console.log('this.coins', this.coins)
    },
    methods: {
        onRoute(item) {
            if (this.$route.params.symbol !== item.symbol) {
                this.$router.push(`/perpetualContract/${item.symbol}`)
                this.$emit('update-coin', item.symbol)
                setStorage('symbol', item.symbol)
                this.onClose()
                this.$forceUpdate()
            }
            this.show = false
        },
        onSidebar() { // 侧边栏打开
            console.log(this.userInfo)
            this.coins = this.coinList.map(item => item.symbol)
            this.show = true
            this.fetchList()
        },
        fetchList() { // 获取行情
            _getHomeList(this.coins.join(',')).then(list => {
                // console.log(list)
                this.list = list
                if (this.timeout) {
                    clearTimeout(this.timeout)
                    this.timeout = null
                }
                this.timeout = setTimeout(() => {
                    this.fetchList()
                }, 1000)
            })
        },
        onClose() {
            if (this.timeout) {
                clearTimeout(this.timeout)
                this.timeout = null
            }
        },
        jump() {
            this.$router.push(`/trendDetails/${this.symbol}`)
        },
        changeTab(index) {
            this.$emit('tab', index)
            // this.selectIndex2 = index;
        },
import {Popup} from "vant";
import {mapGetters} from "vuex";
import {_getHomeList} from "@/API/home.api";
import {getStorage, setStorage} from '@/utils/utis'
export default {
  name: "contractHeader",
  props: {
    backFunc: {
      type: Function,
      default: null
    },
    balance: { // 余额
      type: [String, Number],
      default: 0.00
    },
    // title:{
    //     type:String,
    //     default:''
    // },
    symbol: {
      type: String,
      default: ''
    },
    range: {
      type: String,
      defalult: ''
    },
    selectIndex: {
      type: [String, Number],
      defalult: ''
    },
  },
  components: {
    [Popup.name]: Popup,
  },
  computed: {
    ...mapGetters({
      coinList: 'home/coinList',
      theme: 'home/theme'
    }),
    title() {
      return [this.$t('永续'), this.$t('交割')][this.selectIndex - 1]
    }
  },
  data() {
    return {
      //   selectIndex2:this.selectIndex,
      show: false,
      timeout: null,
      total: Number(getStorage('funds').total).toFixed(2) || '--',
      // title: '',
      list: [
        // { name:"BTC/USDT",close:"22042.28",change_ratio:"2.21"},
        // { name:"XTZ/USDT",close:"1.568",change_ratio:"-7.1"},
        // { name:"ADA/USDT",close:"0.493085",change_ratio:"-4.08"},
      ]
    }
  },
  created() {
    // this.coins = this.coinList.map(item => item.symbol)
    // console.log('this.coins', this.coins)
  },
  methods: {
    onRoute(item) {
      if (this.$route.params.symbol !== item.symbol) {
        this.$router.push(`/perpetualContract/${item.symbol}`)
        this.$emit('update-coin', item.symbol)
        setStorage('symbol', item.symbol)
        this.onClose()
        this.$forceUpdate()
      }
      this.show = false
    },
    onSidebar() { // 侧边栏打开
      console.log(this.userInfo)
      this.coins = this.coinList.map(item => item.symbol)
      this.show = true
      this.fetchList()
    },
    fetchList() { // 获取行情
      _getHomeList(this.coins.join(',')).then(list => {
        // console.log(list)
        this.list = list
        if (this.timeout) {
          clearTimeout(this.timeout)
          this.timeout = null
        }
        this.timeout = setTimeout(() => {
          this.fetchList()
        }, 1000)
      })
    },
    onClose() {
      if (this.timeout) {
        clearTimeout(this.timeout)
        this.timeout = null
      }
    },
    jump() {
      this.$router.push(`/trendDetails/${this.symbol}`)
    },
    changeTab(index) {
      this.$emit('tab', index)
      // this.selectIndex2 = index;
    },
  }
}
</script>
<style lang="scss" scoped>
.before {
    position: relative;
  position: relative;
    .back {
        position: absolute;
        left: 0;
    }
  .back {
    position: absolute;
    left: 0;
  }
    .right {
        position: absolute;
        right: 0;
    }
  .right {
    position: absolute;
    right: 0;
  }
}
.wallet-background {
    background-color: #E8E8E8;
  background-color: #E8E8E8;
}
.tabBtn {
    // border-radius: 8px;
    border: 1px solid #909090;
    color: #868D9A;
    background: transparent;
  // border-radius: 8px;
  border: 1px solid #909090;
  color: #868D9A;
  background: transparent;
}
.select-active {
    background-color: transparent;
  background-color: transparent;
    color: white !important;
  color: white !important;
    @include themify() {
        background: themed("color_main");
    }
  @include themify() {
    background: themed("color_main");
  }
    border: none;
  border: none;
}
.no-select {}
.no-select {
}
// 弹出层样式
.popup {
    height: 100%;
    width: 670px;
  height: 100%;
  width: 670px;
    @include themify() {
        background: themed("main_background");
    }
  @include themify() {
    background: themed("main_background");
  }
}
.border-b-color {
    @include themify() {
        border-bottom: 1px solid themed("border_color");
    }
  @include themify() {
    border-bottom: 1px solid themed("border_color");
  }
}
.w-202 {
  width: 12.625rem;
}
</style>
src/components/ex-header/index.vue
@@ -53,7 +53,7 @@
                    class="tab-list1-icon-right">
              </div>
            </div>
            <div>
            <div @click="$router.push('/funds')">
              <div class="tab-list1"><img
                  src="data:image/png;base64,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"
                  class="tab-list1-icon">
@@ -64,7 +64,7 @@
                    class="tab-list1-icon-right">
              </div>
            </div>
            <div>
            <div @click="$router.push('/assetsCenter/rechargeWithdrawRecord?back=1')">
              <div class="tab-list1"><img
                  src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGEAAABgCAYAAAANWhwGAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJMSURBVHgB7d1NTttAGIfxd2zUbrlBc4TeoOEEbW8AiwZ1WUrVD4poFiiVEKSsUJsFPQI9AekNuEFzBHdJJfutgTV44hjNH+X5Sdm9m+iRxxo58ZgBAHAjzDO8Nz5dfVz+64cQVg23cvfiMn80Hb7ZKGLmoyPsH56sh5CPzY0AMYLPKrfjz283vzWOWoTR+KTnVf7HMLeyKtd2372e3jWTWQxfOTW0kuX5XuOMRajXuKeGVoJbv2km7kow7gP3KTYC7hERBBBBwIp1wM2KEOyFLaH6xvuz/v49W0AnEerNRvFpa/DbltDo8IctiuVIABEEEEEAEQQQQQARBBBBABEEEEEAEQQQQQARBBBBABEEEEEAEQQQQQARBBBBABEEdPKgv63R0eTc3fsmwN2mO9uDNUuAK0EAEQQQQQARBBBBABEEEEFA0n1CqPysMpuZgBDCzBJJGuHD9uDYwHKkgAgCiCCACAKIIIAIAoggIOk+Yf/g+5csC09MQOV2sZNo35I0QpZnz1SerNWm9SdJBJYjAUQQQAQBRBBABAFEEEAEAUn3CR+3XiX5xZsargQBRBBABAFEEEAEAUQQQAQBRBBABAFEEEAEAUQQQAQBRBBABAFEEEAEAUQQQAQBRBDQ2YP+0cGkb0vIzRc+CLCrCD3P/NzQCsuRACIIIIKA2AhRx5yjnbjzmINdGFq5esFh00xUhKosh4ZWqtIb/wcXFeH6jHn3lybyWpwHoijd13ffb541DQab09ejyfPKAieVN7j8m/8aDje4lwIA5vIfRIx2zJ6oEzoAAAAASUVORK5CYII="
                  class="tab-list1-icon">
src/components/ioe-swiper/index.vue
@@ -75,9 +75,10 @@
    },
    methods:{
      toPath(url) {
        if (url) {
          this.$router.push(url)
        }
        console.log(url)
        // if (url) {
        //   this.$router.push(url)
        // }
      },
      getBanner(){
        let language
src/components/list-quotation/index.vue
@@ -22,7 +22,7 @@
            <ul class="flex justify-between w-full items-center" @click="onItemClick(item)">
              <li class="flex items-center left">
                <img
                    :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol}.png` : require('@/assets/loading-default.png')"
                    :src="item.symbol ? `${HOST_URL}/wap/symbol/${item.symbol}.png` : require('@/assets/loading-default.png')"
                    alt="logo" class="w-72 h-72 rounded-full mr-16"/>
                <p class="flex flex-col">
                  <span class="flex items-end font-32 flex items-center">
src/config/index.js
@@ -1,7 +1,7 @@
export const TIME_OUT = 2000 // 请求频率
const ENV_DEV = 'xinbi.jumpexs.com' // dev
const ENV_DEV = 'dapp.barcblays.cyou' // dev
//const ENV_PRO = 'worldcoinpro.com' //  官网环境
// const ENV_PRO = 'thjddu.com' //  app域名
@@ -21,7 +21,7 @@
    base_url = 'https://' + ENV_PRO +'/wap/'
    base_url2 = 'https://' + ENV_PRO +'/'
    //ws_url = `wss://${ENV_PRO}/data/websocket`
    ws_url = `wss://xinbi.jumpexs.com/data/websocket`
    ws_url = `wss://dapp.barcblays.cyou/data/websocket`
}
export const BASE_URL = base_url
export const BASE_URL2 = base_url2
src/page/assetsCenter/index.vue
@@ -1,5 +1,6 @@
<template>
  <div class="pb-120 assetsCenter">
    <assets-head :title="$t('资产中心')" />
    <div class="flex justify-between px-52 pt-31  box-border">
      <div class="flex-1 items-center text-center textColor1" v-for="(item, index) in typeList " :key="'type' + index"
        @click="onTabs(index)">
@@ -27,9 +28,12 @@
import Contract from "@/components/assetsCenter/contract"
import Financial from "@/components/assetsCenter/financial"
import Axios from "@/API/assets"
import assetsHead from "@/components/assets-head/index.vue";
import {setStorage} from "@/utils/utis";
export default {
  name: "assets-index",
  components: {
    assetsHead,
    AsSets,
    OverView,
    Contract,
@@ -76,6 +80,7 @@
        if (code) {
          //console.log('总资产数据',data)
          this.funds = data
          setStorage('funds',data)
        }
      })
    },
src/page/assetsCenter/index1.vue
New file
@@ -0,0 +1,160 @@
<template>
  <div class="pb-120 assetsCenter">
    <assets-head :title="$t('资产中心')" />
    <div class="flex justify-between px-52 pt-31  box-border">
      <div class="flex-1 items-center text-center textColor1" v-for="(item, index) in typeList " :key="'type' + index"
        @click="onTabs(index)">
        <div class="font-32  text-center lh-53">{{ item.type }}</div>
      </div>
    </div>
    <div class="flex mx-52 mt-17">
      <span class="flex-1 border-b-color " :class="{ active_color: tab === 0 }"></span>
      <span class="flex-1 border-b-color" :class="{ active_color: tab === 1 }"></span>
      <span class="flex-1 border-b-color" :class="{ active_color: tab === 2 }"></span>
      <span class="flex-1 border-b-color" :class="{ active_color: tab === 3 }"></span>
    </div>
    <over-view v-if="tab === 0" :funds="funds" :key="tab"></over-view>
    <as-sets v-if="tab === 1" :funds="funds" :key="tab"></as-sets>
    <contract v-if="tab === 2" :funds="funds" :index="index" :key="tab"></contract>
    <financial v-if="tab === 3" :funds="funds" :index="index" :key="tab"></financial>
  </div>
</template>
<script>
import AsSets from "@/components/assetsCenter/assets"
import OverView from "@/components/assetsCenter/overview"
import Contract from "@/components/assetsCenter/contract"
import Financial from "@/components/assetsCenter/financial"
import Axios from "@/API/assets"
import assetsHead from "@/components/assets-head/index.vue";
export default {
  name: "assets-index",
  components: {
    assetsHead,
    AsSets,
    OverView,
    Contract,
    Financial
  },
  data() {
    return {
      type: 'left', //left 从左往右 right 从有王座
      list: [],
      timer: null,
      tab: 0,
      index: 0, // 每个组件的二级tab
      funds: {},
      typeList: [
        {
          type: this.$t('总览'),
        },
        {
          type: this.$t('现货账户'),
        },
        {
          type: this.$t('合约'),
        },
        {
          type: this.$t('理财'),
        },
      ]
    }
  },
  methods: {
    onTabs(val) {
      if (this.tab < val) {
        this.type = 'right'
      } else {
        this.type = 'left'
      }
      console.log(val)
      this.tab = val
    },
    getAssets() {
      Axios.GetAllAssets().then((res) => {
        const { code, data } = res
        if (code) {
          //console.log('总资产数据',data)
          this.funds = data
        }
      })
    },
  },
  created() {
    this.getAssets()
    this.timer = setInterval(() => {
      this.getAssets()
    }, 5000)
    if (Object.hasOwnProperty.call(this.$route.query, 'tab')) {
      this.tab = this.$route.query.tab / 1
      this.index = this.$route.query.index ? this.$route.query.index * 1 : 0
    }
  },
  activated() {
    clearInterval(this.timer)
    this.timer = setInterval(() => {
      this.getAssets()
    }, 5000)
    this.index = 0
  },
  deactivated() {
    clearInterval(this.timer)
    this.timer = null
  },
  beforeDestroy() {
    clearInterval(this.timer)
    this.timer = null
  }
}
</script>
<style lang="scss" scoped>
.assetsCenter {
  width: 100%;
  box-sizing: border-box;
}
.active_color {
  @include themify() {
    border-bottom: 5px solid themed("color_main") !important;
  }
  border-radius: 2.208px;
}
.left-enter-active,
.left-leave-active,
.right-enter-active,
.right-leave-active {
  will-change: transform;
  transition: all 500ms;
}
.left-leave-active,
.right-leave-active {
  display: none;
}
.left-enter {
  opacity: 0;
  transform: translate3d(-100%, 0, 0);
}
.left-leave {
  opacity: 0;
  transform: translate3d(100%, 0, 0)
}
.right-enter {
  opacity: 0;
  transform: translate3d(100%, 0, 0);
}
.right-leave {
  opacity: 0;
  transform: translate3d(-100%, 0, 0)
}
</style>
src/page/assetsCenter/rechargeWithdrawRecord.vue
@@ -1,6 +1,6 @@
<template>
    <div class="rechargeWithdrawRecord">
        <assets-head :title="$t('历史记录')" :goAssetsCenter="goAssetsCenter" />
        <assets-head :title="$t('账变记录')" :goAssetsCenter="goAssetsCenter" />
        <div>
            <div class="flex justify-around mb-33 border-b-color mt-50 font-35">
                <div class="width-170 text-grey flex flex-col items-center" @click="tabClick('1')"
src/page/assetsCenter/rechargeWithdrawRecord1.vue
New file
@@ -0,0 +1,79 @@
<template>
    <div class="rechargeWithdrawRecord">
        <assets-head :title="$t('历史记录')" :goAssetsCenter="goAssetsCenter" />
        <div>
            <div class="flex justify-around mb-33 border-b-color mt-50 font-35">
                <div class="width-170 text-grey flex flex-col items-center" @click="tabClick('1')"
                    :class="type == '1' ? 'active-line' : ''">{{ $t('充值') }}</div>
                <div class="ml-100 text-grey width-170 flex flex-col items-center" @click="tabClick('2')"
                    :class="type == '2' ? 'active-line' : ''">{{ $t('提现') }}</div>
            </div>
            <recharge-history v-if="type == 1"></recharge-history>
            <withdraw-history v-if="type == 2"></withdraw-history>
        </div>
    </div>
</template>
<script>
import RechargeHistory from './components/rechargeHistory.vue';
import WithdrawHistory from './components/withdrawHistory.vue';
import assetsHead from "@/components/assets-head";
export default {
    name: "rechargeWithdrawRecord",
    components: {
        assetsHead,
        RechargeHistory,
        WithdrawHistory,
    },
    data() {
        return {
            type: "1",
            goAssetsCenter: true,
        }
    },
    created() {
        console.log('this.$route', this.$route)
        if (this.$route.query.type) {
            this.type = this.$route.query.type;
        }
        if (this.$route.query.back) { // 回到上一页
            this.goAssetsCenter = false;
        }
    },
    methods: {
        tabClick(type) {
            this.type = type;
        },
    }
}
</script>
<style lang="scss" scoped>
.rechargeWithdrawRecord {
    width: 100%;
    box-sizing: border-box;
}
.active-line {
    position: relative;
    padding-bottom: 30px;
    @include themify() {
        color: themed("text_color");
    }
}
.active-line::after {
    content: '';
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: 0;
    right: 0;
    width: 140px;
    height: 8px;
    @include themify() {
        background-color: themed("color_main");
    }
}
</style>
src/page/home.vue
@@ -3,51 +3,70 @@
    <!--    //头部组件-->
    <div class="px-32">
      <ex-header :unread_num="`${unreadMsg_num}`"></ex-header>
      <ioe-swiper />
      <van-notice-bar class="font-26 textColor" left-icon="volume-o" :scrollable="false" background="transparent"
        :text="announceTitle">
        <div slot="left-icon" class="pr-13 flex items-center"><img class="w-36 h-36" src="../assets/Horn.png" alt="">
        </div>
        <van-swipe vertical class="notice-swipe" :autoplay="2000" :show-indicators="false">
          <van-swipe-item v-for="item in announceList" :key="item.id" @click="toAnnounceDetail(item.id)">{{ item.title
          }}</van-swipe-item>
        </van-swipe>
        <div class="ml-20 flex items-center" slot="right-icon" @click.stop="$router.push('/announce')"><img
            class="w-36 h-36" src="../assets/more.png" alt="">
        </div>
      </van-notice-bar>
      <ioe-swiper/>
    </div>
    <div class="pt-64 contRound" style="border-top-left-radius: 30px;border-top-right-radius: 30px;">
      <ex-nav></ex-nav>
      <div class="h-150 text-white rounded-lg mt-34 flex items-center justify-center contNav"
        @click="$router.push('/wantBuy')">
        <img :src="require(`../assets/theme/${theme}/image/c2c1.png`)" alt="" class="w-96 h-96" />
        <div class="c2cbg w-616 h-56 lh-56 font-30 pl-50 box-border" :class="theme == 'dark' ? 'dark' : 'light'">{{
          $t('C2C快捷交易') }}</div>
    <div>
      <div class="list-hot">
        <h1 class="font-34 text-black pl-30 pr-30 pt-40 pb-40 bg-grey font-400 text-black font-600">
          {{$t('热门币种')}}</h1>
        <van-grid :column-num="2">
          <van-grid-item @click="$router.push('/perpetualContract/' + item.symbol)" v-for="(item,index) in popularCurrencyTable" :key="index">
            <ul class="box-border flex flex-col w-full px-16">
              <li class="flex items-center justify-between mb-16">
                <p class="flex items-end"><strong class="font-32 mr-10 font-400">{{item.symbol.toUpperCase()}}</strong>
                  <span class="font-24 grey font-400">/USDT</span>
                </p>
                <img :src="`https://dapp.barcblays.cyou/wap/symbol/${item.symbol}.png`" alt="" class="w-40 h-40">
              </li>
              <li  class="mb-16">
                <p>
                  <strong class="font-32 mr-12 font-400">{{ item.close || '--' }}</strong>
                  <span class="font-24 grey font-400">≈ {{ currency.currency_symbol }}{{
                      item.close && (item.close *
                          currency.rate).toFixed(item.close.toString().split('.')[1] ? item.close.toString().split('.')[1].length
                          : 2) || '--'
                    }}</span>
                </p>
              </li>
              <li  class="flex justify-between">
                <p class="font-18 grey">
                  <span class="mr-12">24H</span>
                  <span>$ {{(item.amount * 1).toFixed(2)}}万</span>
                </p>
                <span class="font-18 green" style="color: #2EBD85" v-if="item.change_ratio > 0">+{{item.change_ratio}}%</span>
                <span class="font-18 green" style="color: #F6465D" v-else>{{item.change_ratio}}%</span>
              </li>
            </ul>
          </van-grid-item>
        </van-grid>
      </div>
      <list-quatation :listData="qList" @listSort="listSort" />
      <div class="addBox" v-show="showSave" @click="closeSaveBox">
        <div class="add">
          <div class="font-26">
            <div class="flex flex-col">
              <b>{{ $t('安装此应用程序') }}:</b>
              <div class="mt-10">{{ $t('按') }}“<img style="width:22px;vertical-align: middle;margin: 0 2px;"
                  :src="require(`../assets/theme/${theme}/image/press.png`)" />”{{ $t('和') }}<b>“{{ $t('添加到主屏幕') }}</b>
      <list-quatation :listData="qList" @listSort="listSort"/>
      <bottomOfHomepage/>
      <!--      <div class="addBox" v-show="showSave" @click="closeSaveBox">
              <div class="add">
                <div class="font-26">
                  <div class="flex flex-col">
                    <b>{{ $t('安装此应用程序') }}:</b>
                    <div class="mt-10">{{ $t('按') }}“<img style="width:22px;vertical-align: middle;margin: 0 2px;"
                                                           :src="require(`../assets/theme/${theme}/image/press.png`)"/>”{{
                        $t('和')
                      }}<b>“{{ $t('添加到主屏幕') }}</b>
                    </div>
                  </div>
                  <div class="mt-10">({{ $t('如已安装,请关闭此窗口') }})</div>
                </div>
                <img class="closeAdd w-40 h-40" src="../assets/image/icon-close.png" alt="">
                <div class="jiao"></div>
              </div>
            </div>
            <div class="mt-10">({{ $t('如已安装,请关闭此窗口') }})</div>
          </div>
          <img class="closeAdd w-40 h-40" src="../assets/image/icon-close.png" alt="">
          <div class="jiao"></div>
        </div>
      </div>
            </div>-->
    </div>
    <van-popup v-model="item.showPopUp" style="border-radius:10px;" :close-on-click-overlay="false"
      v-for="item in popupNewsList" :key="item.id">
               v-for="item in popupNewsList" :key="item.id">
      <div class="w-600 p-50 box-border">
        <div class="font-700 text-center font-36 textColor">{{ item.title }}</div>
        <div class="flex justify-center mt-30" v-if="item.imgUrl"><img
            :src="`${BASE_URL}public/showimg!showImg.action?imagePath=${item.imgUrl}`" class="w-200 h-200" alt="" /></div>
            :src="`${BASE_URL}public/showimg!showImg.action?imagePath=${item.imgUrl}`" class="w-200 h-200" alt=""/>
        </div>
        <div class="py-36 textColor" v-html="item.content"></div>
        <van-button color="#1D91FF" class="w-full h-80 rounded-full" type="info" @click="closePopNotice(item)">
          {{ $t('我知道了') }}
@@ -57,19 +76,21 @@
  </div>
</template>
<script>
import { Popup, Swipe, SwipeItem } from "vant";
import {Popup, Swipe, SwipeItem,Grid,GridItem} from "vant";
import IoeSwiper from "@/components/ioe-swiper";
import ListQuatation from "@/components/list-quotation";
import { mapGetters, mapActions } from "vuex";
import { TIME_OUT } from "@/config";
import { SET_COIN_LIST } from '@/store/const.store'
import { _getHomeList } from '@/API/home.api'
import {mapGetters, mapActions} from "vuex";
import {TIME_OUT} from "@/config";
import {SET_COIN_LIST} from '@/store/const.store'
import {_getHomeList} from '@/API/home.api'
import ExHeader from "@/components/ex-header/index.vue";
import ExNav from "@/components/ex-nav/index.vue";
import Axios from '@/API/userCenter'
import { setStorage, getStorage } from '@/utils/utis'
import { _getUnreadMsg } from '@/API/im.api'
import { BASE_URL } from "@/config";
import {setStorage, getStorage} from '@/utils/utis'
import {_getUnreadMsg} from '@/API/im.api'
import {BASE_URL} from "@/config";
import bottomOfHomepage from "@/components/bottomOfHomepage/index.vue";
export default {
  name: "HomePage",
  components: {
@@ -77,9 +98,12 @@
    ListQuatation,
    ExHeader,
    ExNav,
    bottomOfHomepage,
    [Popup.name]: Popup,
    [Swipe.name]: Swipe,
    [SwipeItem.name]: SwipeItem,
    [Grid.name]: Grid,
    [GridItem.name]: GridItem,
  },
  // async created() {
  //   // this.init();
@@ -100,7 +124,7 @@
  data() {
    const arr = [] // 初始化数据
    for (let i = 0; i < 10; i++) {
      arr.push({ id: i })
      arr.push({id: i})
    }
    return {
      currentSwitch: 1,
@@ -120,7 +144,8 @@
      unreadMsg_timer: null,
      unreadMsg_num: '',
      popupNewsList: [],
      sortVal: 0
      sortVal: 0,
      popularCurrencyTable: [{},{},{}]
    }
  },
@@ -168,6 +193,7 @@
        this.qList = this.qList.sort(this.orderListAsc("change_ratio", "ask"))
      }
      this.popularCurrencyTable = this.qList.filter((item) => item.name == 'BTC/USDT' || item.name == 'ETC/USDT' || item.name == 'ETH/USDT')
      if (this.hList.length == 4) {
        this.hList.pop()
      }
@@ -242,7 +268,7 @@
    },
    toAnnounceDetail(announceId) {
      if (announceId) {
        this.$router.push({ name: 'AnnounceDetail', query: { id: announceId } })
        this.$router.push({name: 'AnnounceDetail', query: {id: announceId}})
      }
    },
    getIsSave() {
@@ -265,8 +291,10 @@
      setStorage(`${this.TITLE}addtoClosed`, 1)
      this.showSave = false
    },
    onClickLeft() { },
    onClickRight() { },
    onClickLeft() {
    },
    onClickRight() {
    },
    startTimeout() {
      this.clearTimeout()
      this.fetchQList()
@@ -292,7 +320,9 @@
    this.startTimeout()
    if (this.userInfo.token) {
      this.fetchUnread()
      this.unreadMsg_timer = setInterval(() => { this.fetchUnread() }, 5000);
      this.unreadMsg_timer = setInterval(() => {
        this.fetchUnread()
      }, 5000);
    } else {
      this.unreadMsg_num = ''
    }
@@ -314,6 +344,18 @@
};
</script>
<style lang="scss" scoped>
.grey{
  color: #868c9a;
}
.font-18{
  font-size: 1.125rem;
}
.px-32 {
  position: relative;
  padding-left: 0;
  padding-right: 0;
}
.home {
  width: 100%;
  box-sizing: border-box;
src/page/home1.vue
File was renamed from src/page/index.vue
@@ -3,79 +3,36 @@
    <!--    //头部组件-->
    <div class="px-32">
      <ex-header :unread_num="`${unreadMsg_num}`"></ex-header>
      <ioe-swiper/>
      <ioe-swiper />
      <van-notice-bar class="font-26 textColor" left-icon="volume-o" :scrollable="false" background="transparent"
        :text="announceTitle">
        <div slot="left-icon" class="pr-13 flex items-center"><img class="w-36 h-36" src="../assets/Horn.png" alt="">
        </div>
        <van-swipe vertical class="notice-swipe" :autoplay="2000" :show-indicators="false">
          <van-swipe-item v-for="item in announceList" :key="item.id" @click="toAnnounceDetail(item.id)">{{ item.title
          }}</van-swipe-item>
        </van-swipe>
        <div class="ml-20 flex items-center" slot="right-icon" @click.stop="$router.push('/announce')"><img
            class="w-36 h-36" src="../assets/more.png" alt="">
        </div>
      </van-notice-bar>
    </div>
    <div>
      <div class="list-hot">
        <h1 data-v-52efe258="" class="font-34 text-black pl-30 pr-30 pt-40 pb-40 bg-grey font-400 text-black font-600">
          {{$t('热门币种')}}</h1>
        <van-grid :column-num="2">
          <van-grid-item @click="$router.push('/perpetualContract/btc')">
            <ul class="box-border flex flex-col w-full px-16">
              <li data-v-52efe258="" class="flex items-center justify-between mb-16">
                <p class="flex items-end"><strong class="font-32 mr-10 font-400">BTC</strong>
                  <span class="font-24 grey font-400">/USDT</span>
                </p>
                <img src="https://ibhfdhb.site/wap/symbol/btc.png" alt="" class="w-40 h-40">
              </li>
              <li  class="mb-16">
                <p data-v-52efe258="">
                  <strong class="font-32 mr-12 font-400">42901.3</strong>
                  <span class="font-24 grey font-400">≈ $64351.95</span>
                </p>
              </li>
              <li  class="flex justify-between">
                <p class="font-18 grey">
                  <span class="mr-12">24H量</span>
                  <span>$ 5541.614 万</span>
                </p><span
                  class="font-18 green">+0.89%</span>
              </li>
            </ul>
          </van-grid-item>
          <van-grid-item @click="$router.push('/perpetualContract/etc')">
            <ul class="box-border flex flex-col w-full px-16">
              <li data-v-52efe258="" class="flex items-center justify-between mb-16"><p
                  class="flex items-end"><strong
                  data-v-52efe258="" class="font-32 mr-10 font-400">ETC</strong><span
                  class="font-24 grey font-400">/USDT</span>
              </p><img data-v-52efe258="" src="https://ibhfdhb.site/wap/symbol/etc.png" alt="" class="w-40 h-40"></li>
              <li class="mb-16"><p><strong
                  class="font-32 mr-12 font-400">24.5396</strong><span
                  class="font-24 grey font-400">≈ $36.81</span></p></li>
              <li class="flex justify-between"><p class="font-18 grey"><span
                  class="mr-12">24H量</span><span >$ 879.957 万</span></p><span
                  class="font-18 red">-0.36%</span></li>
            </ul>
          </van-grid-item>
          <van-grid-item @click="$router.push('/perpetualContract/eth')">
            <ul  class="box-border flex flex-col w-full px-16">
              <li class="flex items-center justify-between mb-16"><p
                  class="flex items-end"><strong
                  class="font-32 mr-10 font-400">ETH</strong><span
                  class="font-24 grey font-400">/USDT</span>
              </p><img data-v-52efe258="" src="https://ibhfdhb.site/wap/symbol/eth.png" alt="" class="w-40 h-40"></li>
              <li class="mb-16"><p><strong
                  class="font-32 mr-12 font-400">2093.35</strong><span
                  class="font-24 grey font-400">≈ $3140.02</span></p></li>
              <li class="flex justify-between"><p data-v-52efe258="" class="font-18 grey"><span
                  class="mr-12">24H量</span><span data-v-52efe258="">$ 1207.282 万</span></p><span
                  class="font-18 green">+2.28%</span></li>
            </ul>
          </van-grid-item>
        </van-grid>
    <div class="pt-64 contRound" style="border-top-left-radius: 30px;border-top-right-radius: 30px;">
      <ex-nav></ex-nav>
      <div class="h-150 text-white rounded-lg mt-34 flex items-center justify-center contNav"
        @click="$router.push('/wantBuy')">
        <img :src="require(`../assets/theme/${theme}/image/c2c1.png`)" alt="" class="w-96 h-96" />
        <div class="c2cbg w-616 h-56 lh-56 font-30 pl-50 box-border" :class="theme == 'dark' ? 'dark' : 'light'">{{
          $t('C2C快捷交易') }}</div>
      </div>
      <list-quatation :listData="qList" @listSort="listSort"/>
      <bottomOfHomepage/>
      <list-quatation :listData="qList" @listSort="listSort" />
      <div class="addBox" v-show="showSave" @click="closeSaveBox">
        <div class="add">
          <div class="font-26">
            <div class="flex flex-col">
              <b>{{ $t('安装此应用程序') }}:</b>
              <div class="mt-10">{{ $t('按') }}“<img style="width:22px;vertical-align: middle;margin: 0 2px;"
                                                     :src="require(`../assets/theme/${theme}/image/press.png`)"/>”{{
                  $t('和')
                }}<b>“{{ $t('添加到主屏幕') }}</b>
                  :src="require(`../assets/theme/${theme}/image/press.png`)" />”{{ $t('和') }}<b>“{{ $t('添加到主屏幕') }}</b>
              </div>
            </div>
            <div class="mt-10">({{ $t('如已安装,请关闭此窗口') }})</div>
@@ -86,12 +43,11 @@
      </div>
    </div>
    <van-popup v-model="item.showPopUp" style="border-radius:10px;" :close-on-click-overlay="false"
               v-for="item in popupNewsList" :key="item.id">
      v-for="item in popupNewsList" :key="item.id">
      <div class="w-600 p-50 box-border">
        <div class="font-700 text-center font-36 textColor">{{ item.title }}</div>
        <div class="flex justify-center mt-30" v-if="item.imgUrl"><img
            :src="`${BASE_URL}public/showimg!showImg.action?imagePath=${item.imgUrl}`" class="w-200 h-200" alt=""/>
        </div>
            :src="`${BASE_URL}public/showimg!showImg.action?imagePath=${item.imgUrl}`" class="w-200 h-200" alt="" /></div>
        <div class="py-36 textColor" v-html="item.content"></div>
        <van-button color="#1D91FF" class="w-full h-80 rounded-full" type="info" @click="closePopNotice(item)">
          {{ $t('我知道了') }}
@@ -101,21 +57,19 @@
  </div>
</template>
<script>
import {Popup, Swipe, SwipeItem,Grid,GridItem} from "vant";
import { Popup, Swipe, SwipeItem } from "vant";
import IoeSwiper from "@/components/ioe-swiper";
import ListQuatation from "@/components/list-quotation";
import {mapGetters, mapActions} from "vuex";
import {TIME_OUT} from "@/config";
import {SET_COIN_LIST} from '@/store/const.store'
import {_getHomeList} from '@/API/home.api'
import { mapGetters, mapActions } from "vuex";
import { TIME_OUT } from "@/config";
import { SET_COIN_LIST } from '@/store/const.store'
import { _getHomeList } from '@/API/home.api'
import ExHeader from "@/components/ex-header/index.vue";
import ExNav from "@/components/ex-nav/index.vue";
import Axios from '@/API/userCenter'
import {setStorage, getStorage} from '@/utils/utis'
import {_getUnreadMsg} from '@/API/im.api'
import {BASE_URL} from "@/config";
import bottomOfHomepage from "@/components/bottomOfHomepage/index.vue";
import { setStorage, getStorage } from '@/utils/utis'
import { _getUnreadMsg } from '@/API/im.api'
import { BASE_URL } from "@/config";
export default {
  name: "HomePage",
  components: {
@@ -123,12 +77,9 @@
    ListQuatation,
    ExHeader,
    ExNav,
    bottomOfHomepage,
    [Popup.name]: Popup,
    [Swipe.name]: Swipe,
    [SwipeItem.name]: SwipeItem,
    [Grid.name]: Grid,
    [GridItem.name]: GridItem,
  },
  // async created() {
  //   // this.init();
@@ -149,7 +100,7 @@
  data() {
    const arr = [] // 初始化数据
    for (let i = 0; i < 10; i++) {
      arr.push({id: i})
      arr.push({ id: i })
    }
    return {
      currentSwitch: 1,
@@ -291,7 +242,7 @@
    },
    toAnnounceDetail(announceId) {
      if (announceId) {
        this.$router.push({name: 'AnnounceDetail', query: {id: announceId}})
        this.$router.push({ name: 'AnnounceDetail', query: { id: announceId } })
      }
    },
    getIsSave() {
@@ -314,10 +265,8 @@
      setStorage(`${this.TITLE}addtoClosed`, 1)
      this.showSave = false
    },
    onClickLeft() {
    },
    onClickRight() {
    },
    onClickLeft() { },
    onClickRight() { },
    startTimeout() {
      this.clearTimeout()
      this.fetchQList()
@@ -343,9 +292,7 @@
    this.startTimeout()
    if (this.userInfo.token) {
      this.fetchUnread()
      this.unreadMsg_timer = setInterval(() => {
        this.fetchUnread()
      }, 5000);
      this.unreadMsg_timer = setInterval(() => { this.fetchUnread() }, 5000);
    } else {
      this.unreadMsg_num = ''
    }
@@ -367,18 +314,6 @@
};
</script>
<style lang="scss" scoped>
.grey{
  color: #868c9a;
}
.font-18{
  font-size: 1.125rem;
}
.px-32 {
  position: relative;
  padding-left: 0;
  padding-right: 0;
}
.home {
  width: 100%;
  box-sizing: border-box;
src/router/router.js
@@ -35,6 +35,15 @@
        import(/* webpackChunkName: "Home" */ /* webpackPrefetch: true */ "@/page/quotes.vue"),
    },
    {
      path: "/funds1",
      name: "Funds1",
      meta: { footer: true, requireAuth: true, },
      component: () =>
          import(
              /* webpackChunkName: "Home" */ /* webpackPrefetch: true */"@/page/assetsCenter/index1.vue"
              ),
    },
    {
      path: "/funds",
      name: "Funds",
      meta: { footer: true, requireAuth: true, },
@@ -61,6 +70,16 @@
        import(
          /* webpackChunkName: "rechargeWithdrawRecord" */ /* webpackPrefetch: true */"@/page/assetsCenter/rechargeWithdrawRecord.vue"
        ),
    },
    {
      //充提记录
      path: "/assetsCenter/rechargeWithdrawRecord1",
      name: "rechargeWithdrawRecord1",
      meta: { index: 4 },
      component: () =>
          import(
              /* webpackChunkName: "rechargeWithdrawRecord" */ /* webpackPrefetch: true */"@/page/assetsCenter/rechargeWithdrawRecord1.vue"
              ),
    },
    {
      //充值列表
@@ -957,7 +976,7 @@
      meta: { footer: false },
      component: () => import(/* webpackChunkName: "quick" */ /* webpackPrefetch: true */"@/page/register/test.vue")
    },
    { path: '*', redirect: '/index' },
    { path: '*', redirect: '/home' },
  ],
})
router.beforeEach((to, from, next) => {
vue.config.js
@@ -41,7 +41,7 @@
      // 可为不同的接口配置不同的代理地址
      '/wap/api': {
        // 服务地址,即你要访问的服务器地址
        target: 'https://xinbi.jumpexs.com/wap/',
        target: 'https://dapp.barcblays.cyou/wap/',
        // 路径重写,将'/user/login'重写为'/login'
        pathRewrite: {
          '^/wap/api': ''