钱包,验证密码

This commit is contained in:
唐明明
2022-01-12 18:02:07 +08:00
parent 9507e3ab17
commit 3138894268
8 changed files with 219 additions and 93 deletions

View File

@@ -7,6 +7,7 @@
import { request } from '../index'
// 设置密码
const security = data => {
return request({
url: 'chain/safe/security',
@@ -15,6 +16,7 @@ const security = data => {
})
}
// 获取助记词
const seed = data => {
return request({
url: 'chain/safe/seed',
@@ -22,7 +24,36 @@ const seed = data => {
})
}
// 余额
const sum = () => {
return request({
url: 'chain/account/balance'
})
}
// 账户记录
const logs = data => {
return request({
url: 'chain/account/logs',
data
})
}
// 验证密码
const securityCheck = (password) => {
return request({
url : "chain/safe/security/check",
method: 'POST',
data:{
code : password,
}
})
}
export {
security,
seed
seed,
sum,
logs,
securityCheck
}

View File

@@ -0,0 +1,91 @@
<template>
<view>
<block v-if="list.length > 0">
<view class="record--item" v-for="(item, index) in list" :key="index">
<view class="title ellipsis">{{item.hash || '-'}}</view>
<view class="time ellipsis">{{item.block_time || '-'}}</view>
<view class="webkit-box variation">
<view class="ellipsis" :class="item.is_in ? 'add': 'remove'">{{item.is_in ? '+': '-'}}{{item.amount}}</view>
<view class="symbol">{{item.assets.symbol}}</view>
</view>
</view>
</block>
<block v-else>
<view class="record--null webkit-box">
<image src="@/static/icon/logs-null.png" mode="widthFix" />
<view>没有相关数据~</view>
</view>
</block>
</view>
</template>
<script>
export default {
name:"property",
props:{
list: {
type: Array,
default: () => {
return []
}
}
},
data() {
return {
};
}
}
</script>
<style lang="scss" scoped>
.record--item{
padding: $padding 320rpx $padding 0;
border-bottom: solid 1rpx $border-color;
position: relative;
min-height: 50rpx;
.variation{
position: absolute;
right: 0;
top: $margin;
bottom: $margin;
width: 300rpx;
text-align: right;
font-weight: bold;
&>label{
font-size: 80%;
}
.symbol{
color: $text-gray;
font-weight: normal;
font-size: $title-size-m;
}
.add{
color: $text-price;
}
.remove{
color: $main-color;
}
}
.title{
line-height: 50rpx;
}
.time{
font-size: $title-size-m;
color: $text-gray;
}
}
// 数据空
.record--null{
padding-top: $padding * 3;
text-align: center;
color: $text-gray;
font-size: $title-size;
height: 50vh;
box-sizing: border-box;
line-height: 60rpx;
image{
width: 168rpx;
}
}
</style>

View File

@@ -262,6 +262,30 @@
"navigationBarBackgroundColor":"#FFFFFF",
"enablePullDownRefresh": false
}
},{
"path": "pages/wallet/property",
"name": "WalletProperty",
"style": {
"navigationBarTitleText": "ZH钱包",
"navigationBarTextStyle":"white",
"app-plus": {
"titleNView": {
"backgroundImage": "linear-gradient(to right, #34ce98, #22aa98)",
"type": "transparent",
"buttons": [{
"float": "right",
"text": "\ue607",
"fontSrc": "/static/iconfont.ttf",
"color": "#FFF",
"fontSize": "20px",
"background": "rgba(0,0,0,0)"
}],
"backButton":{
"background": "rgba(0,0,0,0)"
}
}
}
}
}],
"tabBar": {
"borderStyle": "white",

View File

@@ -86,7 +86,12 @@
<view class="btns-box">
<view class="btns-box-item" @click="$Router.push({name: 'WalletAdd'})">
<image class="icon" src="@/static/user/icon_00.png" mode="widthFix"></image>
ZH钱包
ZH钱包(首次)
<uni-icons class="forward" type="forward" color="#999"></uni-icons>
</view>
<view class="btns-box-item" @click="$Router.push({name: 'WalletProperty'})">
<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 class="btns-box-item">

View File

@@ -2,7 +2,7 @@
<view>
<view class="propery">
<view class="propery-content">
<view class="currency">原石 ( {{ price || '0' }} CNY)</view>
<view class="currency">钱包余额</view>
<view class="balance">{{ balance.balance || '0' }}</view>
<view class="frozen">{{ balance.frozen || '0' }} 冻结中</view>
<view class="balance-flex">
@@ -22,34 +22,24 @@
<!-- ios安全距离 -->
<view class="ios-bottom"></view>
</view>
<!-- 支付密码 -->
<uni-popup ref="showPassword">
<!-- 钱包密码 -->
<u-popup :show="passwordShow" @close="resetPassword" closeable borderRadius="10">
<view class="validationPassword">
<view class="from">
<view class="title">验证密码</view>
<input class="input" v-model="password" password placeholder="请验证安全密码"/>
<view class="title">钱包密码</view>
<input type="number" v-model="password" maxlength="6" placeholder="请输入钱包密码" />
</view>
<view class="buttons">
<view class="button cancel" @click="payPassword('cancel', passwordPages)">取消</view>
<view class="button confirm" @click="payPassword('confirm', passwordPages)">验证</view>
</view>
</view>
</uni-popup>
<!-- 原密码弹窗 -->
<!-- <number-jpan :length="6" @closeChange="closeChange($event)" ref="numberPad"></number-jpan> -->
</u-popup>
</view>
</template>
<script>
import record from '@/components/property/record'
import {
sum,
price,
logs,
code,
securityCheck // 输入旧密码是否正确
} from '@/apis/interfaces/wallet'
import numberJpan from "@/components/numberJpan/numberJpan.vue";
import { sum, logs, securityCheck } from '@/apis/interfaces/wallet'
export default {
components: {
record
@@ -57,22 +47,20 @@
data() {
return {
balance : {},
price: '0.00',
logs : [],
logsType : 0,
password : '',
passwordShow : true,
passwordPages: ''
};
},
onShow() {
Promise.all([
sum(),
price(),
logs()
]).then(res => {
this.balance = res[0]
this.price = res[1]
this.logs = res[2]
this.logs = res[1]
}).catch(err => {
uni.showToast({
icon: 'none',
@@ -83,8 +71,13 @@
methods: {
// 弹出私钥
showPrivatekey(pages){
this.passwordShow = true
this.passwordPages = pages
this.$refs.showPassword.open('center')
},
// 重置密码
resetPassword(){
this.passwordShow = false
this.password = ''
},
// 验证私钥
payPassword(type){
@@ -97,16 +90,17 @@
return
}
securityCheck(this.password).then(res => {
this.$refs.showPassword.close()
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;
}
this.password = ''
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 => {
uni.showToast({
title: err.message,
@@ -132,7 +126,7 @@
showAddress() {
uni.showModal({
title: '我的区块链地址',
content: '\n地址可以理解为银行卡卡号与他人转账时是区块链上的两个地址间的交易行为\n\n' + this.balance.address,
content: this.balance.address,
cancelText: '复制',
cancelColor: '#009B69',
success: (res) => {
@@ -148,7 +142,7 @@
onNavigationBarButtonTap(e) {
if (e.index === 0) {
uni.showActionSheet({
itemList: ['转账', '收款', '提币', '修改密码'],
itemList: ['导出助记词', '修改密码'],
success: (res) => {
switch (res.tapIndex) {
case 0:
@@ -161,11 +155,6 @@
name: 'WalletCode'
})
break;
case 2:
this.$Router.push({
name: 'Extract'
})
break;
case 3:
this.showPrivatekey('resetPassword')
break;
@@ -181,69 +170,51 @@
<style lang="scss" scoped>
// 验证密码弹出层
.validationPassword{
background-color: white;
border-radius: $radius-m;
width: 70vw;
.from{
padding: $padding*2;
text-align: center;
.title{
text-align: center;
font-size: $title-size;
padding-bottom: $padding*2;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-weight: bold;
color: $mian-color;
}
.input{
text-align: center;
height: 90rpx;
font-size: $title-size;
border-radius: $radius-m;
background: $border-color-lg;
padding: 0 ($padding*2);
padding-bottom: $padding;
}
input{
background: $window-color;
height: 90rpx;
left: 90rpx;
font-size: $title-size-lg;
border-radius: 45rpx;
}
}
.buttons{
display: flex;
border-top: solid 1rpx $border-color;
.button{
width: 50%;
font-size: $title-size;
line-height: 90rpx;
height: 90rpx;
text-align: center;
box-sizing: border-box;
padding: 0 $padding*2;
.button{
height: 90rpx;
line-height: 90rpx;
margin-bottom: $margin;
&.cancel{
border-right: solid 1rpx $border-color;
color: $text-gray;
}
&.confirm{
color: $mian-color;
color: white;
background: $main-color;
border-radius: 45rpx;
}
}
}
// .button{
// background-color: $mian-color;
// color: white;
// border-radius: $radius-m;
// border: none;
// margin-top: $margin*2;
// font-size: $title-size;
// height: 90rpx;
// line-height: 90rpx;
// }
// .close{
// @extend .button;
// text-align: center;
// color: $text-gray;
// margin-top: $margin;
// background-color: transparent;
// }
//
//
}
// 账户
.propery {
position: relative;
padding-top: var(--status-bar-height);
background-image: linear-gradient(to top right, $mian-color, $mian-color-deep);
background-image: linear-gradient(to right, $main-color, #22aa98);
&::before {
position: absolute;
@@ -252,7 +223,7 @@
width: 100%;
height: 100%;
content: " ";
background-image: url(@/static/background/wallet-back.png);
// background-image: url(@/static/background/wallet-back.png);
background-size: 100%;
background-repeat: no-repeat;
}
@@ -296,7 +267,7 @@
width: 200rpx;
height: 75rpx;
line-height: 75rpx;
color: $mian-color;
color: $main-color;
margin: 0 $margin;
border-radius: $radius-m;
font-size: $title-size;
@@ -328,7 +299,7 @@
padding: 0 $padding;
&.show {
color: $mian-color;
color: $main-color;
&::before {
position: absolute;
@@ -337,7 +308,7 @@
right: $padding;
height: 4rpx;
content: " ";
background-color: $mian-color;
background-color: $main-color;
}
}
}

BIN
static/icon/logs-null.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -11,6 +11,10 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-gengduo:before {
content: "\e607";
}
.icon-saoma:before {
content: "\e605";
}

Binary file not shown.