瀏覽代碼

2024-6-21

cmy 8 月之前
父節點
當前提交
0ff9930ba6
共有 100 個文件被更改,包括 2581 次插入2055 次删除
  1. 1 63
      App.vue
  2. 48 126
      api/index.js
  3. 186 0
      components/nav/nav.vue
  4. 0 0
      libs/dayjs/dayjs.min.js
  5. 1 1
      libs/i18n/index.js
  6. 73 82
      libs/i18n/lang/cn.json
  7. 74 61
      libs/i18n/lang/en.json
  8. 73 60
      libs/i18n/lang/tw.json
  9. 4 5
      manifest.json
  10. 84 48
      pages.json
  11. 16 22
      pages/index/bind.vue
  12. 232 0
      pages/index/buling.vue
  13. 390 733
      pages/index/index.vue
  14. 55 0
      pages/index/info.vue
  15. 175 0
      pages/index/node.vue
  16. 0 305
      pages/user/fhlist.vue
  17. 178 0
      pages/user/money.vue
  18. 185 0
      pages/user/myDetail.vue
  19. 219 0
      pages/user/shareItem.vue
  20. 166 0
      pages/user/transfer.vue
  21. 166 549
      pages/user/user.vue
  22. 235 0
      pages/user/withdrawal.vue
  23. 20 0
      static/css/cmy.css
  24. 二進制
      static/img/banner.png
  25. 二進制
      static/img/bg.png
  26. 二進制
      static/img/bindLogo.png
  27. 二進制
      static/img/config01.png
  28. 二進制
      static/img/config02.png
  29. 二進制
      static/img/config03.png
  30. 二進制
      static/img/detail01.png
  31. 二進制
      static/img/detail02.png
  32. 二進制
      static/img/detail03.png
  33. 二進制
      static/img/footerImg.png
  34. 二進制
      static/img/homeVGT.png
  35. 二進制
      static/img/img01.png
  36. 二進制
      static/img/img02.png
  37. 二進制
      static/img/img03.png
  38. 二進制
      static/img/img04.png
  39. 二進制
      static/img/img05.png
  40. 二進制
      static/img/img06.png
  41. 二進制
      static/img/img07.png
  42. 二進制
      static/img/img08.png
  43. 二進制
      static/img/img09.png
  44. 二進制
      static/img/img10.png
  45. 二進制
      static/img/img11.png
  46. 二進制
      static/img/img12.png
  47. 二進制
      static/img/img13.png
  48. 二進制
      static/img/img14.png
  49. 二進制
      static/img/img15.png
  50. 二進制
      static/img/img16.png
  51. 二進制
      static/img/img17.png
  52. 二進制
      static/img/img18.png
  53. 二進制
      static/img/img19.png
  54. 二進制
      static/img/img20.png
  55. 二進制
      static/img/img21.png
  56. 二進制
      static/img/img22.png
  57. 二進制
      static/img/img23.png
  58. 二進制
      static/img/img24.png
  59. 二進制
      static/img/img25.png
  60. 二進制
      static/img/img26.png
  61. 二進制
      static/img/img27.png
  62. 二進制
      static/img/img28.png
  63. 二進制
      static/img/indexInfo.png
  64. 二進制
      static/img/itemBg.png
  65. 二進制
      static/img/itemList.png
  66. 二進制
      static/img/itemList1.png
  67. 二進制
      static/img/itemList2.png
  68. 二進制
      static/img/itemList3.png
  69. 二進制
      static/img/itemList4.png
  70. 二進制
      static/img/logo.png
  71. 二進制
      static/img/mininext.png
  72. 二進制
      static/img/moneyIcon.png
  73. 二進制
      static/img/nav01.png
  74. 二進制
      static/img/nav02.png
  75. 二進制
      static/img/nodeBg.png
  76. 二進制
      static/img/tarIcon.png
  77. 二進制
      static/img/userIcon1.png
  78. 二進制
      static/img/userIcon2.png
  79. 二進制
      static/img/userIcon3.png
  80. 二進制
      static/img/userIcon4.png
  81. 二進制
      static/img/userIcon5.png
  82. 二進制
      static/img/首页_slices (1)/Group 366 拷贝 2.png
  83. 二進制
      static/img/首页_slices (1)/Group 366 拷贝 2@2x.png
  84. 二進制
      static/img/首页_slices (1)/Group 366 拷贝 2@3x.png
  85. 二進制
      static/img/首页_slices (1)/Group 366 拷贝.png
  86. 二進制
      static/img/首页_slices (1)/Group 366 拷贝@2x.png
  87. 二進制
      static/img/首页_slices (1)/Group 366 拷贝@3x.png
  88. 二進制
      static/img/首页_slices (1)/Vector 1.png
  89. 二進制
      static/img/首页_slices (1)/Vector 1@2x.png
  90. 二進制
      static/img/首页_slices (1)/Vector 1@3x.png
  91. 二進制
      static/img/首页_slices (1)/图层 10.png
  92. 二進制
      static/img/首页_slices (1)/图层 10@2x.png
  93. 二進制
      static/img/首页_slices (1)/图层 10@3x.png
  94. 二進制
      static/img/首页_slices (1)/图层 11.png
  95. 二進制
      static/img/首页_slices (1)/图层 11@2x.png
  96. 二進制
      static/img/首页_slices (1)/图层 11@3x.png
  97. 二進制
      static/img/首页_slices (1)/图层 12.png
  98. 二進制
      static/img/首页_slices (1)/图层 12@2x.png
  99. 二進制
      static/img/首页_slices (1)/图层 12@3x.png
  100. 二進制
      static/img/首页_slices (1)/图层 13.png

+ 1 - 63
App.vue

@@ -116,53 +116,11 @@
 	video {
 		box-sizing: border-box;
 	}
-	/* 骨架屏替代方案 */
-	.Skeleton {
-		background: #f3f3f3;
-		padding: 20rpx 0;
-		border-radius: 8rpx;
-	}
-
-	/* 图片载入替代方案 */
-	.image-wrapper {
-		font-size: 0;
-		background: #f3f3f3;
-		border-radius: 4px;
-		image {
-			width: 100%;
-			height: 100%;
-			transition: 0.6s;
-			opacity: 0;
-			&.loaded {
-				opacity: 1;
-			}
-		}
-	}
 
 	// 设置富文本中图片最大宽度
 	uni-rich-text img {
 		max-width: 100% !important;
 	}
-	/*边框*/
-	.b-b:after,
-	.b-t:after {
-		position: absolute;
-		z-index: 3;
-		left: 0;
-		right: 0;
-		height: 0;
-		content: "";
-		transform: scaleY(0.5);
-		border-bottom: 1px solid $border-color-base;
-	}
-
-	.b-b:after {
-		bottom: 0;
-	}
-
-	.b-t:after {
-		top: 0;
-	}
 
 	/* button样式改写 */
 	uni-button,
@@ -184,10 +142,6 @@
 	}
 
 	/* input 样式 */
-	.input-placeholder {
-		color: #999999;
-	}
-
 	.placeholder {
 		color: #999999;
 	}
@@ -268,26 +222,10 @@
 	page {
 		// background-color: $page-color-base;
 		width: 100%;
-		background: url('./static/img/bg.png') no-repeat;
+		// background: url('./static/img/bg.png') no-repeat;
 		background-size: 100% 100%;
 		// 设置默认字体
 		font-family: PingFang SC, STHeitiSC-Light, Helvetica-Light, arial,
 			sans-serif, Droid Sans Fallback;
 	}
-	/*边框*/
-	.b-b:after,
-	.b-t:after {
-		position: absolute;
-		z-index: 3;
-		left: 0;
-		right: 0;
-		height: 0;
-		content: "";
-		transform: scaleY(0.5);
-		border-bottom: 1px solid $border-color-base;
-	}
-
-	.b-b:after {
-		bottom: 0;
-	}
 </style>

+ 48 - 126
api/index.js

@@ -1,103 +1,50 @@
 import request from '@/utils/request'
-// 转账
-export function trade(data) {
+// 获取首页信息
+export function loadIndexs(data) {
 	return request({
-		url: '/api/user/trade',
-		method: 'post',
-		data
-	});
-}
-
-// 场次列表
-export function auctions(data) {
-	return request({
-		url: '/api/auction/auctions',
+		url: '/api/index/index',
 		method: 'get',
 		data
 	});
 }
 
-// 预下单
-export function changeCalculator(data) {
-	return request({
-		url: '/api/user/changeCalculator',
-		method: 'post',
-		data
-	});
-}
-//充值计算
-export function chargeCalculator(data) {
-	return request({
-		url: '/api/user/chargeCalculator',
-		method: 'post',
-		data
-	});
-}
-//充值
-export function charge(data) {
-	return request({
-		url: '/api/user/charge',
-		method: 'post',
-		data
-	});
-}
-// 支付提交
-export function change(data) {
+// 报单计算
+export function orderCalculator(data) {
 	return request({
-		url: '/api/user/change',
+		url: '/api/order/orderCalculator',
 		method: 'post',
 		data
 	});
 }
 
-export function logout(data) {
+// 生成报单
+export function creatorOrder(data) {
 	return request({
-		url: '/api/user/logout',
+		url: '/api/order/order',
 		method: 'post',
 		data
 	});
 }
-//预约场次 
-export function appointment(data) {
+
+// 报单支付
+export function payOrder(id,data) {
 	return request({
-		url: '/api/auction/appointment',
+		url: `/api/order/pay/id/${id}`,
 		method: 'post',
 		data
 	});
 }
-//竞拍订单
-export function auctionOrders(data) {
-	return request({
-		url: '/api/auction/auctionOrders',
-		method: 'get',
-		data
-	});
-}
-//资金记录
-export function payLog(data) {
-	return request({
-		url: '/api/auction/payLog',
-		method: 'get',
-		data
-	});
-}
-//预约记录
-export function appointmentList(data) {
-	return request({
-		url: '/api/auction/appointmentList',
-		method: 'get',
-		data
-	});
-}
-// 付款
-export function pay(data) {
+
+// 閃兌
+export function exchange(data) {
 	return request({
-		url: '/api/auction/pay',
+		url: `/api/user/exchange`,
 		method: 'post',
 		data
 	});
 }
-// 推荐人
+
+// 推薦人列表
 export function spreadList(data) {
 	return request({
 		url: '/api/user/spreadList',
@@ -105,98 +52,73 @@ export function spreadList(data) {
 		data
 	});
 }
-// 金额明细
-export function getTokenLog(data) {
+
+// 轉賬
+export function trade(data) {
 	return request({
-		url: '/api/user/getTokenLog',
-		method: 'get',
+		url: `/api/user/trade`,
+		method: 'post',
 		data
 	});
 }
-// 提现明细
-export function extractLog(data) {
+// 交易記錄
+export function moneyLog(data) {
 	return request({
-		url: '/api/user/extractLog',
+		url: '/api/user/getTokenLog',
 		method: 'get',
 		data
 	});
 }
-// 解冻
-export function unfreeze(data) {
+
+// 提現
+export function gameWallet(data) {
 	return request({
-		url: '/api/user/unfreeze',
+		url: '/api/user/gameWallet',
 		method: 'post',
 		data
 	});
 }
-// 个人中心团队
-export function group_info(data) {
+// 提現計算
+export function extractCalculator(data) {
 	return request({
-		url: '/api/user/group_info',
+		url: '/api/user/extractCalculator',
 		method: 'post',
 		data
 	});
 }
 
-// 提币
-export function extract(data) {
-	return request({
-		url: '/api/user/extract',
-		method: 'post',
-		data
-	});
-}
 
-// 捡漏记录
-export function leak_list(data) {
-	return request({
-		url: '/api/auction/leak_list',
-		method: 'get',
-		data
-	});
-}
-// 捡漏记录
-export function order(data) {
+// 报单计算
+export function pointCalculator(data) {
 	return request({
-		url: '/api/auction/order',
+		url: '/api/point/orderCalculator',
 		method: 'post',
 		data
 	});
 }
 
-// 捡漏数量
-export function leak_num(data) {
+// 生成报单
+export function creatorPoint(data) {
 	return request({
-		url: '/api/auction/leak_num',
+		url: '/api/point/order',
 		method: 'post',
 		data
 	});
 }
 
-// 检测是否支付过
-export function pay_check(data) {
+// 报单支付
+export function payPoint(id,data) {
 	return request({
-		url: '/api/auction/pay_check',
+		url: `/api/point/pay/id/${id}`,
 		method: 'post',
 		data
 	});
 }
 
-// 补票
-export function tax(data) {
-	return request({
-		url: '/api/auction/tax',
-		method: 'post',
-		data
-	});
-}
-//结束订单
-export function finish(data) {
-	return request({
-		url: '/api/auction/finish',
-		method: 'post',
-		data
-	});
-}
+
+
+
+
+
 
 

+ 186 - 0
components/nav/nav.vue

@@ -0,0 +1,186 @@
+<template>
+	<view class="navBox">
+		<view class="flex nav background-linear-gradient">
+			<view class="navLeft flex">
+				<image class="navLeftImg" src="../../static/img/nav01.png" mode="scaleToFill"></image>
+				<view>BCMM</view>
+			</view>
+			<view class="navRight flex">
+				<view class="tabLange">
+					<picker :range="langList" range-key='label' @change="selectLang">
+						<view class="langType">{{label}}</view>
+					</picker>
+				</view>
+				<view class="userInfo flex border-linear-gradient" @click="copyAddress">
+					<image class="rightImg" src="../../static/img/nav02.png" mode="scaleToFill"></image>
+					<view class="userInfoName">
+						{{userInfo.address|hideCenter}}
+					</view>
+				</view>
+			</view>
+		</view>
+		<navigator :url="url" open-type='redirect' v-if="showTitle">
+			<view class="flex titleBox position-relative">
+				<view class="leftBackIcon">
+					<image class="icon" src="../../static/img/mininext.png" mode="scaleToFill"></image>
+				</view>
+				<view class="pageTitle flex-center">
+					<view>
+					{{title}}
+					</view>
+				</view>
+			</view>
+		</navigator>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapActions,
+		mapMutations
+	} from "vuex";
+	export default {
+		data() {
+			return {}
+		},
+		filters: {
+			hideCenter: function(value) {
+				const st = value.slice(7, value.length - 7);
+				const sr = value.replace(st, '...')
+				return sr;
+			},
+		},
+		props: {
+			title: {
+				type: String,
+				default: ""
+			},
+			showTitle:{
+				type:Boolean,
+				default: false
+			},
+			url:{
+				type: String,
+				default: "/pages/index/index"
+			},
+		},
+		computed: {
+			...mapState({
+				langList: "langList",
+				lang: "lang",
+			}),
+			...mapState("user", ['userInfo']),
+			label() {
+				let label = ''
+				try {
+					label = this.langList.find((item) => {
+						return item.value == this.lang
+					}).value;
+				} catch (e) {
+					label = 'TW'
+				}
+				return label
+			},
+		},
+		methods: {
+			...mapActions({
+				setLang: "setLang",
+			}),
+			// 复制地址
+			copyAddress() {
+				const that = this;
+				uni.setClipboardData({
+					data: this.userInfo.address,
+					showToast: false,
+					success: function() {
+						uni.showToast({
+							title: that.$t('home.成功')
+						})
+						//调用方法成功
+						console.log("success");
+					},
+				});
+			},
+			//切换语言
+			selectLang(value) {
+				this.setLang(this.langList[value.detail.value].value);
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.titleBox {
+		padding: 30rpx;
+		color: #FFF;
+
+		.leftBackIcon {
+			transform: rotate(0.5turn);
+
+			.icon {
+				width: 21rpx;
+				height: 36rpx;
+			}
+		}
+
+		.pageTitle {
+			position: absolute;
+			top: 0;
+			bottom: 0;
+			left: 0;
+			right: 0;
+			text-align: center;
+			flex-grow: 1;
+			font-weight: 500;
+			font-size: 34rpx;
+			
+		}
+	}
+
+	.nav {
+		padding: 25rpx;
+
+		.navLeft {
+			font-weight: 500;
+			font-size: 30rpx;
+			color: #FFFFFF;
+
+			.navLeftImg {
+				width: 58rpx;
+				height: 58rpx;
+				margin-right: 10rpx;
+			}
+		}
+
+		.navRight {
+			color: #FFF;
+
+			.tabLange {
+				border: 1px solid #FFF;
+				padding: 6rpx 10rpx;
+				border-radius: 10rpx;
+				margin-right: 20rpx;
+				font-size: 20rpx;
+				font-weight: bold;
+				line-height: 28rpx;
+			}
+
+			.userInfo {
+				border-radius: 15rpx;
+				padding: 6rpx 10rpx;
+				line-height: 1;
+
+				.rightImg {
+					width: 36rpx;
+					height: 36rpx;
+					margin-right: 10rpx;
+				}
+
+				.userInfoName {
+					font-size: 25rpx;
+				}
+			}
+		}
+	}
+</style>

文件差異過大導致無法顯示
+ 0 - 0
libs/dayjs/dayjs.min.js


+ 1 - 1
libs/i18n/index.js

@@ -19,7 +19,7 @@ requireComponent.keys().forEach(fileName => {
 })
 // 语言注入
 let i18n = new VueI18n({
-    locale: uni.getStorageSync('lang')||'cn',
+    locale: uni.getStorageSync('lang')||'TW',
     messages: messages
 })
 export default i18n;

+ 73 - 82
libs/i18n/lang/cn.json

@@ -22,94 +22,85 @@
 		"邀请码": "邀请码",
 		"立即注册": "立即绑定",
 		"请输入上级邀请码": "请输入上级邀请码",
-		"绑定成功": "绑定成功"
+		"绑定成功": "绑定成功",
+		"绑定邀请人": "绑定邀请人"
 	},
 	"home": {
-		"教程": "教程",
-		"邀请连接": "邀请连接",
-		"账号": "账号ID",
-		"余额": "余额",
-		"提现": "提现",
-		"充值": "充值",
-		"兑换": "兑换",
-		"转账": "转账",
-		"时间": "时间",
-		"周期": "周期",
-		"收益": "收益",
-		"预约": "预约",
-		"价格": "价格",
-		"请选择预约": "请选择预约日期(可多选)",
-		"转出数量": "转出数量",
-		"确定": "确定",
-		"请输入VGT转出数量": "请输入VGT转出数量",
-		"请输入VGT接收地址": "请输入VGT接收地址",
-		"今天": "今天",
-		"明天": "明天",
-		"后天": "后天",
+		"共创社区": "共创社区",
+		"邀请地址": "邀请地址",
+		"立即前往": "立即前往",
+		"闪兑": "闪兑",
+		"节点认购": "节点认购",
+		"币种": "币种",
+		"今日价格": "今日价格",
+		"模式说明": "模式说明",
+		"复制": "复制",
+		"我的邀请": "我的邀请",
+		"邀请团队信息": "邀请团队信息",
+		"我的资产": "我的资产",
+		"资产明细": "资产明细",
+		"我的收益": "我的收益",
+		"收益明细": "收益明细",
+		"共创": "共创",
+		"行业领先": "行业领先安全技术与合规化专业运营,保随用户实时体验可靠、顺畅、安全的社区环境!",
+		"共享": "共享",
+		"为全球数十个国家": "为全球数十个国家,100万+用户提供多语言、高品质服务!",
+		"共富": "共富",
+		"BMCC生态": "BMCC生态合作伙伴即刻获得多类型战略支持,共享BMCC平台的生邀价值与数位货币时代红利!",
+		"合作伙伴": "合作伙伴",
 		"成功": "复制成功",
-		"兑换成功": "兑换成功",
-		"兑换失败": "兑换失败",
+		"余额":"余额",
 		"充值成功": "充值成功",
 		"充值失败": "充值失败",
-		"天": "天",
-		"预约成功": "预约成功",
-		"无法提现": "提现金额不足无法提现",
-		"转账成功": "转账成功",
-		"可提现":"可提现"
+		"请选择支付方式":"请选择支付方式",
+		"提现": "提现",
+		"节点认购": "节点认购",
+		"认购成功": "认购成功",
+		"认购失败": "认购失败",
+		"立即认购": "立即认购",
+		"认购价": "认购价",
+		"社区建设": "社区建设,人人有责"
+		
 	},
 	"user": {
-		"我的收益": "我的收益",
-		"今日收益": "今日收益",
-		"累计收益": "累计收益",
-		"可用收益": "可用收益",
-		"我的团队": "我的团队",
-		"分享地址": "分享地址",
-		"社区地址": "社区地址",
-		"分享预约": "分享预约",
-		"社区预约": "社区预约",
-		"今日分享业绩": "今日分享业绩",
-		"今日社区业绩": "今日社区业绩",
-		"分享业绩": "分享业绩",
-		"社区业绩": "社区业绩",
-		"团队明细": "团队明细",
-		"余额明细": "余额明细",
-		"VGT明细": "VGT明细",
-		"提现明细": "提现明细",
-		"分红比例": "分紅比例",
-		"地址": "地址",
-		"时间": "时间",
-		"金额": "金额",
-		"说明": "说明",
-		"状态": "状态",
-		"人数": "人数",
-		"节点分布": "节点分布",
-		"今日分红额度": "今日分红额度",
-		"已通过": "已通过",
-		"待审核": "待审核",
-		"已拒绝": "已拒绝"
-	},
-	"order": {
-		"待支付": "待支付",
-		"待完成": "待完成",
-		"待收益": "待收益",
-		"紫金记录": "资金记录",
-		"预约记录": "预约记录",
-		"价格": "价格",
-		"日收益": "收益",
-		"周期": "周期",
-		"匹配时间": "匹配时间",
-		"预约时间": "预约时间",
-		"总收益": "总收益",
-		"已收益": "已收益",
-		"未匹配": "未匹配",
-		"未支付": "未支付",
-		"已完成": "已完成",
-		"支付": "支付",
-		"天": "天",
-		"支付成功": "支付成功",
-		"支付失败": "支付成功",
-		"补票": "补票",
-		"是否补票": "是否立即补票?",
-		"补票成功": "补票成功"
+		"数据统计": "数据统计",
+		"直推人数": "直推人数",
+		"团队人数": "团队人数",
+		"链接地址": "链接地址",
+		"已购买": "已购买",
+		"未购买": "为购买",
+		"闪兑": "闪兑",
+		"兑换": "兑换",
+		"余额": "余额",
+		"兑换比率": "兑换比率",
+		"立即兑换": "立即兑换",
+		"兑换成功": "兑换成功",
+		"兑换失败": "兑换失败",
+		"BCMM余额不足": "BCMM余额不足",
+		"我的资产": "我的资产",
+		"提现": "提现",
+		"手续费": "手续费",
+		"去提现": "去提现",
+		"转账": "转账",
+		"交易记录": "交易记录",
+		"收款地址": "收款地址",
+		"请输入收款地址": "请输入收款地址",
+		"转账数量": "转账数量",
+		"请输入转账金额": "请输入转账金额",
+		"全部": "全部",
+		"可用余额": "可用余额",
+		"确认转账": "确认转账",
+		"提现1": "提现",
+		"提现金额": "提现金额",
+		"请输入提现金额": "请输入提现金额",
+		"全部1":"全部",
+		"手续费1": "手续费",
+		"立即提现": "立即提现",
+		"暂未开放": "暂未开放",
+		"余额不足": "余额不足",
+		"提现成功": "提现成功",
+		"提现失败": "提现失败",
+		"收支明细": "收支明细"
+		
 	}
 }

+ 74 - 61
libs/i18n/lang/en.json

@@ -22,71 +22,84 @@
 		"邀请码": "Invitation code",
 		"立即注册": "Bind",
 		"请输入上级邀请码": "Please enter the invitation code of your superior",
-		"绑定成功":"Bind successfully"
+		"绑定成功":"Bind successfully",
+		"绑定邀请人": "Bind inviter"
 	},
 	"home":{
-		"教程": "Tutorial",
-		"邀请连接": "Share link",
-		"账号": "Account",
-		"余额": "Balance",
-		"提现": "withdraw",
-		"兑换": "Exchange",
-		"充值": "Recharge",
-		"转账": "Transfer money",
-		"时间": "Time",
-		"周期": "Overdue",
-		"收益": "Earnings",
-		"预约": "Subscribe",
-		"价格": "Price",
-		"请选择预约": "Please select an appointment date (multiple options)",
-		"转出数量": "Transfer quantity",
-		"确定": "Confirm",
-		"请输入VGT转出数量": "Please enter the VGT transfer quantity",
-		"请输入VGT接收地址": "Please enter the VGT receiving address",
-		"今天": "Today",
-		"明天": "Tomorrow",
-		"后天": "The day after tomorrow",
-		"成功":"success",
-		"兑换成功":"Exchange successful",
-		"兑换失败":"Exchange failed",
-		"充值成功":"Recharge successful",
-		"充值失败":"Recharge failed",
-		"天": "Day",
-		"预约成功": "Appointment Success",
-		"无法提现": "Insufficient withdrawal amount cannot be withdrawn",
-		"转账成功": "Transfer successful",
-		"可提现":"Withdrawable"
+		"共创社区": "Common Community",
+		"邀请地址": "Share Link",
+		"立即前往": "NEXT",
+		"闪兑": "Exchange",
+		"节点认购": "Node subscription",
+		"币种": "Type",
+		"今日价格": "Today's price",
+		"模式说明": "Mode Description",
+		"复制": "Copy",
+		"我的邀请": "My team",
+		"邀请团队信息": "Team details",
+		"我的资产": "My money",
+		"资产明细": "Fund details",
+		"我的收益": "My earnings",
+		"收益明细": "Revenue details",
+		"共创": "Co creation",
+		"行业领先": "Industry-leading security technology and professional operation for compliance, ensuring a reliable, smooth, and secure community environment for users' real-time experience!",
+		"共享": "Shared Together",
+		"为全球数十个国家": "Provide multilingual, high-quality services for more than 1 million users in dozens of countries around the world!",
+		"共富": "common prosperity ",
+		"BMCC生态": "BMCC's eco-partners will instantly receive multi-type strategic support and share the invitation value of the BMCC platform and the dividends of the digital currency era!",
+		"合作伙伴": "Cooperative partner",
+		"成功": "SUCCESS",
+		"余额":"Balance",
+		"充值成功": "SUCCESS",
+		"充值失败": "FAIL",
+		"请选择支付方式":"Please select payment method",
+		"提现": "Withdrawal",
+		"节点认购": "Node",
+		"认购成功": "SUCCESS",
+		"认购失败": "FAIL",
+		"立即认购": "Confirm Buy",
+		"认购价": "Price",
+		"社区建设": "Community construction, everyone has a responsibility"
 	},
 	"user":{
-		"我的收益": "My earnings",
-		"今日收益": "Today earnings",
-		"累计收益": "Cumulative income",
-		"可用收益": "Available income",
-		"我的团队": "My team",
-		"分享地址": "Shared address",
-		"社区地址": "Community address",
-		"分享预约": "Share appointment",
-		"社区预约": "Community appointment",
-		"今日分享业绩": "Share Results Today",
-		"今日社区业绩": "Community Performance Today",
-		"分享业绩": "Share performance",
-		"社区业绩": "Community performance",
-		"团队明细": "Team details",
-		"余额明细": "Balance details",
-		"VGT明细": "VGT details",
-		"提现明细": "Withdrawal details",
-		"分红比例": "Dividend ratio",
-		"地址": "Address",
-		"时间": "Time",
-		"金额": "Money",
-		"说明": "Description",
-		"状态": "Status",
-		"人数": "People",
-		"节点分布": "Node",
-		"今日分红额度": "Today's dividend limit",
-		"已通过": "Passed",
-		"待审核": "reviewed",
-		"已拒绝": "Rejected"
+		"数据统计": "Data statistics",
+		"直推人数": "Invitation",
+		"团队人数": "Team",
+		"链接地址": "Link",
+		"已购买": "Purchased",
+		"未购买": "Not purchased",
+		"闪兑": "Quick redemption",
+		"兑换": "Exchange",
+		"余额": "Balance",
+		"兑换比率": "Rate",
+		"立即兑换": "Redeem now ",
+		"兑换成功": "SUCCESS",
+		"兑换失败": "FAIL",
+		"BCMM余额不足": "Sorry, your credit is running low",
+		"我的资产": "My assets",
+		"提现": "",
+		"手续费": "Service Charge",
+		"去提现": "Withdrawal",
+		"转账": "Transfer",
+		"交易记录": "Transaction records",
+		"收款地址": "Address",
+		"请输入收款地址": "Please enter the link address",
+		"转账数量": "Transfer quantity",
+		"请输入转账金额": "Please enter the transfer number",
+		"全部": "All",
+		"可用余额": "Available balance",
+		"确认转账": "Confirm",
+		"提现1": "Withdrawal",
+		"提现金额": "Withdrawal number",
+		"请输入提现金额": "Please enter the withdrawal number",
+		"全部1":"All",
+		"手续费1": "Service Charge",
+		"立即提现": "Immediate withdrawal",
+		"暂未开放": "Not yet open",
+		"余额不足": "Sorry, your credit is running low",
+		"提现成功": "SUCCESS",
+		"提现失败": "FAIL",
+		"收支明细": "Income and expenditure"
 	},
 	"order":{
 		"待支付":"Not paid",

+ 73 - 60
libs/i18n/lang/tw.json

@@ -22,71 +22,84 @@
 		"邀请码": "邀請碼",
 		"立即注册": "立即綁定",
 		"请输入上级邀请码": "請輸入上級邀請碼",
-		"绑定成功":"綁定成功"
+		"绑定成功":"綁定成功",
+		"绑定邀请人": "綁定邀請人"
 	},
 	"home":{
-		"教程": "教程",
-		"邀请连接": "邀請連接",
-		"账号": "轉賬ID",
-		"余额": "餘額",
+		"共创社区": "共創社區",
+		"邀请地址": "邀請地址",
+		"立即前往": "立即前往",
+		"闪兑": "閃兌",
+		"节点认购": "節點認購",
+		"币种": "幣種",
+		"今日价格": "今日價格",
+		"模式说明": "模式說明",
+		"复制": "複製",
+		"我的邀请": "我的邀請",
+		"邀请团队信息": "邀請團隊資訊",
+		"我的资产": "我的資產",
+		"资产明细": "資產明細",
+		"我的收益": "我的收益",
+		"收益明细": "收益明細",
+		"共创": "共創",
+		"行业领先": "行業領先安全技術與合規化 專業運營,保隨用戶實时體 驗可靠、順暢、安全的 社区環境!",
+		"共享": "共亯",
+		"为全球数十个国家": "為全球數十個國家,100萬+ 用戶提供多語言、高品質 服務!",
+		"共富": "共富",
+		"BMCC生态": "BMCC生態合作夥伴即刻獲 得多類型戰畧支持,共亯 BMCC平臺的生邀價值與 數位貨幣時代紅利!",
+		"合作伙伴": "合作夥伴",
+		"成功": "複製成功",
+		"余额":"餘額",
+		"充值成功": "充值成功",
+		"充值失败": "充值失敗",
+		"请选择支付方式":"請選擇支付方式",
 		"提现": "提現",
-		"兑换": "兌換",
-		"充值": "充值",
-		"转账": "轉賬",
-		"时间": "時間",
-		"周期": "週期",
-		"收益": "收益",
-		"预约": "預約",
-		"价格": "價格",
-		"请选择预约": "請選擇預約日期(可多選)",
-		"转出数量": "轉出數量",
-		"确定": "確定",
-		"请输入VGT转出数量": "請輸入VGT轉出數量",
-		"请输入VGT接收地址": "請輸入VGT接收地址",
-		"今天": "今天",
-		"明天": "明天",
-		"后天": "後天",
-		"成功":"複製成功",
-		"兑换成功":"兌換成功",
-		"兑换失败":"兌換失敗",
-		"充值成功":"充值成功",
-		"充值失败":"充值失敗",
-		"天": "天",
-		"预约成功": "預約成功",
-		"无法提现": "提現金額不足無法提現",
-		"转账成功": "轉賬成功",
-		"可提现":"可提現"
+		"节点认购": "節點認購",
+		"认购成功": "認購成功",
+		"认购失败": "認購失敗",
+		"立即认购": "立即認購",
+		"认购价": "認購價",
+		"社区建设": "社區建設,人人有責"
 	},
 	"user":{
-		"我的收益": "我的收益",
-		"今日收益": "今日收益",
-		"累计收益": "累計收益",
-		"可用收益": "可用收益",
-		"我的团队": "我的團隊",
-		"分享地址": "分享地址",
-		"社区地址": "社區地址",
-		"分享预约": "分享預約",
-		"社区预约": "社區預約",
-		"今日分享业绩": "今日分享業績",
-		"今日社区业绩": "今日社區業績",
-		"分享业绩": "分享業績",
-		"社区业绩": "社區業績",
-		"团队明细": "團隊明細",
-		"余额明细": "餘額明細",
-		"VGT明细": "VGT明細",
-		"提现明细": "提現明細",
-		"分红比例": "分紅比例",
-		"地址": "地址",
-		"时间": "时间",
-		"金额": "金額",
-		"说明": "說明",
-		"状态": "狀態",
-		"人数": "人數",
-		"节点分布": "節點分佈",
-		"今日分红额度": "今日分紅額度",
-		"已通过": "已通過",
-		"待审核": "待稽核",
-		"已拒绝": "已拒絕"
+		"数据统计": "數據統計",
+		"直推人数": "直推人數",
+		"团队人数": "團隊人數",
+		"链接地址": "鏈接地址",
+		"已购买": "已購買",
+		"未购买": "未購買",
+		"闪兑": "閃兌",
+		"兑换": "兌換",
+		"余额": "餘額",
+		"兑换比率": "兌換比率",
+		"立即兑换": "立即兌換",
+		"兑换成功": "兌換成功",
+		"兑换失败": "兌換失敗",
+		"BCMM余额不足": "BCMM餘額不足",
+		"我的资产": "我的資產",
+		"提现": "提現",
+		"手续费": "手續費",
+		"去提现": "去提現",
+		"转账": "轉帳",
+		"交易记录": "交易記錄",
+		"收款地址": "收款地址",
+		"请输入收款地址": "請輸入收款地址",
+		"转账数量": "轉帳數量",
+		"请输入转账金额": "請輸入轉帳金額",
+		"全部": "全部",
+		"可用余额": "可用餘額",
+		"确认转账": "確認轉帳",
+		"提现1": "提現",
+		"提现金额": "提現金額",
+		"请输入提现金额": "請輸入提現金額",
+		"全部1":"全部",
+		"手续费1": "手續費",
+		"立即提现": "立即提現",
+		"暂未开放": "暫未開放",
+		"余额不足": "餘額不足",
+		"提现成功": "提現成功",
+		"提现失败": "提現失败",
+		"收支明细": "收支明细"
 	},
 	"order":{
 		"待支付":"待支付",

+ 4 - 5
manifest.json

@@ -1,6 +1,6 @@
 {
-    "name" : "VGT",
-    "appid" : "__UNI__2797456",
+    "name" : "BCMM",
+    "appid" : "__UNI__6C02EF8",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : 100,
@@ -99,7 +99,7 @@
         }
     },
     "h5" : {
-        "title" : "VGT",
+        "title" : "BCMM",
         "domain" : "",
         "router" : {
             "base" : "/index/",
@@ -108,11 +108,10 @@
         "devServer" : {
             "proxy" : {
                 "/api" : {
-                    "target" : "http://testwap.vgst168.com"
+                    "target" : "http://bcmm.frp.qiniu1314.com"
                 }
             }
         },
-        // "target" : "http://vgt.frp.qiniu1314.com"
         "template" : "index.html"
     }
 }

+ 84 - 48
pages.json

@@ -8,80 +8,116 @@
 		{
 			"path": "pages/index/index",
 			"style": {
-				"navigationBarTitleText": "VGST",
+				"navigationBarTitleText": "BCMM",
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path": "pages/order/index",
+			"path": "pages/index/bind",
+			"style": {
+				"navigationBarTitleText": "BCMM",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/index/info",
+			"style": {
+				"navigationBarTitleText": "BCMM",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/index/node",
+			"style": {
+				"navigationBarTitleText": "BCMM",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/index/buling",
 			"style": {
-				"navigationBarTitleText": "VGST",
+				"navigationBarTitleText": "BCMM",
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path": "pages/leaks/index",
+			"path": "pages/user/shareItem",
 			"style": {
-				"navigationBarTitleText": "VGST",
-				"navigationStyle": "custom",
-				"enablePullDownRefresh": true
+				"navigationBarTitleText": "BCMM",
+				"navigationStyle": "custom"
 			}
 		},
 		{
 			"path": "pages/user/user",
 			"style": {
-				"navigationBarTitleText": "VGST",
+				"navigationBarTitleText": "BCMM",
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path": "pages/user/fhlist",
+			"path": "pages/user/transfer",
 			"style": {
-				"navigationBarTitleText": "VGST",
+				"navigationBarTitleText": "BCMM",
 				"navigationStyle": "custom"
 			}
 		},
 		{
-			"path": "pages/index/bind",
+			"path": "pages/user/money",
+			"style": {
+				"navigationBarTitleText": "BCMM",
+				"navigationBarBackgroundColor": "rgb(12, 8, 21)",
+				"navigationBarTextStyle": "white"
+			}
+		},
+		{
+			"path": "pages/user/myDetail",
 			"style": {
-				"navigationBarTitleText": "VGST",
+				"navigationBarTitleText": "BCMM",
 				"navigationStyle": "custom"
 			}
-		}
-	],
-	"tabBar": {
-		"color": "#666992",
-		"selectedColor": "#17C474",
-		"borderStyle": "black",
-		"backgroundColor": "#fff",
-		"list": [{
-				"visible": false,
-				"pagePath": "pages/index/index",
-				"iconPath": "static/tabBar/home.png",
-				"selectedIconPath": "static/tabBar/home-index.png",
-				"text": "首頁"
-			},
-			{
-				"visible": false,
-				"pagePath": "pages/order/index",
-				"iconPath": "static/tabBar/order.png",
-				"selectedIconPath": "static/tabBar/order-index.png",
-				"text": "訂單"
-			},
-			{
-				"visible": false,
-				"pagePath": "pages/leaks/index",
-				"iconPath": "static/tabBar/leaks.png",
-				"selectedIconPath": "static/tabBar/leaks-index.png",
-				"text": "撿漏"
-			},
-			{
-				"visible": false,
-				"pagePath": "pages/user/user",
-				"iconPath": "static/tabBar/user.png",
-				"selectedIconPath": "static/tabBar/user-index.png",
-				"text": "我的"
+		},
+		{
+			"path": "pages/user/withdrawal",
+			"style": {
+				"navigationBarTitleText": "BCMM",
+				"navigationStyle": "custom"
 			}
-		]
-	}
+		}
+	]
+	// ,
+	// "tabBar": {
+	// 	"color": "#666992",
+	// 	"selectedColor": "#17C474",
+	// 	"borderStyle": "black",
+	// 	"backgroundColor": "#fff",
+	// 	"list": [{
+	// 			"visible": false,
+	// 			"pagePath": "pages/index/index",
+	// 			"iconPath": "static/tabBar/home.png",
+	// 			"selectedIconPath": "static/tabBar/home-index.png",
+	// 			"text": "首頁"
+	// 		},
+	// 		{
+	// 			"visible": false,
+	// 			"pagePath": "pages/order/index",
+	// 			"iconPath": "static/tabBar/order.png",
+	// 			"selectedIconPath": "static/tabBar/order-index.png",
+	// 			"text": "訂單"
+	// 		},
+	// 		{
+	// 			"visible": false,
+	// 			"pagePath": "pages/leaks/index",
+	// 			"iconPath": "static/tabBar/leaks.png",
+	// 			"selectedIconPath": "static/tabBar/leaks-index.png",
+	// 			"text": "撿漏"
+	// 		},
+	// 		{
+	// 			"visible": false,
+	// 			"pagePath": "pages/user/user",
+	// 			"iconPath": "static/tabBar/user.png",
+	// 			"selectedIconPath": "static/tabBar/user-index.png",
+	// 			"text": "我的"
+	// 		}
+	// 	]
+	// }
 }

+ 16 - 22
pages/index/bind.vue

@@ -1,17 +1,8 @@
 <template>
 	<view class="container">
-		<view class="topBox flex">
-			<view class="topTpl flex_item">
-				<image style="width: 49rpx;height: 45rpx;" src="/static/img/logo.png"></image>
-				<view class="tpl clamp">BNB Smart Chain</view>
-			</view>
-			<view class="topTpl flex_item margin-l-30" v-if="userInfo.address">
-				<image class="userIcon" src="/static/img/img10.png"></image>
-				<view class="tpls clamp">{{userInfo.address}}</view>
-			</view>
-		</view>
+		<navBar :show-title="true" :title="$t('bind.绑定邀请人')" url="/pages/index/index"></navBar>
 		<view class="logoBox">
-			<image class="logo" src="../../static/img/bindLogo.png" mode="scaleToFill"></image>
+			<image class="logo" src="../../static/img/itemList1.png" mode="widthFix"></image>
 		</view>
 		<view class="shareBox">
 			<view class="title">{{$t('bind.邀请码')}}</view>
@@ -30,12 +21,16 @@
 	import {
 		addSpread
 	} from '@/api/user.js';
+	import navBar from "@/components/nav/nav.vue"
 	export default {
 		data() {
 			return {
 				spread: ''
 			}
 		},
+		components: {
+			navBar
+		},
 		computed: {
 			...mapState('user', ['userInfo']),
 		},
@@ -61,9 +56,9 @@
 					}).then((res) => {
 						that.$util.Tips({
 							title: that.$t('bind.绑定成功'),
-							icon:'success'
+							icon: 'success'
 						}, {
-							tab: 1,
+							tab: 2,
 							url: '/pages/index/index'
 						})
 					})
@@ -79,17 +74,19 @@
 		width: 100%;
 		padding: 25rpx;
 		line-height: 1;
+		min-height: 100vh;
+		background-color: rgb(12, 8, 21);
+		color: #fff;
 	}
 
 	.shareBox {
-		background-color: rgba(255, 255, 255, 1);
+		background-color: rgba(255, 255, 255, .09);
 		border-radius: 10rpx;
 		padding: 40rpx 30rpx;
 		margin-top: 100rpx;
 		font-weight: 700;
 
 		.title {
-			color: rgba(18, 18, 18, 1);
 			font-size: 40rpx;
 			text-align: center;
 		}
@@ -115,13 +112,13 @@
 
 	.bindButtom {
 		margin-top: 100rpx;
-		background: linear-gradient(90deg, #38F855, #21EDD3);
-		color: rgba(51, 49, 50, 1);
+		background: linear-gradient(90deg, #7D32FF, #3EE0FF);
 		text-align: center;
 		font-size: 36rpx;
 		padding: 30rpx;
 		font-weight: bold;
 		border-radius: 10rpx;
+		color: #FFF;
 	}
 
 	.logoBox {
@@ -129,8 +126,7 @@
 		text-align: center;
 
 		.logo {
-			width: 248rpx;
-			height: 296rpx;
+			width: 300rpx;
 		}
 	}
 
@@ -139,7 +135,7 @@
 		width: 700rpx;
 
 		.topTpl {
-			background: #E9EBEC;
+			background: rgba(255, 255, 255, .09);
 			border: 2rpx solid #CCCECF;
 			border-radius: 36rpx;
 			height: 71rpx;
@@ -160,12 +156,10 @@
 
 			.tpl {
 				font-size: 28rpx;
-				color: #141414;
 			}
 
 			.tpls {
 				font-size: 30rpx;
-				color: #788387;
 			}
 		}
 	}

+ 232 - 0
pages/index/buling.vue

@@ -0,0 +1,232 @@
+<template>
+	<view class="container">
+		<navBar :show-title="true" :title="$t('user.闪兑')" url="/pages/index/index"></navBar>
+		<view class="content">
+			<view class="title">
+				{{$t('user.兑换')}}
+			</view>
+			<view class="item">
+				<view class="flex">
+					<view class="flex">
+						<image class="topIcon" src="../../static/img/nav01.png" mode="scaleToFill"></image>
+						<view class="text">
+							BCMM
+						</view>
+					</view>
+					<view class="money">
+						{{$t('user.余额')}}:{{userInfo.BCMM*1}}
+					</view>
+				</view>
+				<view class="flex input">
+					<input placeholder-class="placeholder" placeholder="请填写花费数量" class="num" v-model="bcmm"
+						type="number" />
+					<view class="tipText" @click="bcmm = userInfo.BCMM*1">
+						MAX
+					</view>
+				</view>
+			</view>
+			<view class="imageTab">
+				<image class="tabIcon" src="../../static/img/tarIcon.png" mode="scaleToFill"></image>
+			</view>
+			<view class="item">
+				<view class="flex">
+					<view class="flex">
+						<image class="topIcon" src="../../static/img/homeUSDT.png" mode="scaleToFill"></image>
+						<view class="text">
+							USDT
+						</view>
+					</view>
+					<view class="money">
+						{{$t('user.余额')}}:{{userInfo.USDT*1}}
+					</view>
+				</view>
+				<view class="flex input">
+					<input disabled placeholder-class="placeholder" placeholder="填写BCMM自动计算" v-model="usdt" class="num"
+						type="number" />
+					<view class="tipText">
+						MAX
+					</view>
+				</view>
+			</view>
+			<view class="bottomText">
+				{{$t('user.兑换比率')}}:1BCMM≈{{bl}}USDT
+			</view>
+			<view class="buttomBtn" @click="buttomBtn">
+				{{$t('user.立即兑换')}}
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from "vuex";
+	import {
+		loadIndexs,
+		exchange
+	} from '@/api/index.js';
+	import {
+		getUserInfo
+	} from '@/api/user.js';
+	import navBar from "@/components/nav/nav.vue"
+	export default {
+		data() {
+			return {
+				usdt: '',
+				bcmm: '',
+				bl: 0,
+			}
+		},
+		watch: {
+			bcmm(newValue, oldValue) {
+				this.usdt = newValue * this.bl;
+			}
+		},
+		components: {
+			navBar
+		},
+		computed: {
+			...mapState("user", ['userInfo']),
+		},
+		onLoad(option) {
+			this.getUserInfo();
+			this.loadData();
+		},
+		methods: {
+			...mapMutations('user', ['setUserInfo']),
+			buttomBtn() {
+				if(this.bcmm>this.userInfo.BCMM*1){
+					uni.showToast({
+						title: this.$t('home.BCMM余额不足'),
+						icon: 'error'
+					})
+					return
+				}
+				uni.showLoading({
+					mask: true
+				});
+				exchange({
+					num: this.bcmm
+				}).then((res) => {
+
+					this.bl = res.data.price;
+					uni.showToast({
+						title: this.$t('user.兑换成功'),
+					})
+
+
+				}).catch((res) => {
+					uni.showToast({
+						title: this.$t('user.兑换失败'),
+						icon: 'error'
+					})
+					console.log(res);
+				})
+			},
+			loadData() {
+				loadIndexs().then((res) => {
+					this.bl = res.data.price;
+				}).catch((res) => {
+					console.log(res);
+				})
+			},
+			// 获取更新用户信息
+			getUserInfo() {
+				getUserInfo().then((res) => {
+					this.setUserInfo(res.data);
+				}).catch((res) => {
+					console.log(res);
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+
+	.container {
+		width: 100%;
+		line-height: 1;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+
+	.content {
+		margin: 25rpx;
+		border-radius: 20px;
+		border: 2px solid transparent;
+		background-clip: padding-box, border-box;
+		background-origin: padding-box, border-box;
+		background-image: linear-gradient(270deg, #0c0815, #0c0815), linear-gradient(to right, #7D32FF, #3EE0FF);
+		padding: 56rpx;
+
+		.bottomText {
+			font-weight: 500;
+			font-size: 30rpx;
+			color: #FFFFFF;
+			padding: 50rpx 0;
+		}
+
+		.title {
+			color: #FFF;
+			font-weight: bold;
+			font-size: 34rpx;
+			padding-bottom: 30rpx;
+		}
+
+		.buttomBtn {
+			background: linear-gradient(90deg, #7D32FF, #3EE0FF);
+			border-radius: 10rpx;
+			font-weight: bold;
+			font-size: 32rpx;
+			color: #FFFFFF;
+			text-align: center;
+			width: 100%;
+			padding: 26rpx;
+		}
+
+		.item {
+			color: #FFF;
+			font-size: 30rpx;
+			font-weight: 500;
+			background-color: #2A2C39;
+			padding: 50rpx 30rpx;
+			border-radius: 30rpx;
+
+			.topIcon {
+				width: 50rpx;
+				height: 50rpx;
+				margin-right: 10rpx;
+			}
+
+			.input {
+				margin-top: 100rpx;
+
+				.num {
+					text-align: center;
+				}
+			}
+		}
+	}
+
+	.tipText {
+		font-weight: bold;
+		font-size: 28rpx;
+		background: linear-gradient(to right, #7D32FF 0%, #3EE0FF 100%);
+		background-clip: text;
+		color: rgba(0, 0, 0, 0);
+	}
+
+	.imageTab {
+		text-align: center;
+		margin-top: -30rpx;
+		margin-bottom: -30rpx;
+
+		.tabIcon {
+			width: 85rpx;
+			height: 85rpx;
+		}
+	}
+</style>

+ 390 - 733
pages/index/index.vue

@@ -1,200 +1,218 @@
 <template>
 	<view class="container">
-		<view class="topBox flex">
-			<view class="topTpl flex_item">
-				<image style="width: 49rpx;height: 45rpx;" src="/static/img/logo.png"></image>
-				<view class="tpl clamp">BNB Smart Chain</view>
-			</view>
-			<view class="topTpl flex_item margin-l-30" v-if="userInfo.address">
-				<image class="userIcon" src="/static/img/img10.png"></image>
-				<view class="tpls clamp">{{userInfo.address|hideCenter}}</view>
-			</view>
-		</view>
-		<view class="levelBox flex">
-			<view class="levelInfo flex_item">
-				<image src="/static/img/img04.png" style="width: 50rpx;height: 61rpx;"></image>
-				<view class="levelTpl">
-					<view class="level">S{{userInfo.level||'0'}}</view>
+		<navBar></navBar>
+		<view class="contenCenter">
+			<!-- 轮播图 -->
+			<swiper class="top-swiper position-relative" autoplay="true" duration="400" interval="5000">
+				<swiper-item v-for="(item, index) in bannerList" :key="index" class="carousel-item">
+					<image :src="baseURL+item" />
+				</swiper-item>
+			</swiper>
+			<!-- 轮播图END -->
+			
+			<!-- 中间列表 -->
+			<view class="itemList flex padding-r-30 margin-t-30">
+				<view class="itemLeft flex">
+					<image class="itemImg topOne" src="../../static/img/itemList.png" mode="widthFix"></image>
+					<view class="itemTitle">
+						{{($t("home.共创社区"))}}
+					</view>
 				</view>
-				<view class="levelTpl">
-					<view class="level">L{{userInfo.point_level||'0'}}</view>
+				<view class="itemRight flex" @click="openPayMoney">
+					<view>
+						<view class="moneyLine text-linear-gradient">
+							$300
+						</view>
+						<view class="margin-t-10">
+							{{($t("home.立即前往"))}}
+						</view>
+					</view>
+					<image class="next" src="../../static/img/mininext.png" mode="scaleToFill"></image>
 				</view>
 			</view>
-			<view class="levelRight flex_item">
-				<!-- <view class="flex_item method">
-					<view class="">{{$t('home.教程')}}</view>
-					<image src="/static/img/img02.png" style="width: 30rpx;height: 30rpx;margin-left: 8rpx;"></image>
-				</view> -->
-				<view class="flex_item invitation" @click="copyShareLink">
-					<view class="">{{$t('home.邀请连接')}}</view>
-					<image src="/static/img/img03.png" style="width: 24rpx;height: 28rpx;margin-left: 8rpx;"></image>
+			<view class="itemList flex padding-r-30 ">
+				<view class="itemLeft flex">
+					<image class="itemImg" src="../../static/img/itemList1.png" mode="center"></image>
+					<view class="itemTitle">
+						{{($t("home.闪兑"))}}
+					</view>
 				</view>
-			</view>
-		</view>
-		<view class="flex infoBox">
-			<view class="info flex_item" v-if="userInfo.address">
-				<view class="infoName">{{$t('home.账号')}}:</view>
-				<view class="flex_item infoTpl clamp">
-					<view class="clamp account">{{userInfo.address|hideCenter}}</view>
-					<image src="/static/img/img03.png" class="infoTplImg" @click="copyAddress"></image>
+				<view class="itemRight flex" @click="navto('./buling')">
+					<view>
+						{{($t("home.立即前往"))}}
+					</view>
+					<image class="next" src="../../static/img/mininext.png" mode="scaleToFill"></image>
 				</view>
 			</view>
-			<view class="langBox flex_item">
-				<!-- <image src="/static/img/img08.png" style="width: 36rpx;height: 34rpx;"></image> -->
-				<picker :range="langList" range-key='label' @change="selectLang">
-					<view class="langType">{{label}}</view>
-				</picker>
-				<image src="/static/img/img01.png" style="width: 15rpx;height: 10rpx;"></image>
-			</view>
-		</view>
-		<view class="withdrawalBox">
-			<view class="moneyName">{{$t('home.可提现')}}</view>
-			<view class="flex">
-				<!-- USTD -->
-				<view>
-					<view class="moneyBox">
-						<view class="money" v-if="userInfo.USDT">{{userInfo.USDT|failNumber}}USDT</view>
-						<view class="money" v-else>0.00USDT</view>
+			<view class="itemList flex padding-r-30">
+				<view class="itemLeft flex">
+					<image class="itemImg" src="../../static/img/itemList2.png" mode="center"></image>
+					<view class="itemTitle">
+						{{($t("home.节点认购"))}}
 					</view>
-					<view class="withdrawal" @click="withdrawBtn(userInfo.USDT,'USDT')">{{$t('home.提现')}}</view>
 				</view>
-				<!-- VGT -->
-				<view>
-					<view class="moneyBox">
-						<!-- <view class="moneyName">{{$t('home.余额')}}</view> -->
-						<view class="money" v-if="userInfo.VGT">{{userInfo.VGT|failNumber}}VGT</view>
-						<view class="money" v-else>0.00VGT</view>
+				<view class="itemRight flex" @click="navto('./node')">
+					<view>
+						{{($t("home.立即前往"))}}
 					</view>
-					<view class="withdrawal" @click="withdrawBtn(userInfo.VGT,'VGT')">{{$t('home.提现')}}</view>
+					<image class="next" src="../../static/img/mininext.png" mode="scaleToFill"></image>
 				</view>
 			</view>
-		</view>
-		<view class="exchangeBox">
-			<view class="exchangeTop flex">
-				<view class="exchangeName">{{$t('home.充值')}}</view>
-				<view class="exchangeTpl flex_item">
-					<image src="/static/img/img05.png" style="width: 28rpx;height: 24rpx;"></image>
-					<view class="exchangeText" @click="transferShow = true">{{$t('home.转账')}}</view>
+			<view class="itemList flex padding-v-30 padding-c-30">
+				<view class="itemLeft flex">
+					<view class="imageBg flex-center">
+						<image class="bgTip" src="../../static/img/itemList3.png" mode="center"></image>
+					</view>
+					<view class="itemTitle">
+						<view class="nameBox flex flex-start">
+							<view class="name">
+								BCMM
+							</view>
+							<!-- <view class="upNum">
+								<text class="font-size-sm">+</text>10%
+							</view> -->
+						</view>
+						<view class="type margin-t-10">
+							{{($t("home.币种"))}}
+						</view>
+					</view>
+				</view>
+				<view class="itemRight">
+					<view class="money">
+						{{indexBase.price}}U
+					</view>
+					<view class="moneyText">
+						{{($t("home.今日价格"))}}
+					</view>
 				</view>
 			</view>
-			<view class="exchangeInfo flex">
-				<view class="currency flex_item">
-					<image class="moneyIcon" src="/static/img/homeVGT.png"></image>
-					<input class="name" v-model="PayUSDT" @blur="addMoney" type="number" placeholder="VGT" />
+			<view class="itemList flex padding-r-30">
+				<view class="itemLeft flex">
+					<image class="itemImg" src="../../static/img/itemList4.png" mode="center"></image>
+					<view class="itemTitle">
+						{{($t("home.模式说明"))}}
+					</view>
+				</view>
+				<view class="itemRight flex" @click="navto('./info')">
+					<view>
+						{{($t("home.立即前往"))}}
+					</view>
+					<image class="next" src="../../static/img/mininext.png" mode="scaleToFill"></image>
 				</view>
-				<!-- <image src="/static/img/img07.png" style="width: 56rpx;height: 56rpx;"></image>
-				<view class="currency flex_item">
-					<image class="moneyIcon" src="/static/img/homeVGT.png" style=""></image>
-					<input :value="($util.Mul(PayUSDT,userInfo.real_ratio))||''" class="name" type="number"
-						placeholder="VGT" disabled />
-				</view> -->
 			</view>
-			<view class="exchangeMoney flex">
-				<!-- <view class="moneyTitle">{{$t('home.余额')}}:
-				 <text v-if="userInfo.USDT">{{userInfo.USDT|failNumber}}</text>
-				 <text v-else>0.00</text>
-				</view> -->
-				<view class="moneyTitle">{{$t('home.余额')}}:
-				<text v-if="userInfo.VGT">{{userInfo.VGT|failNumber}}</text>
-				<text v-else>0.00</text>
+			<!-- 中间列表END -->
+			<!-- 邀请 -->
+			<view class="contentText">
+				{{$t('home.邀请地址')}}
+			</view>
+			<view class="contentBox flex background-linear-gradient" @click="copyShareLink">
+				<view class="shareLink clamp">
+					{{userInfo.address}}
+				</view>
+				<view class="copy">
+					{{($t("home.复制"))}}
 				</view>
 			</view>
-		</view>
-		<view class="orderBox">
-			<view class="orderList" v-for="item,index in orderList" :key="index">
-				<view class="orderTop flex">
-					<view class="topTitle flex_item">
-						<image src="/static/img/img06.png" style="width: 59rpx;height: 60rpx;"></image>
-						<view class="topName" v-if="lang=='tw'">{{item.name}}</view>
-						<view class="topName" v-if="lang=='en'">{{item.en_name}}</view>
-						<view class="topTip" :style="{background:( item.showswitch == 1? '#15C66E' :'#FF0000')}"></view>
+			<!-- 邀请END -->
+			
+			<!-- 功能排 -->
+			<view class="listConfige flex">
+				<view class="list background-linear-gradient" @click="navto('/pages/user/shareItem')">
+					<view class="listImg">
+						<image class="imageTip" src="../../static/img/config01.png" mode="widthFix"></image>
+					</view>
+					<view class="listName">
+						{{($t("home.我的邀请"))}}
+					</view>
+					<view class="listTip">
+						{{($t("home.邀请团队信息"))}}
 					</view>
-					<view class="topPrice">{{item.money_min}}-{{item.money_max}}USDT</view>
 				</view>
-				<view class="orderInfo">
-					<view class="infoTpl flex_item">
-						<image src="/static/img/img13.png" style="width: 26rpx;height: 26rpx;"></image>
-						<view class="tplText">{{$t('home.时间')}}:<text>{{item.begin}}-{{item.end}}</text></view>
+				<view class="list background-linear-gradient"  @click="navto('/pages/user/user')">
+					<view class="listImg">
+						<image class="imageTip" src="../../static/img/config02.png" mode="widthFix"></image>
 					</view>
-					<view class="infoTpl flex_item">
-						<image src="/static/img/img14.png" style="width: 26rpx;height: 26rpx;"></image>
-						<view class="tplText">{{$t('home.周期')}}:<text>{{item.day}}{{$t('home.天')}}</text></view>
+					<view class="listName">
+						{{($t("home.我的资产"))}}
+					</view>
+					<view class="listTip">
+						{{($t("home.资产明细"))}}
+					</view>
+				</view>
+				<view class="list background-linear-gradient"  @click="navto('/pages/user/myDetail?type=BCMM')">
+					<view class="listImg">
+						<image class="imageTip" src="../../static/img/config03.png" mode="widthFix"></image>
 					</view>
-					<view class="infoTpl flex_item">
-						<image src="/static/img/img12.png" style="width: 26rpx;height: 26rpx;"></image>
-						<view class="tplText">{{$t('home.收益')}}:<text>{{item.ratio}}</text></view>
+					<view class="listName">
+						
+						{{($t("home.我的收益"))}}
 					</view>
-					<view class="subscribe" @click="openSubscrib(item)" v-if="item.showswitch == 1">{{$t('home.预约')}}
+					<view class="listTip">
+						{{($t("home.收益明细"))}}
 					</view>
 				</view>
 			</view>
-		</view>
-		<u-popup :show="subscribeShow" @close="subscribeClose" :closeable="true">
-			<view class="subscribePopup">
-				<view class="popupTitle">{{orderItem.name}}</view>
-				<view class="popupBox flex">
-					<view class="popupTpl flex_item">
-						<image src="/static/img/img12.png" style="width: 26rpx;height: 26rpx;"></image>
-						<view class="tplName">{{$t('home.收益')}}:<text>{{orderItem.ratio}}</text></view>
+			<!-- 功能排END -->
+			<!-- 说明 -->
+			<view class="listConfige flex">
+				<view class="list big background-linear-gradient">
+					<view class="listImg">
+						<image class="imageTip" src="../../static/img/detail01.png" mode="center"></image>
 					</view>
-					<view class="popupTpl flex_item">
-						<image src="/static/img/img14.png" style="width: 26rpx;height: 26rpx;"></image>
-						<view class="tplName">{{$t('home.周期')}}:<text>{{orderItem.day}}{{$t('home.天')}}</text></view>
+					<view class="listMinName">
+						{{($t("home.共创"))}}
 					</view>
-				</view>
-				<view class="popupBox">
-					<view class="popupTpl flex_item">
-						<image src="/static/img/img13.png" style="width: 26rpx;height: 26rpx;"></image>
-						<view class="tplName">{{$t('home.时间')}}:<text>{{orderItem.begin}}-{{orderItem.end}}</text>
-						</view>
+					<view class="listMinTip">
+						{{($t("home.行业领先"))}}
 					</view>
 				</view>
-				<view class="popupBox">
-					<view class="popupTpl flex_item">
-						<image src="/static/img/img14.png" style="width: 26rpx;height: 26rpx;"></image>
-						<view class="tplName">{{$t('home.价格')}}:<text
-								class="price">{{orderItem.min|failNumber}}-{{orderItem.max|failNumber}}USDT</text></view>
+				<view class="list big background-linear-gradient">
+					<view class="listImg">
+						<image class="imageTip" src="../../static/img/detail02.png" mode="center"></image>
+					</view>
+					<view class="listMinName">
+						{{($t("home.共享"))}}
+					</view>
+					<view class="listMinTip">
+						{{($t("home.为全球数十个国家"))}}
 					</view>
 				</view>
-				<view class="timeBox">
-					<view class="timeTitle">{{$t('home.请选择预约')}}</view>
-					<view class="flex timeTpl">
-						<view class="timeName" v-for="item,index in timeList"
-							:class="item.check == true ? 'active' : ''" @click="timeSelect(item)" :key="index">
-							{{item.name}}
-						</view>
+				<view class="list big background-linear-gradient">
+					<view class="listImg">
+						<image class="imageTip" src="../../static/img/detail03.png" mode="center"></image>
+					</view>
+					<view class="listMinName">
+						{{($t("home.共富"))}}
+					</view>
+					<view class="listMinTip">
+						{{($t("home.BMCC生态"))}}
 					</view>
 				</view>
-				<view class="subscribeBtn" @click="submitTime">{{$t('home.预约')}}</view>
 			</view>
-		</u-popup>
-		<u-popup :show="transferShow" @close="transferShow = false" :closeable="true">
-			<view class="transferPopup">
-				<view class="popupTitle">VGT{{$t('home.转出数量')}}</view>
-				<view class="inputBox">
-					<view class="inputTitle">{{$t('home.请输入VGT转出数量')}}</view>
-					<input class="inputTpl" type="text" v-model="transferNum" :placeholder="$t('home.请输入VGT转出数量')" />
-				</view>
-				<view class="inputBox">
-					<view class="inputTitle">{{$t('home.请输入VGT接收地址')}}</view>
-					<input class="inputTpl" type="text" v-model="transferAddr" :placeholder="$t('home.请输入VGT接收地址')" />
-				</view>
-				<view class="subscribeBtn" @click="submitTransfer">{{$t('home.确定')}}</view>
+			<!-- 说明END -->
+			
+			<!-- 底部合作伙伴 -->
+			<view class="footerTitle margin-t-30 padding-t-30">
+				{{($t("home.合作伙伴"))}}
+			</view>
+			<view class="footerTitle margin-t-20">
+				Partners
+			</view>
+			<view class="footerImage">
+				<image class="footerImg" src="../../static/img/footerImg.png" mode="scaleToFill"></image>
 			</view>
-		</u-popup>
-		<taber></taber>
+			<!-- 底部合作伙伴END -->
+		</view>
+		
+		<!-- <taber></taber> -->
 	</view>
 </template>
 <script>
 	import {
-		auctions,
-		trade,
-		changeCalculator,
-		change,
-		appointment,
-		extract,
-		chargeCalculator,
-		charge
+		loadIndexs,
+		creatorOrder,
+		payOrder,
+		orderCalculator
 	} from '@/api/index.js';
 	import {
 		getUserInfo
@@ -208,78 +226,29 @@
 		mapActions,
 		mapMutations
 	} from "vuex";
-	import taber from "@/components/footer/footer.vue";
-	import icon from '../../uni_modules/uview-ui/libs/config/props/icon';
+	// import taber from "@/components/footer/footer.vue";
+	import navBar from "@/components/nav/nav.vue"
 	export default {
 		filters: {
-			hideCenter: function(value) {
-				const st = value.slice(7,value.length-7);
-				const sr = value.replace(st,'...')
-				return sr;
-			},
-			failNumber:function(number){
+			failNumber: function(number) {
 				return +(+number).toFixed(2)
 			}
 		},
 		components: {
-			taber
+			navBar
+			// taber
 		},
 		data() {
 			return {
-				orderList: [],
-				subscribeShow: false, //预约时间弹窗
-				orderItem: {}, //点击预约的数据
-				//转账参数
-				transferShow: false, //转账弹窗
-				transferNum: '', //转账数量
-				transferAddr: '', //转账地址
-				loading: 'loadmore', //加载状态
-				PayUSDT: '', //兑换的usde
-				getVGT: 0, //获得的VGT
-				typeList: [{
-					name: "今天",
-					langname: "今天",
-					check: false,
-					type: 1
-				}, {
-					name: "明天",
-					langname: "明天",
-					check: false,
-					type: 2
-				}, {
-					name: "后天",
-					langname: "后天",
-					check: false,
-					type: 3
-				}]
+				bannerList: [],
+				indexBase: {
+					price: 'loding',
+				}
 			}
 		},
 		computed: {
-			...mapState({
-				langList: "langList",
-				lang: "lang",
-			}),
 			...mapState(['baseURL', 'urlFile']),
 			...mapState("user", ['userInfo', 'hasLogin']),
-			label() {
-				let label = ''
-				try {
-					label = this.langList.find((item) => {
-						return item.value == this.lang
-					}).label;
-				} catch (e) {
-					label = 'tw'
-				}
-
-				return label
-			},
-			//时间列表
-			timeList() {
-				for (var i = 0; i < this.typeList.length; i++) {
-					this.typeList[i].name = this.$t(`home.${this.typeList[i].langname}`)
-				}
-				return this.typeList;
-			}
 		},
 		onLoad(option) {
 			if (option.spread) {
@@ -292,81 +261,76 @@
 			this.getUserInfo();
 		},
 		methods: {
-			...mapMutations('user', ['setUserInfo', 'login']),
-			...mapActions({
-				setLang: "setLang",
-			}),
-			// 申请提现
-			withdrawBtn(money,type) {
-				let token = ''
-				if(type == 'USDT'){
-					token = 'USDT'
-					if (+this.userInfo.USDT == 0) {
-						uni.showToast({
-							title: this.$t('home.无法提现'),
-							icon: "error"
-						});
-					}
-					return false
-				}
-				if(type == 'VGT'){
-					token = 'VGT_OUT'
-					if (+this.userInfo.VGT == 0) {
-						uni.showToast({
-							title: this.$t('home.无法提现'),
-							icon: "error"
+			...mapMutations('user', ['setUserInfo']),
+			// 报单
+			openPayMoney() {
+				const that = this;
+				uni.showActionSheet({
+					title: that.$t("home.请选择支付方式"),
+					itemList: ['USDT', that.$t("home.余额")],
+					success(res) {
+						uni.showLoading({
+							mask: true
 						});
+						that.creatorOrder(res.tapIndex)
 					}
-					return
-				}
-				extract({
-					token: token,
-					number: +money
-				}).then((res) => {
-					uni.showToast({
-						title: res.msg
-					});
+
+				})
+			},
+			// 生成订单
+			creatorOrder(index) {
+				creatorOrder({
+					num: 300,
+				}).then(({
+					data
+				}) => {
+					this.payOrder(index + 1, data.id)
+				}).catch((res) => {
 					console.log(res);
 				})
 			},
-			// 充值
-			async addMoney(res) {
+			// 支付订单
+			async payOrder(ind, id) {
 				const that = this;
-				if (res.detail.value <= 0) {
-					return
+				let pushData = {
+					num: 300,
+					type: ind
 				}
-				uni.showLoading({
-					mask: true
-				});
-				const num = res.detail.value;
-				let token = 'VGT'
 				try {
-					const {
-						data
-					} = await chargeCalculator({
-						num,
-						token
-					});
-					const txHash = await ethereum.request({
-						method: 'eth_sendTransaction',
-						params: [{
-							from: that.userInfo.address, // The user's active address.
-							to: data.data.to,
-							value: 0,
-							data: data.data.data,
-						}]
-					})
-					const req = await change({
-						order_sn: data.order_sn,
-						hash: txHash,
-					});
+					if (ind == 1) {
+						const {
+							data
+						} = await orderCalculator({
+							id
+						});
+						const txHash = await ethereum.request({
+							method: 'eth_sendTransaction',
+							params: [{
+								from: that.userInfo.address, // The user's active address.
+								to: data.data.to,
+								value: 0,
+								data: data.data.data,
+							}]
+						})
+						const req = await payOrder(id, {
+							type: ind,
+							transactionHash: txHash,
+						});
+					}
+					if (ind == 2) {
+						const req = await payOrder(id, {
+							type: ind
+						});
+					}
 					that.getUserInfo();
+					
 					uni.showToast({
-						title: this.$t('home.充值成功')
+						title: that.$t('home.充值成功')
 					})
 				} catch (e) {
+					console.log(e,'err');
 					uni.showToast({
-						title: this.$t('home.充值失败'),
+						title: that.$t('home.充值失败'),
 						icon: 'error'
 					})
 				}
@@ -383,6 +347,7 @@
 					});
 				}
 			},
+			// 复制分享链接
 			copyShareLink() {
 				const that = this;
 				if (!that.hasLogin) {
@@ -402,31 +367,12 @@
 					});
 				}
 			},
-			copyAddress() {
-				const that = this;
-				uni.setClipboardData({
-					data: this.userInfo.address,
-					showToast: false,
-					success: function() {
-						uni.showToast({
-							title: that.$t('home.成功')
-						})
-						//调用方法成功
-						console.log("success");
-					},
-				});
-			},
 			// 请求载入数据
 			async loadData() {
-				auctions().then((res) => {
-					this.orderList = res.data.map((res) => {
-						res.min = +res.min;
-						res.max = +res.max;
-						res.money_max = +res.money_max;
-						res.money_min = +res.money_min;
-						return res
-					});
-					console.log(res);
+				loadIndexs().then((res) => {
+					this.bannerList = res.data.banner.split(',');
+					this.indexBase = res.data;
+					console.log(this.bannerList)
 				}).catch((res) => {
 					console.log(res);
 				})
@@ -439,92 +385,6 @@
 					console.log(res);
 				})
 			},
-			//时间选择
-			timeSelect(item) {
-				console.log(item);
-				item.check = !item.check;
-			},
-			//打开时间选择弹窗
-			openSubscrib(item) {
-				this.orderItem = item
-				this.subscribeShow = true
-			},
-			//关闭时间选择弹窗
-			subscribeClose() {
-				this.subscribeShow = false
-			},
-			//提交预约时间
-			submitTime() {
-				const that = this;
-				uni.showLoading({
-					mask: true
-				});
-				let push = {
-					id: that.orderItem.id,
-					type: that.timeList.filter((res) => {
-						return res.check
-					}).map((res) => {
-						if (res.check) {
-							return res.type
-						}
-					}).join(',')
-				}
-				console.log(push, 'push');
-				appointment(push).then((res) => {
-					uni.hideLoading()
-					uni.showToast({
-						title: that.$t("home.预约成功")
-					});
-					that.subscribeShow = false
-				}).catch((err) => {
-					uni.hideLoading()
-					uni.showToast({
-						title: err.msg,
-						icon: 'error'
-					});
-				})
-			},
-			//提交转账申请
-			submitTransfer() {
-				const that = this;
-				const VGT_TRADE = 'VGT_TRADE' + (new Date()).getTime();
-				const num = that.transferNum;
-				const address = that.transferAddr;
-				uni.showLoading({
-					mask: true
-				});
-				ethereum.request({
-					"method": "personal_sign",
-					"params": [
-						VGT_TRADE,
-						that.userInfo.address
-					]
-				}).then((res) => {
-					trade({
-						num,
-						token: 'VGT',
-						address,
-						sign: res,
-						msg: VGT_TRADE,
-					}).then((res) => {
-						that.transferShow = false;
-						uni.hideLoading()
-						uni.showToast({
-							title: that.$t("home.转账成功")
-						});
-					}).catch((res) => {
-						uni.hideLoading()
-						uni.showToast({
-							title:res.msg,
-							icon: 'error'
-						});
-					})
-				});
-			},
-			//切换语言
-			selectLang(value) {
-				this.setLang(this.langList[value.detail.value].value);
-			},
 		},
 	}
 </script>
@@ -532,418 +392,215 @@
 <style lang="scss">
 	.container {
 		width: 100%;
-		padding: 25rpx;
 		line-height: 1;
+		background-color: rgb(12, 8, 21);
+	}
+	.contenCenter{
+		padding: 25rpx;
 	}
 
-	.topBox {
-		padding-bottom: 31rpx;
-		width: 700rpx;
+	// 顶部轮播图
+	.top-swiper {
+		height: 320rpx;
+		border-radius: 30rpx;
+		overflow: hidden;
+		z-index: 9;
 
-		.topTpl {
-			background: #E9EBEC;
-			border: 2rpx solid #CCCECF;
-			border-radius: 36rpx;
-			height: 71rpx;
-			padding-left: 10rpx;
+		// margin: 20rpx 0 0;
+		image {
+			width: 100%;
+			height: 320rpx;
+		}
+	}
+
+
+	.itemList {
+		margin-bottom: 30rpx;
+		background: url("../../static/img/itemBg.png") no-repeat;
+		background-size: 100% 100%;
+		color: #FFF;
+
+		.itemLeft {
 			font-weight: bold;
-			padding-right: 20rpx;
-			
 
-			&.margin-l-30 {
-				width: 0;
-				flex-grow: 1;
-			}
+			.itemImg {
+				width: 158rpx;
+				height: 158rpx;
 
-			.userIcon {
-				width: 51rpx;
-				height: 48rpx;
-				flex-shrink: 0;
+				&.topOne {
+					width: 158rpx;
+				}
 			}
 
-			.tpl {
-				font-size: 28rpx;
-				color: #141414;
+			.itemTitle {
+				font-size: 35rpx;
 			}
 
-			.tpls {
-				font-size: 30rpx;
-				color: #788387;
-			}
 		}
-	}
 
-	.levelBox {
-		.levelInfo {
-			.levelTpl {
-				background: url('../../static/img/img11.png') no-repeat;
-				width: 80rpx;
-				height: 34rpx;
-				background-size: 100% 100%;
-				position: relative;
-				margin-left: 10rpx;
+		.itemRight {
+			font-size: 20rpx;
+			text-align: right;
 
-				.level {
-					position: absolute;
-					right: 10rpx;
-					font-size: 28rpx;
-					font-weight: bold;
-					color: #AB7600;
-					line-height: 34rpx;
-				}
+			.next {
+				margin-left: 10rpx;
+				width: 11rpx;
+				height: 18rpx;
 			}
-		}
 
-		.levelRight {
-			.method {
-				background: #FBEBEC;
-				border: 1px solid #FFBE96;
-				border-radius: 50rpx;
-				font-size: 26rpx;
+			.moneyLine {
 				font-weight: bold;
-				color: #FE6107;
-				padding: 10rpx 16rpx;
-				margin-right: 17rpx;
+				font-size: 28rpx;
 			}
 
-			.invitation {
-				border: 1px solid #BCC7CB;
-				border-radius: 50rpx;
-				font-size: 26rpx;
+			.money {
 				font-weight: bold;
-				color: #313F4A;
-				padding: 10rpx 16rpx;
+				font-size: 26rpx;
+				color: #FFFFFF;
+				text-align: right;
 			}
-		}
-
-	}
 
-	.infoBox {
-		padding: 35rpx 0rpx;
-		width: 680rpx;
-
-		.info {
-			// width: 70%;
-			flex-grow: 1;
-			width: 0;
-			padding-right: 30rpx;
+			.moneyText {
+				font-weight: 500;
+				font-size: 22rpx;
+				color: #FFFFFF;
+				opacity: 0.3;
+				margin-top: 10rpx;
+			}
+		}
 
-			.infoName {
-				font-size: 32rpx;
+		.itemTitle {
+			.name {
 				font-weight: bold;
-				color: #141414;
-				flex-shrink: 0;
+				font-size: 26rpx;
+				color: #FFFFFF;
 			}
 
-			.infoTpl {
-				border: 1px solid #BCC7CB;
-				border-radius: 50rpx;
-				line-height: 58rpx;
-				padding: 0rpx 15rpx;
-				flex-grow: 1;
+			.upNum {
+				background: rgba(28, 215, 183, .22);
+				border-radius: 19px;
+				font-weight: 500;
+				font-size: 22rpx;
+				color: #1AD9BA;
+				padding: 10rpx 20rpx;
+				margin-left: 10rpx;
+			}
 
-				.account {
-					flex-grow: 1;
-				}
+			.type {
+				font-size: 22rpx;
+				opacity: .30;
 
-				.infoTplImg {
-					flex-shrink: 0;
-					width: 24rpx;
-					height: 28rpx;
-				}
 			}
 		}
 
-		.langBox {
-			.langType {
-				font-size: 27rpx;
-				font-weight: bold;
-				color: #141414;
-				padding: 0rpx 8rpx;
+		.imageBg {
+			width: 83rpx;
+			height: 83rpx;
+			background: #2C2933;
+			border-radius: 10rpx;
+			margin-right: 20rpx;
+
+			.bgTip {
+				width: 33rpx;
+				height: 41rpx;
 			}
 		}
 	}
 
-	.withdrawalBox {
-		background: url('../../static/img/img09.png') no-repeat;
-		width: 100%;
-		height: 217rpx;
-		background-size: 100% 100%;
-		padding: 20rpx 48rpx 0rpx 48rpx;
-        .moneyName {
-        	font-size: 32rpx;
-        	font-weight: bold;
-        	padding: 10rpx 10rpx;
-			color: #FFFFFF;
-        }
-		.moneyBox {
-			color: #FFFFFF;
-			font-weight: bold;
+	.contentText {
+		font-weight: 500;
+		font-size: 29rpx;
+		color: #FFFFFF;
+		line-height: 46rpx;
+		padding-left: 30rpx;
+		padding-top: 30rpx;
+	}
 
+	.contentBox {
+		margin-top: 30rpx;
+		color: #FFF;
+		border-radius: 100rpx;
+		line-height: 1;
+		line-height: 70rpx;
 
-			.money {
-				font-size: 44rpx;
-				padding-top: 15rpx;
-			}
+		.shareLink {
+			padding: 0 30rpx;
 		}
 
-		.withdrawal {
-			background: #FFFFFF;
-			border-radius: 50rpx;
-			font-size: 28rpx;
-			font-weight: 500;
-			color: #1DBC71;
-			line-height: 55rpx;
-			padding: 0rpx 70rpx;
+		.copy {
+			background: linear-gradient(90deg, #7D32FF, #3EE0FF);
+			border-radius: 100rpx;
+			padding: 0rpx 50rpx;
 			flex-shrink: 0;
-			margin-top: 10rpx;
 		}
 	}
 
-	.exchangeBox {
-		padding: 50rpx 0rpx;
-
-		.exchangeTop {
-			.exchangeName {
-				font-size: 38rpx;
-				font-weight: bold;
-				color: #242627;
-			}
-
-			.exchangeTpl {
-				.exchangeText {
-					font-size: 27rpx;
-					font-weight: 500;
-					color: #084D92;
-					padding-left: 10rpx;
-				}
-			}
-		}
-
-		.exchangeInfo {
-			padding: 23rpx 0rpx;
-            justify-content: center; 
-			.currency {
-				width: 98%;
-				border: 1px solid #BCC7CB;
-				border-radius: 10rpx;
-				padding: 20rpx;
-				line-height: 40rpx;
-
-				.moneyIcon {
-					flex-shrink: 0;
-					width: 35rpx;
-					height: 35rpx;
-				}
+	.listConfige {
+		margin-top: 100rpx;
+		color: #FFF;
+		text-align: center;
 
-				.name {
-					font-size: 29rpx;
-					color: #242627;
-					padding-left: 15rpx;
+		.list {
+			width: 215rpx;
+			height: 244rpx;
+			border-radius: 30rpx;
+			line-height: 1;
+
+			.listImg {
+				.imageTip {
+					margin-top: -130rpx;
+					margin-left: -40rpx;
+					width: 280rpx;
+					height: 280rpx;
 				}
 			}
-		}
 
-		.exchangeMoney {
-			.moneyTitle {
-				font-size: 28rpx;
-				color: #1C2645;
+			.listName {
+				margin-top: -40rpx;
+				font-size: 33rpx;
 			}
-		}
-	}
-
-	.orderBox {
-		.orderList {
-			background: #FFFFFF;
-			border-radius: 15rpx;
-			margin-bottom: 20rpx;
-			padding: 20rpx;
-
-			.orderTop {
-				.topTitle {
-					.topName {
-						font-size: 32rpx;
-						font-family: PingFang SC;
-						font-weight: bold;
-						color: #262626;
-						padding-left: 8rpx;
-					}
-
-					.topTip {
-						width: 20rpx;
-						height: 20rpx;
-						border-radius: 50%;
-						margin-left: 24rpx;
-					}
-				}
-
-				.topPrice {
-					font-size: 28rpx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #F99328;
-				}
-			}
-
-			.orderInfo {
-				position: relative;
 
-				.infoTpl {
-					padding-top: 15rpx;
-					font-size: 28rpx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #6A6A6A;
-
-					.tplText {
-						padding-left: 8rpx;
-
-						text {
-							color: #262626;
-						}
-					}
-				}
-
-				.subscribe {
-					position: absolute;
-					right: 20rpx;
-					bottom: 20rpx;
-					background: linear-gradient(90deg, #38F855, #21EDD3);
-					border-radius: 10rpx;
-					width: 163rpx;
-					line-height: 63rpx;
-					text-align: center;
-					font-size: 28rpx;
-					font-family: PingFang SC;
-					font-weight: bold;
-					color: #141414;
-				}
+			.listTip {
+				margin-top: 20rpx;
+				ont-weight: 500;
+				font-size: 23rpx;
+				opacity: 0.39;
 			}
 
-		}
-	}
-
-	.subscribePopup {
-		padding: 50rpx 40rpx 40rpx 40rpx;
-
-		.popupTitle {
-			text-align: center;
-			font-size: 36rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #262626;
-			margin-bottom: 55rpx;
-		}
-
-		.popupBox {
-			.popupTpl {
-				flex-grow: 1;
-				margin-bottom: 32rpx;
-
-				.tplName {
-					font-size: 32rpx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #6A6A6A;
-					padding-left: 12rpx;
-
-					text {
-						color: #262626;
-					}
-
-					.price {
-						color: #FF0000 !important;
-					}
-				}
+			.listMinName {
+				margin-top: -60rpx;
 			}
-		}
 
-		.timeBox {
-			background: url('../../static/img/img16.png') no-repeat;
-			width: 100%;
-			height: 346rpx;
-			background-size: 100% 100%;
-			padding: 50rpx 60rpx 0rpx 60rpx;
-			margin-bottom: 35rpx;
-
-			.timeTitle {
-				position: relative;
-				font-size: 36rpx;
-				font-family: PingFang SC;
-				color: #262626;
+			.listMinTip {
+				line-height: 1.5;
+				margin-top: 20rpx;
+				ont-weight: 400;
+				font-size: 17rpx;
+				opacity: 0.41;
+				padding: 0 10rpx;
 			}
 
-			.timeTpl {
-				padding-top: 40rpx;
-				flex-wrap: wrap;
-				justify-content: space-between;
-
-				.timeName {
-					flex-grow: 1;
-					text-align: center;
-					border-radius: 50rpx;
-					margin-right: 20rpx;
-					border: 1rpx solid #0062E9;
-					color: #0062E9;
-					padding: 16rpx 10rpx;
-					font-size: 24rpx;
-				}
-
-				.active {
-					background: #0062E9;
-					color: #fff;
-				}
+			&.big {
+				height: 287rpx;
 			}
 		}
 	}
 
-	.subscribeBtn {
-		background: linear-gradient(90deg, #38F855, #21EDD3);
-		border-radius: 10rpx;
-		font-size: 35rpx;
-		font-family: PingFang SC;
+	.footerTitle {
+		line-height: 1;
 		font-weight: bold;
-		color: #332730;
-		line-height: 93rpx;
+		font-size: 29rpx;
+		color: #FFFFFF;
 		text-align: center;
 	}
 
-	.transferPopup {
-		padding: 50rpx 40rpx 40rpx 40rpx;
-
-		.popupTitle {
-			text-align: center;
-			font-size: 36rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #262626;
-			margin-bottom: 55rpx;
-		}
-
-		.inputBox {
-			margin-bottom: 50rpx;
-
-			.inputTitle {
-				font-size: 28rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #262626;
-				padding-bottom: 22rpx;
-			}
+	.footerImage {
+		text-align: center;
+		padding-bottom: 100rpx;
 
-			.inputTpl {
-				background: #F6F6F6;
-				border-radius: 5rpx;
-				font-size: 28rpx;
-				font-weight: 500;
-				color: #5A6483;
-				height: 100rpx;
-				padding-left: 25rpx;
-			}
+		.footerImg {
+			width: 617rpx;
+			height: 268rpx;
 		}
 	}
-
-	.input-placeholder {
-		color: #5A6483;
-	}
 </style>

+ 55 - 0
pages/index/info.vue

@@ -0,0 +1,55 @@
+<template>
+	<view class="container">
+		<navBar :show-title="true" title="模式说明" url="/pages/index/index"></navBar>
+		<view class="text-center">
+			<image class="contentImg" src="../../static/img/indexInfo.png" mode="widthFix"></image>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapMutations
+	} from "vuex";
+	import {
+		getUserInfo
+	} from '@/api/user.js';
+	import navBar from "@/components/nav/nav.vue"
+	export default {
+		data() {
+			return {}
+		},
+		components: {
+			navBar
+		},
+		onLoad(option) {
+			this.getUserInfo();
+		},
+		methods: {
+			...mapMutations('user', ['setUserInfo']),
+			// 获取更新用户信息
+			getUserInfo() {
+				getUserInfo().then((res) => {
+					this.setUserInfo(res.data);
+				}).catch((res) => {
+					console.log(res);
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.contentImg {
+		margin: 0 auto;
+		width: 686rpx;
+	}
+
+
+	.container {
+		width: 100%;
+		line-height: 1;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+</style>

+ 175 - 0
pages/index/node.vue

@@ -0,0 +1,175 @@
+<template>
+	<view class="container">
+		<navBar :show-title="true" :title="$t('home.节点认购')" url="/pages/index/index"></navBar>
+		<view class="text-center border-linear-gradient">
+			<image class="contentImg" src="../../static/img/nodeBg.png" mode="widthFix"></image>
+			<view class="title flex-center" style="margin-top: -80rpx;">
+				<view>{{$t('home.认购价')}}:</view><view class="num text-linear-gradient">{{num}}U</view>
+			</view>
+			<!-- <view class="title flex-center">
+				<view>认购数:</view><view class="num text-linear-gradient">0.1U</view>
+			</view> -->
+			<view class="title flex-center">
+				<view>{{$t('home.社区建设')}}</view>
+			</view>
+			<view class="buttom" @click="openPayMoney">
+				{{$t('home.立即认购')}}
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		loadIndexs,
+		creatorPoint,
+		payPoint,
+		pointCalculator
+	} from '@/api/index.js';
+	import {
+		mapMutations
+	} from "vuex";
+	import {
+		getUserInfo
+	} from '@/api/user.js';
+	import navBar from "@/components/nav/nav.vue"
+	export default {
+		data() {
+			return {
+				num:''
+			}
+		},
+		components: {
+			navBar
+		},
+		onLoad(option) {
+			this.getUserInfo();
+		},
+		methods: {
+			...mapMutations('user', ['setUserInfo']),
+			// 获取更新用户信息
+			getUserInfo() {
+				getUserInfo().then((res) => {
+					this.setUserInfo(res.data);
+				}).catch((res) => {
+					console.log(res);
+				})
+				loadIndexs().then((res) => {
+					this.num = res.data.point_num
+				}).catch((res) => {
+					console.log(res);
+				})
+			},
+			// 报单
+			openPayMoney() {
+				const that = this;
+				uni.showActionSheet({
+					title: that.$t("home.请选择支付方式"),
+					itemList: ['USDT', that.$t("home.余额")],
+					success(res) {
+						uni.showLoading({
+							mask: true
+						});
+						that.creatorOrder(res.tapIndex)
+					}
+			
+				})
+			},
+			// 生成订单
+			creatorOrder(index) {
+				creatorPoint({
+					num: this.num*1,
+				}).then(({
+					data
+				}) => {
+					this.payOrder(index + 1, data.id)
+				}).catch((res) => {
+					console.log(res);
+				})
+			},
+			// 支付订单
+			async payOrder(ind, id) {
+				const that = this;
+				let pushData = {
+					num:  this.num*1,
+					type: ind
+				}
+				try {
+					if (ind == 1) {
+						const {
+							data
+						} = await pointCalculator({
+							id
+						});
+						const txHash = await ethereum.request({
+							method: 'eth_sendTransaction',
+							params: [{
+								from: that.userInfo.address, // The user's active address.
+								to: data.data.to,
+								value: 0,
+								data: data.data.data,
+							}]
+						})
+						const req = await payPoint(id, {
+							type: ind,
+							transactionHash: txHash,
+						});
+					}
+					if (ind == 2) {
+						const req = await payPoint(id, {
+							type: ind
+						});
+					}
+					that.getUserInfo();
+					
+					uni.showToast({
+						title: that.$t('home.认购成功')
+					})
+				} catch (e) {
+					console.log(e,'err');
+					uni.showToast({
+						title: that.$t('home.认购失败'),
+						icon: 'error'
+					})
+				}
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.contentImg {
+		margin: 0 auto;
+		width: 100%;
+		margin-top: -200rpx;
+	}
+	.container {
+		width: 100%;
+		line-height: 1;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+	.text-center{
+		border-radius: 30rpx;
+		margin: 100rpx 30rpx 0 30rpx;
+		color: #FFF;
+		padding: 80rpx 50rpx;
+		.title{
+			font-weight: 500;
+			font-size: 33rpx;
+			padding-bottom: 50rpx;
+			// align-items: flex-end;
+		}
+		.num{
+			font-weight: bold;
+			font-size: 52rpx;
+		}
+	}
+	.buttom{
+		font-weight: bold;
+		font-size: 32rpx;
+		border-radius: 20rpx;
+		padding: 30rpx;
+		background: linear-gradient(to right, #7D32FF 0%, #3EE0FF 100%);
+	}
+</style>

+ 0 - 305
pages/user/fhlist.vue

@@ -1,305 +0,0 @@
-<template>
-	<view class="content">			
-		<view class="wrap fhlist" >
-			<view class="title flex">節點詳情 </view>
-			<view class="fhbox flex">
-				<view class="flex boxnum">
-					今日加權 <p class="p">{{fhNums.jinri}}VGT</p>
-				</view>
-				<view class="fg"></view>
-				<view class="flex boxnum">
-					總加權 <p class="p">{{fhNums.zong}}VGT</p>
-				</view>
-			</view>
-			<view class="mylist">
-				<view class="Listbox">
-					<view class="listTop flex"  >
-						<p style="width: 30%;">地址</p>
-						<p style="width: 30%;">金額</p>
-						<p style="width: 40%;">時間</p>
-					</view>
-					<view class="listrow" v-if="lists.length>0">
-						<view class="rowli flex" v-for="(items,indexs) in lists" :key="indexs">
-							<p style="width: 30%;color: #2F80ED;" >{{items.walletAddress}}</p>
-					     	<p style="width: 30%;" >{{items.money}}</p>						
-							<p style="width: 40%;" >{{items.shijian}}</p>
-							</view>
-						<uni-load-more :status="status" :icon-size="14" :content-text="contentText"
-							v-if="totalCount > 10" />
-					</view>
-					<view class="noMore" v-else>暫無數據</view>
-				</view>
-			</view>
-		</view>
-		<!-- <view class="noMore" v-else>暫無數據</view> -->
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-				statusBarHeight:'',
-				content:''	,
-				fhNums:{},
-				lists:[],
-				type:'',
-				status: 'more',//'上拉加載更多','加載中','沒有更多'
-				contentText: {
-					contentdown: '上拉加載更多',
-					contentrefresh:'加載中',
-					contentnomore:'沒有更多'
-				 },
-				page: '1',
-				totalCount: '',//总条数
-				
-			}
-		},
-		computed: {
-			i18n() {
-				return this.$t('lang')
-			}		
-		},
-		onLoad(option) {	
-			this.type=option.type
-			this.getList()			
-	     //获取状态栏+导航栏的高度
-			let _that = this;
-			uni.getSystemInfo({
-				success(e) {
-					if (e.platform == "ios") {
-						_that.statusBarHeight = e.statusBarHeight + 45;
-					} else {
-						_that.statusBarHeight = e.statusBarHeight + 50;
-					}
-				}
-			})
-		},
-		//上拉加载更多,onReachBottom上拉触底函数
-		onReachBottom() { 			
-			if (this.totalCount > this.lists.length) {
-				this.status = 'loading';
-				setTimeout(() => {
-					this.page++
-					this.getList(); //执行的方法	
-					
-				}, 1000) //这里我是延迟一秒在加载方法有个loading效果,如果接口请求慢的话可以去掉
-			} else { //停止加载
-				this.status = 'noMore'
-			}
-		
-		},
-		
-	
-		methods: {           
-			getList(){	
-				let data={
-						walletAddress:uni.getStorageSync('walletAddress'),
-						cType:uni.getStorageSync('cType'),	
-						type:this.type,
-						page:this.page
-				   	}
-				this.$http.jiedianxq(data).then(res => {					
-					var datas =res.data						
-					if(datas.code == 200 ){							
-						
-						this.fhNums=datas.data
-						this.totalCount = datas.data.list.total
-						if (datas.data.list.total > 0) {
-							const dataMap = datas.data.list.data
-							this.lists = this.reload ? dataMap : this.lists.concat(dataMap);
-							this.reload = false;
-						} else {
-							this.lists = [];
-						}
-						if (this.totalCount == this.lists.length) {
-							this.reload = false;
-							this.status = 'noMore'
-						}
-					}else{					
-						uni.showToast({
-							title:datas.msg,
-							icon:'none',
-				 		})
-					}
-				 }).catch(err => {						
-					uni.showToast({
-						title:err,
-						icon:'none',
-					})
-				 })			
-			},
-			back(){
-				uni.navigateBack()
-			}
-		
-		},
-	
-	}
-</script>
-
-<style scoped lang="scss">
-	.fhlist{
-		 padding-top: 100rpx;
-		 .title{
-			 color: #000;
-			 font-size: 36rpx;
-			 margin-left: 10rpx;
-			 align-items: flex-end;
-			 .p{
-				 color: #333;
-				 font-size: 24rpx;
-				 margin-left: 12rpx;
-			 }
-		 }
-		 .fhbox{
-			width:94%; 
-			background-color: #fff;
-			padding: 32rpx 3%;
-			margin-top:24rpx ;
-			justify-content: space-around;
-			.fg{
-				height: 52rpx;
-				width: 1rpx;
-				background-color: #333;
-			}
-			.boxnum{
-				width: 40%;
-				font-size: 24rpx;
-				color: #333333;
-				.p{
-					font-size: 36rpx;
-					font-weight: bold;
-					margin-left: 10rpx;
-				}
-			}
-		 }
-		 .mylist{
-			 background-color: #fff;
-			 border-radius: 20rpx;
-			 padding: 24rpx 0;	
-			 margin: 40rpx 0;		 }
-		 .Listbox{
-			margin: 0 24rpx; 								
-			.listTop{
-				padding: 20rpx 0;
-				border-bottom: 1rpx solid #DCE1F6;
-				font-size: 28rpx;
-				color: #828282;
-				text-align: center;
-				
-			}
-			.listrow{
-				margin: 20rpx 0;
-				.rowli{
-					padding-bottom: 48rpx;
-					font-size: 28rpx;
-					color: #4F4F4F;
-					text-align: center;
-					flex-wrap:wrap;
-					.yuyin{
-						margin-top:20rpx ;
-						padding: 10rpx 20rpx;
-						font-size: 28rpx;
-						color: #828282;
-					}
-				}
-			}
-		 }
-		 
-	}
-	
-	.leakagebox{
-		position: relative;
-		font-size: 28rpx;
-		color: #333;
-		line-height: 80rpx;
-	
-	}
-	.mallList{
-	
-		margin-top: 40rpx;
-	    flex-wrap: wrap;
-		.listli{
-			width: 41%;
-			padding:30rpx 24rpx;
-			// border-radius: 8rpx;
-			// background-color: #fff;
-			// box-shadow: 0px 1px 5px 0px #C9D9F199;
-			margin-bottom: 30rpx;
-			margin-right: 28rpx;
-			
-		}
-			.listli:nth-child(2n){
-				margin-right: 0;
-			}
-		.rows {
-			background-color: #fff;
-			border-radius: 20rpx;
-			//padding: 32rpx 0;
-		
-		
-			.title {
-				margin-bottom: 20rpx;		
-				.titfl {
-					color: #333333;
-					font-size: 32rpx;
-					font-weight: 700;
-					.typeTips{
-						width: 20rpx;
-						height: 20rpx;
-						border-radius: 50rpx;
-						margin-left: 20rpx;
-					}
-					.red{
-						background-color: red;
-					}
-					.green{
-						background-color: #14C670;
-					}
-				}
-		
-				.price {
-					color: #F5A94F;
-				}
-		
-			}
-		
-			.listimg {
-				width: 48rpx;
-				height: 48rpx;
-				margin-right: 10rpx;
-			}
-		
-			.iconimg {
-				width: 36rpx;
-				height: 36rpx;
-			}
-		
-			.rowsfl {
-				font-size: 28rpx;		
-				.times {
-					margin-bottom: 24rpx;
-					color: #828282;		
-					span {
-						color: #333333;
-					}
-				}
-			}
-		
-			.rowsfr {
-				background: linear-gradient(90.89deg, #38F957 49.57%, #1DEEE1 99.24%);
-				width: 80%;
-				height: 64rpx;
-				text-align: center;
-				line-height: 64rpx;
-				color: #040616;
-				font-size: 28rpx;
-				border-radius: 8rpx;
-		        margin-left: 10%;
-				margin-top: 12rpx;
-			}
-		}
-	}
-
-</style>

+ 178 - 0
pages/user/money.vue

@@ -0,0 +1,178 @@
+<template>
+	<view class="container">
+		<view class="topBox">
+			<image :src="`../../static/img/userIcon${type=='USDT'?1:2}.png`" class="logo" mode="scaleToFill"></image>
+			<view class="money">{{money}}</view>
+		</view>
+		<view class="listBox">
+			<view class="listName flex">
+				<text>
+					{{$t('user.交易记录')}}
+				</text>
+				<navigator :url="'./transfer?type='+type">
+					<view class="targetText">
+						{{$t('user.转账')}}
+					</view>
+				</navigator>
+			</view>
+			<view class="listTpl flex" v-for="item,index in list" :key="index">
+				<view class="tplInfo flex_item">
+					<image src="/static/img/moneyIcon.png" style="width: 39rpx;height: 43rpx;" mode="widthFix"></image>
+					<view class="tpl">{{item.title}}<text>{{item.createtime|dateFormat}}</text></view>
+				</view>
+				<view class="tip" :class="{'text-linear-gradient':item.pm == 1}">
+					{{ item.pm == 1?'+':'-'}}
+					{{item.money*1}}
+				</view>
+			</view>
+		</view>
+		<u-loadmore :status="loadingType" line :loadmoreText="$t('base.加载更多')" :loadingText="$t('base.正在加载')"
+			:nomoreText="$t('base.没有更多了')" />
+	</view>
+</template>
+<script>
+	import {
+		moneyLog,
+	} from '@/api/index.js';
+	import {
+		getUserInfo
+	} from '@/api/user.js';
+	import dayjs from '@/libs/dayjs/dayjs.min.js';
+	export default {
+		data() {
+			return {
+				money: 0,
+				page: 1,
+				limit:10,
+				loadingType: "more",
+				list: [],
+				type: '',
+			};
+		},
+		filters: {
+			dateFormat: function(value) {
+				return dayjs(value * 1000).format('YYYY/MM/DD hh:mm:ss');
+			}
+		},
+		onLoad(opt) {
+			this.type = opt.type;
+			this.loadData();
+			this.getUserInfo();
+			uni.setNavigationBarTitle({
+				title: this.type
+			})
+		},
+		onShow() {},
+		onReachBottom() {
+			this.loadData()
+		},
+		methods: {
+			getUserInfo() {
+				const that = this;
+				getUserInfo().then((res) => {
+					that.money = res.data[that.type] * 1;
+					console.log(that.money)
+				})
+			},
+			loadData() {
+				let obj = this;
+				if (obj.loadingType == "nomore" ||
+					obj.loadingType == "loading") {
+					return;
+				}
+				obj.loadingType = "loading";
+				moneyLog({
+					page: obj.page,
+					limit: obj.limit,
+					token: obj.type
+				}).then(res => {
+					let ar = res.data.list.map((re) => {
+						return re;
+					})
+					if (ar.length > 0) {
+						obj.list = obj.list.concat(ar);
+						obj.page++;
+						if (obj.limit == ar.length) {
+							obj.loadingType = "more";
+						} else {
+							obj.loadingType = "nomore";
+						}
+					} else {
+						obj.loadingType = "nomore";
+					}
+				});
+			},
+		},
+	};
+</script>
+<style lang="scss" scoped>
+	.targetText {
+		background: linear-gradient(90deg, #7D32FF, #3EE0FF);
+		border-top-left-radius: 100rpx;
+		border-bottom-left-radius: 100rpx;
+		padding: 10rpx 30rpx;
+		padding-left: 50rpx;
+	}
+
+	.container {
+		padding: 25rpx 25rpx;
+		line-height: 1;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+
+	.logo {
+		width: 120rpx;
+		height: 120rpx;
+		border-radius: 100%;
+		background-color: #e3e3e3;
+	}
+
+	.topBox {
+		text-align: center;
+		padding-top: 25rpx;
+
+		.money {
+			font-family: Kozuka Gothic Pr6N;
+			font-weight: normal;
+			font-size: 26rpx;
+			color: #FFFFFF;
+			line-height: 55rpx;
+		}
+	}
+
+	.listBox {
+		color: #FFFFFF;
+
+		.listName {
+			font-weight: 500;
+			font-size: 30rpx;
+			padding-bottom: 30rpx;
+		}
+
+		.listTpl {
+			background: rgba(255, 255, 255, .09);
+			border-radius: 10rpx;
+			padding: 40rpx 40rpx;
+			margin-bottom: 20rpx;
+			font-weight: 400;
+
+			.tplInfo {
+				.tpl {
+					padding-left: 25rpx;
+					font-size: 30rpx;
+
+					text {
+						font-size: 24rpx;
+						color: #999999;
+						padding-left: 15rpx;
+					}
+				}
+			}
+
+			.tip {
+				font-size: 36rpx;
+			}
+		}
+	}
+</style>

+ 185 - 0
pages/user/myDetail.vue

@@ -0,0 +1,185 @@
+<template>
+	<view class="container">
+		<navBar :show-title="true" :title="$t('user.收支明细')" url="/pages/index/index"></navBar>
+		<!-- <view class="topBox">
+			<image :src="`../../static/img/userIcon${type=='USDT'?1:2}.png`" class="logo" mode="scaleToFill"></image>
+			<view class="money">{{money}}</view>
+		</view> -->
+		<view class="listBox">
+			<!-- <view class="listName flex">
+				<text>
+					交易記錄
+				</text>
+				<navigator :url="'./transfer?type='+type">
+					<view class="targetText">
+						轉賬
+					</view>
+				</navigator>
+			</view> -->
+			<view class="listTpl flex" v-for="item,index in list" :key="index">
+				<view class="tplInfo flex_item">
+					<image src="/static/img/moneyIcon.png" style="width: 39rpx;height: 43rpx;" mode="widthFix"></image>
+					<view class="tpl">{{item.title}}<text>{{item.createtime|dateFormat}}</text></view>
+				</view>
+				<view class="tip" :class="{'text-linear-gradient':item.pm == 1}">
+					{{ item.pm == 1?'+':'-'}}
+					{{item.money*1}}
+				</view>
+			</view>
+		</view>
+		<u-loadmore :status="loadingType" line :loadmoreText="$t('base.加载更多')" :loadingText="$t('base.正在加载')"
+			:nomoreText="$t('base.没有更多了')" />
+	</view>
+</template>
+<script>
+	import {
+		moneyLog,
+	} from '@/api/index.js';
+	import {
+		getUserInfo
+	} from '@/api/user.js';
+	import dayjs from '@/libs/dayjs/dayjs.min.js';
+	import navBar from "@/components/nav/nav.vue"
+	export default {
+		data() {
+			return {
+				money: 0,
+				page: 1,
+				limit:10,
+				loadingType: "more",
+				list: [],
+				type: '',
+			};
+		},
+		components: {
+			navBar
+		},
+		filters: {
+			dateFormat: function(value) {
+				return dayjs(value * 1000).format('YYYY/MM/DD hh:mm:ss');
+			}
+		},
+		onLoad(opt) {
+			this.type = opt.type;
+			this.loadData();
+			this.getUserInfo();
+			uni.setNavigationBarTitle({
+				title: this.type
+			})
+		},
+		onShow() {},
+		onReachBottom() {
+			this.loadData()
+		},
+		methods: {
+			getUserInfo() {
+				const that = this;
+				getUserInfo().then((res) => {
+					that.money = res.data[that.type] * 1;
+					console.log(that.money)
+				})
+			},
+			loadData() {
+				let obj = this;
+				if (obj.loadingType == "nomore" ||
+					obj.loadingType == "loading") {
+					return;
+				}
+				obj.loadingType = "loading";
+				moneyLog({
+					page: obj.page,
+					limit: obj.limit,
+					token: obj.type
+				}).then(res => {
+					let ar = res.data.list.map((re) => {
+						return re;
+					})
+					console.log(ar)
+					if (ar.length > 0) {
+						obj.list = obj.list.concat(ar);
+						obj.page++;
+						console.log(obj.limit,ar.length)
+						console.log(obj.limit == ar.length)
+						if (obj.limit == ar.length) {
+							obj.loadingType = "more";
+						} else {
+							obj.loadingType = "nomore";
+						}
+					} else {
+						obj.loadingType = "nomore";
+					}
+				});
+			},
+		},
+	};
+</script>
+<style lang="scss" scoped>
+	.targetText {
+		background: linear-gradient(90deg, #7D32FF, #3EE0FF);
+		border-top-left-radius: 100rpx;
+		border-bottom-left-radius: 100rpx;
+		padding: 10rpx 30rpx;
+		padding-left: 50rpx;
+	}
+
+	.container {
+		line-height: 1;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+
+	.logo {
+		width: 120rpx;
+		height: 120rpx;
+		border-radius: 100%;
+		background-color: #e3e3e3;
+	}
+
+	.topBox {
+		text-align: center;
+		padding-top: 25rpx;
+
+		.money {
+			font-family: Kozuka Gothic Pr6N;
+			font-weight: normal;
+			font-size: 26rpx;
+			color: #FFFFFF;
+			line-height: 55rpx;
+		}
+	}
+
+	.listBox {
+		color: #FFFFFF;
+		padding: 25rpx 25rpx;
+		.listName {
+			font-weight: 500;
+			font-size: 30rpx;
+			padding-bottom: 30rpx;
+		}
+
+		.listTpl {
+			background: rgba(255, 255, 255, .09);
+			border-radius: 10rpx;
+			padding: 40rpx 40rpx;
+			margin-bottom: 20rpx;
+			font-weight: 400;
+
+			.tplInfo {
+				.tpl {
+					padding-left: 25rpx;
+					font-size: 30rpx;
+
+					text {
+						font-size: 24rpx;
+						color: #999999;
+						padding-left: 15rpx;
+					}
+				}
+			}
+
+			.tip {
+				font-size: 36rpx;
+			}
+		}
+	}
+</style>

+ 219 - 0
pages/user/shareItem.vue

@@ -0,0 +1,219 @@
+<template>
+	<view class="container">
+		<navBar :show-title="true" :title="$t("home.我的邀請")" url="/pages/index/index"></navBar>
+		<view class="centerBox">
+			<view class="topBox background-linear-gradient">
+				<view class="title">
+					{{$t('user.数据统计')}}
+					<view class="tip">
+
+					</view>
+				</view>
+				<view class="flex numBox">
+					<view class="ls">
+						<view class="type">
+							{{$t('user.直推人数')}}
+						</view>
+						<view class="num text-linear-gradient">
+							{{shareNum}}
+						</view>
+					</view>
+					<view class="jg">
+
+					</view>
+					<view class="ls">
+						<view class="type">
+							{{$t('user.团队人数')}}
+						</view>
+						<view class="flex-center">
+							<view class="num text-linear-gradient">
+								{{itemNum}}
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="itemList margin-t-30 background-linear-gradient">
+				<view class="title">
+					{{$t('user.链接地址')}}
+					<view class="tip">
+
+					</view>
+				</view>
+				<view class="list">
+					<view class="item flex" v-for="(item,index) in listAll">
+						<view class="leftItem">
+							<view class="itemName">
+								{{item.address|hideCenter}}
+							</view>
+							<view class="itemTime margin-t-10">
+								{{item.spread_time|dateFormat}}
+							</view>
+						</view>
+						<view class="rightItem">
+							<view class="on text-linear-gradient" v-if="item.order_num>0">
+								{{$t('user.已购买')}}
+							</view>
+							<view class="off" v-else>
+								{{$t('user.未购买')}}
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<u-loadmore :status="loading" line :loadmoreText="$t('base.加载更多')" :loadingText="$t('base.正在加载')"
+				:nomoreText="$t('base.没有更多了')" />
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mapMutations
+	} from "vuex";
+	import {
+		spreadList
+	} from '@/api/index.js';
+	import navBar from "@/components/nav/nav.vue"
+	import dayjs from '@/libs/dayjs/dayjs.min.js';
+	export default {
+		data() {
+			return {
+				listAll: [],
+				loading: 'loadmore', //'上拉加載更多','加載中','沒有更多'
+				page: 1,
+				limit: 10,
+				shareNum:0,
+				itemNum:0,
+			}
+		},
+		filters: {
+			dateFormat: function (value) {
+				return dayjs(value * 1000).format('YYYY/MM/DD hh:mm:ss');
+			},
+			hideCenter: function(value) {
+				const st = value.slice(7, value.length - 7);
+				const sr = value.replace(st, '...')
+				return sr;
+			},
+		},
+		components: {
+			navBar
+		},
+		onLoad(option) {
+			this.getList();
+		},
+		onReachBottom() {
+			this.getList()
+		},
+		methods: {
+			...mapMutations('user', ['setUserInfo']),
+			// 获取列表
+			getList() {
+				const that = this;
+				if (that.loading == 'nomore' || that.loding == "loading") {
+					return
+				}
+				that.loading = 'loading';
+				spreadList({
+					page: that.page,
+					limit: that.limit,
+				}).then((res) => {
+					that.shareNum = res.data.data.count;
+					that.itemNum = res.data.data.group_count;
+					const list = res.data.data.list.map((rs) => {
+						return rs
+					})
+					that.listAll = that.listAll.concat(list);
+					if (list.length != that.limit) {
+						that.loading = 'nomore'
+					} else {
+						that.page++
+						that.loading = 'loadmore'
+					}
+				}).catch((res) => {
+					console.log(res);
+				})
+
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+	.container {
+		width: 100%;
+		line-height: 1;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+
+	.centerBox {
+		padding: 30rpx;
+		color: #FFF;
+
+		.title {
+			font-weight: bold;
+			font-size: 27rpx;
+			padding-bottom: 40rpx;
+
+			.tip {
+				width: 2em;
+				height: 7rpx;
+				background: linear-gradient(90deg, #7D32FF, #3EE0FF);
+				border-radius: 4px;
+				margin-top: -5rpx;
+			}
+		}
+
+		.topBox {
+			padding: 40rpx 30rpx;
+			border-radius: 20rpx;
+
+			.numBox {
+				align-items: inherit;
+				.ls {
+					text-align: center;
+					flex-grow: 1;
+					font-weight: bold;
+
+					.type {
+						font-size: 30rpx;
+					}
+
+					.num {
+						font-size: 42rpx;
+						margin-top: 30rpx;
+					}
+				}
+
+				.jg {
+					width: 2px;
+					background: linear-gradient(0deg, rgba(255, 255, 255, 0), #FFFFFF, rgba(255, 255, 255, 0));
+				}
+			}
+		}
+		.itemList{
+			border-radius: 20rpx;
+			padding: 40rpx 30rpx;
+			.list{
+				.leftItem{
+					.itemName{
+						font-weight: bold;
+						font-size: 29rpx;
+					}
+					.itemTime{
+						font-weight: 500;
+						font-size: 20rpx;
+						color: #FFFFFF;
+						opacity: 0.5;
+					}
+				}
+				.rightItem{
+					font-weight: 500;
+					font-size: 30rpx;
+				}
+			}
+		}
+	}
+</style>

+ 166 - 0
pages/user/transfer.vue

@@ -0,0 +1,166 @@
+<template>
+	<view class="container">
+		<view class="listBox">
+			<view class="titleTetx">{{$t('user.收款地址')}}</view>
+			<view class="flex listTpl">
+				<input type="text" class="inputBox" v-model="address" :placeholder="$t('user.请输入收款地址')" />
+			</view>
+		</view>
+		<view class="listBox" style="padding-top: 0rpx;">
+			<view class="titleTetx">{{$t('user.转账数量')}}</view>
+			<view class="listTpl flex">
+				<input type="number" class="inputBox" v-model="number" :placeholder="$t('user.请输入转账金额')" />
+				<view class="listAll" @click="number=money">{{$t('user.全部')}}</view>
+			</view>
+			<view class="flex tipBox">
+				<view class="tip1">{{$t('user.可用余额')}}{{money||0}}{{type}}</view>
+			</view>
+		</view>
+		<view class="submission">
+			<button class="golden" type="golden" hover-class="none" @click="submission">{{$t('user.确认转账')}}</button>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		trade
+	} from '@/api/index.js';
+	import {
+		getUserInfo
+	} from '@/api/user.js';
+	import {
+		mapState,
+	} from "vuex";
+	export default {
+		data() {
+			return {
+				address: '',
+				number: '',
+				money: 0,
+				type: '',
+			};
+		},
+		computed: {
+			...mapState("user", ['userInfo']),
+		},
+		onLoad(option) {
+			this.type = option.type;
+			this.getUserInfo();
+		},
+		methods: {
+			getUserInfo() {
+				const that = this;
+				getUserInfo({}).then(
+					(res) => {
+						that.money = +res.data[that.type];
+					}
+				).catch(
+					(res) => {
+						console.log(res)
+					}
+				)
+			},
+			submission() {
+				const that = this;
+				const USER_TRADE = 'USER_TRADE' + (new Date()).getTime();
+				ethereum.request({
+					"method": "personal_sign",
+					"params": [
+						USER_TRADE,
+						that.userInfo.address
+					]
+				}).then((res) => {
+					trade({
+						token: that.type,
+						num: that.number,
+						address: that.address,
+						sign: res,
+						msg: USER_TRADE,
+					}).then((res) => {
+						uni.showToast({
+							title: res.msg,
+							duration: 1500,
+						});
+						that.number = '';
+						that.address='';
+						that.getUserInfo();
+					}).catch(
+						(res) => {
+					
+						}
+					)
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.container {
+		padding: 25rpx 25rpx;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+
+	.listBox {
+		padding: 46rpx 25rpx;
+		background: rgba(255, 255, 255, .09);
+		border-radius: 10rpx;
+
+		.titleTetx {
+			font-weight: bold;
+			font-size: 24rpx;
+			color: #FFFFFF;
+			padding-bottom: 25rpx;
+		}
+
+		.tipBox {
+			padding-top: 15rpx;
+			font-size: 24rpx;
+
+			.tip1 {
+				font-family: PingFang SC;
+				font-weight: 500;
+				font-size: 26rpx;
+				color: #0C5AFA;
+				line-height: 45rpx;
+			}
+		}
+	}
+
+	.listTpl {
+		border-bottom: 1rpx solid #6A7288;
+		padding-bottom: 25rpx;
+
+		.inputBox {
+			font-size: 35rpx;
+			color: #FFFFFF;
+		}
+
+		.listTip {}
+
+		.listAll {
+			padding-left: 30rpx;
+			font-size: 30rpx;
+			color: #0C5AFA;
+		}
+	}
+
+	.input-placeholder {
+		font-family: PingFang SC;
+		font-weight: 500;
+		font-size: 26rpx;
+		color: #666666;
+	}
+
+	.submission {
+		padding: 80rpx 25rpx;
+		padding-bottom: 25rpx;
+
+		.golden {
+			background: linear-gradient(90deg, #7D32FF, #3EE0FF);
+			color: #ffffff;
+		}
+	}
+</style>

+ 166 - 549
pages/user/user.vue

@@ -1,621 +1,238 @@
 <template>
 	<view class="container">
-		<view class="topTitle">{{$t('user.我的收益')}}</view>
-		<view class="flex moneyBox">
-			<view class="moneyTpl bg2 flex">
-				<view class="moneyNum">{{teamNum.num1}}</view>
-				<view class="moneyTitle">{{$t('user.今日收益')}}</view>
-			</view>
-			<view class="moneyTpl bg flex">
-				<view class="moneyNum">{{teamNum.num2}}</view>
-				<view class="moneyTitle">{{$t('user.累计收益')}}</view>
-			</view>
-			<view class="moneyTpl bg1 flex">
-				<view class="moneyNum">{{teamNum.num11}}</view>
-				<view class="moneyTitle">{{$t('user.可用收益')}}</view>
-			</view>
-		</view>
-
-		<view class="mybox" v-if='userInfo.point_level>0'>
-			<view class="topTitle flex">{{$t('user.节点分布')}}<p class="p">{{$t('user.今日分红额度')}}{{teamNum.num12}}VGT</p>
-			</view>
-			<view class="flex fhboxs">
-				<view class="fhli" @click="fhList(1)">
-					<view class="fhtips os">L1</view>
-					<view class="fhnum">
-						<view class="fhnums">{{teamNum.num13}}</view>
-						<view class="fhtxt">{{$t('user.人数')}}</view>
-						<view class="fg"></view>
-						<view class="fhnums">{{teamNum.num14}}</view>
-						<view class="fhtxt">{{$t('user.分红比例')}}</view>
+		<navBar :show-title="true" :title="$t('user.我的资产')" url="/pages/index/index"></navBar>
+		<view class="centerBox">
+			<view class="myMoney flex-center position-relative">
+				<view class="myMoneyBox">
+					<view class="moneyTitle">
+						<text>{{$t('user.我的资产')}}</text>
+						<image class="myIcon margin-l-10" src="../../static/img/userIcon4.png" mode="scaleToFill">
+						</image>
 					</view>
-				</view>
-				<view class="fhli" @click="fhList(2)">
-					<view class="fhtips ys">L2</view>
-					<view class="fhnum">
-						<view class="fhnums">{{teamNum.num15}}</view>
-						<view class="fhtxt">{{$t('user.人数')}}</view>
-						<view class="fg"></view>
-						<view class="fhnums">{{teamNum.num16}}</view>
-						<view class="fhtxt">{{$t('user.分红比例')}}</view>
+					<view class="money margin-t-30">
+						<text class="font-size-sm">≈</text>{{userInfo.usdt*1}}U
 					</view>
 				</view>
-				<view class="fhli" @click="fhList(3)">
-					<view class="fhtips bs">L3</view>
-					<view class="fhnum">
-						<view class="fhnums">{{teamNum.num17}}</view>
-						<view class="fhtxt">{{$t('user.人数')}}</view>
-						<view class="fg"></view>
-						<view class="fhnums">{{teamNum.num18}}</view>
-						<view class="fhtxt">{{$t('user.分红比例')}}</view>
-					</view>
-				</view>
-			</view>
-		</view>
-
-		<view class="topTitle">{{$t('user.我的团队')}}</view>
-		<view class="flex listBox">
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img20.png"></image><!-- /static/img/img20.png -->
-				<view class="tplBox">
-					<view class="num">{{teamNum.num3 || 0}}</view>
-					<view class="name">{{$t('user.分享地址')}}</view>
-				</view>
-			</view>
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img22.png"></image>
-				<view class="tplBox">
-					<view class="num">{{teamNum.num4 || 0}}</view>
-					<view class="name">{{$t('user.社区地址')}}</view>
-				</view>
-			</view>
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img27.png"></image>
-				<view class="tplBox">
-					<view class="num">{{teamNum.num5 || 0}}</view>
-					<view class="name">{{$t('user.分享预约')}}</view>
-				</view>
-			</view>
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img21.png"></image>
-				<view class="tplBox">
-					<view class="num">{{teamNum.num6 || 0}}</view>
-					<view class="name">{{$t('user.社区预约')}}</view>
-				</view>
 			</view>
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img24.png"></image>
-				<view class="tplBox">
-					<view class="num">{{teamNum.num7 || 0}}</view>
-					<view class="name">{{$t('user.今日分享业绩')}}</view>
-				</view>
-			</view>
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img26.png"></image>
-				<view class="tplBox">
-					<view class="num">{{teamNum.num8 || 0}}</view>
-					<view class="name">{{$t('user.今日社区业绩')}}</view>
-				</view>
-			</view>
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img23.png"></image>
-				<view class="tplBox">
-					<view class="num">{{teamNum.num9 || 0}}</view>
-					<view class="name">{{$t('user.分享业绩')}}</view>
-				</view>
-			</view>
-			<view class="listTpl flex_item">
-				<image class="tplIcon" src="/static/img/img25.png"></image>
-				<view class="tplBox">
-					<view class="num">{{teamNum.num10 || 0}}</view>
-					<view class="name">{{$t('user.社区业绩')}}</view>
-				</view>
-			</view>
-		</view>
-		<view class="recordBox">
-			<view class="recordNav flex">
-				<view class="navItem" v-for="item,index in recordNav" :key="index"
-					:class="{ active: tabIndex == index }" @click="changeTab(index)">
-					{{item.langName}}
-				</view>
-			</view>
-			<view class="recordList" v-if="tabIndex == 0">
-				<view class="listTpls flex boderBom">
-					<view class="tpls title">{{$t('user.地址')}}</view>
-					<view class="tpls title">{{$t('user.时间')}}</view>
+			<view class="flex cardBottom" @click="navto('./withdrawal')">
+				<view class="cardLeft flex">
+					<image class="leftTip" src="../../static/img/userIcon5.png" mode="scaleToFill"></image>
+					<view class="moneyUp">
+						USDT{{$t('user.提现')}}
+					</view>
+					<view class="moneyOut">
+						({{$t('user.手续费')}}{{num}}%)
+					</view>
 				</view>
-				<view class="listTpls flex paddTop" v-for="item,index in recordNavList[0].list">
-					<view class="tpls">{{item.addressSub}}</view>
-					<view class="tpls time">{{item.timetext}}</view>
+				<view class="cardRight flex">
+					<text class="margin-r-10">{{$t('user.去提现')}}</text>
+					<image class="rightTip" src="../../static/img/mininext.png" mode="widthFix"></image>
 				</view>
 			</view>
-			<view class="recordList" v-if="tabIndex == 1 || tabIndex == 2 ">
-				<view class="listTpls flex boderBom">
-					<view class="tpls title" >{{$t('user.金额')}}</view>
-					<view class="tpls title typeStatus" >{{tabIndex == 1 || tabIndex == 2 ?$t('user.说明'):$t('user.状态')}}</view>
-					<view class="tpls title">{{$t('user.时间')}}</view>
-				</view>
-				<view class="listTpls flex paddTop" v-for="item,index in recordNavList[tabIndex].list">
-					<view class="tpls" >{{item.money}}{{item.token}}</view>
-					<view class="tpls" >{{item.title}}</view>
-					<view class="tpls time">{{item.timetext}}</view>
-				</view>
+			<view class="title">
+				{{$t('user.我的资产')}}
 			</view>
-			<view class="recordList" v-if=" tabIndex == 3">
-				<view class="listTpls flex boderBom">
-					<view class="tpls title u-line-1" >{{$t('user.金额')}}</view>
-					<view class="tpls title typeStatus" >{{$t('user.状态')}}</view>
-					<view class="tpls title">{{$t('user.时间')}}</view>
+			<view class="list">
+				<view class="item flex " @click="navto('./money?type=USDT')" >
+					<view class="left flex-start">
+						<image class="typeIcon" src="../../static/img/userIcon1.png" mode="scaleToFill"></image>
+						<text>
+							USDT
+						</text>
+					</view>
+					<view class="right flex">
+						<view class="moneyBox margin-r-20">
+							<view class="num">
+								{{userInfo.USDT*1}}
+							</view>
+							<!-- <view class="tip">
+								≈{{money}}RMB
+							</view> -->
+						</view>
+						<image class="itemTip" src="../../static/img/mininext.png" mode="widthFix"></image>
+					</view>
 				</view>
-				<view class="listTpls flex paddTop" v-for="item,index in recordNavList[tabIndex].list">
-					<view class="tpls u-line-1" >{{item.number}}{{item.token}}</view>
-					<view class="tpls" v-if="item.status==1">{{$t('user.已通过')}}</view>
-					<view class="tpls" v-if="item.status==0">{{$t('user.待审核')}}</view>
-					<view class="tpls" v-if="item.status==2">{{$t('user.已拒绝')}}</view>
-					<view class="tpls time">{{item.timetext}}</view>
+				<view class="item flex" @click="navto('./money?type=BCMM')">
+					<view class="left flex-start">
+						<image class="typeIcon" src="../../static/img/userIcon2.png" mode="scaleToFill"></image>
+						<text>
+							BCMM
+						</text>
+					</view>
+					<view class="right flex">
+						<view class="moneyBox margin-r-20">
+							<view class="num">
+								{{userInfo.BCMM*1}}
+							</view>
+							<!-- <view class="tip">
+								≈{{money}}RMB
+							</view> -->
+						</view>
+						<image class="itemTip" src="../../static/img/mininext.png" mode="widthFix"></image>
+					</view>
 				</view>
 			</view>
-			<u-loadmore :status="loading" line :loadmoreText="$t('base.加载更多')" :loadingText="$t('base.正在加载')"
-				:nomoreText="$t('base.没有更多了')" />
 		</view>
-		<taber></taber>
 	</view>
 </template>
+
 <script>
-	import {
-		spreadList,
-		getTokenLog,
-		extractLog,
-		group_info
-	} from '@/api/index.js';
-	import {
-		saveUrl,
-		interceptor
-	} from '@/utils/loginUtils.js';
 	import {
 		mapState,
-		mapActions,
 		mapMutations
 	} from "vuex";
-	import taber from "@/components/footer/footer.vue";
+	import {
+		loadIndexs
+	} from '@/api/user.js';
+	import {
+		getUserInfo
+	} from '@/api/user.js';
+	import navBar from "@/components/nav/nav.vue"
 	export default {
-		components: {
-			taber
-		},
 		data() {
 			return {
-				tabIndex: 0,
-				recordList: [{}, {}, {}, {}, {}, {}, {}, {}],
-				recordNavList: [{
-					name: "团队明细",
-					langName: '',
-					type: 1,
-					list: [],
-				}, {
-					name: "余额明细",
-					langName: '',
-					type: 2,
-					list: [],
-				}, {
-					name: "VGT明细",
-					langName: '',
-					type: 3,
-					list: [],
-				}, {
-					name: "提现明细",
-					langName: '',
-					type: 4,
-					list: [],
-				}],
-				page: 1,
-				limit: 10,
-				loading: 'loadmore', //加载状态
-				teamNum: {}, //状态值
+				money: 0.00,
+				num:0
 			}
 		},
+		components: {
+			navBar
+		},
 		computed: {
-			...mapState({
-				langList: "langList",
-				lang: "lang",
-			}),
-			...mapState('user', ['userInfo', 'hasLogin']),
-			label() {
-				const label = this.langList.find((item) => {
-					console.log(this.lang, item.value);
-					return item.value == this.lang
-				}).label;
-				return label
-			},
-			recordNav() {
-				for (var i = 0; i < this.recordNavList.length; i++) {
-					this.recordNavList[i].langName = this.$t(`user.${this.recordNavList[i].name}`)
-				}
-				return this.recordNavList
-			}
+			...mapState("user", ['userInfo']),
 		},
 		onLoad(option) {
-			if (option.spread) {
-				// 存储其他邀请人
-				uni.setStorageSync('spread', option.spread);
-			}
-		},
-		onShow() {
-			if (!this.hasLogin) {
-				// 保存地址
-				saveUrl();
-				// 登录拦截
-				interceptor();
-			} else {
-				this.group_info();
-				this.changeTab(this.tabIndex)
-			}
-		},
-		onReachBottom() {
-			this.loadData();
+			this.getUserInfo();
 		},
 		methods: {
-			...mapMutations('user', ['setUserInfo', 'login']),
-			// 获取登录记录
-			group_info() {
-				group_info().then((res) => {
-					for(let a in res.data ){
-						res.data[a] = +(+res.data[a]).toFixed(2)
-					}
-					this.teamNum = res.data;
-				}).catch((res) => {
-					console.log(res);
-				})
-			},
-			fhList(type) {
-				// uni.navigateTo({
-				// 	url: '/pages/user/fhlist?type=' + type
-				// })
-			},
-			// 分类记录
-			tokenLogType(item, type) {
-				const that = this;
-				getTokenLog({
-					page: that.page,
-					limit: that.limit,
-					token: type,
-				}).then((res) => {
-					const arr = res.data.list.map((re) => {
-						re.timetext = that.$util.getTime(re.createtime);
-						re.money =+(+re.money).toFixed(2);						
-						return re
-					});
-					item.list = item.list.concat(arr);
-					console.log(arr.length);
-					if (arr.length != that.limit) {
-						console.log(that.loding,'5');
-						that.loading = 'nomore'
-					} else {
-						console.log(that.loding,'3');
-						that.page++
-						that.loading = 'loadmore'
-					}
-				}).catch((res) => {
-					console.log(res);
-				})
+			...mapMutations('user', ['setUserInfo']),
+			navto(url) {
+				uni.navigateTo({
+					url,
+				});
 			},
-			// 分类记录
-			extractLog(item) {
-				const that = this;
-				extractLog({
-					page: that.page,
-					limit: that.limit,
-				}).then((res) => {
-					const arr = res.data.list.map((re) => {
-						re.timetext = that.$util.getTime(re.createtime);
-						re.number = +re.number;
-						return re
-					});
-					console.log(arr.length!=that.limit);
-					item.list = item.list.concat(arr);
-					if (arr.length != that.limit) {
-						console.log(that.loading,'5');
-						that.loading = 'nomore'
-					} else {
-						console.log(that.loading,'3');
-						that.page++
-						that.loading = 'loadmore'
-						console.log(that.loading,'4');
-					}
+			// 获取更新用户信息
+			getUserInfo() {
+				getUserInfo().then((res) => {
+					this.setUserInfo(res.data);
 				}).catch((res) => {
 					console.log(res);
 				})
-			},
-			// 请求载入数据
-			async loadData() {
-				const that = this;
-				const arr = this.recordNavList[this.tabIndex];
-				if (that.loading == 'nomore' || that.loading == "loading") {
-					return
-				}
-				that.loading = 'loading';
-				switch (arr.type) {
-					case 1:
-						that.spreadList(arr)
-						break;
-					case 2:
-						that.tokenLogType(arr, "USDT")
-						break;
-					case 3:
-						that.tokenLogType(arr, "VGT")
-						break;
-					case 4:
-						that.extractLog(arr)
-						break;
-					default:
-						break;
-				}
-			},
-			// 邀请人员记录
-			spreadList(item) {
-				const that = this;
-				spreadList({
-					page: that.page,
-					limit: that.limit,
-				}).then((res) => {
-					const arr = res.data.data.list.map((re) => {
-						if (re.address) {
-							let st = re.address.slice(8, re.address.length - 8)
-							re.addressSub = re.address.replace(st, "...")
-						}
-						re.timetext = that.$util.getTime(re.spread_time)
-						return re
-					});
-					item.list = item.list.concat(arr);
-
-					if (arr.length != that.limit) {
-						that.loading = 'nomore'
-					} else {
-						that.page++
-						that.loading = 'loadmore'
-					}
+				loadIndexs().then((res) => {
+					this.num = +res.data.commission;
 				}).catch((res) => {
 					console.log(res);
 				})
-			},
-			//切换记录tab
-			changeTab(index) {
-				this.tabIndex = index;
-				this.page = 1;
-				this.loading = 'loadmore';
-				this.recordNavList[index].list = [];
-				this.loadData();
+				
 			},
 		},
 	}
 </script>
 
 <style lang="scss">
-	.container {
-		width: 100%;
-		padding: 25rpx;
-		line-height: 1;
-	}
-
-	.topTitle {
-		font-size: 36rpx;
-		font-weight: bold;
-		color: #000000;
-		padding: 25rpx 0rpx;
-
-		.p {
-			font-size: $font-sm;
-			color: $font-color-light;
-		}
-	}
-
-	.moneyBox {
-		margin-bottom: 25rpx;
+	.centerBox {
+		padding: 30rpx;
+		color: #FFF;
 
-		.moneyTpl {
-			flex-direction: column;
-			width: 218rpx;
-			height: 230rpx;
-			padding: 0 10rpx;
-			position: relative;
-			text-align: center;
-			padding-top: 120rpx;
-			line-height: 1;
-			padding-bottom: 10rpx;
 
-			.moneyNum {
-				flex-grow: 1;
-			}
-
-			.moneyTitle {
-				flex-grow: 1;
-			}
+		.title {
+			padding: 50rpx 0;
+			font-weight: 500;
+			font-size: 36rpx;
 		}
-	}
 
-	.bg {
-		background: url('../../static/img/img17.png') no-repeat;
-		background-size: 100% 100%;
-		color: #D08500;
-	}
+		.myMoney {
+			background: url("../../static/img/userIcon3.png");
+			height: 199rpx;
+			background-size: 100% 100%;
+			padding: 30rpx;
+			font-weight: bold;
 
-	.bg1 {
-		background: url('../../static/img/img18.png') no-repeat;
-		background-size: 100% 100%;
-		color: #D34D00;
-	}
+			.myMoneyBox {
+				width: 100%;
 
-	.bg2 {
-		background: url('../../static/img/img19.png') no-repeat;
-		background-size: 100% 100%;
-		color: #2DACD7;
-	}
-
-	.listBox {
-		flex-wrap: wrap;
-
-		.listTpl {
-			width: 50%;
-
-			.tplIcon {
-				width: 158rpx;
-				height: 158rpx;
-			}
-
-			.tplBox {
-				width: calc(100% - 158rpx);
-				position: relative;
-				top: -10rpx;
-				font-weight: bold;
-
-				.num {
-					font-size: 37rpx;
-					color: #0041FD;
+				.moneyTitle {
+					font-size: 29rpx;
 				}
 
-				.name {
-					font-size: 28rpx;
-					margin-top: 10rpx;
-					color: #7E7E7E;
+				.myIcon {
+					width: 36rpx;
+					height: 22rpx;
 				}
-			}
-		}
-	}
-
-	.recordBox {
-		padding: 0rpx 30rpx;
-		background-color: #fff;
-		border-radius: 25rpx;
-		margin-top: 50rpx;
-		padding-bottom: 10rpx;
-
-		.recordNav {
-			padding: 40rpx 0rpx;
-
-			.navItem {
-				width: 23%;
-				text-align: center;
-				font-size: 28rpx;
-				font-weight: 500;
-			}
-
-			.active {
-				background: #14C670;
-				border-radius: 10rpx;
-				color: #FFFFFF;
-				line-height: 70rpx;
-			}
-		}
-
-		.recordList {
 
-			.listTpls {
-				text-align: center;
-
-				.title,
-				.time {
-					color: #666666;
+				.money {
+					font-size: 33rpx;
 				}
-
-				.tpls {
-					font-size: $font-base;
-					text-align: center;
-					width: 30%;
-					flex-grow: 1;
-					flex-shrink: 0;
-					&.typeStatus{
-						width: 20%;
-						flex-grow: 1;
-						flex-shrink: 0;
-					}
-				}
-			}
-
-			.boderBom {
-				padding-bottom: 25rpx;
-				border-bottom: 1rpx solid #EDF0FA;
-				margin-bottom: 25rpx;
-			}
-
-			.paddTop {
-				padding-top: 28rpx;
-			}
-		}
-	}
-
-	.mybox {
-		margin-bottom: 30rpx;
-		.title {
-			color: #000;
-			font-size: 36rpx;
-			margin-left: 10rpx;
-			align-items: flex-end;
-
-			.p {
-				color: #333;
-				font-size: 24rpx;
-				margin-left: 12rpx;
 			}
 		}
 
+		.item {
+			margin-bottom: 50rpx;
 
-		.fhboxs {
-			border-radius: 20rpx;
-			background-color: #fff;
-			padding: 25rpx 0;
-			justify-content: space-around;
-
-			.fhli {
-				background-color: #EDF5F9;
-				border-radius: 16rpx;
-				width: 191rpx;
-				height: auto;
-
-				.fhtips {
-					width: 68rpx;
-					height: 36rpx;
-					border-radius: 16rpx 0px 24rpx 0px;
-					text-align: center;
-					font-size: 24rpx;
-					color: #fff;
-					line-height: 36rpx;
+			.left {
+				.typeIcon {
+					width: 80rpx;
+					height: 80rpx;
+					margin-right: 20rpx;
 				}
+			}
 
-				.fhnum {
-					width: 74%;
-					margin: 24rpx 24rpx 48rpx 24rpx;
-					color: #41ADD0;
-					text-align: center;
-
-					.fhnums {
-						font-size: 36rpx;
-						font-weight: bold;
-					}
+			.right {
+				flex-shrink: 0;
+				flex-grow: 1;
+				justify-content: flex-end;
+				font-weight: 500;
+				text-align: right;
 
-					.fhtxt {
-						font-size: 24rpx;
-						margin-top: 8rpx;
+				.moneyBox {
+					.num {
+						font-size: 32rpx;
 					}
 
-					.fg {
-						width: 100%;
-						height: 1rpx;
-						background-color: #41ADD0;
-						margin: 24rpx 0;
+					.tip {
+						font-size: 26rpx;
+						color: #999999;
 					}
 				}
 
-				.os {
-					background-color: #FF630C;
-				}
-
-				.ys {
-					background-color: #FFCB0C;
-				}
-
-				.bs {
-					background-color: #0CAEFF;
+				.itemTip {
+					width: 18rpx;
 				}
 			}
 		}
 	}
+	.cardBottom{
+		background: #292D40;
+		border-bottom-left-radius: 22rpx;
+		border-bottom-right-radius: 22rpx;
+		padding:44rpx 30rpx 34rpx 30rpx;
+		margin-top: -20rpx;
+		.leftTip{
+			width: 31rpx;
+			height: 32rpx;
+		}
+		.moneyUp{
+			padding-left: 10rpx;
+			font-weight: 500;
+			font-size: 31rpx;
+		}
+		.moneyOut{
+			font-weight: 500;
+			font-size: 24rpx;
+			color: rgba(255,255,255,.7);
+		}
+		.rightTip{
+			width: 11rpx;
+		}
+		.cardRight{
+			font-size: 24rpx;
+			color: rgba(255,255,255,.7);
+		}
+	}
+	.container {
+		width: 100%;
+		line-height: 1;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
 </style>

+ 235 - 0
pages/user/withdrawal.vue

@@ -0,0 +1,235 @@
+<template>
+	<view class="all">
+		<navBar :show-title="true" :title="$t('user.提现1')" url="/pages/user/user"></navBar>
+		<view class="top">
+			<!-- <view class="topO">
+				提現類型
+			</view> -->
+			<!-- <view class="topT flex-start padding-b-30">
+				<view class="TT">USDT</view>
+				<view class="TT noaction" @click="openPkr">BCMM</view>
+			</view> -->
+			<!-- <view class="topO">
+				提現地址
+			</view> -->
+			<!-- <view class="topF margin-b-30">
+				<input class="FF" type="text" placeholder="請輸入提現地址" v-model="address"
+					placeholder-class="placeholder-input" />
+			</view> -->
+			<view class="topO ">
+				{{$t('user.提现金额')}} <text class="font-color-gray font-size-sm">(USDT:{{userWallet}})</text>
+			</view>
+			<view class="topF flex margin-b-30">
+				<input class="FF" type="number" v-model="withdrawal" :placeholder="$t('user.请输入提现金额')"
+					placeholder-class="placeholder-input" />
+				<view class="btn" @click="withdrawal=userWallet">USDT {{$t('user.全部1')}}</view>
+			</view>
+			<view class="topO ">
+				{{$t('user.手续费')}} ({{num}}%)
+			</view>
+			<view class="topF flex">
+				<text>{{charge}}</text>
+			</view>
+		</view>
+		<view class="last margin-t-30" @click="submit">
+			<view class="la" :class="{action:loding}">{{$t('user.立即提现')}}</view>
+		</view>
+		<!-- <uni-popup type="bottom" ref="popup">
+			<inputPassword @commit='KeyInfo'></inputPassword>
+		</uni-popup> -->
+	</view>
+</template>
+
+<script>
+	import {
+		gameWallet,
+		extractCalculator,
+		loadIndexs
+	} from "@/api/index.js";
+	import {
+		getUserInfo
+	} from "@/api/user.js";
+	import navBar from "@/components/nav/nav.vue"
+	export default {
+		components: {
+			navBar
+		},
+		data() {
+			return {
+				address: '', //提现地址
+				loding: false,
+				type: 0,
+				num: 0, //手续费百分比
+				userWallet: '',
+				withdrawal: '',
+			};
+		},
+		computed: {
+			charge() {
+				return Number((this.withdrawal * this.num / 100).toFixed(18))
+			}
+		},
+		onLoad(option) {
+			this.getUserInfo();
+		},
+		methods: {
+			openPkr() {
+				uni.showToast({
+					title: this.$t('user.暂未开放'),
+					icon: 'error'
+				});
+			},
+			// 获取用户信息
+			getUserInfo() {
+				const that = this;
+				getUserInfo().then((res) => {
+					// console.log(res)
+					that.userWallet = +res.data.USDT;
+					// console.log(that.userWallet)
+				})
+				loadIndexs().then((res) => {
+					
+					// console.log(res)
+					that.num = +res.data.commission;
+					// console.log(that.userWallet)
+				})
+			},
+			// 提交
+			submit() {
+				const that = this;
+				uni.showLoading({
+					mask: true
+				});
+				if (that.userWallet < that.withdrawal) {
+					uni.showToast({
+						title:this.$t('user.余额不足'),
+						icon: 'error'
+					});
+					return
+				};
+				that.loding = true;
+				extractCalculator({
+					number: that.withdrawal,
+					token: "USDT",
+				}).then((res) => {
+					that.loding = false;
+					uni.hideLoading()
+					uni.showToast({
+						title: this.$t("user.提现成功")
+					});
+					this.address = '';
+					this.withdrawal = ''; //提现金额
+					this.password = '';
+				}).catch((res) => {
+					uni.showToast({
+						title: this.$t("user.提现失败"),
+						icon: 'error'
+					});
+					that.loding = false;
+					uni.hideLoading()
+				})
+
+
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.all {
+		color: #FFFFFF;
+		line-height: 1;
+		padding-bottom: 150rpx;
+		background-color: rgb(12, 8, 21);
+		min-height: 100vh;
+	}
+
+	.placeholder-input {
+		color: $font-color-light;
+	}
+
+	.top {
+		background: rgba(255, 255, 255, .09);
+		border-radius: 20rpx;
+		padding: 40rpx 30rpx;
+		margin: 0 30rpx;
+		.topO {
+			font-size: $font-lg;
+			padding-bottom: 30rpx;
+		}
+
+		.topT {
+			.TT {
+				border: 2px solid #DDBA82;
+				border-radius: 10rpx;
+				font-size: 26rpx;
+				color: #FEB041;
+				padding: 20rpx 24rpx;
+
+				&.noaction {
+					margin-left: 20rpx;
+					border-color: #999999;
+					color: #999999;
+				}
+			}
+
+		}
+
+		.topF {
+			background-color: rgba(254, 176, 65, 0.09);
+			border-radius: 20rpx;
+			padding: 20rpx 30rpx;
+
+			.FF {
+				font-size: $font-base;
+				flex-grow: 1;
+			}
+
+			.btn {
+				font-size: $font-base;
+			}
+		}
+	}
+
+	.center {
+		background: #191A1F;
+		border-radius: 20rpx;
+		font-weight: 500;
+		padding: 30rpx;
+
+		.tx {
+			font-size: 29rpx;
+			line-height: 30rpx;
+		}
+
+		.buzhou {
+			font-size: 24rpx;
+			color: #999999;
+			line-height: 40rpx;
+		}
+	}
+
+
+	.last {
+		background: linear-gradient(90deg, #7D32FF, #3EE0FF);
+		border-radius: 10rpx;
+		overflow: hidden;
+		position: fixed;
+		bottom: 30rpx;
+		left: 30rpx;
+		right: 30rpx;
+
+		.la {
+			font-size: $font-lg;
+			font-weight: bold;
+			color: #FFF;
+			text-align: center;
+			padding: 30rpx;
+
+			&.action {
+				color: #FFF;
+				background-color: $font-color-light;
+			}
+		}
+	}
+</style>

+ 20 - 0
static/css/cmy.css

@@ -549,3 +549,23 @@
 .position-relative {
 	position: relative;
 }
+
+
+.background-linear-gradient{
+	border-bottom: 1px solid transparent;
+	background-clip: padding-box, border-box;
+	background-origin: padding-box, border-box;
+	background-image: linear-gradient(270deg, #0C0815, #24212B), linear-gradient(to right, #36323D, rgba(33, 30, 42, .3));
+}
+.text-linear-gradient{
+	background: linear-gradient(to right, #7D32FF 0%, #3EE0FF 100%);
+	background-clip: text;
+	color: rgba(0, 0, 0, 0);
+}
+
+.border-linear-gradient{
+	border: 2px solid transparent;
+	background-clip: padding-box, border-box;
+	background-origin: padding-box, border-box;
+	background-image: linear-gradient(to right, rgb(12, 8, 21), rgb(12, 8, 21)), linear-gradient(90deg, #8F41E9, #578AEF);
+}

二進制
static/img/banner.png


二進制
static/img/bg.png


二進制
static/img/bindLogo.png


二進制
static/img/config01.png


二進制
static/img/config02.png


二進制
static/img/config03.png


二進制
static/img/detail01.png


二進制
static/img/detail02.png


二進制
static/img/detail03.png


二進制
static/img/footerImg.png


二進制
static/img/homeVGT.png


二進制
static/img/img01.png


二進制
static/img/img02.png


二進制
static/img/img03.png


二進制
static/img/img04.png


二進制
static/img/img05.png


二進制
static/img/img06.png


二進制
static/img/img07.png


二進制
static/img/img08.png


二進制
static/img/img09.png


二進制
static/img/img10.png


二進制
static/img/img11.png


二進制
static/img/img12.png


二進制
static/img/img13.png


二進制
static/img/img14.png


二進制
static/img/img15.png


二進制
static/img/img16.png


二進制
static/img/img17.png


二進制
static/img/img18.png


二進制
static/img/img19.png


二進制
static/img/img20.png


二進制
static/img/img21.png


二進制
static/img/img22.png


二進制
static/img/img23.png


二進制
static/img/img24.png


二進制
static/img/img25.png


二進制
static/img/img26.png


二進制
static/img/img27.png


二進制
static/img/img28.png


二進制
static/img/indexInfo.png


二進制
static/img/itemBg.png


二進制
static/img/itemList.png


二進制
static/img/itemList1.png


二進制
static/img/itemList2.png


二進制
static/img/itemList3.png


二進制
static/img/itemList4.png


二進制
static/img/logo.png


二進制
static/img/mininext.png


二進制
static/img/moneyIcon.png


二進制
static/img/nav01.png


二進制
static/img/nav02.png


二進制
static/img/nodeBg.png


二進制
static/img/tarIcon.png


二進制
static/img/userIcon1.png


二進制
static/img/userIcon2.png


二進制
static/img/userIcon3.png


二進制
static/img/userIcon4.png


二進制
static/img/userIcon5.png


二進制
static/img/首页_slices (1)/Group 366 拷贝 2.png


二進制
static/img/首页_slices (1)/Group 366 拷贝 2@2x.png


二進制
static/img/首页_slices (1)/Group 366 拷贝 2@3x.png


二進制
static/img/首页_slices (1)/Group 366 拷贝.png


二進制
static/img/首页_slices (1)/Group 366 拷贝@2x.png


二進制
static/img/首页_slices (1)/Group 366 拷贝@3x.png


二進制
static/img/首页_slices (1)/Vector 1.png


二進制
static/img/首页_slices (1)/Vector 1@2x.png


二進制
static/img/首页_slices (1)/Vector 1@3x.png


二進制
static/img/首页_slices (1)/图层 10.png


二進制
static/img/首页_slices (1)/图层 10@2x.png


二進制
static/img/首页_slices (1)/图层 10@3x.png


二進制
static/img/首页_slices (1)/图层 11.png


二進制
static/img/首页_slices (1)/图层 11@2x.png


二進制
static/img/首页_slices (1)/图层 11@3x.png


二進制
static/img/首页_slices (1)/图层 12.png


二進制
static/img/首页_slices (1)/图层 12@2x.png


二進制
static/img/首页_slices (1)/图层 12@3x.png


二進制
static/img/首页_slices (1)/图层 13.png


部分文件因文件數量過多而無法顯示