DESKTOP-CVS3R96\我恁爹
2022-11-15 c523ce0e8f371ed6c5a503eaa0a938b202daf8c2
吃屁护
10 files modified
18366 ■■■■■ changed files
build/utils.js 3 ●●●● patch | view | raw | blame | history
package-lock.json 17565 ●●●●● patch | view | raw | blame | history
package.json 2 ●●● patch | view | raw | blame | history
src/App.vue 7 ●●●●● patch | view | raw | blame | history
src/page/home/home.vue 70 ●●●●● patch | view | raw | blame | history
src/page/list/trading-list.vue 612 ●●●●● patch | view | raw | blame | history
src/page/login/components/header.vue 43 ●●●● patch | view | raw | blame | history
src/page/newUser/index.vue 12 ●●●● patch | view | raw | blame | history
src/page/wallet/index.vue 38 ●●●●● patch | view | raw | blame | history
src/router/index.js 14 ●●●●● patch | view | raw | blame | history
build/utils.js
@@ -53,7 +53,8 @@
    if (options.extract) {
      return ExtractTextPlugin.extract({
        use: loaders,
        fallback: 'vue-style-loader'
        fallback: 'vue-style-loader',
        publicPath: '../../',//解决ele小图标出不来问题
      })
    } else {
      return ['vue-style-loader'].concat(loaders)
package-lock.json
Diff too large
package.json
@@ -14,7 +14,6 @@
    "animate.css": "^3.7.2",
    "axios": "^0.19.0",
    "bootstrap": "^4.4.1",
    "vue-i18n": "^8.14.1",
    "chokidar": "^3.3.0",
    "clipboard": "^2.0.4",
    "echarts": "^4.5.0",
@@ -33,6 +32,7 @@
    "vant": "^2.12.51",
    "vue": "^2.5.2",
    "vue-clipboard2": "^0.3.1",
    "vue-i18n": "^8.14.1",
    "vue-photo-preview": "^1.1.3",
    "vue-router": "^3.0.7",
    "vue-svg-icon": "^1.2.9",
src/App.vue
@@ -32,6 +32,10 @@
import elalert from "@/components/elalert.vue";
import foot from "@/components/foot.vue";
import loginPopup from "@/components/loginDialog.vue";
//引入css
import "@/assets/iconfont/iconfont.css";
import "@/assets/iconfont/iconfont.ttf";
export default {
  components: {
    foot,
@@ -263,4 +267,7 @@
/deep/.el-icon-close::before{
    display: none;
}
/deep/.icon-icon_A::before{
 font-size: 0.6rem!important;
}
</style>
src/page/home/home.vue
@@ -9,14 +9,22 @@
        </div>
        <div class="right_search">
          <div>
            <div class="search_con" @click="handleSearchClick()">
              <img :src="Searchs" alt />
            </div>
            <div class="service_con" @click="goOnline()">
              <img :src="Service" alt />
            </div>
            <van-popover v-model="showPopover" trigger="click" placement="bottom-end" :actions="actions"
              @select="onSelect">
              <template #reference>
                <div class="iconfont icon-icon_A">
                </div>
              </template>
            </van-popover>
          </div>
        </div>
      </div>
      <div class="center_tabs">
        <!-- 顶部轮播图 -->
@@ -222,7 +230,7 @@
import Echart from "./components/echart.vue";
import * as api from "@/axios/api";
import Logo from "@/assets/img/icon_home_logo.png";
import Searchs from "@/assets/home/search.png";
import Searchs from "@/assets/ico/leng.png";
import Service from "@/assets/home/icon_talk.png";
import clear from "@/assets/home/close.png";
import Announcement from "@/assets/img/black_laba.png";
@@ -266,7 +274,25 @@
        img: banner3
      }],
      announcementMess: "20202/10 - 交易时间安排",
      navsArr: [{
      artList: [],
      news: "tab_0",
      newsContent1: [],
      newsContent2: [],
      newsContent3: [],
      newsContent4: [],
      onlineService: "",
      isGoTo: false,
      bannerList: [],
      userInfo: [],
      showPopover: false,
      actions: [{ text: 'English', icon: require('@/assets/ico/english.png'), lang: 'en' },
      { text: '简体中文', icon: require('@/assets/ico/Chinese.png') , lang: 'zh-CN'}],
    };
  },
  computed:{
    navsArr(){
      return [{
        img: Tops,
        title: this.$t('hj1'),
      },
@@ -281,20 +307,14 @@
      {
        img: Guanyu,
        title: this.$t('hj4'),
      }],
      artList: [],
      news: "tab_0",
      newsContent1: [],
      newsContent2: [],
      newsContent3: [],
      newsContent4: [],
      onlineService: "",
      isGoTo: false,
      bannerList: [],
      userInfo: [],
    };
      }]
    }
  },
  methods: {
    onSelect(e){
      this.$i18n.locale = e.lang;
      window.localStorage.setItem('language', e.lang);
    },
    async getUserInfo() {
      // 获取用户信息
      let data = await api.getUserInfo();
@@ -381,8 +401,7 @@
      }
    },
    goOnline() {
      window.location.href = this.onlineService;
      this.$router.push('/service');
    },
    async getArtList() {
      let data = await api.getArtList();
@@ -526,7 +545,7 @@
  width: 100%;
  height: 0.7949rem;
  display: flex;
  padding-right: 0.3rem;
  >div {
    width: 50%;
    height: 100%;
@@ -547,17 +566,17 @@
  .right_search {
    justify-content: flex-end;
    width: 50%;
    >div {
      width: 1.6221rem;
      width: 34%;
      height: 0.4615rem;
      display: flex;
      justify-content: space-between;
      margin-right: 0.4615rem;
      >div {
        width: 0.4615rem;
        height: 0.4615rem;
        width: 0.5615rem;
        height: 0.5615rem;
        >img {
          width: 100%;
@@ -1060,4 +1079,5 @@
  }
}
</style>
src/page/list/trading-list.vue
@@ -52,7 +52,7 @@
          <div class="list" :class="isToken == '' ? 'listHeight' : 'listHeights'">
            <van-list v-model="loading" :finished="finished" :finished-text="$t('hj43')" @load="onLoad"
              :immediate-check="false">
              <div class="van-clearfix">
              <div v-if="tabsItemIndex == 0" class="van-clearfix">
                <div class="list_items">
                  <div class="item" v-for="(item, index) in listArr" :key="index"
                    @click="handleGoToKlineDetail(item, index)">
@@ -135,7 +135,424 @@
                  </div>
                </div>
              </div>
              <div  v-if="tabsItemIndex==1" class="van-clearfix">
                <div class="list_items">
                  <div class="item" v-for="(item, index) in listArr1" :key="index"
                    @click="handleGoToKlineDetail(item, index)">
                    <div v-if="(tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5">
                      <div class="left_title">
                        <div class="tp">
                          <span class="collection" @click.stop="options(item)">
                            <span v-show="tabsItemIndex != 5" class="shu"
                              :class="item.isOption == '1' ? 'shublue' : ''"></span>
                            <span v-show="tabsItemIndex == 5" class="shu hongse"></span>
                          </span>
                          <span class="title_color" style="white-space: nowrap;overflow: hidden;">
                            {{ tabsItemIndex == 5 ? item.name : tabsItemIndex ==
                                2 ? item.name : tabsItemIndex == 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.name :
                                item.indexName | getName
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span>
                            {{ tabsItemIndex == 5 ? item.stockType + item.code : tabsItemIndex == 2 ? item.gid :
                                tabsItemIndex
                                  ==
                                  0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.gid : item.indexCode
                            }}
                          </span>
                        </div>
                      </div>
                      <div class="center_price">
                        <div class="tp">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">
                            {{ item.nowPrice
                            }}
                          </span>
                          <span class="price_color" v-else>
                            {{ tabsItemIndex == 5 ? Number(item.price).toFixed(2) :
                                item.currentPoint
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{ tabsItemIndex == 5 ? 'Max:' +
                              Number(item.orderNumber) : $t('hj44') + ':' + Number(item.transFee)
                          }}</span>
                          <span v-else>{{ item.today_min }}</span>
                        </div>
                      </div>
                      <div class="right_bs">
                        <div class="tp" style="justify-content: flex-end;">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span>
                          <span class="price_color" v-if="tabsItemIndex == 1"
                            :class="item.floatRate > 0 ? 'green' : 'red'">
                            {{
                                item.floatRate + '%'
                            }}
                          </span>
                          <!-- <span class="price_color" v-if="tabsItemIndex == 3"
                          :class="((item.nowPrice - item.lastClose) / item.lastClose * 100).toFixed(2) > 0 ? 'green' : 'red'">
                          {{
                              item.lastClose == "" ? 0.00 : ((Number(item.nowPrice) - Number(item.lastClose)) /
                                Number(item.lastClose) * 100).toFixed(2) + '%'
                          }}
                        </span> -->
                          <div v-if="tabsItemIndex == 5" :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'">
                            <!-- {{item.orderNumber}} -->
                            {{ item.type == 1 ? $t('hj45') : $t('hj46') }}
                          </div>
                        </div>
                        <div class="bt" style="justify-content: flex-end;">
                          <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">{{ item.preclose_px }}</div>
                          <!-- class="codeIcon"  item.stock_type.toUpperCase()-->
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
              <div  v-if="tabsItemIndex==2" class="van-clearfix">
                <div class="list_items">
                  <div class="item" v-for="(item, index) in listArr2" :key="index"
                    @click="handleGoToKlineDetail(item, index)">
                    <div v-if="(tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5">
                      <div class="left_title">
                        <div class="tp">
                          <span class="collection" @click.stop="options(item)">
                            <span v-show="tabsItemIndex != 5" class="shu"
                              :class="item.isOption == '1' ? 'shublue' : ''"></span>
                            <span v-show="tabsItemIndex == 5" class="shu hongse"></span>
                          </span>
                          <span class="title_color" style="white-space: nowrap;overflow: hidden;">
                            {{ tabsItemIndex == 5 ? item.name : tabsItemIndex ==
                                2 ? item.name : tabsItemIndex == 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.name :
                                item.indexName | getName
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span>
                            {{ tabsItemIndex == 5 ? item.stockType + item.code : tabsItemIndex == 2 ? item.gid :
                                tabsItemIndex
                                  ==
                                  0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.gid : item.indexCode
                            }}
                          </span>
                        </div>
                      </div>
                      <div class="center_price">
                        <div class="tp">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">
                            {{ item.nowPrice
                            }}
                          </span>
                          <span class="price_color" v-else>
                            {{ tabsItemIndex == 5 ? Number(item.price).toFixed(2) :
                                item.currentPoint
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{ tabsItemIndex == 5 ? 'Max:' +
                              Number(item.orderNumber) : $t('hj44') + ':' + Number(item.transFee)
                          }}</span>
                          <span v-else>{{ item.today_min }}</span>
                        </div>
                      </div>
                      <div class="right_bs">
                        <div class="tp" style="justify-content: flex-end;">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span>
                          <span class="price_color" v-if="tabsItemIndex == 1"
                            :class="item.floatRate > 0 ? 'green' : 'red'">
                            {{
                                item.floatRate + '%'
                            }}
                          </span>
                          <!-- <span class="price_color" v-if="tabsItemIndex == 3"
                          :class="((item.nowPrice - item.lastClose) / item.lastClose * 100).toFixed(2) > 0 ? 'green' : 'red'">
                          {{
                              item.lastClose == "" ? 0.00 : ((Number(item.nowPrice) - Number(item.lastClose)) /
                                Number(item.lastClose) * 100).toFixed(2) + '%'
                          }}
                        </span> -->
                          <div v-if="tabsItemIndex == 5" :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'">
                            <!-- {{item.orderNumber}} -->
                            {{ item.type == 1 ? $t('hj45') : $t('hj46') }}
                          </div>
                        </div>
                        <div class="bt" style="justify-content: flex-end;">
                          <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">{{ item.preclose_px }}</div>
                          <!-- class="codeIcon"  item.stock_type.toUpperCase()-->
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
              <div  v-if="tabsItemIndex==3" class="van-clearfix">
                <div class="list_items">
                  <div class="item" v-for="(item, index) in listArr3" :key="index"
                    @click="handleGoToKlineDetail(item, index)">
                    <div v-if="(tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5">
                      <div class="left_title">
                        <div class="tp">
                          <span class="collection" @click.stop="options(item)">
                            <span v-show="tabsItemIndex != 5" class="shu"
                              :class="item.isOption == '1' ? 'shublue' : ''"></span>
                            <span v-show="tabsItemIndex == 5" class="shu hongse"></span>
                          </span>
                          <span class="title_color" style="white-space: nowrap;overflow: hidden;">
                            {{ tabsItemIndex == 5 ? item.name : tabsItemIndex ==
                                2 ? item.name : tabsItemIndex == 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.name :
                                item.indexName | getName
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span>
                            {{ tabsItemIndex == 5 ? item.stockType + item.code : tabsItemIndex == 2 ? item.gid :
                                tabsItemIndex
                                  ==
                                  0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.gid : item.indexCode
                            }}
                          </span>
                        </div>
                      </div>
                      <div class="center_price">
                        <div class="tp">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">
                            {{ item.nowPrice
                            }}
                          </span>
                          <span class="price_color" v-else>
                            {{ tabsItemIndex == 5 ? Number(item.price).toFixed(2) :
                                item.currentPoint
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{ tabsItemIndex == 5 ? 'Max:' +
                              Number(item.orderNumber) : $t('hj44') + ':' + Number(item.transFee)
                          }}</span>
                          <span v-else>{{ item.today_min }}</span>
                        </div>
                      </div>
                      <div class="right_bs">
                        <div class="tp" style="justify-content: flex-end;">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span>
                          <span class="price_color" v-if="tabsItemIndex == 1"
                            :class="item.floatRate > 0 ? 'green' : 'red'">
                            {{
                                item.floatRate + '%'
                            }}
                          </span>
                          <!-- <span class="price_color" v-if="tabsItemIndex == 3"
                          :class="((item.nowPrice - item.lastClose) / item.lastClose * 100).toFixed(2) > 0 ? 'green' : 'red'">
                          {{
                              item.lastClose == "" ? 0.00 : ((Number(item.nowPrice) - Number(item.lastClose)) /
                                Number(item.lastClose) * 100).toFixed(2) + '%'
                          }}
                        </span> -->
                          <div v-if="tabsItemIndex == 5" :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'">
                            <!-- {{item.orderNumber}} -->
                            {{ item.type == 1 ? $t('hj45') : $t('hj46') }}
                          </div>
                        </div>
                        <div class="bt" style="justify-content: flex-end;">
                          <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">{{ item.preclose_px }}</div>
                          <!-- class="codeIcon"  item.stock_type.toUpperCase()-->
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
              <div  v-if="tabsItemIndex==4" class="van-clearfix">
                <div class="list_items">
                  <div class="item" v-for="(item, index) in listArr4" :key="index"
                    @click="handleGoToKlineDetail(item, index)">
                    <div v-if="(tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5">
                      <div class="left_title">
                        <div class="tp">
                          <span class="collection" @click.stop="options(item)">
                            <span v-show="tabsItemIndex != 5" class="shu"
                              :class="item.isOption == '1' ? 'shublue' : ''"></span>
                            <span v-show="tabsItemIndex == 5" class="shu hongse"></span>
                          </span>
                          <span class="title_color" style="white-space: nowrap;overflow: hidden;">
                            {{ tabsItemIndex == 5 ? item.name : tabsItemIndex ==
                                2 ? item.name : tabsItemIndex == 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.name :
                                item.indexName | getName
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span>
                            {{ tabsItemIndex == 5 ? item.stockType + item.code : tabsItemIndex == 2 ? item.gid :
                                tabsItemIndex
                                  ==
                                  0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.gid : item.indexCode
                            }}
                          </span>
                        </div>
                      </div>
                      <div class="center_price">
                        <div class="tp">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">
                            {{ item.nowPrice
                            }}
                          </span>
                          <span class="price_color" v-else>
                            {{ tabsItemIndex == 5 ? Number(item.price).toFixed(2) :
                                item.currentPoint
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{ tabsItemIndex == 5 ? 'Max:' +
                              Number(item.orderNumber) : $t('hj44') + ':' + Number(item.transFee)
                          }}</span>
                          <span v-else>{{ item.today_min }}</span>
                        </div>
                      </div>
                      <div class="right_bs">
                        <div class="tp" style="justify-content: flex-end;">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span>
                          <span class="price_color" v-if="tabsItemIndex == 1"
                            :class="item.floatRate > 0 ? 'green' : 'red'">
                            {{
                                item.floatRate + '%'
                            }}
                          </span>
                          <!-- <span class="price_color" v-if="tabsItemIndex == 3"
                          :class="((item.nowPrice - item.lastClose) / item.lastClose * 100).toFixed(2) > 0 ? 'green' : 'red'">
                          {{
                              item.lastClose == "" ? 0.00 : ((Number(item.nowPrice) - Number(item.lastClose)) /
                                Number(item.lastClose) * 100).toFixed(2) + '%'
                          }}
                        </span> -->
                          <div v-if="tabsItemIndex == 5" :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'">
                            <!-- {{item.orderNumber}} -->
                            {{ item.type == 1 ? $t('hj45') : $t('hj46') }}
                          </div>
                        </div>
                        <div class="bt" style="justify-content: flex-end;">
                          <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">{{ item.preclose_px }}</div>
                          <!-- class="codeIcon"  item.stock_type.toUpperCase()-->
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
              <div  v-if="tabsItemIndex==5" class="van-clearfix">
                <div class="list_items">
                  <div class="item" v-for="(item, index) in listArr5" :key="index"
                    @click="handleGoToKlineDetail(item, index)">
                    <div v-if="(tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5">
                      <div class="left_title">
                        <div class="tp">
                          <span class="collection" @click.stop="options(item)">
                            <span v-show="tabsItemIndex != 5" class="shu"
                              :class="item.isOption == '1' ? 'shublue' : ''"></span>
                            <span v-show="tabsItemIndex == 5" class="shu hongse"></span>
                          </span>
                          <span class="title_color" style="white-space: nowrap;overflow: hidden;">
                            {{ tabsItemIndex == 5 ? item.name : tabsItemIndex ==
                                2 ? item.name : tabsItemIndex == 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.name :
                                item.indexName | getName
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span>
                            {{ tabsItemIndex == 5 ? item.stockType + item.code : tabsItemIndex == 2 ? item.gid :
                                tabsItemIndex
                                  ==
                                  0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.gid : item.indexCode
                            }}
                          </span>
                        </div>
                      </div>
                      <div class="center_price">
                        <div class="tp">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">
                            {{ item.nowPrice
                            }}
                          </span>
                          <span class="price_color" v-else>
                            {{ tabsItemIndex == 5 ? Number(item.price).toFixed(2) :
                                item.currentPoint
                            }}
                          </span>
                        </div>
                        <div class="bt">
                          <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{ tabsItemIndex == 5 ? 'Max:' +
                              Number(item.orderNumber) : $t('hj44') + ':' + Number(item.transFee)
                          }}</span>
                          <span v-else>{{ item.today_min }}</span>
                        </div>
                      </div>
                      <div class="right_bs">
                        <div class="tp" style="justify-content: flex-end;">
                          <span class="price_color"
                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                            :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span>
                          <span class="price_color" v-if="tabsItemIndex == 1"
                            :class="item.floatRate > 0 ? 'green' : 'red'">
                            {{
                                item.floatRate + '%'
                            }}
                          </span>
                          <!-- <span class="price_color" v-if="tabsItemIndex == 3"
                          :class="((item.nowPrice - item.lastClose) / item.lastClose * 100).toFixed(2) > 0 ? 'green' : 'red'">
                          {{
                              item.lastClose == "" ? 0.00 : ((Number(item.nowPrice) - Number(item.lastClose)) /
                                Number(item.lastClose) * 100).toFixed(2) + '%'
                          }}
                        </span> -->
                          <div v-if="tabsItemIndex == 5" :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'">
                            <!-- {{item.orderNumber}} -->
                            {{ item.type == 1 ? $t('hj45') : $t('hj46') }}
                          </div>
                        </div>
                        <div class="bt" style="justify-content: flex-end;">
                          <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">{{ item.preclose_px }}</div>
                          <!-- class="codeIcon"  item.stock_type.toUpperCase()-->
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </van-list>
          </div>
        </div>
        <div class="bottom_content" v-if="tabsIndex === 0">
@@ -172,13 +589,17 @@
              :immediate-check="false">
              <div class="van-clearfix">
                <div class="list_items">
                  <div class="item" @click="handleGoToKlineDetail1(item, index)" v-for="(item, index) in listArrs" :key="item.indexCode">
                  <div class="item" @click="handleGoToKlineDetail1(item, index)" v-for="(item, index) in listArrs"
                    :key="item.indexCode">
                    <div class="left_title" style="flex-direction: column;align-items: flex-start;">
                      <div class="tp" style="display: flex;align-items: center;line-height: 2;">
                        <span class="collection" @click="optionszx(item)">
                          <span class="shu" :class="item.isOption == '1' ? 'shublue' : ''"></span>
                        </span>
                        <span class="title_color" style="overflow: hidden;-webkit-line-clamp: 1;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;">{{ item.stockName }}</span>
                        <span class="title_color"
                          style="overflow: hidden;-webkit-line-clamp: 1;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;">{{
                              item.stockName
                          }}</span>
                      </div>
                      <div class="bt">
                        <span>{{ item.stockGid }}</span>
@@ -193,7 +614,7 @@
                      </div>
                    </div>
                    <div class="right_bs" style="justify-content: flex-end;align-items: center;">
                      <div class="tp" >
                      <div class="tp">
                        <span class="price_color" :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span>
                      </div>
                      <div class="bt">
@@ -496,7 +917,8 @@
                }}</span>
              <span
                :class="$store.state.userInfo.allProfitAndLose > 0 ? ' red' : $store.state.userInfo.allProfitAndLose < 0 ? ' green' : ''"
                v-show="tabsItemIndex == 4">{{ 'HK$ ' + (Number($store.state.userInfo.allProfitAndLose) / 0.9).toFixed(2)
                v-show="tabsItemIndex == 4">{{ 'HK$ ' + (Number($store.state.userInfo.allProfitAndLose) /
                    0.9).toFixed(2)
                }}</span>
              <span
                :class="$store.state.userInfo.allProfitAndLose > 0 ? ' red' : $store.state.userInfo.allProfitAndLose < 0 ? ' green' : ''"
@@ -515,23 +937,23 @@
      <div class="setting_content">
        <div class="old_password">
          <div class="left_titles">
            <span>{{ $t('hj57')  }}:</span>
            <span>{{ $t('hj57') }}:</span>
          </div>
          <div class="right_password_input">
            <input type="number" v-model="sgNum" />
          </div>
        </div>
        <div class="btn_setting" @click="changeSg()">
          <span>{{  $t('hj58') }}</span>
          <span>{{ $t('hj58') }}</span>
        </div>
        <div class="shijian">
          <div class="xgsj">
            <div class="sjtlt">{{ $t('hj59')  }}: </div>
            <div class="sjtlt">{{ $t('hj59') }}: </div>
            <div class="xgTime" v-if="this.sgsj">{{ this.sgsj | getTimeYear }}</div>
          </div>
          <div class="xgsj">
            <div class="sjtlt">{{ $t('hj60')  }}: </div>
            <div class="sjtlt">{{ $t('hj60') }}: </div>
            <div class="xgTime" v-if="this.rjsj">{{ this.rjsj | getTimeYear }}</div>
          </div>
        </div>
@@ -562,6 +984,7 @@
//Toast 
import { Toast } from 'vant';
import * as api from "@/axios/api";
import handleDt from "@/utils/deTh";
export default {
  name: "trading",
  components: {
@@ -631,6 +1054,11 @@
      ],
      tabsItemIndex: 0,
      listArr: [],
      listArr1:[],
      listArr2:[],
      listArr3:[],
      listArr4:[],
      listArr5:[],
      listArrs: [],
    };
  },
@@ -682,13 +1110,13 @@
          this.stockPlate = "";
          this.stockType = "us";
          this.loading = true;
          this.getStock();
          this.getStockUs();
          break;
        case 4:
          this.stockPlate = "";
          this.stockType = "hk";
          this.loading = true;
          this.getStock();
          this.getStockHk();
          break;
        case 5:
          this.loading = true;
@@ -704,10 +1132,15 @@
      //   this.finished = true;
      // }
    },
    gpinput() {
    gpinput: handleDt.debounce(function() {
      this.pageNum = 1;
      this.listArr = [];
      this.listArr1 = [];
      this.listArr2 = [];
      this.listArr3 = [];
      this.listArr4 = [];
      this.listArr5 = [];
      this.loading = true;
      this.finished = false;
      this.stockType = '';
@@ -728,18 +1161,18 @@
        case 3:
          this.stockPlate = "";
          this.stockType = 'us';
          this.getStock();
          this.getStockUs();
          break;
        case 4:
          this.stockPlate = "";
          this.stockType = 'hk';
          this.getStock();
          this.getStockHk();
          break;
        case 5:
          this.getFutures();
          break;
      }
    },
    }, 1000),
    gpinputs() {
      this.pageNums = 1;
      this.listArrs = [];
@@ -799,7 +1232,7 @@
        ` this.$store.commit('elAlertShow',{'elAlertShow':true,'elAlertText': data.msg});`
      }
    },
    async getListMarket() {
     getListMarket:  handleDt.debounce(async function() {
      let val = {
        pageNum: this.pageNum,
        pageSize: 15
@@ -809,15 +1242,15 @@
      this.loading = false;
      if (result.status === 0) {
        if (this.tabsItemIndex == 1) {
          this.listArr = result.data;
          this.listArr1 = result.data;
          this.finished = true;
        }
      } else {
        this.texts = result.msg;
        this.alertShow = true;
      }
    },
    async getStock() {
    }, 500),
   getStock:  handleDt.debounce(async function() {
      //沪深
      let opt = {
        pageNum: this.pageNum,
@@ -832,22 +1265,81 @@
        if (data.data.list.length < 15) {
          this.finished = true;
        }
        if (this.tabsItemIndex == 0 || this.tabsItemIndex == 3 || this.tabsItemIndex == 4) {
        if (this.tabsItemIndex == 0) {
          if (this.gpcode) {
            this.listArr = data.data.list;
              this.listArr = data.data.list;
          } else {
            data.data.list.forEach(element => {
              this.listArr.push(element);
              this.listArr.push(element);
            });
          }
        }
      } else {
        this.texts = data.msg;
        this.alertShow = true;
      }
    },
    async getStocks() {
    }, 500),
     getStockUs:  handleDt.debounce(async function() {
      //美股
      let opt = {
        pageNum: this.pageNum,
        pageSize: 15,
        stockPlate: this.stockPlate,
        keyWords: this.gpcode,
        stockType: this.stockType
      };
      let data = await api.getStock(opt);
      this.loading = false;
      if (data.status === 0) {
        if (data.data.list.length < 15) {
          this.finished = true;
        }
        if ( this.tabsItemIndex == 3) {
          if (this.gpcode) {
              this.listArr3 = data.data.list;
          } else {
            data.data.list.forEach(element => {
              this.listArr3.push(element);
            });
          }
        }
      } else {
        this.texts = data.msg;
        this.alertShow = true;
      }
    },500) ,
     getStockHk:  handleDt.debounce(async function() {
      //港股
      let opt = {
        pageNum: this.pageNum,
        pageSize: 15,
        stockPlate: this.stockPlate,
        keyWords: this.gpcode,
        stockType: this.stockType
      };
      let data = await api.getStock(opt);
      this.loading = false;
      if (data.status === 0) {
        if (data.data.list.length < 15) {
          this.finished = true;
        }
        if ( this.tabsItemIndex == 4) {
          if (this.gpcode) {
              this.listArr4 = data.data.list;
          } else {
            data.data.list.forEach(element => {
              this.listArr4.push(element);
            });
          }
        }
      } else {
        this.texts = data.msg;
        this.alertShow = true;
      }
    },500) ,
     getStocks:  handleDt.debounce(async function() {
      //科创
      let opt = {
        pageNum: this.pageNum,
@@ -863,10 +1355,10 @@
        }
        if (this.tabsItemIndex == 2) {
          if (this.gpcode) {
            this.listArr = data.data.list;
            this.listArr2 = data.data.list;
          } else {
            data.data.list.forEach(element => {
              this.listArr.push(element);
              this.listArr2.push(element);
            });
          }
        }
@@ -874,7 +1366,7 @@
        this.texts = data.msg;
        this.alertShow = true;
      }
    },
    },500),
    popClose() {
      this.sgCode = '';
@@ -1026,7 +1518,7 @@
      }
    },
    async getFutures() {
     getFutures:  handleDt.debounce(async function() {
      // 获取期货列表
      let opt = {
@@ -1036,14 +1528,14 @@
      this.loading = false;
      if (data.status === 0) {
        if (this.tabsItemIndex == 5) {
          this.listArr = data.data.list;
          this.listArr5 = data.data.list;
        }
        this.finished = true;
      } else {
        this.texts = data.msg;
        this.alertShow = true;
      }
    },
    },500),
    // async getFutures() {
    //   // 获取期货列表
    //   let opt = {
@@ -1121,7 +1613,7 @@
      this.loading = true;
      switch (item.type) {
        case 1:
          this.listArr = [];
          this.listArr1 = [];
          this.getListMarket();
          break;
        case 0:
@@ -1133,23 +1625,23 @@
        case 2:
          this.stockPlate = "科创";
          this.stockType = '';
          this.listArr = [];
          this.listArr2 = [];
          this.getStocks();
          break;
        case 3:
          this.stockPlate = "";
          this.stockType = 'us';
          this.listArr = [];
          this.getStock();
          this.listArr3 = [];
          this.getStockUs();
          break;
        case 4:
          this.stockPlate = "";
          this.stockType = 'hk';
          this.listArr = [];
          this.getStock();
          this.listArr4 = [];
          this.getStockHk();
          break;
        case 5:
          this.listArr = [];
          this.listArr5 = [];
          this.getFutures();
          break;
      }
@@ -1159,7 +1651,7 @@
      }
    },
    async options(val) {
      if(this.tabsItemIndex == 1){
      if (this.tabsItemIndex == 1) {
        this.$message({
          message: this.$t('hj71'),
          type: 'warning'
@@ -1195,7 +1687,7 @@
          switch (this.tabsItemIndex) {
            case 1:
              this.pageNum = 1;
              this.listArr = [];
              this.listArr1 = [];
              this.loading = true;
              this.finished = false;
              this.getListMarket();
@@ -1214,7 +1706,7 @@
              this.pageNum = 1;
              this.stockType = '';
              this.loading = true;
              this.listArr = [];
              this.listArr2 = [];
              this.finished = false;
              this.getStocks();
              break;
@@ -1223,21 +1715,21 @@
              this.stockType = 'us';
              this.pageNum = 1;
              this.loading = true;
              this.listArr = [];
              this.listArr3 = [];
              this.finished = false;
              this.getStock();
              this.getStockUs();
              break;
            case 4:
              this.stockPlate = "";
              this.stockType = 'hk';
              this.pageNum = 1;
              this.loading = true;
              this.listArr = [];
              this.listArr4 = [];
              this.finished = false;
              this.getStock();
              this.getStockHk();
              break;
            case 5:
              this.listArr = [];
              this.listArr5 = [];
              this.loading = true;
              this.pageNum = 1;
              this.finished = false;
@@ -1253,7 +1745,7 @@
        if (data.status === 0) {
          switch (this.tabsItemIndex) {
            case 1:
              this.listArr = [];
              this.listArr1 = [];
              this.pageNum = 1;
              this.finished = false;
              this.getListMarket();
@@ -1271,7 +1763,7 @@
              this.stockType = '';
              this.pageNum = 1;
              this.finished = false;
              this.listArr = [];
              this.listArr2 = [];
              this.getStocks();
              break;
            case 3:
@@ -1279,19 +1771,19 @@
              this.pageNum = 1;
              this.finished = false;
              this.stockType = 'us';
              this.listArr = [];
              this.getStock();
              this.listArr3 = [];
              this.getStockUs();
              break;
            case 4:
              this.stockPlate = "";
              this.stockType = 'hk';
              this.pageNum = 1;
              this.finished = false;
              this.listArr = [];
              this.getStock();
              this.listArr4 = [];
              this.getStockHk();
              break;
            case 5:
              this.listArr = [];
              this.listArr5 = [];
              this.pageNum = 1;
              this.finished = false;
              this.getFutures();
@@ -1302,9 +1794,9 @@
        }
      }
      if (navigator.vibrate) {
          // 支持
          navigator.vibrate([55]);
        }
        // 支持
        navigator.vibrate([55]);
      }
    },
    async optionszx(val) {
      let data = await api.delOption({ code: val.stockGid });
@@ -1317,9 +1809,9 @@
        console.log(data.msg);
      }
      if (navigator.vibrate) {
          // 支持
          navigator.vibrate([55]);
        }
        // 支持
        navigator.vibrate([55]);
      }
    },
    async refreshList() {
      // 刷新指数
@@ -1666,7 +2158,7 @@
          .bt {
            width: 100%;
            height: 30%;
          }
        }
      }
src/page/login/components/header.vue
@@ -3,8 +3,19 @@
        <div class="header_content">
            <div class="left_back" @click="$router.go(-1)"><img src="../../../assets/img/back.png" alt=""></div>
            <div class="right_mess"><span>{{ '' }}</span></div>
            <div class="right_back" @click="goOnline()">
                <img :src="Service" alt />
            <div class="right_back">
                <div class="service">
                    <img @click="goOnline()" :src="Service" alt />
                </div>
                <van-popover v-model="showPopover" trigger="click" placement="bottom-end" :actions="actions"
                    @select="onSelect">
                    <template #reference>
                        <div class="iconfont icon-icon_A">
                        </div>
                    </template>
                </van-popover>
            </div>
        </div>
    </div>
@@ -20,12 +31,18 @@
        return {
            Service,
            onlineService: "",
            showPopover: false,
            actions: [{ text: 'English', icon: require('@/assets/ico/english.png'), lang: 'en' },
            { text: '简体中文', icon: require('@/assets/ico/Chinese.png'), lang: 'zh-CN' }],
        }
    },
    methods: {
        onSelect(e) {
            this.$i18n.locale = e.lang;
            window.localStorage.setItem('language', e.lang);
        },
        goOnline() {
            window.location.href = this.onlineService;
            this.$router.push('/service');
        },
        async getInfoSite() {
            let data = await api.getInfoSite()
@@ -48,7 +65,7 @@
    height: 1.6256rem;
    display: flex;
    align-items: center;
    padding-right: 0.25rem;
    >div {
        width: 100%;
        height: 80%;
@@ -69,11 +86,23 @@
    }
    .right_back {
        width: 1.0513rem;
        width: 17%;
        height: 1.0513rem;
        display: flex;
        align-items: center;
        justify-content: center;
        justify-content: space-between;
        .service {
            width: 0.5rem;
            height: 0.5rem;
            img {
                width: 0.5rem;
                height: 0.5rem;
            }
        }
    }
    .right_mess {
src/page/newUser/index.vue
@@ -6,8 +6,8 @@
          <div @click="goToTopUp()">
            <img src="@/assets/img/qianbao.png" alt />
          </div>
          <div @click="goOnline">
            <img src="@/assets/img/kefu.png" alt />
          <div @click="goOnline" style="justify-content: flex-end;">
            <img style="width: 0.5rem;height: 0.5rem;" src="@/assets/img/kefu.png" alt />
          </div>
        </div>
      </div>
@@ -240,7 +240,7 @@
        // 支持
        navigator.vibrate([55]);
      }
      window.location.href = this.onlineService;
      this.$router.push('/service');
    },
    async getInfoSite() {
      let data = await api.getInfoSite()
@@ -418,15 +418,15 @@
      align-items: center;
      .right_icon {
        width: 25%;
        width: 17%;
        height: 50%;
        display: flex;
        >div {
          width: 50%;
          width: 100%;
          height: 100%;
          display: flex;
          justify-content: center;
          justify-content: space-between;
          align-items: center;
          img {
src/page/wallet/index.vue
@@ -6,12 +6,16 @@
          <img src="@/assets/img/zuojiantou.png" alt />
        </div>
        <div class="right_icon">
          <div @click="goToTopUp()">
            <img src="@/assets/img/qiandai.png" alt />
          </div>
          <div @click="goOnline()">
            <img src="@/assets/img/kefu.png" alt />
          </div>
          <van-popover v-model="showPopover" trigger="click" placement="bottom-end" :actions="actions"
              @select="onSelect">
              <template #reference>
                <div class="iconfont icon-icon_A">
                </div>
              </template>
            </van-popover>
        </div>
      </div>
      <div class="tabs">
@@ -27,18 +31,18 @@
        <div class="num_price">
          <p v-if="this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay"
            class="account">
            ¥{{ $store.state.hide ? '****' : Number($store.state.userInfo.userAmt +
            ¥ {{ $store.state.hide ? '****' : Number($store.state.userInfo.userAmt +
                $store.state.userInfo.userIndexAmt).toFixed(2)
            }}
          </p>
          <p v-else-if="!this.$store.state.settingForm.indexDisplay && this.$store.state.settingForm.futuresDisplay"
            class="account">
            ¥{{ $store.state.hide ? '****' : Number($store.state.userInfo.userAmt +
            ¥ {{ $store.state.hide ? '****' : Number($store.state.userInfo.userAmt +
                $store.state.userInfo.userFuturesAmt).toFixed(2)
            }}
          </p>
          <p v-else-if="!this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay"
            class="account">¥{{ $store.state.hide ? '****' : Number($store.state.userInfo.userAmt).toFixed(2) }}</p>
            class="account">¥ {{ $store.state.hide ? '****' : Number($store.state.userInfo.userAmt).toFixed(2) }}</p>
        </div>
        <div class="yk es">
          <div>
@@ -217,6 +221,9 @@
      withdrawalValue: 0,
      settingInfo: {},
      onlineService: "",
      showPopover: false,
      actions: [{ text: 'English', icon: require('@/assets/ico/english.png'), lang: 'en' },
      { text: '简体中文', icon: require('@/assets/ico/Chinese.png') , lang: 'zh-CN'}],
    };
  },
  computed: {
@@ -229,12 +236,16 @@
    this.getInfoSite();
  },
  methods: {
    onSelect(e){
      this.$i18n.locale = e.lang;
      window.localStorage.setItem('language', e.lang);
    },
    goOnline() {
      if (navigator.vibrate) {
        // 支持
        navigator.vibrate([55]);
      }
      window.location.href = this.onlineService;
      this.$router.push('/service');
    },
    async getInfoSite() {
      let data = await api.getInfoSite()
@@ -440,20 +451,21 @@
      }
      .right_icon {
        width: 25%;
        height: 50%;
        width: 18%;
        height: 35%;
        padding-right: 0.1rem;
        display: flex;
        justify-content: space-between;
        >div {
          width: 50%;
          width: auto;
          height: 100%;
          display: flex;
          justify-content: center;
          align-items: center;
          img {
            width: 0.6rem;
            height: 0.6rem;
            width: 0.55rem;
            height: 0.55rem;
          }
        }
      }
src/router/index.js
@@ -56,7 +56,7 @@
import Transfers from '@/page/transfer/index.vue'
import Authentications from '@/page/authentication/index.vue'
import BankCard from '@/page/bankCard/index.vue'
import service from '@/page/service/service.vue'
Vue.use(Router)
const routerPush = Router.prototype.push
@@ -713,6 +713,18 @@
      component: BankCard
    },
    {
      path: '/service',
      name: 'service',
      meta: {
        title: '客服',
        requireAuth: false,
        hasHeader: false,
        index: 57,
        show: true
      },
      component: service
    },
    {
      // 会匹配所有路径
      path: '*',
      redirect: '/home'