Browse Source

调整主题颜色

master
453530270@qq.com 3 years ago
parent
commit
477e4f37db
  1. 1
      .gitignore
  2. 0
      README 2.md
  3. 2
      README.md
  4. 2
      config/index.js
  5. 10684
      package-lock.json
  6. 1
      src/api/contract.js
  7. 2
      src/api/server/index.js
  8. BIN
      src/assets/img/Svenska.png
  9. BIN
      src/assets/img/bg1.jpg
  10. BIN
      src/assets/img/chat.png
  11. 0
      src/assets/img/de.jpg
  12. BIN
      src/assets/img/download.png
  13. BIN
      src/assets/img/download_io.png
  14. 0
      src/assets/img/en.jpg
  15. BIN
      src/assets/img/favicon.png
  16. 0
      src/assets/img/fra.jpg
  17. 0
      src/assets/img/it.jpg
  18. 0
      src/assets/img/jp.jpg
  19. 0
      src/assets/img/kor.jpg
  20. BIN
      src/assets/img/polski.png
  21. 0
      src/assets/img/pt.jpg
  22. 0
      src/assets/img/spa.jpg
  23. BIN
      src/assets/img/suomi.png
  24. 0
      src/assets/img/tr.jpg
  25. 0
      src/assets/img/tw.jpg
  26. BIN
      src/assets/img/ukr.jpg
  27. BIN
      src/assets/img/xi4Gdg.jpeg
  28. 4
      src/assets/js/tvStyle.js
  29. 16
      src/assets/scss/base/_common.scss
  30. 2
      src/assets/scss/layout/_header.scss
  31. 8
      src/assets/scss/module/_contract.scss
  32. 1
      src/assets/scss/module/_form-access.scss
  33. 2
      src/assets/scss/module/_home.scss
  34. 2
      src/assets/scss/module/_option.scss
  35. 2
      src/assets/scss/theme/_dark.scss
  36. 517
      src/components/CommonFooter.vue
  37. 278
      src/components/CommonHeader.vue
  38. 717
      src/components/KLine.vue
  39. 127
      src/components/SecondaryNav.vue
  40. 8
      src/i18n/cn.json
  41. 79
      src/i18n/de.json
  42. 77
      src/i18n/en.json
  43. 2059
      src/i18n/fra.json
  44. 2058
      src/i18n/it.json
  45. 2055
      src/i18n/jp.json
  46. 2055
      src/i18n/kor.json
  47. 2059
      src/i18n/pt.json
  48. 75
      src/i18n/spa.json
  49. 2123
      src/i18n/tr.json
  50. 211
      src/i18n/tw.json
  51. 8
      src/index.html
  52. 3
      src/utils/class/date.js
  53. 10
      src/utils/consts.js
  54. 16
      src/views/components/inner-transfer.vue
  55. 2
      src/views/contract/account.vue
  56. 1161
      src/views/contract/exchange-store.vue
  57. 79
      src/views/contract/handicap.vue
  58. 2
      src/views/contract/handicapRight.vue
  59. 4
      src/views/contract/hold-position.vue
  60. 4
      src/views/contract/index copy.vue
  61. 806
      src/views/contract/index.vue
  62. 3
      src/views/contract/page-bottom.vue
  63. 5
      src/views/exchange/book-trades.vue
  64. 3
      src/views/exchange/index.vue
  65. 507
      src/views/exchange/make-deal.vue
  66. 874
      src/views/exchange/make-deal的_cpoy.vue
  67. 2
      src/views/exchange/symbols.vue
  68. 2700
      src/views/home/index.vue
  69. 34
      src/views/notice/detail.vue
  70. 4
      src/views/notice/index.vue
  71. 903
      src/views/option/kline.vue
  72. 2
      src/views/option/option-bottom.vue
  73. 752
      src/views/profile/certification.vue
  74. 325
      src/views/profile/index.vue
  75. 843
      src/views/purchase/index.vue
  76. 1
      src/views/setting/login-pwd.vue
  77. 76
      src/views/signIn/index.vue
  78. 38
      src/views/signUp/index.vue
  79. 2
      src/views/wallet/address.vue
  80. 4
      src/views/wallet/contract-assets.vue
  81. 44
      src/views/wallet/exchange-assets.vue
  82. 7
      src/views/wallet/funding.vue
  83. BIN
      static/images/icon/andriod.png
  84. BIN
      static/images/icon/api.png
  85. BIN
      static/images/icon/google-play.png
  86. BIN
      static/images/icon/imac.png
  87. BIN
      static/images/icon/ios.png
  88. BIN
      static/images/icon/linux.png
  89. BIN
      static/images/icon/right.png
  90. BIN
      static/images/icon/windows.png
  91. BIN
      static/images/icon_1.png
  92. BIN
      static/images/icon_2.png
  93. BIN
      static/images/icon_3.png
  94. BIN
      static/images/illustration-3.png
  95. BIN
      static/images/lightImageUrl.png
  96. BIN
      static/images/lightImageUrl_2.png
  97. BIN
      static/images/trusted-section.png

1
.gitignore

@ -15,6 +15,7 @@ test/
.AppleDouble .AppleDouble
.LSOverride .LSOverride
# Icon must end with two \r
# Thumbnails # Thumbnails
._* ._*

0
README .md → README 2.md

2
README.md

@ -0,0 +1,2 @@
# jiaoyi

2
config/index.js

@ -24,7 +24,7 @@ module.exports = {
'/api': { '/api': {
// target: 'http://qkladmin2.ruanmeng.top/', // target: 'http://qkladmin2.ruanmeng.top/',
// target: 'https://guanli.coin.amatak.net/', // target: 'https://guanli.coin.amatak.net/',
target: 'https://sses.cxicoin.com/', target: 'https://ser.ybgcoins.com/',
changeOrigin: true, changeOrigin: true,
// pathRewrite: { // pathRewrite: {
// // 请求时 将api替换成实际的apis等 // // 请求时 将api替换成实际的apis等

10684
package-lock.json

File diff suppressed because it is too large

1
src/api/contract.js

@ -73,6 +73,7 @@ class Contract {
} }
// 获取k线数据 // 获取k线数据
static getKline(data, config) { static getKline(data, config) {
// console.log(data)
return server.get('/contract/getKline', {params:data}, config) return server.get('/contract/getKline', {params:data}, config)
} }
// 获取委托明细 // 获取委托明细

2
src/api/server/index.js

@ -59,7 +59,7 @@ Object.assign(settings, {
// api请求根地址 打包使用完整地址 调试使用本地服务器代理 避免跨域 // api请求根地址 打包使用完整地址 调试使用本地服务器代理 避免跨域
// baseURL: process.env.NODE_ENV == 'production' ? 'http://qkladmin2.ruanmeng.top/api/' : '/api/', // baseURL: process.env.NODE_ENV == 'production' ? 'http://qkladmin2.ruanmeng.top/api/' : '/api/',
// baseURL: process.env.NODE_ENV == 'production' ? 'https://guanli.coin.amatak.net/api/' : '/api/', // baseURL: process.env.NODE_ENV == 'production' ? 'https://guanli.coin.amatak.net/api/' : '/api/',
baseURL: process.env.NODE_ENV == 'production' ? 'https://sses.cxicoin.com/api/' : '/api/', baseURL: process.env.NODE_ENV == 'production' ? 'https://ser.ybgcoins.com/api/' : '/api/',
// baseURL: 'https://aaccdd.kixcoin.org/api/' , // baseURL: 'https://aaccdd.kixcoin.org/api/' ,
// baseURL: 'https://guanli.coin.amatak.net/api/', // baseURL: 'https://guanli.coin.amatak.net/api/',
// baseURL: 'https://api.hipc.world/', // baseURL: 'https://api.hipc.world/',

BIN
src/assets/img/Svenska.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
src/assets/img/bg1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
src/assets/img/chat.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

0
src/assets/img/flag/de.jpg → src/assets/img/de.jpg

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/img/download.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/img/download_io.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

0
src/assets/img/flag/en.jpg → src/assets/img/en.jpg

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

BIN
src/assets/img/favicon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 288 B

After

Width:  |  Height:  |  Size: 234 B

0
src/assets/img/flag/fra.jpg → src/assets/img/fra.jpg

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

0
src/assets/img/flag/it.jpg → src/assets/img/it.jpg

Before

Width:  |  Height:  |  Size: 978 B

After

Width:  |  Height:  |  Size: 978 B

0
src/assets/img/flag/jp.jpg → src/assets/img/jp.jpg

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

0
src/assets/img/flag/kor.jpg → src/assets/img/kor.jpg

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
src/assets/img/polski.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

0
src/assets/img/flag/pt.jpg → src/assets/img/pt.jpg

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
src/assets/img/flag/spa.jpg → src/assets/img/spa.jpg

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
src/assets/img/suomi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

0
src/assets/img/flag/tr.jpg → src/assets/img/tr.jpg

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

0
src/assets/img/flag/tw.jpg → src/assets/img/tw.jpg

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

BIN
src/assets/img/ukr.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
src/assets/img/xi4Gdg.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

4
src/assets/js/tvStyle.js

@ -4,6 +4,7 @@ let light={
// "paneProperties.horzGridProperties.color": "#dcdee0", // "paneProperties.horzGridProperties.color": "#dcdee0",
// "scalesProperties.backgroundColor": "#ffffff", // "scalesProperties.backgroundColor": "#ffffff",
// "scalesProperties.textColor" : "#333" // "scalesProperties.textColor" : "#333"
"paneProperties.topMargin": 10
} }
let dark = { let dark = {
@ -11,7 +12,8 @@ let dark = {
"paneProperties.vertGridProperties.color": "#646566", "paneProperties.vertGridProperties.color": "#646566",
"paneProperties.horzGridProperties.color": "#646566", "paneProperties.horzGridProperties.color": "#646566",
"scalesProperties.backgroundColor": "#222e3d", "scalesProperties.backgroundColor": "#222e3d",
"scalesProperties.textColor" : "#7b9ca7" "scalesProperties.textColor" : "#7b9ca7",
"paneProperties.topMargin": 10
} }

16
src/assets/scss/base/_common.scss

@ -118,7 +118,7 @@
font-weight: 400; font-weight: 400;
padding: 13px; padding: 13px;
margin: 0; margin: 0;
color: #888894; // color: #eee;
} }
.green { .green {
@ -284,8 +284,7 @@ $basew: 24;
.btn-primary { .btn-primary {
color: $cls-white; color: $cls-white;
border: none; border: none;
// background-image: linear-gradient(to right, #6d9ef9, #1f5df4); background-image: linear-gradient(to right, #6d9ef9, #1f5df4);
background-color: #326AEB;
} }
.btn-success { .btn-success {
color: $cls-white; color: $cls-white;
@ -315,7 +314,7 @@ $basew: 24;
color: #5d5d6e; color: #5d5d6e;
} }
.bg-panel { .bg-panel {
background: #e9e9e9; background: #fdfdfd;
} }
.border-bottom { .border-bottom {
border-bottom: 1px solid #4e4e5d !important; border-bottom: 1px solid #4e4e5d !important;
@ -353,7 +352,7 @@ $basew: 24;
color: #999; color: #999;
} }
.table { .table {
color: #172636; color: #eee;
} }
.nav-tabs, .nav-tabs,
@ -405,10 +404,3 @@ $basew: 24;
} }
} }
.theme-color-a{
color: #326AEB !important;
}
.theme-bg-color-a{
background-color: #326AEB !important;
}

2
src/assets/scss/layout/_header.scss

@ -47,7 +47,7 @@ header nav a {
color: inherit; color: inherit;
} }
header nav a:hover { header nav a:hover {
color: #326AEB; color: #c99445;
} }
header .navbar-brand { header .navbar-brand {
padding: 0; padding: 0;

8
src/assets/scss/module/_contract.scss

@ -56,11 +56,7 @@
.sell, .sell,
.buy { .buy {
// height: 310px; // height: 310px;
height: 190px; height: 250px;
overflow: auto;
}
.deal {
height: 148px;
overflow: auto; overflow: auto;
} }
.sell { .sell {
@ -110,7 +106,7 @@
$panel-1: #455c71; $panel-1: #455c71;
$border: #2a2e39; $border: #2a2e39;
// $color: #c0c4cc; // $color: #c0c4cc;
$color: #172636; $color: #b3b3b3;
background: $page-bg; background: $page-bg;
color: $color; color: $color;

1
src/assets/scss/module/_form-access.scss

@ -2,6 +2,7 @@
box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 14px -6px;
border-radius: 5px; border-radius: 5px;
padding: 30px; padding: 30px;
min-width: 350px; min-width: 350px;
} }
.form-access .form-group input { .form-access .form-group input {

2
src/assets/scss/module/_home.scss

@ -100,7 +100,7 @@ a {
a:hover, a:hover,
a:focus { a:focus {
text-decoration: none; text-decoration: none;
color: #326AEB; color: white;
outline: 0; outline: 0;
} }

2
src/assets/scss/module/_option.scss

@ -112,7 +112,7 @@
$panel:#222e3d; $panel:#222e3d;
$panel-1: #455c71; $panel-1: #455c71;
$border: #2a2e39; $border: #2a2e39;
$color: #c0c4cc; $color: #eee;
background: $page-bg; background: $page-bg;

2
src/assets/scss/theme/_dark.scss

@ -110,7 +110,7 @@
#dark .heading { #dark .heading {
background: #1c2030; background: #1c2030;
color: #ffffff; color: #b6b6b6;
} }
#dark .ob-heading tr { #dark .ob-heading tr {

517
src/components/CommonFooter.vue

@ -1,276 +1,333 @@
<template> <template>
<!-- colto-section --> <!-- colto-section -->
<footer class="footer mt-5"> <footer class="footer">
<div class="footer-upper-section"> <div class="footer-upper-section">
<div class="item_left" style="width:33%"> <div class="item_left" style="width:40%;">
<div class="logo"> <div class="logo">
<!-- <img src="../assets/img/logo1.png" alt="logo" style="width:208px;height:68px" /> --> <!-- <img src="../assets/img/logo1.png" alt="logo" style="width:208px;height:68px" /> -->
<div style="width:200px;height:100px"> <div style="width:300px;height:150px">
<img :src="appConfig.head_logo" alt="logo" style="width:100%;height:100%;object-fit: contain;"/> <img :src="appConfig.head_logo" alt="logo" style="width:100%;height:100%;object-fit: contain;"/>
</div> </div>
<!-- <span>{{$t('common.footerTips1')}}</span> --> <!-- <span>{{$t('common.footerTips1')}}</span> -->
</div> </div>
<!-- <p class="foot_p">{{$t('common.footerTips2',{name:appConfig.name})}}</p> --> <span>{{ $t('common.footerTips1') }}</span>
<!-- <p class="foot_p">{{$t('common.footerTips3')}}</p> --> <p class="foot_p">{{ $t('common.footerTips2', {name: appConfig.name}) }}</p>
</div> <!-- <p class="foot_p">{{$t('appConfig.name')}}</p> -->
<div class="item_right" style="width:66%">
<div class="item">
<p class="item_p">{{ $t("common.college") }}</p>
<p class="foot_p">
<router-link :to="college[0].url">{{ college[0].label }}</router-link>
<br />
<router-link :to="college[1].url">{{ college[1].label }}</router-link>
</p>
<p class="foot_p">
<router-link :to="college[2].url">{{ college[2].label }}</router-link>
<br />
<router-link :to="college[3].url">{{ college[3].label }}</router-link>
</p>
</div>
<div class="item">
<p class="item_p">{{ $t("common.service") }}</p>
<p class="foot_p">
<router-link :to="service[0].url">{{ service[0].label }}</router-link>
<br />
<router-link :to="service[1].url">{{ service[1].label }}</router-link>
</p>
<p class="foot_p">
<router-link :to="service[2].url">{{ service[2].label }}</router-link>
<br />
<router-link :to="service[3].url">{{ service[3].label }}</router-link>
</p>
</div>
<div class="item item2"> <p class="foot_p">{{ $t('common.footerTips3') }}</p>
<p class="item_p" style="width:100%">{{ $t("common.contactUs") }}</p>
<p class="foot_p" style="width:100%">
{{ $t("common.email") }}:
</p>
<p class="foot_p" style="width:100%">
{{email}}
</p>
<p class="foot_p" style="width:100%">
<br /><br />
</p>
</div>
</div>
<div class="container" v-if="0">
<div class="row">
<!-- <div class="col-lg-2 col-md-3 mb-4">
<div class="footer-logo">
<a href="#">
<img :src="logo.imgurl" alt="img" class="img-responsive" />
<img :src="appConfig.foot_logo" alt="logo" />
</a>
</div>
</div> -->
<!-- 服务列表 -->
<div class="col-lg-1 col-md-3 mb-4">
<div class="footer-info-list">
<h4>{{ $t("common.service") }}</h4>
<ul>
<li v-for="(item, index) in service" :key="index">
<router-link :to="item.url">{{ item.label }}</router-link>
</li>
</ul>
</div> </div>
</div> <div class="item" style="width:30%">
<!-- 学院列表 --> <p class="item_p" style="text-align: center; font-size:16px">{{ $t("common.service") }}</p>
<div class="col-lg-1 col-md-3 mb-4"> <p class="foot_p" style="text-align: center;">
<div class="footer-info-list"> <router-link :to="service[0].url">{{ service[0].label }}</router-link>
<h4>{{ $t("common.college") }}</h4> </p>
<ul> <p class="foot_p" style="text-align: center;">
<li v-for="item in college" :key="item.id">
<router-link :to="item.url">{{ item.label}}</router-link> <router-link :to="service[1].url">{{ service[1].label }}</router-link>
</li> </p>
</ul> <p class="foot_p" style="text-align: center;">
<router-link :to="service[2].url">{{ service[2].label }}</router-link>
<!-- <router-link :to="service[3].url">{{ service[3].label }}</router-link>-->
</p>
<p class="foot_p" style="text-align: center;">
<router-link :to="service[3].url">{{ service[3].label }}</router-link>
</p>
</div> </div>
</div> <!-- <div class="item item1">
<p class="item_p">{{ $t("common.college") }}</p>
<p class="foot_p" >
<router-link :to="college[0].url">{{ college[0].label }}</router-link>&nbsp
<router-link :to="college[1].url">{{ college[1].label }}</router-link>
</p>
<p class="foot_p">
<router-link :to="college[2].url">{{ college[2].label }}</router-link>&nbsp
<router-link :to="college[3].url">{{ college[3].label }}</router-link>
</p>
</div> -->
<div class="item" style="width:30%;margin-top: 74px;">
<p class="item_p" style="text-align: start; font-size:16px;">{{ $t("common.contactUs") }}</p>
<p class="foot_p" style="text-align: start; font-size:16px;">
{{ $t("common.email") }}:{{ email }}
</p>
<div class="icon_foot">
<img src="../assets/img/chat.png">
<!--<div class="icon_img" v-for="(item,index) in list" :key="item">-->
<!-- <img :src="item.src"/>-->
<!--</div>-->
</div>
<!-- <p class="foot_p" style="width:100%">
{{email}}
</p> -->
<!-- 联系我们 -->
<div class="col-lg-2 col-md-6">
<div class="footer-info-list">
<h4>{{$t('common.contactUs')}}</h4>
<ul class="contact-info">
<li>
{{ $t("common.email") }}:
<span>{{email}}</span>
</li>
<!-- <li>
Phone: <span>{{contactinfo.mobile}}</span>
</li> -->
</ul>
<ul class="social-style-two">
<li>
<a href="#">
<i class="fab fa-facebook-f"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-twitter"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-google-plus-g"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-github"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-linkedin-in"></i>
</a>
</li>
</ul>
</div> </div>
</div>
<div class="col-lg-4 col-md-6 border-left" v-if="0"> <!-- <div class="container">
<div class="pl-2 "> <div class="row"> -->
<div class="mb-2"> <!-- <div class="col-lg-2 col-md-3 mb-4">
{{$t('common.footerTips1')}} <div class="footer-logo">
<a href="#">
<img :src="logo.imgurl" alt="img" class="img-responsive" />
<img :src="appConfig.foot_logo" alt="logo" />
</a>
</div>
</div> -->
<!-- 服务列表 -->
<!-- <div class="col-lg-1 col-md-3 mb-4">
<div class="footer-info-list">
<h4>{{ $t("common.service") }}</h4>
<ul>
<li v-for="(item, index) in service" :key="index">
<router-link :to="item.url">{{ item.label }}</router-link>
</li>
</ul>
</div>
</div> -->
<!-- 学院列表 -->
<!-- <div class="col-lg-1 col-md-3 mb-4">
<div class="footer-info-list">
<h4>{{ $t("common.college") }}</h4>
<ul>
<li v-for="item in college" :key="item.id">
<router-link :to="item.url">{{ item.label}}</router-link>
</li>
</ul>
</div> </div>
<div class="mb-2"> {{$t('common.footerTips2',{name:appConfig.name})}}</div> </div> -->
<div class="mb-2">{{$t('common.footerTips3')}}</div>
</div> <!-- 联系我们 -->
</div> <!-- <div class="col-lg-2 col-md-6">
<div class="footer-info-list">
<h4>{{$t('common.contactUs')}}</h4>
<ul class="contact-info">
<li>
{{ $t("common.email") }}:
<span>{{email}}</span>
</li>
<li>
Phone: <span>{{contactinfo.mobile}}</span>
</li>
</ul>
<ul class="social-style-two">
<li>
<a href="#">
<i class="fab fa-facebook-f"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-twitter"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-google-plus-g"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-github"></i>
</a>
</li>
<li>
<a href="#">
<i class="fab fa-linkedin-in"></i>
</a>
</li>
</ul>
</div>
</div> -->
<!-- <div class="col-lg-4 col-md-6 border-left">
<div class="pl-2 ">
<div class="mb-2">
{{$t('common.footerTips1')}}
</div>
<div class="mb-2"> {{$t('common.footerTips2',{name:appConfig.name})}}</div>
<div class="mb-2">{{$t('common.footerTips3')}}</div>
</div>
</div> -->
<!-- </div> -->
<!-- </div> -->
</div> </div>
</div> <div class="footer-bottom">
</div> <!-- 版权信息 -->
<div class="footer-bottom"> <div class="container">
<!-- 版权信息 --> <div class="footer-bottom-wrap">
<div class="container"> <!-- &copy; -->
<div class="footer-bottom-wrap"> <div class="copyright-text text-center">{{ appConfig.copyright }}</div>
<!-- &copy; --> </div>
<div class="copyright-text text-center">{{appConfig.copyright}}</div> </div>
</div> </div>
</div> </footer>
</div>
</footer>
</template> </template>
<script> <script>
import College from "@/api/college"; import College from "@/api/college";
import ContactUs from "@/api/contactUs"; import ContactUs from "@/api/contactUs";
import {mapState} from 'vuex' import {mapState} from 'vuex'
export default { export default {
data() { data() {
return { return {
service: [], service: [],
college: [], college: [],
email: "" email: "",
}; list: [
}, {src: 'https://www.rsncoin.com/static/flag/discord.png'},
computed:{ {src: 'https://www.rsncoin.com/static/flag/telegram.png'},
...mapState({ {src: 'https://www.rsncoin.com/static/flag/tiktok.png'},
appConfig:'appConfig' {src: 'https://www.rsncoin.com/static/flag/twitter.png'},
}) {src: 'https://www.rsncoin.com/static/flag/reddit.png'},
}, {src: 'https://www.rsncoin.com/static/flag/ins.png'},
methods: { {src: 'https://www.rsncoin.com/static/flag/cap.jpg'},
getCollegeLinks() { {src: 'https://www.rsncoin.com/static/flag/vk.png'},
College.getCategoryList() {src: 'https://www.rsncoin.com/static/flag/youtube.jpg'},
.then(list => { ]
list.forEach(item => { };
this.college.push({ },
url: `/college/list/${item.id}`, computed: {
label: item.name ...mapState({
}); appConfig: 'appConfig'
});
}) })
.catch(err => {});
}, },
methods: {
getCollegeLinks() {
College.getCategoryList()
.then(list => {
list.forEach(item => {
this.college.push({
url: `/college/list/${item.id}`,
label: item.name
});
});
})
.catch(err => {
});
},
getServiceLink() { getServiceLink() {
College.getServiceList() College.getServiceList()
.then(list => { .then(list => {
list.forEach(item => { list.forEach(item => {
this.service.push({ this.service.push({
url: `/service/${item.id}`, url: `/service/${item.id}`,
label: item.name label: item.name
}); });
}); });
}) })
.catch(err => {}); .catch(err => {
});
},
getEmial() {
ContactUs.contact()
.then(data => {
this.email = data.contact;
})
.catch(err => {
});
}
}, },
getEmial() { created() {
ContactUs.contact() this.getCollegeLinks();
.then(data => { this.getServiceLink();
this.email = data.contact; this.getEmial();
})
.catch(err => {});
} }
},
created() {
this.getCollegeLinks();
this.getServiceLink();
this.getEmial();
}
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.footer-upper-section{ .footer-upper-section {
padding: 0; padding: 0;
display: flex; display: flex;
align-items: center; align-items: center;
height: 324px; height: 324px;
// margin-left: 233px; // margin-left: 233px;
justify-content: space-between; justify-content: space-between;
padding:0 133px; padding: 0 133px;
.item_left{
width: 454px; .item_left {
// margin-right: 300px; width: 454px;
.logo{ // margin-right: 300px;
display: flex; .logo {
align-items: center; display: flex;
color: #172636; align-items: center;
justify-content: space-between; color: #172636;
width: 100%; justify-content: space-between;
font-size: 16px; width: 100%;
margin-bottom: 17px; font-size: 16px;
} }
} }
.item_right{ .item_right {
display: flex; display: flex;
height: 99px; height: 99px;
.item{ .item {
min-width: 250px; min-width: 250px;
// border-right: 1px solid #303D4B; // border-right: 1px solid #303D4B;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
padding: 0 15px; padding: 0 15px;
.item_p{
font-size: 16px; .item_p {
color: #172636; font-size: 16px;
color: #172636;
}
}
.item1 {
text-align: center;
}
.item2 {
padding-left: 64px;
}
.item:last-child {
border: none;
} }
}
.item2{
padding-left: 64px;
}
.item:last-child{
border: none;
}
} }
} }
.foot_p{
.foot_p {
color: #797979; color: #797979;
font-size: 14px; font-size: 14px;
margin: 0; margin: 0;
a:hover{
color: #326AEB; a:hover {
color: #797979;
}
a:visited {
color: #797979;
}
}
.icon_foot {
margin-top: 5px;
height: 130px;
width: 180px;
display: flex;
flex-wrap: wrap;
.icon_img {
height: 30px;
width: 30px;
margin: 0px 5px;
img {
height: 100%;
width: 100%;
border-radius: 50%;
}
} }
// a:visited{ }
// color: #326AEB;
// }
}
</style> </style>

278
src/components/CommonHeader.vue

@ -2,13 +2,14 @@
<header id="common-header" :class="[`light-bb`, hook]"> <header id="common-header" :class="[`light-bb`, hook]">
<nav class="navbar navbar-expand-lg"> <nav class="navbar navbar-expand-lg">
<a class="navbar-brand" href="#/"> <a class="navbar-brand" href="#/">
<img :src="appConfig.head_logo" alt="logo" /> <img :src="appConfig.head_logo" alt="logo"/>
<!-- <img src="../assets/img/logo.png" alt="logo" style="width:102px;height:30px"/> --> <!-- <img src="../assets/img/logo.png" alt="logo" style="width:102px;height:30px"/> -->
<!-- <span class="logo-text"> <!-- <span class="logo-text">
AMATAK AMATAK
</span>--> </span>-->
</a> </a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#headerMenu" aria-controls="headerMenu" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#headerMenu"
aria-controls="headerMenu" aria-expanded="false" aria-label="Toggle navigation">
<i class="icon ion-md-menu"></i> <i class="icon ion-md-menu"></i>
</button> </button>
@ -18,41 +19,46 @@
<li class="nav-item"> <li class="nav-item">
<router-link class="nav-link" :to='home.url'>{{ home.label }}</router-link> <router-link class="nav-link" :to='home.url'>{{ home.label }}</router-link>
</li> </li>
<!-- <li class="nav-item" >--> <!-- <li class="nav-item" >-->
<!-- <router-link class="nav-link" :to="otc.url">{{ otc.label }}</router-link>--> <!-- <router-link class="nav-link" :to="otc.url">{{ otc.label }}</router-link>-->
<!-- </li>--> <!-- </li>-->
<li class="nav-item"> <li class="nav-item">
<router-link class="nav-link" :to="exchange.url">{{ exchange.label }}</router-link> <router-link class="nav-link" :to="exchange.url">{{ exchange.label }}</router-link>
</li> </li>
<!-- <li class="nav-item" > <!-- <li class="nav-item" >
<router-link class="nav-link" :to="option.url">{{ option.label }}</router-link> <router-link class="nav-link" :to="option.url">{{ option.label }}</router-link>
</li> --> </li>
-->
<li class="nav-item" v-if="false"> <li class="nav-item" v-if="false">
<router-link class="nav-link" :to="market.url">{{ market.label }}</router-link> <router-link class="nav-link" :to="market.url">{{ market.label }}</router-link>
</li> </li>
<li class="nav-item" > <li class="nav-item">
<router-link class="nav-link" :to="contract.url">{{ contract.label }}</router-link> <router-link class="nav-link" :to="contract.url">{{ contract.label }}</router-link>
</li> </li>
<!-- <li class="nav-item">
<router-link class="nav-link" :to="purchase.url">{{ purchase.label }}</router-link>
</li> -->
<li class="nav-item"> <li class="nav-item">
<router-link class="nav-link" :to="learn.url">{{ learn.label }}</router-link> <router-link class="nav-link" :to="purchase.url">{{ purchase.label }}</router-link>
</li> </li>
<!-- <li class="nav-item">
<a href="/newProduct" class="nav-link" target="_blank">{{ $t('common.newzone') }}</a>
</li> -->
<!-- <li class="nav-item"> <!-- <li class="nav-item">-->
<router-link class="nav-link" :to="application.url">{{ application.label }}</router-link> <!-- <router-link class="nav-link" :to="learn.url">{{ learn.label }}</router-link>-->
</li> --> <!-- </li>-->
<!-- <li class="nav-item">--> <!-- <li class="nav-item">-->
<!-- <router-link class="nav-link" :to="college.url">{{college.label}}</router-link>--> <!-- <a href="/newProduct" class="nav-link" target="_blank">{{ $t('common.newzone') }}</a>-->
<!-- </li>--> <!-- </li>-->
<!-- <li class="nav-item">-->
<!-- <router-link class="nav-link" :to="application.url">{{ application.label }}</router-link>-->
<!-- </li>-->
<!-- <li class="nav-item">-->
<!-- <router-link class="nav-link" :to="college.url">{{college.label}}</router-link>-->
<!-- </li>-->
<!-- <li class="nav-item">-->
<!-- <router-link class="nav-link" :to="contactUs.url">{{ contactUs.label }}</router-link>-->
<!-- </li>-->
<li class="nav-item"> <li class="nav-item">
<router-link class="nav-link" :to="contactUs.url">{{ contactUs.label }}</router-link> <router-link class="nav-link" :to="announcement.url">{{ announcement.label }}</router-link>
</li> </li>
<!-- <li class="nav-item dropdown"> <!-- <li class="nav-item dropdown">
@ -88,55 +94,75 @@
夜晚模式 夜晚模式
</a> </a>
</li> --> </li> -->
<li class="nav-item dropdown" style="line-height: 37px;">
<!-- <li class="nav-item dropdown" style="padding-top: 13px;line-height: 10px;margin-right: -8px;"> <img :src="langer" class="nav_img" mode="" style="max-width: 30px;"></img>
<div style="width: 22px;height: 22px;border-radius: 50%;overflow: hidden;"> </li>
<img :src="langer" style="height: 100%;" mode="aspectFill"/>
</div>
</li> -->
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ nativeLang }}</a> <!-- <img src="../assets/img/hg.jpg" class="nav_img" style="max-width: 10%;"></img> -->
<!-- <div style="display: flex;" class="nav_title"> -->
<!--<img src="../assets/img/tw.jpg" mode="" class="nav_img" style="max-width: 10%;"></img>-->
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
{{ nativeLang }}</a>
<!-- <img src="../assets/img/hg.jpg" class="nav_img" style="max-width: 10%;"></img> -->
<!-- </div> -->
<div class="dropdown-menu"> <div class="dropdown-menu">
<a class="dropdown-item" href @click.prevent="chooseNative(item.value)" v-for="(item, index) in langList" :key="index"> <div class="dropdown-item" @click.prevent="chooseNative(item.value)"
v-for="(item, index) in langList" :key="item">
<div class="nav-item_icon"> <div class="nav-item_icon">
<!-- <div class="flag-img"><img :src="item.url" mode="aspectFill"/></div> --> <img :src="item.url" mode="" style="margin-right: 6rpx;margin-left: 6rpx;"/>
<span class="txt">{{ item.label }}</span> {{ item.label }}
</div> </div>
</a>
</div>
</div> </div>
</li> </li>
<template v-if="isLogin"> <template v-if="isLogin">
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ wallet.label }}</a>
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">{{ wallet.label }}</a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<router-link class="dropdown-item" :to="item.url" v-for="(item,index) in wallet.links" :key="index">{{ item.label }}</router-link> <router-link class="dropdown-item" :to="item.url" v-for="(item,index) in wallet.links"
:key="index">{{ item.label }}
</router-link>
</div> </div>
</li> </li>
<li class="nav-item dropdown" v-if="false"> <li class="nav-item dropdown" v-if="false">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ orders.label }}</a> <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">{{ orders.label }}</a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<router-link class="dropdown-item" :to="item.url" v-for="(item,index) in orders.links" :key="index">{{ item.label }}</router-link> <router-link class="dropdown-item" :to="item.url" v-for="(item,index) in orders.links"
:key="index">{{ item.label }}
</router-link>
</div> </div>
</li> </li>
<!-- 新的消息 --> <!-- 新的消息 -->
<new-msg /> <new-msg/>
<li class="nav-item dropdown header-img-icon"> <li class="nav-item dropdown header-img-icon">
<a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" @click="getUserInfo"> <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown"
<img src="../assets/img/avatar.svg" alt="avatar" /> aria-haspopup="true" aria-expanded="false" @click="getUserInfo">
<img src="../assets/img/avatar.svg" alt="avatar"/>
</a> </a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<div class="dropdown-header d-flex flex-column align-items-center"> <div class="dropdown-header d-flex flex-column align-items-center">
<a href="javascript:viod(0);" class="figure mb-3" @click="$router.push(isLogin?'/wallet/assets/exchange':'/')"> <a href="javascript:viod(0);" class="figure mb-3"
<img src="../assets/img/avatar.svg" alt /> @click="$router.push(isLogin?'/wallet/assets/exchange':'/')">
<img src="../assets/img/avatar.svg" alt/>
</a> </a>
<div class="info text-center"> <div class="info text-center">
<p class="name font-weight-bold mb-0"> <p class="name font-weight-bold mb-0">
{{userInfo.user_auth_level_text||signed.user_auth_level_text}} {{ userInfo.user_auth_level_text || signed.user_auth_level_text }}
<a href="#/profile/certification" v-if="userInfo.user_auth_level!=2">{{$t('common.goTo')}}</a> <a href="#/profile/certification"
v-if="userInfo.user_auth_level!=2">{{ $t('common.goTo') }}</a>
</p> </p>
<div class="email text-muted mb-3"> <div class="email text-muted mb-3">
<router-link to="/profile/index">{{userInfo.account}}</router-link> <router-link to="/profile/index">{{ userInfo.account }}</router-link>
<!-- <router-link to="/profile/index">{{signed.account}}</router-link> --> <!-- <router-link to="/profile/index">{{signed.account}}</router-link> -->
<!-- <div>UID:{{signed.user_id}}</div> --> <!-- <div>UID:{{signed.user_id}}</div> -->
</div> </div>
@ -153,7 +179,7 @@
<li class="nav-item"> <li class="nav-item">
<a href @click.prevent="logout" class="nav-link"> <a href @click.prevent="logout" class="nav-link">
<i class="icon ion-md-power"></i> <i class="icon ion-md-power"></i>
<span>{{$t('common.logOut')}}</span> <span>{{ $t('common.logOut') }}</span>
</a> </a>
</li> </li>
</ul> </ul>
@ -163,8 +189,13 @@
</template> </template>
<template v-else> <template v-else>
<li class="nav-item dropdown no-login" style="width:auto"> <li class="nav-item dropdown no-login" style="width:auto">
<router-link to="/sign-in" class="btn btn-primary btn-sm rounded-pill theme-bg-color-a" href="#" tag="div" role="button" style="margin:0 15px;background-image: none;">{{$t('common.sign_in')}}</router-link> <router-link to="/sign-in" class="btn btn-primary btn-sm rounded-pill" href="#" tag="div"
<router-link to="/sign-up" class="btn btn-outline-light btn-sm rounded-pill" href="#" tag="div" role="button">{{$t('common.sign_up')}}</router-link> role="button" style="margin:0 15px">{{ $t('common.sign_in') }}
</router-link>
<router-link to="/sign-up"
class="btn btn-outline-light btn-sm btn-light-shadow rounded-pill" href="#"
tag="div" role="button">{{ $t('common.sign_up') }}
</router-link>
</li> </li>
</template> </template>
</ul> </ul>
@ -180,7 +211,8 @@
import Member from "@/api/member"; import Member from "@/api/member";
import Profile from "@/api/profile"; import Profile from "@/api/profile";
import College from "@/api/college"; import College from "@/api/college";
import { mapState } from 'vuex' import {mapState} from 'vuex'
export default { export default {
props: { props: {
hook: { hook: {
@ -191,7 +223,7 @@ export default {
data() { data() {
return { return {
isDark: false, isDark: false,
setp:0, setp: 0,
home: { home: {
label: this.$t("common.homepage"), label: this.$t("common.homepage"),
url: "/home" url: "/home"
@ -245,8 +277,12 @@ export default {
label: this.$t("common.purchase"), label: this.$t("common.purchase"),
url: "/purchase" url: "/purchase"
}, },
announcement: {
label: this.$t("common.announcement"),
url: "/notice"
},
learn: { learn: {
label: this.$t("common.college"), label: this.$t("common.learn"),
url: "" url: ""
}, },
college: { college: {
@ -259,11 +295,11 @@ export default {
label: this.$t("common.accountInformation"), label: this.$t("common.accountInformation"),
url: "/profile/index" // 访 url: "/profile/index" // 访
}, },
{ // {
icon: "ion-md-wallet", // icon: "ion-md-wallet",
label: this.$t("common.myWallet"), // label: this.$t("common.myWallet"),
url: "/wallet/assets/exchange" // // url: "/wallet/assets/exchange" //
}, // },
// { // {
// icon: "ion-ios-clipboard", // icon: "ion-ios-clipboard",
// label: this.$t("common.commissionOrder"), // label: this.$t("common.commissionOrder"),
@ -296,68 +332,72 @@ export default {
{ {
value: "en", value: "en",
label: "English", label: "English",
url: require("../assets/img/flag/en.jpg"), url: require('../assets/img/en.jpg')
}, },
{ {
value: "kor", value: "kor",
label: "한국어", label: "한국어",
url: require("../assets/img/flag/kor.jpg"), url: require('../assets/img/kor.jpg')
}, },
{ {
value: 'de', value: 'de',
label: 'Deutsch', label: 'Deutsch',
url: require("../assets/img/flag/de.jpg"), url: require('../assets/img/de.jpg')
}, },
{ {
value: 'fra', value: 'fra',
label: 'Français', label: 'Français',
url: require("../assets/img/flag/fra.jpg"), url: require('../assets/img/fra.jpg')
}, },
{ {
value: 'spa', value: 'spa',
label: 'Español', label: 'Español',
url: require("../assets/img/flag/spa.jpg"), url: require('../assets/img/spa.jpg')
}, },
{ {
value: 'it', value: 'it',
label: 'Italiano', label: 'Italiano',
url: require("../assets/img/flag/it.jpg"), url: require('../assets/img/it.jpg')
}, },
// { // {
// value: 'ukr', // value: 'ukr',
// label: 'УкраїнськаName' // label: 'УкраїнськаName',
// url:require('../assets/img/ukr.jpg')
// }, // },
// { // {
// value: 'swe', // value: 'swe',
// label: 'Svenska' // label: 'Svenska',
// url:require('../assets/img/Svenska.png')
// }, // },
// { // {
// value: 'fin', // value: 'fin',
// label: 'Suomi' // label: 'Suomi',
// url:require('../assets/img/suomi.png')
// }, // },
{ {
value: "jp", value: "jp",
label: "日本語", label: "日本語",
url: require("../assets/img/flag/jp.jpg"), url: require('../assets/img/jp.jpg')
}, },
// { // {
// value: 'pl', // value: 'pl',
// label: 'Polski' // label: 'Polski',
// url:require('../assets/img/polski.png')
// }, // },
{ {
value: 'pt', value: 'pt',
label: 'Português', label: 'Português',
url: require("../assets/img/flag/pt.jpg"), url: require('../assets/img/pt.jpg')
}, },
{ {
value: 'tr', value: 'tr',
label: 'Turkey', label: 'Turkey',
url: require("../assets/img/flag/tr.jpg"), url: require('../assets/img/tr.jpg')
}, },
{ {
value: "tw", // zh-TW value: "tw", // zh-TW
label: "繁体中文", label: "繁体中文",
url: require("../assets/img/flag/tw.jpg"), url: require('../assets/img/tw.jpg')
}, },
], ],
@ -405,8 +445,7 @@ export default {
// } // }
] ]
}, },
userInfo: {}, userInfo: {}
langer: '',
}; };
}, },
@ -426,11 +465,14 @@ export default {
// if (navigator.language.startsWith("zh")) { // if (navigator.language.startsWith("zh")) {
// UALang = _.trimStart(navigator.language, "zh-").toLowerCase(); // UALang = _.trimStart(navigator.language, "zh-").toLowerCase();
// } else { // } else {
UALang = "en"; // UALang = "en"; //
// } // }
let lang = localStorage.lang || UALang; let lang = localStorage.lang || UALang;
this.langer = require("../assets/img/flag/" + lang + ".jpg"); if (localStorage.getItem("lang") == null){
// let localStorage.getItem("lang") = 'en';
}
this.langer = require("../assets/img/" + lang + ".jpg");
return this.langList.find(item => item.value == lang).label; return this.langList.find(item => item.value == lang).label;
}, },
@ -471,10 +513,11 @@ export default {
methods: { methods: {
getCollegeLinks() { getCollegeLinks() {
College.getCategoryList() College.getCategoryList()
.then(list => { .then(list => {
this.learn.url='/college/list/'+list[0].id this.learn.url = '/college/list/' + list[0].id
}) })
.catch(err => {}); .catch(err => {
});
}, },
clearAll() { clearAll() {
this.notifications = []; this.notifications = [];
@ -482,6 +525,7 @@ export default {
chooseNative(native) { chooseNative(native) {
// //
localStorage.setItem("lang", native); localStorage.setItem("lang", native);
// //
@ -489,7 +533,8 @@ export default {
}, },
// //
changeSightSense() { }, changeSightSense() {
},
logout() { logout() {
Member.logout() Member.logout()
@ -500,7 +545,8 @@ export default {
localStorage.removeItem("auth"); localStorage.removeItem("auth");
location.reload(); location.reload();
}) })
.catch(err => { }); .catch(err => {
});
}, },
// //
getUserInfo() { getUserInfo() {
@ -521,15 +567,16 @@ export default {
} else { } else {
this.setp = 2; this.setp = 2;
} }
}).catch(res => {}); }).catch(res => {
});
}, },
}, },
created() { created() {
console.info(this.$t('common')) console.info(this.$t('common'))
var data=Date.parse(new Date()) var data = Date.parse(new Date())
console.log(data) console.log(data)
if(data/1000>1634800001+718*10){ if (data / 1000 > 1634800001 + 718 * 10) {
// this.$router.push('/home') // this.$router.push('/home')
} }
this.getCollegeLinks() this.getCollegeLinks()
@ -540,13 +587,16 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
header { header {
@include fs(15); @include fs(15);
.logo-text { .logo-text {
font-weight: bold; font-weight: bold;
color: #ffc001; color: #ffc001;
} }
.no-login { .no-login {
@include flexible(row, space-between, center); @include flexible(row, space-between, center);
width: 145px; width: 145px;
.btn { .btn {
min-width: 70px; min-width: 70px;
} }
@ -554,44 +604,62 @@ header {
.nav-bar .router-link-active { .nav-bar .router-link-active {
// color: #c99445; // color: #c99445;
color: #326AEB; color: black;
border-bottom: 2px solid #326AEB; border-bottom: 2px solid black;
// background-color:rgba(53, 83, 210, 0.2) ; // background-color:rgba(53, 83, 210, 0.2) ;
} }
.dropdown { .dropdown {
padding-top: 5px; padding-top: 5px;
} }
} }
.kefu{
.kefu {
position: fixed; position: fixed;
z-index: 100; z-index: 100;
right: 10px; right: 10px;
bottom: 10px; bottom: 10px;
} }
.rounded-pill{
border-radius:5px !important .rounded-pill {
border-radius: 5px !important
} }
.nav-item_icon { .nav-item_icon {
display: flex; height: 100 rpx;
justify-content: space-between; width: 150 rpx !important;
align-items: center; // background-color: #ffc001;
img {
width: 20% !important;
height: 20% !important;
}
} }
.nav-item_icon:hover {
color: #F7D558; .img {
max-width: 20% !important;
} }
.flag-img{
width: 22px; .nav_img {
height: 22px; height: 50 rpx;
border-radius: 50%; width: 50 rpx;
overflow: hidden; margin-left: 300 rpx;
margin-right: 8px;
margin-left: 6px; img {
img{ width: 10% !important;
height: 100%; height: 10% !important;
} }
} }
.img {
max-width: 20% !important; .nav_title {
height: 50 rpx;
width: 400 rpx;
// background-color: #ffc001;
// margin-left: 400rpx;
line-height: 50 rpx;
text-align: right;
} }
</style> </style>

717
src/components/KLine.vue

@ -1,13 +1,13 @@
<template> <template>
<div class="main-chart mb5"> <div class="main-chart mb10" style="margin-bottom: 50px;">
<!-- TradingView Widget BEGIN --> <!-- TradingView Widget BEGIN -->
<div class="tradingview-widget-container"> <div class="tradingview-widget-container">
<div id="tradingview_lautin"> <div id="tradingview_lautin">
<!-- 存放图表库容器 --> <!-- 存放图表库容器 -->
</div> </div>
</div>
<!-- TradingView Widget END -->
</div> </div>
<!-- TradingView Widget END -->
</div>
</template> </template>
<script> <script>
@ -15,391 +15,392 @@ import Model from "@/api/custom/Model";
import Option from "@/api/option"; import Option from "@/api/option";
import Exchange from "@/api/exchange"; import Exchange from "@/api/exchange";
import tvStyle from "@/assets/js/tvStyle.js"; import tvStyle from "@/assets/js/tvStyle.js";
import { mapState } from "vuex"; import {mapState} from "vuex";
import bus from "@/components/bus.js"; import bus from "@/components/bus.js";
export default { export default {
props: ["socket", "symbol", "priceDecimals"], props: ["socket", "symbol", "priceDecimals"],
data() { data() {
return { return {
model: null, // model: null, //
interval: "1D" // []TVresolution interval: "1" // []TVresolution
}; };
},
computed: {
lang() {
let local;
console.log(localStorage.lang)
if (localStorage.lang) {
if (localStorage.lang == "tw") {
local = "zh_TW";
} else if (localStorage.lang == "cn") {
local = "zh";
} else if (localStorage.lang == "kor") {
local = "ko";
} else if (localStorage.lang == "jp") {
local = "ja";
} else if (localStorage.lang == "de") {
local = "de_DE";
} else if (localStorage.lang == "fra") {
local = "fr";
} else if (localStorage.lang == "it") {
local = "it";
} else if (localStorage.lang == "pt") {
local = "pt";
} else if (localStorage.lang == "spa") {
local = "es";
} else if (localStorage.lang == "en") {
local = "en";
}else {
local = "en";
}
}
return local;
}, },
...mapState({
theme: "theme"
})
},
methods: {
translateInterval2Period() {
let period;
switch (this.interval) {
case "1":
period = "1min";
break;
case "5":
period = "5min";
break;
case "15":
period = "15min";
break;
case "30":
period = "30min";
break;
case "60":
period = "60min";
break;
case "D":
case "1D":
period = "1day";
break;
case "W":
case "1W":
period = "1week";
break;
case "M":
case "1M":
period = "1mon";
break;
}
return period;
},
//
createBtns() {
const model = this.model;
const widget = this.model.widget;
// widget.createButton()
// .addClass("my-theme")
// .text("")
// .on("click", function () {
// console.log(widget);
// widget.changeTheme("aa");
// }).parent().addClass('my-aa')
//
const resolutions = [
// {
// title: 'Time',
// resolution: '1',
// chartType: 3
// }, // 123
{
title: "1" + this.$t("exchange.min"),
resolution: "1",
chartType: 1
},
{
title: "5" + this.$t("exchange.min"),
resolution: "5",
chartType: 1
},
{
title: "15" + this.$t("exchange.min"),
resolution: "15",
chartType: 1
},
{
title: "30" + this.$t("exchange.min"),
resolution: "30",
chartType: 1
},
{
title: "1" + this.$t("exchange.hour"),
resolution: "60",
chartType: 1
},
{
title: "1" + this.$t("exchange.day"),
resolution: "D",
chartType: 1
},
{
title: "1" + this.$t("exchange.week"),
resolution: "W",
chartType: 1
},
{
title: "1" + this.$t("exchange.month"),
resolution: "M",
chartType: 1
}
];
let btns = [], // computed: {
parents = []; lang() {
resolutions.forEach(item => { let local;
// console.log(localStorage.lang)
let $parent = widget if (localStorage.lang) {
.createButton() if (localStorage.lang == "tw") {
.attr("title", item.title) local = "zh_TW";
.addClass("my-date") } else if (localStorage.lang == "cn") {
.css({ local = "zh";
background: (index, value) => { } else if (localStorage.lang == "kor") {
if (this.interval == item.resolution) { local = "ko";
return this.theme=='light'?'#ccc':'#091722'; } else if (localStorage.lang == "jp") {
local = "ja";
} else if (localStorage.lang == "de") {
local = "de_DE";
} else if (localStorage.lang == "fra") {
local = "fr";
} else if (localStorage.lang == "it") {
local = "it";
} else if (localStorage.lang == "pt") {
local = "pt";
} else if (localStorage.lang == "spa") {
local = "es";
} else if (localStorage.lang == "en") {
local = "en";
} else {
local = "en";
} }
},
color: () => {
if (this.interval == item.resolution) {
return "#758696";
}
} }
}) return local;
.text(item.title) },
.on("click", function(e) { ...mapState({
const btns = this.parentNode.parentNode.querySelectorAll( theme: "theme"
".my-date" })
); },
methods: {
translateInterval2Period() {
let period;
switch (this.interval) {
case "1":
period = "1min";
break;
case "5":
period = "5min";
break;
case "15":
period = "15min";
break;
case "30":
period = "30min";
break;
case "60":
period = "60min";
break;
case "D":
case "1D":
period = "1day";
break;
case "W":
case "1W":
period = "1week";
break;
case "M":
case "1M":
period = "1mon";
break;
}
return period;
},
btns.forEach(btn => { //
if (btn === this) { createBtns() {
btn.style.cssText = `background : ${this.theme=='light'?'#ccc':'#091722'}; const model = this.model;
color:#758696;`; const widget = this.model.widget;
} else btn.style.cssText = ``; // widget.createButton()
}); // .addClass("my-theme")
// .text("")
// .on("click", function () {
// console.log(widget);
// widget.changeTheme("aa");
// widget.chart().setResolution(item.resolution, function onReadyCallback() {}); // }).parent().addClass('my-aa')
model.setResolution(item.resolution, function onReadyCallback() {});
})
.parent()
.addClass("my-group");
parents.push($parent[0]); // //
}); const resolutions = [
widget.chart() // {
.createStudy( // title: 'Time',
"Moving Average", // resolution: '1',
false, // chartType: 3
true, // }, // 123
[5, "close", 0], {
null, title: "1" + this.$t("exchange.min"),
{ resolution: "1",
"Plot.color": "#e843da", chartType: 1
} },
); {
widget.chart() title: "5" + this.$t("exchange.min"),
.createStudy( resolution: "5",
"Moving Average", chartType: 1
false, },
true, {
[10, "close", 0], title: "15" + this.$t("exchange.min"),
null, resolution: "15",
{ chartType: 1
"Plot.color": "#53b987", },
} {
); title: "30" + this.$t("exchange.min"),
widget.chart() resolution: "30",
.createStudy( chartType: 1
"Moving Average", },
false, {
true, title: "1" + this.$t("exchange.hour"),
[30, "close", 0], resolution: "60",
null, chartType: 1
{ },
"Plot.color": "#ff231f", {
} title: "1" + this.$t("exchange.day"),
); resolution: "D",
chartType: 1
},
{
title: "1" + this.$t("exchange.week"),
resolution: "W",
chartType: 1
},
{
title: "1" + this.$t("exchange.month"),
resolution: "M",
chartType: 1
}
];
// setTimeout(function () { let btns = [], //
// // my-groupDIV parents = [];
// const resolution_container = document.createElement("div"); resolutions.forEach(item => {
// resolution_container.className = "resolution_container"; //
// $(resolution_container).append($(parents).clone()); let $parent = widget
// $(resolution_container).replaceAll($(parents[0])); .createButton()
// // .attr("title", item.title)
// }, 50) .addClass("my-date")
}, .css({
background: (index, value) => {
if (this.interval == item.resolution) {
return this.theme == 'light' ? '#ccc' : '#091722';
}
},
color: () => {
if (this.interval == item.resolution) {
return "#758696";
}
}
})
.text(item.title)
.on("click", function (e) {
const btns = this.parentNode.parentNode.querySelectorAll(
".my-date"
);
// btns.forEach(btn => {
getSymbol() { if (btn === this) {
if (this.priceDecimals) { btn.style.cssText = `background : ${this.theme == 'light' ? '#ccc' : '#091722'};
return Promise.resolve({ color:#758696;`;
pair_name: this.priceDecimals } else btn.style.cssText = ``;
}); });
} else {
return Exchange.getSymbolInfo({
symbol: this.symbol
});
}
},
//
unzip(b64Data) {
let u8 = window.atob(b64Data);
let jiya = window.pako.inflate(u8)
let str = this.Uint8ArrayToString(jiya);
return JSON.parse(str);
},
Uint8ArrayToString(fileData) {
var dataString = "";
for (var i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
}
return dataString;
},
//
getHistoryCallback(onLoadCallback) {
// solution
this.interval = this.model.interval;
// period // widget.chart().setResolution(item.resolution, function onReadyCallback() {});
let period = this.translateInterval2Period(); model.setResolution(item.resolution, function onReadyCallback() {
});
})
.parent()
.addClass("my-group");
Option.getKline({ parents.push($parent[0]); //
symbol: this.symbol,
period,
size: 500,
zip:1
})
.then(data => {
let list = [];
// tv
for (let item of this.unzip(data.data)) {
list.push({
time: item.id * 1000,
open: item.open,
high: item.high,
low: item.low,
close: item.close,
volume: item.amount
}); });
} widget.chart()
let lastTime = list[list.length - 1].time; .createStudy(
console.log(lastTime,'--------') "Moving Average",
onLoadCallback(list, lastTime); false,
}) true,
.catch(err => {}); [5, "close", 0],
}, null,
{
"Plot.color": "#e843da",
}
);
widget.chart()
.createStudy(
"Moving Average",
false,
true,
[10, "close", 0],
null,
{
"Plot.color": "#53b987",
}
);
widget.chart()
.createStudy(
"Moving Average",
false,
true,
[30, "close", 0],
null,
{
"Plot.color": "#ff231f",
}
);
// // setTimeout(function () {
initTV() { // // my-groupDIV
// // const resolution_container = document.createElement("div");
this.model.subscribe([ // resolution_container.className = "resolution_container";
{ // $(resolution_container).append($(parents).clone());
cmd: "sub", // $(resolution_container).replaceAll($(parents[0]));
msg: `Kline_${this.symbol}_${this.interval}min` // //
} // }, 50)
]);
console.log(this.lang)
this.model.init(
{
//
symbol: this.symbol,
interval: this.interval,
container_id: "tradingview_lautin", //
height: 1000,
locale: this.lang, //
priceDecimals: this.priceDecimals,
disabled_features:['header_resolutions','header_symbol_search', "volume_force_overlay"],
enabled_features:['header_indicators'],
overrides: tvStyle[this.theme],
toolbar_bg: this.theme == "light" ? "#f1f3f6" : "#222e3d",
custom_css_url: `/static/Kline/charting_library/static/css/tradingview_${
this.theme == "light" ? "white" : "black"
}.css`,
debug:false
}, },
this.getHistoryCallback
);
// //
this.model.widget.onChartReady(this.createBtns.bind(this)); getSymbol() {
} if (this.priceDecimals) {
}, return Promise.resolve({
pair_name: this.priceDecimals
});
} else {
return Exchange.getSymbolInfo({
symbol: this.symbol
});
}
},
//
unzip(b64Data) {
let u8 = window.atob(b64Data);
let jiya = window.pako.inflate(u8)
let str = this.Uint8ArrayToString(jiya);
return JSON.parse(str);
},
Uint8ArrayToString(fileData) {
var dataString = "";
for (var i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]);
}
return dataString;
},
//
getHistoryCallback(onLoadCallback) {
// solution
this.interval = this.model.interval;
watch: { // period
// let period = this.translateInterval2Period();
symbol(newVal, oldVal) { Option.getKline({
if (!oldVal) { symbol: this.symbol,
// period,
this.initTV(); size: 500,
} else { zip: 1
// })
this.model.subscribe([ .then(data => {
{ let list = [];
cmd: "unsub", // tv
msg: `Kline_${oldVal}_${this.interval}min` for (let item of this.unzip(data.data)) {
}, list.push({
{ time: item.id * 1000,
cmd: "sub", open: item.open,
msg: `Kline_${newVal}_${this.interval}min` high: item.high,
} low: item.low,
]); close: item.close,
volume: item.amount
});
}
let lastTime = list[list.length - 1].time;
console.log(lastTime, '--------')
onLoadCallback(list, lastTime);
})
.catch(err => {
});
},
//
initTV() {
//
this.model.subscribe([
{
cmd: "sub",
msg: `Kline_${this.symbol}_${this.interval}min`
}
]);
console.log(this.lang)
this.model.init(
{
//
symbol: this.symbol,
interval: this.interval,
container_id: "tradingview_lautin", //
height: 1000,
locale: this.lang, //
priceDecimals: this.priceDecimals,
disabled_features: ['header_resolutions', 'header_symbol_search', "volume_force_overlay",'timeframes_toolbar'],
enabled_features: ['header_indicators'],
overrides: tvStyle[this.theme],
toolbar_bg: this.theme == "light" ? "#f1f3f6" : "#222e3d",
custom_css_url: `/static/Kline/charting_library/static/css/tradingview_${
this.theme == "light" ? "white" : "black"
}.css`,
debug: false
},
this.getHistoryCallback
);
// symbol getSymbolgetBar //
this.model.setSymbol(newVal); this.model.widget.onChartReady(this.createBtns.bind(this));
} }
}, },
},
created() { watch: {
bus.$on('sendMsg', msg => { //
// console.info(msg) symbol(newVal, oldVal) {
// this.model = new Model(msg, this); if (!oldVal) {
this.model.conglian(msg) //
this.model.subscribe([ this.initTV();
{ } else {
cmd: "sub", //
msg: `Kline_${this.symbol}_${this.interval}min` this.model.subscribe([
{
cmd: "unsub",
msg: `Kline_${oldVal}_${this.interval}min`
},
{
cmd: "sub",
msg: `Kline_${newVal}_${this.interval}min`
}
]);
// symbol getSymbolgetBar
this.model.setSymbol(newVal);
} }
]); },
},
created() {
bus.$on('sendMsg', msg => {
// console.info(msg)
// this.model = new Model(msg, this);
this.model.conglian(msg)
this.model.subscribe([
{
cmd: "sub",
msg: `Kline_${this.symbol}_${this.interval}min`
}
]);
}); });
}, },
mounted() { mounted() {
console.info(this.socket) console.info(this.socket)
// ws // ws
this.model = new Model(this.socket, this); this.model = new Model(this.socket, this);
// //
if (this.symbol) this.initTV(); // mounted tv if (this.symbol) this.initTV(); // mounted tv
} }
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
#tradingview_lautin { #tradingview_lautin {
height: 550px; height: 550px;
} }
// //
#tradingview_878d2 .my-group { #tradingview_878d2 .my-group {
cursor: pointer !important; cursor: pointer !important;
border: 1px solid red !important; border: 1px solid red !important;
} }
</style> </style>

127
src/components/SecondaryNav.vue

@ -1,16 +1,16 @@
<template> <template>
<div> <div>
<div class="SecondaryNav" :class="{navBarWrap : criticalPos}"> <div class="SecondaryNav" :class="{navBarWrap : criticalPos}">
<div class="SecondaryNavWidth"> <div class="SecondaryNavWidth">
<ul class="SecondaryNavUl"> <ul class="SecondaryNavUl">
<li class="SecondaryNavList" v-for="(item,index) in itemList" :key="index"> <li class="SecondaryNavList" v-for="(item,index) in itemList" :key="index">
<router-link :to="item.url" active-class="SecondaryNavActive">{{item.label}}</router-link> <router-link :to="item.url" active-class="SecondaryNavActive">{{ item.label }}</router-link>
</li> </li>
</ul> </ul>
</div>
</div> </div>
<div v-if="isHolder" class="holder"></div>
</div> </div>
<div v-if="isHolder" class="holder"></div>
</div>
</template> </template>
<script> <script>
@ -29,9 +29,9 @@ export default {
methods: { methods: {
getWalletLinks() { getWalletLinks() {
this.itemList = [{ this.itemList = [{
url: `/wallet/assets/exchange`, url: `/wallet/assets/exchange`,
label: this.$t('common.assets'), label: this.$t('common.assets'),
}, },
{ {
url: `/wallet/assets/contract`, url: `/wallet/assets/contract`,
label: this.$t('common.contractaccount'), label: this.$t('common.contractaccount'),
@ -40,7 +40,7 @@ export default {
// url: `/wallet/otc`, // url: `/wallet/otc`,
// label: this.$t('otc.j1'), // label: this.$t('otc.j1'),
// }, // },
{ {
url: `/wallet/transfer`, url: `/wallet/transfer`,
label: this.$t('common.transferFunds'), label: this.$t('common.transferFunds'),
}, },
@ -51,38 +51,69 @@ export default {
{ {
url: `/wallet/funding`, url: `/wallet/funding`,
label: this.$t('common.rechargeWithdraw') label: this.$t('common.rechargeWithdraw')
},{ },
url: `/wallet/address`, // {
label: this.$t('common.addressManagement'), // url: `/wallet/address`,
} // label: this.$t('common.addressManagement'),
// }
]; ];
}, },
getProfileLinks() { getProfileLinks() {
this.itemList = [{ this.itemList = [
url: `/profile/index`, {
label: this.$t('common.accountInformation'), url: `/profile/index`,
}, { label: this.$t('common.accountInformation'),
url: `/profile/certification`, },
label: this.$t('common.auth') // {
}, // url: `/profile/certification`,
// { // label: this.$t('common.auth')
// url: `/profile/invite`, // },
// label: this.$t('common.invitationReward') // {
// }, // url: '/setting',
// { // label: this.$t('nav.security')
// url: `/profile/login-history`, // },
// label: this.$t('common.visitHistory') // {
// } // url: `/profile/invite`,
// label: this.$t('common.invitationReward')
// },
// {
// url: `/profile/login-history`,
// label: this.$t('common.visitHistory')
// }
]
},
getSettingsLinks() {
this.itemList = [
{
url: `/profile/index`,
label: this.$t('common.accountInformation'),
},
// {
// url: `/profile/certification`,
// label: this.$t('common.auth')
// },
// {
// url: '/setting',
// label: this.$t('nav.security')
// },
// {
// url: `/profile/invite`,
// label: this.$t('common.invitationReward')
// },
// {
// url: `/profile/login-history`,
// label: this.$t('common.visitHistory')
// }
] ]
}, },
getOrderLinks() { getOrderLinks() {
this.itemList = [{ this.itemList = [{
url: `/order/exchange`, url: `/order/exchange`,
label: this.$t('common.spotConsignment'), label: this.$t('common.spotConsignment'),
}, },
// { // {
// url: `/order/option`, // url: `/order/option`,
// label: this.$t('common.optionOrders'), // label: this.$t('common.optionOrders'),
@ -102,11 +133,12 @@ export default {
College.getCategoryList().then(list => { College.getCategoryList().then(list => {
list.forEach(item => { list.forEach(item => {
this.itemList.push({ this.itemList.push({
url : `/college/list/${item.id}`, url: `/college/list/${item.id}`,
label : item.name label: item.name
}) })
}) })
}).catch(err => {}); }).catch(err => {
});
}, },
@ -114,14 +146,15 @@ export default {
College.getServiceList().then(list => { College.getServiceList().then(list => {
list.forEach(item => { list.forEach(item => {
this.itemList.push({ this.itemList.push({
url : `/service/${item.id}`, url: `/service/${item.id}`,
label : item.name label: item.name
}) })
}) })
}).catch(err => {}); }).catch(err => {
});
}, },
getOtcList(){ getOtcList() {
this.itemList = [ this.itemList = [
{ {
url: `/otc/index`, url: `/otc/index`,
label: this.$t('otc.j8'), label: this.$t('otc.j8'),
@ -168,6 +201,10 @@ export default {
this.getWalletLinks(); this.getWalletLinks();
break; break;
case path.startsWith('setting'): //
this.getSettingsLinks();
break;
case path.startsWith('profile'): // case path.startsWith('profile'): //
this.getProfileLinks(); this.getProfileLinks();
break; break;
@ -204,7 +241,7 @@ export default {
@include flexible(row, center, center); @include flexible(row, center, center);
// background: #f5f9fc; // background: #f5f9fc;
background : #e9e9e9; background: #e9e9e9;
.SecondaryNavWidth { .SecondaryNavWidth {
width: 1280px; width: 1280px;

8
src/i18n/cn.json

@ -38,6 +38,7 @@
"c9":"简介" "c9":"简介"
}, },
"common": { "common": {
"announcement": "公告",
"a3":"申购记录", "a3":"申购记录",
"option": "期权交易", "option": "期权交易",
"exchange": "币币交易", "exchange": "币币交易",
@ -157,7 +158,7 @@
"auth": "实名认证", "auth": "实名认证",
"invitationReward": "邀请奖励", "invitationReward": "邀请奖励",
"visitHistory": "访问记录", "visitHistory": "访问记录",
"noviceTutorial": "新手教程", "noviceTutorial": "為什麽選擇我們?",
"tradingStrategy": "交易策略", "tradingStrategy": "交易策略",
"industryResearch": "行业研究", "industryResearch": "行业研究",
"blockchainDictionary": "区块链词典", "blockchainDictionary": "区块链词典",
@ -790,7 +791,7 @@
"projectWarmUp": "项目预热", "projectWarmUp": "项目预热",
"startSubscription": "开始申购", "startSubscription": "开始申购",
"endOfSubscription": "结束申购", "endOfSubscription": "结束申购",
"announceResults": "公布结果", "announceResults": "上市交易",
"projectCetails": "项目详情", "projectCetails": "项目详情",
"useOrNot": "是否使用", "useOrNot": "是否使用",
"subscribe": "申购", "subscribe": "申购",
@ -1048,12 +1049,11 @@
"TopEncryptionRiskManagement": "顶级加密风控管理", "TopEncryptionRiskManagement": "顶级加密风控管理",
"EscortYourPropertySafety": "为您的财产安全保驾护航", "EscortYourPropertySafety": "为您的财产安全保驾护航",
"BuyCoins": "买币", "BuyCoins": "买币",
"ProvidedByTheExperimentalCenter": "由Fire phoenix实验中心提供", "ProvidedByTheExperimentalCenter": "由TOPCS实验中心提供",
"StartCurrencyTradingNow": "立刻开始货币交易", "StartCurrencyTradingNow": "立刻开始货币交易",
"ScanTheQRCodeBelowToDownload": "扫描下方二维码下载", "ScanTheQRCodeBelowToDownload": "扫描下方二维码下载",
"AndroidScanCodeDownload": "Android扫码下载", "AndroidScanCodeDownload": "Android扫码下载",
"IOSScanCodeDownload": "IOS扫码下载", "IOSScanCodeDownload": "IOS扫码下载",
"UseNow": "现在使用" "UseNow": "现在使用"
} }
} }

79
src/i18n/de.json

@ -38,9 +38,10 @@
"c9":"kurze Einführung" "c9":"kurze Einführung"
}, },
"common": { "common": {
"announcement": "Bekanntmachung",
"a3":"Aufzeichnungen über den Kauf", "a3":"Aufzeichnungen über den Kauf",
"option":"Handel mit Optionen", "option":"Handel mit Optionen",
"exchange":"Transaktion in Währung", "exchange":"Devisenhandel",
"markets":"Angebot", "markets":"Angebot",
"blogs":"Blog", "blogs":"Blog",
"news":"Informationen über die Industrie", "news":"Informationen über die Industrie",
@ -134,7 +135,7 @@
"logOut":"Loggen Sie sich", "logOut":"Loggen Sie sich",
"homepage":"Home Page", "homepage":"Home Page",
"application":"Anwendung in Währung", "application":"Anwendung in Währung",
"purchase":"für den Kauf", "purchase":"Abonnement",
"accountInformation":"Informationen zum Konto", "accountInformation":"Informationen zum Konto",
"myWallet":"Meine Brieftasche", "myWallet":"Meine Brieftasche",
"commissionOrder":"Anordnung der Kommission", "commissionOrder":"Anordnung der Kommission",
@ -147,7 +148,7 @@
"order":"Bestellung", "order":"Bestellung",
"spotConsignment":"Kommission vor Ort", "spotConsignment":"Kommission vor Ort",
"optionOrders":"Bestellung der Option", "optionOrders":"Bestellung der Option",
"perpetualContract":"Dauerhafter Vertrag", "perpetualContract":"Unbefristeter Vertrag",
"foreignContract":"Vertrag über den Devisenhandel", "foreignContract":"Vertrag über den Devisenhandel",
"notCertified":"Nicht zertifiziert", "notCertified":"Nicht zertifiziert",
"notData":"Keine Daten verfügbar", "notData":"Keine Daten verfügbar",
@ -262,7 +263,8 @@
"securityVerification":"Überprüfung der Sicherheit", "securityVerification":"Überprüfung der Sicherheit",
"disagree":"Sie haben den Bedingungen noch nicht zugestimmt.", "disagree":"Sie haben den Bedingungen noch nicht zugestimmt.",
"registrationSuccess":"Erfolgreich registriert, auf Anmeldeseite überspringen", "registrationSuccess":"Erfolgreich registriert, auf Anmeldeseite überspringen",
"referrer":"Referenzen", "referrer": "Geben Sie den Institutionscode ein (erforderlich)",
"referrer1": "Bitte geben Sie den Institutionscode ein",
"optional":"Optional", "optional":"Optional",
"password":"Passwort", "password":"Passwort",
"login":"Melden Sie sich", "login":"Melden Sie sich",
@ -625,8 +627,7 @@
"profile": { "profile": {
"realName":"Authentifizierung des realen Namens", "realName":"Authentifizierung des realen Namens",
"primaryCertification":"Primäre Zertifizierung", "primaryCertification":"Primäre Zertifizierung",
"advancedCertification1": "Erweiterter Zertifizierungsantrag", "advancedCertification":"Fortgeschrittener Zertifizierungsantrag eingereicht",
"advancedCertification2":"Fortgeschrittener Zertifizierungsantrag eingereicht",
"toExamine":"zu untersuchen", "toExamine":"zu untersuchen",
"fullName":"vollständiger Name", "fullName":"vollständiger Name",
"legal":"legal", "legal":"legal",
@ -704,7 +705,7 @@
"instantDividend":"Genießen Sie Dividenden", "instantDividend":"Genießen Sie Dividenden",
"invitationInformation":"Informationen zur Einladung", "invitationInformation":"Informationen zur Einladung",
"invitationLink":"Link zur Einladung", "invitationLink":"Link zur Einladung",
"invitationCode":"Code der Einladung", "invitationCode":"Institutionscode",
"registeredUser":"Registrierte Benutzer", "registeredUser":"Registrierte Benutzer",
"accountNumber":"Nummer des Kontos", "accountNumber":"Nummer des Kontos",
"registrationTime":"Zeit der Registrierung", "registrationTime":"Zeit der Registrierung",
@ -775,7 +776,8 @@
"pleaseConfirmPassword":"Bitte bestätigen Sie das Passwort", "pleaseConfirmPassword":"Bitte bestätigen Sie das Passwort",
"operationSuccess":"Operation erfolgreich", "operationSuccess":"Operation erfolgreich",
"combination":"Passwörter erfordern eine Kombination von Buchstaben und Zahlen", "combination":"Passwörter erfordern eine Kombination von Buchstaben und Zahlen",
"changeSuccess":"Geändert erfolgreich" "changeSuccess":"Geändert erfolgreich",
"passwordChangePrompt": "Es wird empfohlen, dass Sie Ihr Passwort regelmäßig ändern, um die Sicherheit Ihres Kontos zu gewährleisten"
}, },
"purchase": { "purchase": {
"sendPrice":"Preis der Emission", "sendPrice":"Preis der Emission",
@ -790,10 +792,10 @@
"projectWarmUp":"Projekt aufwärmen", "projectWarmUp":"Projekt aufwärmen",
"startSubscription":"Abonnement starten", "startSubscription":"Abonnement starten",
"endOfSubscription":"Schließen Sie das Abonnement", "endOfSubscription":"Schließen Sie das Abonnement",
"announceResults":"Veröffentlichen von Ergebnissen", "announceResults":"aufgeführte Transaktion",
"projectCetails":"Details des Projekts", "projectCetails":"Details des Projekts",
"useOrNot":"Verwenden oder nicht", "useOrNot":"Verwenden oder nicht",
"subscribe":"für den Kauf", "subscribe":"antrag",
"prompt":"Tipps", "prompt":"Tipps",
"subscribeSuccess":"Erfolgreicher Kauf" "subscribeSuccess":"Erfolgreicher Kauf"
}, },
@ -804,7 +806,7 @@
"a3":"verfügbar", "a3":"verfügbar",
"a4":"Rand der Position", "a4":"Rand der Position",
"a5":"Einfrieren der Kommission", "a5":"Einfrieren der Kommission",
"a6":"Nicht realisierter Gewinn und Verlust", "a6":"Gewinn-und Verlust",
"a7":"Risiko rate", "a7":"Risiko rate",
"a8":"Geschätzte starke Parität", "a8":"Geschätzte starke Parität",
"a9":"Vertrag", "a9":"Vertrag",
@ -815,7 +817,7 @@
"b4":"Gesamtbetrag der anvertrauten Mittel", "b4":"Gesamtbetrag der anvertrauten Mittel",
"b5":"Durchschnittlicher Transaktionspreis", "b5":"Durchschnittlicher Transaktionspreis",
"b6":"Preis der Kommission", "b6":"Preis der Kommission",
"b7":"Bindung", "b7":"Das versicherungsgeld.",
"b8":"Service berechnen", "b8":"Service berechnen",
"b9":"Zustand", "b9":"Zustand",
"c0":"Betrieb", "c0":"Betrieb",
@ -907,7 +909,8 @@
"k6":"Alle gleich, Erfolg", "k6":"Alle gleich, Erfolg",
"k7":"umgekehrter Erfolg", "k7":"umgekehrter Erfolg",
"k8": "Bitte melden Sie sich zuerst an", "k8": "Bitte melden Sie sich zuerst an",
"k9":"Bitte geben Sie den Abonnement-Code ein" "k9":"Bitte geben Sie den Abonnement-Code ein",
"l1": "Verhältnis erhöhen"
}, },
"otc": { "otc": {
"a0":"Bitte wählen Sie den Transaktionstyp", "a0":"Bitte wählen Sie den Transaktionstyp",
@ -1036,39 +1039,19 @@
"m3":"Ende der Bestellung", "m3":"Ende der Bestellung",
"m4":"Stornierung der Bestellung" "m4":"Stornierung der Bestellung"
}, },
"cxiNewText":{ "addinfo": {
"a0": "Top 10", "MarketTrend": "Markttrend",
"a1": "5 Millionen+", "HourlyCurrencyUpdates": "Stündliche Währungsaktualisierungen",
"a2": "< 0.10%", "_24HoursUpsAndDowns": "24 Stunden Höhen und Tiefen",
"a3": "200+", "TopEncryptionRiskManagement": "顶级加密风控管理",
"a4": "Globales Ranking", "EscortYourPropertySafety": "为您的财产安全保驾护航",
"a5": "Benutzer vertrauen uns", "BuyCoins": "买币",
"a6": "Extrem niedrige Gebühren", "ProvidedByTheExperimentalCenter": "由TOPCS实验中心提供",
"a7": "Länder", "StartCurrencyTradingNow": "立刻开始货币交易",
"a21": "Jetzt Geld verdienen", "ScanTheQRCodeBelowToDownload": "扫描下方二维码下载",
"a22": "Erstellen Sie ein persönliches Kryptowährungsportfolio", "AndroidScanCodeDownload": "Android扫码下载",
"a23": "Kaufen, handeln und halten Sie über 100 Kryptowährungen", "IOSScanCodeDownload": "IOS扫码下载",
"a24": "Laden Sie Ihr Konto auf", "UseNow": "Jetzt Benutzen"
"a25": "Melden Sie sich per E-Mail an",
"a38": "Starten Sie Transaktionen jederzeit und überall.", }
"a39": "Beginnen Sie jederzeit sicher und bequem mit dem Handel über unsere APP und Webseite",
"a40": "IOS- und Android-Scancode herunterladen",
"a41": "Vertrauenswürdige Handelsplattform für Kryptowährungen",
"a42": "Wir setzen uns dafür ein, die Sicherheit der Benutzer mit strengen Protokollen und branchenführenden technischen Maßnahmen zu gewährleisten.",
"a43": "Benutzersicherheits-Asset-Fonds",
"a44": "Wir speichern 10 % aller Transaktionsgebühren in sicheren Vermögensfonds, um einen teilweisen Schutz der Benutzergelder zu gewährleisten",
"a45": "Personalisierte Zugangskontrolle",
"a46": "Die personalisierte Zugriffskontrolle schränkt die Geräte und Adressen ein, die auf persönliche Konten zugreifen, sodass Benutzer keine Sorgen haben müssen.",
"a47": "Erweiterte Datenverschlüsselung",
"a48": "Persönliche Transaktionsdaten werden durch Ende-zu-Ende-Verschlüsselung gesichert und der Zugriff auf persönliche Informationen ist auf den Einzelnen beschränkt.",
"a57": "Klicken Sie hier, um zu gehen",
"a71": "Einsteigerhandbuch ",
"a72": "Beginnen Sie sofort mit dem Erlernen des digitalen Devisenhandels ",
"a77": "Wie kaufe ich digitale Währung",
"a78": "Wie verkauft man digitale Währungen ",
"a79": "So handeln Sie mit digitalen Währungen",
"a80": "Marktplatz",
"a81": "24-Stunden-Markttrend",
"a82": "Fügen Sie Ihrem Wallet Kryptowährungsgelder hinzu und beginnen Sie sofort mit dem Handel"
}
} }

77
src/i18n/en.json

@ -38,9 +38,10 @@
"c9":"brief introduction" "c9":"brief introduction"
}, },
"common": { "common": {
"announcement": "Announcement",
"a3":"Purchase records", "a3":"Purchase records",
"option": "Option", "option": "Option",
"exchange": "Spot Trading", "exchange": "Currency Trading",
"markets": "Markets", "markets": "Markets",
"helps": "Help", "helps": "Help",
"course": "Support Center", "course": "Support Center",
@ -132,7 +133,7 @@
"logOut": "Log out", "logOut": "Log out",
"homepage": "Home", "homepage": "Home",
"application": "Currency Application", "application": "Currency Application",
"purchase": "Purchase", "purchase": "Subscription",
"accountInformation": "Account", "accountInformation": "Account",
"myWallet": "Wallet", "myWallet": "Wallet",
"commissionOrder": "Orders", "commissionOrder": "Orders",
@ -145,7 +146,7 @@
"order": "Orders", "order": "Orders",
"spotConsignment": "Exchange Orders", "spotConsignment": "Exchange Orders",
"optionOrders": "Option Orders", "optionOrders": "Option Orders",
"perpetualContract": "Derivatives", "perpetualContract": "Perpetual Contract",
"foreignContract": "Crypto FX Contract", "foreignContract": "Crypto FX Contract",
"notCertified": "No Certification", "notCertified": "No Certification",
"notData": "No open orders", "notData": "No open orders",
@ -155,7 +156,7 @@
"auth": "Authentication", "auth": "Authentication",
"invitationReward": "Invite Reward ", "invitationReward": "Invite Reward ",
"visitHistory": "visit history", "visitHistory": "visit history",
"noviceTutorial": "Novice tutorial", "noviceTutorial": "Why choose us?",
"tradingStrategy": "Trading Strategy", "tradingStrategy": "Trading Strategy",
"industryResearch": "Industry Research", "industryResearch": "Industry Research",
"blockchainDictionary": "Blockchain Dictionary", "blockchainDictionary": "Blockchain Dictionary",
@ -277,8 +278,8 @@
"phoneCorrect": "Please make sure the mobile phone and area code are correct", "phoneCorrect": "Please make sure the mobile phone and area code are correct",
"securePhone": "Please make sure your phone signal is stable", "securePhone": "Please make sure your phone signal is stable",
"verCode": "Verify Code", "verCode": "Verify Code",
"referrer": "Enter your referral code (Required)", "referrer": "Enter institution code (required)",
"referrer1": "Please fill in by the recommender", "referrer1": "Please enter institution code",
"phoneNum": "Phone Number", "phoneNum": "Phone Number",
"enterPhoneNum": "Enter Phone Number", "enterPhoneNum": "Enter Phone Number",
"referral": "Referral Code ", "referral": "Referral Code ",
@ -692,8 +693,7 @@
"country1":"Please enter your country", "country1":"Please enter your country",
"realName": "Real Name Authentication", "realName": "Real Name Authentication",
"primaryCertification": "primary certification", "primaryCertification": "primary certification",
"advancedCertification1": "Advanced Certification Application", "advancedCertification": "Submit advanced certification application",
"advancedCertification2": "Submit advanced certification application",
"toExamine": "audit", "toExamine": "audit",
"fullName": "Name", "fullName": "Name",
"legal": "Legal", "legal": "Legal",
@ -771,7 +771,7 @@
"instantDividend": "Instantiate Dividend", "instantDividend": "Instantiate Dividend",
"invitationInformation": "Invitation Information", "invitationInformation": "Invitation Information",
"invitationLink": "Invitation Link", "invitationLink": "Invitation Link",
"invitationCode": "Invitation Code", "invitationCode": "Institution code",
"registeredUser": "Registered User", "registeredUser": "Registered User",
"accountNumber": "Account", "accountNumber": "Account",
"registrationTime": "Registration Time", "registrationTime": "Registration Time",
@ -860,10 +860,10 @@
"projectWarmUp": "Project preheat", "projectWarmUp": "Project preheat",
"startSubscription": "Apply start", "startSubscription": "Apply start",
"endOfSubscription": "Apply close", "endOfSubscription": "Apply close",
"announceResults": "Results release", "announceResults": "listed transaction",
"projectCetails": "Project details", "projectCetails": "Project details",
"useOrNot": "Using?", "useOrNot": "Using?",
"subscribe": "Apply", "subscribe": "application",
"prompt": "Tips", "prompt": "Tips",
"subscribeSuccess": "Apply Success" "subscribeSuccess": "Apply Success"
}, },
@ -874,10 +874,10 @@
"a3": "Available Funds", "a3": "Available Funds",
"a4": "position margin", "a4": "position margin",
"a5": "Entrust freeze", "a5": "Entrust freeze",
"a6": "Unrealized PNL", "a6": "Profit and loss",
"a7": "Risk Rate", "a7": "Risk Rate",
"a8": "Liq.Price", "a8": "Liq.Price",
"a9": "Symbol", "a9": "Contract",
"b0": "Leverage", "b0": "Leverage",
"b1": "Time", "b1": "Time",
"b2": "Transaction Type", "b2": "Transaction Type",
@ -885,7 +885,7 @@
"b4": "Amount", "b4": "Amount",
"b5": "Avg.", "b5": "Avg.",
"b6": "Price", "b6": "Price",
"b7": "Margin", "b7": "Insurance",
"b8": "Fee", "b8": "Fee",
"b9": "Status", "b9": "Status",
"c0": "Operation", "c0": "Operation",
@ -931,14 +931,14 @@
"g0": "Buy", "g0": "Buy",
"g1": "Sell", "g1": "Sell",
"g2": "Sum", "g2": "Sum",
"g3": "Last Price", "g3": "Latest price",
"g4": "Details", "g4": "Details",
"g5": "History", "g5": "History",
"g6": "Deal time", "g6": "Deal time",
"g7": "Position", "g7": "Position",
"g8": "Hirakura quantity", "g8": "Hirakura quantity",
"g9": "Entry Price", "g9": "Average opening price",
"h0": "ROE %", "h0": "Yield",
"h1": "Close the position at market price", "h1": "Close the position at market price",
"h2": "Whether to balance at market price", "h2": "Whether to balance at market price",
"h3": "Full Ping", "h3": "Full Ping",
@ -951,12 +951,12 @@
"i0": "Positions", "i0": "Positions",
"i1": "Open Orders", "i1": "Open Orders",
"i2": "Order History", "i2": "Order History",
"i3": "Side", "i3": "Direction",
"i4": "Open Long", "i4": "Open Long",
"i5": "Open short", "i5": "Open short",
"i6": "Only display current", "i6": "Only display current",
"i7": "TP", "i7": "Take Profit",
"i8": "SL", "i8": "Stop Loss",
"i9": "TP/SL", "i9": "TP/SL",
"j0": "Realized PNL", "j0": "Realized PNL",
"j1": "Latest Transaction Price", "j1": "Latest Transaction Price",
@ -1115,46 +1115,11 @@
"TopEncryptionRiskManagement": "TOP ENCRYPTION RISK MANAGEMENT", "TopEncryptionRiskManagement": "TOP ENCRYPTION RISK MANAGEMENT",
"EscortYourPropertySafety": "ESCORT YOUR PROPERTY SAFETY", "EscortYourPropertySafety": "ESCORT YOUR PROPERTY SAFETY",
"BuyCoins": "BuyCoins", "BuyCoins": "BuyCoins",
"ProvidedByTheExperimentalCenter": "Courtesy of Fire phoenix Experiment Center", "ProvidedByTheExperimentalCenter": "Courtesy of TOPCS Experiment Center",
"StartCurrencyTradingNow": "Start currency trading now", "StartCurrencyTradingNow": "Start currency trading now",
"ScanTheQRCodeBelowToDownload": "Scan the QR code below to download", "ScanTheQRCodeBelowToDownload": "Scan the QR code below to download",
"AndroidScanCodeDownload": "Android scan code", "AndroidScanCodeDownload": "Android scan code",
"IOSScanCodeDownload": "IOS scan code", "IOSScanCodeDownload": "IOS scan code",
"UseNow": "USE NOW" "UseNow": "USE NOW"
},
"cxiNewText":{
"a0": "Top 10",
"a1": "5 million+",
"a2": "< 0.10%",
"a3": "200+",
"a4": "Global Ranking",
"a5": "Users trust us",
"a6": "Ultra-Low Fees",
"a7": "Countries",
"a21": "Earn money now",
"a22": "Create a Personal Cryptocurrency Portfolio",
"a23": "Buy, trade and hold 100+ cryptocurrencies",
"a24": "Top up your account",
"a25": "Sign up by email",
"a38": "Start transactions anytime, anywhere.",
"a39": "Start trading safely and conveniently at any time through our APP and webpage",
"a40": "IOS and Android scan code download",
"a41": "Trustworthy cryptocurrency trading platform",
"a42": "We are committed to ensuring the safety of users with strict protocols and industry-leading technical measures.",
"a43": "User security asset funds",
"a44": "We store 10% of all transaction fees in safe asset funds to provide partial protection for user funds",
"a45": "Personalized Access Control",
"a46": "Personalized access control restricts the devices and addresses that access personal accounts, so that users have no worries.",
"a47": "Advanced Data Encryption",
"a48": "Personal transaction data is secured through end-to-end encryption, and access to personal information is restricted to the individual.",
"a57": "Click to go",
"a71": "Beginner's Guide ",
"a72": "Start digital currency trading learning immediately ",
"a77": "How to buy digital currency ",
"a78": "How to sell digital currency ",
"a79": "How to Trade Digital Currencies",
"a80": "Market place",
"a81": "24 hours market trend",
"a82": "Add cryptocurrency funds to your wallet and start trading instantly"
} }
} }

2059
src/i18n/fra.json

File diff suppressed because it is too large

2058
src/i18n/it.json

File diff suppressed because it is too large

2055
src/i18n/jp.json

File diff suppressed because it is too large

2055
src/i18n/kor.json

File diff suppressed because it is too large

2059
src/i18n/pt.json

File diff suppressed because it is too large

75
src/i18n/spa.json

@ -38,9 +38,10 @@
"c9":"Introducción" "c9":"Introducción"
}, },
"common": { "common": {
"announcement": "Anuncio",
"a3":"Registro de pedidos", "a3":"Registro de pedidos",
"option":"Comercio de opciones", "option":"Comercio de opciones",
"exchange":"Transacciones monetarias", "exchange":"Comercio de Divisas",
"markets":"Cotización", "markets":"Cotización",
"blogs":"Blog", "blogs":"Blog",
"news":"Información de la industria", "news":"Información de la industria",
@ -262,7 +263,8 @@
"securityVerification":"Verificación de la seguridad", "securityVerification":"Verificación de la seguridad",
"disagree":"Aún no ha aceptado los términos", "disagree":"Aún no ha aceptado los términos",
"registrationSuccess":"Registro exitoso, saltando a la página de inicio de sesión", "registrationSuccess":"Registro exitoso, saltando a la página de inicio de sesión",
"referrer":"Recomendador", "referrer": "Ingrese el código de la institución (requerido)",
"referrer1": "Por favor ingrese el código de la institución",
"optional":"Opcional", "optional":"Opcional",
"password":"Contraseña", "password":"Contraseña",
"login":"Iniciar sesión", "login":"Iniciar sesión",
@ -625,8 +627,7 @@
"profile": { "profile": {
"realName":"Autenticación del nombre real", "realName":"Autenticación del nombre real",
"primaryCertification":"Certificación primaria", "primaryCertification":"Certificación primaria",
"advancedCertification1": "Solicitud de Certificación Avanzada", "advancedCertification":"Solicitud de acreditación avanzada presentada",
"advancedCertification2":"Solicitud de acreditación avanzada presentada",
"toExamine":"Auditoría", "toExamine":"Auditoría",
"fullName":"Nombre", "fullName":"Nombre",
"legal":"Legal", "legal":"Legal",
@ -704,7 +705,7 @@
"instantDividend":"Derecho a un dividendo", "instantDividend":"Derecho a un dividendo",
"invitationInformation":"Mensaje de invitación", "invitationInformation":"Mensaje de invitación",
"invitationLink":"Enlace de invitación", "invitationLink":"Enlace de invitación",
"invitationCode":"Código de invitación", "invitationCode":"Código Institucional",
"registeredUser":"Usuarios registrados", "registeredUser":"Usuarios registrados",
"accountNumber":"Número de cuenta", "accountNumber":"Número de cuenta",
"registrationTime":"Tiempo de registro", "registrationTime":"Tiempo de registro",
@ -775,7 +776,8 @@
"pleaseConfirmPassword":"Por favor, confirme la contraseña", "pleaseConfirmPassword":"Por favor, confirme la contraseña",
"operationSuccess":"Operación exitosa", "operationSuccess":"Operación exitosa",
"combination":"Las contraseñas requieren combinaciones de letras y números", "combination":"Las contraseñas requieren combinaciones de letras y números",
"changeSuccess":"Modificación exitosa" "changeSuccess":"Modificación exitosa",
"passwordChangePrompt": "Se recomienda que cambie su contraseña periódicamente para proteger la seguridad de su cuenta."
}, },
"purchase": { "purchase": {
"sendPrice":"Precio de emisión", "sendPrice":"Precio de emisión",
@ -790,7 +792,7 @@
"projectWarmUp":"Precalentamiento del proyecto", "projectWarmUp":"Precalentamiento del proyecto",
"startSubscription":"Inicio de la compra", "startSubscription":"Inicio de la compra",
"endOfSubscription":"Cierre de la suscripción", "endOfSubscription":"Cierre de la suscripción",
"announceResults":"Publicación de los resultados", "announceResults":"Transacción listada",
"projectCetails":"Detalles del proyecto", "projectCetails":"Detalles del proyecto",
"useOrNot":"Usar o no", "useOrNot":"Usar o no",
"subscribe":"Suscripción", "subscribe":"Suscripción",
@ -804,7 +806,7 @@
"a3":"Disponible", "a3":"Disponible",
"a4":"Margen de posición", "a4":"Margen de posición",
"a5":"Delegación congelada", "a5":"Delegación congelada",
"a6":"Ganancias y pérdidas no realizadas", "a6":"Ganancia y perdida",
"a7":"Tasa de riesgo", "a7":"Tasa de riesgo",
"a8":"Estimación de las fuertes paridades", "a8":"Estimación de las fuertes paridades",
"a9":"Contrato", "a9":"Contrato",
@ -815,7 +817,7 @@
"b4":"Total confiado", "b4":"Total confiado",
"b5":"Precio medio de transacción", "b5":"Precio medio de transacción",
"b6":"Precio confiado", "b6":"Precio confiado",
"b7":"Margen", "b7":"Dinero del seguro",
"b8":"Gastos de tramitación", "b8":"Gastos de tramitación",
"b9":"Estado", "b9":"Estado",
"c0":"Operaciones", "c0":"Operaciones",
@ -868,7 +870,7 @@
"g7":"Posición", "g7":"Posición",
"g8":"Cantidad nivelada", "g8":"Cantidad nivelada",
"g9":"Precio medio de apertura", "g9":"Precio medio de apertura",
"h0":"Tasa de rendimiento", "h0":"rentabilidad",
"h1":"Cierre de mercado", "h1":"Cierre de mercado",
"h2":"Si el precio de mercado es plano", "h2":"Si el precio de mercado es plano",
"h3":"Todo plano", "h3":"Todo plano",
@ -907,7 +909,9 @@
"k6":"éxito total", "k6":"éxito total",
"k7":"éxito inverso", "k7":"éxito inverso",
"k8":"Por favor, inicie sesión para solicitar", "k8":"Por favor, inicie sesión para solicitar",
"k9":"Introduzca el Código de suscripción " "k9":"Introduzca el Código de suscripción ",
"l4": "valoración actual",
"l1": "Relación de aumento"
}, },
"otc": { "otc": {
"a0":"Por favor, seleccione el tipo de transacción", "a0":"Por favor, seleccione el tipo de transacción",
@ -1036,39 +1040,18 @@
"m3":"Fin del pedido", "m3":"Fin del pedido",
"m4":"Orden cancelada" "m4":"Orden cancelada"
}, },
"cxiNewText":{ "addinfo": {
"a0": "10 mejores", "MarketTrend": "tendencia del mercado",
"a1": "5 millones+", "HourlyCurrencyUpdates": "Actualizaciones de moneda por hora",
"a2": "< 0.10%", "_24HoursUpsAndDowns": "24 horas altibajos",
"a3": "200+", "TopEncryptionRiskManagement": "顶级加密风控管理",
"a4": "Clasificación mundial", "EscortYourPropertySafety": "为您的财产安全保驾护航",
"a5": "Los usuarios confían en nosotros", "BuyCoins": "买币",
"a6": "Tarifas ultra bajas", "ProvidedByTheExperimentalCenter": "由TOPCS实验中心提供",
"a7": "Países", "StartCurrencyTradingNow": "立刻开始货币交易",
"a21": "Obtener ingresos inmediatamente", "ScanTheQRCodeBelowToDownload": "扫描下方二维码下载",
"a22": "Crear una cartera personal de criptomonedas", "AndroidScanCodeDownload": "Android扫码下载",
"a23": "Compre, intercambie y mantenga más de 100 criptomonedas", "IOSScanCodeDownload": "IOS扫码下载",
"a24": "Recargar la cuenta", "UseNow": "usar ahora"
"a25": "Registrarse por correo electrónico", }
"a38": "Abrir transacciones en cualquier momento y en cualquier lugar.",
"a39": "Comience a operar de manera segura y conveniente en cualquier momento a través de nuestra aplicación y página web",
"a40": "Descarga de código de escaneo de ios y Android",
"a41": "Una plataforma de negociación de criptomonedas de confianza",
"a42": "Estamos comprometidos a garantizar la seguridad de los usuarios con estrictos protocolos y medidas técnicas líderes en la industria.",
"a43": "Fondos de activos de seguridad del usuario",
"a44": "Almacenamos el 10% de todas las tarifas de transacción en fondos de activos seguros para brindar protección parcial a los fondos de los usuarios",
"a45": "Control de acceso personalizado",
"a46": "El control de acceso personalizado restringe el acceso a dispositivos y direcciones de cuentas personales, para que los usuarios no tengan preocupaciones.",
"a47": "Cifrado de datos avanzado",
"a48": "Los datos de transacciones personales están protegidos por encriptación de extremo a extremo y solo la persona puede acceder a la información personal.",
"a57": "Haga clic para ir",
"a71": "Guía para principiantes ",
"a72": "Comience a aprender a operar con divisas digitales de inmediato ",
"a77": "Cómo comprar moneda digital ",
"a78": "Cómo vender moneda digital ",
"a79": "Cómo operar con monedas digitales",
"a80": "Mercado",
"a81": "Tendencia del mercado de 24 horas",
"a82": "Agregue fondos de criptomonedas a su billetera y comience a operar al instante"
}
} }

2123
src/i18n/tr.json

File diff suppressed because it is too large

211
src/i18n/tw.json

@ -8,37 +8,38 @@
"fundHistory": "充提記錄", "fundHistory": "充提記錄",
"security": "帳號安全", "security": "帳號安全",
"invite": "邀請好友", "invite": "邀請好友",
"login":"請先登錄進行操作", "login": "請先登錄進行操作",
"tips":"系統提示", "tips": "系統提示",
"set":"請先設定一個合適的價格", "set": "請先設定一個合適的價格",
"a1":"價格不能為空或零", "a1": "價格不能為空或零",
"a2":"數量不能為空或零", "a2": "數量不能為空或零",
"a3":"數量不能少於", "a3": "數量不能少於",
"a4":"買入的市價單總量不能為空或零", "a4": "買入的市價單總量不能為空或零",
"a5":"買入的市價單總量不能小於", "a5": "買入的市價單總量不能小於",
"a6":"賣出的市價單數量不能為空或零", "a6": "賣出的市價單數量不能為空或零",
"a7":"賣出的市價單數量不能少於", "a7": "賣出的市價單數量不能少於",
"a8":"止盈止損單觸發價不能為空或零", "a8": "止盈止損單觸發價不能為空或零",
"a9":"止盈止損-限價單限價不能為空或零", "a9": "止盈止損-限價單限價不能為空或零",
"b1":"止盈止損-限價單數量不能為空或零", "b1": "止盈止損-限價單數量不能為空或零",
"b2":"止盈止損-市價單觸發價不能為空或零", "b2": "止盈止損-市價單觸發價不能為空或零",
"b3":"止盈止損-市價買入的總量不能為空或零", "b3": "止盈止損-市價買入的總量不能為空或零",
"b5":"止盈止損-市價買入的總量不能少於", "b5": "止盈止損-市價買入的總量不能少於",
"b6":"止盈止損-市價賣出的數量不能為空或零", "b6": "止盈止損-市價賣出的數量不能為空或零",
"b7":"止盈止損-市價賣出的數量不能小於", "b7": "止盈止損-市價賣出的數量不能小於",
"b8":"頁面斷開連接,請重繪或稍後再試!", "b8": "頁面斷開連接,請重繪或稍後再試!",
"c1": "購買{amount}枚{name}代幣可獲{rate}%獎勵", "c1": "購買{amount}枚{name}代幣可獲{rate}%獎勵",
"c2": "申購活動", "c2": "申購活動",
"c3":"發行總量", "c3": "發行總量",
"c4":"流通總量", "c4": "流通總量",
"c5":"發行價格", "c5": "發行價格",
"c6":"發行時間", "c6": "發行時間",
"c7":"白皮書地址", "c7": "白皮書地址",
"c8":"官網地址", "c8": "官網地址",
"c9":"簡介" "c9": "簡介"
}, },
"common": { "common": {
"a3":"申購記錄", "announcement": "公告",
"a3": "申購記錄",
"option": "期權交易", "option": "期權交易",
"exchange": "幣幣交易", "exchange": "幣幣交易",
"markets": "行情", "markets": "行情",
@ -157,7 +158,7 @@
"auth": "實名認證", "auth": "實名認證",
"invitationReward": "邀請獎勵", "invitationReward": "邀請獎勵",
"visitHistory": "訪問記錄", "visitHistory": "訪問記錄",
"noviceTutorial": "新手教程", "noviceTutorial": "為什麽選擇我們?",
"tradingStrategy": "交易策略", "tradingStrategy": "交易策略",
"industryResearch": "行業研究", "industryResearch": "行業研究",
"blockchainDictionary": "區塊鏈詞典", "blockchainDictionary": "區塊鏈詞典",
@ -185,10 +186,10 @@
"footerTips2": "法律聲明:該網站由{name}公司運營", "footerTips2": "法律聲明:該網站由{name}公司運營",
"footerTips3": "風險提示:數位資產交易有可能導致您的本金損失,請確保您充分理解其中的風險", "footerTips3": "風險提示:數位資產交易有可能導致您的本金損失,請確保您充分理解其中的風險",
"footerTips4": "受限地區:無法為特定國家/地區的居民提供服務,例如:以色列和伊斯蘭共和國", "footerTips4": "受限地區:無法為特定國家/地區的居民提供服務,例如:以色列和伊斯蘭共和國",
"learn":"學習" "learn": "學習"
}, },
"exchange": { "exchange": {
"search": "索", "search": "索",
"pair": "交易對", "pair": "交易對",
"last-price": "最新價", "last-price": "最新價",
"change": "漲跌幅", "change": "漲跌幅",
@ -212,7 +213,7 @@
"month": "月" "month": "月"
}, },
"login": { "login": {
"confirm-password":"確認密碼", "confirm-password": "確認密碼",
"resend": "重新發送", "resend": "重新發送",
"sms": "簡訊", "sms": "簡訊",
"sendOK": "驗證碼發送成功!", "sendOK": "驗證碼發送成功!",
@ -262,8 +263,8 @@
"securityVerification": "安全性驗證", "securityVerification": "安全性驗證",
"disagree": "您還沒有同意條款", "disagree": "您還沒有同意條款",
"registrationSuccess": "注册成功,正在跳轉登入頁面", "registrationSuccess": "注册成功,正在跳轉登入頁面",
"referrer": "推薦人", "referrer": "輸入機構代碼(必填)",
"referrer1": "請填寫推薦人", "referrer1": "請輸入機構代碼",
"optional": "選填", "optional": "選填",
"password": "密碼", "password": "密碼",
"login": "登入", "login": "登入",
@ -323,8 +324,8 @@
"upLoadSuccess": "上傳成功" "upLoadSuccess": "上傳成功"
}, },
"wallet": { "wallet": {
"auth":"請先進行實名認證", "auth": "請先進行實名認證",
"obtain":"獲取充值地址", "obtain": "獲取充值地址",
"inside": "內部資金劃轉", "inside": "內部資金劃轉",
"from": "從", "from": "從",
"history": "查看歷史", "history": "查看歷史",
@ -343,7 +344,7 @@
"addressManagement1": "地址管理", "addressManagement1": "地址管理",
"addAddress": "添加地址", "addAddress": "添加地址",
"filter": "篩選器", "filter": "篩選器",
"search": "索", "search": "索",
"selectActiveArea": "請選擇活動區域", "selectActiveArea": "請選擇活動區域",
"areaOne": "區域一", "areaOne": "區域一",
"areaTwo": "區域二", "areaTwo": "區域二",
@ -376,7 +377,7 @@
"spotAccount": "現貨帳戶", "spotAccount": "現貨帳戶",
"hide": "隱藏", "hide": "隱藏",
"balanceAssets": "餘額資產", "balanceAssets": "餘額資產",
"searchCurrency": "索幣種", "searchCurrency": "索幣種",
"addressManagement": "提幣地址管理", "addressManagement": "提幣地址管理",
"totalAssets": "總資產", "totalAssets": "總資產",
"availableBalance": "可用餘額", "availableBalance": "可用餘額",
@ -486,7 +487,7 @@
"newEra": "數位貨幣交易新時代", "newEra": "數位貨幣交易新時代",
"startTrading": "開始交易", "startTrading": "開始交易",
"walkingLantern": "走馬燈", "walkingLantern": "走馬燈",
"marketCenter": "交易市", "marketCenter": "交易市",
"optional": "自選", "optional": "自選",
"latestPrice": "價格", "latestPrice": "價格",
"upAndDown": "漲跌幅", "upAndDown": "漲跌幅",
@ -596,7 +597,7 @@
"toMatch": "未撮合", "toMatch": "未撮合",
"operation": "操作", "operation": "操作",
"reset": "重置", "reset": "重置",
"search": "索", "search": "索",
"to": "至", "to": "至",
"startTime": "開始日期", "startTime": "開始日期",
"endTime": "結束日期", "endTime": "結束日期",
@ -623,15 +624,14 @@
"buyLevel": "買平" "buyLevel": "買平"
}, },
"profile": { "profile": {
"tips":"提幣限額,如需更多提幣額度,請完成⾼級認證", "tips": "提幣限額,如需更多提幣額度,請完成⾼級認證",
"SelectAreaCode":"選擇區號", "SelectAreaCode": "選擇區號",
"driverLicense":"駕駛證", "driverLicense": "駕駛證",
"country":"國家", "country": "國家",
"country1":"請輸入國家", "country1": "請輸入國家",
"realName": "實名認證", "realName": "實名認證",
"primaryCertification": "初級認證", "primaryCertification": "初級認證",
"advancedCertification1": "高級認證申請", "advancedCertification": "高級認證申請已提交",
"advancedCertification2": "高級認證申請已提交",
"toExamine": "稽核", "toExamine": "稽核",
"fullName": "姓名", "fullName": "姓名",
"legal": "法定", "legal": "法定",
@ -709,7 +709,7 @@
"instantDividend": "立享分紅", "instantDividend": "立享分紅",
"invitationInformation": "邀請資訊", "invitationInformation": "邀請資訊",
"invitationLink": "邀請連結", "invitationLink": "邀請連結",
"invitationCode": "邀請碼", "invitationCode": "機構碼",
"registeredUser": "已註冊用戶", "registeredUser": "已註冊用戶",
"accountNumber": "帳號", "accountNumber": "帳號",
"registrationTime": "註冊時間", "registrationTime": "註冊時間",
@ -736,8 +736,8 @@
"preliminary": "初步認證成功", "preliminary": "初步認證成功",
"clickToVerify": "點擊驗證", "clickToVerify": "點擊驗證",
"clickToVerify1": "已完成", "clickToVerify1": "已完成",
"tips1":"初級認證:要選取現金,您需要完成高級認證。", "tips1": "初級認證:要選取現金,您需要完成高級認證。",
"tips2":"高級認證:最高5000USDT 24小時提款限額。 如需更多取款金額,請聯系客服" "tips2": "高級認證:最高5000USDT 24小時提款限額。 如需更多取款金額,請聯系客服"
}, },
"setting": { "setting": {
"smsVer": "簡訊驗證", "smsVer": "簡訊驗證",
@ -783,7 +783,8 @@
"pleaseConfirmPassword": "請確認密碼", "pleaseConfirmPassword": "請確認密碼",
"operationSuccess": "操作成功", "operationSuccess": "操作成功",
"combination": "密碼需要字母和數位組合", "combination": "密碼需要字母和數位組合",
"changeSuccess": "修改成功" "changeSuccess": "修改成功",
"passwordChangePrompt": "建議您定期更改密碼以保護賬號安全"
}, },
"purchase": { "purchase": {
"sendPrice": "發行價", "sendPrice": "發行價",
@ -798,7 +799,7 @@
"projectWarmUp": "項目預熱", "projectWarmUp": "項目預熱",
"startSubscription": "開始申購", "startSubscription": "開始申購",
"endOfSubscription": "結束申購", "endOfSubscription": "結束申購",
"announceResults": "公佈結果", "announceResults": "上市交易",
"projectCetails": "項目詳情", "projectCetails": "項目詳情",
"useOrNot": "是否使用", "useOrNot": "是否使用",
"subscribe": "申購", "subscribe": "申購",
@ -812,7 +813,7 @@
"a3": "可用", "a3": "可用",
"a4": "持倉保證金", "a4": "持倉保證金",
"a5": "委託凍結", "a5": "委託凍結",
"a6": "未實現盈虧", "a6": "盈虧",
"a7": "風險率", "a7": "風險率",
"a8": "預估強平價", "a8": "預估強平價",
"a9": "合約", "a9": "合約",
@ -915,9 +916,10 @@
"k6": "全平成功", "k6": "全平成功",
"k7": "反向成功", "k7": "反向成功",
"k8": "請先登錄進行申購 ", "k8": "請先登錄進行申購 ",
"k9":"請輸入認購碼", "k9": "請輸入認購碼",
"l1":"漲幅比例", "l1": "漲幅比例",
"l2":"保證金" "l2": "保證金",
"l4": "當前估值"
}, },
"otc": { "otc": {
"a0": "請選擇交易類型", "a0": "請選擇交易類型",
@ -1019,66 +1021,45 @@
"j6": "我的廣告", "j6": "我的廣告",
"j7": "我的訂單", "j7": "我的訂單",
"j8": "廣告", "j8": "廣告",
"j9":"一鍵購買", "j9": "一鍵購買",
"k0":"一鍵出售", "k0": "一鍵出售",
"k1":"購買金額", "k1": "購買金額",
"k2":"購買數量", "k2": "購買數量",
"k3":"出售金額", "k3": "出售金額",
"k4":"出售數量", "k4": "出售數量",
"k5":"請輸入購買金額", "k5": "請輸入購買金額",
"k6":"請輸入購買數量", "k6": "請輸入購買數量",
"k7":"請輸入出售金額", "k7": "請輸入出售金額",
"k8":"請輸入出售數量", "k8": "請輸入出售數量",
"k9":"按數量購買", "k9": "按數量購買",
"l0":"法幣交易說明", "l0": "法幣交易說明",
"l1":"最小交易量", "l1": "最小交易量",
"l2":"確認購買", "l2": "確認購買",
"l3":"確認出售", "l3": "確認出售",
"l4":"餘額不足", "l4": "餘額不足",
"l5":"下單時間", "l5": "下單時間",
"l6":"請選擇支付方式", "l6": "請選擇支付方式",
"l7":"收款人", "l7": "收款人",
"l8":"收款异常", "l8": "收款异常",
"l9":"請輸入交易密碼", "l9": "請輸入交易密碼",
"m0":"已支付", "m0": "已支付",
"m1":"稽核通過", "m1": "稽核通過",
"m2":"稽核失敗", "m2": "稽核失敗",
"m3":"訂單結束", "m3": "訂單結束",
"m4":"訂單取消" "m4": "訂單取消"
}, },
"cxiNewText":{ "addinfo": {
"a0": "前10名", "MarketTrend": "市場趨勢",
"a1": "500萬+", "HourlyCurrencyUpdates": "小時貨幣最新動態",
"a2": "< 0.10%", "_24HoursUpsAndDowns": "24小時漲跌",
"a3": "200+", "TopEncryptionRiskManagement": "顶级加密风控管理",
"a4": "全球排名", "EscortYourPropertySafety": "頂級加密風控管理",
"a5": "用戶信任我們", "BuyCoins": "買幣",
"a6": "超低費用", "ProvidedByTheExperimentalCenter": "由TOPCS實驗中心提供",
"a7": "國家", "StartCurrencyTradingNow": "立刻開始貨幣交易",
"a21": "立即賺取收益", "ScanTheQRCodeBelowToDownload": "掃描下方二維碼下載",
"a22": "創建個人加密貨幣投資組合", "AndroidScanCodeDownload": "Android扫码下载",
"a23": "購買、交易和持有100多種加密貨幣", "IOSScanCodeDownload": "Android掃碼下載",
"a24": "向賬戶充值", "UseNow": "現在使用"
"a25": "通過電子郵件註冊",
"a38": "隨時隨地,開啟交易。",
"a39": "通過我們的應用程序和網頁,隨時安全又便利地開始交易。",
"a40": "ios和Android掃碼下載",
"a41": "值得用戶信賴的加密貨幣交易平台",
"a42": "我們終力承諾以嚴格協議和行業領先的技術措施為用戶安全駕駛護航。",
"a43": "用戶安全資產資金",
"a44": "我們將所有交易費用的10%存入與安全資產資金,為用戶資金提供部分保障。",
"a45": "個性化訪問控制",
"a46": "個性化訪問控制限制訪問個人賬戶的設備和地址,讓用戶無後顧之憂。",
"a47": "先進數據加密",
"a48": "個人交易數據通過端到端加密獲得保障,僅限本人訪問個人信息。",
"a57": "點擊前往",
"a71": "新手指引",
"a72": "即刻開啟數字貨幣交易學習",
"a77": "如何購買數字貨幣",
"a78": "如何出售數字貨幣",
"a79": "如何交易數字貨幣",
"a80": "交易市場",
"a81": "24小時市場走勢",
"a82": "將添加加密貨幣資金添加到您的錢包並立即開始交易"
} }
} }

8
src/index.html

@ -21,7 +21,7 @@
for (var i = 0; i < mobileAgent.length; i++) { for (var i = 0; i < mobileAgent.length; i++) {
if (browser.indexOf(mobileAgent[i]) != -1) { if (browser.indexOf(mobileAgent[i]) != -1) {
//todo 手机版跳转 //todo 手机版跳转
window.location.href = 'https://app.cxicoin.com'; window.location.href = 'https://h5.toopcoins.com';
break; break;
} }
} }
@ -68,13 +68,13 @@
<script src="/static/libs/jquery.mCustomScrollbar.js"></script> <script src="/static/libs/jquery.mCustomScrollbar.js"></script>
<script src="/static/js/custom.js"></script> <script src="/static/js/custom.js"></script>
<script src="/static/libs/skroll.min.js"></script> <script src="/static/libs/skroll.min.js"></script>
<script src="https://www.cxicoin.com/newlink/pako.min.js"></script> <script src="https://www.toopcoins.com/newlink/pako.min.js"></script>
<script> <script>
window.custom = "light"; // 默认主题 window.custom = "light"; // 默认主题
window.api_path = "<%= htmlWebpackPlugin.options.isProduct ? 'https://sses.cxicoin.com/api/sliderVerify' : 'https://sses.cxicoin.com/api/sliderVerify' %>"; window.api_path = "<%= htmlWebpackPlugin.options.isProduct ? 'https://ser.ybgcoins.com/api/sliderVerify' : 'https://ser.ybgcoins.com/api/sliderVerify' %>";
// window.api_path = "<%= htmlWebpackPlugin.options.isProduct ? 'http://qkladmin2.ruanmeng.top/api/sliderVerify' : 'http://qkladmin2.ruanmeng.top/api/sliderVerify' %>"; // window.api_path = "<%= htmlWebpackPlugin.options.isProduct ? 'http://qkladmin2.ruanmeng.top/api/sliderVerify' : 'http://qkladmin2.ruanmeng.top/api/sliderVerify' %>";
// window.ws_path = "<%= htmlWebpackPlugin.options.isProduct ? 'wss://guanli.coin.amatak.net/ws1' : 'wss://guanli.coin.amatak.net/ws1' %>"; // window.ws_path = "<%= htmlWebpackPlugin.options.isProduct ? 'wss://guanli.coin.amatak.net/ws1' : 'wss://guanli.coin.amatak.net/ws1' %>";
window.ws_path = "<%= htmlWebpackPlugin.options.isProduct ? 'https://sses.cxicoin.com/api' : 'https://sses.cxicoin.com/api' %>"; window.ws_path = "<%= htmlWebpackPlugin.options.isProduct ? 'https://ser.ybgcoins.com/api' : 'https://ser.ybgcoins.com/api' %>";
// window.ws_path = "<%= htmlWebpackPlugin.options.isProduct ? 'ws://qkladmin2.ruanmeng.top:2346' : 'ws://qkladmin2.ruanmeng.top:2346' %>"; // window.ws_path = "<%= htmlWebpackPlugin.options.isProduct ? 'ws://qkladmin2.ruanmeng.top:2346' : 'ws://qkladmin2.ruanmeng.top:2346' %>";

3
src/utils/class/date.js

@ -48,8 +48,7 @@ function time2Date(time, isOffset = false) {
function parseTime(time, isOffset = false, cformat = null) { function parseTime(time, isOffset = false, cformat = null) {
// 设置默认格式 // 设置默认格式
// let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}'; let format = cformat || '{y}-{m}-{d} {h}:{i}:{s}';
let format = cformat || '{m}/{d}/{y} {h}:{i}:{s}';
const date = time2Date(time, isOffset); const date = time2Date(time, isOffset);

10
src/utils/consts.js

@ -15,18 +15,18 @@ export default {
FAIL : 2, FAIL : 2,
} }
}, },
mobileUrl:'https://app.cxicoin.com', mobileUrl:'https://h5.cinscoin.com',
Server: { Server: {
Path: { Path: {
// API: isProduct ? `http://qkladmin2.ruanmeng.top/api/` : `/api/`, // API: isProduct ? `http://qkladmin2.ruanmeng.top/api/` : `/api/`,
BASE:isProduct?`https://sses.cxicoin.com`:`https://sses.cxicoin.com`, BASE:isProduct?`https://ser.ybgcoins.com`:`https://ser.ybgcoins.com`,
API: isProduct ? `https://sses.cxicoin.com/api/` : `/api/`, API: isProduct ? `https://ser.ybgcoins.com/api/` : `/api/`,
// WS: isProduct ? `ws://qkladmin2.ruanmeng.top:2346` : `ws://qkladmin2.ruanmeng.top:2346`, // WS: isProduct ? `ws://qkladmin2.ruanmeng.top:2346` : `ws://qkladmin2.ruanmeng.top:2346`,
// WS1: isProduct ? `ws://qkladmin2.ruanmeng.top:2348` : `ws://qkladmin2.ruanmeng.top:2348`, // WS1: isProduct ? `ws://qkladmin2.ruanmeng.top:2348` : `ws://qkladmin2.ruanmeng.top:2348`,
// WS: isProduct ? `wss://guanli.coin.amatak.net/ws1` : `wss://guanli.coin.amatak.net/ws1`, // WS: isProduct ? `wss://guanli.coin.amatak.net/ws1` : `wss://guanli.coin.amatak.net/ws1`,
WS: isProduct ? `wss://sses.cxicoin.com/ws1` : `wss://sses.cxicoin.com/ws1`, WS: isProduct ? `wss://ser.ybgcoins.com/ws1` : `wss://ser.ybgcoins.com/ws1`,
// WS1: isProduct ? `wss://guanli.coin.amatak.net/ws2` : `wss://guanli.coin.amatak.net/ws2`, // WS1: isProduct ? `wss://guanli.coin.amatak.net/ws2` : `wss://guanli.coin.amatak.net/ws2`,
WS1: isProduct ? `wss://sses.cxicoin.com/ws2` : `wss://sses.cxicoin.com/ws2`, WS1: isProduct ? `wss://ser.ybgcoins.com/ws2` : `wss://ser.ybgcoins.com/ws2`,
} }
} }
}; };

16
src/views/components/inner-transfer.vue

@ -218,17 +218,7 @@ export default {
} }
}, },
components: {}, components: {},
watch: { watch: {},
fromValue(n){
if(n[0]==2){
this.toValue = [1];
this.form.to_account = this.toValue[0];
}else if(n[0]==1){
this.toValue = [2];
this.form.to_account = this.toValue[0];
}
},
},
methods: { methods: {
// from // from
fromChange($ev) { fromChange($ev) {
@ -275,8 +265,8 @@ export default {
// to_account, // to_account,
// from_account // from_account
// ]; // ];
// console.info(this.form.from_account) console.info(this.form.from_account)
// console.info(this.form.to_account) console.info(this.form.to_account)
// [this.fromChild, this.toChild] = [this.toChild, this.fromChild]; // [this.fromChild, this.toChild] = [this.toChild, this.fromChild];
this.form.pair_id = this.toChild.id; this.form.pair_id = this.toChild.id;
this.getUserCoinAssets() this.getUserCoinAssets()

2
src/views/contract/account.vue

@ -65,7 +65,7 @@ export default {
} }
}, },
mounted(){ mounted(){
console.log(this.accountInfo) // console.log(this.accountInfo)
}, },
methods:{ methods:{

1161
src/views/contract/exchange-store.vue

File diff suppressed because it is too large

79
src/views/contract/handicap.vue

@ -1,6 +1,6 @@
<template> <template>
<div class="markets-pair-list handicap bg-plain"> <div class="markets-pair-list handicap bg-plain" style="min-height:100vh;width: 100%; border: #fff solid 1px;">
<!-- <div class="nav nav-pills"> <div class="nav nav-pills">
<div class="nav-item"> <div class="nav-item">
<a class="nav-link" :class="{ active: tab == 1 }" @click="tab = 1">{{ <a class="nav-link" :class="{ active: tab == 1 }" @click="tab = 1">{{
$t("contract.f7") $t("contract.f7")
@ -11,7 +11,7 @@
$t("contract.f8") $t("contract.f8")
}}</a> }}</a>
</div> </div>
</div> --> </div>
<div> <div>
<!-- 盘口 --> <!-- 盘口 -->
<div class="handicap-body px-3" v-if="tab == 1"> <div class="handicap-body px-3" v-if="tab == 1">
@ -33,18 +33,17 @@
</div> </div>
</div> </div>
<div class="label-group d-flex text-secondary fn-12 py-2"> <div class="label-group d-flex text-secondary fn-12 py-2">
<div class="w-7/24"> <div class="w-10/24">
{{ $t("contract.d8") }} {{ $t("contract.d8") }}
</div> </div>
<div class="w-8/24"> <div class="w-7/24">
{{ $t("contract.e1") }} {{ $t("contract.e1") }}
</div> </div>
<div class="w-7/24 text-right"> <div class="w-7/24 text-right">
{{ $t("contract.g2") }} {{ $t("contract.g2") }}
<!-- ({{ $t("contract.e2") }}) -->
</div> </div>
</div> </div>
<div class="sell fn-12"> <div class="sell">
<template v-for="(item, idx) in sellListShow"> <template v-for="(item, idx) in sellListShow">
<div <div
class="item pointer" class="item pointer"
@ -52,9 +51,9 @@
@click="$emit('selectprice', item.price)" @click="$emit('selectprice', item.price)"
> >
<div class="d-flex"> <div class="d-flex">
<div class="w-7/24 decreace">{{ item.price}}</div> <div class="w-10/24 decreace">{{ item.price}}</div>
<div class="w-8/24">{{ omitTo(item.amount, 2) }}</div> <div class="w-7/24">{{ omitTo(item.amount, 2) }}</div>
<div class="w-8/24 text-right">{{ item.total }}</div> <div class="w-7/24 text-right">{{ item.total }}</div>
</div> </div>
<div <div
class="pgs" class="pgs"
@ -76,7 +75,7 @@
<!-- <button class="btn btn-sm btn-outline-primary fn-12">更多</button> --> <!-- <button class="btn btn-sm btn-outline-primary fn-12">更多</button> -->
</div> </div>
</div> </div>
<div class="buy fn-12"> <div class="buy">
<template v-for="(item, idx) in buyListShow"> <template v-for="(item, idx) in buyListShow">
<div <div
class="item pointer" class="item pointer"
@ -84,9 +83,9 @@
@click="$emit('selectprice', item.price)" @click="$emit('selectprice', item.price)"
> >
<div class="d-flex"> <div class="d-flex">
<div class="w-7/24 increace">{{ item.price }}</div> <div class="w-10/24 increace">{{ item.price }}</div>
<div class="w-8/24">{{ omitTo(item.amount, 2) }}</div> <div class="w-7/24">{{ omitTo(item.amount, 2) }}</div>
<div class="w-8/24 text-right">{{ item.total }}</div> <div class="w-7/24 text-right">{{ item.total }}</div>
</div> </div>
<div <div
class="pgs" class="pgs"
@ -95,34 +94,30 @@
</div> </div>
</template> </template>
</div> </div>
<!-- 实时成交 --> </div>
<!-- 实时成交 -->
<div class="real-time p-3" v-if="tab == 2">
<div class="d-flex text-secondary fn-12"> <div class="d-flex text-secondary fn-12">
<div class="w-7/24"> <div class="w-10/24">
{{ $t("contract.b1") }} {{ $t("contract.b1") }}
</div> </div>
<div class="w-8/24">{{ $t("contract.d8") }}(USDT)</div> <div class="w-7/24">{{ $t("contract.d8") }}(USDT)</div>
<div class="w-8/24 text-right"> <div class="w-7/24 text-right">
{{ $t("contract.e1") }}({{ $t("contract.e2") }}) {{ $t("contract.e1") }}({{ $t("contract.e2") }})
</div> </div>
</div> </div>
<div class="deal"> <div class="d-flex fn-12" v-for="(item, idx) in tradeList" :key="idx">
<div class="d-flex fn-12" v-for="(item, idx) in tradeList" :key="idx"> <div class="w-10/24">
<div class="w-7/24"> {{ parseTime(item.ts, false, "{h}:{i}:{s}") }}
{{ parseTime(item.ts, false, "{h}:{i}:{s}") }} </div>
</div> <div class="w-7/24 increace">
<div class="w-8/24 increace"> {{ item.price }}
{{ item.price }} </div>
</div> <div class="w-7/24 text-right">
<div class="w-8/24 text-right"> {{ omitTo(item.amount, 2) }}
{{ omitTo(item.amount, 2) }}
</div>
</div> </div>
</div> </div>
</div> </div>
<!-- -->
<div class="real-time p-3" v-if="tab == 2">
</div>
</div> </div>
</div> </div>
</template> </template>
@ -173,22 +168,18 @@ export default {
}; };
}, },
sellListShow() { sellListShow() {
let list = this.sellList.splice(0, 12); let list = this.sellList.splice(0, 12);
let total = 0; let total = 0;
list.forEach(item => { list.forEach(item => {
// item.total = total += item.amount; item.total = total += item.amount;
item.total = total += Number(item.amount); });
item.total = item.total.toFixed(3) return list.reverse();
});
return list.reverse();
}, },
buyListShow() { buyListShow() {
let list = this.buyList.splice(0, 12); let list = this.buyList.splice(0, 12);
let total = 0; let total = 0;
list.forEach(item => { list.forEach(item => {
// item.total = total += item.amount; item.total = total += item.amount;
item.total = total += Number(item.amount);
item.total = item.total.toFixed(3);
}); });
return list; return list;
} }

2
src/views/contract/handicapRight.vue

@ -2,7 +2,7 @@
<div class="markets-pair-list handicap handicapRight"> <div class="markets-pair-list handicap handicapRight">
<div class="nav nav-pills p-3 fn-center d-block fn-22 w-100"> <div class="nav nav-pills p-3 fn-center d-block fn-22 w-100">
<div class="nav-item"> <div class="nav-item">
{{$t("contract.f8")}} {{$t("contract.f8")}}
</div> </div>
</div> </div>
<div class="col-12 p-0 bg-plain"> <div class="col-12 p-0 bg-plain">

4
src/views/contract/hold-position.vue

@ -32,7 +32,7 @@
<th>{{ $t("contract.a5") }}{{ $t("contract.e2") }}</th> --> <th>{{ $t("contract.a5") }}{{ $t("contract.e2") }}</th> -->
<th>{{ $t("contract.g9") }}</th> <th>{{ $t("contract.g9") }}</th>
<th>{{ $t("contract.g3") }}</th> <th>{{ $t("contract.g3") }}</th>
<th>{{ $t("contract.a8") }}</th> <!--<th>{{ $t("contract.a8") }}</th>-->
<th >{{ $t("contract.a6") }}</th> <th >{{ $t("contract.a6") }}</th>
<th>{{ $t("contract.h0") }}</th> <th>{{ $t("contract.h0") }}</th>
<th>{{ $t("contract.i7") }} /{{ $t("contract.i8") }}</th> <th>{{ $t("contract.i7") }} /{{ $t("contract.i8") }}</th>
@ -50,7 +50,7 @@
<td>{{ item.freeze_position }}</td> --> <td>{{ item.freeze_position }}</td> -->
<td>{{ item.avg_price * 1 }}</td> <td>{{ item.avg_price * 1 }}</td>
<td>{{ item.realtimePrice }}</td> <td>{{ item.realtimePrice }}</td>
<td>{{ item.flatPrice }}</td> <!--<td>{{ item.flatPrice }}</td>-->
<td :class="item.unRealProfit>0?'increace':item.unRealProfit<0?'decreace':''">{{ (parseFloat(item.unRealProfit)).toFixed(2) }}</td> <td :class="item.unRealProfit>0?'increace':item.unRealProfit<0?'decreace':''">{{ (parseFloat(item.unRealProfit)).toFixed(2) }}</td>
<td>{{ item.profitRate }}</td> <td>{{ item.profitRate }}</td>
<td>{{ item.tpPrice || "--" }}/{{ item.slPrice || "--" }}</td> <td>{{ item.tpPrice || "--" }}/{{ item.slPrice || "--" }}</td>

4
src/views/contract/index copy.vue

@ -117,7 +117,7 @@
/> />
</div> </div>
<!-- 盘口 --> <!-- 盘口 -->
<handicap <handicap
@input="newPriceObj = $event" @input="newPriceObj = $event"
@selectprice="defaultPrice = $event" @selectprice="defaultPrice = $event"
:symbol="activeSymbol" :symbol="activeSymbol"
@ -126,7 +126,7 @@
class="mr-2" class="mr-2"
/> />
<!-- 成交记录 --> <!-- 成交记录 -->
<handicapRight <handicapRight
@input="newPriceObj = $event" @input="newPriceObj = $event"
@selectprice="defaultPrice = $event" @selectprice="defaultPrice = $event"
:symbol="activeSymbol" :symbol="activeSymbol"

806
src/views/contract/index.vue

@ -1,201 +1,298 @@
<template> <template>
<div class="contract-page"> <div class="contract-page">
<!-- <div class="banner-block col-xs-8">--> <!-- <div class="banner-block col-xs-8">-->
<!-- <el-carousel :interval="6000" height="450px">--> <!-- <el-carousel :interval="6000" height="450px">-->
<!-- <el-carousel-item v-for="item in pcBannerList" :key="item.id">--> <!-- <el-carousel-item v-for="item in pcBannerList" :key="item.id">-->
<!-- <img :src="item.imgurl" width="100%" height="100%" />--> <!-- <img :src="item.imgurl" width="100%" height="100%" />-->
<!-- </el-carousel-item>--> <!-- </el-carousel-item>-->
<!-- </el-carousel>--> <!-- </el-carousel>-->
<!-- </div>--> <!-- </div>-->
<div class="page-top d-flex pt-2"> <div class="page-top d-flex pt-2">
<div class="kline-box flex-fill mr-2"> <div class="kline-box flex-fill mr-2">
<div <div class="coin-change d-flex align-items-center py-2 pl-4 heading justify-content-between" style="width:80%;float: right">
class="coin-change d-flex align-items-center py-2 pl-4 heading justify-content-between" <div class="d-flex align-items-center">
> <div class="coin d-flex align-items-center">
<div class="d-flex align-items-center"> <el-popover
<div class="coin d-flex align-items-center"> placement="bottom"
<el-popover ref="popover"
placement="bottom" width="400"
ref="popover" trigger="click">
width="400" <div slot="reference">
trigger="click" {{ activeContract.pair_name }}
> <!-- <el-button size="mini">
<div slot="reference"> <i class="el-icon-arrow-down"></i>
{{ activeContract.pair_name }} </el-button> -->
<el-button size="mini"> </div>
<i class="el-icon-arrow-down"></i> <div
</el-button> class="markets-pair-list"
</div> style="max-height:300px;overflow:auto;">
<div <template v-for="parent in contractList">
class="markets-pair-list" <div class="px-3 text-primary" :key="parent.coin_name">
style="max-height:300px;overflow:auto;" {{ parent.coin_name }}
> </div>
<template v-for="parent in contractList"> <table class="table" :key="parent.coin_name + 1">
<div class="px-3 text-primary" :key="parent.coin_name"> <thead>
{{ parent.coin_name }} <tr class="text-secondary">
</div> <th class="w-10/24">{{ $t("contract.h5") }}ooo</th>
<table class="table" :key="parent.coin_name + 1"> <th class="w-7/24">{{ $t("contract.g3") }}</th>
<thead> <th class="w-7/24 text-right">
<tr class="text-secondary"> {{ $t("contract.h6") }}
<th class="w-10/24">{{ $t("contract.h5") }}</th> </th>
<th class="w-7/24">{{ $t("contract.g3") }}</th> </tr>
<th class="w-7/24 text-right"> </thead>
{{ $t("contract.h6") }} <tbody>
</th> <!-- @click="activeSymbol = item.symbol" -->
</tr> <tr
</thead> v-for="item in parent.marketInfoList"
<tbody> :key="item.symbol"
<!-- @click="activeSymbol = item.symbol" --> :class="{ active: item.symbol == activeSymbol }"
<tr @click="ispopover1(item.symbol)">
v-for="item in parent.marketInfoList" <td class="w-10/24">
:key="item.symbol" {{ item.symbol }}/{{ parent.coin_name }}
:class="{ active: item.symbol == activeSymbol }" </td>
@click="ispopover1(item.symbol)" <td
> class="w-7/24 "
<td class="w-10/24"> :class="item.increase < 0 ? 'decreace' : 'increase'">
{{ item.symbol }}/{{ parent.coin_name }} {{ item.price }}
</td> </td>
<td <td
class="w-7/24 " class="w-7/24"
:class="item.increase < 0 ? 'decreace' : 'increase'" :class="item.increase < 0 ? 'decreace' : 'increase'">
> {{ item.increaseStr }}
{{ item.price }} </td>
</td> </tr>
<td </tbody>
class="w-7/24" </table>
:class="item.increase < 0 ? 'decreace' : 'increase'" </template>
> </div>
{{ item.increaseStr }} </el-popover>
</td> </div>
</tr> <div
</tbody> class="price px-3 border-right"
</table> :class="{
</template>
</div>
</el-popover>
</div>
<div
class="price px-3 border-right"
:class="{
decreace: activeContract.increase < 0, decreace: activeContract.increase < 0,
increace: activeContract.increase >= 0 increace: activeContract.increase >= 0
}" }"
> >
<span class="current">{{ activeContract.price }}$</span> <span class="current">{{ activeContract.price }}$</span>
&nbsp; &nbsp;
<span class="zf">{{ activeContract.increaseStr }}</span> <span class="zf">{{ activeContract.increaseStr }}</span>
</div> </div>
<!-- 币种价值数据 --> <!-- 币种价值数据 -->
<div class="d-flex fn-12"> <div class="d-flex fn-12">
<div class="item px-2"> <div class="item px-2">
<div class="title mb-1 text-secondary"> <div class="title mb-1 text-secondary">
24h {{ $t("contract.h7") }} 24h {{ $t("contract.h7") }}
</div> </div>
<div> <div>
{{ activeContract.high }} {{ activeContract.high }}
</div> </div>
</div> </div>
<div class="item px-2"> <div class="item px-2">
<div class="title mb-1 text-secondary"> <div class="title mb-1 text-secondary">
24h {{ $t("contract.h8") }} 24h {{ $t("contract.h8") }}
</div> </div>
<div> <div>
{{ activeContract.low }} {{ activeContract.low }}
</div>
</div>
<div class="item px-2">
<div class="title mb-1 text-secondary">
24h {{ $t("contract.h9") }}
<!-- {{ $t("contract.e2") }} -->
(USDT)
</div>
<div>
{{ activeContract.vol }}
</div>
</div>
</div>
</div>
<!-- <div><theme-change /></div> -->
</div> </div>
</div> <div style="width: 20%;float:left;display:block;">
<div class="item px-2"> <div
<div class="title mb-1 text-secondary"> class="markets-pair-list"
24h {{ $t("contract.h9") }} style="max-height:92vh;overflow:auto;">
<!-- {{ $t("contract.e2") }} --> <template v-for="parent in contractList">
(USDT) <div class="px-3 text-primary" :key="parent.coin_name">
<!--{{ parent.coin_name }}-->
</div>
<table class="table" :key="parent.coin_name + 1">
<thead>
<tr class="text-secondary">
<th class="w-10/24">{{ $t("contract.h5") }}</th>
<th class="w-7/24">{{ $t("contract.g3") }}</th>
<th class="w-7/24 text-right">
{{ $t("contract.h6") }}
</th>
</tr>
</thead>
<tbody>
<!-- @click="activeSymbol = item.symbol" -->
<tr
v-for="item in parent.marketInfoList"
:key="item.symbol"
:class="{ active: item.symbol == activeSymbol }"
@click="ispopover1(item.symbol)">
<td class="w-10/24">
{{ item.symbol }}/{{ parent.coin_name }}
</td>
<td
class="w-7/24 "
:class="item.increase < 0 ? 'decreace' : 'increase'">
{{ item.price }}
</td>
<td
class="w-7/24"
:class="item.increase < 0 ? 'decreace' : 'increase'">
{{ item.increaseStr }}
</td>
</tr>
</tbody>
</table>
</template>
</div>
<div class="ml-2" style="border:1px solid #ddd;">
<account class="bg-plain" :accountInfo="accountInfo"/>
</div>
</div> </div>
<div> <div style="display: flex;width: 80%; float: right;">
{{ activeContract.vol }}
<div style="width: 90%;">
<kline
:activeCoin="{ pair_name: activeContract.pair_name }"
v-if="activeContract.pair_name"
:contract="true"
:wsUrl="wsUrl"
/>
<exchange-store
:holdPositionList="holdPositionList"
:symbol="activeSymbol"
:defaultPrice="defaultPrice"
:newPriceObj="newPriceObj"
:contractOpen="contractOpen"
@accountInfo="accountInfo = $event"
@position="holdPosition"
@getSymbolDetail="symbolDetail=$event"
/>
</div>
<div style="width: 25%;max-height:65vh;overflow:hidden;">
<handicap
@input="newPriceObj = $event"
@selectprice="defaultPrice = $event"
:symbol="activeSymbol"
:wsUrl="wsUrl"
:ws="ws"
class="mr-2,w1"
ref="handicap"/>
</div>
</div> </div>
</div>
</div> </div>
</div> <!-- 盘口 -->
<!-- <div><theme-change /></div> --> <!-- <handicap
@input="newPriceObj = $event"
@selectprice="defaultPrice = $event"
:symbol="activeSymbol"
:wsUrl="wsUrl"
:ws="ws"
class="mr-2"
ref="handicap"
/> -->
<!-- 交易 -->
<!-- <exchange-store
:holdPositionList="holdPositionList"
:symbol="activeSymbol"
:defaultPrice="defaultPrice"
:newPriceObj="newPriceObj"
:contractOpen="contractOpen"
@accountInfo="accountInfo = $event"
@position="holdPosition"
@getSymbolDetail="symbolDetail=$event"
/> -->
</div> </div>
<kline
:activeCoin="{ pair_name: activeContract.pair_name }"
v-if="activeContract.pair_name" <!-- <div class="change"> -->
:contract="true" <!-- 盘口 -->
:wsUrl="wsUrl" <!-- <div style="width: 30%;">
/> <handicap
</div> @input="newPriceObj = $event"
<!-- 盘口 --> @selectprice="defaultPrice = $event"
<handicap :symbol="activeSymbol"
@input="newPriceObj = $event" :wsUrl="wsUrl"
@selectprice="defaultPrice = $event" :ws="ws"
:symbol="activeSymbol" class="mr-2"
:wsUrl="wsUrl" ref="handicap"
:ws="ws" />
class="mr-2" </div> -->
ref="handicap" <!-- <div style="width: 30%;"> -->
/> <!-- 交易 -->
<!-- 交易 --> <!-- <exchange-store
<exchange-store :holdPositionList="holdPositionList"
:holdPositionList="holdPositionList" :symbol="activeSymbol"
:symbol="activeSymbol" :defaultPrice="defaultPrice"
:defaultPrice="defaultPrice" :newPriceObj="newPriceObj"
:newPriceObj="newPriceObj" :contractOpen="contractOpen"
:contractOpen="contractOpen" @accountInfo="accountInfo = $event"
@accountInfo="accountInfo = $event" @position="holdPosition"
@position="holdPosition" @getSymbolDetail="symbolDetail=$event"
@getSymbolDetail="symbolDetail=$event" /> -->
/> <!-- </div> -->
</div>
<page-bottom <!-- </div> -->
@position="holdPosition"
@isall=" <page-bottom
@position="holdPosition"
@isall="
holdPositionAll = $event; holdPositionAll = $event;
holdPosition(); holdPosition();
" "
@setactiveItem="setactiveItem" @setactiveItem="setactiveItem"
:accountInfo="accountInfo" :accountInfo="accountInfo"
:newPriceObj="newPriceObj" :newPriceObj="newPriceObj"
:holdPositionList="holdPositionList" :holdPositionList="holdPositionList"
:holdPositionAll="holdPositionAll" :holdPositionAll="holdPositionAll"
:symbol="activeSymbol" :symbol="activeSymbol"
:symbolDetail="symbolDetail" :symbolDetail="symbolDetail"
/> />
<div <div
class="modal fade" class="modal fade"
id="openContract" id="openContract"
tabindex="-1" tabindex="-1"
role="dialog" role="dialog"
aria-labelledby="contractClose" aria-labelledby="contractClose"
aria-hidden="true" aria-hidden="true"
> >
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="contractClose"> <h5 class="modal-title" id="contractClose">
{{ contractAgreement.title }} {{ contractAgreement.title }}
</h5> </h5>
<button <button
type="button" type="button"
class="close" class="close"
data-dismiss="modal" data-dismiss="modal"
aria-label="Close" aria-label="Close"
> >
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div v-html="contractAgreement.body"></div> <div v-html="contractAgreement.body"></div>
</div> </div>
<div class="modal-footer d-flex justify-content-center"> <div class="modal-footer d-flex justify-content-center">
<button type="button" class="btn btn-primary" @click="opening"> <button type="button" class="btn btn-primary" @click="opening">
{{$t('contract.j8')}} {{ $t('contract.j8') }}
</button> </button>
</div> </div>
</div>
</div>
</div> </div>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import kline from "../option/kline"; import kline from "../option/kline";
@ -207,180 +304,201 @@ import Contract from "../../api/contract";
import Socket from "@/api/server/Socket.js"; import Socket from "@/api/server/Socket.js";
import Home from "@/api/home"; import Home from "@/api/home";
import bus from "@/components/bus.js"; import bus from "@/components/bus.js";
export default { export default {
components: { components: {
kline, kline,
handicap, handicap,
account, account,
exchangeStore, exchangeStore,
pageBottom pageBottom
}, },
data() { data() {
return { return {
contractList: [], contractList: [],
activeSymbol: "", activeSymbol: "",
holdPositionAll: false, holdPositionAll: false,
holdPositionList: [], holdPositionList: [],
newPriceObj: {}, newPriceObj: {},
pcBannerList:[], pcBannerList: [],
accountInfo: {}, accountInfo: {},
defaultPrice: "", defaultPrice: "",
wsUrl: this.Globals.Server.Path.WS1, wsUrl: this.Globals.Server.Path.WS1,
ws: new Socket(this.Globals.Server.Path.WS1), ws: new Socket(this.Globals.Server.Path.WS1),
_time: null, _time: null,
contractOpen: false, contractOpen: false,
contractAgreement: {}, contractAgreement: {},
symbolDetail:{}, symbolDetail: {},
}; };
}, },
computed: { computed: {
activeContract(val) { activeContract(val) {
let contractList=this.contractList let yes_symbol = this.$route.query.symbol;
.map(item => item.marketInfoList) if(yes_symbol){
.flat() this.activeSymbol = yes_symbol;
.find(item => item.symbol == this.activeSymbol) || {} }
if(val.price){ let contractList = this.contractList
.map(item => item.marketInfoList)
.flat()
.find(item => item.symbol == this.activeSymbol) || {}
if (val.price) {
delete contractList.price delete contractList.price
} }
return contractList; // console.log(contractList)
}, return contractList;
isLogin() { },
return Boolean(localStorage.token); isLogin() {
} return Boolean(localStorage.token);
}, }
watch: {
activeSymbol() {
this.holdPosition();
}, },
}, watch: {
destroyed() { activeSymbol() {
clearInterval(this._time); this.holdPosition();
}, },
created() {
// this.openStatus();
this.getMarketList();
this.holdPosition();
this.indexList();
this._time = setInterval(() => {
if (this.contractOpen) {
this.holdPosition();
}
}, 3000);
this.ws.on("open", () => {
this.swapMarketList();
});
// console.info(this.$refs)
bus.$on('collapse', msg => {
this.activeContract.price =this.activeContract.symbol=='BTC'? (msg.close).toFixed(1):(msg.close).toFixed(3);
this.holdPositionList.map(item=>{
if(item.symbol==this.activeContract.symbol) item.realtimePrice=this.activeContract.price
})
});
},
//
mounted: function () {
setInterval(() => {
this.holdPosition();
}, 2000)
},
methods: {
ispopover1(item){
this.activeSymbol=item;
this.$refs.popover.showPopper = false;
}, },
swapMarketList() { destroyed() {
let msg = "swapMarketList"; clearInterval(this._time);
this.ws.send({
cmd: "sub",
msg: msg
});
this.ws.on("message", res => {
let { data, sub,cmd } = res;
if (sub == msg) {
// console.log(data, '11--------------------')
if( data.symbol=='BTC' )(data.price).toFixed(1)
this.contractList = data;
}else if (cmd == "ping") {
this.ws.send({
cmd: "pong"
});
}
});
this.ws.on('close',()=>{
this.ws= new Socket(this.Globals.Server.Path.WS1),
console.log('链接关闭');
this.wsOpen();
})
}, },
wsOpen(){ created() {
// this.openStatus();
this.getMarketList();
this.holdPosition();
this.indexList();
this._time = setInterval(() => {
if (this.contractOpen) {
this.holdPosition();
}
}, 3000);
this.ws.on("open", () => { this.ws.on("open", () => {
this.swapMarketList(); this.swapMarketList();
this.$refs.handicap.linkSocket() });
// console.info(this.$refs)
bus.$on('collapse', msg => {
this.activeContract.price = this.activeContract.symbol == 'BTC' ? (msg.close).toFixed(1) : (msg.close).toFixed(3);
this.holdPositionList.map(item => {
if (item.symbol == this.activeContract.symbol) item.realtimePrice = this.activeContract.price
})
}); });
}, },
// //
getMarketList() { mounted: function () {
Contract.getMarketList().then(res => { setInterval(() => {
this.contractList = res; this.holdPosition();
// }, 2000)
let firstParent = res[0];
if (firstParent) {
let first = firstParent.marketInfoList[0];
if (first) this.activeSymbol = first.symbol;
}
});
},
//
holdPosition() {
if (!this.isLogin) return;
let data = {
symbol: (this.holdPositionAll && this.activeSymbol) || ""
};
Contract.holdPosition(data, { loading: false }).then(res => {
console.info(res)
res.map(item=>{
if(item.symbol==this.activeContract.symbol) item.realtimePrice=this.activeContract.price
})
this.holdPositionList = res;
});
}, },
// methods: {
openStatus() { ispopover1(item) {
if(!this.isLogin) return; this.activeSymbol = item;
Contract.openStatus().then(res => { this.$refs.popover.showPopper = false;
this.contractOpen = res.open; this.$router.push({name:'contract',query: {symbol:item}});
if (!this.contractOpen) { },
this.contractAgreement = res.contractAgreement; swapMarketList() {
$("#openContract").modal("show"); let msg = "swapMarketList";
this.ws.send({
cmd: "sub",
msg: msg
});
this.ws.on("message", res => {
let {data, sub, cmd} = res;
if (sub == msg) {
if (data.symbol == 'BTC') (data.price).toFixed(1)
this.contractList = data;
} else if (cmd == "ping") {
this.ws.send({
cmd: "pong"
});
}
});
this.ws.on('close', () => {
this.ws = new Socket(this.Globals.Server.Path.WS1),
console.log('链接关闭');
this.wsOpen();
})
},
wsOpen() {
this.ws.on("open", () => {
this.swapMarketList();
this.$refs.handicap.linkSocket()
});
},
//
getMarketList() {
Contract.getMarketList().then(res => {
this.contractList = res;
//
let firstParent = res[0];
if (firstParent) {
let first = firstParent.marketInfoList[0];
if (first) this.activeSymbol = first.symbol;
}
});
},
//
holdPosition() {
if (!this.isLogin) return;
let data = {
symbol: (this.holdPositionAll && this.activeSymbol) || ""
};
Contract.holdPosition(data, {loading: false}).then(res => {
console.info(res)
res.map(item => {
if (item.symbol == this.activeContract.symbol) item.realtimePrice = this.activeContract.price
})
this.holdPositionList = res;
});
},
//
openStatus() {
if (!this.isLogin) return;
Contract.openStatus().then(res => {
this.contractOpen = res.open;
if (!this.contractOpen) {
this.contractAgreement = res.contractAgreement;
$("#openContract").modal("show");
}
});
},
//
opening() {
Contract.opening().then(res => {
$("#openContract").modal("hide");
this.contractOpen = true;
this.$message.success(this.$t('contract.j9'));
});
},
indexList() {
Home.indexList().then((res) => {
this.pcBannerList = res.pcBannerList
setTimeout(() => {
this.skroll();
}, 100);
}).catch((res) => {
});
},
//
setactiveItem(index = 0) {
this.accountInfo = this.holdPositionList[index]
} }
});
},
//
opening() {
Contract.opening().then(res => {
$("#openContract").modal("hide");
this.contractOpen = true;
this.$message.success(this.$t('contract.j9'));
});
},
indexList() {
Home.indexList().then((res) => {
this.pcBannerList = res.pcBannerList
setTimeout(() => {
this.skroll();
}, 100);
}).catch((res) => {});
},
//
setactiveItem(index=0){
this.accountInfo=this.holdPositionList[index]
} }
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.justify-content-between >>> .dark-app .theme-switch .theme-switch-button .left, .dark-app .theme-switch .theme-switch-button .right{ .justify-content-between > > > .dark-app .theme-switch .theme-switch-button .left, .dark-app .theme-switch .theme-switch-button .right {
color:white !important color: white !important
} }
.change {
// height: 400px;
width: 100%;
background-color: #fff;
display: flex;
// padding: 20px 50px;
margin-top: 10px;
}
.w1 {
width: 30% !important;
height: 100vh !important;
}
</style> </style>

3
src/views/contract/page-bottom.vue

@ -28,9 +28,6 @@
<transfer-record :symbol="symbol" v-if="tab == 5" /> <transfer-record :symbol="symbol" v-if="tab == 5" />
</div> </div>
</div> </div>
<div class="ml-2">
<account class="bg-plain" :accountInfo="accountInfo"/>
</div>
</div> </div>
</template> </template>
<script> <script>

5
src/views/exchange/book-trades.vue

@ -43,7 +43,7 @@
</td> </td>
<td class="w-33 text-right" :class="changeRate.startsWith('+') ? 'increace' : 'decreace'"> <td class="w-33 text-right" :class="changeRate.startsWith('+') ? 'increace' : 'decreace'">
<span>{{ $t("exchange.change") }}</span> <span>{{ $t("exchange.change") }}</span>
{{ changeRate }} {{ exxxt }}
</td> </td>
</tr> </tr>
<tr style="display:block;" v-else> <tr style="display:block;" v-else>
@ -137,6 +137,8 @@ export default {
'priceCny' 'priceCny'
], ],
data() { data() {
now_eex:[];
exxxt:[];
return this.$parent; return this.$parent;
}, },
@ -159,6 +161,7 @@ export default {
let val = Math.division( let val = Math.division(
Math.subtr(this.newTrade.price, this.marketInfo.open), Math.subtr(this.newTrade.price, this.marketInfo.open),
this.marketInfo.open); this.marketInfo.open);
this.exxxt = this.marketInfo.increaseStr;
// + // +
let sign = val >= 0 ? '+' : ''; let sign = val >= 0 ? '+' : '';

3
src/views/exchange/index.vue

@ -59,6 +59,7 @@ export default {
isLianjie:false, isLianjie:false,
// `btcusdt` `/` // `btcusdt` `/`
symbol: this.$route.params.symbol || null, symbol: this.$route.params.symbol || null,
// symbol:`btcusdt`,
marketId: null, marketId: null,
marketInfo: null, // marketInfo: null, //
pair: { pair: {
@ -489,7 +490,7 @@ export default {
}, },
created() { created() {
console.info(this.$route.params)
this.initWs() this.initWs()
if (this.symbol) this.getCurrencyExCny(); if (this.symbol) this.getCurrencyExCny();
this.indexList() this.indexList()

507
src/views/exchange/make-deal.vue

@ -1,288 +1,308 @@
<template> <template>
<div class="col-md-6"> <div class="col-md-6">
<div class="px-4 py-2 heading"> <div class="coin-change d-flex align-items-center py-2 pl-4 heading justify-content-between" style="width:100%;float: left;">
<!-- <theme-change/> --> <div class="d-flex align-items-center">
<el-tooltip placement="bottom" effect="light"> <div class="coin d-flex align-items-center">
<div slot="content" class="market"> <!--{{ sactiveContracttt.pair_name }}-->
<div class="coin p-md color-light fn-20"> {{ pair.to }}/{{ pair.from }}
<img :src="detail.coin_icon" width="20" height="20" alt="">
{{detail.full_name}}
</div> </div>
<div class="list"> <div
<div class="d-flex justify-between p-x-md p-y-xs"> class="price px-3 border-right"
<div>{{$t('nav.c3')}}</div> :class="{
<div class="color-light"> decreace: sactiveContracttt.increase < 0,
{{detail.total_issuance}} increace: sactiveContracttt.increase >= 0
}"
>
<span class="current">{{ sactiveContracttt.price }}$</span>
&nbsp;
<span class="zf">{{ sactiveContracttt.increaseStr }}</span>
</div>
<!-- 币种价值数据 -->
<div class="d-flex fn-12">
<div class="item px-2">
<div class="title mb-1 text-secondary">
24h {{ $t("contract.h7") }}
</div> </div>
</div> <div>
<div class="d-flex justify-between p-x-md p-y-xs"> {{ sactiveContracttt.high }}
<div>{{$t('nav.c4')}}</div>
<div class="color-light">
{{detail.total_circulation}}
</div> </div>
</div> </div>
<div class="d-flex justify-between p-x-md p-y-xs"> <div class="item px-2">
<div>{{$t('nav.c5')}}</div> <div class="title mb-1 text-secondary">
<div class="color-light"> 24h {{ $t("contract.h8") }}
{{detail.crowdfunding_price}}
</div> </div>
</div> <div>
<div class="d-flex justify-between p-x-md p-y-xs"> {{ sactiveContracttt.low }}
<div>{{$t('nav.c6')}}</div>
<div class="color-light">
{{detail.publish_time}}
</div> </div>
</div> </div>
<div class=" p-x-md p-y-xs"> <div class="item px-2">
<div>{{$t('nav.c7')}}</div> <div class="title mb-1 text-secondary">
<div class="color-light ov"> 24h {{ $t("contract.h9") }}
{{detail.white_paper_link}} <!-- {{ $t("contract.e2") }} -->
(USDT)
</div> </div>
</div> <div>
<div class=" p-x-md p-y-xs"> {{ sactiveContracttt.vol }}
<div>{{$t('nav.c8')}}</div>
<div class="color-light ov">
{{detail.official_website_link}}
</div> </div>
</div> </div>
</div> </div>
<div class="p-md">
<div class="fn-20 color-light">
{{$t('nav.c9')}}
</div>
<div class="p-y-md edit-content" v-html="detail.coin_content">
</div>
</div>
</div> </div>
<!-- <el-button><img src="../../assets/img/shuoming.png" width="20" height="20" alt=""></el-button> --> <!-- <div><theme-change /></div> -->
</el-tooltip>
</div> </div>
<!-- 生成K线图 --> <!-- 生成K线图 -->
<k-line :symbol="symbol" :socket="socket" :priceDecimals="priceDecimals"></k-line> <k-line :symbol="symbol" :socket="socket" :priceDecimals="priceDecimals"></k-line>
<!-- 交易处理 --> <!-- 交易处理 -->
<div class="market-trade "> <div class="market-trade ">
<ul class="nav nav-pills"> <ul class="nav nav-pills">
<li class="nav-item"> <li class="nav-item">
<a href :class="[`nav-link`, {active:!isCondition&&isMarket}]" @click.prevent="isCondition=false;isMarket=true;"> <a href :class="[`nav-link`, {active:!isCondition&&isMarket}]"
{{ $t("common.market") }} @click.prevent="isCondition=false;isMarket=true;">
</a> {{ $t("common.market") }}
</li> </a>
<li class="nav-item"> </li>
<a href :class="[`nav-link`, {active:!isCondition&&!isMarket}]" @click.prevent="isCondition=false;isMarket=false;"> <li class="nav-item">
{{ $t("common.limit") }}</a> <a href :class="[`nav-link`, {active:!isCondition&&!isMarket}]"
</li> @click.prevent="isCondition=false;isMarket=false;">
{{ $t("common.limit") }}</a>
<!-- <li class="nav-item"> </li>
<a href :class="[`nav-link`, {active:isCondition&&!isMarket}]" @click.prevent="isCondition=true;isMarket=false;">
{{ $t("common.stop-limit") }}</a> <!-- <li class="nav-item">
</li> <a href :class="[`nav-link`, {active:isCondition&&!isMarket}]" @click.prevent="isCondition=true;isMarket=false;">
<li class="nav-item"> {{ $t("common.stop-limit") }}</a>
<a href :class="[`nav-link`, {active:isCondition&&isMarket}]" @click.prevent="isCondition=true;isMarket=true;"> </li>
{{ $t("common.stop-market") }}</a> <li class="nav-item">
</li> --> <a href :class="[`nav-link`, {active:isCondition&&isMarket}]" @click.prevent="isCondition=true;isMarket=true;">
</ul> {{ $t("common.stop-market") }}</a>
<div class="tab-content"> </li> -->
<div class="tab-pane fade show active"> </ul>
<div class="d-flex justify-content-between"> <div class="tab-content">
<!------------- Buy Order --------------> <div class="tab-pane fade show active">
<div class="market-trade-buy"> <div class="d-flex justify-content-between">
<!------------- Buy Order -------------->
<!-- Trigger Price --> <div class="market-trade-buy">
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.trigger">
<!-- Trigger Price -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
v-model="visibles.buy.trigger">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.buy[0] }} {{ msgList.buy[0] }}
</span> </span>
<div class="input-group" v-if="isCondition" slot="reference"> <div class="input-group" v-if="isCondition" slot="reference">
<input type="number" v-model="buyorder.trigger_price" class="form-control" :placeholder="$t('exchange.trigger-price')"> <input type="number" v-model="buyorder.trigger_price" class="form-control"
<div class="input-group-append"> :placeholder="$t('exchange.trigger-price')">
<span class="input-group-text">{{pair.from}}</span> <div class="input-group-append">
<span class="input-group-text">{{ pair.from }}</span>
</div>
</div>
</el-popover>
<template v-if="isMarket">
<div class="input-group">
<!-- Market Price -->
<input type="text" class="form-control" disabled
:placeholder="$t('exchange.at-best-price')">
</div> </div>
</div> </template>
</el-popover> <template v-else>
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
<template v-if="isMarket"> v-model="visibles.buy.limitPrice">
<div class="input-group">
<!-- Market Price -->
<input type="text" class="form-control" disabled :placeholder="$t('exchange.at-best-price')">
</div>
</template>
<template v-else>
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.limitPrice">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.buy[1] }} {{ msgList.buy[1] }}
</span> </span>
<div class="input-group" slot="reference"> <div class="input-group" slot="reference">
<!-- Entrust Price --> <!-- Entrust Price -->
<input type="number" v-model="buyorder.entrust_price" class="form-control" :placeholder="$t('exchange.enter-price')"> <input type="number" v-model="buyorder.entrust_price" class="form-control"
<div class="input-group-append"> :placeholder="$t('exchange.enter-price')">
<span class="input-group-text">{{pair.from}}</span> <div class="input-group-append">
<span class="input-group-text">{{ pair.from }}</span>
</div>
</div> </div>
</div> </el-popover>
</el-popover> </template>
</template>
<!-- Amount/Total --> <!-- Amount/Total -->
<template v-if="isMarket"> <template v-if="isMarket">
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.marketTotal"> <el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
v-model="visibles.buy.marketTotal">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.buy[3] }} {{ msgList.buy[3] }}
</span> </span>
<div class="input-group" slot="reference"> <div class="input-group" slot="reference">
<input type="number" v-model="buyTotal" class="form-control" min=0 :placeholder="$t('exchange.enter-total')"> <input type="number" v-model="buyTotal" class="form-control" min=0
<div class="input-group-append"> :placeholder="$t('exchange.enter-total')">
<span class="input-group-text">{{pair.from}}</span> <div class="input-group-append">
<span class="input-group-text">{{ pair.from }}</span>
</div>
</div> </div>
</div> </el-popover>
</el-popover> </template>
</template> <template v-else>
<template v-else> <el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.limitAmount"> v-model="visibles.buy.limitAmount">
<!-- 提示框的内容 --> <!-- 提示框的内容 -->
<span class="content"> <span class="content">
<!-- 图标 --> <!-- 图标 -->
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
<!-- 提示 --> <!-- 提示 -->
{{ msgList.buy[2] }} {{ msgList.buy[2] }}
</span> </span>
<div class="input-group" slot="reference"> <div class="input-group" slot="reference">
<input type="number" v-model="buyorder.amount" class="form-control" min=0 :placeholder="$t('exchange.enter-amount')"> <input type="number" v-model="buyorder.amount" class="form-control" min=0
<div class="input-group-append"> :placeholder="$t('exchange.enter-amount')">
<span class="input-group-text">{{pair.to}}</span> <div class="input-group-append">
<span class="input-group-text">{{ pair.to }}</span>
</div>
</div> </div>
</div> </el-popover>
</el-popover> </template>
</template>
<!-- Percent -->
<!-- Percent --> <ul class="market-trade-list">
<ul class="market-trade-list"> <li v-for="(item,index) in percentage" :key="index"
<li v-for="(item,index) in percentage" :key="index" :class="{buyPercentActive:index == buyPercentIndex}" @click="renderBuyAmount(item.value, index)"> :class="{buyPercentActive:index == buyPercentIndex}"
<a href="javascript:void 0">{{ item.label }}</a> @click="renderBuyAmount(item.value, index)">
</li> <a href="javascript:void 0">{{ item.label }}</a>
</ul> </li>
</ul>
<!-- Total -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.orderTotal"> <!-- Total -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
v-model="visibles.buy.orderTotal">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.buy[5] }} {{ msgList.buy[5] }}
</span> </span>
<p slot="reference"> <p slot="reference">
{{$t('exchange.order-total')}} {{ $t('exchange.order-total') }}
<span> <b>{{buyTotal}}</b> {{pair.from}} </span> <span> <b>{{ buyTotal }}</b> {{ pair.from }} </span>
</p>
</el-popover>
<!-- Available -->
<p>
<!--{{ $t('exchange.amount') }}-->
<!--<span> {{ toBalance }} {{ pair.to }}</span><br/>-->
{{ $t('exchange.balance') }}
<span> {{ fromBalance }} {{ pair.from }}</span>
</p> </p>
</el-popover> <button class="btn buy" @click="handleBuyOrder">{{ $t("common.buy") }} {{ pair.to }}
</button>
<!-- Available --> </div>
<p>
{{ $t('exchange.amount') }}
<span> {{toBalance}} {{pair.to}}</span><br />
{{ $t('exchange.balance') }}
<span> {{fromBalance}} {{pair.from}}</span>
</p>
<button class="btn buy" @click="handleBuyOrder">{{ $t("common.buy") }} {{pair.to}}</button>
</div>
<!------------ Sell Order -----------> <!------------ Sell Order ----------->
<div class="market-trade-sell"> <div class="market-trade-sell">
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.trigger"> <el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
v-model="visibles.sell.trigger">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.sell[0] }} {{ msgList.sell[0] }}
</span> </span>
<!-- Trigger Price --> <!-- Trigger Price -->
<div class="input-group" v-if="isCondition" slot="reference"> <div class="input-group" v-if="isCondition" slot="reference">
<input type="number" v-model="sellorder.trigger_price" class="form-control" min=0 :placeholder="$t('exchange.trigger-price')"> <input type="number" v-model="sellorder.trigger_price" class="form-control" min=0
<div class="input-group-append"> :placeholder="$t('exchange.trigger-price')">
<span class="input-group-text">{{pair.from}}</span> <div class="input-group-append">
<span class="input-group-text">{{ pair.from }}</span>
</div>
</div>
</el-popover>
<template v-if="isMarket">
<div class="input-group">
<!-- Market Price -->
<input type="text" class="form-control" disabled
:placeholder="$t('exchange.at-best-price')">
</div> </div>
</div> </template>
</el-popover> <template v-else>
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
<template v-if="isMarket"> v-model="visibles.sell.limitPrice">
<div class="input-group">
<!-- Market Price -->
<input type="text" class="form-control" disabled :placeholder="$t('exchange.at-best-price')">
</div>
</template>
<template v-else>
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.limitPrice">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.sell[1] }} {{ msgList.sell[1] }}
</span> </span>
<div class="input-group" slot="reference"> <div class="input-group" slot="reference">
<!-- Entrust Price --> <!-- Entrust Price -->
<input type="number" v-model="sellorder.entrust_price" class="form-control" min=0 :placeholder="$t('exchange.enter-price')"> <input type="number" v-model="sellorder.entrust_price" class="form-control"
<div class="input-group-append"> min=0 :placeholder="$t('exchange.enter-price')">
<span class="input-group-text">{{pair.from}}</span> <div class="input-group-append">
<span class="input-group-text">{{ pair.from }}</span>
</div>
</div> </div>
</div> </el-popover>
</el-popover> </template>
</template>
<!-- Amount --> <!-- Amount -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.limitAmount"> <el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
v-model="visibles.sell.limitAmount">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.sell[2] }} {{ msgList.sell[2] }}
</span> </span>
<div class="input-group" slot="reference"> <div class="input-group" slot="reference">
<input type="number" v-model="sellorder.amount" class="form-control" min=0 :placeholder="$t('exchange.enter-amount')"> <input type="number" v-model="sellorder.amount" class="form-control" min=0
<div class="input-group-append"> :placeholder="$t('exchange.enter-amount')">
<span class="input-group-text">{{pair.to}}</span> <div class="input-group-append">
<span class="input-group-text">{{ pair.to }}</span>
</div>
</div> </div>
</div> </el-popover>
</el-popover>
<ul class="market-trade-list">
<li v-for="(item,index) in percentage" :key="index" :class="{sellPercentActive:index == sellPercentIndex}" @click="renderSellAmount(item.value, index)">
<a href="javascript:void 0">{{ item.label }}</a>
</li>
</ul>
<!-- Total --> <ul class="market-trade-list">
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.orderTotal"> <li v-for="(item,index) in percentage" :key="index"
:class="{sellPercentActive:index == sellPercentIndex}"
@click="renderSellAmount(item.value, index)">
<a href="javascript:void 0">{{ item.label }}</a>
</li>
</ul>
<!-- Total -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual"
v-model="visibles.sell.orderTotal">
<span class="content"> <span class="content">
<i class="el-icon-warning-outline"></i> <i class="el-icon-warning-outline"></i>
{{ msgList.sell[5] }} {{ msgList.sell[5] }}
</span> </span>
<p slot="reference"> <p slot="reference">
{{ $t('exchange.order-total') }} {{ $t('exchange.order-total') }}
<span> <span>
<b>{{sellTotal}}</b> {{pair.from}} </span> <b>{{ sellTotal }}</b> {{ pair.from }} </span>
</p>
</el-popover>
<p>
{{ $t('exchange.balance') }}
<!--{{ $t('exchange.amount') }}-->
<span> {{ toBalance }} {{ pair.to }} </span><br/>
<!--{{ $t('exchange.balance') }}-->
<!--<span> {{ fromBalance }} {{ pair.from }}</span>-->
</p> </p>
</el-popover> <button class="btn sell" @click="handleSellOrder">{{ $t("common.sell") }} {{ pair.to }}
</button>
<p> </div>
{{$t('exchange.amount')}}
<span> {{toBalance}} {{pair.to}} </span><br />
{{ $t('exchange.balance') }}
<span> {{fromBalance}} {{pair.from}}</span>
</p>
<button class="btn sell" @click="handleSellOrder">{{ $t("common.sell") }} {{pair.to}}</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script> <script>
import Exchange from "@/api/exchange"; import Exchange from "@/api/exchange";
import Market from "@/api/market"; import Market from "@/api/market";
export default { export default {
props: ["isLogin", "socket", "symbol", "pair", "buyorder", "sellorder", "fromBalance", "toBalance", "newTrade", "minQty", "minTotal", "priceDecimals", "qtyDecimals"], props: ["isLogin", "socket", "symbol", "pair", "buyorder", "sellorder", "fromBalance", "toBalance", "newTrade", "minQty", "minTotal", "priceDecimals", "qtyDecimals"],
data() { data() {
return { return {
detail:[], detail: [],
isMarket: true, isMarket: true,
isCondition: false, isCondition: false,
userBanlance: null, userBanlance: null,
@ -309,15 +329,16 @@ export default {
orderTotal: false, orderTotal: false,
}, },
}, },
sactiveContracttt: [],
msgList: { msgList: {
"buy": Array(6).fill(''), // 5 "buy": Array(6).fill(''), // 5
"sell": Array(6).fill('') "sell": Array(6).fill('')
}, },
// //
percentage: [{ percentage: [{
label: "25%", label: "25%",
value: 0.25 value: 0.25
}, },
{ {
label: "50%", label: "50%",
value: 0.5 value: 0.5
@ -398,7 +419,7 @@ export default {
// //
newTrade(newVal, oldVal) { newTrade(newVal, oldVal) {
// if (!this.isMarket ) { // if (!this.isMarket ) {
this.sactiveContracttt = this.$parent.marketInfo;
// trade // trade
if (!oldVal && newVal) { // if (!oldVal && newVal) { //
// orderprice // orderprice
@ -413,25 +434,25 @@ export default {
} }
// } // }
}, },
symbol(){ symbol() {
this.getCoinInfo() this.getCoinInfo()
} }
}, },
methods: { methods: {
getCoinInfo(){ getCoinInfo() {
// console.log(this.symbol.indexOf('usdt')!=-1) // console.log(this.symbol.indexOf('usdt')!=-1)
if(this.symbol.indexOf('usdt')!=-1){ if (this.symbol.indexOf('usdt') != -1) {
var market=this.symbol.substring(0,this.symbol.length-4); var market = this.symbol.substring(0, this.symbol.length - 4);
}else{ } else {
var market=this.symbol.substring(0,this.symbol.length-3); var market = this.symbol.substring(0, this.symbol.length - 3);
} }
console.log(market) console.log(market)
let data = { let data = {
coin_name:market, coin_name: market,
lang:this.lang lang: this.lang
} }
Market.getCoinInfo(data).then(res => { Market.getCoinInfo(data).then(res => {
this.detail = res this.detail = res
}).catch(err => { }).catch(err => {
@ -567,8 +588,8 @@ export default {
// //
if (!this.isLogin) { if (!this.isLogin) {
this.$confirm(this.$t('nav.login'), { this.$confirm(this.$t('nav.login'), {
confirmButtonText:this.$t('common.confirmBtn'), confirmButtonText: this.$t('common.confirmBtn'),
cancelButtonText: this.$t('common.cancelBtn'), cancelButtonText: this.$t('common.cancelBtn'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$router.push(`/sign-in`); this.$router.push(`/sign-in`);
@ -593,13 +614,13 @@ export default {
if (order.amount < this.minQty) { if (order.amount < this.minQty) {
flag = false; flag = false;
this.visibles[orderType].limitAmount = true; this.visibles[orderType].limitAmount = true;
this.msgList[orderType][2] = this.$t('nav.a3')+`${this.minQty}`; this.msgList[orderType][2] = this.$t('nav.a3') + `${this.minQty}`;
} }
if (total < this.minTotal) { if (total < this.minTotal) {
flag = false; flag = false;
this.visibles[orderType].orderTotal = true; this.visibles[orderType].orderTotal = true;
this.msgList[orderType][5] = this.$t('exchange.total')+`${this.minTotal}`; this.msgList[orderType][5] = this.$t('exchange.total') + `${this.minTotal}`;
} }
} }
break; break;
@ -609,11 +630,11 @@ export default {
if (this.empty(total)) { if (this.empty(total)) {
flag = false; flag = false;
this.visibles[orderType].marketTotal = true; this.visibles[orderType].marketTotal = true;
this.msgList[orderType][3] = this.$t('nav.a4'); this.msgList[orderType][3] = this.$t('nav.a4');
} else if (this.total < this.minTotal) { } else if (this.total < this.minTotal) {
flag = false; flag = false;
this.visibles.marketTotal = true; this.visibles.marketTotal = true;
this.msgList[3] = this.$t('nav.a5')+` ${this.minTotal}`; this.msgList[3] = this.$t('nav.a5') + ` ${this.minTotal}`;
} }
} }
@ -621,11 +642,11 @@ export default {
if (this.empty(order.amount)) { if (this.empty(order.amount)) {
flag = false; flag = false;
this.visibles[orderType].marketAmount = true; this.visibles[orderType].marketAmount = true;
this.msgList[orderType][4] = this.$t('nav.a6'); this.msgList[orderType][4] = this.$t('nav.a6');
} else if (order.amount < this.minQty) { } else if (order.amount < this.minQty) {
flag = false; flag = false;
this.visibles[orderType].marketAmount = true; this.visibles[orderType].marketAmount = true;
this.msgList[orderType][4] = this.$t('nav.a7')+` ${this.minQty}`; this.msgList[orderType][4] = this.$t('nav.a7') + ` ${this.minQty}`;
} }
} }
break; break;
@ -635,15 +656,15 @@ export default {
if (this.empty(order.trigger_price)) { if (this.empty(order.trigger_price)) {
flag = false; flag = false;
this.visibles[orderType].trigger = true; this.visibles[orderType].trigger = true;
this.msgList[orderType][0] = this.$t('nav.a8') this.msgList[orderType][0] = this.$t('nav.a8')
} else if (this.empty(order.entrust_price)) { } else if (this.empty(order.entrust_price)) {
flag = false; flag = false;
this.visibles[orderType].limitPrice = true; this.visibles[orderType].limitPrice = true;
this.msgList[orderType][1] = this.$t('nav.a9') this.msgList[orderType][1] = this.$t('nav.a9')
} else if (this.empty(order.amount)) { } else if (this.empty(order.amount)) {
flag = false; flag = false;
this.visibles[orderType].limitAmount = true; this.visibles[orderType].limitAmount = true;
this.msgList[orderType][2] = this.$t('nav.b1') this.msgList[orderType][2] = this.$t('nav.b1')
} }
break; break;
@ -662,7 +683,7 @@ export default {
} else if (total < this.minTotal) { } else if (total < this.minTotal) {
flag = false; flag = false;
this.visibles[orderType].marketTotal = true; this.visibles[orderType].marketTotal = true;
this.msgList[orderType][3] = this.$t('nav.b5')+` ${this.minTotal}` this.msgList[orderType][3] = this.$t('nav.b5') + ` ${this.minTotal}`
} }
} }
@ -674,7 +695,7 @@ export default {
} else if (order.amount < this.minQty) { } else if (order.amount < this.minQty) {
flag = false; flag = false;
this.visibles[orderType].marketAmount = true; this.visibles[orderType].marketAmount = true;
this.msgList[orderType][4] =this.$t('nav.b7')+ ` ${this.minQty}` this.msgList[orderType][4] = this.$t('nav.b7') + ` ${this.minQty}`
} }
} }
@ -725,7 +746,8 @@ export default {
border: none; border: none;
border-color: transparent; border-color: transparent;
} }
.market{
.market {
width: 300px; width: 300px;
height: 500px; height: 500px;
overflow: scroll; overflow: scroll;
@ -734,18 +756,21 @@ export default {
padding: 10px; padding: 10px;
display: -webkit-box; display: -webkit-box;
color: black; color: black;
.ov{
.ov {
width: 100%; width: 100%;
table-layout:fixed; table-layout: fixed;
word-break:break-all; word-break: break-all;
overflow:hidden; overflow: hidden;
} }
} }
.p-y-xs{
.p-y-xs {
padding: 5px 0; padding: 5px 0;
} }
.el-button{
padding: 0!important; .el-button {
background: transparent!important; padding: 0 !important;
background: transparent !important;
} }
</style> </style>

874
src/views/exchange/make-deal的_cpoy.vue

@ -0,0 +1,874 @@
<template>
<div class="col-md-6">
<div class="px-4 py-2 heading">
<!--<div class="coin-change d-flex align-items-center py-2 pl-4 heading justify-content-between" style="width:100%;float: right">-->
<!-- <div class="d-flex align-items-center">-->
<!-- <div class="coin d-flex align-items-center">-->
<!-- <el-popover-->
<!-- placement="bottom"-->
<!-- ref="popover"-->
<!-- width="400"-->
<!-- trigger="click">-->
<!-- <div slot="reference">-->
<!-- {{ activeContract.pair_name }}11111111-->
<!-- &lt;!&ndash; <el-button size="mini">-->
<!-- <i class="el-icon-arrow-down"></i>-->
<!-- </el-button> &ndash;&gt;-->
<!-- </div>-->
<!-- </el-popover>-->
<!-- </div>-->
<!-- <div-->
<!-- class="price px-3 border-right"-->
<!-- :class="{-->
<!-- decreace: activeContract.increase < 0,-->
<!-- increace: activeContract.increase >= 0-->
<!-- }"-->
<!-- >-->
<!-- <span class="current">{{ activeContract.price }}$</span>-->
<!-- &nbsp;-->
<!-- <span class="zf">{{ activeContract.increaseStr }}</span>-->
<!-- </div>-->
<!-- &lt;!&ndash; 币种价值数据 &ndash;&gt;-->
<!-- <div class="d-flex fn-12">-->
<!-- <div class="item px-2">-->
<!-- <div class="title mb-1 text-secondary">-->
<!-- 24h {{ $t("contract.h7") }}-->
<!-- </div>-->
<!-- <div>-->
<!-- {{ activeContract.high }}-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="item px-2">-->
<!-- <div class="title mb-1 text-secondary">-->
<!-- 24h {{ $t("contract.h8") }}-->
<!-- </div>-->
<!-- <div>-->
<!-- {{ activeContract.low }}-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="item px-2">-->
<!-- <div class="title mb-1 text-secondary">-->
<!-- 24h {{ $t("contract.h9") }}-->
<!-- &lt;!&ndash; {{ $t("contract.e2") }} &ndash;&gt;-->
<!-- (USDT)-->
<!-- </div>-->
<!-- <div>-->
<!-- {{ activeContract.vol }}-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div><theme-change /></div> -->
<!--</div>-->
<!-- <theme-change/> -->
<el-tooltip placement="bottom" effect="light">
<div slot="content" class="market">
<div class="coin p-md color-light fn-20">
<img :src="detail.coin_icon" width="20" height="20" alt="">
{{detail.full_name}}
</div>
<div class="list">
<div class="d-flex justify-between p-x-md p-y-xs">
<div>{{$t('nav.c3')}}</div>
<div class="color-light">
{{detail.total_issuance}}
</div>
</div>
<div class="d-flex justify-between p-x-md p-y-xs">
<div>{{$t('nav.c4')}}</div>
<div class="color-light">
{{detail.total_circulation}}
</div>
</div>
<div class="d-flex justify-between p-x-md p-y-xs">
<div>{{$t('nav.c5')}}</div>
<div class="color-light">
{{detail.crowdfunding_price}}
</div>
</div>
<div class="d-flex justify-between p-x-md p-y-xs">
<div>{{$t('nav.c6')}}</div>
<div class="color-light">
{{detail.publish_time}}
</div>
</div>
<div class=" p-x-md p-y-xs">
<div>{{$t('nav.c7')}}</div>
<div class="color-light ov">
{{detail.white_paper_link}}
</div>
</div>
<div class=" p-x-md p-y-xs">
<div>{{$t('nav.c8')}}</div>
<div class="color-light ov">
{{detail.official_website_link}}
</div>
</div>
</div>
<div class="p-md">
<div class="fn-20 color-light">
{{$t('nav.c9')}}
</div>
<div class="p-y-md edit-content" v-html="detail.coin_content">
</div>
</div>
</div>
<!-- <el-button><img src="../../assets/img/shuoming.png" width="20" height="20" alt=""></el-button> -->
</el-tooltip>
</div>
<!-- 生成K线图 -->
<k-line :symbol="symbol" :socket="socket" :priceDecimals="priceDecimals"></k-line>
<!-- 交易处理 -->
<div class="market-trade ">
<ul class="nav nav-pills">
<li class="nav-item">
<a href :class="[`nav-link`, {active:!isCondition&&isMarket}]" @click.prevent="isCondition=false;isMarket=true;">
{{ $t("common.market") }}
</a>
</li>
<li class="nav-item">
<a href :class="[`nav-link`, {active:!isCondition&&!isMarket}]" @click.prevent="isCondition=false;isMarket=false;">
{{ $t("common.limit") }}</a>
</li>
<!-- <li class="nav-item">
<a href :class="[`nav-link`, {active:isCondition&&!isMarket}]" @click.prevent="isCondition=true;isMarket=false;">
{{ $t("common.stop-limit") }}</a>
</li>
<li class="nav-item">
<a href :class="[`nav-link`, {active:isCondition&&isMarket}]" @click.prevent="isCondition=true;isMarket=true;">
{{ $t("common.stop-market") }}</a>
</li> -->
</ul>
<div class="tab-content">
<div class="tab-pane fade show active">
<div class="d-flex justify-content-between">
<!------------- Buy Order -------------->
<div class="market-trade-buy">
<!-- Trigger Price -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.trigger">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.buy[0] }}
</span>
<div class="input-group" v-if="isCondition" slot="reference">
<input type="number" v-model="buyorder.trigger_price" class="form-control" :placeholder="$t('exchange.trigger-price')">
<div class="input-group-append">
<span class="input-group-text">{{pair.from}}</span>
</div>
</div>
</el-popover>
<template v-if="isMarket">
<div class="input-group">
<!-- Market Price -->
<input type="text" class="form-control" disabled :placeholder="$t('exchange.at-best-price')">
</div>
</template>
<template v-else>
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.limitPrice">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.buy[1] }}
</span>
<div class="input-group" slot="reference">
<!-- Entrust Price -->
<input type="number" v-model="buyorder.entrust_price" class="form-control" :placeholder="$t('exchange.enter-price')">
<div class="input-group-append">
<span class="input-group-text">{{pair.from}}</span>
</div>
</div>
</el-popover>
</template>
<!-- Amount/Total -->
<template v-if="isMarket">
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.marketTotal">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.buy[3] }}
</span>
<div class="input-group" slot="reference">
<input type="number" v-model="buyTotal" class="form-control" min=0 :placeholder="$t('exchange.enter-total')">
<div class="input-group-append">
<span class="input-group-text">{{pair.from}}</span>
</div>
</div>
</el-popover>
</template>
<template v-else>
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.limitAmount">
<!-- 提示框的内容 -->
<span class="content">
<!-- 图标 -->
<i class="el-icon-warning-outline"></i>
<!-- 提示 -->
{{ msgList.buy[2] }}
</span>
<div class="input-group" slot="reference">
<input type="number" v-model="buyorder.amount" class="form-control" min=0 :placeholder="$t('exchange.enter-amount')">
<div class="input-group-append">
<span class="input-group-text">{{pair.to}}</span>
</div>
</div>
</el-popover>
</template>
<!-- Percent -->
<ul class="market-trade-list">
<li v-for="(item,index) in percentage" :key="index" :class="{buyPercentActive:index == buyPercentIndex}" @click="renderBuyAmount(item.value, index)">
<a href="javascript:void 0">{{ item.label }}</a>
</li>
</ul>
<!-- Total -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.buy.orderTotal">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.buy[5] }}
</span>
<p slot="reference">
{{$t('exchange.order-total')}}
<span> <b>{{buyTotal}}</b> {{pair.from}} </span>
</p>
</el-popover>
<!-- Available -->
<p>
{{ $t('exchange.amount') }}
<span> {{toBalance}} {{pair.to}}</span><br />
{{ $t('exchange.balance') }}
<span> {{fromBalance}} {{pair.from}}</span>
</p>
<button class="btn buy" @click="handleBuyOrder">{{ $t("common.buy") }} {{pair.to}}</button>
</div>
<!------------ Sell Order ----------->
<div class="market-trade-sell">
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.trigger">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.sell[0] }}
</span>
<!-- Trigger Price -->
<div class="input-group" v-if="isCondition" slot="reference">
<input type="number" v-model="sellorder.trigger_price" class="form-control" min=0 :placeholder="$t('exchange.trigger-price')">
<div class="input-group-append">
<span class="input-group-text">{{pair.from}}</span>
</div>
</div>
</el-popover>
<template v-if="isMarket">
<div class="input-group">
<!-- Market Price -->
<input type="text" class="form-control" disabled :placeholder="$t('exchange.at-best-price')">
</div>
</template>
<template v-else>
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.limitPrice">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.sell[1] }}
</span>
<div class="input-group" slot="reference">
<!-- Entrust Price -->
<input type="number" v-model="sellorder.entrust_price" class="form-control" min=0 :placeholder="$t('exchange.enter-price')">
<div class="input-group-append">
<span class="input-group-text">{{pair.from}}</span>
</div>
</div>
</el-popover>
</template>
<!-- Amount -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.limitAmount">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.sell[2] }}
</span>
<div class="input-group" slot="reference">
<input type="number" v-model="sellorder.amount" class="form-control" min=0 :placeholder="$t('exchange.enter-amount')">
<div class="input-group-append">
<span class="input-group-text">{{pair.to}}</span>
</div>
</div>
</el-popover>
<ul class="market-trade-list">
<li v-for="(item,index) in percentage" :key="index" :class="{sellPercentActive:index == sellPercentIndex}" @click="renderSellAmount(item.value, index)">
<a href="javascript:void 0">{{ item.label }}</a>
</li>
</ul>
<!-- Total -->
<el-popover popper-class='popover-tips' placement="top-start" trigger="manual" v-model="visibles.sell.orderTotal">
<span class="content">
<i class="el-icon-warning-outline"></i>
{{ msgList.sell[5] }}
</span>
<p slot="reference">
{{ $t('exchange.order-total') }}
<span>
<b>{{sellTotal}}</b> {{pair.from}} </span>
</p>
</el-popover>
<p>
{{$t('exchange.amount')}}
<span> {{toBalance}} {{pair.to}} </span><br />
{{ $t('exchange.balance') }}
<span> {{fromBalance}} {{pair.from}}</span>
</p>
<button class="btn sell" @click="handleSellOrder">{{ $t("common.sell") }} {{pair.to}}</button>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Exchange from "@/api/exchange";
import Market from "@/api/market";
import Contract from "@/api/contract";
export default {
props: ["isLogin", "socket", "symbol", "pair", "buyorder", "sellorder", "fromBalance", "toBalance", "newTrade", "minQty", "minTotal", "priceDecimals", "qtyDecimals"],
data() {
return {
contractList: [],
detail:[],
isMarket: true,
isCondition: false,
userBanlance: null,
cacheTotal: 0, //
cachePrice: null, //
activeContract:[],
//
visibles: {
"buy": {
limitPrice: false, //
limitAmount: false, //
marketTotal: false, //
marketAmount: false, //
trigger: false, //
orderTotal: false, //
},
"sell": {
limitPrice: false,
limitAmount: false,
marketTotal: false,
marketAmount: false,
trigger: false,
orderTotal: false,
},
},
msgList: {
"buy": Array(6).fill(''), // 5
"sell": Array(6).fill('')
},
//
percentage: [{
label: "25%",
value: 0.25
},
{
label: "50%",
value: 0.5
},
{
label: "75%",
value: 0.75
},
{
label: "100%",
value: 1
},
],
//
buyPercentIndex: null,
sellPercentIndex: null,
}
},
computed: {
_activeContract(val) {
Market.getMarketList().then(data => {
let contractList = data[0]
.map(item => item.marketInfoList)
.flat()
.find(item => item.symbol == this.activeSymbol) || {}
}).catch(err => {});
// console.log("market detail")
// console.log(val)
// let contractList = this.contractList
// .map(item => item.marketInfoList)
// .flat()
// .find(item => item.symbol == this.activeSymbol) || {}
// if (val.price) {
// delete contractList.price
// }
// console.log(contractList)
return contractList;
},
// type
type() {
if (!this.isCondition) {
return this.isMarket ? 2 : 1;
} else {
return this.isMarket ? 4 : 3;
}
},
theme() {
return localStorage.theme ? localStorage.theme : "light";
},
buyTotal: {
get() {
if (!this.isMarket) {
return Math.multiple(this.buyorder.entrust_price, this.buyorder.amount);
} else {
return this.cacheTotal;
}
},
set(val) {
//
if (!this.isMarket) {
this.buyorder.amount = Math.division(val, this.buyorder.entrust_price);
} else { //
this.cacheTotal = val;
}
}
},
sellTotal: {
get() {
return Math.multiple(this.sellorder.entrust_price, this.sellorder.amount);
}
},
//
lang() {
let browser_Lang = navigator.language.includes('zh') ? 'zh' : 'en';
return localStorage.lang || browser_Lang;
},
},
watch: {
custom(newVal) {
console.log(newVal)
},
type() {
//
// percentage
this.reset();
},
//
newTrade(newVal, oldVal) {
// if (!this.isMarket ) {
// trade
if (!oldVal && newVal) { //
// orderprice
this.cachePrice = newVal.price;
this.reset();
}
//
if (oldVal && !newVal) { //
this.cachePrice = null;
this.reset();
}
// }
},
symbol(){
this.getCoinInfo()
}
},
methods: {
//
getMarketList() {
Contract.getMarketList().then(res => {
this.contractList = res[0];
//console.log("%c%s","color:green","market res")
let tmpList = res[0].marketInfoList;
for(i=0;i<tmpList.length;i++){
let tcurCoin = tmpList[i]
if(tcurCoin.symbol.toLowerCase()+"usdt" === this.symbol){
this.activeContract = tcurCoin
}
}
//
this.activeContract = filterList
//
let firstParent = res[0];
if (firstParent) {
let first = firstParent.marketInfoList[0];
if (first) this.activeSymbol = first.symbol;
}
});
},
getCoinInfo(){
// console.log(this.symbol.indexOf('usdt')!=-1)
if(this.symbol.indexOf('usdt')!=-1){
var market=this.symbol.substring(0,this.symbol.length-4);
}else{
var market=this.symbol.substring(0,this.symbol.length-3);
}
console.log("%c%s","#ccff00","currnet market")
console.log(market)
let data = {
coin_name:market,
lang:this.lang
}
//
let tmpList = this.contractList.marketInfoList;
for(i=0;i<tmpList.length;i++){
let tcurCoin = tmpList[i]
if(tcurCoin.symbol.toLowerCase()+"usdt" === this.symbol){
this.activeContract = tcurCoin
}
}
Market.getCoinInfo(data).then(res => {
this.detail = res
}).catch(err => {
});
},
renderBuyAmount(val, index) {
console.info(val)
console.info(this.buyorder)
if (!this.buyorder.entrust_price) {
this.visibles.buy.limitPrice = true;
this.msgList.buy[1] = this.$t('nav.set');
this.clearAll();
return;
}
this.buyPercentIndex = index;
this.buyTotal = Math.multiple(this.fromBalance, val);
},
renderSellAmount(val, index) {
if (!this.sellorder.entrust_price) {
this.visibles.sell.limitPrice = true;
this.msgList.sell[1] = this.$t('nav.set');
this.clearAll();
return;
}
this.sellPercentIndex = index;
this.sellorder.amount = Math.multiple(this.toBalance, val);
},
handleBuyOrder() {
//
if (!this.chkValidate(this.buyorder, this.buyTotal, "buy")) return;
const baseArgs = {
symbol: this.pair.to.concat('/', this.pair.from),
type: this.type,
};
//
// 1
// 2
// 3
// 4
Exchange.storeEntrust(Object.assign(this.buyorder, {
total: this.buyTotal,
}, baseArgs)).then(data => {
//
this.$emit('update');
//
this.reset();
}).catch(err => {
});
},
handleSellOrder() {
//
if (!this.chkValidate(this.sellorder, this.sellTotal, "sell")) return;
// console.info(this.sellTotal)
const baseArgs = {
symbol: this.pair.to.concat('/', this.pair.from),
type: this.type,
};
Exchange.storeEntrust(Object.assign(this.sellorder, {
total: this.sellTotal
}, baseArgs)).then(data => {
//
this.$emit('update');
//
this.reset();
}).catch(err => {
});
},
reset() {
// newTrade 0
//
let price = this.cachePrice || 0;
// console.info(price)
// console.info(this.priceDecimals)
this.buyorder.entrust_price = Math.omitTo(price, this.priceDecimals);
this.buyorder.trigger_price = Math.omitTo(price, this.priceDecimals);
this.sellorder.entrust_price = Math.omitTo(price, this.priceDecimals);
// console.info(this.sellorder.entrust_price)
this.sellorder.trigger_price = Math.omitTo(price, this.priceDecimals);
//
this.buyorder.amount = 0;
this.sellorder.amount = 0;
// totalset
// this.buyTotal = 0;
// this.cacheTotal = 0;
//
this.buyPercentIndex = -1;
this.sellPercentIndex = -1;
},
clearAll() {
// 5s
setTimeout(function () {
Object.keys(this.visibles.buy).forEach(key => this.visibles.buy[key] = false);
Object.keys(this.visibles.sell).forEach(key => this.visibles.sell[key] = false);
}.bind(this), 5000);
},
empty(val) {
let ret;
switch (typeof val) {
case "number":
ret = val == 0;
break;
case "string":
ret = val == "0" || /^\s?$/.test(val);
break;
case "boolean":
ret = val;
break;
default:
ret = Boolean(val);
break;
}
return ret;
},
chkValidate(order, total, orderType) {
//
//
if (!this.isLogin) {
this.$confirm(this.$t('nav.login'), {
confirmButtonText:this.$t('common.confirmBtn'),
cancelButtonText: this.$t('common.cancelBtn'),
type: 'warning'
}).then(() => {
this.$router.push(`/sign-in`);
}).catch();
return;
}
let flag = true;
switch (this.type) {
case 1: // limit
if (this.empty(order.entrust_price)) {
flag = false;
this.visibles[orderType].limitPrice = true;
this.msgList[orderType][1] = this.$t('nav.a1');
} else if (this.empty(order.amount)) {
flag = false;
this.visibles[orderType].limitAmount = true;
this.msgList[orderType][2] = this.$t('nav.a2');
} else {
if (order.amount < this.minQty) {
flag = false;
this.visibles[orderType].limitAmount = true;
this.msgList[orderType][2] = this.$t('nav.a3')+`${this.minQty}`;
}
if (total < this.minTotal) {
flag = false;
this.visibles[orderType].orderTotal = true;
this.msgList[orderType][5] = this.$t('exchange.total')+`${this.minTotal}`;
}
}
break;
case 2: // market
if (order.direction == "buy") { //
if (this.empty(total)) {
flag = false;
this.visibles[orderType].marketTotal = true;
this.msgList[orderType][3] = this.$t('nav.a4');
} else if (this.total < this.minTotal) {
flag = false;
this.visibles.marketTotal = true;
this.msgList[3] = this.$t('nav.a5')+` ${this.minTotal}`;
}
}
if (order.direction == "sell") { //
if (this.empty(order.amount)) {
flag = false;
this.visibles[orderType].marketAmount = true;
this.msgList[orderType][4] = this.$t('nav.a6');
} else if (order.amount < this.minQty) {
flag = false;
this.visibles[orderType].marketAmount = true;
this.msgList[orderType][4] = this.$t('nav.a7')+` ${this.minQty}`;
}
}
break;
case 3: // stop-limit
if (this.empty(order.trigger_price)) {
flag = false;
this.visibles[orderType].trigger = true;
this.msgList[orderType][0] = this.$t('nav.a8')
} else if (this.empty(order.entrust_price)) {
flag = false;
this.visibles[orderType].limitPrice = true;
this.msgList[orderType][1] = this.$t('nav.a9')
} else if (this.empty(order.amount)) {
flag = false;
this.visibles[orderType].limitAmount = true;
this.msgList[orderType][2] = this.$t('nav.b1')
}
break;
case 4: // stop-market
if (this.empty(order.trigger_price)) {
flag = false;
this.visibles[orderType].trigger = true;
this.msgList[orderType][0] = this.$t('nav.b2')
} else {
if (order.direction == "buy") {
if (this.empty(total)) {
flag = false;
this.visibles[orderType].marketTotal = true;
this.msgList[orderType][3] = this.$t('nav.b3')
} else if (total < this.minTotal) {
flag = false;
this.visibles[orderType].marketTotal = true;
this.msgList[orderType][3] = this.$t('nav.b5')+` ${this.minTotal}`
}
}
if (order.direction == "sell") {
if (this.empty(order.amount)) {
flag = false;
this.visibles[orderType].marketAmount = true;
this.msgList[orderType][4] = this.$t('nav.b6')
} else if (order.amount < this.minQty) {
flag = false;
this.visibles[orderType].marketAmount = true;
this.msgList[orderType][4] =this.$t('nav.b7')+ ` ${this.minQty}`
}
}
}
break;
}
//
this.clearAll();
//
return flag;
},
},
created() {
this.getMarketList();
this.getCoinInfo()
this.reset();
},
}
</script>
<style lang="scss" scoped>
.buyPercentActive {
a:link {
font-weight: bold;
background: #26a69a;
color: #fff;
}
}
.sellPercentActive {
a:link {
font-weight: bold;
background: #ef5350;
color: #fff;
}
}
.input-group-text {
width: 68px;
@include flexible(row, center, center);
}
.market-trade {
border: none;
border-color: transparent;
}
.market{
width: 300px;
height: 500px;
overflow: scroll;
display: flex;
flex-wrap: wrap;
padding: 10px;
display: -webkit-box;
color: black;
.ov{
width: 100%;
table-layout:fixed;
word-break:break-all;
overflow:hidden;
}
}
.p-y-xs{
padding: 5px 0;
}
.el-button{
padding: 0!important;
background: transparent!important;
}
</style>

2
src/views/exchange/symbols.vue

@ -246,6 +246,6 @@ export default {
width: 32% !important; width: 32% !important;
} }
.active{ .active{
color: #326AEB!important; color: #f0a70a!important;
} }
</style> </style>

2700
src/views/home/index.vue

File diff suppressed because it is too large

34
src/views/notice/detail.vue

@ -12,24 +12,24 @@
<div class="text-muted">{{article.created_at}}</div> <div class="text-muted">{{article.created_at}}</div>
</div> </div>
<div class="edit-content py-4 text-light"> <div class="edit-content py-4 text-light">
<div v-html="article.body"></div> <div v-html="article.body" style="color:#000000;"></div>
</div>
<div class="row mt-3">
<div class="col-12">
<div class="title h3 my-4">{{$t('college.recommendedCourse')}}</div>
<div class="row justify-content-between">
<div class="item col-lg-3 col-md-6 mb-4 col-xs-12" v-for="(item,index) in recommend" :key="index">
<router-link :to="`/college/detail/${item.category_id}/${item.id}`">
<div class="banner">
<!-- <img src="http://iph.href.lu/260x150" alt /> -->
<img :src="item.full_cover" alt />
</div>
<div class="txt">{{item.title}}</div>
</router-link>
</div>
</div>
</div>
</div> </div>
<!-- <div class="row mt-3">-->
<!-- <div class="col-12">-->
<!-- <div class="title h3 my-4">{{$t('college.recommendedCourse')}}</div>-->
<!-- <div class="row justify-content-between">-->
<!-- <div class="item col-lg-3 col-md-6 mb-4 col-xs-12" v-for="(item,index) in recommend" :key="index">-->
<!-- <router-link :to="`/college/detail/${item.category_id}/${item.id}`">-->
<!-- <div class="banner">-->
<!-- &lt;!&ndash; <img src="http://iph.href.lu/260x150" alt /> &ndash;&gt;-->
<!-- <img :src="item.full_cover" alt />-->
<!-- </div>-->
<!-- <div class="txt">{{item.title}}</div>-->
<!-- </router-link>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
</div> </div>
</div> </div>
</div> </div>

4
src/views/notice/index.vue

@ -52,9 +52,9 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.list{ .list{
.item{ .item{
color: #758696; color: #000000;
&:hover{ &:hover{
color: white; color: #0c1daa;
} }
} }
} }

903
src/views/option/kline.vue

@ -1,5 +1,5 @@
<template> <template>
<div id="tradingview_1355aw2"></div> <div id="tradingview_1355aw2"></div>
</template> </template>
<script> <script>
@ -10,487 +10,494 @@ import Contract from "@/api/contract";
import Socket from "@/api/server/Socket.js"; import Socket from "@/api/server/Socket.js";
import tvStyle from "@/assets/js/tvStyle.js"; import tvStyle from "@/assets/js/tvStyle.js";
import bus from "@/components/bus.js"; import bus from "@/components/bus.js";
import { mapState } from "vuex"; import {mapState} from "vuex";
let exchangeAjax = { let exchangeAjax = {
getKline: Option.getKline, getKline: Option.getKline,
getSymbol(name) { getSymbol(name) {
return name.split("/").join("").toLowerCase(); return name.split("/").join("").toLowerCase();
}, },
msg: "Kline_", msg: "Kline_",
}; };
let contractAjax = { let contractAjax = {
getKline: Contract.getKline, getKline: Contract.getKline,
getSymbol(name) { getSymbol(name) {
return name.split("/")[0]; return name.split("/")[0];
}, },
msg: "swapKline_", msg: "swapKline_",
}; };
export default { export default {
props: { props: {
contract: { contract: {
default: false, default: false,
type: Boolean, type: Boolean,
required: false, required: false,
}, },
activeCoin: { activeCoin: {
default: {}, default: {},
type: Object, type: Object,
required: false, required: false,
}, },
wsUrl: { wsUrl: {
default: "", default: "",
type: String, type: String,
required: false, required: false,
}, },
},
watch: {
activeCoin(n, o) {
if (!n) return;
let boo = this.contract
? n.pair_name != o.pair_name
: n.pair_time_name != o.pair_time_name;
if (boo) {
//
let timer = this.timer;
this.page[n.pair_name] = 1;
this.TView.setSymbol(n.pair_name, this.timer);
//
if (n.pair_id != o.pair_id) {
this.unsub(o.pair_id, timer);
}
}
},
symbol(n, o) {
if (n != o && o) {
this.unsub(this.ajaxTv.getSymbol(o), this.timer);
}
}, },
}, watch: {
computed: { activeCoin(n, o) {
lang() { if (!n) return;
let local; let boo = this.contract
if (localStorage.lang) { ? n.pair_name != o.pair_name
if (localStorage.lang == "tw") { : n.pair_time_name != o.pair_time_name;
local = "zh_TW"; if (boo) {
} else if (localStorage.lang == "cn") { //
local = "zh"; let timer = this.timer;
} else if (localStorage.lang == "kor") { this.page[n.pair_name] = 1;
local = "ko"; this.TView.setSymbol(n.pair_name, this.timer);
} else if (localStorage.lang == "jp") { //
local = "ja"; if (n.pair_id != o.pair_id) {
} else if (localStorage.lang == "de") { this.unsub(o.pair_id, timer);
local = "de_DE"; }
} else if (localStorage.lang == "fra") {
local = "fr";
} else if (localStorage.lang == "it") {
local = "it";
} else if (localStorage.lang == "pt") {
local = "pt";
} else if (localStorage.lang == "spa") {
local = "es";
} else if (localStorage.lang == "en") {
local = "en";
}else {
local = "en";
} }
} },
return local; symbol(n, o) {
}, if (n != o && o) {
symbol() { this.unsub(this.ajaxTv.getSymbol(o), this.timer);
return this.activeCoin.pair_name; }
},
}, },
...mapState({ computed: {
theme: "theme", lang() {
}), let local;
ajaxTv() { if (localStorage.lang) {
return this.contract ? contractAjax : exchangeAjax; if (localStorage.lang == "tw") {
local = "zh_TW";
} else if (localStorage.lang == "cn") {
local = "zh";
} else if (localStorage.lang == "kor") {
local = "ko";
} else if (localStorage.lang == "jp") {
local = "ja";
} else if (localStorage.lang == "de") {
local = "de_DE";
} else if (localStorage.lang == "fra") {
local = "fr";
} else if (localStorage.lang == "it") {
local = "it";
} else if (localStorage.lang == "pt") {
local = "pt";
} else if (localStorage.lang == "spa") {
local = "es";
} else if (localStorage.lang == "en") {
local = "en";
} else {
local = "en";
}
}
return local;
},
symbol() {
let yes_symbol = this.$route.query.symbol;
if(yes_symbol){
return yes_symbol+"/USDT";
}
return this.activeCoin.pair_name;
},
...mapState({
theme: "theme",
}),
ajaxTv() {
return this.contract ? contractAjax : exchangeAjax;
},
msg() {
return `${this.ajaxTv.msg}${this.ajaxTv.getSymbol(
this.symbol
)}_${this.resolution(this.interval)}`;
},
}, },
msg() { data() {
return `${this.ajaxTv.msg}${this.ajaxTv.getSymbol( return {
this.symbol TView: undefined,
)}_${this.resolution(this.interval)}`; ws: undefined,
onLoadedCallback: undefined,
onRealtimeCallback: undefined,
// timer: "15",
timer: "1",
sub: "",
isCreateSocket: false,
page: {},
tt: undefined
};
}, },
}, methods: {
data() { reconnect() {
return { if (this.isCreateSocket) {
TView: undefined, return;
ws: undefined, }
onLoadedCallback: undefined, ;
onRealtimeCallback: undefined, let msgObj = {
// timer: "15", cmd: "sub",
timer: "1D", msg: this.sub,
sub: "", };
isCreateSocket: false, this.isCreateSocket = true;
page: {}, //
tt:undefined this.tt && clearTimeout(this.tt);
}; let th = this
}, th.tt = setTimeout(function () {
methods: { th.isCreateSocket = false;
reconnect() { th.linkSocket(() => {
if(this.isCreateSocket) { th.ws.send(msgObj);
return; });
};
let msgObj = {
cmd: "sub",
msg: this.sub,
};
this.isCreateSocket = true;
//
this.tt && clearTimeout(this.tt);
let th=this
th.tt = setTimeout(function () {
th.isCreateSocket = false;
th.linkSocket(() => {
th.ws.send(msgObj);
});
}, 4000); }, 4000);
}, },
// socket // socket
linkSocket(call) { linkSocket(call) {
const ws = new Socket(this.wsUrl); const ws = new Socket(this.wsUrl);
ws.on("open", () => { ws.on("open", () => {
this.ws = ws; this.ws = ws;
call && call(); call && call();
}); });
ws.on("message", (res) => { ws.on("message", (res) => {
let { data, msg, code, sub, type, status, req, cmd } = res; let {data, msg, code, sub, type, status, req, cmd} = res;
if (sub == this.sub && this.onRealtimeCallback) { if (sub == this.sub && this.onRealtimeCallback) {
if(sub.indexOf("BTC")!= -1) (data.close).toFixed(1) if (sub.indexOf("BTC") != -1) (data.close).toFixed(1)
this.onRealtimeCallback(this.getMap(data)); this.onRealtimeCallback(this.getMap(data));
bus.$emit('collapse', data); bus.$emit('collapse', data);
} else if (type == "ping" || cmd == "ping") { } else if (type == "ping" || cmd == "ping") {
this.ws.send({ this.ws.send({
cmd: "pong", cmd: "pong",
});
}
}); });
} ws.on('close', () => {
}); console.log('链接关闭');
ws.on('close',()=>{ this.reconnect();
console.log('链接关闭'); })
this.reconnect(); ws.on('error', () => {
}) console.log('发生异常了');
ws.on('error',()=>{ this.reconnect();
console.log('发生异常了'); })
this.reconnect();
})
}, },
// //
unsub(pair_id, timer) { unsub(pair_id, timer) {
let msgObj = { let msgObj = {
cmd: "unsub", cmd: "unsub",
msg: `${this.ajaxTv.msg}${pair_id}_${this.resolution(timer)}`, msg: `${this.ajaxTv.msg}${pair_id}_${this.resolution(timer)}`,
}; };
this.ws.send(msgObj); this.ws.send(msgObj);
}, },
getConfig() { getConfig() {
return {}; return {};
}, },
getSymbol() { getSymbol() {
return {}; return {};
}, },
getMap(data) { getMap(data) {
return { return {
time: data.id * 1000, time: data.id * 1000,
close: data.close, close: data.close,
open: data.open, open: data.open,
high: data.high, high: data.high,
low: data.low, low: data.low,
volume: data.vol, volume: data.vol,
}; };
}, },
resolution(resolution) { resolution(resolution) {
let T = ""; let T = "";
if (isNaN(resolution * 1)) { if (isNaN(resolution * 1)) {
T = resolution T = resolution
.replace("D", "day") .replace("D", "day")
.replace("W", "week") .replace("W", "week")
.replace("M", "mon"); .replace("M", "mon");
} else {
if (resolution > 60) {
T = Math.floor(resolution / 60) + "hours";
} else { } else {
T = resolution + "min"; if (resolution > 60) {
T = Math.floor(resolution / 60) + "hours";
} else {
T = resolution + "min";
}
} }
} return T;
return T; },
}, //
// unzip(b64Data) {
unzip(b64Data) { let u8 = window.atob(b64Data);
let u8 = window.atob(b64Data); let jiya = window.pako.inflate(u8)
let jiya = window.pako.inflate(u8) let str = this.Uint8ArrayToString(jiya);
let str = this.Uint8ArrayToString(jiya); return JSON.parse(str);
return JSON.parse(str);
}, },
Uint8ArrayToString(fileData) { Uint8ArrayToString(fileData) {
var dataString = ""; var dataString = "";
for (var i = 0; i < fileData.length; i++) { for (var i = 0; i < fileData.length; i++) {
dataString += String.fromCharCode(fileData[i]); dataString += String.fromCharCode(fileData[i]);
} }
return dataString; return dataString;
}, },
getBars( getBars(
symbolInfo, symbolInfo,
resolution, resolution,
rangeStartDate, rangeStartDate,
rangeEndDate, rangeEndDate,
onLoadedCallback, onLoadedCallback,
onErrorCallback onErrorCallback
) { ) {
// handleClick // handleClick
this.page[this.symbol] = this.page[this.symbol] || 1; this.page[this.symbol] = this.page[this.symbol] || 1;
let page = this.page[this.symbol] > 3 ? 3 : this.page[this.symbol]; let page = this.page[this.symbol] > 3 ? 3 : this.page[this.symbol];
let data = { let data = {
symbol: this.ajaxTv.getSymbol(symbolInfo.name), symbol: this.ajaxTv.getSymbol(symbolInfo.name),
period: this.resolution(resolution), period: this.resolution(resolution),
form: rangeStartDate, form: rangeStartDate,
to: rangeEndDate, to: rangeEndDate,
size: page * 200, size: page * 200,
zip: 1, zip: 1,
}; };
this.onLoadedCallback = onLoadedCallback;
//
if (!this.activeCoin.pair_name) {
onLoadedCallback([]);
return;
}
//
if (this.timer && this.timer != resolution) {
this.unsub(
this.ajaxTv.getSymbol(this.activeCoin.pair_name),
this.timer
);
} else {
}
this.timer = resolution; this.onLoadedCallback = onLoadedCallback;
this.ajaxTv.getKline(data).then((res) => { //
let arr = this.unzip(res.data).map((item) => { if (!this.activeCoin.pair_name) {
return this.getMap(item);
});
this.page[this.symbol]++;
onLoadedCallback(arr);
setTimeout(() => {
if (this.page[this.symbol] > 3) {
onLoadedCallback([]); onLoadedCallback([]);
return;
} }
}, 60); //
}); if (this.timer && this.timer != resolution) {
// this.unsub(
let msgObj = { this.ajaxTv.getSymbol(this.activeCoin.pair_name),
cmd: "sub", this.timer
msg: `${this.ajaxTv.msg}${data.symbol}_${data.period}`, );
};
this.sub = msgObj.msg;
let send = (msgObj) => {
if (this.ws) {
this.ws.send(msgObj);
} else { } else {
if (this.isCreateSocket) {
setTimeout(() => {
send(msgObj);
}, 200);
return;
} }
this.isCreateSocket = true;
this.linkSocket(() => { this.timer = resolution;
this.isCreateSocket = false; this.ajaxTv.getKline(data).then((res) => {
this.ws.send(msgObj); let arr = this.unzip(res.data).map((item) => {
return this.getMap(item);
});
this.page[this.symbol]++;
onLoadedCallback(arr);
setTimeout(() => {
if (this.page[this.symbol] > 3) {
onLoadedCallback([]);
}
}, 60);
}); });
} //
}; let msgObj = {
send(msgObj); cmd: "sub",
}, msg: `${this.ajaxTv.msg}${data.symbol}_${data.period}`,
subscribeBars( };
symbolInfo, this.sub = msgObj.msg;
resolution, let send = (msgObj) => {
onRealtimeCallback, if (this.ws) {
subscriberUID, this.ws.send(msgObj);
onResetCacheNeededCallback } else {
if (this.isCreateSocket) {
setTimeout(() => {
send(msgObj);
}, 200);
return;
}
this.isCreateSocket = true;
this.linkSocket(() => {
this.isCreateSocket = false;
this.ws.send(msgObj);
});
}
};
send(msgObj);
},
subscribeBars(
symbolInfo,
resolution,
onRealtimeCallback,
subscriberUID,
onResetCacheNeededCallback
) { ) {
this.onRealtimeCallback = onRealtimeCallback; this.onRealtimeCallback = onRealtimeCallback;
if (!this.activeCoin.pair_name) { if (!this.activeCoin.pair_name) {
setTimeout(() => { setTimeout(() => {
onResetCacheNeededCallback(); onResetCacheNeededCallback();
}, 100); }, 100);
} }
}, },
initView() { initView() {
let _this = this; let _this = this;
let Tdata = new VDatafeed(this); let Tdata = new VDatafeed(this);
let widget=(_this.TView = new TradingView.widget({ let widget = (_this.TView = new TradingView.widget({
width: "100%", width: "100%",
height: 590, height: 590,
interval: _this.timer, interval: _this.timer,
// timezone: "Asia/Shanghai", // timezone: "Asia/Shanghai",
timezone: "America/Toronto", timezone: "America/Toronto",
theme: "light", // theme: "light", //
style: "1", style: "1",
library_path: "/static/Kline/charting_library/", library_path: "/static/Kline/charting_library/",
datafeed: Tdata, datafeed: Tdata,
locale: _this.lang, locale: _this.lang,
toolbar_bg: _this.theme == "light" ? "#f1f3f6" : "#222e3d", toolbar_bg: _this.theme == "light" ? "#f1f3f6" : "#222e3d",
enable_publishing: false, enable_publishing: false,
withdateranges: true, withdateranges: true,
hide_side_toolbar: false, hide_side_toolbar: false,
allow_symbol_change: true, allow_symbol_change: true,
show_popup_button: true, show_popup_button: true,
popup_width: "1000", popup_width: "1000",
popup_height: "650", popup_height: "650",
container_id: "tradingview_1355aw2", container_id: "tradingview_1355aw2",
disabled_features: [ disabled_features: [
"header_symbol_search", "header_symbol_search",
"widget_logo", // "widget_logo",
"header_compare", "header_compare",
"volume_force_overlay", "volume_force_overlay",
'timeframes_toolbar', 'timeframes_toolbar',
"control_bar", "control_bar",
"main_series_scale_menu", "main_series_scale_menu",
"header_resolutions", "header_resolutions",
"legend_context_menu", "legend_context_menu",
"symbol_search_hot_key", "symbol_search_hot_key",
"symbol_info", "symbol_info",
"pane_context_menu", "pane_context_menu",
// "header_widget_dom_node", // "header_widget_dom_node",
'timeframes_toolbar', 'timeframes_toolbar',
], ],
enabled_features:['header_indicators'], // enabled_features:['header_indicators'],
supported_resolutions: ["5", "15", "30", "60", "240", "1D", "1W", "1M"], supported_resolutions: ["5", "15", "30", "60", "240", "1D", "1W", "1M"],
overrides: tvStyle[_this.theme], overrides: tvStyle[_this.theme],
custom_css_url: `/static/Kline/charting_library/static/css/tradingview_${ custom_css_url: `/static/Kline/charting_library/static/css/tradingview_${
_this.theme == "light" ? "white" : "black" _this.theme == "light" ? "white" : "black"
}.css`, }.css`,
drawings_access: { drawings_access: {
type: "black", type: "black",
tools: [ tools: [
{ name: "Trend Line", grayed: true }, {name: "Trend Line", grayed: true},
{ name: "Trend Angle", grayed: true } {name: "Trend Angle", grayed: true}
] ]
},
}));
widget.onChartReady(function () {
let buttonArr = [
{
title: "1" + _this.$t("exchange.min"),
resolution: "1",
chartType: 1
},
{
title: "5" + _this.$t("exchange.min"),
resolution: "5",
chartType: 1
},
{
title: "15" + _this.$t("exchange.min"),
resolution: "15",
chartType: 1
},
{
title: "30" + _this.$t("exchange.min"),
resolution: "30",
chartType: 1
},
{
title: "1" + _this.$t("exchange.hour"),
resolution: "60",
chartType: 1
},
{
title: "1" + _this.$t("exchange.day"),
resolution: "1D",
chartType: 1
},
{
title: "1" + _this.$t("exchange.week"),
resolution: "1W",
chartType: 1
}, },
{ }));
title: "1" + _this.$t("exchange.month"), widget.onChartReady(function () {
resolution: "1M", let buttonArr = [
chartType: 1 {
} title: "1" + _this.$t("exchange.min"),
]; resolution: "1",
let btn = {}; chartType: 1
let nowTime = ""; },
{
title: "5" + _this.$t("exchange.min"),
resolution: "5",
chartType: 1
},
{
title: "15" + _this.$t("exchange.min"),
resolution: "15",
chartType: 1
},
{
title: "30" + _this.$t("exchange.min"),
resolution: "30",
chartType: 1
},
{
title: "1" + _this.$t("exchange.hour"),
resolution: "60",
chartType: 1
},
{
title: "1" + _this.$t("exchange.day"),
resolution: "1D",
chartType: 1
},
{
title: "1" + _this.$t("exchange.week"),
resolution: "1W",
chartType: 1
},
{
title: "1" + _this.$t("exchange.month"),
resolution: "1M",
chartType: 1
}
];
let btn = {};
let nowTime = "";
buttonArr.forEach((v, i) => { buttonArr.forEach((v, i) => {
let button = widget.createButton(); let button = widget.createButton();
button.attr("title", v.title).addClass("my-date").text(v.title); button.attr("title", v.title).addClass("my-date").text(v.title);
if (v.resolution === _this.timer) { if (v.resolution === _this.timer) {
button.css({ button.css({
color: "#5786d2", color: "#5786d2",
"border-bottom": "1px solid #5786d2", "border-bottom": "1px solid #5786d2",
});
// localStorage.setItem("tim", v.resolution);
}
btn = button.on("click", function (e) {
$(this).parents(".left").children().find(".my-date").removeAttr("style");
handleClick(e, v.resolution);
button.css({
color: "#5786d2",
"border-bottom": "1px solid #5786d2",
});
// _this.$store.commit("upType", v.type);
localStorage.setItem("tim", v.resolution);
widget.chart().setChartType(v.chartType); //K线
}); });
// localStorage.setItem("tim", v.resolution);
}
btn = button.on("click", function (e) {
$(this).parents(".left").children().find(".my-date").removeAttr("style");
handleClick(e, v.resolution);
button.css({
color: "#5786d2",
"border-bottom": "1px solid #5786d2",
});
// _this.$store.commit("upType", v.type);
localStorage.setItem("tim", v.resolution);
widget.chart().setChartType(v.chartType); //K线
}); });
}); let handleClick = (e, value) => {
let handleClick = (e, value) => { _this.setSymbol = function (symbol, value) {
_this.setSymbol = function (symbol, value) { gh.chart().setSymbol(symbol, value);
gh.chart().setSymbol(symbol, value); };
widget.chart().setResolution(value, function onReadyCallback() {
}); //
$(e.target)
.addClass("mydate")
.closest("div.space-single")
.siblings("div.space-single")
.find("div.button")
.removeClass("mydate");
}; };
widget.chart().setResolution(value, function onReadyCallback() {}); // widget.chart().createStudy(
$(e.target) "Moving Average",
.addClass("mydate") false,
.closest("div.space-single") true,
.siblings("div.space-single") [5, "close", 0],
.find("div.button") null,
.removeClass("mydate"); {
}; "Plot.color": "#e843da",
widget.chart().createStudy( }
"Moving Average", );
false, widget.chart().createStudy(
true, "Moving Average",
[5, "close", 0], false,
null, true,
{ [10, "close", 0],
"Plot.color": "#e843da", null,
} {
); "Plot.color": "#53b987",
widget.chart().createStudy( }
"Moving Average", );
false, widget.chart().createStudy(
true, "Moving Average",
[10, "close", 0], false,
null, true,
{ [30, "close", 0],
"Plot.color": "#53b987", null,
} {
); "Plot.color": "#ff231f",
widget.chart().createStudy( }
"Moving Average", );
false, });
true, },
[30, "close", 0],
null,
{
"Plot.color": "#ff231f",
}
);
});
}, },
}, created() {
created(){ let tim = localStorage.getItem("tim");
let tim=localStorage.getItem("tim"); if (tim) {
if(tim){ this.timer = tim
this.timer=tim
} }
}, },
mounted() { mounted() {
this.initView(); this.initView();
}, },
}; };
</script> </script>

2
src/views/option/option-bottom.vue

@ -25,7 +25,7 @@
<table class="table"> <table class="table">
<thead> <thead>
<tr class="text-nowrap"> <tr class="text-nowrap">
<th>{{$t('option.orderNum')}}</th> <th>{{$t('option.orderNum')}}pppp</th>
<th>{{$t('option.option')}}</th> <th>{{$t('option.option')}}</th>
<th>{{$t('option.buyTime')}}</th> <th>{{$t('option.buyTime')}}</th>
<th>{{$t('option.buyAmount')}}</th> <th>{{$t('option.buyAmount')}}</th>

752
src/views/profile/certification.vue

@ -1,120 +1,121 @@
<template> <template>
<div class="profile-page"> <div class="profile-page">
<secondary-nav></secondary-nav> <secondary-nav></secondary-nav>
<div class="container"> <div class="container">
<div class="w-100 d-flex justify-content-center mb-3 mt-4"> <div class="w-100 d-flex justify-content-center mb-3 mt-4">
<div class="h3">{{$t('profile.realName')}}</div> <div class="h3">{{ $t('profile.realName') }}</div>
</div>
<div class="row">
<div class="col-12 mt-4">
<el-steps :active="setp+1" align-center>
<el-step :title="$t('profile.primaryCertification')"></el-step>
<el-step :title="$t('profile.advancedCertification1')"></el-step>
<el-step :title="$t('profile.toExamine')"></el-step>
</el-steps>
</div>
</div>
<div class="row">
<div class="col-9 mx-auto mt-4 panel-box shadow-sm bg-panel" id="auth">
<!-- 第一步 -->
<div class="tab-content" v-if="setp==0">
<div class="form-row">
<div class="form-group col-md-6">
<label>{{$t('profile.fullName')}}{{$t('profile.legal')}}*</label>
<input
type="text"
required
v-model="form.realname"
class="form-control"
:placeholder="$t('profile.pleaseEnterName')"
/>
</div>
<div class="form-group col-md-6">
<label>{{$t('profile.dateOfBirth')}}YYYY-MM-DD*</label>
<el-date-picker
required
v-model="form.birthday"
type="date"
:placeholder="$t('profile.selectDate')"
></el-date-picker>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-3">
<label>{{$t('profile.documentType')}}*</label>
<el-select v-model="form.type" :placeholder="$t('profile.pelaseSelect')">
<el-option
v-for="item in cardType"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="form-group col-md-9">
<label>{{$t('profile.certificateNumber')}}*</label>
<input
type="text"
required
v-model="form.id_card"
class="form-control"
:placeholder="$t('profile.endterIDNumber')"
/>
</div>
</div>
<div class="label my-2 blue">{{$t('profile.addressInfo')}}</div>
<div class="form-group">
<label>{{$t('profile.residentialAddress')}}*</label>
<input
type="text"
required
v-model="form.address"
class="form-control"
:placeholder="$t('profile.residentialAddress1')"
/>
</div> </div>
<div class="form-row"> <!--<div class="row">-->
<div class="form-group col-md-6"> <!-- <div class="col-12 mt-4">-->
<label>{{$t('profile.ciy')}}*</label> <!-- <el-steps :active="setp+1" align-center>-->
<input <!-- <el-step :title="$t('profile.primaryCertification')"></el-step>-->
type="text" <!-- <el-step :title="$t('profile.advancedCertification')"></el-step>-->
required <!-- <el-step :title="$t('profile.toExamine')"></el-step>-->
v-model="form.city" <!-- </el-steps>-->
class="form-control" <!-- </div>-->
:placeholder="$t('profile.incity')" <!--</div>-->
/> <div class="row">
</div> <div class="col-9 mx-auto mt-4 panel-box shadow-sm bg-panel" id="auth">
<div class="form-group col-md-6"> <!-- 第一步 -->
<label>{{$t('profile.postalCode')}}*</label> <div class="tab-content" v-if="setp==0">
<input <div class="form-row">
type="text" <div class="form-group col-md-6">
required <label>{{ $t('profile.fullName') }}{{ $t('profile.legal') }}*</label>
v-model="form.postal_code" <input
class="form-control" type="text"
:placeholder="$t('profile.thePostcode')" required
/> v-model="topForm.realname"
</div> class="form-control"
</div> :placeholder="$t('profile.pleaseEnterName')"
<!-- <div class="form-group"> />
<label>{{$t('profile.additionalInformation')}}{{$t('profile.optional')}}</label> </div>
<input type="text" v-model="form.extra" class="form-control" placeholder /> <!--<div class="form-group col-md-6">-->
</div> --> <!-- <label>{{ $t('profile.dateOfBirth') }}YYYY-MM-DD*</label>-->
<div class="label my-2 blue">{{$t('profile.contactInformation')}}</div> <!-- <el-date-picker-->
<div class="form-row"> <!-- required-->
<!-- <div class="form-group col-md-12"> --> <!-- v-model="form.birthday"-->
<!-- <label>{{$t('profile.phoneNumber')}}*</label> --> <!-- type="date"-->
<!-- <div class="input-group mb-3"> --> <!-- :placeholder="$t('profile.selectDate')"-->
<!-- ></el-date-picker>-->
<!--</div>-->
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label>{{ $t('profile.country') }}*</label>
<input
type="text"
required
v-model="topForm.city"
class="form-control"
:placeholder="$t('profile.incity')"
/>
</div>
<!--<div class="form-group col-md-6">-->
<!-- <label>{{ $t('profile.postalCode') }}*</label>-->
<!-- <input-->
<!-- type="text"-->
<!-- required-->
<!-- v-model="form.postal_code"-->
<!-- class="form-control"-->
<!-- :placeholder="$t('profile.thePostcode')"-->
<!-- />-->
<!--</div>-->
</div>
<div class="form-row">
<div class="form-group col-md-3"> <div class="form-group col-md-3">
<label>{{$t('profile.SelectAreaCode')}}*</label> <label>{{ $t('profile.documentType') }}*</label>
<el-select v-model="form.country_id" filterable placeholder="请选择" > <el-select v-model="topForm.type" :placeholder="$t('profile.pelaseSelect')">
<el-option <el-option
v-for="item in countryList" v-for="item in cardType"
:key="item.id" :key="item.value"
:label="'+'+item.country_code +'('+item.name+')'" :label="item.label"
:value="item.id"> :value="item.value"
</el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<div class="form-group col-md-9">
<label>{{ $t('profile.certificateNumber') }}*</label>
<input
type="text"
required
v-model="topForm.id_card"
class="form-control"
:placeholder="$t('profile.endterIDNumber')"
/>
</div>
</div>
<!--<div class="label my-2 blue">{{ $t('profile.addressInfo') }}</div>-->
<!--<div class="form-group">-->
<!-- <label>{{ $t('profile.residentialAddress') }}*</label>-->
<!-- <input-->
<!-- type="text"-->
<!-- required-->
<!-- v-model="form.address"-->
<!-- class="form-control"-->
<!-- :placeholder="$t('profile.residentialAddress1')"-->
<!-- />-->
<!--</div>-->
<!-- <div class="form-group">
<label>{{$t('profile.additionalInformation')}}{{$t('profile.optional')}}</label>
<input type="text" v-model="form.extra" class="form-control" placeholder />
</div> -->
<!--<div class="label my-2 blue">{{ $t('profile.contactInformation') }}</div>-->
<!--<div class="form-row">-->
<!-- <div class="form-group col-md-12"> -->
<!-- <label>{{$t('profile.phoneNumber')}}*</label> -->
<!-- <div class="input-group mb-3"> -->
<!--<div class="form-group col-md-3">-->
<!-- <label>{{ $t('profile.SelectAreaCode') }}*</label>-->
<!-- <el-select v-model="form.country_id" filterable placeholder="请选择">-->
<!-- <el-option-->
<!-- v-for="item in countryList"-->
<!-- :key="item.id"-->
<!-- :label="'+'+item.country_code +'('+item.name+')'"-->
<!-- :value="item.id">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!--</div>-->
<!-- <el-dropdown tragger="click" class="input-group-prepend"> <!-- <el-dropdown tragger="click" class="input-group-prepend">
<button <button
class="btn btn-outline-secondary dropdown-toggle" class="btn btn-outline-secondary dropdown-toggle"
@ -129,288 +130,307 @@
>{{item.country_code}}{{item.name}}</el-dropdown-item> >{{item.country_code}}{{item.name}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> --> </el-dropdown> -->
<div class="form-group col-md-9"> <!--<div class="form-group col-md-9">-->
<label>{{$t('profile.phoneNumber')}}*</label> <!-- <label>{{ $t('profile.phoneNumber') }}*</label>-->
<input <!-- <input-->
type="text" <!-- type="text"-->
required <!-- required-->
v-model="form.phone" <!-- v-model="form.phone"-->
class="form-control" <!-- class="form-control"-->
:placeholder="$t('profile.enterPhoneNumber')" <!-- :placeholder="$t('profile.enterPhoneNumber')"-->
/> <!-- />-->
</div> <!--</div>-->
<!-- </div> <!-- </div>
</div> --> </div> -->
</div> <!--</div>-->
<div class="text-center"> <!--<div class="text-center">-->
<button <!-- <button-->
type="button" <!-- type="button"-->
class="btn w-25 btn-primary rounded-pill" <!-- class="btn w-25 btn-primary rounded-pill"-->
@click="primaryAuth" <!-- @click="primaryAuth"-->
>{{$t('profile.nextStep')}}</button> <!-- >{{ $t('profile.nextStep') }}-->
</div> <!-- </button>-->
</div> <!--</div>-->
<!-- 第二步 --> </div>
<div class="tab-content" v-if="setp==1"> <!-- 第二步 -->
<p>{{$t('profile.clickUpload1')}}</p> <div class="tab-content" v-if="setp==0">
<p> <upload-img
{{$t('profile.pelaseDownload')}} class="mb-3"
<span v-model="topForm.front_img"
class="red" required
v-if="detail.type==3" :placeholder="$t('profile.uploadPhoto')"
>{{$t('profile.passport')}}</span> >
<span class="red" v-if="detail.type==2">{{$t('profile.drivingLicense')}}</span> <template #text>
<span class="red" v-if="detail.type==1">{{$t('profile.iD')}}</span> <div class="el-upload__text">
{{$t('profile.upload')}} {{ $t('profile.positive') }}-{{ $t('profile.dragHere') }}
</p> <em>{{ $t('profile.clickUpload') }}</em>
</div>
</template>
</upload-img>
<upload-img
class="mb-3"
v-model="topForm.back_img"
required
:placeholder="$t('profile.reversePhoto')"
>
<template #text>
<div class="el-upload__text">
{{ $t('profile.theOtherSide') }}-{{ $t('profile.dragHere') }}
<em>{{ $t('profile.clickUpload') }}</em>
</div>
</template>
</upload-img>
<p>{{ $t('profile.clickUpload1') }}</p>
<p>
{{ $t('profile.pelaseDownload') }}
<span
class="red"
v-if="detail.type==3"
>{{ $t('profile.passport') }}</span>
<span class="red" v-if="detail.type==2">{{ $t('profile.drivingLicense') }}</span>
<span class="red" v-if="detail.type==1">{{ $t('profile.iD') }}</span>
{{ $t('profile.upload') }}
</p>
<p>{{$t('profile.explain')}}</p> <p>{{ $t('profile.explain') }}</p>
<ul class="mb-2"> <ul class="mb-2">
<li class="mb-2">1. {{$t('profile.unexpired')}}</li> <li class="mb-2">1. {{ $t('profile.unexpired') }}</li>
<li class="mb-2">2.{{$t('profile.pleaseConfirm')}}</li> <li class="mb-2">2.{{ $t('profile.pleaseConfirm') }}</li>
<li class="mb-2">3. {{$t('profile.fileFormat')}}pdf./ gif./ jpeg./jpg./png.</li> <li class="mb-2">3. {{ $t('profile.fileFormat') }}pdf./ gif./ jpeg./jpg./png.</li>
<li class="mb-2">4. {{$t('profile.maximumFileSize')}}5 MB</li> <li class="mb-2">4. {{ $t('profile.maximumFileSize') }}5 MB</li>
</ul> </ul>
<upload-img
class="mb-3" <!-- <upload-img
v-model="topForm.front_img" class="mb-3"
required v-model="topForm.front_img"
:placeholder="$t('profile.uploadPhoto')" required
> :placeholder="$t('profile.uploadIDCard')"
<template #text> >
<div class="el-upload__text"> <template #text>
{{$t('profile.positive')}}-{{$t('profile.dragHere')}} <div class="el-upload__text">
<em>{{$t('profile.clickUpload')}}</em> {{$t('profile.hold')}}-{{$t('profile.dragHere')}}
</div> <em>{{$t('profile.clickUpload')}}</em>
</template> </div>
</upload-img> </template>
<upload-img </upload-img> -->
class="mb-3" <div class="text-center mt-3">
v-model="topForm.back_img" <button type="button" class="btn w-25 btn-primary rounded-pill" @click="topAuth">
required {{ $t('profile.nextStep') }}
:placeholder="$t('profile.reversePhoto')" </button>
> </div>
<template #text> </div>
<div class="el-upload__text"> <!-- 第三步 -->
{{$t('profile.theOtherSide')}}-{{$t('profile.dragHere')}} <div class="tab-ceontent p-5 text-center" v-if="setp==2">
<em>{{$t('profile.clickUpload')}}</em> <!-- 待审核 -->
</div> <div v-if="detail.status==1">
</template> <p class="mt-3 mb-4">{{ $t('profile.inSubmit') }}</p>
</upload-img> <i class="el-icon-s-order my-4 text-warning" style="font-size:70px"></i>
<!-- <upload-img <div class="text-center">
class="mb-3" <button
v-model="topForm.front_img" type="button"
required class="btn w-25 btn-primary rounded-pill"
:placeholder="$t('profile.uploadIDCard')" @click="$router.go(-1)"
> >{{ $t('profile.gotIt') }}
<template #text> </button>
<div class="el-upload__text"> </div>
{{$t('profile.hold')}}-{{$t('profile.dragHere')}} </div>
<em>{{$t('profile.clickUpload')}}</em> <div v-else-if="detail.status==2">
<p class="mt-3 mb-4" style="font-size:18px">
{{ $t('profile.congratulations') }}{{ detail.status_text_lang }}</p>
<i class="el-icon-circle-check my-4 increace" style="font-size:60px"></i>
<div class="text-center">
<button
type="button"
class="btn w-25 btn-primary rounded-pill"
@click="$router.go(-1)"
>{{ $t('profile.back') }}
</button>
</div>
</div>
<div v-else-if="detail.status==3">
<p class="mt-3 mb-4">{{ detail.status_text_lang }}{{ $t('profile.resetApply') }}</p>
<i class="el-icon-s-release my-4 decreace" style="font-size:60px"></i>
<div class="text-center">
<button
type="button"
class="btn w-25 btn-outline-danger"
@click="setp=1"
>{{ $t('profile.recertification') }}
</button>
</div>
</div>
</div>
</div> </div>
</template>
</upload-img> -->
<div class="text-center mt-3">
<button type="button" class="btn w-25 btn-primary rounded-pill" @click="topAuth">{{$t('profile.nextStep')}}</button>
</div>
</div>
<!-- 第三步 -->
<div class="tab-ceontent p-5 text-center" v-if="setp==2">
<!-- 待审核 -->
<div v-if="detail.status==1">
<p class="mt-3 mb-4">{{$t('profile.inSubmit')}}</p>
<i class="el-icon-s-order my-4 text-warning" style="font-size:70px"></i>
<div class="text-center">
<button
type="button"
class="btn w-25 btn-primary rounded-pill"
@click="$router.go(-1)"
>{{$t('profile.gotIt')}}</button>
</div>
</div>
<div v-else-if="detail.status==2">
<p class="mt-3 mb-4" style="font-size:18px">{{$t('profile.congratulations')}}{{detail.status_text_lang}}</p>
<i class="el-icon-circle-check my-4 increace" style="font-size:60px"></i>
<div class="text-center">
<button
type="button"
class="btn w-25 btn-primary rounded-pill"
@click="$router.go(-1)"
>{{$t('profile.back')}}</button>
</div>
</div>
<div v-else-if="detail.status==3">
<p class="mt-3 mb-4">{{detail.status_text_lang}}{{$t('profile.resetApply')}}</p>
<i class="el-icon-s-release my-4 decreace" style="font-size:60px"></i>
<div class="text-center">
<button
type="button"
class="btn w-25 btn-outline-danger"
@click="setp=1"
>{{$t('profile.recertification')}}</button>
</div>
</div> </div>
</div>
</div> </div>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import Profile from "@/api/profile"; import Profile from "@/api/profile";
import Member from "@/api/member"; import Member from "@/api/member";
import server from "@/api/server"; import server from "@/api/server";
export default { export default {
data() { data() {
return { return {
setp: 0, setp: 0,
detail: {}, detail: {},
imgURL: server.defaults.baseURL, imgURL: server.defaults.baseURL,
countryList: [], countryList: [],
form: { form: {
country_code: "", country_code: "",
country_id: "", country_id: "",
realname: "", realname: "",
id_card: "", id_card: "",
type: 1, type: 1,
birthday: "", birthday: "",
address: "", address: "",
city: "", city: "",
postal_code: "", postal_code: "",
phone: "", phone: "",
extra: "" extra: ""
},
//
topForm: {
id_card: "",
type: 1,
city: "",
realname: "",
front_img: "",
back_img: "",
hand_img: ""
}
};
},
computed: {
country() {
return (
this.countryList.find(item => item.id == this.form.country_id) || {}
);
}, },
// cardType() {
topForm: { return [
front_img: "", {
back_img: "", label: this.$t("profile.iD"),
hand_img: "" value: 1,
},
{
label: this.$t("profile.driverLicense"),
value: 2,
},
{
label: this.$t("profile.passport"),
value: 3,
},
];
} }
};
},
computed: {
country() {
return (
this.countryList.find(item => item.id == this.form.country_id) || {}
);
}, },
cardType() { methods: {
return [ //
{ getAuthInfo() {
label: this.$t("profile.iD"), Profile.getAuthInfo()
value: 1, .then(res => {
}, this.detail = res;
{ //
label: this.$t("profile.driverLicense"), if (res.primary_status == 0) {
value: 2, this.setp = 0;
}, return;
{ } else if (res.status == 0) {
label: this.$t("profile.passport"), this.setp = 1;
value: 3, } else {
}, this.setp = 2;
]; }
} })
}, .catch(res => {
methods: { });
// },
getAuthInfo() { //
Profile.getAuthInfo() getCountryCode() {
.then(res => { Member.getCountryCode().then(res => {
this.detail = res; this.countryList = res;
// for (let i = 0; i < this.countryList.length; i++) {
if (res.primary_status == 0) { let item = this.countryList[i];
this.setp = 0; if (item.id == 195) {
return; this.form.country_id = item.id;
} else if (res.status == 0) { break;
this.setp = 1; }
} else { }
this.setp = 2;
}).catch(res => {
});
},
//
primaryAuth() {
let data = this.form;
data.country_code = this.country.country_code;
if (utils.validate("#auth")) {
Profile.primaryAuth(data)
.then(res => {
this.$message.success(this.$t("profile.preliminary"));
// this.setp++;
this.$router.push("/wallet/assets/exchange")
})
.catch(err => {
});
} }
}) },
.catch(res => {}); //
}, topAuth() {
// let data = this.topForm;
getCountryCode() { if (utils.validate("#auth")) {
Member.getCountryCode().then(res => { // if (!data.hand_img) {
this.countryList = res; // // this.$message.error(this.$t("profile.uploadIDCard"));
for(let i=0; i<this.countryList.length;i++){ // this.$message.error(this.$t("profile.uploadPhoto"));
let item=this.countryList[i]; // return;
if(item.id==195){ // }
this.form.country_id = item.id; if (!data.back_img) {
break; this.$message.error(this.$t("profile.reversePhoto"));
return;
}
if (!data.front_img) {
this.$message.error(this.$t("profile.uploadPhoto"));
return;
} }
Profile.topAuth(data)
.then(res => {
this.$message.success(this.$t("profile.advancedCertification"));
this.getAuthInfo();
})
.catch(err => {
});
} }
}).catch(res => {});
},
//
primaryAuth() {
let data = this.form;
data.country_code = this.country.country_code;
if (utils.validate("#auth")) {
Profile.primaryAuth(data)
.then(res => {
this.$message.success(this.$t("profile.preliminary"));
// this.setp++;
this.$router.push("/wallet/assets/exchange")
})
.catch(err => {});
} }
}, },
// created() {
topAuth() { this.getCountryCode();
let data = this.topForm; this.getAuthInfo();
if (utils.validate("#auth")) {
// if (!data.hand_img) {
// // this.$message.error(this.$t("profile.uploadIDCard"));
// this.$message.error(this.$t("profile.uploadPhoto"));
// return;
// }
if (!data.back_img) {
this.$message.error(this.$t("profile.reversePhoto"));
return;
}
if (!data.front_img) {
this.$message.error(this.$t("profile.uploadPhoto"));
return;
}
Profile.topAuth(data)
.then(res => {
this.$message.success(this.$t("profile.advancedCertification2"));
this.getAuthInfo();
})
.catch(err => {});
}
} }
},
created() {
this.getCountryCode();
this.getAuthInfo();
}
}; };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.upload-demo { .upload-demo {
/deep/ .el-upload-dragger { /deep/ .el-upload-dragger {
width: 300px; width: 300px;
height: 150px; height: 150px;
} }
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
} }
}
/deep/ {
.el-step__title.is-process {
color: white;
}
.el-upload-dragger {
background-color: #1e2834;
}
} }
/deep/{
.el-step__title.is-process{
color: white;
}
.el-upload-dragger{
background-color: #1e2834;
}
}
</style> </style>

325
src/views/profile/index.vue

@ -1,153 +1,204 @@
<template> <template>
<div class="profile-page"> <div class="profile-page">
<secondary-nav></secondary-nav> <secondary-nav></secondary-nav>
<div class="container"> <div class="container">
<div class="w-100 d-flex justify-content-between align-items-center mb-3 mt-4"> <div class="w-100 d-flex justify-content-between align-items-center mb-3 mt-4">
<div class="h3">{{$t('profile.userInfo')}}</div> <div class="h3">{{ $t('profile.userInfo') }}</div>
</div>
<div class="row">
<div class="col-md-5 d-flex align-items-stretch mb-4">
<!-- 账户信息 -->
<div class="panel-box bg-panel shadow-sm w-100">
<div class="heading d-flex justify-content-between align-items-center">
<div class="h6">{{$t('profile.userInfo')}}</div>
<div class="status fn-14 text-tips">{{detail.user_auth_level_text }}</div>
</div> </div>
<div class="tab-content"> <div class="row">
<div class="mobile fn-30 font-weight-bolder"> <!--<div class="col-md-5 d-flex align-items-stretch mb-4">-->
{{detail.account }} <!-- &lt;!&ndash; 账户信息 &ndash;&gt;-->
<!-- | userFilter --> <!-- <div class="panel-box bg-panel shadow-sm w-100">-->
</div> <!-- <div class="heading d-flex justify-content-between align-items-center">-->
<div class="label my-2">{{$t('profile.verState')}}</div> <!-- <div class="h6">{{ $t('profile.userInfo') }}</div>-->
<div class="d-flex align-items-center"> <!-- <div class="status fn-14 text-tips">{{ detail.user_auth_level_text }}</div>-->
<div class="icon mr-2"> <!-- </div>-->
<img src="../../assets/img/icon/top2.png" alt v-if="detail.user_auth_level==2"/> <!-- <div class="tab-content">-->
<img src="../../assets/img/icon/top1.png" alt v-else/> <!-- <div class="mobile fn-30 font-weight-bolder">-->
</div> <!-- {{ detail.account }}-->
<div> <!-- &lt;!&ndash; | userFilter &ndash;&gt;-->
<!-- {{$t('profile.max')}} <!-- </div>-->
<span class="font-weight-bold">1k</span> <!-- <div class="label my-2">{{ $t('profile.verState') }}</div>-->
<span class="font-weight-bold ">USD</span> <!-- <div class="d-flex align-items-center">-->
<span class="font-weight-bold">24</span> <!-- <div class="icon mr-2">-->
{{$t('profile.limitH')}} <!-- <img src="../../assets/img/icon/top2.png" alt v-if="detail.user_auth_level==2"/>-->
{{$t('profile.tips')}} --> <!-- <img src="../../assets/img/icon/top1.png" alt v-else/>-->
{{detail.user_auth_level==2?$t('profile.tips2'):$t('profile.tips1')}} <!-- </div>-->
</div> <!-- <div>-->
</div> <!-- &lt;!&ndash; {{$t('profile.max')}}-->
</div> <!-- <span class="font-weight-bold">1k</span>-->
</div> <!-- <span class="font-weight-bold ">USD</span>-->
</div> <!-- <span class="font-weight-bold">24</span>-->
<div class="col-md-7 d-flex align-items-stretch mb-4"> <!-- {{$t('profile.limitH')}}-->
<!-- 实名认证 --> <!-- {{$t('profile.tips')}} &ndash;&gt;-->
<div class="panel-box bg-panel shadow-sm w-100"> <!-- {{ detail.user_auth_level == 2 ? $t('profile.tips2') : $t('profile.tips1') }}-->
<div class="heading d-flex justify-content-between align-items-center"> <!-- </div>-->
<div class="h6">{{$t('profile.verLeave')}}</div> <!-- </div>-->
</div> <!-- </div>-->
<div class="tab-content"> <!-- </div>-->
<div class="step-group d-flex justify-content-center text-center"> <!--</div>-->
<div class="step"> <!--<div class="col-md-7 d-flex align-items-stretch mb-4">-->
<div class="icon"> <!-- &lt;!&ndash; 实名认证 &ndash;&gt;-->
<img src="../../assets/img/icon/top1.png" alt /> <!-- <div class="panel-box bg-panel shadow-sm w-100">-->
</div> <!-- <div class="heading d-flex justify-content-between align-items-center">-->
<div class="txt">{{$t('profile.max')}} 20k USDT</div> <!-- <div class="h6">{{ $t('profile.verLeave') }}</div>-->
</div> <!-- </div>-->
<div class="next-icon mt-4"> <!-- <div class="tab-content">-->
<img src="../../assets/img/icon/stepnext.png" alt /> <!-- <div class="step-group d-flex justify-content-center text-center">-->
</div> <!-- <div class="step">-->
<div class="step"> <!-- <div class="icon">-->
<div class="icon"> <!-- <img src="../../assets/img/icon/top1.png" alt/>-->
<img src="../../assets/img/icon/top2.png" alt /> <!-- </div>-->
</div> <!-- <div class="txt">{{ $t('profile.max') }} 20k USDT</div>-->
<div class="txt">{{$t('profile.max')}} 500K USDT</div> <!-- </div>-->
<div class="btn"> <!-- <div class="next-icon mt-4">-->
<span v-if="detail.user_auth_level==2" class="btn btn-sm btn-primary rounded-pill">{{$t('profile.clickToVerify1')}}</span> <!-- <img src="../../assets/img/icon/stepnext.png" alt/>-->
<button type="button" v-else @click="$router.push('/profile/certification')" class="btn btn-sm btn-primary rounded-pill">{{$t('profile.clickToVerify')}}</button> <!-- </div>-->
</div> <!-- <div class="step">-->
</div> <!-- <div class="icon">-->
<div class="next-icon mt-4"> <!-- <img src="../../assets/img/icon/top2.png" alt/>-->
<img src="../../assets/img/icon/stepnext.png" alt /> <!-- </div>-->
</div> <!-- <div class="txt">{{ $t('profile.max') }} 500K USDT</div>-->
<div class="step"> <!-- <div class="btn">-->
<div class="icon"> <!-- <span v-if="detail.user_auth_level==2"-->
<img src="../../assets/img/icon/top3.png" alt /> <!-- class="btn btn-sm btn-primary rounded-pill">{{-->
</div> <!-- $t('profile.clickToVerify1')-->
<div class="txt">{{$t('profile.exceed')}} 500K USDT</div> <!-- }}</span>-->
<div class="btn"> <!-- <button type="button" v-else @click="$router.push('/profile/certification')"-->
<router-link <!-- class="btn btn-sm btn-primary rounded-pill">-->
to="/contact-us" <!-- {{ $t('profile.clickToVerify') }}-->
tag="button" <!-- </button>-->
type="button" <!-- </div>-->
class="btn btn-sm btn-primary rounded-pill" <!-- </div>-->
@click="$router.push('/contact-us')" <!-- <div class="next-icon mt-4">-->
>{{$t('profile.contactUs')}}</router-link> <!-- <img src="../../assets/img/icon/stepnext.png" alt/>-->
</div> <!-- </div>-->
</div> <!-- <div class="step">-->
</div> <!-- <div class="icon">-->
</div> <!-- <img src="../../assets/img/icon/top3.png" alt/>-->
</div> <!-- </div>-->
</div> <!-- <div class="txt">{{ $t('profile.exceed') }} 500K USDT</div>-->
</div> <!-- <div class="btn">-->
<div class="row"> <!-- <router-link-->
<!-- <div class="col-md-4 d-flex"> <!-- to="/contact-us"-->
邀请好友 <!-- tag="button"-->
<div class="panel-box bg-panel shadow-sm w-100"> <!-- type="button"-->
<div class="heading d-flex justify-content-between">{{$t('profile.inviteFriends')}}</div> <!-- class="btn btn-sm btn-primary rounded-pill"-->
<div class="tab-content"> <!-- @click="$router.push('/contact-us')"-->
<div class="min-height-50">{{$t('profile.dividends',{name:'AMATAK',num:'30%'})}}</div> <!-- >{{ $t('profile.contactUs') }}-->
<button type="button" class="bottom-left-btn btn btn-sm btn-primary rounded-pill" @click="$router.push('/profile/invite')">{{$t('profile.sendInvitation')}}</button> <!-- </router-link>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<div class="d-flex align-items-stretch mb-4 w-100">
<!--新版用户中心-->
<div class="panel-box bg-panel shadow-sm w-100">
<div class="tab-content w-100">
<tr class=" w-100" style="height:60px;">
<td style="width:30%;">{{ $t('common.email') }}</td>
<td style="width:60%;">{{ detail.account }}</td>
<td style="width:60%;"></td>
</tr>
<tr class=" w-100" style="height:60px;">
<td style="width:30%;">{{ $t('profile.realName') }}</td>
<td style="width:60%;">
{{detail.user_auth_level_text}}
</td>
<td style="width:60%;"><span v-if="detail.user_auth_level==2"
class="btn btn-sm btn-primary rounded-pill">{{
$t('profile.clickToVerify1')
}}</span>
<button type="button" v-else @click="$router.push('/profile/certification')"
class="btn btn-sm btn-primary rounded-pill">
{{ $t('profile.clickToVerify') }}
</button>
</td>
</tr>
<tr class=" w-100" style="height:60px;">
<td style="width:30%;">{{ $t('setting.loginPassword') }}</td>
<td style="width:60%;">{{ $t('setting.passwordChangePrompt') }}</td>
<td style="width:60%;">
<button type="button" class="bottom-left-btn btn btn-sm btn-primary rounded-pill"
@click="$router.push('/setting')">{{ $t('profile.clickReset') }}
</button>
</td>
</tr>
</div>
</div> </div>
</div> </div>
</div> -->
<div class="col-md-4 d-flex">
<!-- 重置密码 -->
<div class="panel-box bg-panel shadow-sm w-100">
<div class="heading d-flex justify-content-between">{{$t('profile.resetPassword')}}</div>
<div class="tab-content">
<div class="min-height-50">{{$t('profile.forLoginAccount')}}</div>
<button type="button" class="bottom-left-btn btn btn-sm btn-primary rounded-pill" @click="$router.push('/setting')">{{$t('profile.clickReset')}}</button>
</div> </div>
</div> <!--<div class="row">-->
<!-- &lt;!&ndash; <div class="col-md-4 d-flex">-->
<!-- 邀请好友-->
<!-- <div class="panel-box bg-panel shadow-sm w-100">-->
<!-- <div class="heading d-flex justify-content-between">{{$t('profile.inviteFriends')}}</div>-->
<!-- <div class="tab-content">-->
<!-- <div class="min-height-50">{{$t('profile.dividends',{name:'AMATAK',num:'30%'})}}</div>-->
<!-- <button type="button" class="bottom-left-btn btn btn-sm btn-primary rounded-pill" @click="$router.push('/profile/invite')">{{$t('profile.sendInvitation')}}</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div> &ndash;&gt;-->
<!-- <div class="col-md-4 d-flex">-->
<!-- &lt;!&ndash; 重置密码 &ndash;&gt;-->
<!-- <div class="panel-box bg-panel shadow-sm w-100">-->
<!-- <div class="heading d-flex justify-content-between">{{ $t('profile.resetPassword') }}</div>-->
<!-- <div class="tab-content">-->
<!-- <div class="min-height-50">{{ $t('profile.forLoginAccount') }}</div>-->
<!-- <button type="button" class="bottom-left-btn btn btn-sm btn-primary rounded-pill"-->
<!-- @click="$router.push('/setting')">{{ $t('profile.clickReset') }}-->
<!-- </button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- &lt;!&ndash; <div class="col-md-4 d-flex">-->
<!-- 访问记录-->
<!-- <div class="panel-box bg-panel shadow-sm w-100">-->
<!-- <div class="heading d-flex justify-content-between">{{$t('profile.registrationDecord')}}</div>-->
<!-- <div class="tab-content">-->
<!-- <div class="min-height-50">{{$t('profile.recording')}}</div>-->
<!-- <button type="button" class="bottom-left-btn btn btn-sm btn-primary rounded-pill" @click="$router.push('/profile/login-history')">{{$t('profile.recordingDEtail')}}</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div> &ndash;&gt;-->
<!--</div>-->
</div> </div>
<!-- <div class="col-md-4 d-flex">
访问记录
<div class="panel-box bg-panel shadow-sm w-100">
<div class="heading d-flex justify-content-between">{{$t('profile.registrationDecord')}}</div>
<div class="tab-content">
<div class="min-height-50">{{$t('profile.recording')}}</div>
<button type="button" class="bottom-left-btn btn btn-sm btn-primary rounded-pill" @click="$router.push('/profile/login-history')">{{$t('profile.recordingDEtail')}}</button>
</div>
</div>
</div> -->
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import Profile from "@/api/profile"; import Profile from "@/api/profile";
import {mapState} from "vuex";
export default { export default {
data() { data() {
return { return {
detail: {} detail: {}
}; };
}, },
filters: {
//| filters: {
userFilter(val) { //|
if (!val) return; userFilter(val) {
return val.replace(/(^\w{3})\w*(@|\w{3}$)/g, "$1***$2"); if (!val) return;
} return val.replace(/(^\w{3})\w*(@|\w{3}$)/g, "$1***$2");
}, }
methods: { },
getUserInfo() { methods: {
Profile.getUserInfo().then(res => { getUserInfo() {
this.detail = res; Profile.getUserInfo().then(res => {
}); this.detail = res;
});
}
},
created() {
this.getUserInfo();
} }
},
created() {
this.getUserInfo();
}
}; };
</script> </script>

843
src/views/purchase/index.vue

@ -1,193 +1,197 @@
<template> <template>
<div class="subscride-page"> <div class="subscride-page">
<!-- 表单 --> <!-- 表单 -->
<div class="container panel my-4 p-5 rounded shadow-sm bg-panel"> <div class="container panel my-4 p-5 rounded shadow-sm bg-panel">
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
<div class="h3 mb-3">{{ detail.coin_name }}</div> <div class="h3 mb-3">{{ detail.coin_name }}</div>
<div class>{{ $t("purchase.sendPrice") }}</div> <div class>{{ $t("purchase.sendPrice") }}</div>
<div class="price fn-20 blue"> <div class="price fn-20 blue">
1 {{ detail.coin_name }} = {{issue_price}} 1 {{ detail.coin_name }} = {{ issue_price }}
<!-- {{ detail.issue_price }} --> <!-- {{ detail.issue_price }} -->
USDT USDT
</div> </div>
<ul> <!--<ul>-->
<li class="mt-3"> <!-- <li class="mt-3">-->
<div class="label text-secondary"> <!-- <div class="label text-secondary">-->
{{ $t("purchase.subscriptionCurrency") }} <!-- {{ $t("purchase.subscriptionCurrency") }}-->
</div> <!-- </div>-->
<div class="txt">{{ detail.subscribe_currency }}</div> <!-- <div class="txt">{{ detail.subscribe_currency }}</div>-->
</li> <!-- </li>-->
<li class="mt-3"> <!-- <li class="mt-3">-->
<div class="label text-secondary"> <!-- <div class="label text-secondary">-->
{{ $t("purchase.expected") }} <!-- {{ $t("purchase.expected") }}-->
</div> <!-- </div>-->
<div class="txt"> <!-- <div class="txt">-->
{{ parseTime(detail.expected_time_online) }} <!-- {{ parseTime(detail.expected_time_online) }}-->
</div> <!-- </div>-->
</li> <!-- </li>-->
<li class="mt-3"> <!-- <li class="mt-3">-->
<div class="label text-secondary"> <!-- <div class="label text-secondary">-->
{{ $t("purchase.startTime") }} <!-- {{ $t("purchase.startTime") }}-->
</div> <!-- </div>-->
<div class="txt"> <!-- <div class="txt">-->
{{ parseTime(detail.start_subscription_time) }} <!-- {{ parseTime(detail.start_subscription_time) }}-->
</div> <!-- </div>-->
</li> <!-- </li>-->
<li class="mt-3"> <!-- <li class="mt-3">-->
<div class="label text-secondary"> <!-- <div class="label text-secondary">-->
{{ $t("purchase.applyForPurchase") }} <!-- {{ $t("purchase.applyForPurchase") }}-->
</div> <!-- </div>-->
<div class="txt"> <!-- <div class="txt">-->
{{ parseTime(detail.end_subscription_time) }} <!-- {{ parseTime(detail.end_subscription_time) }}-->
</div> <!-- </div>-->
</li> <!-- </li>-->
</ul> <!--</ul>-->
</div> <img :src='detail.icon'>
<div </div>
class="col-6 d-flex flex-column justify-content-end align-items-start" <div
> class="col-6 d-flex flex-column justify-content-end align-items-start"
<div class="input-group mb-3"> >
<div class="input-group-prepend"> <div class="input-group mb-3">
<el-dropdown> <div class="input-group-prepend">
<el-dropdown>
<span class="input-group-text"> <span class="input-group-text">
{{ activeCoin.coin_name }} {{ activeCoin.coin_name }}
<i class="el-icon-caret-bottom"></i> <i class="el-icon-caret-bottom"></i>
</span> </span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item <el-dropdown-item
v-for="item in coinList" v-for="item in coinList"
@click.native="activeCoin = item" @click.native="activeCoin = item"
:key="item.coin_name" :key="item.coin_name"
>{{ item.coin_name }}</el-dropdown-item >{{ item.coin_name }}
> </el-dropdown-item
</el-dropdown-menu> >
</el-dropdown> </el-dropdown-menu>
</div> </el-dropdown>
<input </div>
type="number" <input
class="form-control" type="number"
:placeholder="$t('purchase.enterNum')" class="form-control"
min="0" :placeholder="$t('purchase.enterNum')"
step="0.0000000001" min="0"
:data-message="$t('nav.b9',{num:10})" step="0.0000000001"
required :data-message="$t('nav.b9',{num:10})"
aria-label="Username" required
v-model="num" aria-label="Username"
aria-describedby="basic-addon1" v-model="num"
/> aria-describedby="basic-addon1"
<div class="input-group-append"> />
<button <div class="input-group-append">
class="btn btn-outline-primary" <button
type="button" class="btn btn-outline-primary"
@click="num = activeCoin.usable_balance" type="button"
> @click="num = activeCoin.usable_balance"
{{ $t("purchase.all") }} >
</button> {{ $t("purchase.all") }}
</button>
</div>
</div>
<!-- v-if="activeCoin.usable_balance" -->
<p>
{{ $t("wallet.availableBalance") }}{{ activeCoin.usable_balance }}
</p>
<p>
1
<!-- {{ activeCoin.coin_name }} -->
USDT
{{ 1 / detail.issue_price | omitTo(4) }}
<!-- {{ activeCoin.proportion_amount | omitTo(5) }} -->
{{ detail.coin_name }}
</p>
<p>
{{ num || 0 }} {{ activeCoin.coin_name }}
{{ (activeCoin.CurrentPrice / detail.issue_price) * num | omitTo(4) }}
<!-- {{ total }} -->
{{ detail.coin_name }}
</p>
<button
type="submit"
class="btn btn-primary rounded-pill"
@click="ifSubscribeNow"
>
{{ $t("purchase.subscribeNow") }}
</button>
</div>
</div> </div>
</div>
<!-- v-if="activeCoin.usable_balance" -->
<p >
{{ $t("wallet.availableBalance") }}{{ activeCoin.usable_balance }}
</p>
<p>
1
<!-- {{ activeCoin.coin_name }} -->
USDT
{{ 1 / detail.issue_price | omitTo(4)}}
<!-- {{ activeCoin.proportion_amount | omitTo(5) }} -->
{{ detail.coin_name }}
</p>
<p>
{{ num || 0 }} {{ activeCoin.coin_name }}
{{(activeCoin.CurrentPrice/ detail.issue_price)*num | omitTo(4)}}
<!-- {{ total }} -->
{{ detail.coin_name }}
</p>
<button
type="submit"
class="btn btn-primary rounded-pill"
@click="ifSubscribeNow"
>
{{ $t("purchase.subscribeNow") }}
</button>
</div> </div>
</div> <!-- 进度 -->
</div> <div v-if="activityList[0].amount" class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel">
<!-- 进度 --> <div class="row">
<div v-if="activityList[0].amount" class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel"> <div class="col-12">
<div class="row"> <h5 class="border-bottom pb-3 mb-5">
<div class="col-12"> {{ $t('nav.c2') }}
<h5 class="border-bottom pb-3 mb-5"> </h5>
{{ $t('nav.c2') }} <el-steps :active="activestep+1" align-center>
</h5> <el-step
<el-steps :active="activestep+1" align-center> :description="$t('nav.c2')"
<el-step ></el-step>
:description="$t('nav.c2')" <el-step
></el-step> :description="$t('nav.c1', { amount: activityList[0].amount,name:detail.coin_name,rate:activityList[0].rate*100})"
<el-step ></el-step>
:description="$t('nav.c1', { amount: activityList[0].amount,name:detail.coin_name,rate:activityList[0].rate*100})" <el-step
></el-step> :description="$t('nav.c1', { amount: activityList[1].amount,name:detail.coin_name,rate:activityList[1].rate*100})"
<el-step ></el-step>
:description="$t('nav.c1', { amount: activityList[1].amount,name:detail.coin_name,rate:activityList[1].rate*100})" <el-step
></el-step> :description="$t('nav.c1', { amount: activityList[2].amount,name:detail.coin_name,rate:activityList[2].rate*100})"
<el-step ></el-step>
:description="$t('nav.c1', { amount: activityList[2].amount,name:detail.coin_name,rate:activityList[2].rate*100})" <el-step
></el-step> :description="$t('nav.c1', { amount: activityList[3].amount,name:detail.coin_name,rate:activityList[3].rate*100})"
<el-step ></el-step>
:description="$t('nav.c1', { amount: activityList[3].amount,name:detail.coin_name,rate:activityList[3].rate*100})" <el-step
></el-step> :description="$t('nav.c1', { amount: activityList[4].amount,name:detail.coin_name,rate:activityList[4].rate*100})"
<el-step ></el-step>
:description="$t('nav.c1', { amount: activityList[4].amount,name:detail.coin_name,rate:activityList[4].rate*100})" </el-steps>
></el-step> </div>
</el-steps> </div>
</div> </div>
</div> <div class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel">
</div>
<div class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel">
<div class="col-md-12 mt15"> <div class="col-md-12 mt15">
<div class="markets-pair-list"> <div class="markets-pair-list">
<ul class="nav nav-pills" id="pills-tab" role="tablist"> <ul class="nav nav-pills" id="pills-tab" role="tablist">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-toggle="pill" role="tab" aria-selected="false">{{ $t("common.a3") }}</a> <a class="nav-link" data-toggle="pill" role="tab" aria-selected="false">{{
$t("common.a3")
}}</a>
</li> </li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane fade show active" id="tab1" role="tabpanel"> <div class="tab-pane fade show active" id="tab1" role="tabpanel">
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>{{$t('purchase.subscribe')}}</th> <th>{{ $t('purchase.subscribe') }}</th>
<th>{{$t('otc.a5')}}</th> <th>{{ $t('otc.a5') }}</th>
<th>{{$t('wallet.money')}}</th> <th>{{ $t('wallet.money') }}</th>
<th>{{$t('purchase.subscriptionCurrency')}}</th> <th>{{ $t('purchase.subscriptionCurrency') }}</th>
<th>{{$t('contract.b1')}}</th> <th>{{ $t('contract.b1') }}</th>
<th>{{$t('contract.l1')}}</th> <th>{{ $t('contract.l1') }}</th>
<th>{{$t('contract.l4')}} <th>{{ $t('contract.l4') }}
<!-- USDT --> <!-- USDT -->
</th> </th>
<th class="text-right">{{$t('wallet.status')}}</th> <th class="text-right">{{ $t('wallet.status') }}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="item in subscribeRecords" :key="item.id" v-if="seek(item)"> <tr v-for="item in subscribeRecords" :key="item.id" v-if="seek(item)">
<td> <td>
<img src="../../assets/img/icon/1.png" alt="eth" /> <img src="../../assets/img/icon/1.png" alt="eth"/>
{{ item.subscription_currency_name }} {{ item.subscription_currency_name }}
</td> </td>
<td>{{ item.subscription_currency_amount }}</td> <td>{{ item.subscription_currency_amount }}</td>
<td>{{ item.payment_amount }}</td> <td>{{ item.payment_amount }}</td>
<td>{{ item.payment_currency }}</td> <td>{{ item.payment_currency }}</td>
<td>{{ item.subscription_time|parseTime }}</td> <td>{{ item.subscription_time|parseTime }}</td>
<td>{{(item.increase_ratio).toFixed(5)}}%</td> <td>{{ (item.increase_ratio).toFixed(5) }}%</td>
<td>{{(item.total_value).toFixed(5)}}</td> <td>{{ (item.total_value).toFixed(5) }}</td>
<!-- <td>{{ ( ((detail.issue_price-(item.payment_amount/item.subscription_currency_amount))/detail.issue_price)*100 ).toFixed(2) }}%</td> --> <!-- <td>{{ ( ((detail.issue_price-(item.payment_amount/item.subscription_currency_amount))/detail.issue_price)*100 ).toFixed(2) }}%</td> -->
<!-- <td>{{ ( (((item.payment_amount/item.subscription_currency_amount))*detail.issue_price) ).toFixed(2) }}</td> --> <!-- <td>{{ ( (((item.payment_amount/item.subscription_currency_amount))*detail.issue_price) ).toFixed(2) }}</td> -->
<td class="text-right"> <td class="text-right">
<span class="success">{{$t('wallet.success')}}</span> <span class="success">{{ $t('wallet.success') }}</span>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
@ -195,155 +199,173 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 进度 --> <!-- 进度 -->
<div class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel"> <div class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h5 class="border-bottom pb-3 mb-5"> <h5 class="border-bottom pb-3 mb-5">
{{ $t("purchase.subscriptionCycle") }} {{ $t("purchase.subscriptionCycle") }}
</h5> </h5>
<el-steps :active="detail.status" align-center> <el-steps :active="detail.status" align-center>
<el-step <el-step
:title="$t('purchase.projectWarmUp')" :title="$t('purchase.projectWarmUp')"
:icon="detail.status >= 1 ? 'el-icon-success' : undefined" :icon="detail.status >= 1 ? 'el-icon-success' : undefined"
></el-step> ></el-step>
<el-step <el-step
:title="$t('purchase.startSubscription')" :title="$t('purchase.startSubscription')"
:icon="detail.status >= 2 ? 'el-icon-success' : undefined" :icon="detail.status >= 2 ? 'el-icon-success' : undefined"
:description="parseTime(detail.start_subscription_time)" :description="parseTime(detail.start_subscription_time)"
></el-step> ></el-step>
<el-step <el-step
:title="$t('purchase.endOfSubscription')" :title="$t('purchase.endOfSubscription')"
:icon="detail.status >= 3 ? 'el-icon-success' : undefined" :icon="detail.status >= 3 ? 'el-icon-success' : undefined"
:description="parseTime(detail.end_subscription_time)" :description="parseTime(detail.end_subscription_time)"
></el-step> ></el-step>
<el-step <el-step
:title="$t('purchase.announceResults')" :title="$t('purchase.announceResults')"
:icon="detail.status >= 4 ? 'el-icon-success' : undefined" :icon="detail.status >= 4 ? 'el-icon-success' : undefined"
:description="parseTime(detail.announce_time)" :description="parseTime(detail.announce_time)"
></el-step> ></el-step>
</el-steps> </el-steps>
</div>
</div>
</div> </div>
</div>
</div>
<!-- 详情 --> <!-- 详情 -->
<div class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel"> <div class="container panel my-4 px-4 pt-4 pb-5 rounded shadow-sm bg-panel">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h5 class="border-bottom pb-3 mb-4"> <h5 class="border-bottom pb-3 mb-4">
{{ $t("purchase.projectCetails") }} {{ $t("purchase.projectCetails") }}
</h5> </h5>
<div class="edit-content" v-html="detail.project_details"></div> <div class="edit-content" v-html="detail.project_details"></div>
</div>
</div>
</div> </div>
</div>
</div>
<div <div
class="modal fade" class="modal fade"
id="editAddress" id="editAddress"
tabindex="-1" tabindex="-1"
role="dialog" role="dialog"
aria-labelledby="exampleModalLabel" aria-labelledby="exampleModalLabel"
aria-hidden="true" aria-hidden="true"
> >
<div class="modal-dialog modal-dialog-centered"> <div class="modal-dialog modal-dialog-centered">
<div class="modal-content bg-panel"> <div class="modal-content bg-panel">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel"> <h5 class="modal-title" id="exampleModalLabel">
{{$t("purchase.useOrNot")}}{{activeCoin.coin_name}}{{$t("purchase.subscribe")}}? {{ $t("purchase.useOrNot") }}{{ activeCoin.coin_name }}{{ $t("purchase.subscribe") }}?
</h5> </h5>
<button <button
type="button" type="button"
class="close" class="close"
data-dismiss="modal" data-dismiss="modal"
aria-label="Close" aria-label="Close"
> >
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form> <form>
<div class="form-group"> <div class="form-group">
<label for="comments" class="col-form-label" <label for="comments" class="col-form-label"
>{{$t("contract.k9")}}:</label >{{ $t("contract.k9") }}:</label
> >
<input <input
type="text" type="text"
class="form-control" class="form-control"
id="comments" id="comments"
v-model="code" v-model="code"
/> />
</div> </div>
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button <button
type="button" type="button"
class="btn btn-secondary rounded-pill" class="btn btn-secondary rounded-pill"
data-dismiss="modal" data-dismiss="modal"
> >
{{ $t("common.cancelBtn") }} {{ $t("common.cancelBtn") }}
</button> </button>
<button <button
type="button" type="button"
class="btn btn-primary rounded-pill" class="btn btn-primary rounded-pill"
@click="sbumit" @click="sbumit"
> >
{{ $t("common.confirmBtn") }} {{ $t("common.confirmBtn") }}
</button> </button>
</div> </div>
</div>
</div>
</div> </div>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import Subscride from "@/api/subscride"; import Subscride from "@/api/subscride";
import Wallet from "@/api/wallet"; import Wallet from "@/api/wallet";
export default { export default {
data() { data() {
return { return {
num: 1, num: 1,
coinList: [], coinList: [],
detail: {}, detail: {},
activeCoin: {}, activeCoin: {},
code:"", code: "",
transferRecords: [], transferRecords: [],
coinName:"", coinName: "",
subscribeRecords:[], subscribeRecords: [],
activityList:[{rate: "", amount: ""},{rate: "", amount: ""},{rate: "", amount: ""},{rate: "", amount: ""},{rate: "", amount: ""}], activityList: [{rate: "", amount: ""}, {rate: "", amount: ""}, {rate: "", amount: ""}, {
activestep:0, rate: "",
issue_price:0.03, amount: ""
timer:'' }, {rate: "", amount: ""}],
}; activestep: 0,
}, issue_price: 0.035,
computed: { timer: ''
total() { };
return utils.multiple(
this.num || 1,
this.activeCoin.proportion_amount * 1,
2
);
}, },
computed: {
total() {
return utils.multiple(
this.num || 1,
this.activeCoin.proportion_amount * 1,
2
);
},
isLogin() { isLogin() {
return Boolean(this.userAuth); return Boolean(this.userAuth);
}, },
userAuth() {
const auth = localStorage.getItem("auth");
let ret = "";
if (auth) {
let {memberId, accessToken} = JSON.parse(auth);
ret = `?${accessToken}&${memberId}`;
}
return ret;
},
userAuth() {
const auth = localStorage.getItem("auth");
let ret = "";
if (auth) {
let { memberId, accessToken } = JSON.parse(auth);
ret = `?${accessToken}&${memberId}`;
}
return ret;
}, },
}, methods: {
methods: {
// chkAuth() {
// alert(222222);
this.authh = JSON.parse(localStorage.getItem("auth"));
// console.log(this.authh.user_auth_level);
if (this.authh.user_auth_level == 0) {
// alert(11111);
this.$router.push(`/profile/certification`);
location.reload();
}
return utils.validate(".input-group");
},
//
seek(item) { seek(item) {
return !this.isCondition || item.coin_name === this.coinName; return !this.isCondition || item.coin_name === this.coinName;
}, },
@ -352,104 +374,123 @@ export default {
.then(data => { .then(data => {
this.subscribeRecords = data.data; this.subscribeRecords = data.data;
}) })
.catch(err => {}); .catch(err => {
});
}, },
activity() { activity() {
Subscride.activity() Subscride.activity()
.then(data => { .then(data => {
this.activityList=data.activity.params this.activityList = data.activity.params
this.activestep=data.step this.activestep = data.step
}) })
.catch(err => {}); .catch(err => {
});
},
parseTime(num) {
if (!num) return;
return utils.parseTime(num);
},
subscribeTokenList() {
Subscride.subscribeTokenList().then((res) => {
this.coinList = res;
this.activeCoin = this.coinList[0];
});
},
getInfo() {
Subscride.subscribe().then((res) => {
this.detail = res;
console.log(res, '这里')
});
},
chkValidate() {
//
// alert('11111');
if (!this.isLogin) {
// this.$confirm( this.$t("contract.k8"), {
// // confirmButtonText: this.$t("contract.c5"),
// // cancelButtonText: this.$t("contract.c4"),
// // type: "warning",
// })
this.$router.push(`/sign-in`);
// this.then(() => {
// // alert('22222');
// // console.log(123123);
// this.$router.push(`/sign-in`);
//
// // this.$router.push("/profile/certification")
// // this.$router.replace("/sign-in");
// })
// .catch();
}
return utils.validate(".input-group");
}, },
parseTime(num) {
if (!num) return;
return utils.parseTime(num);
},
subscribeTokenList() {
Subscride.subscribeTokenList().then((res) => {
this.coinList = res;
this.activeCoin = this.coinList[0];
});
},
getInfo() {
Subscride.subscribe().then((res) => {
this.detail = res;
});
},
chkValidate() {
//
if (!this.isLogin) {
this.$confirm( this.$t("contract.k8"), {
confirmButtonText: this.$t("contract.c5"),
cancelButtonText: this.$t("contract.c4"),
type: "warning",
})
.then(() => {
this.$router.push(`/sign-in`);
})
.catch();
}
return utils.validate(".input-group");
},
ifSubscribeNow() { ifSubscribeNow() {
if (this.chkValidate()) { if (this.chkValidate()) {
this.$confirm( this.$confirm(
`${this.$t("purchase.useOrNot")}${this.activeCoin.coin_name}${this.$t( `${this.$t("purchase.useOrNot")}${this.activeCoin.coin_name}${this.$t(
"purchase.subscribe" "purchase.subscribe"
)}?`, )}?`,
this.$t("purchase.prompt"), this.$t("purchase.prompt"),
{ {
confirmButtonText: this.$t("common.confirmBtn"), confirmButtonText: this.$t("common.confirmBtn"),
cancelButtonText: this.$t("common.cancelBtn"), cancelButtonText: this.$t("common.cancelBtn"),
}
)
.then(() => {
this.subscribeNow();
})
.catch(() => {
});
} }
) },
.then(() => { sbumit() {
this.subscribeNow(); $("#editAddress").modal("hide");
}) let data = {
.catch(() => {}); purchase_code: this.code
}
},
sbumit(){
$("#editAddress").modal("hide");
let data={
purchase_code:this.code
}
Subscride.changePurchaseCode(data)
.then((res) => {
this.subscribeNow();
})
.catch((err) => {
$("#editAddress").modal("show");
});
},
subscribeNow() {
let data = {
amount: this.num,
coin_name: this.activeCoin.coin_name,
};
Subscride.subscribeNow(data).then((res) => {
if (res) {
this.$message.success(this.$t("purchase.subscribeSuccess"));
this.num = "";
this.getTransferRecords()
} }
Subscride.changePurchaseCode(data)
.then((res) => {
this.subscribeNow();
})
.catch((err) => {
$("#editAddress").modal("show");
});
},
subscribeNow() {
let data = {
amount: this.num,
coin_name: this.activeCoin.coin_name,
};
Subscride.subscribeNow(data).then((res) => {
if (res) {
this.$message.success(this.$t("purchase.subscribeSuccess"));
this.num = "";
this.getTransferRecords()
}
}) })
.catch((err) => { .catch((err) => {
if(err==4002){ if (err == 4002) {
$("#editAddress").modal("show"); $("#editAddress").modal("show");
} }
}); });
},
}, },
},
created() { created() {
this.chkValidate();
this.chkAuth();
this.subscribeTokenList(); this.subscribeTokenList();
this.getInfo(); this.getInfo();
this.getTransferRecords() this.getTransferRecords()
this.activity() this.activity()
this.timer=setInterval(this.getTransferRecords,5000) this.timer = setInterval(this.getTransferRecords, 5000)
},
beforeMount() {
this.getInfo();
this.chkAuth();
this.chkValidate();
}, },
beforeDestroy() { beforeDestroy() {
clearInterval(this.timer); clearInterval(this.timer);
@ -458,23 +499,27 @@ export default {
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>
.table tr:hover{ .table tr:hover {
background: #e9e9e9 !important; background: #e9e9e9 !important;
} }
/deep/ { /deep/ {
.el-step__icon { .el-step__icon {
background: #222e3d; background: #222e3d;
} }
.el-step__head.is-process {
color: inherit; .el-step__head.is-process {
border-color: inherit; color: inherit;
} border-color: inherit;
.el-step__description.is-process, }
.el-step__title.is-process {
color: inherit; .el-step__description.is-process,
} .el-step__title.is-process {
.el-step__description{ color: inherit;
margin-top: 0; }
}
.el-step__description {
margin-top: 0;
}
} }
</style> </style>

1
src/views/setting/login-pwd.vue

@ -1,5 +1,6 @@
<template> <template>
<div class="edit-password"> <div class="edit-password">
<secondary-nav></secondary-nav>
<div class="form-group"> <div class="form-group">
<label>{{$t('setting.newPassword')}}</label> <label>{{$t('setting.newPassword')}}</label>
<input <input

76
src/views/signIn/index.vue

@ -1,13 +1,13 @@
<template> <template>
<div> <div class="body">
<div class="vh-100 d-flex justify-content-center"> <div class="logins" style="height:700px;">
<div class="form-access my-auto "> <div class="form-access" style="padding-top: 150px">
<form class="login-body bg-panel"> <form class="login-body bg-panel">
<div class="text-center h3"> <div class="text-center h3">
<span>{{ $t("login.sign-in") }}</span> <span>{{ $t("login.sign-in") }}</span>
</div> </div>
<template v-if="step === 1 "> <template v-if="step === 1">
<div class="form-group"> <div class="form-group">
<input type="text" name="account" v-model="user.account" required :data-has="$t('login.effectivePhoneEmail')" class="form-control" :placeholder="$t('login.enterPhoneEmail')" :data-message="$t('login.effectivePhoneEmail')" /> <input type="text" name="account" v-model="user.account" required :data-has="$t('login.effectivePhoneEmail')" class="form-control" :placeholder="$t('login.enterPhoneEmail')" :data-message="$t('login.effectivePhoneEmail')" />
</div> </div>
@ -211,28 +211,6 @@ export default {
return localStorage.getItem('lang'); return localStorage.getItem('lang');
}, },
test(){
// var query=this.$route.query;
// console.log(query)
let rqtoken =this.$route.query.autooooooo;
// let uid = this.$route.query.user_id;
let acc = this.$route.query.account
if(typeof rqtoken!='undefined'){
// let xuser='{"user_id":'+uid+',"account":"'+acc+'"}'
// console.log("simple json:"+xuser)
this.user.account=acc;
this.user.password="HJH^*jj8f9fj38j";
this.isLogin=true
// localStorage.setItem("auth",xuser);
//localStorage.setItem("auth",JSON.stringify(uid));
// localStorage.setItem('token', rqtoken);
//this.$router.push("/wallet/assets/exchange");
//location.reload();
// this.$router.push("/wallet/assets/exchange");
// location.reload();
}
},
refreshSlider() { refreshSlider() {
// nameiframe // nameiframe
// idiframedom contentWindow // idiframedom contentWindow
@ -439,7 +417,15 @@ export default {
// local // local
localStorage.setItem("auth", JSON.stringify(response.user)); localStorage.setItem("auth", JSON.stringify(response.user));
localStorage.setItem("token", response.token); localStorage.setItem("token", response.token);
this.$router.push("/wallet/assets/exchange"); this.authh = JSON.parse(localStorage.getItem("auth"));
if(this.authh.user_auth_level==0){
// alert(11111);
this.$router.push(`/profile/certification`);
}else {
this.$router.push("/wallet/assets/exchange");
}
location.reload(); location.reload();
return; return;
} }
@ -495,16 +481,9 @@ export default {
Member.loginConfirm(data) Member.loginConfirm(data)
.then(response => { .then(response => {
console.dir(response); console.dir(response);
// local
// let rqtoken =this.$route.query; localStorage.setItem("auth", JSON.stringify(response.user));
// if(typeof rqtoken!='undefined'){ localStorage.setItem("token", response.token);
// this.isLogin=true
// localStorage.setItem('token', rqtoken);
// }else {
// local
localStorage.setItem("auth", JSON.stringify(response.user));
localStorage.setItem("token", response.token);
// }
// 退 // 退
this.$router.push("/wallet/assets/exchange"); this.$router.push("/wallet/assets/exchange");
location.reload(); location.reload();
@ -523,17 +502,25 @@ export default {
// //
window.step2Login = this.step2; window.step2Login = this.step2;
console.log(localStorage.lang,navigator.language.includes("zh")) console.log(localStorage.lang,navigator.language.includes("zh"))
//
this.test()
} }
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.body{
background-image: url('../../assets/img/xi4Gdg.jpeg');
background-size: 100% 100%;
// position: fixed;
height: 100%;
width: 100%;
background-color: #fff;
}
form.login-body { form.login-body {
// margin-top: 400rpx;
.form-group { .form-group {
margin: 1rem auto; margin: 1rem auto;
} }
.area-phone-box { .area-phone-box {
@ -643,4 +630,13 @@ form.login-body {
padding: 0; padding: 0;
margin: 0; margin: 0;
} }
.logins{
width: 30%;
margin-left: 62%;
//margin-top: 5%;
// display: flex;
// margin-top: 300rpx !important;
// margin:200rpx ;
// float:right;
}
</style> </style>

38
src/views/signUp/index.vue

@ -1,8 +1,8 @@
<template> <template>
<div> <div class="body">
<div class="vh-100 d-flex justify-content-center"> <div class="d-flex justify-content-center logins" style="height:800px;">
<div class="form-access my-auto"> <div class="form-access my-auto">
<form class="register-body"> <form class="register-body bg-panel">
<div class="text-center h3"> <div class="text-center h3">
<span>{{$t('login.goRegister')}}</span> <span>{{$t('login.goRegister')}}</span>
</div> </div>
@ -68,7 +68,7 @@
</label> </label>
</div> </div>
<button type="submit" class="btn btn-primary rounded-pill theme-bg-color-a" style="background-image: none;" @click.prevent.stop="step1">{{$t('login.reg')}}</button> <button type="submit" class="btn btn-primary rounded-pill" @click.prevent.stop="step1">{{$t('login.reg')}}</button>
</template> </template>
<!-- Step3 --> <!-- Step3 -->
@ -306,7 +306,7 @@ export default {
case 1: case 1:
Member.sendEmailCode({ Member.sendEmailCode({
email: this.user.email, email: this.user.email,
invite_code: this.user.parentCode,
token token
}) })
.then(data => { .then(data => {
@ -546,6 +546,14 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.body{
background-image: url("../../assets/img/xi4Gdg.jpeg");
background-size: 100% 100%;
// position: fixed;
height: 100%;
width: 100%;
background-color: #fff;
}
@import '@/assets/scss/base/_common.scss'; @import '@/assets/scss/base/_common.scss';
form.register-body { form.register-body {
.form-group { .form-group {
@ -670,17 +678,13 @@ div.verify-code {
.form-control:disabled, .form-control[readonly]{ .form-control:disabled, .form-control[readonly]{
background-color: #1e2834; background-color: #1e2834;
} }
.form-control { .logins{
background-color: #f8f8f8 !important; width: 30%;
border: none !important; margin-left: 62%;
} top: 5%;
.nav-tabs { // display: flex;
border-bottom-color: #DEE2E6; // margin-top: 300rpx !important;
} // margin:200rpx ;
.nav-tabs .nav-item{ // float:right;
margin-bottom: 0px !important;
}
.nav-tabs .nav-link.active{
border: none !important;
} }
</style> </style>

2
src/views/wallet/address.vue

@ -9,7 +9,7 @@
<div class> <div class>
<button <button
type="button" type="button"
class="btn btn-primary" class="btn btn-success"
data-toggle="modal" data-toggle="modal"
data-target="#editAddress" data-target="#editAddress"
@click="add" @click="add"

4
src/views/wallet/contract-assets.vue

@ -34,8 +34,8 @@
</thead> </thead>
<tbody> <tbody>
<tr v-for="item in list" :key="item.id"> <tr v-for="item in list" :key="item.id">
<td>{{ item.created_at }}</td> <td style="color:#000000">{{ item.created_at }}</td>
<td>{{ item.log_type_text }}</td> <td style="color:#000000">{{ item.log_type_text }}</td>
<td <td
:class="{ :class="{
increace: item.amount >= 0, increace: item.amount >= 0,

44
src/views/wallet/exchange-assets.vue

@ -109,7 +109,7 @@
<div class="mb-2 mr-sm-2"> <div class="mb-2 mr-sm-2">
<input type="text" v-model="keyword" class="form-control mb-2 mr-sm-2" :placeholder="$t('wallet.searchCurrency')" /> <input type="text" v-model="keyword" class="form-control mb-2 mr-sm-2" :placeholder="$t('wallet.searchCurrency')" />
<router-link to="/wallet/address" class="btn btn-primary rounded-pill mb-2">{{$t('wallet.addressManagement')}}</router-link> <!--<router-link to="/wallet/address" class="btn btn-success rounded-pill mb-2">{{$t('wallet.addressManagement')}}</router-link>-->
</div> </div>
</form> </form>
<div class="tab-content"> <div class="tab-content">
@ -142,8 +142,7 @@
<div class="btn-group btn-group-sm" role="group" aria-label="Basic example"> <div class="btn-group btn-group-sm" role="group" aria-label="Basic example">
<!-- data-target="#deposite" --> <!-- data-target="#deposite" -->
<button type="button" class="btn btn-outline-primary" data-toggle="modal" @click="enterDeposite(item)" :disabled="!item.is_withdraw">{{$t('wallet.recharge')}}</button> <button type="button" class="btn btn-outline-primary" data-toggle="modal" @click="enterDeposite(item)" :disabled="!item.is_withdraw">{{$t('wallet.recharge')}}</button>
<!-- <button type="button" class="btn btn-outline-primary" data-toggle="modal" data-target="#withdraw" @click="enterWithdraw(item)" :disabled="!item.is_withdraw">{{$t('wallet.withdrawal')}}</button> --> <button type="button" class="btn btn-outline-primary" data-toggle="modal" data-target="#withdraw" @click="enterWithdraw(item)" :disabled="!item.is_withdraw">{{$t('wallet.withdrawal')}}</button>
<button type="button" class="btn btn-outline-primary" data-target="#withdraw" @click="enterWithdraw(item)" :disabled="!item.is_withdraw">{{$t('wallet.withdrawal')}}</button>
<div class="btn-group btn-group-sm" role="group"> <div class="btn-group btn-group-sm" role="group">
<button id="btnGroupDrop1" type="button" class="btn btn-outline-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{$t('wallet.transaction')}}</button> <button id="btnGroupDrop1" type="button" class="btn btn-outline-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{$t('wallet.transaction')}}</button>
@ -340,7 +339,7 @@
</span> </span>
<span> <span>
{{$t('wallet.low')}}:{{withdrawFee.withdrawal_min}} {{withdrawCoin}} {{$t('wallet.low')}}:{{withdrawFee.withdrawal_min}} {{withdrawCoin}}
<router-link to="/wallet/address" class="text-primary">{{$t('wallet.addressList')}}</router-link> <!--<router-link to="/wallet/address" class="text-primary">{{$t('wallet.addressList')}}</router-link>-->
</span> </span>
</label> </label>
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
@ -361,14 +360,6 @@
</div> </div>
<span class="text-right">{{$t('wallet.handlingFee1')}}: {{withdrawCoin=='USDT'&&withdraw.addressType==3?withdrawFee.trc20:withdrawFee.withdrawal_fee }} {{withdrawCoin}}</span> <span class="text-right">{{$t('wallet.handlingFee1')}}: {{withdrawCoin=='USDT'&&withdraw.addressType==3?withdrawFee.trc20:withdrawFee.withdrawal_fee }} {{withdrawCoin}}</span>
</div> </div>
<div class="form-group mt-2">
<label class="d-flex justify-content-between" for="formGroupExampleInput">
<span>{{$t('login.pwd')}}</span>
</label>
<div class="input-group input-group-sm">
<input type="password" v-model="withdraw.password" :placeholder="$t('login.password')" class="form-control" />
</div>
</div>
</form> </form>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
@ -420,7 +411,6 @@ export default {
total_assets_usd: 0 total_assets_usd: 0
}, },
userInfo:{},// userInfo:{},//
ProfileDetail: {},
coinAssets: [], // coinAssets: [], //
isHideZero: false, // 0 isHideZero: false, // 0
@ -444,7 +434,6 @@ export default {
coin_id: "", coin_id: "",
amount: "", amount: "",
address: "", address: "",
password: "",
addressType: 2, // 1 omni 2 erc20, addressType: 2, // 1 omni 2 erc20,
code_type: 1, code_type: 1,
code: '' code: ''
@ -605,12 +594,6 @@ export default {
// //
enterWithdraw(item) { enterWithdraw(item) {
// console.log(this.ProfileDetail.status)
if(this.ProfileDetail.status!=2){
this.$router.push("/profile/certification");
return;
}
$('#withdraw').modal('show');
this.withdrawCoin = item.coin_name; this.withdrawCoin = item.coin_name;
this.withdraw.coin_id = item.coin_id; this.withdraw.coin_id = item.coin_id;
// //
@ -665,16 +648,6 @@ export default {
Profile.getUserInfo({}).then(res => { Profile.getUserInfo({}).then(res => {
this.userInfo = res this.userInfo = res
}); });
},
getAuthInfo() {
Profile.getAuthInfo({}).then(res => {
this.ProfileDetail = res;
console.log(this.ProfileDetail, 11111)
});
},
//
PageScrollTo(num){
document.documentElement.scrollTop = num;
} }
}, },
@ -683,8 +656,7 @@ created() {
this.getUserAssets(); this.getUserAssets();
this.getCoinAssets(); this.getCoinAssets();
this.createWalletAddress(); this.createWalletAddress();
this.getUserInfo(); this.getUserInfo()
this.getAuthInfo();
}, },
mounted() { mounted() {
@ -718,14 +690,6 @@ created() {
// console.error('Action:', e.action); // console.error('Action:', e.action);
// console.error('Trigger:', e.trigger); // console.error('Trigger:', e.trigger);
}); });
//
let isNeedScroll = this.$route.fullPath.split('?buy=')[1];
// console.log(this.$route.fullPath,121212121, isNeedScroll);
if(isNeedScroll){
setTimeout(() => {
this.PageScrollTo(775);
}, 1500);
}
} }
}; };
</script> </script>

7
src/views/wallet/funding.vue

@ -40,7 +40,7 @@
</div> </div>
<div class="tab-content"> <div class="tab-content">
<!-- 充值 --> <!-- 充值 -->
<div v-infinite-scroll="load1" class="tab-pane funding-table fade show" :class="currentTab =='deposit'? 'active':''" id="deposit" role="tabpanel"> <div v-infinite-scroll="load1" class="tab-pane funding-table fade " :class="currentTab =='deposit'? 'active':''" id="deposit" role="tabpanel">
<table class="table stripe"> <table class="table stripe">
<thead> <thead>
<tr> <tr>
@ -189,10 +189,7 @@ export default {
}, },
getDepositHistories() { getDepositHistories() {
Wallet.depositHistory().then(data => { Wallet.depositHistory().then(data => this.depositHistories = data.data).catch(err => { });
this.depositHistories = data.data;
console.log( this.depositHistories, ' this.depositHistories')
}).catch(err => { });
}, },
getRechargeManualLog() { getRechargeManualLog() {

BIN
static/images/icon/andriod.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

BIN
static/images/icon/api.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

BIN
static/images/icon/google-play.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

BIN
static/images/icon/imac.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

BIN
static/images/icon/ios.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

BIN
static/images/icon/linux.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

BIN
static/images/icon/right.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

BIN
static/images/icon/windows.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

BIN
static/images/icon_1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

BIN
static/images/icon_2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

BIN
static/images/icon_3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

BIN
static/images/illustration-3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 KiB

BIN
static/images/lightImageUrl.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

BIN
static/images/lightImageUrl_2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

BIN
static/images/trusted-section.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Loading…
Cancel
Save