完善钱包模块,修改密码,导出助记词

This commit is contained in:
唐明明
2022-01-13 17:23:22 +08:00
parent ae0179af3c
commit 8eef1d2a4b
9 changed files with 220 additions and 152 deletions

View File

@@ -10,7 +10,7 @@ import { request } from '../index'
// 用户 // 用户
const info = () =>{ const info = () =>{
return request({ return request({
url: 'user/info' url: 'user'
}) })
} }

View File

@@ -50,10 +50,39 @@ const securityCheck = (password) => {
}) })
} }
// 钱包私钥
const privatekey = (code) => {
return request({
url : "chain/safe/private_key",
data: {
code
}
})
}
// 私钥规则
const keyrules = () => {
return request({
url: 'cms/keyrules'
})
}
// 修改密码
const securityReset = (data) => {
return request({
url : "chain/safe/security",
method: 'PUT',
data:data
})
}
export { export {
security, security,
seed, seed,
sum, sum,
logs, logs,
securityCheck securityCheck,
privatekey,
keyrules,
securityReset
} }

View File

@@ -332,6 +332,22 @@
"navigationBarBackgroundColor":"#FFFFFF", "navigationBarBackgroundColor":"#FFFFFF",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
},{
"path": "pages/wallet/privatekey",
"name": "WalletPrivatekey",
"style": {
"navigationBarTitleText": "钱包私钥",
"navigationBarBackgroundColor":"#FFFFFF",
"enablePullDownRefresh": false
}
},{
"path": "pages/wallet/resetPassword",
"name": "ResetPassword",
"style": {
"navigationBarTitleText": "修改钱包密码",
"navigationBarBackgroundColor":"#FFFFFF",
"enablePullDownRefresh": false
}
}], }],
"tabBar": { "tabBar": {
"borderStyle": "white", "borderStyle": "white",

View File

@@ -34,7 +34,7 @@
direction="column" direction="column"
></u-notice-bar> ></u-notice-bar>
</view> </view>
<view class="btn">开通</view> <view class="btn" @click="openVip">开通</view>
</view> </view>
<!-- 健康数据 --> <!-- 健康数据 -->
<view class="health-flex"> <view class="health-flex">
@@ -84,7 +84,7 @@
</view> </view>
<!-- 功能块 --> <!-- 功能块 -->
<view class="btns-box"> <view class="btns-box">
<view class="btns-box-item" @click="$Router.push({name: 'WalletAdd'})"> <!-- <view class="btns-box-item" @click="$Router.push({name: 'WalletAdd'})">
<image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image> <image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image>
ZH钱包(首次) ZH钱包(首次)
<uni-icons class="forward" type="forward" color="#999"></uni-icons> <uni-icons class="forward" type="forward" color="#999"></uni-icons>
@@ -93,6 +93,11 @@
<image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image> <image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image>
ZH钱包钱包 ZH钱包钱包
<uni-icons class="forward" type="forward" color="#999"></uni-icons> <uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view> -->
<view class="btns-box-item" @click="onWallet">
<image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image>
ZH钱包
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view> </view>
<view class="btns-box-item"> <view class="btns-box-item">
<image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image> <image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image>
@@ -106,17 +111,16 @@
</view> </view>
</view> </view>
<view class="btns-box"> <view class="btns-box">
<view class="btns-box-item">
<image class="icon" src="@/static/user/icon_03.png" mode="widthFix"></image>
设置
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
<view class="btns-box-item" @click="logOut"> <view class="btns-box-item" @click="logOut">
<image class="icon" src="@/static/user/icon_03.png" mode="widthFix"></image> <image class="icon" src="@/static/user/icon_03.png" mode="widthFix"></image>
退出登录 退出登录
<uni-icons class="forward" type="forward" color="#999"></uni-icons> <uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view> </view>
</view> </view>
<view class="footer-text">
<view>ZH生态俱乐部</view>
<view>All Rights Reserved. ZH Eco Club</view>
</view>
</view> </view>
</template> </template>
@@ -141,12 +145,36 @@
getInfo(){ getInfo(){
if(this.$store.state.token === '') return if(this.$store.state.token === '') return
info().then(res => { info().then(res => {
console.log(res)
uni.setNavigationBarTitle({ uni.setNavigationBarTitle({
title: res.nickname title: res.nickname
}) })
this.userInfo = res this.userInfo = res
}).catch(err => {
uni.showToast({
title: err.message,
icon : 'none'
})
}) })
}, },
// 开通会员
openVip(){
if(this.$store.state.token === ''){
this.Login()
return
}
console.log("开通会员")
},
// 开通钱包
onWallet(){
if(this.$store.state.token === ''){
this.Login()
return
}
if(this.userInfo.is_wallet) this.$Router.push({name: 'WalletProperty'})
else this.$Router.push({name: 'WalletAdd'})
},
// 登录 // 登录
Login(){ Login(){
const Auth = new userAuth() const Auth = new userAuth()
@@ -165,6 +193,13 @@
background: $window-color; background: $window-color;
min-height: 100vh; min-height: 100vh;
} }
// 版权信息
.footer-text{
text-align: center;
font-size: $title-size-sm;
padding: $padding $padding $padding*2;
color: $text-gray-m;
}
// 用户信息 // 用户信息
.info-box{ .info-box{
position: relative; position: relative;

View File

@@ -14,7 +14,7 @@
</view> </view>
<!-- 按钮 --> <!-- 按钮 -->
<view class="buttons"> <view class="buttons">
<button type="default" form-type="submit" @click="createWallet">确认</button> <button type="default" form-type="submit" @click="createWallet">确认激活</button>
</view> </view>
</view> </view>
</template> </template>
@@ -50,10 +50,7 @@ export default {
code: Number(this.password) code: Number(this.password)
}).then(res => { }).then(res => {
this.$Router.replace({ this.$Router.replace({
name: 'WalletMnemonic', name: 'WalletProperty'
params: {
code: this.password
}
}) })
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({

View File

@@ -9,7 +9,7 @@
<!-- 按钮 --> <!-- 按钮 -->
<view class="buttons"> <view class="buttons">
<view class="text">助记词是用户账户的唯一标识不能分享给他人掌握该助记词即可控制该账户与钱包</view> <view class="text">助记词是用户账户的唯一标识不能分享给他人掌握该助记词即可控制该账户与钱包</view>
<button type="default" @click="goto">验证助记词</button> <!-- <button type="default" @click="goto">验证助记词</button> -->
</view> </view>
</view> </view>
</template> </template>
@@ -19,18 +19,14 @@
export default { export default {
data() { data() {
return { return {
mnemonic: [], // 助记词 mnemonic: []
sign : '' // 校验签名
} }
}, },
mounted() { mounted() {
// this.$Route.query.code
seed({ seed({
code: 123456 code: this.$Route.query.password
}).then(res => { }).then(res => {
console.log(res)
this.mnemonic = res.seed.split(' ') this.mnemonic = res.seed.split(' ')
this.sign = res.sign
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({
icon: 'none', icon: 'none',

View File

@@ -2,7 +2,7 @@
<view> <view>
<!-- 私钥 --> <!-- 私钥 -->
<view class="keys"> <view class="keys">
<view class="title">已接收OC Chain托管</view> <view class="title">的ZH托管钱包</view>
<view class="key">{{key || '-'}}</view> <view class="key">{{key || '-'}}</view>
<view class="copykey" @click="copykey">复制我的私钥</view> <view class="copykey" @click="copykey">复制我的私钥</view>
</view> </view>
@@ -14,9 +14,9 @@
</view> </view>
</view> </view>
<!-- 免责说明 --> <!-- 免责说明 -->
<view class="liability"> <!-- <view class="liability">
<navigator url="/pages/wallet/cmsWithDraw">免责条款</navigator> <navigator url="/pages/wallet/cmsWithDraw">免责条款</navigator>
</view> </view> -->
</view> </view>
</template> </template>
@@ -26,15 +26,26 @@
data() { data() {
return { return {
key: "", key: "",
rules: [] rules: [
{
title: "什么是托管钱包?",
description: "托管钱包顾名思义就是用户把私钥和数字资产委托给其他机构管理,也就是就是通过中心化的方式安全管理并保存资产,本质上是与区块链所追求的去中心化相背离的。"
},
{
title: "什么是钱包私钥?",
description: "作为管理和使用加密货币最关键的东西,私钥对所有数字货币用户而言具有所有权,拥有私钥才能支配相应的加密资产。"
}
]
}; };
}, },
mounted() { mounted() {
Promise.all([privatekey(this.$Route.query.password), keyrules()]).then(res => { privatekey(this.$Route.query.password).then(res => {
let privatekey = res[0], this.key = res.private_key
keyrules = res[1] }).catch(err => {
this.key = privatekey.private_key uni.showToast({
this.rules = keyrules title: err.message,
icon : 'none'
})
}) })
}, },
methods:{ methods:{
@@ -63,11 +74,11 @@
.key{ .key{
padding: $padding * 2 0; padding: $padding * 2 0;
text-align: center; text-align: center;
color: $mian-color; color: $main-color;
word-wrap: break-word; word-wrap: break-word;
} }
.copykey{ .copykey{
background-color: $mian-color; background-color: $main-color;
color: white; color: white;
height: 95rpx; height: 95rpx;
line-height: 95rpx; line-height: 95rpx;
@@ -88,7 +99,7 @@
font-size: $title-size + 2; font-size: $title-size + 2;
} }
.content{ .content{
color: $text-gray-lg; color: $text-gray;
font-size: $title-size-m; font-size: $title-size-m;
line-height: 40rpx; line-height: 40rpx;
} }

View File

@@ -50,7 +50,7 @@
logs : [], logs : [],
logsType : 0, logsType : 0,
password : '', password : '',
passwordShow : true, passwordShow : false,
passwordPages: '' passwordPages: ''
}; };
}, },
@@ -90,17 +90,18 @@
return return
} }
securityCheck(this.password).then(res => { securityCheck(this.password).then(res => {
switch (this.passwordPages){
case 'privatekey':
this.$Router.push({name:'WalletPrivatekey', params: {password: this.password}})
break;
case 'ResetPassword':
this.$Router.push({name:'ResetPassword', params: {password: this.password}})
break;
case 'WalletMnemonic':
this.$Router.push({name:'WalletMnemonic', params: {password: this.password}})
break;
}
this.resetPassword() this.resetPassword()
console.log("密码验证通过")
// switch (this.passwordPages){
// case 'privatekey':
// this.$Router.push({name:'Privatekey', params: {password: this.password}})
// break;
// case 'resetPassword':
// this.$Router.push({name:'ResetPassword', params: {password: this.password}})
// break;
// }
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({
title: err.message, title: err.message,
@@ -145,18 +146,11 @@
itemList: ['导出助记词', '修改密码'], itemList: ['导出助记词', '修改密码'],
success: (res) => { success: (res) => {
switch (res.tapIndex) { switch (res.tapIndex) {
case 0: case 0:
this.$Router.push({ this.showPrivatekey('WalletMnemonic')
name: 'Transfer'
})
break; break;
case 1: case 1:
this.$Router.push({ this.showPrivatekey('ResetPassword')
name: 'WalletCode'
})
break;
case 3:
this.showPrivatekey('resetPassword')
break; break;
} }
uni.hideLoading() uni.hideLoading()
@@ -270,7 +264,7 @@
color: $main-color; color: $main-color;
margin: 0 $margin; margin: 0 $margin;
border-radius: $radius-m; border-radius: $radius-m;
font-size: $title-size; font-size: $title-size-lg;
} }
} }
} }

View File

@@ -1,30 +1,26 @@
<template> <template>
<view> <view>
<!-- 设置钱包密码 --> <!-- 设置钱包密码 -->
<view class="password"> <view class="password">
<view class="prompt">请设置6位数字密码建议不要使用连续的数字</view> <view class="prompt">请设置6位数字密码建议不要使用连续的数字</view>
<view class="group"> <view class="group">
<view class="inputs"> <view class="inputs">
<label>密码</label> <input type="digit" password v-model="password" maxlength="6" placeholder="请设置密码" />
<input type="digit" v-model="password" maxlength="6" password placeholder="请设置新密码" /> </view>
</view> <view class="inputs">
<view class="inputs"> <input type="digit" password v-model="verify" maxlength="6" placeholder="请确认密码" />
<label>确认密码</label> </view>
<input type="digit" v-model="verify" maxlength="6" password placeholder="请确认新密码" /> </view>
</view> </view>
</view> <!-- 按钮 -->
</view> <view class="buttons">
<!-- 按钮 --> <button type="default" form-type="submit" @click="createWallet">确认修改</button>
<view class="buttons"> </view>
<button type="default" form-type="submit" @click="createWallet">确认</button>
</view>
</view> </view>
</template> </template>
<script> <script>
import { import { securityReset } from '@/apis/interfaces/wallet'
securityReset
} from '@/apis/interfaces/wallet'
export default { export default {
data() { data() {
return { return {
@@ -37,7 +33,7 @@
this.oldPassword = this.$Route.query.password this.oldPassword = this.$Route.query.password
}, },
methods: { methods: {
// 激活钱包 // 修改密码
createWallet() { createWallet() {
if (this.password === '' || this.verify === '') { if (this.password === '' || this.verify === '') {
uni.showToast({ uni.showToast({
@@ -52,10 +48,10 @@
title: '两次输入密码不一致' title: '两次输入密码不一致'
}) })
return return
} }
securityReset({ securityReset({
new_code: this.password, new_code: this.password,
old_code: this.oldPassword code: this.oldPassword
}).then(res => { }).then(res => {
uni.showModal({ uni.showModal({
title: '提示', title: '提示',
@@ -76,75 +72,69 @@
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
// 副标题 // 副标题
.sub-title { .sub-title {
color: $text-gray; color: $text-gray;
text-align: center; text-align: center;
margin: $margin * 2 $margin; margin: $margin * 2 $margin;
font-size: $title-size-m; font-size: $title-size-m;
} }
// 设置密码 // 设置密码
.password { .password {
padding: 0 $padding * 2; padding: 0 $padding * 2;
.prompt {
.prompt { margin-top: $margin * 2;
margin-top: $margin * 2; font-size: $title-size-m;
font-size: $title-size-m; color: $main-color;
color: $mian-color; text-align: center;
} }
.group { .group {
margin-top: $margin; padding-top: $padding;
border-radius: $radius-m; .inputs {
box-shadow: 0 0 4rpx 4rpx rgba($color: $text-color, $alpha: .02); padding: 10rpx $padding + 10;
background-color: white; margin-top: $margin;
border-radius: $radius-m;
.inputs { background-color: $window-color;
padding: $padding $padding + 10; &:last-child {
border-bottom: solid 1rpx $border-color; border-bottom: none;
}
&:last-child { input {
border-bottom: none; height: 70rpx;
} line-height: 70rpx;
font-size: $title-size-lg;
label { text-align: center;
color: $text-gray; }
font-size: $title-size-m; }
} }
}
input {
height: 70rpx; // 按钮
line-height: 70rpx; .buttons {
font-size: $title-size; padding: $padding * 2;
} .text {
} text-align: center;
} line-height: 90rpx;
} height: 90rpx;
margin-bottom: $margin * 2;
// 按钮 font-size: $title-size-lg;
.buttons { color: $main-color;
padding: $padding * 2; font-weight: bold;
}
.text {
text-align: center; button {
line-height: 90rpx; height: 90rpx;
height: 90rpx; line-height: 90rpx;
margin-bottom: $margin * 2; background-color: $main-color;
font-size: $title-size-lg; border-radius: $radius-m;
color: $mian-color; color: white;
font-weight: bold; font-weight: bold;
} font-size: $title-size;
&::after{
button { display: none;
height: 90rpx; }
line-height: 90rpx; }
background-color: $mian-color; }
border-radius: $radius-lg;
color: white;
font-weight: bold;
font-size: $title-size;
}
}
</style> </style>