Browse Source

代码

master
Dread 4 years ago
parent
commit
71563da8bf
  1. 22
      manifest.json
  2. 165
      pages.json
  3. 20
      pages/menu/backUp/backUp5/index.vue
  4. 6
      pages/menu/backUp/transPawKey/index.vue
  5. 154
      pages/menu/backUp/transPawMan/index.css
  6. 96
      pages/menu/backUp/transPawMan/index.vue
  7. 2
      pages/menu/collection/addCollection/index.vue
  8. 13
      pages/menu/collection/collectionDetailtrue/index.vue
  9. 3
      pages/menu/collection/index.vue
  10. 137
      pages/menu/index/index.vue
  11. 2
      pages/menu/profile/index.vue
  12. 602
      pages/menu/sendToken/addAddress/index.vue
  13. 2
      pages/menu/sendToken/addAddress2/index.vue
  14. 13
      pages/menu/sendToken/address/index.css
  15. 65
      pages/menu/sendToken/address/index.vue
  16. 39
      pages/menu/sendToken/enPassword/index.css
  17. 156
      pages/menu/sendToken/enPassword/index.vue
  18. 19
      pages/menu/sendToken/index.vue
  19. 117
      pages/menu/sendToken/index2.vue
  20. 13
      pages/menu/sendToken/transfer/index.css
  21. 177
      pages/menu/sendToken/transfer/index.vue
  22. 15
      pages/menu/token/btc/index.vue
  23. 30
      pages/menu/token/btc/index2.vue
  24. 3
      pages/menu/transction/detail/index.vue
  25. 12
      pages/menu/wallet/cwallet/index.vue
  26. 20
      pages/menu/wallet/index.vue
  27. 1
      pages/menu/wallet/mwallet/index.css
  28. 28
      pages/menu/wallet/mwallet/index.vue
  29. 4
      pages/menu/wallet/mwallet/manage/index.vue
  30. BIN
      unpackage/cache/apk/__UNI__1ECBEE1_cm.apk
  31. 2
      unpackage/cache/apk/apkurl
  32. 2
      unpackage/cache/apk/cmManifestCache.json
  33. 2
      unpackage/cache/wgt/__UNI__1ECBEE1/app-config-service.js
  34. 14
      unpackage/cache/wgt/__UNI__1ECBEE1/app-service.js
  35. 2
      unpackage/cache/wgt/__UNI__1ECBEE1/app-view.js
  36. 2
      unpackage/dist/build/app-plus/app-config-service.js
  37. 14
      unpackage/dist/build/app-plus/app-service.js
  38. 2
      unpackage/dist/build/app-plus/app-view.js
  39. 4
      unpackage/dist/dev/app-plus/app-config-service.js
  40. 5950
      unpackage/dist/dev/app-plus/app-service.js
  41. 11860
      unpackage/dist/dev/app-plus/app-view.js
  42. 2
      unpackage/dist/dev/app-plus/manifest.json
  43. BIN
      unpackage/release/apk/__UNI__1ECBEE1__20211114010923.apk
  44. BIN
      unpackage/release/apk/__UNI__1ECBEE1__20211114013148.apk
  45. BIN
      unpackage/release/apk/__UNI__1ECBEE1__20211114030019.apk
  46. BIN
      unpackage/release/apk/__UNI__1ECBEE1__20211114031215.apk
  47. BIN
      unpackage/release/apk/bitcooo.apk
  48. BIN
      unpackage/release/apk/bitcooo.zip
  49. 199
      utils/WalletUtil.js

22
manifest.json

@ -21,26 +21,30 @@
"delay" : 0
},
/* */
"modules" : {},
"modules" : {
"FaceID" : {},
"Fingerprint" : {}
},
/* */
"distribute" : {
/* android */
"android" : {
"permissions" : [
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
]
},

165
pages.json

@ -3,131 +3,117 @@
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
},
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path": "pages/register/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/index/index",
{
"path": "pages/register/index",
"style": {
"navigationStyle": "custom"
}
},
{
{
"path": "pages/menu/index/index",
"style": {
"navigationStyle": "custom"
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{
"path": "pages/menu/token/btc/index",
"style": {
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{
"path": "pages/menu/token/btc/index",
"style": {
"navigationStyle": "custom",
"enablePullDownRefresh": true
}
},
{
"path": "pages/menu/wallet/search/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/collection/collectionDetailtrue/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/wallet/search/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/collection/collectionDetailtrue/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/collection/addCollection/index",
"style": {
"navigationStyle": "custom"
}
},
{
{
"path": "pages/menu/collection/collectionDetail/index",
"style": {
"navigationStyle": "custom"
}
},
{
{
"path": "pages/menu/collection/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/token/btctrue/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/sendToken/transfer2/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/wallet/otherCoin/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/token/btctrue/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/sendToken/transfer2/index",
"style": {
"navigationStyle": "custom"
}
{
"path": "pages/menu/backUp/index",
"style": {
"navigationStyle": "custom"
}
},
},
{
"path": "pages/menu/wallet/otherCoin/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/wallet/cwallet/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/backUp/transPawKey/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/backUp/transPawKeyOut/index",
"path": "pages/menu/backUp/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/backUp/transPawMan/index",
"path": "pages/menu/wallet/cwallet/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/backUp/transPawKey/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/backUp/transPawKeyOut/index",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/backUp/backUpWord/index",
"style": {
@ -191,8 +177,8 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/wallet/mwallet/manage/index",
@ -260,6 +246,7 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/transction/detail2/index",
"style": {
@ -272,6 +259,12 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/sendToken/index2",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/menu/sendToken/index",
"style": {
@ -287,15 +280,15 @@
{
{
"path": "pages/menu/token/btc/index2",
"style": {
"navigationStyle": "custom",
"enablePullDownRefresh": true
"enablePullDownRefresh": true
}
},

20
pages/menu/backUp/backUp5/index.vue

@ -86,6 +86,7 @@
name: '',
typename:'',
info: {},
go:true,
};
},
methods: {
@ -118,21 +119,26 @@
console.log(this.typename)
this.walletInfo = uni.getStorageSync('walletInfo');
for(var i=0;i<this.walletInfo[this.typename].length;i++){
console.log(i)
console.log(this.walletInfo[this.typename][i].privateKey,111)
console.log( this.wordInfo,222)
if( this.wordInfo==this.walletInfo[this.typename][i].privateKey){
uni.showToast({
title: 'The wallet has been imported',
icon: 'none',
duration: 1500
})
return;
}else{
uni.setStorageSync('privateKey', this.wordInfo);
uni.navigateTo({
url:'/pages/menu/backUp/transPawKey/index'
})
this.go=false;
}
}
if(this.go){
uni.setStorageSync('privateKey', this.wordInfo);
uni.navigateTo({
url:'/pages/menu/backUp/transPawKey/index'
})
}
},

6
pages/menu/backUp/transPawKey/index.vue

@ -61,11 +61,7 @@
},
methods: {
//
setWalletInfo(e) {
this.word = uni.getStorageSync('word');
this.$walletUtil.initialWallet(this.word,this.password )
},
//
back(e) {

154
pages/menu/backUp/transPawMan/index.css

@ -1,154 +0,0 @@
.main{
margin-top: 64rpx;
}
.main .title{
line-height: 48rpx;
color: #7D87A6;
font-size: 32rpx;
text-align: center;
margin-top: 32rpx;
margin-bottom: 140rpx;
padding: 0 80rpx;
}
#payPwd{
margin-top: 160rpx;
}
#payPwd .pwd-wrap{
width: 100%;
height: 48px;
padding-bottom: 1px;
margin: 0 auto;
background: #fff;
display: flex;
display: -webkit-flex;
cursor: pointer;
justify-content: space-between;
padding: 0;
}
.pwd-wrap li{
list-style-type:none;
text-align: center;
width: 94rpx;
line-height: 44px;
height: 100%;
border:2rpx solid #ddd ;
border-radius: 10rpx;
}
.pwd-wrap li i{
height: 10px;
width: 10px;
border-radius:50% ;
background: #000;
display: inline-block;
}
.borc{
border-color: #5B53FF !important;
}
.btnconn{
width: 100%;
display: flex;
justify-content: space-between;
margin-top: 160rpx;
}
.btnconn .btn{
width: 310rpx;
line-height: 86rpx;
border-radius: 20rpx;
border: 2rpx solid #F6F8FE;
text-align: center;
display: flex;
align-items: center;
color:#A3AED0;
justify-content: center;
font-size: 34rpx;
}
.active{
color: #6F67FF!important;
background-color: #F6F8FD;
border: none !important;
}
.btnconn .btn .img1{
width: 48rpx;
height: 48rpx;
}
.big_title{
text-align: center;
font-size: 36rpx;
}
.bottom_con{
margin-top: 65rpx;
}
.bottom_con .top{
word-break: break-all;
padding: 52rpx 32rpx;
text-align: center;
line-height: 50rpx;
background-color: #FAFAFA;
border-radius: 20rpx 20rpx 0 0;
}
.bottom_con .bottom{
background-color: #F6F8FD;
display: flex;
justify-content: center;
align-items: center;
font-size: 32rpx;
height: 96rpx;
border-radius: 0 0 20rpx 20rpx;
}
.img1{
width: 48rpx;
height: 48rpx;
margin-right: 10rpx;
}
.code_con .img2{
display: block;
width: 486rpx;
height: 482rpx;
margin: 0 auto;
margin-top: 64rpx;
}
.code_con .text{
margin-top: 40rpx;
text-align: center;
font-size: 28rpx;
color: #7D87A6;
padding-bottom: 150rpx;
}
/* /deep/ .u-box[data-v-0e1e7f9a] {
border: 2rpx solid #E0E5F2 !important;
} */
/deep/ .u-dot span{
color: #000 !important;
}
/deep/ .u-placeholder-line{
background: #5B53FF;
}
/deep/ .u-dot span {
color: #5B53FF !important;
}
.infoText{
color:#F16063;
font-size: 30rpx;
text-align: center;
margin-top: 48rpx;
}

96
pages/menu/backUp/transPawMan/index.vue

@ -1,96 +0,0 @@
<template>
<view class="">
<navigation :showBack="true" :bgnum="false">
<text class="big_title">
Backup mnemonic
</text>
</navigation>
<view class="main">
<view class="title">
Please keep your mnemonics. Anyone who gets your mnemonics can control your account, including transferring all funds
</view>
<u-message-input @finish="finish" :inactive-color="info?'#F16063':'#E0E5F2'" active-color="#5B53FF" :width="94" :maxlength="6" mode="box" :focus="fes" :dot-fill="true" @change="back"></u-message-input>
<view class="infoText" v-if="info">
Incorrect password
</view>
</view>
</view>
</view>
</template>
<script>
import cont from "@/components/navigation/navigation.vue"
export default {
data() {
return {
password:'',
msg:'',
msgLength:0,
fes:false,
borNum:true,
borNum2:false,
info:false,
word:{},
walletInfo:{},
userObj:{},
}
},
watch:{
},
methods: {
//
back(e){
if(e.length<6){
this.info=false;
}
},
//
//
finish(e) {
this.password=e
var that=this;
if(e!=this.userObj.password){
this.info=true
}else{
uni.showToast({
title: 'The password is correct',
icon: 'success',
duration: 1500,
})
setTimeout(()=>{
console.log(this.userObj,444)
let item = JSON.stringify(this.userObj)
uni.navigateTo({
url:'../../backUp/backUp2/index?item='+item
})
},1500)
}
},
},
onLoad: function(option) {
const item = JSON.parse(option.item);
console.log(item,777)
this.userObj = item
}
};
</script>
<style scoped>
</style>
<style>
@import './index.css';
</style>

2
pages/menu/collection/addCollection/index.vue

@ -103,7 +103,7 @@
})
setTimeout(()=>{
uni.navigateTo({
url:'../addCollection/index'
url:'../collectionDetail/index'
})
},1500)
}

13
pages/menu/collection/collectionDetailtrue/index.vue

@ -29,7 +29,7 @@
Token ID
</view>
<view class="text1one">
{{item.tonkenId}}
{{item.id}}
</view>
</view>
<view class="btn" @click="test">
@ -51,13 +51,6 @@
wallet:{},
nftIndex:0,
walletInfo:{},
// nftContrct:{
// // [
// // {
// // }
// // ]
// },
}
},
@ -79,12 +72,8 @@
},
methods: {
test(){
this.nftIndex=uni.getStorageSync('nftIndex')
}

3
pages/menu/collection/index.vue

@ -147,10 +147,9 @@
goDetail(itemm,index){
uni.setStorageSync('proid',this.test.id)
uni.setStorageSync('nftIndex',this.testindex)
let item = JSON.stringify(this.test)
uni.setStorageSync('nftitem',this.test)
uni.navigateTo({
url:'./collectionDetail/index?type='+item
url:'./collectionDetail/index'
})
this.showbottom=false;
}

137
pages/menu/index/index.vue

@ -1,10 +1,13 @@
<template>
<view class="content">
<u-modal v-model="show" :show-title="false" :show-confirm-button="false" :show-cancel-button="true"
:content-style="{ 'justify-content': 'center','align-items': 'center',height:'300rpx',display:'flex'}"
@cancel="printCancel">
<u-icon name="fingerprint" color="red" size="150rpx"></u-icon>
</u-modal>
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<view class="title">{{eth}}</view>
</view>
<view class="title">{{trc}}</view>
<view style="color:red;">{{ result }}</view>
<button @tap="fingerprint()">开启指纹验证</button>
</view>
</template>
@ -12,41 +15,107 @@
export default {
data() {
return {
eth: '',
trc: 'Hello',
param : {
'address':"0x5b1F11800D6DdD262A5Feda2Cc6e3256A905c280",
'pageNum':1,
'pageSize':10,
},
result: '',
disabled:true,
show:false,
}
},
onLoad() {
uni.request({
url: 'http://scan.weirui0755.com/btc/api/address/btc/'+this.param.address+'/'+this.param.pageNum+'/'+this.param.pageSize, //
header: {
'content-type': 'application/x-www-form-urlencoded', //
},
success: (res) => {
console.log(res,78978979)
}
});
this.$EthUtil.getBalance('0x4f6742badb049791cd9a37ea913f2bac38d01279',function(b){
console.log(b,'8888')
});
this.$TronUtil.getTronBalance('TGPirBtr42YvWtwDNgVEgv3YYhiCkE8hJq').then((res) => {
console.log(res,'tron')
this.trc = res
}).catch(err => {
console.log(err)
})
},
methods: {
printCancel:function(){
plus.fingerprint.cancel();
this.result="停止指纹识别"
},
fingerprint: function() {
// // #ifdef APP-PLUS
// if (!plus.fingerprint.isSupport()) {
// uni.showToast({
// title: 'This device does not support fingerprint identification',
// icon: 'none',
// duration: 1500
// })
// // this.disabled = true;
// } else if (!plus.fingerprint.isKeyguardSecure()) {
// uni.showToast({
// title: 'This device does not support fingerprint identification',
// icon: 'none',
// duration: 1500
// })
// } else if (!plus.fingerprint.isEnrolledFingerprints()) {
// uni.showToast({
// title: 'There is no fingerprint entered in this device. Please turn it on in the setting',
// icon: 'none',
// duration: 1500
// })
// // this.disabled = true;
// } else {
// // this.result = '';
// // // this.disabled = false;
// // #ifdef MP-WEIXIN
// this.disabled = false;
// this.result = '使';
// // #endif
// // #ifndef APP-PLUS || MP-WEIXIN
// this.result = '';
// // #endif
// let that=this;
// // #ifdef APP-PLUS
// plus.fingerprint.authenticate(function() {
// plus.nativeUI.closeWaiting(); //Android
// that.show=false;
// that.result=''
// //plus.nativeUI.alert('');
// }, function(e) {
// switch (e.code) {
// case e.AUTHENTICATE_MISMATCH:
// plus.nativeUI.toast('');
// break;
// case e.AUTHENTICATE_OVERLIMIT:
// plus.nativeUI.closeWaiting(); //Android
// plus.nativeUI.alert('使');
// break;
// case e.CANCEL:
// plus.nativeUI.toast('');
// break;
// default:
// plus.nativeUI.closeWaiting(); //Android
// plus.nativeUI.alert('');
// break;
// }
// });
// // Android
// if ('Android' == plus.os.name) {
// this.show=true;
// /* plus.nativeUI.showWaiting('...').onclose = function() {
// plus.fingerprint.cancel();
// } */
// }
// // #endif
// // #ifdef MP-WEIXIN
// wx.startSoterAuthentication({
// requestAuthModes: ['fingerPrint'],
// challenge: '123456',
// authContent: '',
// success(res) {
// uni.showToast({
// title: '',
// mask: false,
// duration: 1500
// });
// }
// })
// // #endif
// }
// // #endif
this.$walletUtil.fingerprint()
},
}
}
</script>

2
pages/menu/profile/index.vue

@ -1,6 +1,6 @@
<template>
<view class="">
<navigation :showBack="true" :bgnum="true">
<navigation :showBack="false" :bgnum="true">
<text class="big_title">
Profile
</text>

602
pages/menu/sendToken/addAddress/index.vue

@ -5,88 +5,93 @@
Add address
</text>
</navigation>
<view class="main">
<view class="main_con">
<view class="item">
<view class="top flex">
<view class="text1">
Currency
</view>
</view>
<view class="inputcon">
<input type="text" value="" v-model="value" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please select the currency" class="input1" @click="showSelect()" :disabled="true"/>
<image src="../../../../static/tongyonh/chevron_right_24px.png" mode="aspectFit" class="img1"></image>
</view>
</view>
<view class="item">
<view class="top flex">
<view class="text1">
Address
</view>
</view>
<view class="inputcon">
<input type="text" value="" @input="showSave()" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter the recipient address" class="input1" v-model="bigAddress"/>
<image src="../../../../static/tongyonh/Frame330.png" mode="aspectFit" class="img2" @click="chooseImage"></image>
</view>
</view>
<view class="item">
<view class="top flex">
<view class="text1">
Name
<view class="main">
<view class="main_con">
<view class="item">
<view class="top flex">
<view class="text1">
Currency
</view>
</view>
<view class="inputcon">
<input type="text" value="" v-model="value"
placeholder-style="font-size: 30rpx; color: #D0D0D2;"
placeholder="Please select the currency" class="input1" @click="showSelect()"
:disabled="true" />
<image src="../../../../static/tongyonh/chevron_right_24px.png" mode="aspectFit" class="img1">
</image>
</view>
</view>
<view class="item">
<view class="top flex">
<view class="text1">
Address
</view>
</view>
<view class="inputcon">
<input type="text" value="" @input="showSave()"
placeholder-style="font-size: 30rpx; color: #D0D0D2;"
placeholder="Please enter the recipient address" class="input1" v-model="bigAddress" />
<image src="../../../../static/tongyonh/Frame330.png" mode="aspectFit" class="img2"
@click="chooseImage"></image>
</view>
</view>
<view class="item">
<view class="top flex">
<view class="text1">
Name
</view>
</view>
<view class="inputcon">
<input type="text" @input="showSave" value=""
placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter the name"
class="input1" v-model="addressName" />
</view>
</view>
<view class="btn" @click="handove()" :class="save?'sheng':''">
Save
</view>
</view>
</view>
<view class="inputcon">
<input type="text" @input="showSave" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter the name" class="input1" v-model="addressName"/>
</view>
</view>
<view class="btn" @click="handove()" :class="save?'sheng':''">
Save
</view>
</view>
<u-mask z-index="10" :show="show" @click="show = false"></u-mask>
<u-mask z-index="10" :show="show" @click="show = false"></u-mask>
</view>
<view class="big_con w100" v-if="show">
<view class="tiao" @click="show=false,value=''"></view>
<view class="title">
Please select currency
</view>
<view class="bottom_con zindex" v-if="show">
<u-radio-group v-model="value" >
<view class="item flex" v-for="(item, index) in list" :key="index" @click="handove2(item,index)">
<view class="text1 flex">
<image :src="item.url" mode="aspectFit" class="img"></image>
<view class="textcon">
<view class="text1">
{{item.lang}}
</view>
<view class="text2">
{{item.name}}
</view>
</view>
<view class="title">
Please select currency
</view>
<view class="bottom_con zindex" v-if="show">
<u-radio-group v-model="value">
<view class="item flex" v-for="(item, index) in list" :key="index" @click="handove2(item,index)">
<view class="text1 flex">
<image :src="item.url" mode="aspectFit" class="img"></image>
<view class="textcon">
<view class="text1">
{{item.lang}}
</view>
<view class="text2">
{{item.name}}
</view>
</view>
</view>
<u-radio :name="item.name" :disabled="item.disabled" active-color="#5B53FF">
</u-radio>
</view>
<u-radio
:name="item.name"
:disabled="item.disabled"
active-color="#5B53FF"
>
</u-radio>
</view>
</u-radio-group>
<view class="select_btn" @click="selectA">
Select
</u-radio-group>
<view class="select_btn" @click="selectA">
Select
</view>
</view>
</view>
</view>
</view>
</view>
@ -97,44 +102,44 @@
export default {
data() {
return {
info:{},
addressName:'',
bigAddress:'',
save:false,
show: false,
checked: false,
list: [
{
url:'../../../../static/tongyonh/bye.png',
lang:'Bitcoin',
disabled: false,
name:"BTC"
},
{
url:'../../../../static/tongyonh/Frame3299.png',
lang:'Ethereum',
disabled: false,
name:"ETH"
},
{
url:'../../../../static/tongyonh/tron1.png',
lang:'Tron',
disabled: false,
name:"TRX"
},
],
// u-radio-groupv-modelradioname
value: '',
info: {},
addressName: '',
bigAddress: '',
save: false,
show: false,
checked: false,
list: [{
url: '../../../../static/tongyonh/bye.png',
lang: 'Bitcoin',
disabled: false,
name: "BTC"
},
{
url: '../../../../static/tongyonh/Frame3299.png',
lang: 'Ethereum',
disabled: false,
name: "ETH"
},
{
url: '../../../../static/tongyonh/tron1.png',
lang: 'Tron',
disabled: false,
name: "TRX"
},
],
// u-radio-groupv-modelradioname
value: '',
transfer:'',
}
},
onLoad() {
},
methods: {
selectA(){
this.show=false
selectA() {
this.show = false
},
//
chooseImage() {
@ -147,223 +152,222 @@ show: false,
_this.imgShow = res.tempFilePaths[0]
}
});
// ass()
},
handove2(item,index){
this.value=item.name;
this.show=false;
},
showSave(){
if(this.bigAddress!=''&&this.name!=''&&this.value!=''){
this.save=true;
}else{
this.save=false;
}
},
handove(item){
if(this.value==''){
this.save=false
uni.showToast({
title: 'Please select a currency',
icon: 'none',
duration: 1500
})
return;
}
if(this.bigAddress==''||this.addressName==''){
this.save=false
uni.showToast({
title: 'Address or name cannot be empty',
icon: 'none',
duration: 1500
})
return;
}
handove2(item, index) {
this.value = item.name;
this.show = false;
if(this.value=='BTC'){
console.log(uni.getStorageSync('BTCAddressInfo'),777)
if(uni.getStorageSync('BTCAddressInfo').length>0){
let btc=new Object;
btc.address=this.bigAddress;
btc.name=this.addressName
btc.coinList=[{
name:"BTC",
name2:"BTC",
xname:'Bitcoin',
icon:require('@/static/tongyonh/bye.png')
}];
let BTCAddressInfo=[]
BTCAddressInfo=uni.getStorageSync('BTCAddressInfo')
BTCAddressInfo.push(btc)
uni.setStorageSync('BTCAddressInfo',BTCAddressInfo)
console.log(BTCAddressInfo,1111)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
uni.reLaunch({
url:'../address/index'
})
}else{
let btc=new Object;
btc.address=this.bigAddress;
btc.name=this.addressName
btc.coinList=[{
name:"BTC",
name2:"BTC",
xname:'Bitcoin',
icon:require('@/static/tongyonh/bye.png')
}];
console.log(btc,4444)
let BTCAddressInfo=[]
BTCAddressInfo.push(btc)
console.log(BTCAddressInfo,4444)
uni.setStorageSync('BTCAddressInfo',BTCAddressInfo)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
setTimeout(()=>{
uni.reLaunch({
url:'../address/index'
})
},1500)
}
},
showSave() {
if (this.bigAddress != '' && this.name != '' && this.value != '') {
this.save = true;
} else {
this.save = false;
}
if(this.value=='ETH'){
console.log(uni.getStorageSync('ETHAddressInfo'),777)
if(uni.getStorageSync('ETHAddressInfo').length>0){
let eth=new Object;
eth.address=this.bigAddress;
eth.name=this.addressName
eth.coinList=[{
name:"ETH",
name2:"ETH",
xname:'Ethereum',
icon:require('@/static/tongyonh/Frame3299.png')
}];
let ETHAddressInfo=[]
ETHAddressInfo=uni.getStorageSync('ETHAddressInfo')
ETHAddressInfo.push(eth)
uni.setStorageSync('ETHAddressInfo',ETHAddressInfo)
console.log(ETHAddressInfo,1111)
},
handove(item) {
if (this.value == '') {
this.save = false
uni.showToast({
title: 'Successfully',
icon: 'success',
title: 'Please select a currency',
icon: 'none',
duration: 1500
})
setTimeout(()=>{
uni.reLaunch({
url:'../address/index'
})
},1500)
}else{
let eth=new Object;
eth.address=this.bigAddress;
eth.name=this.addressName
eth.coinList=[{
name:"ETH",
name2:"ETH",
xname:'Ethereum',
icon:require('@/static/tongyonh/Frame3299.png')
}];
console.log(eth,4444)
let ETHAddressInfo=[]
ETHAddressInfo.push(eth)
console.log(ETHAddressInfo,4444)
uni.setStorageSync('ETHAddressInfo',ETHAddressInfo)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
setTimeout(()=>{
uni.reLaunch({
url:'../address/index'
return;
}
if (this.bigAddress == '' || this.addressName == '') {
this.save = false
uni.showToast({
title: 'Address or name cannot be empty',
icon: 'none',
duration: 1500
})
},1500)
return;
}
if (this.value == 'BTC') {
console.log(uni.getStorageSync('BTCAddressInfo'), 777)
if (uni.getStorageSync('BTCAddressInfo').length > 0) {
let btc = new Object;
btc.address = this.bigAddress;
btc.name = this.addressName
btc.coinList = [{
name: "BTC",
name2: "BTC",
xname: 'Bitcoin',
icon: require('@/static/tongyonh/bye.png')
}];
let BTCAddressInfo = []
BTCAddressInfo = uni.getStorageSync('BTCAddressInfo')
BTCAddressInfo.push(btc)
uni.setStorageSync('BTCAddressInfo', BTCAddressInfo)
console.log(BTCAddressInfo, 1111)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
uni.reLaunch({
url: '../address/index'
})
} else {
let btc = new Object;
btc.address = this.bigAddress;
btc.name = this.addressName
btc.coinList = [{
name: "BTC",
name2: "BTC",
xname: 'Bitcoin',
icon: require('@/static/tongyonh/bye.png')
}];
console.log(btc, 4444)
let BTCAddressInfo = []
BTCAddressInfo.push(btc)
console.log(BTCAddressInfo, 4444)
uni.setStorageSync('BTCAddressInfo', BTCAddressInfo)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
setTimeout(() => {
uni.reLaunch({
url: '../address/index'
})
}, 1500)
}
if(this.value=='TRX'){
console.log(uni.getStorageSync('TRXAddressInfo'),777)
if(uni.getStorageSync('TRXAddressInfo').length>0){
let trx=new Object;
trx.address=this.bigAddress;
trx.name=this.addressName
trx.coinList=[{
name:"TRX",
name2:"TRX",
xname:'TRON',
icon:require('@/static/tongyonh/tron1.png')
}];
let TRXAddressInfo=[]
TRXAddressInfo=uni.getStorageSync('TRXAddressInfo')
TRXAddressInfo.push(trx)
uni.setStorageSync('TRXAddressInfo',TRXAddressInfo)
console.log(TRXAddressInfo,1111)
}
if (this.value == 'ETH') {
console.log(uni.getStorageSync('ETHAddressInfo'), 777)
if (uni.getStorageSync('ETHAddressInfo').length > 0) {
let eth = new Object;
eth.address = this.bigAddress;
eth.name = this.addressName
eth.coinList = [{
name: "ETH",
name2: "ETH",
xname: 'Ethereum',
icon: require('@/static/tongyonh/Frame3299.png')
}];
let ETHAddressInfo = []
ETHAddressInfo = uni.getStorageSync('ETHAddressInfo')
ETHAddressInfo.push(eth)
uni.setStorageSync('ETHAddressInfo', ETHAddressInfo)
console.log(ETHAddressInfo, 1111)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
title: 'Successfully',
icon: 'success',
duration: 1500
})
setTimeout(() => {
uni.reLaunch({
url: '../address/index'
})
setTimeout(()=>{
}, 1500)
} else {
let eth = new Object;
eth.address = this.bigAddress;
eth.name = this.addressName
eth.coinList = [{
name: "ETH",
name2: "ETH",
xname: 'Ethereum',
icon: require('@/static/tongyonh/Frame3299.png')
}];
console.log(eth, 4444)
let ETHAddressInfo = []
ETHAddressInfo.push(eth)
console.log(ETHAddressInfo, 4444)
uni.setStorageSync('ETHAddressInfo', ETHAddressInfo)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
setTimeout(() => {
uni.reLaunch({
url:'../address/index'
url: '../address/index'
})
},1500)
}else{
let trx=new Object;
trx.address=this.bigAddress;
trx.name=this.addressName
trx.coinList=[{
name:"TRX",
name2:"TRX",
xname:'TRON',
icon:require('@/static/tongyonh/tron1.png')
}];
console.log(trx,4444)
let TRXAddressInfo=[]
TRXAddressInfo.push(trx)
console.log(TRXAddressInfo,4444)
uni.setStorageSync('TRXAddressInfo',TRXAddressInfo)
uni.showToast({
}, 1500)
}
}
if (this.value == 'TRX') {
console.log(uni.getStorageSync('TRXAddressInfo'), 777)
if (uni.getStorageSync('TRXAddressInfo').length > 0) {
let trx = new Object;
trx.address = this.bigAddress;
trx.name = this.addressName
trx.coinList = [{
name: "TRX",
name2: "TRX",
xname: 'TRON',
icon: require('@/static/tongyonh/tron1.png')
}];
let TRXAddressInfo = []
TRXAddressInfo = uni.getStorageSync('TRXAddressInfo')
TRXAddressInfo.push(trx)
uni.setStorageSync('TRXAddressInfo', TRXAddressInfo)
console.log(TRXAddressInfo, 1111)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
setTimeout(()=>{
uni.reLaunch({
url:'../address/index'
setTimeout(() => {
uni.reLaunch({
url: '../address/index'
})
}, 1500)
} else {
let trx = new Object;
trx.address = this.bigAddress;
trx.name = this.addressName
trx.coinList = [{
name: "TRX",
name2: "TRX",
xname: 'TRON',
icon: require('@/static/tongyonh/tron1.png')
}];
console.log(trx, 4444)
let TRXAddressInfo = []
TRXAddressInfo.push(trx)
console.log(TRXAddressInfo, 4444)
uni.setStorageSync('TRXAddressInfo', TRXAddressInfo)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
},1500)
setTimeout(() => {
uni.reLaunch({
url: '../address/index'
})
}, 1500)
}
}
},
showSelect(){
this.show=true;
},
}
},
showSelect() {
this.show = true;
},
}
};
</script>
<style scoped>
page {
background: #FAFAFA;
height: 100%;
height: 100%;
}
</style>

2
pages/menu/sendToken/addAddress2/index.vue

@ -136,7 +136,6 @@ show: false,
},
onLoad() {
if(uni.getStorageSync('AddressInfo')){
console.log()
this.info=uni.getStorageSync('AddressInfo')
this.AddressInfo=uni.getStorageSync('AddressInfo')
this.addressName=this.AddressInfo.name
@ -192,6 +191,7 @@ show: false,
return;
}
if(this.info.coinList[0].name2=='TRX'){
this.$walletUtil.updateAddress(this.info.coinList[0].name2,this.value);
if(this.value=='ETH'){
this.gai = uni.getStorageSync('ETHAddressInfo')
this.gai2 = uni.getStorageSync('TRXAddressInfo')

13
pages/menu/sendToken/address/index.css

@ -43,6 +43,8 @@ padding-bottom: 150rpx;
.main .img2{
width: 48rpx;
height: 48rpx;
position: relative;
z-index: 100;
}
.big_item{
position: relative;
@ -76,6 +78,7 @@ padding-bottom: 150rpx;
font-size: 32rpx;
color: #7D87A6;
font-weight: 500;
word-break: break-word;
margin-left: 26rpx;
}
@ -142,4 +145,12 @@ padding-bottom: 150rpx;
.info_con .text2{
font-size: 700;
font-size: 32rpx;
}
}
.back{
width: 16rpx;
height: 24rpx;
position: absolute;
left:36rpx;
top: 50%;
transform: translateY(-50%);
}

65
pages/menu/sendToken/address/index.vue

@ -1,6 +1,7 @@
<template>
<view class="">
<navigation :showBack="true" :bgnum="true">
<navigation :showBack="false" :bgnum="true">
<image src="../../../../static/tongyonh/Vector.png" mode="aspectFit" class="back" @click="back()" ></image>
<image src="../../../../static/tongyonh/IconGroup.png" mode="aspectFit" class="renYou" slot="logo" @click="goAddress()"></image>
<text class="big_title">
Address
@ -9,7 +10,7 @@
<view class="main">
<view class="big_item">
<view class="item flex" v-for="(item,index) in BTCAddressInfo">
<view class="item flex" v-for="(item,index) in BTCAddressInfo" @click="goTransfer(item)">
<view class="textcon flex">
<view class="bigcon">
<view class="textimg flexx">
@ -23,25 +24,25 @@
</view>
</view>
<view class="btncon">
<image src="../../../../static/tongyonh/more_vert_24px_outlined.svg" mode="aspectFit" class="img2" @click="showIndex(item,index)">
<image src="../../../../static/tongyonh/more_vert_24px_outlined.svg" mode="aspectFit" class="img2" @click.stop="showIndex(item,index)">
</image>
</view>
<view class="set_con" v-if="show" v-show="index==btcIndex">
<image src="../../../../static/tongyonh/xg.png" mode="aspectFit" class="img1" @click="show = false"></image>
<view class="itemm flexx" @click="editItem(index)">
<image src="../../../../static/tongyonh/xg.png" mode="aspectFit" class="img1" @click.stop="show = false"></image>
<view class="itemm flexx" @click.stop="editItem(index)">
<image src="../../../../static/tongyonh/create_24px.png" mode="aspectFit" class="img"></image>
Edit
</view>
<view class="itemm flexx red" @click="deleteItem()">
<view class="itemm flexx red" @click.stop="deleteItem()">
<image src="../../../../static/tongyonh/trash.png" mode="aspectFit" class="img"></image>
Delete
</view>
</view>
</view>
</view>
<view class="item flex" v-for="(item,index) in ETHAddressInfo">
<view class="item flex" v-for="(item,index) in ETHAddressInfo" @click="goTransfer(item)">
<view class="textcon flex">
<view class="bigcon">
<view class="textimg flexx">
@ -55,17 +56,17 @@
</view>
</view>
<view class="btncon">
<image src="../../../../static/tongyonh/more_vert_24px_outlined.svg" mode="aspectFit" class="img2" @click="showIndex(item,index)">
<image src="../../../../static/tongyonh/more_vert_24px_outlined.svg" mode="aspectFit" class="img2" @click.stop="showIndex(item,index)">
</image>
</view>
<view class="set_con" v-if="show2" v-show="index==ethIndex">
<image src="../../../../static/tongyonh/xg.png" mode="aspectFit" class="img1" @click="show2 = false"></image>
<view class="itemm flexx" @click="editItem(index)">
<image src="../../../../static/tongyonh/xg.png" mode="aspectFit" class="img1" @click.stop="show2 = false"></image>
<view class="itemm flexx" @click.stop="editItem(index)">
<image src="../../../../static/tongyonh/create_24px.png" mode="aspectFit" class="img"></image>
Edit
</view>
<view class="itemm flexx red" @click="deleteItem()">
<view class="itemm flexx red" @click.stop="deleteItem()">
<image src="../../../../static/tongyonh/trash.png" mode="aspectFit" class="img"></image>
Delete
</view>
@ -76,7 +77,7 @@
<view class="item flex" v-for="(item,index) in TRXAddressInfo">
<view class="item flex" v-for="(item,index) in TRXAddressInfo" @click="goTransfer(item)">
<view class="textcon flex">
<view class="bigcon">
<view class="textimg flexx">
@ -90,17 +91,17 @@
</view>
</view>
<view class="btncon">
<image src="../../../../static/tongyonh/more_vert_24px_outlined.svg" mode="aspectFit" class="img2" @click="showIndex(item,index)">
<image src="../../../../static/tongyonh/more_vert_24px_outlined.svg" mode="aspectFit" class="img2" @click.stop="showIndex(item,index)">
</image>
</view>
<view class="set_con" v-if="show3" v-show="index==trxIndex">
<image src="../../../../static/tongyonh/xg.png" mode="aspectFit" class="img1" @click="show3 = false"></image>
<view class="itemm flexx" @click="editItem(index)">
<image src="../../../../static/tongyonh/xg.png" mode="aspectFit" class="img1" @click.stop="show3 = false"></image>
<view class="itemm flexx" @click.stop="editItem(index)">
<image src="../../../../static/tongyonh/create_24px.png" mode="aspectFit" class="img"></image>
Edit
</view>
<view class="itemm flexx red" @click="deleteItem()">
<view class="itemm flexx red" @click.stop="deleteItem()">
<image src="../../../../static/tongyonh/trash.png" mode="aspectFit" class="img"></image>
Delete
</view>
@ -150,6 +151,7 @@
itemCoin:'',
itemAddress:'',
info:{},
transfer:'',
show: false,
show2: false,
show3: false,
@ -173,10 +175,27 @@ show3: false,
}
},
methods: {
//
goTransfer(item){
if(this.transfer){
uni.setStorageSync('myTransAddress',item)
uni.navigateTo({
url:'../transfer/index'
})
}
},
back(){
uni.navigateTo({
if(this.transfer){
uni.navigateBack({
})
}else{
uni.reLaunch({
url:'/pages/menu/profile/index'
})
})
}
},
editItem(index){
console.log(index,78787)
@ -266,7 +285,13 @@ goAddress(){
})
}
},
onLoad() {
onLoad(item) {
//
if(item){
this.transfer=item
}
if(uni.getStorageSync('BTCAddressInfo').length>0){
this.BTCAddressInfo=uni.getStorageSync('BTCAddressInfo')
console.log(this.BTCAddressInfo,777)

39
pages/menu/sendToken/enPassword/index.css

@ -1,15 +1,22 @@
.main{
padding: 0 48rpx;
position: absolute;
top: 30%;
margin-top: 300rpx;
height: 100%;
/* position: relative;
left: 50%;
top: 30%;
transform: translate(-50%,-50%);
width: 100%; */
}
.main .title{
line-height: 48rpx;
color: #000;
color: #7D87A6;
font-size: 32rpx;
text-align: center;
margin-bottom: 20rpx;
margin-top: 32rpx;
margin-bottom: 140rpx;
padding: 0 80rpx;
}
@ -84,6 +91,9 @@
height: 48rpx;
}
.big_title2{
margin-bottom: 50rpx;
}
.big_title{
text-align: center;
font-size: 36rpx;
@ -131,9 +141,7 @@ margin-top: 65rpx;
}
/deep/ .u-char-item[data-v-0e1e7f9a] {
margin: 10rpx 6rpx;
}
/* /deep/ .u-box[data-v-0e1e7f9a] {
border: 2rpx solid #E0E5F2 !important;
@ -144,4 +152,17 @@ margin-top: 65rpx;
/deep/ .u-placeholder-line{
background: #5B53FF;
}
/deep/ .u-dot span {
color: #5B53FF !important;
}
.infoText{
color:#F16063;
font-size: 30rpx;
text-align: center;
margin-top: 48rpx;
}
page{
height: 100%;
}

156
pages/menu/sendToken/enPassword/index.vue

@ -2,38 +2,23 @@
<view class="">
<navigation :showBack="true" :bgnum="false">
<text class="big_title">
Enter Password
Enter Password
</text>
</navigation>
<view class="main">
<view class="title">
Enter Password
</view>
<u-message-input inactive-color="#E0E5F2" active-color="#5B53FF" :width="94" :maxlength="6" mode="box" :dot-fill="true"></u-message-input>
</view>
<view class="main" v-if="false">
<view class="big_title">
Set new password
<view class="big_title big_title2">
Enter Password
</view>
<view class="title">
Secure transaction passwords, please do not disclose
<u-message-input @finish="finish2" :inactive-color="info?'#F16063':'#E0E5F2'" active-color="#5B53FF"
:width="94" :maxlength="6" mode="box" :focus="fes" :dot-fill="true" @change="back">
</u-message-input>
<view class="infoText" v-if="info">
Password discrepansies
</view>
</view>
</view>
<u-message-input inactive-color="#E0E5F2" active-color="#5B53FF" :width="94" :maxlength="6" mode="box" :dot-fill="true"></u-message-input>
</view>
</view>
</view>
</template>
<script>
@ -41,26 +26,111 @@
export default {
data() {
return {
msg:'',
msgLength:0,
fes:false,
borNum:true,
password: '',
password2: '',
msg: '',
msgLength: 0,
fes: false,
info: false,
transInfoPass: {
},
wallet: {}
}
},
watch:{
msg(curVal){
if(/[^\d]/g.test(curVal)){
this.msg = this.msg.replace(/[^\d]/g,'');
}else{
this.msgLength = curVal.length;
}
},
},
methods: {
focuss(){
this.fes=true;
},
//
back(e) {
if (e.length < 6) {
this.info = false;
}
},
finish2(e) {
if (this.wallet.password != e) {
this.info = true;
return;
} else {
this.info = false;
}
//
// trx
if (this.wallet.type == 'TRX') {
// trx
if (!this.contractAddress) {
this.$TronUtil.sendTransaction(this.transInfoPass.fromAddress, this.transInfoPass.privateKey, this
.transInfoPass.toAddress, this.transInfoPass.amount)
.then((res) => {
console.log(res, 111)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 2000
})
uni.reLaunch({
url: '/pages/menu/wallet/index'
})
}).catch(err => {
uni.showToast({
title: err,
icon: 'none',
duration: 2000
})
})
} else {
// trx
this.$TronUtil.sendRawTransaction(this.info.address, this.info.privateKey, this.toAddress, this
.toValue, '', this.contractAddress)
.then((res) => {
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 2000
})
this.show2 = false;
uni.reLaunch({
url: '/pages/menu/wallet/index'
})
}).catch(err => {
console.log(err)
uni.showToast({
title: err,
icon: 'none',
duration: 2000
})
})
}
}
if (this.wallet.type == 'ETH') {
if (this.info.coinList[0].xname == 'Ethereum') {
this.$EthUtil.transaction(this.info.address, this.toAddress, this.toValue, this.info.privateKey)
.then((
res) => {
console.log(res, '钱包')
this.show2 = false;
uni.reLaunch({
url: '../transfer2/index'
})
}).catch(err => {
console.log(err)
})
}
}
},
},
onLoad() {
//
this.transInfoPass = uni.getStorageSync('transInfoPass')
//
this.wallet = uni.getStorageSync('wallet')
console.log(this.transInfoPass, 2222)
console.log(this.wallet, 2222)
}
};
</script>

19
pages/menu/sendToken/index.vue

@ -5,11 +5,11 @@
</navigation>
<view class="main">
<view class="main_con">
<image src="../../../static/tongyonh/bye.png" mode="aspectFit" class="logoimg" v-if="addressInfo.coinList[0].xname=='Bitcoin'"></image>
<image src="../../../static/tongyonh/tron1.png" mode="aspectFit" class="logoimg" v-if="addressInfo.coinList[0].xname=='TRON'"></image>
<image src="../../../static/tongyonh/Frame3299.png" mode="aspectFit" class="logoimg" v-if="addressInfo.coinList[0].xname=='Ethereum'"></image>
<image src="../../../static/tongyonh/bye.png" mode="aspectFit" class="logoimg" v-if="addressInfo.type=='BTC'"></image>
<image src="../../../static/tongyonh/tron1.png" mode="aspectFit" class="logoimg" v-if="addressInfo.type=='TRX'"></image>
<image src="../../../static/tongyonh/Frame3299.png" mode="aspectFit" class="logoimg" v-if="addressInfo.type=='ETH'"></image>
<view class="title">
{{addressInfo.coinList[0].xname}} Receiving address
{{addressInfo.type}} Receiving address
</view>
<view class="code_con">
<tki-qrcode ref="qrcode" :val="addressInfo.address" :size="size" :unit="unit" :background="background"
@ -87,12 +87,15 @@
})
// #endif
// #ifdef APP-PLUS
var that=this
console.log(123132)
uni.setClipboardData({
data: this.addressInfo.address,
success() {
this.toTop=true;
uni.hideToast()
that.toTop=true;
setTimeout(()=>{
this.toTop=false;
that.toTop=false;
},1500)
}
})
@ -100,9 +103,7 @@
},
},
onLoad(item) {
let a= JSON.parse(item.item)
this.addressInfo=a
this.addressInfo= uni.getStorageSync('infoWallet')
console.log(this.addressInfo,111)
}
};

117
pages/menu/sendToken/index2.vue

@ -0,0 +1,117 @@
<template>
<view class="">
<navigation :showBack="true" :bgnum="true">
Receive
</navigation>
<view class="main">
<view class="main_con">
<image :src="addressInfo.icon" mode="aspectFit" class="logoimg"></image>
<view class="title">
{{addressInfo.xname}} Receiving address
</view>
<view class="code_con">
<tki-qrcode ref="qrcode" :val="addressInfo.contractAddress" :size="size" :unit="unit" :background="background"
:foreground="foreground" :pdground="pdground" :lv="lv" :onval="onval" :loadMake="loadMake"
:showLoading="showLoading" :loadingText="loadingText" :icon="icon" class="test" />
</view>
<view class="text1">
Scan the QR code to transfer to the asset
</view>
<view class="bottom_con">
<view class="text2">
{{addressInfo.contractAddress}}
</view>
<view class="text3 copy" @click="copyTextMethod">
<image src="../../../static/tongyonh/copy_24px_2.png" mode="aspectFit" class="copyImg"></image>
Copy address
</view>
<!-- <view class="text3">
<image src="../../../static/tongyonh/Frame58.png" mode="aspectFit" class="copyImg"></image>
Switching address
</view> -->
</view>
</view>
<view class="info_con green" :class="toTop?'goTop':''">
<image src="../../../static/tongyonh/copy_24px_2.png" mode="aspectFit" class="copyImg"></image>
Copy address Successful!
</view>
</view>
</view>
</template>
<script>
import cont from "@/components/navigation/navigation.vue"
import tkiQrcode from "tki-qrcode"
export default {
components: {
tkiQrcode
},
data() {
return {
addressInfo:{},
toTop:false,
//
showErweiMask: false,
ercodeText: '',
size: 400,
background: '#ffffff',
foreground: '#000000',
pdground: '#000000',
iconsize: 30,
lv: 3,
onval: true,
unit: 'upx',
loadMake: true,
icon: '',
showLoading: true,
loadingText: 'One moment please',
//
}
},
methods: {
copyTextMethod() {
// #ifdef H5
this.$copyText(this.addressInfo.contractAddress).then(res => {
this.toTop=true;
setTimeout(()=>{
this.toTop=false;
},1500)
})
// #endif
// #ifdef APP-PLUS
uni.setClipboardData({
data: this.addressInfo.contractAddress,
success() {
this.toTop=true;
setTimeout(()=>{
this.toTop=false;
},1500)
}
})
// #endif
},
},
onLoad(item) {
this.addressInfo= uni.getStorageSync('infoWallet')
console.log(this.addressInfo,111)
}
};
</script>
<style scoped>
page{
background: #FAFAFA;
}
</style>
<style>
@import './index.css';
</style>

13
pages/menu/sendToken/transfer/index.css

@ -152,6 +152,7 @@
border-radius: 24rpx 24rpx 0 0;
padding-top: 24rpx;
margin-top: 64rpx;
padding-bottom: 60rpx;
}
.bottom_con .tiao{
width: 96rpx;
@ -212,6 +213,7 @@
.bottom_con .item .text2{
font-size: 32rpx;
margin-top: 8rpx;
word-break: break-word;
}
.bottom_con .item .text2 .img{
width: 48rpx;
@ -242,7 +244,8 @@
padding: 0 24rpx;
position: absolute;
z-index: 999;
bottom: 0;
bottom: -120rpx;
width: 100%;
padding-top: 24rpx;
padding-bottom: 100rpx;
}
@ -311,4 +314,12 @@
}
.green{
color: #6AD6A8 !important;
}
.back{
width: 16rpx;
height: 24rpx;
position: absolute;
left:36rpx;
top: 50%;
transform: translateY(-50%);
}

177
pages/menu/sendToken/transfer/index.vue

@ -1,30 +1,31 @@
<template>
<view class="ac">
<navigation :showBack="true" :bgnum="true">
<navigation :showBack="false" :bgnum="true">
<image src="../../../../static/tongyonh/Vector.png" mode="aspectFit" class="back" @click="back()" ></image>
<text class="big_title">
TRX Transfer
{{addressInfo.type}} Transfer
</text>
</navigation>
<view class="main">
<view class="main_con">
<view class="yuan">
<image src="../../../../static/tongyonh/tron1.png" mode="aspectFit" class="img1"></image>
<image :src="addressInfo.coinList[0].icon" mode="aspectFit" class="img1"></image>
</view>
<view class="title">
TRX
{{addressInfo.type}}
</view>
<view class="item">
<view class="top flex">
<view class="top flex">
<view class="text1">
Receiving address
</view>
<view class="text2">
<view class="text2" @click="goAddress('transfer')">
Adress Book
</view>
</view>
<view class="inputcon">
<input type="text" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter the recipient address" class="input1"/>
<input type="text" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter the recipient address" class="input1" v-model="recipientAddress" />
<image src="../../../../static/tongyonh/Frame330.png" mode="aspectFit" class="img1"></image>
</view>
</view>
@ -38,9 +39,9 @@
<view class="inputcon2 flex">
<view class="inputc flex">
<view class="textt">
TRX
{{addressInfo.type}}
</view>
<input type="text" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="0.0000000" class="input3"/>
<input type="text" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="0.0000000" class="input3" v-model="transAmount"/>
</view>
<text></text>
<view class="inputc flex">
@ -52,9 +53,9 @@
</view>
<view class="top flex bottom">
<view class="text3">
Balance: 470.31
Balance: {{addressInfo.balance}}
</view>
<view class="text1 bg">
<view class="text1 bg" @click="forAll">
ALL
</view>
</view>
@ -65,9 +66,7 @@
<view class="text1">
Remark
</view>
<view class="text2">
Adress Book
</view>
</view>
<view class="inputcon">
<input type="text" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter a note (off-chain)" class="input1"/>
@ -79,21 +78,19 @@
<view class="text1">
Transaction fee
</view>
<view class="text2">
Adress Book
</view>
</view>
<view class="inputcon" >
<input type="text" v-model="value" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter a note (off-chain)" class="input2"/>
<input type="text" v-model="fee" value="" placeholder-style="font-size: 30rpx; color: #D0D0D2;" placeholder="Please enter a note (off-chain)" class="input2"/>
<view class="rig">
<text class="text1 ac">TRX</text> | <text class="text2">USDT</text>
<text class="text1 ac">{{addressInfo.type}}</text> | <text class="text2">USDT</text>
</view>
</view>
</view>
</view>
</view>
<view class="big_con" v-if="show">
<view class="big_con" v-if="showBottom">
<view class="tiao" @click="show=false">
</view>
<view class="bigtitle">
@ -101,17 +98,17 @@
</view>
<view class="bottom_con">
<view class="yuan">
<image src="../../../../static/tongyonh/tron1.png" mode="aspectFit" class="img1"></image>
<image :src="addressInfo.coinList[0].icon" mode="aspectFit" class="img1"></image>
</view>
<view class="title">
TRX
{{addressInfo.type}}
</view>
<view class="title_con flex">
<view class="text1">
Amount
</view>
<view class="text1">
0.1123123 BTC
{{transAmount}} {{addressInfo.type}}
</view>
</view>
<view class="item">
@ -119,7 +116,7 @@
Send address
</view>
<view class="text2">
TASD djhe u3y3 khkd khhg kie3 jhhs uehw ssdhd
{{addressInfo.address}}
</view>
</view>
<view class="item">
@ -127,7 +124,7 @@
Receiving address
</view>
<view class="text2">
TASD djhe u3y3 khkd khhg kie3 jhhs uehw ssdhd
{{recipientAddress}}
</view>
</view>
<view class="item">
@ -143,20 +140,20 @@
Transaction fee
</view>
<view class="text2">
1.00 TRX
{{fee}} {{addressInfo.type}}
</view>
</view>
<view class="goto">
<view class="goto" @click="confirmTo">
Confirm
</view>
</view>
</view>
<u-mask z-index="10" :show="show" @click="show = false"></u-mask>
<u-mask z-index="1000" :show="show" @click="show2 = false"></u-mask>
<view class="zhiwen_con">
<view class="tiao">
<!-- <u-mask z-index="1000" :show="show2" @click="show2 = false"></u-mask> -->
<view class="zhiwen_con" v-if="showFinger">
<view class="tiao" @click="cancel">
</view>
<view class="bigtitle">
Fingerprint password
@ -167,17 +164,17 @@
Touch the fingerprint sensor
</view>
<view class="flex con">
<view class="textt1">
<view class="textt1" @click="goPassword">
Use Password
</view>
<view class="textt2">
<view class="textt2" @click="cancel">
Cancel
</view>
</view>
</view>
</view>
<view class="zhiwen_con">
<view class="zhiwen_con" v-if="false">
<view class="tiao">
</view>
<view class="bigtitle">
@ -199,7 +196,7 @@
</view>
</view>
<view class="zhiwen_con">
<view class="zhiwen_con" v-if="false">
<view class="tiao">
</view>
<view class="bigtitle">
@ -221,7 +218,7 @@
</view>
</view>
<view class="btn_con" @click="show=true">
<view class="btn_con" @click="Confirm">
<view class="btn">
Confirm
</view>
@ -240,13 +237,115 @@
export default {
data() {
return {
value:1000,
show: true,
show2: true
fee:1000,
show: false,
show2: false,
showFinger:false,
showBottom:false,
addressInfo:{},
recipientAddress:'',
transAmount:'',
//
transInfoPass:{
fromAddress:'',
toAddress:"",
privateKey:'',
amount:'',
}
}
},
methods: {
cancel(){
this.show=false
this.showFinger=false
this.$walletUtil.printCancel()
},
//
goPassword(){
this.$walletUtil.printCancel();
console.log(111)
uni.navigateTo({
url:'/pages/menu/sendToken/enPassword/index'
})
},
//
confirmTo(){
this.show=true
this.showFinger=true
this.showBottom=false;
// true
var bltype=this.$walletUtil.fingerprint();
console.log(bltype,444444)
//
this.transInfoPass.fromAddress=this.addressInfo.address;
this.transInfoPass.toAddress=this.recipientAddress;
this.transInfoPass.privateKey=this.addressInfo.privateKey;
this.transInfoPass.amount=this.transAmount;
console.log(this.transInfoPass,444)
//
uni.setStorageSync('transInfoPass',this.transInfoPass)
},
back(){
uni.reLaunch({
url:'../../wallet/index'
})
},
//
forAll(){
this.transAmount=this.addressInfo.balance
},
//
Confirm(){
//
if(this.transAmount==''){
uni.showToast({
title: 'Please enter the transfer amount',
icon: 'none',
duration: 1500
})
return
}
if(this.recipientAddress==''){
uni.showToast({
title: 'Please enter the receiving address',
icon: 'none',
duration: 1500
})
return
}
if(this.transAmount==''<0){
uni.showToast({
title: 'The entered amount cannot be less than 0',
icon: 'none',
duration: 1500
})
return
}
if( this.transAmount>this.addressInfo.balance){
uni.showToast({
title: 'Sorry, your credit is running low',
icon: 'none',
duration: 1500
})
return
}
this.showBottom=true;
this.show=true;
},
goAddress(text){
console.log(text)
uni.navigateTo({
url:'../address/index?item='+text
})
}
},
onLoad() {
//
if(uni.getStorageSync('myTransAddress')){
this.recipientAddress=uni.getStorageSync('myTransAddress').address
}
this.addressInfo=uni.getStorageSync('infoWallet')
console.log(this.addressInfo,1111)
}
};
</script>

15
pages/menu/token/btc/index.vue

@ -154,21 +154,21 @@
},
methods: {
goSend() {
let itemm = JSON.stringify(this.infoWallet)
uni.setStorageSync('infoWallet',this.infoWallet)
uni.navigateTo({
url: '/pages/menu/sendToken/transfer2/index?item=' + itemm
url: '/pages/menu/sendToken/transfer/index'
})
},
goReceive() {
let itemm = JSON.stringify(this.infoWallet)
uni.setStorageSync('infoWallet',this.infoWallet)
uni.navigateTo({
url: '/pages/menu/sendToken/index?item=' + itemm
url: '/pages/menu/sendToken/index'
})
},
goDetail(item, index) {
let itemm = JSON.stringify(this.trxs2[index])
uni.setStorageSync('transDetail',this.trxs2[index])
uni.navigateTo({
url: '/pages/menu/transction/detail/index?item=' + itemm
url: '/pages/menu/transction/detail/index'
})
},
@ -224,7 +224,8 @@
}
},
onLoad(option) {
const item = JSON.parse(option.item);
const item = uni.getStorageSync('wallet')
console.log(item,2222)
this.infoWallet = item
this.address=item.address
this.trueType=item.type

30
pages/menu/token/btc/index2.vue

@ -1,7 +1,7 @@
<template>
<view class="">
<navigation :showBack="true" :bgnum="true">
{{xname}}
{{xname2}}
</navigation>
<view class="main">
<view class="money_con"
@ -138,6 +138,7 @@
trueType:'',
contract:'',
xname:'',
xname2:'',
}
},
methods: {
@ -148,15 +149,18 @@
})
},
goReceive() {
let itemm = JSON.stringify(this.infoWallet)
var a=uni.getStorageSync('otherCoin')
console.log(this.infoWallet.coinList[a],444)
uni.setStorageSync('infoWallet',this.infoWallet.coinList[a])
uni.navigateTo({
url: '/pages/menu/sendToken/index?item=' + itemm
url: '/pages/menu/sendToken/index2'
})
},
goDetail(item, index) {
let itemm = JSON.stringify(this.trxs2[index])
uni.setStorageSync('transDetail',this.trxs2[index])
uni.navigateTo({
url: '/pages/menu/transction/detail/index?item=' + itemm
url: '/pages/menu/transction/detail/index'
})
},
@ -191,13 +195,6 @@
that.trxs2 = data
console.log(that.trxs, 12121)
})
},
getInfo() {
this.param.address = this.address2
@ -210,19 +207,20 @@
}
},
onLoad() {
//
this.infoWallet = uni.getStorageSync('wallet')
this.address=this.infoWallet.address
this.trueType=this.infoWallet.type
var index=uni.getStorageSync('otherCoin')
console.log(this.infoWallet.coinList[index].contractAddress)
console.log(this.infoWallet,1111)
console.log(this.infoWallet,1111)
this.contract=this.infoWallet.coinList[index].contractAddress
this.xname=this.infoWallet.coinList[index].xname
this.balance=this.infoWallet.coinList[index].balance
this.xname2=this.infoWallet.coinList[index].name
this.xbalance=this.infoWallet.coinList[index].balancePrice
this.contractAddress=this.infoWallet.coinList[index].contractAddress
//
this.getWalletInfo()
},
onPullDownRefresh() {

3
pages/menu/transction/detail/index.vue

@ -108,8 +108,7 @@
},
onLoad(option) {
const item = JSON.parse(option.item);
this.info=item
this.info=uni.getStorageSync('transDetail')
this.info.time = index.formatyymmddhhmmss33(this.info.time);
}
};

12
pages/menu/wallet/cwallet/index.vue

@ -104,25 +104,21 @@
setStorage(type) {
if(type){
this.walletInfo=this.$walletUtil.getWalletList(type)
console.log(this.walletInfo,22222)
console.log(this.walletInfo)
}else{
this.walletInfo=this.$walletUtil.getWalletList()
console.log(this.walletInfo)
console.log(this.walletInfo,22222)
}
},
goManager(itemm){
console.log(itemm)
let item = JSON.stringify(itemm)
uni.navigateTo({
url:'../../../menu/wallet/mwallet/manage/index?item='+item
})
},
},
onLoad() {
// this.$walletUtil.updateBalance();
this.setStorage()
if(uni.getStorageSync('walleti')){
//

20
pages/menu/wallet/index.vue

@ -106,11 +106,10 @@
if (uni.getStorageSync('wallet')) {
this.userObj = uni.getStorageSync('wallet');
this.userObj2 = uni.getStorageSync('wallet');
// thar.userObj.address =thar.userObj.address.substring(0, 6) + '...' + thar.userObj.address.substring(25,
// thar.userObj.address.length);
this.updateData();
this.userObj.address = this.userObj.address.substring(0, 6) + '...' + this.userObj.address.substring(25,
this.userObj.address.length);
}
@ -128,12 +127,13 @@
let thar = this;
setTimeout(
function() {
thar.userObj = uni.getStorageSync('wallet');
thar.userObj2 = uni.getStorageSync('wallet');
thar.userObj.address = thar.userObj.ellipsisAddress;
// thar.userObj.address = thar.userObj.ellipsisAddress;
thar.userObj.address =thar.userObj.address.substring(0, 6) + '...' + thar.userObj.address.substring(25,
thar.userObj.address.length);
thar.updateData();
}, 200);
}, 0);
},
goOther() {
@ -156,15 +156,11 @@
this.userObj = this.walletInfo.BTC[0]
this.userObj.address = this.userObj.address.substring(0, 6) + '...' + this.userObj.address.substring(25,
this.userObj.address.length);
console.log(this.walletInfo.BTC[0])
},
goTrans(itemm, index) {
console.log(index, 444)
let item = JSON.stringify(this.userObj2)
console.log(item, 454545)
if (index == 0) {
uni.navigateTo({
url: '/pages/menu/token/btc/index?item=' + item
url: '/pages/menu/token/btc/index'
})
} else {
//

1
pages/menu/wallet/mwallet/index.css

@ -170,6 +170,7 @@
width: 32rpx;
height: 32rpx;
margin-left: 32rpx;
float: right;
margin-bottom: 26rpx;
}

28
pages/menu/wallet/mwallet/index.vue

@ -35,10 +35,12 @@
</view>
</view>
</view>
<view class="rig">
<image src="../../../../static/tongyonh/ellipsis.png" mode="aspectFit" class="img1" @click="goManager(item,index)"></image>
{{item.balance}}
<image src="../../../../static/tongyonh/ellipsis.png" mode="aspectFit" class="img1" @click="goManager(item,index)"></image>
<view class="">
{{item.balance}}
</view>
</view>
</view>
@ -95,20 +97,30 @@
this.typeBoll=true;
}
if(type=='trx'){
this.type='trx'
this.typeBoll=true;
}
},
setStorage(type) {
setStorage(type) {
if(type){
this.walletInfo=this.$walletUtil.getWalletList(type)
console.log(this.walletInfo,22222)
console.log(this.walletInfo)
}else{
this.walletInfo=this.$walletUtil.getWalletList()
},
console.log(this.walletInfo,22222)
}
},
goManager(itemm){
// uni.setStorageSync('nameIndex',index)
let item = JSON.stringify(itemm)
console.log(itemm,11111)
uni.setStorageSync('addressDetailInfo',itemm)
uni.navigateTo({
url:'../../../menu/wallet/mwallet/manage/index?item='+item
url:'../../../menu/wallet/mwallet/manage/index'
})
},

4
pages/menu/wallet/mwallet/manage/index.vue

@ -135,9 +135,7 @@
},
},
onLoad: function(option) {
// this.nameIndex=uni.getStorageSync('nameIndex')
const item = JSON.parse(option.item);
this.userObj = item
this.userObj = uni.getStorageSync('addressDetailInfo')
//
if(!this.userObj.mnemonic){
this.itemMnemonic=false;

BIN
unpackage/cache/apk/__UNI__1ECBEE1_cm.apk

Binary file not shown.

2
unpackage/cache/apk/apkurl

@ -1 +1 @@
https://ide.dcloud.net.cn/build/download/d438c5e0-449e-11ec-bc65-b9ec5449613b
https://ide.dcloud.net.cn/build/download/4fccc3d0-44b8-11ec-80f0-e7f90545faa9

2
unpackage/cache/apk/cmManifestCache.json

@ -1 +1 @@
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

2
unpackage/cache/wgt/__UNI__1ECBEE1/app-config-service.js

File diff suppressed because one or more lines are too long

14
unpackage/cache/wgt/__UNI__1ECBEE1/app-service.js

File diff suppressed because one or more lines are too long

2
unpackage/cache/wgt/__UNI__1ECBEE1/app-view.js

File diff suppressed because one or more lines are too long

2
unpackage/dist/build/app-plus/app-config-service.js

File diff suppressed because one or more lines are too long

14
unpackage/dist/build/app-plus/app-service.js

File diff suppressed because one or more lines are too long

2
unpackage/dist/build/app-plus/app-view.js

File diff suppressed because one or more lines are too long

4
unpackage/dist/dev/app-plus/app-config-service.js

File diff suppressed because one or more lines are too long

5950
unpackage/dist/dev/app-plus/app-service.js

File diff suppressed because one or more lines are too long

11860
unpackage/dist/dev/app-plus/app-view.js

File diff suppressed because one or more lines are too long

2
unpackage/dist/dev/app-plus/manifest.json

@ -1 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__1ECBEE1","name":"BITCOOO","version":{"name":"1.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#fff"},"compatible":{"ignoreVersion":true},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"splashscreen":{"androidStyle":"default","iosStyle":"default","android":{"hdpi":"","xhdpi":"","xxhdpi":""}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.2.12","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__1ECBEE1","name":"BITCOOO","version":{"name":"1.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"FaceID":{},"Fingerprint":{},"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#fff"},"compatible":{"ignoreVersion":true},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"unpackage/res/icons/72x72.png","xhdpi":"unpackage/res/icons/96x96.png","xxhdpi":"unpackage/res/icons/144x144.png","xxxhdpi":"unpackage/res/icons/192x192.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png","proapp@2x":"unpackage/res/icons/167x167.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png"}}},"splashscreen":{"androidStyle":"default","iosStyle":"default","android":{"hdpi":"","xhdpi":"","xxhdpi":""}},"google":{"permissions":["<uses-feature android:name=\"android.hardware.camera\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"allowsInlineMediaPlayback":true,"uni-app":{"compilerVersion":"3.2.12","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"launch_path":"__uniappview.html"}}

BIN
unpackage/release/apk/__UNI__1ECBEE1__20211114010923.apk

Binary file not shown.

BIN
unpackage/release/apk/__UNI__1ECBEE1__20211114013148.apk

Binary file not shown.

BIN
unpackage/release/apk/__UNI__1ECBEE1__20211114030019.apk

Binary file not shown.

BIN
unpackage/release/apk/__UNI__1ECBEE1__20211114031215.apk

Binary file not shown.

BIN
unpackage/release/apk/bitcooo.apk

Binary file not shown.

BIN
unpackage/release/apk/bitcooo.zip

Binary file not shown.

199
utils/WalletUtil.js

@ -131,6 +131,7 @@ let WalletUtil = {
console.log(walletInfo, 1111111)
uni.setStorageSync('walletInfo', walletInfo);
uni.setStorageSync('wallet', wallet);
uni.setStorageSync('walleti', wallet.address);
this.updateBalance();
},
//私钥新建
@ -155,8 +156,10 @@ let WalletUtil = {
wallet.privateKey = walletdec.privateKey;
wallet.address = walletdec.address;
walletInfo[type].push(wallet);
console.log(walletInfo,'当前私钥建的')
uni.setStorageSync('walletInfo', walletInfo);
uni.setStorageSync('wallet', wallet);
uni.setStorageSync('walleti', wallet.address);
this.updateBalance();
},
//获取钱包列表
@ -197,26 +200,17 @@ let WalletUtil = {
}
}
//this.updateBalance();
this.updateBalance();
},
updateBalance:function() {
updateBalance:function() {
const wallet = uni.getStorageSync('wallet');
const walletInfo = uni.getStorageSync('walletInfo');
for (var k = 0, length = walletInfo[wallet.type].length; k < length; k++) {
console.log(wallet,1212313)
if (walletInfo[wallet.type][k].address === wallet.address) {
walletInfo[wallet.type][k]=wallet;
console.log(1321312,walletInfo[wallet.type][k])
console.log(555555,walletInfo)
break;
walletInfo[wallet.type][k]=wallet;
break;
}
}
uni.setStorageSync('walletInfo', null);
uni.setStorageSync('walletInfo', walletInfo);
let that=this
this.getPrice(wallet.type,function(rr){
@ -294,7 +288,184 @@ let WalletUtil = {
}
});
}
},
// 封装地址方法
updateAddress:function(type,value,bigAddress,addressName) {
let that=this
switch (wallet.type) {
case 'BTC':
break;
case 'ETH':
break;
case 'TRX':
if(value=='ETH'){
const gai = uni.getStorageSync('ETHAddressInfo')
const gai2 = uni.getStorageSync('TRXAddressInfo')
const index=uni.getStorageSync('editIndex')
let eth=new Object;
eth.address=bigAddress;
eth.name=addressName
eth.coinList=[{
name:"ETH",
name2:"ETH",
xname:'Ethereum',
icon:require('@/static/tongyonh/Frame3299.png')
}];
gai2.splice(index,1)
uni.setStorageSync('TRXAddressInfo',gai2)
gai.push(eth);
uni.setStorageSync('ETHAddressInfo',gai)
uni.showToast({
title: 'Successfully',
icon: 'success',
duration: 1500
})
uni.navigateTo({
url:'../address/index'
})
}
break;
}
},
// 指纹识别
finger(){
// #ifdef APP-PLUS
if (!plus.fingerprint.isSupport()) {
this.result = '此设备不支持指纹识别';
this.disabled = true;
} else if (!plus.fingerprint.isKeyguardSecure()) {
this.result = '此设备未设置密码锁屏,无法使用指纹识别';
this.disabled = true;
} else if (!plus.fingerprint.isEnrolledFingerprints()) {
this.result = '此设备未录入指纹,请到设置中开启';
this.disabled = true;
} else {
this.result = '此设备支持指纹识别';
this.disabled = false;
}
// #endif
// #ifdef MP-WEIXIN
this.disabled = false;
this.result = '请在微信真机中使用,模拟器不支持';
// #endif
// #ifndef APP-PLUS || MP-WEIXIN
this.result = '此平台不支持指纹识别';
// #endif
},
fingerprint: function() {
let bltype=true;
// #ifdef APP-PLUS
if (!plus.fingerprint.isSupport()) {
uni.showToast({
title: 'This device does not support fingerprint identification',
icon: 'none',
duration: 1500
})
// this.disabled = true;
} else if (!plus.fingerprint.isKeyguardSecure()) {
uni.showToast({
title: 'This device does not support fingerprint identification',
icon: 'none',
duration: 1500
})
} else if (!plus.fingerprint.isEnrolledFingerprints()) {
uni.showToast({
title: 'There is no fingerprint entered in this device. Please turn it on in the setting',
icon: 'none',
duration: 1500
})
// this.disabled = true;
} else {
// this.result = '此设备支持指纹识别';
// // this.disabled = false;
// #ifdef MP-WEIXIN
// this.disabled = false;
uni.showToast({
title: '请在微信真机中使用,模拟器不支持',
icon: 'none',
duration: 1500
})
// #endif
// #ifndef APP-PLUS || MP-WEIXIN
uni.showToast({
title: '此平台不支持指纹识别',
icon: 'none',
duration: 1500,
})
// #endif
let that=this;
// #ifdef APP-PLUS
plus.fingerprint.authenticate(function() {
plus.nativeUI.closeWaiting(); //兼容Android平台关闭等待框
uni.showToast({
title: 'Fingerprint identification succeeded',
icon: 'none',
duration: 1500,
})
//plus.nativeUI.alert('Fingerprint identification succeeded');
}, function(e) {
switch (e.code) {
case e.AUTHENTICATE_MISMATCH:
plus.nativeUI.toast('Fingerprint matching failed, please re-enter');
break;
case e.AUTHENTICATE_OVERLIMIT:
plus.nativeUI.closeWaiting(); //兼容Android平台关闭等待框
plus.nativeUI.alert('The number of fingerprint identification failures exceeds the limit. Please use other methods for authentication');
break;
case e.CANCEL:
plus.nativeUI.toast('Recognition has been cancelled');
break;
default:
plus.nativeUI.closeWaiting(); //兼容Android平台关闭等待框
plus.nativeUI.alert('Fingerprint identification failed, please try again');
break;
}
});
// Android平台手动弹出等待提示框
if ('Android' == plus.os.name) {
this.show=true;
/* plus.nativeUI.showWaiting('...').onclose = function() {
plus.fingerprint.cancel();
} */
}
// #endif
// #ifdef MP-WEIXIN
wx.startSoterAuthentication({
requestAuthModes: ['fingerPrint'],
challenge: '123456',
authContent: '请用指纹解锁',
success(res) {
uni.showToast({
title: '识别成功',
mask: false,
duration: 1500
});
}
})
// #endif
}
// #endif
},
printCancel:function(){
plus.fingerprint.cancel();
// this.result="停止指纹识别"
},
}
export default WalletUtil

Loading…
Cancel
Save