zzzz
2024-04-02 ab0704f2238e9159d13c66a19e830bcb249b36b9
注册页面的客服地址错误
23 files modified
3 files added
3195 ■■■■■ changed files
chinese_data.json 62 ●●●●● patch | view | raw | blame | history
config/index.js 2 ●●● patch | view | raw | blame | history
index.js 44 ●●●●● patch | view | raw | blame | history
src/App.vue 220 ●●●● patch | view | raw | blame | history
src/axios/api.js 8 ●●●●● patch | view | raw | blame | history
src/locales/en.js 4 ●●●● patch | view | raw | blame | history
src/locales/hanyu.js 6 ●●●● patch | view | raw | blame | history
src/locales/india.js 6 ●●●● patch | view | raw | blame | history
src/locales/riyu.js 6 ●●●● patch | view | raw | blame | history
src/locales/taiyu.js 6 ●●●● patch | view | raw | blame | history
src/locales/tw.js 6 ●●●● patch | view | raw | blame | history
src/locales/zh.js 9 ●●●● patch | view | raw | blame | history
src/page/home/home.vue 36 ●●●● patch | view | raw | blame | history
src/page/kline/components/kLine.vue 1253 ●●●● patch | view | raw | blame | history
src/page/list/list.vue 525 ●●●● patch | view | raw | blame | history
src/page/list/tradingList/data.list.vue 27 ●●●● patch | view | raw | blame | history
src/page/list/tradingList/tabs.vue 3 ●●●● patch | view | raw | blame | history
src/page/newUser/setting.vue 42 ●●●●● patch | view | raw | blame | history
src/page/user/cashlist.vue 150 ●●●● patch | view | raw | blame | history
src/page/user/compontents/cash-list.vue 238 ●●●●● patch | view | raw | blame | history
src/page/user/compontents/recharge-list.vue 360 ●●●● patch | view | raw | blame | history
src/page/user/compontents/transferindex-list.vue 87 ●●●●● patch | view | raw | blame | history
src/page/user/ransferIndex.vue 16 ●●●● patch | view | raw | blame | history
src/page/user/recharge-sure.vue 31 ●●●● patch | view | raw | blame | history
src/page/user/recharge.vue 33 ●●●● patch | view | raw | blame | history
src/router/index.js 15 ●●●● patch | view | raw | blame | history
chinese_data.json
New file
@@ -0,0 +1,62 @@
[
  "请先实名认证了再下单",
  "请选择购买手数",
  "请选择买卖方向",
  "款",
  "全",
  "戶手冊",
  "臺",
  "新日曆",
  "購記錄",
  "訊",
  "添加自选成功",
  "删除自选股成功",
  "大購買",
  "股",
  "筆價格",
  "字货币",
  "錄賬號",
  "即登录",
  "住帳戶密碼",
  "費註冊",
  "已閱讀並同意",
  "即注册",
  "上登錄",
  "戶總資產",
  "股總資產",
  "股資產",
  "股可用",
  "股冻结",
  "码修改成功",
  "不在交易时段内",
  "資產",
  "用資產",
  "浮動盈虧",
  "計盈虧",
  "結資產",
  "手續費",
  "虧",
  "倉價",
  "單金額",
  "倉手續費",
  "損價",
  "盈價",
  "倉時間",
  "單編號",
  "仓",
  "買跌",
  "型",
  "價",
  "倉",
  "部平仓",
  "動盈虧",
  "股总资产",
  "来西亚",
  "转成功",
  "能选择一样的",
  "请上传文件",
  "已复制到剪贴板",
  "行卡充值",
  "上传文件",
  "请输入整数"
]
config/index.js
@@ -40,7 +40,7 @@
    },
    // Various Dev Server settings
    host: "192.168.0.105", // can be overwritten by process.env.HOST
    host: "127.0.0.1", // can be overwritten by process.env.HOST
    port: 80, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
    autoOpenBrowser: true,
    errorOverlay: true,
index.js
New file
@@ -0,0 +1,44 @@
const fs = require('fs');
const path = require('path');
// 函数用于遍历目录
function traverseDirectory(directoryPath, resultArray) {
    const files = fs.readdirSync(directoryPath); // 同步读取目录内容
    files.forEach(file => {
        const filePath = path.join(directoryPath, file);
        const stats = fs.statSync(filePath); // 获取文件信息
        if (stats.isDirectory()) {
            traverseDirectory(filePath, resultArray); // 如果是目录,递归遍历子目录
        } else if (stats.isFile() && path.extname(filePath) === '.vue') {
            const fileContent = fs.readFileSync(filePath, 'utf8'); // 读取文件内容
            // 提取 template 和 script 标签中的中文内容
            const matches = fileContent.match(/<(template|script)>([\s\S]*?)<\/\1>/g);
            if (matches) {
                matches.forEach(match => {
                    const content = match.replace(/<!--[\s\S]*?-->/g, ''); // 去除注释
                    const chineseMatches = content.match(/(?<!\$t\(")([\u4e00-\u9fa5]+)(?="\))/g); // 匹配中文字符,排除$t("")引号内的中文
                    if (chineseMatches) {
                        chineseMatches.forEach(chinese => {
                            resultArray.push(chinese.trim()); // 将中文字符添加到结果数组中
                        });
                    }
                });
            }
        }
    });
}
// 设置要遍历的目录路径
const directoryPath = './src'; // 修改为你的目录路径
// 创建一个空数组来保存结果
const resultArray = [];
// 开始遍历目录
traverseDirectory(directoryPath, resultArray);
// 去重
const uniqueResults = [...new Set(resultArray)];
// 将结果保存到本地
fs.writeFileSync('chinese_data.json', JSON.stringify(uniqueResults, null, 2), 'utf8');
src/App.vue
@@ -1,122 +1,143 @@
<template>
  <div id="app" :class="`${$state.theme === 'red' ? 'red-theme' : 'black-theme'}`">
  <div
    id="app"
    :class="`${$state.theme === 'red' ? 'red-theme' : 'black-theme'}`"
  >
    <div :class="`header-box`" v-if="hasHeader && title !== $t('hj248')">
      <mt-header :title="title">
        <mt-button icon="back" slot="left" @click="$router.go(-1)"></mt-button>
        <div v-if="!is_Show">
          <template v-if="iconRight == 'search'">
          <img slot="right" class="search-right" src="./assets/ico/fangdajing.png" alt />
        </template>
        <template v-else>
          <mt-button icon="more" slot="right"></mt-button>
        </template>
            <img
              slot="right"
              class="search-right"
              src="./assets/ico/fangdajing.png"
              alt
            />
          </template>
          <template v-else>
            <mt-button icon="more" slot="right"></mt-button>
          </template>
        </div>
      </mt-header>
    </div>
    <div class="body-box">
      <transition
      :name="transitionName"
      >
      <transition :name="transitionName">
        <router-view></router-view>
      </transition>
    </div>
    <foot v-if="$route.meta.show !== true" @close="footColse"></foot>
    <elalert></elalert>
    <loginPopup  @close="dialogClose"/>
    <loginPopup @close="dialogClose" />
  </div>
</template>
<script>
import elalert from '@/components/elalert.vue'
import foot from '@/components/foot.vue'
import loginPopup from '@/components/loginDialog.vue'
import elalert from "@/components/elalert.vue";
import foot from "@/components/foot.vue";
import loginPopup from "@/components/loginDialog.vue";
// 引入css
import '@/assets/iconfont/iconfont.css'
import '@/assets/iconfont/iconfont.ttf'
import "@/assets/iconfont/iconfont.css";
import "@/assets/iconfont/iconfont.ttf";
import { getUserInfodata } from "./axios/api";
export default {
  components: {
    foot,
    elalert,
    loginPopup
    loginPopup,
  },
  name: 'App',
  created () {
    this.$state.theme = 'red'
    console.log(this.$state.theme, 'asdasdasd')
    let title = this.$route.meta.title || this.$t('hj224')
    this.title = title
  name: "App",
  created() {
    this.getUserInfo();
    this.$state.theme = "red";
    console.log(this.$state.theme, "asdasdasd");
    let title = this.$route.meta.title || this.$t("hj224");
    this.title = title;
    if (this.$route.meta.is_Show) {
      this.is_Show = this.$route.meta.is_Show
      this.is_Show = this.$route.meta.is_Show;
    } else {
      this.is_Show = true
      this.is_Show = true;
    }
    if (this.$route.meta.hasHeader) {
      this.hasHeader = true
      this.hasHeader = true;
    } else {
      this.hasHeader = false
      this.hasHeader = false;
    }
    if (this.$route.meta.iconRight) {
      this.iconRight = this.$route.meta.iconRight
      this.iconRight = this.$route.meta.iconRight;
    } else {
      this.iconRight = 'default'
      this.iconRight = "default";
    }
    // this.$store.state.className = window.localStorage.getItem('styleName')?window.localStorage.getItem('styleName'):'red'
  },
  watch: {
    $route (to, from) {
      let title = to.meta.title || this.$t('hj224')
      this.title = title
    $route(to, from) {
      let title = to.meta.title || this.$t("hj224");
      this.title = title;
      if (to.meta.iconRight) {
        this.iconRight = to.meta.iconRight
        this.iconRight = to.meta.iconRight;
      } else {
        this.iconRight = 'default'
        this.iconRight = "default";
      }
      if (to.meta.hasHeader) {
        this.hasHeader = true
        this.hasHeader = true;
      } else {
        this.hasHeader = false
        this.hasHeader = false;
      }
      if (to.meta.index > from.meta.index) {
        console.log('slide-left')
        console.log("slide-left");
        // 设置动画名称
        this.transitionName = 'slide-left'
        this.transitionName = "slide-left";
      } else {
        console.log('slide-right')
        this.transitionName = 'slide-right'
        console.log("slide-right");
        this.transitionName = "slide-right";
      }
    }
    },
  },
  data () {
  data() {
    return {
      title: '首页',
      title: "首页",
      hasHeader: false,
      iconRight: 'default',
      transitionName: '',
      iconRight: "default",
      transitionName: "",
      is_Show: true,
      is_foot: true
    }
      is_foot: true,
    };
  },
  methods: {
    footColse () {
      this.$store.commit('dialogVisible', true)
    async getUserInfo() {
      // 获取用户信息
      //   let showcookie = this.getCookie('USER_TOKEN');
      let data = await getUserInfodata();
      if (data.status === 0) {
        // this.getProductSetting()
        this.$store.state.userInfo = data.data;
      } else {
        this.$store.commit("elAlertShow", {
          elAlertShow: true,
          elAlertText: data.msg,
        });
      }
      this.$store.state.user = this.user;
    },
    dialogClose () {
      this.$store.commit('dialogVisible', false)
    }
  }
}
    footColse() {
      this.$store.commit("dialogVisible", true);
    },
    dialogClose() {
      this.$store.commit("dialogVisible", false);
    },
  },
};
</script>
<style lang="less" scoped>
/deep/ .van-list__finished-text{
/deep/ .van-list__finished-text {
  line-height: 1.925926rem !important;
}
/deep/ .van-list__error-text{
/deep/ .van-list__error-text {
  line-height: 1.925926rem !important;
}
#app {
@@ -153,8 +174,8 @@
    overflow-y: auto;
  }
  &.red-theme {
    background: rgb(241,242,246);
    color:#000;
    background: rgb(241, 242, 246);
    color: #000;
    /deep/.mint-header {
      background: none;
      .mint-header-title {
@@ -169,24 +190,23 @@
      color: #000;
    }
    /deep/.navs_content {
        background: #fff!important;
      background: #fff !important;
    }
    /deep/.fo_content {
        background: #fff;
      background: #fff;
    }
    /deep/.news-tab{
    /deep/.news-tab {
      background: #fff;
    }
    /deep/.mint-tab-item-label {
      color: #000;
      font-size: .26rem;
      font-size: 0.26rem;
    }
    /deep/.top_title{
    /deep/.top_title {
      color: #000;
    }
    /deep/.titContent{
      color:#000;
    /deep/.titContent {
      color: #000;
    }
    /deep/.mint-navbar {
      background: #fff;
@@ -195,14 +215,15 @@
      background: #fff;
      border: none;
    }
    /deep/.footCss{
    /deep/.footCss {
      background: #fff;
    }
    /deep/.newDetail-tits{
    /deep/.newDetail-tits {
      color: #aaa;
    }
    /deep/.van-skeleton__row, .van-skeleton__title{
      background-color: #fff!important;
    /deep/.van-skeleton__row,
    .van-skeleton__title {
      background-color: #fff !important;
    }
  }
  &.black-theme {
@@ -211,12 +232,12 @@
    background: rgb(33, 33, 43);
    /deep/.navs_content {
        background: #272733;
      background: #272733;
    }
    /deep/.fo_content {
        background: #272733;
      background: #272733;
    }
    /deep/.news-tab{
    /deep/.news-tab {
      background: #272733;
    }
    /deep/.mint-navbar {
@@ -224,24 +245,24 @@
    }
    /deep/.mint-tab-item-label {
      color: #fff;
      font-size: .26rem;
      font-size: 0.26rem;
    }
    /deep/.titContent{
      color:#000;
    /deep/.titContent {
      color: #000;
    }
    /deep/.mint-tab-container {}
    /deep/.mint-tab-container {
    }
    /deep/.mint-tab-item {
      background: #272733;
    }
    /deep/.van-swipe-item {
    color: #000;
      color: #000;
    }
    /deep/.footCss{
    /deep/.footCss {
      background: rgb(33, 33, 43);
    }
    /deep/.newDetail-tits{
    /deep/.newDetail-tits {
      color: #999;
    }
  }
@@ -253,28 +274,27 @@
.mint-search-list {
  position: relative !important;
}
.topLeft{
.topLeft {
}
/deep/.el-alert{
  width: 75%!important;
  height: 1.1rem!important;
  position: absolute!important;
  top: 0!important;
  bottom: 0!important;
  left: 0!important;
  right: 0!important;
  margin: auto!important;
  font-size: 0.36rem!important;
/deep/.el-alert {
  width: 75% !important;
  height: 1.1rem !important;
  position: absolute !important;
  top: 0 !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  margin: auto !important;
  font-size: 0.36rem !important;
}
/deep/.el-alert__title{
  font-size: 0.36rem!important;
/deep/.el-alert__title {
  font-size: 0.36rem !important;
}
/deep/.el-icon-close::before{
    display: none;
/deep/.el-icon-close::before {
  display: none;
}
/deep/.icon-icon_A::before{
 font-size: 0.6rem!important;
/deep/.icon-icon_A::before {
  font-size: 0.6rem !important;
}
</style>
src/axios/api.js
@@ -557,3 +557,11 @@
export function selCzFn(options) {
  return post("/user/pay/flyPay.do", options);
}
// 充值
export function positionzx(options) {
  return post("/user/option/list.do", options);
}
// 充值
export function getMoenyLog(options) {
  return post("/user/getMoenyLog.do", options);
}
src/locales/en.js
@@ -965,5 +965,9 @@
  韩股總資產: "Total assets of Korean stocks",
  "上傳憑證:": "Upload voucher:",
  从: "from",
  密码修改成功: "Password modification successful",
  劃轉记录: "Transfer Record",
  馬股账户: "Horse stock account",
  美股账户: "US stock account",
  到: "to"
};
src/locales/hanyu.js
@@ -526,5 +526,9 @@
  韩股總資產: "한국 주식 총자산",
  "上傳憑證:": "자격 증명 업로드:",
  从: "부터",
  到: "에"
  到: "에",
  密码修改成功: "암호 수정 성공",
  劃轉记录: "레코드 스왑",
  馬股账户: "마주 계좌",
  美股账户: "미국 주식 계좌"
};
src/locales/india.js
@@ -955,5 +955,9 @@
  韩股總資產: "  कोरियाई शेयरों की कुल संपत्ति",
  "上傳憑證:": "  प्रमाणपत्र अपलोड करें",
  从: "से",
  到: "को"
  到: "को",
  密码修改成功: "पासवर्ड सफलतापूर्वक बदला गया",
  劃轉记录: "स्थानांतरण रिकॉर्ड",
  馬股账户: "मलेशियाई स्टॉक खाता",
  美股账户: "यूएस स्टॉक खाता"
};
src/locales/riyu.js
@@ -526,5 +526,9 @@
  韩股總資產: "  韓国株の総資産",
  "上傳憑證:": "  証明書をアップロードします",
  从: "から",
  到: "に"
  到: "に",
  密码修改成功: "パスワードの変更に成功しました",
  劃轉记录: "かいてんきろく",
  馬股账户: "馬株口座",
  美股账户: "米株口座"
};
src/locales/taiyu.js
@@ -525,5 +525,9 @@
  韩股總資產: "  สินทรัพย์รวมของหุ้นเกาหลี",
  "上傳憑證:": "  อัพโหลดใบรับรอง",
  从: "จาก",
  到: "ถึง"
  到: "ถึง",
  密码修改成功: "แก้ไขรหัสผ่านสำเร็จ",
  劃轉记录: "บันทึกการเดินทาง",
  馬股账户: "บัญชีหุ้นม้า",
  美股账户: "บัญชี MeiShar"
};
src/locales/tw.js
@@ -1192,5 +1192,9 @@
  韩股總資產: " 韩股總資產",
  "上傳憑證:": " 上傳憑證:",
  从: "從",
  到: "到"
  到: "到",
  "密码修改成功": "密碼修改成功",
  "劃轉记录": "劃轉記錄",
  "馬股账户": "馬股帳戶",
  "美股账户": "美股帳戶"
};
src/locales/zh.js
@@ -358,7 +358,7 @@
  hj230: "对公转账",
  hj231: "充值成功",
  hj232: "充值失败",
  hj233: "取消充值",
  审核中: "取消充值",
  hj234: "订单号",
  hj235: "loading...",
  hj236: "已全部加载",
@@ -523,4 +523,11 @@
  "上傳憑證:": "上傳憑證:",
  从: "从",
  到: "到",
  //
  密码修改成功: "密码修改成功",
  劃轉记录: "劃轉记录",
  馬股账户: "馬股账户",
  美股账户: "美股账户"
};
src/page/home/home.vue
@@ -35,15 +35,15 @@
          <ul class="menu" style="border-bottom: 0px">
            <!----><!---->
            <li @click="$router.push('/recharge')">
              <a class="link"
                ><div class="icon">
              <div class="link">
                <div class="icon">
                  <img
                    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgB7ZpPbtNAFMa/SYoUNuCwIpUA9wbpCSgrtr1BWLHmBoUtAqndsKWcANYIqXCCBi4QIyGCkJC9QkEQD++5aeU6k3r8Z8ZuOj9plPbVU8/XN/PmzZsCDofD4XA4HA6HwzS71EJqsmVtQm0EA0wAyJa2EJoI6CPRbrS0dHDF2EB5iswOE5SacVfOw07wulNlDdfKJJTeNdrrux3clxJD8oRPi9Tjn1GwiGIgEALjeYxPf4F3W/1yIaTKtlRL0JqG0p8DTzYERqcCdRh4S6/XGo/bhy8rPFN0nlufoCVw9C2Uw7zH1ilK+12Bt3metha0OAr3BI55YKiBbNCaRmfDC2YS2xTFI1U/ax6+3sEeahKbg794lxIrHk6mmUiOl7VxgYdPkNga9EWQ7WfFw5Q0POXPl+9/wxa8t6vsxgWHtHY7lFSw2BcfZrAFv5PjxpIdhiGJu7bFMjThk1Q1azeeSz88iHa+fI/RBJyX08dh2mbWw49/7ZHYERpC0CFkyQZ9ikVpEotFsKrC9PktpT03SiMZcLTpiX7aZsbDNYmtilCcvuoX3BKxq6hXcMvE8pTO2oxnWj8ieUwdc08xRdFZw/TE+LYnttM24/vwXOIzGkJSSShrMy6YXvARDcH1r6zNuOAeFdyEYi3ZgIt9WZtxwX06l8YSb2AbgUPVmdjKaYk8vA/bxHimMlfJpbWrmIOSNeSyUF37YFNxFmbW8eYh+HNBLlBEcCOBR4c7d/3TLwOadw9W1bOK8ggt/C+AGzc9uf/qtaTEY/JTo0zbyB3vosZ1hPqKeolnByvWbZpG1jAPrEelVA4uqAj/Di7L6ohlmr7FT7zNRT6uQen24UTmH+3tXdrudIWm+raDpFBPNSgSv0ODGtIf4N6561KJr/T9mFPV2cl1aWuDqMPhcDgcDjX/AeVdQUXCe3p2AAAAAElFTkSuQmCC"
                    alt=""
                  />
                </div>
                <div class="name">{{ $t("hj256") }}</div></a
              >
                <div class="name">{{ $t("hj256") }}</div>
              </div>
            </li>
            <!-- RechargeSure -->
            <li @click="$router.push('/RechargeSure')">
@@ -81,40 +81,40 @@
              </div>
            </li>
            <li @click="$router.push('/setting')">
              <a href="/help" class="link"
                ><div class="icon">
              <div class="link">
                <div class="icon">
                  <img
                    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUzSURBVHgB7ZrPbxtFFMe/47VV51DHIQk4pSTTChA0ipoeQIgLTlUhRBEEJCSEIDGRQClCariA6KEN3DiRSAjKqeGKQGn/grq3QpHiAwJxyqakjQUBGyKklMb7eLOuYXe9ib3eHwZpPxd7x+Od/e578+a92QViYmJiYmJiuoWATwZy8hwEzYGQRRgQSiSoBIMu/frzTxfhE1+C+3P3FQQSFxARBOg1iIlqWdfRIQn4QEBIRAhbRyaJVvpzchod4lMw6YgagSyPuzQ4KMfRAUn4wBCoCrI1Xdksr+URIBwj8gJGgSBsVjU0Ws5m5bFqVa/CA74snCKtZD1m7SNu/QaG5NxgbmR1IDdyOZuTEh7YLOvFX8rXCxDibWu76d77jAI84kvwdhpV50U4+5gCiT6i+m/5JBkL6IDNDX2Bo/WirVGI5+ARX4KrOruTsIt2WjDt+A8JcRQdUtuXmHc05dmtPS2HvgTfQbcepGr29djNC7xeZAPzBgNrtvFSzV61F74FE8h2AYZWs0XPIC7SwaptfG2nuxYWJJouwMyULDhvSpT4FsyZlm49Jrhaz9aH70DXBPtahxWCalWy3DfhEpQSRCWyZrECvc4+qxXKpoBJLYEniDDOZ5R887L17qgafNOEQOnkk3l5fU1Hp3gWrKJwUhiTIKO0WV4vatCKO7BlH/n+3PAFYZm3fLHSnrSLfOPbRoVkDZhLCkybAqme4FvPqNq5bZy/jN99Tw6RCa6LpRWY81TjLOjgRJkTA04oivxzvtGPc+yC9X/OCkVFamXRngTOsTXnNNgFemH+gw+nT774culQn2gr4/I0h1Oo5a1lILuyme4lIV4Tznnagr+2fl9VYuGTYXm4kBZYUZ7STv8gojTYyrrGZVu7ol+ZnkEm0xtk/SzZbS6vV6hlMPQdtBqU6zXqIZXs86zNu/U5Mjomn3n2helXWXAISE1gmS09MdQn9N06BSa4gUr2+aPobFdzVrkewsW0NI91bLc5HYhLt4MKUICvDKtd5J2xXIlEsAooQQSodlFj7RbEIhHM6/A8Ikat7W7toQuu8NxNcFKBiFFjqrjR1I6Q2eZ0EV2Al0gzVXW2hy7YsGRgUaPycmdb6IJ5bex4h8MvvMHYlIhEEbQkuoThMnboghslXjcQLmNHlnj8VwhdsCre0SXIZewoLKyjSyRcxg68ePiH2Q2pPr67ubOW6UnsWrb19ghk0r6f2rpCvCXkbAtH8Ou/LfPzXHPRP7HwR8vuX81m8Pjh4C+lZuCKsy14l56tcIlGnrKrL769hTC4DTQ9QA9e8Pk+nbcui+12V+781GgKgSOw5FYTh+PSn9010ZjDismxdPbM0xnX4r+XBWd6QpjDBt53aw4vaJ0f0htflV99UqFF3lc+DZ/8+MP3tuOHHj7S1Ifr4cUDu2zzRLfjUa+Jdfjg0vKX2Nr6NwgeuPcg9u/POLvpt/aovyMT3KfmE2ECHYq+eWMdn35sf7T8yKOPObvpaoy99qj9vePh8RmR2k3UCM/Do+hr31zFzNRLuMGirZx6y7apYZ57rx1LhadokZUym9ymirWNzIunIjzwwP0PytGxo/lW/ZT7Xvv6qs2NG7zJYi2CTcu2EqvwHB4Hc8NLzhdMokZt5L/73lnzuwpQas62+6jFs2Bl5dQ2rVCX6tx3zpzF1NRMdYfwOT+TWmjHqlY6WgDroo2FyCwtUD1+/MTaG6dOl0ZHx4q8T3axXYs2n8oH6l2NZBrjAjWJsNC00u0/oXt9HysmJiYmJuZ/wN/6Zaai9yOqrAAAAABJRU5ErkJggg=="
                    alt=""
                  />
                </div>
                <div class="name">{{ $t("用戶手冊") }}</div></a
              >
                <div class="name">{{ $t("用戶手冊") }}</div>
              </div>
            </li>
            <li @click="$router.push('/setting')">
              <a href="/platform" class="link"
                ><div class="icon">
              <div class="link">
                <div class="icon">
                  <img
                    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUQSURBVHgB7ZlPaBxVHMe/k9SYUk13EdI2WJnoUSgR/4AhkigqggerQgNeujnEqJckNIf24m68iKBke/FPKyQePHgoQfEgVEyLsUIRUgShHmRXg1kJ2Nmk0iTW7PP3m90xuzszb97szGz+OB94NH0z89583+/3e/N7vwViYmJiYmJi/k/o1OaoTVf+3rMkqGWoibo2hT0ofIyaAbtYq+WoncQeYABl9xWKjYX3YBeiU5uFXFhOcn3XxLcVp27uy/3pyn2o/C2zeAY7mONozGp65dquie8ByOOUr/UrjMOxK1uwBWyzm7NbZuH+guy+o/BPCjswvjOQf2bS2IrTRtAhj29ekDE0gQHIV38O4a6+jm2Ob9nE/YiOFOQLHRlhxamNnCESBUOkCitieqkoFgpFYVATlWZw31tvT4mj9+mBBGvwR/3gSWpFBIBE6qIFo5owregZ94u/5fHYse76bmUdLQiGXexrho7hZc/0kC26ZIgsvWqOxPIGVCP2yi+3sbpmNx5Z2HEsKBJUsB1RSkNrXcDIn9OmeAfYqu0aFjTNHg6LNzYxNHMTL390E+9evAUVeCweU+XeoC5d+zwLLJVyNX0lTOLjezLWf5cN0bOpmXm2Xn0bW/Pct2s4P7+B1fWtab4e68CDXftqhjySqJ2WYpz/yW8KvHhvUrsGCeEKHrkxByEG7I9peWqZwjuJy/SE7dP11U9/480vbmHRKNme7H3gDlwYubumz0Uwk6c3fPJIkudzJlyXLv0zbk5qg92tNPP02ZUcuaxu9XKcvvThKoY++ctV7Kln9sMHOi+oLKbDtbDF8HKK4jgNlyRk8OE2dFDgnf9uw/Fxvjbx7H4M97U7XpdYuPxSGrKHD2rjTs9GI5hJFXS0tfGm5CsFnCCLDj/Rbop2w0swym/a7eTa0Qm2IOFPHTsw983127rsNnbf7IkDOJr0jjIVwYKs3OVg5cgFGxRP6xqMz37YwHsX12yxygKzg3eh9/59UEVJMOUIG2Tl7qRWkyuE/x2uY71cGMDgI3fi6hn7XsJ9fsSqQkuSaG/FC/X9kQumGaI8VMgR5umuhsgFU9q4bVVIp7kjFyy2sSxTcpg7epcOVvkIhOYwdzME7yiaITjQeTkIwmHuoIJ1rxs0x9y6cVZX1NevxWHuoIL55CNNHSnjkR7X/HDugywetVc7fM0dhoX550736mEJlxGQK/OXzLJO+sy4LwuTe12yd/kjhXK9WHe5PkNtElWuVEkteUHMHZOPhNVwDu0G169G30jh+3nnNeNyT/b9afT2DThepzpCsj61bBR2Y1nZNIOqRfljRUxVVSA928+/GuLU6bTb2KLjYEJMnM7Ix6HqJ0JGh2KRnOtNqmInqRTLgtzGffX1MXNBPMdSrHE1KnzBQ3iPl5UvfDknHu/rdxVKbmveo7JoSzQXmkAKEjfv7Dw0e/XHnO3luO/EKyddhXLhffrTWeVwoJbzU7YNgzTcrW3GZnWcurmvFadK7lsl1suV/e7SqugoC085XbSK6bwLO/Hc88dBP6s4Ft0l5FupTNsZcpnWL3w8s9Wg3eDPC1nd9TMjIe9VnrWIOpfm1ebUaAiSFJPclyyaBW1KvsVy7Yq+tw+piGWitnA1Osq/NNanoplr13/XDx3uSkGdIgmd0Uo4qyrUopmCLXRsZWv/WZ531nauf1FJiCsVlcKBtdsW+RBi5saULq5v4vOwMqiYmJiYmJiY5vEvlMTFZ7VdSzYAAAAASUVORK5CYII="
                    alt=""
                  />
                </div>
                <div class="name">{{ $t("平臺") }}</div></a
              >
                <div class="name">{{ $t("平臺") }}</div>
              </div>
            </li>
            <li @click="$router.push('/transferIndex')">
              <a href="/transferIndex" class="link"
                ><div class="icon">
              <div class="link">
                <div class="icon">
                  <img
                    src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQvSURBVHgB7Zq/TxRBFMe/gyZCI4cmICSa5R8wWGiiIeEoTEwkETWxsOFsSKyAQAxWd9qY2ICVCQ00lgZN7MHEWNgcsdLqzl+cMcE7rM5Cxvf2bvHY25mdvds9DtxP8nLL7OzsfufN25l5CxATExMTExPzP2GRrZEtV48PLQmyDJl02QIOofBpsiLqxTqWI5vAISCJyvCVhsbCh3AAschWoReW05w/MPHtxKlq+HJ5uloP1WOdxzNoY8bRmNes6rkDE99J6OOUz40YtMOxq+uwLPZ5mPOwXIT6AXn4TiE4KbRhfGegn2bS+BenjWBBH9/cIdNoAUnoe38N4fa+hX2Ob92NRxAdKeg7OjIaj9PJrYzudK4oE4WiTBW25fJmSWYLJVkkk1UrctnDRwvy9BmrKcECwXA33kNW8r2qIjaNpZN19yORluzAlJC2F33j/svnPC6cHXQXG+s4iuYwF+uCPXqMX37CFmsMeRhebQ32CP9nIToQJQqx7NVOgawQDU1bdXBb3KZJ3egEK8T+KMoh8mr4b3Nq8yu37UOzMex9vUJsUAqPT3iW9yf23pZeas5hnp5wtL9H5KEgfA+HJLZBbE9zTKsqhCt4f8U6WF0d6mcIT3B7iLWREtOql1g0MeyCFxOozLOhoInhXaTA4kC3mHGXRy64SPFUFvaKLDSMBNMa4bfEoHt+jnYeJsqVxEDLoS5JdB7BNY/yQPh7eHIr1MX83OUuzJLVYuJhG4GV/m5xp7Yocg83g5fYINCStW4h0raCmxXL7His5tpScBhiGeGx+2p2t1SPawvI+1ld9f57P/f8HZZYFa3wsNG2jQlbrPS4d7OCLb8Kghf0BpiK/bVt3H8sLu9R1hS8zdNmD2nFswEfTMUuPV3E+fpsR6B7h+Fh/tzJCbYJzxo7eK1rwETs2zfrdlonfX8mkIdpeK27i4IK5kk871Fuka3AI0neCbyAJo51Yjl/dWMsiZtjo/axG073PH+1pry+/AcvERI8jHVp0wxqhH/flgs1GUhf+/ipKGfn06q25fHuhJybz+jb4Q1LyFgwTJLzVs1U7ANKxbIgVbuTd6ftDvFtyzDH1ajwrI/wIT8v09CUF4dHlEIvDSftOiadtkn3QgtIQTPMe3v7Vt+9z9U9HJfduj2hFMqJ9+Vnq8bhQJbTpXiiIA21t+3YrI1T1fB14tRo+NaI9RvKQbeHplioCE95nXSS6V5vXubK1XHQZxXPpLuG/BGJ6709QjvvRyXYgbdn/L8elkllilOQ1+3fgOT90rMOUa+lubd5aaSav21o+JJHF+05NahYzl2VJc6ZiGWi9nAtFipfGt1L0czGh29W36mBFMwpkdAVsYMnpkIdWinYwUIlvvl31/P8Zu3k/FcHRjhTISvnnbdtiTch9tqYlou8gjL9eBYTExMTExPTPvwFuTt0PD0I6k4AAAAASUVORK5CYII="
                    alt=""
                  />
                </div>
                <div class="name">{{ $t("hj245") }}</div></a
              >
                <div class="name">{{ $t("hj245") }}</div>
              </div>
            </li>
            <li @click="settingDialog = true">
              <a href="#" class="links">
              <div class="links">
                <div class="icon">
                  <img
                    src="data:image/png;base64,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"
@@ -125,7 +125,7 @@
                <div class="name" style="margin-top: 2px">
                  {{ $t("yy") }}
                </div>
              </a>
              </div>
            </li>
          </ul>
          <van-popup
src/page/kline/components/kLine.vue
@@ -56,7 +56,7 @@
          </div>-->
          <div class="periodWrap kline_periodWrap" ref="kline_periodWrap">
            <!-- DWM 分 -->
            <div class="btnGroup" style="position:relative">
            <div class="btnGroup" style="position: relative">
              <div
                class="btn2"
                v-for="(item, index) in KLinePeriodMenu"
@@ -64,7 +64,7 @@
                :key="item.ID"
                @click="OnClickKLinePeriodMenu(index, item, 'kline')"
              >
              <!-- <div
                <!-- <div
                class="btn2"
                v-for="(item, index) in KLinePeriodMenu"
                :class="{ active: KLinePeriodIndex == index }"
@@ -73,39 +73,59 @@
              > -->
                <span>{{ item.Name }}</span>
              </div>
              <div class="btn2" @click="isShow ? isShow = false : isShow = true">
              <div
                class="btn2"
                @click="isShow ? (isShow = false) : (isShow = true)"
              >
                <div class="btn2">
                  <!-- :class="KLinePeriodIndex === index ? 'active' : ''" -->
                  <img src="../../../assets/img/options.png" alt />
                </div>
              </div>
              <div style="position:absolute;right: 0;top: 25px;;z-index: 99;" v-if="isShow == true">
              <div
                style="position: absolute; right: 0; top: 25px; z-index: 99"
                v-if="isShow == true"
              >
                <div
                  class="btnGroup"
                  v-show="IsShowRightMenu"
                  style="display: flex;flex-direction: column;"
                  style="display: flex; flex-direction: column"
                >
                  <div
                    class="btn"
                    :class="{ active: KLineRightIndex == index }"
                    v-for="(item, index) in KLineRightMenu"
                    :key="item.ID"
                    style="padding:10px"
                    style="padding: 10px"
                    @click="OnClickKLineRightMenu(index, item)"
                  >{{ item.Name }}</div>
                  >
                    {{ item.Name }}
                  </div>
                  <div
                    class="btn"
                    v-for="(item) in KLineIndexMenu"
                    v-for="item in KLineIndexMenu"
                    :key="item.ID"
                    style="padding:10px"
                    style="padding: 10px"
                    @click="ChangeKLineIndex(item)"
                  >{{ item.Name }}</div>
                  >
                    {{ item.Name }}
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="hqchart" id="hqchart_minute" ref="kline" v-show="chartType == 'minute'"></div>
          <div class="hqchart" id="hqchart_kline" ref="kline2" v-show="chartType == 'kline'"></div>
          <div
            class="hqchart"
            id="hqchart_minute"
            ref="kline"
            v-show="chartType == 'minute'"
          ></div>
          <div
            class="hqchart"
            id="hqchart_kline"
            ref="kline2"
            v-show="chartType == 'kline'"
          ></div>
          <!-- <div class="statementWrap" ref="kline_statementWrap">
                      郑重声明:本页面所有数据来自互联网或自动生成的测试数据,仅用于学习HQChart图形库使用,不构成任何投资价值信息。如使用者依据本网站提供的信息、资料及图表进行金融、证券等投资所造成的盈亏与本网站无关。
@@ -121,25 +141,25 @@
</template>
<script>
import _ from 'lodash'
import HQChart from 'hqchart'
import 'hqchart/src/jscommon/umychart.resource/css/tools.css'
import 'hqchart/src/jscommon/umychart.resource/font/iconfont.css'
import EastMoney from '../../../eastmoney/HQData.js'
import i18n from '@/locales/index.js'
import _ from "lodash";
import HQChart from "hqchart";
import "hqchart/src/jscommon/umychart.resource/css/tools.css";
import "hqchart/src/jscommon/umychart.resource/font/iconfont.css";
import EastMoney from "../../../eastmoney/HQData.js";
import i18n from "@/locales/index.js";
// 源码调试用
// import Chart from '../jscommon/umychart.vue/umychart.vue.js'
// import '../jscommon/umychart.resource/css/tools.css'
// import '../jscommon/umychart.resource/font/iconfont.css'
// var HQChart={ Chart:Chart };
HQChart.Chart.MARKET_SUFFIX_NAME.GetMarketStatus = function (symbol) {
  return 2
} // 一直交易
function DefaultData () {}
  return 2;
}; // 一直交易
function DefaultData() {}
DefaultData.GetMinuteOption = function () {
  var option = {
    Type: '分钟走势图', // 创建图形类型
    Type: "分钟走势图", // 创建图形类型
    // Type:'分钟走势图横屏',
    Language: 1, // 英文 'EN' 简体中文:'CN' 繁体中文:"TC"
    // 窗口指标
@@ -148,7 +168,7 @@
      // { Index: "KDJ", Modify: false, Change: false, Close: false }
    ],
    Symbol: 'AAPL.usa',
    Symbol: "AAPL.usa",
    IsAutoUpdate: true, // 是自动更新数据
    AutoUpdateFrequency: 20000,
    DayCount: 1, // 1 最新交易日数据 >1 多日走势图
@@ -159,7 +179,7 @@
    MinuteLine: {
      IsDrawAreaPrice: true, // 是否画价格面积图
      IsShowAveragePrice: true // 不显示均线
      IsShowAveragePrice: true, // 不显示均线
    },
    // 边框
@@ -169,7 +189,7 @@
      Top: 0,
      Bottom: 1,
      AutoRight: { Blank: 10, MinWidth: 40 },
      AutoLeft: { Blank: 10, MinWidth: 40 }
      AutoLeft: { Blank: 10, MinWidth: 40 },
    },
    // 子框架设置
@@ -179,769 +199,769 @@
    // 扩展图形
    ExtendChart: [
      // {Name:'MinuteTooltip' }  //手机端tooltip
    ]
  }
    ],
  };
  return option
}
  return option;
};
DefaultData.GetMinuteIndexMenu = function () {
  var data = [
    { Name: 'MACD', ID: 'MACD', WindowIndex: 2 },
    { Name: 'KDJ', ID: 'KDJ', WindowIndex: 2 },
    { Name: 'DMI', ID: 'DMI', WindowIndex: 2 },
    { Name: 'ROC', ID: 'ROC', WindowIndex: 2 }
  ]
    { Name: "MACD", ID: "MACD", WindowIndex: 2 },
    { Name: "KDJ", ID: "KDJ", WindowIndex: 2 },
    { Name: "DMI", ID: "DMI", WindowIndex: 2 },
    { Name: "ROC", ID: "ROC", WindowIndex: 2 },
  ];
  return data
}
  return data;
};
DefaultData.GetKLineIndexMenu = function () {
  var data = [
    { Name: 'MA', ID: 'MA', WindowIndex: 0 },
    { Name: 'BOLL', ID: 'BOLL', WindowIndex: 0 },
    { Name: 'MACD', ID: 'MACD', WindowIndex: 1 },
    { Name: 'KDJ', ID: 'KDJ', WindowIndex: 1 },
    { Name: 'DMI', ID: 'DMI', WindowIndex: 1 },
    { Name: 'ROC', ID: 'ROC', WindowIndex: 1 }
  ]
    { Name: "MA", ID: "MA", WindowIndex: 0 },
    { Name: "BOLL", ID: "BOLL", WindowIndex: 0 },
    { Name: "MACD", ID: "MACD", WindowIndex: 1 },
    { Name: "KDJ", ID: "KDJ", WindowIndex: 1 },
    { Name: "DMI", ID: "DMI", WindowIndex: 1 },
    { Name: "ROC", ID: "ROC", WindowIndex: 1 },
  ];
  return data
}
  return data;
};
DefaultData.GetTestSymbolMenu = function () {
  // 品种代码规则 ${东方财富品种代码}_${东方财富市场}.${HQChart内部市场后缀}
  var data = [
    {
      Title: '美股',
      Icon: '',
      Title: "美股",
      Icon: "",
      Sub: [
        {
          Name: '网易',
          Code: 'NTES_105.usa'
          Name: "网易",
          Code: "NTES_105.usa",
        },
        {
          Name: '微软',
          Code: 'MSFT_105.usa'
          Name: "微软",
          Code: "MSFT_105.usa",
        },
        {
          Name: '亚马逊',
          Code: 'AMZN_105.usa'
          Name: "亚马逊",
          Code: "AMZN_105.usa",
        },
        {
          Name: '人人网',
          Code: 'RENN_106.usa'
          Name: "人人网",
          Code: "RENN_106.usa",
        },
        {
          Name: '滴滴',
          Code: 'DIDI_106.usa'
          Name: "滴滴",
          Code: "DIDI_106.usa",
        },
        {
          Name: '阿里巴巴',
          Code: 'BABA_106.usa'
          Name: "阿里巴巴",
          Code: "BABA_106.usa",
        },
        {
          Name: '知乎',
          Code: 'ZH_106.usa'
          Name: "知乎",
          Code: "ZH_106.usa",
        },
        {
          Name: '道琼斯',
          Code: 'DJIA_100.usa'
          Name: "道琼斯",
          Code: "DJIA_100.usa",
        },
        {
          Name: '标普500',
          Code: 'SPX_100.usa'
          Name: "标普500",
          Code: "SPX_100.usa",
        },
        {
          Name: '纳斯达克',
          Code: 'NDX_100.usa'
        }
      ]
          Name: "纳斯达克",
          Code: "NDX_100.usa",
        },
      ],
    },
    {
      Title: '沪深A股',
      Icon: '',
      Title: "沪深A股",
      Icon: "",
      Sub: [
        {
          Name: '浦发银行',
          Code: '600000_1.sh'
          Name: "浦发银行",
          Code: "600000_1.sh",
        },
        {
          Name: '东方财富',
          Code: '300059_0.sz'
          Name: "东方财富",
          Code: "300059_0.sz",
        },
        {
          Name: '上证指数',
          Code: '000001_1.sh'
          Name: "上证指数",
          Code: "000001_1.sh",
        },
        {
          Name: '深证成指',
          Code: '399001_0.sz'
        }
      ]
          Name: "深证成指",
          Code: "399001_0.sz",
        },
      ],
    },
    {
      Title: '北交所',
      Icon: '',
      Title: "北交所",
      Icon: "",
      Sub: [
        {
          Name: '凯添燃气',
          Code: '831010_0.bj'
          Name: "凯添燃气",
          Code: "831010_0.bj",
        },
        {
          Name: '驱动力',
          Code: '838275_0.bj'
          Name: "驱动力",
          Code: "838275_0.bj",
        },
        {
          Name: '齐鲁华信',
          Code: '830832_0.bj'
          Name: "齐鲁华信",
          Code: "830832_0.bj",
        },
        {
          Name: '苏轴股份',
          Code: '430418_0.bj'
        }
      ]
          Name: "苏轴股份",
          Code: "430418_0.bj",
        },
      ],
    },
    {
      Title: 'ETF基金',
      Icon: '',
      Title: "ETF基金",
      Icon: "",
      Sub: [
        {
          Name: '50ETF基金',
          Code: '510800_1.sh'
          Name: "50ETF基金",
          Code: "510800_1.sh",
        },
        {
          Name: '上证180ETF',
          Code: '510180_1.sh'
          Name: "上证180ETF",
          Code: "510180_1.sh",
        },
        {
          Name: '恒生ETF',
          Code: '159920_0.sz'
          Name: "恒生ETF",
          Code: "159920_0.sz",
        },
        {
          Name: '创业板50ETF',
          Code: '159949_0.sz'
        }
      ]
          Name: "创业板50ETF",
          Code: "159949_0.sz",
        },
      ],
    },
    {
      Title: '港股',
      Icon: '',
      Title: "港股",
      Icon: "",
      Sub: [
        {
          Name: '比亚迪股份',
          Code: '01211_116.hk'
          Name: "比亚迪股份",
          Code: "01211_116.hk",
        },
        {
          Name: '招商银行',
          Code: '03968_116.hk'
          Name: "招商银行",
          Code: "03968_116.hk",
        },
        {
          Name: '汇丰控股',
          Code: '00005_116.hk'
          Name: "汇丰控股",
          Code: "00005_116.hk",
        },
        {
          Name: '长和',
          Code: '00001_116.hk'
          Name: "长和",
          Code: "00001_116.hk",
        },
        {
          Name: '恒生指数',
          Code: 'HSI_100.hk'
        }
      ]
          Name: "恒生指数",
          Code: "HSI_100.hk",
        },
      ],
    },
    {
      Title: '外汇',
      Icon: '',
      Title: "外汇",
      Icon: "",
      Sub: [
        {
          Name: '美元兑加元',
          Code: 'USDCAD_119.FOREX'
          Name: "美元兑加元",
          Code: "USDCAD_119.FOREX",
        },
        {
          Name: '美元兑港币',
          Code: 'USDHKD_119.FOREX'
          Name: "美元兑港币",
          Code: "USDHKD_119.FOREX",
        },
        {
          Name: '美元兑欧元',
          Code: 'USDEUR_119.FOREX'
          Name: "美元兑欧元",
          Code: "USDEUR_119.FOREX",
        },
        {
          Name: '欧元兑英镑',
          Code: 'EURGBP_119.FOREX'
          Name: "欧元兑英镑",
          Code: "EURGBP_119.FOREX",
        },
        {
          Name: '美元指数',
          Code: 'UPI_100.ET'
        }
      ]
          Name: "美元指数",
          Code: "UPI_100.ET",
        },
      ],
    },
    {
      Title: '上海期货交易所',
      Icon: '',
      Title: "上海期货交易所",
      Icon: "",
      Sub: [
        {
          Name: '沪铜主力',
          Code: 'CUM_113.SHFE'
          Name: "沪铜主力",
          Code: "CUM_113.SHFE",
        },
        {
          Name: '沪锡主力',
          Code: 'SNM_113.SHFE'
          Name: "沪锡主力",
          Code: "SNM_113.SHFE",
        },
        {
          Name: '沪金主力',
          Code: 'AUM_113.SHFE'
          Name: "沪金主力",
          Code: "AUM_113.SHFE",
        },
        {
          Name: '沪镍主力',
          Code: 'NIM_113.SHFE'
          Name: "沪镍主力",
          Code: "NIM_113.SHFE",
        },
        {
          Name: '橡胶主力',
          Code: 'RUM_113.SHFE'
          Name: "橡胶主力",
          Code: "RUM_113.SHFE",
        },
        {
          Name: '螺纹钢主力',
          Code: 'RBM_113.SHFE'
          Name: "螺纹钢主力",
          Code: "RBM_113.SHFE",
        },
        {
          Name: '沪银主力',
          Code: 'AGM_113.SHFE'
          Name: "沪银主力",
          Code: "AGM_113.SHFE",
        },
        {
          Name: '线材主力',
          Code: 'WRM_113.SHFE'
          Name: "线材主力",
          Code: "WRM_113.SHFE",
        },
        {
          Name: '沪铅主力',
          Code: 'PBM_113.SHFE'
          Name: "沪铅主力",
          Code: "PBM_113.SHFE",
        },
        {
          Name: '沪锌主力',
          Code: 'ZNM_113.SHFE'
          Name: "沪锌主力",
          Code: "ZNM_113.SHFE",
        },
        {
          Name: '石油沥青主力',
          Code: 'BUM_113.SHFE'
          Name: "石油沥青主力",
          Code: "BUM_113.SHFE",
        },
        {
          Name: '沪铝主力',
          Code: 'ALM_113.SHFE'
          Name: "沪铝主力",
          Code: "ALM_113.SHFE",
        },
        {
          Name: '燃油主力',
          Code: 'FUM_113.SHFE'
          Name: "燃油主力",
          Code: "FUM_113.SHFE",
        },
        {
          Name: '热轧卷板主力',
          Code: 'HCM_113.SHFE'
          Name: "热轧卷板主力",
          Code: "HCM_113.SHFE",
        },
        {
          Name: '纸浆主力',
          Code: 'SPM_113.SHFE'
          Name: "纸浆主力",
          Code: "SPM_113.SHFE",
        },
        {
          Name: '不锈钢主力',
          Code: 'SSM_113.SHFE'
        }
      ]
          Name: "不锈钢主力",
          Code: "SSM_113.SHFE",
        },
      ],
    },
    {
      Title: '上海国际能源交易中心',
      Icon: '',
      Title: "上海国际能源交易中心",
      Icon: "",
      Sub: [
        {
          Name: '原油主力',
          Code: 'SCM_142.SHFE'
          Name: "原油主力",
          Code: "SCM_142.SHFE",
        },
        {
          Name: '20号胶主力',
          Code: 'NRM_142.SHFE'
          Name: "20号胶主力",
          Code: "NRM_142.SHFE",
        },
        {
          Name: '低硫燃油主力',
          Code: 'LUM_142.SHFE'
          Name: "低硫燃油主力",
          Code: "LUM_142.SHFE",
        },
        {
          Name: '国际铜主力',
          Code: 'BCM_142.SHFE'
        }
      ]
          Name: "国际铜主力",
          Code: "BCM_142.SHFE",
        },
      ],
    },
    {
      Title: '大连商品交易所',
      Icon: '',
      Title: "大连商品交易所",
      Icon: "",
      Sub: [
        {
          Name: '玉米主力',
          Code: 'CM_114.DCE'
          Name: "玉米主力",
          Code: "CM_114.DCE",
        },
        {
          Name: '豆一主力',
          Code: 'AM_114.DCE'
          Name: "豆一主力",
          Code: "AM_114.DCE",
        },
        {
          Name: '豆二主力',
          Code: 'BM_114.DCE'
          Name: "豆二主力",
          Code: "BM_114.DCE",
        },
        {
          Name: '豆粕主力',
          Code: 'MM_114.DCE'
          Name: "豆粕主力",
          Code: "MM_114.DCE",
        },
        {
          Name: '豆油主力',
          Code: 'YM_114.DCE'
          Name: "豆油主力",
          Code: "YM_114.DCE",
        },
        {
          Name: '棕榈油主力',
          Code: 'PM_114.DCE'
          Name: "棕榈油主力",
          Code: "PM_114.DCE",
        },
        {
          Name: '聚乙烯主力',
          Code: 'LM_114.DCE'
          Name: "聚乙烯主力",
          Code: "LM_114.DCE",
        },
        {
          Name: '聚氯乙烯主力',
          Code: 'VM_114.DCE'
          Name: "聚氯乙烯主力",
          Code: "VM_114.DCE",
        },
        {
          Name: '焦炭主力',
          Code: 'JM_114.DCE'
          Name: "焦炭主力",
          Code: "JM_114.DCE",
        },
        {
          Name: '焦煤主力',
          Code: 'JMM_114.DCE'
          Name: "焦煤主力",
          Code: "JMM_114.DCE",
        },
        {
          Name: '纤维板主力',
          Code: 'FBM_114.DCE'
          Name: "纤维板主力",
          Code: "FBM_114.DCE",
        },
        {
          Name: '胶合板主力',
          Code: 'BBM_114.DCE'
          Name: "胶合板主力",
          Code: "BBM_114.DCE",
        },
        {
          Name: '铁矿石主力',
          Code: 'IM_114.DCE'
          Name: "铁矿石主力",
          Code: "IM_114.DCE",
        },
        {
          Name: '鸡蛋主力',
          Code: 'JDM_114.DCE'
          Name: "鸡蛋主力",
          Code: "JDM_114.DCE",
        },
        {
          Name: '聚丙烯主力',
          Code: 'PPM_114.DCE'
          Name: "聚丙烯主力",
          Code: "PPM_114.DCE",
        },
        {
          Name: '玉米淀粉主力',
          Code: 'CSM_114.DCE'
          Name: "玉米淀粉主力",
          Code: "CSM_114.DCE",
        },
        {
          Name: '乙二醇主力',
          Code: 'EGM_114.DCE'
          Name: "乙二醇主力",
          Code: "EGM_114.DCE",
        },
        {
          Name: '粳米主力',
          Code: 'RRM_114.DCE'
          Name: "粳米主力",
          Code: "RRM_114.DCE",
        },
        {
          Name: '苯乙烯主力',
          Code: 'EBM_114.DCE'
          Name: "苯乙烯主力",
          Code: "EBM_114.DCE",
        },
        {
          Name: 'LPG主力',
          Code: 'PGM_114.DCE'
          Name: "LPG主力",
          Code: "PGM_114.DCE",
        },
        {
          Name: '生猪主力',
          Code: 'LHM_114.DCE'
        }
      ]
          Name: "生猪主力",
          Code: "LHM_114.DCE",
        },
      ],
    },
    {
      Title: '郑州商品交易所',
      Icon: '',
      Title: "郑州商品交易所",
      Icon: "",
      Sub: [
        {
          Name: '强麦主力',
          Code: 'WHM_115.CZC'
          Name: "强麦主力",
          Code: "WHM_115.CZC",
        },
        {
          Name: '普麦主力',
          Code: 'PMM_115.CZC'
          Name: "普麦主力",
          Code: "PMM_115.CZC",
        },
        {
          Name: '一号棉花主力',
          Code: 'CFM_115.CZC'
          Name: "一号棉花主力",
          Code: "CFM_115.CZC",
        },
        {
          Name: '白糖主力',
          Code: 'SRM_115.CZC'
          Name: "白糖主力",
          Code: "SRM_115.CZC",
        },
        {
          Name: 'PTA主力',
          Code: 'TAM_115.CZC'
          Name: "PTA主力",
          Code: "TAM_115.CZC",
        },
        {
          Name: '菜油主力',
          Code: 'OIM_115.CZC'
          Name: "菜油主力",
          Code: "OIM_115.CZC",
        },
        {
          Name: '早籼稻主力',
          Code: 'RIM_115.CZC'
          Name: "早籼稻主力",
          Code: "RIM_115.CZC",
        },
        {
          Name: '甲醇主力',
          Code: 'MAM_115.CZC'
          Name: "甲醇主力",
          Code: "MAM_115.CZC",
        },
        {
          Name: '玻璃主力',
          Code: 'FGM_115.CZC'
          Name: "玻璃主力",
          Code: "FGM_115.CZC",
        },
        {
          Name: '菜籽主力',
          Code: 'RSM_115.CZC'
          Name: "菜籽主力",
          Code: "RSM_115.CZC",
        },
        {
          Name: '菜粕主力',
          Code: 'RMM_115.CZC'
          Name: "菜粕主力",
          Code: "RMM_115.CZC",
        },
        {
          Name: '粳稻主力',
          Code: 'JRM_115.CZC'
          Name: "粳稻主力",
          Code: "JRM_115.CZC",
        },
        {
          Name: '晚籼稻主力',
          Code: 'LRM_115.CZC'
          Name: "晚籼稻主力",
          Code: "LRM_115.CZC",
        },
        {
          Name: '硅铁主力',
          Code: 'SFM_115.CZC'
          Name: "硅铁主力",
          Code: "SFM_115.CZC",
        },
        {
          Name: '锰硅主力',
          Code: 'SMM_115.CZC'
          Name: "锰硅主力",
          Code: "SMM_115.CZC",
        },
        {
          Name: '动力煤主力',
          Code: 'ZCM_115.CZC'
          Name: "动力煤主力",
          Code: "ZCM_115.CZC",
        },
        {
          Name: '棉纱主力',
          Code: 'CYM_115.CZC'
          Name: "棉纱主力",
          Code: "CYM_115.CZC",
        },
        {
          Name: '苹果主力',
          Code: 'APM_115.CZC'
          Name: "苹果主力",
          Code: "APM_115.CZC",
        },
        {
          Name: '红枣主力',
          Code: 'CJM_115.CZC'
          Name: "红枣主力",
          Code: "CJM_115.CZC",
        },
        {
          Name: '尿素主力',
          Code: 'URM_115.CZC'
          Name: "尿素主力",
          Code: "URM_115.CZC",
        },
        {
          Name: '纯碱主力',
          Code: 'SAM_115.CZC'
          Name: "纯碱主力",
          Code: "SAM_115.CZC",
        },
        {
          Name: '短纤主力',
          Code: 'PFM_115.CZC'
          Name: "短纤主力",
          Code: "PFM_115.CZC",
        },
        {
          Name: '花生主力',
          Code: 'PKM_115.CZC'
        }
      ]
          Name: "花生主力",
          Code: "PKM_115.CZC",
        },
      ],
    },
    {
      Title: '中国金融期货交易所',
      Icon: '',
      Title: "中国金融期货交易所",
      Icon: "",
      Sub: [
        {
          Name: '二债主力',
          Code: 'TS-130130_8.CFE'
          Name: "二债主力",
          Code: "TS-130130_8.CFE",
        },
        {
          Name: '五债主力',
          Code: 'TF-050130_8.CFE'
          Name: "五债主力",
          Code: "TF-050130_8.CFE",
        },
        {
          Name: '十债主力',
          Code: 'T-110130_8.CFE'
          Name: "十债主力",
          Code: "T-110130_8.CFE",
        },
        {
          Name: '上证主力',
          Code: 'IH-070130_8.CFE'
          Name: "上证主力",
          Code: "IH-070130_8.CFE",
        },
        {
          Name: '中证主力',
          Code: 'IC-060130_8.CFE'
          Name: "中证主力",
          Code: "IC-060130_8.CFE",
        },
        {
          Name: '沪深主力',
          Code: 'IF-040130_8.CFE'
        }
      ]
          Name: "沪深主力",
          Code: "IF-040130_8.CFE",
        },
      ],
    },
    {
      Title: '芝加哥商业交易所',
      Icon: '',
      Title: "芝加哥商业交易所",
      Icon: "",
      Sub: [
        {
          Name: '小麦当月连续',
          Code: 'ZW00Y_103.CBOT'
          Name: "小麦当月连续",
          Code: "ZW00Y_103.CBOT",
        },
        {
          Name: '迷你小麦当月连续',
          Code: 'XW00Y_103.CBOT'
          Name: "迷你小麦当月连续",
          Code: "XW00Y_103.CBOT",
        },
        {
          Name: '玉米当月连续',
          Code: 'ZC00Y_103.CBOT'
          Name: "玉米当月连续",
          Code: "ZC00Y_103.CBOT",
        },
        {
          Name: '迷你玉米当月连续',
          Code: 'XC00Y_103.CBOT'
          Name: "迷你玉米当月连续",
          Code: "XC00Y_103.CBOT",
        },
        {
          Name: '大豆当月连续',
          Code: 'ZS00Y_103.CBOT'
          Name: "大豆当月连续",
          Code: "ZS00Y_103.CBOT",
        },
        {
          Name: '迷你大豆当月连续',
          Code: 'XK00Y_103.CBOT'
          Name: "迷你大豆当月连续",
          Code: "XK00Y_103.CBOT",
        },
        {
          Name: '豆油当月连续',
          Code: 'ZL00Y_103.CBOT'
          Name: "豆油当月连续",
          Code: "ZL00Y_103.CBOT",
        },
        {
          Name: '豆粕当月连续',
          Code: 'ZM00Y_103.CBOT'
          Name: "豆粕当月连续",
          Code: "ZM00Y_103.CBOT",
        },
        {
          Name: '燕麦当月连续',
          Code: 'ZO00Y_103.CBOT'
          Name: "燕麦当月连续",
          Code: "ZO00Y_103.CBOT",
        },
        {
          Name: '稻谷当月连续',
          Code: 'ZR00Y_103.CBOT'
          Name: "稻谷当月连续",
          Code: "ZR00Y_103.CBOT",
        },
        {
          Name: '小型纳指当月连续',
          Code: 'NQ00Y_103.CBOT'
          Name: "小型纳指当月连续",
          Code: "NQ00Y_103.CBOT",
        },
        {
          Name: '小型标普当月连续',
          Code: 'ES00Y_103.CBOT'
          Name: "小型标普当月连续",
          Code: "ES00Y_103.CBOT",
        },
        {
          Name: '小型道指当月连续',
          Code: 'YM00Y_103.CBOT'
          Name: "小型道指当月连续",
          Code: "YM00Y_103.CBOT",
        },
        {
          Name: '2年美国债当月连续',
          Code: 'TU00Y_103.CBOT'
          Name: "2年美国债当月连续",
          Code: "TU00Y_103.CBOT",
        },
        {
          Name: '5年美国债当月连续',
          Code: 'FV00Y_103.CBOT'
          Name: "5年美国债当月连续",
          Code: "FV00Y_103.CBOT",
        },
        {
          Name: '10年美国债当月连续',
          Code: 'TY00Y_103.CBOT'
          Name: "10年美国债当月连续",
          Code: "TY00Y_103.CBOT",
        },
        {
          Name: '30年美国债当月连续',
          Code: 'US00Y_103.CBOT'
          Name: "30年美国债当月连续",
          Code: "US00Y_103.CBOT",
        },
        {
          Name: '超国债当月连续',
          Code: 'UL00Y_103.CBOT'
        }
      ]
          Name: "超国债当月连续",
          Code: "UL00Y_103.CBOT",
        },
      ],
    },
    {
      Title: '纽约商品交易所',
      Icon: '',
      Title: "纽约商品交易所",
      Icon: "",
      Sub: [
        {
          Name: 'NYMEX原油',
          Code: 'CL00Y_102.NYMEX'
          Name: "NYMEX原油",
          Code: "CL00Y_102.NYMEX",
        },
        {
          Name: 'NYMEX铂金',
          Code: 'PL00Y_102.NYMEX'
          Name: "NYMEX铂金",
          Code: "PL00Y_102.NYMEX",
        },
        {
          Name: '迷你原油',
          Code: 'QM00Y_102.NYMEX'
          Name: "迷你原油",
          Code: "QM00Y_102.NYMEX",
        },
        {
          Name: 'NYMEX燃油',
          Code: 'HO00Y_102.NYMEX'
          Name: "NYMEX燃油",
          Code: "HO00Y_102.NYMEX",
        },
        {
          Name: 'NYMEX汽油',
          Code: 'RB00Y_102.NYMEX'
          Name: "NYMEX汽油",
          Code: "RB00Y_102.NYMEX",
        },
        {
          Name: 'NYMEX钯金',
          Code: 'PA00Y_102.NYMEX'
          Name: "NYMEX钯金",
          Code: "PA00Y_102.NYMEX",
        },
        {
          Name: '热轧钢卷',
          Code: 'HR00Y_102.NYMEX'
          Name: "热轧钢卷",
          Code: "HR00Y_102.NYMEX",
        },
        {
          Name: '天然气',
          Code: 'NG00Y_102.NYMEX'
        }
      ]
          Name: "天然气",
          Code: "NG00Y_102.NYMEX",
        },
      ],
    },
    {
      Title: '纽约商业期货交易所',
      Icon: '',
      Title: "纽约商业期货交易所",
      Icon: "",
      Sub: [
        {
          Name: 'COMEX白银',
          Code: 'SI00Y_101.COMEX'
          Name: "COMEX白银",
          Code: "SI00Y_101.COMEX",
        },
        {
          Name: '迷你白银',
          Code: 'QI00Y_101.COMEX'
          Name: "迷你白银",
          Code: "QI00Y_101.COMEX",
        },
        {
          Name: '微型黄金',
          Code: 'MGC00Y_101.COMEX'
          Name: "微型黄金",
          Code: "MGC00Y_101.COMEX",
        },
        {
          Name: '迷你黄金',
          Code: 'QO00Y_101.COMEX'
          Name: "迷你黄金",
          Code: "QO00Y_101.COMEX",
        },
        {
          Name: 'COMEX黄金',
          Code: 'GC00Y_101.COMEX'
          Name: "COMEX黄金",
          Code: "GC00Y_101.COMEX",
        },
        {
          Name: 'COMEX铜',
          Code: 'HG00Y_101.COMEX'
        }
      ]
          Name: "COMEX铜",
          Code: "HG00Y_101.COMEX",
        },
      ],
    },
    {
      Title: '纽约期货交易所',
      Icon: '',
      Title: "纽约期货交易所",
      Icon: "",
      Sub: [
        {
          Name: '棉花当月连续',
          Code: 'CT00Y_108.NYBOT'
        }
      ]
          Name: "棉花当月连续",
          Code: "CT00Y_108.NYBOT",
        },
      ],
    },
    {
      Title: '伦敦金属交易所',
      Icon: '',
      Title: "伦敦金属交易所",
      Icon: "",
      Sub: [
        {
          Name: '综合镍03',
          Code: 'NI-LNKT_109.LME'
          Name: "综合镍03",
          Code: "NI-LNKT_109.LME",
        },
        {
          Name: '综合铜03',
          Code: 'CA-LCPT_109.LME'
          Name: "综合铜03",
          Code: "CA-LCPT_109.LME",
        },
        {
          Name: '综合铝03',
          Code: 'AH-LALT_109.LME'
          Name: "综合铝03",
          Code: "AH-LALT_109.LME",
        },
        {
          Name: '综合锡03',
          Code: 'SN-LTNT_109.LME'
          Name: "综合锡03",
          Code: "SN-LTNT_109.LME",
        },
        {
          Name: '综合锌03',
          Code: 'ZS-LZNT_109.LME'
          Name: "综合锌03",
          Code: "ZS-LZNT_109.LME",
        },
        {
          Name: '综合铅03',
          Code: 'PB-LLDT_109.LME'
        }
      ]
          Name: "综合铅03",
          Code: "PB-LLDT_109.LME",
        },
      ],
    },
    {
      Title: '东京商品交易所',
      Icon: '',
      Title: "东京商品交易所",
      Icon: "",
      Sub: [
        {
          Name: '日铂金当月连续',
          Code: 'JPL00Y_111.TOCOM'
          Name: "日铂金当月连续",
          Code: "JPL00Y_111.TOCOM",
        },
        {
          Name: '日白银当月连续',
          Code: 'JAG00Y_111.TOCOM'
          Name: "日白银当月连续",
          Code: "JAG00Y_111.TOCOM",
        },
        {
          Name: '日原油当月连续',
          Code: 'JCO00Y_111.TOCOM'
          Name: "日原油当月连续",
          Code: "JCO00Y_111.TOCOM",
        },
        {
          Name: '日煤油当月连续',
          Code: 'JKE00Y_111.TOCOM'
          Name: "日煤油当月连续",
          Code: "JKE00Y_111.TOCOM",
        },
        {
          Name: '日橡胶当月连续',
          Code: 'JRU00Y_111.TOCOM'
          Name: "日橡胶当月连续",
          Code: "JRU00Y_111.TOCOM",
        },
        {
          Name: '日黄金当月连续',
          Code: 'JAU00Y_111.TOCOM'
          Name: "日黄金当月连续",
          Code: "JAU00Y_111.TOCOM",
        },
        {
          Name: '日汽油当月连续',
          Code: 'JGL00Y_111.TOCOM'
        }
      ]
          Name: "日汽油当月连续",
          Code: "JGL00Y_111.TOCOM",
        },
      ],
    },
    {
      Title: '美国洲际交易所',
      Icon: '',
      Title: "美国洲际交易所",
      Icon: "",
      Sub: [
        {
          Name: '布伦特原油当月连续',
          Code: 'B00Y_112.IPE'
          Name: "布伦特原油当月连续",
          Code: "B00Y_112.IPE",
        },
        {
          Name: '重柴油当月连续',
          Code: 'G00Y_112.IPE'
        }
      ]
    }
  ]
          Name: "重柴油当月连续",
          Code: "G00Y_112.IPE",
        },
      ],
    },
  ];
  return data
}
  return data;
};
// k形图
DefaultData.GetKLineOption = function () {
  var option = {
    Type: '历史K线图', // 创建图形类型
    Type: "历史K线图", // 创建图形类型
    Language: 1, // 英文 'EN' 简体中文:'CN' 繁体中文:"TC"
    // 窗口指标
    Windows: [
      { Index: 'MA', Modify: true, Change: false, height: 20 },
      { Index: "MA", Modify: true, Change: false, height: 20 },
      // { Index: 'MA', Modify: true, Modify: false, Change: false, height: 20 },
      { Index: 'ATR', Modify: false, Change: false, Close: false }
      { Index: "ATR", Modify: false, Change: false, Close: false },
      // { Index: 'MACD', Modify: true, Change: true, Close: false }
    ],
    Symbol: '600015.sh',
    Symbol: "600015.sh",
    IsAutoUpdate: true, // 是自动更新数据
    AutoUpdateFrequency: 15000,
    IsApiPeriod: true,
@@ -957,7 +977,7 @@
      KLineDoubleClick: false, // 双击分钟走势图
      IsShowTooltip: true, // 是否显示K线提示信息
      DrawType: 0,
      RightSpaceCount: 2
      RightSpaceCount: 2,
    },
    CorssCursorInfo: { Left: 0, Right: 1 },
@@ -966,7 +986,7 @@
    KLineTitle: {
      IsShowName: false, // 不显示股票名称
      IsShowSettingInfo: false, // 不显示周期/复权
      isShowDateTime: true
      isShowDateTime: true,
    },
    // 边框
@@ -975,7 +995,7 @@
      Right: 1, // 右边间距
      Top: 0,
      Bottom: 15,
      AutoRight: { Blank: 10, MinWidth: 40 }
      AutoRight: { Blank: 10, MinWidth: 40 },
    },
    // 子框架设置
@@ -987,68 +1007,68 @@
        Custom: [
          {
            Type: 0,
            Position: 'right'
          }
        ]
            Position: "right",
          },
        ],
      },
      { SplitCount: 3, IsShowLeftText: false },
      { SplitCount: 3, IsShowLeftText: false }
      { SplitCount: 3, IsShowLeftText: false },
    ],
    // 扩展图形
    ExtendChart: [
      // { Name:'KLineTooltip' },  //手机端tooltip
    ]
  }
    ],
  };
  return option
}
  return option;
};
DefaultData.GetMinuteDayMenu = function () {
  var data = [
    { Name: '1D', ID: 1 },
    { Name: '2D', ID: 2 },
    { Name: '3D', ID: 3 },
    { Name: '4D', ID: 4 },
    { Name: '5D', ID: 5 }
  ]
    { Name: "1D", ID: 1 },
    { Name: "2D", ID: 2 },
    { Name: "3D", ID: 3 },
    { Name: "4D", ID: 4 },
    { Name: "5D", ID: 5 },
  ];
  return data
}
  return data;
};
DefaultData.GetKLinePeriodMenu = function () {
  var data = [
    // { Name: i18n.t('hj86'), ID: 3 },分时额外处理
    { Name: i18n.t('hj86'), ID: 4 },
    { Name: i18n.t('hj87'), ID: 0 },
    { Name: i18n.t('hj88'), ID: 1 },
    { Name: i18n.t('hj89'), ID: 2 },
    { Name: i18n.t('hj90'), ID: 4 },
    { Name: i18n.t('hj91'), ID: 5 },
    { Name: i18n.t('hj92'), ID: 7 }
  ]
    { Name: i18n.t("hj86"), ID: 4 },
    { Name: i18n.t("hj87"), ID: 0 },
    { Name: i18n.t("hj88"), ID: 1 },
    { Name: i18n.t("hj89"), ID: 2 },
    { Name: i18n.t("hj90"), ID: 4 },
    { Name: i18n.t("hj91"), ID: 5 },
    { Name: i18n.t("hj92"), ID: 7 },
  ];
  return data
}
  return data;
};
DefaultData.GetKLineRightMenu = function () {
  var data = [
    { Name: i18n.t('hj93'), ID: 0 },
    { Name: i18n.t('hj94'), ID: 1 },
    { Name: i18n.t('hj95'), ID: 2 }
  ]
    { Name: i18n.t("hj93"), ID: 0 },
    { Name: i18n.t("hj94"), ID: 1 },
    { Name: i18n.t("hj95"), ID: 2 },
  ];
  return data
}
  return data;
};
export default {
  props: {
    hktype: {
      type: String,
      default: ''
    }
      default: "",
    },
  },
  data () {
  data() {
    return {
      MinuteDayMenu: DefaultData.GetMinuteDayMenu(),
      MinuteDayIndex: 0,
@@ -1063,250 +1083,251 @@
      // Symbol:'000001_0.sh',
      // 上海 1.sh  深圳0.sz  北京0.bj
      Symbol: '', // HQChart内部编码美股加后缀.usa AAPL.usa
      Symbol: "", // HQChart内部编码美股加后缀.usa AAPL.usa
      Chart: null, // 图形控件  分时图
      KLineChart: null, // 图形控件  K线图
      NavMenuAry: DefaultData.GetTestSymbolMenu(),
      VolChartHeight: 10,
      chartType: 'kline',
      isShow: false
    }
      chartType: "kline",
      isShow: false,
    };
  },
  created () {
    const { query } = this.$route
    if (query.if_zhishu === '0') {
      this.Symbol = `${query.code}_${query.sok}.${query.type}`
    } else if ((query.code.indexOf('hk') > -1) && query.if_zhishu !== 0) {
      this.Symbol = `${query.if_zhishu}_${query.sok}.hk`
  created() {
    const { query } = this.$route;
    if (query.if_zhishu === "0") {
      this.Symbol = `${query.code}_${query.sok}.${query.type}`;
    } else if (query.code.indexOf("hk") > -1 && query.if_zhishu !== 0) {
      this.Symbol = `${query.if_zhishu}_${query.sok}.hk`;
    } else {
      this.Symbol = `${query.if_zhishu}_${query.sok}.${query.type}`
      this.Symbol = `${query.if_zhishu}_${query.sok}.${query.type}`;
    }
    // this.Symbol = 'BRK_A106.usa'
    console.log('------?????', this.Symbol)
    console.log("------?????", this.Symbol);
    // 写入localStorage
    localStorage.setItem('hqchart_symbol', this.Symbol)
    localStorage.setItem("hqchart_symbol", this.Symbol);
  },
  mounted () {
    this.offHeight = this.$refs['rightContent'].offsetHeight
    this.OnSize()
    this.SetChartStyle()
  mounted() {
    this.offHeight = this.$refs["rightContent"].offsetHeight;
    this.OnSize();
    this.SetChartStyle();
    this.$nextTick(() => {
      this.CreateMinuteChart()
      this.CreateKLineChart()
    })
    let that = this
    window.onresize = _.debounce(this.OnSize, 200)
      this.CreateMinuteChart();
      this.CreateKLineChart();
    });
    let that = this;
    window.onresize = _.debounce(this.OnSize, 200);
    // 自适应K线图
    var elementResizeDetectorMaker = require('element-resize-detector')
    var elementResizeDetectorMaker = require("element-resize-detector");
    // 创建实例,无参数
    var erd = elementResizeDetectorMaker() // 使用默认选项(将使用基于对象的方法)。
    var erd = elementResizeDetectorMaker(); // 使用默认选项(将使用基于对象的方法)。
    // 创建实例带参数
    // 使用基于超快速滚动的方法。
    // 这是推荐的策略。
    elementResizeDetectorMaker({
    // var erdUltraFast = elementResizeDetectorMaker({
      strategy: 'scroll',
      // var erdUltraFast = elementResizeDetectorMaker({
      strategy: "scroll",
      callOnAdd: true, // callOnAdd选项,用于确定在添加侦听器时是否应调用它们。默认为true。
      // 如果为true,则确保在添加侦听器后将对其进行调用。如果为false,则在添加侦听器时将不保证其
      // 被调用(不会阻止其被调用)
      debug: true
    })
      debug: true,
    });
    // 监听class为staticNextMain的元素 大小变化
    var self = this
    var self = this;
    // 侦听元素的调整大小事件,并使用元素作为调整大小事件的参数来调用侦听器函数。传递给函数的选项将
    // 覆盖实例选项
    erd.listenTo(this.$refs['rightContent'], function (
      element
    ) {
      var width = element.offsetWidth
      var height = element.offsetHeight
      self.tableHeight = height - 100 // 将监听到的宽高进行赋值
      self.tableWidth = width - 20
      that.offHeight = height
      that.OnSize()
    })
    erd.listenTo(this.$refs["rightContent"], function (element) {
      var width = element.offsetWidth;
      var height = element.offsetHeight;
      self.tableHeight = height - 100; // 将监听到的宽高进行赋值
      self.tableWidth = width - 20;
      that.offHeight = height;
      that.OnSize();
    });
  },
  methods: {
    OnSize () {
      var width = this.$refs.right.clientWidth
    OnSize() {
      var width = this.$refs.right.clientWidth;
      // var rightTab = this.$refs.rightTab
      // var periodWrap = this.$refs.minute_periodWrap
      // var indexWrap = this.$refs.minute_indexWrap
      // var statementWrap = this.$refs.minute_statementWrap
      // // var chartHeight = window.innerHeight - rightTab.offsetHeight - periodWrap.offsetHeight - indexWrap.offsetHeight;
      var chartHeight = this.offHeight
      var chartHeight = this.offHeight;
      var kline = this.$refs.kline
      kline.style.width = width + 'px'
      kline.style.height = chartHeight + 'px'
      var kline2 = this.$refs.kline2
      kline2.style.width = width + 'px'
      kline2.style.height = chartHeight + 'px'
      var kline = this.$refs.kline;
      kline.style.width = width + "px";
      kline.style.height = chartHeight + "px";
      var kline2 = this.$refs.kline2;
      kline2.style.width = width + "px";
      kline2.style.height = chartHeight + "px";
      if (this.Chart) this.Chart.OnSize()
      if (this.KLineChart) this.KLineChart.OnSize()
      if (this.Chart) this.Chart.OnSize();
      if (this.KLineChart) this.KLineChart.OnSize();
    },
    changeRightContent (type) {
      this.KLinePeriodIndex = 0
      this.chartType = type
    changeRightContent(type) {
      this.KLinePeriodIndex = 0;
      this.chartType = type;
      this.$nextTick(() => {
        this.OnSize()
      })
        this.OnSize();
      });
    },
    SetChartStyle () {
      EastMoney.HQData.SetMinuteChartCoordinate()
    SetChartStyle() {
      EastMoney.HQData.SetMinuteChartCoordinate();
      var blackStyle = HQChart.Chart.HQChartStyle.GetStyleConfig(
        HQChart.Chart.STYLE_TYPE_ID.WHITE_ID
      ) // 读取黑色风格配置
      HQChart.Chart.JSChart.SetStyle(blackStyle)
      ); // 读取黑色风格配置
      // blackStyle.UpBarColor = "rgba(0,0,0,1)";
      HQChart.Chart.JSChart.SetStyle(blackStyle);
    },
    CreateMinuteChart () {
      if (this.Chart) return
    CreateMinuteChart() {
      if (this.Chart) return;
      var option = DefaultData.GetMinuteOption()
      option.Symbol = this.Symbol
      var option = DefaultData.GetMinuteOption();
      option.Symbol = this.Symbol;
      option.NetworkFilter = (data, callback) => {
        this.NetworkFilter(data, callback)
      } // 网络请求回调函数
        this.NetworkFilter(data, callback);
      }; // 网络请求回调函数
      var chart = HQChart.Chart.JSChart.Init(this.$refs.kline)
      chart.SetOption(option)
      this.Chart = chart
      var chart = HQChart.Chart.JSChart.Init(this.$refs.kline);
      chart.SetOption(option);
      this.Chart = chart;
    },
    CreateKLineChart () {
      if (this.KLineChart) return
    CreateKLineChart() {
      if (this.KLineChart) return;
      var option = DefaultData.GetKLineOption()
      option.Symbol = this.Symbol
      var option = DefaultData.GetKLineOption();
      option.Symbol = this.Symbol;
      option.NetworkFilter = (data, callback) => {
        this.NetworkFilter(data, callback)
      } // 网络请求回调函数
      var chart = HQChart.Chart.JSChart.Init(this.$refs.kline2)
      HQChart.Chart.JSChart.GetResource().FrameLogo.Text = null
      chart.SetOption(option)
      this.KLineChart = chart
        this.NetworkFilter(data, callback);
      }; // 网络请求回调函数
      var chart = HQChart.Chart.JSChart.Init(this.$refs.kline2);
      HQChart.Chart.JSChart.GetResource().FrameLogo.Text = null;
      chart.SetOption(option);
      this.KLineChart = chart;
    },
    ChangeSymbol (
    ChangeSymbol(
      symbol // 切换股票
    ) {
      var symbolUpper = symbol.toUpperCase()
      var isShowVolChart = EastMoney.HQData.IsShowVolChart(symbolUpper)
      var frame = this.Chart.JSChartContainer.Frame.SubFrame[1]
      var symbolUpper = symbol.toUpperCase();
      var isShowVolChart = EastMoney.HQData.IsShowVolChart(symbolUpper);
      var frame = this.Chart.JSChartContainer.Frame.SubFrame[1];
      if (isShowVolChart) {
        if (frame.Height <= 0) frame.Height = this.VolChartHeight
        if (frame.Height <= 0) frame.Height = this.VolChartHeight;
      } else {
        if (frame.Height > 0) this.VolChartHeight = frame.Height
        frame.Height = 0
        if (frame.Height > 0) this.VolChartHeight = frame.Height;
        frame.Height = 0;
      }
      var period = this.KLineChart.JSChartContainer.Period
      var isShowRightMenu = EastMoney.HQData.IsEnableRight(period, symbol) // 是否显示复权菜单
      this.IsShowRightMenu = isShowRightMenu
      var period = this.KLineChart.JSChartContainer.Period;
      var isShowRightMenu = EastMoney.HQData.IsEnableRight(period, symbol); // 是否显示复权菜单
      this.IsShowRightMenu = isShowRightMenu;
      this.Symbol = symbol
      this.Chart.ChangeSymbol(this.Symbol)
      this.KLineChart.ChangeSymbol(this.Symbol)
      this.Symbol = symbol;
      this.Chart.ChangeSymbol(this.Symbol);
      this.KLineChart.ChangeSymbol(this.Symbol);
    },
    OnClickMinuteDayMenu (
    OnClickMinuteDayMenu(
      index,
      item // 分时图天数
    ) {
      this.MinuteDayIndex = index
      this.Chart.ChangeDayCount(item.ID)
      this.MinuteDayIndex = index;
      this.Chart.ChangeDayCount(item.ID);
    },
    OnClickKLinePeriodMenu (
    OnClickKLinePeriodMenu(
      index,
      item,
      type // K线周期
    ) {
      // if (index !== 0) {  //分时额外处理才注释的
        this.chartType = type
        this.KLinePeriodIndex = index
        this.KLineChart.ChangePeriod(item.ID)
      this.chartType = type;
      this.KLinePeriodIndex = index;
      this.KLineChart.ChangePeriod(item.ID);
      // }
    },
    OnClickKLineRightMenu (
    OnClickKLineRightMenu(
      index,
      item // K线复权
    ) {
      this.KLineRightIndex = index
      this.KLineChart.ChangeRight(item.ID)
      this.KLineRightIndex = index;
      this.KLineChart.ChangeRight(item.ID);
    },
    ChangeMinuteIndex (
    ChangeMinuteIndex(
      item // 切换分时图指标
    ) {
      if (this.Chart) this.Chart.ChangeIndex(item.WindowIndex, item.ID)
      if (this.Chart) this.Chart.ChangeIndex(item.WindowIndex, item.ID);
    },
    ChangeKLineIndex (
    ChangeKLineIndex(
      item // 切换K线图指标
    ) {
      if (this.KLineChart) { this.KLineChart.ChangeIndex(item.WindowIndex, item.ID) }
    },
    NetworkFilter (
      data,
      callback // 第3方数据替换接口
    ) {
      EastMoney.HQData.Log('[HQChartDemo::NetworkFilter] data', data)
      switch (data.Name) {
        // 分时图数据对接
        case 'MinuteChartContainer::RequestMinuteData':
          EastMoney.HQData.NetworkFilter(data, callback)
          break
        case 'MinuteChartContainer::RequestHistoryMinuteData':
          EastMoney.HQData.NetworkFilter(data, callback)
          break
        case 'KLineChartContainer::RequestHistoryData': // 日线全量数据下载
          EastMoney.HQData.NetworkFilter(data, callback)
          break
        case 'KLineChartContainer::RequestRealtimeData': // 日线实时数据更新
          EastMoney.HQData.NetworkFilter(data, callback)
          break
        case 'KLineChartContainer::RequestFlowCapitalData': // 流通股本
          EastMoney.HQData.NetworkFilter(data, callback)
          break
        case 'KLineChartContainer::ReqeustHistoryMinuteData': // 分钟全量数据下载
          EastMoney.HQData.NetworkFilter(data, callback)
          break
        case 'KLineChartContainer::RequestMinuteRealtimeData': // 分钟增量数据更新
          EastMoney.HQData.NetworkFilter(data, callback)
          break
      if (this.KLineChart) {
        this.KLineChart.ChangeIndex(item.WindowIndex, item.ID);
      }
    },
    handleSelect (key, keyPath) {
      console.log(key, keyPath)
      this.ChangeSymbol(keyPath[1])
    NetworkFilter(
      data,
      callback // 第3方数据替换接口
    ) {
      EastMoney.HQData.Log("[HQChartDemo::NetworkFilter] data", data);
      switch (data.Name) {
        // 分时图数据对接
        case "MinuteChartContainer::RequestMinuteData":
          EastMoney.HQData.NetworkFilter(data, callback);
          break;
        case "MinuteChartContainer::RequestHistoryMinuteData":
          EastMoney.HQData.NetworkFilter(data, callback);
          break;
        case "KLineChartContainer::RequestHistoryData": // 日线全量数据下载
          EastMoney.HQData.NetworkFilter(data, callback);
          break;
        case "KLineChartContainer::RequestRealtimeData": // 日线实时数据更新
          EastMoney.HQData.NetworkFilter(data, callback);
          break;
        case "KLineChartContainer::RequestFlowCapitalData": // 流通股本
          EastMoney.HQData.NetworkFilter(data, callback);
          break;
        case "KLineChartContainer::ReqeustHistoryMinuteData": // 分钟全量数据下载
          EastMoney.HQData.NetworkFilter(data, callback);
          break;
        case "KLineChartContainer::RequestMinuteRealtimeData": // 分钟增量数据更新
          EastMoney.HQData.NetworkFilter(data, callback);
          break;
      }
    },
    handleOpen (key, keyPath) {
      console.log(key, keyPath)
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
      this.ChangeSymbol(keyPath[1]);
    },
    handleClose (key, keyPath) {
      console.log(key, keyPath)
    }
  }
}
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    },
  },
};
</script>
<style lang="less">
@animation-duration: 0.3s;
@@ -1499,11 +1520,11 @@
    width: 0.5rem;
    height: 0.5rem;
  }
        .active {
        color: rgb(2, 99, 226);
        font-weight: 800;
        background: rgb(245, 245, 245);
      }
  .active {
    color: rgb(2, 99, 226);
    font-weight: 800;
    background: rgb(245, 245, 245);
  }
}
canvas {
  height: 100% !important;
src/page/list/list.vue
@@ -1,7 +1,10 @@
<template>
  <div :class="`wrapper ${$state.theme === 'red' ? 'red-theme' : 'black-theme'}`" style="background-color: #21212b;">
  <div
    :class="`wrapper ${$state.theme === 'red' ? 'red-theme' : 'black-theme'}`"
    style="background-color: #21212b"
  >
    <div>
      <div @click="list_type=!list_type">1</div>
      <div @click="list_type = !list_type">1</div>
    </div>
    <!-- <mt-header v-if="selected == '2'" fixed  title="">
        <router-link to="/" slot="left">
@@ -9,7 +12,7 @@
        <mt-button slot="right" icon="search" @click="toSearch"></mt-button>
    </mt-header> -->
   <!-- <mt-navbar class="top-navbar" v-model="selected" :style="selected != '2'?'':''" :fixed="selected != '2'?true:false">
    <!-- <mt-navbar class="top-navbar" v-model="selected" :style="selected != '2'?'':''" :fixed="selected != '2'?true:false">
      <mt-tab-item v-if="this.$store.state.settingForm.indexDisplay" id="1">指数</mt-tab-item>
      <mt-tab-item v-if="this.$store.state.settingForm.stockDisplay" id="2">沪深</mt-tab-item>
@@ -31,13 +34,13 @@
      </mt-tab-container-item>
    </mt-tab-container> -->
    <!-- <foot></foot> -->
    <div style="background-color: #21212b;">
    <div style="background-color: #21212b">
      <div class="list-title">
        <div class="list-left">代码</div>
        <div class="list-conter">最in假</div>
        <div class="list-right">涨跌幅</div>
      </div>
      <div class="list-content" v-for="item in 20">
      <div class="list-content" v-for="item in 20" :key="item">
        <div class="list-left">
          <div class="taini">
            <span class="circular">●</span>
@@ -58,19 +61,17 @@
</template>
<script>
// import '@/assets/style/common.less'
import List0 from './list-all'
import List1 from './list-index'
import List2 from './list-stock'
import List3 from './list-kechuang'
import List4 from './list-futures'
import * as api from '@/axios/api'
import { Toast } from 'mint-ui'
import List0 from "./list-all";
import List1 from "./list-index";
import List2 from "./list-stock";
import List3 from "./list-kechuang";
import List4 from "./list-futures";
import * as api from "@/axios/api";
import { Toast } from "mint-ui";
export default {
  components: {
    List0,
    List1,
    List2,
@@ -78,283 +79,287 @@
    List4,
  },
  props: {},
  data () {
  data() {
    return {
      selected: '', // 选中
      selected: "", // 选中
      count: 1000,
      loading: false,
      list_type:false,
    }
      list_type: false,
    };
  },
  watch: {},
  computed: {},
  created () {
    this.getProductSetting()
  created() {
    this.getProductSetting();
    if (!this.$store.state.userInfo.phone) {
      this.getUserInfo()
      this.getUserInfo();
    }
  },
  mounted () {
  mounted() {
    if (this.$route.query.index) {
      this.selected = this.$route.query.index
      this.selected = this.$route.query.index;
    }
  },
  methods: {
    toSearch () {
      this.$router.push('/searchlist')
    toSearch() {
      this.$router.push("/searchlist");
    },
    changeNavOptions (opts) {
      this.selected = opts
    changeNavOptions(opts) {
      this.selected = opts;
    },
    async getUserInfo () {
    async getUserInfo() {
      // 获取用户信息
      let data = await api.getUserInfo()
      let data = await api.getUserInfo();
      if (data.status === 0) {
        this.$store.state.userInfo = data.data
        this.$store.state.userInfo = data.data;
      } else {
        Toast(data.msg)
        Toast(data.msg);
      }
    },
    async getProductSetting () {
      let data = await api.getProductSetting()
    async getProductSetting() {
      let data = await api.getProductSetting();
      if (data.status === 0) {
        this.$store.state.settingForm = data.data
        this.$store.state.settingForm = data.data;
        // 1 指数 2 沪深 3科创 4 期货
        if (this.$store.state.settingForm.indexDisplay) {
          this.selected = '1'
          this.selected = "1";
        } else if (this.$store.state.settingForm.stockDisplay) {
          this.selected = '2'
          this.selected = "2";
        } else if (this.$store.state.settingForm.kcStockDisplay) {
          this.selected = '3'
          this.selected = "3";
        } else {
          this.selected = '4'
          this.selected = "4";
        }
      } else {
        this.$message.error(data.msg)
        this.$message.error(data.msg);
      }
    },
  },
};
</script>
<style lang="less" scoped>
.is-selected .mint-tab-item-label:hover {
  text-decoration: none;
}
.wrapper /deep/ .mint-tab-item-label {
  font-size: 0.264rem;
}
.mint-navbar .mint-tab-item.is-selected {
  border-bottom: 2px solid #d50000;
  text-decoration: none;
}
.nav-wrapper {
  padding-top: 0.8rem;
}
.mint-tab-container-item {
  // padding-top: 1.2rem;
  .mint-button--default {
    padding: 0 0.2rem;
    font-size: 0.24rem;
    height: 0.5rem;
    margin: 0.2rem 0.2rem 0;
    color: #607d8b;
    box-shadow: 0 0 1px #3b71b9;
    background: none;
  }
}
.mint-navbar {
  box-shadow: 0px 0px 4px rgba(6, 0, 1, 0.2);
  .mint-tab-item {
    // background: #21252a;
    padding: 0.2rem 0;
    &.is-selected {
      border: none;
      margin-bottom: 0;
    }
    .mint-tab-item-label {
      font-size: 0.22rem;
    }
    .iconfont {
      display: block;
      font-size: 0.46rem;
      margin-bottom: 0.12rem;
    }
  }
}
.top-navbar {
  .mint-tab-item {
    padding: 0.2rem 0;
    width: 1.42rem;
    height: 0.44rem;
    margin: 0.3rem 0.1rem 0 0.1rem;
    display: flex;
    justify-content: center;
    align-items: center;
    border-radius: 0.01rem;
  }
}
.wrapper {
  width: 100%;
  height: 100%;
  position: relative;
  box-sizing: border-box;
  padding-top: 1rem;
  .top-navbar {
    position: absolute;
    top: 0;
    left: 50%;
    width: 70%;
    margin-left: -35%;
    background: none;
    box-shadow: none;
    /deep/.mint-tab-item {
      .mint-tab-item-label {
        font-size: 0.28rem;
        font-family: MicrosoftYaHeiLight;
        font-weight: 400;
        color: rgba(255, 255, 255, 1);
      }
      &.is-selected {
        position: relative;
        background: linear-gradient(
          0deg,
          rgba(27, 166, 208, 1),
          rgba(2, 116, 150, 1)
        );
        &::after {
          position: absolute;
          content: "";
          display: block;
          width: 0.67rem;
          height: 0.06rem;
          background-color: #138eb4;
          bottom: 0;
          left: 50%;
          margin-left: -0.335rem;
          display: none;
        }
      }
    }
  }
  .order-list {
    width: 100%;
    height: 100%;
    /deep/.mint-tab-container-wrap {
      width: 100%;
      height: 100%;
    }
  }
}
.top-search {
  padding: 0.2rem;
  .top-search-btn {
    background-color: #16171d;
    padding: 0.1rem 0.2rem;
    width: 1.6rem;
    text-align: center;
    border-radius: 0.2rem;
    color: #fff;
    border: 1px solid rgb(96, 125, 139);
    margin: 0 auto;
  }
}
.red-theme {
  .top-search-btn {
    border-color: #000;
    color: #000;
    background-color: #fff;
  }
  .top-navbar {
    /deep/.mint-tab-item {
      background-color: #cbcbcb;
      .mint-tab-item-label {
        color: #000;
      }
      &.is-selected {
        background: #bb1715;
        .mint-tab-item-label {
          color: #fff;
        }
      }
    }
  }
}
</script>
<style lang="less" scoped>
  .is-selected .mint-tab-item-label:hover {
    text-decoration: none;
  }
.list-title {
  display: flex;
  width: calc(100vw - 32px);
  margin-left: 0;
  margin-right: 0;
  margin: 0 auto;
  color: #8b8896;
  border-bottom: #000 0.01rem solid;
  align-items: center;
  padding-top: 0.28rem;
  padding-bottom: 0.28rem;
}
.taini {
  color: #f1f0f5;
  font-size: 0.38rem;
}
.circular {
  color: rgb(169, 169, 169);
  font-size: 0.4rem;
}
.list-left {
  width: 39.44986%;
}
.down {
  font-size: 0.38rem;
  color: #ef534f;
}
.list-code {
  padding-left: 0.35rem;
  margin-top: 0.2rem;
  transition: all 0.2s;
}
.list-content {
  display: flex;
  width: calc(100vw - 32px);
  margin-left: 0;
  margin-right: 0;
  margin: 0 auto;
  color: #8b8896;
  border-bottom: #000 0.01rem solid;
  align-items: center;
  padding-top: 0.28rem;
  padding-bottom: 0.28rem;
  transition: all 0.2s;
  background-color: #21212b;
}
  .wrapper /deep/ .mint-tab-item-label {
    font-size: 0.264rem;
  }
  .mint-navbar .mint-tab-item.is-selected {
    border-bottom: 2px solid #d50000;
    text-decoration: none;
  }
  .nav-wrapper {
    padding-top: 0.8rem;
  }
  .mint-tab-container-item {
    // padding-top: 1.2rem;
    .mint-button--default {
      padding: 0 0.2rem;
      font-size: 0.24rem;
      height: 0.5rem;
      margin: 0.2rem 0.2rem 0;
      color: #607d8b;
      box-shadow: 0 0 1px #3b71b9;
      background: none;
    }
  }
  .mint-navbar {
    box-shadow: 0px 0px 4px rgba(6, 0, 1, 0.2);
    .mint-tab-item {
      // background: #21252a;
      padding: 0.2rem 0;
      &.is-selected {
        border: none;
        margin-bottom: 0;
      }
      .mint-tab-item-label {
        font-size: 0.22rem;
      }
      .iconfont {
        display: block;
        font-size: 0.46rem;
        margin-bottom: 0.12rem;
      }
    }
  }
  .top-navbar {
    .mint-tab-item {
      padding: 0.2rem 0;
      width: 1.42rem;
      height: 0.44rem;
      margin: 0.3rem 0.1rem 0 0.1rem;
      display: flex;
      justify-content: center;
      align-items: center;
      border-radius: 0.01rem;
    }
  }
  .wrapper{
    width: 100%;
    height: 100%;
    position: relative;
    box-sizing: border-box;
    padding-top: 1rem;
    .top-navbar{
      position: absolute;
      top: 0;
      left: 50%;
      width: 70%;
      margin-left: -35%;
      background: none;
      box-shadow: none;
      /deep/.mint-tab-item{
        .mint-tab-item-label{
          font-size:0.28rem;
          font-family:MicrosoftYaHeiLight;
          font-weight:400;
          color:rgba(255,255,255,1);
        }
        &.is-selected{
          position: relative;
          background:linear-gradient(0deg,rgba(27,166,208,1),rgba(2,116,150,1));
          &::after{
            position: absolute;
            content: '';
            display: block;
            width: 0.67rem;
            height: 0.06rem;
            background-color: #138EB4;
            bottom: 0;
            left: 50%;
            margin-left: -0.335rem;
            display: none;
          }
        }
      }
    }
    .order-list{
      width: 100%;
      height: 100%;
      /deep/.mint-tab-container-wrap{
        width: 100%;
        height: 100%;
      }
    }
  }
  .top-search{
    padding: .2rem;
    .top-search-btn {
      background-color: #16171d;
      padding: .1rem .2rem;
      width: 1.60rem;
      text-align: center;
      border-radius: .2rem;
      color: #fff;
      border: 1px solid rgb(96, 125, 139);
      margin: 0 auto;
    }
  }
  .red-theme{
     .top-search-btn {
       border-color: #000;
       color: #000;
       background-color: #fff;
     }
    .top-navbar{
      /deep/.mint-tab-item{
        background-color: #CBCBCB;
        .mint-tab-item-label{
          color: #000;
        }
        &.is-selected{
          background: #BB1715;
          .mint-tab-item-label{
            color: #fff;
          }
        }
      }
    }
  }
  .list-title{
    display: flex;
    width: calc(100vw - 32px);
    margin-left: 0;
    margin-right: 0;
    margin: 0 auto;
    color: #8b8896;
    border-bottom: #000 0.01rem solid;
    align-items: center;
    padding-top: 0.28rem;
    padding-bottom: 0.28rem;
  }
  .taini{
    color: #f1f0f5;
    font-size: 0.38rem;
  }
  .circular{
    color: rgb(169,169,169);
    font-size: 0.4rem;
  }
  .list-left{
    width: 39.44986%;
  }
  .down{
    font-size: 0.38rem;
        color: #ef534f;
  }
  .list-code{
    padding-left: 0.35rem;
    margin-top: 0.2rem;
    transition: all 0.2s;
  }
  .list-content{
    display: flex;
    width: calc(100vw - 32px);
    margin-left: 0;
    margin-right: 0;
    margin: 0 auto;
    color: #8b8896;
    border-bottom: #000 0.01rem solid;
    align-items: center;
    padding-top: 0.28rem;
    padding-bottom: 0.28rem;
    transition: all 0.2s;
    background-color: #21212b;
  }
  .list-conter{
    width: 21.90556%;
    text-align: right;
  }
  .list-right{
    width:  38.64456%;
    text-align: right;
  }
  .chgTextRed{
    float: right;
    font-size: 0.38rem;
    width: 50%;
    border-radius: 2px;
    color: #fff!important;
    text-align: center;
    height: 0.65rem;
    line-height: 0.65rem;
    background-color: #ef534f;
  }
  .minCaption{
    color: #8b8896;
    font-size: 0.16rem;
    transition: all 0.2s;
  }
.list-conter {
  width: 21.90556%;
  text-align: right;
}
.list-right {
  width: 38.64456%;
  text-align: right;
}
.chgTextRed {
  float: right;
  font-size: 0.38rem;
  width: 50%;
  border-radius: 2px;
  color: #fff !important;
  text-align: center;
  height: 0.65rem;
  line-height: 0.65rem;
  background-color: #ef534f;
}
.minCaption {
  color: #8b8896;
  font-size: 0.16rem;
  transition: all 0.2s;
}
</style>
src/page/list/tradingList/data.list.vue
@@ -109,6 +109,10 @@
      type: Array,
      default: [],
    },
    zxtabsList: {
      type: Array,
      default: [],
    },
  },
  watch: {
    active(e) {
@@ -180,14 +184,21 @@
        },
      });
    },
    // 获取列表
    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,
@@ -197,10 +208,19 @@
        stockType: stockType,
        orderBy: "",
      };
      let data = await api.getStockByType(opt);
      // console.log();
      // api.positionzx;
      let data;
      if (a !== "") {
        data = await api.getStockByType(opt);
      } else {
        // 自选
        data = await api.positionzx(opt);
      }
      this.loadings = false;
      if (data.status === 0) {
        console.log(data.data.list.length < 15);
        if (data.data.list.length < 15) {
          this.finished = true;
        }
@@ -214,12 +234,9 @@
      }
    }, 500),
    onLoads() {
      console.log(333333);
      // if (!this.loading) {
      this.pageNumVal++;
      this.loadings = true;
      this.getStock();
      // }
    },
    optionszx() {},
  },
src/page/list/tradingList/tabs.vue
@@ -34,6 +34,7 @@
      :sousuo="sousuo"
      :zxactive="zxactive"
      :tabsList="tabsList"
      :zxtabsList="zxtabsList"
    />
  </div>
</template>
@@ -46,7 +47,7 @@
  data() {
    return {
      tabsList: [
        // { title: "自选", key: "" },
        { title: this.$t("hj61"), key: "" },
        { title: this.$t("数字货币"), key: "1", name: "SZHB" },
        { title: this.$t("马股"), key: "2", name: "MAS" },
        { title: this.$t("美股"), key: "3", name: "US" },
src/page/newUser/setting.vue
@@ -37,18 +37,6 @@
      </div>
    </div>
    <!--         <div class="jy" @click="handleGoToTransfer()">
            <div class="left_gn">
                <div class="l_icon">
                </div>
                <div class="r_title">
                    <span>{{ $t('hj145') }}</span>
                </div>
            </div>
            <div class="right_gos">
                <img src="../../assets/img/youjiantou.png" alt />
            </div>
        </div> -->
    <div class="jy" @click="handleGoToAuthentication()">
      <div class="left_gn">
        <div class="l_icon">
@@ -65,32 +53,7 @@
        <img v-else src="../../assets/img/youjiantou.png" alt />
      </div>
    </div>
    <!--
        <div class="jy" @click="subclick()">
            <div class="left_gn">
                <div class="l_icon">
                </div>
                <div class="r_title">
                    <span>{{ $t('subdk') }}</span>
                </div>
            </div>
            <div class="right_gos">
                <img src="../../assets/img/youjiantou.png" alt />
            </div>
        </div>
        <div class="jy" @click="yebclick()">
            <div class="left_gn">
                <div class="l_icon">
                </div>
                <div class="r_title">
                    <span>{{ $t('yeb') }}</span>
                </div>
            </div>
            <div class="right_gos">
                <img src="../../assets/img/youjiantou.png" alt />
            </div>
        </div> -->
    <div class="jy" @click="clicklang()">
      <div class="left_gn">
        <div class="l_icon"></div>
@@ -165,6 +128,7 @@
import { Toast, MessageBox } from "mint-ui";
import { isNull, pwdReg } from "@/utils/utils";
import { mapMutations } from "vuex";
import { Notify } from "vant";
export default {
  name: "newUser",
@@ -392,8 +356,10 @@
          let data = await api.changePassword(opts);
          if (data.status === 0) {
            this.changeLoginPsdBox = false;
            Toast(data.msg);
            this.pswDialog = false;
            this.settingDialog = false;
            Notify({ type: "success", message: this.$t("密码修改成功") });
          } else {
            Toast(data.msg);
            this.settingDialog = false;
src/page/user/cashlist.vue
@@ -1,18 +1,5 @@
<template>
  <div class="wrapper">
    <!-- <div class="header">
      <mt-header title="提现记录">
        <router-link to="/user" slot="left">
          <mt-button icon="back">我的</mt-button>
        </router-link>
      </mt-header>
    </div> -->
    <div class="text-center">
      <div class="btn-group">
        <a href="#/cash" class="with-draw-btn">提现</a>
        <a href="javascript:;" class="with-draw-detai-btn on">记录</a>
      </div>
    </div>
    <div>
      <div class="box page-part transaction">
        <div class="box-contain clearfix">
@@ -20,98 +7,99 @@
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import cashList from './compontents/cash-list'
import cashList from "./compontents/cash-list";
export default {
  components: {
    cashList
    cashList,
  },
  props: {},
  data () {
  data() {
    return {
      number: ''
    }
      number: "",
    };
  },
  watch: {},
  computed: {},
  created () {},
  mounted () {
    if (this.$state.theme =='red') {
        document.body.classList.remove('black-bg')
        document.body.classList.add('red-bg')
  created() {},
  mounted() {
    if (this.$state.theme == "red") {
      document.body.classList.remove("black-bg");
      document.body.classList.add("red-bg");
    }
  },
  beforeDestroy () {
    if (this.$state.theme =='red') {
      document.body.classList.remove('red-bg')
      document.body.classList.add('black-bg')
  beforeDestroy() {
    if (this.$state.theme == "red") {
      document.body.classList.remove("red-bg");
      document.body.classList.add("black-bg");
    }
  },
  methods: {
    toSure () {
    toSure() {
      // 确定
    }
  }
}
    },
  },
};
</script>
<style lang="less" scoped>
  .mint-header {
    // background: #f4f4f4;
    margin-bottom: 0.2rem;
  }
.mint-header {
  // background: #f4f4f4;
  margin-bottom: 0.2rem;
}
.wrapper {
  padding-bottom: 100px;
}
.btn-group {
  // background: #f4f4f4;
  text-align: center;
  margin: 0 auto;
  margin-bottom: 0.5rem;
  .btn-group {
    // background: #f4f4f4;
  a {
    display: inline-block;
    text-align: center;
    margin: 0 auto;
    margin-bottom: 0.5rem;
    a {
      display: inline-block;
      text-align: center;
      font-size: 0.29rem;
      height: 0.7rem;
      line-height: 0.6rem;
      width: 1.44rem;
      margin: 0;
      margin-top: 0;
      padding: 0;
    }
    .with-draw-btn {
      position: relative;
      right: -10px;
      width: 1.51rem;
      border-top-left-radius: 0.695rem;
      border-bottom-left-radius: 0.695rem;
    }
    .with-draw-detai-btn {
      border-top-right-radius: 0.695rem;
      border-bottom-right-radius: 0.695rem;
    }
    .on {
      color: #fff;
    }
    font-size: 0.29rem;
    height: 0.7rem;
    line-height: 0.6rem;
    width: 1.44rem;
    margin: 0;
    margin-top: 0;
    padding: 0;
  }
  .transaction {
    margin-top: 0.2rem;
    color: rgba(100, 100, 100, 0.78);
    .transaction-title {
      padding: 0.15rem 0.3rem;
    }
    .empty {
      height: 2.8rem;
      line-height: 2.8rem;
    }
  .with-draw-btn {
    position: relative;
    right: -10px;
    width: 1.51rem;
    border-top-left-radius: 0.695rem;
    border-bottom-left-radius: 0.695rem;
  }
  .with-draw-detai-btn {
    border-top-right-radius: 0.695rem;
    border-bottom-right-radius: 0.695rem;
  }
  .on {
    color: #fff;
  }
}
.transaction {
  margin-top: 0.2rem;
  color: rgba(100, 100, 100, 0.78);
  .transaction-title {
    padding: 0.15rem 0.3rem;
  }
  .empty {
    height: 2.8rem;
    line-height: 2.8rem;
  }
}
</style>
src/page/user/compontents/cash-list.vue
@@ -1,62 +1,100 @@
<template>
  <div class="wrapper">
    <div v-if="list.length<=0" class="empty text-center">
      暂无提现信息!
    <div v-if="list.length <= 0" class="empty text-center">
      {{ $t("hj162e") }}!
    </div>
    <div v-else>
      <ul
        class="table-list"
        v-infinite-scroll="loadMore"
        infinite-scroll-disabled="loading"
        infinite-scroll-distance="10">
        <li class="list-body" v-for="(item) in list" :key="item.key">
        infinite-scroll-distance="10"
      >
        <li class="list-body" v-for="item in list" :key="item.key">
          <div class="order-info-box">
            <div class="order-title">
                    <span class="main">
                        提现至银行卡
                    </span>
              <span class="payNumber">₹{{item.withAmt}}</span>
              <span class="main"> {{ $t("hjtxyhk") }} </span>
              <span class="payNumber">${{ item.withAmt }}</span>
              <span class="red pull-right">
                        {{item.withStatus == 1?'提现成功':item.withStatus == 2?'提现失败':item.withStatus == 3?'订单取消':'审核中'}}
                        <i v-if="item.withStatus == 1" class="iconfont icon-tongguo4 animated bounceIn"></i>
                        <i v-if="item.withStatus==0" class="iconfont icon-dengdai animated bounceInDown"></i>
                        <i v-if="item.withStatus == 2" class="iconfont icon-failure animated bounceInDown"></i>
                        <i v-if="item.withStatus == 3"
                           class="iconfont icon-iconfontweitongguo animated bounceInDown"></i>
                    </span>
                {{
                  item.withStatus == 1
                    ? $t("hjtxcg")
                    : item.withStatus == 2
                    ? $t("hjtxsb")
                    : item.withStatus == 3
                    ? $t("hjddqx")
                    : $t("hjshz")
                }}
                <i
                  v-if="item.withStatus == 1"
                  class="iconfont icon-tongguo4 animated bounceIn"
                ></i>
                <i
                  v-if="item.withStatus == 0"
                  class="iconfont icon-dengdai animated bounceInDown"
                ></i>
                <i
                  v-if="item.withStatus == 2"
                  class="iconfont icon-failure animated bounceInDown"
                ></i>
                <i
                  v-if="item.withStatus == 3"
                  class="iconfont icon-iconfontweitongguo animated bounceInDown"
                ></i>
              </span>
              <!-- <span class="secondary ">123456789</span> -->
            </div>
            <div class="order-info">
              <p class="clearfix">
                <span class="col-xs-6">手续费:<b class="space">¥{{item.withFee}}</b></span>
                <span class="col-xs-6"
                  >{{ $t("hj44") }}:<b class="space"
                    >${{ item.withFee }}</b
                  ></span
                >
                <!-- <span class="col-xs-6">实际到账金额:<b class="space" style="font-size:0.26rem">{{item.withAmt - item.withFee}}</b>元</span>                         -->
              </p>
              <p class="clearfix">
                <span class="col-xs-12">银行卡:<b class="space">{{item.bankName}}-{{item.bankAddress}}</b></span>
                <span class="col-xs-12"
                  >{{ $t("hj247") }}:<b class="space"
                    >{{ item.bankName }}-{{ item.bankAddress }}</b
                  ></span
                >
              </p>
              <p class="clearfix">
                <span class="col-xs-12">卡号:<b class="space">{{item.bankNo}}</b></span>
                <span class="col-xs-12"
                  >{{ $t("hjkh") }}:<b class="space">{{ item.bankNo }}</b></span
                >
              </p>
              <p v-if="item.withStatus == 3" class="clearfix">
                <span class="col-xs-12">取消原因:<b class="space">{{item.withMsg}}</b></span>
                <span class="col-xs-12"
                  >{{ $t("hjqxyy") }}:<b class="space">{{
                    item.withMsg
                  }}</b></span
                >
              </p>
              <p v-if="item.withStatus == 2" class="clearfix">
                <span class="col-xs-12">失败原因:<b class="space">{{item.withMsg}}</b></span>
                <span class="col-xs-12"
                  >{{ $t("hj201") }}:<b class="space">{{
                    item.withMsg
                  }}</b></span
                >
              </p>
              <p class="clearfix">
                        <span class="secondary col-xs-6">时间:
                            <b v-if="item.applyTime">{{new Date(item.applyTime) | timeFormat}}</b>
                            <b v-else></b>
                        </span>
                <span class="secondary col-xs-6"
                  >{{ $t("sj") }}:
                  <b v-if="item.applyTime">{{
                    new Date(item.applyTime) | timeFormat
                  }}</b>
                  <b v-else></b>
                </span>
              </p>
            </div>
            <div v-if="item.withStatus == 0" class="order-foot clearfix">
              <div @click="cancle(item.id)" class="foot-btn">
                <i class='font-icon'></i>
                取消提现
                <i class="font-icon"></i>
                {{ $t("hjqxtx") }}
              </div>
            </div>
          </div>
          <!-- <div class="capital">
              <div class="pro">
@@ -76,116 +114,116 @@
        loading...
      </div>
      <div v-show="!loading" class="load-all text-center">
        已全部加载
        {{ $t("hj236") }}
      </div>
    </div>
  </div>
</template>
<script>
import { Toast } from 'mint-ui'
import * as api from '@/axios/api'
import { Toast } from "mint-ui";
import * as api from "@/axios/api";
export default {
  components: {},
  props: {},
  data () {
  data() {
    return {
      loading: false,
      list: [],
      pageNum: 1,
      pageSize: 15
    }
      pageSize: 15,
    };
  },
  watch: {},
  computed: {},
  created () {},
  mounted () {
    this.getListDetail()
  created() {},
  mounted() {
    this.getListDetail();
  },
  methods: {
    async getListDetail () {
    async getListDetail() {
      let opt = {
        withStatus: '', // 提现状态 0已提交,1转账成功,2转账失败
        withStatus: "", // 提现状态 0已提交,1转账成功,2转账失败
        pageNum: this.pageNum,
        pageSize: 15
      }
      let data = await api.withdrawList(opt)
        pageSize: 15,
      };
      let data = await api.withdrawList(opt);
      if (data.status === 0) {
        data.data.list.forEach(element => {
          this.list.push(element)
        })
        data.data.list.forEach((element) => {
          this.list.push(element);
        });
      } else {
        Toast(data.msg)
        Toast(data.msg);
      }
    },
    async loadMore () {
    async loadMore() {
      if (this.list.length < 10) {
        return
        return;
      }
      this.loading = true
      this.loading = true;
      // 加载下一页
      this.pageNum++
      await this.getListDetail()
      this.loading = false
      this.pageNum++;
      await this.getListDetail();
      this.loading = false;
    },
    async cancle (val) {
    async cancle(val) {
      // 取消提现
      // MessageBox.confirm('您确定要平仓吗?').then(async action => {
      let opt = {
        withId: val
      }
      let data = await api.canceloutMoney(opt)
        withId: val,
      };
      let data = await api.canceloutMoney(opt);
      if (data.status === 0) {
        this.list = []
        Toast(data.msg)
        this.getListDetail()
        this.list = [];
        Toast(data.msg);
        this.getListDetail();
      } else {
        Toast(data.msg)
        Toast(data.msg);
      }
      // });
    },
  },
};
</script>
<style lang="less" scoped>
.wrapper {
  // padding-top: 0.9rem;
}
.payNumber {
  font-size: 0.3rem;
  color: #ff8000;
}
.table-list {
  padding: 0.2rem 0;
  .list-body {
    padding: 0.1rem 0.2rem;
    .capital:nth-child(1) {
      border-top: 0.01rem solid #3f444a;
    }
    .capital {
      padding: 0.2rem;
      // border-radius: 0.2rem;
      border-bottom: 0.01rem solid #3f444a;
      div {
        line-height: 0.4rem;
      }
      .col-xs-4 {
        padding-left: 0;
        padding-right: 0;
      }
      .pro {
        color: #999;
      }
    }
  }
}
</script>
<style lang="less" scoped>
  .wrapper {
    // padding-top: 0.9rem;
  }
  .payNumber {
    font-size: 0.3rem;
    color: #ff8000;
  }
  .table-list {
    padding: 0.2rem 0;
    .list-body {
      padding: 0.1rem 0.2rem;
      .capital:nth-child(1) {
        border-top: 0.01rem solid #3f444a;
      }
      .capital {
        padding: 0.2rem;
        // border-radius: 0.2rem;
        border-bottom: 0.01rem solid #3f444a;
        div {
          line-height: 0.4rem;
        }
        .col-xs-4 {
          padding-left: 0;
          padding-right: 0;
        }
        .pro {
          color: #999;
        }
      }
    }
  }
</style>
src/page/user/compontents/recharge-list.vue
@@ -1,75 +1,81 @@
<template>
  <div>
    <div v-if="list.length<=0" class="empty text-center">
      暂无充值信息!
  <div style="padding-bottom: 100px">
    <div v-if="list.length <= 0" class="empty text-center">
      {{ $t("hj228") }}!
    </div>
    <div v-else>
      <ul
        class="table-list"
        v-infinite-scroll="loadMore"
        infinite-scroll-disabled="loading"
        infinite-scroll-distance="10">
        <li class="list-body" v-for="(item) in list" :key="item.key">
        infinite-scroll-distance="10"
      >
        <li class="list-body" v-for="item in list" :key="item.key">
          <div class="order-info-box">
            <div class="order-title">
                    <span :class="['main',item.payChannel == 0?'ali':item.payChannel == 1?'cart':'wechat']">
                        <!-- <i v-if="item.payChannel == 0 || item.payChannel == '支付宝'" style="color:#1296db;"
                           class="iconfont icon-zhifubao"></i>
                        <i v-if="item.payChannel == '微信' " style="color:#1296db;" class="iconfont icon-weixin"></i>
                        <i v-if="item.payChannel == 1 || item.payChannel == '对公转账'" style="color:#1296db;"
                           class="iconfont icon-yinlian"></i> -->
                        {{item.payChannel == 0?'支付宝':item.payChannel == 1?'对公转账':item.payChannel}}
                    </span>
              <span class="payNumber">充值:<span :style="{color:$state.theme =='red'?'#BB1815':''}">¥{{item.payAmt}}</span></span>
              <span :class="['main', 'wechat']">
                {{ item.payChannel }}
              </span>
              <span class="payNumber">
                {{ $t("hj172") }}:
                <span
                  :style="{ color: $state.theme == 'red' ? '#BB1815' : '' }"
                >
                  {{ item.channelName }} {{ item.payAmt }}
                </span>
              </span>
              <span
                :class="item.orderStatus == 1?'green pull-right':item.orderStatus == 2?'red pull-right':'red pull-right'">
                        <i v-if="item.orderStatus == 1" class="iconfont icon-tongguo4 animated bounceIn"></i>
                        <i v-if="item.orderStatus==0" class="iconfont icon-dengdai animated bounceInDown"></i>
                        <i v-if="item.orderStatus == 2" class="iconfont icon-failure animated bounceInDown"></i>
                        <i v-if="item.orderStatus == 3"
                           class="iconfont icon-iconfontweitongguo animated bounceInDown"></i>
                        <!-- 1 => 成功 2 失败 3取消 4 等待 -->
                        {{item.orderStatus == 1?'充值成功':item.orderStatus == 2?'充值失败':item.orderStatus == 3?'取消充值':'审核中'}}
                    </span>
              <!-- <span class="secondary ">123456789</span> -->
                :class="
                  item.orderStatus == 1
                    ? 'green pull-right'
                    : item.orderStatus == 2
                    ? 'red pull-right'
                    : 'red pull-right'
                "
              >
                <i
                  v-if="item.orderStatus == 1"
                  class="iconfont icon-tongguo4 animated bounceIn"
                ></i>
                <i
                  v-if="item.orderStatus == 0"
                  class="iconfont icon-dengdai animated bounceInDown"
                ></i>
                <i
                  v-if="item.orderStatus == 2"
                  class="iconfont icon-failure animated bounceInDown"
                ></i>
                <i
                  v-if="item.orderStatus == 3"
                  class="iconfont icon-iconfontweitongguo animated bounceInDown"
                ></i>
                <!-- 1 => 成功 2 失败 3取消 4 等待 -->
                {{
                  item.orderStatus == 1
                    ? $t("hj231")
                    : item.orderStatus == 2
                    ? $t("hj232")
                    : item.orderStatus == 3
                    ? $t("hj233")
                    : $t("hjshz")
                }}
              </span>
            </div>
            <div class="order-info">
              <!-- <p class="clearfix">
                <span class="col-xs-5">{{item.orderDesc}}</span>
              </p> -->
              <!-- <p class="clearfix">
                <span class="col-xs-12">订单号:<b>{{item.orderSn}}</b></span>
              </p>
              <p class="clearfix">
                        <span class="secondary col-xs-6">时间:
                            <b v-if="item.addTime">{{new Date(item.addTime) | timeFormat}}</b>
                            <b v-else></b>
                        </span>
              </p> -->
              <div class="info-mix ">
                <span class="info-item">订单号:<b>{{item.orderSn}}</b></span>
                <span class="info-item">时间:
                    <b v-if="item.addTime">{{new Date(item.addTime) | timeFormat}}</b>
                    <b v-else></b>
              <div class="info-mix">
                <span class="info-item"
                  >订单号:<b>{{ item.orderSn }}</b></span
                >
                <span class="info-item"
                  >时间:
                  <b v-if="item.addTime">{{
                    new Date(item.addTime) | timeFormat
                  }}</b>
                  <b v-else></b>
                </span>
              </div>
            </div>
          </div>
          <!-- <div class="capital">
              <div class="pro">
                  {{item.payChannel}} <span class="pull-right">金额:{{item.payAmt}}</span>
              </div>
              <div class=" clearfix">
                  <div class="col-xs-4"></div>
                  <div class="col-xs-8">
                      <span class="pull-right">
                          {{new Date(item.addTime) | timeFormat}}
                      </span>
                  </div>
              </div>
          </div> -->
        </li>
      </ul>
      <div v-show="loading" class="load-all text-center">
@@ -77,166 +83,166 @@
        loading...
      </div>
      <div v-show="!loading" class="load-all text-center">
        已全部加载
        {{ $t("hj236") }}
      </div>
    </div>
  </div>
</template>
<script>
import { Toast } from 'mint-ui'
import * as api from '@/axios/api'
import { Toast } from "mint-ui";
import * as api from "@/axios/api";
export default {
  components: {},
  props: {},
  data () {
  data() {
    return {
      loading: false,
      list: [],
      pageNum: 1,
      pageSize: 15,
      total: 0
    }
      total: 0,
    };
  },
  watch: {},
  computed: {},
  created () {},
  mounted () {
    this.getListDetail()
  created() {},
  mounted() {
    this.getListDetail();
  },
  methods: {
    async getListDetail () {
    async getListDetail() {
      let opt = {
        payChannel: '', // 支付方式
        orderStatus: '', // 订单状态
        payChannel: "", // 支付方式
        orderStatus: "", // 订单状态
        pageNum: this.pageNum,
        pageSize: 15
      }
      let data = await api.rechargeList(opt)
        pageSize: 15,
      };
      let data = await api.rechargeList(opt);
      if (data.status === 0) {
        data.data.list.forEach(element => {
          this.list.push(element)
        })
        this.total = data.data.total
        data.data.list.forEach((element) => {
          this.list.push(element);
        });
        this.total = data.data.total;
      } else {
        Toast(data.msg)
        Toast(data.msg);
      }
    },
    async loadMore () {
    async loadMore() {
      if (this.list.length < 10 || this.total <= this.pageNum * this.pageNum) {
        return
        return;
      }
      this.loading = true
      this.loading = true;
      // 加载下一页
      this.pageNum++
      await this.getListDetail()
      this.loading = false
      this.pageNum++;
      await this.getListDetail();
      this.loading = false;
    },
  },
};
</script>
<style lang="less" scoped>
.wrapper {
  padding-top: 0.9rem;
}
.table-list {
  // padding: 0.2rem 0;
  .list-body {
    padding: 0.1rem 0.3rem;
    .capital:nth-child(1) {
      border-top: 0.01rem solid #3f444a;
    }
    .capital {
      padding: 0.2rem;
      // border-radius: 0.2rem;
      border-bottom: 0.01rem solid #3f444a;
      div {
        line-height: 0.4rem;
      }
      .col-xs-4 {
        padding-left: 0;
        padding-right: 0;
      }
      .pro {
        color: #999;
      }
    }
  }
}
</script>
<style lang="less" scoped>
  .wrapper {
    padding-top: 0.9rem;
.payNumber {
  font-size: 0.24rem;
  font-weight: bold;
  span {
    font-family: lightnumber;
  }
  .table-list {
    padding: 0.2rem 0;
    .list-body {
      padding: 0.1rem 0.3rem;
      .capital:nth-child(1) {
        border-top: 0.01rem solid #3f444a;
      }
      .capital {
        padding: 0.2rem;
        // border-radius: 0.2rem;
        border-bottom: 0.01rem solid #3f444a;
        div {
          line-height: 0.4rem;
        }
        .col-xs-4 {
          padding-left: 0;
          padding-right: 0;
        }
        .pro {
          color: #999;
        }
      }
    }
  }
  .payNumber {
}
/deep/.order-info-box {
  background-color: #16171d;
  padding: 0;
  .main {
    padding: 0.05rem 0.15rem;
    letter-spacing: 0;
    text-align: center;
    margin-right: 0.16rem;
    font-size: 0.24rem;
    font-weight: bold;
    span {
      font-family: lightnumber;
    border-radius: 3px;
    &.ali {
      background-color: #138eb4;
    }
    &.cart {
      background-color: #7266ba;
    }
    &.wechat {
      background-color: #009c46;
    }
  }
  /deep/.order-info-box {
    background-color: #16171d;
    padding: 0;
    .main{
      padding: 0.05rem .15rem;
      letter-spacing:0;
      text-align: center;
      margin-right: .16rem;
      font-size: 0.24rem;
      border-radius: 3px;
      &.ali {
        background-color: #138EB4;
      }
      &.cart {
        background-color: #7266BA;
      }
      &.wechat {
        background-color: #009C46;
      }
  .order-info {
    border-bottom: 1px solid #2e3237;
    padding-bottom: 0.3rem;
  }
  .order-title {
    border-bottom: none;
  }
  .info-mix {
    display: flex;
    font-size: 0.2rem;
    width: 100%;
    .info-item {
      margin-right: 0.2rem;
      color: #fff8;
    }
  }
}
.red-theme {
  .list-body {
    background-color: #fff;
  }
  .order-info-box {
    background-color: #fff;
    .order-info {
      border-bottom: 1px solid #2e3237;
      padding-bottom: .3rem;
    }
    .order-title{
      border-bottom: none;
    }
    .info-mix{
      display: flex;
      font-size: .2rem;
      width: 100%;
      .info-item {
        margin-right: .2rem;
        color: #fff8;
      }
      border-bottom-color: #e9e9e9;
    }
  }
  .red-theme {
    .list-body {
      background-color: #fff;
    }
    .order-info-box {
      background-color: #fff;
      .order-info {
        border-bottom-color: #e9e9e9;
      }
    }
    .order-info-box .main.cart {
      color: #fff;
    }
    .payNumber {
      color: #000;
    }
    .order-info-box .info-mix .info-item{
      color: #666666;
    }
    .load-all{
      background-color: #fff;
    }
  .order-info-box .main.cart {
    color: #fff;
  }
  .payNumber {
    color: #000;
  }
  .order-info-box .info-mix .info-item {
    color: #666666;
  }
  .load-all {
    background-color: #fff;
  }
}
</style>
src/page/user/compontents/transferindex-list.vue
New file
@@ -0,0 +1,87 @@
<template>
  <div style="height: 100vh">
    <van-nav-bar
      :placeholder="true"
      :safe-area-inset-top="true"
      :title="$t('劃轉记录')"
      left-arrow
      @click-left="$router.go(-1)"
    >
    </van-nav-bar>
    <div>
      <van-list
        v-model="loading"
        :finished="finished"
        finished-text="没有更多了"
        @load="onLoad"
      >
        <van-cell v-for="item in list" :key="item.id">
          <div class="item">
            <div>
              <div v-if="Number(item.amount) < 0">
                {{ $t("美股账户") }} > {{ $t("馬股账户") }}
              </div>
              <div v-else>{{ $t("馬股账户") }} > {{ $t("美股账户") }}</div>
            </div>
            <div>{{ Math.abs(Number(item.amount)) }} USD</div>
          </div>
        </van-cell>
      </van-list>
    </div>
  </div>
</template>
<script>
import { getMoenyLog } from "@/axios/api";
export default {
  data() {
    return {
      list: [],
      loading: false,
      finished: false,
    };
  },
  created() {
    this.getMoenyLogs();
  },
  methods: {
    async getMoenyLogs() {
      const res = await getMoenyLog({ type: "转换" });
      const arr = res.data.filter((item) => item.accectType === "US");
      this.list = arr;
      // 加载状态结束
      this.loading = false;
      this.finished = true;
    },
    onLoad() {
      // 异步更新数据
      // setTimeout 仅做示例,真实场景中一般为 ajax 请求
    },
  },
};
</script>
<style lang="less" scoped>
.item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 16px;
  line-height: 38px;
}
/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;
}
</style>
src/page/user/ransferIndex.vue
@@ -6,7 +6,15 @@
      :title="$t('劃轉')"
      left-arrow
      @click-left="onClickLeft"
    />
    >
      <template #right>
        <van-icon
          @click="$router.push('/transferindex-list')"
          name="orders-o"
          size="20"
        />
      </template>
    </van-nav-bar>
    <main>
      <div>
        <div class="main-header">
@@ -154,7 +162,7 @@
<script>
import * as api from "@/axios/api";
import { Notify } from "vant";
import { login, transfer } from "../../axios/api";
import { transfer } from "../../axios/api";
export default {
  created() {
@@ -164,7 +172,7 @@
  components: {},
  data() {
    return {
      exchangeRate: 7.35,
      exchangeRate: 4.59,
      formValue: "",
      from: {},
      to: {},
@@ -186,7 +194,7 @@
      if (res.status === 0) {
        Notify({ type: "success", message: this.$t("划转成功") });
        setTimeout(() => {
          this.$router.push("/user");
          this.$router.push("/transferindex-list");
        }, 500);
      } else {
        Notify({ type: "warning", message: res.msg });
src/page/user/recharge-sure.vue
@@ -6,7 +6,15 @@
      :title="$t('提款')"
      left-arrow
      @click-left="onClickLeft"
    />
    >
      <template #right>
        <van-icon
          @click="$router.push('/cashlist')"
          name="orders-o"
          size="20"
        />
      </template>
    </van-nav-bar>
    <main>
      <div class="main-title">{{ $t("請選擇提款账户") }}</div>
      <van-cell
@@ -50,18 +58,10 @@
        <div class="dz-title" v-if="rechargeAccountData.key !== undefined">
          <div>{{ $t("可用餘額") }}</div>
          <div class="balance-text">
            {{ availableBalanceUSD }} {{ symbolCode }}
            {{ availableBalanceUSD }} USD
            <!-- {{ symbolCode }} -->
          </div>
        </div>
        <!-- <div class="dz-title">
          <div>實際到帳</div>
          <div class="balance-text">0.0000</div>
        </div> -->
        <!-- <div class="dz-title" v-if="rechargeAccountData.key !== undefined">
          <div>最小提款金額</div>
          <div class="balance-text">0.0000</div>
        </div> -->
      </div>
      <van-button
        class="but"
@@ -125,9 +125,9 @@
        assetsType: this.accectType,
      });
      if (res.status === 0) {
        Notify({ type: "success", message: this.$t("提款成功,等待审核") });
        Notify({ type: "success", message: this.$t("hj182") });
        setTimeout(() => {
          this.onClickLeft();
          this.$router.push("/cashlist");
        }, 500);
      } else {
        Notify(res.msg);
@@ -149,8 +149,7 @@
        this.getMoneyList = res.data;
        res.data.map((item) => {
          if (item.accectType === this.rechargeAccountData.key) {
            console.log(item.accectType, "assetsType1");
            this.availableBalanceUSD = item.availableBalance;
            this.availableBalanceUSD = item.availableBalanceUSD;
            this.symbolCode = item.symbolCode;
            this.accectType = item.accectType;
          }
@@ -184,7 +183,7 @@
      this.rechargeAccountData = e;
      (this.getMoneyList || []).map((item) => {
        if (item.accectType === this.rechargeAccountData.key) {
          this.availableBalanceUSD = item.availableBalance;
          this.availableBalanceUSD = item.availableBalanceUSD;
          this.symbolCode = item.symbolCode;
          this.accectType = item.accectType;
        }
src/page/user/recharge.vue
@@ -6,7 +6,15 @@
      :title="$t('充值中心')"
      left-arrow
      @click-left="onClickLeft"
    />
    >
      <template #right>
        <van-icon
          @click="$router.push('/rechargelist')"
          name="orders-o"
          size="20"
        />
      </template>
    </van-nav-bar>
    <main>
      <div>
        <div class="main-title">{{ $t("支持得支付渠道") }}</div>
@@ -43,10 +51,10 @@
          </div>
          <div class="main-title">{{ $t("收款人名字") }}</div>
          <div class="white-input">
            <span>{{ paymentSelectData.channelImg }}</span>
            <span>{{ paymentSelectData.channelName }}</span>
            <i
              class="iconfont icon-fuzhi fuzhi"
              @click="(e) => copyText(e, channelImg)"
              @click="(e) => copyText(e, paymentSelectData.channelName)"
            ></i>
          </div>
          <div class="main-title">{{ $t("請選擇充值賬戶") }}</div>
@@ -86,6 +94,7 @@
                {{ $t("上傳憑證:") }}
              </div>
              <el-upload
                v-loading="loading"
                :with-credentials="true"
                class="avatar-uploader"
                :action="admin + '/user/upload.do'"
@@ -107,8 +116,8 @@
              </el-upload>
            </div>
          </div>
          <!--  :disabled="butFlg" -->
          <van-button
            :disabled="butFlg"
            class="but"
            type="primary"
            style="margin-top: 1.04rem; margin-bottom: 1.04rem"
@@ -136,6 +145,7 @@
  // getPayInfo
  data() {
    return {
      loading: false,
      butFlg: true,
      admin: apiUrl.baseURL,
      value: 0,
@@ -209,9 +219,9 @@
        img: this.form.img1key,
      });
      if (res.status === 0) {
        Notify({ type: "success", message: "充值成功" });
        Notify({ type: "success", message: this.$t("hj182") });
        setTimeout(() => {
          this.onClickLeft();
          this.$router.push("/rechargelist");
        }, 500);
      }
      //  Notify("请上传文件");
@@ -229,13 +239,16 @@
    handleAvatarSuccess(res, file) {
      this.imgStatus = false;
      this.form.img1key = res.data.url;
      this.loading = false;
      this.judgeValue();
    },
    beforeAvatarUpload(file) {
      this.loading = true;
      this.judgeValue();
      this.imgStatus = true;
    },
    handleError() {
      this.loading = false;
      this.imgStatus = false;
    },
    // upload
@@ -243,9 +256,9 @@
      console.log(file);
      let formData = new FormData();
      formData.append("file", file.file || file.raw);
      console.log(formData);
      // console.log(formData);
      const res = await upload({ file: formData });
      console.log(res);
      // console.log(res);
    },
    copyText(e, data) {
      var clipboard = new ClipboardJS(".copy-button", {
@@ -408,4 +421,8 @@
/deep/ .el-upload__input {
  display: none !important;
}
/deep/ .avatar-uploader {
  width: 2.740741rem;
  height: 2.740741rem;
}
</style>
src/router/index.js
@@ -33,6 +33,7 @@
import Aggre from "@/page/user/agreement";
import Recharge from "@/page/user/recharge";
import RransferIndex from "@/page/user/ransferIndex";
import transferindexList from "@/page/user//compontents/transferindex-list";
import RechargeSure from "@/page/user/recharge-sure";
import RechargeList from "@/page/user/rechargelist";
import Cash from "@/page/user/cash";
@@ -421,6 +422,16 @@
    },
    {
      path: "/transferindex-list",
      name: "transferindexList",
      meta: {
        title: "划转记录",
        requireAuth: true,
        index: 3020
      },
      component: transferindexList
    },
    {
      path: "/yebs",
      name: "yebs",
      meta: {
@@ -588,7 +599,7 @@
      path: "/rechargelist",
      name: "rechargelist",
      meta: {
        title: "充值记录",
        title: i18n.t("hj168"),
        requireAuth: true,
        hasHeader: true,
        index: 33
@@ -621,7 +632,7 @@
      path: "/cashlist",
      name: "cashlist",
      meta: {
        title: "提现记录",
        title: i18n.t("hj162"),
        requireAuth: true,
        hasHeader: true,
        index: 36