Browse Source

新增部分页面

master
[liang] 4 years ago
parent
commit
912aeccd23
  1. 3
      components/KeyValueRow/KeyValueRow.vue
  2. 0
      components/entrustOrderList/entrustOrderList.vue
  3. 2
      components/navigation/navigation.vue
  4. 0
      components/positionList/positionList.vue
  5. 104
      components/showMore/showMore.vue
  6. 4
      components/tabBar/tabBar.vue
  7. 101
      components/transaction/transaction.vue
  8. 80
      pages.json
  9. 319
      pages/home/index.vue
  10. 11
      pages/markets/index.vue
  11. 82
      pages/markets/trade.vue
  12. 2
      pages/me/accountInfo.vue
  13. 6
      pages/me/index.vue
  14. 2
      pages/me/transfer.vue
  15. 125
      pages/mine/mine.vue
  16. 233
      pages/mine/mineDetails.vue
  17. 80
      pages/mine/mineRecord.vue
  18. 527
      pages/recharge/recharge.vue
  19. 159
      pages/recharge/rechargeRecord.vue
  20. 352
      pages/withdrawal/addAddress.vue
  21. 138
      pages/withdrawal/addOrEditBankCard.vue
  22. 289
      pages/withdrawal/chooseAddress.vue
  23. 688
      pages/withdrawal/withdrawal.vue
  24. 172
      pages/withdrawal/withdrawalRecord.vue
  25. BIN
      static/charity/ic_ma_arrow_down.png
  26. 97412
      static/echarts.js
  27. BIN
      static/maskets/logo.png
  28. BIN
      static/mine/Line.png
  29. BIN
      static/mine/bg_mine.png
  30. BIN
      static/mine/coinLogo.png
  31. BIN
      static/mine/img_data.png
  32. BIN
      static/mine/img_mine01.png
  33. BIN
      static/mine/img_mine02.png
  34. BIN
      static/mine/img_mine03.png
  35. BIN
      static/mine/img_mine04.png
  36. BIN
      static/recharge/ic_copy.png
  37. BIN
      static/recharge/img_successed.png
  38. BIN
      static/recharge/money-recive.png
  39. BIN
      static/withdrawal/Checkbox_pr.png
  40. BIN
      static/withdrawal/add-circle.png
  41. BIN
      static/withdrawal/bg_card.png
  42. BIN
      static/withdrawal/money-send.png
  43. 219
      utils/language/en_US.js

3
components/KeyValueRow/KeyValueRow.vue

@ -5,7 +5,7 @@
<u--text class="value" :text="value" :mode="mode" :lines="lines" :color='rightColor' :size="size">
</u--text> -->
<view class="keyName" :style="{ color: leftColor, fontSize: size || leftSize, }">{{ keyName }} </view>
<view class="value" :style="{ color: leftColor, fontSize: size || leftSize, }">{{ value }}</view>
<view class="value" :style="{ color: rightColor, fontSize: size || rightSize, }">{{ value }}</view>
</view>
</template>
@ -70,6 +70,7 @@ export default {
position: relative;
.keyName {
vertical-align: top;
height: 100%;
width: auto;
display: inline-block;

0
components/entrustOrderList/entrustOrderList.vue

2
components/navigation/navigation.vue

@ -1,5 +1,5 @@
<template>
<view class="nav-head" :class="{'tp':bgTransparent}">
<view class="nav-head" :class="{ 'tp': bgTransparent }">
<image src="../../static/public/back.png" mode="aspectFit" class="back" @tap="back()" v-if="showBack"></image>
<slot name="left"></slot>
<slot></slot>

0
components/positionList/positionList.vue

104
components/showMore/showMore.vue

@ -0,0 +1,104 @@
<template>
<view class="showMore">
<view class="showMoreContent" :class="collapseFlag ? 'up' : 'down'">
<slot></slot>
</view>
<view class="showMoreTool">
<view class="showMoreTitle">{{ title }}</view>
<view class="showMoreIcon" :class="collapseFlag ? 'up' : 'down'" @click="collapse"></view>
</view>
</view>
</template>
<script>
const COMPONENT_NAME = 'showMore'
export default {
name: COMPONENT_NAME,
props: {
showBack: { // 是否显示返回按钮
type: Boolean,
default() {
return true
}
},
bgTransparent: { // 背景是否透明
type: Boolean,
default() {
return false
}
},
bgnum: {
type: Boolean,
default() {
return false
}
},
},
data() {
return {
title: 'Show more',
collapseFlag: false, // 折叠状态
}
},
computed: {
},
mounted() {
},
methods: {
collapse() {
this.collapseFlag = !this.collapseFlag;
this.title = this.collapseFlag ? 'Pick up' : 'Show more'
}
}
}
</script>
<style scoped lang="scss">
.showMoreContent {
padding-top: 16rpx;
margin-bottom: 16rpx;
// border-top: 2rpx solid #323045;
overflow: hidden;
transition: max-height 0.5s ease-in-out;
&.up {
max-height: 500rpx;
}
&.down {
max-height: 0;
}
}
.showMoreTool {
position: relative;
color: #00E8A2;
font-size: 28rpx;
.showMoreIcon {
width: 32rpx;
height: 32rpx;
position: absolute;
top: 4rpx;
right: 8rpx;
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
transition: transform 0.3s;
&.up {
transform: rotate(-180deg);
}
&.down {
transform: rotate(0deg);
}
}
}
</style>

4
components/tabBar/tabBar.vue

@ -89,10 +89,10 @@ export default {
methods: {
goToPage(num) {
let url = '/pages/index/index';
let url = '/pages/home/index';
switch (+num) {
case 1:
url = '/pages/index/index';
url = '/pages/home/index';
break;
case 2:
url = '/pages/markets/index';

101
components/transaction/transaction.vue

@ -0,0 +1,101 @@
<template>
<view class="transaction">
<view class="tab">
<view class="buy uni-bg-up" :class="type == 2 ? 'normal' : ''" @click="onChangeType(1)">买入</view>
<view class="sell uni-bg-down " :class="type == 1 ? 'normal' : ''" @click="onChangeType(2)">卖出</view>
</view>
</view>
</template>
<script>
const COMPONENT_NAME = 'transaction'
export default {
name: COMPONENT_NAME,
props: {
showBack: { // 是否显示返回按钮
type: Boolean,
default() {
return true
}
},
bgTransparent: { // 背景是否透明
type: Boolean,
default() {
return false
}
},
bgnum: {
type: Boolean,
default() {
return false
}
},
},
data() {
return {
title: 'Show more',
collapseFlag: false, // 折叠状态
}
},
computed: {
i18n() {
return this.$t("markets");
},
},
mounted() {
},
methods: {
collapse() {
this.collapseFlag = !this.collapseFlag;
this.title = this.collapseFlag ? 'Pick up' : 'Show more'
}
}
}
</script>
<style scoped lang="scss">
.showMoreContent {
padding-top: 16rpx;
margin-bottom: 16rpx;
// border-top: 2rpx solid #323045;
overflow: hidden;
transition: max-height 0.5s ease-in-out;
&.up {
max-height: 500rpx;
}
&.down {
max-height: 0;
}
}
.showMoreTool {
position: relative;
color: #00E8A2;
font-size: 28rpx;
.showMoreIcon {
width: 32rpx;
height: 32rpx;
position: absolute;
top: 4rpx;
right: 8rpx;
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
transition: transform 0.3s;
&.up {
transform: rotate(-180deg);
}
&.down {
transform: rotate(0deg);
}
}
}
</style>

80
pages.json

@ -3,8 +3,9 @@
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
"pages": [ //pages数组中第一项表示应用启动页
// 首页部分
{
"path": "pages/index/index",
"path": "pages/home/index",
"style": {
"navigationStyle": "custom"
}
@ -22,7 +23,6 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/login/register",
"style": {
@ -30,17 +30,16 @@
}
},
// 首页部分
// markets
{
"path": "pages/index/index",
"path": "pages/markets/index",
"style": {
"navigationStyle": "custom"
}
},
// markets
{
"path": "pages/markets/index",
"path": "pages/markets/trade",
"style": {
"navigationStyle": "custom"
}
@ -146,7 +145,74 @@
"style": {
"navigationStyle": "custom"
}
},
//Recharge充值
{
"path": "pages/recharge/recharge",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/recharge/rechargeRecord",
"style": {
"navigationStyle": "custom"
}
},
//mine'
{
"path": "pages/mine/mine",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/mineDetails",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/mineRecord",
"style": {
"navigationStyle": "custom"
}
},
//withdrawal
{
"path": "pages/withdrawal/withdrawal",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/withdrawalRecord",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/chooseAddress",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/addAddress",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/addOrEditBankCard",
"style": {
"navigationStyle": "custom"
}
}
],
"globalStyle": {

319
pages/index/index.vue → pages/home/index.vue

@ -24,17 +24,17 @@
</view>
<!-- 三个按钮 -->
<view class="btnDiv">
<view class="item">
<view class="item" @click="goto('recharge')">
<u--image class="img" :showLoading="true" src="../../static/home/img_recharge.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Recharge }}</view>
</view>
<view class="item">
<view class="item" @click="goto('mine')">
<u--image class="img" :showLoading="true" src="../../static/home/img_Mine.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Mine }}</view>
</view>
<view class="item">
<view class="item" @click="goto('subcription')">
<u--image class="img" :showLoading="true" src="../../static/home/img_Subcription.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Subcription }}</view>
@ -44,15 +44,23 @@
<view class="steps">
<view class="content">
<view class="title">{{ i18n.TodaySteps }}</view>
<canvas id="chart" ref="chart" style="width: 280rpx;height:280rpx; font-size: 40rpx;"></canvas>
<view id="chart" style="width: 280rpx;height:280rpx; font-size: 40rpx;"></view>
<!-- <canvas id="chart" ref="chart" style="width: 280rpx;height:280rpx; font-size: 40rpx;"></canvas> -->
<u-button class="button" color="#00E8A2">{{ i18n.ReceiveEarnings }}</u-button>
</view>
</view>
<!-- 播放器 -->
<view class="videoList" v-for="(item, index) in videoList" :key="index">
<video class="video" :id="`video-${index}`" :enable-progress-gesture="false" :src="item.url"
:poster="item.poster" :title="item.title" controls @play="stopOtherVideoPlay" :key="index"></video>
<view class="videoList" v-for="(item, index) in videoList" :key="index" @click="playVideo(item)">
<view class="videoImage" :style="`background-image: url(${item.poster});background-repeat: no-repeat;
background-size: cover;`">
<view class="VideoBg">
<view class="VideoLogo"></view>
<view class="VideoTitle">{{ item.title }}</view>
</view>
</view>
</view>
<video class="video" v-show="videoShow" id="video" :enable-progress-gesture="false" autoplay="true"
:src="videoUrl" controls x5-video-player-type="h5-page" @fullscreenchange="ifStopVideo"></video>
<!-- 通知弹出层 -->
<u-popup class="popup" :show="popupShow" round="32rpx" mode="center" @close="popupShow = false"
@open="popupShow = true" bgColor="#211F32" :customStyle="{
@ -74,9 +82,11 @@
import languagePopups from '@/components/language-popups/language-popups.vue'
import languageData from '@/utils/language/config'
// 引入echarts
import * as echarts from 'echarts';
// import * as echarts from 'echarts';
let videoPlayerObj = {};
// let videoPlayerObj = {};
let videoPlayer;
let myChart;
export default {
name: 'home',
components: { languagePopups },
@ -91,26 +101,28 @@ export default {
'https://cdn.uviewui.com/uview/swiper/swiper2.png',
'https://cdn.uviewui.com/uview/swiper/swiper3.png',
],
videoShow: false,
videoUrl: '',
videoList: [
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
title: 'Video name 1',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
},
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
url: 'https://media.w3.org/2010/05/sintel/trailer.mp4',
title: 'Video name 2',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper2.png'
},
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
url: 'http://vjs.zencdn.net/v/oceans.mp4',
title: 'Video name 3',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper3.png'
},
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
url: 'http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4',
title: 'Video name 4',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper2.png'
},
],
option: null,
@ -125,14 +137,15 @@ export default {
},
onShow() {
// 生成播放器队列对象
this.videoList.forEach((item, index) => {
const VideoPlayer = uni.createVideoContext(`video-${index}`, this)
videoPlayerObj[`video-${index}`] = VideoPlayer
});
// this.videoList.forEach((item, index) => {
// const VideoPlayer = uni.createVideoContext(`video-${index}`, this)
// videoPlayerObj[`video-${index}`] = VideoPlayer
// });
videoPlayer = uni.createVideoContext(`video`, this);
this.$nextTick(() => {
this.initChart()
})
// this.$nextTick(() => {
// this.initChart()
// })
if (uni.getStorageSync('langTrue')) {
this.langTrue = uni.getStorageSync('langTrue')
@ -163,35 +176,77 @@ export default {
})
},
/**
* 在播放视频是暂停其他视频
* 在跳转其他页面时是暂停全部视频
* @param {*} e
*/
stopOtherVideoPlay(e) {
const keyArr = Object.keys(videoPlayerObj)
keyArr.forEach(item => {
if (item !== e.target.id) {
videoPlayerObj[item].pause()
}
});
stopAllVideoPlay() {
videoPlayer.pause()
},
/**
* 在跳转其他页面时是暂停全部视频
* 根据全屏状态与暂停视频
* @param {*} e
*/
stopAllVideoPlay() {
const keyArr = Object.keys(videoPlayerObj)
keyArr.forEach(item => {
videoPlayerObj[item].pause()
ifStopVideo(e) {
if (e.detail.fullScreen) {
videoPlayer.play()
} else {
this.videoShow = false
videoPlayer.pause()
}
},
/**
* 播放视频
* @param {*} data
*/
playVideo(data) {
this.videoUrl = data.url;
this.videoShow = true;
videoPlayer.requestFullScreen({ direction: 0 })
},
/**
* 跳转
*/
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'recharge':
url = '/pages/recharge/recharge'
break;
case 'mine':
url = '/pages/mine/mine'
break;
case 'subcription':
url = '/pages/subscription/index';
break;
default:
break;
}
if (url) {
this.stopAllVideoPlay()
// console.log(url);
if (id === 'subcription') {
uni.reLaunch({
url,
})
return;
}
uni.navigateTo({
url,
});
}
},
initChart() {
// let myChart = echarts.init(this.$refs.chart);
// console.log(document);
// console.log(this.$refs.chart);
this.myChart = echarts.init(document.getElementById('chart'));
// this.myChart = echarts.init(document.getElementById('chart'));
// this.myChart = echarts.init(this.$refs.chart);
// myChart = echarts.init(document.getElementById('chart'))
this.option = {
title: {
text: this.stepsNum,
@ -257,17 +312,162 @@ export default {
}]
}
this.myChart.setOption(this.option, true);
// myChart.setOption(this.option, true);
window.addEventListener('resize', () => {
this.myChart.resize();
});
// window.addEventListener('resize', () => {
// myChart.resize();
// });
}
}
}
</script>
<script module="echarts" lang="renderjs">
let myChart
export default {
mounted() {
console.log(0);
console.log(window);
console.log(typeof window.echarts);
// this.initEcharts();
if (typeof window.echarts === 'object') {
this.initEcharts()
}else if (typeof window.echarts === 'function') {
this.initEcharts()
} else {
console.log(1);
// 动态引入较大类库避免影响页面展示
const script = document.createElement('script');
console.log(2);
// view 层的页面运行在 www 根目录,其相对路径相对于 www 计算
script.src = '/static/echarts.js';
console.log(3);
script.onload = this.initEcharts.bind(this);
console.log(4);
document.head.appendChild(script);
console.log(5);
}
},
methods: {
initEcharts() {
console.log(31);
// let t1=null;
this.initChart()
console.log(32);
myChart = echarts.init(document.getElementById('chart'))
console.log(33);
// 观测更新的数据在 view 层可以直接访问到
myChart.setOption(this.option)
console.log(34);
// clearInterval(t1)
// t1= setInterval(() => {
// console.log(1);
// myChart.setOption(this.option)
// }, 1000);
},
updateEcharts(newValue, oldValue, ownerInstance, instance) {
// 监听 service 层数据变更
myChart.setOption(newValue)
},
onClick(event, ownerInstance) {
// 调用 service 层的方法
ownerInstance.callMethod('onViewClick', {
test: 'test'
})
},
initChart() {
// let myChart = echarts.init(this.$refs.chart);
// console.log(document);
// console.log(this.$refs.chart);
// this.myChart = echarts.init(document.getElementById('chart'));
// this.myChart = echarts.init(this.$refs.chart);
// myChart = echarts.init(document.getElementById('chart'))
this.option = {
title: {
text: this.stepsNum,
// 副标题
subtext: "",
// 主副标题间距
itemGap: 0,
left: 'center',
top: 'center',
// 主标题样式
textStyle: {
fontSize: '20',
color: '#fff'
},
},
series: [{
name: '环形饼图',
type: 'pie',
radius: ['48%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
itemStyle: {
// 设置扇形的阴影
shadowBlur: 30,
shadowColor: '#15141F',
shadowOffsetX: 'center',
shadowOffsetY: 'center'
},
data: [{
value: +this.stepsNum / this.stepTarget
,
name: '步数',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: .2,
color: '#47BDFF'
}, {
offset: .5,
color: '#34AEFF'
}, {
offset: 1,
color: '#0589FF'
}
]),
borderRadius: 800,
}
},
{
value: (this.stepTarget - this.stepsNum) / this.stepTarget,
name: '剩余步数',
itemStyle: {
color: '#15141F',
}
}
]
}]
}
// myChart.setOption(this.option, true);
// window.addEventListener('resize', () => {
// myChart.resize();
// });
}
},
watch: {
// 如果 `question` 发生改变,这个函数就会运行
columData: function(newQuestion, oldQuestion) {
// this.updateEcharts(this.option)
}
},
}
</script>
<style lang="scss" scoped>
.main {
padding-bottom: 198rpx; // 避免底部TabBar盖住内容
@ -435,14 +635,41 @@ export default {
}
.videoList {
z-index: 1;
.video {
.videoImage {
margin: 32rpx 32rpx 0;
width: 686rpx;
height: 360rpx;
border-radius: 32rpx;
.VideoBg {
box-sizing: border-box;
padding-top: 96rpx;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6) !important;
.VideoLogo {
width: 96rpx;
height: 96rpx;
margin: 0 auto;
background-image: url(../../static/home/ic_play.png);
background-repeat: no-repeat;
background-size: 96rpx;
}
.VideoTitle {
font-size: 48rpx;
text-align: center;
}
}
}
}
.video {
// position: fixed;
top: 0;
z-index: 9;
}

11
pages/markets/index.vue

@ -8,7 +8,7 @@
</view>
<!-- 列表 -->
<view class="coinList">
<view class="coin" v-for="(item, index) in 20" :key="index">
<view class="coin" v-for="(item, index) in 20" :key="index" @click="goto(item)">
<view class="icon">
<u-icon name="../../static/maskets/bye.png" size="40rpx" width="40rpx"></u-icon>
</view>
@ -44,7 +44,14 @@ export default {
}
},
methods: {
/**
* 跳转
*/
goto(data) {
uni.navigateTo({
url: '/pages/markets/trade',
});
},
}
}

82
pages/markets/trade.vue

@ -0,0 +1,82 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ 'BTC/USDT' }}<view slot="right" class="right" @click="goto('kLine')"></view>
</navigation>
<view class="content">
<view class="transactionSide">
<!-- <tradePanel ref="trade" :type="type"></tradePanel> -->
<transaction></transaction>
</view>
<view class="positionSide">
<!-- <positionList v-on:depthChange="depthChange"></positionList> -->
</view>
</view>
<view class="uni-gap"></view>
<!-- <entrustOrderList></entrustOrderList> -->
<!-- <uni-drawer :visible="drawerVisible" mask="false" mode="left" @close="closeDrawer">
<marketDrawer :areaList="areaList" :marketList="marketList"></marketDrawer>
</uni-drawer> -->
</view>
</template>
<script>
import transaction from '../../components/transaction/transaction.vue';
export default {
components: { transaction },
name: "trade",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("markets");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
width: 48rpx;
height: 48rpx;
position: absolute;
right: 32rpx;
font-size: 24rpx;
background-image: url(../../static/home/ic_increase.png);
background-repeat: no-repeat;
background-size: 48rpx;
color: #FFBC1F;
}
.content {
margin-top: 200rpx;
padding: 40rpx;
.transactionSide{
width: 444rpx;
margin-left: 28rpx;
}
}
}
</style>

2
pages/me/accountInfo.vue

@ -51,8 +51,10 @@ export default {
url = '/pages/me/changeWithdrawalPassword'
break;
case 'BankCard':
url = '/pages/withdrawal/addOrEditBankCard?mode=accountInfo'
break;
case 'WithdrawalAddress':
url = '/pages/withdrawal/chooseAddress?form=accountInfo'
break;
default:
break;

6
pages/me/index.vue

@ -110,6 +110,12 @@ export default {
const id = e.target.id;
let url = '';
switch (id) {
case 'recharge':
url = '/pages/recharge/recharge'
break;
case 'withdrawal':
url = '/pages/withdrawal/withdrawal'
break;
case 'transfer':
url = '/pages/me/transfer'
break;

2
pages/me/transfer.vue

@ -34,7 +34,7 @@
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseEnterNumber">
</u-input>
<view class="numberDownSelect">USDT <view class="all">ALL</view>
<view class="numberDownSelect">USDT <view class="all">{{i18n.ALL}}</view>
</view>
</view>
<view class="Usable">{{ i18n.Usable }} <view class="number">560878.90000000</view>

125
pages/mine/mine.vue

@ -0,0 +1,125 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.MinePool }}</navigation>
<view class="poolContent">
<!-- pool选择框 -->
<view class="pool-item" v-for="(item, index) in 4" :key="index">
<u-icon class="icon" :name="'../../static/mine/img_mine01.png'" size="92rpx" width="92rpx"></u-icon>
<view class="right">
<view class="title">0.1 BTC 30 days</view>
<view class="description">every time lock 0.1 BTC,Lock 30 Mine poolLock,to produce 300 ACTA per 1
day</view>
</view>
<u-button class="button" @click="gotoDetails(index)" color="#00E8A2" throttleTime="500">{{ i18n.OpenMine }}</u-button>
</view>
</view>
</view>
</template>
<script>
export default {
name: "mine",
data() {
return {
pageState: 'coinRecharge',
coin: '',
USDTPopupShow: false,
USDTRadioValue: '',
selectNumberValue: 100,
selectMethod: '1',
};
},
computed: {
i18n() {
return this.$t("mine");
},
},
onLoad() {
},
onShow() { },
methods: {
gotoDetails(index) {
console.log(index);
uni.navigateTo({
url: `/pages/mine/mineDetails?id=${index}`
});
},
},
}
</script>
<style lang="scss" scoped>
.main {
.poolContent {
overflow: hidden;
margin-top: 200rpx;
padding: 0 60rpx;
.pool-item {
position: relative;
background: #211F32;
margin-top: 32rpx;
padding: 32rpx 24rpx;
background-image: url(../../static/mine/Line.png);
background-repeat: no-repeat;
background-size: 630rpx 2rpx;
.icon {
display: inline-block;
width: 92rpx;
margin-top: 10rpx;
margin-right: 28rpx;
border-radius: 16rpx;
vertical-align: top;
}
.right {
display: inline-block;
width: 460rpx;
.title {
font-weight: 600;
width: 460rpx;
height: 52rpx;
line-height: 52rpx;
font-size: 32rpx;
}
.description {
width: 460rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
.button {
height: 64rpx;
line-height:64rpx;
font-size: 28rpx;
color: #15141F !important;
margin-top: 48rpx;
border-radius: 16rpx;
text-align: center;
font-weight: 600;
}
&:last-child{
margin-bottom: 80rpx;
}
}
}
}
</style>

233
pages/mine/mineDetails.vue

@ -0,0 +1,233 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.MineDetails }}<view slot="right" class="right" @click="goto('mineRecord')">{{ i18n.Record }}
</view>
</navigation>
<view class="content">
<view class="card">
<view class="top">
<u-icon class="icon" :name="'../../static/mine/coinLogo.png'" size="80rpx" width="80rpx"></u-icon>
<view class="title">{{ i18n.YourBTC }}</view>
<view class="coinValue">{{ coinValue }}</view>
</view>
<view class="bottom">
<view class="item">
<view class="title">{{ i18n.LockBTC }}</view>
<view class="value">0.1</view>
</view>
<view class="item">
<view class="title">{{ i18n.dayproduce }}</view>
<view class="value">300 ACTA</view>
</view>
<view class="item">
<view class="title">{{ i18n.MinLockTime }}</view>
<view class="value">30{{ i18n.days }}</view>
</view>
</view>
</view>
<input class="input" v-model="codeValue" focus :placeholder="i18n.invuteCode"
placeholder-style="color:#A1A0A8" />
<view class="allItem">
<input class="input" v-model="coinQuantity" :placeholder="i18n.lockBTC"
placeholder-style="color:#A1A0A8" />
<view class="all">{{ i18n.ALL }}</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="true">{{ i18n.LockBTCBtn }}
</u-button>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
export default {
name: "mineDetails",
data() {
return {
coinValue: 1000.001,
codeValue: '',
coinQuantity: '',
};
},
computed: {
i18n() {
return this.$t("mine");
},
},
onLoad() {
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'mineRecord':
url = '/pages/mine/mineRecord'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(value = "") {
console.log(value)
uniCopy({
content: value,
success: (res) => {
uni.showToast({
title: "复制成功",
duration: 3000,
})
},
error: (e) => {
uni.showToast({
title: e,
icon: 'none',
duration: 2000,
})
}
})
},
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.content {
overflow: hidden;
margin-top: 200rpx;
padding: 0 32rpx;
.card {
margin-top: 40rpx;
height: 274rpx;
padding: 0 24rpx;
background-image: url(../../static/mine/bg_mine.png);
background-repeat: no-repeat;
background-size: 686rpx 274rpx;
.top {
display: flex;
height: 132rpx;
border-bottom: 2rpx solid rgba(255, 255, 255, 0.2);
.icon {
margin: 0 24rpx 0 16rpx;
}
.title {
font-size: 28rpx;
line-height: 136rpx;
}
.coinValue {
flex: 1;
text-align: right;
font-size: 68rpx;
line-height: 144rpx;
padding-right: 20rpx;
}
}
.bottom {
display: flex;
height: 140rpx;
padding: 0 20rpx;
.item {
flex: 1;
.title {
font-size: 20rpx;
line-height: 64rpx;
}
.value {
font-size: 35rpx;
line-height: 40rpx;
font-weight: 600;
}
&:nth-child(1) {
text-align: left;
}
&:nth-child(2) {
text-align: center;
}
&:nth-child(3) {
text-align: right;
}
}
}
}
.input {
margin-top: 32rpx;
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 32rpx;
font-size: 26rpx;
color: #fff;
}
.allItem {
position: relative;
.all {
position: absolute;
display: inline;
font-size: 20rpx;
color: #00E8A2;
top: 44rpx;
right: 30rpx;
}
}
.button {
margin-top: 60rpx;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
color: #15141F !important;
font-weight: bold;
}
}
}
</style>

80
pages/mine/mineRecord.vue

@ -0,0 +1,80 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.MinePool }}</navigation>
<!-- 数据为空格显示 -->
<u-empty :show="dataList.length === 0" marginTop="350rpx" :text="i18n.NoData" textColor="#818197"
textSize="36rpx" icon="../../static/mine/img_data.png"></u-empty>
<view class="content" v-if="dataList.length > 0">
<view class="dataBody" v-for="(item, index) in 4" :key="index">
<Key-value-row :keyName="i18n.BaseCoin" :value="'100BTC'" ></Key-value-row>
<Key-value-row :keyName="i18n.ProfitCoin" :value="'CEH'"></Key-value-row>
<Key-value-row :keyName="i18n.DayRebate" :value="'75000'"></Key-value-row>
<u-divider text="" lineColor="#B9C1D9"></u-divider>
<Key-value-row :keyName="i18n.RebateDay" :value="'0/120'"></Key-value-row>
<Key-value-row :keyName="i18n.RebateAmount" :value="'150000/9000000'"></Key-value-row>
<u-divider text="" lineColor="#B9C1D9"></u-divider>
<Key-value-row :keyName="i18n.AddTime" :value="'2022/08/06 14:50:34'"></Key-value-row>
<Key-value-row :keyName="i18n.ReleaseTime" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "mineRecord",
data() {
return {
dataList: [{}],
};
},
computed: {
i18n() {
return this.$t("mine");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.content {
margin-top: 200rpx;
padding: 32rpx;
.dataBody {
margin-bottom: 32rpx;
padding: 32rpx;
box-sizing: border-box;
background: #211F32;
border-radius: 20rpx;
.text {
margin-top: 20rpx;
padding: 10rpx 16rpx;
background: #323045;
border-radius: 8rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
}
}
</style>

527
pages/recharge/recharge.vue

@ -0,0 +1,527 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Recharge }}<view slot="right" class="right" @click="goto('rechargeRecord')">{{ i18n.Record
}}
</view>
</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'coinRecharge'"
:class="{ select: pageState === 'coinRecharge' }">
{{ i18n.CoinRecharge }}
</view>
<view class="headItem" @click="pageState = 'cashRecharge'"
:class="{ select: pageState === 'cashRecharge' }">
{{ i18n.CashRecharge }}
</view>
</view>
<view class="coinContent" v-if="pageState === 'coinRecharge'">
<!-- coin选择框 -->
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">USDT
</view>
</view>
<view class="coin-item">
<view class="QRCode">
<u-image class="QRCodeImg" src="../../static/me/QR-code.png" width="310rpx" height="310rpx">
</u-image>
</view>
<view class="CoinAddressTitle">{{ i18n.CoinDepositAddress }}</view>
<view class="Copy" @click="copyAddress('123')">{{ i18n.CopyAddress }}</view>
<view class="CoinAddress">{{ 'MBDLNKJ9080FWO83RHFKSJLIRJF9S9890DKJ90' }}</view>
<u-divider text="" :dashed="true"></u-divider>
<view class="ScanQR">{{ i18n.ScanQR }}</view>
</view>
<view class="message-item">
{{ i18n.message }}
</view>
<!-- USDT按钮通知弹出层 -->
<u-popup class="USDTPopup" :show="USDTPopupShow" round="40rpx" mode="bottom" @close="USDTPopupShow = false"
@open="USDTPopupShow = true" bgColor="#211F32">
<view class="content">
<view class="close" @click="USDTPopupShow = false"></view>
<scroll-view scroll-y="true" style="height: 432rpx;" scroll-with-animation="true" @touchmove.stop>
<radio-group class="radioGroup" @change="USDTRadioChange" v-model="USDTRadioValue">
<label class="checkBox" v-for="(item, index) in 10" :key="index">
<view class="icon">
<u-icon name="../../static/maskets/logo.png" size="64rpx" width="64rpx"></u-icon>
</view>
<view class="iconName">
<view class="top">USDT</view>
<view class="bottom">BTC</view>
</view>
<radio color="#00E8A2" shape="square"></radio>
</label>
</radio-group>
</scroll-view>
<u-button class="button" color="#00E8A2" throttleTime="500" @click="USDTPopupShow = false">OK
</u-button>
</view>
</u-popup>
</view>
<view class="cashContent" v-if="pageState === 'cashRecharge'">
<view class="enter">
<view class="selectTitle">{{ i18n.selectAmount }}</view>
<view class="numberSelect">
<view class="item" :class="{ select: selectNumberValue === 100 }" @click="selectNumberValue = 100">
$100
</view>
<view class="item" :class="{ select: selectNumberValue === 200 }" @click="selectNumberValue = 200">
$200
</view>
<view class="item" :class="{ select: selectNumberValue === 300 }" @click="selectNumberValue = 300">
$300
</view>
<view class="item" :class="{ select: selectNumberValue === 1000 }"
@click="selectNumberValue = 1000">
$1000</view>
<view class="item" :class="{ select: selectNumberValue === 5000 }"
@click="selectNumberValue = 5000">
$5000</view>
<view class="item" :class="{ select: selectNumberValue === 10000 }"
@click="selectNumberValue = 10000">
$10000</view>
</view>
<input class="input" v-model="selectNumberValue" focus :placeholder="i18n.EnterNumber" placeholder-style="color:#A1A0A8" />
</view>
<view class="RechargeMethod">
<view class="methodTitle">{{ i18n.RechargeMethod }}</view>
<view class="methodSelect">
<view class="item" :class="{ select: selectMethod === '1' }" @click="selectMethod = '1'">
Online payment1
</view>
<view class="item" :class="{ select: selectMethod === '2' }" @click="selectMethod = '2'">
Online payment2
</view>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500">{{ i18n.Submit }}
</u-button>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
export default {
name: "recharge",
data() {
return {
pageState: 'coinRecharge',
coin: '',
USDTPopupShow: false,
USDTRadioValue: '',
selectNumberValue: 100,
selectMethod: '1',
};
},
computed: {
i18n() {
return this.$t("recharge");
},
},
onLoad() {
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'rechargeRecord':
url = '/pages/recharge/rechargeRecord'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(value = "") {
console.log(value)
uniCopy({
content: value,
success: (res) => {
uni.showToast({
title: "复制成功",
duration: 3000,
})
},
error: (e) => {
uni.showToast({
title: e,
icon: 'none',
duration: 2000,
})
}
})
},
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.head {
margin-top: 200rpx;
margin-left: 60rpx;
width: 632rpx;
display: flex;
justify-content: space-around;
align-items: center;
padding: 48rpx 0;
.headItem {
width: 300rpx;
height: 68rpx;
line-height: 68rpx;
background: #211F32;
border-radius: 16rpx;
text-align: center;
font-size: 32rpx;
color: #A1A0A8;
&.select {
background: #00E8A2;
color: #15141F;
}
}
}
.coinContent {
padding: 0 32rpx;
.input-item {
overflow: hidden;
position: relative;
height: 124rpx;
line-height: 124rpx;
background: #211F32;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
width: 460rpx;
height: 124rpx;
display: inline-block;
}
.selectCoinBtn {
position: absolute;
width: 170rpx;
height: 54rpx;
top: 36rpx;
right: 32rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
}
.coin-item {
height: 622rpx;
background: #211F32;
border-radius: 10px;
overflow: hidden;
padding: 0 40rpx;
.QRCode {
margin: 60rpx auto 32rpx;
width: 310rpx;
}
.CoinAddressTitle {
width: 340rpx;
height: 40rpx;
font-size: 14px;
display: inline-block;
color: #00E8A2;
}
.Copy {
position: relative;
height: 40rpx;
display: inline-block;
color: #00E8A2;
font-size: 20rpx;
margin-left: 70rpx;
padding-left: 40rpx;
&::before {
display: block;
position: absolute;
content: '';
background-image: url(../../static/recharge/ic_copy.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 0rpx;
left: 0rpx;
}
}
.CoinAddress {
margin-top: 12rpx;
font-size: 20rpx;
// transform: scale(0.83333);
// transform-origin: 0 0;
color: #A1A0A8;
}
.ScanQR {
font-size: 20rpx;
// transform: scale(0.83333);
// transform-origin: 0 0;
color: #A1A0A8;
}
}
.message-item {
margin: 32rpx 0 120rpx;
padding: 0 16rpx;
font-size: 24rpx;
color: #A1A0A8;
}
.USDTPopup {
.content {
height: 730rpx;
.close {
margin: 48rpx 346rpx;
width: 58rpx;
height: 20rpx;
background-image: url(../../static/charity/Turn.png);
background-repeat: no-repeat;
background-size: 58rpx 20rpx;
}
.radioGroup {
height: 432rpx;
.checkBox {
height: 84rpx;
width: 670rpx;
display: flex;
align-items: center;
margin: 0 40rpx 32rpx;
.icon {
width: 64rpx;
height: 64rpx;
border-radius: 20rpx;
overflow: hidden;
display: inline-block;
box-sizing: border-box;
margin-right: 20rpx;
}
.iconName {
width: 520rpx;
.top {
font-size: 32rpx;
color: #fff;
}
.bottom {
font-size: 24rpx;
color: #A1A0A8;
}
}
/deep/.uni-radio-input {
width: 48rpx;
height: 48rpx;
border-radius: 16rpx;
background: #323045;
}
/deep/.uni-radio-input-checked::before {
font-size: 36rpx;
}
}
}
.button {
width: 654rpx;
margin: 40rpx 48rpx;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
color: #15141F !important;
}
}
}
}
.cashContent {
.enter {
box-sizing: border-box;
height: 422rpx;
margin: 0 32rpx;
background: #211F32;
border-radius: 20rpx;
padding: 24rpx 32rpx;
.selectTitle {
font-size: 24rpx;
}
.numberSelect {
margin-top: 32rpx;
height: 168rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
align-content: space-between;
flex-wrap: wrap;
.item {
height: 68rpx;
line-height: 68rpx;
width: 186rpx;
color: #A1A0A8;
background: #323045;
border-radius: 40rpx;
text-align: center;
font-size: 32rpx;
&.select {
background: #FF844B;
color: #FFFFFF;
}
}
}
.input {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-top: 32rpx;
color: #fff;
}
}
.RechargeMethod {
box-sizing: border-box;
height: 178rpx;
margin: 32rpx;
background: #211F32;
border-radius: 20rpx;
padding: 24rpx 32rpx;
.methodTitle {
font-size: 24rpx;
}
.methodSelect {
margin-top: 32rpx;
height: 112rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
align-content: space-between;
flex-wrap: wrap;
.item {
height: 68rpx;
line-height: 68rpx;
width: 306rpx;
color: #A1A0A8;
background: #323045;
border-radius: 40rpx;
text-align: center;
font-size: 32rpx;
&.select {
background: #FF844B;
color: #FFFFFF;
}
}
}
}
.button {
width: 686rpx;
box-sizing: border-box;
height: 112rpx;
margin: 16rpx 32rpx;
background: #00E8A2;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
}
}
</style>

159
pages/recharge/rechargeRecord.vue

@ -0,0 +1,159 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.RechargeRecord }}</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'coinRecharge'"
:class="{ select: pageState === 'coinRecharge' }">
{{ i18n.CoinRecharge }}
</view>
<view class="headItem" @click="pageState = 'cashRecharge'"
:class="{ select: pageState === 'cashRecharge' }">
{{ i18n.CashRecharge }}
</view>
</view>
<view class="cardList">
<view class="card" v-for="(item, index) in 4" :key="index">
<!-- 卡片条件渲染 -->
<!-- balance -->
<card-header v-if="pageState === 'coinRecharge'" iconName="../../static/recharge/money-recive.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'coinRecharge'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:0rpx 32rpx; margin-bottom: 20rpx;">
<show-more>
<Key-value-row :keyName="i18n.Address" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<Key-value-row :keyName="i18n.Hash" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity
verific
</view>
</show-more>
</view>
</view>
<!-- contarct -->
<card-header v-if="pageState === 'cashRecharge'" iconName="../../static/recharge/money-recive.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'cashRecharge'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:0rpx 32rpx; margin-bottom: 20rpx;">
<show-more>
<Key-value-row :keyName="i18n.USDTRate" :value="'19298'"></Key-value-row>
<Key-value-row :keyName="i18n.USDT" :value="'298237'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity
verific
</view>
</show-more>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
import CardHeader from '../../components/cardHeader/cardHeader.vue';
import ShowMore from '../../components/showMore/showMore.vue';
export default {
components: { KeyValueRow, CardHeader, ShowMore },
name: "rechargeRecord",
data() {
return {
pageState: 'coinRecharge',
};
},
computed: {
i18n() {
return this.$t("recharge");
},
},
onLoad() {
},
onShow() { },
methods: {
change(e) {
console.log(e);
}
},
}
</script>
<style lang="scss" scoped>
.main {
.head {
margin-top: 200rpx;
margin-left: 60rpx;
width: 632rpx;
display: flex;
justify-content: space-around;
align-items: center;
padding: 48rpx 0;
.headItem {
width: 300rpx;
height: 68rpx;
line-height: 68rpx;
background: #211F32;
border-radius: 16rpx;
text-align: center;
font-size: 32rpx;
color: #A1A0A8;
&.select {
background: #00E8A2;
color: #15141F;
}
}
}
.cardList {
padding-bottom: 40rpx;
.card {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
margin: 0 32rpx 32rpx;
.dataBody {
box-sizing: border-box;
.text {
margin-top: 20rpx;
padding: 10rpx 16rpx;
background: #323045;
border-radius: 8rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
}
}
}
</style>

352
pages/withdrawal/addAddress.vue

@ -0,0 +1,352 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.AddAddress }} </navigation>
<view class="body">
<!-- coin选择框 -->
<view class="choose-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">USDT
</view>
</view>
<view class="addressBody">
<view class="address-title">{{ i18n.Address }}</view>
<view class="input-item">
<u-input class="input" v-model="address" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterAddressTips">
</u-input>
</view>
<view class="address-title">{{ i18n.Remarks }}</view>
<view class="input-item">
<u-input class="input" v-model="remarks" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterRemarksTips">
</u-input>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="btnIsCanClick">{{ i18n.Confirm }}
</u-button>
<!-- USDT按钮通知弹出层 -->
<u-popup class="USDTPopup" :show="USDTPopupShow" round="40rpx" mode="bottom" @close="USDTPopupShow = false"
@open="USDTPopupShow = true" bgColor="#211F32">
<view class="content">
<view class="close" @click="USDTPopupShow = false"></view>
<scroll-view scroll-y="true" style="height: 432rpx;" scroll-with-animation="true" @touchmove.stop>
<radio-group class="radioGroup" @change="USDTRadioChange" v-model="USDTRadioValue">
<label class="checkBox" v-for="(item, index) in 10" :key="index">
<view class="icon">
<u-icon name="../../static/maskets/logo.png" size="64rpx" width="64rpx"></u-icon>
</view>
<view class="iconName">
<view class="top">USDT</view>
<view class="bottom">BTC</view>
</view>
<radio color="#00E8A2" shape="square"></radio>
</label>
</radio-group>
</scroll-view>
<u-button class="button" color="#00E8A2" throttleTime="500" @click="USDTPopupShow = false">OK
</u-button>
</view>
</u-popup>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "withdrawal",
data() {
return {
coin: '',
address: '',
address: '',
USDTRadioValue: '',
USDTPopupShow: false,
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { // 按钮是否可以点击
if (this.coin && this.address && this.address) {
return false; // 有值才可以点
}else{
return true
}
}
},
onLoad() {
// 监听事件
uni.$on('coinAddressChang', (data) => {
this.coinAddress = data.coinAddress
})
},
onUnload() {
// 移除监听事件
uni.$off('coinAddressChang');
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'withdrawalRecord':
url = '/pages/withdrawal/withdrawalRecord'
break;
case 'chooseAddress':
url = '/pages/withdrawal/chooseAddress?form=withdrawal'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(value = "") {
console.log(value)
uniCopy({
content: value,
success: (res) => {
uni.showToast({
title: "复制成功",
duration: 3000,
})
},
error: (e) => {
uni.showToast({
title: e,
icon: 'none',
duration: 2000,
})
}
})
},
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.body {
margin-top: 200rpx;
padding: 32rpx;
}
.choose-item {
overflow: hidden;
position: relative;
height: 124rpx;
line-height: 124rpx;
background: #211F32;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
width: 460rpx;
height: 124rpx;
display: inline-block;
}
.selectCoinBtn {
position: absolute;
width: 170rpx;
height: 54rpx;
top: 36rpx;
right: 32rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
.all {
position: absolute;
display: inline;
font-size: 20rpx;
color: #00E8A2;
top: 0rpx;
right: 30rpx;
}
}
.addressBody {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
.address-title {
font-size: 32rpx;
color: #A1A0A8;
margin-bottom: 20rpx;
}
.input-item {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-bottom: 20rpx;
.input {
height: 112rpx;
}
}
}
.button {
position: fixed;
bottom: 40rpx;
width: 686rpx;
box-sizing: border-box;
height: 112rpx;
background: #00E8A2;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
.USDTPopup {
.content {
height: 730rpx;
.close {
margin: 48rpx 346rpx;
width: 58rpx;
height: 20rpx;
background-image: url(../../static/charity/Turn.png);
background-repeat: no-repeat;
background-size: 58rpx 20rpx;
}
.radioGroup {
height: 432rpx;
.checkBox {
height: 84rpx;
width: 670rpx;
display: flex;
align-items: center;
margin: 0 40rpx 32rpx;
.icon {
width: 64rpx;
height: 64rpx;
border-radius: 20rpx;
overflow: hidden;
display: inline-block;
box-sizing: border-box;
margin-right: 20rpx;
}
.iconName {
width: 520rpx;
.top {
font-size: 32rpx;
color: #fff;
}
.bottom {
font-size: 24rpx;
color: #A1A0A8;
}
}
/deep/.uni-radio-input {
width: 48rpx;
height: 48rpx;
border-radius: 16rpx;
background: #323045;
}
/deep/.uni-radio-input-checked::before {
font-size: 36rpx;
}
}
}
.button {
width: 654rpx;
margin: 40rpx 48rpx;
border-radius: 32rpx;
height: 112rpx;
font-weight: 600;
line-height: 112rpx;
color: #15141F !important;
}
}
}
}
</style>

138
pages/withdrawal/addOrEditBankCard.vue

@ -0,0 +1,138 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ pageState === 'addBank' ? i18n.AddBankInformation : i18n.EditBankInformation }}</navigation>
<view class="content">
<view class="inputBody">
<view class="title">{{ i18n.FirstName }}</view>
<view class="input-item">
<u-input class="input" v-model="name" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterName">
</u-input>
</view>
<view class="title">{{ i18n.Account }}</view>
<view class="input-item">
<u-input class="input" v-model="account" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterAccount">
</u-input>
</view>
</view>
<view class="inputBody">
<view class="title">{{ i18n.BankName }}</view>
<view class="input-item">
<u-input class="input" v-model="bankName" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterBankName">
</u-input>
</view>
<view class="title">{{ i18n.BankCode }}</view>
<view class="input-item">
<u-input class="input" type="password" v-model="bankCode" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.enterBankCode">
</u-input>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="btnIsCanClick">{{ i18n.Confirm }}
</u-button>
</view>
</view>
</template>
<script>
export default {
name: "withdrawalRecord",
data() {
return {
pageState: 'addBank', // 页面状态,是添加还是编辑银行卡
name: '',
account: '',
bankName: '',
bankCode: '',
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { // 按钮是否可以点击
if (this.name && this.account && this.bankName && this.bankCode) {
return false; // 有值才可以点
} else {
return true
}
}
},
onLoad(option) {
console.log(option);
this.pageState = option.mode || 'addBank';
},
onShow() { },
methods: {
change(e) {
console.log(e);
}
},
}
</script>
<style lang="scss" scoped>
.main {
.content {
margin-top: 200rpx;
padding: 32rpx;
.inputBody {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 32rpx;
.title {
font-size: 32rpx;
color: #A1A0A8;
margin-bottom: 20rpx;
}
.input-item {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-bottom: 20rpx;
.input {
height: 112rpx;
}
}
}
.button {
position: fixed;
bottom: 40rpx;
width: 686rpx;
box-sizing: border-box;
height: 112rpx;
background: #00E8A2;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
}
}
</style>

289
pages/withdrawal/chooseAddress.vue

@ -0,0 +1,289 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.ChooseAddress }}<view slot="right" class="right" @click="editFlag = !editFlag;">{{
editFlag ? i18n.OK : i18n.Edit
}}
</view>
</navigation>
<view class="content">
<view class="message-item">
{{ i18n.message4 }}
</view>
<view class="message-item last">
{{ i18n.message5 }}
</view>
<view class="card" v-if="coinList.length > 0">
<view class="dataBody" v-for="(item, index) in 4" :key="index">
<view class="coinTitle">USDT</view>
<view class="addressItem" v-for="(addressItem, addressIndex) in 2" :key="addressIndex"
@click="itemClick(index, addressIndex)">
<view class="radio"
:class="{ select: (editCoinIndex === index && editCoinAddressIndex === addressIndex) }"
v-if="editFlag"></view>
<view class="addressInfo">
<view class="addressTitle">{{ i18n.myOmniAddress }}</view>
<view class="address">SDIHJSD9809U9ERF9IOU0980970</view>
<view class="time">2022/08/06 14:50:34</view>
</view>
</view>
</view>
</view>
<!-- 确认框 -->
<u-modal :show="modalShow" :confirmText="i18n.OK" :cancelText="i18n.Cancel" :showCancelButton="true"
:title="i18n.WarmTips" :content='i18n.WarmTipsText' @confirm="deleteAddress" @cancel="modalShow = false"
confirmColor="#00E8A2">
</u-modal>
<!-- 编辑按钮 -->
<view class="buttonBg">
<u-button class="button" :color="editFlag ? '#F4506A' : '#00E8A2'" throttleTime="500" @click="btnClick"
:disabled="btnIsCanClick">
{{ editFlag ? i18n.DeleteAddress : i18n.AddAddress }}
</u-button>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "chooseAddress",
data() {
return {
coinList: [{}],
coinAddressList: [{}],
editFlag: false, // 是否在编辑状态
editCoinIndex: '',
editCoinAddressIndex: '',
coinAddress: 'SDIHJSD9809U9ERF9IOU0980970',
currentCoin: 'USDT',
modalShow: false,
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { // 按钮是否可以点击
if (this.editFlag) {
// console.log(`${this.editCoinIndex}` ? false : true);
return `${this.editCoinIndex}` ? false : true; // 在编辑模式,有值才能点
} else {
return false; // 不在编辑模式始终可以点
}
}
},
onLoad() {
},
onShow() { },
methods: {
itemClick(index, addressIndex) {
// 编辑模式下
if (this.editFlag) {
// console.log(index, addressIndex);
if (this.editCoinIndex === index && this.editCoinAddressIndex === addressIndex) { // 取消选择
this.editCoinIndex = '';
this.editCoinAddressIndex = '';
} else { // 选择
this.editCoinIndex = index;
this.editCoinAddressIndex = addressIndex;
}
} else {
// 选择地址情况下 点击地址返回传参有问题 可能要通用vuex解决
uni.$emit('coinAddressChang', {
coinAddress: this.coinAddress,
});
uni.navigateBack()
}
},
btnClick() {
// 在编辑模式弹出确认框
if (this.editFlag) {
this.modalShow = true
} else {
// 在非编辑模式下直接跳转
uni.navigateTo({
url : '/pages/withdrawal/addAddress'
});
}
},
deleteAddress() {
this.modalShow = false;
console.log('deleteAddress');
},
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
width: 82rpx;
height: 56rpx;
line-height: 56rpx;
position: absolute;
right: 32rpx;
font-size: 24rpx;
background: rgba(246, 166, 9, 0.1);
border-radius: 8px;
color: #FFBC1F;
}
.content {
margin-top: 200rpx;
padding: 40rpx;
.message-item {
padding: 0 16rpx;
font-size: 24rpx;
color: #A1A0A8;
line-height: 36rpx;
&.last {
margin-bottom: 30rpx;
}
}
.card {
.dataBody {
margin-bottom: 32rpx;
padding: 32rpx;
box-sizing: border-box;
background: #211F32;
border-radius: 20rpx;
.coinTitle {
font-size: 24rpx;
line-height: 28rpx;
margin-bottom: 32rpx;
}
.addressItem {
height: 180rpx;
box-sizing: border-box;
padding: 32rpx 0;
border-top: 2rpx solid #323045;
display: flex;
.radio {
margin-top: 32rpx;
margin-right: 24rpx;
box-sizing: border-box;
width: 48rpx;
height: 48rpx;
background: #323045;
border: 3rpx solid #DCDBE0;
border-radius: 16rpx;
&.select {
background-image: url(../../static/withdrawal/Checkbox_pr.png);
background-repeat: no-repeat;
background-size: 48rpx;
border: none;
}
}
.addressInfo {
flex: 1;
.addressTitle {
position: relative;
font-size: 24rpx;
margin-bottom: 20rpx;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/charity/ic_ma_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 0rpx;
right: 0rpx;
transform: rotate(270deg);
}
}
.address {
font-size: 24rpx;
line-height: 28rpx;
color: #A1A0A8;
}
.time {
font-size: 24rpx;
line-height: 28rpx;
color: #A1A0A8;
}
}
}
&:last-child {
margin-bottom: 160rpx;
}
}
}
/deep/.u-popup__content {
background: #323045;
.u-modal__title {
color: #fff;
}
.u-modal__content__text {
text-align: center;
}
}
.buttonBg {
position: fixed;
bottom: 0rpx;
background-color: #15141F;
.button {
width: 670rpx;
box-sizing: border-box;
height: 112rpx;
margin-bottom: 40rpx;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
}
}
}
</style>

688
pages/withdrawal/withdrawal.vue

@ -0,0 +1,688 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Withdrawal }}<view slot="right" class="right" @click="goto('withdrawalRecord')">{{
i18n.Record
}}
</view>
</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'digitalCurrency'"
:class="{ select: pageState === 'digitalCurrency' }">
{{ i18n.DigitalCurrency }}
</view>
<view class="headItem" @click="pageState = 'onLine'" :class="{ select: pageState === 'onLine' }">
{{ i18n.OnLine }}
</view>
</view>
<view class="DCContent" v-if="pageState === 'digitalCurrency'">
<!-- coin选择框 -->
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">USDT
</view>
</view>
<view class="coin-item">
<!-- choose地址 -->
<view class="title">{{ i18n.WithdrawAddress }}
<view class="choose" @click="goto('chooseAddress')">{{ i18n.Choose }}</view>
</view>
<!-- 地址 -->
<view class="address" v-if="coinAddress">{{ coinAddress }}
</view>
<!-- 分割线 -->
<u-divider text="" lineColor="#B9C1D9"></u-divider>
<!-- 可用数量 -->
<Key-value-row :keyName="i18n.Quantity" :value="`${i18n.Available} ${AvailableValue} ${currentCoin}`"
rightColor="#A1A0A8"></Key-value-row>
<!-- 数量输入框 -->
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.EnterTheQuantity">
</u-input>
<view class="all">{{ i18n.ALL }}</view>
</view>
<!-- 最低体现金额 -->
<Key-value-row :keyName="i18n.MinimumWithdrawAmount" size="24rpx"
:value="`${AvailableValue} ${currentCoin}`" rightColor="#A1A0A8"></Key-value-row>
<!-- 手续费 -->
<Key-value-row :keyName="i18n.HandlingFee" size="24rpx" :value="`${AvailableValue} ${currentCoin}`"
rightColor="#A1A0A8"></Key-value-row>
</view>
<view class="message-item first">
{{ i18n.message1 }}
</view>
<view class="message-item">
{{ i18n.message2 }}
</view>
<view class="message-item last">
{{ i18n.message3 }}
</view>
<u-button class="withdrawBtn" color="#00E8A2" throttleTime="500">{{ i18n.withdraw }}
</u-button>
<!-- USDT按钮通知弹出层 -->
<u-popup class="USDTPopup" :show="USDTPopupShow" round="40rpx" mode="bottom" @close="USDTPopupShow = false"
@open="USDTPopupShow = true" bgColor="#211F32">
<view class="content">
<view class="close" @click="USDTPopupShow = false"></view>
<scroll-view scroll-y="true" style="height: 432rpx;" scroll-with-animation="true" @touchmove.stop>
<radio-group class="radioGroup" @change="USDTRadioChange" v-model="USDTRadioValue">
<label class="checkBox" v-for="(item, index) in 10" :key="index">
<view class="icon">
<u-icon name="../../static/maskets/logo.png" size="64rpx" width="64rpx"></u-icon>
</view>
<view class="iconName">
<view class="top">USDT</view>
<view class="bottom">BTC</view>
</view>
<radio color="#00E8A2" shape="square"></radio>
</label>
</radio-group>
</scroll-view>
<u-button class="button" color="#00E8A2" throttleTime="500" @click="USDTPopupShow = false">
{{ i18n.OK }}
</u-button>
</view>
</u-popup>
</view>
<view class="OLContent" v-if="pageState === 'onLine'">
<view class="bankCard" v-if="!ifNextStep">
<view class="header">
<view class="bankTitle">{{ i18n.BankCardWithdrawal }}</view>
<view class="BeneficiaryTitle">{{ i18n.Beneficiary }}</view>
</view>
<view class="addBankCardBtn" v-if="!hasBankCard" @click="goto('addBankCard')">{{ i18n.AddBankCard }}
</view>
<view class="bankCardInfo" v-if="hasBankCard">
<view class="username">ZHOU JIELUN</view>
<view class="BankCardCode">4349 9545 9893 9854 027</view>
<Key-value-row :keyName="'Bank of Melbourne'" size="24rpx" :value="'CODE98Y'" rightColor="#F2FE8D"
leftColor="#fff">
</Key-value-row>
</view>
</view>
<u-button class="editBankCardBtn" v-if="!ifNextStep && hasBankCard" @click="goto('editBankCard')"
color="#323045" throttleTime="500">{{ i18n.EditCard }}
</u-button>
<view class="nextStep" v-if="ifNextStep">
<view class="inputBody">
<view class="title">{{ i18n.WithdrawableAmount }}</view>
<view class="withdrawableAmount-item">
<view class="withdrawableAmount">₹ {{ withdrawableAmount }} </view>
</view>
<view class="title">{{ i18n.Amount }}</view>
<view class="input-item">
<u-input class="input" v-model="amount" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterAmount">
</u-input>
</view>
<view class="title">{{ i18n.PaymentPassword }}</view>
<view class="input-item">
<u-input class="input" type="password" v-model="paymentPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.enterPaymentPassword">
</u-input>
</view>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="btnIsCanClick" @click="btnClick">
{{ ifNextStep ? i18n.Withdrawal : i18n.NextStep }}
</u-button>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "withdrawal",
data() {
return {
pageState: 'digitalCurrency',
coinAddress: '',
AvailableValue: 3399,
currentCoin: 'USDT',
coin: '',
USDTPopupShow: false,
USDTRadioValue: '',
hasBankCard: true,
ifNextStep: false,
withdrawableAmount: '4680671.89',
amount: '',
paymentPassword: '',
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { // 按钮是否可以点击
if (this.hasBankCard && !this.ifNextStep) { // 在第一步,有银行卡可以点击
return false;
} if (this.amount && this.paymentPassword && this.ifNextStep) { // 在第二步,有值才可以点
return false;
} else {
return true
}
}
},
onLoad() {
// 监听事件
uni.$on('coinAddressChang', (data) => {
this.coinAddress = data.coinAddress
})
},
onUnload() {
// 移除监听事件
uni.$off('coinAddressChang');
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'withdrawalRecord':
url = '/pages/withdrawal/withdrawalRecord'
break;
case 'chooseAddress':
url = '/pages/withdrawal/chooseAddress?form=withdrawal'
break;
case 'addBankCard':
url = '/pages/withdrawal/addOrEditBankCard?mode=addBank'
break;
case 'editBankCard':
url = '/pages/withdrawal/addOrEditBankCard?mode=editBank'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(value = "") {
console.log(value)
uniCopy({
content: value,
success: (res) => {
uni.showToast({
title: "复制成功",
duration: 3000,
})
},
error: (e) => {
uni.showToast({
title: e,
icon: 'none',
duration: 2000,
})
}
})
},
btnClick() {
if (!this.ifNextStep) { // 第一步是切换到提现菜单
this.ifNextStep = true
}else{ // 提现逻辑
}
}
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.head {
margin-top: 200rpx;
margin-left: 60rpx;
width: 632rpx;
display: flex;
justify-content: space-around;
align-items: center;
padding: 48rpx 0;
.headItem {
width: 300rpx;
height: 68rpx;
line-height: 68rpx;
background: #211F32;
border-radius: 16rpx;
text-align: center;
font-size: 32rpx;
color: #A1A0A8;
&.select {
background: #00E8A2;
color: #15141F;
}
}
}
.DCContent {
padding: 0 32rpx;
.input-item {
overflow: hidden;
position: relative;
height: 124rpx;
line-height: 124rpx;
background: #211F32;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
width: 460rpx;
height: 124rpx;
display: inline-block;
}
.selectCoinBtn {
position: absolute;
width: 170rpx;
height: 54rpx;
top: 36rpx;
right: 32rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
.all {
position: absolute;
display: inline;
font-size: 20rpx;
color: #00E8A2;
top: 0rpx;
right: 30rpx;
}
}
.coin-item {
background: #211F32;
border-radius: 10px;
overflow: hidden;
padding: 30rpx 40rpx;
.title {
position: relative;
font-size: 32rpx;
color: #A1A0A8;
margin-bottom: 32rpx;
.choose {
position: absolute;
top: 0;
right: 0;
font-size: 36rpx;
color: #fff;
padding-right: 60rpx;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/charity/ic_ma_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
transform: rotate(270deg);
}
}
}
.address {
position: relative;
background: #323045;
border-radius: 16px;
color: #00E8A2;
font-size: 28rpx;
padding: 8rpx 20rpx 8rpx 68rpx;
// 超出字符省略成...
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box; //兼容
word-wrap: break-word;
white-space: normal !important;
-webkit-line-clamp: 1; //显示行数
-webkit-box-orient: vertical;
&::before {
display: block;
position: absolute;
content: '';
top: 20rpx;
left: 30rpx;
width: 16rpx;
height: 16rpx;
border-radius: 100%;
background: #00E8A2;
box-shadow: 0 8rpx 16rpx 0 rgba(0, 0, 0, .2);
}
}
.input-item {
margin-top: 36rpx;
background: #323045;
.input {
width: 486rpx;
}
}
}
.message-item {
padding: 0 16rpx;
font-size: 24rpx;
color: #A1A0A8;
line-height: 48rpx;
&.first {
margin-top: 30rpx;
}
&.last {
margin-bottom: 30rpx;
}
}
.withdrawBtn {
margin: 100rpx 0;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
font-weight: 600;
color: #15141F !important;
}
.USDTPopup {
.content {
height: 730rpx;
.close {
margin: 48rpx 346rpx;
width: 58rpx;
height: 20rpx;
background-image: url(../../static/charity/Turn.png);
background-repeat: no-repeat;
background-size: 58rpx 20rpx;
}
.radioGroup {
height: 432rpx;
.checkBox {
height: 84rpx;
width: 670rpx;
display: flex;
align-items: center;
margin: 0 40rpx 32rpx;
.icon {
width: 64rpx;
height: 64rpx;
border-radius: 20rpx;
overflow: hidden;
display: inline-block;
box-sizing: border-box;
margin-right: 20rpx;
}
.iconName {
width: 520rpx;
.top {
font-size: 32rpx;
color: #fff;
}
.bottom {
font-size: 24rpx;
color: #A1A0A8;
}
}
/deep/.uni-radio-input {
width: 48rpx;
height: 48rpx;
border-radius: 16rpx;
background: #323045;
}
/deep/.uni-radio-input-checked::before {
font-size: 36rpx;
}
}
}
.button {
width: 654rpx;
margin: 40rpx 48rpx;
border-radius: 32rpx;
height: 112rpx;
font-weight: 600;
line-height: 112rpx;
color: #15141F !important;
}
}
}
}
.OLContent {
.bankCard {
overflow: hidden;
box-sizing: border-box;
height: 360rpx;
margin: 0 64rpx;
border-radius: 32rpx;
background-image: url(../../static/withdrawal/bg_card.png);
background-repeat: no-repeat;
background-size: 622rpx 360rpx;
.header {
box-sizing: border-box;
height: 164rpx;
margin: 0 32rpx 0;
padding-top: 32rpx;
.bankTitle {
line-height: 60rpx;
font-size: 44rpx;
font-weight: 700;
}
.BeneficiaryTitle {
font-size: 24rpx;
line-height: 50rpx;
}
}
.addBankCardBtn {
box-sizing: border-box;
position: relative;
width: 558rpx;
height: 116rpx;
line-height: 116rpx;
background: #211F32;
border-radius: 32rpx;
margin: 34rpx 32rpx;
padding-left: 40rpx;
opacity: 1;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/withdrawal/add-circle.png);
background-repeat: no-repeat;
background-size: 48rpx;
width: 48rpx;
height: 48rpx;
top: 34rpx;
right: 52rpx;
}
&:active {
opacity: 0.6;
}
}
.bankCardInfo {
border-top: 2rpx solid #A1A0A8;
padding: 0 32rpx;
.username {
margin-top: 24rpx;
font-size: 24rpx;
}
.BankCardCode {
margin-top: 20rpx;
margin-bottom: 20rpx;
font-size: 24rpx;
color: #00E8A2;
}
}
}
.editBankCardBtn {
width: 622rpx;
height: 116rpx;
margin: 32rpx 64rpx;
border-radius: 16px;
font-size: 32rpx;
}
.nextStep {
.inputBody {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 32rpx;
.title {
font-size: 32rpx;
color: #A1A0A8;
margin-bottom: 20rpx;
}
.input-item {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-bottom: 20rpx;
.input {
height: 112rpx;
}
}
.withdrawableAmount-item {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-bottom: 20rpx;
.withdrawableAmount {
color: #00E8A2;
height: 112rpx;
line-height: 112rpx;
}
}
}
}
.button {
position: fixed;
bottom: 40rpx;
width: 686rpx;
box-sizing: border-box;
height: 112rpx;
background: #00E8A2;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
margin: 0 32rpx;
}
}
}
</style>

172
pages/withdrawal/withdrawalRecord.vue

@ -0,0 +1,172 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.WithdrawalRecord }}</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'digitalCurrency'"
:class="{ select: pageState === 'digitalCurrency' }">
{{ i18n.DigitalCurrency }}
</view>
<view class="headItem" @click="pageState = 'onLine'" :class="{ select: pageState === 'onLine' }">
{{ i18n.OnLine }}
</view>
</view>
<view class="cardList">
<view class="card" v-for="(item, index) in 4" :key="index">
<!-- 卡片条件渲染 -->
<!-- balance -->
<card-header v-if="pageState === 'digitalCurrency'" iconName="../../static/withdrawal/money-send.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'digitalCurrency'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:0rpx 32rpx; margin-bottom: 20rpx;">
<show-more class="digitalShowMore">
<Key-value-row :keyName="i18n.Address" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<Key-value-row :keyName="i18n.Hash" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity
verific
</view>
</show-more>
</view>
</view>
<!-- contarct -->
<card-header v-if="pageState === 'onLine'" iconName="../../static/withdrawal/money-send.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'onLine'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<show-more class="onLineShowMore" style="border-top: 2rpx solid #323045;margin-bottom: 20rpx;">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.USDTRate" :value="'19298'"></Key-value-row>
<Key-value-row :keyName="i18n.USDT" :value="'298237'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.CardNo" :value="'4349 9545 9893 9854 027'">
</Key-value-row>
<Key-value-row :keyName="i18n.Bank" :value="'Bank of Melbourne'"></Key-value-row>
<Key-value-row :keyName="i18n.Payee" :value="'Zhou jielun'"></Key-value-row>
<view class="text">Postscript :ontact customer service on the top-left corner for identity
verific
</view>
</view>
</show-more>
</view>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
import CardHeader from '../../components/cardHeader/cardHeader.vue';
import ShowMore from '../../components/showMore/showMore.vue';
export default {
components: { KeyValueRow, CardHeader, ShowMore },
name: "withdrawalRecord",
data() {
return {
pageState: 'digitalCurrency',
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
},
onLoad() {
},
onShow() { },
methods: {
change(e) {
console.log(e);
}
},
}
</script>
<style lang="scss" scoped>
.main {
.head {
margin-top: 200rpx;
margin-left: 60rpx;
width: 632rpx;
display: flex;
justify-content: space-around;
align-items: center;
padding: 48rpx 0;
.headItem {
width: 300rpx;
height: 68rpx;
line-height: 68rpx;
background: #211F32;
border-radius: 16rpx;
text-align: center;
font-size: 32rpx;
color: #A1A0A8;
&.select {
background: #00E8A2;
color: #15141F;
}
}
}
.cardList {
padding-bottom: 40rpx;
.card {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
margin: 0 32rpx 32rpx;
.dataBody {
box-sizing: border-box;
.onLineShowMore {
/deep/.showMoreTool {
margin: 0 32rpx;
}
}
.text {
margin-top: 20rpx;
padding: 10rpx 16rpx;
background: #323045;
border-radius: 8rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
}
}
}
</style>

BIN
static/charity/ic_ma_arrow_down.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 345 B

97412
static/echarts.js

File diff suppressed because it is too large

BIN
static/maskets/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
static/mine/Line.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
static/mine/bg_mine.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
static/mine/coinLogo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
static/mine/img_data.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
static/mine/img_mine01.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
static/mine/img_mine02.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
static/mine/img_mine03.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
static/mine/img_mine04.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
static/recharge/ic_copy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

BIN
static/recharge/img_successed.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
static/recharge/money-recive.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/withdrawal/Checkbox_pr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/withdrawal/add-circle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/withdrawal/bg_card.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
static/withdrawal/money-send.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

219
utils/language/en_US.js

@ -71,6 +71,35 @@ export default {
TrandingPair: 'Tranding Pair',
LatestPrice: 'Latest Price',
RiseAndfall: '24H Rise and fall',
lONG: 'lONG',
SHORT: 'SHORT',
MarketPrice: 'Market price',
MarketOptimalPrice: 'Market optimal price',
leverage: 'leverage',
Usable: 'Usable',
Total: 'Total',
Bond: 'Bond',
Fee: 'Fee',
buyLong: "Buy /Long ",
sellSHORT: 'Sell /Short ',
UnitPrice: 'Unit Price',
Number: 'Number',
CurrentEntrust: 'Current Entrust',
Position: 'Position',
Closed: 'Closed',
Revoked: 'Revoked',
close: 'Close',
AmountLeverage: 'Amount * Leverage',
CurrentPrice: 'Current price',
status: 'status',
StyPrice: 'Sty price',
StsPrice: 'Sts price',
ExpectProfit: 'Expect profit',
do: 'do',
StopLimit: 'Stop/Limit',
CloseTime: 'Close Time',
},
// 捐赠页面相关
@ -85,9 +114,145 @@ export default {
WithdrawalPassword: 'Withdrawal Password',
},
// Recharge
recharge:{
Recharge:'Recharge'
// recharge
recharge: {
Recharge: 'Recharge',
Record: 'Record',
CoinRecharge: 'Coin Recharge',
CashRecharge: 'Cash Recharge ',
PleaseChooseCoin: 'Please choose coin',
CoinDepositAddress: 'Coin deposit address',
CopyAddress: 'Copy address',
ScanQR: 'Scan the QR code above to get the deposit address',
message: `Minimum deposit amount: 10 USDT. Deposit less than the minimum amount will not be posted and cannot be returned
This address is your latest deposit address. When the system receives deposit, it will be automatically credited to the account。The transfer needs to be confirmed by the entire blockchain network. When it reaches 10 network confirmations, your USDT will be automatically deposit into the account。`,
selectAmount: 'Please select the amount to deposit',
EnterNumber: 'Enter 100-1000000',
RechargeMethod: 'Recharge method',
Submit: 'Submit',
RechargeRecord: 'Recharge Record',
OrderID: 'OrderID',
Fees: 'Fees',
Time: 'Time',
Address: 'Address',
Hash: 'Hash',
ShowMore: 'Show more',
Pickup: 'Pick up',
USDTRate: 'USDT Rate',
USDT: 'USDT',
},
//mine
mine: {
MinePool: 'Mine pool',
OpenMine: 'Open mine',
MineDetails: 'Mine details',
Record: 'Record',
YourBTC: 'Your BTC',
LockBTC: 'Lock BTC',
dayproduce: '1 day produce',
MinLockTime: 'Min lock time',
days: 'days',
invuteCode: 'Please type your invute code',
lockBTC: 'Please type you want to lock BTC quantity ',
ALL: 'ALL',
LockBTCBtn: 'Lock BTC and begin prouce',
MineRecord: 'Mine Record',
NoData: 'No Data',
BaseCoin: 'Base Coin',
ProfitCoin: 'Profit Coin',
DayRebate: 'Day Rebate',
RebateDay: 'Rebate Day / Lock Day',
RebateAmount: 'Rebate Amount / Amount',
AddTime: 'Add Time',
ReleaseTime: 'Release Time',
},
// withdrawal
withdrawal: {
Withdrawal: 'Withdrawal',
Record: 'Record',
DigitalCurrency: 'Digital currency',
OnLine: 'On-line',
PleaseChooseCoin: 'Please choose coin',
WithdrawAddress: 'Withdraw address',
Choose: 'Choose',
Quantity: 'Quantity',
Available: 'Available',
EnterTheQuantity: 'Please enter the quantity',
ALL: 'ALL',
MinimumWithdrawAmount: 'Minimum withdraw amount:',
HandlingFee: 'Handling Fee:',
message1: 'Please double check and enter the correct wallet address for withdraw。',
message2: 'Sending non-corresponding digital currency to the wallet address will cause permanent loss。',
message3: 'Withdraw fees will be deducted from the amount of withdrawals。',
withdraw: 'withdraw',
ChooseAddress: 'Choose address',
Edit: 'Edit',
OK: 'OK',
message4: '·The address book can be used to manage your frequently used addresses. There is no need to perform multiple verifications when initiating withdrawals from addresses in the address book。',
message5: '·APIAutomatic withdrawal is supported. When using API to withdraw, only addresses in the web address book are allowed to initiate withdrawals。',
myOmniAddress: 'my omni usdt address',
AddAddress: 'Add address',
DeleteAddress: 'Delete address',
WarmTips: 'Warm Tips',
WarmTipsText: 'Whether to delete the currently selected address',
Cancel: 'Cancel',
Address: 'Address',
enterAddressTips: 'Please enter or paste the address',
Remarks: 'Remarks',
enterRemarksTips: 'Please fill in the remarks',
Confirm: 'Confirm',
WithdrawalRecord: 'Withdrawal record',
DigitalCurrency: 'Digital currency',
OnLine: 'On-line',
OrderID: 'OrderID',
Fees: 'Fees',
Time: 'Time',
Hash: 'Hash',
ShowMore: 'Show more',
Pickup: 'Pick up',
USDTRate: 'USDT Rate',
USDT: 'USDT',
CardNo: 'Card No.',
Bank: 'Bank',
Payee: 'Payee',
BankCardWithdrawal: 'Bank card withdrawal',
Beneficiary: 'Beneficiary Account Number/IBAN',
AddBankCard: 'Add bank card',
NextStep: 'Next Step',
EditCard: 'Edit card',
WithdrawableAmount: 'Withdrawable Amount',
Amount: 'Amount',
PaymentPassword: 'Payment password',
enterAmount: 'Please enter The Amount',
enterPaymentPassword: 'Please enter your PaymentPassword',
EditBankInformation: 'Edit bank information',
AddBankInformation: 'Add bank information',
FirstName: 'First Name',
enterName: 'Please enter your name',
Account: 'Account',
enterAccount: 'Please enter your Account',
BankName: 'Bank Name',
enterBankName: 'Please enter bank name',
BankCode: 'Bank Code',
enterBankCode: 'Please enter Bank Code',
},
// 申购页面相关 subscription
@ -142,7 +307,7 @@ export default {
WalletHistory: 'Wallet history',
Notification: 'Notification',
DonateRecord: 'Donate record',
Language:'Language',
Language: 'Language',
AboutUs: 'About us',
LogOut: 'Log out',
@ -152,38 +317,36 @@ export default {
MyReferralID: 'My Referral ID:',
CopyID: 'Copy ID',
ChangeLoginPassword:'Change Login Password',
ChangeWithdrawalPassword:'Change Withdrawal Password',
BankCard:'Bank Card',
WithdrawalAddress:'Withdrawal Address',
ChangeLoginPassword: 'Change Login Password',
ChangeWithdrawalPassword: 'Change Withdrawal Password',
BankCard: 'Bank Card',
WithdrawalAddress: 'Withdrawal Address',
PleaseEnterTheOldPassword:'Please Enter the old password',
CreateNewLoginPassword:'Create new Login password',
Confirm:'Confirm',
ModifyWithdrawalPassword:'Modify Withdrawal Password',
CreateNewPassword:'Create new password',
PleaseEnterTheOldPassword: 'Please Enter the old password',
CreateNewLoginPassword: 'Create new Login password',
Confirm: 'Confirm',
ModifyWithdrawalPassword: 'Modify Withdrawal Password',
CreateNewPassword: 'Create new password',
Fresh:'Fresh',
Fresh: 'Fresh',
Release:'Release',
Release: 'Release',
NotificationDetails:'Notification Details',
NotificationDetails: 'Notification Details',
DonateRecord:'Donate record',
Time:'Time',
DonateRecord: 'Donate record',
Time: 'Time',
SelectCurrency:'Select currency',
SelectCurrency: 'Select currency',
PleaseChooseCoin: 'Please choose coin',
From:'From',
OptionAccount:'Option account',
To:'To',
TradingAccount:'Trading account',
TransferNumber:'Transfer number',
From: 'From',
OptionAccount: 'Option account',
To: 'To',
TradingAccount: 'Trading account',
TransferNumber: 'Transfer number',
PleaseEnterNumber: 'Please enter number',
Usable:'Usable :',
Usable: 'Usable :',
ALL: 'ALL',
}
}

Loading…
Cancel
Save