zzzz
2024-04-10 66d132b96fd30abf1d75bed49ff176a52b4101ee
huilv
29 files modified
1942 ■■■■■ changed files
src/axios/api.js 4 ●●●● patch | view | raw | blame | history
src/axios/api.url.js 7 ●●●● patch | view | raw | blame | history
src/locales/en.js 11 ●●●● patch | view | raw | blame | history
src/locales/hanyu.js 11 ●●●● patch | view | raw | blame | history
src/locales/india.js 12 ●●●●● patch | view | raw | blame | history
src/locales/riyu.js 11 ●●●● patch | view | raw | blame | history
src/locales/taiyu.js 9 ●●●● patch | view | raw | blame | history
src/locales/tw.js 19 ●●●●● patch | view | raw | blame | history
src/locales/zh.js 10 ●●●●● patch | view | raw | blame | history
src/page/authentication/index.vue 7 ●●●●● patch | view | raw | blame | history
src/page/home/home.vue 16 ●●●●● patch | view | raw | blame | history
src/page/kline/components/kLine.vue 36 ●●●●● patch | view | raw | blame | history
src/page/kline/index.vue 19 ●●●● patch | view | raw | blame | history
src/page/list/favorites/data.list.vue 2 ●●● patch | view | raw | blame | history
src/page/list/favoriteslist/data.list.vue 2 ●●● patch | view | raw | blame | history
src/page/list/trading-list.vue 2 ●●● patch | view | raw | blame | history
src/page/list/tradingList/data.list.vue 26 ●●●●● patch | view | raw | blame | history
src/page/list/tradingList/tabs.vue 14 ●●●● patch | view | raw | blame | history
src/page/login/login.vue 1 ●●●● patch | view | raw | blame | history
src/page/newUser/index.vue 19 ●●●● patch | view | raw | blame | history
src/page/newUser/setting.vue 985 ●●●● patch | view | raw | blame | history
src/page/trading/buy.vue 10 ●●●● patch | view | raw | blame | history
src/page/user/Warehouse.vue 20 ●●●● patch | view | raw | blame | history
src/page/user/Warehouse/data.list.vue 45 ●●●● patch | view | raw | blame | history
src/page/user/Warehouse/item.card.vue 7 ●●●● patch | view | raw | blame | history
src/page/user/compontents/transferindex-list.vue 10 ●●●● patch | view | raw | blame | history
src/page/user/favorites.vue 589 ●●●●● patch | view | raw | blame | history
src/page/user/ransferIndex.vue 26 ●●●● patch | view | raw | blame | history
src/page/user/recharge-sure.vue 12 ●●●● patch | view | raw | blame | history
src/axios/api.js
@@ -285,6 +285,10 @@
export function getMoney(options) {
  return post("/user/getMoney.do", options);
}
// 汇率
export function currencyRate(options) {
  return post("/user/currencyRate.do", options);
}
// 多账户
export function siteGetPayInfo(options) {
  return post("/api/site/getPayInfo.do", options);
src/axios/api.url.js
@@ -7,12 +7,9 @@
  // baseURL: '/',
  // baseURL: 'http://www.jumptalk.net:8091',
  // 0311
  baseURL: "https://api.3falcon.com/",
  // baseURL: "https://api.3falcon.com/",
  // 本地
  // baseURL: "http://192.168.0.106:8091/",
  // baseURL: "http://192.168.0.104:8091/",
  // baseURL: 'http://121.43.237.202:8091/',
  // baseURL: 'http://192.168.0.103:8091/',
  baseURL: "http://192.168.0.101:8091/",
  util: {
    image: "/util/image.html" // 图片上传
  }
src/locales/en.js
@@ -970,6 +970,13 @@
  馬股账户: "Horse stock account",
  美股账户: "US stock account",
  到: "to",
  "美国新闻": "US News",
  "马来西亚新闻": "Malaysia News"
  美国新闻: "US News",
  马来西亚新闻: "Malaysia News",
  Search: "search",
  港股: "Hong Kong stocks",
  港股总资产: "Total assets of Hong Kong stocks",
  HK: "Hong Kong Stock Account",
  港股资产: "Hong Kong stock assets",
  港股可用: "Available in Hong Kong stock market",
  港股冻结: "Hong Kong stock freeze"
};
src/locales/hanyu.js
@@ -531,6 +531,13 @@
  劃轉记录: "레코드 스왑",
  馬股账户: "마주 계좌",
  美股账户: "미국 주식 계좌",
  "美国新闻": "미국 뉴스",
  "马来西亚新闻": "말레이시아 뉴스"
  美国新闻: "미국 뉴스",
  马来西亚新闻: "말레이시아 뉴스",
  Search: "검색",
  港股: "홍콩 주식",
  港股总资产: "홍콩 주식 총자산",
  HK: "홍콩 주식 계좌",
  港股资产: "홍콩 주식 자산",
  港股可用: "홍콩 주식 사용 가능",
  港股冻结: "홍콩 주식 동결"
};
src/locales/india.js
@@ -961,5 +961,15 @@
  馬股账户: "मलेशियाई स्टॉक खाता",
  美股账户: "यूएस स्टॉक खाता",
  美国新闻: "अमेरिका समाचार",
  马来西亚新闻: "मलेशिया समाचार"
  马来西亚新闻: "मलेशिया समाचार",
  Search: "खोजें",
  港股: "हांगकांग स्टॉक",
  港股总资产: "हांगकांग शेयरों की कुल संपत्ति",
  HK: "हांगकांग स्टॉक खाता",
  港股资产: "สินทรัพย์ในหุ้นฮ่องกง",
  港股可用: "มีหุ้นฮ่องกง",
  港股冻结: "การแช่แข็งหุ้นฮ่องกง",
  港股资产: "हांगकांग स्टॉक एसेट्स",
  港股可用: "हांगकांग के स्टॉक उपलब्ध हैं",
  港股冻结: "हांगकांग के स्टॉक जमे हुए"
};
src/locales/riyu.js
@@ -531,6 +531,13 @@
  劃轉记录: "かいてんきろく",
  馬股账户: "馬株口座",
  美股账户: "米株口座",
  "美国新闻": "ニュース",
  "马来西亚新闻": "マレーシアニュース"
  美国新闻: "ニュース",
  马来西亚新闻: "マレーシアニュース",
  Search: "検索けんさく",
  港股: "香港株",
  港股总资产: "香港株式総資産",
  HK: "香港株口座",
  港股资产: "香港株資産",
  港股可用: "香港株が利用可能",
  港股冻结: "香港株凍結"
};
src/locales/taiyu.js
@@ -531,5 +531,12 @@
  馬股账户: "บัญชีหุ้นม้า",
  美股账户: "บัญชี MeiShar",
  美国新闻: "ข่าวสหรัฐอเมริกา",
  马来西亚新闻: "ข่าวมาเลเซีย"
  马来西亚新闻: "ข่าวมาเลเซีย",
  Search: "ค้นหา",
  港股: "หุ้นฮ่องกง",
  港股总资产: "สินทรัพย์รวมของหุ้นฮ่องกง",
  HK: "บัญชีหุ้นฮ่องกง",
  港股资产: "สินทรัพย์ในหุ้นฮ่องกง",
  港股可用: "มีหุ้นฮ่องกง",
  港股冻结: "การแช่แข็งหุ้นฮ่องกง"
};
src/locales/tw.js
@@ -1193,10 +1193,17 @@
  "上傳憑證:": " 上傳憑證:",
  从: "從",
  到: "到",
  "密码修改成功": "密碼修改成功",
  "劃轉记录": "劃轉記錄",
  "馬股账户": "馬股帳戶",
  "美股账户": "美股帳戶",
  "美国新闻": "美國新聞",
  "马来西亚新闻": "馬來西亞新聞"
  密码修改成功: "密碼修改成功",
  劃轉记录: "劃轉記錄",
  馬股账户: "馬股帳戶",
  美股账户: "美股帳戶",
  美国新闻: "美國新聞",
  马来西亚新闻: "馬來西亞新聞",
  Search: "蒐索",
  港股: "港股",
  港股总资产: "港股總資產",
  HK: "港股帳戶",
  港股资产: "港股資產",
  港股可用: "港股可用",
  港股冻结: "港股凍結"
};
src/locales/zh.js
@@ -531,5 +531,13 @@
  馬股账户: "馬股账户",
  美股账户: "美股账户",
  美国新闻: "美国新闻",
  马来西亚新闻: "马来西亚新闻"
  马来西亚新闻: "马来西亚新闻",
  Search: "搜索",
  港股: "港股",
  港股总资产: "港股总资产",
  HK: "港股账户",
  港股资产: "港股资产",
  港股可用: "港股可用",
  港股冻结: "港股冻结"
};
src/page/authentication/index.vue
@@ -283,15 +283,16 @@
        Toast(this.$t("hj207"));
      } else if (isNull(this.form.idCard)) {
        Toast(this.$t("hj208"));
      } else if (!this.form.img1key) {
        Toast(this.$t("hj209"));
      } else if (!this.form.img2key) {
        Toast(this.$t("hj209"));
      } else {
        // 显示确认弹窗
        this.toAuthentication();
      }
    },
    async toAuthentication() {
      // console.log(this.form);
      // return;
      let opts = {
        realName: this.form.name,
        idCard: this.form.idCard,
src/page/home/home.vue
@@ -54,7 +54,7 @@
                <div class="name">{{ $t("提款") }}</div>
              </div>
            </li>
            <li>
            <li @click="aRouter">
              <div class="link">
                <div class="icon">
                  <img
@@ -77,7 +77,7 @@
                <div class="name">{{ $t("安全") }}</div>
              </div>
            </li>
            <li @click="$router.push('/setting')">
            <li @click="$router.push('/trading-list?type=2')">
              <div class="link">
                <div class="icon">
                  <img
@@ -85,10 +85,11 @@
                    alt=""
                  />
                </div>
                <div class="name">{{ $t("用戶手冊") }}</div>
                <!-- $t("马股") -->
                <div class="name">{{ $t("马股") }}</div>
              </div>
            </li>
            <li @click="$router.push('/setting')">
            <li @click="$router.push('/trading-list?type=3')">
              <div class="link">
                <div class="icon">
                  <img
@@ -96,7 +97,7 @@
                    alt=""
                  />
                </div>
                <div class="name">{{ $t("平臺") }}</div>
                <div class="name">{{ $t("美股") }}</div>
              </div>
            </li>
            <li @click="$router.push('/transferIndex')">
@@ -275,9 +276,11 @@
    GoToLogin,
    Echart,
  },
  // onlineService
  props: {},
  data() {
    return {
      // 客服地址
      news: "tab_0",
      // 新闻导航
      newListHeader: [
@@ -363,6 +366,9 @@
    },
  },
  methods: {
    aRouter() {
      window.open(this.onlineService);
    },
    qkclick(e) {
      this.settingDialog = false;
      window.localStorage.setItem("language", e.lang);
src/page/kline/components/kLine.vue
@@ -29,31 +29,7 @@
                  K线图</div>
      </div>-->
      <div class="rightContent" ref="rightContent">
        <!-- <div class="contentBox" v-show='chartType == "minute"'>
                  <div class="indexWrap" ref="minute_indexWrap">
                      <div class="btnGroup">
                          <div class="btn" v-for="(indexName) in MinuteIndexMenu" :key="indexName.ID"
                              @click="changeChartIndex(indexName.ID)">{{ indexName.Name }}</div>
                      </div>
                  </div>
                  <div class="periodWrap" ref='minute_periodWrap'>
                      <div class="btnGroup">
                          <div class="btn" :class="{ active: MinuteDayIndex == index }"
                              v-for="(item, index) in MinuteDayMenu" :key="item.ID"
                              @click="OnClickMinuteDayMenu(index, item)">{{ item.Name }}</div>
                      </div>
                  </div>
        </div>-->
        <div class="contentBox">
          <!-- 分时 -->
          <!-- <div class="indexWrap" ref="kline_indexWrap">
                      <div class="btnGroup">
                          <div class="btn" v-for="(item) in KLineIndexMenu" :key="item.ID"
                              @click="ChangeKLineIndex(item)">{{ item.Name }}</div>
                      </div>:class="{ active: KLinePeriodIndex == index }"
          </div>-->
          <div class="periodWrap kline_periodWrap" ref="kline_periodWrap">
            <!-- DWM 分 -->
            <div class="btnGroup" style="position: relative">
@@ -64,13 +40,6 @@
                :key="item.ID"
                @click="OnClickKLinePeriodMenu(index, item, 'kline')"
              >
                <!-- <div
                class="btn2"
                v-for="(item, index) in KLinePeriodMenu"
                :class="{ active: KLinePeriodIndex == index }"
                :key="item.ID"
                @click="index == 0 ? changeRightContent('minute') : OnClickKLinePeriodMenu(index, item, 'kline')"
              > -->
                <span>{{ item.Name }}</span>
              </div>
              <div
@@ -1144,7 +1113,7 @@
    erd.listenTo(this.$refs["rightContent"], function (element) {
      var width = element.offsetWidth;
      var height = element.offsetHeight;
      self.tableHeight = height - 100; // 将监听到的宽高进行赋值
      self.tableHeight = height - 10; // 将监听到的宽高进行赋值
      self.tableWidth = width - 20;
      that.offHeight = height;
      that.OnSize();
@@ -1411,6 +1380,7 @@
    }
    .rightContent {
      // height: calc(100% - @rightTabHeight);
      height: calc(100% - @rightTabHeight);
      width: 100%;
@@ -1531,6 +1501,6 @@
}
.hqchart {
  width: 100%;
  height: 7.5rem;
  height: 100vh;
}
</style>
src/page/kline/index.vue
@@ -9,10 +9,10 @@
            </div>
            <div class="right_title">
              <div class="t_t" style="white-space: nowrap">
                <span>{{ singDetails.spell }}</span>
                <span>{{ singDetails.name }}</span>
              </div>
              <div class="b_t">
                <span>{{ singDetails.code }}</span>
                <span>{{ singDetails.spell }}</span>
              </div>
            </div>
          </div>
@@ -336,7 +336,7 @@
          </div>
        </div>
      </div>
      <div
      <!-- <div
        class="jianjie"
        v-if="
          !(kLineDetails.if_zhishu != '0' && singDetails.gid.indexOf('hk') > -1)
@@ -351,8 +351,8 @@
        <div class="jet">
          <span>{{ jianjie }}</span>
        </div>
      </div>
      <div
      </div> -->
      <!-- <div
        class="hknews"
        v-if="
          kLineDetails.if_zhishu != '0' && singDetails.gid.indexOf('hk') > -1
@@ -385,8 +385,8 @@
            </mt-tab-container-item>
          </mt-tab-container>
        </div>
      </div>
      <div class="hknews" v-else>
      </div> -->
      <!-- <div class="hknews" v-else>
        <div class="news-tab">
          <div class="t_title">
            <span>{{ $t("hj6") }}</span>
@@ -413,7 +413,7 @@
            </mt-tab-container-item>
          </mt-tab-container>
        </div>
      </div>
      </div> -->
      <!-- <div class="border_bottom"></div> -->
    </div>
    <div class="btns">
@@ -677,6 +677,7 @@
          type: this.kLineDetails.if_zhishu,
          id: this.singDetails.id,
          name: this.kLineDetails.name,
          spell: this.singDetails.spell,
          if_us: this.kLineDetails.if_us,
          bayType: this.bayType,
        },
@@ -910,7 +911,7 @@
.k_line_detail {
  width: 100%;
  height: 8.3rem;
  height: calc(100vh - 300px);
  background: #fff;
  border-radius: 0 0 0.3rem 0.3rem;
}
src/page/list/favorites/data.list.vue
@@ -371,7 +371,7 @@
  font-weight: 500;
  font-size: 0.4rem;
  line-height: 0.56rem;
  width: 4.2rem;
  width: 4rem;
  text-align: left;
  color: #14181f;
}
src/page/list/favoriteslist/data.list.vue
@@ -365,7 +365,7 @@
  font-weight: 500;
  font-size: 0.4rem;
  line-height: 0.56rem;
  width: 4.2rem;
  width: 4rem;
  text-align: left;
  color: #14181f;
}
src/page/list/trading-list.vue
@@ -19,7 +19,7 @@
            />
          </div>
        </div>
        <div class="right_search" @click="sousuo">Search</div>
        <div class="right_search" @click="sousuo">{{ $t("Search") }}</div>
      </div>
    </div>
    <tabsList ref="tabsList" />
src/page/list/tradingList/data.list.vue
@@ -120,7 +120,6 @@
      this.listArr = [];
      this.pageNumVal = 1;
      this.loadings = true;
      this.getStock(e, this.zxactive, 1);
    },
    zxactive(e) {
      this.finished = false;
@@ -143,6 +142,7 @@
      finished: false,
      listArr: [],
      pageNumVal: 1,
      getInterval: null,
    };
  },
@@ -150,6 +150,9 @@
    this.listArr = [];
    this.pageNumVal = 1;
    this.getStock(this.active, this.zxactive, 1);
    this.getInterval = setInterval(() => {
      this.getStock(this.active, this.zxactive, 1);
    }, 5000);
  },
  methods: {
    filterSH(val) {
@@ -188,21 +191,18 @@
    // 获取列表
    getStock: handleDt.debounce(async function (a, b, c) {
      a = this.active;
      let stockType = "";
      if (a !== "") {
        let array = this.tabsList.filter((item) => item.key === a);
        stockType = array[0].name;
      } else {
        // return this.getStockzx();
        let array = this.zxtabsList.filter((item) => item.key === b);
        stockType = array[0].name;
      }
      console.log(a, b, c, "=====");
      let pageNumVal = c || this.pageNumVal;
      let opt = {
        pageNum: pageNumVal,
        pageSize: 15,
        pageSize: 100,
        stockPlate: "",
        keyWords: this.sousuo,
        stockType: stockType,
@@ -221,9 +221,9 @@
      this.loadings = false;
      if (data.status === 0) {
        if (data.data.list.length < 15) {
          this.finished = true;
        }
        // if (data.data.list.length < 15) {
        this.finished = true;
        // }
        if (pageNumVal !== 1) {
          this.listArr = [...this.listArr, ...data.data.list];
        } else {
@@ -234,12 +234,16 @@
      }
    }, 500),
    onLoads() {
      this.pageNumVal++;
      this.loadings = true;
      this.getStock();
      // this.pageNumVal++;
      // this.loadings = true;
      // this.getStock();
    },
    optionszx() {},
  },
  destroyed() {
    clearInterval(this.getInterval);
    this.getInterval = null;
  },
};
</script>
src/page/list/tradingList/tabs.vue
@@ -44,21 +44,27 @@
export default {
  components: { dataList },
  mounted() {
    console.log(this.$route.query.type);
    this.active = this.$route.query.type || "2";
  },
  data() {
    return {
      tabsList: [
        { title: this.$t("hj61"), key: "" },
        { title: this.$t("数字货币"), key: "1", name: "SZHB" },
        // { title: this.$t("数字货币"), key: "1", name: "SZHB" },
        { title: this.$t("马股"), key: "2", name: "MAS" },
        { title: this.$t("美股"), key: "3", name: "US" },
        { title: this.$t("港股"), key: "4", name: "HK" },
      ],
      zxtabsList: [
        { title: this.$t("数字货币"), key: "1", name: "SZHB" },
        // { title: this.$t("数字货币"), key: "1", name: "SZHB" },
        { title: this.$t("马股"), key: "2", name: "MAS" },
        { title: this.$t("美股"), key: "3", name: "US" },
        { title: this.$t("港股"), key: "4", name: "HK" },
      ],
      active: "1",
      zxactive: "1",
      active: "2",
      zxactive: "2",
      sousuo: "",
    };
  },
src/page/login/login.vue
@@ -10,7 +10,6 @@
          <el-input
            :placeholder="$t('hj9')"
            :size="medium"
            maxlength="11"
            v-model="userName"
            clearable
          >
src/page/newUser/index.vue
@@ -104,7 +104,7 @@
            :name="item.title"
          >
            <ul class="money">
              <li>
              <li style="text-align: left">
                <div class="li-title">
                  {{ item.title1 }}({{ item.symbolCode }})
                </div>
@@ -158,14 +158,6 @@
          symbol: "$",
          symbolCode: "USD",
        },
        // {
        //   title: this.$t("印股資產"),
        //   title1: this.$t("印股可用"),
        //   title2: this.$t("印股冻结"),
        //   accectType: "IN",
        //   symbol: "RM",
        //   symbolCode: "MYR",
        // },
        {
          title: this.$t("馬股資產"),
          title1: this.$t("馬股可用"),
@@ -173,6 +165,14 @@
          accectType: "MAS",
          symbol: "RM",
          symbolCode: "MYR",
        },
        {
          title: this.$t("港股资产"),
          title1: this.$t("港股可用"),
          title2: this.$t("港股冻结"),
          accectType: "HK",
          symbol: "HK$",
          symbolCode: "HKD",
        },
      ],
      active: this.$t("美股資產"),
@@ -215,7 +215,6 @@
        const arr = data.data.filter((item) => item.accectType === "ALL");
        this.asstesAll = arr[0].totalMoneyUSD;
        console.log(this.listAsstes);
      }
    },
    tabsChange(e) {
src/page/newUser/setting.vue
@@ -65,9 +65,21 @@
        <div style="margin-right: 10px">{{ language }}</div>
      </div>
    </div>
    <van-popup v-model="settingDialog" position="bottom" :style="{ height: '35%' }" @close="popClose">
      <div class="lang_box" v-for="(item, index) in actions" :key="index" @click="qkclick(item)">
        <div :class="$i18n.locale == item.lang ? 'lang_box_txt' : 'lang_box_txta'">
    <van-popup
      v-model="settingDialog"
      position="bottom"
      :style="{ height: '35%' }"
      @close="popClose"
    >
      <div
        class="lang_box"
        v-for="(item, index) in actions"
        :key="index"
        @click="qkclick(item)"
      >
        <div
          :class="$i18n.locale == item.lang ? 'lang_box_txt' : 'lang_box_txta'"
        >
          {{ item.text }}
        </div>
      </div>
@@ -112,341 +124,419 @@
</template>
<script>
  import * as api from "@/axios/api";
  import {
    Toast,
    MessageBox
  } from "mint-ui";
  import {
    isNull,
    pwdReg
  } from "@/utils/utils";
  import {
    mapMutations
  } from "vuex";
  import {
    Notify
  } from "vant";
import * as api from "@/axios/api";
import { Toast, MessageBox } from "mint-ui";
import { isNull, pwdReg } from "@/utils/utils";
import { mapMutations } from "vuex";
import { Notify } from "vant";
  export default {
    name: "newUser",
    data() {
      return {
        name: "大狗子",
        pswDialog: false,
        selectUserFlag: true,
        settingDialog: false,
        oldPassword: "", // 旧密码
        newPassword: "", // 新密码
        cirNewPassword: "", // 确认新密码
        userInfo: [],
        onlineService: "",
        language: "",
        actions: [{
            text: "English",
            icon: require("@/assets/ico/english.png"),
            lang: "zh-CN",
          },
          {
            text: "हिंदी",
            icon: require("@/assets/ico/india.png"),
            lang: "en"
          },
          {
            text: "한국인",
            icon: require("@/assets/ico/india.png"),
            lang: "hy"
          },
          {
            text: "ภาษาไทย",
            icon: require("@/assets/ico/india.png"),
            lang: "ty",
          },
          {
            text: "日本語にほんご",
            icon: require("@/assets/ico/india.png"),
            lang: "ry",
          },
export default {
  name: "newUser",
  data() {
    return {
      name: "大狗子",
      pswDialog: false,
      selectUserFlag: true,
      settingDialog: false,
      oldPassword: "", // 旧密码
      newPassword: "", // 新密码
      cirNewPassword: "", // 确认新密码
      userInfo: [],
      onlineService: "",
      language: "",
      actions: [
        {
          text: "English",
          icon: require("@/assets/ico/english.png"),
          lang: "zh-CN",
        },
        {
          text: "हिंदी",
          icon: require("@/assets/ico/india.png"),
          lang: "en",
        },
        {
          text: "한국인",
          icon: require("@/assets/ico/india.png"),
          lang: "hy",
        },
        {
          text: "ภาษาไทย",
          icon: require("@/assets/ico/india.png"),
          lang: "ty",
        },
        {
          text: "日本語にほんご",
          icon: require("@/assets/ico/india.png"),
          lang: "ry",
        },
          {
            text: "繁体中文",
            icon: require("@/assets/ico/tw.png"),
            lang: "tw"
          },
        ],
      };
        {
          text: "繁体中文",
          icon: require("@/assets/ico/tw.png"),
          lang: "tw",
        },
      ],
    };
  },
  components: {},
  created() {
    this.getUserInfo();
    this.language = window.localStorage.getItem("language") || "zh-CN";
    let arr = this.actions.filter((item) => item.lang === this.language);
    this.language = arr[0].text;
  },
  methods: {
    ...mapMutations(["undataToken"]),
    popClose() {
      this.settingDialog = false;
    },
    components: {},
    created() {
      this.getUserInfo();
      this.language = window.localStorage.getItem("language");
      console.log(window.localStorage.getItem("language"));
      if (this.language == "zh-CN") {
        this.language = "English";
    qkclick(e) {
      this.settingDialog = false;
      window.localStorage.setItem("language", e.lang);
      this.$i18n.locale = e.lang;
      this.language = e.text;
    },
    clicklang() {
      this.settingDialog = true;
    },
    yebclick() {
      this.$router.push("/yeb");
    },
    regexNum(str) {
      console.log(str);
      str = str.toString();
      if (str.indexOf(".") == -1) {
        str = str + ".00";
      }
      var newStr = str.split(".");
      var point = newStr[1];
      if (point.length < 2) {
        point = point + "0";
      }
      var moneyPoint = newStr[0];
      if (moneyPoint.length <= 3) {
        return moneyPoint + "." + point;
      } else {
        this.language = "हिंदी";
        var mPoint = moneyPoint.substr(
          moneyPoint.length - 3,
          moneyPoint.length
        );
        var twoPoint = moneyPoint.substr(0, moneyPoint.length - 3);
        var endString = twoPoint
          .toString()
          .replace(/(\d)(?=(\d{2})+(?!\d))/g, "$1,");
        return endString + "," + mPoint + "." + point;
      }
    },
    methods: {
      ...mapMutations(["undataToken"]),
      popClose() {
        this.settingDialog = false;
      },
      qkclick(e) {
        this.settingDialog = false;
        window.localStorage.setItem("language", e.lang);
        this.$i18n.locale = e.lang;
        this.language = e.text;
      },
      clicklang() {
        this.settingDialog = true;
      },
      yebclick() {
        this.$router.push("/yeb");
      },
      regexNum(str) {
        console.log(str);
        str = str.toString();
        if (str.indexOf(".") == -1) {
          str = str + ".00";
        }
        var newStr = str.split(".");
        var point = newStr[1];
        if (point.length < 2) {
          point = point + "0";
        }
        var moneyPoint = newStr[0];
        if (moneyPoint.length <= 3) {
          return moneyPoint + "." + point;
        } else {
          var mPoint = moneyPoint.substr(
            moneyPoint.length - 3,
            moneyPoint.length
          );
          var twoPoint = moneyPoint.substr(0, moneyPoint.length - 3);
          var endString = twoPoint
            .toString()
            .replace(/(\d)(?=(\d{2})+(?!\d))/g, "$1,");
          return endString + "," + mPoint + "." + point;
        }
      },
      goOnline() {
        if (navigator.vibrate) {
          // 支持
          navigator.vibrate([55]);
        }
        this.$router.push("/service");
      },
      async getInfoSite() {
        let data = await api.getInfoSite();
        if (data.status === 0) {
          this.onlineService = data.data.onlineService;
        } else {
          Toast(data.msg);
        }
      },
      goWall() {
    goOnline() {
      if (navigator.vibrate) {
        // 支持
        navigator.vibrate([55]);
      }
      this.$router.push("/service");
    },
    async getInfoSite() {
      let data = await api.getInfoSite();
      if (data.status === 0) {
        this.onlineService = data.data.onlineService;
      } else {
        Toast(data.msg);
      }
    },
    goWall() {
      this.$router.push("/wallet");
    },
    gotoa(e) {
      if (e == 0) {
        this.$router.push("/wallet");
      },
      gotoa(e) {
        if (e == 0) {
          this.$router.push("/wallet");
        } else if (e == 1) {
          this.$router.push("/tixian");
        } else {
          this.$router.push("/transfers");
        }
      },
      subclick() {
        this.$router.push("/SubDK");
      },
      subaclick() {
      } else if (e == 1) {
        this.$router.push("/tixian");
      },
      handleZh() {
        this.selectUserFlag = !this.selectUserFlag;
        if (navigator.vibrate) {
          // 支持
          navigator.vibrate([55]);
        }
      },
      async getUserInfo() {
        // 获取用户信息
        let data = await api.getUserInfo();
        if (data.status === 0) {
          // 判断是否登录
          this.$store.commit("dialogVisible", false);
          this.$store.state.userInfo = data.data;
          this.userInfo = data.data;
        } else {
          this.$store.commit("dialogVisible", true);
        }
      },
      goToTopUp() {
        // if (this.userInfo.length === 0) {
        //     this.$store.commit('dialogVisible', true)
        //     return
        // }
        // if (navigator.vibrate) {
        //     // 支持
        //     navigator.vibrate([55])
        // }
        this.$router.push("/setting");
      },
      handleOutLoginClick() {
        // 退出登录
        MessageBox.confirm(this.$t("hj149") + "?", this.$t("hj165"), {
            confirmButtonText: this.$t("hj161"),
            cancelButtonText: this.$t("hj106"),
          })
          .then(() => {
            this.toRegister();
          })
          .catch(() => {});
      },
      goToSettings() {
        // 每次打开dialog 清空密码数据
        this.pswDialog = !this.pswDialog;
        if (this.pswDialog) {
          this.oldPassword = "";
          this.newPassword = "";
          this.cirNewPassword = "";
        }
      },
      handleGoToTransfer() {
      } else {
        this.$router.push("/transfers");
      },
      handleGoToAuthentication() {
        this.$router.push("/authentications");
      },
      handleGoToAuthenticationaz() {
        this.$router.push("/download");
      },
      handleGoToBankCard() {
        this.$router.push("/bankCard");
      },
      async toRegister() {
        // 注销登陆
        window.localStorage.removeItem("USERTOKEN"); // 清空本地存储 USERTOKEN字段
        this.clearCookie();
        let data = await api.logout();
        if (data.status === 0) {
          // Toast(data.msg)
          this.undataToken(null);
          this.$router.push("/login");
        } else {
          Toast(data.msg);
        }
        this.$router.push("/login");
      },
      async changeLoginPsd() {
        // 修改密码
        if (
          isNull(this.oldPassword) ||
          isNull(this.newPassword) ||
          isNull(this.cirNewPassword)
        ) {
          Toast(this.$t("hj154"));
          this.settingDialog = false;
        } else if (!pwdReg(this.newPassword)) {
          Toast(this.$t("hj19"));
          this.settingDialog = false;
        } else {
          // 修改密码
          if (this.newPassword === this.cirNewPassword) {
            let opts = {
              oldPwd: this.oldPassword,
              newPwd: this.newPassword,
            };
            let data = await api.changePassword(opts);
            if (data.status === 0) {
              this.changeLoginPsdBox = false;
      }
    },
    subclick() {
      this.$router.push("/SubDK");
    },
    subaclick() {
      this.$router.push("/tixian");
    },
    handleZh() {
      this.selectUserFlag = !this.selectUserFlag;
              this.pswDialog = false;
              this.settingDialog = false;
              Notify({
                type: "success",
                message: this.$t("密码修改成功")
              });
              this.toRegister()
            } else {
              Toast(data.msg);
              this.settingDialog = false;
            }
      if (navigator.vibrate) {
        // 支持
        navigator.vibrate([55]);
      }
    },
    async getUserInfo() {
      // 获取用户信息
      let data = await api.getUserInfo();
      if (data.status === 0) {
        // 判断是否登录
        this.$store.commit("dialogVisible", false);
        this.$store.state.userInfo = data.data;
        this.userInfo = data.data;
      } else {
        this.$store.commit("dialogVisible", true);
      }
    },
    goToTopUp() {
      // if (this.userInfo.length === 0) {
      //     this.$store.commit('dialogVisible', true)
      //     return
      // }
      // if (navigator.vibrate) {
      //     // 支持
      //     navigator.vibrate([55])
      // }
      this.$router.push("/setting");
    },
    handleOutLoginClick() {
      // 退出登录
      MessageBox.confirm(this.$t("hj149") + "?", this.$t("hj165"), {
        confirmButtonText: this.$t("hj161"),
        cancelButtonText: this.$t("hj106"),
      })
        .then(() => {
          this.toRegister();
        })
        .catch(() => {});
    },
    goToSettings() {
      // 每次打开dialog 清空密码数据
      this.pswDialog = !this.pswDialog;
      if (this.pswDialog) {
        this.oldPassword = "";
        this.newPassword = "";
        this.cirNewPassword = "";
      }
    },
    handleGoToTransfer() {
      this.$router.push("/transfers");
    },
    handleGoToAuthentication() {
      this.$router.push("/authentications");
    },
    handleGoToAuthenticationaz() {
      this.$router.push("/download");
    },
    handleGoToBankCard() {
      this.$router.push("/bankCard");
    },
    async toRegister() {
      // 注销登陆
      window.localStorage.removeItem("USERTOKEN"); // 清空本地存储 USERTOKEN字段
      this.clearCookie();
      let data = await api.logout();
      if (data.status === 0) {
        // Toast(data.msg)
        this.undataToken(null);
        this.$router.push("/login");
      } else {
        Toast(data.msg);
      }
      this.$router.push("/login");
    },
    async changeLoginPsd() {
      // 修改密码
      if (
        isNull(this.oldPassword) ||
        isNull(this.newPassword) ||
        isNull(this.cirNewPassword)
      ) {
        Toast(this.$t("hj154"));
        this.settingDialog = false;
      } else if (!pwdReg(this.newPassword)) {
        Toast(this.$t("hj19"));
        this.settingDialog = false;
      } else {
        // 修改密码
        if (this.newPassword === this.cirNewPassword) {
          let opts = {
            oldPwd: this.oldPassword,
            newPwd: this.newPassword,
          };
          let data = await api.changePassword(opts);
          if (data.status === 0) {
            this.changeLoginPsdBox = false;
            this.pswDialog = false;
            this.settingDialog = false;
            Notify({
              type: "success",
              message: this.$t("密码修改成功"),
            });
            this.toRegister();
          } else {
            Toast(this.$t("hj155"));
            Toast(data.msg);
            this.settingDialog = false;
          }
        } else {
          Toast(this.$t("hj155"));
          this.settingDialog = false;
        }
        if (navigator.vibrate) {
          // 支持
          navigator.vibrate([55]);
        }
      },
      }
      if (navigator.vibrate) {
        // 支持
        navigator.vibrate([55]);
      }
    },
  };
  },
};
</script>
<style scoped lang="less">
  .right_gos_txt {
    margin-right: 15px;
  }
.right_gos_txt {
  margin-right: 15px;
}
  .setting_content {
.setting_content {
  width: 100%;
  height: 5rem;
  padding: 0.3rem;
  .old_password {
    width: 100%;
    height: 5rem;
    padding: 0.3rem;
    height: 1rem;
    background: rgb(243, 243, 243);
    border-radius: 0.15rem;
    display: flex;
    margin-top: 0.5rem;
    .old_password {
      width: 100%;
      height: 1rem;
      background: rgb(243, 243, 243);
      border-radius: 0.15rem;
    .left_titles {
      width: 25%;
      height: 100%;
      display: flex;
      margin-top: 0.5rem;
      align-items: center;
      padding-left: 0.2rem;
      .left_titles {
        width: 25%;
        height: 100%;
        display: flex;
        align-items: center;
        padding-left: 0.2rem;
        // justify-content: flex-end;
        span {
          font-weight: 600;
        }
      }
      .right_password_input {
        width: 80%;
        height: 100%;
        display: flex;
        align-items: center;
        input {
          width: 100%;
          height: 100%;
          padding-left: 0.2rem;
        }
      // justify-content: flex-end;
      span {
        font-weight: 600;
      }
    }
    .btn_setting {
      width: 100%;
      height: 1.3rem;
      border-radius: 0.15rem;
      background: #2d6ae9;
      color: #fff;
      font-size: 0.4615rem;
      margin-top: 0.5rem;
    .right_password_input {
      width: 80%;
      height: 100%;
      display: flex;
      align-items: center;
      input {
        width: 100%;
        height: 100%;
        padding-left: 0.2rem;
      }
    }
  }
  .btn_setting {
    width: 100%;
    height: 1.3rem;
    border-radius: 0.15rem;
    background: #2d6ae9;
    color: #fff;
    font-size: 0.4615rem;
    margin-top: 0.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    span {
      font-weight: 600;
    }
  }
}
.lang_box_txta {
  width: 100%;
  height: 100px;
  text-align: center;
  line-height: 100px;
  border-bottom: 1px solid #ecf5ff;
}
.lang_box_txt {
  width: 100%;
  height: 100px;
  text-align: center;
  line-height: 100px;
  border-bottom: 1px solid #ecf5ff;
  color: #2196f3;
}
.lang_box {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}
.btn_s_box {
  border: none;
  background: #409eff;
  color: #fff;
  height: 70px;
  width: 100%;
  line-height: 70px;
  font-size: 16px;
  text-align: center;
  border-radius: 15px;
  font-weight: 600;
  margin: 40px 20px 0 20px;
}
.btn_s {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}
.jy {
  width: 100%;
  height: 1.5rem;
  // border-radius: 0.2rem;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  // padding: 0 0.3rem;
  padding-top: 0.3rem;
  border-bottom: 1px solid #ecf5ff;
  .left_gn {
    // width: 40%;
    height: 60%;
    display: flex;
    .l_icon {
      // width: 30%;
      height: 100%;
      display: flex;
      justify-content: center;
      align-items: center;
      img {
        width: 0.5041rem;
        height: 0.5041rem;
      }
    }
    .r_title {
      // width: 70%;
      height: 100%;
      display: flex;
      align-items: center;
      font-size: 0.4046rem;
      color: #404040;
      padding-left: 0.4rem;
      span {
        font-weight: 600;
@@ -454,204 +544,113 @@
    }
  }
  .lang_box_txta {
    width: 100%;
    height: 100px;
    text-align: center;
    line-height: 100px;
    border-bottom: 1px solid #ecf5ff;
  }
  .lang_box_txt {
    width: 100%;
    height: 100px;
    text-align: center;
    line-height: 100px;
    border-bottom: 1px solid #ecf5ff;
    color: #2196f3;
  }
  .lang_box {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
  }
  .btn_s_box {
    border: none;
    background: #409eff;
    color: #fff;
    height: 70px;
    width: 100%;
    line-height: 70px;
    font-size: 16px;
    text-align: center;
    border-radius: 15px;
    font-weight: 600;
    margin: 40px 20px 0 20px;
  }
  .btn_s {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  .jy {
    width: 100%;
    height: 1.5rem;
    // border-radius: 0.2rem;
    background: #fff;
  .right_gos {
    // width: 20%;
    height: 60%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    // padding: 0 0.3rem;
    padding-top: 0.3rem;
    border-bottom: 1px solid #ecf5ff;
    justify-content: flex-end;
    .left_gn {
      // width: 40%;
      height: 60%;
      display: flex;
      .l_icon {
        // width: 30%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
        img {
          width: 0.5041rem;
          height: 0.5041rem;
        }
      }
      .r_title {
        // width: 70%;
        height: 100%;
        display: flex;
        align-items: center;
        font-size: 0.4046rem;
        color: #404040;
        padding-left: 0.4rem;
        span {
          font-weight: 600;
        }
      }
    img {
      width: 0.6rem;
      height: 0.6rem;
    }
  }
}
    .right_gos {
      // width: 20%;
      height: 60%;
body {
  background-color: #f8f8f8;
}
.pages_logo_btn_right {
  margin-left: 20px;
  margin-top: 20px;
  display: inline-block;
  padding: 16px 40px;
  text-decoration: none;
  color: #fff;
  background: #f44336;
  border-radius: 40px;
}
.pages_logo_btn_left {
  border-radius: 40px;
  margin-top: 20px;
  display: inline-block;
  padding: 16px 40px;
  text-decoration: none;
  color: #fff;
  background: #2196f3;
}
.pages_logo_btn {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 100px;
}
.pages_logo_img {
  width: 200px;
  height: 200px;
  border-radius: 20px;
}
.pages_logo_txt {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 50px;
}
.pages_logo {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 100px;
}
.content {
  width: 100%;
  height: 100%;
  // padding: 0 0.3rem;
  .top_back {
    width: 100%;
    height: 2rem;
    display: flex;
    background-color: #fff;
    > div {
      width: 10%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: flex-end;
      img {
        width: 0.6rem;
        height: 0.6rem;
      }
    }
  }
  body {
    background-color: #f8f8f8;
  }
    img {
      width: 0.6rem;
      height: 0.6rem;
      margin-left: 20px;
    }
  .pages_logo_btn_right {
    margin-left: 20px;
    margin-top: 20px;
    display: inline-block;
    padding: 16px 40px;
    text-decoration: none;
    color: #fff;
    background: #f44336;
    border-radius: 40px;
  }
  .pages_logo_btn_left {
    border-radius: 40px;
    margin-top: 20px;
    display: inline-block;
    padding: 16px 40px;
    text-decoration: none;
    color: #fff;
    background: #2196f3;
  }
  .pages_logo_btn {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 100px;
  }
  .pages_logo_img {
    width: 200px;
    height: 200px;
    border-radius: 20px;
  }
  .pages_logo_txt {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 50px;
  }
  .pages_logo {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 100px;
  }
  .content {
    width: 100%;
    height: 100%;
    // padding: 0 0.3rem;
    .top_back {
    .titles {
      width: 100%;
      height: 2rem;
      height: 1.5rem;
      margin-top: 15px;
      // margin-left: 110px;
      display: flex;
      background-color: #fff;
      margin-right: 20px;
      justify-content: center;
      align-items: center;
      >div {
        width: 10%;
        height: 100%;
        display: flex;
        align-items: center;
      }
      img {
        width: 0.6rem;
        height: 0.6rem;
        margin-left: 20px;
      }
      .titles {
        width: 100%;
        height: 1.5rem;
        margin-top: 15px;
        // margin-left: 110px;
        display: flex;
        margin-right: 20px;
        justify-content: center;
        align-items: center;
        span {
          font-weight: 600;
        }
      span {
        font-weight: 600;
      }
    }
  }
}
</style>
src/page/trading/buy.vue
@@ -8,10 +8,10 @@
          </div>
          <div class="right_title">
            <div class="t_t" style="white-space: nowrap">
              <span>{{ name | getName }}</span>
              <span>{{ name }}</span>
            </div>
            <div class="b_t">
              <span>{{ code }}</span>
              <span>{{ spell }}</span>
            </div>
          </div>
        </div>
@@ -252,6 +252,9 @@
    if (this.$route.query.name) {
      this.name = this.$route.query.name;
    }
    if (this.$route.query.spell) {
      this.spell = this.$route.query.spell;
    }
    if (this.$route.query.type) {
      this.type = this.$route.query.type;
    }
@@ -273,6 +276,7 @@
      type: 0,
      code: "",
      name: "",
      spell: "",
      settingInfo: [],
      selectCycle: 1,
      siteLeverList: [],
@@ -650,7 +654,7 @@
  filters: {
    getName(name) {
      if (name.length > 15) {
        return name.substring(0, 14);
        return name;
      } else {
        return name;
      }
src/page/user/Warehouse.vue
@@ -68,15 +68,6 @@
          symbolCode: "USD",
          symbol: "$",
        },
        // {
        //   title: this.$t("ydgs"),
        //   assname: this.$t("印股总资产"),
        //   name: "3",
        //   bgc: "rgb(255, 91, 150)",
        //   laber: "IN",
        //   symbolCode: "USD",
        //   symbol: "$",
        // },
        {
          title: this.$t("马来西亚"),
          assname: this.$t("馬股总资产"),
@@ -85,6 +76,15 @@
          laber: "MAS",
          symbolCode: "MYR",
          symbol: "RM",
        },
        {
          title: this.$t("港股"),
          assname: this.$t("港股总资产"),
          name: "5",
          bgc: "rgb(255 91 230)",
          laber: "HK",
          symbolCode: "HKD",
          symbol: "HK$",
        },
      ],
      getMoneyList: [],
@@ -125,7 +125,7 @@
        });
        let obj = arr.filter((item) => item.name == this.active)[0];
        this.activeObj = obj;
        console.log(obj, "0000000", res.data);
        console.log(obj, "0000000", this.tabsArr);
        this.tabsArr = arr;
        this.$forceUpdate(); // 强制Vue重新渲染
      }
src/page/user/Warehouse/data.list.vue
@@ -22,14 +22,17 @@
        v-for="(item, index) in dataList"
        :key="index"
      >
        <div class="title-box">
          <div class="span">{{ item.stockName }}</div>
          <div
            class="states"
            :class="item.orderDirection === '买跌' ? 'states-red' : ''"
          >
            {{ $t(item.orderDirection) }}
        <div @click="pushRouter(item)">
          <div class="title-box">
            <div class="span">{{ item.stockName }}</div>
            <div
              class="states"
              :class="item.orderDirection === '买跌' ? 'states-red' : ''"
            >
              {{ $t(item.orderDirection) }}
            </div>
          </div>
          {{ item.stockCode }}
        </div>
        <van-row>
          <van-col span="8">
@@ -205,6 +208,28 @@
  },
  methods: {
    pushRouter(item) {
      const obj = {
        pid: item.stockCode || "",
        type: item.stockGid || "",
      };
      window.localStorage.setItem("kLine", JSON.stringify(obj));
      // return;
      var codes = item.stockCode;
      var names = item.stockName;
      this.$router.push({
        path: "/kline",
        query: {
          name: names,
          code: codes,
          if_us: "",
          if_zhishu: 0,
          sok: "",
          type: item.stockGid,
        },
      });
    },
    onLoad() {
      this.pageNum++;
      this.loading = true;
@@ -241,9 +266,9 @@
      this.loading = false;
      if (res.status === 0) {
        this.dataList = res.data.list;
        if (res.data.total <= this.dataList.length) {
          this.finished = true;
        }
        // if (res.data.total <= this.dataList.length) {
        this.finished = true;
        //   }
      } else {
        this.loading = false;
        this.finished = true;
src/page/user/Warehouse/item.card.vue
@@ -12,12 +12,7 @@
      </div>
      <div class="right" @click="closeAll">{{ $t("全部平仓") }}</div>
    </div>
    <!-- totleAssets  总资产 -->
    <!-- availableBalance  可用 -->
    <!-- cumulativeProfitAndLoss  累计盈亏 -->
    <!-- profitAndLoss  浮动盈亏 -->
    <!-- handlingCharge  总手续费 -->
    <!-- freezeMoney  冻结 -->
    <div class="item-card-itembox">
      <div class="item">
        <div class="itembox-data">{{ activeObj.profitAndLoss }}</div>
src/page/user/compontents/transferindex-list.vue
@@ -18,10 +18,10 @@
        <van-cell v-for="item in list" :key="item.id">
          <div class="item">
            <div>
              <div v-if="Number(item.amount) < 0">
                {{ $t("美股账户") }} > {{ $t("馬股账户") }}
              <div>
                {{ $t(item.descs.split("/")[0]) }}
                > {{ $t(item.descs.split("/")[1]) }}
              </div>
              <div v-else>{{ $t("馬股账户") }} > {{ $t("美股账户") }}</div>
            </div>
            <div>{{ Math.abs(Number(item.amount)) }} USD</div>
          </div>
@@ -47,8 +47,8 @@
  methods: {
    async getMoenyLogs() {
      const res = await getMoenyLog({ type: "转换" });
      const arr = res.data.filter((item) => item.accectType === "US");
      this.list = arr;
      // const arr = res.data.filter((item) => item.accectType === "US");
      this.list = res.data;
      // 加载状态结束
      this.loading = false;
      this.finished = true;
src/page/user/favorites.vue
@@ -1,243 +1,373 @@
<template>
    <!--   最多关注-->
    <div class="center_tabs" style="height: 100%; margin: 0;padding: 0;top: 0;">
  <!--   最多关注-->
  <div class="center_tabs" style="height: 100%; margin: 0; padding: 0; top: 0">
    <div class="search">
      <div class="search_content">
        <div class="left_search">
          <div class="search_img">
            <img src="../../assets/img/searchs.png" alt />
          </div>
          <div class="search_input">
            <input
              type="text"
              class="searchs"
              :placeholder="$t('hj37')"
              ref="search"
              id="sousuo"
              v-model="gpcode"
              @input="gpinput"
            />
          </div>
        </div>
      </div>
    </div>
    <div class="tabs_title">
      <div class="tb" style="padding: 0; background-color: #f5f5f5">
        <div style="width: 33%; text-align: center">
          <span
            :class="tabsIndex0010 == 0 ? 'active' : ''"
            @click="handleTabsClick0010(0)"
            >{{ $t("hj61") }}</span
          >
        </div>
        <div style="width: 33%; text-align: center">
          <span
            :class="tabsIndex0010 == 1 ? 'active' : ''"
            @click="handleTabsClick0010(1)"
            >{{ $t("ydgs") }}</span
          >
        </div>
        <div style="width: 33%; text-align: center">
          <span
            :class="tabsIndex0010 == 2 ? 'active' : ''"
            @click="handleTabsClick0010(2)"
            >{{ $t("mggs") }}</span
          >
        </div>
      </div>
    </div>
    <div class="tabs_title" v-if="tabsIndex0010 == 0">
      <div class="tb" style="padding: 0; background-color: #f5f5f5">
        <div style="width: 33%; text-align: center">
          <span
            :class="tabsIndex0010a == 0 ? 'active' : ''"
            @click="handleTabsClick0010a(0)"
            >{{ $t("ydgs") }}</span
          >
        </div>
        <div style="width: 33%; text-align: center">
          <span
            :class="tabsIndex0010a == 1 ? 'active' : ''"
            @click="handleTabsClick0010a(1)"
            >{{ $t("mggs") }}</span
          >
        </div>
        <div style="width: 33%; text-align: center">
          <!-- <span :class="tabsIndex0010 == 2 ? 'active' : ''" @click="handleTabsClick0010(1)">{{ $t('TOPC') }}</span> -->
        </div>
      </div>
    </div>
        <div class="search">
            <div class="search_content">
                <div class="left_search">
                    <div class="search_img">
                        <img src="../../assets/img/searchs.png" alt />
                    </div>
                    <div class="search_input">
                        <input type="text" class="searchs" :placeholder="$t('hj37')" ref="search" id="sousuo"
                            v-model="gpcode" @input="gpinput" />
                    </div>
                </div>
            </div>
        </div>
    <div class="list_title">
      <div class="item_title varieties">
        <span>{{ $t("hj39") }}</span>
      </div>
      <div class="item_title latest_price">
        <span>{{ $t("hj40") }}</span>
      </div>
      <div class="item_title applies">
        <span>{{ $t("hj41") }}</span>
      </div>
    </div>
        <div class="tabs_title">
            <div class="tb" style="padding: 0;background-color: #F5F5F5;">
                <div style="width: 33%;text-align: center;">
                    <span :class="tabsIndex0010 == 0 ? 'active' : ''"
                        @click="handleTabsClick0010(0)">{{ $t('hj61') }}</span>
                </div>
                <div style="width: 33%;text-align: center;">
                    <span :class="tabsIndex0010 == 1 ? 'active' : ''"
                        @click="handleTabsClick0010(1)">{{ $t('ydgs') }}</span>
                </div>
                <div style="width: 33%;text-align: center;">
                    <span :class="tabsIndex0010 == 2 ? 'active' : ''"
                        @click="handleTabsClick0010(2)">{{ $t('mggs') }}</span>
                </div>
            </div>
        </div>
        <div class="tabs_title" v-if="tabsIndex0010==0">
            <div class="tb" style="padding: 0;background-color: #F5F5F5;">
                <div style="width: 33%;text-align: center;">
                    <span :class="tabsIndex0010a == 0 ? 'active' : ''"
                        @click="handleTabsClick0010a(0)">{{ $t('ydgs') }}</span>
                </div>
                <div style="width: 33%;text-align: center;">
                    <span :class="tabsIndex0010a == 1 ? 'active' : ''"
                        @click="handleTabsClick0010a(1)">{{ $t('mggs') }}</span>
                </div>
                <div style="width: 33%;text-align: center;">
                    <!-- <span :class="tabsIndex0010 == 2 ? 'active' : ''" @click="handleTabsClick0010(1)">{{ $t('TOPC') }}</span> -->
                </div>
            </div>
        </div>
    <!-- <TradList class="tradlist" :typety="true"></TradList> -->
    <!-- 市场列表 -->
    <div
      class="list"
      v-if="tabsIndex001 == 0"
      :class="isToken == '' ? 'listHeight' : 'listHeights'"
    >
      <van-list
        v-model="loading"
        :finished="finished"
        :loading-text="$t('hj430')"
        :finished-text="$t('hj43')"
        @load="onLoad"
        :immediate-check="false"
      >
        <div v-if="tabsIndex0010 == 0" class="van-clearfix">
          <div class="list_items">
            <div
              class="item"
              v-for="(item, index) in listArr"
              :key="index"
              @click="handleGoToKlineDetail(item, index)"
            >
              <div class="item_box">
                <div class="item_box_left">
                  <div class="item_box_left_top">{{ item.spell }}</div>
                  <div class="item_box_left_bottom">{{ item.name }}</div>
                </div>
                <div class="item_box_zj">{{ item.nowPrice }}</div>
        <div class="list_title">
            <div class="item_title varieties">
                <span>{{ $t('hj39') }}</span>
            </div>
            <div class="item_title latest_price">
                <span>{{ $t('hj40') }}</span>
            </div>
            <div class="item_title applies">
                <span>{{ $t('hj41') }}</span>
            </div>
        </div>
                <div
                  :class="
                    item.color == '1' ? 'item_box_right' : 'item_box_righta'
                  "
                >
                  {{ item.hcrate }}%
                </div>
              </div>
            </div>
          </div>
        </div>
        <div v-if="tabsIndex0010 == 1" class="van-clearfix">
          <div class="list_items">
            <div
              class="item"
              v-for="(item, index) in listArr"
              :key="index"
              @click="handleGoToKlineDetail(item, index)"
            >
              <div class="item_box">
                <div class="item_box_left">
                  <div class="item_box_left_top">{{ item.spell }}</div>
                  <div class="item_box_left_bottom">{{ item.name }}</div>
                </div>
                <div class="item_box_zj">{{ item.nowPrice }}</div>
        <!-- <TradList class="tradlist" :typety="true"></TradList> -->
                <div
                  :class="
                    item.color == '1' ? 'item_box_right' : 'item_box_righta'
                  "
                >
                  {{ item.hcrate }}%
                </div>
              </div>
            </div>
          </div>
        </div>
        <div v-if="tabsIndex0010 == 2" class="van-clearfix">
          <div class="list_items">
            <div
              class="item"
              v-for="(item, index) in listArr"
              :key="index"
              @click="handleGoToKlineDetail(item, index)"
            >
              <div class="item_box">
                <div class="item_box_left">
                  <div class="item_box_left_top">{{ item.spell }}</div>
                  <div class="item_box_left_bottom">{{ item.name }}</div>
                </div>
                <div class="item_box_zj">{{ item.nowPrice }}</div>
        <!-- 市场列表 -->
        <div class="list" v-if="tabsIndex001 == 0" :class="isToken == '' ? 'listHeight' : 'listHeights'">
            <van-list v-model="loading" :finished="finished" :loading-text="$t('hj430')" :finished-text="$t('hj43')"
                @load="onLoad" :immediate-check="false">
                <div v-if="tabsIndex0010 == 0" class="van-clearfix">
                    <div class="list_items">
                        <div class="item" v-for="(item, index) in listArr" :key="index"
                            @click="handleGoToKlineDetail(item, index)">
                            <div class="item_box">
                                <div class="item_box_left">
                                    <div class="item_box_left_top">{{item.spell}}</div>
                                    <div class="item_box_left_bottom">{{item.name}}</div>
                                </div>
                                <div class="item_box_zj">{{item.nowPrice}}</div>
                                <div :class="item.color=='1'?'item_box_right':'item_box_righta'">{{item.hcrate}}%</div>
                            </div>
                        </div>
                    </div>
                </div>
                <div v-if="tabsIndex0010 == 1" class="van-clearfix">
                    <div class="list_items">
                        <div class="item" v-for="(item, index) in listArr" :key="index"
                            @click="handleGoToKlineDetail(item, index)">
                            <div class="item_box">
                                <div class="item_box_left">
                                    <div class="item_box_left_top">{{item.spell}}</div>
                                    <div class="item_box_left_bottom">{{item.name}}</div>
                                </div>
                                <div class="item_box_zj">{{item.nowPrice}}</div>
                <div
                  :class="
                    item.color == '1' ? 'item_box_right' : 'item_box_righta'
                  "
                >
                  {{ item.hcrate }}%
                </div>
              </div>
            </div>
          </div>
        </div>
      </van-list>
    </div>
                                <div :class="item.color=='1'?'item_box_right':'item_box_righta'">{{item.hcrate}}%</div>
                            </div>
                        </div>
                    </div>
                </div>
                <div v-if="tabsIndex0010 == 2" class="van-clearfix">
                    <div class="list_items">
                        <div class="item" v-for="(item, index) in listArr" :key="index"
                            @click="handleGoToKlineDetail(item, index)">
                            <div class="item_box">
                                <div class="item_box_left">
                                    <div class="item_box_left_top">{{item.spell}}</div>
                                    <div class="item_box_left_bottom">{{item.name}}</div>
                                </div>
                                <div class="item_box_zj">{{item.nowPrice}}</div>
                                <div :class="item.color=='1'?'item_box_right':'item_box_righta'">{{item.hcrate}}%</div>
                            </div>
                        </div>
                    </div>
                </div>
            </van-list>
        </div>
        <!-- 市场列表 -->
        <div class="list" v-if="tabsIndex001 == 1" :class="isToken == '' ? 'listHeight' : 'listHeights'">
            <van-list v-model="loading" :finished="finished" :loading-text="$t('hj430')" :finished-text="$t('hj43')"
                @load="onLoad" :immediate-check="false">
                <div v-if="tabsItemIndex == 0" class="van-clearfix">
                    <div class="list_items">
                        <div class="item" v-for="(item, index) in listArr" :key="index"
                            @click="handleGoToKlineDetail(item, index)">
                            <div class="item_box">
                                <div class="item_box_left">
                                    <div class="item_box_left_top">{{item.spell}}</div>
                                    <div class="item_box_left_bottom">{{item.name}}</div>
                                </div>
                                <div class="item_box_zj">{{item.nowPrice}}</div>
                                <div class="item_box_righta" v-if="orderBy=='asc' &&tabsIndex0010==0">{{item.hcrate}}%
                                </div>
                                <div class="item_box_right" v-if="orderBy=='desc'&&tabsIndex0010==1">{{item.hcrate}}%
                                </div>
                                <div :class="item.color=='1'?'item_box_right':'item_box_righta'">{{item.hcrate}}%</div>
                            </div>
                        </div>
                    </div>
                </div>
                <div v-if="tabsItemIndex == 1" class="van-clearfix">
                    <div class="list_items">
                        <div class="item" v-for="(item, index) in listArr1" :key="index"
                            @click="handleGoToKlineDetail(item, index)">
                            <div v-if="(tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5">
                                <div class="left_title">
                                    <div class="tp">
                                        <span class="collection" @click.stop="options(item)">
                                            <span v-show="tabsItemIndex != 5" class="shu"
                                                :class="item.isOption == '1' ? 'shublue' : ''"></span>
                                            <span v-show="tabsItemIndex == 5" class="shu hongse"></span>
                                        </span>
                                        <span class="title_color" style="white-space: nowrap;overflow: hidden;">
                                            {{ tabsItemIndex == 5 ? item.name : tabsItemIndex ==
                        2 ? item.name : tabsItemIndex == 0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.name :
                        item.indexName | getName
                      }}
                                        </span>
                                    </div>
                                    <div class="bt">
                                        <span>
                                            {{ tabsItemIndex == 5 ? item.stockType + item.code : tabsItemIndex == 2 ? item.gid :
                        tabsItemIndex
                          ==
                          0 || tabsItemIndex == 3 || tabsItemIndex == 4 ? item.gid : item.indexCode
                      }}
                                        </span>
                                    </div>
                                </div>
                                <div class="center_price">
                                    <div class="tp">
                                        <span class="price_color"
                                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                                            :class="item.hcrate > 0 ? 'green' : 'red'">
                                            {{ item.nowPrice
                      }}
                                        </span>
                                        <span class="price_color" v-else>
                                            {{ tabsItemIndex == 5 ? Number(item.price).toFixed(2) :
                        item.currentPoint
                      }}
                                        </span>
                                    </div>
                                    <div class="bt">
                                        <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{ tabsItemIndex == 5 ? 'Max:' +
                      Number(item.orderNumber) : $t('hj44') + ':' + Number(item.transFee)
                    }}</span>
                                        <span v-else>{{ item.today_min }}</span>
                                    </div>
                                </div>
                                <div class="right_bs">
                                    <div class="tp" style="justify-content: flex-end;">
                                        <span class="price_color"
                                            v-if="tabsItemIndex == 0 || tabsItemIndex == 2 || tabsItemIndex == 3 || tabsItemIndex == 4"
                                            :class="item.hcrate > 0 ? 'green' : 'red'">{{ item.hcrate }}</span>
                                        <span class="price_color" v-if="tabsItemIndex == 1"
                                            :class="item.floatRate > 0 ? 'green' : 'red'">
                                            {{
                        item.floatRate + '%'
                      }}
                                        </span>
                                        <!-- <span class="price_color" v-if="tabsItemIndex == 3"
    <!-- 市场列表 -->
    <div
      class="list"
      v-if="tabsIndex001 == 1"
      :class="isToken == '' ? 'listHeight' : 'listHeights'"
    >
      <van-list
        v-model="loading"
        :finished="finished"
        :loading-text="$t('hj430')"
        :finished-text="$t('hj43')"
        @load="onLoad"
        :immediate-check="false"
      >
        <div v-if="tabsItemIndex == 0" class="van-clearfix">
          <div class="list_items">
            <div
              class="item"
              v-for="(item, index) in listArr"
              :key="index"
              @click="handleGoToKlineDetail(item, index)"
            >
              <div class="item_box">
                <div class="item_box_left">
                  <div class="item_box_left_top">{{ item.spell }}</div>
                  <div class="item_box_left_bottom">{{ item.name }}</div>
                </div>
                <div class="item_box_zj">{{ item.nowPrice }}</div>
                <div
                  class="item_box_righta"
                  v-if="orderBy == 'asc' && tabsIndex0010 == 0"
                >
                  {{ item.hcrate }}%
                </div>
                <div
                  class="item_box_right"
                  v-if="orderBy == 'desc' && tabsIndex0010 == 1"
                >
                  {{ item.hcrate }}%
                </div>
                <div
                  :class="
                    item.color == '1' ? 'item_box_right' : 'item_box_righta'
                  "
                >
                  {{ item.hcrate }}%
                </div>
              </div>
            </div>
          </div>
        </div>
        <div v-if="tabsItemIndex == 1" class="van-clearfix">
          <div class="list_items">
            <div
              class="item"
              v-for="(item, index) in listArr1"
              :key="index"
              @click="handleGoToKlineDetail(item, index)"
            >
              <div
                v-if="
                  (tabsItemIndex == 5 && item.zt == 0) || tabsItemIndex != 5
                "
              >
                <div class="left_title">
                  <div class="tp">
                    <span class="collection" @click.stop="options(item)">
                      <span
                        v-show="tabsItemIndex != 5"
                        class="shu"
                        :class="item.isOption == '1' ? 'shublue' : ''"
                      ></span>
                      <span
                        v-show="tabsItemIndex == 5"
                        class="shu hongse"
                      ></span>
                    </span>
                    <span
                      class="title_color"
                      style="white-space: nowrap; overflow: hidden"
                    >
                      {{
                        tabsItemIndex == 5
                          ? item.name
                          : tabsItemIndex == 2
                          ? item.name
                          : tabsItemIndex == 0 ||
                            tabsItemIndex == 3 ||
                            tabsItemIndex == 4
                          ? item.name
                          : item.indexName | getName
                      }}
                    </span>
                  </div>
                  <div class="bt">
                    <span>
                      {{
                        tabsItemIndex == 5
                          ? item.stockType + item.code
                          : tabsItemIndex == 2
                          ? item.gid
                          : tabsItemIndex == 0 ||
                            tabsItemIndex == 3 ||
                            tabsItemIndex == 4
                          ? item.gid
                          : item.indexCode
                      }}
                    </span>
                  </div>
                </div>
                <div class="center_price">
                  <div class="tp">
                    <span
                      class="price_color"
                      v-if="
                        tabsItemIndex == 0 ||
                        tabsItemIndex == 2 ||
                        tabsItemIndex == 3 ||
                        tabsItemIndex == 4
                      "
                      :class="item.hcrate > 0 ? 'green' : 'red'"
                    >
                      {{ item.nowPrice }}
                    </span>
                    <span class="price_color" v-else>
                      {{
                        tabsItemIndex == 5
                          ? Number(item.price).toFixed(2)
                          : item.currentPoint
                      }}
                    </span>
                  </div>
                  <div class="bt">
                    <span v-if="tabsItemIndex == 5 || tabsItemIndex == 1">{{
                      tabsItemIndex == 5
                        ? "Max:" + Number(item.orderNumber)
                        : $t("hj44") + ":" + Number(item.transFee)
                    }}</span>
                    <span v-else>{{ item.today_min }}</span>
                  </div>
                </div>
                <div class="right_bs">
                  <div class="tp" style="justify-content: flex-end">
                    <span
                      class="price_color"
                      v-if="
                        tabsItemIndex == 0 ||
                        tabsItemIndex == 2 ||
                        tabsItemIndex == 3 ||
                        tabsItemIndex == 4
                      "
                      :class="item.hcrate > 0 ? 'green' : 'red'"
                      >{{ item.hcrate }}</span
                    >
                    <span
                      class="price_color"
                      v-if="tabsItemIndex == 1"
                      :class="item.floatRate > 0 ? 'green' : 'red'"
                    >
                      {{ item.floatRate + "%" }}
                    </span>
                    <!-- <span class="price_color" v-if="tabsItemIndex == 3"
                    :class="((item.nowPrice - item.lastClose) / item.lastClose * 100).toFixed(2) > 0 ? 'green' : 'red'">
                    {{
                        item.lastClose == "" ? 0.00 : ((Number(item.nowPrice) - Number(item.lastClose)) /
                          Number(item.lastClose) * 100).toFixed(2) + '%'
                    }}
                  </span> -->
                                        <div v-if="tabsItemIndex == 5"
                                            :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'">
                                            <!-- {{item.orderNumber}} -->
                                            {{ item.type == 1 ? $t('hj45') : $t('hj46') }}
                                        </div>
                                    </div>
                                    <div class="bt" style="justify-content: flex-end;">
                                        <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">{{ item.preclose_px }}
                                        </div>
                                        <!-- class="codeIcon"  item.stock_type.toUpperCase()-->
                                    </div>
                                </div>
                    <div
                      v-if="tabsItemIndex == 5"
                      :class="item.type == 1 ? 'xgsgType' : 'xgsgTypeRed'"
                    >
                      <!-- {{item.orderNumber}} -->
                      {{ item.type == 1 ? $t("hj45") : $t("hj46") }}
                    </div>
                  </div>
                  <div class="bt" style="justify-content: flex-end">
                    <div v-if="tabsItemIndex != 1 && tabsItemIndex != 5">
                      {{ item.preclose_px }}
                    </div>
                    <!-- class="codeIcon"  item.stock_type.toUpperCase()-->
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </van-list>
                            </div>
                        </div>
                    </div>
                </div>
            </van-list>
            <!-- <table border="1" class="list_item" width="100%">
      <!-- <table border="1" class="list_item" width="100%">
            <tr class="thh">
              <th>{{ $t('hj39') }}</th>
              <th>{{ $t('hj40') }}</th>
@@ -263,18 +393,13 @@
          </table> -->
            <!-- <div class="list_items">
      <!-- <div class="list_items">
            <div class="item" v-for="(item, index) in listArr" :key="index" @click="handleGoToKlineDetail(item, index)">
              {{ item }}
            </div>
          </div> -->
        </div>
    </div>
    </div>
    </div>
  </div>
</template>
<script>
import AllList from "@/page/list/list-all";
src/page/user/ransferIndex.vue
@@ -117,11 +117,7 @@
              <div class="van-cell__value van-field__value">
                <div class="van-field__body">
                  <div class="van-field__control" style="padding-left: 10px">
                    {{
                      from.accectType !== "US"
                        ? (formValue / exchangeRate).toFixed(2)
                        : (formValue * exchangeRate).toFixed(2)
                    }}
                    {{ (formValue * rate).toFixed(2) }}
                  </div>
                  <div class="van-field__button" style="">
                    <span style="color: rgb(79, 82, 87)">{{
@@ -181,9 +177,11 @@
      show: false,
      toShow: false,
      // 后端返回的数据列表比较多。在这里前端配置需要展示的
      filterActions: ["US", "MAS"],
      filterActions: ["US", "MAS", "HK"],
      // 选择的列表
      actions: [],
      // 汇率
      rate: "",
    };
  },
  methods: {
@@ -210,6 +208,7 @@
      this.from = { ...this.to };
      this.to = { ...obj };
      this.formValue = "";
      this.geCurrencyRate();
    },
    fromSelect(e) {
      if (e.accectType === this.to.accectType) {
@@ -217,6 +216,7 @@
      }
      this.from = e;
      this.formValue = "";
      this.geCurrencyRate();
    },
    toSelect(e) {
      if (e.accectType === this.from.accectType) {
@@ -225,7 +225,9 @@
      this.to = e;
      this.formValue = "";
      this.geCurrencyRate();
    },
    // 获取账号余额
    async getMoneyData() {
      let res = await api.getMoney();
      if (res.status === 0) {
@@ -238,6 +240,18 @@
        this.actions = array;
      }
    },
    // 获取汇率
    async geCurrencyRate() {
      if (this.from.accectType && this.to.accectType) {
        let res = await api.currencyRate({
          fromType: this.from.accectType,
          toType: this.to.accectType,
        });
        if (res.status === 0) {
          this.rate = res.data;
        }
      }
    },
    onClickLeft() {
      this.$router.push("/user");
    },
src/page/user/recharge-sure.vue
@@ -57,12 +57,8 @@
      <div>
        <div class="dz-title" v-if="rechargeAccountData.key !== undefined">
          <div>{{ $t("可用餘額") }}</div>
          <div class="balance-text" v-if="rechargeAccountData.key=='US'">
            {{ availableBalanceUSD }} USD
            <!-- {{ symbolCode }} -->
          </div>
          <div class="balance-text" v-else>
            {{ availableBalanceUSD }} MYR
          <div class="balance-text">
            {{ availableBalanceUSD }} {{ symbolCode }}
            <!-- {{ symbolCode }} -->
          </div>
        </div>
@@ -110,6 +106,10 @@
          name: this.$t("MAS"),
          key: "MAS",
        },
        {
          name: this.$t("HK"),
          key: "HK",
        },
      ],
      bankCard: {},
      availableBalanceUSD: "0.0000",