['现金红包部分页面添加及发现更多微调app端样式']

This commit is contained in:
2021-10-14 09:44:55 +08:00
parent 50fb945707
commit 01a9d8eb40
139 changed files with 62907 additions and 1049 deletions

View File

@@ -199,7 +199,17 @@
"navigationBarTextStyle": "white", "navigationBarTextStyle": "white",
"navigationBarBackgroundColor":"#976dff" "navigationBarBackgroundColor":"#976dff"
} }
}, { }, {
"path": "pages/wallet/redProperty",
"name": "walletRedProperty",
"style": {
"navigationBarTitleText": "现金红包",
"enablePullDownRefresh": false,
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor":"#976dff"
}
},
{
"path": "pages/wallet/extract", "path": "pages/wallet/extract",
"name": "Extract", "name": "Extract",
"style": { "style": {
@@ -208,6 +218,16 @@
"navigationBarBackgroundColor": "#976dff", "navigationBarBackgroundColor": "#976dff",
"navigationBarTextStyle": "white" "navigationBarTextStyle": "white"
} }
},
{
"path": "pages/wallet/extractRed",
"name": "ExtractRed",
"style": {
"navigationBarTitleText": "提现红包",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor": "#976dff",
"navigationBarTextStyle": "white"
}
}, { }, {
"path": "pages/verification/index", "path": "pages/verification/index",
"name": "verificationIndex", "name": "verificationIndex",

View File

@@ -1,145 +1,161 @@
<template> <template>
<view> <view>
<!-- 签到成功弹出 --> <!-- 签到成功弹出 -->
<view class="signBack" v-if="sign.signShow"></view> <view class="signBack" v-if="sign.signShow"></view>
<view class="signPop" v-if="sign.signShow"> <view class="signPop" v-if="sign.signShow">
<image class="signPop-tips" src="../../static/user/sign_tips.png" mode="widthFix"></image> <image class="signPop-tips" src="../../static/user/sign_tips.png" mode="widthFix"></image>
<view class="signPop-cont"> <view class="signPop-cont">
<view class="signPop-cont-name"> <view class="signPop-cont-name">
签到成功 签到成功
</view> </view>
<view class="signPop-cont-text"> <view class="signPop-cont-text">
能量碎片<view class="signPop-cont-number">+{{sign.signSuccess}}</view> 能量碎片<view class="signPop-cont-number">+{{sign.signSuccess}}</view>
</view> </view>
</view> </view>
</view> </view>
<!-- 签到 --> <!-- 签到 -->
<view class="signCont"> <view class="signCont">
<view class="content-title">发现更多</view> <view class="content-title">发现更多</view>
<view class="content-sumite">海量能量碎片等你解锁</view> <view class="content-sumite">海量能量碎片等你解锁</view>
<view class="sign"> <view class="sign">
<view class="sign-list" :class="{ active: item.sign }" v-for="(item, index) in sign.signArr" :key="index"> <view class="sign-list" :class="{ active: item.sign }" v-for="(item, index) in sign.signArr"
<view class="sign-tips" v-if="item.sign"> :key="index">
<view class="sign-tips-text">已签</view> <view class="sign-tips" v-if="item.sign">
</view> <view class="sign-tips-text">已签</view>
<block v-if="index == 7"> </view>
<image class="sign-list-img" :src="item.sign ? '../../static/user/sign_icon_last_active.png' : '../../static/user/sign_icon_last.png'" mode="aspectFill"></image> <block v-if="index == 7">
</block> <image class="sign-list-img"
<block v-else> :src="item.sign ? '../../static/user/sign_icon_last_active.png' : '../../static/user/sign_icon_last.png'"
<image class="sign-list-img" :src="item.sign ? '../../static/user/sign_icon_active.png' : '../../static/user/sign_icon.png'" mode="aspectFill"></image> mode="aspectFill"></image>
</block> </block>
<view class="sign-list-day"> <block v-else>
{{ item.text }} <image class="sign-list-img"
</view> :src="item.sign ? '../../static/user/sign_icon_active.png' : '../../static/user/sign_icon.png'"
</view> mode="aspectFill"></image>
</view> </block>
<view class="sign-record">再签到{{ sign.nextTask.day }}天额外赠送{{ sign.nextTask.diff }}个能量碎片</view> <view class="sign-list-day">
</view> {{ item.text }}
<view class="signBtn"> </view>
<block v-if="sign.signCan"> </view>
<view class="signBtn-go" @click="signClick" style="cursor:pointer" > </view>
签到领取能量碎片 <view class="sign-record">再签到{{ sign.nextTask.day }}天额外赠送{{ sign.nextTask.diff }}个能量碎片</view>
</view> </view>
</block> <view class="signBtn">
<block v-else> <block v-if="sign.signCan">
<view class="signBtn-go" @click="$Router.push({name:'Fragment'})"> <view class="signBtn-go" @click="signClick" style="cursor:pointer">
能量碎片记录<image class="signBtn-go-icon" src="/static/user/sign_arrow.png" mode="aspectFill"></image> <u-icon name="calendar-fill" color="#333" size="40" />
</view> 签到领取能量碎片
</block> </view>
</view> </block>
<!-- 水晶任务 --> <block v-else>
<view class="task"> <view class="signBtn-go" @click="$Router.push({name:'Fragment'})">
<view class="task-liest"> 能量碎片记录<image class="signBtn-go-icon" src="/static/user/sign_arrow.png" mode="aspectFill"></image>
能量碎片任务 </view>
</view> </block>
<block v-for="(item, index) in task" :key="index"> </view>
<view class="task-item" v-if="item.rule.name != 'sign_crystal'" @click="JumpUrl(item.url, item.title, item.is_finish)"> <!-- 水晶任务 -->
<image class="task-icon" :src="item.ico" mode="aspectFill"></image> <view class="task">
<view class="task-title">{{item.title}}</view> <view class="task-liest">
<view class="task-subtitle">{{item.remark}}</view> 能量碎片任务
<view class="task-label" :class="{'active' : item.is_finish}">{{item.is_finish ? '已完成' : item.tips}}<image @click.stop="showHelp" class="task-label-icon" src="@/static/imgs/user-crystalMark-grey.png"></image></view> </view>
</view> <block v-for="(item, index) in task" :key="index">
</block> <view class="task-item" v-if="item.rule.name != 'sign_crystal'"
</view> @click="JumpUrl(item.url, item.title, item.is_finish)">
<image class="task-icon" :src="item.ico" mode="aspectFill"></image>
<view class="task-title">{{item.title}}</view>
<view class="task-subtitle">{{item.remark}}</view>
<view class="task-label" :class="{'active' : item.is_finish}">{{item.is_finish ? '已完成' : item.tips}}
<image @click.stop="showHelp" class="task-label-icon"
src="@/static/imgs/user-crystalMark-grey.png"></image>
</view>
</view>
</block>
</view>
</view> </view>
</template> </template>
<script> <script>
import { task, sign, operateSign } from '@/apis/interfaces/crystal' import {
import { userIndex } from '@/apis/interfaces/user' task,
sign,
operateSign
} from '@/apis/interfaces/crystal'
import {
userIndex
} from '@/apis/interfaces/user'
export default { export default {
data() { data() {
return { return {
task: [], task: [],
sign: { sign: {
signArr : [], signArr: [],
nextTask: '', nextTask: '',
signCan : false, signCan: false,
signShow: false, signShow: false,
signSuccess: '' signSuccess: ''
}, },
tips : { tips: {
tipsTitle : '', // 弹出的动态名称 tipsTitle: '', // 弹出的动态名称
tipsContent : '', // 弹出的动态内容 tipsContent: '', // 弹出的动态内容
tipsState : false // 弹出的动态状态 tipsState: false // 弹出的动态状态
}, },
energyShard : '' // 碎片说明 energyShard: '' // 碎片说明
} }
}, },
onShow() { onShow() {
this.sign.signShow = false this.sign.signShow = false
// 获取能量领取信息 // 获取能量领取信息
task().then(res => { task().then(res => {
uni.hideLoading() uni.hideLoading()
this.task = res this.task = res
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({
icon: 'none', icon: 'none',
title: err.message title: err.message
}) })
}) })
// 读取配置信息 // 读取配置信息
userIndex().then(res=>{ userIndex().then(res => {
this.energyShard = res.help_doc.energy_shard this.energyShard = res.help_doc.energy_shard
}).catch(err =>{ }).catch(err => {
uni.showToast({ uni.showToast({
title: err.message, title: err.message,
icon : 'none' icon: 'none'
}) })
}) })
// 获取水晶签到信息 // 获取水晶签到信息
this.signInfo(); this.signInfo();
}, },
methods: { methods: {
// 水晶签到信息 // 水晶签到信息
signInfo() { signInfo() {
sign().then(res => { sign().then(res => {
this.sign.signArr = res.lists this.sign.signArr = res.lists
this.sign.nextTask = res.next_task this.sign.nextTask = res.next_task
this.sign.signCan = res.can_sign this.sign.signCan = res.can_sign
}).catch(err => { }).catch(err => {
uni.showToast({ uni.showToast({
icon: 'none', icon: 'none',
title: err title: err
}) })
}) })
}, },
// 能量碎片提示信息 // 能量碎片提示信息
showHelp() { showHelp() {
uni.showModal({ uni.showModal({
title: '能量碎片', title: '能量碎片',
confirmColor: '#8b64fd', confirmColor: '#8b64fd',
content: this.energyShard.description, content: this.energyShard.description,
showCancel: false showCancel: false
}) })
}, },
// 签到 // 签到
signClick() { signClick() {
operateSign().then(res => { operateSign().then(res => {
this.sign.signSuccess = res.task_crystals this.sign.signSuccess = res.task_crystals
// 获取水晶签到信息 // 获取水晶签到信息
@@ -151,269 +167,308 @@
title: err title: err
}) })
}) })
}, },
// 能量跳转 // 能量跳转
JumpUrl(open, title, finish) { JumpUrl(open, title, finish) {
if(finish) { if (finish) {
uni.showToast({ uni.showToast({
title: '您已完成此任务', title: '您已完成此任务',
icon : 'none' icon: 'none'
}) })
return return
} }
var type = open.openType; var type = open.openType;
switch(type){ switch (type) {
case 'switchTab': case 'switchTab':
this.$Router.pushTab({name: open.path}) this.$Router.pushTab({
break; name: open.path
case 'web': })
window.location.href = open.path break;
break; case 'web':
case 'navigateTo': window.location.href = open.path
this.$Router.push({name: open.path}) break;
break; case 'navigateTo':
} this.$Router.push({
name: open.path
})
break;
}
} }
} }
} }
</script> </script>
<style scoped> <style scoped>
page { page {
background: #FFFFFF; background: #FFFFFF;
} }
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
// 弹出层 // 弹出层
.signBack { .signBack {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: fixed; position: fixed;
background-color: rgba(0,0,0,.7); background-color: rgba(0, 0, 0, .7);
z-index: 98; z-index: 98;
left: 0; left: 0;
top: 0; top: 0;
animation: cssAnimation 0s ease-in 4s forwards; animation: cssAnimation 0s ease-in 4s forwards;
} }
.signPop {
width: 60%; .signPop {
position: fixed; width: 60%;
z-index: 99; position: fixed;
left: 20%; z-index: 99;
top: 30%; left: 20%;
height: 160px; top: 30%;
animation: cssAnimation 0s ease-in 4s forwards; height: 160px;
.signPop-tips, animation: cssAnimation 0s ease-in 4s forwards;
.signPop-cont{
position: absolute; .signPop-tips,
left: 0; .signPop-cont {
top: 0; position: absolute;
width: 100%; left: 0;
} top: 0;
.signPop-cont { width: 100%;
color: #FFFFFF; }
text-align: center;
padding-top: 90px; .signPop-cont {
.signPop-cont-name { color: #FFFFFF;
font-size: 34rpx; text-align: center;
margin-bottom: 10rpx; padding-top: 90px;
}
.signPop-cont-text { .signPop-cont-name {
text-align: center; font-size: 34rpx;
.signPop-cont-number { margin-bottom: 10rpx;
display: inline-block; }
color: #ffee4d;
font-size: 38rpx; .signPop-cont-text {
color: #f9dc4a; text-align: center;
font-weight: 600;
margin-left: 10rpx; .signPop-cont-number {
} display: inline-block;
} color: #ffee4d;
} font-size: 38rpx;
} color: #f9dc4a;
font-weight: 600;
@keyframes cssAnimation { margin-left: 10rpx;
to { }
width: 0; }
height: 0; }
visibility: hidden; }
}
} @keyframes cssAnimation {
to {
width: 0;
height: 0;
visibility: hidden;
}
}
// 签到 // 签到
.signCont { .signCont {
@extend .ios-top; @extend .ios-top;
background: #7c52fc; background: #7c52fc;
color: #FFFFFF; color: #FFFFFF;
padding-bottom: 80rpx; padding-bottom: 80rpx;
.content-title {
font-size: 40rpx; .content-title {
padding: ($padding/2) 45rpx 0; margin-top: 30rpx;
box-sizing: border-box; font-size: 40rpx;
display: flex; padding: ($padding/2) 45rpx 0;
box-sizing: border-box;
display: flex;
font-weight: bold; font-weight: bold;
.content-title-img {
width: 32rpx; .content-title-img {
height: 32rpx; width: 32rpx;
margin: 12rpx 20rpx; height: 32rpx;
} margin: 12rpx 20rpx;
} }
.content-sumite{ }
.content-sumite {
padding: 0 45rpx 50rpx 45rpx; padding: 0 45rpx 50rpx 45rpx;
font-size: $title-size-sm; font-size: $title-size-sm;
color: rgba($color: white, $alpha: .6); color: rgba($color: white, $alpha: .6);
} }
.sign {
margin: 0 0 30rpx; .sign {
padding: 0 30rpx; margin: 0 0 30rpx;
box-sizing: border-box; padding: 0 30rpx;
.sign-list { box-sizing: border-box;
width: calc(14.28% - 20rpx);
position: relative; .sign-list {
margin: 0 10rpx; width: calc(14.28% - 20rpx);
display: inline-block; position: relative;
text-align: center; margin: 0 10rpx;
background-color: rgba(0,0,0,.3); display: inline-block;
border-radius: 10rpx; text-align: center;
padding: 20rpx 0; background-color: rgba(0, 0, 0, .3);
box-sizing: border-box; border-radius: 10rpx;
.sign-tips { padding: 20rpx 0;
position: absolute; box-sizing: border-box;
top: -20rpx;
left: calc(50% - 30rpx); .sign-tips {
background-color: #ef4034; position: absolute;
font-size: 24rpx; top: -20rpx;
color: #FFFFFF; left: calc(50% - 30rpx);
height: 32rpx; background-color: #ef4034;
line-height: 30rpx; font-size: 24rpx;
width: 60rpx; color: #FFFFFF;
text-align: center; height: 32rpx;
border-radius: 6rpx; line-height: 30rpx;
.sign-tips-text { width: 60rpx;
transform: scale(0.85); text-align: center;
} border-radius: 6rpx;
&::after {
position: absolute; .sign-tips-text {
content: ''; transform: scale(0.85);
left: calc(50% - 8rpx); }
bottom: -6rpx;
width: 0; &::after {
height: 0; position: absolute;
border-left: 8rpx solid transparent; content: '';
border-right: 8rpx solid transparent; left: calc(50% - 8rpx);
border-top: 8rpx solid #ef4034; bottom: -6rpx;
} width: 0;
} height: 0;
.sign-list-img { border-left: 8rpx solid transparent;
width: 38rpx; border-right: 8rpx solid transparent;
height: 38rpx; border-top: 8rpx solid #ef4034;
margin-bottom: 5rpx; }
} }
.sign-list-day {
font-size: 24rpx; .sign-list-img {
} width: 38rpx;
&.active { height: 38rpx;
background-color: #ffdb00; margin-bottom: 5rpx;
color: #413e30; }
box-shadow: 0 0 20rpx rgba(76,43,177,.3);
} .sign-list-day {
} font-size: 24rpx;
} }
.sign-record {
opacity: .8; &.active {
padding: 0 40rpx; // background-color: #ffdb00;
display: flex; background-image: linear-gradient(to right, #ffff7f, #ffdb00, #ffff7f);
line-height: 44rpx; color: #413e30;
} box-shadow: 0 0 20rpx 10rpx rgba(0, 0, 0, .2);
} }
}
// 签到按钮 }
.signBtn {
.sign-record {
opacity: .8;
padding: 0 40rpx;
display: flex;
line-height: 44rpx;
}
}
// 签到按钮
.signBtn {
position: relative; position: relative;
z-index: 1; z-index: 1;
padding: 0 40rpx; padding: 0 40rpx;
box-sizing: border-box; box-sizing: border-box;
width: 100%; width: 100%;
text-align: center; text-align: center;
margin-top: -50rpx; margin-top: -50rpx;
.signBtn-go {
width: 100%; .signBtn-go {
height: 100rpx; width: 100%;
line-height: 100rpx; height: 100rpx;
border-radius: 80rpx; line-height: 100rpx;
background-color: #f9dc4a; border-radius: 80rpx;
color: #333333; // background-color: #f9dc4a;
font-size: 32rpx; background-image: linear-gradient(to right, #ffff7f, #f9dc4a, #ffff7f);
font-weight: 600; box-shadow: 0 0 20rpx 10rpx rgba(0, 0, 0, .2);
.signBtn-go-icon { color: #333333;
width: 36rpx; font-size: 32rpx;
height: 36rpx; font-weight: 600;
vertical-align: -6rpx; .u-icon{
} margin-right: 20rpx;
} }
} .signBtn-go-icon {
width: 36rpx;
// 水晶任务 height: 36rpx;
.task{ vertical-align: -6rpx;
}
}
}
// 水晶任务
.task {
margin-top: -50rpx; margin-top: -50rpx;
padding: 110rpx 30rpx 0; padding: 110rpx 30rpx 0;
box-sizing: border-box; box-sizing: border-box;
background: white; background: white;
.task-liest {
font-weight: bold; .task-liest {
font-size: 34rpx; font-weight: bold;
margin-bottom: 20rpx; font-size: 34rpx;
} margin-bottom: 20rpx;
}
.task-item {
position: relative; .task-item {
border-bottom: solid 2rpx #F5F5F5; position: relative;
padding: 30rpx 200rpx 40rpx 90rpx; border-bottom: solid 2rpx #F5F5F5;
&:last-child { padding: 30rpx 200rpx 40rpx 90rpx;
border: none;
} &:last-child {
.task-icon { border: none;
position: absolute; }
top: 50rpx;
left: 0; .task-icon {
width: 58rpx; position: absolute;
height: 58rpx top: 50rpx;
} left: 0;
.task-title { width: 58rpx;
font-size: 32rpx; height: 58rpx
color: #333; }
line-height: 50rpx;
margin-bottom: 10rpx; .task-title {
} font-size: 32rpx;
.task-subtitle { color: #333;
color: #999; line-height: 50rpx;
font-size: 26rpx; margin-bottom: 10rpx;
line-height: 30rpx; }
text{
font-size: $title-size-sm - 6; .task-subtitle {
margin-left: $margin/2; color: #999;
} font-size: 26rpx;
} line-height: 30rpx;
.task-label {
position: absolute; text {
right: 0; font-size: $title-size-sm - 6;
top: 38rpx; margin-left: $margin/2;
line-height: 80rpx; }
font-size: 26rpx; }
color: #333;
display: -webkit-box; .task-label {
display: -webkit-flex; position: absolute;
display: flex; right: 0;
&.active { top: 38rpx;
color: $text-gray-m; line-height: 80rpx;
} font-size: 26rpx;
.task-label-icon { color: #333;
width: 34rpx; display: -webkit-box;
height: 34rpx; display: -webkit-flex;
margin: 24rpx 0 0 20rpx; display: flex;
}
} &.active {
} color: $text-gray-m;
} }
.task-label-icon {
width: 34rpx;
height: 34rpx;
margin: 24rpx 0 0 20rpx;
}
}
}
}
</style> </style>

View File

@@ -57,7 +57,7 @@
</view> </view>
</view> </view>
<!-- 关于我们 --> <!-- 关于我们 -->
<view @click="$router.push({name:'aboutUs'})" class="list-item"> <view @click="$Router.push({name:'aboutUs'})" class="list-item">
<view class="list-item-left"> <view class="list-item-left">
<image src="/static/imgs/mine-about.png" mode="widthFix" /> <image src="/static/imgs/mine-about.png" mode="widthFix" />
<span>关于链商星球</span> <span>关于链商星球</span>

File diff suppressed because it is too large Load Diff

View File

@@ -11,16 +11,6 @@
</view> </view>
</view> </view>
<view class="item-name">
提现至银行卡
<view class="right">
<view class="cardName" v-if="bank_accounts === 0" @click="addBanks">添加银行卡</view>
<view class="cardName" v-if='bank_accounts>0' @click="bankLists">{{bankInfo.name?bankInfo.name:'选择银行卡'}}
</view>
<uni-icons type="arrowright" size="12" color="#fff" />
</view>
</view>
<view class="withdrawing-content"> <view class="withdrawing-content">
<view class="item"> <view class="item">
<view style="flex: 1;"> <view style="flex: 1;">
@@ -33,8 +23,8 @@
</view> </view>
</view> </view>
<view class="total" v-if="total"> {{total.toFixed(2)}} </view> <view class="total" v-if="total"> {{total.toFixed(2)}} </view>
<view class="btn" @click="actions">提现至银行卡</view> <view class="btn" @click="actions">提现至红包</view>
<view class="des">预计5- 10个工作日到账 手续费: {{tax === '0'?'免手续费':tax+'%'}}</view> <view class="des">提现到红包可在红包中提现到银行卡 手续费: </view>
</view> </view>
</template> </template>
@@ -133,13 +123,13 @@
bank_account_id: this.bankInfo.bank_account_id, bank_account_id: this.bankInfo.bank_account_id,
amount: Number(this.withdraw_input) amount: Number(this.withdraw_input)
} }
if (data.bank_account_id === undefined || data.bank_account_id === null || data.bank_account_id === '') { // if (data.bank_account_id === undefined || data.bank_account_id === null || data.bank_account_id === '') {
uni.showToast({ // uni.showToast({
title: this.bank_accounts > 0 ? '请选择银行卡' : '请添加银行卡', // title: this.bank_accounts > 0 ? '请选择银行卡' : '请添加银行卡',
icon: 'none' // icon: 'none'
}) // })
return; // return;
} // }
if (data.amount === 0) { if (data.amount === 0) {
uni.showToast({ uni.showToast({
title: '请输入能量球数量', title: '请输入能量球数量',
@@ -149,7 +139,7 @@
} }
uni.showModal({ uni.showModal({
title: '温馨提示', title: '温馨提示',
content:this.tax === '0'?'您是否确认提现交易将免手续费':'您是否确认提现将会扣除' + this.tax + '%手续费', content:'您是否确认提现到红包,交易将免手续费',
confirmColor: '#7c52fc', confirmColor: '#7c52fc',
cancelColor: '#cacaca', cancelColor: '#cacaca',
cancelText: '我再想想', cancelText: '我再想想',
@@ -182,18 +172,6 @@
}) })
}, },
// 添加银行卡
addBanks() {
this.$Router.push({
name: 'addBank'
})
},
// 选择银行卡
bankLists() {
this.$Router.push({
name: 'bankList'
})
},
// 提现记录 // 提现记录
withdrawDetail() { withdrawDetail() {
this.$Router.push({ this.$Router.push({

403
pages/wallet/extractRed.vue Normal file
View File

@@ -0,0 +1,403 @@
<template>
<view class="WithdrawingCoin ">
<view class="propery">
<image src="/static/imgs/account-bg.png" mode="aspectFill" class="record-bg" />
<view class="propery-content">
<view class="currency">可提现额度</view>
<view class="balance">{{ balance || '0.00' }}</view>
<view class="frozen" @click="withdrawDetail">提现记录</view>
</view>
</view>
<view class="item-name">
提现至银行卡
<view class="right">
<view class="cardName" v-if="bank_accounts === 0" @click="addBanks">添加银行卡</view>
<view class="cardName" v-if='bank_accounts>0' @click="bankLists">{{bankInfo.name?bankInfo.name:'选择银行卡'}}
</view>
<uni-icons type="arrowright" size="12" color="#fff" />
</view>
</view>
<view class="withdrawing-content">
<view class="item">
<view style="flex: 1;">
<view class="inputTxt">提现金额</view>
<input class="input_num" v-model="withdraw_input" @input='inputNum' type="number"
placeholder-style="color:#999;font-weight:normal; font-size:34rpx;"
placeholder="请输入提现金额" :disabled="balance===0" />
</view>
<view class="all" @click="all">全部提现</view>
</view>
</view>
<view class="total" v-if="total">≈ ¥{{total.toFixed(2)}} </view>
<view class="btn" @click="actions">提现至银行卡</view>
<view class="des">预计5- 10个工作日到账 手续费: {{tax === '0'?'免手续费':tax+'%'}}</view>
</view>
</template>
<script>
import {
withdrawsIndexCreate,
withdrawsIndex
} from '@/apis/interfaces/withdraws';
export default {
data() {
return {
balance: 0, // 钱包能量球金额
tax: 0, // 当前手续费
cost: 1, // 每个能量球的价格
total: 0, // 约合人民币
card: '', // 银行卡号
withdraw_input: '', // 提现能量球金额
bank_accounts: 0,
bankInfo: {}
};
},
onLoad() {
this.getInfo()
},
onShow() {
if (uni.getStorageSync('refresh')) {
this.bankInfo = {}
this.getInfo()
}
},
methods: {
// 提现基本信息
getInfo() {
withdrawsIndexCreate().then(res => {
this.balance = res.balance
this.tax = res.tax
this.cost = res.cost
this.bank_accounts = res.bank_accounts.length
this.withdraw_input = Number(res.balance)
this.total = Number(res.balance) * Number(res.cost)
uni.setStorageSync('refresh', false)
}).catch(err => {
uni.showToast({
title: err.message,
icon: 'none'
})
})
},
// 输入提现能量球金额
inputNum(e) {
let number = Number(e.detail.value)
console.log(number, this.balance)
if (number <= Number(this.balance)) {
this.total = Number(e.detail.value) * this.cost
} else {
this.total = 0
if (Number(this.balance) === 0) {
uni.showToast({
title: '当前不能提现',
icon: 'none',
duration: 2000
});
this.withdraw_input = 0
this.total = 0
} else {
uni.showToast({
title: '最大值能超过' + this.balance + '',
icon: 'none',
duration: 2000
});
this.withdraw_input = this.balance
this.total = this.balance * this.cost
}
}
},
// 点击全部
all() {
if (this.balance > 0) {
this.withdraw_input = this.balance
this.total = this.balance * this.cost
} else {
uni.showToast({
title: '啥也没有我也做不到~',
icon: 'none',
duration: 2000
})
this.withdraw_input = 0
}
},
// 提现
actions() {
let data = {
bank_account_id: this.bankInfo.bank_account_id,
amount: Number(this.withdraw_input)
}
if (data.bank_account_id === undefined || data.bank_account_id === null || data.bank_account_id === '') {
uni.showToast({
title: this.bank_accounts > 0 ? '请选择银行卡' : '请添加银行卡',
icon: 'none'
})
return;
}
if (data.amount === 0) {
uni.showToast({
title: '请输入能量球金额',
icon: 'none'
})
return;
}
uni.showModal({
title: '温馨提示',
content:this.tax === '0'?'您是否确认提现交易将免手续费':'您是否确认提现将会扣除' + this.tax + '%手续费',
confirmColor: '#7c52fc',
cancelColor: '#cacaca',
cancelText: '我再想想',
confirmText: '确认提现',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '提交中'
})
withdrawsIndex(data).then(res => {
uni.showToast({
title: res,
icon: 'none',
duration: 3000
})
this.withdraw_input = ''
this.total = ''
setTimeout(res => {
this.getInfo()
uni.hideLoading()
}, 3000)
}).catch(err => {
uni.showToast({
title: err.message,
icon: 'none'
})
})
}
}
})
},
// 添加银行卡
addBanks() {
this.$Router.push({
name: 'addBank'
})
},
// 选择银行卡
bankLists() {
this.$Router.push({
name: 'bankList'
})
},
// 提现记录
withdrawDetail() {
this.$Router.push({
name: 'withdrawList'
})
}
}
}
</script>
<style lang="scss">
page {
width: 100%;
min-height: 100vh;
background-color: #f7f7f7;
}
.receiptCode {
color: #808080;
text-align: left;
// margin: $margin 0;
font-size: $title-size-m;
}
.WithdrawingCoin {
background-color: #f7f7f7;
width: 100%;
min-height: 100vh;
padding-bottom: 100rpx;
// 账户
.propery {
position: relative;
padding-top: var(--status-bar-height);
background-image: linear-gradient(to top, #7c52fc, #976dff);
position: relative;
overflow: hidden;
.record-bg {
position: absolute;
width: 120%;
height: 300rpx;
bottom: -50rpx;
right: -20rpx;
z-index: 1;
opacity: .5;
transform: rotate(-7deg);
}
.propery-content {
position: relative;
z-index: 1;
padding: $padding/2 $padding $padding*3;
text-align: center;
.currency {
font-size: $title-size-m;
color: rgba($color: white, $alpha: .8);
}
.balance {
font-size: $title-size * 2.5;
padding: $padding 0;
color: white;
}
.frozen {
background: rgba($color: #000000, $alpha: .1);
color: rgba($color: white, $alpha: .7);
display: inline-block;
font-size: 24rpx;
padding: 6rpx $padding;
border-radius: $radius-m;
border: solid 1rpx rgba($color: white, $alpha: .4)
}
}
}
}
.all {
color: $text-price;
width: 160rpx;
text-align: center;
}
.item-name {
text-align: center;
color: #303030;
font-weight: bold;
margin-bottom: $margin;
font-size: 30rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
background-image: linear-gradient(to right, #aaaaff, #aaaaff);
color: #fff;
margin: 30rpx;
padding: 30rpx;
.right {
flex: 1;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
font-size: 34rpx;
.cardName {
flex: 1;
}
}
}
.withdrawing-content {
background-color: #fff;
padding: $padding $padding $padding $padding * 2;
font-size: $title-size-m;
/* 绑定银行卡 */
.bank-card {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 0 45rpx 0 35rpx;
}
.item {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
box-sizing: border-box;
padding: 20rpx 0;
span:nth-child(1) {
color: #666;
margin-right: 20rpx;
}
.inputTxt {
color: #999;
padding-bottom: 20rpx;
}
.input_num {
font-size: 60rpx;
color: #3a3a3a;
font-weight: bolder;
flex: 1;
}
}
.item-total {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: $padding*1 0 0 0;
color: #3a3a3a;
.total {
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: center;
box-sizing: border-box;
.money {
padding-top: $padding *0.5;
}
}
.lists {
color: $text-price;
}
}
}
.btn {
background-image: linear-gradient(to right, #7c52fc, #976dff);
color: #fff;
border-radius: 10rpx;
text-align: center;
padding: $padding * .9;
margin: $margin * 3 $margin *2 $margin $margin*2;
font-size: $title-size;
font-weight: bold;
}
.des {
text-align: center;
color: #cacaca;
font-size: 26rpx;
}
.total {
color: $mian-color;
margin-top: 20rpx;
margin-left: 50rpx;
font-size: 36rpx;
}
</style>

View File

@@ -0,0 +1,396 @@
<template>
<view class="propertyIndex">
<view class="propery">
<image src="/static/imgs/account-bg.png" mode="aspectFill" class="record-bg" />
<view class="propery-content">
<view class="currency">能量球钱包
<span>( {{ price || '0.00' }} CNY)</span>
</view>
<view class="balance">{{ balance.balance || '0.00' }}</view>
<!-- <view class="frozen">{{ balance.frozen || '0.00' }} 冻结中</view> -->
<view class="balance-flex">
<view class="balance-flex-item" @click="showAddress">区块链地址</view>
<!-- <view class="balance-flex-item" @click="showPrivatekey('privatekey')">我的私钥</view> -->
<view class="balance-flex-item" @click="$Router.push({name: 'Extract'})">能量球提现</view>
</view>
</view>
</view>
<!-- 账户记录 -->
<view class="record">
<view class="record-tabs">
<view class="tabs-item" :class="logsType === 0 ? 'show': ''" @click="onLogsType(0)">全部</view>
<view class="tabs-item" :class="logsType === 2 ? 'show': ''" @click="onLogsType(2)">收入</view>
<view class="tabs-item" :class="logsType === 1 ? 'show': ''" @click="onLogsType(1)">支出</view>
</view>
<record :list="logs" :logsType="logsType" />
<!-- ios安全距离 -->
<view class="ios-bottom"></view>
</view>
<!-- 支付密码 -->
<uni-popup ref="showPassword">
<view class="validationPassword">
<view class="from">
<view class="title">验证密码</view>
<input class="input" v-model="password" password 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> -->
</view>
</template>
<script>
import record from '@/components/property/record'
import h5Copy from '@/js_sdk/junyi-h5-copy/junyi-h5-copy/junyi-h5-copy'
import {
sum,
price,
logs,
code,
securityCheck // 输入旧密码是否正确
} from '@/apis/interfaces/wallet'
import numberJpan from "@/components/numberJpan/numberJpan.vue";
export default {
components: {
record
},
data() {
return {
balance: {},
price: '0.00',
logs: [],
logsType: 0,
password: '',
passwordPages: ''
};
},
onShow() {
this.getsum()
this.getlog()
},
methods: {
getsum() {
sum().then(res => {
this.balance = res
this.price = res.price
}).catch(err => {
uni.showToast({
icon: 'none',
title: err.message
})
})
},
getlog() {
logs().then(res => {
this.logs = res
}).catch(err => {
uni.showToast({
icon: 'none',
title: err.message
})
})
},
// 弹出私钥
showPrivatekey(pages) {
this.passwordPages = pages
this.$refs.showPassword.open('center')
},
// 验证私钥
payPassword(type) {
if (type === 'confirm') {
if (this.password === '') {
uni.showToast({
title: '请输入安全密码',
icon: 'none'
})
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 = ''
}).catch(err => {
uni.showToast({
title: err.message,
icon: 'none',
})
})
return
}
this.$refs.showPassword.close()
},
// 交易记录
onLogsType(index) {
if (this.logsType === index) return
this.logsType = index
this.logs = []
logs({
flag: this.logsType
}).then(res => {
this.logs = res
})
},
// 区块地址
showAddress() {
uni.showModal({
title: '我的区块链地址',
content: '\n地址可以理解为银行卡卡号与他人转账时是区块链上的两个地址间的交易行为\n\n' + this.balance.address,
confirmText: '复制',
confirmColor: '#b11eff',
showCancel:false,
success: (res) => {
if (res.confirm) {
uni.setClipboardData({
data: this.balance.address,
success() {
uni.showToast({
title: '区块链地址已复制',
icon : 'none'
})
}
})
}
}
})
}
},
onNavigationBarButtonTap(e) {
if (e.index === 0) {
uni.showActionSheet({
// itemList: ['转账', '收款', '提币', '修改密码'],
itemList: ['提现', '修改密码'],
success: (res) => {
switch (res.tapIndex) {
case 0:
console.log('提现了,')
this.$Router.push({
name: 'Extract'
})
break;
case 1:
this.showPrivatekey('resetPassword')
break;
}
uni.hideLoading()
}
})
}
}
}
</script>
<style lang="scss" scoped>
.propertyIndex {
width: 100%;
min-height: 100vh;
background-color: #FFFFFF;
}
// 验证密码弹出层
.validationPassword {
background-color: white;
border-radius: $radius-m;
width: 70vw;
.from {
padding: $padding*2;
.title {
text-align: center;
font-size: $title-size;
padding-bottom: $padding*2;
font-weight: bold;
color: $text-price;
}
.input {
text-align: center;
height: 90rpx;
font-size: $title-size;
border-radius: $radius-m;
background: $border-color-lg;
padding: 0 ($padding*2);
}
}
.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;
&.cancel {
border-right: solid 1rpx $border-color;
color: $text-gray;
}
&.confirm {
color: $text-price;
}
}
}
// .button{
// background-color: $text-price;
// 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, #7c52fc, #976dff);
position: relative;
overflow: hidden;
.record-bg {
position: absolute;
width: 100%;
height: 300rpx;
bottom: 0;
right: 0;
z-index: 1;
opacity: .5;
transform: rotate(0);
}
// &::before {
// position: absolute;
// left: 0;
// top: 0;
// width: 100%;
// height: 100%;
// content: " ";
// background-image: url(@/static/imgs/account-bg.png);
// background-size: 100%;
// background-repeat: no-repeat;
// opacity: .5;
// transform:rotate(0deg);
// }
.propery-content {
position: relative;
z-index: 1;
padding: $padding/2 $padding $padding*3;
text-align: center;
.currency {
font-size: $title-size-m;
color: rgba($color: white, $alpha: .8);
}
.balance {
font-size: $title-size * 2.5;
padding: $padding 0;
color: white;
}
.frozen {
background: rgba($color: #000000, $alpha: .1);
color: rgba($color: white, $alpha: .7);
display: inline-block;
font-size: 24rpx;
padding: 6rpx $padding;
border-radius: $radius-m;
border: solid 1rpx rgba($color: white, $alpha: .4)
}
.balance-flex {
display: flex;
justify-content: center;
margin-top: $margin * 2;
.balance-flex-item {
background-color: white;
width: 200rpx;
height: 75rpx;
line-height: 75rpx;
color: $text-price;
margin: 0 $margin;
border-radius: $radius-m;
font-size: 28rpx;
}
}
}
}
// 记录
.record {
background-color: white;
border-radius: $radius $radius 0 0;
padding: $padding ($padding * 2);
margin-top: -$margin;
position: relative;
z-index: 2;
.record-tabs {
display: flex;
justify-content: space-around;
font-weight: bold;
font-size: $title-size;
color: $text-gray;
line-height: 70rpx;
margin-bottom: $margin;
.tabs-item {
position: relative;
padding: 0 $padding;
&.show {
color: $text-price;
&::before {
position: absolute;
bottom: 0;
left: $padding;
right: $padding;
height: 4rpx;
content: " ";
background-color: $text-price;
}
}
}
}
}
</style>

View File

@@ -9,7 +9,7 @@
<view class="balance">{{ balance.balance || '0.00' }}</view> <view class="balance">{{ balance.balance || '0.00' }}</view>
<!-- <view class="frozen">{{ balance.frozen || '0.00' }} 冻结中</view> --> <!-- <view class="frozen">{{ balance.frozen || '0.00' }} 冻结中</view> -->
<view class="balance-flex"> <view class="balance-flex">
<view class="balance-flex-item" @click="showAddress">区块链地址</view> <!-- <view class="balance-flex-item" @click="showAddress">区块链地址</view> -->
<!-- <view class="balance-flex-item" @click="showPrivatekey('privatekey')">我的私钥</view> --> <!-- <view class="balance-flex-item" @click="showPrivatekey('privatekey')">我的私钥</view> -->
<view class="balance-flex-item" @click="$Router.push({name: 'Extract'})">能量球提现</view> <view class="balance-flex-item" @click="$Router.push({name: 'Extract'})">能量球提现</view>
</view> </view>
@@ -17,30 +17,16 @@
</view> </view>
<!-- 账户记录 --> <!-- 账户记录 -->
<view class="record"> <view class="record">
<view class="record-tabs"> <!-- <view class="record-tabs">
<view class="tabs-item" :class="logsType === 0 ? 'show': ''" @click="onLogsType(0)">全部</view> <view class="tabs-item" :class="logsType === 0 ? 'show': ''" @click="onLogsType(0)">全部</view>
<view class="tabs-item" :class="logsType === 2 ? 'show': ''" @click="onLogsType(2)">收入</view> <view class="tabs-item" :class="logsType === 2 ? 'show': ''" @click="onLogsType(2)">收入</view>
<view class="tabs-item" :class="logsType === 1 ? 'show': ''" @click="onLogsType(1)">支出</view> <view class="tabs-item" :class="logsType === 1 ? 'show': ''" @click="onLogsType(1)">支出</view>
</view> </view> -->
<record :list="logs" :logsType="logsType" /> <record :list="logs" :logsType="0" />
<!-- ios安全距离 --> <!-- ios安全距离 -->
<view class="ios-bottom"></view> <view class="ios-bottom"></view>
</view> </view>
<!-- 支付密码 -->
<uni-popup ref="showPassword">
<view class="validationPassword">
<view class="from">
<view class="title">验证密码</view>
<input class="input" v-model="password" password 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> -->
</view> </view>
</template> </template>

View File

@@ -0,0 +1,396 @@
<template>
<view class="propertyIndex">
<view class="propery">
<image src="/static/imgs/account-bg.png" mode="aspectFill" class="record-bg" />
<view class="propery-content">
<view class="currency">可提现额度
<!-- <span>( {{ price || '0.00' }} CNY)</span> -->
</view>
<view class="balance">{{ balance.balance || '0.00' }}</view>
<!-- <view class="frozen">{{ balance.frozen || '0.00' }} 冻结中</view> -->
<view class="balance-flex">
<view class="balance-flex-item" @click="showAddress">区块链地址</view>
<!-- <view class="balance-flex-item" @click="showPrivatekey('privatekey')">我的私钥</view> -->
<view class="balance-flex-item" @click="$Router.push({name: 'ExtractRed'})">红包提现</view>
</view>
</view>
</view>
<!-- 账户记录 -->
<view class="record">
<view class="record-tabs">
<view class="tabs-item" :class="logsType === 0 ? 'show': ''" @click="onLogsType(0)">全部</view>
<view class="tabs-item" :class="logsType === 2 ? 'show': ''" @click="onLogsType(2)">收入</view>
<view class="tabs-item" :class="logsType === 1 ? 'show': ''" @click="onLogsType(1)">支出</view>
</view>
<record :list="logs" :logsType="logsType" />
<!-- ios安全距离 -->
<view class="ios-bottom"></view>
</view>
<!-- 支付密码 -->
<uni-popup ref="showPassword">
<view class="validationPassword">
<view class="from">
<view class="title">验证密码</view>
<input class="input" v-model="password" password 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> -->
</view>
</template>
<script>
import record from '@/components/property/record'
import h5Copy from '@/js_sdk/junyi-h5-copy/junyi-h5-copy/junyi-h5-copy'
import {
sum,
price,
logs,
code,
securityCheck // 输入旧密码是否正确
} from '@/apis/interfaces/wallet'
import numberJpan from "@/components/numberJpan/numberJpan.vue";
export default {
components: {
record
},
data() {
return {
balance: {},
price: '0.00',
logs: [],
logsType: 0,
password: '',
passwordPages: ''
};
},
onShow() {
this.getsum()
this.getlog()
},
methods: {
getsum() {
sum().then(res => {
this.balance = res
this.price = res.price
}).catch(err => {
uni.showToast({
icon: 'none',
title: err.message
})
})
},
getlog() {
logs().then(res => {
this.logs = res
}).catch(err => {
uni.showToast({
icon: 'none',
title: err.message
})
})
},
// 弹出私钥
showPrivatekey(pages) {
this.passwordPages = pages
this.$refs.showPassword.open('center')
},
// 验证私钥
payPassword(type) {
if (type === 'confirm') {
if (this.password === '') {
uni.showToast({
title: '请输入安全密码',
icon: 'none'
})
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 = ''
}).catch(err => {
uni.showToast({
title: err.message,
icon: 'none',
})
})
return
}
this.$refs.showPassword.close()
},
// 交易记录
onLogsType(index) {
if (this.logsType === index) return
this.logsType = index
this.logs = []
logs({
flag: this.logsType
}).then(res => {
this.logs = res
})
},
// 区块地址
showAddress() {
uni.showModal({
title: '我的区块链地址',
content: '\n地址可以理解为银行卡卡号与他人转账时是区块链上的两个地址间的交易行为\n\n' + this.balance.address,
confirmText: '复制',
confirmColor: '#b11eff',
showCancel:false,
success: (res) => {
if (res.confirm) {
uni.setClipboardData({
data: this.balance.address,
success() {
uni.showToast({
title: '区块链地址已复制',
icon : 'none'
})
}
})
}
}
})
}
},
onNavigationBarButtonTap(e) {
if (e.index === 0) {
uni.showActionSheet({
// itemList: ['转账', '收款', '提币', '修改密码'],
itemList: ['提现', '修改密码'],
success: (res) => {
switch (res.tapIndex) {
case 0:
console.log('提现了,')
this.$Router.push({
name: 'Extract'
})
break;
case 1:
this.showPrivatekey('resetPassword')
break;
}
uni.hideLoading()
}
})
}
}
}
</script>
<style lang="scss" scoped>
.propertyIndex {
width: 100%;
min-height: 100vh;
background-color: #FFFFFF;
}
// 验证密码弹出层
.validationPassword {
background-color: white;
border-radius: $radius-m;
width: 70vw;
.from {
padding: $padding*2;
.title {
text-align: center;
font-size: $title-size;
padding-bottom: $padding*2;
font-weight: bold;
color: $text-price;
}
.input {
text-align: center;
height: 90rpx;
font-size: $title-size;
border-radius: $radius-m;
background: $border-color-lg;
padding: 0 ($padding*2);
}
}
.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;
&.cancel {
border-right: solid 1rpx $border-color;
color: $text-gray;
}
&.confirm {
color: $text-price;
}
}
}
// .button{
// background-color: $text-price;
// 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, #7c52fc, #976dff);
position: relative;
overflow: hidden;
.record-bg {
position: absolute;
width: 100%;
height: 300rpx;
bottom: 0;
right: 0;
z-index: 1;
opacity: .5;
transform: rotate(0);
}
// &::before {
// position: absolute;
// left: 0;
// top: 0;
// width: 100%;
// height: 100%;
// content: " ";
// background-image: url(@/static/imgs/account-bg.png);
// background-size: 100%;
// background-repeat: no-repeat;
// opacity: .5;
// transform:rotate(0deg);
// }
.propery-content {
position: relative;
z-index: 1;
padding: $padding/2 $padding $padding*3;
text-align: center;
.currency {
font-size: $title-size-m;
color: rgba($color: white, $alpha: .8);
}
.balance {
font-size: $title-size * 2.5;
padding: $padding 0;
color: white;
}
.frozen {
background: rgba($color: #000000, $alpha: .1);
color: rgba($color: white, $alpha: .7);
display: inline-block;
font-size: 24rpx;
padding: 6rpx $padding;
border-radius: $radius-m;
border: solid 1rpx rgba($color: white, $alpha: .4)
}
.balance-flex {
display: flex;
justify-content: center;
margin-top: $margin * 2;
.balance-flex-item {
background-color: white;
width: 200rpx;
height: 75rpx;
line-height: 75rpx;
color: $text-price;
margin: 0 $margin;
border-radius: $radius-m;
font-size: 28rpx;
}
}
}
}
// 记录
.record {
background-color: white;
border-radius: $radius $radius 0 0;
padding: $padding ($padding * 2);
margin-top: -$margin;
position: relative;
z-index: 2;
.record-tabs {
display: flex;
justify-content: space-around;
font-weight: bold;
font-size: $title-size;
color: $text-gray;
line-height: 70rpx;
margin-bottom: $margin;
.tabs-item {
position: relative;
padding: 0 $padding;
&.show {
color: $text-price;
&::before {
position: absolute;
bottom: 0;
left: $padding;
right: $padding;
height: 4rpx;
content: " ";
background-color: $text-price;
}
}
}
}
}
</style>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<script>
var __UniViewStartTime__ = Date.now();
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>View</title>
<link rel="stylesheet" href="view.css" />
</head>
<body>
<div id="app"></div>
<script src="__uniappes6.js"></script>
<script src="view.umd.min.js"></script>
<script src="app-view.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,154 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/ var executeModules = data[2];
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ // add entry modules from loaded chunk to deferred list
/******/ deferredModules.push.apply(deferredModules, executeModules || []);
/******/
/******/ // run deferred modules when all chunks ready
/******/ return checkDeferredModules();
/******/ };
/******/ function checkDeferredModules() {
/******/ var result;
/******/ for(var i = 0; i < deferredModules.length; i++) {
/******/ var deferredModule = deferredModules[i];
/******/ var fulfilled = true;
/******/ for(var j = 1; j < deferredModule.length; j++) {
/******/ var depId = deferredModule[j];
/******/ if(installedChunks[depId] !== 0) fulfilled = false;
/******/ }
/******/ if(fulfilled) {
/******/ deferredModules.splice(i--, 1);
/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
/******/ }
/******/ }
/******/
/******/ return result;
/******/ }
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ "app-config": 0
/******/ };
/******/
/******/ var deferredModules = [];
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ var jsonpArray = this["webpackJsonp"] = this["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // run deferred modules from other chunks
/******/ checkDeferredModules();
/******/ })
/************************************************************************/
/******/ ([]);

32249
unpackage/dist/dev/app-plus/app-service.js vendored Normal file

File diff suppressed because one or more lines are too long

28047
unpackage/dist/dev/app-plus/app-view.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__1F65101","name":"BlockChainH5","version":{"name":"1.0.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":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#FFFFFF"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"safearea":{"bottom":{"offset":"none"}},"distribute":{"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.9","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"borderStyle":"rgba(255,255,255,0.4)","backgroundColor":"#FFFFFF","selectedColor":"#774ffd","iconWidth":"26px","spacing":"0","height":"60px","list":[{"text":"发现能量","iconPath":"static/tabBar/tabBar_icon_00.png","selectedIconPath":"static/tabBar/tabBar_show_00.png","pagePath":"pages/index/index"},{"text":"发现更多","iconPath":"static/tabBar/tabBar_icon_01.png","selectedIconPath":"static/tabBar/tabBar_show_01.png","pagePath":"pages/found/index"},{"text":"节点中心","iconPath":"static/tabBar/tabBar_icon_02.png","selectedIconPath":"static/tabBar/tabBar_show_02.png","pagePath":"pages/user/index"}],"child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1015 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 880 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 619 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More