Fly il y a 2 ans
Parent
commit
f2ad27ef06

+ 18 - 14
.hbuilderx/launch.json

@@ -1,16 +1,20 @@
-{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
-  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
-    "version": "0.0",
-    "configurations": [{
-     	"app-plus" : 
-     	{
-     		"launchtype" : "local"
-     	},
-     	"default" : 
-     	{
-     		"launchtype" : "local"
-     	},
-     	"type" : "uniCloud"
-     }
+{
+    // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+    // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version" : "0.0",
+    "configurations" : [
+        {
+            "app-plus" : {
+                "launchtype" : "local"
+            },
+            "default" : {
+                "launchtype" : "local"
+            },
+            "type" : "uniCloud"
+        },
+        {
+            "playground" : "standard",
+            "type" : "uni-app:app-android"
+        }
     ]
 }

+ 11 - 0
api/index.js

@@ -25,6 +25,17 @@ export function Api_getNewsList(data) {
 }
 
 
+// 0-2 注册-01-获得国家区号
+export function Api_getAreaCode() {
+	return axios.post(`/api/area_code`)
+}
+
+// 03 行情列表/首页推荐
+export function Api_getQuotationNew() {
+	return axios.get(`/api/currency/quotation_new`)
+}
+
+
 // // 根据手机号登录
 // export function goAuthLogin_Api(data) {
 // 	return axios.post(`/auth/c/doMiniLoginByPhone` , data )

+ 3 - 6
components/headContent/headContent.vue

@@ -9,7 +9,6 @@
 			<view :class="['head-content' , fixed ? 'content-fixed' : '']" :style="{'background-color': bgColor}">
 				<view class="status-bar"  v-if="fixed" :style="{'height':`${statusBarHeight}px` , 'background-color': statusBarBg}"></view>
 				<view class="content-box" :style="{'height':headHeight}">
-
 					<view class="left" v-if="showleftRight" :style="{'width': leftRightWidth}">
 						<slot name="left"></slot>
 					</view>
@@ -76,14 +75,12 @@
 			...mapGetters([
 				'statusBarHeight',
 				'headHeight'
-			]),
-
+			])
 		}
 	}
 </script>
 
 <style scoped lang="scss">
-	$zIndex:50;
 	.status-bar{
 		width: 100%;
 		
@@ -92,7 +89,7 @@
 		position: fixed;
 		top: 0;
 		left: 0;
-		z-index: $zIndex;
+		z-index: $headFixedZIndex;
 	}
 	
 	.head {
@@ -164,7 +161,7 @@
 			position: fixed;
 			left: 0;
 			top: 0;
-			z-index: $zIndex;
+			z-index: $headFixedZIndex;
 		}
 	}
 </style>

+ 40 - 0
components/headModules/close.vue

@@ -0,0 +1,40 @@
+<template>
+	<view class="reverse-back-box" @click.stop="reverseBackBtn">
+		<text class="iconfont" :style="{'color': iconColor}">&#xe621;</text>
+	</view>
+</template>
+
+<script>
+	import { reverseBack } from "@/utils/common.js"
+	export default { 
+		props:{
+			iconColor:{
+				type:String,
+				default:'#000'
+			}
+		},
+		data() {
+			return {
+				
+			};
+		},
+		methods:{
+			reverseBackBtn(){
+				reverseBack()
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.reverse-back-box {
+		width: 37rpx;
+		height: 37rpx;
+		display: flex;
+		align-items: center;
+		height: 100%;
+		.iconfont{
+		font-size: 26rpx; 
+		}
+	}
+</style>

+ 3 - 12
components/headModules/login.vue

@@ -29,18 +29,9 @@
 		},
 		methods: {
 			getUserInfo() {
-				if (this.token) {
-					uni.navigateTo({
-						url: '/pages/content/mine'
-					});
-				} else {
-					uni.navigateTo({
-						url: '/pages/login/index'
-					});
-				}
-
-
-
+				uni.navigateTo({
+					url: '/pages/content/mine'
+				});
 			}
 		}
 	}

+ 18 - 3
components/headModules/message.vue

@@ -1,12 +1,27 @@
 <template>
-	<view class="head-icon">
+	<view class="head-icon" >
 		<image src="../../static/images/logo.png" mode="aspectFit"></image>
 	</view>
 </template>
 
 <script>
+	export default {
+	 
+		data() {
+			return {
+				
+			};
+		},
+		methods:{
+			// getService(){
+			// 	uni.navigateTo({
+			// 		url:'/pages/content/customer-service'
+			// 	})
+			// }
+		}
+	}
 </script>
 
 <style lang="scss" scoped>
- 
-</style>
+
+</style>

+ 10 - 19
components/headModules/reverse-back.vue

@@ -1,12 +1,19 @@
 <template>
 	<view class="reverse-back-box" @click.stop="reverseBackBtn">
-		<text class="iconfont">&#xe603;</text>
+		<text class="iconfont" :style="{'color': iconColor}">&#xe603;</text>
 	</view>
 </template>
 
 <script>
+	import { reverseBack } from "@/utils/common.js"
 	export default {
 		name: 'reverse-back',
+		props:{
+			iconColor:{
+				type:String,
+				default:'#000'
+			}
+		},
 		data() {
 			return {
 
@@ -14,18 +21,7 @@
 		},
 		methods: {
 			reverseBackBtn() {
-				const pages = getCurrentPages()
-				if (pages.length <= 1) {
-					uni.reLaunch({
-						url: '/pages/index/index'
-					});
-				} else {
-					uni.navigateBack({
-						delta: 1,
-						fail: err => {}
-					})
-				}
-
+				reverseBack()
 			}
 		}
 	}
@@ -38,11 +34,6 @@
 		display: flex;
 		align-items: center;
 		height: 100%;
-		font-size: 32rpx;
-		color: #000;
-		// .reverse-back-icon {
-		// 	width: 100%;
-		// 	height: 100%;
-		// }
+		font-size: 32rpx; 
 	}
 </style>

+ 58 - 0
components/iframe-page/iframe-page.vue

@@ -0,0 +1,58 @@
+<template>
+	<view class="iframe-content">
+		<headContent statusBarBg="#191A2E" bgColor="#191A2E">
+
+			<template #left>
+				<reverse-back iconColor="#fff"/>
+			</template>
+			<template #content>
+				<view class="haed-title">
+					在线客服
+				</view>
+			</template>
+			<template #right>
+				<closeIocn iconColor="#fff"/>
+			</template>
+		</headContent>
+		<view class="iframe-box">
+			<iframe
+				src="https://app.chatra.live/index/index/home?visiter_id=&visiter_name=&avatar=&groupid=0&business_id=12"
+				frameborder="0"></iframe>
+		</view>
+	</view>
+</template>
+
+<script>
+	import closeIocn from "./../headModules/close.vue"
+	export default {
+		name: "iframe-page",
+		components:{closeIocn},
+		data() {
+			return {
+
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.haed-title{
+		color: #fff !important;
+	}
+	.iframe-content {
+		width: 100%;
+		height: 100vh;
+		display: flex;
+		flex-direction: column;
+
+		.iframe-box {
+			flex: 1;
+
+			iframe {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+	}
+</style>

+ 47 - 36
components/marketplace/marketplace.vue

@@ -7,8 +7,8 @@
 					交易对
 				</view>
 			</uni-th>
-			<uni-th >
-				<view class="table-th table-th-title"  @click.stop="alterRankRule(`rankRule`)">
+			<uni-th>
+				<view class="table-th table-th-title" @click.stop="alterRankRule(`rankRule`)">
 					<text>最新价</text>
 					<view class="title-arrows">
 						<image class="arrows-icon" :src="rankRule === 1 ? activeRankRuleIcon : rankRuleIcon"
@@ -18,8 +18,8 @@
 					</view>
 				</view>
 			</uni-th>
-			<uni-th >
-				<view class="table-th table-th-title"  @click.stop="alterRankRule(`rankRule`)">
+			<uni-th>
+				<view class="table-th table-th-title" @click.stop="alterRankRule(`rankRule`)">
 					<text>日涨跌</text>
 					<view class="title-arrows">
 						<image class="arrows-icon" :src="rankRule === 1 ? activeRankRuleIcon : rankRuleIcon"
@@ -31,34 +31,36 @@
 			</uni-th>
 		</uni-tr>
 		<!-- 表格数据行 -->
-		<uni-tr v-for="item in 30" :rise-fall="stocksColor">
-			<uni-td>
-				<view class="table-title">
-					<view class="title">
-						<text>BTC</text>
-						<text class="title-sub">/USDT</text>
+		<view class="" v-for="item in marketplaceList">
+			<uni-tr v-for="val in item.quotation" :rise-fall="stocksColor">
+				<uni-td>
+					<view class="table-title">
+						<view class="title">
+							<text>{{ val.currency_name }}</text>
+							<text class="title-sub">/{{ item.name }}</text>
+						</view>
+						<view class="title-num">
+							24H额:476.62m
+						</view>
 					</view>
-					<view class="title-num">
-						24H额:476.62m
-					</view>
-				</view>
-			</uni-td>
-			<uni-td>
-				<view class="title">
-					<view class="">
-						30188.2
+				</uni-td>
+				<uni-td>
+					<view class="title">
+						<view class="">
+							{{ val.now_price }}
+						</view>
+						<view class="title-num">
+							¥{{ val.volume }}
+						</view>
 					</view>
-					<view class="title-num">
-						¥207695.01
+				</uni-td>
+				<uni-td class="table-right">
+					<view :class="['table-btn' , val.change > 0 ? 'rise-btn' : 'fall-btn']">
+						{{ val.change }}%
 					</view>
-				</view>
-			</uni-td>
-			<uni-td class="table-right">
-				<view :class="['table-btn' , item % 2 ? 'fall-btn' : 'rise-btn']">
-					+0.03%
-				</view>
-			</uni-td>
-		</uni-tr>
+				</uni-td>
+			</uni-tr>
+		</view>
 
 	</uni-table>
 </template>
@@ -69,6 +71,12 @@
 	} from 'vuex'
 	export default {
 		name: "marketplace",
+		props: {
+			marketplaceList: {
+				type: Array,
+				default: () => []
+			}
+		},
 		data() {
 			return {
 				rankRule: 0,
@@ -83,7 +91,7 @@
 		},
 		methods: {
 			alterRankRule(rankRule) {
-				console.log('alterRankRule' , rankRule)
+				console.log('alterRankRule', rankRule)
 				switch (this['rankRule']) {
 					case 0:
 						this['rankRule'] = 1;
@@ -129,10 +137,12 @@
 
 				// &:nth-child()
 			}
-			.table-th{
+
+			.table-th {
 				padding-top: 20rpx;
 				padding-bottom: 10rpx;
 			}
+
 			.uni-table-th {
 				font-size: 22rpx;
 				border-bottom: none;
@@ -162,7 +172,7 @@
 								margin-top: -4rpx;
 							}
 						}
- 
+
 					}
 				}
 
@@ -171,6 +181,7 @@
 			.uni-table-td {
 				padding-top: 20rpx;
 				padding-bottom: 20rpx;
+
 				.table-title {
 					width: 100%;
 					line-height: 1.2;
@@ -215,7 +226,7 @@
 
 				// &:nth-child()
 			}
- 
+
 
 			.table-btn {
 				// 138
@@ -232,12 +243,12 @@
 			}
 		}
 
-		.table-right { 
+		.table-right {
 			display: flex;
-			justify-content: flex-end; 
+			justify-content: flex-end;
 			flex-direction: row;
 			align-items: flex-end;
-			 
+
 		}
 	}
 </style>

+ 35 - 24
components/rollMessage/rollMessage.vue

@@ -2,24 +2,32 @@
 	<view class="roll-box">
 		<image class="roll-icon" src="../../static/logo.png" mode="aspectFit"></image>
 		<view class="roll-list hide_1">
-			<u-notice-bar icon='' bgColor="" duration="3000" direction="column"  :text='list'></u-notice-bar>
+			<u-notice-bar icon='' bgColor="" duration="3000" direction="column" :text="rollMsg.map(el => {
+				return el.title || ''
+			})">
+			</u-notice-bar>
 			<!-- <view class="roll-item hide_1">
 				币王BiKing合约交易所代理签约邀您加入币王BiKing合约交易所代理签约邀您加入
 			</view> -->
 		</view>
-	 
+
 		<image class="roll-more" src="../../static/logo.png" mode="aspectFit"></image>
 	</view>
 </template>
 
 <script>
- 
 	export default {
-		name:"rollMessage",
+		name: "rollMessage",
+		props: {
+			rollMsg: {
+				type: Array,
+				default: () => []
+			}
+		},
 		data() {
 			return {
-				 
-				list:[
+
+				list: [
 					'币王BiKing合约交易所代理签约邀您加入币王BiKing合约交易所代理签约邀您加入',
 					'币王BiKing合约交易所代理签约邀您加入币王BiKing合约交易所代理签约邀您加入',
 					'币王BiKing合约交易所代理签约邀您加入币王BiKing合约交易所代理签约邀您加入',
@@ -35,7 +43,7 @@
 </script>
 
 <style lang="scss" scoped>
-	.roll-box{
+	.roll-box {
 		width: 100%;
 		height: 76rpx;
 		background-color: $modules-box-bg;
@@ -43,13 +51,16 @@
 		display: flex;
 		justify-content: space-between;
 		align-items: center;
-		.roll-icon,.roll-more{
+
+		.roll-icon,
+		.roll-more {
 			width: 30rpx;
 			height: 30rpx;
 			flex-shrink: 0;
-			 
+
 		}
-		.roll-list{
+
+		.roll-list {
 			width: calc(100% - 60rpx);
 			height: 100%;
 			flex-shrink: 0;
@@ -58,7 +69,7 @@
 			align-items: center;
 			// .roll-item{
 			// 	width: 100%; 
-			 
+
 			// 	font-size: 26rpx;
 			// 	font-family: PingFang SC, PingFang SC-Regular;
 			// 	font-weight: 400;
@@ -66,24 +77,24 @@
 			// 	color: #1a1a1a; 
 			// 	letter-spacing: 0.52px;
 			// }
-			::v-deep .u-notice-bar{
+			::v-deep .u-notice-bar {
 				// width: 100%;
 				padding-left: 0;
 				padding-right: 0;
-				.u-notice__swiper__item__text{
-						font-size: 26rpx !important;
-						font-family: PingFang SC, PingFang SC-Regular !important;
-						font-weight: 400  !important;
-				 
-						color: #1a1a1a  !important; 
-						letter-spacing: 0.52px  !important;
-						overflow: hidden;
-						text-overflow: ellipsis;
-						white-space: nowrap;
-						word-wrap: break-word;
+
+				.u-notice__swiper__item__text {
+					font-size: 26rpx !important;
+					font-family: PingFang SC, PingFang SC-Regular !important;
+					font-weight: 400 !important;
+
+					color: #1a1a1a !important;
+					letter-spacing: 0.52px !important;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					white-space: nowrap;
+					word-wrap: break-word;
 				}
 			}
 		}
 	}
-
 </style>

+ 190 - 176
pages.json

@@ -1,183 +1,197 @@
 {
-    "easycom" : {
-        "^u-(.*)" : "uview-ui/components/u-$1/u-$1.vue"
-    },
-    "pages" : [
-        //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
-        {
-            "path" : "pages/index/index",
-            "style" : {
-                "navigationBarTitleText" : "币王"
-            }
-        },
-        {
-            "path" : "pages/login/register",
-            "style" : {
-                "navigationBarTitleText" : "注册"
-            }
-        },
+	"easycom": {
+		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+	},
+	"pages": [
+		//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
 		{
-		    "path" : "pages/login/email-verify",
-		    "style" : {
-		        "navigationBarTitleText" : "邮箱验证"
-		    }
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "币王"
+			}
 		},
-        {
-            "path" : "pages/login/index",
-            "style" : {
-                "navigationBarTitleText" : "登录"
-            }
-        },
-        {
-            "path" : "pages/exchange/index",
-            "style" : {
-                "navigationBarTitleText" : "闪电兑换"
-            }
-        },
-        {
-            "path" : "pages/property/index",
-            "style" : {
-                "navigationBarTitleText" : "资产"
-            }
-        },
-        {
-            "path" : "pages/property/bill",
-            "style" : {
-                "navigationBarTitleText" : "用户账单"
-            }
-        },
-        {
-            "path" : "pages/property/asset",
-            "style" : {
-                "navigationBarTitleText" : "资产记录"
-            }
-        },
-        {
-            "path" : "pages/task/index",
-            "style" : {
-                "navigationBarTitleText" : "任务中心"
-            }
-        },
-        {
-            "path" : "pages/contract/index",
-            "style" : {
-                "navigationBarTitleText" : "合约"
-            }
-        },
-        {
-            "path" : "pages/contract/sustainability/index",
-            "style" : {}
-        }
-    ],
-    "subPackages" : [
-        {
-            "root" : "pages/content",
-            "pages" : [
-                {
-                    "path" : "share",
-                    "style" : {
-                        "navigationBarTitleText" : "分享"
-                    }
-                },
-                {
-                    "path" : "mine",
-                    "style" : {
-                        "navigationBarTitleText" : "个人中心"
-                    }
-                },
-                {
-                    "path" : "select-currency",
-                    "style" : {
-                        "navigationBarTitleText" : "选择币种"
-                    }
-                },
-                {
-                    "path" : "top-up",
-                    "style" : {
-                        "navigationBarTitleText" : "充币"
-                    }
-                },
-                {
-                    "path" : "charge-record",
-                    "style" : {
-                        "navigationBarTitleText" : "充币记录"
-                    }
-                },
-                {
-                    "path" : "setting",
-                    "style" : {
-                        "navigationBarTitleText" : "系统设置"
-                    }
-                },
-                {
-                    "path" : "safety-set",
-                    "style" : {
-                        "navigationBarTitleText" : "安全设置"
-                    }
-                },
-                {
-                    "path" : "change-password",
-                    "style" : {
-                        "navigationBarTitleText" : "修改密码"
-                    }
-                }
-            ]
-        }
-    ],
-    "tabBar" : {
-        "color" : "#666666",
-        "selectedColor" : "#0ED47F",
-        // "borderStyle": "#E7E7E7",
-        // "backgroundColor": "#FFFFFF",
-        "list" : [
-            {
-                "pagePath" : "pages/index/index",
-                "iconPath" : "./static/tabbar/tabbar_1.png",
-                "selectedIconPath" : "./static/tabbar/tabbar_1_1.png",
-                "text" : "首页"
-            },
-            {
-                "pagePath" : "pages/exchange/index",
-                "iconPath" : "./static/tabbar/tabbar_2.png",
-                "selectedIconPath" : "./static/tabbar/tabbar_2_2.png",
-                "text" : "币币"
-            },
-            {
-                "pagePath" : "pages/contract/index",
-                "iconPath" : "./static/tabbar/tabbar_3.png",
-                "selectedIconPath" : "./static/tabbar/tabbar_3_3.png",
-                "text" : "合约"
-            },
-            {
-                "pagePath" : "pages/task/index",
-                "iconPath" : "./static/tabbar/tabbar_4.png",
-                "selectedIconPath" : "./static/tabbar/tabbar_4_4.png",
-                "text" : "任务"
-            },
-            {
-                "pagePath" : "pages/property/index",
-                "iconPath" : "./static/tabbar/tabbar_5.png",
-                "selectedIconPath" : "./static/tabbar/tabbar_5_5.png",
-                "text" : "资产"
-            }
-        ]
-    },
-    "globalStyle" : {
-        "navigationStyle" : "custom",
-        "navigationBarTextStyle" : "black",
-        "navigationBarTitleText" : "币王",
-        "navigationBarBackgroundColor" : "#F8F8F8",
-        "backgroundColor" : "#F8F8F8"
-    },
-    "uniIdRouter" : {},
-	"condition" : { //模式配置,仅开发期间生效
-		"current": 0, //当前激活的模式(list 的索引项)
-		"list": [
+		{
+			"path": "pages/exchange/index",
+			"style": {
+				"navigationBarTitleText": "闪电兑换"
+			}
+		},
+		{
+			"path": "pages/property/index",
+			"style": {
+				"navigationBarTitleText": "资产"
+			}
+		},
+		{
+			"path": "pages/property/bill",
+			"style": {
+				"navigationBarTitleText": "用户账单"
+			}
+		},
+		{
+			"path": "pages/property/asset",
+			"style": {
+				"navigationBarTitleText": "资产记录"
+			}
+		},
+		{
+			"path": "pages/task/index",
+			"style": {
+				"navigationBarTitleText": "任务中心"
+			}
+		},
+		{
+			"path": "pages/contract/index",
+			"style": {
+				"navigationBarTitleText": "合约"
+			}
+		},
+		{
+			"path": "pages/contract/sustainability/index",
+			"style": {}
+		}
+	],
+	"subPackages": [{
+			"root": "pages/login",
+			"pages": [
+
+				{
+					"path": "/index",
+					"style": {
+						"navigationBarTitleText": "登录"
+					}
+				},
+				{
+					"path": "/register",
+					"style": {
+						"navigationBarTitleText": "注册"
+					}
+				},
+				{
+					"path": "/email-verify",
+					"style": {
+						"navigationBarTitleText": "邮箱验证"
+					}
+				},
+				{
+					"path": "/area-code",
+					"style": {
+						"navigationBarTitleText": "国家/地区"
+					}
+				}
+
+			]
+		},
+		{
+			"root": "pages/content",
+			"pages": [{
+					"path": "share",
+					"style": {
+						"navigationBarTitleText": "分享"
+					}
+				},
+				{
+					"path": "mine",
+					"style": {
+						"navigationBarTitleText": "个人中心"
+					}
+				},
+				{
+					"path": "select-currency",
+					"style": {
+						"navigationBarTitleText": "选择币种"
+					}
+				},
+				{
+					"path": "top-up",
+					"style": {
+						"navigationBarTitleText": "充币"
+					}
+				},
+				{
+					"path": "charge-record",
+					"style": {
+						"navigationBarTitleText": "充币记录"
+					}
+				},
+				{
+					"path": "setting",
+					"style": {
+						"navigationBarTitleText": "系统设置"
+					}
+				},
+				{
+					"path": "safety-set",
+					"style": {
+						"navigationBarTitleText": "安全设置"
+					}
+				},
+				{
+					"path": "change-password",
+					"style": {
+						"navigationBarTitleText": "修改密码"
+					}
+				},
+				{
+					"path": "customer-service",
+					"style": {
+						"navigationBarTitleText": "客服"
+					}
+				}
+			]
+		}
+	],
+	"tabBar": {
+		"color": "#666666",
+		"selectedColor": "#0ED47F",
+		// "borderStyle": "#E7E7E7",
+		// "backgroundColor": "#FFFFFF",
+		"list": [{
+				"pagePath": "pages/index/index",
+				"iconPath": "./static/tabbar/tabbar_1.png",
+				"selectedIconPath": "./static/tabbar/tabbar_1_1.png",
+				"text": "首页"
+			},
+			{
+				"pagePath": "pages/exchange/index",
+				"iconPath": "./static/tabbar/tabbar_2.png",
+				"selectedIconPath": "./static/tabbar/tabbar_2_2.png",
+				"text": "币币"
+			},
 			{
-				"name": "", //模式名称
-				"path": "pages/login/email-verify", //启动页面,必选
-				"query": "email=biking2023@163.com" //启动参数,在页面的onLoad函数里面得到
+				"pagePath": "pages/contract/index",
+				"iconPath": "./static/tabbar/tabbar_3.png",
+				"selectedIconPath": "./static/tabbar/tabbar_3_3.png",
+				"text": "合约"
+			},
+			{
+				"pagePath": "pages/task/index",
+				"iconPath": "./static/tabbar/tabbar_4.png",
+				"selectedIconPath": "./static/tabbar/tabbar_4_4.png",
+				"text": "任务"
+			},
+			{
+				"pagePath": "pages/property/index",
+				"iconPath": "./static/tabbar/tabbar_5.png",
+				"selectedIconPath": "./static/tabbar/tabbar_5_5.png",
+				"text": "资产"
 			}
 		]
+	},
+	"globalStyle": {
+		"navigationStyle": "custom",
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "币王",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	},
+	"uniIdRouter": {},
+	"condition": { //模式配置,仅开发期间生效
+		"current": 0, //当前激活的模式(list 的索引项)
+		"list": [{
+			"name": "", //模式名称
+			"path": "", //启动页面,必选
+			"query": "" //启动参数,在页面的onLoad函数里面得到
+		}]
 	}
-}
+}

+ 24 - 0
pages/content/customer-service.vue

@@ -0,0 +1,24 @@
+<template>
+	<view >
+		<iframe-page />
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'customer-service',
+		data() {
+			return {
+
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.iframe-box{
+	width: 100%;
+	height: 100vh;
+ 
+}
+</style>

+ 58 - 42
pages/content/mine.vue

@@ -16,16 +16,21 @@
 		</headContent>
 
 		<!-- 个人信息 -->
-		<view class="mine-info">
-			<view class="mine-account">y1877295****163.com</view>
-			<view class="mine-UID">UID: 60005319<image class="copy-UID" src="../../static/logo.png" mode=""></image>
+		<view class="mine-info" v-if="showMuen">
+			<view class="mine-account">{{ userInfo.account_number }}</view>
+			<view class="mine-UID">UID: {{ userInfo.extension_code }}<image class="copy-UID" src="../../static/logo.png" mode=""></image>
 			</view>
 		</view>
+		<!-- 个人信息 -->
+		<view class="mine-info" v-else @click.stop="goLogin()">
+			<view class="mine-account">点击登录/注册</view>
+			<view class="mine-UID">Hi, 欢迎来到BiKing</view>
+		</view>
 
 		<gap />
 		<!-- 个人信息 -->
 		<view class="mine-muen">
-			<view class="mine-muen-item" @click.stop="openSafetySet()">
+			<view v-show="showMuen" class="mine-muen-item" @click.stop="openSafetySet()">
 				<view class="muen-content">
 					<image class="muen-icon" src="@/static/logo.png" mode="aspectFit" />
 					<text class="muen-text">安全设置</text>
@@ -35,17 +40,17 @@
 					<!-- <image class="muen-more-icon" src="../../static/logo.png" mode="aspectFit" /> -->
 				</view>
 			</view>
-			<view class="mine-muen-item">
+			<view v-show="showMuen" class="mine-muen-item">
 				<view class="muen-content">
 					<image class="muen-icon" src="@/static/logo.png" mode="aspectFit" />
 					<text class="muen-text">身份验证</text>
 				</view>
 				<view class="muen-more">
-					<text class="muen-more-text">去认证</text>
+					<text class="muen-more-text">{{ userInfo.is_realname == 1 ? '去认证' : '' }}</text>
 					<text class="more-icon iconfont">&#xe88e;</text>
 				</view>
 			</view>
-			<view class="mine-muen-item">
+			<view v-show="showMuen" class="mine-muen-item">
 				<view class="muen-content">
 					<image class="muen-icon" src="@/static/logo.png" mode="aspectFit" />
 					<text class="muen-text">提现地址</text>
@@ -54,7 +59,7 @@
 					<text class="more-icon iconfont">&#xe88e;</text>
 				</view>
 			</view>
-			<view class="mine-muen-item">
+			<view v-show="showMuen" class="mine-muen-item">
 				<view class="muen-content">
 					<image class="muen-icon" src="@/static/logo.png" mode="aspectFit" />
 					<text class="muen-text">我的红包</text>
@@ -63,7 +68,7 @@
 					<text class="more-icon iconfont">&#xe88e;</text>
 				</view>
 			</view>
-			<view class="mine-muen-item">
+			<view v-show="showMuen" class="mine-muen-item">
 				<view class="muen-content">
 					<image class="muen-icon" src="@/static/logo.png" mode="aspectFit" />
 					<text class="muen-text">活动中心</text>
@@ -81,7 +86,7 @@
 					<text class="more-icon iconfont">&#xe88e;</text>
 				</view>
 			</view>
-			<view class="mine-muen-item">
+			<view v-show="showMuen" class="mine-muen-item">
 				<view class="muen-content">
 					<image class="muen-icon" src="@/static/logo.png" mode="aspectFit" />
 					<text class="muen-text">合约战绩</text>
@@ -128,7 +133,7 @@
 					<text class="more-icon iconfont">&#xe88e;</text>
 				</view>
 			</view>
-			<view class="mine-muen-item">
+			<view class="mine-muen-item" @click.stop="getService()">
 				<view class="muen-content">
 					<image class="muen-icon" src="../../static/logo.png" mode="aspectFit" />
 					<text class="muen-text">在线客服</text>
@@ -146,13 +151,11 @@
 					<text class="more-icon iconfont">&#xe88e;</text>
 				</view>
 			</view>
-			<view class="mine-btn">
+			<view class="mine-btn" v-show="showMuen">
 				安全登录
 			</view>
 		</view>
-
-
-	
+ 
 		
 		<!-- 邀请 -->
 		<sharePage ref="sharePageRef" :tabBar="false"/>
@@ -162,9 +165,12 @@
 </template>
 
 <script>
+	import {
+		mapGetters
+	} from 'vuex'
 	import reverseBack from "@/components/headModules/reverse-back.vue"
 	import pageStyle from "@/components/headModules/style.vue"
-	import { Api_getUserInfo } from "@/api/index.js"
+	import { Way_getUserInfo } from "@/utils/common-request.js"
 	export default {
 		components: {
 			pageStyle,
@@ -172,34 +178,44 @@
 		},
 		data() {
 			return {
-				muenList: [{
-					icon: require("@/static/logo.png"),
-					name: '安全设置'
-				}, {
-					icon: require("@/static/logo.png"),
-					name: '身份验证'
-				}, {
-					icon: require("@/static/logo.png"),
-					name: '提现地址'
-				}, {
-					icon: require("@/static/logo.png"),
-					name: '我的红包'
-				}, {
-					icon: require("@/static/logo.png"),
-					name: '活动中心'
-				}, {
-					icon: require("@/static/logo.png"),
-					name: '邀请链接'
-				}, {
-					icon: require("@/static/logo.png"),
-					name: '合约战绩'
-				}]
+				showMuen:false,
+				userInfo:{}
 			};
 		},
 		onShow() {
-			this.getUserInfo()
+		 
+		},
+		computed: {
+			...mapGetters([
+				'token'
+			]),
+		},
+		watch:{
+			token:{
+				handler(newToken){
+					this.showMuen = newToken ? true : false
+					if(newToken){
+						this.getUserInfo()
+					}
+				},
+				immediate:true
+			}
 		},
 		methods:{
+			// 获取用户信息
+			getUserInfo(){
+				Way_getUserInfo().then(res => {
+					this.userInfo = res
+				}).catch(err => {
+					this.userInfo = {}
+				})
+			},
+			// 去登陆
+			goLogin(){
+				uni.navigateTo({
+					url: '/pages/login/index'
+				});
+			},
 			// 打开邀请
 			openShare(){
 				this.$nextTick(() => {
@@ -218,9 +234,9 @@
 					url:'/pages/content/safety-set'
 				})
 			},
-			getUserInfo(){
-				Api_getUserInfo().then(res => {
-					
+			getService(){
+				uni.navigateTo({
+					url:'/pages/content/customer-service'
 				})
 			}
 		}

+ 1 - 1
pages/contract/grants/open.vue

@@ -81,7 +81,7 @@
 		},
 
 		mounted() {
-			this.$refs.popupRef.open()
+			// this.$refs.popupRef.open()
 		},
 		methods: {
 			open() {

+ 2 - 6
pages/contract/index.vue

@@ -34,7 +34,7 @@
 		components:{notarize , sustainability , grants},
 		data() {
 			return {
-				contractIndex:2,
+				contractIndex:0,
 				contractArr:[
 					'永续合约',
 					'快捷合约',
@@ -45,11 +45,7 @@
 	}
 </script>
 
-<style>
-	page{
-		background-color: #fff;
-	}
-</style>
+ 
 <style lang="scss" scoped>
 	.navigation-box {
 		width: 100%;

+ 239 - 51
pages/contract/sustainability/index.vue

@@ -103,80 +103,110 @@
 			</view>
 			<view class="data-right">
 				<view class="right-select">
-					<uni-data-select class="select-item" v-model="value" @change="change"></uni-data-select>
-					<uni-data-select class="select-item" v-model="value" @change="change"></uni-data-select>
+					<view class="select-box position-select" @click.stop="selectList = !selectList">
+						<text class="select-text">{{ value }}</text>
+						<text class="iconfont">&#xe601;</text>
+						<view class="select-list" v-show="selectList">
+							<text @click.stop="value = item.value ; selectList = false"
+								:class="['select-list-item' , value === item.value ? 'active-select-item' : '']"
+								v-for="item in range">{{ item.value }}</text>
+						</view>
+					</view>
+					<view class="select-box">
+						<text class="select-text">全仓100x</text>
+						<text class="iconfont">&#xe601;</text>
+					</view>
+					<!-- <uni-data-select :localdata="range" class="select-item" v-model="value"
+						@change="change"></uni-data-select>
+					<uni-data-select class="select-item" v-model="value" @change="change"></uni-data-select> -->
 				</view>
 				<view class="right-input input-item-p">
 					市价
 				</view>
 				<view class="right-input">
-					<input class="input-item" placeholder-class="input-item-p" placeholder="市价">
+					<input class="input-item">
 					<view class="right-input-icon">
 						<text>张</text>
 						<text class="icon-link">|</text>
-						<image class="icon" src="../../../static/logo.png" mode=""></image>
+						<text class="switch-icon iconfont">&#xe607;</text>
 					</view>
 				</view>
-				
+
 				<view class="step-content">
 					<step />
 				</view>
-				
+
 				<view class="set-node">
 					<view class="set-node-status"></view>
 					<text class="set-node-text">设置止盈止损</text>
 				</view>
-				
+
 				<view class="info-item">
-					<text>成本</text>
-					<view>0.00 USDT</view>
+					<text class="info-item-lable">成本</text>
+					<view class="info-item-val">0.00 USDT</view>
 				</view>
-				
+
 				<view class="info-item">
-					<text>可用</text>
-					<view>
-						<text>10000.00 USDT</text>
+					<text class="info-item-lable">可用</text>
+					<view class="info-item-val">
+						<text>USDT</text>
+						<text class="info-item-icon iconfont">&#xe607;</text>
 					</view>
 				</view>
-				<view class="info-item">
-					<text>可做多</text>
-					<view>
-						<text>33719张</text>
+				<view class="info-btns">
+					<view class="info-btn-info">
+						<text class="info-btn-lable">可做多</text>
+						<text class="info-btn-val">33719张</text>
+					</view>
+					<view class="info-btn">
+						买入/做多
+					</view>
+				</view>
+				<view class="info-btns err-btns">
+					<view class="info-btn-info">
+						<text class="info-btn-lable">可做多</text>
+						<text class="info-btn-val">33719张</text>
+					</view>
+					<view class="info-btn">
+						卖出/做空
 					</view>
 				</view>
-				
+
 			</view>
 		</view>
-		
 
-	<drawer ref="drawerRef"/>
+
+		<drawer ref="drawerRef" />
 	</view>
 </template>
 
 <script>
 	import drawer from "./../modules/drawer.vue"
 	export default {
-		components:{drawer},
+		components: {
+			drawer
+		},
 		data() {
 			return {
-				value: undefined,
+				selectList: false,
+				value: '市价委托',
 				range: [{
-						value: 0,
-						text: "篮球"
+						value: '市价委托',
+						text: '市价委托'
 					},
 					{
-						value: 1,
-						text: "足球"
+						value: '限价委托',
+						text: '限价委托'
 					},
 					{
-						value: 2,
-						text: "游泳"
+						value: '计划委托',
+						text: '计划委托'
 					},
 				],
 			};
 		},
 		methods: {
-			openDrawer(){
+			openDrawer() {
 				this.$refs.drawerRef.open();
 			},
 			change(e) {
@@ -438,21 +468,90 @@
 				justify-content: space-between;
 				align-items: center;
 
-				.select-item {
-					width: 178rpx !important;
-					height: 48rpx;
+				.select-box {
+					width: 175rpx;
+					height: 50rpx;
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					background-color: #f1f1f1;
+					padding: 0 3px;
+					border-radius: 4rpx;
 
-					:v-deep .uni-select {
+					.select-text {
+						font-size: 26rpx;
+						font-weight: 700;
+					}
 
-						width: 178rpx !important;
-						height: 48rpx;
+					.iconfont {
+						font-size: 20rpx;
+						color: $Theme-Color;
+					}
+				}
 
-						.uni-select__input-box {
+				.position-select {
+					position: relative;
+
+					.select-list {
+						position: absolute;
+						left: 0;
+						top: 50rpx;
+						width: 185rpx;
+						display: flex;
+						flex-direction: column;
+						background-color: #fff;
+						z-index: 1;
+
+						.select-list-item {
 							width: 100%;
-							height: 48rpx !important;
+							height: 70rpx;
+							line-height: 70rpx;
+							padding: 0 30rpx;
+							font-size: 22rpx;
+							font-weight: bold;
+							color: #c1c1c1;
+						}
+
+						.active-select-item {
+							background-color: #f1f1f1;
+							color: #000;
 						}
 					}
 				}
+
+				// <view class="select-box">
+				// 	<text class="select-text">限价委托</text>
+				// 	<text class="iconfont">&#xe601;</text>
+				// </view>
+				// <view class="select-box">
+				// 	<text class="select-text">限价委托</text>
+				// 	<text class="iconfont">&#xe601;</text>
+				// </view>
+				// .select-item {
+				// 	width: 175rpx !important;
+				// 	height: 50rpx;
+				// 	flex: 0;
+
+				// 	::v-deep .uni-stat-box {
+				// 		width: 175rpx !important;
+				// 		height: 48rpx;
+
+				// 		.uni-select {
+
+				// 			width: 175rpx !important;
+				// 			height: 48rpx;
+
+				// 			.uni-select__input-box {
+				// 				width: 100%;
+				// 				height: 48rpx !important;
+				// 			}
+				// 			.uniui-clear{
+				// 				display: none;
+				// 			}
+				// 		}
+				// 	}
+
+				// }
 			}
 
 			.right-input {
@@ -476,11 +575,11 @@
 				}
 
 				.input-item-p {
-				font-size: 24rpx;
-				font-family: PingFang SC, PingFang SC-Bold;
-				font-weight: 700;
-				color: #808080;
-				line-height: 40rpx; 
+					font-size: 24rpx;
+					font-family: PingFang SC, PingFang SC-Bold;
+					font-weight: 700;
+					color: #808080;
+					line-height: 40rpx;
 					opacity: 0.3;
 				}
 
@@ -504,38 +603,127 @@
 					}
 				}
 			}
-			.step-content{
+
+			.step-content {
 				padding: 24rpx 0 35rpx;
 			}
-			
-			.set-node{
+
+			.set-node {
 				width: 100%;
 				display: flex;
 				align-items: center;
-				.set-node-status{
+
+				.set-node-status {
 					width: 27rpx;
 					height: 27rpx;
 					background: #e6e6e8;
 					border-radius: 2rpx;
 				}
-				.set-node-text{
-		 
+
+				.set-node-text {
+
 					font-size: 24rpx;
 					font-family: PingFang SC, PingFang SC-Regular;
 					font-weight: 400;
 					color: #808080;
 					line-height: 34rpx;
 					margin-left: 14rpx;
-					
+
 					border-bottom: 2rpx dashed #707070;
 				}
 			}
-			
+
+			.info-item {
+				width: 100%;
+				display: flex;
+				justify-content: space-between;
+				align-items: center;
+				font-size: 26rpx;
+				padding: 16rpx 0;
+				line-height: 1.1;
+
+				.info-item-lable {
+					color: #ccc;
+					border-bottom: 1rpx dashed #707070;
+				}
+
+				.info-item-val {
+					font-size: 22rpx;
+					font-weight: bold;
+					display: flex;
+					align-items: center;
+
+					.info-item-icon {
+						font-size: 20rpx;
+						margin-left: 20rpx;
+						width: 30rpx;
+						height: 30rpx;
+						background-color: $Theme-Color;
+						color: #fff;
+						text-align: center;
+						line-height: 30rpx;
+						border-radius: 6rpx;
+					}
+				}
+			}
+
+			.info-btns {
+				width: 100%;
+				padding-top: 16rpx;
+
+				.info-btn-info {
+					display: flex;
+					justify-content: space-between;
+					font-size: 24rpx;
+					padding-bottom: 10rpx;
+
+					.info-btn-lable {
+						color: #ccc;
+					}
+					.info-btn-val{
+						font-weight: bold;
+					}
+					// <view class="info-btn-info">
+					// 	<text class="info-btn-lable">可做多</text>
+					// 	<text class="info-btn-val">33719张</text>
+					// </view>
+				}
+
+				.info-btn {
+					width: 100%;
+					height: 80rpx;
+					background-color: $Theme-Color;
+					text-align: center;
+					line-height: 80rpx;
+					font-size: 30rpx;
+					color: #fff;
+				}
+			}
+
+			.err-btns {
+				.info-btn {
+					background-color: red;
+				}
+			}
+			// <view class="info-btns">
+			// 	<view class="info-btn-info">
+			// 		<text class="info-btn-lable">可做多</text>
+			// 		<text class="info-btn-val">33719张</text>
+			// 	</view>
+			// 	<view class="info-btn">
+			// 		买入/做多
+			// 	</view>
+			// </view>
+
 			// <view class="set-node">
 			// 	<view class="set-node-status"></view>
 			// 	<text class="set-node-text">设置止盈止损</text>
 			// </view>
-			
+
 		}
 	}
+			.switch-icon{
+				color: $Theme-Color;
+				font-size: 26rpx;
+			}
 </style>

+ 28 - 5
pages/index/index.vue

@@ -20,7 +20,7 @@
 		<carousels :BannerList="BannerList"></carousels>
 
 		<!-- 滚动消息 -->
-		<rollMessage></rollMessage>
+		<rollMessage :rollMsg="Announcement"></rollMessage>
 
 		<view style="width: 100%;height: 1rpx;"></view>
 		<!-- usdt -->
@@ -39,7 +39,7 @@
 		<view style="width: 100%;height: 8rpx;"></view>
 
 		<!-- 自选 / 市场 -->
-		<market></market>
+		<market :market="quotationNew"></market>
 	</view>
 </template>
 
@@ -53,7 +53,8 @@
 	import market from "./modules/market.vue"
 
 	import {
-		Api_getNewsList
+		Api_getNewsList,
+		Api_getQuotationNew
 	} from "@/api/index.js"
 
 	import {
@@ -72,7 +73,9 @@
 		data() {
 			return {
 				title: 'Hello',
-				BannerList:[]
+				BannerList: [],
+				Announcement: [],
+				quotationNew:[]
 			}
 		},
 		computed: {
@@ -81,9 +84,12 @@
 			]),
 		},
 		onLoad() {
-			this.getBanner()
+			this.getBanner();
+			this.getAnnouncement();
+			this.getQuotationNew()
 		},
 		methods: {
+			// 获取banner
 			getBanner() {
 				Api_getNewsList({
 					cid: 5,
@@ -91,6 +97,23 @@
 				}).then(res => {
 					this.BannerList = res.list
 				})
+			},
+			// 获取公告
+			getAnnouncement() {
+				Api_getNewsList({
+					cid: 3,
+					limit: 10
+				}).then(res => {
+					this.Announcement = res.list
+				})
+			},
+			// 获取行情 / 首页推荐
+			getQuotationNew() {
+				Api_getQuotationNew().then(res => {
+					this.quotationNew = res
+				}).catch(err => {
+
+				})
 			}
 		}
 	}

+ 7 - 1
pages/index/modules/market.vue

@@ -15,7 +15,7 @@
 			</swiper-item>
 			<swiper-item>
 				<scroll-view class="market-scroll" scroll-y>
-					<marketplace ref="marketplaceRef" />
+					<marketplace ref="marketplaceRef" :marketplaceList="market"/>
 				</scroll-view>
 			</swiper-item>
 
@@ -27,6 +27,12 @@
 <script>
 	export default {
 		name: "marketModules",
+		props:{
+			market:{
+				type:Array,
+				default:() => []
+			}
+		},
 		data() {
 			return {
 				marketTabIndex: 1,

+ 218 - 0
pages/login/area-code.vue

@@ -0,0 +1,218 @@
+<template>
+	<view>
+		<headContent>
+			<template #left>
+				<view class="head-revers-back iconfont" @click.stop="reversBackBtn()">&#xe604;</view>
+			</template>
+			<template #content>
+				<view class="haed-title">
+					国家/地区
+				</view>
+			</template>
+		</headContent>
+		<!-- :style="{'top': searchHeight + 'px'}" -->
+		<view class="search-box">
+
+		</view>
+		<view class="scroll-box" :style="{'height':scrollViewHeight + 'px'}">
+			<scroll-view scroll-y="true" class="scroll-Y" scroll-with-animation :scroll-into-view="scrollIntoView">
+				<block v-for="(val , key , index) in AreaList">
+					<view :id="key" v-if="val && val.length > 0">
+						<text class="search-letter">{{ key }}</text>
+						<view class="area-list">
+							<view class="area-item" v-for="item in val">
+								<text>{{item.name}}</text>
+								<text>+{{item.area_code}}</text>
+							</view>
+						</view>
+					</view>
+				</block>
+			</scroll-view>
+			<view class="letter-tag">
+				<block v-for="(val , key , index) in AreaList">
+					<text @click.stop="scrollIntoView = key" :class="['tag-item' , scrollIntoView === key ? 'area-key' : '']"
+						v-if="val && val.length > 0">{{ key }}</text>
+				</block>
+
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		reverseBack
+	} from "@/utils/common.js"
+	import {
+		mapGetters
+	} from 'vuex'
+	import {
+		Api_getAreaCode
+	} from "@/api/index.js"
+	export default {
+
+		data() {
+			return {
+				scrollIntoView: 'A',
+				scrollViewHeight: 0,
+				AreaList: []
+			};
+		},
+		computed: {
+			...mapGetters([
+				'statusBarHeight',
+				'headHeight'
+			])
+		},
+		created() {
+			const app = uni.getWindowInfo()
+			let pageHeight = app.windowHeight || app.screenHeight
+			this.scrollViewHeight = pageHeight - uni.upx2px(this.headHeight.split('rpx')[0]) - this.statusBarHeight - uni
+				.upx2px(100)
+
+			console.log('app = ', this.scrollViewHeight)
+			this.getAreaCode()
+		},
+		methods: {
+			reversBackBtn() {
+				reverseBack()
+			},
+			getAreaCode() {
+
+				Api_getAreaCode().then(res => {
+					this.areaRank(res)
+				}).catch(err => {
+
+				})
+			},
+			areaRank(areaList = []) {
+				const letters = {
+					'A': [],
+					'B': [],
+					'C': [],
+					'D': [],
+					'E': [],
+					'F': [],
+					'G': [],
+					'H': [],
+					'I': [],
+					'J': [],
+					'K': [],
+					'L': [],
+					'M': [],
+					'N': [],
+					'O': [],
+					'P': [],
+					'Q': [],
+					'R': [],
+					'S': [],
+					'T': [],
+					'U': [],
+					'V': [],
+					'W': [],
+					'X': [],
+					'Y': [],
+					'Z': [],
+					'#': []
+				}
+				if (areaList && areaList.length > 0) {
+					areaList.forEach(el => {
+						if (el.name) {
+							let initialLetter = el.name.slice(0, 1)
+							letters[initialLetter].push(el)
+						} else {
+							letters['#'].push(el)
+						}
+
+					})
+				};
+				this.AreaList = letters
+			}
+
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import "~./common.scss";
+
+	.search-box {
+		width: 100%;
+		height: 100rpx;
+	}
+
+	.search-shadow {
+
+		width: 100%;
+		height: 100rpx;
+	}
+
+	.search-letter {
+		display: inline-block;
+		width: 100%;
+		height: 80rpx;
+		background-color: $page-bg;
+		padding: 0 $pages-padding;
+		line-height: 80rpx;
+		font-size: 28rpx;
+		color: #c1c1c1;
+	}
+
+	.area-list {
+		width: 100%;
+		padding: 0 $pages-padding;
+
+		.area-item {
+			width: 100%;
+			height: 100rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			border-bottom: 1rpx solid $border-color;
+			font-size: 28rpx;
+			padding-right: 30rpx;
+
+			&:last-child {
+				border-bottom: none;
+			}
+		}
+
+	}
+
+	.scroll-box {
+		width: 100%;
+		position: relative;
+
+		.letter-tag {
+			position: absolute;
+			right: 0;
+			top: 50%;
+			padding: 0 10rpx 0 20rpx;
+			transform: translateY(-50%);
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: center;
+
+			.tag-item {
+				padding: 10rpx;
+				font-size: 22rpx;
+				// width: 20rpx;
+				
+			}
+			.area-key{
+				background-color: #c1c1c1;
+				border-radius: 50%;
+			}
+		}
+	}
+
+	.scroll-Y {
+		width: 100%;
+		height: 100%;
+
+
+
+	}
+</style>

+ 18 - 10
pages/login/common.scss

@@ -149,19 +149,27 @@
 			font-size: 32rpx;
 			font-weight: bold;
 		}
-		.form-hint{
-			width: 100%;
-			padding: 46rpx 0 0;
-			font-size: 26rpx;
-			text-align: center;
-			color: #ccc;
-			.hint-btn{
-				color: $Theme-Color;
-			}
-		}
 		
 	}
 	
+	.form-hint{
+		width: 100%;
+		padding: 46rpx 0 0;
+		font-size: 24rpx;
+		line-height: 1.2;
+		color: #c1c1c1;
+		display: flex;
+		justify-content: center;
+		align-items: stretch;
+		.hint-btn{
+			color: $Theme-Color;
+		}
+		.form-hint-link{
+			margin: 0 10px;
+			width: 1rpx;
+			background-color: #cfcfcf;
+		}
+	}
 	.code-box{
 		width: 100%;
 		margin-top: 50rpx;

+ 22 - 16
pages/login/index.vue

@@ -11,18 +11,19 @@
 			<text class="login-title">登录</text>
 			<text class="login-content">Hi, 欢迎来到币王</text>
 
-			<view class="tab-box">
-				<view class="tab">
-					<view v-for="(item , index) in marketTab"
-						:class="['tab-item' , index === marketTabIndex ? 'active-tab-item' : '' ]"
-						@click.stop="marketTabIndex = index">
-						{{ item }}
-					</view>
+			<tabList ref="tabListRef" :tabIndex.sync="tabIndexs" />
+			<!-- <component :is="phoneLogin"/> -->
 
-				</view>
-				<!-- <component :is="phoneLogin"/> -->
+			<phoneLogin v-show="tabIndexs === 0" />
+
+			<emailLogin v-show="tabIndexs === 1" />
+
+
+			<view class="form-hint">
+				<text>忘记密码?</text>
+				<text class="form-hint-link"></text>
+				<text @click.stop="register">立即注册</text>
 			</view>
-			<phoneLogin />
 		</view>
 
 
@@ -34,25 +35,30 @@
 		reverseBack
 	} from "@/utils/common.js"
 	import phoneLogin from "./modules/phone.vue"
+	import emailLogin from "./modules/email.vue"
 	import mailboxLogin from "./modules/mailbox.vue"
+	import tabList from "./modules/tab.vue"
 	export default {
 		name: 'login',
 		components: {
 			phoneLogin,
-			mailboxLogin
+			emailLogin,
+			mailboxLogin,
+			tabList
 		},
 		data() {
 			return {
-				marketTabIndex: 0,
-				marketTab: [
-					'手机号',
-					'邮箱'
-				]
+				tabIndexs: 1,
 			};
 		},
 		methods: {
 			reversBackBtn() {
 				reverseBack()
+			},
+			register(){
+				uni.navigateTo({
+					url: '/pages/login/register'
+				})
 			}
 		}
 	}

+ 71 - 0
pages/login/modules/email.vue

@@ -0,0 +1,71 @@
+<template>
+	<form class="login-form">
+		<view class="form-item">
+			<input class="form-input" v-model="formData.user_string" name="user_string"
+				placeholder-class="form-input-place" placeholder="请输入您的邮箱地址" />
+		</view>
+		<view class="form-item">
+			<input type="password" class="form-input" v-model="formData.password" name="password"
+				placeholder-class="form-input-place" placeholder="请输入您的登录密码" />
+		</view>
+		<!-- <view class="form-agreement">
+			<view class="agreement-confirm">
+				<text class="confirm-icon iconfont">&#xe6c5;</text>
+			</view>
+			<text>我已阅读并同意</text>
+			<text class="agreement-name">《用户协议》</text>
+		</view> -->
+		<view class="form-btn" style="margin-top: 28rpx;" @click.stop="formSubmit">
+			登录
+		</view>
+
+		<slider-verify ref="sliderVerifyRef" />
+	</form>
+</template>
+
+<script>
+	import {
+		reverseBack
+	} from "@/utils/common.js"
+	import {
+		Api_userLogin
+	} from "@/api/index.js"
+
+	export default {
+		data() {
+			return {
+				formData: {
+					// user_string: '14100000001',
+					// password: '123456'
+				}
+			};
+		},
+		methods: {
+			selectAreaCode() {
+				uni.navigateTo({
+					url: '/pages/login/area-code'
+				})
+			},
+			formSubmit() {
+				Api_userLogin(this.formData).then(res => {
+					// setToken(res)
+					if (res) {
+						this.$store.dispatch("app/setToken", res)
+						uni.showToast({
+							title: '登录成功',
+							icon: 'none'
+						});
+						setTimeout(() => {
+							reverseBack()
+						}, 1500)
+					}
+
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import "~./../common.scss"
+</style>

+ 6 - 2
pages/login/modules/phone.vue

@@ -1,7 +1,7 @@
 <template>
 	<form class="login-form">
 		<view class="form-item">
-			<view class="form-lable"><text>+86</text><text class="form-lable-icon iconfont">&#xe601;</text></view>
+			<view class="form-lable" @click.stop="selectAreaCode()"><text>+86</text><text class="form-lable-icon iconfont">&#xe601;</text></view>
 			<input class="form-input" v-model="formData.user_string" name="user_string"
 				placeholder-class="form-input-place" placeholder="请输入您的手机号" />
 		</view>
@@ -45,9 +45,13 @@
 			};
 		},
 		methods: {
+			selectAreaCode(){
+				uni.navigateTo({
+					url:'/pages/login/area-code'
+				})
+			},
 			formSubmit() {
 				Api_userLogin(this.formData).then(res => {
-					// setToken(res)
 					if (res) {
 						this.$store.dispatch("app/setToken", res)
 						uni.showToast({

+ 38 - 8
pages/property/index.vue

@@ -3,7 +3,8 @@
 		<headContent :showleftRight="false">
 			<template #content>
 				<view class="navigation-box">
-					<view :class="['navigation-item hide_1' , navigationIndex === index ? 'active-navigation-item' : '']"
+					<view
+						:class="['navigation-item hide_1' , navigationIndex === index ? 'active-navigation-item' : '']"
 						v-for="(item , index) in navigationArr" :key="`navigation_${index}`"
 						@click.stop="navigationIndex = index">
 						{{ item }}
@@ -12,7 +13,7 @@
 			</template>
 		</headContent>
 		<view class="content">
-			<card :cardIndex="navigationIndex"></card>
+			<card :cardIndex="navigationIndex" :userInfo="UserInfo"></card>
 			<!-- 合约账户 -->
 			<template v-if="navigationIndex === 0">
 				<contractModules />
@@ -29,17 +30,21 @@
 				<GiftMoneyModules />
 			</template>
 		</view>
-		
+
 		<!-- <uni-load-more /> -->
 	</view>
 </template>
 
 <script>
+	import {
+		mapGetters
+	} from 'vuex'
 	import card from "./modules/card.vue"
 	import contractModules from "./modules/contract/index.vue"
 	import GiftMoneyModules from "./modules/GiftMoney/index.vue"
 	import legalTenderModules from "./modules/legalTender/index.vue"
 	import BibiModules from "./modules/Bibi/index.vue"
+	import { Way_getUserInfo } from "@/utils/common-request.js"
 	export default {
 		name: 'property',
 		components: {
@@ -57,11 +62,38 @@
 					'币币账户',
 					'法币账户',
 					'赠金账户'
-				]
+				],
+				UserInfo: null
 			};
 		},
-		onReachBottom(){
+		computed: {
+			...mapGetters([
+				'token'
+			]),
+		},
+		onShow() {
+			if(this.token){
+				this.getUserInfo()
+			}else{
+				uni.navigateTo({
+					url: '/pages/login/index'
+				})
+			}
+		},
+		onReachBottom() {
 			console.log('页面触底')
+		},
+		methods:{
+			getUserInfo(){
+				Way_getUserInfo().then(res => {
+					this.UserInfo = res
+					console.log('this.UserInfo = ' , this.UserInfo.legal_wallet)
+				}).catch(err => {
+					this.UserInfo = null
+				})
+				
+				
+			}
 		}
 	}
 </script>
@@ -71,9 +103,7 @@
 		background-color: #fff;
 		min-height: 100vh;
 
-		.content {
-		
-		}
+		.content {}
 	}
 
 	.navigation-box {

+ 5 - 1
pages/property/modules/card.vue

@@ -9,7 +9,7 @@
 				29858.7458
 			</view>
 			<view class="card-nums">
-				=¥ 205129.58
+				¥ 205129.58
 			</view>
 			<view class="card-muen">
 				<block v-for="(item , index ) in cardMuen[cardIndex]">
@@ -48,6 +48,10 @@
 	export default {
 		name: 'cardModules',
 		props: {
+			userInfo:{
+				type:[String , Object],
+				default: null
+			},
 			cardIndex: {
 				type: Number,
 				default: 0

+ 4 - 3
static/fontsize/iconfont.css

@@ -1,8 +1,9 @@
+
 @font-face {
   font-family: 'iconfont';  /* Project id 4023758 */
-  src: url('https://at.alicdn.com/t/c/font_4023758_1pgy8jhfbhf.woff2?t=1682218358021') format('woff2'),
-       url('https://at.alicdn.com/t/c/font_4023758_1pgy8jhfbhf.woff?t=1682218358021') format('woff'),
-       url('https://at.alicdn.com/t/c/font_4023758_1pgy8jhfbhf.ttf?t=1682218358021') format('truetype');
+  src: url('https://at.alicdn.com/t/c/font_4023758_n964mkrdhk.woff2?t=1682330143550') format('woff2'),
+       url('https://at.alicdn.com/t/c/font_4023758_n964mkrdhk.woff?t=1682330143550') format('woff'),
+       url('https://at.alicdn.com/t/c/font_4023758_n964mkrdhk.ttf?t=1682330143550') format('truetype');
 }
 .iconfont {
 	font-family: "iconfont" !important;

+ 1 - 1
uni.scss

@@ -18,7 +18,7 @@ $box-bg: #f1f1f1;
 $modules-box-bg:#ffffff;
 $Theme-Color: #05C175;
 $border-color: rgba(204, 204, 204, 0.2);
-
+$headFixedZIndex:50,
 
 /* 颜色变量 */
 

+ 15 - 0
utils/common-request.js

@@ -0,0 +1,15 @@
+import {
+	Api_getUserInfo
+} from "@/api/index.js"
+
+
+// 获取个人信息
+export const Way_getUserInfo = () => {
+	return new Promise((resolve, reject) => {
+		Api_getUserInfo().then(res => {
+			resolve(res)
+		}).catch(err => {
+			reject()
+		})
+	})
+}

+ 2 - 1
utils/common.js

@@ -1,5 +1,6 @@
 // import config from "./config"
 // import store from "@/store/index.js"
+
 import config from "./config.js"
 export const setToken = (tokenVal) => {
 	try {
@@ -48,4 +49,4 @@ export const reverseBack = () => {
 			fail: err => {}
 		})
 	}
-}
+}

+ 2 - 2
utils/config.js

@@ -1,7 +1,7 @@
  const config = {
  	tokenKey: 'token', 
- 	// baseUrl: 'baseUrlTest',
- 	baseUrl: 'https://doc.okenx.com',
+ 	baseUrl: '/Api',
+ 	// baseUrl: 'https://doc.okenx.com',
 
 
  	stocksColorObj: {

+ 1 - 2
utils/request.js

@@ -64,7 +64,7 @@ export const request = async (opt = {}) => {
 
 	// 处理请求地址
 	opt.url = baseUrl + opt.url
-
+	console.log('opt.url = ' , opt.url)
 	// 处理公共参数
 
 	opt.data = data
@@ -76,7 +76,6 @@ export const request = async (opt = {}) => {
 		const handler = uni.request(Object.assign({}, opt, {
 			success: (res) => {
 				const data = res.data;
-				console.log('data = ', res)
 				delete pending[key]
 				if (data.type === 'ok') {
 					resolve(data.message)

+ 15 - 0
vue.config.js

@@ -0,0 +1,15 @@
+module.exports = {
+	devServer:{
+		port:'8080',
+		disableHostCheck:true,
+		proxy:{
+			'/Api':{
+				target: 'https://doc.okenx.com',
+				changeOrigin:true,
+				pathRewrite:{
+					'^/Api': ''
+				}
+			}
+		}
+	}
+}