hwq 4 年之前
父节点
当前提交
2f3c42da4e
共有 63 个文件被更改,包括 2311 次插入2029 次删除
  1. 22 1
      api/market.js
  2. 23 0
      api/user.js
  3. 33 0
      components/js_sdk/xb-copy/uni-copy.js
  4. 196 0
      components/uni-number-box.vue
  5. 2 2
      manifest.json
  6. 31 44
      pages.json
  7. 1 1
      pages/assets/myPing.vue
  8. 9 8
      pages/assets/teamDetails.vue
  9. 39 39
      pages/index/index.vue
  10. 88 0
      pages/index/nodeList.vue
  11. 479 2
      pages/market/details.vue
  12. 242 0
      pages/market/duihuan.vue
  13. 56 56
      pages/market/market.vue
  14. 404 0
      pages/market/pay.vue
  15. 3 3
      pages/money/paySuccess.vue
  16. 4 12
      pages/money/payment.vue
  17. 16 9
      pages/public/forget.vue
  18. 5 3
      pages/public/login.vue
  19. 14 3
      pages/public/register.vue
  20. 0 208
      pages/set/address.vue
  21. 0 219
      pages/set/addressManage.vue
  22. 23 13
      pages/set/password.vue
  23. 0 161
      pages/set/phone.vue
  24. 0 113
      pages/set/set.vue
  25. 1 1
      pages/set/userinfo.vue
  26. 0 310
      pages/user/coupon.vue
  27. 158 98
      pages/user/extension.vue
  28. 136 0
      pages/user/extensionList.vue
  29. 0 156
      pages/user/favorites.vue
  30. 107 29
      pages/user/fuli.vue
  31. 116 0
      pages/user/fulilist.vue
  32. 0 200
      pages/user/scoreAccumulate.vue
  33. 82 12
      pages/user/user.vue
  34. 0 321
      pages/user/withdrawal.vue
  35. 二进制
      static/img/duhuanbg.png
  36. 二进制
      unpackage/cache/apk/__UNI__3CDE968_cm.apk
  37. 1 0
      unpackage/cache/apk/apkurl
  38. 0 0
      unpackage/cache/apk/cmManifestCache.json
  39. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/appstore.png
  40. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-app.png
  41. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-app@2x.png
  42. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-notification.png
  43. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-notification@2x.png
  44. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-proapp@2x.png
  45. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-settings.png
  46. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-settings@2x.png
  47. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-spotlight.png
  48. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-spotlight@2x.png
  49. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-app@2x.png
  50. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-app@3x.png
  51. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-notification@2x.png
  52. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-notification@3x.png
  53. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-settings@2x.png
  54. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-settings@3x.png
  55. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-spotlight@2x.png
  56. 二进制
      unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-spotlight@3x.png
  57. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/app-config-service.js
  58. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/app-service.js
  59. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/app-view.js
  60. 0 0
      unpackage/cache/wgt/__UNI__3CDE968/manifest.json
  61. 二进制
      unpackage/release/apk/__UNI__3CDE968__20210807124157.apk
  62. 二进制
      unpackage/release/apk/__UNI__3CDE968__20210807124603.apk
  63. 20 5
      utils/rocessor.js

+ 22 - 1
api/market.js

@@ -14,4 +14,25 @@ export function buyMining(data,id) {
 		method: 'post',
 		data
 	});
-}
+}
+export function miningDateils(data,id) {
+	return request({
+		url: '/api/mining/'+id,
+		method: 'get',
+		data
+	});
+}
+export function getSp(data,id) {
+	return request({
+		url: '/api/lala/sp_exchange/'+id,
+		method: 'get',
+		data
+	});
+}
+export function spExchange(data,id) {
+	return request({
+		url: '/api/lala/sp_exchange/'+id,
+		method: 'post',
+		data
+	});
+}

+ 23 - 0
api/user.js

@@ -75,3 +75,26 @@ export function version(data) {
 		data
 	})
 }
+
+//获取二维码
+export function service(data) {
+	return request({
+		url: '/api/service',
+		method: 'GET',
+		data
+	})
+}
+export function gitExtension(data) {
+	return request({
+		url: '/api/bill_info',
+		method: 'GET',
+		data
+	})
+}
+export function article(data,id) {
+	return request({
+		url: '/api/article/list/'+id,
+		method: 'GET',
+		data
+	});
+}

+ 33 - 0
components/js_sdk/xb-copy/uni-copy.js

@@ -0,0 +1,33 @@
+export default function uniCopy(content) {
+	/**
+	 * 小程序端 和 app端的复制逻辑
+	 */
+	//#ifndef H5
+	uni.setClipboardData({
+		data: content,
+		success: function() {
+			console.log('success');
+			return true
+		}
+	});
+	//#endif
+	
+	/**
+	 * H5端的复制逻辑
+	 */
+	// #ifdef H5
+	if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断
+		// 不支持
+		return false
+	}
+	let textarea = document.createElement("textarea")
+	textarea.value = content
+	textarea.readOnly = "readOnly"
+	document.body.appendChild(textarea)
+	textarea.select() // 选择对象
+	textarea.setSelectionRange(0, content.length) //核心
+	let result = document.execCommand("copy") // 执行浏览器复制命令
+	textarea.remove()
+	return result
+	// #endif
+}

+ 196 - 0
components/uni-number-box.vue

@@ -0,0 +1,196 @@
+<template>
+	<view class="uni-numbox">
+		<view class="uni-numbox-minus" 
+			@click="_calcValue('subtract')"
+		>
+			<text class="iconfont iconmove" :class="minDisabled?'uni-numbox-disabled': ''" ></text>
+		</view>
+		<input 
+			class="uni-numbox-value" 
+			type="number"  
+			:disabled="disabled"
+			:value="inputValue" 
+			@blur="_onBlur"
+		>
+		<view 
+			class="uni-numbox-plus" 
+			@click="_calcValue('add')"
+		>
+			<text class="iconfont iconadd" :class="maxDisabled?'uni-numbox-disabled': ''" ></text>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+		name: 'uni-number-box',
+		props: {
+			isMax: {
+				type: Boolean,
+				default: false
+			},
+			isMin: {
+				type: Boolean,
+				default: false
+			},
+			index: {
+				type: Number,
+				default: 0
+			},
+			value: {
+				type: Number,
+				default: 0
+			},
+			min: {
+				type: Number,
+				default: 1
+			},
+			max: {
+				type: Number,
+				default: Infinity
+			},
+			step: {
+				type: Number,
+				default: 1
+			},
+			disabled: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				inputValue: this.value,
+				minDisabled: false,
+				maxDisabled: false
+			}
+		},
+		created(){
+			this.maxDisabled = this.isMax;
+			this.minDisabled = this.isMin;
+		},
+		computed: {
+
+		},
+		watch: {
+			inputValue(number) {
+				const data = {
+					number: number,
+					index: this.index
+				}
+				this.$emit('eventChange', data);
+			}
+		},
+		methods: {
+			_calcValue(type) {
+				const scale = this._getDecimalScale();
+				let value = this.inputValue * scale;
+				let newValue = 0;
+				let step = this.step * scale;
+				
+				if(type === 'subtract'){
+					newValue = value - step;
+					if (newValue <= this.min){
+						this.minDisabled = true;
+					}
+					if(newValue < this.min){
+						newValue = this.min
+					}
+					if(newValue < this.max && this.maxDisabled === true){
+						this.maxDisabled = false;
+					}
+				}else if(type === 'add'){
+					newValue = value + step;
+					if (newValue >= this.max){
+						this.maxDisabled = true;
+					}
+					if(newValue > this.max){
+						newValue = this.max
+					}
+					if(newValue > this.min && this.minDisabled === true){
+						this.minDisabled = false;
+					}
+				}
+				if(newValue === value){
+					return;
+				}
+				this.inputValue = newValue / scale;
+			},
+			_getDecimalScale() {
+				let scale = 1;
+				// 浮点型
+				if (~~this.step !== this.step) {
+					scale = Math.pow(10, (this.step + '').split('.')[1].length);
+				}
+				return scale;
+			},
+			_onBlur(event) {
+				let value = event.detail.value;
+				if (!value) {
+					this.inputValue = 0;
+					return
+				}
+				value = +value;
+				if (value > this.max) {
+					value = this.max;
+				} else if (value < this.min) {
+					value = this.min
+				}
+
+				this.inputValue = value
+			}
+		}
+	}
+</script>
+<style>
+	.uni-numbox {
+		/* position:absolute; */
+		/* left: 30rpx; */
+		/* bottom: 0; */
+		display: flex;
+		justify-content: flex-start;
+		align-items: center;
+	}
+
+	.uni-numbox-minus,
+	.uni-numbox-plus {
+		margin: 0;
+		background-color: #f5f5f5;
+		width: 70rpx;
+		height: 100%;
+		line-height: 70rpx;
+		text-align: center;
+		position: relative;
+	}
+	.uni-numbox-minus .yticon,
+	.uni-numbox-plus .yticon{
+		font-size: 36rpx;
+		color: #555;
+	}
+
+	.uni-numbox-minus {
+		border-right: none;
+		border-top-left-radius: 6rpx;
+		border-bottom-left-radius: 6rpx;
+	}
+
+	.uni-numbox-plus {
+		border-left: none;
+		border-top-right-radius: 6rpx;
+		border-bottom-right-radius: 6rpx;
+	}
+
+	.uni-numbox-value {
+		position: relative;
+		width: 91rpx;
+		height: 51rpx;
+		text-align: center;
+		color: #FFFFFF;
+		font-size: 33rpx;
+		background-color: #5771DF;
+		margin: 0rpx 10rpx;
+	}
+
+	.uni-numbox-disabled.iconfont {
+		color: #d6d6d6;
+	}
+</style>

+ 2 - 2
manifest.json

@@ -2,8 +2,8 @@
     "name" : "Lala NFT",
     "appid" : "__UNI__3CDE968",
     "description" : "",
-    "versionName" : "1.0.0",
-    "versionCode" : 100,
+    "versionName" : "1.0.3",
+    "versionCode" : 103,
     "transformPx" : false,
     "app-plus" : {
         /* 5+App特有相关 */

+ 31 - 44
pages.json

@@ -5,7 +5,7 @@
 	"pages": [{
 			"path": "pages/index/index",
 			"style": {
-				"enablePullDownRefresh": true,
+				"enablePullDownRefresh": false,
 				// #ifdef MP
 				"navigationStyle": "custom",
 				// #endif
@@ -30,6 +30,30 @@
 				"navigationBarTitleText": "资金流水"
 			}
 		},
+		{
+			"path": "pages/index/nodeList",
+			"style": {
+				"navigationBarTitleText": "通知列表"
+			}
+		},
+		{
+			"path": "pages/user/extensionList",
+			"style": {
+				"navigationBarTitleText": "推广列表"
+			}
+		},
+		{
+			"path": "pages/market/duihuan",
+			"style": {
+				"navigationBarTitleText": "兑换"
+			}
+		},
+		{
+			"path": "pages/market/pay",
+			"style": {
+				"navigationBarTitleText": "运算力租赁"
+			}
+		},
 		{
 			"path": "pages/index/convert",
 			"style": {
@@ -118,17 +142,13 @@
 			}
 		},
 		{
-			"path": "pages/set/set",
+			"path": "pages/user/fulilist",
 			"style": {
-				"navigationBarTitleText": "设置"
-			}
-		},
-		{
-			"path": "pages/set/address",
-			"style": {
-				"navigationBarTitleText": "收货地址"
+				"navigationBarTitleText": "拼购福利"
+				
 			}
 		},
+		
 		{
 			"path": "pages/assets/myPing",
 			"style": {
@@ -166,12 +186,7 @@
 				}
 			}
 		},
-		{
-			"path": "pages/set/addressManage",
-			"style": {
-				"navigationBarTitleText": ""
-			}
-		},
+		
 		{
 			"path": "pages/user/extension",
 			"style": {
@@ -181,12 +196,7 @@
 				}
 			}
 		},
-		{
-			"path": "pages/set/phone",
-			"style": {
-				"navigationBarTitleText": "实名认证"
-			}
-		},
+		
 		{
 			"path": "pages/set/password",
 			"style": {
@@ -220,35 +230,12 @@
 				}
 			}
 		},
-		{
-			"path": "pages/user/withdrawal",
-			"style": {
-				"navigationBarTitleText": "奖励提现"
-			}
-		},
 		{
 			"path": "pages/user/notice",
 			"style": {
 				"navigationBarTitleText": "通知"
 			}
 		},
-		{
-			"path": "pages/user/favorites",
-			"style": {
-				"navigationBarTitleText": "收藏夹"
-			}
-		}, {
-			"path": "pages/user/coupon",
-			"style": {
-				"navigationBarTitleText": "我的卡卷"
-			}
-		},
-		{
-			"path": "pages/user/scoreAccumulate",
-			"style": {
-				"navigationBarTitleText": "积分明细"
-			}
-		},
 		{
 			"path": "pages/market/market",
 			"style": {

+ 1 - 1
pages/assets/myPing.vue

@@ -8,7 +8,7 @@
 			</view> -->
 			<view class="info" v-for="ls in listType">
 				<view class="info-num">{{ ls.num || '0.00' }}</view>
-				<view class="info-font">昨日{{ ls.name }}分红值</view>
+				<view class="info-font">奖金池</view>
 			</view>
 			<!-- <view class="info">
 				<view class="info-num">{{honor || '0.00' }}</view>

+ 9 - 8
pages/assets/teamDetails.vue

@@ -14,7 +14,7 @@
 				<view class="main-info rule">每轮限购1组,每组限购1份</view>
 				<view class="main-info time">
 					开奖时间:
-					<text>{{item.time}} 22:00:00</text>
+					<text>{{item.time}}</text>
 				</view>
 				<view class="main-info new">该轮预约{{item.bingos+item.fails}}份,拼中{{item.bingos}}份,退回{{item.fails}}份</view>
 			</view>
@@ -34,7 +34,7 @@
 						<view class="yu-font">回退本金</view>
 						<view class="yu-num">{{item.cost+item.type}}</view>
 					</view>
-					<view class="info">
+					<view class="info" v-if="item.status != 3">
 						<view class="yu-font">收益</view>
 						<view class="yu-num">{{item.join_award+item.type}}</view>
 					</view>
@@ -46,20 +46,21 @@
 					</view>
 				</view>
 			</view>
-			<view class="boom">
+			<!-- <view class="boom">
 				<view class="boom-font">当前组爆快</view>
-				<!-- <view class="boom-num">
+				<view class="boom-num">
 					LALA122002552000
 					<br />
 					LALA122002552000
-				</view> -->
-			</view>
+				</view>
+			</view> -->
 		</view>
 	</view>
 </template>
 
 <script>
 import { pinkLogDate } from '@/api/finance.js';
+import { getTime } from '@/utils/rocessor.js';
 export default {
 	data() {
 		return {
@@ -81,7 +82,7 @@ export default {
 					console.log(e)
 					const ls = e.data;
 					const lun = ls.group_num > 0 ? ls.group_num + '轮' : '';
-					const time = new Date(ls.pay_time * 1000);
+					const time = getTime(ls.open_time);
 					let sy = ls.join_award*ls.cost/100+'';
 					const num = sy.split('.')[1]
 					console.log(sy,"1111111111")
@@ -95,7 +96,7 @@ export default {
 						fen: 1,
 						money: +ls.cost,
 						type: ls.cost_money_type,
-						time: time.getFullYear() + '-' + (time.getMonth() + 1) + '-' + time.getDate(),
+						time: time,
 						stopTime:'',
 						image: ls.activity.background_image,
 						id: ls.id,

+ 39 - 39
pages/index/index.vue

@@ -13,21 +13,15 @@
 		</view>
 		<!-- 通知栏 -->
 		<view class="tongz flex">
-			<view>
+			<view >
 				<view class="tongz-bg">
 					<image src="../../static/img/tongz-bg.png" mode=""></image>
 				</view>
 				<view class="tongz-left flex">
 					<image class="image-left" src="../../static/img/ling.png" mode=""></image>
-					<!-- <view class="tongz-font">
-						这是一条系统通知消息
-					</view> -->
-					<u-notice-bar style="width: 100%;" mode="vertical" type="none" :volume-icon="false" :more-icon="true" :list="showList.infoList" @click="goDetails"></u-notice-bar>
+					<u-notice-bar style="width: 100%;" mode="vertical" type="none" :volume-icon="false" :more-icon="true" :list="showList.infoList" @click="goDetails" @getMore="nav('/pages/index/nodeList')"></u-notice-bar>
 				</view>
 			</view>
-			<!-- <view class="tongz-right">
-				<image src="../../static/img/img16.png" mode=""></image>
-			</view> -->
 		</view>
 		<view class="box-body">
 			<view class="navBox">
@@ -53,7 +47,7 @@
 						<text id="two">{{ item.lun }}轮</text>
 					</view>
 					<view v-if="'childList' in item">
-						<text id="three" v-if="item.childList.next_pink_status">拼购中</text>
+						<text id="three" v-if="item.childList.next_pink_status">待开团</text>
 						<text id="three" v-else>拼购中</text>
 					</view>
 				</view>
@@ -76,7 +70,7 @@
 					</view>
 					<view class="appointmentTime">
 						预约时间:
-						<text>{{ item.start }}-{{ item.end }}</text>
+						<text>{{ item.end }}</text>
 					</view>
 					<view class="lotteryTime">
 						开奖时间:
@@ -85,7 +79,11 @@
 				</view>
 				<view class="btn-box flex">
 					<view class="submit1" @click="lalaDetial(item.id)">当天拼购</view>
-					<view class="submit" @click="buy(item)">拼购</view>
+					<view v-if="'childList' in item">
+						<view class="submit" v-if="item.childList.next_pink_status">待开团</view>
+						<view class="submit" @click="buy(item)" v-else>拼购</view>
+					</view>
+					
 				</view>
 			</view>
 		</view>
@@ -171,38 +169,40 @@ export default {
 					})
 					arr.infoList = ar;
 					obj.showList = arr;
-					uni.stopPullDownRefresh();
+					lala({
+						page: 1,
+						limit: 10
+					}).then(({ data }) => {
+						
+						data.list.data.forEach((e, index) => {
+							lalaDetial({ page: 1, limit: 1 }, e.id).then(les => {
+								// e.childList = les.data
+								let date = les.data.open_times[0].name.split(' ')
+								e.start = date[0] + ' ' + les.data.lala_pink_open
+								e.end = getTime(les.data.next_pink.value - les.data.close_join * 60)
+								console.log(les.data.next_pink.value - les.data.close_join * 60)
+								for(let i = 0;i<les.data.open_times.length;i++){
+									if(les.data.open_times[i].value == les.data.next_pink.value){
+										e.lun = i+1
+									}
+								}
+								obj.$set(e, 'childList', les.data);
+								
+							});
+						});
+						obj.list = data.list.data;
+						console.log(obj.list,"1111111")
+						uni.stopPullDownRefresh();
+						uni.hideLoading();
+					});
 				})
 				.catch(e => {
 					uni.stopPullDownRefresh();
 				});
-			lala({
-				page: 1,
-				limit: 10
-			}).then(({ data }) => {
-				
-				data.list.data.forEach((e, index) => {
-					lalaDetial({ page: 1, limit: 1 }, e.id).then(les => {
-						// e.childList = les.data
-						let date = les.data.open_times[0].name.split(' ')
-						e.start = date[0] + ' ' + les.data.lala_pink_open
-						e.end = getTime(les.data.next_pink.value - les.data.close_join * 60)
-						for(let i = 0;i<les.data.open_times.length;i++){
-							if(les.data.open_times[i].value == les.data.next_pink.value){
-								e.lun = i+1
-							}
-						}
-						obj.$set(e, 'childList', les.data);
-						
-					});
-				});
-				obj.list = data.list.data;
-				console.log(obj.list,"1111111")
-				uni.stopPullDownRefresh();
-				uni.hideLoading();
-			});
+			
 		},
 		nav(url) {
+			console.log(url)
 			uni.navigateTo({
 				url: url
 			});
@@ -235,6 +235,7 @@ export default {
 			this.show1 = false;
 		},
 		pswQd() {
+			const obj = this
 			buylala(
 				{
 					trade_psw: this.password
@@ -244,7 +245,7 @@ export default {
 				.then(e => {
 					this.password = '';
 					this.show1 = false;
-					obj.$api.msg("参与拼购成功");
+					this.$api.msg("参与拼购成功");
 				})
 				.catch(e => {
 					this.password = '';
@@ -267,7 +268,6 @@ export default {
 			this.titleNViewBackground = this.carouselList[index].background;
 		},
 		goDetails(e){
-			console.log(this.showList[e].url,"111111")
 			uni.navigateTo({
 				url: this.showList[e].url
 			})

+ 88 - 0
pages/index/nodeList.vue

@@ -0,0 +1,88 @@
+<template>
+	<view class="container">
+		<view v-if="list.length > 0" class="list-box flex_item" v-for="(ls,index) in list" :key='index' @click="nav(index)">
+			<image :src="ls.image_input[0]"></image>
+			<view class="list-item">
+				<view class="title ellipsis">{{ls.title}}</view>
+				<!-- <view class="time">{{ls.add_time}}</view> -->
+			</view>
+		</view>
+		<view class="empty-box" v-show="list.length === 0"><u-empty></u-empty></view>
+	</view>
+</template>
+<script>
+import { article } from '@/api/user.js';
+export default {
+	data() {
+		return {
+			list:''
+		};
+	},
+	onLoad(option){
+		this.loadData();
+	},
+	onShow() {
+		
+	},
+	methods: {
+		// 请求载入数据
+		async loadData() {
+			let obj = this;
+			article({
+				page:1,
+				limit:10000
+			},1).then(({ data }) => {
+				console.log(data)
+				obj.list = data;
+			});
+		},
+		nav(index){
+			uni.navigateTo({
+				url: '/pages/index/article?id=' + this.list[index].id
+			})
+		},
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	min-height: 100%;
+	background-color: #ffffff;
+	.container {
+		width: 100%;
+		padding: 25rpx 27rpx;
+		
+	}
+}
+.empty-box{
+	margin-top: 100rpx;
+	width: 100%;
+	height: 500rpx;
+}
+.list-box{
+	border-bottom: 1rpx solid #E3E3E3;
+	margin-bottom: 25rpx;
+	padding-bottom: 25rpx;
+	image{
+		width: 200rpx;
+		height: 160rpx;
+		border-radius: 15rpx;
+	}
+	.list-item{
+		padding-left: 16rpx;
+		width: 80%;
+		.title{
+			height: 80rpx;
+			color: #333333;
+			font-size: 30rpx;
+			font-weight: 500;
+		}
+		.time{
+			padding-top: 40rpx;
+			color: #999999;
+			font-size: 24rpx;
+		}
+	}
+}
+</style>

+ 479 - 2
pages/market/details.vue

@@ -1,8 +1,485 @@
 <template>
-</template>
+	<view class="container">
+		<!-- 状态栏占位 -->
+		<!-- <view class="status_bar"></view> -->
+		<!-- <view class="topbar-box">
+			<view class="topbar">
+				<view class="topbar-left"><image src="../../static/img/img16.png" mode=""></image></view>
+				<view class="topbar-center"></view>
+				<view class="topbar-right"></view>
+			</view>
+		</view> -->
+		<!-- 自定义导航栏 -->
+		<!-- <uni-nav-bar left-icon="back" class="nav-bar" @clickLeft="back">
+			<view class="topbar-center">
+				<view :class="{ action: current === 0 }" @click="changeCurrent(0)">商品</view>
+				<view :class="{ action: current === 1 }" @click="changeCurrent(1)">参数</view>
+				<view :class="{ action: current === 2 }" @click="changeCurrent(2)">介绍</view>
+			</view>
+		</uni-nav-bar> -->
+		<!-- <view class="list-box"></view> -->
+		<view class="good-img">
+			<image :src="list.logo"></image>
+		</view>
+		<view class="param-box">
+			<view class="param-price">{{ list.cost_money * 1 }}{{ list._cost_money_type }}</view>
+			<view class="param-name">{{ list.name }}</view>
+			<view class="param-list">
+					<view class="list-item">
+						<view class="item-title">使用周期</view>
+						<view class="item-val">{{ list.first_step_time + list.second_step_time }}天 + {{list.third_step_time}}天</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">电费</view>
+						<view class="item-val">{{list.elect_fee|keept}}元/天</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">预计日产出</view>
+						<view class="item-val">{{list._day_get | daiding}}</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">算力</view>
+						<view class="item-val" v-if="list.get_money_type == 'BZZ'">{{+list.step}}节点</view>
+						<view class="item-val" v-else>{{ +list.step}}TB</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">管理费</view>
+						<view class="item-val">{{ list.service_ratio }}%</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">上架期</view>
+						<view class="item-val">{{ list.stand_time }}天</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">宽带费</view>
+						<view class="item-val">{{ list.broadband || 0 }}元/月</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">IP地址费</view>
+						<view class="item-val">{{ list.ip_address || 0 }}元/月</view>
+					</view>
+					<view class="list-item">
+						<view class="item-title">质押币</view>
+						<view class="item-val">{{ list.pledge || 0 }}个</view>
+					</view>
+			</view>
+		</view>
+		<view class="list">
+			<view class="explain"><rich-text :nodes="list.detail"></rich-text></view>
+		</view>
+		
+		<!-- <view class="list"> -->
+		<!-- <view class="list-title">{{ list.name }}</view>
+			<view class="flex list-item">
+				<view class="item-name">价格</view>
+				<view class="item-tpl">{{ list.cost_money * 1 }}{{ list._cost_money_type }}</view>
+			</view>
+			<view class="flex list-item" v-if="list.stand_money > 0">
+				<view class="item-name">质押FIL数量(用户自行支付)</view>
+				<view class="item-tpl">{{ list.stand_money * 1 }}</view>
+			</view>
+			<view class="flex list-item">
+				<view class="item-name">托管运维费</view>
+				<view class="item-tpl">{{ list.service_ratio }}%</view>
+			</view>
+			<view class="flex list-item">
+				<view class="item-name">上架期</view>
+				<view class="item-tpl">{{ list.stand_time }}天</view>
+			</view> -->
+		<!-- <view class="flex list-item">
+				<view class="item-name">封装期</view>
+				<view class="item-tpl">{{list.first_step_time}}</view>
+			</view> -->
+		<!-- 			<view class="flex list-item">
+				<view class="item-name">合约期</view>
+				<view class="item-tpl">{{ list.first_step_time + list.second_step_time + list.third_step_time }}天</view>
+			</view> -->
+		<!-- <view class="tpl" v-if="list.stand_money > 0">需完成应质押的FIL后,才能开始进入50天封装期</view> -->
+
+		<!-- <view class="list-title">IPFS独享算力包-1T</view> -->
+		<!-- 产品说明 -->
+		<!-- <view class="tips">说明:</view> -->
 
+		<!-- <view class="explain"><rich-text :nodes="list.detail"></rich-text></view> -->
+		<!-- <view class="num-box flex">
+				<view class="num-title">购买数量({{ list.step * 1 }}T)</view>
+				<uni-number-box class="step" :value="num" :disabled="false" @eventChange="numberChange"></uni-number-box>
+			</view>
+			<view class="flex money-box">
+				<view class="money-name">购买总数</view>
+				<view class="money-num">{{ list.step * 1 * num}}T</view>
+			</view>
+			<view class="flex money-box">
+				<view class="money-name">金额</view>
+				<view class="money-num">{{ money * 1 }}{{ list._cost_money_type }}</view>
+			</view>
+			
+			<view class="pay-box">支付方式:{{ list._cost_money_type }}</view>
+			<view class="flex money-box">
+				<view class="money-name">交易密码</view>
+				<view class="money-num"><input class="input-box" type="password" v-model="password" placeholder="请输入交易密码" /></view>
+			</view>
+			<view class="check_box flex_item">
+				<view><radio style="transform: scale(0.75)" @click="Getcheckbox" color="#6786FB" :checked="checked" /></view>
+				<view class="">
+					请阅读并同意
+					<text @click="ToIndex">《矿机租赁协议》</text>
+				</view>
+			</view> -->
+		<!-- </view> -->
+		<view class="submit-box">
+			<view class="submit" @click="buy">{{ type == 3 ? '立即质押' : '立即购买' }}</view>
+		</view>
+	</view>
+</template>
 <script>
+import { miningDateils, buyMining } from '@/api/market.js';
+import uniNumberBox from '@/components/uni-number-box.vue';
+export default {
+	components: {
+		uniNumberBox
+	},
+	data() {
+		return {
+			id: '',
+			type: '',
+			num: 1,
+			step: 0,
+			password: '',
+
+			price: '',
+			list: {},
+			checked: false,
+			current: 0
+		};
+	},
+	filters: {
+		Keept(value) {
+			if(!value) {
+				return '0.00'
+			}
+			value = Math.round(value* 100)/100;
+			return value
+		},
+		daiding(value) {
+			let num = parseFloat(value)
+			if(num === 0){
+				return '待定'
+			}else {
+				return value
+			}
+		}
+	},
+	onLoad(option) {
+		this.id = option.id;
+		this.type = option.type;
+		this.loadData();
+	},
+
+	computed: {
+		money() {
+			return this.num * this.price * this.step;
+		}
+	},
+	onShow() {},
+	methods: {
+		async loadData() {
+			let obj = this;
+			miningDateils({}, obj.id).then(({ data }) => {
+				obj.list = data;
+				// obj.money = obj.list.cost_money;
+				obj.price = obj.list.cost_money;
+				obj.step = obj.list.step;
+				console.log(obj.list);
+			});
+		},
+		//阅读并同意
+		Getcheckbox() {
+			let obj = this;
+			obj.checked = !obj.checked;
+		},
+		ToIndex() {
+			uni.navigateTo({
+				url: '/pages/finance/xieyi'
+			});
+		},
+		pay() {
+			let obj = this;
+			if (obj.password == '') {
+				obj.$api.msg('请输入交易密码!');
+				return;
+			}
+			if (obj.checked == false) {
+				obj.$api.msg('请阅读并同意协议!');
+				return;
+			}
+			buyMining(
+				{
+					num: obj.num * obj.step,
+					trade_psw: obj.password
+				},
+				obj.id
+			)
+				.then(data => {
+					obj.$api.msg(data.msg);
+					obj.password = '';
+					obj.num = 1;
+				})
+				.catch(e => {
+					obj.password = '';
+					obj.num = 1;
+					if (e.msg == '交易密码错误') {
+						return;
+					}
+					console.log(e);
+					var reg = new RegExp('购买矿机所需的');
+					if (e.msg.match(reg) == -1) {
+					} else {
+						setTimeout(function() {
+							uni.navigateTo({
+								url: '/pages/finance/recharge'
+							});
+						}, 1000);
+					}
+				});
+		},
+		numberChange(data) {
+			let obj = this;
+			obj.num = data.number;
+		},
+		buy() {
+			// let list = JSON.stringify(this.list)
+			uni.navigateTo({
+				url: '/pages/market/pay?&id=' + this.id + '&type=' + this.type
+			});
+			// console.log(this.list,'--------------***********')
+			// console.log('buy click')
+		},
+		changeCurrent(index) {
+			this.current = index;
+		},
+		back() {
+			uni.navigateBack({
+				url: '/pages/calculation/buyCalculation'
+			});
+		}
+	}
+};
 </script>
 
-<style>
+<style lang="scss" scoped>
+page {
+	min-height: 100%;
+	background-color: #ffffff;
+	.container {
+		width: 100%;
+	}
+}
+.list-box {
+	// background-color: #5771df;
+	width: 100%;
+	height: 100rpx;
+}
+.list {
+	// margin: 0rpx 31rpx;
+	// padding: 45rpx 35rpx;
+	// background-color: #ffffff;
+	// border-radius: 15rpx;
+	// position: relative;
+	// top: -100rpx;
+	.list-title {
+		font-size: 34rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 35rpx;
+	}
+	.list-item {
+		font-size: 24rpx;
+		font-weight: 500;
+		color: #666666;
+		padding-bottom: 35rpx;
+		.item-tpl {
+			font-size: 24rpx;
+			font-weight: bold;
+			color: #333333;
+		}
+		.tpls {
+			color: #faba38;
+		}
+	}
+	.tpl {
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #faba38;
+		padding-bottom: 98rpx;
+	}
+	.num-box {
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 83rpx;
+	}
+	.money-box {
+		font-size: 32rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 102rpx;
+		.money-num {
+			font-weight: bold;
+			.input-box {
+				text-align: right;
+			}
+		}
+	}
+	.pay-box {
+		font-size: 32rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 60rpx;
+	}
+	.tips {
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #5771df;
+		padding-bottom: 25rpx;
+	}
+	.explain {
+		// word-wrap: break-word;
+		// font-size: 26rpx;
+		// font-weight: 500;
+		// color: #666666;
+		// line-height: 38rpx;
+		width: 662rpx;
+		margin: 0 auto;
+		padding-bottom: 141rpx;
+	}
+}
+.submit-box {
+	position: fixed;
+	bottom: 0;
+	padding: 25rpx 0;
+	width: 100%;
+	background-color: #fff;
+	// border-top: 1px solid rgba(0,0,0,0.1);
+	.submit {
+		box-sizing: border-box;
+		width: 662rpx;
+		height: 91rpx;
+		line-height: 91rpx;
+		margin: 0 auto;
+		background: linear-gradient(90deg, #60BAB0, #60BAB0, #45969B);
+		color: #ffffff;
+		text-align: center;
+		// padding: 25rpx 0rpx;
+		border-radius: 50rpx;
+	}
+}
+.check_box {
+	padding: 25rpx 25rpx;
+	font-size: 28rpx;
+	padding-bottom: 60rpx;
+	text {
+		color: #6786fb;
+	}
+}
+.status_bar {
+	position: fixed;
+	top: 0;
+	background-color: #ffffff;
+	z-index: 999;
+	height: var(--status-bar-height);
+	width: 100%;
+}
+// .topbar-box {
+// 	background-color: #bfa;
+// 	height: 100rpx;
+// 	width: 100%;
+// 	position: fixed;
+// 	top: var(--status-bar-height);
+// 	.topbar {
+// 		.topbar-left {
+
+// 		}
+// 		.topbar-center {
+
+// 		}
+// 		.topbar-right {
+
+// 		}
+// 	}
+// }
+.nav-bar {
+	position: fixed;
+	width: 100%;
+	top: var(--status-bar-height);
+	background-color: #fff;
+	z-index: 999;
+	.topbar-center {
+		// width: 450rpx;
+		height: 41px;
+		margin: 0 auto;
+		display: flex;
+		justify-content: space-around;
+		color: #9d989e;
+		font-weight: bold;
+		view {
+			margin: 0 40rpx;
+		}
+		.action {
+			color: #000;
+			border-bottom: 3px #cc6551 solid;
+		}
+	}
+}
+
+.good-img {
+	width: 330rpx;
+	height: 330rpx;
+	margin: 0 auto;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+.param-box {
+	width: 660rpx;
+	margin: 0 auto 20rpx;
+	.param-price {
+		font-size: 40rpx;
+		font-weight: bold;
+		color: #dc4423;
+		padding: 34rpx 0;
+	}
+	.param-name {
+		font-size: 32rpx;
+		font-weight: bold;
+		padding-bottom: 30rpx;
+	}
+	.param-list {
+		box-sizing: border-box;
+		background-color: #f7f8fc;
+		color: #000;
+		display: flex;
+		flex-wrap: wrap;
+		padding-bottom: 24rpx;
+		// margin: 0 19rpx;
+		.list-item {
+			width: 33%;
+			padding: 5rpx 0 0 5rpx;
+			text-align: center;
+			// height: 122rpx;
+			.item-title {
+				font-size: 30rpx;
+				padding: 20rpx 0;
+				color: #8c8b90;
+			}
+			.item-val {
+				font-size: 30rpx;
+				font-weight: bold;
+				padding-bottom: 14rpx;
+			}
+			
+		}
+	}
+}
 </style>

+ 242 - 0
pages/market/duihuan.vue

@@ -0,0 +1,242 @@
+<template>
+	<view class="center">
+		<view class="rule-box">
+			<view class="rule-title">兑换规则</view>
+			<view class="rule-main">
+				每{{ list.sp_exchange_origin_cost * 1 }}{{ list.sp_exchange_origin }}+{{ list.sp_exchange_bingo_time }}幸运值可兑换{{ list.sp_exchange_origin_cost * 1
+				}}{{ list.sp_exchange_target }}+{{ list.sp_exchange_bingo_time }}荣誉值
+			</view>
+		</view>
+		<view class="main">
+			<view class="main-title flex">
+				<view class="shu"></view>
+				<view class="main-font">福利兑换</view>
+			</view>
+			<view class="main-main flex">
+				<view class="left flex">
+					<view class="top font">
+						<span>{{ list.sp_exchange_origin_cost * 1 || 0 }}</span>
+						{{ list.sp_exchange_origin }}
+					</view>
+					<view class="zong font">+</view>
+					<view class="bottom font">
+						<span>{{ list.sp_exchange_bingo_time || 0 }}</span>
+						幸运值
+					</view>
+				</view>
+				<view class="bg">
+					<image src="../../static/img/duhuanbg.png" mode=""></image>
+				</view>
+				<view class="left flex">
+					<view class="top font">
+						<span>{{ list.sp_exchange_origin_cost * 1 || 0 }}</span>
+						{{ list.sp_exchange_target }}
+					</view>
+					<view class="zong font">+</view>
+					<view class="bottom font">
+						<span>{{ list.sp_exchange_bingo_time || 0 }}</span>
+						荣誉值
+					</view>
+				</view>
+			</view>
+			<view class="sheng">
+				当前剩余USDL
+				<span>{{ USDL || 0 }}</span>
+				幸运值
+				<span>{{ lucky || 0 }}</span>
+			</view>
+			<view class="btn" @click="buy()">确认兑换</view>
+		</view>
+		<!-- <u-popup v-model="show1" mode="center" width="548rpx" border-radius="14">
+			<view class="psw-wrapper">
+				<view class="psw-title">请输入支付密码</view>
+				<input type="password" v-model="password" class="psw-ipt" />
+				<view class="psw-btn">
+					<text @click="cancel">取消</text>
+					<text class="psw-qd" @click="pswQd">确定</text>
+				</view>
+			</view>
+		</u-popup> -->
+	</view>
+</template>
+
+<script>
+import { lalaDetial } from '@/api/product.js';
+import { wallet } from '@/api/finance.js';
+import { spExchange } from '@/api/market.js';
+export default {
+	data() {
+		return {
+			id: '',
+			list: '',
+			lucky: '',
+			USDL: '',
+			show1: false, //支付密码
+			password: ''
+		};
+	},
+	onLoad(option) {
+		this.id = option.id;
+		this.loadData();
+	},
+	methods: {
+		async loadData() {
+			lalaDetial({}, this.id)
+				.then(({ data }) => {
+					console.log(data);
+					this.list = data.data;
+					this.lucky = data.luck_point - data.exchange_point;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+			wallet({}).then(({ data }) => {
+				this.USDL = data.back['USDL'].money.money * 1;
+			});
+		},
+		buy() {
+			// this.show1 = true;
+			spExchange({}, this.id).then(e => {
+				uni.navigateTo({
+					url:'/pages/money/paySuccess?type=1' 
+				})
+			});
+		},
+		pswQd() {
+			spExchange({}, this.id).then(e => {});
+		},
+		cancel() {
+			this.show1 = false;
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.rule-box {
+	width: 750px;
+	padding: 30rpx;
+	background: #ffffff;
+	.rule-title {
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #0f253a;
+	}
+	.rule-main {
+		margin-top: 10rpx;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #6d7c88;
+	}
+}
+.main {
+	margin-top: 15rpx;
+	width: 100%;
+	background: #fff;
+	padding-bottom: 220rpx;
+	.main-title {
+		padding: 20rpx 0 27rpx 30rpx;
+		justify-content: flex-start;
+		align-items: center;
+		border-bottom: 1px #f3f3f3 solid;
+		.shu {
+			width: 2rpx;
+			height: 30rpx;
+			background: #44969d;
+		}
+		.main-font {
+			margin-left: 16rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #0f253a;
+		}
+	}
+	.main-main {
+		padding: 62rpx;
+		.left {
+			flex-direction: column;
+			align-items: center;
+			.font {
+				font-size: 42rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #000000;
+				span {
+					color: #44969d;
+				}
+			}
+			.zong {
+				margin-top: 20rpx;
+			}
+			.bottom {
+				margin-top: 40rpx;
+			}
+		}
+		.bg{
+			width: 70rpx;
+			height: 70rpx;
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+	}
+	.sheng {
+		padding: 30rpx 0 0 28rpx;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #6d7c88;
+		span {
+			color: #44969d;
+		}
+	}
+}
+.btn {
+	margin: 130rpx auto;
+	width: 674rpx;
+	height: 88rpx;
+	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+	border-radius: 44rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	text-align: center;
+	line-height: 88rpx;
+}
+.psw-wrapper {
+	width: 548rpx;
+	height: 344rpx;
+	background-color: #ffffff;
+	.psw-title {
+		width: 100%;
+		font-size: 35rpx;
+		padding: 43rpx 0 49rpx;
+		text-align: center;
+		font-weight: 800;
+	}
+	.psw-ipt {
+		display: block;
+		background-color: #dce3ed;
+		height: 90rpx;
+		width: 464rpx;
+		padding-left: 30rpx;
+		margin: 0 auto;
+		font-size: 80rpx;
+	}
+	.psw-btn text {
+		display: inline-block;
+		text-align: center;
+		width: 50%;
+		padding-top: 29rpx;
+		font-size: 35rpx;
+	}
+	.psw-qd {
+		color: #45969b;
+	}
+}
+</style>

+ 56 - 56
pages/market/market.vue

@@ -3,31 +3,26 @@
 		<image class="logo-img" src="../../static/img/img01.png"></image>
 		<view class="list-box">
 			<scroll-view scroll-x class="list-title">
-				<view class="title" 
-				:class="{ blue: tabCurrent == '全部' }"
-				@click="tabClick('全部', 1)"
-				>
-					全部
-				</view>
+				<!-- <view class="title" :class="{ blue: tabCurrent == '全部' }" @click="tabClick('全部', 1)">全部</view> -->
 				<view
 					class="title"
 					v-for="(ls, index) in moneyTypeList"
 					:key="index"
 					:class="{ blue: tabCurrent == ls.code, grey: ls.has_mining == 0 }"
 					@click="tabClick(ls.code, ls.has_mining)"
-					v-if="ls.name !== 'USDT'"
+					v-if="ls.name === 'FIL'"
 				>
 					{{ ls.name }}
 				</view>
 			</scroll-view>
-			<view class="flex_item list-name" v-if="tabCurrent!== '全部'">
+			<view class="flex_item list-name" v-if="tabCurrent !== '全部'">
 				<view class="name" :class="{ black: tabType == 1 }" @click="tabTypeClick(1)">算力包</view>
-				<view class="name" :class="{ black: tabType == 2 }" @click="tabTypeClick(2)">独享矿机</view>
-				<view class='name' :class="{'black':tabType==3}" @click="tabTypeClick(3)">联合挖矿</view>
+				<!--<view class="name" :class="{ black: tabType == 2 }" @click="tabTypeClick(2)">独享矿机</view>
+				<view class="name" :class="{ black: tabType == 3 }" @click="tabTypeClick(3)">联合挖矿</view> -->
 				<!-- <view class='name' :class="{'black':tabCurrent==4}">分类名称</view> -->
 			</view>
 			<view class="jg" v-else></view>
-			<view class="list-cell" v-if="list.length > 0" v-for="(ls, index) in list" :key="index" :class="{'mini-list-cell': tabCurrent === '全部'}">
+			<view class="list-cell" v-if="list.length > 0" v-for="(ls, index) in list" :key="index" :class="{ 'mini-list-cell': tabCurrent === '全部' }">
 				<view class="flex">
 					<view>
 						<view class="cell-title flex">
@@ -37,7 +32,7 @@
 						<view class="tags">
 							<!-- <view class="cell-tip">{{ ls.first_step_time + ls.second_step_time + ls.third_step_time }}天矿机</view> -->
 							<template v-if="ls.tags[0] !== '0'">
-								<view class="cell-tip" v-for="item  in ls.tags" :key="item">{{item}}</view>
+								<view class="cell-tip" v-for="item in ls.tags" :key="item">{{ item }}</view>
 								<!-- <view class="cell-tag">特价</view> -->
 							</template>
 						</view>
@@ -57,7 +52,7 @@
 					</view>
 					<view class="tpl">
 						<view class="">合约周期</view>
-						<view class="">{{ ls.first_step_time + ls.second_step_time }}天 + {{ls.third_step_time}}天</view>
+						<view class="">{{ ls.first_step_time + ls.second_step_time }}天 + {{ ls.third_step_time }}天</view>
 					</view>
 					<!-- <view class="tpl">
 						<view class="">上架期</view>
@@ -69,7 +64,9 @@
 					<view class="zhiya-btn" v-if="ls.stock > 0" @click="ToBuy(ls)">{{ ls.type == 3 ? '立即质押' : '立即购买' }}</view>
 					<view class="zhiya-btn grey" v-if="ls.stock == 0">已售罄</view>
 				</view>
-				<!-- <view class="list-tip" v-if="ls.detail"><rich-text :nodes="ls.detail"></rich-text></view> -->
+				<view class="luckbox">
+					购买当前矿机所需幸运值<span>{{ls.cost_times}}</span>,您当前拥有的幸运值为<span>{{ls.luck_point - ls.exchange_point}}</span>
+				</view>
 			</view>
 			<view class="empty-box" v-show="list.length === 0"><u-empty text="敬请期待" mode="data"></u-empty></view>
 		</view>
@@ -132,40 +129,40 @@ export default {
 			let obj = this;
 			// console.log(obj.moneyTypeList);
 			wallet({}).then(({ data }) => {
-					console.log(data);
-					obj.like_rmb = data.all_rmb;
-					obj.like_usdt = data.all_usdt;
-					const arr = Object.keys(data.back);
-					console.log(arr);
-					let ar = [];
-					arr.forEach(e => {
-						ar.push(data.back[e]);
-					});
-					obj.moneyTypeList = ar;
-					console.log(obj.moneyTypeList,"swpie")
+				console.log(data);
+				obj.like_rmb = data.all_rmb;
+				obj.like_usdt = data.all_usdt;
+				const arr = Object.keys(data.back);
+				console.log(arr);
+				let ar = [];
+				arr.forEach(e => {
+					ar.push(data.back[e]);
 				});
-			},
+				obj.moneyTypeList = ar;
+				console.log(obj.moneyTypeList, 'swpie');
+			});
+		},
 		// 请求载入数据
 		async loadData() {
 			let obj = this;
 			uni.showLoading({
 				title: '加载中...'
 			});
-			if(obj.tabCurrent === '全部'){
-				obj.list = []
+			if (obj.tabCurrent === '全部') {
+				obj.list = [];
 				mining({
 					page: 1,
 					limit: 1000
-				}).then( ({data}) => {
+				}).then(({ data }) => {
 					uni.hideLoading();
-					console.log(data.data,'9999999999999999999999999999999999')
+					console.log(data.data, '9999999999999999999999999999999999');
 					obj.list = data.data.map(e => {
 						e.step = +e.step;
 						e._cost_money = +e._cost_money.replace(e.cost_money_type, '') + e.cost_money_type;
 						return e;
 					});
 					console.log(obj.list, 'obj.list++++++++++++');
-				})
+				});
 				// for(let i = 0 ; i<obj.moneyTypeList.length;i++){
 				// 	if(obj.moneyTypeList[i].has_mining !==0){
 				// 		mining({
@@ -195,14 +192,13 @@ export default {
 				// 			}
 				// 			// console.log(obj.list, 'new obj.list-------------')
 				// 			uni.hideLoading();
-							
+
 				// 		})
 				// 	}
-					
+
 				// }
 				// let len = obj.list.length;
-				
-			}else {
+			} else {
 				mining({
 					page: 1,
 					limit: 1000,
@@ -217,7 +213,7 @@ export default {
 					});
 					console.log(obj.list, 'obj.list++++++++++++');
 					let len = obj.list.length;
-				
+
 					for (let i = 0; i < len; i++) {
 						// obj.list[i].tags = obj.list[i].tags.splice(',')
 						for (let j = 0; j < len; j++) {
@@ -228,12 +224,11 @@ export default {
 							}
 						}
 					}
-					
+
 					console.log(obj.list, 'new obj.list-------------');
 					uni.hideLoading();
 				});
 			}
-			
 		},
 		ToBuy(ls) {
 			// let obj = this;
@@ -270,8 +265,8 @@ export default {
 			this.$refs.popup.close();
 		},
 		tabClick(index, has_mining) {
-			if(index === '全部') {
-				console.log('ddddddddd')
+			if (index === '全部') {
+				console.log('ddddddddd');
 			}
 			if (has_mining == 0) {
 				this.$api.msg('敬请期待!');
@@ -307,7 +302,7 @@ page {
 		white-space: nowrap;
 		.title {
 			display: inline-block;
-			background-color: #A7DCD7;
+			background-color: #44969d;
 			font-size: 30rpx;
 			font-weight: bold;
 			color: #ffffff;
@@ -317,7 +312,7 @@ page {
 			line-height: 60rpx;
 		}
 		.blue {
-			background-color: #44969D;
+			background-color: #44969d;
 		}
 		.grey {
 			background-color: #dbdbdb !important;
@@ -359,7 +354,7 @@ page {
 	margin: 0 auto;
 	padding: 40rpx 40rpx;
 	border-radius: 30rpx 30rpx;
-	background: #F3FEFF;
+	background: #f3feff;
 	margin-bottom: 20rpx;
 	position: relative;
 	.cell-title {
@@ -410,11 +405,11 @@ page {
 		.tip {
 			font-size: 34rpx;
 			font-weight: bold;
-			color: #44969D;
+			color: #44969d;
 			line-height: 55px;
 		}
 		.zhiya-btn {
-			background-color: #44969D;
+			background-color: #44969d;
 			width: 150rpx;
 			text-align: center;
 			line-height: 60rpx;
@@ -426,18 +421,23 @@ page {
 			background-color: #999999;
 		}
 	}
-	.list-tip {
-		background-color: #bac1ef !important;
-		word-wrap: break-word;
-		font-size: 26rpx;
+	.luckbox {
+		margin-left: -40rpx;
+		width: 670rpx;
+		background: #7bbbc0;
+		border-radius: 0px 0px 10rpx 10rpx;
+		padding: 32rpx;
+		font-size: 24rpx;
+		font-family: PingFang SC;
 		font-weight: 500;
 		color: #333333;
-		padding: 36rpx 32rpx;
-		margin-top: 15rpx;
-		border-bottom-left-radius: 15rpx;
-		border-bottom-right-radius: 15rpx;
+		span {
+			font-size: 30rpx;
+			color: #ff0000;
+		}
 	}
 }
+
 .empty-box {
 	width: 100%;
 	height: 500rpx;
@@ -477,7 +477,7 @@ page {
 			padding-bottom: 120rpx;
 			padding-top: 30rpx;
 			text {
-				background-color: #44969D;
+				background-color: #44969d;
 				color: #ffffff;
 				width: 70%;
 				text-align: center;
@@ -499,12 +499,12 @@ page {
 		.tip {
 			font-size: 34rpx;
 			font-weight: bold;
-			color: #44969D;
+			color: #44969d;
 			opacity: 0;
 			line-height: 40px;
 		}
 		.zhiya-btn {
-			background-color: #44969D;
+			background-color: #44969d;
 			width: 150rpx;
 			text-align: center;
 			line-height: 60rpx;

+ 404 - 0
pages/market/pay.vue

@@ -0,0 +1,404 @@
+<template>
+	<view class="container">
+		<view class="list-box"></view>
+		<view class="list">
+			<view class="list-title">{{ list.name }}</view>
+			<view class="flex list-item">
+				<view class="item-name">价格</view>
+				<view class="item-tpl">{{ list.cost_money * 1 }}{{ list._cost_money_type }}</view>
+			</view>
+			<view class="flex list-item">
+				<view class="item-name">所需幸运值</view>
+				<view class="item-tpl">{{ list.cost_times }}</view>
+			</view>
+			<view class="flex list-item" v-if="list.stand_money > 0">
+				<view class="item-name">质押FIL数量(用户自行支付)</view>
+				<view class="item-tpl">{{ list.stand_money * 1 }}</view>
+			</view>
+			<view class="flex list-item">
+				<view class="item-name">托管运维费</view>
+				<view class="item-tpl">{{ list.service_ratio }}%</view>
+			</view>
+			<view class="flex list-item">
+				<view class="item-name">上架期</view>
+				<view class="item-tpl">{{ list.stand_time }}天</view>
+			</view>
+			<!-- <view class="flex list-item">
+				<view class="item-name">封装期</view>
+				<view class="item-tpl">{{list.first_step_time}}</view>
+			</view> -->
+			<view class="flex list-item">
+				<view class="item-name">合约期</view>
+				<view class="item-tpl">{{ list.first_step_time + list.second_step_time}}天 + {{list.third_step_time}}天</view>
+			</view>
+			<view class="flex list-item">
+				<view class="item-name">电费</view>
+				<view class="item-tpl">{{list.elect_fee|keept}}元/天</view>
+			</view>
+			<!-- <view class="tpl" v-if="list.stand_money > 0">需完成应质押的FIL后,才能开始进入50天封装期</view> -->
+			<view class="num-box flex">
+				<view class="num-title" v-if="list.get_money_type == 'BZZ'">购买数量({{ list.step * 1 }}节点)</view>
+				<view class="num-title" v-else>购买数量({{ list.step * 1 }}T)</view>
+				<uni-number-box class="step" :value="num" :disabled="false" @eventChange="numberChange"></uni-number-box>
+			</view>
+			<view class="flex money-box">
+				<view class="money-name">购买总数</view>
+				<view class="money-num" v-if="list.get_money_type == 'BZZ'">{{ list.step * 1 * num}}节点</view>
+				<view class="money-num" v-else>{{ list.step * 1 * num}}T</view>
+			</view>
+			<view class="flex money-box">
+				<view class="money-name">金额</view>
+				<view class="money-num">{{ money * 1 }}{{ list._cost_money_type }}</view>
+			</view>
+			<!-- 交易密码 -->
+			<!-- <view class="flex money-box">
+				<view class="money-name">交易密码</view>
+				<view class="money-num"><input class="input-box" type="password" v-model="password" placeholder="请输入交易密码" /></view>
+			</view> -->
+			<view class="pay-box">支付方式:{{ list._cost_money_type }}</view>
+			<!-- <view class="list-title">IPFS独享算力包-1T</view> -->
+<!-- 			<view class="tips">说明:</view>
+			<view class="explain"><rich-text :nodes="list.detail"></rich-text></view> -->
+			<view class="check_box flex_item">
+				<view><radio style="transform: scale(0.75)" @click="Getcheckbox" color="#60BAB0" :checked="checked" /></view>
+				<view class="">
+					请阅读并同意
+					<text @click="ToIndex">《矿机租赁协议》</text>
+				</view>
+			</view>
+			<view class="submit-box">
+				<view class="submit" @click="pay()">{{ type == 3 ? '立即质押' : '立即购买' }}</view>
+			</view>
+		</view>
+		<!-- 交易密码框 -->
+		<view class="curtain" :class="{'ishiden':isHiden}" @touchmove.stop.prevent="moveHandle">
+			<view class="psw-wrapper">
+				<view class="psw-title">请输入支付密码</view>
+				<input type="password" v-model="password" class="psw-ipt"/>
+				<view class="psw-btn">
+					<text @click="cancel">取消</text>
+					<text class="psw-qd" @click="pswQd">确定</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+import { miningDateils, buyMining } from '@/api/market.js';
+import uniNumberBox from '@/components/uni-number-box.vue';
+export default {
+	components: {
+		uniNumberBox
+	},
+	data() {
+		return {
+			id: '',
+			type: '',
+			num: 1,
+			step: 0,
+			password: '',
+			
+			price: '',
+			list: {
+				
+			},
+			checked: false,
+			isHiden: true
+		};
+	},
+	filters: {
+		Keept(value) {
+			if(!value) {
+				return '0.00'
+			}
+			value = Math.round(value* 100)/100;
+			return value
+		}
+	},
+	onLoad(option) {
+		// this.list = JSON.parse(option.list)
+		// console.log(this.list)
+		this.id = option.id;
+		this.type = option.type;
+		
+		this.loadData();
+	},
+	
+	computed: {
+		money() {
+			return this.num * this.price *this.step ;
+		}
+	},
+	onShow() {},
+	methods: {
+		async loadData() {
+			let obj = this;
+			miningDateils({}, obj.id).then(({ data }) => {
+				obj.list = data;
+				// obj.money = obj.list.cost_money;
+				obj.price = obj.list.cost_money;
+				obj.step = obj.list.step;
+			});
+		},
+		//阅读并同意
+		Getcheckbox() {
+			let obj = this;
+			obj.checked = !obj.checked;
+		},
+		ToIndex() {
+			uni.navigateTo({
+				url: '/pages/finance/xieyi'
+			});
+		},
+		pay() {
+			let obj = this;
+			// if (obj.password == '') {
+			// 	obj.$api.msg('请输入交易密码!');
+			// 	return;
+			// }
+			if (obj.checked == false) {
+				obj.$api.msg('请阅读并同意协议!');
+				return;
+			}
+			console.log()
+			if (obj.list.cost_times > (obj.list.luck_point - obj.list.exchange_point)) {
+				obj.$api.msg('所需荣誉值不足!');
+				return;
+			}
+			//弹出输入交易密码
+			this.isHiden = false
+			// buyMining(
+			// 	{
+			// 		num: obj.num * obj.step,
+			// 		trade_psw: obj.password
+			// 	},
+			// 	obj.id
+			// )
+			// 	.then(data => {
+			// 		obj.$api.msg(data.msg);
+			// 		obj.password = '';
+			// 		obj.num = 1;
+			// 	})
+			// 	.catch(e => {
+			// 		obj.password = '';
+			// 		obj.num = 1;
+			// 		if (e.msg == '交易密码错误') {
+			// 			return;
+			// 		}
+			// 		console.log(e);
+			// 		var reg = new RegExp('购买矿机所需的');
+			// 		if (e.msg.match(reg) == -1) {
+			// 		} else {
+			// 			setTimeout(function() {
+			// 				uni.navigateTo({
+			// 					url: '/pages/finance/recharge'
+			// 				});
+			// 			}, 1000);
+			// 		}
+			// 	});
+		},
+		numberChange(data) {
+			let obj = this;
+			obj.num = data.number;
+		},
+		cancel() {
+			this.password = ''
+			this.isHiden = true
+		},
+		pswQd() {
+			let obj = this;
+			if( obj.password === '' ) {
+				obj.$api.msg('请输入交易密码!');
+				return
+			}
+			obj.isHiden = true
+			
+			
+			buyMining(
+				{
+					num: obj.num * obj.step,
+					trade_psw: obj.password
+				},
+				obj.id
+			)
+				.then(data => {
+					obj.$api.msg(data.msg);
+					obj.password = '';
+					obj.num = 1;
+					setTimeout(function() {
+						uni.navigateTo({
+							url: '/pages/calculation/myCalculation'
+						});
+					}, 1500);
+				})
+				.catch(e => {
+					obj.password = '';
+					obj.num = 1;
+					if (e.msg == '交易密码错误') {
+						return;
+					}
+					console.log(e);
+					var reg = new RegExp('购买矿机所需的');
+					if (e.msg.match(reg) == -1) {
+					} else {
+						setTimeout(function() {
+							uni.navigateTo({
+								url: '/pages/finance/recharge'
+							});
+						}, 1500);
+					}
+				});
+		},
+		moveHandle() {}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+page {
+	min-height: 100%;
+	background-color: #ffffff;
+	.container {
+		width: 100%;
+	}
+}
+.list-box {
+	background: linear-gradient(90deg, #60BAB0, #60BAB0, #45969B);
+	width: 100%;
+	height: 200rpx;
+}
+.list {
+	margin: 0rpx 31rpx;
+	padding: 45rpx 35rpx;
+	background-color: #ffffff;
+	border-radius: 15rpx;
+	position: relative;
+	top: -100rpx;
+	.list-title {
+		font-size: 34rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 35rpx;
+	}
+	.list-item {
+		font-size: 24rpx;
+		font-weight: 500;
+		color: #666666;
+		padding-bottom: 35rpx;
+		.item-tpl {
+			font-size: 24rpx;
+			font-weight: bold;
+			color: #333333;
+		}
+		.tpls {
+			color: #faba38;
+		}
+	}
+	.tpl {
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #faba38;
+		padding-bottom: 98rpx;
+	}
+	.num-box {
+		font-size: 30rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 83rpx;
+	}
+	.money-box {
+		font-size: 32rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 102rpx;
+		.money-num {
+			font-weight: bold;
+			.input-box {
+				text-align: right;
+			}
+		}
+	}
+	.pay-box {
+		font-size: 32rpx;
+		font-weight: 500;
+		color: #333333;
+		padding-bottom: 60rpx;
+	}
+	.tips {
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #60BAB0;
+		padding-bottom: 25rpx;
+	}
+	.explain {
+		word-wrap: break-word;
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #666666;
+		line-height: 38rpx;
+	}
+}
+.submit-box {
+	.submit {
+		background-color: #60BAB0;
+		color: #ffffff;
+		text-align: center;
+		padding: 25rpx 0rpx;
+		border-radius: 50rpx;
+	}
+}
+.check_box {
+	padding: 25rpx 25rpx;
+	font-size: 28rpx;
+	padding-bottom: 60rpx;
+	text {
+		color: #60BAB0;
+	}
+}
+.curtain {
+	position: fixed;
+	width: 100%;
+	height: 100%;
+	top: 0;
+	background-color: rgba($color: #000000, $alpha: 0.2);
+	.psw-wrapper {
+		position: fixed;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%,-100%);
+		width: 548.6rpx;
+		height: 344.4rpx;
+		background-color: #FFFFFF;
+		border-radius: 15rpx 15rpx;
+		.psw-title {
+			width: 100%;
+			font-size: 35rpx;
+			padding: 43rpx 0 49rpx;
+			text-align: center;
+			font-weight: 800;
+		}
+		.psw-ipt {
+			display: block;
+			background-color: #dce3ed;
+			height: 90rpx;
+			width: 464rpx;
+			padding-left: 30rpx;
+			margin: 0 auto;
+			font-size: 80rpx;
+		}
+		.psw-btn text{
+			display: inline-block;
+			text-align: center;
+			width: 50%;
+			padding-top: 29rpx;
+			font-size: 35rpx;
+		}
+		.psw-qd {
+			color:#60BAB0;
+		}
+	}
+}
+.ishiden {
+	display: none;
+}
+</style>

+ 3 - 3
pages/money/paySuccess.vue

@@ -4,7 +4,7 @@
 		<text class="tit" v-if="type == 1">订单支付成功</text>
 		<text class="tit" v-else>订单预约成功</text>
 		<view class="btn-group">
-			<navigator url="/pages/index/node" open-type="redirect" class="mix-btn" v-if="type == 1">我的节点</navigator>
+			<navigator url="/pages/user/fulilist" open-type="redirect" class="mix-btn" v-if="type == 1">继续兑换</navigator>
 			<navigator url="/pages/assets/myPing" open-type="redirect" class="mix-btn" v-else>我的拼购</navigator>
 			<navigator url="/pages/index/index" open-type="switchTab" class="mix-btn hollow">返回首页</navigator>
 		</view>
@@ -15,7 +15,7 @@
 	export default {
 		data() {
 			return {
-				type: 2//1为节点支付成功2为预购成功
+				type: 2//1为兑换支付成功2为预购成功
 			}
 		},
 		onLoad(opt) {
@@ -26,7 +26,7 @@
 			}
 			if (this.type == 1){
 				uni.setNavigationBarTitle({
-				  title:"支付成功"
+				  title:"兑换成功"
 				})
 			}
 			if (this.type == 2) {

+ 4 - 12
pages/money/payment.vue

@@ -7,7 +7,7 @@
 			</view>
 			<view class="list-cell flex_item">
 				<view class="cell-name">新密码</view>
-				<input type="password" v-model="password" placeholder="请输入不小于6位数的密码" />
+				<input type="password" v-model="password" placeholder="请输入6位数的密码" />
 			</view>
 			<view class="list-cell flex_item">
 				<view class="cell-name">重复密码</view>
@@ -40,8 +40,9 @@ export default {
 	},
 	onLoad(){
 		let userInfo = uni.getStorageSync('userInfo') || '';
-		console.log(userInfo)
-		this.phone = userInfo.phone
+		this.phone = userInfo.account
+		
+		
 	},
 	onShow() {
 		
@@ -95,15 +96,6 @@ export default {
 		//发送验证码
 		verification() {
 			let obj = this;
-			console.log(obj.phone)
-			if (this.phone == '') {
-				this.$api.msg('请输入电话号码');
-				return;
-			}
-			if (this.phone.length < 11) {
-				this.$api.msg('请输入正确的手机号');
-				return;
-			}
 			// 判断是否在倒计时
 			if (obj.countDown > 0) {
 				return false;

+ 16 - 9
pages/public/forget.vue

@@ -1,11 +1,11 @@
 <template>
 	<view class="container">
 		<view class="logo-img"><image src="../../static/img/log.png" mode=""></image></view>
-		<view class="logo">LOGO</view>
+		<view class="logo">LALA</view>
 		<view class="login_text">
 			<view class="login_input flex_item">
 				<view class="login_img"><image class="phone" src="/static/img/phone.png"></image></view>
-				<view class="login_name"><input class="uni-input" type="number" v-model="phone" focus placeholder="请输入手机号码" /></view>
+				<view class="login_name"><input class="uni-input" type="text" v-model="phone" focus placeholder="请输入邮箱" /></view>
 			</view>
 			<view class="login_input flex_item">
 				<view class="login_img"><image src="/static/img/password.png"></image></view>
@@ -53,11 +53,11 @@ export default {
 		updatalogin() {
 			let obj = this;
 			if (obj.phone == '') {
-				obj.$api.msg('请输入手机号码');
+				obj.$api.msg('请输入邮箱');
 				return;
 			}
-			if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(obj.phone)) {
-				obj.$api.msg('请输入正确的手机号');
+			if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(obj.phone)) {
+				obj.$api.msg('请输入正确的邮箱');
 				return;
 			}
 			if (obj.password == '') {
@@ -97,11 +97,11 @@ export default {
 		verification() {
 			let obj = this;
 			if (this.phone == '') {
-				this.$api.msg('请输入电话号码');
+				this.$api.msg('请输入邮箱号码');
 				return;
 			}
-			if (this.phone.length < 11) {
-				this.$api.msg('请输入正确的手机号');
+			if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(obj.phone)) {
+				obj.$api.msg('请输入正确的邮箱');
 				return;
 			}
 			// 判断是否在倒计时
@@ -117,7 +117,14 @@ export default {
 					phone: obj.phone,
 					type: 'login'
 				})
-					.then(({ data }) => {})
+					.then(({ data }) => {
+						uni.showToast({
+							title: '验证码已发送',
+							duration: 2000,
+							position: 'top',
+							icon: 'none'
+						});
+					})
 					.catch(err => {
 						console.log(err);
 					});

+ 5 - 3
pages/public/login.vue

@@ -4,7 +4,7 @@
 		<view class="loginText">请使用您的账号登录</view>
 		<view class="login-box">
 			<view class="username">账号</view>
-			<input class="input-box" type="number" v-model="phone" placeholder="请输入账号" />
+			<input class="input-box" type="text" v-model="phone" placeholder="请输入账号" />
 		</view>
 		<view class="login-box">
 			<view class="username">密码</view>
@@ -34,7 +34,9 @@ export default {
 			password: '',
 		};
 	},
-	onLoad() {},
+	onLoad() {
+		uni.hideLoading();
+	},
 	
 	methods: {
 		...mapMutations('user', ['setUserInfo', 'login']),
@@ -46,7 +48,7 @@ export default {
 			let obj = this;
 			obj.logining = true;
 			if (obj.phone == '') {
-				obj.$api.msg('请输入手机号');
+				obj.$api.msg('请输入邮箱');
 				return;
 			}
 			if (obj.password == '') {

+ 14 - 3
pages/public/register.vue

@@ -20,7 +20,7 @@
 		</view>
 		<view class="login-box">
 			<view class="username">交易密码</view>
-			<input class="input-box" type="password" v-model="payPass" placeholder="请输入交易密码" />
+			<input class="input-box" type="password" v-model="payPass" placeholder="请输入6位数的交易密码" />
 		</view>
 		<view class="login-box">
 			<view class="username">邀请码</view>
@@ -73,7 +73,11 @@ export default {
 				return;
 			}
 			if (obj.payPass == '') {
-				obj.$api.msg('请输入支付密码');
+				obj.$api.msg('请输入交易密码');
+				return;
+			}
+			if (obj.payPass.length != 6) {
+				obj.$api.msg('请输入交易密码只能为6位数');
 				return;
 			}
 			if (obj.code == '') {
@@ -129,7 +133,14 @@ export default {
 					phone: obj.phone,
 					type: 'register'
 				})
-					.then(({ data }) => {})
+					.then(({ data }) => {
+						uni.showToast({
+							title: '验证码已发送',
+							duration: 2000,
+							position: 'top',
+							icon: 'none'
+						});
+					})
 					.catch(err => {
 						console.log(err);
 					});

+ 0 - 208
pages/set/address.vue

@@ -1,208 +0,0 @@
-<template>
-	<view class="content b-t">
-		<view class="list" v-for="(item, index) in addressList" :key="index" @click="checkAddress(item)">
-			<view class="wrapper">
-				<view class="address-box">
-					<text class="name">{{ item.real_name }}</text>
-					<text class="mobile">{{ item.phone }}</text>
-				</view>
-				<view class="u-box">
-					<text class="address">{{ item.province + item.city + item.district }} {{ item.detail }}</text>
-				</view>
-			</view>
-			<view class="buttom">
-				<view class="default-buttom" @click.stop="defaultUp(item,index)">
-					<view class="iconfont iconroundcheckfill checkbox" :class="{ checked: item.is_default == 1 }"></view>
-					<text class="text">设为默认地址</text>
-				</view>
-				<view class="operation">
-					<view @click.stop="addAddress('edit', item)">
-						<text class="iconfont iconedit"></text>
-						<text class="text">编辑</text>
-					</view>
-					<view class="blank"></view>
-					<view @click.stop="delAddress(item)">
-						<text class="iconfont icondelete"></text>
-						<text class="text">删除</text>
-					</view>
-				</view>
-			</view>
-		</view>
-		<button class="add-btn" @click="addAddress('add')">新增地址</button>
-	</view>
-</template>
-
-<script>
-import { getAddressList,setAddressDefault,addressDel } from '@/api/user.js';
-export default {
-	data() {
-		return {
-			source: 0,
-			addressList: []
-		};
-	},
-	onLoad(option) {
-		this.source = option.source||0
-		this.loadAddress();
-	},
-	methods: {
-		// 加载地址
-		loadAddress() {
-			getAddressList({
-				page: 1,
-				limit: 100
-			}).then(({ data }) => {
-				this.addressList = data;
-			});
-		},
-		// 设为默认地址
-		defaultUp(data,ind) {
-			this.addressList=this.addressList.map((e) => {
-				e.is_default=0
-				return e
-			})
-			this.addressList[ind].is_default=1
-			setAddressDefault({
-				id: data.id
-			}).then(({ data }) => {
-				this.loadAddress();
-			}).catch((e) => {
-				console.log(e);
-			});
-		},
-		//删除地址
-		delAddress(item) {
-			addressDel({
-				id:item.id
-			}).then(({data})=>{
-				this.$api.msg('删除成功')
-			})
-			let s = this.addressList.indexOf(item);
-			this.addressList.splice(s, 1);
-		},
-		//选择地址
-		checkAddress(item) {
-			if (this.source == 1) {
-				//this.$api.prePage()获取上一页实例,在App.vue定义
-				this.$api.prePage().addressData = item;
-				uni.navigateBack();
-			}
-		},
-		// 添加地址
-		addAddress(type, item) {
-			uni.navigateTo({
-				url: `/pages/set/addressManage?type=${type}&data=${JSON.stringify(item)}`
-			});
-		},
-		//添加或修改成功之后回调
-		refreshList() {
-			// 重新加载地址
-			this.loadAddress()
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	padding-bottom: 120rpx;
-	padding-top: 20rpx;
-	background-color: $page-color-base;
-}
-.content {
-	position: relative;
-}
-.list {
-	align-items: center;
-	padding: 20rpx 30rpx;
-	background: #fff;
-	margin: 20rpx;
-	margin-top: 0;
-	.buttom {
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		padding-top: 10rpx;
-		.checkbox {
-			font-size: 44rpx;
-			line-height: 1;
-			padding: 4rpx;
-			color: $font-color-disabled;
-			background: #fff;
-			border-radius: 50px;
-		}
-		.checkbox.checked {
-			color: $base-color;
-		}
-		.default-buttom {
-			display: flex;
-			align-items: center;
-		}
-		.operation {
-			display: flex;
-			align-items: center;
-			.blank {
-				width: 30rpx;
-			}
-		}
-		.text {
-			padding-left: 10rpx;
-			font-size: 24rpx;
-			color: #666666;
-		}
-	}
-}
-.wrapper {
-	display: flex;
-	flex-direction: column;
-	flex: 1;
-	border-bottom: 1px solid #f0f0f0;
-	padding-bottom: 20rpx;
-}
-.address-box {
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	.address {
-		font-size: $font-base + 2rpx;
-		color: $font-color-dark;
-	}
-	.mobile {
-		font-size: $font-base;
-		color: rgba(51, 51, 51, 1);
-	}
-}
-.u-box {
-	font-size: $font-base;
-	color: $font-color-light;
-	margin-top: 16rpx;
-	.name {
-		margin-right: 30rpx;
-	}
-}
-.icon-bianji {
-	display: flex;
-	align-items: center;
-	height: 80rpx;
-	font-size: 40rpx;
-	color: $font-color-light;
-	padding-left: 30rpx;
-}
-
-.add-btn {
-	position: fixed;
-	left: 30rpx;
-	right: 30rpx;
-	bottom: 16rpx;
-	z-index: 95;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	width: 690rpx;
-	height: 80rpx;
-	font-size: $font-lg;
-	color: #fff;
-	background-color: $base-color;
-	border-radius: 10rpx;
-}
-</style>

+ 0 - 219
pages/set/addressManage.vue

@@ -1,219 +0,0 @@
-<template>
-	<view class="content">
-		<view class="row b-b">
-			<text class="tit">联系人</text>
-			<input class="input" type="text" v-model="addressData.name" placeholder="收货人姓名" placeholder-class="placeholder" />
-		</view>
-		<view class="row b-b">
-			<text class="tit">手机号</text>
-			<input class="input" type="number" v-model="addressData.mobile" placeholder="收货人手机号码" placeholder-class="placeholder" />
-		</view>
-		<view class="row b-b">
-			<text class="tit">地址</text>
-			<pickerAddress class="input" @change="onCityClick">{{addressDetail||'请选择地址'}}</pickerAddress>
-			<text class="iconfont iconlocation"></text>
-		</view>
-		<view class="row b-b">
-			<text class="tit">门牌号</text>
-			<input class="input" type="text" v-model="addressData.area" placeholder="楼号、门牌" placeholder-class="placeholder" />
-		</view>
-
-		<uni-list class="margin-t-20">
-			<uni-list-item
-				title="设为默认"
-				:switch-checked="addressData.default"
-				:show-switch="true"
-				:show-arrow="false"
-				switch-color="#5dbc7c"
-				@switchChange="switchChange"
-			></uni-list-item>
-		</uni-list>
-
-		<button class="add-btn" @click="confirm">提交</button>
-	</view>
-</template>
-
-<script>
-import uniList from '@/components/uni-list/uni-list.vue';
-import uniListItem from '@/components/uni-list-item/uni-list-item.vue';
-import uniPopup from '@/uview-ui/components/u-popup/u-popup.vue';
-import  pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
-import { addressEdit } from '@/api/user.js';
-export default {
-	components: {
-		uniList,
-		uniListItem,
-		pickerAddress,
-		uniPopup
-	},
-	data() {
-		return {
-			addressDetail: '',
-			addressData: {
-				name: '',
-				mobile: '',
-				address: {
-					province: '',
-					city: '',
-					district: ''
-				},
-				area: '',
-				default: false
-			}
-		};
-	},
-	onLoad(option) {
-		let title = '新增收货地址';
-		if (option.type === 'edit') {
-			title = '编辑收货地址';
-			let data = JSON.parse(option.data);
-			console.log(data);
-
-			this.addressData = {
-				name: data.real_name,
-				mobile: data.phone,
-				address: {
-					province: data.province,
-					city: data.city,
-					district: data.district
-				},
-				area: data.detail,
-				default: data.is_default == 1,
-				id: data.id
-			};
-			this.addressDetail = data.province + data.city + data.district;
-		}
-		this.manageType = option.type;
-		uni.setNavigationBarTitle({
-			title
-		});
-	},
-	methods: {
-		// 选中城市切换
-		onCityClick({data}) {
-			let address = this.addressData.address;
-			address.province = data[0];
-			address.city = data[1];
-			address.district = data[2];
-			this.addressDetail = data.join('');
-		},
-		//地图选择地址
-		chooseLocation() {
-			uni.chooseLocation({
-				success: data => {
-					console.log(data);
-					this.addressData.addressName = data.name;
-					this.addressData.address = data.name;
-				}
-			});
-		},
-		// 设置是否为默认地址
-		switchChange(e) {
-			this.addressData.default = e.value;
-		},
-		//提交
-		confirm() {
-			let obj = this;
-			let data = this.addressData;
-			if (!data.name) {
-				this.$api.msg('请填写收货人姓名');
-				return;
-			}
-			if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(data.mobile)) {
-				this.$api.msg('请输入正确的手机号码');
-				return;
-			}
-			if (!data.address) {
-				this.$api.msg('请在地图选择所在位置');
-				return;
-			}
-			if (!data.area) {
-				this.$api.msg('请填写门牌号信息');
-				return;
-			}
-
-			//this.$api.prePage()获取上一页实例,可直接调用上页所有数据和方法,在App.vue定义
-			addressEdit({
-				real_name: data.name,
-				phone: data.mobile,
-				address: {
-					province: data.address.province,
-					city: data.address.city,
-					district: data.address.district
-				},
-				detail: data.area,
-				is_default: data.default,
-				id: data.id||"",
-				type:1
-			}).then(function(e) {
-				obj.$api.prePage().refreshList();
-				uni.showToast({
-					title:'提交成功',
-					duration:2000
-				});
-				setTimeout(function() {
-					uni.navigateBack();
-				}, 800);
-			});
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	background: $page-color-base;
-	padding-top: 16rpx;
-}
-
-.row {
-	display: flex;
-	align-items: center;
-	position: relative;
-	padding: 0 30rpx;
-	height: 110rpx;
-	background: #fff;
-
-	.tit {
-		flex-shrink: 0;
-		width: 120rpx;
-		font-size: 30rpx;
-		color: $font-color-dark;
-	}
-	.input {
-		flex: 1;
-		font-size: 30rpx;
-		color: $font-color-dark;
-	}
-	.iconlocation {
-		font-size: 36rpx;
-		color: $font-color-light;
-	}
-}
-.default-row {
-	margin-top: 16rpx;
-	.tit {
-		flex: 1;
-	}
-	switch {
-		transform: translateX(16rpx) scale(0.9);
-	}
-}
-.add-btn {
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	width: 690rpx;
-	height: 80rpx;
-	margin: 60rpx auto;
-	font-size: $font-lg;
-	color: #fff;
-	background-color: $base-color;
-	border-radius: 10rpx;
-	// box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
-}
-
-.alert-box {
-	background-color: #ffffff;
-}
-</style>

+ 23 - 13
pages/set/password.vue

@@ -1,15 +1,15 @@
 <template>
 	<view class="container">
 		<view class="logo-img"><image src="../../static/img/log.png" mode=""></image></view>
-		<view class="logo">LOGO</view>
+		<view class="logo">LALA</view>
 		<view class="login_text">
 			<view class="login_input flex_item">
 				<view class="login_img"><image class="phone" src="/static/img/phone.png"></image></view>
-				<view class="login_name"><input class="uni-input" type="number" v-model="phone" focus placeholder="请输入手机号码" /></view>
+				<view class="login_name"><input class="uni-input" type="text" disabled="true" v-model="phone" focus placeholder="请输入邮箱" /></view>
 			</view>
 			<view class="login_input flex_item">
 				<view class="login_img"><image src="/static/img/password.png"></image></view>
-				<view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder=" 请输入新的不少于6位的密码" /></view>
+				<view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder=" 请输入新的密码" /></view>
 			</view>
 			<view class="login_input flex_item">
 				<view class="login_img"><image src="/static/img/password.png"></image></view>
@@ -40,7 +40,10 @@ export default {
 			countDown: 0 //倒计时
 		};
 	},
-	onLoad() {},
+	onLoad() {
+		let userInfo = uni.getStorageSync('userInfo') || '';
+		this.phone = userInfo.account
+	},
 	watch: {
 		// 监听倒计时
 		countDown(i) {
@@ -52,14 +55,14 @@ export default {
 	methods: {
 		updatalogin() {
 			let obj = this;
-			if (obj.phone == '') {
-				obj.$api.msg('请输入手机号码');
-				return;
-			}
-			if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(obj.phone)) {
-				obj.$api.msg('请输入正确的手机号');
-				return;
-			}
+			// if (obj.phone == '') {
+			// 	obj.$api.msg('请输入邮箱');
+			// 	return;
+			// }
+			// if (!/^([a-zA-Z]|[0-9])(\w|\-|\.)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(obj.phone)) {
+			// 	obj.$api.msg('请输入正确的邮箱');
+			// 	return;
+			// }
 			if (obj.password == '') {
 				obj.$api.msg('请输入密码');
 				return;
@@ -117,7 +120,14 @@ export default {
 					phone: obj.phone,
 					type: 'login'
 				})
-					.then(({ data }) => {})
+					.then(({ data }) => {
+						uni.showToast({
+							title: '验证码已发送',
+							duration: 2000,
+							position: 'top',
+							icon: 'none'
+						});
+					})
 					.catch(err => {
 						console.log(err);
 					});

+ 0 - 161
pages/set/phone.vue

@@ -1,161 +0,0 @@
-<template>
-	<view class="container">
-		<view class="row b-b">
-			<text class="tit">手机号</text>
-			<input class="input" v-model="account" type="text" placeholder="请填写手机号" placeholder-class="placeholder" />
-		</view>
-		<view>
-			<view class="row b-b">
-				<text class="tit">验证码</text>
-				<input class="input" v-model="captcha" type="text" placeholder="请填写验证码" placeholder-class="placeholder" />
-				<view class="code" @click="verification">{{ countDown == 0 ? '验证码' : countDown }}</view>
-			</view>
-			<button class="add-btn" :class="{ 'bg-gray': loding }" @click="loding ? '' : confirm()">提交</button>
-		</view>
-	</view>
-</template>
-
-<script>
-import { verify } from '@/api/login.js';
-import { mapState } from 'vuex';
-import { registerReset, binding } from '@/api/set.js';
-export default {
-	data() {
-		return {
-			time: '', //保存倒计时对象
-			countDown: 0, //倒计时
-			account: '', //手机号
-			captcha: '', //验证码
-			password: '', //新密码
-			loding: false //是否载入中
-		};
-	},
-	watch: {
-		// 监听倒计时
-		countDown(i) {
-			if (i == 0) {
-				clearInterval(this.time);
-			}
-		}
-	},
-	computed: {
-		...mapState(['userInfo'])
-	},
-	onLoad() {
-		if (this.userInfo.phone == null) {
-			this.account = '';
-		} else {
-			this.account = this.userInfo.phone;
-			this.show = false;
-		}
-	},
-	methods: {
-		//发送验证码
-		verification() {
-			let obj = this;
-			if (this.account == '') {
-				this.$api.msg('请输入电话号码');
-				return;
-			}
-			if (!/(^1[3|4|5|7|8][0-9]{9}$)/.test(this.account)) {
-				this.$api.msg('请输入正确的手机号');
-				return;
-			}
-			// 判断是否在倒计时
-			if (obj.countDown > 0) {
-				return false;
-			} else {
-				obj.countDown = 60;
-				obj.time = setInterval(() => {
-					obj.countDown--;
-				}, 1000);
-				//调用验证码接口
-				verify({
-					phone: obj.account,
-					type: 'BDING_CODE'
-				})
-					.then(({ data }) => {})
-					.catch(err => {
-						console.log(err);
-					});
-			}
-		},
-		confirm(e) {
-			let obj = this;
-			obj.loding = true;
-			binding({
-				phone: obj.account,
-				captcha: obj.captcha
-			})
-				.then(({ data }) => {
-					obj.$api.msg('绑定成功!');
-					setTimeout(function() {
-						obj.loding = false;
-						uni.switchTab({
-							url: '/pages/user/user'
-						});
-					}, 1000);
-				})
-				.catch(err => {
-					obj.loding = false;
-					console.log(err);
-				});
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	background: $page-color-base;
-}
-.row {
-	display: flex;
-	align-items: center;
-	position: relative;
-	padding: 0 30rpx;
-	height: 110rpx;
-	background: #fff;
-
-	.tit {
-		flex-shrink: 0;
-		width: 120rpx;
-		font-size: 30rpx;
-		color: $font-color-dark;
-	}
-	.input {
-		flex: 1;
-		font-size: 30rpx;
-		color: $font-color-dark;
-	}
-	.iconlocation {
-		font-size: 36rpx;
-		color: $font-color-light;
-	}
-}
-.add-btn {
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	width: 690rpx;
-	height: 80rpx;
-	margin: 60rpx auto;
-	font-size: $font-lg;
-	color: #fff;
-	background-color: $base-color;
-	border-radius: 10rpx;
-	// box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
-}
-
-.bg-gray {
-	background-color: $color-gray;
-}
-.code {
-	color: #5dbc7c;
-	font-size: 23rpx;
-	border-left: 1px solid #eeeeee;
-	width: 150rpx;
-	flex-shrink: 0;
-	text-align: center;
-}
-</style>

+ 0 - 113
pages/set/set.vue

@@ -1,113 +0,0 @@
-<template>
-	<view class="container">
-		<uni-list>
-		    <uni-list-item title="个人资料" @click="navTo('/pages/set/userinfo')" ></uni-list-item>
-			<uni-list-item title="修改密码" @click="navTo('/pages/set/password')" ></uni-list-item>
-		    <uni-list-item title="实名认证" @click="navTo('/pages/set/phone')" ></uni-list-item>
-		    <uni-list-item title="收货地址" @click="navTo('/pages/set/address')" ></uni-list-item>
-		</uni-list>
-		<uni-list class="margin-t-20">
-		    <uni-list-item title="消息推送" :switch-checked='true' :show-switch="true" :show-arrow="false" switch-color='#5dbc7c'  @switchChange='switchChange'> 
-			</uni-list-item>
-		</uni-list>
-		
-		<uni-list class="margin-t-20">
-		    <uni-list-item title="清除缓存" ></uni-list-item>
-		    <uni-list-item title="检查更新" >
-				<template slot="right">
-					当前版本 1.0.3
-				</template>
-			</uni-list-item>
-		</uni-list>
-		<view class="list-cell log-out-btn" @click="toLogout">
-			<text class="cell-tit">退出登录</text>
-		</view>
-	</view>
-</template>
-
-<script>
-	import uniList from "@/components/uni-list/uni-list.vue"
-	import uniListItem from "@/components/uni-list-item/uni-list-item.vue"
-	import { logout } from '@/api/set.js';
-	import {  
-	    mapMutations  
-	} from 'vuex';
-	export default {
-		components: {
-			uniList,uniListItem
-		},
-		data() {
-			return {
-				
-			};
-		},
-		methods:{
-			...mapMutations('user',['logout']),
-			navTo(url){
-				uni.navigateTo({
-					url:url
-				})
-			},
-			//退出登录
-			toLogout(){
-				let obj = this;
-				uni.showModal({
-				    content: '确定要退出登录么',
-				    success: (e)=>{
-				    	if(e.confirm){
-							logout({}).then((e) => {
-								uni.navigateBack();
-							}).catch((e) => {
-								console.log(e);
-							})
-				    		obj.logout();
-				    	}
-				    }
-				});
-			},
-			//switch切换触发方法
-			switchChange(e){
-				console.log(e);
-				let statusTip = e.value ? '打开': '关闭';
-				this.$api.msg(`${statusTip}消息推送`);
-			},
-
-		}
-	}
-</script>
-
-<style lang='scss'>
-	page{
-		background: $page-color-base;
-	}
-	.list-cell{
-		display:flex;
-		align-items:baseline;
-		padding: 20rpx $page-row-spacing;
-		line-height:60rpx;
-		position:relative;
-		background: #fff;
-		justify-content: center;
-		&.log-out-btn{
-			margin-top: 40rpx;
-			.cell-tit{
-				color: $uni-color-primary;
-				text-align: center;
-				margin-right: 0;
-			}
-		}
-		.cell-tit{
-			flex: 1;
-			font-size: $font-base + 2rpx;
-			color: $font-color-dark;
-			margin-right:10rpx;
-		}
-		.cell-tip{
-			font-size: $font-base;
-			color: $font-color-light;
-		}
-		switch{
-			transform: translateX(16rpx) scale(.84);
-		}
-	}
-</style>

+ 1 - 1
pages/set/userinfo.vue

@@ -14,7 +14,7 @@
 		</view>
 		<view class="row">
 			<text class="tit">账户</text>
-			<input class="input" type="text"  disabled="true" v-model="userInfo.phone" placeholder-class="placeholder" />
+			<input class="input" type="text"  disabled="true" v-model="userInfo.account" placeholder-class="placeholder" />
 		</view>
 		<view class="add-btn" @click="confirm">提交</view>
 		<view class="out" @click="toLogout">退出登录</view>

+ 0 - 310
pages/user/coupon.vue

@@ -1,310 +0,0 @@
-<template>
-	<view class="content">
-		<view class="navbar">
-			<view v-for="(item,index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
-		</view>
-		<swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
-			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
-				<!-- 空白页 -->
-				<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
-				<view v-for="(item, index) in tabItem.orderList" :key="index" class="row flex">
-					<view class="list-money flex">
-						<image :src="item._type == 2 ? '/static/img/img03.png' : '/static/img/img02.png'" mode="scaleToFill"></image>
-						<view class="list-money-text">
-							<view class="tit" :class="{ action: item._type} == 2">
-								<text>{{ item.coupon_price }}</text>
-							</view>
-							<view class="price">
-								<text>满{{ item.use_min_price }}元</text>
-							</view>
-						</view>
-					</view>
-					<view class="list-interval position-relative">
-						<view class="bottom"></view>
-						<view class="top"></view>
-					</view>
-					<view class="row_list_right">
-						<view class="right_top">
-							<text class="right_title" :class="{ action: item._type == 2}">{{ item.coupon_title }}</text>
-						</view>
-						<view class="right_time">
-							<text>{{ item._add_time }}-{{ item.end_time }}</text>
-						</view>
-						<view class="right_use action" v-if="item._type == 2">
-							<text>{{ item._msg }}</text>
-						</view>
-						<view class="right_use noAction" v-if="item._type == 0">
-							<text>{{ item._msg }}</text>
-						</view>
-					</view>
-				</view>
-				<uni-load-more :status="tabItem.loadingType"></uni-load-more>
-			</swiper-item>
-		</swiper>
-	</view>
-</template>
-
-<script>
-import uniLoadMore from '@/uview-ui/components/u-loadmore/u-loadmore.vue';
-import empty from '@/uview-ui/components/u-empty/u-empty.vue';
-// import { getCouponsList } from '@/api/order.js';
-export default{
-	components: {
-		uniLoadMore,
-		empty
-	},
-	data() {
-		return {
-			tabCurrentIndex: 0,
-			navList:[
-				{
-					state: 0,
-					text: '全部',
-					loadingType: 'more',
-					orderList: [],
-					page: 1,//当前页数
-					limit: 10 //每次信息条数
-				},
-				{
-					state: 1,
-					text: '未使用',
-					loadingType: 'more',
-					orderList: [],
-					page: 1, //当前页数
-					limit: 10 //每次信息条数
-				},
-				{
-					state: 2,
-					text: '已使用',
-					loadingType: 'more',
-					orderList: [],
-					page: 1,//当前页数
-					limit: 10 //每次信息条数
-				}
-			]
-		};
-	},
-	onLoad(options) {
-		this.loadData();
-	},
-	methods: {
-		//返回首页
-		navTo(){
-			uni.switchTab({
-				url: '/pages/index/index'
-			});
-		},
-		//获取订单列表
-		loadData(source) {
-			//将订单挂载到tab列表下
-			let index = this.tabCurrentIndex;
-			let navItem = this.navList[index];
-			let state = navItem.state;
-			if (source === 'tabChange' && navItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return;
-			}
-			if (navItem.loadingType === 'loading'){
-				//防止重复加载
-				return;
-			}
-			//修改当前对象状态为加载中
-			navItem.loadingType = 'loading';
-			getCouponsList(
-				{
-					page: navItem.page,
-					limit: navItem.limit
-				},
-				index
-			)
-				.then(({ data }) => {
-					let da = data.map(e => {
-						e.coupon_price = +e.coupon_price.replace(',', '');
-						e.use_min_price = +e.use_min_price.replace(',', '');
-						return e
-					});
-					navItem.orderList = navItem.orderList.concat(da);
-					console.log(navItem.orderList);
-					navItem.page++;
-					if (navItem.limit == data.length) {
-						// 判断是否还有数据,有改为more,没有改为noMore
-						navItem.loadingType = 'more';
-						return;
-					}else {
-						navItem.loadingType = 'noMore';
-					}
-					uni.hideLoading();
-					this.$set(navItem, 'loaded', true);
-				})
-				.catch(e => {
-					console.log(e);
-				})
-		},
-		//swiper 切换
-		changeTab(e) {
-			this.tabCurrentIndex = e.target.current;
-			this.loadData('tabChange');
-		},
-		//顶部tab点击
-		tabClick(index) {
-			this.tabCurrentIndex = index;
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-// 卡卷可用时颜色
-$card-color-action: #fc4141;
-page,
-.content {
-	background: $page-color-base;
-	height: 100%;
-}
-
-.navbar {
-	display: flex;
-	height: 40px;
-	padding: 0 5px;
-	background: #fff;
-	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
-	position: relative;
-	z-index: 10;
-	.nav-item {
-		flex: 1;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		height: 100%;
-		font-size: 15px;
-		color: $font-color-dark;
-		position: relative;
-		&.current {
-			color: #bc253a;
-			&:after {
-				content: '';
-				position: absolute;
-				left: 50%;
-				bottom: 0;
-				transform: translateX(-50%);
-				width: 44px;
-				height: 0;
-				border-bottom: 2px solid #bc253a;
-			}
-		}
-	}
-}
-
-.swiper-box {
-	height: calc(100% - 40px);
-	.tab-content {
-		padding: 25rpx 0px;
-		font-size: 28rpx;
-		color: #1b1b1b;
-	}
-}
-
-.row {
-	border-radius: 15rpx;
-	margin: 0 25rpx;
-	margin-bottom: 25rpx;
-	height: 200rpx;
-	overflow: hidden;
-	background-color: #ffffff;
-	.list-interval {
-		border: 1px dashed $border-color-light;
-		height: 100%;
-		.top,
-		.bottom {
-			border-radius: 100rpx;
-			width: 30rpx;
-			height: 30rpx;
-			position: absolute;
-			background-color: $page-color-base;
-			right: -15rpx;
-		}
-		.top {
-			top: -18rpx;
-		}
-		.bottom {
-			bottom: -18rpx;
-		}
-	}
-	.list-money {
-		height: 100%;
-		image {
-			height: 100%;
-			width: 20rpx;
-		}
-		.list-money-text {
-			width: 220rpx;
-			padding: 0 25rpx;
-			text-align: center;
-			color: $font-color-light;
-			.tit {
-				padding: 15rpx 0rpx;
-				font-size: 55rpx;
-				font-weight: bold;
-				&.action {
-					color: $card-color-action;
-				}
-			}
-			.price {
-				padding-bottom: 25rpx;
-			}
-		}
-	}
-	.row_list_right {
-		flex-grow: 1;
-		padding-left: 25rpx;
-		line-height: 1;
-		.right_time {
-			color: $font-color-light;
-			font-size: $font-sm;
-		}
-		.right_use {
-			margin: 15rpx 0;
-			padding: 10rpx;
-			width: 140rpx;
-			text_align: center;
-			border-radius: 50rpx;
-			color: #fff;
-			font-size: $font-sm - 4rpx;
-			&.action {
-				background-color: $card-color-action;
-			}
-			&.noAction {
-				background-color: $color-gray;
-			}
-		}
-		.right_top {
-			margin: 15rpx 0;
-			font-size: $font-lg;
-			height: 50rpx;
-			color: $font-color-light;
-			.right_name {
-				font-weight: bold;
-			}
-			.right_title {
-				font-weight: bold;
-				&.action {
-					color: $font-color-base;
-				}
-			}
-		}
-	}
-	
-	.iconlocation {
-		font-size: 36rpx;
-		color: $font-color-light;
-	}
-}
-// uni-load-more
-.uni-load-more {
-	display: flex;
-	flex-direction: row;
-	height: 80rpx;
-	align-items: center;
-	justify-content: center;
-}
-</style>

+ 158 - 98
pages/user/extension.vue

@@ -16,37 +16,70 @@
 				</view>
 			</view>
 		</view>
-		<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
-			<!-- 空白页 -->
-			<view class="empty-box"><empty v-if="orderList.length === 0"></empty></view>
-
-			<!-- 订单列表 -->
-			<view v-for="(item, index) in orderList" :key="index" class="order-item flex" @click="nav(item)">
-				<view class="title-box flex_item">
-					<view class="title-avatar"><image :src="item.avatar"></image></view>
-					<view class="list_tpl">
-						<view class="title">
-							<text>{{ item.email || item.phone }}</text>
-						</view>
-						<view class="time">
-							<text>{{ item.time }}</text>
-						</view>
-					</view>
+		<view class="main">
+			<view class="main-box flex">
+				<view class="item">
+					<view class="num">{{myPerformance || 0}}</view>
+					<view class="font ">我的业绩</view>
+				</view>
+				<view class="item">
+					<view class="num">{{plotPerformance || 0}}</view>
+					<view class="font ">小区业绩</view>
+				</view>
+			</view>
+			<view class="main-box bottom flex">
+				<view class="item">
+					<view class="num">{{push || 0}}</view>
+					<view class="font ">直推人数</view>
+				</view>
+				<view class="item">
+					<view class="num">{{team || 0}}</view>
+					<view class="font ">团队人数</view>
 				</view>
 			</view>
-			<uni-load-more :status="loadingType"></uni-load-more>
-		</scroll-view>
+		</view>
+		<view class="box">
+			<view class="box-item flex">
+				<view class="box-left">昨日拼购奖励</view>
+				<view class="box-right">{{yesterday.pink || 0}}USDT</view>
+			</view>
+			<view class="box-item flex">
+				<view class="box-left">昨日分享奖励</view>
+				<view class="box-right">{{yesterday.recommend || 0}}USDT</view>
+			</view>
+			<view class="box-item flex">
+				<view class="box-left">昨日团队奖励</view>
+				<view class="box-right">{{yesterday.group || 0}}USDT</view>
+			</view>
+		</view>
+		<view class="box">
+			<view class="box-item flex">
+				<view class="box-left">累计拼购奖励</view>
+				<view class="box-right">{{all.pink || 0}}USDT</view>
+			</view>
+			<view class="box-item flex">
+				<view class="box-left">累计分享奖励</view>
+				<view class="box-right">{{all.recommend || 0}}USDT</view>
+			</view>
+			<view class="box-item flex">
+				<view class="box-left">累计团队奖励</view>
+				<view class="box-right">{{all.goup || 0}}USDT</view>
+			</view>
+		</view>
+		<view class="liebiao flex" @click="navto('/pages/user/extensionList')">
+			<view class="left flex">
+				<image src="../../static/img/myTeam.png" mode=""></image>
+				<view class="leibiao-font">推广列表</view>
+			</view>
+			<image src="../../static/img/jiantou.png" mode=""></image>
+		</view>
 	</view>
 </template>
 <script>
 import { spread } from '@/api/finance.js';
 import { mapState, mapMutations } from 'vuex';
-import uniLoadMore from '@/uview-ui/components/u-loading-page/u-loading-page.vue';
-import empty from '@/uview-ui/components/u-empty/u-empty.vue';
+import { gitExtension } from '@/api/user.js';
 export default {
-	components: {
-		uniLoadMore
-	},
 	onReady() {
 		// 初始化获取页面宽度
 		uni.createSelectorQuery()
@@ -69,12 +102,13 @@ export default {
 		return {
 			// 头部图高度
 			maxheight: '',
-			orderList: [{}],
+			myPerformance:'',//我的业绩
+			plotPerformance:'',//小区业绩
+			push:'',//直推人数
+			team:'',//团队人数
 			all: '', //推广人数
-			loadingType: 'more', //页面加载即时刷新
-			page: 1, //默认展示一行
-			limit: 10, //一行展示10条数据
-			loadingType: 'more'
+			yesterday:'',//昨日
+			allList:'',//累计奖励
 		};
 	},
 	onLoad(options) {
@@ -87,21 +121,16 @@ export default {
 	},
 	methods: {
 		async loadData() {
-			if (this.loadingType == 'nomore') {
-				return;
-			}
-			spread({
-				limit: 10,
-				page: 1
-			}).then(({ data }) => {
-				this.all = data.total;
-				this.orderList = data.list;
-				if (data.length != this.limit) {
-					this.loadingType = 'nomore';
-				} else {
-					this.page++;
-				}
-			});
+			gitExtension({}).then(({data}) => {
+				console.log(data)
+				this.myPerformance = data.achievement;
+				this.plotPerformance = data.small_achivement;
+				this.push = data.recommend_num;
+				this.team = data.group_num;
+				this.allList = data.all;
+				this.yesterday = data.yesterday;
+			})
+			
 		},
 
 		// 页面跳转
@@ -116,11 +145,7 @@ export default {
 				url: '/pages/user/user'
 			});
 		},
-		nav(e) {
-			uni.navigateTo({
-				url: '/pages/user/rake?uid=' + e.uid
-			})
-		}
+		
 	}
 };
 </script>
@@ -132,7 +157,7 @@ export default {
 	background: linear-gradient(90deg, #60bab0, #45969b);
 }
 page {
-	background: #ffffff;
+	background: #f8f8f8;
 	height: 100%;
 }
 
@@ -312,61 +337,96 @@ page {
 	}
 }
 
-// 列表
-
-.order-item {
-	padding: 20rpx 30rpx;
-	line-height: 1.5;
-
-	.title-box {
-		width: 100%;
-
-		.title-avatar {
-			width: 100rpx;
-			height: 100rpx;
-			margin-right: 25rpx;
-			border-radius: 100%;
-
-			image {
-				width: 100%;
-				height: 100%;
-				border-radius: 100%;
-			}
-		}
-
-		.list_tpl {
-			width: 85%;
-
-			.title {
-				font-size: $font-lg;
-				color: $font-color-base;
-				overflow: hidden; //超出的文本隐藏
-				text-overflow: ellipsis; //溢出用省略号显示
-				white-space: nowrap;
+.main {
+	position: relative;
+	z-index: 10;
+	width: 691rpx;
+	height: auto;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: -160rpx auto 0;
+	padding: 40rpx 100rpx;
+	.bottom {
+		margin-top: 50rpx;
+	}
+	.main-box {
+		justify-content: space-between;
+		align-items: center;
+		.item {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			.num {
+				font-size: 38rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #0f253a;
 			}
-
-			.time {
-				font-size: $font-base;
-				color: $font-color-light;
+			.font {
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #6d7c88;
+				margin-top: 18rpx;
 			}
 		}
 	}
-
-	.money {
-		color: #db1935;
-		font-size: $font-lg;
-	}
 }
-
-.list-scroll-content {
-	height: auto;
+.box {
+	width: 690rpx;
+	background: #FFFFFF;
+	box-shadow: 0px 0px 17rpx 0px rgba(0, 0, 0, 0.05);
+	border-radius: 20rpx;
+	margin: 20rpx auto;
+	padding: 34rpx;
+	.box-item:first-child{
+		margin-top: 0;
+	}
+	.box-item {
+		margin-top: 20rpx;
+		justify-content: space-between;
+		align-items: center;
+		.box-left {
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #6D7C88;
+		}
+		.box-right {
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #0F253A;
+		}
+	}
 }
-
-.content {
-	height: 100%;
-
-	.empty-content {
-		background-color: #ffffff;
+.liebiao {
+	width: 692rpx;
+	background: #FFFFFF;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	padding: 34rpx;
+	margin: 24rpx auto 0;
+	align-items: center;
+	.left {
+		justify-content: flex-start;
+		align-items: center;
+		image {
+			width: 46rpx;
+			height: 36rpx;
+		}
+		.leibiao-font{
+			margin-left: 10rpx;
+			font-size: 32rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+		}
+	}
+	image {
+		width: 15rpx;
+		height: 27rpx;
 	}
 }
 </style>

+ 136 - 0
pages/user/extensionList.vue

@@ -0,0 +1,136 @@
+<template>
+	<view class="center">
+		<view class="empty-box"><u-empty v-if="orderList.length === 0 && loadingType == 'nomore'"></u-empty></view>
+		<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
+			<!-- 空白页 -->
+			
+
+			<!-- 订单列表 -->
+			<view v-for="(item, index) in orderList" :key="index" class="order-item flex" @click="nav(item)">
+				<view class="title-box flex_item">
+					<view class="title-avatar"><image :src="item.avatar"></image></view>
+					<view class="list_tpl">
+						<view class="title">
+							<text>{{ item.email || item.phone }}</text>
+						</view>
+						<view class="time">
+							<text>{{ item.time }}</text>
+						</view>
+					</view>
+				</view>
+			</view>
+			<u-loadmore v-if="orderList.length != 0" :status="loadingType" />
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+import { spread } from '@/api/finance.js';
+export default {
+	data() {
+		return {
+			orderList: [{}],
+			loadingType: 'loadmore', //页面加载即时刷新
+			page: 1, //默认展示一行
+			limit: 10 //一行展示10条数据
+		};
+	},
+	onLoad(options) {
+		this.loadData(); //onload只是在第一次进入页面会刷新数据,从二级页面回来不会重新加载数据
+	},
+
+	onShow() {
+		//onShow没有参数
+		this.loadData(); //onshow在每次打开页面都会加载数据,可以用于数据在需要刷新的环境下
+	},
+	methods: {
+		async loadData() {
+			if (this.loadingType == 'nomore' || this.loadingType == 'loading') {
+				return;
+			}
+			this.loadingType = 'loading';
+			spread({
+				limit: 10,
+				page: 1
+			}).then(({ data }) => {
+				this.all = data.total;
+				this.orderList = data.list;
+				if (data.length != this.limit) {
+					this.loadingType = 'nomore';
+				} else {
+					this.page++;
+					this.loadingType = 'loadmore';
+				}
+			});
+		},
+		nav(e){
+			uni.navigateTo({
+				url:'/pages/user/rake?uid=' + e.uid
+			})
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.list-scroll-content {
+	height: auto;
+}
+.order-item {
+	padding: 20rpx 30rpx;
+	line-height: 1.5;
+
+	.title-box {
+		width: 100%;
+
+		.title-avatar {
+			width: 100rpx;
+			height: 100rpx;
+			margin-right: 25rpx;
+			border-radius: 100%;
+			image {
+				width: 100%;
+				height: 100%;
+				border-radius: 100%;
+			}
+		}
+
+		.list_tpl {
+			width: 85%;
+
+			.title {
+				font-size: $font-lg;
+				color: $font-color-base;
+				overflow: hidden; //超出的文本隐藏
+				text-overflow: ellipsis; //溢出用省略号显示
+				white-space: nowrap;
+			}
+
+			.time {
+				font-size: $font-base;
+				color: $font-color-light;
+			}
+		}
+	}
+
+	.money {
+		color: #db1935;
+		font-size: $font-lg;
+	}
+}
+.content {
+	height: 100%;
+
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+.empty-box {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	width: 100%;
+	height: 100%;
+}
+</style>

+ 0 - 156
pages/user/favorites.vue

@@ -1,156 +0,0 @@
-<template>
-	<view class="container">
-		<!-- 空白页 -->
-		<empty v-if="favoriteList.length < 1"></empty>
-		<view class="favorites flex" v-for="ls in favoriteList" @click="toproduct(ls.pid)">
-			<view class="favorites_img"><image :src="ls.image"></image></view>
-			<view class="favorites_list">
-				<view class="favorites_name">{{ ls.store_name }}</view>
-				<view class="favorites_peice flex">
-					<view>
-						<text>¥{{ ls.price }}</text>
-					</view>
-					<view class="icon_del" @click.prevent.stop="del(ls.pid)" v-show="delshow">
-						<text class="iconfont icondelete"></text>
-						<text>取消</text>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-import { getcollectList, delcollect } from '@/api/user.js';
-import uniLoadMore from '@/uview-ui/components/u-loadmore/u-loadmore.vue';
-import empty from '@/uview-ui/components/u-empty/u-empty.vue';
-export default {
-	components: {
-		uniLoadMore,
-		empty
-	},
-	data() {
-		return {
-			tabCurrentIndex: 0,
-			favoriteList: '',
-			delshow: true
-		};
-	},
-	onLoad() {
-		this.loadData();
-	},
-	methods: {
-		//获取收藏夹列表
-		loadData() {
-			let obj = this;
-			getcollectList({
-				page: '1',
-				limit: '10'
-			})
-				.then(function(e) {
-					obj.favoriteList = e.data;
-					console.log(obj.favoriteList);
-				})
-				.catch(function(e) {
-					console.log(e);
-				});
-		},
-		//跳转商品详情页
-		toproduct(item) {
-			let id = item;
-			uni.navigateTo({
-				url: `/pages/product/product?id=${id}`
-			})
-		},
-		//删除收藏夹商品
-		del(item) {
-			let obj = this;
-			uni.showModal({
-				title: '提示',
-				content: '是否取消收藏该商品',
-				success: e => {
-					if (e.confirm) {
-						delcollect({
-							id: item,
-							category: 'product'
-						})
-							.then(function(e) {
-								uni.showToast({
-									title: '已取消收藏',
-									duration: 1500,
-								});
-								obj.loadData();
-							})
-							.catch(function(e) {
-								console.log(e);
-							});
-					}
-				}
-			});
-		},
-	}
-}
-</script>
-
-<style lang="scss">
-page {
-	height: 100%;
-}
-%flex-center {
-	display: flex;
-	flex-direction: column;
-	justify-content: center;
-	align-items: center;
-}
-%section {
-	display: flex;
-	justify-content: space-around;
-	align-content: center;
-	background: #fff;
-	border-radius: 10rpx;
-}
-.container {
-	height: 100%;
-	background-color: $page-color-base;
-	padding: 15rpx 0rpx;
-	font-size: 28rpx;
-}
-.favorites {
-	width: 90%;
-	background-color: #ffffff;
-	border-radius: 15rpx;
-	margin: 15rpx auto;
-	padding: 25rpx 25rpx;
-	margin-bottom: 25rpx;
-}
-.favorites_img {
-	width: 80px !important;
-	height: 80px;
-}
-.favorites_img image {
-	width: 100%;
-	height: 100%;
-}
-.favorites_list {
-	width: 70%;
-	padding-left: 20rpx;
-}
-.icon_del {
-	color: $font-color-base;
-	z-index: 9999;
-	font-weight: bold;
-}
-.favorites_name {
-	height: 80rpx;
-	overflow: hidden;
-	text-overflow: ellipsis;
-	display: -webkit-box;
-	-webkit-box-orient: vertial;
-	-webkit-line-clamp: 2;
-}
-.favorites_peice {
-	margin-top: 25rpx;
-	color: #db1935;
-	font-weight: bold;
-}
-</style>

+ 107 - 29
pages/user/fuli.vue

@@ -3,51 +3,111 @@
 		<view class="bg"></view>
 		<view class="zong flex">
 			<view class="info">
-				<view class="info-num">{{ '0.00' }}</view>
+				<view class="info-num">{{ USDL || '0' }}</view>
 				<view class="info-font">USDL</view>
 			</view>
 			<view class="info">
-				<view class="info-num">{{ '0' }}</view>
+				<view class="info-num">{{ lucky || '0' }}</view>
 				<view class="info-font">幸运值</view>
 			</view>
 			<view class="info">
-				<view class="info-num">{{ '0.00' }}</view>
-				<view class="info-font">USDT</view>
-			</view>
-			<view class="info">
-				<view class="info-num">{{ '0' }}</view>
+				<view class="info-num">{{ honor || '0' }}</view>
 				<view class="info-font">荣誉值</view>
 			</view>
 		</view>
 		<view class="rule">
 			<view class="rule-title">福利兑换规则</view>
-			<view class="rule-main">每1000USDL+10福气值可兑换2000USDT+10荣誉值</view>
+			<view class="rule-main">
+				每{{ list.sp_exchange_origin_cost * 1 }}{{ list.sp_exchange_origin }}+{{ list.sp_exchange_bingo_time }}幸运值可兑换{{ list.sp_exchange_origin_cost * 1}}{{ list.sp_exchange_target }}+{{ list.sp_exchange_bingo_time }}荣誉值
+			</view>
 		</view>
 		<view class="main-title">
 			<view class="shu"></view>
-			<view class="m-title">
-				兑换记录
-			</view>
+			<view class="m-title">兑换记录</view>
 		</view>
-		<view class="list-box">
-			<view class="list-item flex">
+		<scroll-view scroll-y class="list-box" @scrolltolower="getList()">
+			<!-- <view class="empty-box"><empty v-if="exchange.length === 0 || loadingType == 'nomore'"></empty></view> -->
+			<view v-for="(item, index) in exchange" :key="index" class="list-item flex">
 				<view class="list-left">
-					<view class="list-title">
-						福利兑换
-					</view>
-					<view class="time">
-						2018-12-1  09:30
-					</view>
-				</view>
-				<view class="list-right">
-					已兑换
+					<view class="list-title">福利兑换</view>
+					<view class="time">2018-12-1 09:30</view>
 				</view>
+				<view class="list-right">已兑换</view>
 			</view>
-		</view>
+			<u-loadmore :status="loadingType" />
+		</scroll-view>
+		<view class="btn" @click="nav()">立即兑换</view>
 	</view>
 </template>
 
-<script></script>
+<script>
+import { getSp } from '@/api/market.js';
+import { lalaDetial } from '@/api/product.js';
+import { wallet } from '@/api/finance.js';
+export default {
+	data() {
+		return {
+			id: '',
+			lucky: '',
+			honor: '',
+			list: '',
+			USDL: '',
+			exchange: [],
+			page: 1,
+			limit: 10,
+			loadingType: 'loadmore'
+		};
+	},
+	onLoad(option) {
+		this.id = option.id;
+		this.loadData();
+		this.getList();
+	},
+	methods: {
+		async loadData() {
+			lalaDetial({}, this.id)
+				.then(({ data }) => {
+					console.log(data);
+					this.honor = data.exchange_point;
+					this.lucky = data.luck_point-data.exchange_point;
+					this.list = data.data;
+				})
+				.catch(e => {
+					console.log(e);
+				});
+			wallet({}).then(({ data }) => {
+				this.USDL = data.back['USDL'].money.money * 1;
+			});
+		},
+		getList() {
+			if (this.loadingType == 'nomore' || this.loadingType == 'loading') {
+				return;
+			}
+			this.loadingType = 'loading';
+			getSp(
+				{
+					page: this.page,
+					limit: this.limit
+				},
+				this.id
+			).then(({ data }) => {
+				this.exchange = data.list;
+				if (data.length != this.limit) {
+					this.loadingType = 'nomore';
+				} else {
+					this.page++;
+					this.loadingType = 'loadmore';
+				}
+			});
+		},
+		nav() {
+			uni.navigateTo({
+				url: '/pages/market/duihuan?id=' + this.id
+			});
+		}
+	}
+};
+</script>
 
 <style lang="scss">
 .center,
@@ -119,23 +179,24 @@ page {
 		margin-left: 30rpx;
 		width: 5rpx;
 		height: 29rpx;
-		background: #0F253A;
+		background: #0f253a;
 		border-radius: 3rpx;
 	}
 	.m-title {
 		font-size: 30rpx;
 		font-family: PingFang SC;
 		font-weight: bold;
-		color: #0F253A;
+		color: #0f253a;
 		margin-left: 16rpx;
 	}
 }
 .list-box {
 	margin-top: 34rpx;
-	background-color: #FFFFFF;
+	height: 700rpx;
+	background-color: #ffffff;
 	.list-item {
 		padding: 25rpx 50rpx;
-		border-bottom: 1px solid #F0F4F8;
+		border-bottom: 1px solid #f0f4f8;
 		.list-title {
 			font-size: 30rpx;
 			font-family: PingFang SC;
@@ -147,7 +208,7 @@ page {
 			font-size: 26rpx;
 			font-family: PingFang SC;
 			font-weight: 500;
-			color: #AEAEAE;
+			color: #aeaeae;
 		}
 		.list-right {
 			font-size: 27rpx;
@@ -157,4 +218,21 @@ page {
 		}
 	}
 }
+.btn {
+	position: fixed;
+	bottom: 28rpx;
+	left: 0;
+	right: 0;
+	margin: 0 auto;
+	width: 674rpx;
+	height: 88rpx;
+	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+	border-radius: 44rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: 500;
+	color: #ffffff;
+	text-align: center;
+	line-height: 88rpx;
+}
 </style>

+ 116 - 0
pages/user/fulilist.vue

@@ -0,0 +1,116 @@
+<template>
+	<view class="center">
+		<view class="box" v-for="(item,index) in list" :key="index" @click="nav(item.id)">
+			<view class="shopBox-top">
+				<view class="left"><image src="../../static/img/index4.png" mode=""></image></view>
+				<view class="between">
+					<text  class="one">{{ item.name }}</text>
+				</view>
+				<view>
+					<text class="three">查看详情</text>
+				</view>
+			</view>
+			<view class="shopBox-between">
+				<view class="number">
+					<text class="number-left">{{ 1 * item.cost }}</text>
+					<text class="number-right">{{ item.cost_money_type }}/份</text>
+				</view>
+				<view class="quotient"><text class="quotient-children">每轮限购1组,每组限购一份</text></view>
+			</view>
+			<image :src="item.background_image" style="width: 635rpx; height: 170rpx; margin: 40rpx 0;" mode=""></image>
+		</view>
+	</view>
+</template>
+
+<script>
+import { lala } from '@/api/product.js';
+export default {
+	data() {
+		return{
+			list:[],
+		}
+	},
+	onLoad() {
+		this.loadData()
+	},
+	methods: {
+		async loadData(){
+			lala({}).then(({data}) =>{
+				this.list = data.list.data
+			})
+		},
+		nav(id) {
+			uni.navigateTo({
+				url: '/pages/user/fuli?id=' + id
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.center , page {
+	background: #f5f5f5;
+}
+.box {
+	margin: 20rpx auto 0;
+	width: 690rpx;
+	padding: 20rpx;
+	background: #FFFFFF;
+	box-shadow: 0px 0px 17rpx 0px rgba(0, 0, 0, 0.05);
+	border-radius: 20rpx;
+	.shopBox-top {
+		margin-top: 26rpx;
+		display: flex;
+		justify-content: flex-start;
+		align-items: center;
+		image {
+			height: 46rpx;
+			width: 48rpx;
+		}
+		.one {
+			margin-left: 10rpx;
+			font-size: 34rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #0f253a;
+		}
+		.three {
+			margin-left: 350rpx;
+			color: #6D7C88;
+		}
+	}
+	.shopBox-between {
+		margin-top: 20rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	
+		.number {
+			.number-left {
+				font-size: 40rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #44969d;
+			}
+	
+			.number-right {
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #44969d;
+			}
+		}
+	
+		.quotient {
+			.quotient-children {
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #6d7c88;
+			}
+		}
+	}
+	
+}
+</style>

+ 0 - 200
pages/user/scoreAccumulate.vue

@@ -1,200 +0,0 @@
-<template>
-	<view class="content">
-		<!-- <view class="navbar">
-			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
-		</view> -->
-		<swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
-			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
-				<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
-					<!-- 空白页 -->
-					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
-
-					<!-- 订单列表 -->
-					<view v-for="(item, index) in tabItem.orderList" :key="index" class="order-item flex">
-						<view class="title-box">
-							<view class="title">
-								<text>{{ item.mark }}</text>
-							</view>
-							<view class="time">
-								<text>{{ item.add_time }}</text>
-							</view>
-						</view>
-						<view class="money">
-							<text>{{ (item.pm == 0 ? '-' : '+') + item.number }}</text>
-						</view>
-					</view>
-					<uni-load-more :status="tabItem.loadingType"></uni-load-more>
-				</scroll-view>
-			</swiper-item>
-		</swiper>
-	</view>
-</template>
-
-<script>
-	
-// import { integrallist } from '@/api/functionalUnit.js';
-import uniLoadMore from '@/uview-ui/components/u-loadmore/u-loadmore.vue';
-import empty from '@/uview-ui/components/u-empty/u-empty.vue';
-export default {
-	components: {
-		empty,
-		uniLoadMore
-	},
-	onReady() {
-		
-	},
-	data() {
-		return {
-			tabCurrentIndex: 0,
-			navList: [
-				{
-					state: 0,
-					text: '全部',
-					loadingType: 'more',
-					orderList: [],
-					page: 1, //当前页数
-					limit: 10 //每次信息条数
-				},
-			],
-		};
-	},
-	onShow() {
-		// 载入积分数据
-		this.loadData();
-	},
-	methods: {
-		// 页面跳转
-		navto(e) {
-			uni.navigateTo({
-				url: e
-			});
-		},
-		//获取收入支出信息
-		async loadData(source) {
-			//这里是将订单挂载到tab列表下
-			let index = this.tabCurrentIndex;
-			let navItem = this.navList[index];
-			let state = navItem.state;
-			if (source === 'tabChange' && navItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return;
-			}
-			if (navItem.loadingType === 'loading') {
-				//防止重复加载
-				return;
-			}
-			// 修改当前对象状态为加载中
-			navItem.loadingType = 'loading';
-
-			integrallist(
-				{
-					page: navItem.page,
-					limit: navItem.limit
-				},
-				state
-			)
-				.then(({ data }) => {
-					if (data.length > 0) {
-						navItem.orderList = navItem.orderList.concat(data);
-						navItem.page++;
-					}
-					if (navItem.limit == data.length) {
-						//判断是否还有数据, 有改为 more, 没有改为noMore
-						navItem.loadingType = 'more';
-						return;
-					} else {
-						//判断是否还有数据, 有改为 more, 没有改为noMore
-						navItem.loadingType = 'noMore';
-					}
-					uni.hideLoading();
-					this.$set(navItem, 'loaded', true);
-				})
-				.catch(e => {
-					console.log(e);
-				});
-		},
-
-		//swiper 切换
-		changeTab(e) {
-			this.tabCurrentIndex = e.target.current;
-			this.loadData('tabChange');
-		},
-		//顶部tab点击
-		tabClick(index) {
-			this.tabCurrentIndex = index;
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	background: #ffffff;
-	height: 100%;
-}
-.navbar {
-	display: flex;
-	height: 40px;
-	padding: 0 5px;
-	background: #fff;
-	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
-	position: relative;
-	z-index: 10;
-	.nav-item {
-		flex: 1;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		height: 100%;
-		font-size: 15px;
-		color: $font-color-dark;
-		position: relative;
-		&.current {
-			color: $base-color;
-			&:after {
-				content: '';
-				position: absolute;
-				left: 50%;
-				bottom: 0;
-				transform: translateX(-50%);
-				width: 44px;
-				height: 0;
-				border-bottom: 2px solid $base-color;
-			}
-		}
-	}
-}
-// 列表
-
-.swiper-box {
-	height: calc(100% - 44px);
-	padding-top: 10rpx;
-	.order-item {
-		padding: 20rpx 30rpx;
-		line-height: 1.5;
-		.title-box {
-			.title {
-				font-size: $font-lg;
-				color: $font-color-base;
-			}
-			.time {
-				font-size: $font-base;
-				color: $font-color-light;
-			}
-		}
-		.money {
-			color: #fd5b23;
-			font-size: $font-lg;
-		}
-	}
-}
-.list-scroll-content {
-	height: 100%;
-}
-.content {
-	height: 100%;
-	.empty-content {
-		background-color: #ffffff;
-	}
-}
-</style>

+ 82 - 12
pages/user/user.vue

@@ -5,10 +5,15 @@
 			<view class="user">
 				<view class="avtor"><image class="portrait" :src="userInfo.avatar || '/static/img/missing-face.png'"></image></view>
 				<view class="">
-					<view class="name">{{ userInfo.phone || '游客' }}</view>
-					<view class="level-box">
-						<image class="image" src="../../static/img/img28.png"></image>
-						<view class="level">V{{ userInfo.level }}</view>
+					<view class="name">{{ userInfo.phone || userInfo.email || '游客' }}</view>
+					<view class="id">uid:{{ userInfo.uid }}</view>
+					<view class="id-box flex">
+						
+						<view class="level-box">
+							<image class="image" src="../../static/img/img28.png"></image>
+							<view class="level">V{{ userInfo.level }}</view>
+						</view>
+						
 					</view>
 				</view>
 			</view>
@@ -21,7 +26,7 @@
 					<view class="tt-txt">我的拼购</view>
 					<image src="../../static/img/jiantou.png" class="next-icon" mode=""></image>
 				</view>
-				<view class="tt-box" @click="nav('/pages/user/fuli')">
+				<view class="tt-box" @click="nav('/pages/user/fulilist')">
 					<image src="../../static/img/gift.png" class="tt-icon1" mode=""></image>
 					<view class="tt-txt">拼购福利</view>
 					<image src="../../static/img/jiantou.png" class="next-icon" mode=""></image>
@@ -64,10 +69,12 @@
 				<view class="popup-dox">
 					<image class="popup-logo" src="../../static/img/lianxi.png"></image>
 					<view class="pop-title">已为您定制专属客服</view>
-					<image class="popup-text" src=""></image>
+					<view >{{ weixin }}</view>
+					<image class="popup-text" @longtap="bc_code" :src="erweima"></image>
+					<view class="btn" @click="copy(weixin)">复制微信号</view>
 					<view class="pop-tip flex">
 						<view class="weixin"><image src="../../static/img/weixin.png" mode=""></image></view>
-						<view>长按识别咨询客服</view>
+						<view>长按保存二维码</view>
 					</view>
 				</view>
 			</view>
@@ -76,10 +83,11 @@
 	</view>
 </template>
 <script>
+import uniCopy from '@/components/js_sdk/xb-copy/uni-copy.js';
 import { mapState, mapMutations } from 'vuex';
 import uniList from '@/components/uni-list/uni-list.vue';
 import uniListItem from '@/components/uni-list-item/uni-list-item.vue';
-import { orderData, getUserInfo } from '@/api/user.js';
+import { orderData, getUserInfo,service } from '@/api/user.js';
 import { saveUrl, interceptor } from '@/utils/loginUtils.js';
 import uniPopup from '@/components/uni-popup/uni-popup.vue';
 export default {
@@ -89,7 +97,10 @@ export default {
 		uniPopup
 	},
 	data() {
-		return {};
+		return {
+			erweima:'',
+			weixin:''
+		};
 	},
 	onShow() {
 		//判断是否已经登录
@@ -120,6 +131,10 @@ export default {
 			getUserInfo({}).then(({ data }) => {
 				this.setUserInfo(data);
 			});
+			service({}).then(({data}) =>{
+				this.erweima = data.service_qr;
+				this.weixin = data.service_wechat;
+			})
 		},
 		server() {
 			this.$refs.popup.open();
@@ -153,6 +168,44 @@ export default {
 			// 		}
 			// 	});
 			// }
+		},
+		bc_code(){
+			let that = this;
+			console.log('保存二维码',this.backImg)
+			uni.downloadFile({           //获得二维码的临时地址
+				url:this.backImg,
+				success:(res)=>{
+					//console.log('获取url',res)
+					if(res.statusCode == 200){
+						uni.saveImageToPhotosAlbum({
+							filePath:res.tempFilePath,//传入临时地址
+							success() {
+								that.$api.msg('保存成功')//封装的提示
+							},
+							fail() {
+								that.$api.msg('保存失败')
+							}
+						})
+					}
+				}
+			})
+		},
+		copy(value) {
+			let obj = this;
+			let content = value; //需要复制的内容
+			console.log('复制的内容:', content);
+			// content = typeof content === 'string' ? content : content.toString(); // 复制内容,必须字符串,数字需要转换为字符串
+			const result = uniCopy(content);
+			if (result === false) {
+				uni.showToast({
+					title: '不支持'
+				});
+			} else {
+				uni.showToast({
+					title: '复制成功',
+					icon: 'none'
+				});
+			}
 		}
 	}
 };
@@ -168,12 +221,12 @@ page {
 }
 .top {
 	width: 100%;
-	height: 320rpx;
+	height: 340rpx;
 	position: relative;
 	.bg {
 		position: absolute;
 		width: 100%;
-		height: 320rpx;
+		height: 340rpx;
 		left: 0;
 		top: 0;
 		right: 0;
@@ -207,7 +260,15 @@ page {
 			font-weight: 500;
 			color: #ffffff;
 		}
+		.id {
+			margin-left: 30rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #ffffff;
+		}
 		.level-box {
+			
 			margin-left: 30rpx;
 			margin-top: 10rpx;
 			position: relative;
@@ -322,12 +383,21 @@ page {
 			height: 400rpx;
 			margin-bottom: 50rpx;
 		}
+		.btn{
+			width: 300rpx;
+			height: 50rpx;
+			line-height: 50rpx;
+			background: linear-gradient(90deg, #60BAB0, #60BAB0, #45969B);
+			margin: 0 auto;
+			color: #FFFFFF;
+			border-radius: 25rpx;
+		}
 		.pop-tip {
 			font-size: 30rpx;
 			font-weight: 500;
 			color: #333333;
 			justify-content: center;
-
+			margin-top: 20rpx;
 			.weixin {
 				width: 48rpx;
 				height: 40rpx;

+ 0 - 321
pages/user/withdrawal.vue

@@ -1,321 +0,0 @@
-<template>
-	<view class="content">
-		<uni-notice-bar single="true" text="每月25号到月底可提现上月结算余额"></uni-notice-bar>
-		<view class="content-money">
-			<view class="flex ">
-				<view class="buttom">
-					<view class="icon">{{ money | getMoneyStyle }}</view>
-					<text class="text">可提现佣金</text>
-				</view>
-				<view class="interval"></view>
-				<view class="buttom">
-					<view class=" icon">{{ freeze | getMoneyStyle }}</view>
-					<text class="text">待审核提现佣金</text>
-				</view>
-			</view>
-		</view>
-		<view class="row-box">
-			<view class="title">提现金额</view>
-			<view class="row">
-				<text class="tit">¥</text>
-				<input class="input" type="number" v-model="withdrawal" :placeholder="'最低提现金额' + minPrice + '元'" placeholder-class="placeholder" />
-				<view class="buttom" @click="withdrawal = money">全部提现</view>
-			</view>
-		</view>
-		<!-- #ifndef MP-WEIXIN -->
-		<view class="list" v-if="!weichatBsrowser">
-			<radio-group @change="tabRadio">
-				<label>
-					<view class="box">
-						<view class="icon iconfont iconweixin1"></view>
-						<view class="title-box">
-							<view class="title"><text>提现至微信</text></view>
-						</view>
-						<view class="right"><radio value="weixin" color="#5dbc7c" :checked="type == 'weixin'" /></view>
-					</view>
-				</label>
-				<label>
-					<view class="box">
-						<view class="icon iconfont iconzhifubao"></view>
-						<view class="title-box">
-							<view class="title">
-								<text v-if="aliData.fullname">提现至支付宝</text>
-								<text v-else>请创建支付宝账号</text>
-							</view>
-							<view class="node">
-								<text v-if="aliData.fullname">真实姓名({{ aliData.fullname }})</text>
-							</view>
-						</view>
-						<view class="right"><radio value="alipay" color="#5dbc7c" :checked="type == 'alipay'" /></view>
-					</view>
-				</label>
-				<label>
-					<view class="box">
-						<view class="icon iconfont"><image class="icon-img" src="/static/icon/i8.png" mode="aspectFit"></image></view>
-						<view class="title-box">
-							<view class="title">
-								<text v-if="bankData.bankno">{{ bankData.bank + ' ' + bankData.bankno }}</text>
-								<text v-else>请创建银行账号</text>
-							</view>
-							<view class="node">
-								<text v-if="bankData.fullname">真实姓名({{ bankData.fullname }})</text>
-							</view>
-						</view>
-						<view class="right"><radio value="bank" color="#5dbc7c" :checked="type == 'bank'" /></view>
-					</view>
-				</label>
-			</radio-group>
-		</view>
-		<!-- #endif -->
-		<button class="add-btn up" @click="confirm">提交申请</button>
-		<button class="add-btn modified" v-if="!weichatBsrowser" @click="navTo('/pages/money/account')">账号管理</button>
-	</view>
-</template>
-
-<script>
-import { getMoneyStyle } from '@/utils/rocessor.js';
-import { extractCash, extractBank, aliInfo, bankInfo } from '@/api/wallet.js';
-import uniNoticeBar from '@/uview-ui/components/u-notice-bar/u-notice-bar.vue';
-export default {
-	filters: {
-		getMoneyStyle
-	},
-	components: {
-		uniNoticeBar
-	},
-	data() {
-		return {
-			type: 'weixin', //提现方式
-			money: '0.00', //可提现金额
-			freeze: '0.0', //冻结金额
-			withdrawal: '', //提现金额
-			minPrice: '', //最少提现金额
-			aliData: {},
-			bankData: {},
-			// #ifdef H5
-			weichatBsrowser: false
-			// #endif
-		};
-	},
-	onLoad(options) {
-		// #ifdef H5
-		this.weichatBsrowser = uni.getStorageSync('weichatBrowser');
-		// #endif
-		//加载提现信息
-		this.loadData();
-		// 加载提款账号信息
-		this.loadAli();
-		this.loadBank();
-	},
-	methods: {
-		// 更新数据
-		dataUp() {
-			this.loadAli();
-			this.loadBank();
-		},
-		//加载数据
-		async loadAli(source) {
-			aliInfo({}).then(e => {
-				this.aliData = e.data;
-			});
-		},
-		// 加载银行卡信息
-		async loadBank() {
-			bankInfo({}).then(e => {
-				this.bankData = e.data;
-			});
-		},
-		// 加载余额信息
-		async loadData() {
-			extractBank({}).then(({ data }) => {
-				this.money = data.commissionCount;
-				this.minPrice = data.minPrice;
-				this.freeze = data.incommissionCount;
-			});
-		},
-		// 跳转
-		navTo(url) {
-			uni.navigateTo({
-				url: url
-			});
-		},
-		// 切换选中对象
-		tabRadio(e) {
-			this.type = e.detail.value;
-		},
-		// 提交
-		confirm() {
-			let data = {
-				extract_type: this.type, //bank -银行卡 alipay-支付宝 weixin-微信
-				money: this.withdrawal, //金额
-				money_type: 0 //0佣金1余额
-			};
-
-			if (this.withdrawal < this.minPrice) {
-			uni.showToast({
-				title: '提现金额不可少于'+this.minPrice,
-				duration: 2000,
-				mask: false,
-				icon: 'none',
-			})
-				return;
-			}
-			if (this.type == 'alipay') {
-				data.name = this.aliData.fullname;
-				data.alipay_code = this.aliData.alino;
-			}
-			if (this.type == 'bank') {
-				data.name = this.bankData.fullname;
-				data.bankname = this.bankData.bank;
-				data.cardnum = this.bankData.bankno;
-			}
-
-			extractCash(data)
-				.then(e => {
-					uni.showToast({
-						title: '提交成功',
-						duration: 2000,
-						position: 'top'
-					});
-				})
-				.catch(e => {
-					console.log();
-				});
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	height: 100%;
-}
-.content-money {
-	padding: 30rpx 0;
-	background: #ffffff;
-}
-.flex {
-	background-color: #ffffff;
-	text-align: center;
-	margin: 0 30rpx;
-	border-radius: $border-radius-sm;
-	.buttom {
-		font-size: $font-lg;
-		width: 50%;
-	}
-	.interval {
-		width: 2px;
-		height: 60rpx;
-		background-color: #eeeeee;
-	}
-	.icon {
-		background-size: 100%;
-		font-size: 42rpx;
-		color: $font-color-dark;
-		font-weight: bold;
-		background-repeat: no-repeat;
-		background-position: center;
-	}
-	.text {
-		color: $font-color-light;
-	}
-}
-
-.row-box {
-	margin-top: 30rpx;
-	padding: 20rpx 30rpx;
-	background: #fff;
-	.title {
-		font-size: $font-base + 2rpx;
-		color: $font-color-dark;
-	}
-	.row {
-		display: flex;
-		align-items: center;
-		position: relative;
-		height: 80rpx;
-		.tit {
-			flex-shrink: 0;
-			width: 40rpx;
-			font-size: 30rpx;
-			color: $font-color-dark;
-		}
-		.input {
-			flex: 1;
-			font-size: 30rpx;
-			color: $font-color-dark;
-		}
-		.iconlocation {
-			font-size: 36rpx;
-			color: $font-color-light;
-		}
-
-		.buttom {
-			color: $font-color-spec;
-			font-size: $font-base;
-		}
-	}
-}
-.add-btn {
-	&.modified {
-		color: $base-color;
-	}
-	&.up {
-		background-color: $base-color;
-		color: #fff;
-	}
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	width: 690rpx;
-	height: 80rpx;
-	margin: 0 auto;
-	margin-top: 30rpx;
-	font-size: $font-lg;
-	border-radius: 10rpx;
-	// box-shadow: 1px 2px 5px rgba(219, 63, 96, 0.4);
-}
-
-.list {
-	padding-left: 30rpx;
-	margin-top: 30rpx;
-	background-color: #ffffff;
-	.box {
-		display: flex;
-		align-items: center;
-		width: 100%;
-		height: 120rpx;
-		border-bottom: 1px solid $border-color-light;
-		.icon {
-			font-size: 48rpx;
-			padding-right: 20rpx;
-			.icon-img {
-				height: 50rpx;
-				width: 50rpx;
-			}
-		}
-		.iconweixin1 {
-			color: #18bf16;
-		}
-		.iconzhifubao {
-			color: #08aaec;
-		}
-		.title-box {
-			flex-grow: 1;
-			text-align: left;
-			.title {
-				font-size: $font-base + 2rpx;
-				color: $font-color-base;
-			}
-			.node {
-				font-size: $font-sm;
-				color: $font-color-light;
-			}
-		}
-	}
-}
-/deep/ .uni-radio-input {
-	width: 45rpx;
-	height: 45rpx;
-}
-</style>

二进制
static/img/duhuanbg.png


二进制
unpackage/cache/apk/__UNI__3CDE968_cm.apk


+ 1 - 0
unpackage/cache/apk/apkurl

@@ -0,0 +1 @@
+https://service.dcloud.net.cn/build/download/cc3ea320-f739-11eb-acda-5b652b64987e

文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/apk/cmManifestCache.json


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/appstore.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-app.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-app@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-notification.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-notification@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-proapp@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-settings.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-settings@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-spotlight.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-ipad-spotlight@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-app@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-app@3x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-notification@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-notification@3x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-settings@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-settings@3x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-spotlight@2x.png


二进制
unpackage/cache/wgt/__UNI__3CDE968/.manifest/icon-iphone-spotlight@3x.png


文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/app-config-service.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/app-service.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/app-view.js


文件差异内容过多而无法显示
+ 0 - 0
unpackage/cache/wgt/__UNI__3CDE968/manifest.json


二进制
unpackage/release/apk/__UNI__3CDE968__20210807124157.apk


二进制
unpackage/release/apk/__UNI__3CDE968__20210807124603.apk


+ 20 - 5
utils/rocessor.js

@@ -111,10 +111,25 @@ export function getTime(time) {
 	l = parseInt(l)
 	const date = new Date(parseInt(time) * l);
 	const year = date.getFullYear();
-	const mon = date.getMonth() + 1;
-	const day = date.getDate();
-	const hours = date.getHours();
-	const minu = date.getMinutes();
-	const sec = date.getSeconds();
+	let mon = date.getMonth() + 1;
+	let day = date.getDate();
+	let hours = date.getHours();
+	let minu = date.getMinutes();
+	let sec = date.getSeconds();
+	if(day < 10 ){
+		day = '0' + day
+	}
+	if(hours < 10 ){
+		hours = '0' + hours
+	}
+	if(minu < 10 ){
+		minu = '0' + minu
+	}
+	if(mon < 10 ){
+		mon = '0' + mon
+	}
+	if(sec < 10) {
+		sec = '0' + sec
+	}
 	return year + '-' + mon + '-' + day + ' ' + hours + ':' + minu + ':' + sec;
 }

部分文件因为文件数量过多而无法显示