1
PC-20250623MANY\Administrator
2025-08-13 79db9782438e27a9006d540d18d649c720180a31
1
29 files modified
22 files added
2088 ■■■■■ changed files
src/App.vue 72 ●●●●● patch | view | raw | blame | history
src/assets/foot/tab_1.png patch | view | raw | blame | history
src/assets/foot/tab_1_a.png patch | view | raw | blame | history
src/assets/foot/tab_2.png patch | view | raw | blame | history
src/assets/foot/tab_2_a.png patch | view | raw | blame | history
src/assets/foot/tab_3.png patch | view | raw | blame | history
src/assets/foot/tab_3_a.png patch | view | raw | blame | history
src/assets/foot/tab_4.png patch | view | raw | blame | history
src/assets/foot/tab_4_a.png patch | view | raw | blame | history
src/assets/img/language_b.png patch | view | raw | blame | history
src/assets/img/logo_1.png patch | view | raw | blame | history
src/assets/img/market_0.png patch | view | raw | blame | history
src/assets/img/market_1.png patch | view | raw | blame | history
src/assets/img/market_2.png patch | view | raw | blame | history
src/assets/img/market_3.png patch | view | raw | blame | history
src/assets/img/mc.png patch | view | raw | blame | history
src/assets/img/mr.png patch | view | raw | blame | history
src/assets/img/pc.png patch | view | raw | blame | history
src/assets/img/transfer.png patch | view | raw | blame | history
src/assets/img/充值缴费.png patch | view | raw | blame | history
src/axios/api.url.js 2 ●●● patch | view | raw | blame | history
src/components/foot.vue 128 ●●●● patch | view | raw | blame | history
src/components/pageHead.vue 14 ●●●● patch | view | raw | blame | history
src/components/stock-list.vue 68 ●●●● patch | view | raw | blame | history
src/components/tabHead.vue 286 ●●●●● patch | view | raw | blame | history
src/locales/cht.json 19 ●●●●● patch | view | raw | blame | history
src/locales/en.json 48 ●●●● patch | view | raw | blame | history
src/locales/hi.json 4 ●●● patch | view | raw | blame | history
src/page/bankCard1/index.vue 179 ●●●●● patch | view | raw | blame | history
src/page/home/components/newsItem.vue 2 ●●● patch | view | raw | blame | history
src/page/home/fundIndex.vue 3 ●●●●● patch | view | raw | blame | history
src/page/home/homeIndex.vue 27 ●●●● patch | view | raw | blame | history
src/page/home/newList.vue 46 ●●●● patch | view | raw | blame | history
src/page/home/newPage.vue 6 ●●●●● patch | view | raw | blame | history
src/page/kline/index.vue 8 ●●●● patch | view | raw | blame | history
src/page/list/tradingList/data.list.vue 2 ●●● patch | view | raw | blame | history
src/page/login/components/header.vue 2 ●●● patch | view | raw | blame | history
src/page/login/login.vue 90 ●●●●● patch | view | raw | blame | history
src/page/login/register.vue 129 ●●●●● patch | view | raw | blame | history
src/page/markets/markets.vue 281 ●●●●● patch | view | raw | blame | history
src/page/register.vue 2 ●●● patch | view | raw | blame | history
src/page/trading/TradeNew.vue 10 ●●●● patch | view | raw | blame | history
src/page/trading/buy.vue 36 ●●●● patch | view | raw | blame | history
src/page/user/account.vue 11 ●●●●● patch | view | raw | blame | history
src/page/user/compontents/cash-list.vue 4 ●●●● patch | view | raw | blame | history
src/page/user/myOrder.vue 320 ●●●●● patch | view | raw | blame | history
src/page/user/order-list1.vue 2 ●●● patch | view | raw | blame | history
src/page/user/recharge-sure.vue 19 ●●●● patch | view | raw | blame | history
src/page/user/transferNew.vue 217 ●●●●● patch | view | raw | blame | history
src/router/index.js 41 ●●●●● patch | view | raw | blame | history
src/store/index.js 10 ●●●●● patch | view | raw | blame | history
src/App.vue
@@ -54,7 +54,7 @@
  name: "App",
  created() {
    //this.setUseInfo();
    this.$state.theme = "red";
    this.$state.theme = "black";
    let title = this.$route.meta.title || this.$t("hj224");
    this.title = title;
    if (this.$route.meta.is_Show) {
@@ -131,7 +131,12 @@
@red: #ee0a24;
@brown: #ff976a;
@grey: #dddddd;
@Black1: #13161e;
/deep/ .van-field__control {
  color: #fff;
  font-size: 1.4em;
}
/deep/ .no_data {
  width: 100%;
  padding-top: 2em;
@@ -182,16 +187,41 @@
/deep/ .van-list__error-text {
  line-height: 1.925926rem !important;
}
/deep/ .van-nav-bar .van-icon {
  color: @green;
  font-size: 0.4rem;
/deep/ .van-nav-bar {
  background-color: @Black1;
  .van-icon {
    color: @white;
    font-size: 0.4rem;
  }
}
/deep/ .van-nav-bar__title {
  font-family: "DINPro";
  width: 100%;
  height: 1.17333rem;
  display: flex;
  justify-content: center;
  align-items: center;
  font-style: normal;
  font-weight: 500;
  font-size: 0.48rem;
  color: #fff !important;
}
/deep/ .more-news {
  padding: 0.35rem 0;
  text-align: center;
  span {
    font-size: 0.4rem;
    line-height: 1.2rem;
    color: #898a8e;
  }
}
#app {
  width: 100vw;
  height: 100vh;
  min-height: 100vh;
  overflow: hidden;
  font-family: "rubik";
  color: #fff;
  .header-box {
    width: 100%;
@@ -209,7 +239,7 @@
      }
      .mint-header-title {
        font-size: 0.36rem;
        font-size: 0.46rem;
        color: rgba(255, 255, 255, 1);
      }
    }
@@ -224,7 +254,7 @@
    height: 100%;
    // height: calc(100% - 1rem);
    box-sizing: border-box;
    background: #fff;
    // background: #fff;
    overflow-y: auto;
  }
@@ -284,38 +314,32 @@
    }
    /deep/.footCss {
      background: @purple;
      background: @Black1;
    }
    /deep/.newDetail-tits {
      color: #aaa;
    }
    /deep/.van-skeleton__row,
    .van-skeleton__title {
      // background-color: #fff !important;
    }
  }
  &.black-theme {
    // background: #16171d;
    // background: rgb(14, 14, 15);
    background: rgb(33, 33, 43);
    background: #13161e;
    color: #fff;
    /deep/.navs_content {
      background: #272733;
      background: #13161e;
    }
    /deep/.fo_content {
      background: #272733;
      background: #13161e;
    }
    /deep/.news-tab {
      background: #272733;
      background: #13161e;
    }
    /deep/.mint-navbar {
      background: #272733;
      background: #13161e;
    }
    /deep/.mint-tab-item-label {
@@ -327,11 +351,8 @@
      color: #000;
    }
    /deep/.mint-tab-container {
    }
    /deep/.mint-tab-item {
      background: #272733;
      background: #13161e;
    }
    /deep/.van-swipe-item {
@@ -351,9 +372,6 @@
.mint-search-list {
  position: relative !important;
}
.topLeft {
}
/deep/.el-alert {
src/assets/foot/tab_1.png
src/assets/foot/tab_1_a.png
src/assets/foot/tab_2.png
src/assets/foot/tab_2_a.png
src/assets/foot/tab_3.png
src/assets/foot/tab_3_a.png
src/assets/foot/tab_4.png
src/assets/foot/tab_4_a.png
src/assets/img/language_b.png
src/assets/img/logo_1.png
src/assets/img/market_0.png
src/assets/img/market_1.png
src/assets/img/market_2.png
src/assets/img/market_3.png
src/assets/img/mc.png
src/assets/img/mr.png
src/assets/img/pc.png
src/assets/img/transfer.png
src/assets/img/充值缴费.png
src/axios/api.url.js
@@ -14,7 +14,7 @@
  // 本地
  baseURL:
    // process.env.NODE_ENV == "development" ? "http://192.168.10.5:8091/" : "https://api.kuspitai.com/",
    process.env.NODE_ENV == "development" ? "https://ciapi.yanshiz.com/" : "https://ciapi.yanshiz.com/",
    process.env.NODE_ENV == "development" ? "https://ciapi.yanshiz.com/" : "https://usapi.yanshiz.com/",
  util: {
    image: "/util/image.html" // 图片上传
  }
src/components/foot.vue
@@ -1,136 +1,80 @@
<template>
  <div class="footCss">
    <!-- <div :class="touch == item.key ? 'footDemos' : 'footDemo'" @click="goRouter(item.path, item.key)" v-for="item in tabs"
      :key="item.path">
      <div class="footImgDeft">
        <img v-show="$store.state.select == item.path" :src="item.img" />
        <img v-show="$store.state.select != item.path" :src="item.actImg" />
      </div>
      <div :class="$store.state.select == item.path ? 'blueFont' : ''">
        {{ item.name }}
      </div>
    </div> -->
    <div
      :class="touch == 1 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/home_index', 1)"
    >
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/home_index'"
          src="../assets/foot/home-act.png"
        />
        <img
          v-show="$store.state.select != '/home_index'"
          src="../assets/foot/home.png"
        />
      </div>
      <div :class="$store.state.select == '/home_index' ? 'blueFont' : ''">
        {{ $t("hj224") }}
      </div>
    </div>
    <div
      :class="touch == 3 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/markets', 3)"
      @click="goRouter('/markets', 1)"
    >
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/markets'"
          src="../assets/foot/language-act.png"
          src="../assets/foot/tab_1_a.png"
        />
        <img
          v-show="$store.state.select != '/markets'"
          src="../assets/foot/language.png"
          src="../assets/foot/tab_1.png"
        />
      </div>
      <div :class="$store.state.select == '/markets' ? 'blueFont' : ''">
        {{ $t("hj62") }}
      </div>
    </div>
    <div
      :class="touch == 6 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/watchlists', 6)"
      :class="touch == 2 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/fund_index', 2)"
    >
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/watchlists'"
          src="../assets/foot/selected-act.png"
          v-show="$store.state.select == '/fund_index'"
          src="../assets/foot/tab_2_a.png"
        />
        <img
          v-show="$store.state.select != '/watchlists'"
          src="../assets/foot/selected.png"
          v-show="$store.state.select != '/fund_index'"
          src="../assets/foot/tab_2.png"
        />
      </div>
      <div :class="$store.state.select == '/watchlists' ? 'blueFont' : ''">
        {{ $t("hj61") }}
      <div :class="$store.state.select == '/fund_index' ? 'blueFont' : ''">
        {{ $t("理财") }}
      </div>
    </div>
    <div
      :class="touch == 7 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/tradeNew', 7)"
      :class="touch == 3 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/new-list', 3)"
    >
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/tradeNew'"
          src="../assets/foot/transaction-act.png"
          v-show="$store.state.select == '/new-list'"
          src="../assets/foot/tab_3_a.png"
        />
        <img
          v-show="$store.state.select != '/tradeNew'"
          src="../assets/foot/transaction.png"
          v-show="$store.state.select != '/new-list'"
          src="../assets/foot/tab_3.png"
        />
      </div>
      <div :class="$store.state.select == '/tradeNew' ? 'blueFont' : ''">
        {{ $t("hj225") }}
      <div :class="$store.state.select == '/new-list' ? 'blueFont' : ''">
        {{ $t("hj6") }}
      </div>
    </div>
    <div
      :class="touch == 8 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/account', 8)"
      :class="touch == 4 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/account', 4)"
    >
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/account'"
          src="../assets/foot/account-act.png"
          src="../assets/foot/tab_4_a.png"
        />
        <img
          v-show="$store.state.select != '/account'"
          src="../assets/foot/account.png"
          src="../assets/foot/tab_4.png"
        />
      </div>
      <div :class="$store.state.select == '/account' ? 'blueFont' : ''">
        {{ $t("Account") }}
        {{ $t("hj53") }}
      </div>
    </div>
    <!-- <div :class="touch == 2 ? 'footDemos' : 'footDemo'" @click="goRouter('/trading-list', 2)">
      <div class="footImgDeft">
        <img v-show="$store.state.select == '/trading-list'"
          src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANGSURBVHgB3Zm/b9NAFMe/F2UoWxnL5LIVBgpsMJCqfwDhx8bQ8AdAki1UiMQSAiQGkh2FVGJECIayAc1Ax5JObCRMjGSKKpByvGc3IrEdx/bdOaEfyVJ0uUTva3/fu/M74D9HwBQluYwl5DFEHxl08Ez0YAD9AtzAixR0bWJcok5XQ7cQvQIeyBL9Y5U+LQd+L9GjyyYRLWhCj4CKzDmBC+QizXeF3CUhe1BETUBFWmSVF/Qpj2S0KEdsFVslE/DP5yVMs0schpQvR5QfddFHTOILqMjCsV0s6CRhfkQXENfnSXGFbES11WwBbJdTVAIFtpAukfJjugDdPk9Gn0TUSYQ9bUKwANcur7T7PCkhZdcvwC2NXSwif3ARz0VnfCjjm5ShR7aoZJ01Z4JMwLR1LCoBls5iDlxbda/cqkTuLND7BZR3Bd5/Q2xSE8AB59ckti5TSVua/M46DRQuSRIQf101JoCDvH6OArck8uf9QXvhp5AEYwKqmxLFK9Hm9o+A+n6ybZkxAQ0OSEqsnwEurIQ/gcY+8CP2Ns7FmAAnMT9M3lX2efOWf579MfmuPoOU4CfwaNM/vvFS7ZUkNQHN2xKWZ0dlf0punRGpCGDb5Ncmx9pdNeuMMCqAbcPBs/fHYd8X3uh5HTeWxLw4vb1DVWhlcpyDZ9+rWmeEEQFc/3kd8JZO3cEzWgXwXW/edPc3XkwEz2gRwHf6Pt310lUZuGBxwt54LZwVVzdKAmYFzpR3j1dlQygJOLjnr+0j+K6XaIt8+BNGUX4CXjoUcOMLsPPV3F0fR0kAv4SMqk37u7sp2+umE/gIJQE7B3wJR4CJBI2CfyWW8TsSqQU/xKF3yC9AoIzFpeQd8At4Qn2XIfUmae3B4tCjSAP7peEZty1rNKNItppPa5HWPudYakC9qimt99klgzt1ArW5NHcHZOcZZwZx2uvccvxMnyyYpe0cED6OdvwUv2hv0wEHnIM8C3rp0WVTDrZi/CbhEVONWu+/nYpQhSoRfB7+cxXU8+MdVbxy+od8Xh7SecKQzhOi2yqWz8PQu3GZlR/COXGx8VRoa+Hr33m51Yrzo+j5xk7q8zDMbR1ZSJbOGoa0CA7I65oDPzH8BdJ4DHPzc8XTAAAAAElFTkSuQmCC" />
        <img v-show="$store.state.select != '/trading-list'"
          src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAVASURBVHgB5VpdSBxXFD53VgXNi7i+JYIPTc1LqwakRl9Ws4FGUrEVoqUt3Ygppg2NofRZF/pSSummrVZQshNIoT+QpqY0DzWNKY0xaaiaPqmBSpO8xWJfXNjd3ttzZrtlfu7O7s7cWSj5YMGdc2f2fHe+c+655wrwPweDgBCLjddDdXoAmNiBtFjV9ZktCADKCRiOV6XPaBqbtBg4JHj273OqiYRAIWKjp8ZZSHyDzj/vMDLohBAbaDvY8dfqr7+sgiIoeQOx0bEIY6EJxiBSyngBYktwfkKfm1kEn/BFAOXSrFWnPwLGBuy2urpaaG99BnZTKfjjwSPY3v7T+QAhdJ7hcT+y8kQgr3PG2DjOer3ZRo5HeyPQ/0Kf5Z6Fa9fhh2uLUiKci0nI1mB8JHagTJRNIHbyzRg6PoE3NtttOcePIok66b2Pt7dh/spVWLp122EzZCUgrs9O61AGSibgpvOWp5+C/mN90NKyv6RnEZGkfhHWN+47bAaRNO8pVVZFCZBcWFUmwTR43W5rDDfA0PGXoL2tFbzg5tIyzH931Vd8FCRQis6jhyMF5VIO5q98Dws/LsLubspqELDDhUjoc9PxQvdKCRhy0UJJmc67Dz1n6DwcDoNKFI0PrmHa/XTRbnMQMFJjTeZ3+/Vyde4VROSDDz+WZysh2jHILYugYyVu7zioo2wO5L+TXAZf7IfXXhmGxka1sy4DSfLI4R58ww2wsXkfMpmsycoO4Cp+wTxesz+AAWszfx/GII3iAyuN7q5OeOvUScs1xkSzfVyVyzMM2XQd6gTVWN/YNFLo+vqm8XcjxlMumz1r+/39xofGFIIrgaZ9+0AVyImVlXuwtHwHs82uxUa6p+C1E8j5sNc7AdK/V1BKXFm9Bxvk+NpvDqftCDc0gBcfXAn4QT63lwJy8kg0Al4QGIHovw49ePgQP4+ci5R5bG/E87oSGAEKzOGhQcu1m0u3IXnhom1cg6NyLQcaVAj0BqjusePdd94GP6gYAZr5bcw2ZvQf81+SVITAef1zIyOZYZQmPqSTR2AxQCDZfPHVJczxy5brpPuR2KugAoEReIzF2NT0rJGFzCDnSfeqqtlACCzg3pcC1r54qXaeoJQAzXpuq+hc+oNwnqCEAGmdVl2aeVnJQAFLlaWK3ZsdvggUc5wQdDnui0D8vfcduT0PmnVaiVVWtDK4EnCrXwiplHPWqfylwkzVPqKYD64EqAhzw9DxQaPqTGH7kGY82tujfM9czAdXArmd06axK5KBOhT0If0HEaBU/LltZgiOUkJoYOlITH02K211mBGE85QYvvz6kuUath7X7OMcXQns369hV2Is/526AlTHLN26Y2z5/OzSSgHNeBJrpxs//Yy/nbHYRIgfXb1719IAlje2xk5HNC6SULCx1We0PVSCFkGKJ/nbFluapp2YmymhsWXGyBunJ/G9nQFZaxFzO5XDfuG6lmBrEXsp53hdVUJPyFvvxZu7Y+PNjGcmcaCkuRs22oxd+Fa8gKRJ1ap0LWHY3K2tOVvI8f+GQYkgIhrPXAeJrChLUXlcqqxI59QHlWcYcQPlMimTiwxlH3CM4AEHvtYJ8BAf+W0lndY4IbZQMvHzQR1wmEGtd60mO44/OmG3kayoI0GdBjNyjnvTuRv8HfIViY+mpr1QV1vr0tgSl7nGz+ozFT7ks2MU0y4vkHblKE/nblB6Uu8WHwZILqTzuakEKILSk/oVPIFv7ej+Fk8icDEHWznK4nxP9cvJ6U8WQSGC+2cPjI8Qz7YJwev5nprLXgL0icA/W5VtrhXqUi8AAAAASUVORK5CYII=" />
      </div>
      <div :class="$store.state.select == '/trading-list' ? 'blueFont' : ''">
        {{ $t("hj225") }}
      </div>
    </div>
    <div :class="touch == 4 ? 'footDemos' : 'footDemo'" @click="goRouter('/warehouse', 4)">
      <div class="footImgDeft">
        <img v-show="$store.state.select == '/warehouse'"
          src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAwCAYAAABuZUjcAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATPSURBVHgB7Vm/bxNJFP5mL3fCV0F5FRv+geTaa8658q4g0dFR4Ig/gECBkggRR0LEAqSEHhFT0EIoKCH2PwCmofVSUcYFBCQUD+/NbGLvzo+dtWPT8KE18Xp+fPvmzffevBX4EViVMX1egUCVrnn6+ywkOviCBeyIXsgQM5gmViUT3VCE84gQowSmQ5wtLLBrJcwQ6KGP5VBr6y6TBls5wnOwO7jwDX/ivuigBCJMEmzpCPvwkWbM0GqsyhpKYLLEBeqB7eaJyS7WZBc35WJIl9GJszW1OvgI7dBnMvSdffhDetnax2T95zTuBgoQ7uPsq8Ai9bioJhgGS5mg6xseWn21Tg/Yo3/5zXeLxjxCjfpeMfr0abUaYhMjE/dJmA0SLbqWadIEoViXTH6b+mX3Qp90vSFati5+V+El480VSprBbSN0Q5b7BHdFk0gvpK40PNaGexoXNOk6xkHBclvmrKlNmh1j1rZ6kWOA8Unr0eukEivB7RvK8q3MvRl7RDWJa+2tY3y0aT2v08StMp3U/hgoUYI7dh83Q77ILVV5tNWDOyYshHaLWaU4n+CMplkf1+F5H6Mhob7LwYRX5FmcIRX5apHJAGQtHiEoalnQoU20ROqQOFsM4sDfaRzQ0vc7WA57KhZIvCNdb4bkLVmLr8u39DmPckhwSEmSy2pl4wCDN+gRBbN7Ys/VJE9cohySNEgkxi9FqWwYmjT+ZrgchsM6KBlgngjvj0maUVPjWHKicYg3VcTLQ0+yb+Qzo4LHsZCPco3CdzcnVHlo9yjOv8vimDwrUYos8T5CTyEd687n/Pu0LG2OHaMyyF3yFm8jBBJPjHur0p6eniYEVlJZNSzeDOmPXywrE+EapoE0YzSzwzVZrAaHOJfRbVYR4C2mBZrfVBVOcoo2qRlsapgmKqiZxFmXjyirKwOJOUwTAnN2HW8ofQ4/AESl04RxUXUHoLuiTpZcwvAp/Rj5SCZPWbcD4DoBxer/LUpyOBfJy5+YuoXziE3ia3JbHXbXKFPkSMU+vyVq6uwHdTp5UbZAGZ8Dnl2WePy/xHnP2tz+B3h91d8mReI/SEjapFtip3CYdZnQ53nXz9v/SVz7K53xgDbPK4FWl6pCqTbN/UFt/pWoXtDfX7wHlp56Kyft/EEiznwXwWrR8RHvfRn8zdbfvSRPHuL43jAOvqII3aLssIoQCP+BePO1oMu8z4TzpNu0EjdeFtap2vmQ38qPfZwbePFrcarA7nHhgcCTN7QCFovyvesvgYVHwvp7BofYCwn5nHcvowghqcIQqrOkoWco/62Qn33kK7iMqfiYrW0nfU8Nz9tvEkgrW7aQ3zKqSUIV3mPvgPrBHmKyODkq2jdntpqkk/iIsr+itwa/qQpYqVciJdBW0fyEkguD1yBx5r6kB5IUhIA9KuZ0jEzR1W88dGhDZl4l+neEJtGFH2YJ4XTJt4n0Yt5AduIc6isqx74YpBR9WoGGMKtg67JOn+F18iyznjKII3LbfbyiygvbwfIW4cB6n32SVcB2RnVBH2I28Zn6edKNGUdnPjQXZ4A8iSQlOYQ7n9EuVCP3qdMDVql9Na0ExJlxjkjJuCT9ia6AIqjbx7nM21cW1+/aNXj5EjosJ+pl1ail5J/4ienhOwTprAE0ZSRWAAAAAElFTkSuQmCC" />
        <img v-show="$store.state.select != '/warehouse'"
          src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAwCAYAAABuZUjcAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAbTSURBVHgB7VldUhtHEO6elRRivygn8PoEyOWiKm9eTmByAi8uIBRQZfkESCcAqjAmlgLrExhOgPQcV5BPgPKWPIW82SyaTvfqZ3f2Tyt+7Bd/VQLN7Px80zvT/U0L4RvAXV+34Vq9QESHizVEqBJAj67Ki563e1lkjBJ8Rbgr6w6itY0aHFDmMySwqfhQX4e469ZtLPvHbFkntQHBJVt/uai1BQj3jJGVP8h2yGqjiZ54rYMezAAL7hFiaVWicyY9l98Sf649XfjS+/OPwuQV3COw4jcKtUOoKcTj5bWNC3dta6lInxsTF88QeIccENEu/+uHFXDJn7+CTwoQ0FZAH9yVjW2YgsJ7fLhX1RKb5zl3sqPPxJUhUU+Dv+e1WonXvc4L/Dw3d+ntmodvZX3LGWhyebwX8T5aU8NrHzThpsQnLizLI8RABB3yB+whDvtQEC9XN1ymsgOxA6w1Lnrt/U5an9yt4q5tbCtlnRUlLZC2qmJdFHndYxy1DjwNtBhsJWMsyhwj06sEpAEbiQe8PxH1KX+TT5cDx388g3iNqjkpOvNPFoA9RRcKgNv9Pf904R/utxSOAfb8wtP3vY8fE/4di5OmrlKq0T5Mf3XB60YUC9nReq31a6/9dhcKYvnXzTM2hjMuK94u7ZTtkiAe+N6Kf2FUamwetfcbUGTi1a1dfsWvZKEcWU4sxE5rhuDirvP82j+DwADUP3p38DitXYJ4fMWzkB5jdXWj1poxEsYhHud6rtSLe6IxDOLslx2lrbOwJnvFtwW/2SrMfa7CZ3aTM2iUMQyRhQPx02FZabUMd4RIHHjGB9xG9Kug2TdUfN5em0Kc3xB9IvC9tFgQh2Hx5bXNc66oDUt3Y+1Z40Aws8QCrfe839+eZLUxLT4hHXT+BLfAVCmbA+mDlnLYU3na1820YJYXgPpwQ7juRo0FVnrgEu1NdEpIe1xoyn8px4PPaAUuVtSZ6yY10Z1fJEaWPkOI6+/8OCAQT8J+v8GMn43rRHjBkPxi1PKmxc1V23AT0kNLR0hTXylc5PPi5JEWyHNpx/t0OcpFyA8tX6+mEicFvUjjZ9GGRYAlv2EqR+prpRenEY4j0C5W+QlEtmsgeUv+dipx3muhrhCrla8KiXqByyEfVVSeDkl7h8VVYhTe4S73L5vCS0HdXdlyhl8j0KriRcv8yreLWp3F0SujgqB5U9JjCHk2YNOcZ6gYp4d8Au+o9SY3ELG15ep1Ho5O3tFvB3cWvOKc9FX5p4Q7JCwbB4OX5r5c2/iQ5pLCJuBGy2qg3sMdAgeBjA7HL31xE8SDvQX0OtZ1KTjVvI9TF6BwfvKdF91uz3YYp0Ff/+AZFRbOpwYgznFwQzT3FvCp5pu43G7i7TkzVQtLdKuIm8qHRRhB6PHYOE5m5Dx6t9/QgL9ASgRN3O6jflvBBdwHiIzMQCrxMTHv3f6JuCRerbFnLR9rkDlBeurh1kCMBEe0EyHfXdvcURrqrBSH2VNxSRIU1+sNNbhy+CAuEeZEVYRHiTGDW9XVjuz/LNEUtOMLttxVU7MEMu4kK0p9g/jwIgH1YTtO//Lp5a/BfXG0AG/0MSFWHhEmjXb8MZav6nLAZVA+5A4f8ib4ujMmJ+6Uz9DORJSVlcy5FJujGp3PIM5uzDY8uxXxFjkgoB5P/Gi8YAla0VsNEzJ1B8IxVCzR//1RHzs6Hkfgf6PlQAOBH25PPkdqCiMHCoClQicssGWsL0Y/Fk6NuJeCEWFMiDnq6h8rpjsuXzlGWUPXDPmW7sSGtsfaIA9xP4tKvYq3CbyUKj8ODnqa9pY6Da9FHcYvyDhMe4Tz+ZWTAiGfw3drevhOhOUp+RTR3qT5JxTSVb559rKyAokcz0hOJPMqPKDSdBaty8vhZfYTD8JpNe8WaQpJOUv21uCiBo9FvKWE/P0Ou7tOtA6VPs7TKpN+hHthJ6iypUQm1OCGpPnsHBuVnOMZK87UwxkIrbiIL1vnbpBVzQb5pYYRmoU8q8ZZEqDikYJYwpaO3aS60cRUZprZTIVFurPz5z+nvDdP4HquF0/m5PXjzIHhv81+k58Q6/Hfi5hkb/CAg2Hk0Obmx0ck8rUHH954NMwiHy6C34opnVPc4qR1Vz+oLCU8TVrT4NbDUZMzT8+L5EX4J5PT49ZB4pr3cm2rwU8LbxNz0OBnF85bvkn1TKl7XG7qnErYKZrMiUe6MQzfXRTBm8Cmflh+nEVakJ5XIeyyv5zuDWQSxD39YzlzgrhIIxZRCGTzHPakEUsCTgx1FKnO4GGpk5WhjSJzj4+SMw4HlRqNDguKb1bQxwHnSkpWb9a0w3d8xzfA/zL5S8uMqOLXAAAAAElFTkSuQmCC" />
      </div>
      <div :class="$store.state.select == '/warehouse' ? 'blueFont' : ''">
        {{ $t("hj226") }}
      </div>
    </div>
    <div :class="touch == 5 ? 'footDemos' : 'footDemo'" @click="goRouter('/user', 5)">
      <div class="footImgDeft">
        <img v-show="$store.state.select == '/user'" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM2SURBVHgB7ZoxTxRBFMf/s7E4rc4SGxY7K7G14cBOC7A3ERJ7MDHkINHbSwzYHfYmQG+CFpbK3SdAKjtZG+3kKkVN9vnerdFIdmZnZvfuVsMvudvldmby3ry38968AThjvCiUxQrVUcMC303zqDN8rfM1/P2cEPN3zNdDvr7AE9VFCRRXoEkNBFjmuwZEaFtEIYUuErRZmRie+CvQpJB7b/OngeLs+CoSwIc1WuGeByUJLyzyWPtYpQXHfh4WWKMO91rBsEgQsSXats3dFGjSNs/8IoaNgxL2LiQzPwrhhYAVWCUrK9tZQHxeoYNRk2A2b7nNV0BWmwBHGAey1H7FNWypvq5JvgspNue4kEB4wbxgmC2QBql9jJc+vmBKZwWzBdSIXlozdZMV9ApEJLnMXVQBwrzukV6Bb6VF2eIoThBlMckgMHRqoEoE2fLoFSBcRZVI2AoZmCwwhWoRZv1oWoUmUSWC7L2GXzpdIf5rBT6gSiRwjsRvUS3irB8D1w5jQwoAGegVSLj04cD8FeDzQ8L7B4RJTW2iXgMezQGdmzS4d4KyPeKctkONO/xgvyO7Usny9VQo+ezfI9x/pfDy3Z/nMxxVOrcI0xPp3/0TQvuN9Y62p6tY6BWIOH1dp12RDRaIsI3L6X14Edi7w1P2kf2QX72Qp2D60t/t42O4sKN7kLcfcNqNtW4QWnP57XYPgKXn1rMfY0NpswJzHEjN9hSWtF8rzD5Tg1nPlORYBHcSfjCs6WH+SLIv+M5FLE0uoqMxxdngRPpO9E+Aw09A98i5DGWcfcFuxPFsLeNfVYnY1MgulUhLG9bVslLghcymVmqfC22oCKNTYgmbyioOuddG1yni7xaGgeK4o3Abj+3PDvzK6+sku6M9OL7YOfTY5xddS+zFDjhSa0jlIoQvMutyNrCptuBBsf1AwhGSUIyEUxZP4YViCihOM1RBN5Lqh2UlOru7L+UWfY3lQxP+FlClBrY6zvN5mwd+CjSpVdh1TqP4iFYivnM3V4Z5XmBxHnAadwsoP1Nbjh2yKzkFSTcFxMTDrpk6noC6KVAb7EtjDJeeS2O/ZTTKLnWXQuT/bwf/JD8B9ynfSSK+YygAAAAASUVORK5CYII=" />
        <img v-show="$store.state.select != '/user'" src="data:image/png;base64,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" />
      </div>
      <div :class="$store.state.select == '/user' ? 'blueFont' : ''">
        {{ $t("hj227") }}
      </div>
    </div> -->
  </div>
</template>
@@ -140,10 +84,6 @@
    return {
      touch: 0,
      tabs: [
        // {
        //   path: '/home', key: 1, name: this.$t("hj224"), img: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAINSURBVHgB7ZlPMgNBFMa/HlmEjViyES4gXECwtXAAhYU92ajIJmxQNjiB3CBcADfAylJsrF1AnteTkiozkz/d86KH6l9VpiZd3ZP35X390ukG/jgKo2CfCshjj59eCt8Tbvn6gDPVgjDyAqpURoAm3xV+tBNa+EQF5+oGggSQpEp1fuI9osFrFIrIsTDdRxCZDGjLjHNwCuWh+hNu+FWRsFR6ATUqcTDN8Bs2QVuKsJJWRDoLHdI+X++Ng9foMQFecRA+wxq7DHQsU+fRqT68C+ESp6oCC8wFVKnIo5rdEimFpaXMLNQpkY/iwWu0pRTb8YA2TIYNL6BfiZTCotQOtpBpiZRiyFLbX4BtiZRiiHnR20KHtA3bEinFd6ntxNKjSxJ6IuXC9Ux2aIeZeIg2J2dgDBfIGgrX4XyMEBdQpR2ntumFjmkCsRIbFxDAqA7/MsvRhrgAwiSyy1y0Qfb/gAO8ANfkIMQyu7O+SijP9+/39A4c3yncvkAEkQxsL/FP9u7g4DWlGaC5SdhahAgiAuprBFMu183HJJFaQGkaKFossAt5YFZgYZ5awGQe1sxNpc+CL6Ou8QJc4wW4xgtwjRfgGi/ANf9SwBuyShsf0aakbZUGskqA2BFt8t5ojY74Knocmpo2rnhvNHak1Xt7vcZbjIDeZlzgrIzuUKMfii1DeOa7Bk5UAx6PJ8YX112DrjaKDVEAAAAASUVORK5CYII=',
        //   actImg: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAOiSURBVHgB7VnNUhpBEO4exErlhE8gPoFgxSRVOQRvOeoxp2wstYhaFXwC8QmCVf5QQMHmCcRbckJvKU0Qb7mJtxz1GDDT6cFCd5flZ9khaIrvArvTMzs90/31dA/AIwfCAGAYiRCM/TZEAKfVs/xD53BDRdNMV0EztCtgrKx9EgAJ10YJqXxudwM0QpsCvOphHK8f8ICRTnIEVKWanNO1GwI0wFiKxzBYP+s2eQUEZEVFyVhaj4EG+FbAWFndFCJQQoSQrUHChnwanMhndlkv3LI2KSWEIFZidRN8om8TUo4qgrUCIM7bW6gqCRbM7F7FJr+8GhGIB/w37JAvyprc6Nek+lLAMFYjOI7K3sP2FjqWQhpm2n0yRpz9hOoFJIjZevnwC88KGEsfEohi02kyRLRdyO4lehljcWU9yT3s5kNwJUlumbn9FHhAwItwgyIRkzz5J9YPI+LbfHa35w+f/Tg5is7MXvL6xaA5Fv/yOG+i0eehs/Lp117H6mkH2lMk27vgrU/3Z7/KpISsl8Bhil5MqisLtaNIkvBZPh2P9jt5BTOdqspaMEqE29b3Xqi24w40KBIw2dLAFMkR1ZOtdoOrX6hPSUqaub2tdv3a+oD75BsUOVfI7RVBM5RfTM/MHio/4Mc7guDn2HR0Firl02O3fq4KMGcb7KyOFW5Q5IKZ2f8JAwJP8tf07KtDXveIlaJvlXh2XSl//+bs42pC71fWLqwDeKFIXWgxKUWz9eCUaaaurHItTqxW3xagkMx/PXmFfGYnaXNujjsc+eedci0KIDE3WyBRtnWgQYPqY0nbCwGvnTKtNBqAyeZfDvkVPzTpFw1zIbi8eyFhyinTMQ5wQLmGIYMEXHRq15IPDBOPXoEx0ITGkQMD6pQa6yRHTPfECY6Z2dESDPWklCrw3WZlsW6y6kwlgA441rwDDdCiAEdKz6khM5yWs5RvE1Kpoi3ss4kw3527CpOYpOYucWAy4vGwX5r27wMBGQJ5f6RSx458dt90E11kU2skMc2P34yF+acKPjCi0WFjpMCwMVJg2BgpMGyMFBg2/nMF8D4/HhrIWcK3o1UBSZaTJIZ13KL0C1UdtJV4XPLjlsKWEV+PCUkl6zviohJLXkEb2ItgHWQJQtZ7BS+yCgGiaNZx8+NemVteTyHSR3hAaFcddK2NVsonXyIzLyZ4BV7CA0Cn0mbn8nrjTquW4PSv6/XpIMDZWyWAophL7xzBCCOM4Iq/amJyomlCik4AAAAASUVORK5CYII='
        // },
        {
          path: "/home_index",
          key: 1,
@@ -208,6 +148,7 @@
  height: 1.3rem;
  display: flex;
  justify-content: space-around;
  background-color: #13161e;
}
.footDemo {
@@ -218,7 +159,7 @@
  align-items: center;
  flex-wrap: wrap;
  font-size: 16px;
  color: rgb(104, 114, 132);
  color: #c3c3c3;
}
.footDemos {
@@ -284,7 +225,6 @@
  width: 0.9rem;
  height: 0.9rem;
  border-radius: 100%;
  /* background-color: rgb(25, 122, 246); */
}
.homeImg {
@@ -298,14 +238,6 @@
}
.blueFont {
  color: #c4d600;
  color: #2778f3;
}
</style>
<style lang="less" scoped>
// @purple: #3d1152;
// .footCss {
//   background: @purple;
// }
</style>
src/components/pageHead.vue
@@ -1,7 +1,7 @@
<template>
  <div class="page_head">
    <div class="head_content flex-between" :class="fixed ? 'fixed' : ''">
      <div class="head_left flex-start" @click="$router.go(-1)">
      <div class="head_left flex-center" @click="$router.go(-1)">
        <van-icon name="arrow-left" size=".4em" />
      </div>
      <div class="head_title line-one">{{ title }}</div>
@@ -32,10 +32,10 @@
</script>
<style lang="less" scoped>
@green: #c4d600;
.page_head {
  @hH: 1.8em;
  font-size: 10vw;
  height: 1.22em;
  height: @hH;
  position: relative;
  .fixed {
    position: fixed;
@@ -43,10 +43,10 @@
    left: 0;
    width: 100%;
    z-index: 999;
    background: #fff;
    background: #13161e;
  }
  .head_content {
    height: 1.22em;
    height: @hH;
    padding: 0 0.25em;
    border-bottom: 0.01em solid #f5f5f5;
    & > div {
@@ -54,11 +54,11 @@
    }
    .head_left {
      color: @green;
      width: 1.2em;
    }
    .head_title {
      font-size: 0.4em;
      font-size: 0.525em;
      font-weight: 500;
      width: 60%;
      text-align: center;
src/components/stock-list.vue
@@ -46,6 +46,12 @@
      </div>
    </van-row>
    <div class="more-news" @click="getMore" v-if="stockList.length > 0">
      <span v-if="lod == 1">{{ $t("加载更多") }}</span>
      <span v-else-if="lod == 2">{{ $t("加载中") }}</span>
      <span v-else-if="lod == 3">{{ $t("沒有更多了") }}</span>
    </div>
    <!-- 无数据时显示 -->
    <div
      class="no_data flex-center"
@@ -53,31 +59,23 @@
    >
      <img src="@/assets/img/zhaobudao2.png" alt="" />
    </div>
    <n-pagination
      :pageNo.sync="pageNum"
      :pageSize="pageSize"
      :total="total"
    ></n-pagination>
  </div>
</template>
<script>
import nPagination from "@/components/nPagination.vue";
import * as api from "@/axios/api";
import { Toast } from "vant";
import { WhrWebSocket } from "@/utils/WhrWebSocket";
export default {
  name: "stock_list",
  components: {
    nPagination
  },
  components: {},
  data() {
    return {
      pageNum: 1,
      pageSize: 10,
      pageSize: 20,
      total: 1,
      stockList: [],
      lod: 1 // 1 加载更多 2 加载中 3 沒有更多了
    };
  },
  props: {
@@ -98,25 +96,17 @@
      default: false
    }
  },
  watch: {
    propOption: {
      handler(val) {
        this.pageNum = 1;
        this.getStockList();
      }
    },
    pageNum: {
      handler(val) {
        // this.stockList = [];
        this.getStockList();
      }
    }
  },
  watch: {},
  mounted() {
    this.getStockList();
    this.init();
    this.initWebSocket();
  },
  methods: {
    init() {
      this.pageNum = 1;
      this.stockList = [];
      this.getStockList();
    },
    // 获取数据
    async getStockList() {
      let opt = {
@@ -124,15 +114,17 @@
        pageSize: this.pageSize,
        stockPlate: "",
        keyWords: "",
        // stockType: '',
        orderBy: ""
      };
      opt = { ...opt, ...this.propOption };
      let data = await this.listApi(opt);
      this.stockList = data.data.list;
      this.stockList = [...this.stockList, ...data.data.list];
      this.total = data.data.total || 1;
      this.lod = 1;
      if (this.total <= this.stockList.length) this.lod = 3;
    },
    // 点击进入详情
    toDetails(item) {
@@ -168,7 +160,7 @@
    initWebSocket() {
      console.log("initWebSocket");
      this.Trade = new WhrWebSocket({
        path: `wss://ws.kuspitai.com/websocket-server `,
        path: `wss://usws.yanshiz.com/websocket-server `,
        onmessage: this.getTradeMessage
      });
@@ -183,6 +175,13 @@
        userToUpdate.nowPrice = result.last;
        userToUpdate.hcrateP = result.pcp;
      }
    },
    // 加载更多
    getMore() {
      if (this.lod == 3) return;
      this.lod = 2;
      this.pageNum++;
      this.getStockList();
    }
  },
  beforeDestroy() {
@@ -201,23 +200,22 @@
.stock_list {
  .markets_head {
    background-color: @green2;
    // background-color: @green2;
    margin-top: 0.25em;
    height: 1em;
    padding: 0 0.25em;
    .head_item {
      font-size: 0.4em;
      font-size: 0.3em;
      height: 100%;
      font-weight: 600;
      font-weight: 300;
      color: #898a8e;
    }
  }
  .markets_item {
    // margin-top: .25em;
    // height: 1em;
    padding: 0.5em 0.25em 0.25em;
    border-bottom: #f5f5f5 solid 0.01em;
    border-bottom: rgba(#fff, 0.2) solid 0.01em;
    position: relative;
    .item_n {
src/components/tabHead.vue
@@ -1,289 +1,45 @@
<template>
  <div class="tab_head">
    <div class="head_left">
      <div class="icon" @click="searchShow = true" v-if="leftShow">
        <van-icon name="search" size=".5em" />
      </div>
      <slot name="left"></slot>
    </div>
    <div class="head_right">
      <div class="icon" v-if="rightShow" @click="aRouter1">
        <van-icon name="service-o" size=".5em" />
      </div>
      <div class="icon" v-if="rightShow" @click="goToTopUp">
        <van-icon name="setting" size=".5em" />
      </div>
      <slot></slot>
    </div>
    <!-- 搜索弹窗 -->
    <van-popup v-model="searchShow" round position="bottom" :style="{ height: '80%' }">
      <div class="popup_head">
        <van-icon name="arrow-left" size=".5em" @click="searchShow = false" />
        <div class="popup_input">
          <van-field v-model="searchValue" :placeholder="$t('hj37')" left-icon="search" clearable />
        </div>
        <van-button type="primary" round @click="submit">{{
          $t("Search")
        }}</van-button>
      </div>
      <van-list v-model="loading" :finished="finished" :finished-text="$t('hj43')" @load="onLoad"
        v-if="(lists && lists.length > 0) || !finished">
        <van-cell v-for="item in lists" :key="item.id" @click="toDetails(item)">
          <div class="search_item">
            <div class="search_item_left">
              <div class="search_item_left_name">{{ item.name }}</div>
              <div class="search_item_left_hint">
                <span>{{ item.stock_type }}</span>
                {{ item.spell }}
              </div>
            </div>
            <div class="search_item_right">
              <span>{{ item.nowPrice }}</span>
              <van-icon name="arrow" size="1em" />
            </div>
          </div>
        </van-cell>
      </van-list>
      <div class="zhaobudao" v-else>
        <img src="../assets/img/zhaobudao.png" alt="" />
      </div>
    </van-popup>
    <slot name="left"></slot>
    <div class="tab_title">{{ title }}</div>
    <slot></slot>
  </div>
</template>
<script>
import * as api from "@/axios/api";
import handleDt from "@/utils/deTh";
export default {
  name: "tabHead",
  data() {
    return {
      searchShow: false, // 搜索弹窗
      searchValue: "", // 搜索内容
      lists: [], // 搜索列表
      loading: false, // 是否加载
      finished: true, // 是否加载完成
      pageNum: 1,
      pageSize: 20
    };
  },
  props: {
    // 是否显示客服和设置图标
    rightShow: {
      type: Boolean,
      default: true
    },
    // 是否显示左侧搜索
    leftShow: {
      type: Boolean,
      default: true
    title: {
      type: String,
      default: ""
    }
  },
  watch: {
    searchShow() {
      this.searchValue = "";
      this.init();
    }
  },
  async mounted() {
    this.init();
    this.getInfoSite();
  },
  methods: {
    // 跳转客服页面
    aRouter1() {
      window.open(this.onlineService);
    },
    // 获取客服地址
    async getInfoSite() {
      let data = await api.getInfoSite();
      if (data.status === 0) {
        this.onlineService = data.data.onlineService;
        // console.log(this.onlineService, 'this.onlineService');
      } else {
        this.$store.commit("elAlertShow", {
          elAlertShow: true,
          elAlertText: data.msg
        });
      }
    },
    goToTopUp() {
      // 跳转设置页面
      this.$router.push("/setting");
    },
    onLoad: handleDt.throttle(async function (a, b) {
      // 搜索列表加载
      this.finished = false;
      let opt = {
        pageNum: this.pageNum,
        pageSize: this.pageSize,
        stockPlate: "",
        keyWords: this.searchValue,
        stockType: "",
        orderBy: ""
      };
      let data = await api.getStockByType(opt);
      this.loading = false; // 加载状态结束
      if (data.status === 0 && data.data.list) {
        this.lists = [...this.lists, ...data.data.list];
      } else if (data.status != 0) {
        this.finished = true;
      }
      if (data.data.list && data.data.list.length <= 0) {
        // 数据全部加载完成
        this.finished = true;
      } else {
        this.pageNum++;
      }
    }, 500),
    init() {
      // 初始化
      this.pageNum = 1;
      this.lists = [];
      this.finished = true;
    },
    submit() {
      // 提交搜索
      this.init();
      this.onLoad();
    },
    // 点击进入详情
    toDetails(item) {
      const obj = {
        pid: item.code || "",
        type: item.stock_type || ""
      };
      window.localStorage.setItem("kLine", JSON.stringify(obj));
      this.$router.push({
        path: "/kline",
        query: {
          code: item.code,
          type: item.stock_type
        }
      });
    },
  data() {
    return {};
  }
};
</script>
<style lang="less" scoped>
@grey: #dddddd;
@dark_green: #07c160;
.tab_head {
  font-size: 10vw;
  padding: 0.266em;
  padding: 0.2em 0.525em;
  background: #13161e;
  display: flex;
  justify-content: space-between;
  align-items: center;
  justify-content: space-between;
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  left: 0;
  z-index: 999;
  height: 1.5em;
  .zhaobudao {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    padding-top: 0.5em;
    img {
      width: 65%;
    }
  }
  .search_item {
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 1.5em;
    padding: 0.5em 0;
    .search_item_left {
      flex: 1;
      .search_item_left_hint {
        margin-top: 0.3em;
        color: #969799;
        font-size: 0.8em;
        span {
          border-radius: 0 26em 26em 0;
          background: @dark_green;
          color: #fff;
          padding: 0 0.3em;
          margin-right: 0.1em;
        }
      }
    }
    .search_item_right {
      display: flex;
      justify-content: end;
      align-items: center;
      color: #969799;
      span {
        margin-right: 0.5em;
      }
    }
  }
  .popup_head {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 0.25em;
    /deep/ .van-cell {
      background: none;
    }
    /deep/ .van-field__left-icon .van-icon,
    .van-field__right-icon .van-icon {
      font-size: 1.5em;
    }
    /deep/ .van-field__control {
      font-size: 1.5em;
    }
    .popup_input {
      background: #f7f8fa;
      @inpH: 1em;
      height: @inpH;
      flex: 1;
      border-radius: @inpH / 2;
      display: flex;
      align-items: center;
      margin-left: 0.5em;
      margin-right: 0.5em;
    }
  }
  .icon {
    width: 1em;
    height: 1em;
    border-radius: 50%;
    background: @grey;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .head_right {
    display: flex;
    justify-content: end;
  }
  .head_right {
    .icon {
      margin-left: 0.266em;
    }
  .tab_title {
    font-size: 0.55em;
    font-weight: 700;
    color: #ccc;
  }
}
</style>
src/locales/cht.json
@@ -681,10 +681,17 @@
  "uv1": "審核中",
  "sc": "股票代碼",
  "abc": "添加銀行卡",
  "hksi":"香港股票指數",
  "tsi":"臺灣股票指數",
  "ni":"印度股票指數",
  "hk1":"香港",
  "tw":"臺灣",
  "id1":"印度"
  "hksi": "香港股票指數",
  "tsi": "臺灣股票指數",
  "ni": "印度股票指數",
  "hk1": "香港",
  "tw": "臺灣",
  "id1": "印度",
  "kf1": "需要任何幫助請聯繫您的專屬交易助理或開戶專員",
  "划转": "劃轉",
  "理财": "理財",
  "加载更多": "加載更多",
  "加载中": "加載中...",
  "沒有更多了": "沒有更多了",
  "成交价": "成交價"
}
src/locales/en.json
@@ -663,28 +663,30 @@
  "信用分": "Credit Score",
  "剩余贷款额度": "Remaining Loan Amount",
  "贷款申请": "Loan Application",
  "还款":"Repayment",
  "确认还款吗":"Confirm repayment",
  "日内":"In the meantime",
  "建仓成本":"Position-building cost",
  "已申购":"Already purchased",
  "还款": "Repayment",
  "确认还款吗": "Confirm repayment",
  "日内": "In the meantime",
  "建仓成本": "Position-building cost",
  "已申购": "Already purchased",
  "hj316": "Please enter bank cardholder name",
  "Password": "Password",
  "rnv":"Real Name Verification",
  "it1":"ID Type",
  "dl1":"Driver License",
  "pa1":"Passport",
  "ot1":"Other",
  "in1":"Identification Number",
  "fsi1":"Front Side of ID Photo",
  "bsi1":"Back Side of ID Photo",
  "uv1":"Under Verification",
  "sc":"Stock Code",
  "abc":"Add bank card",
  "hksi":"Hong Kong Stock Index",
  "tsi":"Taiwan Stock Index",
  "ni":"Indian stock index",
  "hk1":"Hong Kong",
  "tw":"Taiwan",
  "id1":"India"
}
  "rnv": "Real Name Verification",
  "it1": "ID Type",
  "dl1": "Driver License",
  "pa1": "Passport",
  "ot1": "Other",
  "in1": "Identification Number",
  "fsi1": "Front Side of ID Photo",
  "bsi1": "Back Side of ID Photo",
  "uv1": "Under Verification",
  "sc": "Stock Code",
  "abc": "Add bank card",
  "hksi": "Hong Kong Stock Index",
  "tsi": "Taiwan Stock Index",
  "ni": "Indian stock index",
  "hk1": "Hong Kong",
  "tw": "Taiwan",
  "id1": "India",
  "kf1": "If you need any assistance, please contact your dedicated trading assistant or account opening specialist.",
  "划转": "Transfer"
}
src/locales/hi.json
@@ -686,5 +686,7 @@
  "ni": "भारतीय स्टॉक इंडेक्स",
  "hk1": "हांगकांग",
  "tw": "ताइवान",
  "id1": "भारत"
  "id1": "भारत",
  "kf1": "यदि आपको कोई सहायता चाहिए, तो कृपया अपने समर्पित व्यापार सहायक या खाता खोलने विशेषज्ञ से संपर्क करें।",
  "划转": "स्थानांतरण"
}
src/page/bankCard1/index.vue
@@ -1,122 +1,91 @@
<template>
  <div class="bank_card_page">
    <van-nav-bar :placeholder="true" :safe-area-inset-top="true" :title="$t('关于我们')" left-arrow
      @click-left="$router.go(-1)">
    <van-nav-bar
      :placeholder="true"
      :safe-area-inset-top="true"
      :title="$t('关于我们')"
      left-arrow
      @click-left="$router.go(-1)"
    >
    </van-nav-bar>
    <div class="content">
      <!-- <div class="top_back">
                <div class="left_back_icon" @click="$router.go(-1)">
                    <img src="../../assets/img/zuojiantou.png" alt />
                </div>
            </div> -->
      <div class="titles">
        <span>{{ $t('关于我们') }}</span>
      </div>
      <div class="bank_name">
        Duro Capital is an India-focused investment management firm and is the manager for the Duro India Opportunities
        Fund (the “Fund”). The Fund’s investment objective is to achieve long-term capital appreciation by investing
        into equity and equity-related securities of fairly priced businesses with a defensible right-to-win in their
        industries and that are undergoing structural changes, which enables these companies to compound earnings at
        ~25% over the Fund’s holding period. Duro Capital is regulated by the Monetary Authority of Singapore (MAS) and
        holds a Capital Markets Services (CMS) License.
      </div>
      <p
        style="padding: 0px; margin-top: 0px; margin-bottom: 0px; text-align: justify; color: rgb(204, 204, 204);"
      >
        广州期货交易所(以下简称广期所)于2021年4月19日挂牌成立,是经国务院同意,由中国证监会批准设立的第五家期货交易所。广期所由上海期货交易所、郑州商品交易所、大连商品交易所、中国金融期货交易所股份有限公司、中国平安保险(集团)股份有限公司、广州金融控股集团有限公司、广东珠江投资控股集团有限公司、香港交易及结算所有限公司共同发起设立,是国内首家混合所有制交易所。设立广期所,是健全多层次资本市场体系,服务绿色发展,服务粤港澳大湾区建设,服务“一带一路”倡议的重要举措。
      </p>
      <p
        data-v-536e3e91=""
        style="padding: 0px; margin-top: 0px; margin-bottom: 0px; text-align: justify; color: rgb(204, 204, 204);"
      >
        广州期货交易所(以下简称广期所)于2021年4月19日挂牌成立,是经国务院同意,由中国证监会批准设立的第五家期货交易所。广期所由上海期货交易所、郑州商品交易所、大连商品交易所、中国金融期货交易所股份有限公司、中国平安保险(集团)股份有限公司、广州金融控股集团有限公司、广东珠江投资控股集团有限公司、香港交易及结算所有限公司共同发起设立,是国内首家混合所有制交易所。设立广期所,是健全多层次资本市场体系,服务绿色发展,服务粤港澳大湾区建设,服务“一带一路”倡议的重要举措。
      </p>
      <p
        data-v-536e3e91=""
        style="padding: 0px; margin-top: 0px; margin-bottom: 0px; text-align: justify; color: rgb(204, 204, 204);"
      >
        2021年5月,广期所两年期品种计划获中国证监会批准,明确将16个期货品种交由广期所研发上市,包括碳排放权、电力等事关国民经济基础领域和能源价格改革的重大战略品种,中证商品指数、能源化工、饲料养殖、钢厂利润等商品指数类创新型品种,工业硅、多晶硅、锂、稀土、铂、钯等与绿色低碳发展密切相关的产业特色品种,咖啡、高粱、籼米等具有粤港澳大湾区与“一带一路”特点的区域特色品种,以及国际市场产品互挂类品种。未来,广期所将不断丰富产品体系,强化市场服务能力,更好满足实体经济风险管理需要。
      </p>
      <p
        data-v-536e3e91=""
        style="padding: 0px; margin-top: 0px; margin-bottom: 0px; text-align: justify; color: rgb(204, 204, 204);"
      >
        广期所将以习近平新时代中国特色社会主义思想为指导,坚决贯彻落实党中央、国务院重大决策部署和证监会工作要求,完整、准确、全面贯彻新发展理念,以高质量发展为主线,以创新型、市场化、国际化为方向,以产品、制度、技术创新为引领,着力打造绿色、创新型期货交易所,积极服务构建新发展格局,助力实现绿色低碳转型发展
      </p>
      <p data-v-536e3e91="">
        <br data-v-536e3e91="" /><img
          data-v-536e3e91=""
          src="https://res.pfmjnru.xyz//storage/article/cover/6f39e7df12297147c0558d26896e2b10.jpeg"
          width="359"
          height="230"
        /><br data-v-536e3e91="" />
      </p>
    </div>
  </div>
</template>
<script>
  import * as api from "@/axios/api";
  import {
    Toast
  } from "mint-ui";
  import {
    isNull,
    bankNoReg,
    isName
  } from '@/utils/utils'
import * as api from "@/axios/api";
import { Toast } from "mint-ui";
import { isNull, bankNoReg, isName } from "@/utils/utils";
  export default {
    name: "bankCard1",
    data() {
      return {
      };
    },
    created() {
    },
    methods: {
    }
  };
export default {
  name: "bankCard1",
  data() {
    return {};
  },
  created() {},
  methods: {}
};
</script>
<style scoped lang="less">
  /deep/ .van-nav-bar__content {
    height: 65px;
  }
/deep/ .van-nav-bar__content {
  height: 65px;
}
  /deep/ .van-nav-bar__title {
    font-family: "DINPro";
/deep/ .van-nav-bar__title {
  font-family: "DINPro";
  width: 100%;
  height: 1.17333rem;
  display: flex;
  justify-content: center;
  align-items: center;
  font-style: normal;
  font-weight: 500;
  font-size: 0.48rem;
  color: #14181f;
}
.bank_card_page {
  width: 100%;
  height: 100%;
  .content {
    width: 100%;
    height: 1.17333rem;
    display: flex;
    justify-content: center;
    align-items: center;
    font-style: normal;
    font-weight: 500;
    font-size: 0.48rem;
    color: #14181f;
    padding: 0.4rem 0.6rem;
    line-height: 0.55rem;
    font-size: 0.3rem;
  }
  .bank_card_page {
    width: 100%;
    height: 100%;
    background: #fff;
    .content {
      width: 100%;
      padding: 0 0.6rem;
      .top_back {
        width: 100%;
        height: 2rem;
        >div {
          width: 10%;
          height: 100%;
          display: flex;
          align-items: center;
        }
        img {
          width: 0.6rem;
          height: 0.6rem;
        }
      }
      .titles {
        width: 100%;
        height: 1.5rem;
        font-size: 0.641rem;
        margin-top: 1rem;
        span {
          font-weight: 600;
        }
      }
    }
    .bank_name {
      width: 100%;
      height: 1.5rem;
      font-size: 0.5rem;
      display: flex;
      padding: 0 0.2rem;
      background: rgb(247, 247, 247);
      border-radius: 0.2rem;
      margin-top: 0.3rem;
    }
  }
}
</style>
src/page/home/components/newsItem.vue
@@ -58,7 +58,7 @@
.news_item {
  width: 100%;
  padding: 0.25em;
  border-bottom: 0.02667em solid #f5f5f5;
  border-bottom: 0.02667em solid rgba(#fff, 0.1);
  position: relative;
  .news_time {
src/page/home/fundIndex.vue
New file
@@ -0,0 +1,3 @@
<template>
    <div>理财</div>
</template>
src/page/home/homeIndex.vue
@@ -23,7 +23,7 @@
      </div>
      <div class="swiper">
        <div class="swiper-wrapper flex-between">
          <div class="swiper-slide">
          <!-- <div class="swiper-slide">
            <div class="nav_item flex-start" @click="toPage('/aiTrading')">
              <img src="../../assets/img/home_1.png" alt="" />
              <span>{{ $t("量化交易") }}</span>
@@ -34,17 +34,29 @@
              <img src="../../assets/img/home_2.png" alt="" />
              <span>{{ $t("hj621") }}</span>
            </div>
          </div>
          </div> -->
          <div class="swiper-slide">
            <div class="nav_item flex-start" @click="toPage('/ipo')">
              <img src="../../assets/img/home_3.png" alt="" />
              <span>IPO</span>
            </div>
          </div>
          <div class="swiper-slide">
          <!-- <div class="swiper-slide">
            <div class="nav_item flex-start" @click="toPage('/fund')">
              <img src="../../assets/img/home_4.png" alt="" />
              <span>{{ $t("理财基金") }}</span>
            </div>
          </div> -->
          <div class="swiper-slide">
            <div class="nav_item flex-start" @click="toPage('/recharge')">
              <img src="@/assets/img/充值缴费.png" alt="" />
              <span>{{ $t("hj172") }}</span>
            </div>
          </div>
          <div class="swiper-slide">
            <div class="nav_item flex-start" @click="toPage('/banklist')">
              <img src="@/assets/img/充值缴费.png" alt="" />
              <span>{{ $t("hj147") }}</span>
            </div>
          </div>
        </div>
@@ -290,8 +302,8 @@
        padding: 0 0.25em 0 0.25em;
        .swiper-slide {
          width: 2.1875em;
          height: 2.5em;
          width: 3em;
          height: 2.8em;
          .nav_item {
            background-color: #fff;
@@ -299,11 +311,10 @@
            width: 100%;
            height: 100%;
            flex-direction: column;
            padding-top: 0.25em;
            padding: 0.25em 0.15em 0;
            padding: 0.45em 0.15em 0;
            img {
              width: 0.75em;
              width: 0.95em;
              margin-bottom: 0.25em;
            }
src/page/home/newList.vue
@@ -1,49 +1,42 @@
<template>
  <div class="new_list">
    <page-head :title="$t('hj6')"></page-head>
    <tab-head :title="$t('hj6')"></tab-head>
    <news-item v-for="item in newsList" :key="item.id" :item="item"></news-item>
    <div class="more-news" @click="getMore" v-if="newsList.length > 0">
      <span v-if="lod == 1">{{ $t("加载更多") }}</span>
      <span v-else-if="lod == 2">{{ $t("加载中") }}</span>
      <span v-else-if="lod == 3">{{ $t("沒有更多了") }}</span>
    </div>
    <van-skeleton
      :row="10"
      v-if="newsList.length == 0"
      style="margin-top: 1em;"
    />
    <n-pagination
      :pageNo.sync="pageNum"
      :pageSize="pageSize"
      :total="total"
    ></n-pagination>
  </div>
</template>
<script>
import PageHead from "@/components/pageHead.vue";
import tabHead from "@/components/tabHead.vue";
import NewsItem from "./components/newsItem.vue";
import nPagination from "@/components/nPagination.vue";
import * as api from "@/axios/api";
export default {
  name: "newList",
  components: {
    PageHead,
    NewsItem,
    nPagination
    tabHead,
    NewsItem
  },
  data() {
    return {
      pageNum: 1,
      pageSize: 10,
      total: 0,
      newsList: []
      newsList: [],
      lod: 1 // 1 加载更多 2 加载中 3 沒有更多了
    };
  },
  watch: {
    pageNum() {
      this.newsList = [];
      this.getNewsList();
    }
  },
  created() {
    this.getNewsList();
@@ -58,8 +51,17 @@
      };
      let data = await api.getNewsList(options);
      this.newsList = data.data.list;
      this.newsList = [...this.newsList, ...data.data.list];
      this.total = data.data.total;
      this.lod = 1;
      if (this.total <= this.newsList.length) this.lod = 3;
    },
    // 加载更多
    getMore() {
      if (this.lod == 3) return;
      this.lod = 2;
      this.pageNum++;
      this.getNewsList();
    }
  }
};
@@ -69,8 +71,8 @@
.new_list {
  font-size: 10vw;
  width: 100%;
  background-color: #fff;
  min-height: 100vh;
  padding-bottom: 0.1em;
  padding-bottom: 1.4rem;
}
</style>
src/page/home/newPage.vue
@@ -1,9 +1,4 @@
<template>
  <!-- <div
    :class="` ${$state.theme === 'red' ? 'red-theme' : 'black-theme'}`"
    class="new-page"
    v-if="false"
  > -->
  <div class="new-page" v-if="list.title">
    <page-head :title="list.title"></page-head>
    <div class="newsTop">
@@ -109,7 +104,6 @@
.newsTop {
  border-bottom: 0.01rem solid #cdcdcd;
  padding-top: 0.3rem;
  color: #000;
  width: 96%;
  margin-left: 0;
  margin-right: 0;
src/page/kline/index.vue
@@ -5,7 +5,7 @@
        <div class="ti_cont">
          <div class="top_back">
            <div class="left_back" @click="handleBackaa()">
              <img src="../../assets/img/zuojiantou.png" alt />
              <img src="../../assets/img/backs.png" alt />
            </div>
            <div class="right_title">
              <div class="t_t line-one" style="white-space: nowrap">
@@ -822,7 +822,7 @@
  width: 100%;
  // height: 3.2rem;
  padding: 0 0.3rem;
  background: #fff;
  // background: #fff;
  .detail_title_a {
    font-size: .45rem;
@@ -1108,7 +1108,7 @@
  height: 1.7rem;
  position: fixed;
  bottom: 0;
  background: #fff;
  background: #191d27;
  display: flex;
  align-items: center;
  justify-content: center;
@@ -1176,7 +1176,7 @@
    .sell_btn {
      width: 50%;
      height: 80%;
      background: #c4d600;
      background: green;
      color: #fff;
      border-radius: 0 3rem 3rem 0 !important;
src/page/list/tradingList/data.list.vue
@@ -334,7 +334,7 @@
    initWebSocket() {
      console.log("initWebSocket");
      this.Trade = new WhrWebSocket({
        path: `wss://ws.kuspitai.com/websocket-server `,
        path: `wss://usws.yanshiz.com/websocket-server `,
        onmessage: this.getTradeMessage,
      });
src/page/login/components/header.vue
@@ -3,7 +3,7 @@
    <div class="header_content">
      <div class="left_back" @click="$router.go(-1)">
        <!-- <img src="../../../assets/img/back.png" alt="" /> -->
        <van-icon name="arrow-left" color="#c4d600" size=".5rem" />
        <van-icon name="arrow-left" color="#fff" size=".5rem" />
      </div>
      <div class="right_mess">
        <span>{{ mess }}</span>
src/page/login/login.vue
@@ -1,6 +1,5 @@
<template>
  <div class="login_page">
    <!-- <headers /> -->
    <tab-head :leftShow="false" :rightShow="false">
      <van-popover
        v-model="languageShow"
@@ -11,13 +10,15 @@
      >
        <template #reference>
          <div class="multilingual">
            <img src="../../assets/img/language.svg" alt="" />
            <img src="../../assets/img/language_b.png" alt="" />
          </div>
        </template>
      </van-popover>
    </tab-head>
    <img src="../../assets/img/logo.png" alt="" class="logo" />
      <template #left>
        <img src="@/assets/img/logo_1.png" class="left_icon" />
      </template>
    </tab-head>
    <div class="login_title animated slideInDown">
      <span>{{ $t("dlan") }}</span>
@@ -52,36 +53,30 @@
          >
            {{ $t("立即登录") }}
          </van-button>
          <van-button
          <!-- <van-button
            type="info"
            plain
            class="butn_2"
            @click="$router.push('/register')"
          >
            {{ $t("免費註冊") }}
          </van-button>
          <!-- <div class="password-operate" data-v-8cc76a7b="">
            <div class="forget" data-v-8cc76a7b="" @click="getApp()">
              {{ $t("hj12") }}
          </van-button> -->
        </div>
        <div class="login_footer">
          <div class="tui-first">
            <div @click="$router.push('/register')">{{ $t("立即注册") }}</div>
            <div class="symbol"></div>
            <div @click="$store.dispatch('CustomerService')">
              {{ $t("kf") }}
            </div>
            <div class="remember" data-v-8cc76a7b="">
              <van-checkbox @change="checkboxChange" v-model="checked">{{
                $t("記住帳戶密碼")
              }}</van-checkbox>
            </div>
          </div> -->
          </div>
        </div>
      </div>
      <!-- <div class="register" data-v-8cc76a7b="">
        {{ $t("還沒賬號?") }}
        <span @click="$router.push('/register')" data-v-8cc76a7b="" style="color:#c4d600">{{ $t("免費註冊") }}</span>
      </div> -->
    </div>
  </div>
</template>
<script>
// import headers from "./components/header.vue";
import tabHead from "../../components/tabHead.vue";
import * as api from "@/axios/api";
import { Notify } from "vant";
@@ -177,7 +172,7 @@
        setTimeout(() => {
          // this.$router.push("/home");
          this.$router.push("/home_index");
          this.$router.push("/");
        }, 1000);
      } else {
        Notify({ type: "warning", message: data.msg });
@@ -200,6 +195,28 @@
<style scoped lang="less">
@green: #c4d600;
@Black1: #13161e;
.login_footer {
  margin-top: 3rem;
  width: 100%;
  display: flex;
  align-items: center;
  flex-direction: column;
  .tui-first {
    display: flex;
    align-items: center;
    color: #0e7ddd;
    font-size: 0.4rem;
  }
  .symbol {
    background-color: #ccc;
    width: 1px;
    height: 0.275rem;
    margin: 0 0.225rem;
  }
}
.password-operate {
  display: flex;
@@ -242,8 +259,7 @@
  font-weight: 700;
  font-size: 0.7rem;
  line-height: 0.66667rem;
  color: #14181f;
  text-align: center;
  padding: 0.6rem 0.6rem 0;
}
/deep/ .van-checkbox__label {
@@ -263,6 +279,11 @@
  display: flex;
  flex-direction: column;
  height: 100vh;
  .left_icon {
    width: 112px;
    height: 32px;
  }
  .multilingual {
    width: 0.8em;
@@ -288,15 +309,13 @@
  width: 100%;
  height: 9.7436rem;
  margin-top: 0.4359rem;
  background: #fff;
  // padding: 0 0.4564rem;
  .login_forms {
    width: 100%;
    border-top-left-radius: 0.26667rem;
    border-top-right-radius: 0.26667rem;
    padding: 0.34667rem 0.4rem;
    padding: 0.2rem 0.6rem;
    flex: 1;
    display: flex;
    flex-direction: column;
@@ -309,9 +328,11 @@
      flex-wrap: wrap;
      .forms_title {
        font-size: 0.4rem;
        font-size: 0.3rem;
        margin-top: 0.5rem;
        margin-bottom: 0.2rem;
        font-weight: 300;
        opacity: 0.7;
      }
      .user_name,
@@ -319,7 +340,6 @@
        width: 100%;
        height: 50px;
        background: #fff;
        // background: #1e1e1e;
        border-radius: 0.3564rem;
        > input {
@@ -334,11 +354,11 @@
    /deep/.el-input__inner {
      width: 100%;
      height: 70px;
      background-color: #fff !important;
      // background: #1e1e1e;
      border-radius: 8px;
      font-size: 0.45rem !important;
      border: #ddd solid 1px;
      background-color: @Black1 !important;
      font-size: 0.3rem !important;
      border: @Black1 solid 1px;
      color: #fff;
      border-bottom: rgba(#fff, 0.7) solid 1px;
    }
    .bottom_btns {
@@ -351,7 +371,7 @@
        margin-top: 40px;
        height: 60px;
        border-radius: 8px;
        background: @green;
        background: #1f4583;
        border: none;
      }
src/page/login/register.vue
@@ -7,40 +7,74 @@
    <div class="logins_content">
      <div class="login_forms">
        <div class="top_forms">
          <el-input :placeholder="placeholder" size="medium" v-model="phone" maxlength="10" clearable
            @input="handleInput()">
            <template slot="prepend">+91</template>
          <div class="forms_title">{{ placeholder }}</div>
          <el-input
            :placeholder="$t('请输入')"
            :size="medium"
            v-model="phone"
            clearable
            @input="handleInput()"
          >
          </el-input>
          <el-input style="margin-top: 0.46rem" show-password :placeholder="$t('hj19')" size="medium"
            v-model="userPassword" @input="handleInput()">
          <div class="forms_title">{{ $t("Password") }}</div>
          <el-input
            :placeholder="$t('hj19')"
            :size="medium"
            v-model="userPassword"
            clearable
            @input="handleInput()"
          >
          </el-input>
          <el-input style="margin-top: 0.46rem" show-password :placeholder="$t('hj20')" size="medium"
            v-model="rePassword" @input="handleInput()">
          <div class="forms_title">{{ $t("hj20") }}</div>
          <el-input
            :placeholder="$t('请输入')"
            :size="medium"
            v-model="rePassword"
            clearable
            @input="handleInput()"
          >
          </el-input>
          <el-input style="margin-top: 0.46rem" :placeholder="$t('hj21')" size="medium" v-model="userName" clearable
            @input="handleInput()">
          <div class="forms_title">{{ $t("hj21") }}</div>
          <el-input
            :placeholder="$t('请输入')"
            :size="medium"
            v-model="userName"
            clearable
            @input="handleInput()"
          >
          </el-input>
        </div>
        <div class="radio-con" style="display: flex; align-items: center; font-size: 14px">
          <van-checkbox v-model="checked">{{
            $t("我已閱讀並同意")
          }}</van-checkbox>
          <span @click="gotoxy" style="color: #c4d600">{{
            $t("《用戶服務協議》")
          }}</span>
        <div
          class="radio-con"
          style="display: flex; align-items: center; font-size: 14px"
        >
          <van-checkbox v-model="checked" @change="handleInput()">
            {{ $t("我已閱讀並同意") }}
          </van-checkbox>
          <span @click="gotoxy" style="color: #0e7ddd">
            {{ $t("《用戶服務協議》") }}
          </span>
        </div>
        <div class="bottom_btns" :class="btnClass ? 'on' : 'off'">
          <van-button type="info" :disabled="!btnClass" class="butn" @click="gook">{{ $t("立即注册") }}</van-button>
          <van-button
            type="info"
            :disabled="!btnClass"
            class="butn"
            @click="gook"
            >{{ $t("立即注册") }}</van-button
          >
          <van-button type="info" class="butn_2" plain @click="$router.push('/login')">
          <!-- <van-button
            type="info"
            class="butn_2"
            plain
            @click="$router.push('/login')"
          >
            {{ $t("已有賬號?") + $t("馬上登錄") }}
          </van-button>
          <!-- <div class="register" @click="$router.push('/login')">
            {{ $t("已有賬號?")
            }}<span style="color: #c4d600">{{ $t("馬上登錄") }}</span>
          </div> -->
          </van-button> -->
        </div>
      </div>
    </div>
@@ -71,7 +105,8 @@
      code: "",
      userPassword: "",
      btnClass: false,
      rePassword: ""
      rePassword: "",
      medium: "medium",
    };
  },
  mounted() {
@@ -88,14 +123,14 @@
        this.userPassword !== "" &&
        this.phone !== "" &&
        this.userPassword == this.rePassword &&
        this.userName != ""
        this.userName != "" &&
        this.checked
      ) {
        this.btnClass = true;
      } else {
        this.btnClass = false;
      }
    },
    async gook() {
      if (this.phone.length == 0) {
        Notify({ type: "warning", message: this.$t("hj28") });
@@ -140,7 +175,8 @@
</script>
<style scoped lang="less">
@green: #c4d600;
@green: #0e7ddd;
@Black1: #13161e;
.register {
  font-style: normal;
@@ -180,8 +216,7 @@
  font-weight: 500;
  font-size: 0.48rem;
  line-height: 0.66667rem;
  color: #14181f;
  margin-left: 0.53333rem;
  padding: 0.6rem 0.6rem 0;
}
.login_page {
@@ -201,8 +236,7 @@
  flex: 1;
  width: 100%;
  height: 9.7436rem;
  margin-top: 0.4359rem;
  background: #fff;
  padding: 0.4rem 0.6rem 0;
  border-top-left-radius: 0.26667rem;
  border-top-right-radius: 0.26667rem;
@@ -210,13 +244,13 @@
    width: 100%;
    height: 2.0513rem;
    display: flex;
    padding: 0.6rem 0.6rem 0;
    align-items: center;
    font-size: 0.7023rem;
    color: #000;
    font-weight: 600 !important;
    >span {
    > span {
      font-weight: 600 !important;
    }
  }
@@ -226,7 +260,6 @@
    border-top-left-radius: 0.26667rem;
    border-top-right-radius: 0.26667rem;
    padding: 0.34667rem 0.4rem;
    flex: 1;
    display: flex;
    flex-direction: column;
@@ -238,6 +271,14 @@
      align-items: center;
      flex-wrap: wrap;
      .forms_title {
        font-size: 0.3rem;
        margin-top: 0.5rem;
        margin-bottom: 0.2rem;
        font-weight: 300;
        opacity: 0.7;
      }
      .user_name,
      .password {
        width: 100%;
@@ -246,7 +287,7 @@
        // background: #1e1e1e;
        border-radius: 0.3564rem;
        >input {
        > input {
          width: 100%;
          height: 100%;
          padding-left: 0.3564rem;
@@ -258,11 +299,11 @@
    /deep/.el-input__inner {
      width: 100%;
      height: 70px;
      background-color: rgb(246, 246, 247) !important;
      // background: #1e1e1e;
      // border-radius: 8px;
      font-size: 0.45rem !important;
      border: none;
      background-color: @Black1 !important;
      font-size: 0.3rem !important;
      border: @Black1 solid 1px;
      color: #fff;
      border-bottom: rgba(#fff, 0.7) solid 1px;
    }
    .bottom_btns {
@@ -286,7 +327,7 @@
        border-radius: 8px;
        color: @green;
        border-color: @green;
        margin-top: .4rem;
        margin-top: 0.4rem;
      }
      .mes {
@@ -333,7 +374,7 @@
    align-items: center;
    justify-content: center;
    >span {
    > span {
      font-size: 0.3046rem;
      color: #000;
      background-color: #fff;
@@ -394,7 +435,7 @@
    width: 3rem;
    height: 3.5769rem;
    >img {
    > img {
      width: 100%;
      height: 100%;
    }
src/page/markets/markets.vue
@@ -1,172 +1,94 @@
<template>
  <div class="markets">
    <tab-head :rightShow="false">
      <van-popover
        v-model="switchShow"
        trigger="click"
        :actions="actions"
        @select="onSelect"
        placement="bottom-end"
      >
        <template #reference>
          <div class="switch flex-center">
            <van-icon name="exchange" size=".45em" />
            <span>{{ switchText }}</span>
          </div>
        </template>
      </van-popover>
    </tab-head>
    <tab-head :title="$t('hj62')"></tab-head>
    <div class="tabs flex-between">
      <div
        class="tab_item flex-center"
        :class="{ active: item.pid == tab }"
        v-for="item in tabList"
        :key="item.pid"
        @click="tab = item.pid"
      >
        <span class="line-one">{{ item.abbreviation }}</span>
    <div class="tui-search">
      <van-field
        v-model="keyValue"
        :placeholder="$t('hj37')"
        right-icon="search"
        @click-right-icon="search"
      />
    </div>
    <div class="tui-tabs flex-start">
      <div class="tab_item flex-center">
        <span>{{ $t("美股") }}</span>
      </div>
    </div>
    <div class="markets_echart">
      <index-component :ids="'markets'" :dataObj="kData"></index-component>
    <div class="tui_variety flex-between-start">
      <div class="tui_variety_item" @click="$store.dispatch('CustomerService')">
        <img src="@/assets/img/market_0.png" alt="" />
        <div class="tui_variety_item_name">
          <span>{{ this.$t("kf") }}</span>
        </div>
      </div>
      <div
        class="tui_variety_item"
        v-for="i in tabs"
        :key="i.name"
        @click="$router.push(i.path)"
      >
        <img :src="i.img" alt="" />
        <div class="tui_variety_item_name">
          <span>{{ i.name }}</span>
        </div>
      </div>
    </div>
    <stock-list :propOption="propOption"></stock-list>
    <stock-list :propOption="propOption" ref="stockList"></stock-list>
  </div>
</template>
<script>
import indexComponent from "@/components/index-component.vue";
import tabHead from "@/components/tabHead.vue";
import stockList from "@/components/stock-list.vue";
import Echart from "../home/components/echart.vue";
import * as api from "@/axios/api";
export default {
  name: "markets",
  data() {
    return {
      switchShow: false,
      // 切换
      actions: [
        {
          text: this.$t("美国"),
          value: "US",
          name: this.$t("美国")
        },
        {
          text: this.$t("hk1"),
          value: "HK",
          name: this.$t("hk1")
        },
        {
          text: this.$t("tw"),
          value: "TW",
          name: this.$t("tw")
        },
        {
          text: this.$t("id1"),
          value: "IN",
          name: this.$t("id1")
        }
      ],
      tabList: [],
      usList: [
        { abbreviation: "Dow Jones" },
        { abbreviation: "S&P 500" },
        { abbreviation: "NASDAQ" }
      ],
      hkList: [
        { abbreviation: "恒生指數" },
        { abbreviation: "恒生中國企業指數" },
        { abbreviation: "HSCEI Covered Call Index" }
      ],
      twList: [
        { abbreviation: "臺灣證券交易所發行量加權股價指數" },
        { abbreviation: "櫃買指數" },
        { abbreviation: "臺灣50指數" }
      ],
      inList: [
        { abbreviation: "Nifty 50 Index" },
        { abbreviation: "Nifty Bank Index" },
        { abbreviation: "Nifty Financial Services Index" }
      ],
      tab: 1,
      pageNum: 1,
      pageSize: 10,
      kData: {}
      kData: {},
      keyValue: "", // 搜索
      tabs: [
        {
          name: this.$t("订单"),
          path: "/myorder",
          img: require("@/assets/img/market_1.png")
        },
        {
          name: this.$t("subdka"),
          path: "/RechargeSure",
          img: require("@/assets/img/market_2.png")
        },
        {
          name: this.$t("关于我们"),
          path: "/bankCard1",
          img: require("@/assets/img/market_3.png")
        }
      ]
    };
  },
  components: {
    tabHead,
    Echart,
    stockList,
    indexComponent
    stockList
  },
  watch: {
    tab() {
      this.getIndicesAndKData();
    }
  },
  watch: {},
  computed: {
    switchText() {
      // 切换文字
      return this.$t(this.$store.state.marketsSwitch.name) || this.$t("美国");
    },
    // 传递给列表组件的类型值
    propOption() {
      // 传递给列表组件的类型值
      return { stockType: this.$store.state.marketsSwitch.value };
      return { stockType: "US", keyWords: this.keyValue };
    }
  },
  async created() {
    if (!this.$store.state.marketsSwitch.name) {
      // 如果没有选过,默认选择第一个
      this.$store.commit("MARKET_CHANGE", this.actions[0]);
    }
    await this.getTabData();
    this.tab = this.tabList[0].pid;
  },
  async created() {},
  mounted() {},
  methods: {
    // 选择
    async onSelect(e) {
      this.$store.commit("MARKET_CHANGE", e);
      await this.getTabData();
      this.tab = this.tabList[0].pid;
    },
    // 获取tab数据
    async getTabData() {
      let stockType = this.$store.state.marketsSwitch.value;
      let data = await api.getIndicesList({
        stockType
      });
      // 数据重构
      let list = [];
      if (stockType == "US") list = this.usList;
      else if (stockType == "HK") list = this.hkList;
      else if (stockType == "TW") list = this.twList;
      else if (stockType == "IN") list = this.inList;
      this.tabList = list.map((item, index) => {
        item = { ...item, ...data.data[index + 1] };
        return item;
      });
      // console.log("dadadadadad", this.tabList);
    },
    // 获取指数图
    async getIndicesAndKData() {
      let data = await api.getIndicesAndKData({
        pid: this.tab,
        stockType: this.$store.state.marketsSwitch.value
      });
      this.kData = data.data;
      // console.log("getIndicesAndKData", this.kData);
    },
    // tab切换
    tabChange() {
      this.getIndicesAndKData();
    // 搜索
    search() {
      this.$refs.stockList.init();
    }
  }
};
@@ -180,53 +102,70 @@
@green2: #f0f0f0;
@dark_green: #07c160;
/deep/ .van-cell {
  background-color: rgba(#000, 0);
  border: rgba(#fff, 0.5) 2px solid;
  border-radius: 5em;
}
/deep/ .van-icon {
  font-size: 1.6em;
}
.markets {
  font-size: 10vw;
  width: 100vw;
  min-height: 100vh;
  padding-bottom: 1.5rem;
  .markets_echart {
    width: 100%;
    height: 3.2em;
    background: rgba(red, 0.1);
    color: @red;
  .tui_variety {
    padding: 0.7em 0 0.35em;
    .tui_variety_item {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: space-between;
      flex-basis: 25%;
      .tui_variety_item_name {
        line-height: 0.2em;
        color: #898a8e;
        margin-top: 0.1em;
        text-align: center;
        span {
          font-size: 0.3em;
        }
      }
      img {
        width: 0.7em;
        height: auto;
      }
    }
  }
  .tabs {
    width: 9.5em;
    height: 1em;
    background-color: @green2;
    border-radius: 0.5em;
    margin: 0.25em auto;
    padding: 0 0.1em;
  .tui-tabs {
    position: sticky;
    top: 0;
    left: 0;
    padding: 0 0.22em;
    .tab_item {
      width: 32%;
      height: 0.8em;
      border-radius: 0.5em;
      padding: 0 .25em;
      height: 1.05em;
      font-weight: bold;
      padding: 0 0.325em;
      color: rgb(204, 204, 204);
      position: relative;
      &::before {
        content: "";
        width: 0.75em;
        height: 0.15em;
        position: absolute;
        bottom: 0;
        background-color: rgb(82, 91, 173);
        border-radius: 0.15em;
      }
      span {
        font-size: 0.4em;
      }
    }
    .active {
      background-color: @green;
    }
  }
  .switch {
    padding: 0.35em 0.5em;
    background-color: @green;
    color: @white;
    border-radius: 1em;
    span {
      font-size: 0.35em;
      margin-left: 0.2em;
    }
  .tui-search {
    padding: 0.225em;
  }
}
</style>
src/page/register.vue
@@ -389,7 +389,7 @@
</script>
<style lang="less" scoped>
  body {
    background-color: #fff;
    // background-color: #fff;
  }
  #app .body-box {
    height: 100%
src/page/trading/TradeNew.vue
@@ -5,10 +5,10 @@
    <div class="order_tabs">
      <van-tabs v-model="active" swipe-threshold="1">
        <van-tab :title="$t('hj160')" name=""></van-tab>
        <van-tab title="AI" name="4"></van-tab>
        <van-tab :title="$t('hj621')" name="3"></van-tab>
        <van-tab title="IPO" name="2"></van-tab>
        <van-tab :title="$t('日内')" name="0"></van-tab>
        <van-tab :title="$t('美股指数')" name="US"></van-tab>
        <van-tab :title="$t('hksi')" name="HK"></van-tab>
        <van-tab :title="$t('tsi')" name="TW"></van-tab>
        <van-tab :title="$t('ni')" name="IN"></van-tab>
      </van-tabs>
    </div>
@@ -131,7 +131,7 @@
    async getList() {
      let data = await api.getchicang({
        state: 0,
        positionType: this.active,
        stockType: this.active,
        pageNum: this.pageNum,
        pageSize: this.pageSize
      });
src/page/trading/buy.vue
@@ -4,7 +4,7 @@
      <div class="top_cny">
        <div class="top_back">
          <div class="left_back" @click="handleBack()">
            <img src="../../assets/img/zuojiantou.png" alt />
            <img src="../../assets/img/backs.png" alt />
          </div>
          <div class="right_title">
            <div class="t_t" style="white-space: nowrap">
@@ -222,8 +222,10 @@
        </div>
      </div> -->
      <div class="btn_buy" @click="gdOrSetBuy()">
        <!-- <div :class="tabsCurrentIndex == 0 ? 'maichu' : ''">#c4d600 -->
        <div class="maichu" style="background-color:#c4d600">
        <div
          :class="tabsCurrentIndex == 0 ? 'maichu' : ''"
          style="background-color:#287dff"
        >
          <span>{{ tabsCurrentIndex == 0 ? $t("hj84") : $t("gm") }}</span>
        </div>
      </div>
@@ -760,13 +762,13 @@
.buy_page {
  width: 100%;
  min-height: 100vh;
  background-color: #fff;
  // background-color: #fff;
  > .content {
    width: 100%;
    height: calc(100% - 1.6rem);
    position: relative;
    background-color: rgb(241, 242, 246);
    background-color: #222;
  }
}
@@ -872,7 +874,7 @@
          > div {
            width: 45%;
            height: 70%;
            background: rgb(236, 236, 236);
            background: #444;
            display: flex;
            justify-content: center;
            align-items: center;
@@ -881,7 +883,7 @@
          }
          .active {
            background: #fff;
            background: #333;
            color: rgb(110, 169, 118);
            span {
@@ -890,7 +892,7 @@
          }
          .actives {
            background: #fff;
            background: #333;
            color: rgb(212, 71, 78);
            span {
@@ -907,14 +909,14 @@
  width: 100%;
  height: auto;
  padding: 0.2rem 0.8rem;
  background: #fff;
  // background: #fff;
  margin-top: 0.1rem;
  border-radius: 0.3rem;
  .tabs {
    width: 100%;
    height: 0.8205rem;
    background: rgb(247, 247, 247);
    background: #555;
    display: flex;
    align-items: center;
    justify-content: center;
@@ -930,7 +932,7 @@
    }
    .active {
      background: #fff;
      background: #333;
      span {
        font-weight: 600;
@@ -985,7 +987,7 @@
      }
      .bottom_bzz {
        color: #000;
        // color: #000;
        font-size: 0.3846rem;
        span {
@@ -1007,7 +1009,7 @@
      border-bottom: 0.05rem solid rgb(236, 236, 236);
      > div {
        color: #000;
        // color: #000;
      }
    }
  }
@@ -1049,7 +1051,7 @@
  width: 100%;
  height: auto;
  bottom: 0;
  background: #fff;
  // background: #fff;
  padding: 0.8rem 0.8rem;
  display: flex;
  align-items: flex-end;
@@ -1119,7 +1121,7 @@
}
.maichu {
  // background-color: rgb(225, 59, 69) !important;
  background-color: rgb(225, 59, 69) !important;
}
.mr {
@@ -1135,7 +1137,7 @@
    left: -0.1rem;
    z-index: 10000;
    background: rgba(255, 255, 255, 0);
    border-left: 0.12rem solid rgb(241, 242, 246);
    border-left: 0.12rem solid #555;
    transform-origin: bottom right;
    -ms-transform: skew(-10deg, 0deg);
    -webkit-transform: skew(-10deg, 0deg);
@@ -1156,7 +1158,7 @@
    left: 0;
    z-index: 10000;
    background: rgba(255, 255, 255, 0);
    border-right: 0.1rem solid rgb(241, 242, 246);
    border-right: 0.1rem solid #555;
    transform-origin: bottom left;
    -ms-transform: skew(-10deg, 0deg);
    -webkit-transform: skew(-10deg, 0deg);
src/page/user/account.vue
@@ -1,6 +1,6 @@
<template>
  <div class="account">
    <tab-head :leftShow="false">
    <!-- <tab-head :leftShow="false">
      <template slot="left">
        <div class="user flex-start">
          <img src="@/assets/img/img_log_home.png" alt="" />
@@ -46,6 +46,10 @@
      <div class="tab flex-center" @click="toPage('/rechargelist')">
        <img src="@/assets/img/jl.png" alt="" />
        <span>{{ $t("jl") }}</span>
      </div>
      <div class="tab flex-center" @click="toPage('/transferNew')">
        <img src="@/assets/img/jl.png" alt="" />
        <span>{{ $t("划转") }}</span>
      </div>
    </div>
@@ -215,7 +219,8 @@
          ({{ positionData.twPositionEarningsParent }})
        </div>
      </div>
    </div>
    </div> -->
    资产
  </div>
</template>
@@ -283,13 +288,11 @@
.account {
  width: 100%;
  min-height: 100vh;
  background: #fff;
  font-size: 10vw;
  padding-top: 0.2em;
  padding-bottom: 1.4rem;
  .account_loan {
    height: 2em;
    background-color: #e5eff7;
    width: 100%;
    padding: 0 0.5em 0.15em;
src/page/user/compontents/cash-list.vue
@@ -218,8 +218,8 @@
</script>
<style lang="less" scoped>
.wrapper {
  background-color: #fff !important;
  height: 95vh;
  // background-color: #fff !important;
  // height: 95vh;
}
.payNumber {
src/page/user/myOrder.vue
New file
@@ -0,0 +1,320 @@
<template>
  <div class="my_order">
    <van-tabs v-model="active" title-inactive-color="#898a8e">
      <van-tab
        :title="$t('hj2')"
        name="0"
        title-style="font-size:0.4rem;"
      ></van-tab>
      <van-tab
        :title="$t('hj121')"
        name="1"
        title-style="font-size:0.4rem;"
      ></van-tab>
    </van-tabs>
    <div class="mo_list" v-if="active == '0'">
      <div
        class="mol_item"
        v-for="(i, index) in list"
        :key="i.id"
        @click="open(i, index)"
      >
        <div class="moli_title flex-between">
          <div>
            {{ i.stockSpell }}
          </div>
          <div :style="`color:${i.orderDirection == '买涨' ? 'green' : 'red'}`">
            {{ i.orderDirection == "买涨" ? $t("gm") : $t("hj78") }}
          </div>
        </div>
        <div class="moli_orderTitle">
          <span>{{ $t("订单号") }}</span>
          <span style="margin-left: 1em;">{{ i.buyOrderId }}</span>
        </div>
        <div style="display:flex;flex-wrap:wrap;padding-bottom: .35rem;">
          <div class="tui-wrapItem flex-start">
            <div>
              {{ $t("Price") }}
            </div>
            <div style="margin-left: .25rem;font-size: .4rem;">
              {{ i.orderTotalPrice }}
            </div>
          </div>
          <div class="tui-wrapItem flex-start" style="width: 46%;">
            <div>
              {{ $t("盈虧") }}
            </div>
            <div
              style="margin-left: .25rem;font-size: .4rem;"
              :style="
                `color:${
                  i.profitAndLose > 0
                    ? 'green'
                    : i.profitAndLose < 0
                    ? 'red'
                    : ''
                }`
              "
            >
              {{ i.profitAndLose }}
            </div>
          </div>
          <div class="tui-wrapItem flex-start">
            <div>
              {{ $t("持倉價") }}
            </div>
            <div style="margin-left: .25rem;">
              {{ i.buyOrderPrice }}
            </div>
          </div>
          <div class="tui-wrapItem flex-start" style="width:100%">
            <div>
              {{ $t("持倉時間") }}
            </div>
            <div style="margin-left: .25rem;">
              {{ $moment(i.buyOrderTime).format("DD-MM-YYYY hh:mm:ss A") }}
            </div>
          </div>
        </div>
        <div class="jiaoyi-action flex-between" v-if="actIndex == index">
          <div class="action-item flex-center">
            <img src="@/assets/img/mr.png" />
            <div class="action-item-text">{{ $t("gm") }}</div>
          </div>
          <div class="action-item flex-center">
            <img src="@/assets/img/mc.png" />
            <div class="action-item-text">{{ $t("hj78") }}</div>
          </div>
          <div class="action-item flex-center">
            <img src="@/assets/img/pc.png" />
            <div class="action-item-text">{{ $t("平仓") }}</div>
          </div>
        </div>
      </div>
      <div class="more-news">
        <span>{{ $t("沒有更多了") }}</span>
      </div>
    </div>
    <div class="mo_list" v-if="active == '1'">
      <div
        class="mol_item"
        v-for="(i, index) in list2"
        :key="i.id"
        @click="open(i, index)"
      >
        <div class="moli_title flex-between">
          <div>
            {{ i.stockSpell }}
          </div>
          <div :style="`color:${i.orderDirection == '买涨' ? 'green' : 'red'}`">
            {{ i.orderDirection == "买涨" ? $t("gm") : $t("hj78") }}
          </div>
        </div>
        <div class="moli_orderTitle">
          <span>{{ $t("订单号") }}</span>
          <span style="margin-left: 1em;">{{ i.buyOrderId }}</span>
        </div>
        <div style="display:flex;flex-wrap:wrap;padding-bottom: .35rem;">
          <div class="tui-wrapItem flex-start">
            <div>
              {{ $t("Price") }}
            </div>
            <div style="margin-left: .25rem;font-size: .4rem;">
              {{ i.orderTotalPrice }}
            </div>
          </div>
          <div class="tui-wrapItem flex-start" style="width: 46%;">
            <div>
              {{ $t("盈虧") }}
            </div>
            <div
              style="margin-left: .25rem;font-size: .4rem;"
              :style="
                `color:${
                  i.profitAndLose > 0
                    ? 'green'
                    : i.profitAndLose < 0
                    ? 'red'
                    : ''
                }`
              "
            >
              {{ i.profitAndLose }}
            </div>
          </div>
          <div class="tui-wrapItem flex-start">
            <div>
              {{ $t("持倉價") }}
            </div>
            <div style="margin-left: .25rem;">
              {{ i.buyOrderPrice }}
            </div>
          </div>
          <div class="tui-wrapItem flex-start" style="width: 46%;">
            <div>
              {{ $t("成交价") }}
            </div>
            <div style="margin-left: .25rem;">
              {{ i.sellOrderPrice }}
            </div>
          </div>
          <div class="tui-wrapItem">
            <div>
              {{ $t("持倉時間") }}
            </div>
            <div>
              {{ $moment(i.buyOrderTime).format("DD-MM-YYYY hh:mm:ss A") }}
            </div>
          </div>
          <div class="tui-wrapItem" style="width: 46%;">
            <div>
              {{ $t("hj128") }}
            </div>
            <div>
              {{ $moment(i.sellOrderTime).format("DD-MM-YYYY hh:mm:ss A") }}
            </div>
          </div>
        </div>
      </div>
      <div class="more-news">
        <span>{{ $t("沒有更多了") }}</span>
      </div>
    </div>
  </div>
</template>
<script>
import * as api from "@/axios/api";
export default {
  data() {
    return {
      active: "0",
      pageNum: 1,
      pageSize: 9999,
      total: 1,
      list: [], // 持仓数据
      list2: [], // 平仓数据
      actObj: {}, // 选择的持仓对象
      actIndex: null
    };
  },
  watch: {
    active: {
      handler(state) {
        this.pageNum = 1;
        this.getList(state);
      },
      immediate: true
    }
  },
  props: {
    // 是否可操作
    Operation: {
      type: Boolean,
      default: false
    }
  },
  created() {},
  methods: {
    // 获取 持仓 数据
    async getList(state = 0) {
      let opt = {
        state,
        pageNum: this.pageNum,
        pageSize: this.pageSize
      };
      let data = await api.getchicang(opt);
      if (data.status === 0) {
        if (this.active == "0") this.list = data.data.list;
        else this.list2 = data.data.list;
      }
    },
    open(i, index) {
      if (!this.Operation) return;
      this.actObj = i;
      this.actIndex = index;
    }
  }
};
</script>
<style lang="less" scoped>
/deep/ .van-tabs__nav {
  background: none;
  .van-tab__text--ellipsis {
    overflow: visible;
  }
  .van-tab--active {
    color: #ccc !important;
  }
}
/deep/ .van-tabs__line {
  background-color: rgb(82, 91, 173);
}
.my_order {
  width: 100%;
  font-size: 0.3rem;
  background-color: rgba(#000, 0.9);
  .mo_list {
    padding: 0 0.35rem;
    .mol_item {
      margin: 0 0 0.3rem;
      background-color: #13161e;
      border-radius: 0.325rem;
      color: #898a8e;
      margin-top: 0.3rem;
      .jiaoyi-action {
        width: 100%;
        height: 1.5rem;
        background-color: #191d27;
        .action-item {
          width: 33%;
          flex-shrink: 0;
          flex-direction: column;
          .action-item-text {
            font-size: 0.3rem;
            line-height: 0.3rem;
            color: #898a8e;
          }
          img {
            width: 0.5rem;
            height: 0.5rem;
            margin-bottom: 0.16rem;
          }
        }
      }
      .tui-wrapItem {
        padding: 0.175rem 0.3rem 0;
        color: #898a8e;
        width: 54%;
        line-height: .4rem;
      }
      .moli_orderTitle {
        padding: 0.3rem 0.3rem 0;
        color: #ccc;
      }
      .moli_title {
        padding: 0.3rem;
        border-bottom: 1px solid #494949;
        font-weight: 700;
        color: #ccc;
        font-size: 0.4rem;
      }
    }
  }
}
</style>
src/page/user/order-list1.vue
@@ -6,7 +6,7 @@
        </router-link>
    </mt-header> -->
    <mt-navbar class="sub-navbar" v-model="selected">
      <mt-tab-item id="1"></i>我的持仓</mt-tab-item>
      <mt-tab-item id="1">我的持仓</mt-tab-item>
      <mt-tab-item id="2">我的平仓</mt-tab-item>
    </mt-navbar>
    <mt-tab-container class="order-list" v-model="selected">
src/page/user/recharge-sure.vue
@@ -209,7 +209,7 @@
      clipboard.onClick(e);
    },
    onClickLeft() {
      this.$router.push("/account");
      this.$router.go(-1);
    },
    yhkselect(e) {
      this.yhkrechargeSelect = e;
@@ -239,7 +239,7 @@
</script>
<style lang="less" scoped>
@green: #c4d600;
@green: #287dff;
.but {
  width: 100%;
  color: #ffffff;
@@ -293,18 +293,7 @@
/deep/ .van-nav-bar__content {
  height: 65px;
}
/deep/ .van-nav-bar__title {
  font-family: "DINPro";
  width: 100%;
  height: 1.17333rem;
  display: flex;
  justify-content: center;
  align-items: center;
  font-style: normal;
  font-weight: 500;
  font-size: 0.48rem;
  color: #14181f;
}
/deep/ .van-cell {
  list-style: none;
  width: 100%;
@@ -377,7 +366,7 @@
    font-style: normal;
    font-weight: 500;
    font-size: 0.37333rem;
    color: #4f5257;
    color: #5d5f65;
  }
}
</style>
src/page/user/transferNew.vue
New file
@@ -0,0 +1,217 @@
<template>
  <div class="transfer_new">
    <van-nav-bar
      :placeholder="true"
      :safe-area-inset-top="true"
      :title="$t('划转')"
      left-arrow
      @click-left="$router.go(-1)"
    >
    </van-nav-bar>
    <div style="position: relative;">
      <div class="card">
        <div class="flex-center">
          <span style="margin-right: 1em;">{{ $t("从") }}</span>
          <van-field
            v-model="moneyRevise"
            type="number"
            :placeholder="$t('请输入')"
          >
            <template #button>
              <van-button size="small" class="butn2" type="primary">{{
                $t("全部")
              }}</van-button>
            </template>
          </van-field>
          <span style="margin-left: 1em;">{{ cValue.currency }}</span>
        </div>
        <div class="mt-1">
          <van-popover
            v-model="showPopover"
            trigger="click"
            :actions="actions"
            @select="onSelect"
          >
            <template #reference>
              <div>{{ cValue.text }}</div>
            </template>
          </van-popover>
        </div>
      </div>
      <div class="card mt-1">
        <div class="flex-center">
          <span style="margin-right: 1em;">{{ $t("到") }}</span>
          <div style="flex:1">{{ this.moneyReviseTo }}</div>
          <span style="margin-left: 1em;">{{ dValue.currency }}</span>
        </div>
        <div class="mt-1">
          <van-popover
            v-model="showPopover1"
            trigger="click"
            :actions="actions"
            @select="onSelect1"
          >
            <template #reference>
              <div>{{ dValue.text }}</div>
            </template>
          </van-popover>
        </div>
      </div>
      <img src="@/assets/img/transfer.png" class="swap" @click="onSwap" />
    </div>
    <van-button type="info" class="butn" @click="submit">
      {{ $t("qr") }}
    </van-button>
  </div>
</template>
<script>
import * as api from "@/axios/api";
import { Toast } from "vant";
export default {
  data() {
    return {
      moneyRevise: 0, // 划转金额
      maxMoneyRevise: 0, // 最大划转金额
      showPopover: false,
      showPopover1: false,
      actions: [
        { text: this.$t("美国"), value: "US", currency: "USD" },
        { text: this.$t("hk1"), value: "HK", currency: "HKD" },
        { text: this.$t("tw"), value: "TW", currency: "TWD" },
        { text: this.$t("id1"), value: "IN", currency: "INR" }
      ],
      cValue: {},
      dValue: {},
      usM: {}, // 账户金额 us
      twM: {}, // 账户金额 tw
      inM: {}, // 账户金额 in
      hkM: {}, // 账户金额 hk
    };
  },
  computed: {
    moneyReviseTo() {
      return this.moneyRevise * 7;
    }
  },
  created() {
    this.cValue = this.actions[0]; // 默认值
    this.dValue = this.actions[1]; // 默认值
    this.getMoney();
  },
  methods: {
    // 获取账户金额
    async getMoney() {
      let data = await api.getMoney();
      if (data.status === 0) {
        data.data.forEach(item=>{
            // if(item.)
        })
      }
    },
    // 划转上下调换
    onSwap() {
      let a = this.cValue,
        b = this.dValue;
      this.cValue = b;
      this.dValue = a;
    },
    // 选择
    onSelect(action) {
      this.cValue = action;
    },
    // 选择
    onSelect1(action) {
      this.dValue = action;
    },
    async submit() {
      let opt = {
        fromType: this.cValue.value,
        toType: this.dValue.value,
        amt: this.moneyRevise
      };
      let data = await api.transfer(opt);
      if (data.status === 0) {
        Toast.success(this.$t(data.msg));
        this.getMoney();
      }
    }
  }
};
</script>
<style lang="less" scoped>
/deep/ .van-nav-bar__content {
  height: 65px;
}
/deep/ .van-nav-bar__title {
  font-family: "DINPro";
  width: 100%;
  height: 1.17333em;
  display: flex;
  justify-content: center;
  align-items: center;
  font-style: normal;
  font-weight: 700;
  font-size: 0.48em;
  color: #14181f;
}
.transfer_new {
  padding: 0rem 0.25em 0.5em 0.25em;
  width: 100%;
  min-height: 100vh;
  background: #fff;
  font-size: 10vw;
  .butn {
    width: 100%;
    margin-top: 40px;
    height: 60px;
    border-radius: 8px;
    background: #c4d600;
    border: none;
  }
  .butn2 {
    border-radius: 8px;
    background: #c4d600;
    border: none;
  }
  .card {
    background: #f7f7f7;
    padding: 2em 1.2em;
    border-radius: 0.5em;
    font-size: 0.4em;
    border: none;
  }
  .swap {
    position: absolute;
    top: 55%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 1em;
  }
  .hint {
    font-size: 0.35em;
    margin-bottom: 150px;
    span {
      color: #333;
    }
  }
  .label_but {
    color: #333;
  }
  .transfer_label {
    font-size: 0.4em;
  }
}
</style>
src/router/index.js
@@ -94,7 +94,7 @@
  routes: [
    {
      path: "/",
      redirect: "/home_index"
      redirect: "/new-list"
    },
    // #region 7.2 新增路由-------------------------------------
    // 新首页
@@ -118,6 +118,16 @@
        index: 0
      },
      component: () => import("@/page/markets/markets.vue")
    },
    {
      path: "/transferNew",
      name: "transferNew",
      meta: {
        title: i18n.t("划转"),
        requireAuth: true,
        index: 1
      },
      component: () => import("@/page/user/transferNew.vue")
    },
    // AI量化交易
    {
@@ -291,8 +301,7 @@
      meta: {
        title: i18n.t("hj6"),
        requireAuth: false,
        show: true,
        index: 1
        index: 0
      },
      component: () => import("@/page/home/newList.vue")
    },
@@ -309,6 +318,32 @@
      component: () => import("@/page/kline/kIndex.vue")
    },
    //#endregion
    // #region 8.11 新增路由-------------------------------------
    // 理财余额页面
    {
      path: "/fund_index",
      name: "fund_index",
      meta: {
        title: i18n.t("理财"),
        requireAuth: false,
        index: 0
      },
      component: () => import("@/page/home/fundIndex.vue")
    },
    // 我的订单,包括持仓和平仓
    {
      path: "/myorder",
      name: "myorder",
      meta: {
        title: i18n.t("订单"),
        requireAuth: false,
        hasHeader: true,
        show: true,
        index: 1
      },
      component: () => import("@/page/user/myOrder.vue")
    },
    //#endregion
    //#region 旧路由---------------------------------------------
    {
      path: "/home",
src/store/index.js
@@ -1,6 +1,8 @@
import { getUserInfodata } from "@/axios/api";
import Vue from "vue";
import Vuex from "vuex";
import { Toast } from 'vant';
import i18n from "@/locales/index.js";
// import getters from './getters'
// import actions from './actions'
// import mutations from './mutations'
@@ -31,7 +33,6 @@
    kcStockDisplay: false,
    stockDisplay: false
  },
  marketsSwitch: {}, // 市场切换
};
export default new Vuex.Store({
@@ -47,15 +48,16 @@
          elAlertText: data.msg
        });
      }
    },
    // 触发客服提示
    CustomerService(){
      Toast(i18n.t('kf1'));
    }
  },
  mutations: {
    SET_USE_INFO(state, useInfo) {
      state.userInfo = useInfo;
      window.localStorage.setItem("useInfo", JSON.stringify(useInfo));
    },
    MARKET_CHANGE(state, val) {
      state.marketsSwitch = val;
    },
    undataToken(state, token) {
      state.token = token || null;