Onlife/pages/interstellareye/Registergame.vue

543 lines
12 KiB
Vue
Raw Normal View History

2025-04-19 15:38:48 +08:00
<template>
<view class="container">
<view class="tab-container">
<view class="back">
<u-icon name="arrow-left" color="#fff" size="24" @click="back"></u-icon>
</view>
<view class='tab register'>輪迴道</view>
</view>
<!-- 轮回到 -->
<view class="content">
<view class="gametop">
<view class="gameimg">
<image :src="publicURL + saosaraDaoObj.img" mode="heightFix"></image>
</view>
<text class="ganmetitle">
{{ saosaraDaoObj.desc_cn }}
</text>
</view>
<view class="recommender" v-if="chk">
已註冊帳號<text style="color: #505bd7;">{{gameeamil}}</text>
</view>
<view class="alreadyregistered" v-if="chk">
<view class="already">
此賬號已經註冊請前往<text style="color: #505bd7;" @click="copy">https://www.samsaradao.com/</text>登錄
</view>
</view>
<view class="notregistered" v-else>
<view class="input">
<input v-model="username" type="text" color="black" placeholder="用戶名" class="input_aa"
placeholder-style="color:#fff" />
</view>
<view class="input">
<input v-model="email" data="passworedtype" placeholder="郵箱" class="input_aa"
placeholder-style="color:#fff" />
</view>
<view class="input">
<input v-model="password" :password="showPassword2" placeholder="註冊密碼" class="input_aa"
placeholder-style="color:#fff" />
<img :src="!showPassword2 ? showpwdImg : hidepwdImg" @tap="changePassword(2)"
style="width: 50rpx;height: 50rpx;"></img>
</view>
<!-- 验证码 -->
<view class="input">
<input v-model="code" data="passworedtype" placeholder="郵箱驗證碼" class="input_aa"
placeholder-style="color:#fff" />
<view class="code" @click="getVerificationCode()">
{{buttonText}}
</view>
</view>
<!-- 谷歌验证码 -->
<view class="input">
<input v-model="googleauthcode" data="passworedtype" placeholder="穀歌驗證碼" class="input_aa"
placeholder-style="color:#fff" />
<view class="code" @click="getgoogleCode()">
{{buttonText1}}
</view>
</view>
<view class="googlecode" v-if="googleclose">
<view class="icon" @click="closecode()">
<u-icon name="close"></u-icon>
</view>
<view class="googletitle">
掃一掃獲取穀歌驗證碼
</view>
<view class="googleimg">
<image :src="googleimg" mode=""></image>
</view>
<view class="googlesecret" @click="copyadd()">
{{secret}}
</view>
</view>
<button class="btn primary" style="background-color: #505bd7;" @click="generateMnemonic">註冊</button>
</view>
<!-- <button class="btn primary" @click="yregistered">已註冊</button> -->
</view>
</view>
</template>
<script>
import axios from "axios";
import {
_userInfos
} from "@/request/api.js"
export default {
data() {
return {
publicURL:"https://onlif.klinygm.com",
saosaraDaoObj: {},
showPassword2: true,
showpwdImg: "static/icon/eye_on.png",
hidepwdImg: "static/icon/eye_off.png",
username: "",
email: "",
password: "",
code: "",
isCounting: false,
count: 60,
gugeisCounting: false,
gugecount: 60,
buttonText: "獲取驗證碼",
buttonText1: "獲取驗證碼",
googleauthcode: '',
googleimg: '', //谷歌二維碼
googleclose: false, //谷歌验证码状态
userInfos: '', //用户信息
address: '',
gameeamil: '', // 已关联账号
chk: false, // 关联状态
secret: '' //谷歌私鑰
}
},
onLoad(e) {
if (e.item) {
this.saosaraDaoObj = JSON.parse(e.item);
}
},
onShow() {
this.getUserInfos()
},
methods: {
// 查询元算力用户是否在系统注册过了
Searchregistration() {
uni.request({
url: `https://www.samsaradao.com/api/common/schyzsreg?address=${this.address}`, //仅为示例,并非真实接口地址。
method: 'GET',
success: (res) => {
// console.log('reeeeeee', res.data);
this.gameeamil = res.data.data.gameeamil
this.chk = res.data.data.chk
}
});
},
//用户信息
async getUserInfos() {
await _userInfos().then(res => {
this.userInfos = res.data.userinfo;
this.address = this.userInfos.wallet.address
// console.log('res', this.address)
}).catch(err => {
console.log('eeer', err)
})
// 查询元算力用户是否在系统注册过了
this.Searchregistration()
},
changePassword(n) {
switch (n) {
case 2:
this.showPassword2 = !this.showPassword2;
break;
}
},
async generateMnemonic() {
if (!this.username) {
uni.showToast({
title: '請輸入用戶名',
icon: 'none'
});
return;
}
if (!this.email) {
uni.showToast({
title: '請輸入郵箱',
icon: 'none'
});
return;
}
if (!this.password) {
uni.showToast({
title: '請輸入密碼',
icon: 'none'
});
return;
}
if (!this.code || !this.googleauthcode) {
uni.showToast({
title: '請輸入驗證碼',
icon: 'none'
});
return;
}
uni.request({
url: 'https://www.samsaradao.com/api/user/register', //仅为示例,并非真实接口地址。
method: 'POST', // 请求方法为POST
data: {
username: this.username,
email: this.email,
password: this.password,
code: this.code,
googleauthcode: this.googleauthcode
},
success: (res) => {
// console.log(res, 777777)
let token = res.data.data.userinfo.token
// 關聯錢包地址
uni.request({
url: 'https://www.samsaradao.com/api/user/refyzswallet', //仅为示例,并非真实接口地址。
method: 'POST',
data: {
wallet: this.address
},
header: {
token: token //自定义请求头信息
},
success: (res) => {
console.log('关联钱包地址res', res);
uni.showToast({
title: '註冊成功!!'
})
this.Searchregistration()
uni.switchTab({
url: "/pages/interstellareye/interstellareye", // 注意路径
});
}
});
},
fail(rej) {
uni.showToast({
title: rej,
icon:'none'
})
}
});
},
// 验证码
async getVerificationCode() {
console.log('验证码');
if (this.email == '') {
uni.showToast({
title: '請輸入郵箱',
icon: 'none'
});
return;
}
if (this.isCounting) return;
// 调用后端接口获取邮箱验证码
uni.request({
url: 'https://www.samsaradao.com/api/ems/send', //仅为示例,并非真实接口地址。
method: 'POST',
data: {
email: this.email
},
success: (res) => {
// 如果接口调用成功,开始倒计时
if (res.data.code == 1) {
console.log('驗證碼yanyanyan', res)
uni.showToast({
title: '發送成功'
})
console.log('wolai', res);
this.isCounting = true;
this.buttonText = `${this.count}秒後重獲`;
const timer = setInterval(() => {
this.count--;
this.buttonText = `${this.count}秒後重獲`;
if (this.count <= 0) {
clearInterval(timer);
this.isCounting = false;
this.count = 60;
this.buttonText = '獲取驗證碼';
}
}, 1000);
} else {
uni.showToast({
title: '郵箱' + res.data.msg,
icon: 'none'
})
}
}
});
},
// 谷歌
async getgoogleCode() {
console.log('谷歌')
if (this.email == '') {
uni.showToast({
title: '請输入郵箱',
icon: 'none'
});
return;
}
if (this.gugeisCounting) return;
// 调用后端接口获取谷歌验证码
uni.request({
url: 'https://www.samsaradao.com/api/user/getgoogleauthurl2', //仅为示例,并非真实接口地址。
method: 'POST',
data: {
email: this.email
},
success: (res) => {
uni.showToast({
title: '獲取成功'
})
console.log('response', res)
this.gugeisCounting = true;
this.buttonText1 = `${this.gugecount}秒後重獲`;
const timer = setInterval(() => {
this.gugecount--;
this.buttonText1 = `${this.gugecount}秒後重獲`;
if (this.gugecount <= 0) {
clearInterval(timer);
this.gugeisCounting = false;
this.gugecount = 60;
this.buttonText1 = '獲取驗證碼';
}
}, 1000);
this.googleimg = res.data.data.url
this.secret = res.data.data.secret
this.googleclose = true
}
})
},
// 已經註冊
yregistered() {
uni.showToast({
title: '賬號已被註冊',
icon: 'none'
})
},
closecode() {
this.googleclose = false
},
back() {
uni.navigateBack()
},
// 複製網址
copy() {
uni.setClipboardData({
data: 'https://www.samsaradao.com/',
success: () => {
uni.showToast({
title: '複製成功',
icon: 'success'
})
}
})
},
//複製地址
copyadd() {
uni.setClipboardData({
data: this.secret,
success: () => {
uni.showToast({
title: '複製成功',
icon: 'success'
})
}
})
}
}
}
</script>
<style lang="scss">
.alreadyregistered {
width: 100%;
color: #fff;
justify-content: center;
align-items: center;
}
.googlecode {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 500rpx;
height: 500rpx;
background-color: #fff;
position: fixed;
left: 18%;
top: 40%;
.icon {
width: 100%;
display: flex;
justify-content: end;
}
.googleimg {
width: 300rpx;
height: 300rpx;
padding: 20rpx;
}
}
.container {
padding: 20px;
background: linear-gradient(to bottom, #000033, #51599b);
min-height: 100vh;
}
.tab-container {
display: flex;
align-items: center;
background-color: rgba(255, 255, 255, 0.1);
border-radius: 8px;
overflow: hidden;
margin-bottom: 20px;
}
.tab {
flex: 1;
text-align: center;
padding: 15px 0;
font-size: 16px;
color: #ffffff;
}
.tab.active {
background-color: rgba(0, 122, 255, 0.6);
color: white;
}
.content {
// background-color: rgba(255, 255, 255, 0.1);
background: linear-gradient(to bottom, #393C84, #9193C6);
border-radius: 8px;
padding: 20px;
.gametop {
color: #fff;
margin-bottom: 30rpx;
.gameimg {
width: 100%;
height: 250rpx;
margin-bottom: 20rpx;
display: flex;
justify-content: center;
align-items: center;
image{
height: 90%;
}
}
.ganmetitle {
// font-weight: 600;
}
}
.recommender {
color: #fff;
margin-bottom: 20rpx;
}
}
.btn {
width: 100%;
height: 50px;
line-height: 50px;
text-align: center;
border-radius: 25px;
font-size: 18px;
margin-top: 20px;
}
.btn.primary {
background-color: rgba(0, 122, 255, 0.8);
color: white;
}
.mnemonic-container {
margin-top: 20px;
background-color: rgba(240, 240, 240, 0.1);
padding: 15px;
border-radius: 8px;
}
.mnemonic {
font-size: 16px;
line-height: 1.5;
word-break: break-all;
color: #ffffff;
}
.copy-hint {
font-size: 12px;
color: #aaaaaa;
margin-left: 5px;
}
.warning {
color: #ff9900;
font-size: 14px;
margin-top: 10px;
display: block;
}
.input {
width: 95%;
height: 60px;
// border: 1px solid rgba(221, 221, 221, 0.3);
border-radius: 8px;
padding: 0 10px;
/* box-sizing: border-box; */
font-size: 16px;
margin-bottom: 10px;
// background-color: rgba(255, 255, 255, 0.1);
background-color: #9B9DCA;
color: #ffffff;
display: flex;
align-items: center;
position: relative;
.code {
width: 200rpx;
height: 100%;
font-size: 26rpx;
background-color: #4F5AD8;
position: absolute;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
border-radius: 0 16rpx 16rpx 0;
}
}
.input_aa {
width: 90%;
font-size: 16px;
height: 60%;
color: #fff;
}
.input.textarea {
height: 100px;
}
.input::placeholder {
color: rgba(0, 0, 0, 0.5);
}
image {
width: 100%;
height: 100%;
}
</style>