Browse Source

修改注册验证码改为滑动验证

master
liaoxinyu 2 years ago
parent
commit
70af09dce3
  1. BIN
      assets/img/nav-logo.png
  2. BIN
      components/tf-verify-img/img/tf-arrows.png
  3. BIN
      components/tf-verify-img/img/tf-close.png
  4. 270
      components/tf-verify-img/tf-verify-img.vue
  5. 8
      i18n/lang/de.json
  6. 12
      i18n/lang/en.json
  7. 8
      i18n/lang/fra.json
  8. 8
      i18n/lang/it.json
  9. 8
      i18n/lang/jp.json
  10. 8
      i18n/lang/kor.json
  11. 8
      i18n/lang/pt.json
  12. 8
      i18n/lang/spa.json
  13. 1732
      i18n/lang/tr.json
  14. 164
      i18n/lang/zh-TW.json
  15. 69
      layout/vCode.vue
  16. 28
      main.html
  17. 5
      manifest.json
  18. 2
      pages.json
  19. 75
      pages/reg/index.vue
  20. BIN
      static/favicon.ico
  21. BIN
      static/verify/0.jpeg
  22. BIN
      static/verify/1.jpeg
  23. BIN
      static/verify/Pic0.jpg
  24. BIN
      static/verify/Pic1.jpg
  25. BIN
      static/verify/Pic2.jpg
  26. BIN
      static/verify/Pic3.jpg
  27. BIN
      static/verify/Pic4.jpg

BIN
assets/img/nav-logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 32 KiB

BIN
components/tf-verify-img/img/tf-arrows.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

BIN
components/tf-verify-img/img/tf-close.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 972 B

270
components/tf-verify-img/tf-verify-img.vue

@ -0,0 +1,270 @@
<template>
<view class="tf-Box-Bg">
<view class="tf-Box">
<view class="tf-Box-title">
<text class="text">{{$t('homeNewText.dd3')}}</text>
<image class="tf-close" src="./img/tf-close.png" mode="aspectFit" @click.stop="close_"></image>
</view>
<canvas :style="{ width: canvasW + 'px', height: canvasH + 'px' }"
class="tf-Box-center" canvas-id="tf-verify-canvas" id="tf-verify-canvas"></canvas>
<movable-area class="tf-Box-BtnBox">
<view class="tf-Box-BtnBox-text">{{$t('homeNewText.dd4')}}</view>
<movable-view class="tf-Box-BtnNei" direction="all" :x="canvasX2" @change="changePath" @touchend="endTouch" @mouseup="endTouch">
<view class="tf-Box-BtnNei-leftBox" :style="{backgroundColor:verifyImgs[verifyIndex].color}"></view>
</movable-view>
</movable-area>
</view>
</view>
</template>
<script>
export default {
name:"tf-verify-img",
props:{
verifyImgs:{
type:Array,
default: function(){
return []
}
}
},
data() {
return {
verifyIndex:0,
canvasW:"",
canvasH:"",
canvasX2:0,//
canvasX:0,//X
ctx:false,
jgX:0,//X
dqImgPath:'',//
};
},
created() {
// this.canvasW = uni.upx2px(580);
this.canvasW = uni.upx2px(605);
this.canvasH = uni.upx2px(290);
console.log("created");
},
mounted() {
this.$nextTick(()=>{
this.init()
})
},
methods:{
// minNummaxNum
randomNum(minNum,maxNum){
switch(arguments.length){
case 1:
return parseInt(Math.random()*minNum+1,10);
break;
case 2:
return parseInt(Math.random()*(maxNum-minNum+1)+minNum,10);
break;
default:
return 0;
break;
}
},
close_(){
this.$emit('close');
},
init(){
if(this.verifyImgs.length==0){
uni.showToast({
title: 'verifyImgs不能为空',
icon:"none"
});
return;
}
console.log("init");
this.canvasX2--;
this.canvasX = 0;
this.verifyIndex = this.randomNum(0,this.verifyImgs.length-1);
this.ctx = uni.createCanvasContext('tf-verify-canvas',this);
console.log(this.ctx);
this.jgX = this.randomNum(uni.upx2px(150),uni.upx2px(450));
this.dqImgPath = this.verifyImgs[this.verifyIndex].src;
this.huatu();
},
endTouch(){
if(Math.abs(this.canvasX-this.jgX)<=5){
this.$emit('succeed')
}else{
uni.showToast({
title: this.$t('homeNewText.dd2'),
icon:"error"
});
this.init();
}
},
huatu(){
let this_ = this;
let r = uni.upx2px(10);
let XX = this.canvasX;
let YY = uni.upx2px(100);
let cs = uni.upx2px(20);
// this_.ctx.drawImage(this_.dqImgPath,0,0,this_.canvasW,this_.canvasH);
// this_.ctx.drawImage(this_.dqImgPath,16,0,this_.canvasW,this_.canvasH);
this_.ctx.drawImage(this_.dqImgPath,9,0,this_.canvasW,this_.canvasH);
//
this_.ctx.beginPath();
this_.ctx.moveTo(-2*r+this_.jgX+cs+2*r, YY-2*r+2*r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+5.5*r, YY-2*r+2*r);
this_.ctx.arcTo(-2*r+this_.jgX+cs+5.5*r, YY-2*r+3*r, XX-2+this_.jgX*r+cs+6.5*r, YY-2*r+3*r, r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+7.5*r, YY-2*r+3*r);
this_.ctx.arcTo(-2*r+this_.jgX+cs+8.5*r, YY-2*r+3*r, -2*r+this_.jgX+cs+8.5*r, YY-2*r+2*r, r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+12*r, YY-2*r+2*r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+12*r, YY-2*r+11*r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+8.5*r, YY-2*r+11*r);
this_.ctx.arcTo(-2*r+this_.jgX+cs+8.5*r, YY-2*r+12*r, -2*r+this_.jgX+cs+7.5*r, YY-2*r+12*r, r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+6.5*r, YY-2*r+12*r);
this_.ctx.arcTo(-2*r+this_.jgX+cs+5.5*r, YY-2*r+12*r, -2*r+this_.jgX+cs+5.5*r, YY-2*r+11*r, r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+2*r, YY-2*r+11*r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+2*r, YY-2*r+8*r);
this_.ctx.arcTo(-2*r+this_.jgX+cs+3*r, YY-2*r+8*r, -2*r+this_.jgX+cs+3*r, YY-2*r+7*r, r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+3*r, YY-2*r+6*r);
this_.ctx.arcTo(-2*r+this_.jgX+cs+3*r, YY-2*r+5*r, -2*r+this_.jgX+cs+2*r, YY-2*r+5*r, r);
this_.ctx.lineTo(-2*r+this_.jgX+cs+2*r, YY-2*r+2*r);
this_.ctx.shadowBlur=10;
this_.ctx.shadowColor="#ffffff";
this_.ctx.fillStyle = "rgba(0,0,0,0.5)";
this_.ctx.fill();
this_.ctx.restore();
//
this_.ctx.beginPath();
this_.ctx.save();
this_.ctx.moveTo(XX-2*r+cs+2*r, YY-2*r+2*r);
this_.ctx.lineTo(XX-2*r+cs+5.5*r, YY-2*r+2*r);
this_.ctx.arcTo(XX-2*r+cs+5.5*r, YY-2*r+3*r, XX-2*r+cs+6.5*r, YY-2*r+3*r, r);
this_.ctx.lineTo(XX-2*r+cs+7.5*r, YY-2*r+3*r);
this_.ctx.arcTo(XX-2*r+cs+8.5*r, YY-2*r+3*r, XX-2*r+cs+8.5*r, YY-2*r+2*r, r);
this_.ctx.lineTo(XX-2*r+cs+12*r, YY-2*r+2*r);
this_.ctx.lineTo(XX-2*r+cs+12*r, YY-2*r+11*r);
this_.ctx.lineTo(XX-2*r+cs+8.5*r, YY-2*r+11*r);
this_.ctx.arcTo(XX-2*r+cs+8.5*r, YY-2*r+12*r, XX-2*r+cs+7.5*r, YY-2*r+12*r, r);
this_.ctx.lineTo(XX-2*r+cs+6.5*r, YY-2*r+12*r);
this_.ctx.arcTo(XX-2*r+cs+5.5*r, YY-2*r+12*r, XX-2*r+cs+5.5*r, YY-2*r+11*r, r);
this_.ctx.lineTo(XX-2*r+cs+2*r, YY-2*r+11*r);
this_.ctx.lineTo(XX-2*r+cs+2*r, YY-2*r+8*r);
this_.ctx.arcTo(XX-2*r+cs+3*r, YY-2*r+8*r, XX-2*r+cs+3*r, YY-2*r+7*r, r);
this_.ctx.lineTo(XX-2*r+cs+3*r, YY-2*r+6*r);
this_.ctx.arcTo(XX-2*r+cs+3*r, YY-2*r+5*r, XX-2*r+cs+2*r, YY-2*r+5*r, r);
this_.ctx.lineTo(XX-2*r+cs+2*r, YY-2*r+2*r);
this_.ctx.shadowBlur=10;
this_.ctx.shadowColor="#ffffff";
this_.ctx.fill();
this_.ctx.clip();
// this_.ctx.drawImage(this_.dqImgPath,this_.canvasX-this_.jgX,0,this_.canvasW,this_.canvasH);
this_.ctx.drawImage(this_.dqImgPath,this_.canvasX-this_.jgX+16,0,this_.canvasW,this_.canvasH);
this_.ctx.restore();
//
this_.ctx.draw();
},
changePath(e){
// #ifdef APP-NVUE
this.canvasX = e.detail.x;
// #endif
// #ifndef APP-NVUE
this.canvasX = e.target.x;
// #endif
this.huatu();
}
}
}
</script>
<style lang="less">
.tf-Box-Bg{
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 100;
background-color: rgba(0,0,0,.3);
display: flex;
align-items: center;
justify-content: center;
color: #000;
.tf-Box{
width: 640upx;
height: 584upx;
background-color: #fff;
border-radius: 6upx;
box-shadow: 0 0 50upx 0upx rgba(0,0,0,.2);
.tf-Box-title{
height: 100upx;
line-height: 100upx;
// padding: 0 32upx;
padding: 0 16px;
border-bottom: 1px solid #E1E3E9;
flex-direction: row;
display: flex;
align-items: center;
justify-content: space-between;
.text{
font-size: 32upx;
flex: 1;
}
.tf-close{
width: 28upx;
height: 28upx;
}
}
.tf-Box-center{
margin-top: 30upx;
margin-bottom: 30upx;
align-self: center;
// padding: 0 32upx;
padding: 0 16px;
}
.tf-Box-BtnBox{
margin-top: 30upx;
margin-bottom: 30upx;
align-self: center;
width: 580upx;
height: 75upx;
line-height: 75upx;
text-align: center;
font-size: 28upx;
border-radius: 6upx;
border: 1px solid #E1E3E9;
background-color: #F7F8F9;
overflow: hidden;
position: relative;
margin: 30upx auto;
.tf-Box-BtnBox-text{
width: 100%;
height: 75upx;
position: absolute;
top: 0;
left: 0;
color: #424649;
text-align: center;
}
.tf-Box-BtnNei{
height: 75upx;
width: 75upx;
background-color: #fff;
box-shadow: 0 0 10upx 0upx rgba(0,0,0,.2);
background-image: url(img/tf-arrows.png);
background-size: 34upx;
background-position: center;
background-repeat: no-repeat;
.tf-Box-BtnNei-leftBox{
position: absolute;
top: 0;
left: -580upx;
width: 580upx;
height: 100%;
}
}
}
}
}
</style>

8
i18n/lang/de.json

@ -742,7 +742,7 @@
"a9": "mehrere",
"b0": "Bist du sicher, dass du dich einloggen willst?",
"b1": "Anmelden oder registrieren",
"b2": "Hallo, willkommen bei AMATAK",
"b2": "Hallo, willkommen bei KOOScoin",
"b3": "Betrag",
"b4": "Index der Spots",
"b5": "Index der Verträge",
@ -864,6 +864,10 @@
"dd5": "Derivate",
"dd6": "Sie können Verträge auf über 100 Kryptowährungen mit bis zu 150-facher Hebelwirkung handeln und hohe Gewinne erzielen",
"dd7": "Hilfezentrum",
"ee6": "Grafische Überprüfung"
"ee6": "Grafische Überprüfung",
"dd1": "Verifizierung erfolgreich",
"dd2": "Verifizierung fehlgeschlagen",
"dd3": "Bitte führen Sie die Sicherheitsüberprüfung durch",
"dd4": "Schieben Sie den Schieberegler, um das Rätsel zu lösen"
}
}

12
i18n/lang/en.json

@ -9,7 +9,7 @@
"using": "payments using",
"crypto": "crypto",
"Why": "Why do you choose to buy",
"digital": "digital currency in CLSCoin",
"digital": "digital currency in KOOScoin",
"believe": "We believe Cryptolly is here to stay — and that a future worth building is one which opens its doors and invites everyone in ",
"help": "We help you make sense of the coins, the terms, the dense charts and market changes",
"Clarity": "Clarity",
@ -18,7 +18,7 @@
"convenient": "convenient",
"key": "One key transaction, more convenient operation",
"technology": "Our technology",
"CLSCoin": "CLSCoin adopts advanced technologies such as GSLB, distributed server cluster ,distributed storage, high speed memory trading engine with multiple machines, cold wallet, hot wallet with private key offline,etc.,to provide our customers with secure,stable and reliable digital asset trading services through multiple terminals such as web,mobile and desktop terminals ",
"CLSCoin": "KOOScoin adopts advanced technologies such as GSLB, distributed server cluster ,distributed storage, high speed memory trading engine with multiple machines, cold wallet, hot wallet with private key offline,etc.,to provide our customers with secure,stable and reliable digital asset trading services through multiple terminals such as web,mobile and desktop terminals ",
"guide": "Beginner's guide",
"Wear": "Wear an account",
"Get": "Register a trading account",
@ -794,7 +794,7 @@
"a9": "multiple",
"b0": "Are you sure you want to log out?",
"b1": "Sign in or register",
"b2": "Hi, welcome to CLSCoin",
"b2": "Hi, welcome to KOOScoin",
"b3": "amount",
"b4": "spot index ",
"b5": "Contract index",
@ -919,6 +919,10 @@
"dd5": "Derivatives",
"dd6": "You can trade contracts on 100+ cryptocurrencies with up to 150x leverage and earn high profits",
"dd7": "Help Center",
"ee6": "Graphical verification"
"ee6": "Graphical verification",
"dd1": "Verification successful",
"dd2": "verification failed",
"dd3": "Please complete the security verification",
"dd4": "Slide the slider to complete the puzzle"
}
}

8
i18n/lang/fra.json

@ -742,7 +742,7 @@
"a9": "Multiple",
"b0": "Tu es sûr de vouloir quitter la connexion?",
"b1": "Connexion ou inscription",
"b2": "Hi, bienvenue à AMATAK",
"b2": "Hi, bienvenue à KOOScoin",
"b3": "Quantité",
"b4": "Indice au comptant",
"b5": "Indices contractuels",
@ -864,6 +864,10 @@
"dd5": "Dérivés",
"dd6": "Vous pouvez négocier des contrats sur plus de 100 crypto-monnaies avec un effet de levier jusqu'à 150x et réaliser des bénéfices élevés",
"dd7": "Centre d'aide",
"ee6": "Vérification graphique"
"ee6": "Vérification graphique",
"dd1": "Vérification réussie",
"dd2": "échec de la vérification",
"dd3": "Veuillez compléter la vérification de sécurité",
"dd4": "Faites glisser le curseur pour terminer le puzzle"
}
}

8
i18n/lang/it.json

@ -740,7 +740,7 @@
"a9": "multiplo",
"b0": "Sei sicuro di voler uscire di casa?",
"b1": "Firma o registro",
"b2": "Ciao, benvenuto a AMATAK",
"b2": "Ciao, benvenuto a KOOScoin",
"b3": "importo",
"b4": "indice dei punti",
"b5": "Indice dei contratti",
@ -864,6 +864,10 @@
"dd5": "Derivati",
"dd6": "Puoi scambiare contratti su oltre 100 criptovalute con una leva fino a 150x e ottenere profitti elevati",
"dd7": "Centro assistenza",
"ee6": "Verifica grafica"
"ee6": "Verifica grafica",
"dd1": "Verifica riuscita",
"dd2": "verifica fallita",
"dd3": "Completa la verifica di sicurezza",
"dd4": "Fai scorrere il cursore per completare il puzzle"
}
}

8
i18n/lang/jp.json

@ -740,7 +740,7 @@
"a9": "倍数",
"b0": "本当にログアウトしますか?",
"b1": "ログインまたは登録",
"b2": "Hi、AMATAKをご利用ください。",
"b2": "Hi、KOOScoinをご利用ください。",
"b3": "量を測る",
"b4": "現物指数",
"b5": "契約指数",
@ -864,6 +864,10 @@
"dd5": "デリバティブ",
"dd6": "最大 150 倍のレバレッジで 100 以上の暗号通貨の契約を取引し、高い利益を得ることができます",
"dd7": "ヘルプセンター",
"ee6": "グラフィカルな検証"
"ee6": "グラフィカルな検証",
"dd1": "検証成功",
"dd2": "検証に失敗しました",
"dd3": "セキュリティ検証を完了してください",
"dd4": "スライダーをスライドさせてパズルを完成させます"
}
}

8
i18n/lang/kor.json

@ -740,7 +740,7 @@
"a9":"배수",
"b0":"로그 인 을 종료 하 시 겠 습 니까?",
"b1":"등록",
"b2":"안녕하세요,AMATAK 사용 을 환영 합 니 다.",
"b2":"안녕하세요,KOOScoin 사용 을 환영 합 니 다.",
"b3":"재다.",
"b4":"현물 지수",
"b5":"계약 지수",
@ -864,6 +864,10 @@
"dd5": "파생상품",
"dd6": "최대 150배의 레버리지로 100개 이상의 암호화폐 계약을 거래하고 높은 수익을 올릴 수 있습니다",
"dd7": "지원 센터",
"ee6": "그래픽 검증"
"ee6": "그래픽 검증",
"dd1": "확인 성공",
"dd2": "확인 실패",
"dd3": "보안인증을 완료해주세요",
"dd4": "슬라이더를 밀어서 퍼즐을 완성하세요"
}
}

8
i18n/lang/pt.json

@ -740,7 +740,7 @@
"a9":"Múltiplos",
"b0":"Tem certeza que quer fazer logon?",
"b1":"Assinar ou registar",
"b2":"Olá, bem-vindo Ao Bingvet.",
"b2":"Olá, bem-vindo Ao KOOScoin.",
"b3":"Montante",
"b4":"índice de Pontos",
"b5":"Índice de contratos",
@ -862,6 +862,10 @@
"dd5": "Derivados",
"dd6": "Você pode negociar contratos em mais de 100 criptomoedas com alavancagem de até 150x e obter lucros elevados",
"dd7": "Centro de ajuda",
"ee6": "Verificação gráfica"
"ee6": "Verificação gráfica",
"dd1": "Verificação bem-sucedida",
"dd2": "falha na verificação",
"dd3": "Por favor, complete a verificação de segurança",
"dd4": "Deslize o controle deslizante para completar o quebra-cabeça"
}
}

8
i18n/lang/spa.json

@ -740,7 +740,7 @@
"a9":"Múltiplo",
"b0":"¿Estás seguro de que quieres desconectarte?",
"b1":"Iniciar sesión o registrarse",
"b2":"Hola, bienvenido a AMATAK.",
"b2":"Hola, bienvenido a KOOScoin.",
"b3":"Cantidad",
"b4":"Índice al contado",
"b5":"Índice de contratos",
@ -864,6 +864,10 @@
"dd5": "Derivados",
"dd6": "Puede negociar contratos en más de 100 criptomonedas con un apalancamiento de hasta 150x y obtener grandes ganancias",
"dd7": "Centro de ayuda",
"ee6": "Verificación gráfica"
"ee6": "Verificación gráfica",
"dd1": "Verificación exitosa",
"dd2": "Fallo en la verificación",
"dd3": "Por favor completa la verificación de seguridad.",
"dd4": "Desliza el control deslizante para completar el rompecabezas."
}
}

1732
i18n/lang/tr.json

File diff suppressed because it is too large

164
i18n/lang/zh-TW.json

@ -8,7 +8,7 @@
"using": "支付使用",
"crypto": "加密",
"Why": "你為什麼選擇購買",
"digital": "CLSCoin的數字貨幣",
"digital": "KOOScoin的數字貨幣",
"believe": "我們相信加密貨幣將一直存在--是一个值得建立的未來同時是一個敞開著并邀請每個人都加入的大門",
"help": "我們幫助你理解貨幣、條款、密集的圖表和市場變化",
"Clarity": "清晰度",
@ -17,7 +17,7 @@
"convenient": "方便",
"key": "一鍵交易,操作更方便",
"technology": "我們的技術",
"CLSCoin": "CLSCoin採用GSLB、分佈式存儲、多機高速內存交易引擎、冷錢包、離線私鑰熱錢包等先進技術,通過網絡、移動和台式終端等多個終端為客戶提供安全、穩定和可靠的數字資產交易服務",
"CLSCoin": "KOOScoin採用GSLB、分佈式存儲、多機高速內存交易引擎、冷錢包、離線私鑰熱錢包等先進技術,通過網絡、移動和台式終端等多個終端為客戶提供安全、穩定和可靠的數字資產交易服務",
"guide": "初學者指南",
"Wear": "記下來",
"Get": "注册交易帳戶",
@ -792,7 +792,7 @@
"a9": "倍數",
"b0": "確定要登出嗎?",
"b1": "登入或注册",
"b2": "Hi,歡迎使用CLSCoin",
"b2": "Hi,歡迎使用KOOScoin",
"b3": "量",
"b4": "現貨指數",
"b5": "合約指數",
@ -841,81 +841,85 @@
"b7": "確認購買",
"b8": "確認出售"
},
"shou":{
"shou": {
"a0": "向賬戶充值",
"a1": "將加密貨幣資金添加到您的錢包",
"a2": "並立即開始交易",
"a3": "立即充值",
"a4": "全球數字資產交易平臺",
"a5": "讓加密資產交易更簡單",
"a6": "立即注冊",
"a7": "數字資產行情速遞",
"a8": "市場趨勢",
"a9": "幣種",
"a10":"最新價(USD)",
"a11":"24h漲幅",
"a12":"24h成交量",
"a13":"Top 10",
"a14":"5 million+",
"a15":"< 0.10%",
"a16":"200+",
"a17":"Global Ranking",
"a18":"users trust us",
"a19":"Ultra-Low Fees",
"a20":"Countries",
"a21":"多終端支持",
"a22":"隨時隨地交易數字資產",
"a23":"支持豐富的資產種類,幣種信息一應俱全",
"a24":"APP Store",
"a25":"Android APK",
"a26":"掃碼下載APP",
"a27":"iOS & Android",
"a28":"為何選擇sytcoin.com?",
"a29":"竭力為多個國家提供數字資產交易服務",
"a30":"簡單便捷交易加密資產",
"a31":"產品簡單易懂、交易流程便捷,一站式區塊鏈資產服務平臺",
"a32":"以用戶體驗為本,提供愉悅的加密服務體驗",
"a33":"服務全球多語言地區,成爲所有用戶進入加密世界的網關",
"a34":"安全穩定零事故",
"a35":"多重安全策略保障、100%備用金保證,成立至今未發生安全事故",
"a36":"最優的交易費率",
"a37":"優惠的交易費率,富有競爭力的VIP權益,享受最有品質的服務",
"a38":"新手指引",
"a39":"快速瞭解數字資產交易流程",
"a40":"立即賺取收益",
"a41":"點擊前往",
"a42":"SYTCoin 加密貨幣交易平台 - 為每個人而設計",
"a43":"開啟加密之旅"
},
"homeNewText": {
"aa1": "加密貨幣之門",
"aa2": "安全,快捷,輕鬆交易超過100種加密貨幣",
"aa3": "透過電子郵件註冊",
"aa4": "立即開始交易",
"aa5": "市場趨勢",
"aa6": "數位資產行情速遞",
"aa7": "幣種",
"bb1": "最新價(USD)",
"bb2": "24h漲幅",
"bb3": "24h成交量",
"bb4": "適合所有人的加密貨幣交易所",
"bb5": "在這裡開始交易並體驗更好的加密貨幣之旅",
"bb6": "個人",
"bb7": "適合所有人的加密貨幣交易所。 最值得信賴的領先交易平台,幣種豐富",
"cc1": "商務",
"cc2": "專為企業和機構打造。 為機構投資者和企業提供加密解決方案",
"cc3": "開發者",
"cc4": "專為開發者打造,供開發人員建構web3未來的工具和API",
"cc5": "交易,隨時隨地",
"cc6": "掃描二維碼",
"cc7": "下載 Android/IOS App",
"dd1": "安全穩定零事故",
"dd2": "多重安全策略保障、100%備用金保證,成立至今未發生安全事故、",
"dd3": "簡單便捷交易加密資產",
"dd4": "在sytcoin,產品簡單易懂、交易流程便捷,一站式區塊鏈資產服務平台",
"dd5": "衍生性商品",
"dd6": "您可以高達150倍的槓桿率交易100+加密貨幣的合約,賺取高額收益",
"dd7": "幫助中心",
"ee6": "圖形驗證"
}
}
"a1": "將加密貨幣資金添加到您的錢包",
"a2": "並立即開始交易",
"a3": "立即充值",
"a4": "全球數字資產交易平臺",
"a5": "讓加密資產交易更簡單",
"a6": "立即注冊",
"a7": "數字資產行情速遞",
"a8": "市場趨勢",
"a9": "幣種",
"a10": "最新價(USD)",
"a11": "24h漲幅",
"a12": "24h成交量",
"a13": "Top 10",
"a14": "5 million+",
"a15": "< 0.10%",
"a16": "200+",
"a17": "Global Ranking",
"a18": "users trust us",
"a19": "Ultra-Low Fees",
"a20": "Countries",
"a21": "多終端支持",
"a22": "隨時隨地交易數字資產",
"a23": "支持豐富的資產種類,幣種信息一應俱全",
"a24": "APP Store",
"a25": "Android APK",
"a26": "掃碼下載APP",
"a27": "iOS & Android",
"a28": "為何選擇sytcoin.com?",
"a29": "竭力為多個國家提供數字資產交易服務",
"a30": "簡單便捷交易加密資產",
"a31": "產品簡單易懂、交易流程便捷,一站式區塊鏈資產服務平臺",
"a32": "以用戶體驗為本,提供愉悅的加密服務體驗",
"a33": "服務全球多語言地區,成爲所有用戶進入加密世界的網關",
"a34": "安全穩定零事故",
"a35": "多重安全策略保障、100%備用金保證,成立至今未發生安全事故",
"a36": "最優的交易費率",
"a37": "優惠的交易費率,富有競爭力的VIP權益,享受最有品質的服務",
"a38": "新手指引",
"a39": "快速瞭解數字資產交易流程",
"a40": "立即賺取收益",
"a41": "點擊前往",
"a42": "SYTCoin 加密貨幣交易平台 - 為每個人而設計",
"a43": "開啟加密之旅"
},
"homeNewText": {
"aa1": "加密貨幣之門",
"aa2": "安全,快捷,輕鬆交易超過100種加密貨幣",
"aa3": "透過電子郵件註冊",
"aa4": "立即開始交易",
"aa5": "市場趨勢",
"aa6": "數位資產行情速遞",
"aa7": "幣種",
"bb1": "最新價(USD)",
"bb2": "24h漲幅",
"bb3": "24h成交量",
"bb4": "適合所有人的加密貨幣交易所",
"bb5": "在這裡開始交易並體驗更好的加密貨幣之旅",
"bb6": "個人",
"bb7": "適合所有人的加密貨幣交易所。 最值得信賴的領先交易平台,幣種豐富",
"cc1": "商務",
"cc2": "專為企業和機構打造。 為機構投資者和企業提供加密解決方案",
"cc3": "開發者",
"cc4": "專為開發者打造,供開發人員建構web3未來的工具和API",
"cc5": "交易,隨時隨地",
"cc6": "掃描二維碼",
"cc7": "下載 Android/IOS App",
"dd1": "安全穩定零事故",
"dd2": "多重安全策略保障、100%備用金保證,成立至今未發生安全事故、",
"dd3": "簡單便捷交易加密資產",
"dd4": "在sytcoin,產品簡單易懂、交易流程便捷,一站式區塊鏈資產服務平台",
"dd5": "衍生性商品",
"dd6": "您可以高達150倍的槓桿率交易100+加密貨幣的合約,賺取高額收益",
"dd7": "幫助中心",
"ee6": "圖形驗證",
"dd1": "驗證成功",
"dd2": "驗證失敗",
"dd3": "請完成安全驗證",
"dd4": "滑動滑桿完成拼圖"
}
}

69
layout/vCode.vue

@ -45,7 +45,26 @@ export default {
type: String,
require: false,
},
sendAAA: {
type: Boolean
}
},
watch: {
sendAAA(n,o){
if(n){
console.log(n, '-------');
// setTimeout(()=>{
// this.inSend = false;
// this.load = true;
// this.countDown();
// this.$toast(this.$t('common.sendSuccess'));
// this.$emit('changeSendAAA', false)
// }, 500)
// return;
this.send();
}
}
},
components:{
vButton
},
@ -74,32 +93,54 @@ export default {
return
}
if (this.load) return;
this.inSend = true;
// this.inSend = true;
//this.url
// serve.post(this.url, this.data)
// .then((res) => {
// if(res.code=='4001'){
// this.inSend = false
// this.$toast(res.message);
// //
// if(this.url=='/register/sendEmailCode'){
// //
// //
// this.$emit('reGetGraphChe')
// }
// }else{
// this.inSend = false;
// this.load = true;
// this.countDown();
// this.$toast(this.$t('common.sendSuccess'));
// }
// })
// .catch(() => {
// this.inSend = false;
// });
if(this.url==="/register/sendEmailCode" && !this.sendAAA){
this.$emit('changeSLider', true);
}else{
this.inSend = true;
serve.post(this.url, this.data)
.then((res) => {
// Member.sendEmailCode(this.data)
.then((res) => {
// ss
if(res.code=='4001'){
this.inSend = false
this.$toast(res.message);
//
if(this.url=='/register/sendEmailCode'){
//
//
this.$emit('reGetGraphChe')
}
}else{
this.inSend = false;
this.load = true;
this.countDown();
this.$toast(this.$t('common.sendSuccess'));
this.$emit('changeSendAAA', false)
}
})
.catch(() => {
this.inSend = false;
});
.catch(() => {
this.inSend = false;
});
}
},
countDown() {
clearInterval(this.Interval);

28
main.html

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="/static/favicon.ico">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<!-- Open Graph data -->
<!-- <meta property="og:title" content="Title Here" /> -->
<!-- <meta property="og:url" content="http://www.example.com/" /> -->
<!-- <meta property="og:image" content="http://example.com/image.jpg" /> -->
<!-- <meta property="og:description" content="Description Here" /> -->
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
</head>
<body>
<noscript>
<strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

5
manifest.json

@ -1,5 +1,5 @@
{
"name" : "CLSCoin",
"name" : "KOOScoin",
"appid" : "__UNI__96B2074",
"description" : "",
"versionName" : "1.0.0",
@ -113,6 +113,7 @@
"base" : "./"
},
"domain" : "https://app.clscoin.com",
"title" : "CLSCoin"
"title" : "KOOScoin",
"template" : "main.html"
}
}

2
pages.json

@ -222,7 +222,7 @@
"titleNView": false
},
"navigationBarTextStyle": "black",
"navigationBarTitleText": "CLSCoin",
"navigationBarTitleText": "KOOScoin",
"navigationBarBackgroundColor": "#007AFF",
"backgroundColor": "#FFFFFF"
},

75
pages/reg/index.vue

@ -71,7 +71,7 @@
</template>
</view>
<!--图形验证码-->
<view class="form-item border-b m-b-md p-b-xs">
<view class="form-item border-b m-b-md p-b-xs" v-if="0">
<view class="label m-b-xs">{{$t('homeNewText.ee6')}}</view>
<v-input class="color-light" v-model="form.gr_code" :placeholder="$t('homeNewText.ee6')">
<template #right>
@ -86,27 +86,12 @@
<v-input class="color-light" v-model="form.code" :placeholder="$t('reg.a7')">
<template #right>
<!-- 手机 -->
<v-code
v-show="form.type==1"
url="/register/sendSmsCode"
:data="{
phone:form.account,
country_code:country_code || 86,
type:1
}"
></v-code>
<v-code v-show="form.type==1" url="/register/sendSmsCode" :data="{phone:form.account,country_code:country_code || 86,type:1}"></v-code>
<!-- 邮箱 -->
<v-code
url="/register/sendEmailCode"
:data="{
email:form.account,
type:1,
gc_code: form.gr_code,
gc_key: gc_key
}"
v-show="form.type==2"
@reGetGraphChe="reGetGraphChe"
></v-code>
<!-- <v-code url="/register/sendEmailCode" :data="{email:form.account,type:1,gc_code: form.gr_code,gc_key: gc_key}"
v-show="form.type==2" @reGetGraphChe="reGetGraphChe"></v-code> -->
<v-code url="/register/sendEmailCode" :data="{email:form.account,type:1,gc_key: gc_key}"
v-show="form.type==2" @changeSLider="changeSLider" :sendAAA="sendAAA" @changeSendAAA="sendAAA = false"></v-code>
</template>
</v-input>
</view>
@ -146,11 +131,12 @@
<v-link class="color-sell" v-if="agreement.clause" :to="{path:'/pages/notice/detail',query:{id:agreement.clause.id}}">{{agreement.clause.title}}</v-link>
</view>
</view>
<tf-verify-img @succeed="chenggong" @close="showVerify = false" v-if="showVerify" :verifyImgs="imgs"></tf-verify-img>
<v-button type="blue" block class="w-max m-b-md rounded-md" @click="register">{{$t('reg.b9')}}</v-button>
</view>
</view>
<view class="m-x-lg p-x-lg">
<view class="p-y-md border-t fn-center">
<view class="p-y-md border-t fn-center d-flex" style="justify-content: center;">
{{$t('reg.b9')}}
<v-link class="color-sell" to="/pages/login/index">{{$t('reg.c1')}}</v-link>
</view>
@ -161,6 +147,8 @@
<script>
import Member from "@/api/member";
import app from "app.js";
import tfVerifyImg from '@/components/tf-verify-img/tf-verify-img.vue';
export default {
data() {
return {
@ -181,14 +169,38 @@ export default {
check: false,
agreement: {},
country_code:'',
showInvite_code: true,
hideImg: false
showInvite_code: true,
showVerify:false,
imgs:[{
src:'/static/verify/0.jpeg',
color:'#38a7b7'
},{
src:'/static/verify/1.jpeg',
color:'#485967'
},{
src:'/static/verify/Pic0.jpg',
color:'#2f4b35'
},{
src:'/static/verify/Pic1.jpg',
color:'#4c4727'
},{
src:'/static/verify/Pic2.jpg',
color:'#251731'
},{
src:'/static/verify/Pic3.jpg',
color:'#969897'
},{
src:'/static/verify/Pic4.jpg',
color:'#c59a70'
}],
sendAAA: false,
hideImg: false
};
},
computed: {
},
components:{},
components:{tfVerifyImg},
methods: {
register() {
if (!this.form.account) {
@ -306,6 +318,19 @@ export default {
this.agreement = res.data;
});
},
//
changeSLider(){
this.showVerify = true;
},
open(){
console.log("open");
this.showVerify = true;
},
chenggong(){
uni.showToast({title: this.$t('homeNewText.dd1')});
this.showVerify = false;
this.sendAAA = true;
}
},
mounted() {
this.gett_gc_code();

BIN
static/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
static/verify/0.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

BIN
static/verify/1.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
static/verify/Pic0.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
static/verify/Pic1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
static/verify/Pic2.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
static/verify/Pic3.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
static/verify/Pic4.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Loading…
Cancel
Save