hwq 3 gadi atpakaļ
vecāks
revīzija
9efd730f21
95 mainītis faili ar 11859 papildinājumiem un 9223 dzēšanām
  1. 26 0
      api/address.js
  2. 66 0
      api/functionalUnit.js
  3. 146 0
      api/order.js
  4. 8 0
      api/product.js
  5. 25 0
      api/user.js
  6. 219 0
      components/ss-calendar/ss-calendar.vue
  7. 141 0
      components/uni-rate/uni-rate.vue
  8. 244 0
      components/uni-steps/uni-steps.vue
  9. 599 4696
      components/wangding-pickerAddress/data.js
  10. 2 2
      manifest.json
  11. 216 70
      pages.json
  12. 315 0
      pages/address/address.vue
  13. 243 0
      pages/address/addressManage.vue
  14. 0 372
      pages/assets/assets.vue
  15. 0 460
      pages/assets/details.vue
  16. 312 0
      pages/assets/logroll.vue
  17. 26 26
      pages/assets/myPing.vue
  18. 0 211
      pages/assets/recharge.vue
  19. 1 1
      pages/assets/teamDetails.vue
  20. 0 286
      pages/assets/transfer.vue
  21. 0 381
      pages/assets/withdraw.vue
  22. 555 0
      pages/cart/cart.vue
  23. 224 0
      pages/category/category.vue
  24. 121 0
      pages/conversion/candy.vue
  25. 90 0
      pages/conversion/transfers.vue
  26. 12 12
      pages/index/appointment.vue
  27. 11 8
      pages/index/appointmentD.vue
  28. 0 508
      pages/index/datile.vue
  29. 180 99
      pages/index/index.vue
  30. 5 5
      pages/index/info.vue
  31. 0 88
      pages/index/nodeList.vue
  32. 386 0
      pages/index/sign.vue
  33. 0 91
      pages/index/teachD.vue
  34. 0 88
      pages/index/teachList.vue
  35. 95 339
      pages/market/details.vue
  36. 3 3
      pages/market/duihuan.vue
  37. 195 453
      pages/market/market.vue
  38. 7 7
      pages/market/myCalculation.vue
  39. 33 52
      pages/market/pay.vue
  40. 8 0
      pages/message/message.vue
  41. 5 4
      pages/money/award.vue
  42. 416 0
      pages/money/integralP.vue
  43. 416 0
      pages/money/integralShopping.vue
  44. 316 0
      pages/money/phone.vue
  45. 5 4
      pages/money/wallet.vue
  46. 143 0
      pages/order/createOrder.vue
  47. 405 0
      pages/order/evaluate.vue
  48. 74 0
      pages/order/expressInfo.vue
  49. 674 0
      pages/order/order.vue
  50. 178 0
      pages/order/orderDetail.vue
  51. 237 0
      pages/order/orderRefund.vue
  52. 509 0
      pages/product/list.vue
  53. 166 0
      pages/product/ping.vue
  54. 253 0
      pages/product/pingDetails.vue
  55. 2579 0
      pages/product/product.vue
  56. 1 1
      pages/set/set.vue
  57. 52 0
      pages/user/about.vue
  58. 202 251
      pages/user/extension.vue
  59. 0 137
      pages/user/extensionList.vue
  60. 11 9
      pages/user/fuli.vue
  61. 2 2
      pages/user/fulilist.vue
  62. 35 30
      pages/user/myNote.vue
  63. 570 0
      pages/user/myjiedian.vue
  64. 0 153
      pages/user/notice.vue
  65. 0 354
      pages/user/rake.vue
  66. 96 20
      pages/user/user.vue
  67. BIN
      static/icon/add.png
  68. BIN
      static/icon/f-l.png
  69. BIN
      static/icon/f-r.png
  70. BIN
      static/icon/reduce.png
  71. BIN
      static/img/auto.png
  72. BIN
      static/img/down.png
  73. BIN
      static/img/fire.png
  74. BIN
      static/img/fwq-bg.png
  75. BIN
      static/img/index4.png
  76. BIN
      static/img/logroll-bg.png
  77. BIN
      static/img/myJ-bg.png
  78. BIN
      static/img/pgTip.png
  79. BIN
      static/img/rengouBg.png
  80. BIN
      static/img/sanchaji.png
  81. BIN
      static/img/sign-bg.png
  82. BIN
      static/img/sign-main.png
  83. BIN
      static/img/sign-popup.png
  84. BIN
      static/img/user-integralP.png
  85. BIN
      static/img/zhengyi10.png
  86. BIN
      static/tabBar/tab-assets-current.png
  87. BIN
      static/tabBar/tab-assets.png
  88. BIN
      static/tabBar/tab-home-current.png
  89. BIN
      static/tabBar/tab-home.png
  90. BIN
      static/tabBar/tab-market-current.png
  91. BIN
      static/tabBar/tab-market.png
  92. BIN
      static/tabBar/tab-message-current.png
  93. BIN
      static/tabBar/tab-message.png
  94. BIN
      static/tabBar/tab-my-current.png
  95. BIN
      static/tabBar/tab-my.png

+ 26 - 0
api/address.js

@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+export function getAddressList(data) {
+	return request({
+		url: '/api/address/list',
+		method: 'get',
+		data
+	});
+}
+export function addressEdit(data) {
+	return request({
+		url: '/api/address/edit',
+		method: 'post',
+		data
+	});
+}
+// 删除地址
+export function addressDel(data) {
+	return request({
+		url: '/api/address/del',
+		method: 'post',
+		data
+	});
+}
+
+

+ 66 - 0
api/functionalUnit.js

@@ -0,0 +1,66 @@
+import request from '@/utils/request'
+
+//获取优惠券列表
+export function getCouponsList(data,types) {
+	//优惠券状态 0全部 1未使用 2已使用
+	return request({
+		url: '/api/coupons/user/'+types,
+		method: 'get',
+		data
+	});
+}
+
+//领取优惠券
+export function setCoupons(data) {
+	return request({
+		url: '/api/coupon/receive',
+		method: 'post',
+		data
+	});
+}
+
+//获取可使用优惠券
+export function couponsOrder(data,price) {
+	return request({
+		url: '/api/coupons/order/'+price,
+		method: 'get',
+		data
+	});
+}
+
+
+//	积分列表
+export function integrallist(data) {
+	return request({
+		url: '/api/integral/list',
+		method: 'get',
+		data
+	});
+}
+
+
+// 获取签到列表
+export function signList(data) {
+	return request({
+		url: '/api/sign/list',
+		method: 'get',
+		data
+	});
+}
+// 点击签到
+export function integral(data) {
+	return request({
+		url: '/api/sign/integral',
+		method: 'post',
+		data
+	});
+}
+
+// 签到信息
+export function signUser(data) {
+	return request({
+		url: '/api/sign/user',
+		method: 'post',
+		data
+	});
+}

+ 146 - 0
api/order.js

@@ -0,0 +1,146 @@
+import request from '@/utils/request'
+import {upFilse} from '@/utils/request'
+// 订单确认
+export function confirm(data) {
+	return request({
+		url: '/api/order/confirm',
+		method: 'post',
+		data
+	});
+}
+//获取可使用优惠券
+export function couponsOrder(data,price) {
+	return request({
+		url: '/api/coupons/order/'+price,
+		method: 'get',
+		data
+	});
+}
+//获取优惠券列表
+export function getCouponsList(data,types) {
+	//优惠券状态 0全部 1未使用 2已使用
+	return request({
+		url: '/api/coupons/user/'+types,
+		method: 'get',
+		data
+	});
+}
+//提交评论
+export function order_comment(data) {
+	return request({
+		url: '/api/order/comment',
+		method: 'post',
+		data
+	});
+}
+//订单产品信息
+export function product(data) {
+	return request({
+		url: '/api/order/product',
+		method: 'post',
+		data
+	});
+}
+// 快递查询
+export function express_query(data) {
+	return request({
+		url: '/api/order/express_query',
+		method: 'get',
+		data
+	});
+}
+//上传图片
+export function upload(data) {
+	return upFilse({
+		url: '/api/upload/image',
+		method: 'post',
+		data
+	});
+}
+// 订单列表
+export function orderList(data) {
+	return request({
+		url: '/api/order/list',
+		method: 'get',
+		data
+	});
+}
+// 订单详细
+export function orderDetail(data,orderid) {
+	return request({
+		url: '/api/order/detail/'+orderid,
+		method: 'get',
+		data
+	});
+}
+
+// 取消订单
+export function orderCancel(data) {
+	return request({
+		url: '/api/order/cancel',
+		method: 'post',
+		data
+	});
+}
+
+// 删除订单
+export function orderDel(data) {
+	return request({
+		url: '/api/order/del',
+		method: 'get',
+		data
+	});
+}
+// 申请退款
+export function refund(data) {
+	return request({
+		url: '/api/order/refund/verify',
+		method: 'post',
+		data
+	});
+}
+// 退款理由列表
+export function refundReason(data) {
+	return request({
+		url: '/api/order/refund/reason',
+		method: 'get',
+		data
+	});
+}
+
+// 确认收货
+export function orderTake(data) {
+	return request({
+		url: '/api/order/take',
+		method: 'post',
+		data
+	});
+}
+
+// 订单支付
+export function orderPay(data) {
+	return request({
+		url: '/api/order/pay',
+		method: 'post',
+		data
+	});
+}
+
+// 创建订单
+export function createOrderkey(data,key) {
+	return request({
+		url: '/api/order/create/'+key,
+		method: 'post',
+		data
+	});
+}
+
+// 统计订单金额
+export function computedOrderkey(data) {
+	return request({
+		url: '/api/order/computed/'+data.orderkey,
+		method: 'post',
+		data
+	});
+}
+

+ 8 - 0
api/product.js

@@ -8,6 +8,14 @@ export function lala(data) {
 		data
 	});
 }
+// 获取商品分类
+export function getCategoryList(data) {
+	return request({
+		url: '/api/category',
+		method: 'get',
+		data
+	});
+}
 // 可拼团列表
 export function auto(data) {
 	return request({

+ 25 - 0
api/user.js

@@ -104,4 +104,29 @@ export function article(data,id) {
 		method: 'GET',
 		data
 	});
+}
+// 购物车列表
+export function getCartList(data) {
+	return request({
+		url: '/api/cart/list',
+		method: 'get',
+		data
+	});
+}
+
+// 修改购物车数量
+export function getCartNum(data) {
+	return request({
+		url: '/api/cart/num',
+		method: 'post',
+		data
+	});
+}
+//删除购物车
+export function cartDel(data) {
+	return request({
+		url: '/api/cart/del',
+		method: 'post',
+		data
+	});
 }

+ 219 - 0
components/ss-calendar/ss-calendar.vue

@@ -0,0 +1,219 @@
+<template>
+	<view class="calendar__wrap">
+		<view class="header">
+			<view class="current-date">{{ currentDate }}</view>
+		</view>
+		<view class="body">
+			<view class="weeks">
+				<view class="week__item" v-for="week in weeks" :key="week">{{ week }}</view>
+			</view>
+			<view class="day__list">
+				<view class="day__item" v-for="(item, index) in dateData" :key="index">
+					<view class="checked-box" :class="[checksClass]" v-if="item === 'checked'">
+						<text class="checked iconfont iconfavor" v-if="!checksIcon"></text>
+						<image v-else :src="checksIcon" mode="aspectFit"></image>
+						<view class="check_text" v-if="checkTextShow">{{ dayLoad(index) }}</view>
+					</view>
+					<text class="current-box" :class="[item === day ? (actionClass ? actionClass : 'current') : '']" v-else>{{ item }}</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		//选中的日期数据
+		checks: {
+			type: Array,
+			default() {
+				// 例子[1,2,3,4],表示本月1,2,3,4号4天被选中
+				return [];
+			}
+		},
+		// 选中物品的样式类
+		checksClass: {
+			type: String,
+			default: ''
+		},
+		// 选中时图标
+		checksIcon: {
+			type: String
+		},
+		// 选中时是否显示文字
+		checkTextShow: {
+			type: Boolean, 
+			default: false
+		},
+		// 表示当前日期的样式
+		actionClass: {
+			type: String,
+			default: ''
+		}
+	},
+	data() {
+		const { year, month, day } = this.getDate();
+		const dateData = this.getDateData(year, month);
+		const noDay = ( new Date(year,month-1,1)).getDay();
+		return {
+			year,
+			month,
+			day,
+			dateData,
+			noDay,//本月1号是星期几
+			weeks: ['日', '一', '二', '三', '四', '五', '六'],
+		};
+	},
+	computed: {
+		// 获取当前日期
+		currentDate() {
+			return `${this.year}-${this.format(this.month)}`;
+		}
+	},
+	watch: {
+		checks(val) {
+			const { year, month } = this.getDate();
+			const dateData = this.getDateData(year, month);
+			// 保存当前月份信息
+			this.dateData = dateData;
+		},
+	},
+	methods: {
+		// 重新计算时间
+		dayLoad: function(value) {
+			return value + 1 - this.noDay;
+		},
+		// 获取当前日期
+		getDate(current) {
+			console.log(current);
+			const date = current ? new Date(current) : new Date();
+			const year = date.getFullYear();
+			// 月份值默认从0开始
+			const month = date.getMonth() + 1;
+			const day = date.getDate();
+			return {
+				year,
+				month,
+				day
+			};
+		},
+		// 日期处理
+		getDateData(year, month) {
+			// 新增月份时需要减少1个月
+			const date = new Date(year,month-1,1);
+			const firstDayWeek = date.getDay();
+			const data = [...this.getEmptys(firstDayWeek), ...this.getDays(firstDayWeek)];
+			return data;
+		},
+		// 查询日期列表有几个空格
+		getEmptys(count) {
+			let arr = [];
+			if (count) {
+				for (let i = 0; i < count; i++) {
+					arr.push('');
+				}
+			}
+			return arr;
+		},
+		getLastDay() {
+			let { year, month } = this.getDate();
+			month += 1;
+			if (month > 11) {
+				year += 1;
+				month = 1;
+			}
+			let firstDayTimeStamp = new Date(`${year}/${month}/1`).getTime();
+			let oneDayTimeStamp = 24 * 60 * 60 * 1000;
+			let lastDay = new Date(firstDayTimeStamp - oneDayTimeStamp).getDate();
+			return lastDay;
+		},
+		getDays() {
+			const lastDay = this.getLastDay();
+			const days = [];
+			for (let i = 1; i <= lastDay; i++) {
+				days.push(this.checks.includes(i) ? 'checked' : i);
+			}
+			return days;
+		},
+		format(num) {
+			return num < 10 ? `0${num}` : num;
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.calendar__wrap {
+	background-color: #fff;
+	color: $uni-text-color;
+	.header {
+		padding: 0 24rpx;
+		.current-date {
+			text-align: center;
+			font-size: $font-lg + 2rpx;
+			// border-bottom: 2rpx solid #eee;
+			padding: 32rpx 0;
+		}
+	}
+	.body {
+		.weeks {
+			display: flex;
+			font-size: $font-lg;
+			padding: 10rpx 0;
+			background-color: #f4f7ff;
+			.week__item {
+				flex: 1;
+				text-align: center;
+			}
+		}
+		.day__list {
+			display: flex;
+			flex-wrap: wrap;
+			.day__item {
+				display: flex;
+				justify-content: center;
+				width: 14.285%;
+				text-align: center;
+				padding: 30rpx 0;
+				font-size: 34rpx;
+				color: $font-color-light;
+				.checked-box,
+				.current-box {
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: 100%;
+					box-sizing: border-box;
+					position: relative;
+				}
+				image,
+				.checked-box,
+				.current-box,
+				.check_text {
+					width: 56rpx;
+					height: 56rpx;
+					line-height: 56rpx;
+				}
+				image,
+				.check_text {
+					position: absolute;
+					top: 0;
+					left: 0;
+				}
+				.checked {
+					font-size: 40rpx;
+					background-color: #3f9dff;
+					color: #fff;
+				}
+				.current {
+					padding: 12rpx;
+					background-color: #3f9dff;
+					color: #fff;
+					font-size: 28rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 141 - 0
components/uni-rate/uni-rate.vue

@@ -0,0 +1,141 @@
+<template>
+	<view class="uni-rate">
+		<view :key="index" :style="{ marginLeft: margin + 'px' }" @click="_onClick(index)" class="uni-rate__icon" v-for="(star, index) in stars">
+			<uni-icons :color="color" :size="size" :type="isFill ? 'star-filled' : 'star'" />
+			<!-- #ifdef APP-NVUE -->
+			<view :style="{ width: star.activeWitch.replace('%','')*size/100+'px'}" class="uni-rate__icon-on">
+				<uni-icons style="text-align: left;" :color="activeColor" :size="size" type="star-filled" />
+			</view>
+			<!-- #endif -->
+			<!-- #ifndef APP-NVUE -->
+			<view :style="{ width: star.activeWitch,top:-size/2+'px' }" class="uni-rate__icon-on">
+				<uni-icons :color="activeColor" :size="size" type="star-filled" />
+			</view>
+			<!-- #endif -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcons from "../uni-icons/uni-icons.vue";
+	export default {
+		name: "UniRate",
+		components: {
+			uniIcons
+		},
+		props: {
+			isFill: {
+				// 星星的类型,是否镂空
+				type: [Boolean, String],
+				default: true
+			},
+			color: {
+				// 星星的颜色
+				type: String,
+				default: "#ececec"
+			},
+			activeColor: {
+				// 星星选中状态颜色
+				type: String,
+				default: "#ffca3e"
+			},
+			size: {
+				// 星星的大小
+				type: [Number, String],
+				default: 24
+			},
+			value: {
+				// 当前评分
+				type: [Number, String],
+				default: 0
+			},
+			max: {
+				// 最大评分
+				type: [Number, String],
+				default: 5
+			},
+			margin: {
+				// 星星的间距
+				type: [Number, String],
+				default: 0
+			},
+			disabled: {
+				// 是否可点击
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		data() {
+			return {
+				valueSync: ""
+			};
+		},
+		computed: {
+			stars() {
+				const value = this.valueSync ? this.valueSync : 0;
+				const starList = [];
+				const floorValue = Math.floor(value);
+				const ceilValue = Math.ceil(value);
+				// console.log("ceilValue: " + ceilValue);
+				// console.log("floorValue: " + floorValue);
+				for (let i = 0; i < this.max; i++) {
+					if (floorValue > i) {
+						starList.push({
+							activeWitch: "100%"
+						});
+					} else if (ceilValue - 1 === i) {
+						starList.push({
+							activeWitch: (value - floorValue) * 100 + "%"
+						});
+					} else {
+						starList.push({
+							activeWitch: "0"
+						});
+					}
+				}
+				console.log("starList[4]: " + starList[4].activeWitch);
+				return starList;
+			}
+		},
+		created() {
+			this.valueSync = Number(this.value);
+		},
+		methods: {
+			_onClick(index) {
+				if (this.disabled) {
+					return;
+				}
+				this.valueSync = index + 1;
+				this.$emit("change", {
+					value: this.valueSync
+				});
+			}
+		}
+	};
+</script>
+
+<style lang="scss" scoped>
+	.uni-rate {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		line-height: 0;
+		font-size: 0;
+		flex-direction: row;
+	}
+
+	.uni-rate__icon {
+		position: relative;
+		line-height: 0;
+		font-size: 0;
+	}
+
+	.uni-rate__icon-on {
+		overflow: hidden;
+		position: absolute;
+		top: 0;
+		left: 0;
+		line-height: 1;
+		text-align: left;
+	}
+</style>

+ 244 - 0
components/uni-steps/uni-steps.vue

@@ -0,0 +1,244 @@
+<template>
+	<view class="uni-steps">
+		<view :class="[direction==='column'?'uni-steps__column':'uni-steps__row']">
+			<view :class="[direction==='column'?'uni-steps__column-text-container':'uni-steps__row-text-container']">
+				<view v-for="(item,index) in options" :key="index" :class="[direction==='column'?'uni-steps__column-text':'uni-steps__row-text']">
+					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-title':'uni-steps__row-title']">{{item.status}}</text>
+					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.context}}</text>
+					<text :style="{color:index<=active?activeColor:deactiveColor}" :class="[direction==='column'?'uni-steps__column-desc':'uni-steps__row-desc']">{{item.time}}</text>
+				</view>
+			</view>
+			<view :class="[direction==='column'?'uni-steps__column-container':'uni-steps__row-container']">
+				<view :class="[direction==='column'?'uni-steps__column-line-item':'uni-steps__row-line-item']" v-for="(item,index) in options"
+				 :key="index">
+					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--before':'uni-steps__row-line--before']"
+					 :style="{backgroundColor:index<=active&&index!==0?activeColor:index===0?'transparent':deactiveColor}"></view>
+					<view :class="[direction==='column'?'uni-steps__column-check':'uni-steps__row-check']" v-if="index === active">
+						<uni-icons :color="activeColor" type="checkbox-filled" size="14"></uni-icons>
+					</view>
+					<view :class="[direction==='column'?'uni-steps__column-circle':'uni-steps__row-circle']" v-else :style="{backgroundColor:index<active?activeColor:deactiveColor}"></view>
+					<view :class="[direction==='column'?'uni-steps__column-line':'uni-steps__row-line',direction==='column'?'uni-steps__column-line--after':'uni-steps__row-line--after']"
+					 :style="{backgroundColor:index<active&&index!==options.length-1?activeColor:index===options.length-1?'transparent':deactiveColor}"></view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcons from '../uni-icons/uni-icons.vue'
+	export default {
+		name: 'UniSteps',
+		components: {
+			uniIcons
+		},
+		props: {
+			direction: {
+				// 排列方向 row column
+				type: String,
+				default: 'row'
+			},
+			activeColor: {
+				// 激活状态颜色
+				type: String,
+				default: '#1aad19'
+			},
+			deactiveColor: {
+				// 未激活状态颜色
+				type: String,
+				default: '#999999'
+			},
+			active: {
+				// 当前步骤
+				type: Number,
+				default: 0
+			},
+			options: {
+				type: Array,
+				default () {
+					return []
+				}
+			} // 数据
+		},
+		data() {
+			return {}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-steps {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		width: 100%;
+		/* #endif */
+		/* #ifdef APP-NVUE */
+		flex: 1;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-steps__row {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-steps__column {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row-reverse;
+	}
+
+	.uni-steps__row-text-container {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+	}
+
+	.uni-steps__column-text-container {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		flex: 1;
+	}
+
+	.uni-steps__row-text {
+		/* #ifndef APP-NVUE */
+		display: inline-flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: column;
+	}
+
+	.uni-steps__column-text {
+		padding: 6px 0px;
+		border-bottom-style: solid;
+		border-bottom-width: 1px;
+		border-bottom-color: $uni-border-color;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-steps__row-title {
+		font-size: $uni-font-size-base;
+		line-height: 16px;
+		text-align: center;
+	}
+
+	.uni-steps__column-title {
+		font-size: $uni-font-size-base;
+		text-align: left;
+		line-height: 18px;
+	}
+
+	.uni-steps__row-desc {
+		font-size: 12px;
+		line-height: 14px;
+		text-align: center;
+	}
+
+	.uni-steps__column-desc {
+		font-size: $uni-font-size-sm;
+		text-align: left;
+		line-height: 18px;
+	}
+
+	.uni-steps__row-container {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+	}
+
+	.uni-steps__column-container {
+		/* #ifndef APP-NVUE */
+		display: inline-flex;
+		/* #endif */
+		width: 30px;
+		flex-direction: column;
+	}
+
+	.uni-steps__row-line-item {
+		/* #ifndef APP-NVUE */
+		display: inline-flex;
+		/* #endif */
+		flex-direction: row;
+		flex: 1;
+		height: 14px;
+		line-height: 14px;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.uni-steps__column-line-item {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		flex: 1;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.uni-steps__row-line {
+		flex: 1;
+		height: 1px;
+		background-color: $uni-text-color-grey;
+	}
+
+	.uni-steps__column-line {
+		width: 1px;
+		background-color: $uni-text-color-grey;
+	}
+
+	.uni-steps__row-line--after {
+		transform: translateX(1px);
+	}
+
+	.uni-steps__column-line--after {
+		flex: 1;
+		transform: translate(0px, 1px);
+	}
+
+	.uni-steps__row-line--before {
+		transform: translateX(-1px);
+	}
+
+	.uni-steps__column-line--before {
+		height: 6px;
+		transform: translate(0px, -1px);
+	}
+
+	.uni-steps__row-circle {
+		width: 5px;
+		height: 5px;
+		border-radius: 100px;
+		background-color: $uni-text-color-grey;
+		margin: 0px 3px;
+	}
+
+	.uni-steps__column-circle {
+		width: 5px;
+		height: 5px;
+		border-radius: 100px;
+		background-color: $uni-text-color-grey;
+		margin: 4px 0px 5px 0px;
+	}
+
+	.uni-steps__row-check {
+		margin: 0px 6px;
+	}
+
+	.uni-steps__column-check {
+		height: 14px;
+		line-height: 14px;
+		margin: 2px 0px;
+	}
+</style>

+ 599 - 4696
components/wangding-pickerAddress/data.js

@@ -1,4914 +1,817 @@
-export default [
-  {
+export default [{
     "name": "北京市",
-    "city": [
-      {
+    "city": [{
         "name": "北京市",
-        "area": [
-          "东城区",
-          "西城区",
-          "崇文区",
-          "宣武区",
-          "朝阳区",
-          "丰台区",
-          "石景山区",
-          "海淀区",
-          "门头沟区",
-          "房山区",
-          "通州区",
-          "顺义区",
-          "昌平区",
-          "大兴区",
-          "平谷区",
-          "怀柔区",
-          "密云县",
-          "延庆县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "怀柔区", "平谷区", "密云区", "延庆区"]
+    }]
+}, {
     "name": "天津市",
-    "city": [
-      {
+    "city": [{
         "name": "天津市",
-        "area": [
-          "和平区",
-          "河东区",
-          "河西区",
-          "南开区",
-          "河北区",
-          "红桥区",
-          "塘沽区",
-          "汉沽区",
-          "大港区",
-          "东丽区",
-          "西青区",
-          "津南区",
-          "北辰区",
-          "武清区",
-          "宝坻区",
-          "宁河县",
-          "静海县",
-          "蓟  县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "滨海新区", "宁河区", "静海区", "蓟州区"]
+    }]
+}, {
     "name": "河北省",
-    "city": [
-      {
+    "city": [{
         "name": "石家庄市",
-        "area": [
-          "长安区",
-          "桥东区",
-          "桥西区",
-          "新华区",
-          "郊  区",
-          "井陉矿区",
-          "井陉县",
-          "正定县",
-          "栾城县",
-          "行唐县",
-          "灵寿县",
-          "高邑县",
-          "深泽县",
-          "赞皇县",
-          "无极县",
-          "平山县",
-          "元氏县",
-          "赵  县",
-          "辛集市",
-          "藁",
-          "晋州市",
-          "新乐市",
-          "鹿泉市"
-        ]
-      },
-      {
+        "area": ["市辖区", "长安区", "桥西区", "新华区", "井陉矿区", "裕华区", "藁城区", "鹿泉区", "栾城区", "井陉县", "正定县", "行唐县", "灵寿县", "高邑县", "深泽县", "赞皇县", "无极县", "平山县", "元氏县", "赵县", "晋州市", "新乐市"]
+    }, {
         "name": "唐山市",
-        "area": [
-          "路南区",
-          "路北区",
-          "古冶区",
-          "开平区",
-          "新  区",
-          "丰润县",
-          "滦  县",
-          "滦南县",
-          "乐亭县",
-          "迁西县",
-          "玉田县",
-          "唐海县",
-          "遵化市",
-          "丰南市",
-          "迁安市"
-        ]
-      },
-      {
-        "name": "秦皇岛市",
-        "area": [
-          "海港区",
-          "山海关区",
-          "北戴河区",
-          "青龙满族自治县",
-          "昌黎县",
-          "抚宁县",
-          "卢龙县"
-        ]
-      },
-      {
+        "area": ["市辖区", "路南区", "路北区", "古冶区", "开平区", "丰南区", "丰润区", "曹妃甸区", "滦县", "滦南县", "乐亭县", "迁西县", "玉田县", "遵化市", "迁安市"]
+    }, {"name": "秦皇岛市", "area": ["市辖区", "海港区", "山海关区", "北戴河区", "抚宁区", "青龙满族自治县", "昌黎县", "卢龙县"]}, {
         "name": "邯郸市",
-        "area": [
-          "邯山区",
-          "丛台区",
-          "复兴区",
-          "峰峰矿区",
-          "邯郸县",
-          "临漳县",
-          "成安县",
-          "大名县",
-          "涉  县",
-          "磁  县",
-          "肥乡县",
-          "永年县",
-          "邱  县",
-          "鸡泽县",
-          "广平县",
-          "馆陶县",
-          "魏  县",
-          "曲周县",
-          "武安市"
-        ]
-      },
-      {
+        "area": ["市辖区", "邯山区", "丛台区", "复兴区", "峰峰矿区", "邯郸县", "临漳县", "成安县", "大名县", "涉县", "磁县", "肥乡县", "永年县", "邱县", "鸡泽县", "广平县", "馆陶县", "魏县", "曲周县", "武安市"]
+    }, {
         "name": "邢台市",
-        "area": [
-          "桥东区",
-          "桥西区",
-          "邢台县",
-          "临城县",
-          "内丘县",
-          "柏乡县",
-          "隆尧县",
-          "任  县",
-          "南和县",
-          "宁晋县",
-          "巨鹿县",
-          "新河县",
-          "广宗县",
-          "平乡县",
-          "威  县",
-          "清河县",
-          "临西县",
-          "南宫市",
-          "沙河市"
-        ]
-      },
-      {
+        "area": ["市辖区", "桥东区", "桥西区", "邢台县", "临城县", "内丘县", "柏乡县", "隆尧县", "任县", "南和县", "宁晋县", "巨鹿县", "新河县", "广宗县", "平乡县", "威县", "清河县", "临西县", "南宫市", "沙河市"]
+    }, {
         "name": "保定市",
-        "area": [
-          "新市区",
-          "北市区",
-          "南市区",
-          "满城县",
-          "清苑县",
-          "涞水县",
-          "阜平县",
-          "徐水县",
-          "定兴县",
-          "唐  县",
-          "高阳县",
-          "容城县",
-          "涞源县",
-          "望都县",
-          "安新县",
-          "易  县",
-          "曲阳县",
-          "蠡  县",
-          "顺平县",
-          "博野",
-          "雄县",
-          "涿州市",
-          "定州市",
-          "安国市",
-          "高碑店市"
-        ]
-      },
-      {
-        "name": "张家口",
-        "area": [
-          "桥东区",
-          "桥西区",
-          "宣化区",
-          "下花园区",
-          "宣化县",
-          "张北县",
-          "康保县",
-          "沽源县",
-          "尚义县",
-          "蔚  县",
-          "阳原县",
-          "怀安县",
-          "万全县",
-          "怀来县",
-          "涿鹿县",
-          "赤城县",
-          "崇礼县"
-        ]
-      },
-      {
+        "area": ["市辖区", "竞秀区", "莲池区", "满城区", "清苑区", "徐水区", "涞水县", "阜平县", "定兴县", "唐县", "高阳县", "容城县", "涞源县", "望都县", "安新县", "易县", "曲阳县", "蠡县", "顺平县", "博野县", "雄县", "涿州市", "安国市", "高碑店市"]
+    }, {
+        "name": "张家口市",
+        "area": ["市辖区", "桥东区", "桥西区", "宣化区", "下花园区", "万全区", "崇礼区", "张北县", "康保县", "沽源县", "尚义县", "蔚县", "阳原县", "怀安县", "怀来县", "涿鹿县", "赤城县"]
+    }, {
         "name": "承德市",
-        "area": [
-          "双桥区",
-          "双滦区",
-          "鹰手营子矿区",
-          "承德县",
-          "兴隆县",
-          "平泉县",
-          "滦平县",
-          "隆化县",
-          "丰宁满族自治县",
-          "宽城满族自治县",
-          "围场满族蒙古族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "双桥区", "双滦区", "鹰手营子矿区", "承德县", "兴隆县", "平泉县", "滦平县", "隆化县", "丰宁满族自治县", "宽城满族自治县", "围场满族蒙古族自治县"]
+    }, {
         "name": "沧州市",
-        "area": [
-          "新华区",
-          "运河区",
-          "沧  县",
-          "青  县",
-          "东光县",
-          "海兴县",
-          "盐山县",
-          "肃宁县",
-          "南皮县",
-          "吴桥县",
-          "献  县",
-          "孟村回族自治县",
-          "泊头市",
-          "任丘市",
-          "黄骅市",
-          "河间市"
-        ]
-      },
-      {
+        "area": ["市辖区", "新华区", "运河区", "沧县", "青县", "东光县", "海兴县", "盐山县", "肃宁县", "南皮县", "吴桥县", "献县", "孟村回族自治县", "泊头市", "任丘市", "黄骅市", "河间市"]
+    }, {
         "name": "廊坊市",
-        "area": [
-          "安次区",
-          "固安县",
-          "永清县",
-          "香河县",
-          "大城县",
-          "文安县",
-          "大厂回族自治县",
-          "霸州市",
-          "三河市"
-        ]
-      },
-      {
+        "area": ["市辖区", "安次区", "广阳区", "固安县", "永清县", "香河县", "大城县", "文安县", "大厂回族自治县", "霸州市", "三河市"]
+    }, {
         "name": "衡水市",
-        "area": [
-          "桃城区",
-          "枣强县",
-          "武邑县",
-          "武强县",
-          "饶阳县",
-          "安平县",
-          "故城县",
-          "景  县",
-          "阜城县",
-          "冀州市",
-          "深州市"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "桃城区", "冀州区", "枣强县", "武邑县", "武强县", "饶阳县", "安平县", "故城县", "景县", "阜城县", "深州市"]
+    }, {"name": "直辖县", "area": ["定州市", "辛集市"]}]
+}, {
     "name": "山西省",
-    "city": [
-      {
+    "city": [{
         "name": "太原市",
-        "area": [
-          "小店区",
-          "迎泽区",
-          "杏花岭区",
-          "尖草坪区",
-          "万柏林区",
-          "晋源区",
-          "清徐县",
-          "阳曲县",
-          "娄烦县",
-          "古交市"
-        ]
-      },
-      {
+        "area": ["市辖区", "小店区", "迎泽区", "杏花岭区", "尖草坪区", "万柏林区", "晋源区", "清徐县", "阳曲县", "娄烦县", "古交市"]
+    }, {
         "name": "大同市",
-        "area": [
-          "城  区",
-          "矿  区",
-          "南郊区",
-          "新荣区",
-          "阳高县",
-          "天镇县",
-          "广灵县",
-          "灵丘县",
-          "浑源县",
-          "左云县",
-          "大同县"
-        ]
-      },
-      {
-        "name": "阳泉市",
-        "area": [
-          "城  区",
-          "矿  区",
-          "郊  区",
-          "平定县",
-          "盂  县"
-        ]
-      },
-      {
+        "area": ["市辖区", "城区", "矿区", "南郊区", "新荣区", "阳高县", "天镇县", "广灵县", "灵丘县", "浑源县", "左云县", "大同县"]
+    }, {"name": "阳泉市", "area": ["市辖区", "城区", "矿区", "郊区", "平定县", "盂县"]}, {
         "name": "长治市",
-        "area": [
-          "城  区",
-          "郊  区",
-          "长治县",
-          "襄垣县",
-          "屯留县",
-          "平顺县",
-          "黎城县",
-          "壶关县",
-          "长子县",
-          "武乡县",
-          "沁  县",
-          "沁源县",
-          "潞城市"
-        ]
-      },
-      {
-        "name": "晋城市",
-        "area": [
-          "城  区",
-          "沁水县",
-          "阳城县",
-          "陵川县",
-          "泽州县",
-          "高平市"
-        ]
-      },
-      {
+        "area": ["市辖区", "城区", "郊区", "长治县", "襄垣县", "屯留县", "平顺县", "黎城县", "壶关县", "长子县", "武乡县", "沁县", "沁源县", "潞城市"]
+    }, {"name": "晋城市", "area": ["市辖区", "城区", "沁水县", "阳城县", "陵川县", "泽州县", "高平市"]}, {
         "name": "朔州市",
-        "area": [
-          "朔城区",
-          "平鲁区",
-          "山阴县",
-          "应  县",
-          "右玉县",
-          "怀仁县"
-        ]
-      },
-      {
-        "name": "忻州市",
-        "area": [
-          "忻府区",
-          "原平市",
-          "定襄县",
-          "五台县",
-          "代  县",
-          "繁峙县",
-          "宁武县",
-          "静乐县",
-          "神池县",
-          "五寨县",
-          "岢岚县",
-          "河曲县",
-          "保德县",
-          "偏关县"
-        ]
-      },
-      {
-        "name": "吕梁市",
-        "area": [
-          "离石区",
-          "孝义市",
-          "汾阳市",
-          "文水县",
-          "交城县",
-          "兴  县",
-          "临  县",
-          "柳林县",
-          "石楼县",
-          "岚  县",
-          "方山县",
-          "中阳县",
-          "交口县"
-        ]
-      },
-      {
+        "area": ["市辖区", "朔城区", "平鲁区", "山阴县", "应县", "右玉县", "怀仁县"]
+    }, {
         "name": "晋中市",
-        "area": [
-          "榆次市",
-          "介休市",
-          "榆社县",
-          "左权县",
-          "和顺县",
-          "昔阳县",
-          "寿阳县",
-          "太谷县",
-          "祁  县",
-          "平遥县",
-          "灵石县"
-        ]
-      },
-      {
-        "name": "临汾市",
-        "area": [
-          "临汾市",
-          "侯马市",
-          "霍州市",
-          "曲沃县",
-          "翼城县",
-          "襄汾县",
-          "洪洞县",
-          "古  县",
-          "安泽县",
-          "浮山县",
-          "吉  县",
-          "乡宁县",
-          "蒲  县",
-          "大宁县",
-          "永和县",
-          "隰  县",
-          "汾西县"
-        ]
-      },
-      {
+        "area": ["市辖区", "榆次区", "榆社县", "左权县", "和顺县", "昔阳县", "寿阳县", "太谷县", "祁县", "平遥县", "灵石县", "介休市"]
+    }, {
         "name": "运城市",
-        "area": [
-          "运城市",
-          "永济市",
-          "河津市",
-          "芮城县",
-          "临猗县",
-          "万荣县",
-          "新绛县",
-          "稷山县",
-          "闻喜县",
-          "夏  县",
-          "绛  县",
-          "平陆县",
-          "垣曲县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "内蒙古",
-    "city": [
-      {
+        "area": ["市辖区", "盐湖区", "临猗县", "万荣县", "闻喜县", "稷山县", "新绛县", "绛县", "垣曲县", "夏县", "平陆县", "芮城县", "永济市", "河津市"]
+    }, {
+        "name": "忻州市",
+        "area": ["市辖区", "忻府区", "定襄县", "五台县", "代县", "繁峙县", "宁武县", "静乐县", "神池县", "五寨县", "岢岚县", "河曲县", "保德县", "偏关县", "原平市"]
+    }, {
+        "name": "临汾市",
+        "area": ["市辖区", "尧都区", "曲沃县", "翼城县", "襄汾县", "洪洞县", "古县", "安泽县", "浮山县", "吉县", "乡宁县", "大宁县", "隰县", "永和县", "蒲县", "汾西县", "侯马市", "霍州市"]
+    }, {
+        "name": "吕梁市",
+        "area": ["市辖区", "离石区", "文水县", "交城县", "兴县", "临县", "柳林县", "石楼县", "岚县", "方山县", "中阳县", "交口县", "孝义市", "汾阳市"]
+    }]
+}, {
+    "name": "内蒙古自治区",
+    "city": [{
         "name": "呼和浩特市",
-        "area": [
-          "新城区",
-          "回民区",
-          "玉泉区",
-          "郊  区",
-          "土默特左旗",
-          "托克托县",
-          "和林格尔县",
-          "清水河县",
-          "武川县"
-        ]
-      },
-      {
+        "area": ["市辖区", "新城区", "回民区", "玉泉区", "赛罕区", "土默特左旗", "托克托县", "和林格尔县", "清水河县", "武川县"]
+    }, {
         "name": "包头市",
-        "area": [
-          "东河区",
-          "昆都伦区",
-          "青山区",
-          "石拐矿区",
-          "白云矿区",
-          "郊  区",
-          "土默特右旗",
-          "固阳县",
-          "达尔罕茂明安联合旗"
-        ]
-      },
-      {
-        "name": "乌海市",
-        "area": [
-          "海勃湾区",
-          "海南区",
-          "乌达区"
-        ]
-      },
-      {
+        "area": ["市辖区", "东河区", "昆都仑区", "青山区", "石拐区", "白云鄂博矿区", "九原区", "土默特右旗", "固阳县", "达尔罕茂明安联合旗"]
+    }, {"name": "乌海市", "area": ["市辖区", "海勃湾区", "海南区", "乌达区"]}, {
         "name": "赤峰市",
-        "area": [
-          "红山区",
-          "元宝山区",
-          "松山区",
-          "阿鲁科尔沁旗",
-          "巴林左旗",
-          "巴林右旗",
-          "林西县",
-          "克什克腾旗",
-          "翁牛特旗",
-          "喀喇沁旗",
-          "宁城县",
-          "敖汉旗"
-        ]
-      },
-      {
-        "name": "呼伦贝尔市",
-        "area": [
-          "海拉尔市",
-          "满洲里市",
-          "扎兰屯市",
-          "牙克石市",
-          "根河市",
-          "额尔古纳市",
-          "阿荣旗",
-          "莫力达瓦达斡尔族自治旗",
-          "鄂伦春自治旗",
-          "鄂温克族自治旗",
-          "新巴尔虎右旗",
-          "新巴尔虎左旗",
-          "陈巴尔虎旗"
-        ]
-      },
-      {
-        "name": "兴安盟",
-        "area": [
-          "乌兰浩特市",
-          "阿尔山市",
-          "科尔沁右翼前旗",
-          "科尔沁右翼中旗",
-          "扎赉特旗",
-          "突泉县"
-        ]
-      },
-      {
+        "area": ["市辖区", "红山区", "元宝山区", "松山区", "阿鲁科尔沁旗", "巴林左旗", "巴林右旗", "林西县", "克什克腾旗", "翁牛特旗", "喀喇沁旗", "宁城县", "敖汉旗"]
+    }, {
         "name": "通辽市",
-        "area": [
-          "科尔沁区",
-          "霍林郭勒市",
-          "科尔沁左翼中旗",
-          "科尔沁左翼后旗",
-          "开鲁县",
-          "库伦旗",
-          "奈曼旗",
-          "扎鲁特旗"
-        ]
-      },
-      {
+        "area": ["市辖区", "科尔沁区", "科尔沁左翼中旗", "科尔沁左翼后旗", "开鲁县", "库伦旗", "奈曼旗", "扎鲁特旗", "霍林郭勒市"]
+    }, {
+        "name": "鄂尔多斯市",
+        "area": ["市辖区", "东胜区", "康巴什区", "达拉特旗", "准格尔旗", "鄂托克前旗", "鄂托克旗", "杭锦旗", "乌审旗", "伊金霍洛旗"]
+    }, {
+        "name": "呼伦贝尔市",
+        "area": ["市辖区", "海拉尔区", "扎赉诺尔区", "阿荣旗", "莫力达瓦达斡尔族自治旗", "鄂伦春自治旗", "鄂温克族自治旗", "陈巴尔虎旗", "新巴尔虎左旗", "新巴尔虎右旗", "满洲里市", "牙克石市", "扎兰屯市", "额尔古纳市", "根河市"]
+    }, {"name": "巴彦淖尔市", "area": ["市辖区", "临河区", "五原县", "磴口县", "乌拉特前旗", "乌拉特中旗", "乌拉特后旗", "杭锦后旗"]}, {
+        "name": "乌兰察布市",
+        "area": ["市辖区", "集宁区", "卓资县", "化德县", "商都县", "兴和县", "凉城县", "察哈尔右翼前旗", "察哈尔右翼中旗", "察哈尔右翼后旗", "四子王旗", "丰镇市"]
+    }, {"name": "兴安盟", "area": ["乌兰浩特市", "阿尔山市", "科尔沁右翼前旗", "科尔沁右翼中旗", "扎赉特旗", "突泉县"]}, {
         "name": "锡林郭勒盟",
-        "area": [
-          "二连浩特市",
-          "锡林浩特市",
-          "阿巴嘎旗",
-          "苏尼特左旗",
-          "苏尼特右旗",
-          "东乌珠穆沁旗",
-          "西乌珠穆沁旗",
-          "太仆寺旗",
-          "镶黄旗",
-          "正镶白旗",
-          "正蓝旗",
-          "多伦县"
-        ]
-      },
-      {
-        "name": "乌兰察布盟",
-        "area": [
-          "集宁市",
-          "丰镇市",
-          "卓资县",
-          "化德县",
-          "商都县",
-          "兴和县",
-          "凉城县",
-          "察哈尔右翼前旗",
-          "察哈尔右翼中旗",
-          "察哈尔右翼后旗",
-          "四子王旗"
-        ]
-      },
-      {
-        "name": "伊克昭盟",
-        "area": [
-          "东胜市",
-          "达拉特旗",
-          "准格尔旗",
-          "鄂托克前旗",
-          "鄂托克旗",
-          "杭锦旗",
-          "乌审旗",
-          "伊金霍洛旗"
-        ]
-      },
-      {
-        "name": "巴彦淖尔盟",
-        "area": [
-          "临河市",
-          "五原县",
-          "磴口县",
-          "乌拉特前旗",
-          "乌拉特中旗",
-          "乌拉特后旗",
-          "杭锦后旗"
-        ]
-      },
-      {
-        "name": "阿拉善盟",
-        "area": [
-          "阿拉善左旗",
-          "阿拉善右旗",
-          "额济纳旗"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["二连浩特市", "锡林浩特市", "阿巴嘎旗", "苏尼特左旗", "苏尼特右旗", "东乌珠穆沁旗", "西乌珠穆沁旗", "太仆寺旗", "镶黄旗", "正镶白旗", "正蓝旗", "多伦县"]
+    }, {"name": "阿拉善盟", "area": ["阿拉善左旗", "阿拉善右旗", "额济纳旗"]}]
+}, {
     "name": "辽宁省",
-    "city": [
-      {
+    "city": [{
         "name": "沈阳市",
-        "area": [
-          "沈河区",
-          "皇姑区",
-          "和平区",
-          "大东区",
-          "铁西区",
-          "苏家屯区",
-          "东陵区",
-          "于洪区",
-          "新民市",
-          "法库县",
-          "辽中县",
-          "康平县",
-          "新城子区"
-        ]
-      },
-      {
+        "area": ["市辖区", "和平区", "沈河区", "大东区", "皇姑区", "铁西区", "苏家屯区", "浑南区", "沈北新区", "于洪区", "辽中区", "康平县", "法库县", "新民市"]
+    }, {
         "name": "大连市",
-        "area": [
-          "西岗区",
-          "中山区",
-          "沙河口区",
-          "甘井子区",
-          "旅顺口区",
-          "金州区",
-          "瓦房店市",
-          "普兰店市",
-          "庄河市",
-          "长海县"
-        ]
-      },
-      {
-        "name": "鞍山市",
-        "area": [
-          "铁东区",
-          "铁西区",
-          "立山区",
-          "千山区",
-          "海城市",
-          "台安县",
-          "岫岩满族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "中山区", "西岗区", "沙河口区", "甘井子区", "旅顺口区", "金州区", "普兰店区", "长海县", "瓦房店市", "庄河市"]
+    }, {"name": "鞍山市", "area": ["市辖区", "铁东区", "铁西区", "立山区", "千山区", "台安县", "岫岩满族自治县", "海城市"]}, {
         "name": "抚顺市",
-        "area": [
-          "顺城区",
-          "新抚区",
-          "东洲区",
-          "望花区",
-          "抚顺县",
-          "清原满族自治县",
-          "新宾满族自治县"
-        ]
-      },
-      {
-        "name": "本溪市",
-        "area": [
-          "平山区",
-          "明山区",
-          "溪湖区",
-          "南芬区",
-          "本溪满族自治县",
-          "桓仁满族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "新抚区", "东洲区", "望花区", "顺城区", "抚顺县", "新宾满族自治县", "清原满族自治县"]
+    }, {"name": "本溪市", "area": ["市辖区", "平山区", "溪湖区", "明山区", "南芬区", "本溪满族自治县", "桓仁满族自治县"]}, {
         "name": "丹东市",
-        "area": [
-          "振兴区",
-          "元宝区",
-          "振安区",
-          "东港市",
-          "凤城市",
-          "宽甸满族自治县"
-        ]
-      },
-      {
-        "name": "锦州市",
-        "area": [
-          "太和区",
-          "古塔区",
-          "凌河区",
-          "凌海市",
-          "黑山县",
-          "义县",
-          "北宁市"
-        ]
-      },
-      {
+        "area": ["市辖区", "元宝区", "振兴区", "振安区", "宽甸满族自治县", "东港市", "凤城市"]
+    }, {"name": "锦州市", "area": ["市辖区", "古塔区", "凌河区", "太和区", "黑山县", "义县", "凌海市", "北镇市"]}, {
         "name": "营口市",
-        "area": [
-          "站前区",
-          "西市区",
-          "鲅鱼圈区",
-          "老边区",
-          "大石桥市",
-          "盖州市"
-        ]
-      },
-      {
-        "name": "阜新市",
-        "area": [
-          "海州区",
-          "新邱区",
-          "太平区",
-          "清河门区",
-          "细河区",
-          "彰武县",
-          "阜新蒙古族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "站前区", "西市区", "鲅鱼圈区", "老边区", "盖州市", "大石桥市"]
+    }, {"name": "阜新市", "area": ["市辖区", "海州区", "新邱区", "太平区", "清河门区", "细河区", "阜新蒙古族自治县", "彰武县"]}, {
         "name": "辽阳市",
-        "area": [
-          "白塔区",
-          "文圣区",
-          "宏伟区",
-          "太子河区",
-          "弓长岭区",
-          "灯塔市",
-          "辽阳县"
-        ]
-      },
-      {
-        "name": "盘锦",
-        "area": [
-          "双台子区",
-          "兴隆台区",
-          "盘山县",
-          "大洼县"
-        ]
-      },
-      {
+        "area": ["市辖区", "白塔区", "文圣区", "宏伟区", "弓长岭区", "太子河区", "辽阳县", "灯塔市"]
+    }, {"name": "盘锦市", "area": ["市辖区", "双台子区", "兴隆台区", "大洼区", "盘山县"]}, {
         "name": "铁岭市",
-        "area": [
-          "银州区",
-          "清河区",
-          "调兵山市",
-          "开原市",
-          "铁岭县",
-          "昌图县",
-          "西丰县"
-        ]
-      },
-      {
-        "name": "朝阳市",
-        "area": [
-          "双塔区",
-          "龙城区",
-          "凌源市",
-          "北票市",
-          "朝阳县",
-          "建平县",
-          "喀喇沁左翼蒙古族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "银州区", "清河区", "铁岭县", "西丰县", "昌图县", "调兵山市", "开原市"]
+    }, {"name": "朝阳市", "area": ["市辖区", "双塔区", "龙城区", "朝阳县", "建平县", "喀喇沁左翼蒙古族自治县", "北票市", "凌源市"]}, {
         "name": "葫芦岛市",
-        "area": [
-          "龙港区",
-          "南票区",
-          "连山区",
-          "兴城市",
-          "绥中县",
-          "建昌县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "连山区", "龙港区", "南票区", "绥中县", "建昌县", "兴城市"]
+    }]
+}, {
     "name": "吉林省",
-    "city": [
-      {
+    "city": [{
         "name": "长春市",
-        "area": [
-          "朝阳区",
-          "宽城区",
-          "二道区",
-          "南关区",
-          "绿园区",
-          "双阳区",
-          "九台市",
-          "榆树市",
-          "德惠市",
-          "农安县"
-        ]
-      },
-      {
-        "name": "吉林市",
-        "area": [
-          "船营区",
-          "昌邑区",
-          "龙潭区",
-          "丰满区",
-          "舒兰市",
-          "桦甸市",
-          "蛟河市",
-          "磐石市",
-          "永吉县"
-        ]
-      },
-      {
-        "name": "四平",
-        "area": [
-          "铁西区",
-          "铁东区",
-          "公主岭市",
-          "双辽市",
-          "梨树县",
-          "伊通满族自治县"
-        ]
-      },
-      {
-        "name": "辽源市",
-        "area": [
-          "龙山区",
-          "西安区",
-          "东辽县",
-          "东丰县"
-        ]
-      },
-      {
+        "area": ["市辖区", "南关区", "宽城区", "朝阳区", "二道区", "绿园区", "双阳区", "九台区", "农安县", "榆树市", "德惠市"]
+    }, {"name": "吉林市", "area": ["市辖区", "昌邑区", "龙潭区", "船营区", "丰满区", "永吉县", "蛟河市", "桦甸市", "舒兰市", "磐石市"]}, {
+        "name": "四平市",
+        "area": ["市辖区", "铁西区", "铁东区", "梨树县", "伊通满族自治县", "公主岭市", "双辽市"]
+    }, {"name": "辽源市", "area": ["市辖区", "龙山区", "西安区", "东丰县", "东辽县"]}, {
         "name": "通化市",
-        "area": [
-          "东昌区",
-          "二道江区",
-          "梅河口市",
-          "集安市",
-          "通化县",
-          "辉南县",
-          "柳河县"
-        ]
-      },
-      {
-        "name": "白山市",
-        "area": [
-          "八道江区",
-          "江源区",
-          "临江市",
-          "靖宇县",
-          "抚松县",
-          "长白朝鲜族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "东昌区", "二道江区", "通化县", "辉南县", "柳河县", "梅河口市", "集安市"]
+    }, {"name": "白山市", "area": ["市辖区", "浑江区", "江源区", "抚松县", "靖宇县", "长白朝鲜族自治县", "临江市"]}, {
         "name": "松原市",
-        "area": [
-          "宁江区",
-          "乾安县",
-          "长岭县",
-          "扶余县",
-          "前郭尔罗斯蒙古族自治县"
-        ]
-      },
-      {
-        "name": "白城市",
-        "area": [
-          "洮北区",
-          "大安市",
-          "洮南市",
-          "镇赉县",
-          "通榆县"
-        ]
-      },
-      {
+        "area": ["市辖区", "宁江区", "前郭尔罗斯蒙古族自治县", "长岭县", "乾安县", "扶余市"]
+    }, {"name": "白城市", "area": ["市辖区", "洮北区", "镇赉县", "通榆县", "洮南市", "大安市"]}, {
         "name": "延边朝鲜族自治州",
-        "area": [
-          "延吉市",
-          "图们市",
-          "敦化市",
-          "龙井市",
-          "珲春市",
-          "和龙市",
-          "安图县",
-          "汪清县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["延吉市", "图们市", "敦化市", "珲春市", "龙井市", "和龙市", "汪清县", "安图县"]
+    }]
+}, {
     "name": "黑龙江省",
-    "city": [
-      {
+    "city": [{
         "name": "哈尔滨市",
-        "area": [
-          "松北区",
-          "道里区",
-          "南岗区",
-          "平房区",
-          "香坊区",
-          "道外区",
-          "呼兰区",
-          "阿城区",
-          "双城市",
-          "尚志市",
-          "五常市",
-          "宾县",
-          "方正县",
-          "通河县",
-          "巴彦县",
-          "延寿县",
-          "木兰县",
-          "依兰县"
-        ]
-      },
-      {
+        "area": ["市辖区", "道里区", "南岗区", "道外区", "平房区", "松北区", "香坊区", "呼兰区", "阿城区", "双城区", "依兰县", "方正县", "宾县", "巴彦县", "木兰县", "通河县", "延寿县", "尚志市", "五常市"]
+    }, {
         "name": "齐齐哈尔市",
-        "area": [
-          "龙沙区",
-          "昂昂溪区",
-          "铁锋区",
-          "建华区",
-          "富拉尔基区",
-          "碾子山区",
-          "梅里斯达斡尔族区",
-          "讷河市",
-          "富裕县",
-          "拜泉县",
-          "甘南县",
-          "依安县",
-          "克山县",
-          "泰来县",
-          "克东县",
-          "龙江县"
-        ]
-      },
-      {
+        "area": ["市辖区", "龙沙区", "建华区", "铁锋区", "昂昂溪区", "富拉尔基区", "碾子山区", "梅里斯达斡尔族区", "龙江县", "依安县", "泰来县", "甘南县", "富裕县", "克山县", "克东县", "拜泉县", "讷河市"]
+    }, {"name": "鸡西市", "area": ["市辖区", "鸡冠区", "恒山区", "滴道区", "梨树区", "城子河区", "麻山区", "鸡东县", "虎林市", "密山市"]}, {
         "name": "鹤岗市",
-        "area": [
-          "兴山区",
-          "工农区",
-          "南山区",
-          "兴安区",
-          "向阳区",
-          "东山区",
-          "萝北县",
-          "绥滨县"
-        ]
-      },
-      {
-        "name": "双鸭山",
-        "area": [
-          "尖山区",
-          "岭东区",
-          "四方台区",
-          "宝山区",
-          "集贤县",
-          "宝清县",
-          "友谊县",
-          "饶河县"
-        ]
-      },
-      {
-        "name": "鸡西市",
-        "area": [
-          "鸡冠区",
-          "恒山区",
-          "城子河区",
-          "滴道区",
-          "梨树区",
-          "麻山区",
-          "密山市",
-          "虎林市",
-          "鸡东县"
-        ]
-      },
-      {
+        "area": ["市辖区", "向阳区", "工农区", "南山区", "兴安区", "东山区", "兴山区", "萝北县", "绥滨县"]
+    }, {"name": "双鸭山市", "area": ["市辖区", "尖山区", "岭东区", "四方台区", "宝山区", "集贤县", "友谊县", "宝清县", "饶河县"]}, {
         "name": "大庆市",
-        "area": [
-          "萨尔图区",
-          "红岗区",
-          "龙凤区",
-          "让胡路区",
-          "大同区",
-          "林甸县",
-          "肇州县",
-          "肇源县",
-          "杜尔伯特蒙古族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "萨尔图区", "龙凤区", "让胡路区", "红岗区", "大同区", "肇州县", "肇源县", "林甸县", "杜尔伯特蒙古族自治县"]
+    }, {
         "name": "伊春市",
-        "area": [
-          "伊春区",
-          "带岭区",
-          "南岔区",
-          "金山屯区",
-          "西林区",
-          "美溪区",
-          "乌马河区",
-          "翠峦区",
-          "友好区",
-          "上甘岭区",
-          "五营区",
-          "红星区",
-          "新青区",
-          "汤旺河区",
-          "乌伊岭区",
-          "铁力市",
-          "嘉荫县"
-        ]
-      },
-      {
-        "name": "牡丹江市",
-        "area": [
-          "爱民区",
-          "东安区",
-          "阳明区",
-          "西安区",
-          "绥芬河市",
-          "宁安市",
-          "海林市",
-          "穆棱市",
-          "林口县",
-          "东宁县"
-        ]
-      },
-      {
+        "area": ["市辖区", "伊春区", "南岔区", "友好区", "西林区", "翠峦区", "新青区", "美溪区", "金山屯区", "五营区", "乌马河区", "汤旺河区", "带岭区", "乌伊岭区", "红星区", "上甘岭区", "嘉荫县", "铁力市"]
+    }, {
         "name": "佳木斯市",
-        "area": [
-          "向阳区",
-          "前进区",
-          "东风区",
-          "郊区",
-          "同江市",
-          "富锦市",
-          "桦川县",
-          "抚远县",
-          "桦南县",
-          "汤原县"
-        ]
-      },
-      {
-        "name": "七台河市",
-        "area": [
-          "桃山区",
-          "新兴区",
-          "茄子河区",
-          "勃利县"
-        ]
-      },
-      {
-        "name": "黑河市",
-        "area": [
-          "爱辉区",
-          "北安市",
-          "五大连池市",
-          "逊克县",
-          "嫩江县",
-          "孙吴县"
-        ]
-      },
-      {
+        "area": ["市辖区", "向阳区", "前进区", "东风区", "郊区", "桦南县", "桦川县", "汤原县", "同江市", "富锦市", "抚远市"]
+    }, {"name": "七台河市", "area": ["市辖区", "新兴区", "桃山区", "茄子河区", "勃利县"]}, {
+        "name": "牡丹江市",
+        "area": ["市辖区", "东安区", "阳明区", "爱民区", "西安区", "林口县", "绥芬河市", "海林市", "宁安市", "穆棱市", "东宁市"]
+    }, {"name": "黑河市", "area": ["市辖区", "爱辉区", "嫩江县", "逊克县", "孙吴县", "北安市", "五大连池市"]}, {
         "name": "绥化市",
-        "area": [
-          "北林区",
-          "安达市",
-          "肇东市",
-          "海伦市",
-          "绥棱县",
-          "兰西县",
-          "明水县",
-          "青冈县",
-          "庆安县",
-          "望奎县"
-        ]
-      },
-      {
-        "name": "大兴安岭地区",
-        "area": [
-          "呼玛县",
-          "塔河县",
-          "漠河县",
-          "大兴安岭辖区"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "北林区", "望奎县", "兰西县", "青冈县", "庆安县", "明水县", "绥棱县", "安达市", "肇东市", "海伦市"]
+    }, {"name": "大兴安岭地区", "area": ["呼玛县", "塔河县", "漠河县"]}]
+}, {
     "name": "上海市",
-    "city": [
-      {
+    "city": [{
         "name": "上海市",
-        "area": [
-          "黄浦区",
-          "卢湾区",
-          "徐汇区",
-          "长宁区",
-          "静安区",
-          "普陀区",
-          "闸北区",
-          "虹口区",
-          "杨浦区",
-          "宝山区",
-          "闵行区",
-          "嘉定区",
-          "松江区",
-          "金山区",
-          "青浦区",
-          "南汇区",
-          "奉贤区",
-          "浦东新区",
-          "崇明县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["黄浦区", "徐汇区", "长宁区", "静安区", "普陀区", "虹口区", "杨浦区", "闵行区", "宝山区", "嘉定区", "浦东新区", "金山区", "松江区", "青浦区", "奉贤区", "崇明区"]
+    }]
+}, {
     "name": "江苏省",
-    "city": [
-      {
+    "city": [{
         "name": "南京市",
-        "area": [
-          "玄武区",
-          "白下区",
-          "秦淮区",
-          "建邺区",
-          "鼓楼区",
-          "下关区",
-          "栖霞区",
-          "雨花台区",
-          "浦口区",
-          "江宁区",
-          "六合区",
-          "溧水县",
-          "高淳县"
-        ]
-      },
-      {
+        "area": ["市辖区", "玄武区", "秦淮区", "建邺区", "鼓楼区", "浦口区", "栖霞区", "雨花台区", "江宁区", "六合区", "溧水区", "高淳区"]
+    }, {"name": "无锡市", "area": ["市辖区", "锡山区", "惠山区", "滨湖区", "梁溪区", "新吴区", "江阴市", "宜兴市"]}, {
+        "name": "徐州市",
+        "area": ["市辖区", "鼓楼区", "云龙区", "贾汪区", "泉山区", "铜山区", "丰县", "沛县", "睢宁县", "新沂市", "邳州市"]
+    }, {"name": "常州市", "area": ["市辖区", "天宁区", "钟楼区", "新北区", "武进区", "金坛区", "溧阳市"]}, {
         "name": "苏州市",
-        "area": [
-          "金阊区",
-          "平江区",
-          "沧浪区",
-          "虎丘区",
-          "吴中区",
-          "相城区",
-          "常熟市",
-          "张家港市",
-          "昆山市",
-          "吴江市",
-          "太仓市"
-        ]
-      },
-      {
-        "name": "无锡市",
-        "area": [
-          "崇安区",
-          "南长区",
-          "北塘区",
-          "滨湖区",
-          "锡山区",
-          "惠山区",
-          "江阴市",
-          "宜兴市"
-        ]
-      },
-      {
-        "name": "常州市",
-        "area": [
-          "钟楼区",
-          "天宁区",
-          "戚墅堰区",
-          "新北区",
-          "武进区",
-          "金坛市",
-          "溧阳市"
-        ]
-      },
-      {
-        "name": "镇江市",
-        "area": [
-          "京口区",
-          "润州区",
-          "丹徒区",
-          "丹阳市",
-          "扬中市",
-          "句容市"
-        ]
-      },
-      {
-        "name": "南通市",
-        "area": [
-          "崇川区",
-          "港闸区",
-          "通州市",
-          "如皋市",
-          "海门市",
-          "启东市",
-          "海安县",
-          "如东县"
-        ]
-      },
-      {
-        "name": "泰州市",
-        "area": [
-          "海陵区",
-          "高港区",
-          "姜堰市",
-          "泰兴市",
-          "靖江市",
-          "兴化市"
-        ]
-      },
-      {
-        "name": "扬州市",
-        "area": [
-          "广陵区",
-          "维扬区",
-          "邗江区",
-          "江都市",
-          "仪征市",
-          "高邮市",
-          "宝应县"
-        ]
-      },
-      {
-        "name": "盐城市",
-        "area": [
-          "亭湖区",
-          "盐都区",
-          "大丰市",
-          "东台市",
-          "建湖县",
-          "射阳县",
-          "阜宁县",
-          "滨海县",
-          "响水县"
-        ]
-      },
-      {
+        "area": ["市辖区", "虎丘区", "吴中区", "相城区", "姑苏区", "吴江区", "常熟市", "张家港市", "昆山市", "太仓市"]
+    }, {"name": "南通市", "area": ["市辖区", "崇川区", "港闸区", "通州区", "海安县", "如东县", "启东市", "如皋市", "海门市"]}, {
         "name": "连云港市",
-        "area": [
-          "新浦区",
-          "海州区",
-          "连云区",
-          "东海县",
-          "灌云县",
-          "赣榆县",
-          "灌南县"
-        ]
-      },
-      {
-        "name": "徐州市",
-        "area": [
-          "云龙区",
-          "鼓楼区",
-          "九里区",
-          "泉山区",
-          "贾汪区",
-          "邳州市",
-          "新沂市",
-          "铜山县",
-          "睢宁县",
-          "沛县",
-          "丰县"
-        ]
-      },
-      {
-        "name": "淮安市",
-        "area": [
-          "清河区",
-          "清浦区",
-          "楚州区",
-          "淮阴区",
-          "涟水县",
-          "洪泽县",
-          "金湖县",
-          "盱眙县"
-        ]
-      },
-      {
+        "area": ["市辖区", "连云区", "海州区", "赣榆区", "东海县", "灌云县", "灌南县"]
+    }, {"name": "淮安市", "area": ["市辖区", "淮安区", "淮阴区", "清江浦区", "洪泽区", "涟水县", "盱眙县", "金湖县"]}, {
+        "name": "盐城市",
+        "area": ["市辖区", "亭湖区", "盐都区", "大丰区", "响水县", "滨海县", "阜宁县", "射阳县", "建湖县", "东台市"]
+    }, {"name": "扬州市", "area": ["市辖区", "广陵区", "邗江区", "江都区", "宝应县", "仪征市", "高邮市"]}, {
+        "name": "镇江市",
+        "area": ["市辖区", "京口区", "润州区", "丹徒区", "丹阳市", "扬中市", "句容市"]
+    }, {"name": "泰州市", "area": ["市辖区", "海陵区", "高港区", "姜堰区", "兴化市", "靖江市", "泰兴市"]}, {
         "name": "宿迁市",
-        "area": [
-          "宿城区",
-          "宿豫区",
-          "沭阳县",
-          "泗阳县",
-          "泗洪县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "宿城区", "宿豫区", "沭阳县", "泗阳县", "泗洪县"]
+    }]
+}, {
     "name": "浙江省",
-    "city": [
-      {
+    "city": [{
         "name": "杭州市",
-        "area": [
-          "拱墅区",
-          "西湖区",
-          "上城区",
-          "下城区",
-          "江干区",
-          "滨江区",
-          "余杭区",
-          "萧山区",
-          "建德市",
-          "富阳市",
-          "临安市",
-          "桐庐县",
-          "淳安县"
-        ]
-      },
-      {
+        "area": ["市辖区", "上城区", "下城区", "江干区", "拱墅区", "西湖区", "滨江区", "萧山区", "余杭区", "富阳区", "桐庐县", "淳安县", "建德市", "临安市"]
+    }, {
         "name": "宁波市",
-        "area": [
-          "海曙区",
-          "江东区",
-          "江北区",
-          "镇海区",
-          "北仑区",
-          "鄞州区",
-          "余姚市",
-          "慈溪市",
-          "奉化市",
-          "宁海县",
-          "象山县"
-        ]
-      },
-      {
+        "area": ["市辖区", "海曙区", "江东区", "江北区", "北仑区", "镇海区", "鄞州区", "象山县", "宁海县", "余姚市", "慈溪市", "奉化市"]
+    }, {
         "name": "温州市",
-        "area": [
-          "鹿城区",
-          "龙湾区",
-          "瓯海区",
-          "瑞安市",
-          "乐清市",
-          "永嘉县",
-          "洞头县",
-          "平阳县",
-          "苍南县",
-          "文成县",
-          "泰顺县"
-        ]
-      },
-      {
-        "name": "嘉兴市",
-        "area": [
-          "秀城区",
-          "秀洲区",
-          "海宁市",
-          "平湖市",
-          "桐乡市",
-          "嘉善县",
-          "海盐县"
-        ]
-      },
-      {
+        "area": ["市辖区", "鹿城区", "龙湾区", "瓯海区", "洞头区", "永嘉县", "平阳县", "苍南县", "文成县", "泰顺县", "瑞安市", "乐清市"]
+    }, {"name": "嘉兴市", "area": ["市辖区", "南湖区", "秀洲区", "嘉善县", "海盐县", "海宁市", "平湖市", "桐乡市"]}, {
         "name": "湖州市",
-        "area": [
-          "吴兴区",
-          "南浔区",
-          "长兴县",
-          "德清县",
-          "安吉县"
-        ]
-      },
-      {
-        "name": "绍兴市",
-        "area": [
-          "越城区",
-          "诸暨市",
-          "上虞市",
-          "嵊州市",
-          "绍兴县",
-          "新昌县"
-        ]
-      },
-      {
+        "area": ["市辖区", "吴兴区", "南浔区", "德清县", "长兴县", "安吉县"]
+    }, {"name": "绍兴市", "area": ["市辖区", "越城区", "柯桥区", "上虞区", "新昌县", "诸暨市", "嵊州市"]}, {
         "name": "金华市",
-        "area": [
-          "婺城区",
-          "金东区",
-          "兰溪市",
-          "义乌市",
-          "东阳市",
-          "永康市",
-          "武义县",
-          "浦江县",
-          "磐安县"
-        ]
-      },
-      {
-        "name": "衢州市",
-        "area": [
-          "柯城区",
-          "衢江区",
-          "江山市",
-          "龙游县",
-          "常山县",
-          "开化县"
-        ]
-      },
-      {
+        "area": ["市辖区", "婺城区", "金东区", "武义县", "浦江县", "磐安县", "兰溪市", "义乌市", "东阳市", "永康市"]
+    }, {"name": "衢州市", "area": ["市辖区", "柯城区", "衢江区", "常山县", "开化县", "龙游县", "江山市"]}, {
         "name": "舟山市",
-        "area": [
-          "定海区",
-          "普陀区",
-          "岱山县",
-          "嵊泗县"
-        ]
-      },
-      {
-        "name": "台州市",
-        "area": [
-          "椒江区",
-          "黄岩区",
-          "路桥区",
-          "临海市",
-          "温岭市",
-          "玉环县",
-          "天台县",
-          "仙居县",
-          "三门县"
-        ]
-      },
-      {
+        "area": ["市辖区", "定海区", "普陀区", "岱山县", "嵊泗县"]
+    }, {"name": "台州市", "area": ["市辖区", "椒江区", "黄岩区", "路桥区", "玉环县", "三门县", "天台县", "仙居县", "温岭市", "临海市"]}, {
         "name": "丽水市",
-        "area": [
-          "莲都区",
-          "龙泉市",
-          "缙云县",
-          "青田县",
-          "云和县",
-          "遂昌县",
-          "松阳县",
-          "庆元县",
-          "景宁畲族自治县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "莲都区", "青田县", "缙云县", "遂昌县", "松阳县", "云和县", "庆元县", "景宁畲族自治县", "龙泉市"]
+    }]
+}, {
     "name": "安徽省",
-    "city": [
-      {
+    "city": [{
         "name": "合肥市",
-        "area": [
-          "庐阳区",
-          "瑶海区",
-          "蜀山区",
-          "包河区",
-          "长丰县",
-          "肥东县",
-          "肥西县"
-        ]
-      },
-      {
-        "name": "芜湖市",
-        "area": [
-          "镜湖区",
-          "弋江区",
-          "鸠江区",
-          "三山区",
-          "芜湖县",
-          "南陵县",
-          "繁昌县"
-        ]
-      },
-      {
+        "area": ["市辖区", "瑶海区", "庐阳区", "蜀山区", "包河区", "长丰县", "肥东县", "肥西县", "庐江县", "巢湖市"]
+    }, {"name": "芜湖市", "area": ["市辖区", "镜湖区", "弋江区", "鸠江区", "三山区", "芜湖县", "繁昌县", "南陵县", "无为县"]}, {
         "name": "蚌埠市",
-        "area": [
-          "蚌山区",
-          "龙子湖区",
-          "禹会区",
-          "淮上区",
-          "怀远县",
-          "固镇县",
-          "五河县"
-        ]
-      },
-      {
-        "name": "淮南市",
-        "area": [
-          "田家庵区",
-          "大通区",
-          "谢家集区",
-          "八公山区",
-          "潘集区",
-          "凤台县"
-        ]
-      },
-      {
+        "area": ["市辖区", "龙子湖区", "蚌山区", "禹会区", "淮上区", "怀远县", "五河县", "固镇县"]
+    }, {"name": "淮南市", "area": ["市辖区", "大通区", "田家庵区", "谢家集区", "八公山区", "潘集区", "凤台县", "寿县"]}, {
         "name": "马鞍山市",
-        "area": [
-          "雨山区",
-          "花山区",
-          "金家庄区",
-          "当涂县"
-        ]
-      },
-      {
-        "name": "淮北市",
-        "area": [
-          "相山区",
-          "杜集区",
-          "烈山区",
-          "濉溪县"
-        ]
-      },
-      {
+        "area": ["市辖区", "花山区", "雨山区", "博望区", "当涂县", "含山县", "和县"]
+    }, {"name": "淮北市", "area": ["市辖区", "杜集区", "相山区", "烈山区", "濉溪县"]}, {
         "name": "铜陵市",
-        "area": [
-          "铜官山区",
-          "狮子山区",
-          "郊区",
-          "铜陵县"
-        ]
-      },
-      {
+        "area": ["市辖区", "铜官区", "义安区", "郊区", "枞阳县"]
+    }, {
         "name": "安庆市",
-        "area": [
-          "迎江区",
-          "大观区",
-          "宜秀区",
-          "桐城市",
-          "宿松县",
-          "枞阳县",
-          "太湖县",
-          "怀宁县",
-          "岳西县",
-          "望江县",
-          "潜山县"
-        ]
-      },
-      {
-        "name": "黄山市",
-        "area": [
-          "屯溪区",
-          "黄山区",
-          "徽州区",
-          "休宁县",
-          "歙县",
-          "祁门县",
-          "黟县"
-        ]
-      },
-      {
+        "area": ["市辖区", "迎江区", "大观区", "宜秀区", "怀宁县", "潜山县", "太湖县", "宿松县", "望江县", "岳西县", "桐城市"]
+    }, {"name": "黄山市", "area": ["市辖区", "屯溪区", "黄山区", "徽州区", "歙县", "休宁县", "黟县", "祁门县"]}, {
         "name": "滁州市",
-        "area": [
-          "琅琊区",
-          "南谯区",
-          "天长市",
-          "明光市",
-          "全椒县",
-          "来安县",
-          "定远县",
-          "凤阳县"
-        ]
-      },
-      {
-        "name": "阜阳市",
-        "area": [
-          "颍州区",
-          "颍东区",
-          "颍泉区",
-          "界首市",
-          "临泉县",
-          "颍上县",
-          "阜南县",
-          "太和县"
-        ]
-      },
-      {
+        "area": ["市辖区", "琅琊区", "南谯区", "来安县", "全椒县", "定远县", "凤阳县", "天长市", "明光市"]
+    }, {"name": "阜阳市", "area": ["市辖区", "颍州区", "颍东区", "颍泉区", "临泉县", "太和县", "阜南县", "颍上县", "界首市"]}, {
         "name": "宿州市",
-        "area": [
-          "埇桥区",
-          "萧县",
-          "泗县",
-          "砀山县",
-          "灵璧县"
-        ]
-      },
-      {
-        "name": "巢湖市",
-        "area": [
-          "居巢区",
-          "含山县",
-          "无为县",
-          "庐江县",
-          "和县"
-        ]
-      },
-      {
-        "name": "六安市",
-        "area": [
-          "金安区",
-          "裕安区",
-          "寿县",
-          "霍山县",
-          "霍邱县",
-          "舒城县",
-          "金寨县"
-        ]
-      },
-      {
+        "area": ["市辖区", "埇桥区", "砀山县", "萧县", "灵璧县", "泗县"]
+    }, {"name": "六安市", "area": ["市辖区", "金安区", "裕安区", "叶集区", "霍邱县", "舒城县", "金寨县", "霍山县"]}, {
         "name": "亳州市",
-        "area": [
-          "谯城区",
-          "利辛县",
-          "涡阳县",
-          "蒙城县"
-        ]
-      },
-      {
-        "name": "池州市",
-        "area": [
-          "贵池区",
-          "东至县",
-          "石台县",
-          "青阳县"
-        ]
-      },
-      {
+        "area": ["市辖区", "谯城区", "涡阳县", "蒙城县", "利辛县"]
+    }, {"name": "池州市", "area": ["市辖区", "贵池区", "东至县", "石台县", "青阳县"]}, {
         "name": "宣城市",
-        "area": [
-          "宣州区",
-          "宁国市",
-          "广德县",
-          "郎溪县",
-          "泾县",
-          "旌德县",
-          "绩溪县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "宣州区", "郎溪县", "广德县", "泾县", "绩溪县", "旌德县", "宁国市"]
+    }]
+}, {
     "name": "福建省",
-    "city": [
-      {
+    "city": [{
         "name": "福州市",
-        "area": [
-          "鼓楼区",
-          "台江区",
-          "仓山区",
-          "马尾区",
-          "晋安区",
-          "福清市",
-          "长乐市",
-          "闽侯县",
-          "闽清县",
-          "永泰县",
-          "连江县",
-          "罗源县",
-          "平潭县"
-        ]
-      },
-      {
-        "name": "厦门市",
-        "area": [
-          "思明区",
-          "海沧区",
-          "湖里区",
-          "集美区",
-          "同安区",
-          "翔安区"
-        ]
-      },
-      {
+        "area": ["市辖区", "鼓楼区", "台江区", "仓山区", "马尾区", "晋安区", "闽侯县", "连江县", "罗源县", "闽清县", "永泰县", "平潭县", "福清市", "长乐市"]
+    }, {"name": "厦门市", "area": ["市辖区", "思明区", "海沧区", "湖里区", "集美区", "同安区", "翔安区"]}, {
         "name": "莆田市",
-        "area": [
-          "城厢区",
-          "涵江区",
-          "荔城区",
-          "秀屿区",
-          "仙游县"
-        ]
-      },
-      {
+        "area": ["市辖区", "城厢区", "涵江区", "荔城区", "秀屿区", "仙游县"]
+    }, {
         "name": "三明市",
-        "area": [
-          "梅列区",
-          "三元区",
-          "永安市",
-          "明溪县",
-          "将乐县",
-          "大田县",
-          "宁化县",
-          "建宁县",
-          "沙县",
-          "尤溪县",
-          "清流县",
-          "泰宁县"
-        ]
-      },
-      {
+        "area": ["市辖区", "梅列区", "三元区", "明溪县", "清流县", "宁化县", "大田县", "尤溪县", "沙县", "将乐县", "泰宁县", "建宁县", "永安市"]
+    }, {
         "name": "泉州市",
-        "area": [
-          "鲤城区",
-          "丰泽区",
-          "洛江区",
-          "泉港区",
-          "石狮市",
-          "晋江市",
-          "南安市",
-          "惠安县",
-          "永春县",
-          "安溪县",
-          "德化县",
-          "金门县"
-        ]
-      },
-      {
+        "area": ["市辖区", "鲤城区", "丰泽区", "洛江区", "泉港区", "惠安县", "安溪县", "永春县", "德化县", "金门县", "石狮市", "晋江市", "南安市"]
+    }, {
         "name": "漳州市",
-        "area": [
-          "芗城区",
-          "龙文区",
-          "龙海市",
-          "平和县",
-          "南靖县",
-          "诏安县",
-          "漳浦县",
-          "华安县",
-          "东山县",
-          "长泰县",
-          "云霄县"
-        ]
-      },
-      {
+        "area": ["市辖区", "芗城区", "龙文区", "云霄县", "漳浦县", "诏安县", "长泰县", "东山县", "南靖县", "平和县", "华安县", "龙海市"]
+    }, {
         "name": "南平市",
-        "area": [
-          "延平区",
-          "建瓯市",
-          "邵武市",
-          "武夷山市",
-          "建阳市",
-          "松溪县",
-          "光泽县",
-          "顺昌县",
-          "浦城县",
-          "政和县"
-        ]
-      },
-      {
-        "name": "龙岩市",
-        "area": [
-          "新罗区",
-          "漳平市",
-          "长汀县",
-          "武平县",
-          "上杭县",
-          "永定县",
-          "连城县"
-        ]
-      },
-      {
+        "area": ["市辖区", "延平区", "建阳区", "顺昌县", "浦城县", "光泽县", "松溪县", "政和县", "邵武市", "武夷山市", "建瓯市"]
+    }, {"name": "龙岩市", "area": ["市辖区", "新罗区", "永定区", "长汀县", "上杭县", "武平县", "连城县", "漳平市"]}, {
         "name": "宁德市",
-        "area": [
-          "蕉城区",
-          "福安市",
-          "福鼎市",
-          "寿宁县",
-          "霞浦县",
-          "柘荣县",
-          "屏南县",
-          "古田县",
-          "周宁县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "蕉城区", "霞浦县", "古田县", "屏南县", "寿宁县", "周宁县", "柘荣县", "福安市", "福鼎市"]
+    }]
+}, {
     "name": "江西省",
-    "city": [
-      {
+    "city": [{
         "name": "南昌市",
-        "area": [
-          "东湖区",
-          "西湖区",
-          "青云谱区",
-          "湾里区",
-          "青山湖区",
-          "新建县",
-          "南昌县",
-          "进贤县",
-          "安义县"
-        ]
-      },
-      {
-        "name": "景德镇市",
-        "area": [
-          "珠山区",
-          "昌江区",
-          "乐平市",
-          "浮梁县"
-        ]
-      },
-      {
+        "area": ["市辖区", "东湖区", "西湖区", "青云谱区", "湾里区", "青山湖区", "新建区", "南昌县", "安义县", "进贤县"]
+    }, {"name": "景德镇市", "area": ["市辖区", "昌江区", "珠山区", "浮梁县", "乐平市"]}, {
         "name": "萍乡市",
-        "area": [
-          "安源区",
-          "湘东区",
-          "莲花县",
-          "上栗县",
-          "芦溪县"
-        ]
-      },
-      {
+        "area": ["市辖区", "安源区", "湘东区", "莲花县", "上栗县", "芦溪县"]
+    }, {
         "name": "九江市",
-        "area": [
-          "浔阳区",
-          "庐山区",
-          "瑞昌市",
-          "九江县",
-          "星子县",
-          "武宁县",
-          "彭泽县",
-          "永修县",
-          "修水县",
-          "湖口县",
-          "德安县",
-          "都昌县"
-        ]
-      },
-      {
-        "name": "新余市",
-        "area": [
-          "渝水区",
-          "分宜县"
-        ]
-      },
-      {
+        "area": ["市辖区", "濂溪区", "浔阳区", "九江县", "武宁县", "修水县", "永修县", "德安县", "都昌县", "湖口县", "彭泽县", "瑞昌市", "共青城市", "庐山市"]
+    }, {"name": "新余市", "area": ["市辖区", "渝水区", "分宜县"]}, {
         "name": "鹰潭市",
-        "area": [
-          "月湖区",
-          "贵溪市",
-          "余江县"
-        ]
-      },
-      {
+        "area": ["市辖区", "月湖区", "余江县", "贵溪市"]
+    }, {
         "name": "赣州市",
-        "area": [
-          "章贡区",
-          "瑞金市",
-          "南康市",
-          "石城县",
-          "安远县",
-          "赣县",
-          "宁都县",
-          "寻乌县",
-          "兴国县",
-          "定南县",
-          "上犹县",
-          "于都县",
-          "龙南县",
-          "崇义县",
-          "信丰县",
-          "全南县",
-          "大余县",
-          "会昌县"
-        ]
-      },
-      {
+        "area": ["市辖区", "章贡区", "南康区", "赣县", "信丰县", "大余县", "上犹县", "崇义县", "安远县", "龙南县", "定南县", "全南县", "宁都县", "于都县", "兴国县", "会昌县", "寻乌县", "石城县", "瑞金市"]
+    }, {
         "name": "吉安市",
-        "area": [
-          "吉州区",
-          "青原区",
-          "井冈山市",
-          "吉安县",
-          "永丰县",
-          "永新县",
-          "新干县",
-          "泰和县",
-          "峡江县",
-          "遂川县",
-          "安福县",
-          "吉水县",
-          "万安县"
-        ]
-      },
-      {
+        "area": ["市辖区", "吉州区", "青原区", "吉安县", "吉水县", "峡江县", "新干县", "永丰县", "泰和县", "遂川县", "万安县", "安福县", "永新县", "井冈山市"]
+    }, {
         "name": "宜春市",
-        "area": [
-          "袁州区",
-          "丰城市",
-          "樟树市",
-          "高安市",
-          "铜鼓县",
-          "靖安县",
-          "宜丰县",
-          "奉新县",
-          "万载县",
-          "上高县"
-        ]
-      },
-      {
+        "area": ["市辖区", "袁州区", "奉新县", "万载县", "上高县", "宜丰县", "靖安县", "铜鼓县", "丰城市", "樟树市", "高安市"]
+    }, {
         "name": "抚州市",
-        "area": [
-          "临川区",
-          "南丰县",
-          "乐安县",
-          "金溪县",
-          "南城县",
-          "东乡县",
-          "资溪县",
-          "宜黄县",
-          "广昌县",
-          "黎川县",
-          "崇仁县"
-        ]
-      },
-      {
+        "area": ["市辖区", "临川区", "南城县", "黎川县", "南丰县", "崇仁县", "乐安县", "宜黄县", "金溪县", "资溪县", "东乡县", "广昌县"]
+    }, {
         "name": "上饶市",
-        "area": [
-          "信州区",
-          "德兴市",
-          "上饶县",
-          "广丰县",
-          "鄱阳县",
-          "婺源县",
-          "铅山县",
-          "余干县",
-          "横峰县",
-          "弋阳县",
-          "玉山县",
-          "万年县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "信州区", "广丰区", "上饶县", "玉山县", "铅山县", "横峰县", "弋阳县", "余干县", "鄱阳县", "万年县", "婺源县", "德兴市"]
+    }]
+}, {
     "name": "山东省",
-    "city": [
-      {
+    "city": [{
         "name": "济南市",
-        "area": [
-          "市中区",
-          "历下区",
-          "天桥区",
-          "槐荫区",
-          "历城区",
-          "长清区",
-          "章丘市",
-          "平阴县",
-          "济阳县",
-          "商河县"
-        ]
-      },
-      {
+        "area": ["市辖区", "历下区", "市中区", "槐荫区", "天桥区", "历城区", "长清区", "平阴县", "济阳县", "商河县", "章丘市"]
+    }, {
         "name": "青岛市",
-        "area": [
-          "市南区",
-          "市北区",
-          "城阳区",
-          "四方区",
-          "李沧区",
-          "黄岛区",
-          "崂山区",
-          "胶南市",
-          "胶州市",
-          "平度市",
-          "莱西市",
-          "即墨市"
-        ]
-      },
-      {
-        "name": "淄博市",
-        "area": [
-          "张店区",
-          "临淄区",
-          "淄川区",
-          "博山区",
-          "周村区",
-          "桓台县",
-          "高青县",
-          "沂源县"
-        ]
-      },
-      {
+        "area": ["市辖区", "市南区", "市北区", "黄岛区", "崂山区", "李沧区", "城阳区", "胶州市", "即墨市", "平度市", "莱西市"]
+    }, {"name": "淄博市", "area": ["市辖区", "淄川区", "张店区", "博山区", "临淄区", "周村区", "桓台县", "高青县", "沂源县"]}, {
         "name": "枣庄市",
-        "area": [
-          "市中区",
-          "山亭区",
-          "峄城区",
-          "台儿庄区",
-          "薛城区",
-          "滕州市"
-        ]
-      },
-      {
-        "name": "东营市",
-        "area": [
-          "东营区",
-          "河口区",
-          "垦利县",
-          "广饶县",
-          "利津县"
-        ]
-      },
-      {
+        "area": ["市辖区", "市中区", "薛城区", "峄城区", "台儿庄区", "山亭区", "滕州市"]
+    }, {"name": "东营市", "area": ["市辖区", "东营区", "河口区", "垦利区", "利津县", "广饶县"]}, {
         "name": "烟台市",
-        "area": [
-          "芝罘区",
-          "福山区",
-          "牟平区",
-          "莱山区",
-          "龙口市",
-          "莱阳市",
-          "莱州市",
-          "招远市",
-          "蓬莱市",
-          "栖霞市",
-          "海阳市",
-          "长岛县"
-        ]
-      },
-      {
+        "area": ["市辖区", "芝罘区", "福山区", "牟平区", "莱山区", "长岛县", "龙口市", "莱阳市", "莱州市", "蓬莱市", "招远市", "栖霞市", "海阳市"]
+    }, {
         "name": "潍坊市",
-        "area": [
-          "潍城区",
-          "寒亭区",
-          "坊子区",
-          "奎文区",
-          "青州市",
-          "诸城市",
-          "寿光市",
-          "安丘市",
-          "高密市",
-          "昌邑市",
-          "昌乐县",
-          "临朐县"
-        ]
-      },
-      {
+        "area": ["市辖区", "潍城区", "寒亭区", "坊子区", "奎文区", "临朐县", "昌乐县", "青州市", "诸城市", "寿光市", "安丘市", "高密市", "昌邑市"]
+    }, {
         "name": "济宁市",
-        "area": [
-          "市中区",
-          "任城区",
-          "曲阜市",
-          "兖州市",
-          "邹城市",
-          "鱼台县",
-          "金乡县",
-          "嘉祥县",
-          "微山县",
-          "汶上县",
-          "泗水县",
-          "梁山县"
-        ]
-      },
-      {
-        "name": "泰安市",
-        "area": [
-          "泰山区",
-          "岱岳区",
-          "新泰市",
-          "肥城市",
-          "宁阳县",
-          "东平县"
-        ]
-      },
-      {
+        "area": ["市辖区", "任城区", "兖州区", "微山县", "鱼台县", "金乡县", "嘉祥县", "汶上县", "泗水县", "梁山县", "曲阜市", "邹城市"]
+    }, {"name": "泰安市", "area": ["市辖区", "泰山区", "岱岳区", "宁阳县", "东平县", "新泰市", "肥城市"]}, {
         "name": "威海市",
-        "area": [
-          "环翠区",
-          "乳山市",
-          "文登市",
-          "荣成市"
-        ]
-      },
-      {
-        "name": "日照市",
-        "area": [
-          "东港区",
-          "岚山区",
-          "五莲县",
-          "莒县"
-        ]
-      },
-      {
+        "area": ["市辖区", "环翠区", "文登区", "荣成市", "乳山市"]
+    }, {"name": "日照市", "area": ["市辖区", "东港区", "岚山区", "五莲县", "莒县"]}, {
         "name": "莱芜市",
-        "area": [
-          "莱城区",
-          "钢城区"
-        ]
-      },
-      {
+        "area": ["市辖区", "莱城区", "钢城区"]
+    }, {
         "name": "临沂市",
-        "area": [
-          "兰山区",
-          "罗庄区",
-          "河东区",
-          "沂南县",
-          "郯城县",
-          "沂水县",
-          "苍山县",
-          "费县",
-          "平邑县",
-          "莒南县",
-          "蒙阴县",
-          "临沭县"
-        ]
-      },
-      {
+        "area": ["市辖区", "兰山区", "罗庄区", "河东区", "沂南县", "郯城县", "沂水县", "兰陵县", "费县", "平邑县", "莒南县", "蒙阴县", "临沭县"]
+    }, {
         "name": "德州市",
-        "area": [
-          "德城区",
-          "乐陵市",
-          "禹城市",
-          "陵县",
-          "宁津县",
-          "齐河县",
-          "武城县",
-          "庆云县",
-          "平原县",
-          "夏津县",
-          "临邑县"
-        ]
-      },
-      {
-        "name": "聊城市",
-        "area": [
-          "东昌府区",
-          "临清市",
-          "高唐县",
-          "阳谷县",
-          "茌平县",
-          "莘县",
-          "东阿县",
-          "冠县"
-        ]
-      },
-      {
+        "area": ["市辖区", "德城区", "陵城区", "宁津县", "庆云县", "临邑县", "齐河县", "平原县", "夏津县", "武城县", "乐陵市", "禹城市"]
+    }, {"name": "聊城市", "area": ["市辖区", "东昌府区", "阳谷县", "莘县", "茌平县", "东阿县", "冠县", "高唐县", "临清市"]}, {
         "name": "滨州市",
-        "area": [
-          "滨城区",
-          "邹平县",
-          "沾化县",
-          "惠民县",
-          "博兴县",
-          "阳信县",
-          "无棣县"
-        ]
-      },
-      {
-        "name": "菏泽市",
-        "area": [
-          "牡丹区",
-          "鄄城县",
-          "单县",
-          "郓城县",
-          "曹县",
-          "定陶县",
-          "巨野县",
-          "东明县",
-          "成武县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "滨城区", "沾化区", "惠民县", "阳信县", "无棣县", "博兴县", "邹平县"]
+    }, {"name": "菏泽市", "area": ["市辖区", "牡丹区", "定陶区", "曹县", "单县", "成武县", "巨野县", "郓城县", "鄄城县", "东明县"]}]
+}, {
     "name": "河南省",
-    "city": [
-      {
+    "city": [{
         "name": "郑州市",
-        "area": [
-          "中原区",
-          "金水区",
-          "二七区",
-          "管城回族区",
-          "上街区",
-          "惠济区",
-          "巩义市",
-          "新郑市",
-          "新密市",
-          "登封市",
-          "荥阳市",
-          "中牟县"
-        ]
-      },
-      {
+        "area": ["市辖区", "中原区", "二七区", "管城回族区", "金水区", "上街区", "惠济区", "中牟县", "巩义市", "荥阳市", "新密市", "新郑市", "登封市"]
+    }, {
         "name": "开封市",
-        "area": [
-          "鼓楼区",
-          "龙亭区",
-          "顺河回族区",
-          "禹王台区",
-          "金明区",
-          "开封县",
-          "尉氏县",
-          "兰考县",
-          "杞县",
-          "通许县"
-        ]
-      },
-      {
+        "area": ["市辖区", "龙亭区", "顺河回族区", "鼓楼区", "禹王台区", "金明区", "祥符区", "杞县", "通许县", "尉氏县", "兰考县"]
+    }, {
         "name": "洛阳市",
-        "area": [
-          "西工区",
-          "老城区",
-          "涧西区",
-          "瀍河回族区",
-          "洛龙区",
-          "吉利区",
-          "偃师市",
-          "孟津县",
-          "汝阳县",
-          "伊川县",
-          "洛宁县",
-          "嵩县",
-          "宜阳县",
-          "新安县",
-          "栾川县"
-        ]
-      },
-      {
+        "area": ["市辖区", "老城区", "西工区", "瀍河回族区", "涧西区", "吉利区", "洛龙区", "孟津县", "新安县", "栾川县", "嵩县", "汝阳县", "宜阳县", "洛宁县", "伊川县", "偃师市"]
+    }, {
         "name": "平顶山市",
-        "area": [
-          "新华区",
-          "卫东区",
-          "湛河区",
-          "石龙区",
-          "汝州市",
-          "舞钢市",
-          "宝丰县",
-          "叶县",
-          "郏县",
-          "鲁山县"
-        ]
-      },
-      {
-        "name": "安阳市",
-        "area": [
-          "北关区",
-          "文峰区",
-          "殷都区",
-          "龙安区",
-          "林州市",
-          "安阳县",
-          "滑县",
-          "内黄县",
-          "汤阴县"
-        ]
-      },
-      {
+        "area": ["市辖区", "新华区", "卫东区", "石龙区", "湛河区", "宝丰县", "叶县", "鲁山县", "郏县", "舞钢市", "汝州市"]
+    }, {"name": "安阳市", "area": ["市辖区", "文峰区", "北关区", "殷都区", "龙安区", "安阳县", "汤阴县", "滑县", "内黄县", "林州市"]}, {
         "name": "鹤壁市",
-        "area": [
-          "淇滨区",
-          "山城区",
-          "鹤山区",
-          "浚县",
-          "淇县"
-        ]
-      },
-      {
+        "area": ["市辖区", "鹤山区", "山城区", "淇滨区", "浚县", "淇县"]
+    }, {
         "name": "新乡市",
-        "area": [
-          "卫滨区",
-          "红旗区",
-          "凤泉区",
-          "牧野区",
-          "卫辉市",
-          "辉县市",
-          "新乡县",
-          "获嘉县",
-          "原阳县",
-          "长垣县",
-          "封丘县",
-          "延津县"
-        ]
-      },
-      {
+        "area": ["市辖区", "红旗区", "卫滨区", "凤泉区", "牧野区", "新乡县", "获嘉县", "原阳县", "延津县", "封丘县", "长垣县", "卫辉市", "辉县市"]
+    }, {
         "name": "焦作市",
-        "area": [
-          "解放区",
-          "中站区",
-          "马村区",
-          "山阳区",
-          "沁阳市",
-          "孟州市",
-          "修武县",
-          "温县",
-          "武陟县",
-          "博爱县"
-        ]
-      },
-      {
-        "name": "濮阳市",
-        "area": [
-          "华龙区",
-          "濮阳县",
-          "南乐县",
-          "台前县",
-          "清丰县",
-          "范县"
-        ]
-      },
-      {
+        "area": ["市辖区", "解放区", "中站区", "马村区", "山阳区", "修武县", "博爱县", "武陟县", "温县", "沁阳市", "孟州市"]
+    }, {"name": "濮阳市", "area": ["市辖区", "华龙区", "清丰县", "南乐县", "范县", "台前县", "濮阳县"]}, {
         "name": "许昌市",
-        "area": [
-          "魏都区",
-          "禹州市",
-          "长葛市",
-          "许昌县",
-          "鄢陵县",
-          "襄城县"
-        ]
-      },
-      {
-        "name": "漯河市",
-        "area": [
-          "源汇区",
-          "郾城区",
-          "召陵区",
-          "临颍县",
-          "舞阳县"
-        ]
-      },
-      {
+        "area": ["市辖区", "魏都区", "许昌县", "鄢陵县", "襄城县", "禹州市", "长葛市"]
+    }, {"name": "漯河市", "area": ["市辖区", "源汇区", "郾城区", "召陵区", "舞阳县", "临颍县"]}, {
         "name": "三门峡市",
-        "area": [
-          "湖滨区",
-          "义马市",
-          "灵宝市",
-          "渑池县",
-          "卢氏县",
-          "陕县"
-        ]
-      },
-      {
+        "area": ["市辖区", "湖滨区", "陕州区", "渑池县", "卢氏县", "义马市", "灵宝市"]
+    }, {
         "name": "南阳市",
-        "area": [
-          "卧龙区",
-          "宛城区",
-          "邓州市",
-          "桐柏县",
-          "方城县",
-          "淅川县",
-          "镇平县",
-          "唐河县",
-          "南召县",
-          "内乡县",
-          "新野县",
-          "社旗县",
-          "西峡县"
-        ]
-      },
-      {
-        "name": "商丘市",
-        "area": [
-          "梁园区",
-          "睢阳区",
-          "永城市",
-          "宁陵县",
-          "虞城县",
-          "民权县",
-          "夏邑县",
-          "柘城县",
-          "睢县"
-        ]
-      },
-      {
+        "area": ["市辖区", "宛城区", "卧龙区", "南召县", "方城县", "西峡县", "镇平县", "内乡县", "淅川县", "社旗县", "唐河县", "新野县", "桐柏县", "邓州市"]
+    }, {"name": "商丘市", "area": ["市辖区", "梁园区", "睢阳区", "民权县", "睢县", "宁陵县", "柘城县", "虞城县", "夏邑县", "永城市"]}, {
         "name": "信阳市",
-        "area": [
-          "浉河区",
-          "平桥区",
-          "潢川县",
-          "淮滨县",
-          "息县",
-          "新县",
-          "商城县",
-          "固始县",
-          "罗山县",
-          "光山县"
-        ]
-      },
-      {
+        "area": ["市辖区", "浉河区", "平桥区", "罗山县", "光山县", "新县", "商城县", "固始县", "潢川县", "淮滨县", "息县"]
+    }, {
         "name": "周口市",
-        "area": [
-          "川汇区",
-          "项城市",
-          "商水县",
-          "淮阳县",
-          "太康县",
-          "鹿邑县",
-          "西华县",
-          "扶沟县",
-          "沈丘县",
-          "郸城县"
-        ]
-      },
-      {
+        "area": ["市辖区", "川汇区", "扶沟县", "西华县", "商水县", "沈丘县", "郸城县", "淮阳县", "太康县", "鹿邑县", "项城市"]
+    }, {
         "name": "驻马店市",
-        "area": [
-          "驿城区",
-          "确山县",
-          "新蔡县",
-          "上蔡县",
-          "西平县",
-          "泌阳县",
-          "平舆县",
-          "汝南县",
-          "遂平县",
-          "正阳县"
-        ]
-      },
-      {
-        "name": "焦作市",
-        "area": [
-          "济源市"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "驿城区", "西平县", "上蔡县", "平舆县", "正阳县", "确山县", "泌阳县", "汝南县", "遂平县", "新蔡县"]
+    }, {"name": "直辖县", "area": ["济源市"]}]
+}, {
     "name": "湖北省",
-    "city": [
-      {
+    "city": [{
         "name": "武汉市",
-        "area": [
-          "江岸区",
-          "武昌区",
-          "江汉区",
-          "硚口区",
-          "汉阳区",
-          "青山区",
-          "洪山区",
-          "东西湖区",
-          "汉南区",
-          "蔡甸区",
-          "江夏区",
-          "黄陂区",
-          "新洲区"
-        ]
-      },
-      {
-        "name": "黄石市",
-        "area": [
-          "黄石港区",
-          "西塞山区",
-          "下陆区",
-          "铁山区",
-          "大冶市",
-          "阳新县"
-        ]
-      },
-      {
+        "area": ["市辖区", "江岸区", "江汉区", "硚口区", "汉阳区", "武昌区", "青山区", "洪山区", "东西湖区", "汉南区", "蔡甸区", "江夏区", "黄陂区", "新洲区"]
+    }, {"name": "黄石市", "area": ["市辖区", "黄石港区", "西塞山区", "下陆区", "铁山区", "阳新县", "大冶市"]}, {
         "name": "十堰市",
-        "area": [
-          "张湾区",
-          "茅箭区",
-          "丹江口市",
-          "郧县",
-          "竹山县",
-          "房县",
-          "郧西县",
-          "竹溪县"
-        ]
-      },
-      {
-        "name": "荆州市",
-        "area": [
-          "沙市区",
-          "荆州区",
-          "洪湖市",
-          "石首市",
-          "松滋市",
-          "监利县",
-          "公安县",
-          "江陵县"
-        ]
-      },
-      {
+        "area": ["市辖区", "茅箭区", "张湾区", "郧阳区", "郧西县", "竹山县", "竹溪县", "房县", "丹江口市"]
+    }, {
         "name": "宜昌市",
-        "area": [
-          "西陵区",
-          "伍家岗区",
-          "点军区",
-          "猇亭区",
-          "夷陵区",
-          "宜都市",
-          "当阳市",
-          "枝江市",
-          "秭归县",
-          "远安县",
-          "兴山县",
-          "五峰土家族自治县",
-          "长阳土家族自治县"
-        ]
-      },
-      {
-        "name": "襄樊市",
-        "area": [
-          "襄城区",
-          "樊城区",
-          "襄阳区",
-          "老河口市",
-          "枣阳市",
-          "宜城市",
-          "南漳县",
-          "谷城县",
-          "保康县"
-        ]
-      },
-      {
+        "area": ["市辖区", "西陵区", "伍家岗区", "点军区", "猇亭区", "夷陵区", "远安县", "兴山县", "秭归县", "长阳土家族自治县", "五峰土家族自治县", "宜都市", "当阳市", "枝江市"]
+    }, {"name": "襄阳市", "area": ["市辖区", "襄城区", "樊城区", "襄州区", "南漳县", "谷城县", "保康县", "老河口市", "枣阳市", "宜城市"]}, {
         "name": "鄂州市",
-        "area": [
-          "鄂城区",
-          "华容区",
-          "梁子湖区"
-        ]
-      },
-      {
-        "name": "荆门市",
-        "area": [
-          "东宝区",
-          "掇刀区",
-          "钟祥市",
-          "京山县",
-          "沙洋县"
-        ]
-      },
-      {
+        "area": ["市辖区", "梁子湖区", "华容区", "鄂城区"]
+    }, {"name": "荆门市", "area": ["市辖区", "东宝区", "掇刀区", "京山县", "沙洋县", "钟祥市"]}, {
         "name": "孝感市",
-        "area": [
-          "孝南区",
-          "应城市",
-          "安陆市",
-          "汉川市",
-          "云梦县",
-          "大悟县",
-          "孝昌县"
-        ]
-      },
-      {
+        "area": ["市辖区", "孝南区", "孝昌县", "大悟县", "云梦县", "应城市", "安陆市", "汉川市"]
+    }, {"name": "荆州市", "area": ["市辖区", "沙市区", "荆州区", "公安县", "监利县", "江陵县", "石首市", "洪湖市", "松滋市"]}, {
         "name": "黄冈市",
-        "area": [
-          "黄州区",
-          "麻城市",
-          "武穴市",
-          "红安县",
-          "罗田县",
-          "浠水县",
-          "蕲春县",
-          "黄梅县",
-          "英山县",
-          "团风县"
-        ]
-      },
-      {
-        "name": "咸宁市",
-        "area": [
-          "咸安区",
-          "赤壁市",
-          "嘉鱼县",
-          "通山县",
-          "崇阳县",
-          "通城县"
-        ]
-      },
-      {
+        "area": ["市辖区", "黄州区", "团风县", "红安县", "罗田县", "英山县", "浠水县", "蕲春县", "黄梅县", "麻城市", "武穴市"]
+    }, {"name": "咸宁市", "area": ["市辖区", "咸安区", "嘉鱼县", "通城县", "崇阳县", "通山县", "赤壁市"]}, {
         "name": "随州市",
-        "area": [
-          "曾都区",
-          "广水市"
-        ]
-      },
-      {
-        "name": "恩施土家族苗族自治州",
-        "area": [
-          "恩施市",
-          "利川市",
-          "建始县",
-          "来凤县",
-          "巴东县",
-          "鹤峰县",
-          "宣恩县",
-          "咸丰县"
-        ]
-      },
-      {
-        "name": "仙桃市",
-        "area": [
-          "仙桃"
-        ]
-      },
-      {
-        "name": "天门市",
-        "area": [
-          "天门"
-        ]
-      },
-      {
-        "name": "潜江市",
-        "area": [
-          "潜江"
-        ]
-      },
-      {
-        "name": "神农架林区",
-        "area": [
-          "神农架林区"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "曾都区", "随县", "广水市"]
+    }, {"name": "恩施土家族苗族自治州", "area": ["恩施市", "利川市", "建始县", "巴东县", "宣恩县", "咸丰县", "来凤县", "鹤峰县"]}, {
+        "name": "直辖县",
+        "area": ["仙桃市", "潜江市", "天门市", "神农架林区"]
+    }]
+}, {
     "name": "湖南省",
-    "city": [
-      {
+    "city": [{
         "name": "长沙市",
-        "area": [
-          "岳麓区",
-          "芙蓉区",
-          "天心区",
-          "开福区",
-          "雨花区",
-          "浏阳市",
-          "长沙县",
-          "望城县",
-          "宁乡县"
-        ]
-      },
-      {
-        "name": "株洲市",
-        "area": [
-          "天元区",
-          "荷塘区",
-          "芦淞区",
-          "石峰区",
-          "醴陵市",
-          "株洲县",
-          "炎陵县",
-          "茶陵县",
-          "攸县"
-        ]
-      },
-      {
+        "area": ["市辖区", "芙蓉区", "天心区", "岳麓区", "开福区", "雨花区", "望城区", "长沙县", "宁乡县", "浏阳市"]
+    }, {"name": "株洲市", "area": ["市辖区", "荷塘区", "芦淞区", "石峰区", "天元区", "株洲县", "攸县", "茶陵县", "炎陵县", "醴陵市"]}, {
         "name": "湘潭市",
-        "area": [
-          "岳塘区",
-          "雨湖区",
-          "湘乡市",
-          "韶山市",
-          "湘潭县"
-        ]
-      },
-      {
+        "area": ["市辖区", "雨湖区", "岳塘区", "湘潭县", "湘乡市", "韶山市"]
+    }, {
         "name": "衡阳市",
-        "area": [
-          "雁峰区",
-          "珠晖区",
-          "石鼓区",
-          "蒸湘区",
-          "南岳区",
-          "耒阳市",
-          "常宁市",
-          "衡阳县",
-          "衡东县",
-          "衡山县",
-          "衡南县",
-          "祁东县"
-        ]
-      },
-      {
+        "area": ["市辖区", "珠晖区", "雁峰区", "石鼓区", "蒸湘区", "南岳区", "衡阳县", "衡南县", "衡山县", "衡东县", "祁东县", "耒阳市", "常宁市"]
+    }, {
         "name": "邵阳市",
-        "area": [
-          "双清区",
-          "大祥区",
-          "北塔区",
-          "武冈市",
-          "邵东县",
-          "洞口县",
-          "新邵县",
-          "绥宁县",
-          "新宁县",
-          "邵阳县",
-          "隆回县",
-          "城步苗族自治县"
-        ]
-      },
-      {
-        "name": "岳阳市",
-        "area": [
-          "岳阳楼区",
-          "云溪区",
-          "君山区",
-          "临湘市",
-          "汨罗市",
-          "岳阳县",
-          "湘阴县",
-          "平江县",
-          "华容县"
-        ]
-      },
-      {
+        "area": ["市辖区", "双清区", "大祥区", "北塔区", "邵东县", "新邵县", "邵阳县", "隆回县", "洞口县", "绥宁县", "新宁县", "城步苗族自治县", "武冈市"]
+    }, {"name": "岳阳市", "area": ["市辖区", "岳阳楼区", "云溪区", "君山区", "岳阳县", "华容县", "湘阴县", "平江县", "汨罗市", "临湘市"]}, {
         "name": "常德市",
-        "area": [
-          "武陵区",
-          "鼎城区",
-          "津市市",
-          "澧县",
-          "临澧县",
-          "桃源县",
-          "汉寿县",
-          "安乡县",
-          "石门县"
-        ]
-      },
-      {
-        "name": "张家界市",
-        "area": [
-          "永定区",
-          "武陵源区",
-          "慈利县",
-          "桑植县"
-        ]
-      },
-      {
+        "area": ["市辖区", "武陵区", "鼎城区", "安乡县", "汉寿县", "澧县", "临澧县", "桃源县", "石门县", "津市市"]
+    }, {"name": "张家界市", "area": ["市辖区", "永定区", "武陵源区", "慈利县", "桑植县"]}, {
         "name": "益阳市",
-        "area": [
-          "赫山区",
-          "资阳区",
-          "沅江市",
-          "桃江县",
-          "南县",
-          "安化县"
-        ]
-      },
-      {
+        "area": ["市辖区", "资阳区", "赫山区", "南县", "桃江县", "安化县", "沅江市"]
+    }, {
         "name": "郴州市",
-        "area": [
-          "北湖区",
-          "苏仙区",
-          "资兴市",
-          "宜章县",
-          "汝城县",
-          "安仁县",
-          "嘉禾县",
-          "临武县",
-          "桂东县",
-          "永兴县",
-          "桂阳县"
-        ]
-      },
-      {
+        "area": ["市辖区", "北湖区", "苏仙区", "桂阳县", "宜章县", "永兴县", "嘉禾县", "临武县", "汝城县", "桂东县", "安仁县", "资兴市"]
+    }, {
         "name": "永州市",
-        "area": [
-          "冷水滩区",
-          "零陵区",
-          "祁阳县",
-          "蓝山县",
-          "宁远县",
-          "新田县",
-          "东安县",
-          "江永县",
-          "道县",
-          "双牌县",
-          "江华瑶族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "零陵区", "冷水滩区", "祁阳县", "东安县", "双牌县", "道县", "江永县", "宁远县", "蓝山县", "新田县", "江华瑶族自治县"]
+    }, {
         "name": "怀化市",
-        "area": [
-          "鹤城区",
-          "洪江市",
-          "会同县",
-          "沅陵县",
-          "辰溪县",
-          "溆浦县",
-          "中方县",
-          "新晃侗族自治县",
-          "芷江侗族自治县",
-          "通道侗族自治县",
-          "靖州苗族侗族自治县",
-          "麻阳苗族自治县"
-        ]
-      },
-      {
-        "name": "娄底市",
-        "area": [
-          "娄星区",
-          "冷水江市",
-          "涟源市",
-          "新化县",
-          "双峰县"
-        ]
-      },
-      {
+        "area": ["市辖区", "鹤城区", "中方县", "沅陵县", "辰溪县", "溆浦县", "会同县", "麻阳苗族自治县", "新晃侗族自治县", "芷江侗族自治县", "靖州苗族侗族自治县", "通道侗族自治县", "洪江市"]
+    }, {"name": "娄底市", "area": ["市辖区", "娄星区", "双峰县", "新化县", "冷水江市", "涟源市"]}, {
         "name": "湘西土家族苗族自治州",
-        "area": [
-          "吉首市",
-          "古丈县",
-          "龙山县",
-          "永顺县",
-          "凤凰县",
-          "泸溪县",
-          "保靖县",
-          "花垣县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["吉首市", "泸溪县", "凤凰县", "花垣县", "保靖县", "古丈县", "永顺县", "龙山县"]
+    }]
+}, {
     "name": "广东省",
-    "city": [
-      {
+    "city": [{
         "name": "广州市",
-        "area": [
-          "越秀区",
-          "荔湾区",
-          "海珠区",
-          "天河区",
-          "白云区",
-          "黄埔区",
-          "番禺区",
-          "花都区",
-          "南沙区",
-          "萝岗区",
-          "增城市",
-          "从化市"
-        ]
-      },
-      {
-        "name": "深圳市",
-        "area": [
-          "福田区",
-          "罗湖区",
-          "南山区",
-          "宝安区",
-          "龙岗区",
-          "盐田区"
-        ]
-      },
-      {
-        "name": "东莞市",
-        "area": [
-          "莞城",
-          "常平",
-          "塘厦",
-          "塘厦",
-          "塘厦"
-        ]
-      },
-      {
-        "name": "中山市",
-        "area": [
-          "中山"
-        ]
-      },
-      {
-        "name": "潮州市",
-        "area": [
-          "湘桥区",
-          "潮安县",
-          "饶平县"
-        ]
-      },
-      {
-        "name": "揭阳市",
-        "area": [
-          "榕城区",
-          "揭东县",
-          "揭西县",
-          "惠来县",
-          "普宁市"
-        ]
-      },
-      {
-        "name": "云浮市",
-        "area": [
-          "云城区",
-          "新兴县",
-          "郁南县",
-          "云安县",
-          "罗定市"
-        ]
-      },
-      {
-        "name": "珠海市",
-        "area": [
-          "香洲区",
-          "斗门区",
-          "金湾区"
-        ]
-      },
-      {
-        "name": "汕头市",
-        "area": [
-          "金平区",
-          "濠江区",
-          "龙湖区",
-          "潮阳区",
-          "潮南区",
-          "澄海区",
-          "南澳县"
-        ]
-      },
-      {
+        "area": ["市辖区", "荔湾区", "越秀区", "海珠区", "天河区", "白云区", "黄埔区", "番禺区", "花都区", "南沙区", "从化区", "增城区"]
+    }, {
         "name": "韶关市",
-        "area": [
-          "浈江区",
-          "武江区",
-          "曲江区",
-          "乐昌市",
-          "南雄市",
-          "始兴县",
-          "仁化县",
-          "翁源县",
-          "新丰县",
-          "乳源瑶族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "武江区", "浈江区", "曲江区", "始兴县", "仁化县", "翁源县", "乳源瑶族自治县", "新丰县", "乐昌市", "南雄市"]
+    }, {"name": "深圳市", "area": ["市辖区", "罗湖区", "福田区", "南山区", "宝安区", "龙岗区", "盐田区"]}, {
+        "name": "珠海市",
+        "area": ["市辖区", "香洲区", "斗门区", "金湾区"]
+    }, {"name": "汕头市", "area": ["市辖区", "龙湖区", "金平区", "濠江区", "潮阳区", "潮南区", "澄海区", "南澳县"]}, {
         "name": "佛山市",
-        "area": [
-          "禅城区",
-          "南海区",
-          "顺德区",
-          "三水区",
-          "高明区"
-        ]
-      },
-      {
-        "name": "江门市",
-        "area": [
-          "蓬江区",
-          "江海区",
-          "新会区",
-          "恩平市",
-          "台山市",
-          "开平市",
-          "鹤山市"
-        ]
-      },
-      {
+        "area": ["市辖区", "禅城区", "南海区", "顺德区", "三水区", "高明区"]
+    }, {"name": "江门市", "area": ["市辖区", "蓬江区", "江海区", "新会区", "台山市", "开平市", "鹤山市", "恩平市"]}, {
         "name": "湛江市",
-        "area": [
-          "赤坎区",
-          "霞山区",
-          "坡头区",
-          "麻章区",
-          "吴川市",
-          "廉江市",
-          "雷州市",
-          "遂溪县",
-          "徐闻县"
-        ]
-      },
-      {
-        "name": "茂名市",
-        "area": [
-          "茂南区",
-          "茂港区",
-          "化州市",
-          "信宜市",
-          "高州市",
-          "电白县"
-        ]
-      },
-      {
+        "area": ["市辖区", "赤坎区", "霞山区", "坡头区", "麻章区", "遂溪县", "徐闻县", "廉江市", "雷州市", "吴川市"]
+    }, {"name": "茂名市", "area": ["市辖区", "茂南区", "电白区", "高州市", "化州市", "信宜市"]}, {
         "name": "肇庆市",
-        "area": [
-          "端州区",
-          "鼎湖区",
-          "高要市",
-          "四会市",
-          "广宁县",
-          "怀集县",
-          "封开县",
-          "德庆县"
-        ]
-      },
-      {
-        "name": "惠州市",
-        "area": [
-          "惠城区",
-          "惠阳区",
-          "博罗县",
-          "惠东县",
-          "龙门县"
-        ]
-      },
-      {
+        "area": ["市辖区", "端州区", "鼎湖区", "高要区", "广宁县", "怀集县", "封开县", "德庆县", "四会市"]
+    }, {"name": "惠州市", "area": ["市辖区", "惠城区", "惠阳区", "博罗县", "惠东县", "龙门县"]}, {
         "name": "梅州市",
-        "area": [
-          "梅江区",
-          "兴宁市",
-          "梅县",
-          "大埔县",
-          "丰顺县",
-          "五华县",
-          "平远县",
-          "蕉岭县"
-        ]
-      },
-      {
-        "name": "汕尾市",
-        "area": [
-          "城区",
-          "陆丰市",
-          "海丰县",
-          "陆河县"
-        ]
-      },
-      {
+        "area": ["市辖区", "梅江区", "梅县区", "大埔县", "丰顺县", "五华县", "平远县", "蕉岭县", "兴宁市"]
+    }, {"name": "汕尾市", "area": ["市辖区", "城区", "海丰县", "陆河县", "陆丰市"]}, {
         "name": "河源市",
-        "area": [
-          "源城区",
-          "紫金县",
-          "龙川县",
-          "连平县",
-          "和平县",
-          "东源县"
-        ]
-      },
-      {
-        "name": "阳江市",
-        "area": [
-          "江城区",
-          "阳春市",
-          "阳西县",
-          "阳东县"
-        ]
-      },
-      {
+        "area": ["市辖区", "源城区", "紫金县", "龙川县", "连平县", "和平县", "东源县"]
+    }, {"name": "阳江市", "area": ["市辖区", "江城区", "阳东区", "阳西县", "阳春市"]}, {
         "name": "清远市",
-        "area": [
-          "清城区",
-          "英德市",
-          "连州市",
-          "佛冈县",
-          "阳山县",
-          "清新县",
-          "连山壮族瑶族自治县",
-          "连南瑶族自治县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "广西",
-    "city": [
-      {
+        "area": ["市辖区", "清城区", "清新区", "佛冈县", "阳山县", "连山壮族瑶族自治县", "连南瑶族自治县", "英德市", "连州市"]
+    }, {
+        "name": "东莞市",
+        "area": ["东城街道办事处", "南城街道办事处", "万江街道办事处", "莞城街道办事处", "石碣镇", "石龙镇", "茶山镇", "石排镇", "企石镇", "横沥镇", "桥头镇", "谢岗镇", "东坑镇", "常平镇", "寮步镇", "樟木头镇", "大朗镇", "黄江镇", "清溪镇", "塘厦镇", "凤岗镇", "大岭山镇", "长安镇", "虎门镇", "厚街镇", "沙田镇", "道滘镇", "洪梅镇", "麻涌镇", "望牛墩镇", "中堂镇", "高埗镇", "松山湖管委会", "虎门港管委会", "东莞生态园"]
+    }, {
+        "name": "中山市",
+        "area": ["石岐区街道办事处", "东区街道办事处", "火炬开发区街道办事处", "西区街道办事处", "南区街道办事处", "五桂山街道办事处", "小榄镇", "黄圃镇", "民众镇", "东凤镇", "东升镇", "古镇镇", "沙溪镇", "坦洲镇", "港口镇", "三角镇", "横栏镇", "南头镇", "阜沙镇", "南朗镇", "三乡镇", "板芙镇", "大涌镇", "神湾镇"]
+    }, {"name": "潮州市", "area": ["市辖区", "湘桥区", "潮安区", "饶平县"]}, {
+        "name": "揭阳市",
+        "area": ["市辖区", "榕城区", "揭东区", "揭西县", "惠来县", "普宁市"]
+    }, {"name": "云浮市", "area": ["市辖区", "云城区", "云安区", "新兴县", "郁南县", "罗定市"]}]
+}, {
+    "name": "广西壮族自治区",
+    "city": [{
         "name": "南宁市",
-        "area": [
-          "青秀区",
-          "兴宁区",
-          "西乡塘区",
-          "良庆区",
-          "江南区",
-          "邕宁区",
-          "武鸣县",
-          "隆安县",
-          "马山县",
-          "上林县",
-          "宾阳县",
-          "横县"
-        ]
-      },
-      {
+        "area": ["市辖区", "兴宁区", "青秀区", "江南区", "西乡塘区", "良庆区", "邕宁区", "武鸣区", "隆安县", "马山县", "上林县", "宾阳县", "横县"]
+    }, {
         "name": "柳州市",
-        "area": [
-          "城中区",
-          "鱼峰区",
-          "柳北区",
-          "柳南区",
-          "柳江县",
-          "柳城县",
-          "鹿寨县",
-          "融安县",
-          "融水苗族自治县",
-          "三江侗族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "城中区", "鱼峰区", "柳南区", "柳北区", "柳江区", "柳城县", "鹿寨县", "融安县", "融水苗族自治县", "三江侗族自治县"]
+    }, {
         "name": "桂林市",
-        "area": [
-          "象山区",
-          "秀峰区",
-          "叠彩区",
-          "七星区",
-          "雁山区",
-          "阳朔县",
-          "临桂县",
-          "灵川县",
-          "全州县",
-          "平乐县",
-          "兴安县",
-          "灌阳县",
-          "荔浦县",
-          "资源县",
-          "永福县",
-          "龙胜各族自治县",
-          "恭城瑶族自治县"
-        ]
-      },
-      {
-        "name": "梧州市",
-        "area": [
-          "万秀区",
-          "蝶山区",
-          "长洲区",
-          "岑溪市",
-          "苍梧县",
-          "藤县",
-          "蒙山县"
-        ]
-      },
-      {
+        "area": ["市辖区", "秀峰区", "叠彩区", "象山区", "七星区", "雁山区", "临桂区", "阳朔县", "灵川县", "全州县", "兴安县", "永福县", "灌阳县", "龙胜各族自治县", "资源县", "平乐县", "荔浦县", "恭城瑶族自治县"]
+    }, {"name": "梧州市", "area": ["市辖区", "万秀区", "长洲区", "龙圩区", "苍梧县", "藤县", "蒙山县", "岑溪市"]}, {
         "name": "北海市",
-        "area": [
-          "海城区",
-          "银海区",
-          "铁山港区",
-          "合浦县"
-        ]
-      },
-      {
-        "name": "防城港市",
-        "area": [
-          "港口区",
-          "防城区",
-          "东兴市",
-          "上思县"
-        ]
-      },
-      {
+        "area": ["市辖区", "海城区", "银海区", "铁山港区", "合浦县"]
+    }, {"name": "防城港市", "area": ["市辖区", "港口区", "防城区", "上思县", "东兴市"]}, {
         "name": "钦州市",
-        "area": [
-          "钦南区",
-          "钦北区",
-          "灵山县",
-          "浦北县"
-        ]
-      },
-      {
-        "name": "贵港市",
-        "area": [
-          "港北区",
-          "港南区",
-          "覃塘区",
-          "桂平市",
-          "平南县"
-        ]
-      },
-      {
+        "area": ["市辖区", "钦南区", "钦北区", "灵山县", "浦北县"]
+    }, {"name": "贵港市", "area": ["市辖区", "港北区", "港南区", "覃塘区", "平南县", "桂平市"]}, {
         "name": "玉林市",
-        "area": [
-          "玉州区",
-          "北流市",
-          "容县",
-          "陆川县",
-          "博白县",
-          "兴业县"
-        ]
-      },
-      {
+        "area": ["市辖区", "玉州区", "福绵区", "容县", "陆川县", "博白县", "兴业县", "北流市"]
+    }, {
         "name": "百色市",
-        "area": [
-          "右江区",
-          "凌云县",
-          "平果县",
-          "西林县",
-          "乐业县",
-          "德保县",
-          "田林县",
-          "田阳县",
-          "靖西县",
-          "田东县",
-          "那坡县",
-          "隆林各族自治县"
-        ]
-      },
-      {
-        "name": "贺州市",
-        "area": [
-          "八步区",
-          "钟山县",
-          "昭平县",
-          "富川瑶族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "右江区", "田阳县", "田东县", "平果县", "德保县", "那坡县", "凌云县", "乐业县", "田林县", "西林县", "隆林各族自治县", "靖西市"]
+    }, {"name": "贺州市", "area": ["市辖区", "八步区", "平桂区", "昭平县", "钟山县", "富川瑶族自治县"]}, {
         "name": "河池市",
-        "area": [
-          "金城江区",
-          "宜州市",
-          "天峨县",
-          "凤山县",
-          "南丹县",
-          "东兰县",
-          "都安瑶族自治县",
-          "罗城仫佬族自治县",
-          "巴马瑶族自治县",
-          "环江毛南族自治县",
-          "大化瑶族自治县"
-        ]
-      },
-      {
-        "name": "来宾市",
-        "area": [
-          "兴宾区",
-          "合山市",
-          "象州县",
-          "武宣县",
-          "忻城县",
-          "金秀瑶族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "金城江区", "南丹县", "天峨县", "凤山县", "东兰县", "罗城仫佬族自治县", "环江毛南族自治县", "巴马瑶族自治县", "都安瑶族自治县", "大化瑶族自治县", "宜州市"]
+    }, {"name": "来宾市", "area": ["市辖区", "兴宾区", "忻城县", "象州县", "武宣县", "金秀瑶族自治县", "合山市"]}, {
         "name": "崇左市",
-        "area": [
-          "江州区",
-          "凭祥市",
-          "宁明县",
-          "扶绥县",
-          "龙州县",
-          "大新县",
-          "天等县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "江州区", "扶绥县", "宁明县", "龙州县", "大新县", "天等县", "凭祥市"]
+    }]
+}, {
     "name": "海南省",
-    "city": [
-      {
-        "name": "海口市",
-        "area": [
-          "龙华区",
-          "秀英区",
-          "琼山区",
-          "美兰区"
-        ]
-      },
-      {
+    "city": [{"name": "海口市", "area": ["市辖区", "秀英区", "龙华区", "琼山区", "美兰区"]}, {
         "name": "三亚市",
-        "area": [
-          "三亚市"
-        ]
-      },
-      {
-        "name": "五指山市",
-        "area": [
-          "五指山"
-        ]
-      },
-      {
-        "name": "琼海市",
-        "area": [
-          "琼海"
-        ]
-      },
-      {
+        "area": ["市辖区", "海棠区", "吉阳区", "天涯区", "崖州区"]
+    }, {"name": "三沙市", "area": ["西沙群岛", "南沙群岛", "中沙群岛的岛礁及其海域"]}, {
         "name": "儋州市",
-        "area": [
-          "儋州"
-        ]
-      },
-      {
-        "name": "文昌市",
-        "area": [
-          "文昌"
-        ]
-      },
-      {
-        "name": "万宁市",
-        "area": [
-          "万宁"
-        ]
-      },
-      {
-        "name": "东方市",
-        "area": [
-          "东方"
-        ]
-      },
-      {
-        "name": "澄迈县",
-        "area": [
-          "澄迈县"
-        ]
-      },
-      {
-        "name": "定安县",
-        "area": [
-          "定安县"
-        ]
-      },
-      {
-        "name": "屯昌县",
-        "area": [
-          "屯昌县"
-        ]
-      },
-      {
-        "name": "临高县",
-        "area": [
-          "临高县"
-        ]
-      },
-      {
-        "name": "白沙黎族自治县",
-        "area": [
-          "白沙黎族自治县"
-        ]
-      },
-      {
-        "name": "昌江黎族自治县",
-        "area": [
-          "昌江黎族自治县"
-        ]
-      },
-      {
-        "name": "乐东黎族自治县",
-        "area": [
-          "乐东黎族自治县"
-        ]
-      },
-      {
-        "name": "陵水黎族自治县",
-        "area": [
-          "陵水黎族自治县"
-        ]
-      },
-      {
-        "name": "保亭黎族苗族自治县",
-        "area": [
-          "保亭黎族苗族自治县"
-        ]
-      },
-      {
-        "name": "琼中黎族苗族自治县",
-        "area": [
-          "琼中黎族苗族自治县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["那大镇", "和庆镇", "南丰镇", "大成镇", "雅星镇", "兰洋镇", "光村镇", "木棠镇", "海头镇", "峨蔓镇", "三都镇", "王五镇", "白马井镇", "中和镇", "排浦镇", "东成镇", "新州镇", "国营西培农场", "国营西联农场", "国营蓝洋农场", "国营八一农场", "洋浦经济开发区", "华南热作学院"]
+    }, {
+        "name": "省直辖县级行政区域",
+        "area": ["五指山市", "琼海市", "文昌市", "万宁市", "东方市", "定安县", "屯昌县", "澄迈县", "临高县", "白沙黎族自治县", "昌江黎族自治县", "乐东黎族自治县", "陵水黎族自治县", "保亭黎族苗族自治县", "琼中黎族苗族自治县"]
+    }]
+}, {
     "name": "重庆市",
-    "city": [
-      {
+    "city": [{
         "name": "重庆市",
-        "area": [
-          "渝中区",
-          "大渡口区",
-          "江北区",
-          "南岸区",
-          "北碚区",
-          "渝北区",
-          "巴南区",
-          "长寿区",
-          "双桥区",
-          "沙坪坝区",
-          "万盛区",
-          "万州区",
-          "涪陵区",
-          "黔江区",
-          "永川区",
-          "合川区",
-          "江津区",
-          "九龙坡区",
-          "南川区",
-          "綦江县",
-          "潼南县",
-          "荣昌县",
-          "璧山县",
-          "大足县",
-          "铜梁县",
-          "梁平县",
-          "开县",
-          "忠县",
-          "城口县",
-          "垫江县",
-          "武隆县",
-          "丰都县",
-          "奉节县",
-          "云阳县",
-          "巫溪县",
-          "巫山县",
-          "石柱土家族自治县",
-          "秀山土家族苗族自治县",
-          "酉阳土家族苗族自治县",
-          "彭水苗族土家族自治县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["万州区", "涪陵区", "渝中区", "大渡口区", "江北区", "沙坪坝区", "九龙坡区", "南岸区", "北碚区", "綦江区", "大足区", "渝北区", "巴南区", "黔江区", "长寿区", "江津区", "合川区", "永川区", "南川区", "璧山区", "铜梁区", "潼南区", "荣昌区", "开州区"]
+    }, {
+        "name": "县",
+        "area": ["梁平县", "城口县", "丰都县", "垫江县", "武隆县", "忠县", "云阳县", "奉节县", "巫山县", "巫溪县", "石柱土家族自治县", "秀山土家族苗族自治县", "酉阳土家族苗族自治县", "彭水苗族土家族自治县"]
+    }]
+}, {
     "name": "四川省",
-    "city": [
-      {
+    "city": [{
         "name": "成都市",
-        "area": [
-          "青羊区",
-          "锦江区",
-          "金牛区",
-          "武侯区",
-          "成华区",
-          "龙泉驿区",
-          "青白江区",
-          "新都区",
-          "温江区",
-          "都江堰市",
-          "彭州市",
-          "邛崃市",
-          "崇州市",
-          "金堂县",
-          "郫县",
-          "新津县",
-          "双流县",
-          "蒲江县",
-          "大邑县"
-        ]
-      },
-      {
-        "name": "自贡市",
-        "area": [
-          "大安区",
-          "自流井区",
-          "贡井区",
-          "沿滩区",
-          "荣县",
-          "富顺县"
-        ]
-      },
-      {
+        "area": ["市辖区", "锦江区", "青羊区", "金牛区", "武侯区", "成华区", "龙泉驿区", "青白江区", "新都区", "温江区", "双流区", "金堂县", "郫县", "大邑县", "蒲江县", "新津县", "都江堰市", "彭州市", "邛崃市", "崇州市", "简阳市"]
+    }, {"name": "自贡市", "area": ["市辖区", "自流井区", "贡井区", "大安区", "沿滩区", "荣县", "富顺县"]}, {
         "name": "攀枝花市",
-        "area": [
-          "仁和区",
-          "米易县",
-          "盐边县",
-          "东区",
-          "西区"
-        ]
-      },
-      {
-        "name": "泸州市",
-        "area": [
-          "江阳区",
-          "纳溪区",
-          "龙马潭区",
-          "泸县",
-          "合江县",
-          "叙永县",
-          "古蔺县"
-        ]
-      },
-      {
+        "area": ["市辖区", "东区", "西区", "仁和区", "米易县", "盐边县"]
+    }, {"name": "泸州市", "area": ["市辖区", "江阳区", "纳溪区", "龙马潭区", "泸县", "合江县", "叙永县", "古蔺县"]}, {
         "name": "德阳市",
-        "area": [
-          "旌阳区",
-          "广汉市",
-          "什邡市",
-          "绵竹市",
-          "罗江县",
-          "中江县"
-        ]
-      },
-      {
+        "area": ["市辖区", "旌阳区", "中江县", "罗江县", "广汉市", "什邡市", "绵竹市"]
+    }, {
         "name": "绵阳市",
-        "area": [
-          "涪城区",
-          "游仙区",
-          "江油市",
-          "盐亭县",
-          "三台县",
-          "平武县",
-          "安县",
-          "梓潼县",
-          "北川羌族自治县"
-        ]
-      },
-      {
-        "name": "广元市",
-        "area": [
-          "元坝区",
-          "朝天区",
-          "青川县",
-          "旺苍县",
-          "剑阁县",
-          "苍溪县",
-          "市中区"
-        ]
-      },
-      {
+        "area": ["市辖区", "涪城区", "游仙区", "安州区", "三台县", "盐亭县", "梓潼县", "北川羌族自治县", "平武县", "江油市"]
+    }, {"name": "广元市", "area": ["市辖区", "利州区", "昭化区", "朝天区", "旺苍县", "青川县", "剑阁县", "苍溪县"]}, {
         "name": "遂宁市",
-        "area": [
-          "船山区",
-          "安居区",
-          "射洪县",
-          "蓬溪县",
-          "大英县"
-        ]
-      },
-      {
-        "name": "内江市",
-        "area": [
-          "市中区",
-          "东兴区",
-          "资中县",
-          "隆昌县",
-          "威远县"
-        ]
-      },
-      {
+        "area": ["市辖区", "船山区", "安居区", "蓬溪县", "射洪县", "大英县"]
+    }, {"name": "内江市", "area": ["市辖区", "市中区", "东兴区", "威远县", "资中县", "隆昌县"]}, {
         "name": "乐山市",
-        "area": [
-          "市中区",
-          "五通桥区",
-          "沙湾区",
-          "金口河区",
-          "峨眉山市",
-          "夹江县",
-          "井研县",
-          "犍为县",
-          "沐川县",
-          "马边彝族自治县",
-          "峨边彝族自治县"
-        ]
-      },
-      {
-        "name": "南充",
-        "area": [
-          "顺庆区",
-          "高坪区",
-          "嘉陵区",
-          "阆中市",
-          "营山县",
-          "蓬安县",
-          "仪陇县",
-          "南部县",
-          "西充县"
-        ]
-      },
-      {
+        "area": ["市辖区", "市中区", "沙湾区", "五通桥区", "金口河区", "犍为县", "井研县", "夹江县", "沐川县", "峨边彝族自治县", "马边彝族自治县", "峨眉山市"]
+    }, {"name": "南充市", "area": ["市辖区", "顺庆区", "高坪区", "嘉陵区", "南部县", "营山县", "蓬安县", "仪陇县", "西充县", "阆中市"]}, {
         "name": "眉山市",
-        "area": [
-          "东坡区",
-          "仁寿县",
-          "彭山县",
-          "洪雅县",
-          "丹棱县",
-          "青神县"
-        ]
-      },
-      {
+        "area": ["市辖区", "东坡区", "彭山区", "仁寿县", "洪雅县", "丹棱县", "青神县"]
+    }, {
         "name": "宜宾市",
-        "area": [
-          "翠屏区",
-          "宜宾县",
-          "兴文县",
-          "南溪县",
-          "珙县",
-          "长宁县",
-          "高县",
-          "江安县",
-          "筠连县",
-          "屏山县"
-        ]
-      },
-      {
-        "name": "广安市",
-        "area": [
-          "广安区",
-          "华蓥市",
-          "岳池县",
-          "邻水县",
-          "武胜县"
-        ]
-      },
-      {
+        "area": ["市辖区", "翠屏区", "南溪区", "宜宾县", "江安县", "长宁县", "高县", "珙县", "筠连县", "兴文县", "屏山县"]
+    }, {"name": "广安市", "area": ["市辖区", "广安区", "前锋区", "岳池县", "武胜县", "邻水县", "华蓥市"]}, {
         "name": "达州市",
-        "area": [
-          "通川区",
-          "万源市",
-          "达县",
-          "渠县",
-          "宣汉县",
-          "开江县",
-          "大竹县"
-        ]
-      },
-      {
-        "name": "雅安市",
-        "area": [
-          "雨城区",
-          "芦山县",
-          "石棉县",
-          "名山县",
-          "天全县",
-          "荥经县",
-          "宝兴县",
-          "汉源县"
-        ]
-      },
-      {
+        "area": ["市辖区", "通川区", "达川区", "宣汉县", "开江县", "大竹县", "渠县", "万源市"]
+    }, {"name": "雅安市", "area": ["市辖区", "雨城区", "名山区", "荥经县", "汉源县", "石棉县", "天全县", "芦山县", "宝兴县"]}, {
         "name": "巴中市",
-        "area": [
-          "巴州区",
-          "南江县",
-          "平昌县",
-          "通江县"
-        ]
-      },
-      {
-        "name": "资阳市",
-        "area": [
-          "雁江区",
-          "简阳市",
-          "安岳县",
-          "乐至县"
-        ]
-      },
-      {
+        "area": ["市辖区", "巴州区", "恩阳区", "通江县", "南江县", "平昌县"]
+    }, {"name": "资阳市", "area": ["市辖区", "雁江区", "安岳县", "乐至县"]}, {
         "name": "阿坝藏族羌族自治州",
-        "area": [
-          "马尔康县",
-          "九寨沟县",
-          "红原县",
-          "汶川县",
-          "阿坝县",
-          "理县",
-          "若尔盖县",
-          "小金县",
-          "黑水县",
-          "金川县",
-          "松潘县",
-          "壤塘县",
-          "茂县"
-        ]
-      },
-      {
+        "area": ["马尔康市", "汶川县", "理县", "茂县", "松潘县", "九寨沟县", "金川县", "小金县", "黑水县", "壤塘县", "阿坝县", "若尔盖县", "红原县"]
+    }, {
         "name": "甘孜藏族自治州",
-        "area": [
-          "康定县",
-          "丹巴县",
-          "炉霍县",
-          "九龙县",
-          "甘孜县",
-          "雅江县",
-          "新龙县",
-          "道孚县",
-          "白玉县",
-          "理塘县",
-          "德格县",
-          "乡城县",
-          "石渠县",
-          "稻城县",
-          "色达县",
-          "巴塘县",
-          "泸定县",
-          "得荣县"
-        ]
-      },
-      {
+        "area": ["康定市", "泸定县", "丹巴县", "九龙县", "雅江县", "道孚县", "炉霍县", "甘孜县", "新龙县", "德格县", "白玉县", "石渠县", "色达县", "理塘县", "巴塘县", "乡城县", "稻城县", "得荣县"]
+    }, {
         "name": "凉山彝族自治州",
-        "area": [
-          "西昌市",
-          "美姑县",
-          "昭觉县",
-          "金阳县",
-          "甘洛县",
-          "布拖县",
-          "雷波县",
-          "普格县",
-          "宁南县",
-          "喜德县",
-          "会东县",
-          "越西县",
-          "会理县",
-          "盐源县",
-          "德昌县",
-          "冕宁县",
-          "木里藏族自治县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["西昌市", "木里藏族自治县", "盐源县", "德昌县", "会理县", "会东县", "宁南县", "普格县", "布拖县", "金阳县", "昭觉县", "喜德县", "冕宁县", "越西县", "甘洛县", "美姑县", "雷波县"]
+    }]
+}, {
     "name": "贵州省",
-    "city": [
-      {
+    "city": [{
         "name": "贵阳市",
-        "area": [
-          "南明区",
-          "云岩区",
-          "花溪区",
-          "乌当区",
-          "白云区",
-          "小河区",
-          "清镇市",
-          "开阳县",
-          "修文县",
-          "息烽县"
-        ]
-      },
-      {
-        "name": "六盘水市",
-        "area": [
-          "钟山区",
-          "水城县",
-          "盘县",
-          "六枝特区"
-        ]
-      },
-      {
+        "area": ["市辖区", "南明区", "云岩区", "花溪区", "乌当区", "白云区", "观山湖区", "开阳县", "息烽县", "修文县", "清镇市"]
+    }, {"name": "六盘水市", "area": ["钟山区", "六枝特区", "水城县", "盘县"]}, {
         "name": "遵义市",
-        "area": [
-          "红花岗区",
-          "汇川区",
-          "赤水市",
-          "仁怀市",
-          "遵义县",
-          "绥阳县",
-          "桐梓县",
-          "习水县",
-          "凤冈县",
-          "正安县",
-          "余庆县",
-          "湄潭县",
-          "道真仡佬族苗族自治县",
-          "务川仡佬族苗族自治县"
-        ]
-      },
-      {
-        "name": "安顺市",
-        "area": [
-          "西秀区",
-          "普定县",
-          "平坝县",
-          "镇宁布依族苗族自治县",
-          "紫云苗族布依族自治县",
-          "关岭布依族苗族自治县"
-        ]
-      },
-      {
-        "name": "铜仁地区",
-        "area": [
-          "铜仁市",
-          "德江县",
-          "江口县",
-          "思南县",
-          "石阡县",
-          "玉屏侗族自治县",
-          "松桃苗族自治县",
-          "印江土家族苗族自治县",
-          "沿河土家族自治县",
-          "万山特区"
-        ]
-      },
-      {
-        "name": "毕节地区",
-        "area": [
-          "毕节市",
-          "黔西县",
-          "大方县",
-          "织金县",
-          "金沙县",
-          "赫章县",
-          "纳雍县",
-          "威宁彝族回族苗族自治县"
-        ]
-      },
-      {
-        "name": "黔西南布依族苗族自治州",
-        "area": [
-          "兴义市",
-          "望谟县",
-          "兴仁县",
-          "普安县",
-          "册亨县",
-          "晴隆县",
-          "贞丰县",
-          "安龙县"
-        ]
-      },
-      {
+        "area": ["市辖区", "红花岗区", "汇川区", "播州区", "桐梓县", "绥阳县", "正安县", "道真仡佬族苗族自治县", "务川仡佬族苗族自治县", "凤冈县", "湄潭县", "余庆县", "习水县", "赤水市", "仁怀市"]
+    }, {"name": "安顺市", "area": ["市辖区", "西秀区", "平坝区", "普定县", "镇宁布依族苗族自治县", "关岭布依族苗族自治县", "紫云苗族布依族自治县"]}, {
+        "name": "毕节市",
+        "area": ["市辖区", "七星关区", "大方县", "黔西县", "金沙县", "织金县", "纳雍县", "威宁彝族回族苗族自治县", "赫章县"]
+    }, {
+        "name": "铜仁市",
+        "area": ["市辖区", "碧江区", "万山区", "江口县", "玉屏侗族自治县", "石阡县", "思南县", "印江土家族苗族自治县", "德江县", "沿河土家族自治县", "松桃苗族自治县"]
+    }, {"name": "黔西南布依族苗族自治州", "area": ["兴义市", "兴仁县", "普安县", "晴隆县", "贞丰县", "望谟县", "册亨县", "安龙县"]}, {
         "name": "黔东南苗族侗族自治州",
-        "area": [
-          "凯里市",
-          "施秉县",
-          "从江县",
-          "锦屏县",
-          "镇远县",
-          "麻江县",
-          "台江县",
-          "天柱县",
-          "黄平县",
-          "榕江县",
-          "剑河县",
-          "三穗县",
-          "雷山县",
-          "黎平县",
-          "岑巩县",
-          "丹寨县"
-        ]
-      },
-      {
+        "area": ["凯里市", "黄平县", "施秉县", "三穗县", "镇远县", "岑巩县", "天柱县", "锦屏县", "剑河县", "台江县", "黎平县", "榕江县", "从江县", "雷山县", "麻江县", "丹寨县"]
+    }, {
         "name": "黔南布依族苗族自治州",
-        "area": [
-          "都匀市",
-          "福泉市",
-          "贵定县",
-          "惠水县",
-          "罗甸县",
-          "瓮安县",
-          "荔波县",
-          "龙里县",
-          "平塘县",
-          "长顺县",
-          "独山县",
-          "三都水族自治县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["都匀市", "福泉市", "荔波县", "贵定县", "瓮安县", "独山县", "平塘县", "罗甸县", "长顺县", "龙里县", "惠水县", "三都水族自治县"]
+    }]
+}, {
     "name": "云南省",
-    "city": [
-      {
+    "city": [{
         "name": "昆明市",
-        "area": [
-          "盘龙区",
-          "五华区",
-          "官渡区",
-          "西山区",
-          "东川区",
-          "安宁市",
-          "呈贡县",
-          "晋宁县",
-          "富民县",
-          "宜良县",
-          "嵩明县",
-          "石林彝族自治县",
-          "禄劝彝族苗族自治县",
-          "寻甸回族彝族自治县"
-        ]
-      },
-      {
-        "name": "曲靖市",
-        "area": [
-          "麒麟区",
-          "宣威市",
-          "马龙县",
-          "沾益县",
-          "富源县",
-          "罗平县",
-          "师宗县",
-          "陆良县",
-          "会泽县"
-        ]
-      },
-      {
+        "area": ["市辖区", "五华区", "盘龙区", "官渡区", "西山区", "东川区", "呈贡区", "晋宁县", "富民县", "宜良县", "石林彝族自治县", "嵩明县", "禄劝彝族苗族自治县", "寻甸回族彝族自治县", "安宁市"]
+    }, {"name": "曲靖市", "area": ["市辖区", "麒麟区", "沾益区", "马龙县", "陆良县", "师宗县", "罗平县", "富源县", "会泽县", "宣威市"]}, {
         "name": "玉溪市",
-        "area": [
-          "红塔区",
-          "江川县",
-          "澄江县",
-          "通海县",
-          "华宁县",
-          "易门县",
-          "峨山彝族自治县",
-          "新平彝族傣族自治县",
-          "元江哈尼族彝族傣族自治县"
-        ]
-      },
-      {
-        "name": "保山市",
-        "area": [
-          "隆阳区",
-          "施甸县",
-          "腾冲县",
-          "龙陵县",
-          "昌宁县"
-        ]
-      },
-      {
+        "area": ["市辖区", "红塔区", "江川区", "澄江县", "通海县", "华宁县", "易门县", "峨山彝族自治县", "新平彝族傣族自治县", "元江哈尼族彝族傣族自治县"]
+    }, {"name": "保山市", "area": ["市辖区", "隆阳区", "施甸县", "龙陵县", "昌宁县", "腾冲市"]}, {
         "name": "昭通市",
-        "area": [
-          "昭阳区",
-          "鲁甸县",
-          "巧家县",
-          "盐津县",
-          "大关县",
-          "永善县",
-          "绥江县",
-          "镇雄县",
-          "彝良县",
-          "威信县",
-          "水富县"
-        ]
-      },
-      {
-        "name": "丽江市",
-        "area": [
-          "古城区",
-          "永胜县",
-          "华坪县",
-          "玉龙纳西族自治县",
-          "宁蒗彝族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "昭阳区", "鲁甸县", "巧家县", "盐津县", "大关县", "永善县", "绥江县", "镇雄县", "彝良县", "威信县", "水富县"]
+    }, {"name": "丽江市", "area": ["市辖区", "古城区", "玉龙纳西族自治县", "永胜县", "华坪县", "宁蒗彝族自治县"]}, {
         "name": "普洱市",
-        "area": [
-          "思茅区",
-          "普洱哈尼族彝族自治县",
-          "墨江哈尼族自治县",
-          "景东彝族自治县",
-          "景谷傣族彝族自治县",
-          "镇沅彝族哈尼族拉祜族自治县",
-          "江城哈尼族彝族自治县",
-          "孟连傣族拉祜族佤族自治县",
-          "澜沧拉祜族自治县",
-          "西盟佤族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "思茅区", "宁洱哈尼族彝族自治县", "墨江哈尼族自治县", "景东彝族自治县", "景谷傣族彝族自治县", "镇沅彝族哈尼族拉祜族自治县", "江城哈尼族彝族自治县", "孟连傣族拉祜族佤族自治县", "澜沧拉祜族自治县", "西盟佤族自治县"]
+    }, {
         "name": "临沧市",
-        "area": [
-          "临翔区",
-          "凤庆县",
-          "云县",
-          "永德县",
-          "镇康县",
-          "双江拉祜族佤族布朗族傣族自治县",
-          "耿马傣族佤族自治县",
-          "沧源佤族自治县"
-        ]
-      },
-      {
-        "name": "德宏傣族景颇族自治州",
-        "area": [
-          "潞西市",
-          "瑞丽市",
-          "梁河县",
-          "盈江县",
-          "陇川县"
-        ]
-      },
-      {
-        "name": "怒江傈僳族自治州",
-        "area": [
-          "泸水县",
-          "福贡县",
-          "贡山独龙族怒族自治县",
-          "兰坪白族普米族自治县"
-        ]
-      },
-      {
-        "name": "迪庆藏族自治州",
-        "area": [
-          "香格里拉县",
-          "德钦县",
-          "维西傈僳族自治县"
-        ]
-      },
-      {
-        "name": "大理白族自治州",
-        "area": [
-          "大理市",
-          "祥云县",
-          "宾川县",
-          "弥渡县",
-          "永平县",
-          "云龙县",
-          "洱源县",
-          "剑川县",
-          "鹤庆县",
-          "漾濞彝族自治县",
-          "南涧彝族自治县",
-          "巍山彝族回族自治县"
-        ]
-      },
-      {
+        "area": ["市辖区", "临翔区", "凤庆县", "云县", "永德县", "镇康县", "双江拉祜族佤族布朗族傣族自治县", "耿马傣族佤族自治县", "沧源佤族自治县"]
+    }, {
         "name": "楚雄彝族自治州",
-        "area": [
-          "楚雄市",
-          "双柏县",
-          "牟定县",
-          "南华县",
-          "姚安县",
-          "大姚县",
-          "永仁县",
-          "元谋县",
-          "武定县",
-          "禄丰县"
-        ]
-      },
-      {
+        "area": ["楚雄市", "双柏县", "牟定县", "南华县", "姚安县", "大姚县", "永仁县", "元谋县", "武定县", "禄丰县"]
+    }, {
         "name": "红河哈尼族彝族自治州",
-        "area": [
-          "蒙自县",
-          "个旧市",
-          "开远市",
-          "绿春县",
-          "建水县",
-          "石屏县",
-          "弥勒县",
-          "泸西县",
-          "元阳县",
-          "红河县",
-          "金平苗族瑶族傣族自治县",
-          "河口瑶族自治县",
-          "屏边苗族自治县"
-        ]
-      },
-      {
-        "name": "文山壮族苗族自治州",
-        "area": [
-          "文山县",
-          "砚山县",
-          "西畴县",
-          "麻栗坡县",
-          "马关县",
-          "丘北县",
-          "广南县",
-          "富宁县"
-        ]
-      },
-      {
+        "area": ["个旧市", "开远市", "蒙自市", "弥勒市", "屏边苗族自治县", "建水县", "石屏县", "泸西县", "元阳县", "红河县", "金平苗族瑶族傣族自治县", "绿春县", "河口瑶族自治县"]
+    }, {"name": "文山壮族苗族自治州", "area": ["文山市", "砚山县", "西畴县", "麻栗坡县", "马关县", "丘北县", "广南县", "富宁县"]}, {
         "name": "西双版纳傣族自治州",
-        "area": [
-          "景洪市",
-          "勐海县",
-          "勐腊县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "西藏",
-    "city": [
-      {
+        "area": ["景洪市", "勐海县", "勐腊县"]
+    }, {
+        "name": "大理白族自治州",
+        "area": ["大理市", "漾濞彝族自治县", "祥云县", "宾川县", "弥渡县", "南涧彝族自治县", "巍山彝族回族自治县", "永平县", "云龙县", "洱源县", "剑川县", "鹤庆县"]
+    }, {"name": "德宏傣族景颇族自治州", "area": ["瑞丽市", "芒市", "梁河县", "盈江县", "陇川县"]}, {
+        "name": "怒江傈僳族自治州",
+        "area": ["泸水市", "福贡县", "贡山独龙族怒族自治县", "兰坪白族普米族自治县"]
+    }, {"name": "迪庆藏族自治州", "area": ["香格里拉市", "德钦县", "维西傈僳族自治县"]}]
+}, {
+    "name": "西藏自治区",
+    "city": [{
         "name": "拉萨市",
-        "area": [
-          "城关区",
-          "林周县",
-          "当雄县",
-          "尼木县",
-          "曲水县",
-          "堆龙德庆县",
-          "达孜县",
-          "墨竹工卡县"
-        ]
-      },
-      {
+        "area": ["市辖区", "城关区", "堆龙德庆区", "林周县", "当雄县", "尼木县", "曲水县", "达孜县", "墨竹工卡县"]
+    }, {
+        "name": "日喀则市",
+        "area": ["桑珠孜区", "南木林县", "江孜县", "定日县", "萨迦县", "拉孜县", "昂仁县", "谢通门县", "白朗县", "仁布县", "康马县", "定结县", "仲巴县", "亚东县", "吉隆县", "聂拉木县", "萨嘎县", "岗巴县"]
+    }, {
+        "name": "昌都市",
+        "area": ["卡若区", "江达县", "贡觉县", "类乌齐县", "丁青县", "察雅县", "八宿县", "左贡县", "芒康县", "洛隆县", "边坝县"]
+    }, {"name": "林芝市", "area": ["巴宜区", "工布江达县", "米林县", "墨脱县", "波密县", "察隅县", "朗县"]}, {
+        "name": "山南市",
+        "area": ["市辖区", "乃东区", "扎囊县", "贡嘎县", "桑日县", "琼结县", "曲松县", "措美县", "洛扎县", "加查县", "隆子县", "错那县", "浪卡子县"]
+    }, {
         "name": "那曲地区",
-        "area": [
-          "那曲县",
-          "嘉黎县",
-          "比如县",
-          "聂荣县",
-          "安多县",
-          "申扎县",
-          "索县",
-          "班戈县",
-          "巴青县",
-          "尼玛县"
-        ]
-      },
-      {
-        "name": "昌都地区",
-        "area": [
-          "昌都县",
-          "江达县",
-          "贡觉县",
-          "类乌齐县",
-          "丁青县",
-          "察雅县",
-          "八宿县",
-          "左贡县",
-          "芒康县",
-          "洛隆县",
-          "边坝县"
-        ]
-      },
-      {
-        "name": "林芝地区",
-        "area": [
-          "林芝县",
-          "工布江达县",
-          "米林县",
-          "墨脱县",
-          "波密县",
-          "察隅县",
-          "朗县"
-        ]
-      },
-      {
-        "name": "山南地区",
-        "area": [
-          "乃东县",
-          "扎囊县",
-          "贡嘎县",
-          "桑日县",
-          "琼结县",
-          "曲松县",
-          "措美县",
-          "洛扎县",
-          "加查县",
-          "隆子县",
-          "错那县",
-          "浪卡子县"
-        ]
-      },
-      {
-        "name": "日喀则地区",
-        "area": [
-          "日喀则市",
-          "南木林县",
-          "江孜县",
-          "定日县",
-          "萨迦县",
-          "拉孜县",
-          "昂仁县",
-          "谢通门县",
-          "白朗县",
-          "仁布县",
-          "康马县",
-          "定结县",
-          "仲巴县",
-          "亚东县",
-          "吉隆县",
-          "聂拉木县",
-          "萨嘎县",
-          "岗巴县"
-        ]
-      },
-      {
-        "name": "阿里地区",
-        "area": [
-          "噶尔县",
-          "普兰县",
-          "札达县",
-          "日土县",
-          "革吉县",
-          "改则县",
-          "措勤县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["那曲县", "嘉黎县", "比如县", "聂荣县", "安多县", "申扎县", "索县", "班戈县", "巴青县", "尼玛县", "双湖县"]
+    }, {"name": "阿里地区", "area": ["普兰县", "札达县", "噶尔县", "日土县", "革吉县", "改则县", "措勤县"]}]
+}, {
     "name": "陕西省",
-    "city": [
-      {
+    "city": [{
         "name": "西安市",
-        "area": [
-          "莲湖区",
-          "新城区",
-          "碑林区",
-          "雁塔区",
-          "灞桥区",
-          "未央区",
-          "阎良区",
-          "临潼区",
-          "长安区",
-          "高陵县",
-          "蓝田县",
-          "户县",
-          "周至县"
-        ]
-      },
-      {
-        "name": "铜川市",
-        "area": [
-          "耀州区",
-          "王益区",
-          "印台区",
-          "宜君县"
-        ]
-      },
-      {
+        "area": ["市辖区", "新城区", "碑林区", "莲湖区", "灞桥区", "未央区", "雁塔区", "阎良区", "临潼区", "长安区", "高陵区", "蓝田县", "周至县", "户县"]
+    }, {"name": "铜川市", "area": ["市辖区", "王益区", "印台区", "耀州区", "宜君县"]}, {
         "name": "宝鸡市",
-        "area": [
-          "渭滨区",
-          "金台区",
-          "陈仓区",
-          "岐山县",
-          "凤翔县",
-          "陇县",
-          "太白县",
-          "麟游县",
-          "扶风县",
-          "千阳县",
-          "眉县",
-          "凤县"
-        ]
-      },
-      {
+        "area": ["市辖区", "渭滨区", "金台区", "陈仓区", "凤翔县", "岐山县", "扶风县", "眉县", "陇县", "千阳县", "麟游县", "凤县", "太白县"]
+    }, {
         "name": "咸阳市",
-        "area": [
-          "秦都区",
-          "渭城区",
-          "杨陵区",
-          "兴平市",
-          "礼泉县",
-          "泾阳县",
-          "永寿县",
-          "三原县",
-          "彬县",
-          "旬邑县",
-          "长武县",
-          "乾县",
-          "武功县",
-          "淳化县"
-        ]
-      },
-      {
+        "area": ["市辖区", "秦都区", "杨陵区", "渭城区", "三原县", "泾阳县", "乾县", "礼泉县", "永寿县", "彬县", "长武县", "旬邑县", "淳化县", "武功县", "兴平市"]
+    }, {
         "name": "渭南市",
-        "area": [
-          "临渭区",
-          "韩城市",
-          "华阴市",
-          "蒲城县",
-          "潼关县",
-          "白水县",
-          "澄城县",
-          "华县",
-          "合阳县",
-          "富平县",
-          "大荔县"
-        ]
-      },
-      {
+        "area": ["市辖区", "临渭区", "华州区", "潼关县", "大荔县", "合阳县", "澄城县", "蒲城县", "白水县", "富平县", "韩城市", "华阴市"]
+    }, {
         "name": "延安市",
-        "area": [
-          "宝塔区",
-          "安塞县",
-          "洛川县",
-          "子长县",
-          "黄陵县",
-          "延川县",
-          "富县",
-          "延长县",
-          "甘泉县",
-          "宜川县",
-          "志丹县",
-          "黄龙县",
-          "吴起县"
-        ]
-      },
-      {
+        "area": ["市辖区", "宝塔区", "安塞区", "延长县", "延川县", "子长县", "志丹县", "吴起县", "甘泉县", "富县", "洛川县", "宜川县", "黄龙县", "黄陵县"]
+    }, {
         "name": "汉中市",
-        "area": [
-          "汉台区",
-          "留坝县",
-          "镇巴县",
-          "城固县",
-          "南郑县",
-          "洋县",
-          "宁强县",
-          "佛坪县",
-          "勉县",
-          "西乡县",
-          "略阳县"
-        ]
-      },
-      {
+        "area": ["市辖区", "汉台区", "南郑县", "城固县", "洋县", "西乡县", "勉县", "宁强县", "略阳县", "镇巴县", "留坝县", "佛坪县"]
+    }, {
         "name": "榆林市",
-        "area": [
-          "榆阳区",
-          "清涧县",
-          "绥德县",
-          "神木县",
-          "佳县",
-          "府谷县",
-          "子洲县",
-          "靖边县",
-          "横山县",
-          "米脂县",
-          "吴堡县",
-          "定边县"
-        ]
-      },
-      {
+        "area": ["市辖区", "榆阳区", "横山区", "神木县", "府谷县", "靖边县", "定边县", "绥德县", "米脂县", "佳县", "吴堡县", "清涧县", "子洲县"]
+    }, {
         "name": "安康市",
-        "area": [
-          "汉滨区",
-          "紫阳县",
-          "岚皋县",
-          "旬阳县",
-          "镇坪县",
-          "平利县",
-          "石泉县",
-          "宁陕县",
-          "白河县",
-          "汉阴县"
-        ]
-      },
-      {
-        "name": "商洛市",
-        "area": [
-          "商州区",
-          "镇安县",
-          "山阳县",
-          "洛南县",
-          "商南县",
-          "丹凤县",
-          "柞水县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["市辖区", "汉滨区", "汉阴县", "石泉县", "宁陕县", "紫阳县", "岚皋县", "平利县", "镇坪县", "旬阳县", "白河县"]
+    }, {"name": "商洛市", "area": ["市辖区", "商州区", "洛南县", "丹凤县", "商南县", "山阳县", "镇安县", "柞水县"]}]
+}, {
     "name": "甘肃省",
-    "city": [
-      {
-        "name": "兰州市",
-        "area": [
-          "城关区",
-          "七里河区",
-          "西固区",
-          "安宁区",
-          "红古区",
-          "永登县",
-          "皋兰县",
-          "榆中县"
-        ]
-      },
-      {
+    "city": [{"name": "兰州市", "area": ["市辖区", "城关区", "七里河区", "西固区", "安宁区", "红古区", "永登县", "皋兰县", "榆中县"]}, {
         "name": "嘉峪关市",
-        "area": [
-          "嘉峪关市"
-        ]
-      },
-      {
-        "name": "金昌市",
-        "area": [
-          "金川区",
-          "永昌县"
-        ]
-      },
-      {
+        "area": ["市辖区"]
+    }, {"name": "金昌市", "area": ["市辖区", "金川区", "永昌县"]}, {
         "name": "白银市",
-        "area": [
-          "白银区",
-          "平川区",
-          "靖远县",
-          "会宁县",
-          "景泰县"
-        ]
-      },
-      {
-        "name": "天水市",
-        "area": [
-          "清水县",
-          "秦安县",
-          "甘谷县",
-          "武山县",
-          "张家川回族自治县",
-          "北道区",
-          "秦城区"
-        ]
-      },
-      {
+        "area": ["市辖区", "白银区", "平川区", "靖远县", "会宁县", "景泰县"]
+    }, {"name": "天水市", "area": ["市辖区", "秦州区", "麦积区", "清水县", "秦安县", "甘谷县", "武山县", "张家川回族自治县"]}, {
         "name": "武威市",
-        "area": [
-          "凉州区",
-          "民勤县",
-          "古浪县",
-          "天祝藏族自治县"
-        ]
-      },
-      {
-        "name": "酒泉市",
-        "area": [
-          "肃州区",
-          "玉门市",
-          "敦煌市",
-          "金塔县",
-          "肃北蒙古族自治县",
-          "阿克塞哈萨克族自治县",
-          "安西县"
-        ]
-      },
-      {
-        "name": "张掖市",
-        "area": [
-          "甘州区",
-          "民乐县",
-          "临泽县",
-          "高台县",
-          "山丹县",
-          "肃南裕固族自治县"
-        ]
-      },
-      {
-        "name": "庆阳市",
-        "area": [
-          "西峰区",
-          "庆城县",
-          "环县",
-          "华池县",
-          "合水县",
-          "正宁县",
-          "宁县",
-          "镇原县"
-        ]
-      },
-      {
+        "area": ["市辖区", "凉州区", "民勤县", "古浪县", "天祝藏族自治县"]
+    }, {"name": "张掖市", "area": ["市辖区", "甘州区", "肃南裕固族自治县", "民乐县", "临泽县", "高台县", "山丹县"]}, {
         "name": "平凉市",
-        "area": [
-          "崆峒区",
-          "泾川县",
-          "灵台县",
-          "崇信县",
-          "华亭县",
-          "庄浪县",
-          "静宁县"
-        ]
-      },
-      {
-        "name": "定西市",
-        "area": [
-          "安定区",
-          "通渭县",
-          "临洮县",
-          "漳县",
-          "岷县",
-          "渭源县",
-          "陇西县"
-        ]
-      },
-      {
+        "area": ["市辖区", "崆峒区", "泾川县", "灵台县", "崇信县", "华亭县", "庄浪县", "静宁县"]
+    }, {"name": "酒泉市", "area": ["市辖区", "肃州区", "金塔县", "瓜州县", "肃北蒙古族自治县", "阿克塞哈萨克族自治县", "玉门市", "敦煌市"]}, {
+        "name": "庆阳市",
+        "area": ["市辖区", "西峰区", "庆城县", "环县", "华池县", "合水县", "正宁县", "宁县", "镇原县"]
+    }, {"name": "定西市", "area": ["市辖区", "安定区", "通渭县", "陇西县", "渭源县", "临洮县", "漳县", "岷县"]}, {
         "name": "陇南市",
-        "area": [
-          "武都区",
-          "成县",
-          "宕昌县",
-          "康县",
-          "文县",
-          "西和县",
-          "礼县",
-          "两当县",
-          "徽县"
-        ]
-      },
-      {
+        "area": ["市辖区", "武都区", "成县", "文县", "宕昌县", "康县", "西和县", "礼县", "徽县", "两当县"]
+    }, {
         "name": "临夏回族自治州",
-        "area": [
-          "临夏市",
-          "临夏县",
-          "康乐县",
-          "永靖县",
-          "广河县",
-          "和政县",
-          "东乡族自治县",
-          "积石山保安族东乡族撒拉族自治县"
-        ]
-      },
-      {
-        "name": "甘南藏族自治州",
-        "area": [
-          "合作市",
-          "临潭县",
-          "卓尼县",
-          "舟曲县",
-          "迭部县",
-          "玛曲县",
-          "碌曲县",
-          "夏河县"
-        ]
-      }
-    ]
-  },
-  {
+        "area": ["临夏市", "临夏县", "康乐县", "永靖县", "广河县", "和政县", "东乡族自治县", "积石山保安族东乡族撒拉族自治县"]
+    }, {"name": "甘南藏族自治州", "area": ["合作市", "临潭县", "卓尼县", "舟曲县", "迭部县", "玛曲县", "碌曲县", "夏河县"]}]
+}, {
     "name": "青海省",
-    "city": [
-      {
-        "name": "西宁市",
-        "area": [
-          "城中区",
-          "城东区",
-          "城西区",
-          "城北区",
-          "湟源县",
-          "湟中县",
-          "大通回族土族自治县"
-        ]
-      },
-      {
-        "name": "海东地区",
-        "area": [
-          "平安县",
-          "乐都县",
-          "民和回族土族自治县",
-          "互助土族自治县",
-          "化隆回族自治县",
-          "循化撒拉族自治县"
-        ]
-      },
-      {
-        "name": "海北藏族自治州",
-        "area": [
-          "海晏县",
-          "祁连县",
-          "刚察县",
-          "门源回族自治县"
-        ]
-      },
-      {
-        "name": "海南藏族自治州",
-        "area": [
-          "共和县",
-          "同德县",
-          "贵德县",
-          "兴海县",
-          "贵南县"
-        ]
-      },
-      {
+    "city": [{"name": "西宁市", "area": ["市辖区", "城东区", "城中区", "城西区", "城北区", "大通回族土族自治县", "湟中县", "湟源县"]}, {
+        "name": "海东市",
+        "area": ["乐都区", "平安区", "民和回族土族自治县", "互助土族自治县", "化隆回族自治县", "循化撒拉族自治县"]
+    }, {"name": "海北藏族自治州", "area": ["门源回族自治县", "祁连县", "海晏县", "刚察县"]}, {
         "name": "黄南藏族自治州",
-        "area": [
-          "同仁县",
-          "尖扎县",
-          "泽库县",
-          "河南蒙古族自治县"
-        ]
-      },
-      {
+        "area": ["同仁县", "尖扎县", "泽库县", "河南蒙古族自治县"]
+    }, {"name": "海南藏族自治州", "area": ["共和县", "同德县", "贵德县", "兴海县", "贵南县"]}, {
         "name": "果洛藏族自治州",
-        "area": [
-          "玛沁县",
-          "班玛县",
-          "甘德县",
-          "达日县",
-          "久治县",
-          "玛多县"
-        ]
-      },
-      {
-        "name": "玉树藏族自治州",
-        "area": [
-          "玉树县",
-          "杂多县",
-          "称多县",
-          "治多县",
-          "囊谦县",
-          "曲麻莱县"
-        ]
-      },
-      {
+        "area": ["玛沁县", "班玛县", "甘德县", "达日县", "久治县", "玛多县"]
+    }, {"name": "玉树藏族自治州", "area": ["玉树市", "杂多县", "称多县", "治多县", "囊谦县", "曲麻莱县"]}, {
         "name": "海西蒙古族藏族自治州",
-        "area": [
-          "德令哈市",
-          "格尔木市",
-          "乌兰县",
-          "都兰县",
-          "天峻县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "宁夏",
-    "city": [
-      {
-        "name": "银川市",
-        "area": [
-          "兴庆区",
-          "西夏区",
-          "金凤区",
-          "灵武市",
-          "永宁县",
-          "贺兰县"
-        ]
-      },
-      {
+        "area": ["格尔木市", "德令哈市", "乌兰县", "都兰县", "天峻县"]
+    }]
+}, {
+    "name": "宁夏回族自治区",
+    "city": [{"name": "银川市", "area": ["市辖区", "兴庆区", "西夏区", "金凤区", "永宁县", "贺兰县", "灵武市"]}, {
         "name": "石嘴山市",
-        "area": [
-          "大武口区",
-          "惠农区",
-          "平罗县"
-        ]
-      },
-      {
-        "name": "吴忠市",
-        "area": [
-          "利通区",
-          "青铜峡市",
-          "盐池县",
-          "同心县"
-        ]
-      },
-      {
+        "area": ["市辖区", "大武口区", "惠农区", "平罗县"]
+    }, {"name": "吴忠市", "area": ["市辖区", "利通区", "红寺堡区", "盐池县", "同心县", "青铜峡市"]}, {
         "name": "固原市",
-        "area": [
-          "原州区",
-          "西吉县",
-          "隆德县",
-          "泾源县",
-          "彭阳县"
-        ]
-      },
-      {
-        "name": "中卫市",
-        "area": [
-          "沙坡头区",
-          "中宁县",
-          "海原县"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "新疆",
-    "city": [
-      {
+        "area": ["市辖区", "原州区", "西吉县", "隆德县", "泾源县", "彭阳县"]
+    }, {"name": "中卫市", "area": ["市辖区", "沙坡头区", "中宁县", "海原县"]}]
+}, {
+    "name": "新疆维吾尔自治区",
+    "city": [{
         "name": "乌鲁木齐市",
-        "area": [
-          "天山区",
-          "沙依巴克区",
-          "新市区",
-          "水磨沟区",
-          "头屯河区",
-          "达坂城区",
-          "东山区",
-          "乌鲁木齐县"
-        ]
-      },
-      {
-        "name": "克拉玛依市",
-        "area": [
-          "克拉玛依区",
-          "独山子区",
-          "白碱滩区",
-          "乌尔禾区"
-        ]
-      },
-      {
-        "name": "吐鲁番地区",
-        "area": [
-          "吐鲁番市",
-          "托克逊县",
-          "鄯善县"
-        ]
-      },
-      {
-        "name": "哈密地区",
-        "area": [
-          "哈密市",
-          "伊吾县",
-          "巴里坤哈萨克自治县"
-        ]
-      },
-      {
-        "name": "和田地区",
-        "area": [
-          "和田市",
-          "和田县",
-          "洛浦县",
-          "民丰县",
-          "皮山县",
-          "策勒县",
-          "于田县",
-          "墨玉县"
-        ]
-      },
-      {
+        "area": ["市辖区", "天山区", "沙依巴克区", "新市区", "水磨沟区", "头屯河区", "达坂城区", "米东区", "乌鲁木齐县"]
+    }, {"name": "克拉玛依市", "area": ["市辖区", "独山子区", "克拉玛依区", "白碱滩区", "乌尔禾区"]}, {
+        "name": "吐鲁番市",
+        "area": ["高昌区", "鄯善县", "托克逊县"]
+    }, {"name": "哈密市", "area": ["伊州区", "巴里坤哈萨克自治县", "伊吾县"]}, {
+        "name": "昌吉回族自治州",
+        "area": ["昌吉市", "阜康市", "呼图壁县", "玛纳斯县", "奇台县", "吉木萨尔县", "木垒哈萨克自治县"]
+    }, {"name": "博尔塔拉蒙古自治州", "area": ["博乐市", "阿拉山口市", "精河县", "温泉县"]}, {
+        "name": "巴音郭楞蒙古自治州",
+        "area": ["库尔勒市", "轮台县", "尉犁县", "若羌县", "且末县", "焉耆回族自治县", "和静县", "和硕县", "博湖县"]
+    }, {
         "name": "阿克苏地区",
-        "area": [
-          "阿克苏市",
-          "温宿县",
-          "沙雅县",
-          "拜城县",
-          "阿瓦提县",
-          "库车县",
-          "柯坪县",
-          "新和县",
-          "乌什县"
-        ]
-      },
-      {
+        "area": ["阿克苏市", "温宿县", "库车县", "沙雅县", "新和县", "拜城县", "乌什县", "阿瓦提县", "柯坪县"]
+    }, {"name": "克孜勒苏柯尔克孜自治州", "area": ["阿图什市", "阿克陶县", "阿合奇县", "乌恰县"]}, {
         "name": "喀什地区",
-        "area": [
-          "喀什市",
-          "巴楚县",
-          "泽普县",
-          "伽师县",
-          "叶城县",
-          "岳普湖县",
-          "疏勒县",
-          "麦盖提县",
-          "英吉沙县",
-          "莎车县",
-          "疏附县",
-          "塔什库尔干塔吉克自治县"
-        ]
-      },
-      {
-        "name": "克孜勒苏柯尔克孜自治州",
-        "area": [
-          "阿图什市",
-          "阿合奇县",
-          "乌恰县",
-          "阿克陶县"
-        ]
-      },
-      {
-        "name": "巴音郭楞蒙古自治州",
-        "area": [
-          "库尔勒市",
-          "和静县",
-          "尉犁县",
-          "和硕县",
-          "且末县",
-          "博湖县",
-          "轮台县",
-          "若羌县",
-          "焉耆回族自治县"
-        ]
-      },
-      {
-        "name": "昌吉回族自治州",
-        "area": [
-          "昌吉市",
-          "阜康市",
-          "奇台县",
-          "玛纳斯县",
-          "吉木萨尔县",
-          "呼图壁县",
-          "木垒哈萨克自治县",
-          "米泉市"
-        ]
-      },
-      {
-        "name": "博尔塔拉蒙古自治州",
-        "area": [
-          "博乐市",
-          "精河县",
-          "温泉县"
-        ]
-      },
-      {
-        "name": "石河子",
-        "area": [
-          "石河子"
-        ]
-      },
-      {
-        "name": "阿拉尔",
-        "area": [
-          "阿拉尔"
-        ]
-      },
-      {
-        "name": "图木舒克",
-        "area": [
-          "图木舒克"
-        ]
-      },
-      {
-        "name": "五家渠",
-        "area": [
-          "五家渠"
-        ]
-      },
-      {
+        "area": ["喀什市", "疏附县", "疏勒县", "英吉沙县", "泽普县", "莎车县", "叶城县", "麦盖提县", "岳普湖县", "伽师县", "巴楚县", "塔什库尔干塔吉克自治县"]
+    }, {"name": "和田地区", "area": ["和田市", "和田县", "墨玉县", "皮山县", "洛浦县", "策勒县", "于田县", "民丰县"]}, {
         "name": "伊犁哈萨克自治州",
-        "area": [
-          "伊宁市",
-          "奎屯市",
-          "伊宁县",
-          "特克斯县",
-          "尼勒克县",
-          "昭苏县",
-          "新源县",
-          "霍城县",
-          "巩留县",
-          "察布查尔锡伯自治县",
-          "塔城地区",
-          "阿勒泰地区"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "台湾省",
-    "city": [
-      {
-        "name": "台北市",
-        "area": [
-          "内湖区",
-          "南港区",
-          "中正区",
-          "万华区",
-          "大同区",
-          "中山区",
-          "松山区",
-          "大安区",
-          "信义区",
-          "文山区",
-          "士林区",
-          "北投区"
-        ]
-      },
-      {
+        "area": ["伊宁市", "奎屯市", "霍尔果斯市", "伊宁县", "察布查尔锡伯自治县", "霍城县", "巩留县", "新源县", "昭苏县", "特克斯县", "尼勒克县"]
+    }, {"name": "塔城地区", "area": ["塔城市", "乌苏市", "额敏县", "沙湾县", "托里县", "裕民县", "和布克赛尔蒙古自治县"]}, {
+        "name": "阿勒泰地区",
+        "area": ["阿勒泰市", "布尔津县", "富蕴县", "福海县", "哈巴河县", "青河县", "吉木乃县"]
+    }, {"name": "直辖县", "area": ["石河子市", "阿拉尔市", "图木舒克市", "五家渠市", "铁门关市"]}]
+}, {
+    "name": "香港特别行政区",
+    "city": [{
+        "name": "香港特别行政区",
+        "area": ["中西区", "东区", "九龙城区", "观塘区", "南区", "深水埗区", "湾仔区", "黄大仙区", "油尖旺区", "离岛区", "葵青区", "北区", "西贡区", "沙田区", "屯门区", "大埔区", "荃湾区", "元朗区"]
+    }]
+}, {"name": "澳门特别行政区", "city": [{"name": "澳门特别行政区", "area": ["澳门半岛", "凼仔", "路凼城", "路环"]}]}, {
+    "name": "台湾",
+    "city": [{
+        "name": "彰化县",
+        "area": ["芳苑乡", "芬园乡", "福兴乡", "和美镇", "花坛乡", "鹿港镇", "埤头乡", "埔心乡", "埔盐乡", "伸港乡", "社头乡", "田尾乡", "田中镇", "线西乡", "溪湖镇", "秀水乡", "溪州乡", "永靖乡", "员林市", "竹塘乡"]
+    }, {
         "name": "新北市",
-        "area": [
-          "板桥区",
-          "汐止区",
-          "新店区"
-        ]
-      },
-      {
+        "area": ["八里区", "板桥区", "贡寮区", "金山区", "林口区", "芦洲区", "坪林区", "平溪区", "瑞芳区", "三重区", "三峡区", "三芝区", "深坑区", "石碇区", "石门区", "双溪区", "树林区", "泰山区", "淡水区", "土城区"]
+    }, {"name": "澎湖县", "area": ["白沙乡", "湖西乡", "马公市", "七美乡", "望安乡", "西屿乡"]}, {
+        "name": "屏东县",
+        "area": ["三地门乡", "狮子乡", "泰武乡", "万丹乡", "万峦乡", "雾臺乡", "新埤乡", "新园乡", "盐埔乡", "竹田乡", "长治乡", "潮州镇", "车城乡", "春日乡", "东港镇", "枋寮乡", "枋山乡", "高树乡", "恆春镇", "佳冬乡"]
+    }, {
+        "name": "臺中市",
+        "area": ["梧栖区", "乌日区", "新社区", "西屯区", "北屯区", "中区", "大肚区", "大甲区", "大里区", "大雅区", "大安区", "东势区", "东区", "丰原区", "和平区", "后里区", "龙井区", "南屯区", "北区", "清水区"]
+    }, {
+        "name": "臺南市",
+        "area": ["佳里区", "将军区", "六甲区", "柳营区", "龙崎区", "麻豆区", "南化区", "楠西区", "北区", "七股区", "仁德区", "善化区", "山上区", "南区", "中西区", "下营区", "西港区", "新化区", "新市区", "新营区"]
+    }, {
+        "name": "臺北市",
+        "area": ["北投区", "大同区", "大安区", "南港区", "内湖区", "士林区", "松山区", "万华区", "文山区", "信义区", "中山区", "中正区"]
+    }, {
+        "name": "臺东县",
+        "area": ["卑南乡", "长滨乡", "成功镇", "池上乡", "达仁乡", "大武乡", "东河乡", "关山镇", "海端乡", "金峰乡", "兰屿乡", "绿岛乡", "鹿野乡", "太麻里乡", "臺东市", "延平乡"]
+    }, {
         "name": "桃园市",
-        "area": [
-          "其他"
-        ]
-      },
-      {
-        "name": "台中市",
-        "area": [
-          "其他"
-        ]
-      },
-      {
-        "name": "台南市",
-        "area": [
-          "其他"
-        ]
-      },
-      {
+        "area": ["八德区", "大溪区", "大园区", "復兴区", "观音区", "龟山区", "龙潭区", "芦竹区", "平镇区", "桃园区", "新屋区", "杨梅区", "中坜区"]
+    }, {
+        "name": "宜兰县",
+        "area": ["大同乡", "钓鱼臺", "冬山乡", "礁溪乡", "罗东镇", "南澳乡", "三星乡", "苏澳镇", "头城镇", "五结乡", "宜兰市", "员山乡", "壮围乡"]
+    }, {
+        "name": "南投县",
+        "area": ["草屯镇", "国姓乡", "集集镇", "鹿谷乡", "名间乡", "南投市", "埔里镇", "仁爱乡", "水里乡", "信义乡", "鱼池乡", "中寮乡", "竹山镇"]
+    }, {"name": "南海岛", "area": ["东沙群岛", "南沙群岛"]}, {
+        "name": "苗栗县",
+        "area": ["头屋乡", "西湖乡", "苑里镇", "造桥乡", "竹南镇", "卓兰镇", "大湖乡", "公馆乡", "后龙镇", "苗栗市", "南庄乡", "三湾乡", "三义乡", "狮潭乡", "泰安乡", "铜锣乡", "通霄镇", "头份市"]
+    }, {"name": "嘉义市", "area": ["东区", "西区"]}, {
+        "name": "嘉义县",
+        "area": ["阿里山乡", "布袋镇", "大林镇", "大埔乡", "东石乡", "番路乡", "六脚乡", "鹿草乡", "梅山乡", "民雄乡", "朴子市", "水上乡", "太保市", "溪口乡", "新港乡", "义竹乡", "中埔乡", "竹崎乡"]
+    }, {"name": "新竹市", "area": ["东区", "北区"]}, {
+        "name": "新竹县",
+        "area": ["峨眉乡", "关西镇", "横山乡", "湖口乡", "尖石乡", "芎林乡", "五峰乡", "新丰乡", "新埔镇", "竹北市", "竹东镇", "宝山乡", "北埔乡"]
+    }, {
+        "name": "花莲县",
+        "area": ["卓溪乡", "丰滨乡", "凤林镇", "富里乡", "光復乡", "花莲市", "吉安乡", "瑞穗乡", "寿丰乡", "万荣乡", "新城乡", "秀林乡", "玉里镇"]
+    }, {
         "name": "高雄市",
-        "area": [
-          "其他"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "澳门",
-    "city": [
-      {
-        "name": "澳门",
-        "area": [
-          "花地玛堂区",
-          "圣安多尼堂区",
-          "大堂区",
-          "望德堂区",
-          "风顺堂区",
-          "嘉模堂区",
-          "圣方济各堂区",
-          "路凼"
-        ]
-      }
-    ]
-  },
-  {
-    "name": "香港",
-    "city": [
-      {
-        "name": "香港",
-        "area": [
-          "深水埗区",
-          "油尖旺区",
-          "九龙城区",
-          "黄大仙区",
-          "观塘区",
-          "北区",
-          "大埔区",
-          "沙田区",
-          "西贡区",
-          "元朗区",
-          "屯门区",
-          "荃湾区",
-          "葵青区",
-          "离岛区",
-          "中西区",
-          "湾仔区",
-          "东区",
-          "南区"
-        ]
-      }
-    ]
-  }
-]
+        "area": ["阿莲区", "大寮区", "大社区", "大树区", "凤山区", "冈山区", "鼓山区", "湖内区", "甲仙区", "苓雅区", "林园区", "六龟区", "路竹区", "茂林区", "美浓区", "弥陀区", "那玛夏区", "楠梓区", "内门区", "鸟松区"]
+    }, {"name": "基隆市", "area": ["安乐区", "暖暖区", "七堵区", "仁爱区", "信义区", "中山区", "中正区"]}, {
+        "name": "金门县",
+        "area": ["金城镇", "金湖镇", "金宁乡", "金沙镇", "烈屿乡", "乌坵乡"]
+    }, {"name": "连江县", "area": ["北竿乡", "东引乡", "莒光乡", "南竿乡"]}, {
+        "name": "云林县",
+        "area": ["褒忠乡", "北港镇", "莿桐乡", "大埤乡", "东势乡", "斗六市", "斗南镇", "二崙乡", "古坑乡", "虎尾镇", "口湖乡", "林内乡", "崙背乡", "麦寮乡", "水林乡", "四湖乡", "臺西乡", "土库镇", "西螺镇", "元长乡"]
+    }]
+}]

+ 2 - 2
manifest.json

@@ -2,8 +2,8 @@
     "name" : "Lala NFT",
     "appid" : "__UNI__3CDE968",
     "description" : "",
-    "versionName" : "1.2.9",
-    "versionCode" : 129,
+    "versionName" : "1.3.0",
+    "versionCode" : 130,
     "transformPx" : false,
     "app-plus" : {
         /* 5+App特有相关 */

+ 216 - 70
pages.json

@@ -21,7 +21,7 @@
 							"placeholderColor": "#ffffff",
 							"align": "center"
 						}
-						
+
 					}
 				}
 			}
@@ -35,6 +35,15 @@
 				}
 			}
 		},
+		{
+			"path": "pages/money/phone",
+			"style": {
+				"navigationBarTitleText": "充值中心",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
 		{
 			"path": "pages/user/myNote",
 			"style": {
@@ -44,19 +53,19 @@
 		{
 			"path": "pages/market/myCalculation",
 			"style": {
-				"navigationBarTitleText": "我的矿机"
+				"navigationBarTitleText": "我的服务器"
 			}
 		},
 		{
-			"path": "pages/index/teachList",
+			"path": "pages/assets/logroll",
 			"style": {
-				"navigationBarTitleText": "新手教程"
+				"navigationBarTitleText": "互助专区"
 			}
 		},
 		{
-			"path": "pages/index/teachD",
+			"path": "pages/user/about",
 			"style": {
-				"navigationBarTitleText": "教程详情"
+				"navigationBarTitleText": "关于我们"
 			}
 		},
 		{
@@ -72,33 +81,24 @@
 			}
 		},
 		{
-			"path": "pages/assets/details",
-			"style": {
-				"navigationBarTitleText": "资金流水"
-			}
-		},
-		{
-			"path": "pages/index/nodeList",
-			"style": {
-				"navigationBarTitleText": "通知列表"
-			}
-		},
-		{
-			"path": "pages/user/extensionList",
+			"path": "pages/market/duihuan",
 			"style": {
-				"navigationBarTitleText": "推广列表"
+				"navigationBarTitleText": "兑换"
 			}
 		},
 		{
-			"path": "pages/market/duihuan",
+			"path": "pages/market/market",
 			"style": {
-				"navigationBarTitleText": "兑换"
+				"navigationBarTitleText": "服务器兑换",
+				"app-plus":{
+					"titleNView":false
+				}
 			}
 		},
 		{
 			"path": "pages/market/pay",
 			"style": {
-				"navigationBarTitleText": "运算力租赁"
+				"navigationBarTitleText": "兑换详情"
 			}
 		},
 		{
@@ -110,19 +110,23 @@
 		{
 			"path": "pages/market/details",
 			"style": {
-				"navigationBarTitleText": "云算力详情"
-			}
-		},
-		{
-			"path": "pages/user/rake",
-			"style": {
-				"navigationBarTitleText": "矿机列表"
+				"navigationBarTitleText": "服务器详情",
+				"app-plus":{
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
 			}
 		},
 		{
-			"path": "pages/index/datile",
+			"path": "pages/product/pingDetails",
 			"style": {
-				"navigationBarTitleText": "列表"
+				"navigationBarTitleText": "拼团详情",
+				"app-plus":{
+					"titleNView": {
+						"type": "transparent"
+					}
+				}
 			}
 		},
 		{
@@ -214,7 +218,15 @@
 			"path": "pages/user/fuli",
 			"style": {
 				"navigationBarTitleText": "拼购福利"
-
+			}
+		},
+		{
+			"path": "pages/index/sign",
+			"style": {
+				"navigationBarTitleText": "每日签到",
+				"app-plus": {
+					"titleNView": false
+				}
 			}
 		},
 		{
@@ -224,45 +236,78 @@
 
 			}
 		},
-
+		{
+			"path": "pages/address/address",
+			"style": {
+				"navigationBarTitleText": "收货地址"
+			}
+		},
+		{
+			"path": "pages/address/addressManage",
+			"style": {
+				"navigationBarTitleText": "添加收货地址"
+			}
+		},
 		{
 			"path": "pages/assets/myPing",
 			"style": {
 				"navigationBarTitleText": "我的拼购"
 			}
 		},
+		{
+			"path": "pages/user/myjiedian",
+			"style": {
+				"navigationBarTitleText": "互助团队",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
 		{
 			"path": "pages/assets/teamDetails",
 			"style": {
 				"navigationBarTitleText": "我的组队详情"
 			}
 		},
+		
 		{
-			"path": "pages/assets/transfer",
+			"path": "pages/cart/cart",
 			"style": {
-				"navigationBarTitleText": "转账",
-				"app-plus": {
-					"titleNView": false
-				}
+				"navigationBarTitleText": "购物车"
 			}
 		},
 		{
-			"path": "pages/assets/recharge",
+			"path": "pages/message/message",
 			"style": {
-				"navigationBarTitleText": "充币"
-
+				"navigationBarTitleText": "消息"
 			}
 		},
+		
+		
 		{
-			"path": "pages/assets/withdraw",
+			"path": "pages/category/category",
 			"style": {
-				"navigationBarTitleText": "提币",
+				// #ifdef APP-PLUS
+				"navigationStyle": "custom",
+				// #endif
+				// #ifndef MP
 				"app-plus": {
-					"titleNView": false
-				}
+					"bounce": "none",
+					"titleNView": {
+						"searchInput": {
+							"backgroundColor": "rgba(231, 231, 231,.7)",
+							"borderRadius": "16px",
+							"placeholder": "输入关键词搜索",
+							"disabled": true,
+							"placeholderColor": "#606266",
+							"align": "left"
+						}
+					}
+				},
+				// #endif
+				"navigationBarTitleText": "分类"
 			}
 		},
-
 		{
 			"path": "pages/user/extension",
 			"style": {
@@ -302,7 +347,7 @@
 		},
 		//糖果
 		{
-			"path": "pages/money/account",
+			"path": "pages/money/award",
 			"style": {
 				"navigationBarTitleText": "奖励明细",
 				"app-plus": {
@@ -311,38 +356,57 @@
 			}
 		},
 		{
-			"path": "pages/user/notice",
+			"path": "pages/money/pay",
 			"style": {
-				"navigationBarTitleText": "通知"
+				"navigationBarTitleText": "支付"
 			}
 		},
 		{
-			"path": "pages/market/market",
+			"path": "pages/money/paySuccess",
 			"style": {
-				"navigationBarTitleText": "市场"
+				"navigationBarTitleText": "支付成功"
 			}
 		},
 		{
-			"path": "pages/assets/assets",
+			"path": "pages/product/ping",	// 普通商品
 			"style": {
-				"navigationBarTitleText": "资产",
-				"app-plus": {
-					"titleNView": {
-						"type": "transparent"
-					}
-				}
+				"navigationBarTitleText": "拼团11人区"
 			}
 		},
 		{
-			"path": "pages/money/pay",
+			"path": "pages/product/product",	// 普通商品
 			"style": {
-				"navigationBarTitleText": "支付"
+				"navigationBarTitleText": "商品详情"
 			}
 		},
 		{
-			"path": "pages/money/paySuccess",
+			"path": "pages/product/list",
 			"style": {
-				"navigationBarTitleText": "支付成功"
+				// #ifdef APP-PLUS
+				"navigationStyle": "custom",
+				// #endif
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": {
+						"searchInput": {
+							"backgroundColor": "rgba(231, 231, 231,.7)",
+							"borderRadius": "16px",
+							"placeholder": "请输入关键字",
+							"disabled": false,
+							"placeholderColor": "#606266",
+							"align": "left"
+						},
+						"buttons": [{
+							"text": "搜索",
+							"fontSize": "14",
+							"color": "#303133",
+							"background": "rgba(0,0,0,0)",
+							"width": "40px"
+						}]
+					}
+				},
+				// #endif
+				"navigationBarTitleText": "搜索"
 			}
 		},
 		// 佣金
@@ -355,12 +419,88 @@
 				}
 			}
 		},
+		// 拼团积分
+		{
+			"path": "pages/money/integralP",
+			"style": {
+				"navigationBarTitleText": "我的拼团积分",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		// 购物积分
+		{
+			"path": "pages/money/integralShopping",
+			"style": {
+				"navigationBarTitleText": "我的购物积分",
+				"app-plus": {
+					"titleNView": false
+				}
+			}
+		},
+		// 兑换糖果
+		{
+			"path": "pages/conversion/candy",
+			"style": {
+				"navigationBarTitleText": "兑换糖果"
+			}
+		},
+		// 积分转账
+		{
+			"path": "pages/conversion/transfers",
+			"style": {
+				"navigationBarTitleText": "积分转账"
+			}
+		},
 		{
 			"path": "pages/money/account",
 			"style": {
 				"navigationBarTitleText": "提现账号"
 			}
 		},
+		{
+			"path": "pages/order/order",
+			"style": {
+				"navigationBarTitleText": "我的订单",
+				"app-plus": {
+					"bounce": "none"
+				}
+			}
+		},
+		{
+			"path": "pages/order/expressInfo",
+			"style": {
+				"navigationBarTitleText": "快递详情"
+			}
+		},
+		{
+			"path": "pages/order/orderDetail",
+			"style": {
+				"navigationBarTitleText": "订单详情",
+				"app-plus": {
+					"bounce": "none"
+				}
+			}
+		},
+		{
+			"path": "pages/order/evaluate",
+			"style": {
+				"navigationBarTitleText": "评论"
+			}
+		},
+		{
+			"path": "pages/order/orderRefund",
+			"style": {
+				"navigationBarTitleText": "申请退款"
+			}
+		},
+		{
+			"path": "pages/order/createOrder",
+			"style": {
+				"navigationBarTitleText": "创建订单"
+			}
+		},
 		{
 			"path": "pages/index/article",
 			"style": {
@@ -395,8 +535,8 @@
 				"navigationBarTitleText": "邀请好友"
 			}
 		}
-     
-    ],
+
+	],
 
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
@@ -406,7 +546,7 @@
 	},
 	"tabBar": {
 		"color": "#C0C4CC",
-		"selectedColor": "#44969D",
+		"selectedColor": "#2E58FF",
 		"borderStyle": "black",
 		"backgroundColor": "#ffffff",
 		"list": [{
@@ -416,16 +556,22 @@
 				"text": "首页"
 			},
 			{
-				"pagePath": "pages/market/market",
+				"pagePath": "pages/category/category",
 				"iconPath": "static/tabBar/tab-market.png",
 				"selectedIconPath": "static/tabBar/tab-market-current.png",
-				"text": "市场"
+				"text": "分类"
+			},
+			{
+				"pagePath": "pages/message/message",
+				"iconPath": "static/tabBar/tab-message.png",
+				"selectedIconPath": "static/tabBar/tab-message-current.png",
+				"text": "消息"
 			},
 			{
-				"pagePath": "pages/assets/assets",
+				"pagePath": "pages/cart/cart",
 				"iconPath": "static/tabBar/tab-assets.png",
 				"selectedIconPath": "static/tabBar/tab-assets-current.png",
-				"text": "资产"
+				"text": "购物车"
 			},
 			{
 				"pagePath": "pages/user/user",

+ 315 - 0
pages/address/address.vue

@@ -0,0 +1,315 @@
+<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>
+		<view class="flex add-btn">
+			<button class="btn" @click="addAddress('add')">新增地址</button>
+			<!-- #ifdef H5 -->
+			<!-- <button  v-show="isShow" class="btn" @click="getAddress">获取微信地址</button> -->
+			<!-- #endif -->
+		</view>
+	</view>
+</template>
+<script>
+import { getAddressList, addressEdit, addressDel } from '@/api/address.js';
+import { mapState } from 'vuex';
+import { wechatConfig } from '@/api/wx';
+export default {
+	data() {
+		return {
+			source: 0,
+			addressList: [],
+			isShow:false
+		};
+	},
+	onShow(){
+		this.loadAddress();
+	},
+	
+	onLoad(option) {
+		this.source = option.source || 0;
+		this.loadAddress();
+	},
+	computed: {
+		// #ifdef H5
+		...mapState(['weichatObj', 'userInfo'])
+		// #endif
+	},
+	methods: {
+		// 加载地址
+		loadAddress() {
+			getAddressList({
+				page: 1,
+				limit: 100
+			}).then(({ data }) => {
+				this.addressList = data;
+				
+				// #ifdef H5
+				// 判断是否为微信浏览器
+				if (uni.getStorageSync('weichatBrowser')) {
+					// 加载微信注册信息
+					this.isShow = true;
+				}
+				// #endif
+				
+			});
+		},
+		// #ifdef H5
+		//获取微信地址
+		// getAddress() {
+		// 	let weixinObj = require('jweixin-module');
+		// 	let obj = this;
+		// 	wechatConfig({
+		// 		url: window.location.href
+		// 	}).then(({ data }) => {
+				
+		// 		// 微信信息配置
+		// 		weixinObj.config({
+		// 			debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+		// 			appId: data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
+		// 			timestamp: data.timestamp, // 必填,生成签名的时间戳
+		// 			nonceStr: data.nonceStr, // 必填,生成签名的随机串
+		// 			signature: data.signature, // 必填,签名,见附录1
+		// 			jsApiList: data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+		// 		});
+		// 		weixinObj.ready((e) => {
+		// 			weixinObj.openAddress({
+		// 			  success: function (res) {
+		// 			    let userName = res.userName; // 收货人姓名
+		// 			    let postalCode = res.postalCode; // 邮编
+		// 			    let provinceName = res.provinceName; // 国标收货地址第一级地址(省)
+		// 			    let cityName = res.cityName; // 国标收货地址第二级地址(市)
+		// 			    let countryName = res.countryName; // 国标收货地址第三级地址(国家)
+		// 			    let detailInfo = res.detailInfo; // 详细收货地址信息
+		// 			    let nationalCode = res.nationalCode; // 收货地址国家码
+		// 			    let telNumber = res.telNumber; // 收货人手机号码
+		// 				addressEdit({
+		// 					real_name: userName,
+		// 					phone: telNumber,
+		// 					address: {
+		// 						province: provinceName,
+		// 						city: cityName,
+		// 						district: countryName
+		// 					},
+		// 					detail: detailInfo,
+		// 					type:1
+		// 				})
+		// 					.then(({ data }) => {
+		// 						obj.loadAddress();
+		// 					})
+		// 					.catch(e => {
+		// 						console.log(e);
+		// 					});
+		// 			  },
+		// 			fail: function (res) {
+		// 			      // 支付成功后的回调函数
+		// 			    }
+		// 			});
+		// 		})
+		// 	}).catch(e => {
+		// 			console.log(e);
+		// 		});
+		// },
+		 // #endif
+		// 设为默认地址
+		defaultUp(data, ind) {
+			this.addressList = this.addressList.map(e => {
+				e.is_default = 0;
+				return e;
+			});
+			this.addressList[ind].is_default = 1;
+			addressEdit({
+				real_name: data.real_name,
+				phone: data.phone,
+				address: {
+					province: data.province,
+					city: data.city,
+					district: data.district
+				},
+				detail: data.detail,
+				is_default: 1,
+				id: data.id,
+				type:1
+			})
+				.then(({ data }) => {
+					this.loadAddress();
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+		//删除地址
+		delAddress(item) {
+			uni.showModal({
+				content: '确定要删除该地址?',
+				success: (confirmRes)=> {
+					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/address/addressManage?type=${type}&data=${JSON.stringify(item)}`
+			});
+		},
+		//添加或修改成功之后回调
+		refreshList() {
+			// 重新加载地址
+			this.loadAddress();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	padding-bottom: 120rpx;
+	padding-top: 20rpx;
+}
+.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: #45B1EB !important;
+		}
+		.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: 50rpx;
+	z-index: 95;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 690rpx;
+}
+.btn {
+	text-align: center;
+	margin: 134rpx auto;
+	width: 670rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
+	border-radius: 10px;
+	text-align: center;
+	line-height: 88rpx;
+	font-size: 32rpx;
+	font-family: SourceHanSansCN;
+	font-weight: 500;
+	color: #FEFEFE;
+}
+</style>

+ 243 - 0
pages/address/addressManage.vue

@@ -0,0 +1,243 @@
+<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" style="text-align: right;" @change="onCityClick">{{addressDetail||'请选择地址'}}</pickerAddress>
+			<text class="iconfont iconenter"></text>
+		</view>
+		<!-- <view class="row b-b">
+			<text class="tit">街道</text>
+			<input class="input" type="text" style="text-align: right;" v-model="addressData.area" placeholder="所在街道" placeholder-class="placeholder" />
+			<text class="iconfont iconenter"></text>
+		</view> -->
+		<view class="row b-b">
+			<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="#45A7EB"
+				@switchChange="switchChange"
+			></uni-list-item>
+		</uni-list>
+		
+		<!-- <view class="delete b-b" >
+			删除地址
+		</view> -->
+
+		<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 '@/components/uni-popup/uni-popup.vue';
+import  pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
+import { addressEdit } from '@/api/address.js';
+export default {
+	components: {
+		uniList,
+		uniListItem,
+		pickerAddress,
+		uniPopup
+	},
+	data() {
+		return {
+			addressDetail: '',
+			addressData: {
+				name: '',
+				mobile: '',
+				address: {
+					province: '',
+					city: '',
+					district: '',
+					detail: '',
+				},
+				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 (data.mobile.length!=11) {
+				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;
+		margin-right: 10rpx;
+	}
+	.input {
+		flex: 1;
+		font-size: 30rpx;
+		color: $font-color-dark;
+	}
+	.iconenter {
+		font-size: 36rpx;
+		color: #cccccc;
+	}
+}
+.default-row {
+	margin-top: 16rpx;
+	.tit {
+		flex: 1;
+	}
+	switch {
+		transform: translateX(16rpx) scale(0.9);
+	}
+}
+
+.delete {
+	display: flex;
+	align-items: center;
+	position: relative;
+	padding: 0 30rpx;
+	height: 110rpx;
+	background: #fff;
+	margin-top: 28rpx;
+	font-size: 30rpx;
+	font-weight:500;
+	color:rgba(250,39,64,1);
+}
+
+.add-btn {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 560rpx;
+	height: 80rpx;
+	margin: 60rpx auto;
+	font-size: $font-lg;
+	color: #fff;
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
+	border-radius:40px;
+}
+
+.alert-box {
+	background-color: #ffffff;
+}
+</style>

+ 0 - 372
pages/assets/assets.vue

@@ -1,372 +0,0 @@
-<template>
-	<view class="container">
-		<view class="status_bar"></view>
-		<view class="title">资产</view>
-		<view>
-			<view class="list-box">
-				<view class="bg"><image src="../../static/img/assets-bg.png" mode=""></image></view>
-				<view class="info-box">
-					<view class="flex" v-show="show == true">
-						<view class="info">
-							<view class="list-title">总资产合计(USDT)</view>
-							<view class="list-name clamp">{{ like_usdt * 1 }}</view>
-							<view class="ustd">≈ {{ like_rmb * 1 }}RMB</view>
-						</view>
-						<image class="image" src="../../static/img/eyes.png" @click="showPick(false)"></image>
-					</view>
-					<view class="flex" v-show="show == false">
-						<view class="info">
-							<view class="list-title">总资产合计(USDT)</view>
-							<view class="list-name clamp">****</view>
-							<view class="ustd">≈ ****RMB</view>
-						</view>
-						<image class="image" src="../../static/img/img43.png" @click="showPick(true)"></image>
-					</view>
-				</view>
-				<view class="list-tpl flex">
-					<view class="tpl" @click="navTo('/pages/assets/transfer')">
-						<image class="zhuanz" src="../../static/img/zhuan.png"></image>
-						<view class="tpl-name">转账</view>
-					</view>
-					<view class="tpl" @click="navTo('/pages/assets/recharge')">
-						<!-- @click="recharge" -->
-						<image src="../../static/img/chong.png"></image>
-						<view class="tpl-name">充币</view>
-					</view>
-					<view class="tpl" @click="navTo('/pages/assets/withdraw')">
-						<image src="../../static/img/ti.png"></image>
-						<view class="tpl-name">提币</view>
-					</view>
-				</view>
-
-				<!-- <view class="list-tips flex_item">
-				<image src="../../static/img/img07.png"></image>
-				<view>资产正在保护中</view>
-			</view> -->
-			</view>
-			<view class="list-cell" v-for="(ls, index) in list" :key="index" @click="toDateils(ls, index)">
-				<view class="cell flex">
-					<view class="cell-title flex">
-						<image :src="ls.LOGO" mode="scaleToFill" class="logo"></image>
-						<view class="name">{{ ls.name }}</view>
-					</view>
-					<image src="../../static/img/img16.png"></image>
-				</view>
-				<view class="flex cell-list">
-					<view class="cell-tpl tips">
-						<view class="name">可用</view>
-						<view class="tpl">{{ ls.money.money * 1 }}</view>
-					</view>
-					<view class="cell-tpl tips">
-						<view class="name">冻结中</view>
-						<view class="tpl">{{ ls.lock_money * 1 }}</view>
-					</view>
-					<view class="cell-tpl tip-box">
-						<view class="name">折合(USDT)</view>
-						<view class="tpl clamp">{{ ls.usdt * 1 }}</view>
-					</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-<script>
-import { wallet } from '@/api/finance.js';
-import easyselect from '@/components/easy-select/easy-select.vue';
-export default {
-	components: {
-		easyselect
-	},
-	data() {
-		return {
-			num: '',
-			money: '',
-			type: '',
-			moneyTypeList: [],
-			list: [],
-			show: true,
-			like_rmb: '',
-			like_usdt: '',
-			wallet: ''
-		};
-	},
-	onLoad(option) {
-		this.loadData();
-	},
-	onShow() {
-		this.loadData();
-		let show = uni.getStorageSync('showPick');
-		if (show == false) {
-			this.show = false;
-		}
-		if (show == true) {
-			this.show = true;
-		}
-	},
-	//下拉刷新
-	onPullDownRefresh() {
-		this.loadData();
-		setTimeout(function() {
-			uni.stopPullDownRefresh();
-		}, 1000);
-	},
-	methods: {
-		// 请求载入数据
-		loadData() {
-			let obj = this;
-			uni.showLoading({
-				title: '加载中'
-			});
-			obj.loading = true;
-			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.list = ar;
-				uni.hideLoading();
-			});
-		},
-		showPick(item) {
-			this.show = item;
-			uni.setStorage({
-				key: 'showPick',
-				data: item,
-				success: function() {}
-			});
-		},
-		selectOne(options) {
-			this.money = options.name;
-			this.type = options.code;
-		},
-		useOutClickSide() {
-			this.$refs.easySelect.hideOptions && this.$refs.easySelect.hideOptions();
-		},
-		close() {
-			this.$refs.popup.close();
-		},
-		navTo(url) {
-			uni.navigateTo({
-				url
-			});
-		},
-		toDateils(ls) {
-			console.log(ls, '55');
-			let wayaddress = {};
-			uni.navigateTo({
-				url: '/pages/assets/details?name=' + ls.name
-			});
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	min-height: 100%;
-	background-color: #ffffff;
-	.container {
-		width: 100%;
-		padding: 25rpx 40rpx;
-	}
-}
-.status_bar {
-	height: var(--status-bar-height);
-	width: 100%;
-}
-.title {
-	font-size: 46rpx;
-	font-family: PingFang SC;
-	font-weight: bold;
-	color: $font-color-dark;
-	margin-bottom: 30rpx;
-}
-.list-tips {
-	position: absolute;
-	right: 0;
-	top: 25rpx;
-	font-size: 24rpx;
-	background-color: #f4ca1c;
-	padding: 14rpx 27rpx;
-	border-bottom-left-radius: 50rpx;
-	border-top-left-radius: 50rpx;
-	color: #5771df;
-	image {
-		width: 30rpx;
-		height: 31rpx;
-		margin-right: 12rpx;
-	}
-}
-.list-box {
-	.bg {
-		position: absolute;
-		right: 0;
-		left: 0;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		image {
-			height: 100%;
-			width: 100%;
-		}
-	}
-	position: relative;
-	color: #ffffff;
-	border-radius: 20rpx;
-	margin-bottom: 60rpx;
-	.info-box {
-		z-index: 10;
-		position: relative;
-		padding: 31rpx 43rpx;
-		.image {
-			width: 44rpx !important;
-			height: 30rpx !important;
-		}
-		.info {
-			width: 80%;
-			.list-title {
-				position: relative;
-				z-index: 10;
-				font-size: 30rpx;
-				font-weight: 500;
-				color: #ffffff;
-			}
-			.list-name {
-				width: 100%;
-				font-size: 64rpx;
-				font-weight: bold;
-				padding: 25rpx 0rpx;
-			}
-			.ustd {
-				font-size: 30rpx;
-				font-weight: normal;
-			}
-		}
-	}
-	.list-tpl {
-		z-index: 10;
-		position: relative;
-		padding: 30rpx 100rpx;
-		.tpl {
-			text-align: center;
-			image {
-				width: 45rpx;
-				height: 42rpx;
-			}
-			.zhuanz {
-				width: 45rpx;
-				height: 42rpx;
-			}
-			.tpl-name {
-				font-size: 27rpx;
-				font-weight: bold;
-				padding-left: 10rpx;
-				color: #ffffff;
-			}
-		}
-	}
-}
-.list-cell {
-	padding-bottom: 58rpx;
-	.cell {
-		padding-bottom: 31rpx;
-		image {
-			width: 12rpx;
-			height: 24rpx;
-		}
-		.cell-title {
-			font-size: 34rpx;
-			font-weight: 500;
-			color: #5771df;
-			.logo {
-				border-radius: 99rpx;
-				width: 50rpx;
-				height: 50rpx;
-			}
-			.name {
-				margin-left: 20rpx;
-				color: $font-color-dark;
-				font-weight: bold;
-			}
-		}
-	}
-	.cell-list {
-		width: 100%;
-		justify-content: space-between;
-		.cell-tpl {
-			text-align: left;
-			.name {
-				font-size: 24rpx;
-				font-weight: 500;
-				color: #999999;
-				padding-bottom: 15rpx;
-			}
-		}
-		.tip-box {
-			text-align: right;
-			// width: 40%;
-		}
-		.tip-tpl {
-			text-align: center;
-			// width: 30%;
-		}
-		.tips {
-			// width: 30%;
-		}
-	}
-}
-//弹窗
-.popup {
-	background-color: #ffffff;
-	border-radius: 25rpx;
-	font-size: 30rpx;
-	.cancel {
-		text-align: center;
-		width: 100%;
-		line-height: 60rpx;
-		.tip {
-			background-color: #5771df;
-			color: #ffffff;
-			width: 70rpx;
-			height: 70rpx;
-			border-top-right-radius: 25rpx;
-		}
-	}
-	.list-boxs {
-		padding: 0rpx 80rpx;
-		.password {
-			padding: 50rpx 0rpx;
-			width: 100%;
-			input {
-				width: 70%;
-				height: 80rpx;
-				border: 2rpx solid #999999;
-				padding-left: 25rpx;
-				box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.27);
-				border-radius: 11rpx;
-			}
-		}
-		.confirm-btn {
-			padding-bottom: 120rpx;
-			padding-top: 30rpx;
-			text {
-				background-color: #5771df;
-				color: #ffffff;
-				width: 70%;
-				text-align: center;
-				padding: 25rpx 90rpx;
-				border-radius: 15rpx;
-			}
-		}
-	}
-}
-.loading {
-	width: 100%;
-	height: 100%;
-}
-</style>

+ 0 - 460
pages/assets/details.vue

@@ -1,460 +0,0 @@
-<template>
-	<view class="container">
-		<view class="logo"><image :src="moneyData.logo"></image></view>
-		<view class="select-box flex_item">
-			<view @tap="handleTap('picker')">{{ title }}</view>
-			<lb-picker
-				ref="picker"
-				v-model="value"
-				mode="selector"
-				:list="typeList"
-				:dataset="{ name: 'type' }"
-				@change="handleChange"
-				@confirm="handleConfirm"
-				@cancel="handleCancel"
-			></lb-picker>
-			<image src="../../static/img/xiaj.png"></image>
-		</view>
-		<view class="list" v-show="list.length > 0">
-			<view class="list-box" v-for="(ls, index) in list" :key="index" @click="nav(index)">
-				<view class="flex">
-					<view class="list-tpl flex_item">
-						<image src="../../static/img/qian.png"></image>
-						<view class="tpl-name">{{ ls.title }}</view>
-					</view>
-					<view class="num clamp" v-if="ls.pm === 0">- {{ ls.number }}</view>
-					<view class="num clamp" v-else>+ {{ ls.number }}</view>
-				</view>
-				<view class="tpl-time" v-if="ls.status == 1">{{ ls.add_time }}</view>
-				<view class="tpl-time" v-if="ls.status == 0">待发放</view>
-			</view>
-		</view>
-		<u-loadmore :status="loadType"></u-loadmore>
-		<view class="empty-box" v-show="list.length == 0"><u-empty></u-empty></view>
-		<view class="flex submit-box">
-			<view class="submit" @click="recharge" v-if="moneyData.isTi">充币</view>
-			<view class="tip" v-if="moneyData.type==1"></view>
-			<view class="submit" @click="withdraw" v-if="moneyData.type==1">提币</view>
-		</view>
-		<uni-popup ref="mation" type="center">
-			<view class="popup">
-				<view class="cancel flex" @click="close2"><view class="tip">x</view></view>
-				<view class="list-boxs">
-					<view class="textBox flex">
-						<view class="font">交易前:</view>
-						<view class="number">{{ before * 1 }} {{ moneyData.code }}</view>
-					</view>
-					<view class="xian"></view>
-					<view class="textBox flex">
-						<view class="font">交易额:</view>
-						<view class="number">{{ pm }}{{ number * 1 }} {{ moneyData.code }}</view>
-					</view>
-					<view class="xian"></view>
-					<view class="textBox flex">
-						<view class="font">交易后:</view>
-						<view class="number">{{ balance * 1 }} {{ moneyData.code }}</view>
-					</view>
-					<view class="xian"></view>
-					<scroll-view scroll-y="true" class="textBox">
-						<view class="font">流水详情:</view>
-						<view class="text">{{ text }}</view>
-					</scroll-view>
-				</view>
-			</view>
-		</uni-popup>
-	</view>
-</template>
-<script>
-import { moneyLog, recharge, wallet } from '@/api/finance.js';
-import LbPicker from '@/components/lb-picker';
-export default {
-	components: {
-		LbPicker
-	},
-	data() {
-		return {
-			title: '筛选',
-			type: '',//当前筛选的类型查询用
-			value: '',//当前选中的类型名称
-			typeList: [],//记录列表
-			list: [],//历史记录列表
-			// num: '',//充值金额
-			moneyTypeList: [],
-			text: '',//当前选中的流水详情
-			balance: '',//当前选中的流水金额
-			before: '',//交易前金额
-			number: '',//当前选中的弹窗交易金额
-			pm: '',
-			less: '',
-			page: 1,
-			limit: 10,
-			loadType:'loadmore',
-			isLast: true,
-			name: '', //币名称
-			moneyData: {
-				code: '',
-				money: '',
-				name: '',
-				logo: '',
-				type:'',
-			}
-		};
-	},
-	onReachBottom(){
-		this.getdata();
-	},
-	onLoad(option) {
-		this.name = option.name;
-		this.moneyType();
-		this.loadData();
-	},
-	onShow() {},
-	methods: {
-		async loadData() {
-			let obj = this;
-			uni.showLoading({
-				title: '加载中'
-			});
-			this.getdata()
-		},
-		getdata(){
-			let obj = this;
-			if(obj.loadType == 'nomore'){
-				return
-			}
-			if(obj.loadType == "loading"){
-				return
-			}
-			obj.loadType = "loading"
-			moneyLog(
-				{
-					page: obj.page,
-					limit: obj.limit,
-					type: obj.type
-				},
-				obj.name
-			).then(({ data }) => {
-				obj.typeList = data.type_list;
-				obj.typeList.unshift({
-					title:'全部',
-					type:''
-				})
-				obj.list = obj.list.concat(data.list);
-				console.log(obj.list);
-				if(data.list.length == obj.limit){
-					obj.loadType = 'loadmore';
-					obj.page++
-				}else {
-					obj.loadType = 'nomore'
-				}
-				uni.hideLoading();
-			});
-		},
-		// 所有币种
-		async moneyType() {
-			
-			let obj = this;
-			wallet({}).then(({ data }) => {
-				const dat = data.back[this.name];
-				obj.moneyData.logo = dat.LOGO;
-				obj.moneyData.name = dat.name;
-				obj.moneyData.code = dat.code;
-				obj.moneyData.money = dat.money.money;
-				obj.moneyData.type = +dat.can_cash
-				if(dat.money.address){
-					obj.moneyData.isTi = true
-				}else {
-					obj.moneyData.isTi = false
-				}
-				console.log(obj.moneyData)
-			});
-		},
-		selectOne(options) {
-			this.name = options.name;
-			this.moneyData.code = options.code;
-		},
-		useOutClickSide() {
-			this.$refs.easySelect.hideOptions && this.$refs.easySelect.hideOptions();
-		},
-		handleTap(name) {
-			this.$refs[name].show();
-		},
-		handleChange(e) {
-			// this.title = e.item.title;
-			// this.type = e.item.type;
-		},
-		handleConfirm(e) {
-			this.title = e.item.title;
-			this.type = e.item.type;
-			this.loadData();
-		},
-		handleCancel(e) {},
-		// 充币按钮跳转页面
-		recharge() {
-			uni.navigateTo({
-				url:'/pages/assets/recharge'
-			})
-		},
-		withdraw() {
-			uni.navigateTo({
-				url:'/pages/assets/withdraw?name=' + this.name
-			})
-		},
-		close() {
-			this.$refs.popup.close();
-		},
-		navTo(url) {
-			uni.navigateTo({
-				url
-			});
-		},
-		nav(index) {
-			const obj = this;
-			obj.text = obj.list[index].mark;
-			obj.balance = obj.list[index].balance;
-			obj.number = obj.list[index].number;
-			if (obj.list[index].pm == 1) {
-				obj.pm = '+';
-
-				obj.before = obj.subNum(obj.balance, obj.number);
-			} else {
-				obj.pm = '-';
-				obj.before = this.addNum(obj.balance, obj.number);
-			}
-			this.$refs.mation.open();
-		},
-		addNum(num1, num2) {
-			let sq1, sq2, multiple;
-			try {
-				sq1 = num1.toString().split('.')[1].length;
-			} catch (e) {
-				sq1 = 0;
-			}
-			try {
-				sq2 = num2.toString().split('.')[1].length;
-			} catch (e) {
-				sq2 = 0;
-			}
-			multiple = Math.pow(10, Math.max(sq1, sq2) + 1);
-			return (num1 * multiple + num2 * multiple) / multiple;
-		},
-		close2() {
-			this.$refs.mation.close();
-		},
-		subNum(num1, num2) {
-			let sq1, sq2, multiple;
-			try {
-				sq1 = num1.toString().split('.')[1].length;
-			} catch (e) {
-				sq1 = 0;
-			}
-			try {
-				sq2 = num2.toString().split('.')[1].length;
-			} catch (e) {
-				sq2 = 0;
-			}
-			multiple = Math.pow(10, Math.max(sq1, sq2) + 1);
-			return (num1 * multiple - num2 * multiple) / multiple;
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	min-height: 100%;
-	background-color: #ffffff;
-
-	.container {
-		width: 100%;
-		padding: 60rpx 30rpx 120rpx 30rpx;
-	}
-}
-
-.logo {
-	text-align: center;
-
-	image {
-		width: 119rpx;
-		height: 119rpx;
-	}
-}
-
-.select-box {
-	position: absolute;
-	right: 0;
-	padding: 30rpx 30rpx;
-	font-size: 32rpx;
-	font-weight: 500;
-	color: #333333;
-
-	image {
-		width: 21rpx;
-		height: 11rpx;
-		margin-left: 15rpx;
-	}
-
-	.select-name {
-		padding-right: 15rpx;
-	}
-}
-
-.list {
-	margin-top: 120rpx;
-}
-
-.list-box {
-	padding: 60rpx 0rpx 30rpx 0rpx;
-	font-size: 30rpx;
-	font-weight: 400;
-	color: #333333;
-	.tpl-time {
-		font-size: 24rpx;
-		font-weight: 400;
-		color: #999999;
-		width: 100%;
-		text-align: right;
-		padding-top: 25rpx;
-	}
-	.list-tpl {
-		image {
-			width: 39rpx;
-			height: 43rpx;
-		}
-		.tpl-name {
-			padding: 0rpx 15rpx 0rpx 30rpx;
-		}
-	}
-	.num {
-		font-size: 36rpx;
-		font-weight: 400;
-		color: #fb3a2f;
-		width: 50%;
-		text-align: right;
-	}
-}
-.empty-box {
-	width: 100%;
-	height: 500rpx;
-	padding-top: 200rpx;
-}
-.submit-box {
-	position: fixed;
-	bottom: 0;
-	left: 0;
-	width: 100%;
-	background: linear-gradient(90deg, #60BAB0, #45969B);
-	color: #ffffff;
-	text-align: center;
-	.submit {
-		padding: 20rpx 20%;
-		flex-grow: 1;
-	}
-
-	.tip {
-		width: 2rpx;
-		height: 37rpx;
-		background: #ffffff;
-	}
-}
-//弹窗
-.popup {
-	background-color: #ffffff;
-	border-radius: 25rpx;
-	font-size: 30rpx;
-	.cancel {
-		text-align: center;
-		width: 100%;
-		line-height: 60rpx;
-		.tip {
-			background-color: #5771df;
-			color: #ffffff;
-			width: 70rpx;
-			height: 70rpx;
-			border-top-right-radius: 25rpx;
-		}
-	}
-	.list-boxs {
-		padding: 0rpx 80rpx;
-		.password {
-			padding: 50rpx 0rpx;
-			width: 100%;
-			input {
-				width: 70%;
-				height: 80rpx;
-				border: 2rpx solid #999999;
-				padding-left: 25rpx;
-				box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.27);
-				border-radius: 11rpx;
-			}
-		}
-		.confirm-btn {
-			padding-bottom: 120rpx;
-			padding-top: 30rpx;
-			text {
-				background-color: #5771df;
-				color: #ffffff;
-				width: 70%;
-				text-align: center;
-				padding: 25rpx 90rpx;
-				border-radius: 15rpx;
-			}
-		}
-	}
-}
-.popup {
-	height: 618rpx;
-	background: #ffffff;
-	box-shadow: 3rpx 3rpx 6rpx 0rpx rgba(31, 31, 31, 0.17);
-	border-radius: 40rpx;
-	width: 700rpx;
-	.cancel {
-		text-align: center;
-		width: 100%;
-		line-height: 60rpx;
-		position: relative;
-		.tip {
-			color: #000000;
-			width: 70rpx;
-			height: 70rpx;
-			position: absolute;
-			top: 0;
-			right: 0;
-			background-color: #fff;
-		}
-	}
-	.list-boxs {
-		width: 90%;
-		margin: 0 auto;
-		margin-top: 100rpx;
-
-		.textBox {
-			padding: 24rpx 18rpx;
-			.font {
-				font-size: 28rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #4f4f4f;
-			}
-			.number {
-				font-size: 28rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #fb3a2f;
-			}
-			.text {
-				text-indent: 2em;
-				font-size: 28rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #4f4f4f;
-			}
-		}
-		.xian {
-			width: 100%;
-			height: 1px;
-			background: #e7dfe8;
-		}
-	}
-}
-</style>

+ 312 - 0
pages/assets/logroll.vue

@@ -0,0 +1,312 @@
+<template>
+	<view class="center">
+		<view class="bg"><image src="../../static/img/logroll-bg.png" mode=""></image></view>
+		<view class="main-box">
+			<view class="main-title">
+				<!-- <view class="main-title-image"><image class="image" src="../../static/icon/title.png" mode=""></image></view> -->
+				<view class="main-title-font">互助说明</view>
+			</view>
+			<view class="main">
+				1234564654
+				<br />
+				12345489446534
+				<br />
+				2315648645156
+				<br />
+				156351648644
+				<br />
+				15448654848
+				<br />
+				15645614564186
+				<br />
+				156152348486
+				<br />
+				84546848646848
+				<br />
+				84546848646848
+				<br />
+				84546848646848
+				<br />
+				84546848646848
+				<br />
+				84546848646848
+				<br />
+				84546848646848
+			</view>
+		</view>
+		<view class="btn" @click="open()">加入互助</view>
+		<uni-popup ref="popup" type="center">
+			<view class="popup">
+				<view class="popup-dox">
+					<view class="popup-title">确认付款</view>
+					<view class="popup-little">请输入支付密码确认付款</view>
+				</view>
+				<view class="people-info">
+					<view class="info-font">收款人</view>
+					<view class="info-main">
+						<view class="info-left">
+							<view class="avtor"><image src="" mode=""></image></view>
+							<view class="left-font">
+								<view class="name">御风</view>
+								<view class="phone">13541202523</view>
+							</view>
+						</view>
+						<view class="info-right">
+							<view class="num">2000</view>
+							<view class="right-font">互助积分</view>
+						</view>
+					</view>
+					<view class="pwd-box">
+						<view class="pwd-font">密码</view>
+						<view class="input"><input type="password" value="pwd" placeholder="请输入支付密码" placeholder-class="pwd-tip" /></view>
+					</view>
+					<view class="btn-box">确认</view>
+				</view>
+			</view>
+			<view class="close_icon" @click="close"><image src="../../static/img/Close.png"></image></view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			pwd: ''
+		};
+	},
+	methods: {
+		open() {
+			this.$refs.popup.open();
+		},
+		close() {
+			this.$refs.popup.close();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.center {
+	width: 100%;
+	height: 100%;
+	position: relative;
+	padding-bottom: 40rpx;
+	.bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		height: 100%;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+}
+.main-box {
+	position: relative;
+	z-index: 10;
+	width: 690rpx;
+	padding-top: 600rpx;
+	margin: 0 auto;
+	border-radius: 10rpx;
+	.main-title {
+		position: relative;
+		z-index: 11;
+		width: 322rpx;
+		height: 80rpx;
+		margin: -60rpx auto 0;
+		border-radius: 50rpx;
+		position: relative;
+		background-color: #55a7f4;
+		.main-title-image {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 322rpx;
+			height: 80rpx;
+			.image {
+				width: 100%;
+				height: 100%;
+				border-radius: 50rpx;
+			}
+		}
+
+		.main-title-font {
+			position: relative;
+			z-index: 10;
+			text-align: center;
+			line-height: 80rpx;
+			font-size: 46rpx;
+			font-weight: bold;
+			color: #141564;
+		}
+	}
+	.main {
+		margin-top: -40rpx;
+		width: 100%;
+		padding: 112rpx 30rpx 30rpx;
+		background: #365eab;
+		position: relative;
+		border-radius: 20rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #ffffff;
+	}
+}
+.btn {
+	position: relative;
+	z-index: 12;
+	width: 684rpx;
+	height: 96rpx;
+	background: #29f3fd;
+	border-radius: 48rpx;
+	margin: 78rpx auto 0;
+	line-height: 96rpx;
+	text-align: center;
+	font-size: 42rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #030454;
+}
+.popup {
+	width: 540rpx;
+	background-color: #ffffff;
+	border-radius: 15rpx;
+	text-align: center;
+	padding-bottom: 50rpx;
+	.popup-dox {
+		padding-top: 84rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		.popup-title {
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+		}
+		.popup-little {
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #808080;
+		}
+	}
+	.people-info {
+		margin-top: 56rpx;
+		padding: 0 26rpx;
+		text-align: left;
+		.info-font {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+		}
+		.info-main {
+			margin-top: 26rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			.info-left {
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				.avtor {
+					background: #007BFF;
+					width: 80rpx;
+					height: 80rpx;
+					border-radius: 50%;
+					image {
+						width: 80rpx;
+						height: 80rpx;
+						border-radius: 50%;
+					}
+				}
+				.left-font {
+					margin-left: 10rpx;
+					.name {
+						font-size: 30rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #333333;
+					}
+					.phone {
+						font-size: 22rpx;
+						font-family: PingFang SC;
+						font-weight: 400;
+						color: #333333;
+						opacity: 0.8;
+					}
+				}
+			}
+			.info-right {
+				text-align: right;
+				line-height: 1;
+				.num {
+					font-size: 42rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #2E58FF;
+				}
+				.right-font {
+					font-size: 22rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+				}
+			}
+		}
+	}
+	.pwd-box {
+		width: 490rpx;
+		background: #F4F4F4;
+		border-radius: 10rpx;
+		display: flex;
+		align-items: center;
+		justify-content: flex-start;
+		margin: 50rpx auto 0;
+		padding: 20rpx 20rpx;
+		.pwd-font {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+		}
+		.pwd-tip {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+			opacity: 0.51;
+		}
+		.input {
+			margin-left: 20rpx;
+		}
+	}
+	.btn-box {
+		margin:46rpx auto 0;
+		width: 460rpx;
+		height: 70rpx;
+		background: linear-gradient(0deg, #2E58FF, #32C6FF);
+		border-radius: 10rpx;
+		text-align: center;
+		line-height: 70rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #FFFFFF;
+	}
+}
+.close_icon {
+	width: 60rpx;
+	height: 60rpx;
+	margin: 88rpx auto 0;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+</style>

+ 26 - 26
pages/assets/myPing.vue

@@ -9,29 +9,29 @@
 		</view>
 		<view class="zongbox flex">
 			<view class="info">
-				<view class="num">{{yesterday.join}}</view>
+				<view class="num">{{ yesterday.join }}</view>
 				<view class="info-font">昨日拼购数</view>
 			</view>
 			<view class="info">
-				<view class="num">{{month.join}}</view>
+				<view class="num">{{ month.join }}</view>
 				<view class="info-font">月度拼购数</view>
 			</view>
 			<view class="info">
-				<view class="num">{{history.join}}</view>
+				<view class="num">{{ history.join }}</view>
 				<view class="info-font">累计总拼购数</view>
 			</view>
 		</view>
 		<view class="zongbox flex">
 			<view class="info">
-				<view class="num">{{yesterday.bingo}}</view>
+				<view class="num">{{ yesterday.bingo }}</view>
 				<view class="info-font">昨日拼中数</view>
 			</view>
 			<view class="info">
-				<view class="num">{{month.bingo}}</view>
+				<view class="num">{{ month.bingo }}</view>
 				<view class="info-font">月度拼中数</view>
 			</view>
 			<view class="info">
-				<view class="num">{{history.bingo}}</view>
+				<view class="num">{{ history.bingo }}</view>
 				<view class="info-font">累计总拼中数</view>
 			</view>
 		</view>
@@ -42,7 +42,7 @@
 		<view v-for="(item, index) in list" :key="index" class="box" @click="nav(item)">
 			<view class="title flex">
 				<view class="flex clamp">
-					<view class="log"><image src="../../static/img/pgTip.png" mode="scaleToFill"></image></view>
+					<view class="log"><image src="../../static/img/index4.png" mode="scaleToFill"></image></view>
 					<view class="name clamp">{{ item.name }}</view>
 					<view class="lun">
 						<text>{{ item.lun }}{{ item.table }}</text>
@@ -83,10 +83,10 @@ export default {
 			loadtype: 'loadmore',
 			page: 1,
 			limit: 10,
-			bonus: 0 ,//分红
-			yesterday:'',//昨日
-			month:'',//季度
-			history:''//累计
+			bonus: 0, //分红
+			yesterday: '', //昨日
+			month: '', //季度
+			history: '' //累计
 		};
 	},
 	onReachBottom() {
@@ -127,14 +127,14 @@ export default {
 				limit: that.limit
 			})
 				.then(e => {
-					this.yesterday = e.data.yesterday
-					this.month = e.data.month
-					this.history = e.data.history
-					console.log(this.yesterday,'1234556')
+					this.yesterday = e.data.yesterday;
+					this.month = e.data.month;
+					this.history = e.data.history;
+					console.log(this.yesterday, '1234556');
 					const data = e.data.list.map(ls => {
-						const lun = ls.group_num > 0 ? '第'+ ls.group_num + '轮' : '';
-						console.log(ls.table)
-						const table = ls.table_id > 0 ? '第'+ ls.table_id + '桌' : '';
+						const lun = ls.group_num > 0 ? '第' + ls.group_num + '轮' : '';
+						console.log(ls.table);
+						const table = ls.table_id > 0 ? '第' + ls.table_id + '桌' : '';
 						const time = new Date(ls.pay_time * 1000);
 						return {
 							name: ls.activity.name,
@@ -150,7 +150,7 @@ export default {
 						};
 					});
 					that.list.push(...data);
-					console.log(that.list,"xiangqing")
+					console.log(that.list, 'xiangqing');
 					// 判断是否还有数据
 					if (that.list.length >= that.limit) {
 						that.page++;
@@ -164,9 +164,8 @@ export default {
 				});
 		},
 		nav(e) {
-			if(e.status == 0){
-				
-			}else {
+			if (e.status == 0) {
+			} else {
 				uni.navigateTo({
 					url: '/pages/assets/teamDetails?id=' + e.id
 				});
@@ -185,7 +184,8 @@ page {
 .bg {
 	width: 750rpx;
 	height: 248rpx;
-	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+
+	background: linear-gradient(30deg, #2e58ff, #33eeff);
 	border-bottom-left-radius: 150rpx;
 	border-bottom-right-radius: 150rpx;
 }
@@ -271,8 +271,8 @@ page {
 	display: flex;
 	flex-direction: column;
 	align-items: center;
-	.info-num {
-		font-size: 50rpx;
+	.num {
+		font-size: 40rpx;
 		font-family: PingFang SC;
 		font-weight: bold;
 		color: #0f253a;
@@ -344,7 +344,7 @@ page {
 			font-size: 28rpx;
 			font-family: PingFang SC;
 			font-weight: bold;
-			color: #44969d;
+			color: #2E58FF;
 			flex-shrink: 0;
 		}
 	}

+ 0 - 211
pages/assets/recharge.vue

@@ -1,211 +0,0 @@
-<template>
-	<view class="center">
-		<view class="top">
-			<view class="title flex">
-				<view class="xian"></view>
-				<view class="title-font">充币二维码TRC20</view>
-			</view>
-			<view class="erweima-box">
-				<view class="erweima-font">请转入USDT</view>
-				<view class="erweima">
-					<tki-qrcode
-						:cid="cid"
-						ref="qrcode"
-						:val="num"
-						:size="size"
-						:unit="unit"
-						:background="background"
-						:foreground="foreground"
-						:pdground="pdground"
-						:iconSize="iconSize"
-						:lv="lv"
-						:onval="onval"
-						:loadMake="loadMake"
-						:usingComponents="usingComponents"
-						@result="qrR"
-					/>
-				</view>
-				
-			</view>
-			<view class="btn" @click="domFile">保存二维码</view>
-		</view>
-		<view class="top">
-			<view class="title flex">
-				<view class="xian"></view>
-				<view class="title-font">充币地址</view>
-			</view>
-			<view class="address">{{ num }}</view>
-			<view class="btn" style="margin-top: 50rpx;" @click="setData">复制充币地址</view>
-		</view>
-		<view class="top info">
-			请勿向上述地址充值人任何非USDT资产,否则资产将不可追回。
-			<br />
-			USDT冲币仅支持TRC2.0波场上的资产,其他USDT将无法上帐,请您谅解。
-			<br />
-			您充值至上述地址后,需要整个网络节点确认,1次网络确认后到账,2次网络确认后即可提币。
-			<br />
-			最小充值金额:10USDT,小于最小金额的充值将不会上帐且无法退回。
-		</view>
-	</view>
-</template>
-
-<script>
-import { wallet } from '@/api/finance.js';
-import tkiQrcode from '@/components/tki-qrcode/tki-qrcode.vue';
-export default {
-	data() {
-		return {
-			num: '',
-			image: '../../static/re/re1.png',
-			cid: 'cid',
-			size: 150,
-			unit: '150',
-			background: '#FFFFFF',
-			foreground: '#000000',
-			pdground: '#000000',
-			icon: '',
-			iconSize: 40,
-			lv: 3,
-			onval: true,
-			loadMake: true,
-			usingComponents: true,
-		};
-	},
-	onLoad() {
-		this.loadData();
-	},
-	methods: {
-		async loadData() {
-			wallet().then(({ data }) => {
-				console.log(data);
-				const arr = Object.keys(data.back);
-				console.log(arr);
-				let ar = [];
-				arr.forEach(e => {
-					console.log(e)
-					ar.push(data.back[e]);
-				});
-				console.log(ar)
-				this.num = ar[0].money.address
-			});
-		},
-		domFile() {
-			uni.downloadFile({
-				url: this.image,
-				success: e => {
-					console.log(e);
-					uni.showToast({
-						title: '下载成功!'
-					});
-				},
-				fail(e) {
-					uni.showToast({
-						title: '复制失败',
-						icon: false
-					});
-					console.log(e);
-				}
-			});
-		},
-		qrR(res) {
-			this.src = res;
-		},
-		setData() {
-			// #ifdef APP-PLUS
-			uni.setClipboardData({
-				data: this.num,
-				success: e => {
-					uni.showToast({
-						title: '复制成功!'
-					});
-				},
-				fail(e) {
-					uni.showToast({
-						title: '复制失败',
-						icon: false
-					});
-					console.log(e);
-				}
-			});
-			// #endif
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-.center,
-page {
-	height: 100%;
-	background: #f3f3f3;
-}
-.top:first-child {
-	margin-top: 0;
-}
-.top {
-	margin-top: 20rpx;
-	width: 100%;
-	height: auto;
-	background: #ffffff;
-	padding: 26rpx 30rpx 50rpx;
-	.erweima-box {
-		margin-top: 77rpx;
-		.erweima-font {
-			text-align: center;
-			font-size: 30rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #333333;
-		}
-		.erweima {
-			margin: 16rpx auto 0;
-			width: 300rpx;
-			height: 300rpx;
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
-	.address {
-		margin-top: 86rpx;
-		text-align: center;
-	}
-}
-.title {
-	justify-content: flex-start;
-	align-items: center;
-	.xian {
-		width: 2rpx;
-		height: 30rpx;
-		background: linear-gradient(90deg, #f95b2f, #60bab0, #45969b);
-	}
-	.title-font {
-		padding-left: 16rpx;
-		font-size: 30rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #333333;
-	}
-}
-.btn {
-	margin: 36rpx auto 0;
-	width: 500rpx;
-	height: 60rpx;
-	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
-	border-radius: 30px;
-	line-height: 60rpx;
-	text-align: center;
-	font-size: 26rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	color: #ffffff;
-}
-.info {
-	font-size: 24rpx;
-	font-family: PingFang SC;
-	font-weight: 500;
-	color: #333333;
-	line-height: 42rpx;
-}
-</style>

+ 1 - 1
pages/assets/teamDetails.vue

@@ -3,7 +3,7 @@
 		<view class="box">
 			<view class="title flex">
 				<view class="flex">
-					<view class="log"><image src="../../static/img/pgTip.png" mode="scaleToFill"></image></view>
+					<view class="log"><image src="../../static/img/index4.png" mode="scaleToFill"></image></view>
 					<view class="name">{{ item.name }}</view>
 					<view class="lun">{{ item.lun }}</view>
 				</view>

+ 0 - 286
pages/assets/transfer.vue

@@ -1,286 +0,0 @@
-<template>
-	<view class="container">
-		<view class="status_bar"><!-- 这里是状态栏 --></view>
-		<view class="goback-box" @click="toBack"><image class="goback" src="../../static/img/fanhui.png" mode=""></image></view>
-		<view class="header">转账</view>
-
-		<view class="list-box">
-			<view class="img"><image src="../../static/img/zhuanzhang-bg.png" mode=""></image></view>
-			<view class="list flex">
-				<view class="flex_item list-item">
-					<image :src="logo"></image>
-					<view>{{ name }}</view>
-				</view>
-				<view class="flex_item list-tpl">
-					<view class="content" @click="useOutClickSide"><selectss ref="easySelect" :options="moneyTypeList" :value="name" @selectOne="selectOne"></selectss></view>
-					<image src="../../static/img/jiantou.png"></image>
-				</view>
-			</view>
-		</view>
-		<view class="from-box">
-			<view class="from-title">对方账号</view>
-			<input class="input-box" type="text" v-model="account" placeholder="请输入对方账号" />
-			<view class="from-title">对方UID</view>
-			<input class="input-box" type="text" v-model="UUID" placeholder="请输入对方UID" />
-			<view class="from-title">交易密码</view>
-			<input class="input-box" type="password" v-model="password" placeholder="请输入交易密码" />
-			<view class="from-title">转账数量</view>
-			<view class="flex input-tpl">
-				<input class="input-box" type="number" v-model="num" placeholder="请输入数量" />
-				<view class="all" @click="num = money">全部</view>
-			</view>
-			<view class="all-num">
-				可用
-				<text>{{ money * 1 }}</text>
-				{{ name }}
-			</view>
-			<view class="submit" @click="transfer">确定</view>
-			<!-- <view class="tpl-box">转账数量10.0个起,手续费:0.0001FIL。</view> -->
-		</view>
-	</view>
-</template>
-<script>
-import { goPay, trade, wallet } from '@/api/finance.js';
-import selectss from '@/components/select.vue';
-export default {
-	components: {
-		selectss
-	},
-	data() {
-		return {
-			moneyTypeList: [],
-			logo: '',
-			name: '',
-			code: '',
-			money: '',
-
-			account: '',
-			UUID: '',
-			num: '',
-			password: ''
-		};
-	},
-	onLoad(option) {
-		if (option.name) {
-			this.name = option.name;
-			this.logo = option.logo;
-			this.code = option.code;
-		}
-		this.moneyType();
-	},
-	onShow() {},
-	methods: {
-		// 所有币种
-		async moneyType() {
-			let obj = this;
-			wallet({}).then(({ data }) => {
-				const arr = Object.keys(data.back);
-				console.log(arr);
-				let ar = [];
-				arr.forEach(e => {
-					ar.push(data.back[e]);
-				});
-
-				obj.moneyTypeList = ar.filter(e => {
-					console.log(e);
-					if (e.can_trade == 1) {
-						return e;
-					} else {
-						return;
-					}
-				});
-				console.log(obj.moneyTypeList);
-				if (obj.logo == '') {
-					obj.logo = obj.moneyTypeList[0].LOGO;
-					obj.name = obj.moneyTypeList[0].name;
-					obj.code = obj.moneyTypeList[0].code;
-					obj.money = obj.moneyTypeList[0].money.money - obj.moneyTypeList[0].money.only_pink*1;
-				}
-			});
-		},
-		transfer() {
-			let obj = this;
-			if (obj.code == '') {
-				obj.$api.msg('请选择币种!');
-				return;
-			}
-			if (obj.account == '') {
-				obj.$api.msg('请输入对方账号!');
-				return;
-			}
-			if (obj.UUID == '') {
-				obj.$api.msg('请输入对方UUID!');
-				return;
-			}
-			if (obj.password == '') {
-				obj.$api.msg('请输入交易密码!');
-				return;
-			}
-			if (obj.num == '') {
-				obj.$api.msg('请输入转账数量!');
-				return;
-			}
-			goPay({
-				type: obj.code,
-				num: obj.num,
-				to_uid: obj.UUID,
-				trade_psw: obj.password,
-				to_user_account: obj.account
-			}).then(data => {
-				obj.num = '';
-				obj.UUID = '';
-				obj.password = '';
-				obj.account = '';
-				obj.$api.msg(data.msg);
-			});
-		},
-		selectOne(options) {
-			this.logo = options.LOGO;
-			this.name = options.name;
-			this.code = options.code;
-			this.money = options.money.money - options.money.only_pink;
-		},
-		useOutClickSide() {
-			this.$refs.easySelect.hideOptions && this.$refs.easySelect.hideOptions();
-		},
-		toBack() {
-			uni.switchTab({
-				url: '/pages/assets/assets'
-			});
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-.status_bar {
-	height: var(--status-bar-height);
-	width: 100%;
-	background: linear-gradient(90deg, #60bab0, #45969b);
-}
-page {
-	min-height: 100%;
-	background-color: #ffffff;
-	.container {
-		width: 100%;
-	}
-}
-
-.list-box {
-	padding: 104rpx 30rpx 60rpx;
-	height: 350rpx;
-	.img {
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		width: 100%;
-		height: 440rpx;
-		image {
-			width: 100%;
-			height: 100%;
-		}
-	}
-	.list {
-		position: relative;
-		z-index: 10;
-		background-color: #ffffff;
-		border-radius: 15rpx;
-		padding: 15rpx 23rpx;
-		.list-item {
-			font-size: 30rpx;
-			font-weight: bold;
-			color: #333333;
-			image {
-				width: 43rpx;
-				height: 43rpx;
-				margin-right: 15rpx;
-			}
-		}
-		.list-tpl {
-			image {
-				width: 15rpx;
-				height: 25rpx;
-				margin-left: 20rpx;
-			}
-		}
-	}
-}
-.from-box {
-	margin: 74rpx 30rpx;
-	padding: 44rpx 25rpx;
-	background-color: #ffffff;
-	border-radius: 15rpx;
-	position: relative;
-	top: -180rpx;
-	.from-title {
-		font-size: 24rpx;
-		font-weight: bold;
-		color: #333333;
-	}
-	.input-box {
-		font-size: 26rpx;
-		font-weight: 500;
-		color: #666666;
-		margin: 35rpx 0rpx;
-	}
-	.all {
-		font-size: 30rpx;
-		font-weight: 500;
-		color: #44969d;
-	}
-	.all-num {
-		font-size: 24rpx;
-		font-weight: bold;
-		color: #333333;
-		text {
-			font-size: 26rpx;
-			padding: 0rpx 10rpx;
-			color: #44969d;
-		}
-	}
-	.submit {
-		background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
-		margin-top: 160rpx;
-		color: #ffffff;
-		text-align: center;
-		padding: 26rpx 0rpx;
-		border-radius: 15rpx;
-	}
-
-	.tpl-box {
-		text-align: left;
-		font-size: 28rpx;
-		font-weight: 500;
-		color: #fb3a2f;
-		margin-top: 26rpx;
-	}
-}
-.goback-box {
-	position: absolute;
-	left: 18rpx;
-	top: var(--status-bar-height);
-	height: 80rpx;
-	display: flex;
-	align-items: center;
-}
-.goback {
-	z-index: 100;
-	width: 34rpx;
-	height: 34rpx;
-}
-.header {
-	color: #ffffff;
-	position: absolute;
-	left: 0;
-	top: var(--status-bar-height);
-	width: 100%;
-	height: 80rpx;
-	font-size: 32rpx;
-	font-weight: 700;
-	z-index: 99;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-}
-</style>

+ 0 - 381
pages/assets/withdraw.vue

@@ -1,381 +0,0 @@
-<template>
-	<view class="container">
-		<view class="status_bar"><!-- 这里是状态栏 --></view>
-		<view class="goback-box" @click="toBack"><image class="goback" src="../../static/img/fanhui.png" mode=""></image></view>
-		<view class="header">提币</view>
-
-		<view class="list-box">
-			<view class="img"><image src="../../static/img/zhuanzhang-bg.png" mode=""></image></view>
-			<view class="list flex">
-				<view class="flex_item list-item">
-					<image :src="logo"></image>
-					<view>{{ name }}</view>
-				</view>
-				<view class="flex_item list-tpl">
-					<view class="content" @click="useOutClickSide"><selectss ref="easySelect" :options="moneyTypeList" :value="name" @selectOne="selectOne"></selectss></view>
-					<image src="../../static/img/jiantou.png"></image>
-				</view>
-			</view>
-		</view>
-		<view class="from-box">
-			<view class="from-title">提币地址</view>
-			<input class="input-box" type="text" v-model="addr" placeholder="请输入提币地址" />
-			<view class="from-title">数量</view>
-			<view class="flex input-tpl">
-				<input class="input-box" type="number" v-model="num" :placeholder="'最低数量 ' + less + name" />
-				<view class="all" @click="num = money">全部</view>
-			</view>
-			<view class="all-num">
-				可用
-				<text>{{ money * 1 }}</text>
-				{{ name }}
-			</view>
-			<view class="submit" @click="cash">确定</view>
-
-			<view class="tpl-box" v-show="showText == true">提币数量在{{ less }}-10000.0个之间,认真核对提币地址;手续费:{{ data.service }}{{ data.service_type }}</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 { cash, cashmoney_type, calculator, wallet } from '@/api/finance.js';
-import selectss from '@/components/select.vue';
-export default {
-	components: {
-		selectss
-	},
-	data() {
-		return {
-			moneyTypeList: [],
-			name: '',
-			code: '',
-			logo: '',
-			money: '',
-			less: '',
-			addr: '',
-			num: '',
-			isHiden: true,
-			data: '',
-			showText: false,
-			password: ''
-		};
-	},
-	onLoad(option) {
-		console.log(option);
-		if (option.name) {
-			this.name = option.name;
-		}
-		this.moneyType();
-	},
-	onShow() {},
-	watch: {
-		num(newVal, oldVal) {
-			this.calculator();
-		}
-	},
-	methods: {
-		// 所有币种
-		async moneyType() {
-			let obj = this;
-			wallet({}).then(({ data }) => {
-				const arr = Object.keys(data.back);
-				console.log(arr);
-				let ar = [];
-				arr.forEach(e => {
-					ar.push(data.back[e]);
-				});
-
-				obj.moneyTypeList = ar.filter(e => {
-					console.log(e);
-					if (e.can_cash == 1) {
-						return e;
-					} else {
-						return;
-					}
-				});
-				console.log(obj.moneyTypeList);
-				if (obj.name == '') {
-					obj.logo = obj.moneyTypeList[0].LOGO;
-					obj.name = obj.moneyTypeList[0].name;
-					obj.code = obj.moneyTypeList[0].code;
-					obj.money = obj.moneyTypeList[0].money.money;
-					obj.less = obj.moneyTypeList[0].less;
-				} else {
-					for (let i = 0; i < obj.moneyTypeList.length; i++) {
-						if (obj.moneyTypeList[i].name == this.name) {
-							obj.logo = obj.moneyTypeList[i].LOGO;
-							obj.name = obj.moneyTypeList[i].name;
-							obj.code = obj.moneyTypeList[i].code;
-							obj.money = obj.moneyTypeList[i].money.money;
-							obj.less = obj.moneyTypeList[i].less;
-							break;
-						}
-					}
-				}
-			});
-		},
-		calculator() {
-			let obj = this;
-			calculator({
-				money_type: obj.code,
-				money: obj.num
-			}).then(({ data }) => {
-				console.log(data);
-				obj.data = data;
-				obj.showText = true;
-			});
-		},
-		cash() {
-			let obj = this;
-			if (obj.code == '') {
-				obj.$api.msg('请选择币种!');
-				return;
-			}
-			if (obj.addr == '') {
-				obj.$api.msg('请输入提币地址!');
-				return;
-			}
-			if (obj.num == '') {
-				obj.$api.msg('请输入提币数量!');
-				return;
-			}
-			if (obj.num < obj.less) {
-				obj.$api.msg('最低数量不能低于' + obj.less + '!');
-				return;
-			}
-			this.isHiden = false;
-		},
-		pswQd() {
-			const obj = this;
-			if (this.password == '') {
-				obj.$api.msg('请输入密码');
-			}
-			cash({
-				money_type: obj.code,
-				money: obj.num,
-				address: obj.addr,
-				password: obj.password
-			}).then(data => {
-				obj.money = '';
-				obj.address = '';
-				obj.password = '';
-				obj.$api.msg(data.msg);
-				this.isHiden = true;
-			});
-		},
-		cancel() {
-			this.password = '';
-			this.isHiden = true;
-		},
-		selectOne(options) {
-			console.log(options,"123456")
-			this.logo = options.LOGO;
-			this.name = options.name;
-			this.code = options.code;
-			this.money = options.money.money;
-			this.less = options.less;
-		},
-		useOutClickSide() {
-			this.$refs.easySelect.hideOptions && this.$refs.easySelect.hideOptions();
-		},
-		nav(url) {
-			uni.navigateTo({
-				url: url
-			});
-		},
-		toBack() {
-			uni.switchTab({
-				url: '/pages/assets/assets'
-			});
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-page {
-	min-height: 100%;
-	background-color: #ffffff;
-	.container {
-		width: 100%;
-	}
-}
-.status_bar {
-	height: var(--status-bar-height);
-	width: 100%;
-	background: linear-gradient(90deg, #60bab0, #45969b);
-}
-.list-box {
-	padding: 104rpx 30rpx 60rpx;
-	height: 350rpx;
-	.img {
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		width: 100%;
-		height: 440rpx;
-		image {
-			width: 100%;
-			height: 100%;
-		}
-	}
-	.list {
-		position: relative;
-		z-index: 10;
-		background-color: #ffffff;
-		border-radius: 15rpx;
-		padding: 15rpx 23rpx;
-		.list-item {
-			font-size: 30rpx;
-			font-weight: bold;
-			color: #333333;
-			image {
-				width: 43rpx;
-				height: 43rpx;
-				margin-right: 15rpx;
-			}
-		}
-		.list-tpl {
-			image {
-				width: 15rpx;
-				height: 25rpx;
-				margin-left: 20rpx;
-			}
-		}
-	}
-}
-.from-box {
-	margin: 74rpx 30rpx;
-	padding: 44rpx 25rpx;
-	background-color: #ffffff;
-	border-radius: 15rpx;
-	position: relative;
-	top: -180rpx;
-	.from-title {
-		font-size: 24rpx;
-		font-weight: bold;
-		color: #333333;
-	}
-	.input-box {
-		font-size: 26rpx;
-		font-weight: 500;
-		color: #666666;
-		margin: 35rpx 0rpx;
-	}
-	.all {
-		font-size: 30rpx;
-		font-weight: 500;
-		color: #44969d;
-	}
-	.all-num {
-		font-size: 24rpx;
-		font-weight: bold;
-		color: #333333;
-	}
-	.submit {
-		background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
-		margin-top: 165rpx;
-		color: #ffffff;
-		text-align: center;
-		padding: 26rpx 0rpx;
-		border-radius: 15rpx;
-	}
-
-	.tpl-box {
-		text-align: left;
-		font-size: 28rpx;
-		font-weight: 500;
-		color: #fb3a2f;
-		margin-top: 26rpx;
-	}
-}
-.jilv {
-	margin-top: 30rpx;
-	text-align: center;
-	color: #999999;
-	font-size: 30rpx;
-}
-.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: #5771df;
-		}
-	}
-}
-.ishiden {
-	display: none;
-}
-.goback-box {
-	position: absolute;
-	left: 18rpx;
-	top: var(--status-bar-height);
-	height: 80rpx;
-	display: flex;
-	align-items: center;
-}
-.goback {
-	z-index: 100;
-	width: 34rpx;
-	height: 34rpx;
-}
-.header {
-	color: #ffffff;
-	position: absolute;
-	left: 0;
-	top: var(--status-bar-height);
-	width: 100%;
-	height: 80rpx;
-	font-size: 32rpx;
-	font-weight: 700;
-	z-index: 99;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-}
-</style>

+ 555 - 0
pages/cart/cart.vue

@@ -0,0 +1,555 @@
+<template>
+	<view class="container">
+		<!-- 空白页 -->
+		<view v-if="!hasLogin || empty === true" class="empty">
+			<image src="/static/error/emptyCart.png" class="emptyImg" mode="aspectFit"></image>
+			<view v-if="hasLogin" class="empty-tips">
+				空空如也
+				<navigator class="navigator" v-if="hasLogin" url="../index/index" open-type="switchTab">随便逛逛></navigator>
+			</view>
+			<view v-else class="empty-tips">
+				空空如也
+				<view class="navigator" @click="navToLogin">去登陆></view>
+			</view>
+		</view>
+		<view v-else>
+			<!-- 购物车头部 -->
+			<view class="cart-hand flex">
+				<view class="hand-tit">
+					购物车共
+					<text>{{ ' ' + cartList.length }} 件</text>
+					商品
+				</view>
+				<view class="hand-btn" @click="clearCart()">清空购物车</view>
+			</view>
+			<!-- 列表 -->
+			<view class="cart-list">
+				<block v-for="(item, index) in cartList" :key="item.id">
+					<view class="cart-item" :class="{ 'b-b': index !== cartList.length - 1 }">
+						<view class="image-wrapper">
+							<image
+								:src="item.productInfo.image"
+								:class="[item.loaded]"
+								mode="aspectFill"
+								lazy-load
+								@load="onImageLoad('cartList', index)"
+								@error="onImageError('cartList', index)"
+							></image>
+							<view class="iconfont iconroundcheckfill checkbox" :class="{ checked: item.checked }" @click="check('item', index)"></view>
+						</view>
+						<view class="item-right">
+							<text class="clamp title">{{ item.productInfo.store_name }}</text>
+							<text class="attr">{{ item.productInfo.attrInfo.suk }}</text>
+							<text class="price">¥{{ item.productInfo.price }}</text>
+							<!-- <uni-number-box
+								class="step"
+								:min="1"
+								:max="item.productInfo.stock"
+								:value="item.cart_num > item.productInfo.stock ? item.productInfo.stock : item.cart_num"
+								:isMax="item.cart_num >= item.productInfo.stock ? true : false"
+								:isMin="item.cart_num === 1"
+								:index="index"
+								@eventChange="numberChange"
+							></uni-number-box> -->
+							<view class="munbox flex">
+								<image src="../../static/icon/reduce.png" mode="" @click="reduce(item, index)"></image>
+								<input type="number" :value="item.cart_num" disabled />
+								<image src="../../static/icon/add.png" mode="" @click="add(item)"></image>
+							</view>
+						</view>
+						<!-- <text class="del-btn iconfont iconclose" @click="deleteCartItem(index)"></text> -->
+					</view>
+				</block>
+			</view>
+			<!-- 底部菜单栏 -->
+			<view class="action-section">
+				<view class="checkbox">
+					<view class="iconfont iconroundcheckfill icon-checked-box" @click="check('all')" :class="{ 'icon-checked': allChecked }"></view>
+					<!-- <view class="clear-btn" @click="allChecked ? clearCart() : ''" :class="{ show: allChecked }"><text>清空</text></view> -->
+				</view>
+				<view class="total-box">
+					<text class="price">¥{{ total }}</text>
+					<!-- <text class="coupon">
+						已优惠
+						<text>74.35</text>
+						元
+					</text> -->
+				</view>
+				<button type="primary" class="no-border confirm-btn" @click="createOrder">去结算</button>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+// #ifndef APP-PLUS
+import weixinObj from '@/plugin/jweixin-module/index.js';
+// #endif
+import { getCartList, getCartNum, cartDel } from '@/api/user.js';
+import { mapState } from 'vuex';
+import uniNumberBox from '@/components/uni-number-box.vue';
+import { saveUrl, interceptor } from '@/utils/loginUtils.js';
+export default {
+	components: {
+		uniNumberBox
+	},
+	data() {
+		return {
+			total: 0, //总价格
+			allChecked: false, //全选状态  true|false
+			empty: false, //空白页现实  true|false
+			cartList: []
+		};
+	},
+	onShow() {
+		// 只有登录时才加载数据
+		if (this.hasLogin) {
+			this.loadData();
+		}
+		// #ifndef APP-PLUS
+		weixinObj.hideAllNonBaseMenuItem();
+		// #endif
+	},
+	watch: {
+		//显示空白页
+		cartList(e) {
+			let empty = e.length === 0 ? true : false;
+			if (this.empty !== empty) {
+				this.empty = empty;
+			}
+		}
+	},
+	computed: {
+		...mapState('user', ['hasLogin'])
+	},
+	methods: {
+		reduce(item, index) {
+			if (item.cart_num == 1) {
+				uni.showModal({
+					content: '删除该商品?',
+					success: e => {
+						if (e.confirm) {
+							this.deleteCartItem(index);
+						}
+					}
+				});
+			} else {
+				item.cart_num--;
+				this.newNumberChange(item);
+			}
+		},
+		add(item) {
+			console.log(item);
+			if (item.productInfo.stock > item.cart_num) {
+				item.cart_num++;
+				this.newNumberChange(item);
+			} else {
+				return;
+			}
+		},
+		//请求数据
+		async loadData() {
+			let obj = this;
+			getCartList({})
+				.then(function(e) {
+					// 获取当前购物车物品增加数量
+					let nub = obj.cartList.length;
+					// 获取之前对象数组
+					let aArray = obj.cartList.reverse();
+					// 获取返回数据对象数组
+					let bArray = e.data.valid.reverse();
+					obj.cartList = bArray
+						.map((item, ind) => {
+							// 设置返回数据默认为勾选状态
+							item.checked = true;
+							// 获取相同数组之前对象的数据
+							let carlist = aArray[ind];
+							// 判断之前是否已经加载完毕
+							if (carlist && carlist.loaded == 'loaded') {
+								item.loaded = 'loaded';
+							}
+							return item;
+						})
+						.reverse();
+					obj.calcTotal(); //计算总价
+				})
+				.catch(function(e) {
+					console.log(e);
+				});
+		},
+		//监听image加载完成
+		onImageLoad(key, index) {
+			// 修改载入完成后图片class样式
+			this.$set(this[key][index], 'loaded', 'loaded');
+		},
+		//监听image加载失败
+		onImageError(key, index) {
+			this[key][index].image = '/static/error/errorImage.jpg';
+		},
+		// 跳转到登录页
+		navToLogin() {
+			// 保存地址
+			saveUrl();
+			// 登录拦截
+			interceptor();
+		},
+		//选中状态处理
+		check(type, index) {
+			if (type === 'item') {
+				this.cartList[index].checked = !this.cartList[index].checked;
+			} else {
+				const checked = !this.allChecked;
+				const list = this.cartList;
+				list.forEach(item => {
+					item.checked = checked;
+				});
+				this.allChecked = checked;
+			}
+			this.calcTotal(type);
+		},
+		//数量
+		numberChange(data) {
+			let arr = this.cartList[data.index];
+			arr.cart_num = data.number;
+			getCartNum({ id: arr.id, number: data.number })
+				.then(e => {
+					console.log(e);
+				})
+				.catch(function(e) {
+					console.log(e);
+				});
+			this.calcTotal();
+		},
+		newNumberChange(item) {
+			getCartNum({ id: item.id, number: item.cart_num })
+				.then(e => {
+					console.log(e);
+				})
+				.catch(function(e) {
+					console.log(e);
+				});
+			this.calcTotal();
+		},
+		//删除
+		deleteCartItem(index) {
+			let list = this.cartList;
+			let row = list[index];
+			let id = row.id;
+			cartDel({
+				ids: id
+			});
+			this.cartList.splice(index, 1);
+			uni.hideLoading();
+			this.calcTotal();
+		},
+		//清空
+		clearCart() {
+			uni.showModal({
+				content: '清空购物车?',
+				success: e => {
+					if (e.confirm) {
+						let st = this.cartList.map(e => {
+							return e.id;
+						});
+						cartDel({
+							ids: st.join(',')
+						}).then(e => {
+							console.log(e);
+						});
+						this.cartList = [];
+					}
+				}
+			});
+		},
+		//计算总价
+		calcTotal() {
+			let list = this.cartList;
+			if (list.length === 0) {
+				this.empty = true;
+				return;
+			}
+			let total = 0;
+			let checked = true;
+			list.forEach(item => {
+				if (item.checked === true) {
+					total += item.productInfo.price * item.cart_num;
+				} else if (checked === true) {
+					checked = false;
+				}
+			});
+			this.allChecked = checked;
+			this.total = Number(total.toFixed(2));
+		},
+		//创建订单
+		createOrder() {
+			let list = this.cartList;
+			let goodsData = [];
+			list.forEach(item => {
+				if (item.checked) {
+					goodsData.push(item.id);
+				}
+			});
+
+			uni.navigateTo({
+				url: '/pages/order/createOrder?id=' + goodsData.join(',')
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.container {
+	padding-bottom: 134rpx;
+	background-color: $page-color-base;
+	/* 空白页 */
+	.empty {
+		position: fixed;
+		left: 0;
+		top: 0;
+		width: 100%;
+		height: 100vh;
+		padding-bottom: 100rpx;
+		display: flex;
+		justify-content: center;
+		flex-direction: column;
+		align-items: center;
+		background: #fff;
+		.emptyImg {
+			width: 300rpx;
+			height: 250rpx;
+			margin-bottom: 30rpx;
+		}
+		.empty-tips {
+			display: flex;
+			font-size: $font-sm + 2rpx;
+			color: $font-color-disabled;
+			.navigator {
+				color: $uni-color-primary;
+				margin-left: 16rpx;
+			}
+		}
+	}
+}
+/* 购物车列表项 */
+.cart-item {
+	width: 710rpx;
+	height: 210rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 10rpx 0rpx rgba(0, 0, 0, 0.1);
+	border-radius: 10rpx;
+	margin: 20rpx auto;
+
+	display: flex;
+	position: relative;
+	padding: 30rpx 26rpx 30rpx 80rpx;
+	.image-wrapper {
+		width: 150rpx;
+		height: 150rpx;
+		flex-shrink: 0;
+		position: relative;
+		image {
+			border-radius: 8rpx;
+		}
+	}
+	.checkbox {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		left: -65rpx;
+		margin: auto 0;
+		height: 50rpx;
+		z-index: 8;
+		font-size: 44rpx;
+		line-height: 1;
+		padding: 4rpx;
+		color: $font-color-disabled;
+		background: #fff;
+		border-radius: 50px;
+	}
+	.item-right {
+		display: flex;
+		flex-direction: column;
+		flex: 1;
+		overflow: hidden;
+		position: relative;
+		padding-left: 30rpx;
+		.munbox {
+			width: 144rpx;
+			height: 44rpx;
+			position: absolute;
+			bottom: 0;
+			right: 0;
+			input {
+				display: inline-block;
+				text-align: center;
+			}
+			image {
+				flex-shrink: 0;
+				width: 44rpx;
+				height: 44rpx;
+			}
+		}
+		.title,
+		.price {
+			font-size: $font-base + 2rpx;
+			color: $font-color-dark;
+			height: 40rpx;
+			line-height: 40rpx;
+		}
+		.attr {
+			font-size: $font-sm + 2rpx;
+			color: $font-color-light;
+			height: 50rpx;
+			line-height: 50rpx;
+
+			font-size: 26rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #999999;
+		}
+		.price {
+			// height: 50rpx;
+			// line-height: 50rpx;
+			padding-top: 20rpx;
+			font-size: 34rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #ff4c4c;
+		}
+		.step {
+			margin-top: 20rpx;
+		}
+		.title {
+			font-size: 34rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+		}
+	}
+	.del-btn {
+		padding: 4rpx 10rpx;
+		font-size: 34rpx;
+		height: 50rpx;
+		color: $font-color-light;
+	}
+}
+/* 底部栏 */
+.action-section {
+	/* #ifdef H5 */
+	margin-bottom: 100rpx;
+	/* #endif */
+	position: fixed;
+	left: 30rpx;
+	bottom: 30rpx;
+	z-index: 95;
+	display: flex;
+	align-items: center;
+	width: 690rpx;
+	height: 100rpx;
+	padding: 0 30rpx;
+	background: rgba(255, 255, 255, 0.9);
+	box-shadow: 0 0 20rpx 0 rgba(0, 0, 0, 0.5);
+	border-radius: 16rpx;
+	.checkbox {
+		height: 52rpx;
+		position: relative;
+		.icon-checked-box {
+			border-radius: 50rpx;
+			background-color: #ffffff;
+			width: 52rpx;
+			height: 100%;
+			position: relative;
+			z-index: 5;
+			font-size: 53rpx;
+			line-height: 1;
+			color: $font-color-light;
+		}
+		.icon-checked {
+			color: $base-color;
+		}
+	}
+	.clear-btn {
+		position: absolute;
+		left: 26rpx;
+		top: 0;
+		z-index: 4;
+		width: 0;
+		height: 52rpx;
+		line-height: 52rpx;
+		padding-left: 38rpx;
+		font-size: $font-base;
+		color: #fff;
+		background: $font-color-disabled;
+		border-radius: 0 50px 50px 0;
+		opacity: 0;
+		transition: 0.2s;
+		&.show {
+			opacity: 1;
+			width: 120rpx;
+		}
+	}
+	.total-box {
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		text-align: right;
+		padding-right: 40rpx;
+
+		.price {
+			font-size: $font-lg;
+			color: $font-color-dark;
+		}
+		.coupon {
+			font-size: $font-sm;
+			color: $font-color-light;
+			text {
+				color: $font-color-dark;
+			}
+		}
+	}
+	.confirm-btn {
+		padding: 0 38rpx;
+		margin: 0;
+		border-radius: 100px;
+		height: 76rpx;
+		line-height: 76rpx;
+		font-size: $font-base + 2rpx;
+		background: $base-color;
+	}
+}
+/* 复选框选中状态 */
+.action-section .checkbox.checked,
+.cart-item .checkbox.checked {
+	color: $base-color;
+}
+.cart-hand {
+	width: 750rpx;
+	height: 88rpx;
+	background: #ffffff;
+	font-size: 30rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #333333;
+	line-height: 88rpx;
+	padding-left: 28rpx;
+	padding-right: 26rpx;
+	.hand-tit {
+		text {
+			color: #ff4c4c;
+		}
+	}
+	.hand-btn {
+		width: 164rpx;
+		height: 62rpx;
+		border: 2rpx solid #ff4c4c;
+		border-radius: 31rpx;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ff4c4c;
+		line-height: 62rpx;
+		text-align: center;
+	}
+}
+</style>

+ 224 - 0
pages/category/category.vue

@@ -0,0 +1,224 @@
+<template>
+	<view class="content">
+		<scroll-view scroll-y class="left-aside">
+			<view v-for="item in flist" :key="item.id" class="f-item b-b" :class="{ active: item.id === currentId }" @click="tabtap(item)">{{ item.cate_name }}</view>
+		</scroll-view>
+		<scroll-view scroll-with-animation scroll-y class="right-aside" @scroll="asideScroll" :scroll-top="tabScrollTop">
+			<view v-for="item in flist" :key="item.id" class="s-list" :id="'main-' + item.id">
+				<text class="s-item">{{ item.cate_name }}</text>
+				<view class="t-list ">
+					<view @click="navToList(item.id, titem.id)" class="t-item" v-for="titem in item.children" :key="titem.id">
+						<image :src="titem.pic"></image>
+						<text>{{ titem.cate_name }}</text>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+// #ifndef APP-PLUS
+import weixinObj from '@/plugin/jweixin-module/index.js';
+// #endif
+import { getCategoryList } from '@/api/product.js';
+export default {
+	data() {
+		return {
+			sizeCalcState: false,
+			tabScrollTop: 0,
+			currentId: 9,
+			flist: [],
+		};
+	},
+	onLoad() {
+		this.loadData();
+		// #ifndef APP-PLUS
+		weixinObj.hideAllNonBaseMenuItem();
+		// #endif
+	},
+	// 监听导航栏输入框点击事件
+	onNavigationBarSearchInputClicked(e) {
+		uni.navigateTo({
+			url: '/pages/product/search'
+		});
+	},
+	methods: {
+		// 载入数据
+		async loadData() {
+			let obj = this;
+			getCategoryList({})
+				.then(({ data }) => {
+					obj.flist = data.map(function(s) {
+						return s;
+					});
+				})
+				.catch(err => {
+					console.log(err);
+				});
+		},
+		//一级分类点击
+		tabtap(item) {
+			console.log(item);
+			// 判断有没有初始化页面高度对象数据
+			if (!this.sizeCalcState) {
+				this.calcSize();
+			}
+			// 获取当前点击的id
+			this.currentId = item.id;
+			console.log(item.top);
+			this.tabScrollTop = item.top;
+			console.log(this.tabScrollTop);
+		},
+		//右侧栏滚动
+		asideScroll(e) {
+			// 判断有没有初始化页面高度对象数据
+			if (!this.sizeCalcState) {
+				this.calcSize();
+			}
+			let scrollTop = e.detail.scrollTop;
+			let box = 0; //列表包裹框高度初始化
+			let bottom = 10; //距离页面底部多少像素左侧列表切换到最后一个一级分类
+			// 查询当前页面对象
+			let view = uni.createSelectorQuery().select('.content');
+			view.fields(
+				{
+					id: true,
+					dataset: true,
+					rect: true,
+					size: true,
+					scrollOffset: true
+				},
+				function(e) {
+					// 保存包裹框高度
+					box = e.height;
+				}
+			).exec();
+			// 获取所有距离顶部大于滚轮距离页面高度的所有分类
+			let tabs = this.flist.filter(item =>( item.top-10) <= scrollTop).reverse();
+			if (tabs.length > 0) {
+				// 判断是否已经到达滚轮底部
+				if (box + scrollTop + bottom >= e.detail.scrollHeight) {
+					this.currentId = this.flist[this.flist.length - 1].id;
+				} else {
+					this.currentId = tabs[0].id;
+				}
+			}
+		},
+		//计算右侧栏每个tab的高度等信息
+		calcSize() {
+			let h = 0;
+			this.flist.forEach(item => {
+				let view = uni.createSelectorQuery().select('#main-' + item.id);
+				view.fields(
+					{
+						size: true
+					},
+					data => {
+						item.top = h;
+						h += data.height;
+						item.bottom = h;
+					}
+				).exec();
+			});
+			this.sizeCalcState = true;
+		},
+		navToList(sid, tid) {
+			// 点击导航跳转到详细页面
+			uni.navigateTo({
+				url: '/pages/product/list?fid='+this.currentId+'&sid='+sid+'&tid='+tid
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page,
+.content {
+	height: 100%;
+	background-color: #f8f8f8;
+}
+
+.content {
+	display: flex;
+}
+.left-aside {
+	flex-shrink: 0;
+	width: 200rpx;
+	height: 100%;
+	background-color: #fff;
+}
+.f-item {
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	width: 100%;
+	height: 100rpx;
+	font-size: 28rpx;
+	color: $font-color-base;
+	position: relative;
+	&.active {
+		// color: $base-color;
+		color: #000;
+		font-weight: bold;
+		background: #f8f8f8;
+		&:before {
+			content: '';
+			position: absolute;
+			left: 0;
+			top: 50%;
+			transform: translateY(-50%);
+			height: 36rpx;
+			width: 8rpx;
+			background-color: $base-color;
+			border-radius: 0 4px 4px 0;
+			opacity: 0.8;
+		}
+	}
+}
+
+.right-aside {
+	flex: 1;
+	overflow: hidden;
+	padding-left: 20rpx;
+	padding-right: 20rpx;
+}
+.s-item {
+	display: flex;
+	align-items: center;
+	height: 70rpx;
+	padding-top: 8rpx;
+	font-size: 28rpx;
+	color: $font-color-dark;
+}
+.t-list {
+	display: flex;
+	flex-wrap: wrap;
+	border-radius: 15rpx;
+	width: 100%;
+	background: #fff;
+	padding-top: 12rpx;
+	&:after {
+		content: '';
+		flex: 99;
+		height: 0;
+	}
+}
+.t-item {
+	flex-shrink: 0;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	flex-direction: column;
+	width: 171rpx;
+	font-size: 26rpx;
+	color: #666;
+	padding-bottom: 20rpx;
+
+	image {
+		width: 140rpx;
+		height: 140rpx;
+	}
+}
+</style>

+ 121 - 0
pages/conversion/candy.vue

@@ -0,0 +1,121 @@
+<template>
+	<view class="center">
+		<view class="content-money">
+			<view class="buttom">
+				<text class="text">可兑换积分</text>
+				<view class="icon"><text>¥</text>{{ money }}</view>
+			</view>
+			<view class="interval"></view>
+			<view class="buttom">
+				<text class="text">申请兑换糖果</text>
+				<view class=" icon"><input class="input" type="number" v-model="withdrawal" placeholder="申请兑换糖果数量" placeholder-class="placeholder" /></view>
+			</view>
+			<view class="interval"></view>
+			<view class="tip">
+				<view class=" tip-icon" @click="all()">全部转换</view>
+			</view>
+		</view>
+		<view class="code">
+			
+		</view>
+		<view class="btn">
+			提交申请
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data(){
+		return{
+			money: 1000,
+			withdrawal:'',
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+page,.center {
+	height: 100%;
+	background: #FFFFFF;
+}
+.content-money {
+	padding: 0 20rpx;
+	background-color: #ffffff;
+	.buttom {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		height: 110rpx;
+	}
+	.interval {
+		width: 100%;
+		height: 1px;
+		background: #E6E6E6;
+	}
+	.icon {
+		font-size: 48rpx;
+		font-family: SourceHanSansCN;
+		font-weight: 500;
+		color: #333333;
+		text{
+			font-size: 32rpx;
+		}
+		.input {
+			text-align: right;
+			flex: 1;
+			font-size: 30rpx;
+			color: $font-color-dark;
+		}
+		.iconlocation {
+			text-align: right;
+			font-size: 36rpx;
+			color: $font-color-light;
+		}
+	}
+	.text {
+		font-size: 32rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #333333;
+	}
+	.tip {
+		height: 74rpx;
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+		.tip-text {
+			font-size: 24rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+		}
+		.tip-icon {
+			font-size: 26rpx;
+			font-family: SourceHanSansCN;
+			font-weight: 400;
+			color: #EF041F;
+		}
+	}
+}
+.btn {
+	text-align: center;
+	margin: 134rpx auto;
+	width: 670rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
+	border-radius: 10px;
+	text-align: center;
+	line-height: 88rpx;
+	font-size: 32rpx;
+	font-family: SourceHanSansCN;
+	font-weight: 500;
+	color: #FEFEFE;
+}
+.code {
+	width: 750rpx;
+	height: 20rpx;
+	background: #F7F7F7;
+}
+</style>

+ 90 - 0
pages/conversion/transfers.vue

@@ -0,0 +1,90 @@
+<template>
+	<view class="center">
+		<view class="top">
+			<view class="top-num">{{ jf }}</view>
+			<view class="top-font">可转账购物积分</view>
+		</view>
+		<view class="main">
+			<view class="main-font">收款人账户</view>
+			<input class="main-input" type="text" value="" v-model="uid" placeholder="请输入收款人账户" placeholder-class="main-input" />
+		</view>
+		<view class="main">
+			<view class="main-font">转账数量</view>
+			<input class="main-input" type="text" value="" v-model="num" placeholder="请输入转账数量" placeholder-class="main-input" />
+		</view>
+		<view class="btn">
+			提交申请
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			jf: 360, //可转账购物积分
+			uid: '', //收款人账户
+			num: '' //转账数量
+		};
+	}
+};
+</script>
+
+<style lang="scss">
+page,
+.center {
+	background: #f2f3f5;
+	height: 100%;
+}
+.top {
+	margin-top: 20rpx;
+	background: #ffffff;
+	padding: 30rpx 0;
+	text-align: center;
+	.top-num {
+		font-size: 42rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+	.top-font {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #666666;
+	}
+}
+.main {
+	padding: 36rpx 24rpx;
+	background-color: #ffffff;
+	margin-top: 20rpx;
+	.main-font {
+		font-size: 30rpx;
+		font-family: PingFang SC;
+		font-weight: 400;
+		color: #333333;
+	}
+	.main-input {
+		margin-top: 10rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: 400;
+		color: #999999;
+		line-height: 110px;
+	}
+}
+.btn {
+	text-align: center;
+	margin: 120rpx auto;
+	width: 670rpx;
+	height: 88rpx;
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
+	border-radius: 10px;
+	text-align: center;
+	line-height: 88rpx;
+	font-size: 32rpx;
+	font-family: SourceHanSansCN;
+	font-weight: 500;
+	color: #FEFEFE;
+}
+</style>

+ 12 - 12
pages/index/appointment.vue

@@ -5,14 +5,14 @@
 				<view class="bg"><image src=".../../static/img/index4.png" mode=""></image></view>
 				<view class="title">{{ item.name }}</view>
 			</view>
-			<view class="main-bg">
-				<image src="../../static/img/auto.png" mode=""></image>
-			</view>
+			<view class="main-bg"><image src="../../static/img/auto.png" mode=""></image></view>
 			<view class="font">
-				预约消耗:<span class="money">{{ item.money * 1}}{{ item.money_type }}</span>
+				预约消耗:
+				<span class="money">{{ item.money * 1 }}{{ item.money_type }}</span>
 			</view>
 			<view class="font" style="margin-top: 10rpx;">
-				预约时间:<span class="time" >{{item.is_forever == 1? '永久' : item.valid_date+'天'}}</span>
+				预约时间:
+				<span class="time">{{ item.is_forever == 1 ? '永久' : item.valid_date + '天' }}</span>
 			</view>
 			<view class="btn">查看详情</view>
 		</view>
@@ -73,14 +73,14 @@ page {
 			font-size: 34rpx;
 			font-family: PingFang SC;
 			font-weight: bold;
-			color: #0F253A;
+			color: #0f253a;
 		}
 	}
 	.main-bg {
 		width: 520rpx;
 		height: 165rpx;
 		margin: 55rpx auto 0;
-		image{
+		image {
 			width: 100%;
 			height: 100%;
 		}
@@ -90,19 +90,19 @@ page {
 		font-size: 26rpx;
 		font-family: PingFang SC;
 		font-weight: 500;
-		color: #6D7C88;
+		color: #6d7c88;
 		.money {
 			font-size: 30rpx;
-			color: #44969D;
+			color: #2e58ff;
 		}
 		.time {
-			color:#0F253A;
+			color: #0f253a;
 		}
 	}
 	.btn {
 		width: 558rpx;
 		height: 80rpx;
-		background: linear-gradient(90deg, #60BAB0, #60BAB0, #45969B);
+		background: linear-gradient(0deg, #2e58ff, #32c6ff);
 		border-radius: 40rpx;
 		margin: 49rpx auto 0;
 		text-align: center;
@@ -110,7 +110,7 @@ page {
 		font-size: 30rpx;
 		font-family: PingFang SC;
 		font-weight: 500;
-		color: #FFFFFF;
+		color: #ffffff;
 	}
 }
 </style>

+ 11 - 8
pages/index/appointmentD.vue

@@ -7,7 +7,10 @@
 						<view class="avtor"><image class="portrait" :src="userInfo.avatar || '/static/img/missing-face.png'"></image></view>
 						<view class="name-box">
 							<view class="name clamp">{{ userInfo.phone || userInfo.email || '游客' }}</view>
-							<view class="tip" style="margin-top: 10rpx;" v-if="list.my">距离到期还有{{ list.js }}天</view>
+							<template v-if="list.my">
+								<view class="tip" style="margin-top: 10rpx;" v-if="list.my.is_forever=1">永久开通</view>
+								<view class="tip" style="margin-top: 10rpx;" v-else>距离到期还有{{ list.js }}天</view>
+							</template>
 							<view class="tip" style="margin-top: 10rpx;" v-else>尚未开通</view>
 						</view>
 					</view>
@@ -90,13 +93,13 @@ export default {
 				if (data.my) {
 					obj.autoid = data.my.id;
 					let time = Date.parse(new Date()).toString(); //获取到毫秒的时间戳,精确到毫秒
-					time = time.substr(0, 10);
+					time = (time.substr(0, 10))*1;
 					let date = data.my.valid_time - time;
+					console.log(date,data.my.valid_time,time)
 					obj.list.js = (date / (3600 * 24)).toFixed(0);
-					if (date % (3600 * 24) != 0){
-						obj.list.js = 1 + obj.list.js*1
+					if (date % (3600 * 24) != 0) {
+						obj.list.js = 1 + obj.list.js * 1;
 					}
-					console.log(time, date, '123465789');
 					if (data.my.status == 1) {
 						obj.checkedAuto = true;
 					}
@@ -277,7 +280,7 @@ export default {
 		color: #6d7c88;
 		.money {
 			font-size: 30rpx;
-			color: #44969d;
+			color: #2e58ff;
 		}
 		.time {
 			color: #0f253a;
@@ -286,7 +289,7 @@ export default {
 	.btn {
 		width: 558rpx;
 		height: 80rpx;
-		background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+		background: linear-gradient(0deg, #2e58ff, #32c6ff);
 		border-radius: 40rpx;
 		margin: 49rpx auto 0;
 		text-align: center;
@@ -325,7 +328,7 @@ export default {
 		font-size: 35rpx;
 	}
 	.psw-qd {
-		color: #45969b;
+		color: #2e58ff;
 	}
 }
 </style>

+ 0 - 508
pages/index/datile.vue

@@ -1,508 +0,0 @@
-<template>
-	<view class="center">
-		<scroll-view scroll-y="true" style="padding-bottom: 20rpx;">
-			<view class="shopBox" v-for="(item, index) in list.open_times" :key="index" v-if="item.ifShow">
-				<view class="shopBox-top flex" >
-					<view class="left-box flex">
-						<view class="left-bg"><image src="../../static/img/index4.png" mode=""></image></view>
-						<view class="one">{{ list.data ? list.data.name : '' }}</view>
-						<view class="two">{{ index+1 }}轮</view>
-					</view>
-					<view class="three" style="color: #FF4C4C;" v-if="item.type == 1">预约中</view>
-					<view class="three" style="color: ##44969D;" v-if="item.type == 2">待上架</view>
-					<view class="three" style="color: ##6D7C88;" v-if="item.type == 3">已开奖</view>
-				</view>
-				<view class="shopBox-between">
-					<view class="number">
-						<text class="number-left">{{ 1 * list.data.cost }}</text>
-						<text class="number-right">{{ list.data.cost_money_type }}/份</text>
-					</view>
-					<view class="quotient"><text class="quotient-children">每轮限购1组,每组限购一份</text></view>
-				</view>
-				<image :src="list.data.background_image" style="width: 635rpx; height: 170rpx; margin: 40rpx 0;" mode=""></image>
-				<view class="shopBox-bottom">
-					<view class="forward">
-						<view class="forward-left"></view>
-						<view class="forward-right">每组分数:&nbsp 11份</view>
-					</view>
-					<view class="consume">
-						GAS消耗:
-						<text>{{ 1 * list.data.ticket }}{{ list.data.ticket_money_type }}</text>
-					</view>
-					<view class="appointmentTime">
-						预约开始时间:
-						<text>{{ item.start }}</text>
-					</view>
-					<view class="appointmentTime">
-						预约结束时间:
-						<text>{{ item.end }}</text>
-					</view>
-					<view class="lotteryTime">
-						开奖时间:
-						<text>{{ item.name }}</text>
-					</view>
-				</view>
-				<view class="btn-box flex" v-if="item.type == 1" @click="buy()"><view class="submit" >预约</view></view>
-				<view class="btn-box flex" v-else ><view class="submit1" >{{item.type == 2 ? '待上架' : '已开奖'}}</view></view>
-			</view>
-		</scroll-view>
-		<u-popup v-model="show" mode="bottom" border-radius="40" height="868rpx" :closeable="true">
-			<view class="yugo">
-				
-				<view class="Type flex" >
-					<view class="moneyName clamp" @click="moneyshow = true">{{moneyType[index].text}}</view>
-					<u-icon name="arrow-down-fill" color="#0F253A" size="10"></u-icon>
-				</view>
-				<view class="zhu">
-					注:每轮限购1组,每组限购1份
-					<span class="zhu-right">
-						最多可预约:
-						<span class="zhu-num">1份</span>
-					</span>
-				</view>
-				<view class="info-main">
-					<view class="info-box">
-						<view class="info-left">预约份数:</view>
-						<view class="info-right"><u-number-box :max="max" v-model="value" @change="valChange"></u-number-box></view>
-					</view>
-					<view class="info-box">
-						<view class="info-left">预约金额:</view>
-						<view class="info-right">{{ moneyType[index].money*1 }}{{moneyType[index].text}}</view>
-					</view>
-					<view class="info-box">
-						<view class="info-left">预约手续费:</view>
-						<view class="info-right">{{ souxu }}</view>
-					</view>
-				</view>
-				<view class="btn" @click="submit()">确定</view>
-			</view>
-		</u-popup>
-		<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>
-		<u-action-sheet :list="moneyType" v-model="moneyshow" @click="changeIndex"></u-action-sheet>
-	</view>
-</template>
-
-<script>
-import { lalaDetial, buylala } from '@/api/product.js';
-import { getTime } from '@/utils/rocessor.js';
-export default {
-	data() {
-		return {
-			loding: 'loading', //loading加载中 nomore没有数据
-			limit: 10,
-			page: 1,
-			id: '',
-			list: {
-				data: {
-					name: '',
-					cost: ''
-				}
-			},
-			history: false,
-			show: false, //支付数量
-			show1: false, //支付密码
-			moneyshow:false,//支付方式开关
-			moneyType:[{text:''}],//支付方式选择
-			index:0,//判断支付方式是那个
-			password: '',
-			value: 1,
-			money: '',
-			souxu: '',
-			max: 1
-		};
-	},
-	onLoad(option) {
-		this.id = option.id;
-		this.loadData();
-	},
-	methods: {
-		loadData() {
-			uni.showLoading({
-				title: '加载中'
-			});
-			const obj = this;
-			if (obj.loding == 'nomore') {
-				return;
-			}
-			lalaDetial(
-				{
-					page: obj.page,
-					limit: obj.limit
-				},
-				obj.id
-			)
-				.then(({ data }) => {
-					let date = data.open_times[0].name.split(" ")
-					data.open_times.forEach((e,index) => {
-						let end = getTime(e.value - data.close_join*60)
-						let type = 0 
-						if (index == 0) {
-							e.start = date[0] + ' ' + data.lala_pink_open +':00'
-						}else {
-							let i = index - 1
-							e.start = data.open_times[i].name
-						}
-						console.log();
-						
-						if (e.value == data.next_pink.value){
-							type = 1
-							console.log(1)
-						}else if(e.value > data.next_pink.value){
-							type = 2
-							console.log(2)
-						}else if(e.value < data.next_pink.value){
-							 type =3
-							console.log(3)
-						}
-						e.end = end
-						if(this.isToday(e.value*1000)){
-							e.ifShow = true;
-						}else{
-							e.ifShow = false;
-						}
-						e.type = type
-					})
-					obj.list = data;
-					obj.moneyType[0].text = obj.list.data.cost_money_type;
-					obj.moneyType[0].money = obj.list.data.cost;
-					if(obj.list.data.cost_money_type != obj.list.data.cost_2_money_type){
-						let shuj = []
-						shuj.money = obj.list.data.cost_2;
-						shuj.text = obj.list.data.cost_2_money_type;
-						console.log(shuj,'111')
-						obj.moneyType[1] = shuj
-						console.log(obj.moneyType,'123')
-					}
-					uni.hideLoading();
-				})
-				.catch(e => {
-					console.log(e);
-				});
-		},
-		// 弹出层选择事件
-		changeIndex(e) {
-			console.log(e);
-			this.index = e;
-		},
-		buy() {
-			this.money = 1 * this.list.data.cost + this.list.data.cost_money_type;
-			this.souxu = this.list.data.ticket + this.list.data.ticket_money_type;
-			this.show = true;
-		},
-		valChange(e) {},
-		submit() {
-			if (this.value == 0) {
-				this.$api.msg('预约份数不能为0');
-			} else {
-				this.show = false;
-				this.show1 = true;
-			}
-		},
-		cancel() {
-			this.password = '';
-			this.show1 = false;
-		},
-		pswQd() {
-			buylala(
-				{
-					trade_psw: this.password,
-					cost_type:this.moneyType[this.index].text
-				},
-				this.id
-			)
-				.then(e => {
-					this.password = '';
-					this.show1 = false;
-					console.log(e);
-				})
-				.catch(e => {
-					this.password = '';
-					this.show1 = false;
-					console.log(e);
-				});
-		},
-		isToday(str) {
-		    if (new Date(str).toDateString() === new Date().toDateString()) {
-				return true
-		    } else{
-		        return false
-		    }
-		}
-	}
-};
-</script>
-
-<style lang="scss">
-.shopBox {
-	padding: 0 30rpx;
-	margin: 0 auto;
-	margin-top: 60rpx;
-	width: 690rpx;
-	// height: 770rpx;
-	background: #ffffff;
-	box-shadow: 0rpx 0rpx 17rpx 0rpx rgba(0, 0, 0, 0.05);
-	border-radius: 10px;
-
-	.shopBox-top {
-		padding-top: 26rpx;
-		justify-content: space-between;
-		align-items: center;
-		.left-box {
-			justify-content: flex-start;
-			align-items: center;
-			.left-bg {
-				height: 46rpx;
-				width: 48rpx;
-				image {
-					width: 100%;
-					height: 100%;
-				}
-			}
-			.one {
-				margin-left: 10rpx;
-				font-size: 34rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #0f253a;
-			}
-			.two {
-				margin-left: 10rpx;
-				font-size: 26rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #6d7c88;
-			}
-		}
-		
-
-		#three {
-			font-size: 26rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #ff4c4c;
-		}
-	}
-
-	.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;
-			}
-		}
-	}
-
-	.forward {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-
-		.forward-left {
-			font-size: 26rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #44969d;
-		}
-
-		.forward-right {
-			font-size: 24rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #6d7c88;
-		}
-	}
-	.consume,
-	.appointmentTime,
-	.lotteryTime {
-		margin: 12rpx 0;
-		font-size: 26rpx;
-		font-family: PingFang SC;
-		font-weight: 400;
-		color: #6d7c88;
-	}
-	.consume > text,
-	.appointmentTime > text,
-	.lotteryTime > text {
-		font-size: 24rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: #000000;
-	}
-	.submit {
-		width: 600px;
-		height: 70rpx;
-		background: linear-gradient(90deg, #60bab0, #45969b);
-		border-radius: 35rpx;
-		font-size: 32rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: #ffffff;
-		text-align: center;
-		line-height: 70rpx;
-		margin: 40rpx 10rpx;
-	}
-	.submit1 {
-		width: 600px;
-		height: 70rpx;
-		background: #ececec;
-		border-radius: 35rpx;
-		font-size: 32rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: #999999;
-		text-align: center;
-		line-height: 70rpx;
-		margin: 40rpx 10rpx;
-	}
-}
-.yugo {
-	padding-top: 80rpx;
-	position: relative;
-	height: 100%;
-	.Type {
-		border-top: 1px solid #eeeeee;
-		padding: 20rpx $page-row-spacing;
-		justify-content: start;
-		.moneyName {
-			font-size: 30rpx;
-			font-weight: 500;
-			color: $font-color-dark;
-			margin: 0 20rpx;
-		}
-	
-		.input {
-			flex-grow: 1;
-			height: 45rpx;
-			line-height: 45rpx;
-			margin-left: 40rpx;
-			color: $font-color-light;
-			border-bottom: 1px solid $border-color-light;
-		}
-	
-		.line {
-			width: 2rpx;
-			background-color: $font-color-dark;
-			margin: 0 10rpx;
-			height: 30rpx;
-		}
-	}
-	.zhu {
-		height: 112rpx;
-		border-top: 1px #eeeeee solid;
-		border-bottom: 1px #eeeeee solid;
-		line-height: 112rpx;
-		padding: 0 32rpx;
-		font-size: 28rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: #6d7c88;
-		.zhu-right {
-			display: inline-block;
-			padding-left: 60rpx;
-		}
-		.zhu-num {
-			color: #000000;
-		}
-	}
-	.info-main {
-		padding: 0 32rpx;
-		.info-box {
-			padding-top: 22rpx;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			.info-left {
-				font-size: 28rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #6d7c88;
-			}
-			.info-right {
-				font-size: 28rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #0f253a;
-			}
-		}
-	}
-	.btn {
-		position: absolute;
-		bottom: 50rpx;
-		left: 50%;
-		margin-left: -342rpx;
-		width: 684rpx;
-		height: 86rpx;
-		background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
-		border-radius: 10rpx;
-		text-align: center;
-		line-height: 86rpx;
-		font-size: 36rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: #ffffff;
-	}
-}
-.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>

+ 180 - 99
pages/index/index.vue

@@ -12,36 +12,33 @@
 		<view class="swiper-dot">
 			<template v-for="item in swiperLength">
 				<view class="swiper-dots-item" :key="item" :class="{ action: swiperCurrent + 1 === item }"></view>
-			</template> 
+			</template>
 		</view>
 		<view class="main">
-			<view class="main-item" v-for="(item,index) in main" :key="index">
-				<view class="pic">
-					<image :src="item.pic" mode=""></image>
-				</view>
-				<view class="main-name">
-					{{item.name}}
-				</view>
+			<view class="main-item" v-for="(item, index) in main" :key="index" @click="nav(item.url)">
+				<view class="pic"><image :src="item.pic" mode=""></image></view>
+				<view class="main-name">{{ item.name }}</view>
 			</view>
 		</view>
 		<!-- 商品栏 -->
 		<view class="commodity">
-			<view class="commodity-item" v-for="(item,index) in commodityList">
+			<view class="commodity-item" v-for="(item, index) in commodityList">
 				<view class="commodity-prc">
 					<image src="" mode=""></image>
 					<view class="fanli" v-if="item.type == 1">
-						<image src="../../static/img/index-fanl.png" mode=""></image>
+						<view class="fanli-bg"><image src="../../static/img/index-fanl.png" mode=""></image></view>
+						<view class="fanli-font flex">
+							<view class="font-left">购物最高可返消费金额的</view>
+							<view class="font-right">10<text>%</text></view>
+						</view>
 					</view>
 				</view>
 				<view class="commodity-info">
-					<view class="commodity-name clamp">
-						{{item.name}}
-					</view>
-					<view class="commodity-systom clamp">
-						{{item.systom}}
-					</view>
+					<view class="commodity-name clamp">{{ item.name }}</view>
+					<view class="commodity-systom clamp">{{ item.systom }}</view>
 					<view class="commodity-price">
-						¥{{item.price}}<text>¥{{item.price}}</text>
+						¥{{ item.price }}
+						<text>¥{{ item.price }}</text>
 					</view>
 				</view>
 			</view>
@@ -52,79 +49,95 @@
 import { lala, lalaDetial, buylala } from '@/api/product.js';
 import { getTime } from '@/utils/rocessor.js';
 import { loadIndexs } from '@/api/user.js';
+import { saveUrl,interceptor } from '@/utils/loginUtils.js';
+import { mapState,mapMutations } from 'vuex';
 export default {
+	computed: {
+		...mapState('user',['userInfo', 'baseURL', 'hasLogin', 'urlFile'])
+	},
 	data() {
 		return {
-			carouselList:[],
-			main:[{
-				name:'自动拼团',
-				pic:'../../static/icon/index1.png',
-				type:1
-			},
-			{
-				name:'11人团专区',
-				pic:'../../static/icon/index2.png'
-			},
-			{
-				name:'拼团合伙人',
-				pic:'../../static/icon/index3.png'
-			},
-			{
-				name:'素材分享',
-				pic:'../../static/icon/index4.png'
-			},
-			{
-				name:'邀请有礼',
-				pic:'../../static/icon/index5.png'
-			},
-			{
-				name:'拼购福利',
-				pic:'../../static/icon/index6.png'
-			},
-			{
-				name:'互助专区',
-				pic:'../../static/icon/index7.png'
-			},
-			{
-				name:'签到领钱',
-				pic:'../../static/icon/index8.png'
-			},
-			{
-				name:'服务器兑换',
-				pic:'../../static/icon/index9.png'
-			},
-			{
-				name:'话费充值',
-				pic:'../../static/icon/index10.png'
-			},
+			carouselList: [],
+			main: [
+				{
+					name: '自动拼团',
+					pic: '../../static/icon/index1.png',
+					url:'/pages/index/appointment'
+				},
+				{
+					name: '11人团专区',
+					pic: '../../static/icon/index2.png',
+					url:'/pages/product/ping'
+				},
+				{
+					name: '拼团合伙人',
+					pic: '../../static/icon/index3.png',
+					url:'/pages/index/node'
+				},
+				{
+					name: '素材分享',
+					pic: '../../static/icon/index4.png',
+					url:''
+				},
+				{
+					name: '邀请有礼',
+					pic: '../../static/icon/index5.png',
+					url:'/pages/user/shareQrCode'
+				},
+				{
+					name: '拼购福利',
+					pic: '../../static/icon/index6.png',
+					url:'/pages/user/fulilist'
+				},
+				{
+					name: '互助专区',
+					pic: '../../static/icon/index7.png',
+					url:'/pages/assets/logroll'
+				},
+				{
+					name: '签到领钱',
+					pic: '../../static/icon/index8.png',
+					url:'/pages/index/sign'
+				},
+				{
+					name: '服务器兑换',
+					pic: '../../static/icon/index9.png',
+					url:'/pages/market/market'
+				},
+				{
+					name: '话费充值',
+					pic: '../../static/icon/index10.png',
+					url:'/pages/money/phone'
+				}
 			],
 			swiperLength: 0,
 			swiperCurrent: 0,
-			commodityList:[{
-				name:'古驰马衔扣单肩包',
-				systom:'1955系列单肩包女包',
-				price:'2690.32',
-				type:1
-			},
-			{
-				name:'古驰马衔扣单肩包',
-				systom:'1955系列单肩包女包',
-				price:'2690',
-				type:0
-			},
-			{
-				name:'古驰马衔扣单肩包',
-				systom:'1955系列单肩包女包',
-				price:'2690',
-				type:0
-			},
-			{
-				name:'古驰马衔扣单肩包',
-				systom:'1955系列单肩包女包',
-				price:'2690',
-				type:1
-			},
-			],
+			commodityList: [
+				{
+					name: '古驰马衔扣单肩包',
+					systom: '1955系列单肩包女包',
+					price: '2690.32',
+					type: 1
+				},
+				{
+					name: '古驰马衔扣单肩包',
+					systom: '1955系列单肩包女包',
+					price: '2690',
+					type: 0
+				},
+				{
+					name: '古驰马衔扣单肩包',
+					systom: '1955系列单肩包女包',
+					price: '2690',
+					type: 0
+				},
+				{
+					name: '古驰马衔扣单肩包',
+					systom: '1955系列单肩包女包',
+					price: '2690',
+					type: 1
+				}
+			]
 		};
 	},
 	//页面加载即刻发生
@@ -133,18 +146,43 @@ export default {
 	},
 	methods: {
 		async loadDate() {
-			const obj = this
+			const obj = this;
 			loadIndexs({}).then(({ data }) => {
-					console.log(data);
-					obj.carouselList = data.banner;
-					obj.swiperLength = data.banner.length;
-				})
+				console.log(data);
+				obj.carouselList = data.banner;
+				obj.swiperLength = data.banner.length;
+			});
 		},
 		//轮播图切换修改背景色
 		swiperChange(e) {
 			const index = e.detail.current;
 			this.swiperCurrent = index;
 		},
+		nav(url){
+			if (!this.hasLogin) {
+				uni.showModal({
+					title: '登录',
+					content: '您未登录,是否马上登陆?',
+					success: e => {
+						if (e.confirm) {
+							interceptor();
+						}
+					},
+					fail: e => {
+						console.log(e);
+					}
+				});
+				return;
+			}
+			uni.navigateTo({
+				url,
+				fail (error) {
+				    uni.switchTab({
+				       url
+				    });
+				}
+			});
+		}
 	}
 };
 </script>
@@ -160,14 +198,14 @@ export default {
 }
 .top {
 	width: 100%;
-	height: 338rpx;
+	height: 368rpx ;
 	position: relative;
 	.top-bg {
 		position: absolute;
 		top: 0;
 		left: 0;
 		width: 100%;
-		height: 338rpx;
+		height: 368rpx;
 		image {
 			width: 100%;
 			height: 100%;
@@ -178,7 +216,7 @@ export default {
 	width: 700rpx;
 	height: 300rpx;
 	border-radius: 14rpx;
-	margin: -200rpx auto 0;
+	margin: -180rpx auto 0;
 	.bor {
 		border-radius: 14rpx;
 		.carousel-item {
@@ -225,7 +263,7 @@ export default {
 		.pic {
 			width: 64rpx;
 			height: 64rpx;
-			image{
+			image {
 				width: 100%;
 				height: 100%;
 			}
@@ -237,7 +275,7 @@ export default {
 			color: #333333;
 			margin-top: 10rpx;
 		}
-	} 
+	}
 }
 .commodity {
 	padding: 36rpx 14rpx;
@@ -246,14 +284,57 @@ export default {
 	flex-wrap: wrap;
 	.commodity-item {
 		width: 348rpx;
-		background: #FFFFFF;
+		background: #ffffff;
 		box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
-		margin:10rpx 6rpx 0;
+		margin: 10rpx 6rpx 0;
 		border-radius: 10rpx;
 		.commodity-prc {
-			width: 345rpx;
-			height: 345rpx;
+			width: 344rpx;
+			height: 344rpx;
 			border-radius: 10rpx;
+			position: relative;
+			image {
+				width: 100%;
+				height: 100%;
+			}
+			.fanli {
+				position: absolute;
+				bottom: 0;
+				left: 0;
+				width: 344rpx;
+				height: 96rpx;
+				.fanli-bg{
+					position: absolute;
+					bottom: 0;
+					left: 0;
+					width: 344rpx;
+					height: 96rpx;
+				}
+				.fanli-font {
+					position: relative;
+					z-index: 10;
+					color: #FFFFFF;
+					height: 96rpx;
+					align-items: flex-end;
+					padding: 36rpx 10rpx 10rpx;
+					.font-left {
+						width: 226px;
+						font-size: 20rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #FFFFFF;
+					}
+					.font-right {
+						font-size: 62rpx;
+						font-family: Microsoft YaHei;
+						font-weight: bold;
+						color: #FFFFFF;
+						text {
+							font-size: 26rpx;
+						}
+					}
+				}
+			}
 		}
 		.commodity-info {
 			padding: 28rpx 20rpx 35rpx 24rpx;
@@ -276,7 +357,7 @@ export default {
 				font-size: 36rpx;
 				font-family: PingFang SC;
 				font-weight: bold;
-				color: #E83F30;
+				color: #e83f30;
 				text {
 					display: inline-block;
 					padding-left: 6rpx;

+ 5 - 5
pages/index/info.vue

@@ -461,7 +461,7 @@ page {
 .bg {
 	width: 750rpx;
 	height: 248rpx;
-	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+	background: linear-gradient(30deg, #2E58FF, #33EEFF);
 	border-bottom-left-radius: 150rpx;
 	border-bottom-right-radius: 150rpx;
 }
@@ -499,7 +499,7 @@ page {
 		font-size: 36rpx;
 		font-family: PingFang SC;
 		font-weight: bold;
-		color: #44969d;
+		color: #2E58FF;
 		margin-top: 30rpx;
 	}
 	.item {
@@ -561,7 +561,7 @@ page {
 	width: 690rpx;
 	height: auto;
 	background: #ffffff;
-	border: 2rpx solid #44969d;
+	border: 2rpx solid #2E58FF;
 	box-shadow: 0px 0px 16rpx 0px rgba(0, 0, 0, 0.05);
 	overflow: hidden;
 	border-radius: 20rpx;
@@ -573,7 +573,7 @@ page {
 		overflow: hidden;
 		width: 100%;
 		height: 70rpx;
-		border-bottom: 2rpx solid #44969d;
+		border-bottom: 2rpx solid #2E58FF;
 		.tabBox-item:last-child {
 			border-right: none;
 		}
@@ -581,7 +581,7 @@ page {
 			overflow: hidden;
 			text-align: center;
 			line-height: 70rpx;
-			border-right: 2rpx solid #44969d;
+			border-right: 2rpx solid #2E58FF;
 			font-size: 22rpx;
 			font-family: PingFang SC;
 			font-weight: bold;

+ 0 - 88
pages/index/nodeList.vue

@@ -1,88 +0,0 @@
-<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
-			}).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>

+ 386 - 0
pages/index/sign.vue

@@ -0,0 +1,386 @@
+<template>
+	<view class="center">
+		<view class="status_bar"><!-- 这里是状态栏 --></view>
+		<view class="content-money">
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">每日签到</view>
+			</view>
+			<view class="content-bg"><image src="../../static/img/sign-bg.png" mode=""></image></view>
+			<view class="sign" @click="integral()">
+				<image class="sign-bg" src="../../static/img/sign-main.png" mode=""></image>
+				<view class="sign-font">{{ signTrue ? '已签到' : '签到' }}</view>
+			</view>
+			<view class="sign-tip">今日签到可得10购物积分</view>
+		</view>
+		<view class="nav">
+			<view class="nav-item">
+				<view class="num">{{ sum_integral }}</view>
+				<view class="font">获得金额</view>
+			</view>
+			<view class="xian"></view>
+			<view class="nav-item">
+				<view class="num">{{ allSign }}</view>
+				<view class="font">签到天数</view>
+			</view>
+		</view>
+		<view class="rili"><calendar class="sign-date-box" :checks="signList" checksClass="" :checkTextShow="true"></calendar></view>
+		<!-- <view class="explain">
+			<view class="explain-left">
+				签到说明
+			</view>
+			<view class="explain-right">
+			</view>
+		</view> -->
+		<uni-popup ref="popup" type="center">
+			<view class="popup">
+				<view class="popup-dox"><image class="popup-logo" src="../../static/img/sign-popup.png"></image></view>
+				<view class="popup-title">
+					获得¥
+					<text>10</text>
+					现金
+				</view>
+				<view class="popup-tip">
+					明天签到可得¥
+					<text>10</text>
+					现金
+				</view>
+				<view class="popup-btn" @click="close">知道了</view>
+			</view>
+			<view class="close_icon" @click="close"><image src="../../static/img/Close.png"></image></view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+import uniPopup from '@/components/uni-popup/uni-popup.vue';
+import calendar from '../../components/ss-calendar/ss-calendar.vue';
+import { signList, integral, signUser } from '@/api/functionalUnit.js';
+export default {
+	components: {
+		calendar,
+		uniPopup
+	},
+	data() {
+		return {
+			money: '', //保存当前月份
+			year: '', //保存当前年份
+			day: '', //保存当前日期
+			signList: [], //签到日子列表
+			actionDay: 0, //连续签到天数
+			allSign: 0, //累计签到
+			sum_integral: 0, //累计获得积分
+			signTrue: false
+		};
+	},
+	onLoad() {
+		this.signUser();
+		this.getData();
+		this.loadList();
+	},
+	methods: {
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		integral() {
+			integral({})
+				.then(e => {
+					this.$refs.popup.open();
+					// 改为已签到
+					this.signTrue = true;
+					this.actionDay++;
+					// 保存签到成功
+					this.signList.push(this.day);
+				})
+				.catch(e => {
+					this.$refs.popup.open();
+					console.log(e);
+				});
+		},
+		close() {
+			this.$refs.popup.close();
+		},
+		// 获取签到列表
+		loadList() {
+			let obj = this;
+			let present = this.day; //保存当前天数用于后续计算
+			let actionDay = 0; //用于计算活跃天数
+			let arr = []; //保存返回数组;
+			signList({
+				page: 1,
+				limit: 31
+			}).then(e => {
+				arr = e.data.map((e, ind) => {
+					let time = e.add_time.split('-');
+					let day = parseInt(time[2].replace(/^0/i, ''));
+					let year = time[0];
+					let month = +time[1];
+					if (obj.year == year && obj.month == month) {
+						return day;
+					}
+				});
+				this.signList = arr;
+				// 判断今天是否已经签到
+				if (arr[0] == this.day) {
+					this.signTrue = true;
+				}
+			});
+		}, // 获取当前时间
+		getData(current) {
+			const date = current ? new Date(current) : new Date();
+			this.year = date.getFullYear(); //保存当前年份
+			this.month = date.getMonth() + 1; //保存当前月份
+			this.day = date.getDate(); //保存当前日期
+		},
+		//获取签到用户信息
+		signUser() {
+			signUser({ all: 1 }).then(({ data }) => {
+				this.actionDay = data.sign_num; //连续签到天数
+				this.allSign = data.sum_sgin_day; //累计签到天数
+				this.sum_integral = data.sum_integral; //累计总积分
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.center,
+page {
+	padding-bottom: 20rpx;
+}
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+.content-money {
+	padding-bottom: 30rpx;
+	position: relative;
+	height: 526rpx;
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 526rpx;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+	.sign {
+		width: 200rpx;
+		height: 200rpx;
+		margin: 40rpx auto 0;
+		text-align: center;
+		position: relative;
+		z-index: 10;
+		.sign-bg {
+			position: absolute;
+			top: 0;
+			left: 0;
+			right: 0;
+			width: 100%;
+			height: 100%;
+		}
+		.sign-font {
+			position: relative;
+			z-index: 11;
+			line-height: 200rpx;
+			font-size: 46rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #ffffff;
+		}
+	}
+	.sign-tip {
+		margin: 14rpx auto 0;
+		font-size: 32rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #ffffff;
+		position: relative;
+		z-index: 10;
+		text-align: center;
+	}
+}
+.nav {
+	position: relative;
+	z-index: 10;
+	width: 710rpx;
+	height: 192rpx;
+	display: flex;
+	align-items: center;
+	background: #ffffff;
+	border-radius: 10rpx;
+	margin: -86rpx auto 0;
+	.nav-item {
+		width: 50%;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		line-height: 1;
+		.num {
+			font-size: 56rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #666666;
+		}
+		.font {
+			margin-top: 28rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			opacity: 0.6;
+		}
+	}
+	.xian {
+		width: 2rpx;
+		height: 152rpx;
+		background-color: #efefef;
+	}
+}
+
+.explain {
+	margin: 20rpx auto 0;
+	padding: 24rpx 28rpx;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	width: 694rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	.explain-left {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+	.explain-right {
+		position: relative;
+		bottom: 14rpx;
+		right: 28rpx;
+	}
+	.explain-right:after,
+	.explain-right:before {
+		border: 12rpx solid transparent;
+		border-left: 12rpx solid #fff;
+		width: 0;
+		height: 0;
+		position: absolute;
+		top: 0;
+		right: -20px;
+		content: ' ';
+	}
+
+	.explain-right:before {
+		border-left-color: #333333;
+		right: -21px;
+	}
+}
+.popup {
+	width: 560rpx;
+	padding-bottom: 45rpx;
+	background-color: #ffffff;
+	border-radius: 15rpx;
+	text-align: center;
+	line-height: 1;
+	.popup-dox {
+		position: relative;
+		.popup-logo {
+			margin: -160rpx auto 0;
+			width: 400rpx;
+			height: 200rpx;
+		}
+	}
+	.popup-title {
+		margin-top: 85rpx;
+		font-size: 40rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #2a2a2a;
+		text {
+			font-size: 56rpx;
+			color: #e83f30;
+		}
+	}
+	.popup-tip {
+		margin-top: 20rpx;
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #8c8c8c;
+		text {
+			color: #e83f30;
+		}
+	}
+	.popup-btn {
+		margin: 58rpx auto 0;
+		width: 270rpx;
+		height: 66rpx;
+		background: #f0c838;
+		border-radius: 34rpx;
+		text-align: center;
+		line-height: 66rpx;
+		font-size: 36rpx;
+		font-family: Source Han Sans CN;
+		font-weight: 500;
+		color: #ffffff;
+	}
+}
+.close_icon {
+	width: 60rpx;
+	height: 60rpx;
+	margin: 88rpx auto 0;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+.rili {
+	margin-top: 20rpx;
+	padding: 0 20rpx;
+}
+</style>

+ 0 - 91
pages/index/teachD.vue

@@ -1,91 +0,0 @@
-<template>
-	<view class="center">
-		<view class="bg">
-			<image :src="src" mode=""></image>
-		</view>
-		<view class="title">
-			{{ title }}
-		</view>
-		<view v-html="synopsis" class="content">
-			{{ synopsis }}
-		</view>
-	</view>
-</template>
-
-<script>
-import { details } from '@/api/product.js'
-export default {
-	data(){
-		return{
-			src: '',
-			title: '',
-			synopsis:'',
-			time:'',
-		}
-	},
-	onLoad(option) {
-		this.loadData(option.id);
-	},
-	methods: {
-		async loadData(id){
-			let obj = this;
-			details({},id).then(e =>{
-				console.log(e);
-				obj.src = e.data.image_input[0];
-				obj.title = e.data.title;
-				obj.synopsis = e.data.content
-				obj.time = e.data.add_time;
-			})
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-	.center{
-		height: 100%;
-	}
-	.bg{
-		width: 100%;
-		height: 474rpx;
-		image{
-			width: 100%;
-			height: 100%;
-		}
-	}
-	.title{
-		width: 90%;
-		margin: 0 auto;
-		font-size: 40rpx;
-		font-weight: 500;
-		color: #171313;
-		text-overflow: -o-ellipsis-lastline;
-		overflow: hidden;
-		display: -webkit-box;
-		-webkit-line-clamp: 2;
-		-webkit-box-orient: vertical;
-	}
-	.time {
-		width: 90%;
-		margin: 0 auto;
-		margin-top: 16rpx;
-		font-size: 24rpx;
-		font-weight: 500;
-		color: #656b6c;
-	}
-	.content{
-		width: 90%;
-		margin:0 auto;
-		margin-top: 20rpx;
-		font-size: 32rpx;
-		font-weight: 500;
-		color:#777777;
-	}
-	/deep/ .content{
-		img{
-			width: 100%;
-			height: 100%;
-		}
-	}
-</style>
-

+ 0 - 88
pages/index/teachList.vue

@@ -1,88 +0,0 @@
-<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,
-			},3).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>

+ 95 - 339
pages/market/details.vue

@@ -1,134 +1,29 @@
 <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 class="center">
+		<view class="top"><image src="" mode=""></image></view>
+		<view class="name-box">
+			<view class="price-box">
+				兑换价:
+				<text class="price">9800</text>
+				<text class="unit">拼团积分</text>
+				<text class="yuan">¥229</text>
 			</view>
+			<view class="name clamp">拼购IPFS服务器 紫盘 4TB 移动监控服务器</view>
 		</view>
-		<view class="list">
-			<view class="explain"><rich-text :nodes="list.detail"></rich-text></view>
+		<view class="tip-box">
+			<view class="tip-titele">兑换须知</view>
+			<view class="tip-main">兑换说明详细介绍兑换说明详细介绍兑换兑换说明详细介绍兑换说明详细介绍兑换说明详细介绍</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 class="detail">
+			<view class="detail-title">
+				商品详情
 			</view>
-			<view class="flex money-box">
-				<view class="money-name">金额</view>
-				<view class="money-num">{{ money * 1 }}{{ list._cost_money_type }}</view>
+			<view class="systom">
+				
 			</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 class="btn" @click="buy()">
+			立即兑换
 		</view>
 	</view>
 </template>
@@ -153,27 +48,9 @@ export default {
 			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: {
@@ -268,218 +145,97 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-page {
-	min-height: 100%;
-	background-color: #ffffff;
-	.container {
-		width: 100%;
-	}
+page,
+.center {
+	background: #f8f6f6;
+	height: 100%;
 }
-.list-box {
-	// background-color: #5771df;
-	width: 100%;
-	height: 100rpx;
+.top {
+	background: #45969B;
+	width: 750rpx;
+	height: 710rpx;
 }
-.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;
+.name-box {
+	padding: 30rpx 26rpx;
+	line-height: 1;
+	background-color: #FFFFFF;
+	.price-box {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
 		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;
+		.price {
+			font-size: 48rpx;
+			color: #E83F30;
 		}
-		.tpls {
-			color: #faba38;
+		.unit {
+			display: inline-block;
+			padding-left: 10rpx;
+			color: #E83F30;
 		}
-	}
-	.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;
-			}
+		.yuan {
+			
+			padding-left: 10rpx;
+			font-size: 30rpx;
+			font-weight: 500;
+			text-decoration: line-through;
+			color: #999999;
 		}
 	}
-	.pay-box {
+	.name {
+		font-size: 34rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #1D2023;
+		margin-top: 30rpx;
+	}
+}
+.tip-box {
+	margin-top: 20rpx;
+	padding: 34rpx 90rpx 50rpx 30rpx;
+	display: flex;
+	align-items: flex-start;
+	background-color: #FFFFFF;
+	.tip-titele {
 		font-size: 32rpx;
-		font-weight: 500;
-		color: #333333;
-		padding-bottom: 60rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #3B3B3B;
 	}
-	.tips {
+	.tip-main {
+		margin-left: 30rpx;
+		width: 467rpx;
 		font-size: 26rpx;
+		font-family: PingFang SC;
 		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;
+		color: #8A8A8A;
 	}
 }
-.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;
+.detail {
+	.detail-title{
+		width: 750rpx;
+		height: 80rpx;
+		line-height: 80rpx;
 		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-size: 28rpx;
+		font-family: PingFangSC;
 		font-weight: bold;
-		view {
-			margin: 0 40rpx;
-		}
-		.action {
-			color: #000;
-			border-bottom: 3px #cc6551 solid;
-		}
+		color: #1D2023;
 	}
 }
-
-.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;
-			}
-			
-		}
-	}
+.btn {
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	width: 750rpx;
+	height: 98rpx;
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
+	text-align: center;
+	line-height: 98rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #FFFFFF;
 }
 </style>

+ 3 - 3
pages/market/duihuan.vue

@@ -165,7 +165,7 @@ export default {
 				font-weight: bold;
 				color: #000000;
 				span {
-					color: #44969d;
+					color: #2E58FF;
 				}
 			}
 			.zong {
@@ -191,7 +191,7 @@ export default {
 		font-weight: 500;
 		color: #6d7c88;
 		span {
-			color: #44969d;
+			color: #2E58FF;
 		}
 	}
 }
@@ -199,7 +199,7 @@ export default {
 	margin: 130rpx auto;
 	width: 674rpx;
 	height: 88rpx;
-	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
 	border-radius: 44rpx;
 	font-size: 36rpx;
 	font-family: PingFang SC;

+ 195 - 453
pages/market/market.vue

@@ -1,519 +1,261 @@
 <template>
 	<view class="container">
-		<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"
-					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 === 'FIL'"
-				>
-					{{ ls.name }}
-				</view>
-			</scroll-view>
-			<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':tabCurrent==4}">分类名称</view> -->
+		<view class="status_bar"><!-- 这里是状态栏 --></view>
+		<view class="content-money">
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">服务器兑换</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="flex">
-					<view>
-						<view class="cell-title flex">
-							<image :src="ls.logo"></image>
-							<view class="title">{{ ls.name }}</view>
-						</view>
-						<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-tag">特价</view> -->
-							</template>
+			<view class="content-bg"><image src="../../static/img/fwq-bg.png" mode=""></image></view>
+			<view class="money">
+				<view class="num">2600</view>
+				<view class="font">我的购物积分</view>
+				<view class="all" @click="nav('/pages/money/integralShopping')">查看明细</view>
+			</view>
+		</view>
+		<view class="main">
+			<view class="main-title">
+				<image src="../../static/icon/f-l.png" mode=""></image>
+				<view class="title-font">热门兑换</view>
+				<image src="../../static/icon/f-r.png" mode=""></image>
+			</view>
+			<view class="main-box">
+				<view class="main-item" v-for="(item, index) in 10" :key="index">
+					<view class="item-bg"><image src="" mode=""></image></view>
+					<view class="item-info">
+						<view class="item-name">拼购IPFS服务器</view>
+						<view class="item-tip">合约周期:1080天+180天</view>
+						<view class="item-tip">有效空间:1T</view>
+						<view class="price">
+							9800
+							<text>拼团积分</text>
 						</view>
+						<view class="btn" @click="go()">立即兑换</view>
 					</view>
-					<image v-if="ls.stock == 0" class="all-list" src="../../static/img/img51.png"></image>
-				</view>
-				<view class="flex cell-tpl">
-					<view class="tpl">
-						<view class="">单价</view>
-						<view class="" v-if="ls.get_money_type == 'BZZ'">{{ ls._cost_money }}/节点</view>
-						<view class="" v-else>{{ ls._cost_money }}/T</view>
-					</view>
-					<view class="tpl">
-						<view class="">有效算力</view>
-						<view class="" v-if="ls.get_money_type == 'BZZ'">{{ ls.step }}节点</view>
-						<view class="" v-else>{{ ls.step }}T</view>
-					</view>
-					<view class="tpl">
-						<view class="">合约周期</view>
-						<view class="">{{ ls.first_step_time + ls.second_step_time }}天 + {{ ls.third_step_time }}天</view>
-					</view>
-					<!-- <view class="tpl">
-						<view class="">上架期</view>
-						<view class="">{{ ls.stand_time }}天</view>
-					</view> -->
-				</view>
-				<view class="cell-info flex">
-					<view class="tip">剩余数量:{{ ls | dataStock }}</view>
-					<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="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>
-		<uni-popup ref="popup" type="center">
-			<view class="popup">
-				<view class="cancel flex" @click="close">
-					<view></view>
-					<view class="tip">x</view>
-				</view>
-				<view class="list-box">
-					<view class="popup-text">购买数量:</view>
-					<view class="password"><input type="number" v-model="num" /></view>
-					<view class="popup-text">支付密码:</view>
-					<view class="password"><input type="password" v-model="password" /></view>
-					<view class="confirm-btn" @click="pay"><text>确认购买</text></view>
-				</view>
-			</view>
-		</uni-popup>
 	</view>
 </template>
 <script>
 import { mining, buyMining } from '@/api/market.js';
 import { wallet } from '@/api/finance.js';
 export default {
-	filters: {
-		dataStock: function(ls) {
-			let type = 'T';
-			// if (+ls.stock >= 1024) {
-			// 	// type = 'P';
-			// 	return `${ls.stock/1024 }/${ls.all_stock/1024 }${type}`;
-			// } else {
-			// 	return `${ls.stock}/${ls.all_stock}${type}`;
-			// }
-			return `${+ls.stock}${type}/${+ls.all_stock}${type}`;
-		}
-	},
 	data() {
 		return {
 			tabCurrent: '全部',
 			tabType: 1,
-			moneyTypeList: [],
 			list: [],
 			buyId: '',
 			password: '',
 			num: ''
 		};
 	},
-	onLoad(option) {
-		this.moneyType();
-		this.loadData();
-	},
+	onLoad(option) {},
 	onShow() {},
 	//下拉刷新
 	onPullDownRefresh() {
 		this.moneyType();
 	},
 	methods: {
-		// 所有币种
-		async moneyType() {
-			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');
-			});
-		},
-		// 请求载入数据
-		async loadData() {
-			let obj = this;
-			uni.showLoading({
-				title: '加载中...'
-			});
-			if (obj.tabCurrent === '全部') {
-				obj.list = [];
-				mining({
-					page: 1,
-					limit: 1000
-				}).then(({ data }) => {
-					uni.hideLoading();
-					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({
-				// 			page:1,
-				// 			limit:1000,
-				// 			type: obj.tabType,
-				// 			get_money_type: obj.moneyTypeList[i].code
-				// 		}).then(({ data }) => {
-				// 			console.log(data)
-				// 			let arr = 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;
-				// 			});
-				// 			obj.list = obj.list.concat(arr)
-				// 			// console.log( obj.list.length)
-				// 			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++) {
-				// 					if (obj.list[i].step > obj.list[j].step) {
-				// 						let z = obj.list[i];
-				// 						obj.list[i] = obj.list[j];
-				// 						obj.list[j] = z;
-				// 					}
-				// 				}
-				// 			}
-				// 			// console.log(obj.list, 'new obj.list-------------')
-				// 			uni.hideLoading();
-
-				// 		})
-				// 	}
-
-				// }
-				// let len = obj.list.length;
-			} else {
-				mining({
-					page: 1,
-					limit: 1000,
-					type: obj.tabType,
-					get_money_type: obj.tabCurrent
-				}).then(({ data }) => {
-					console.log(data, '1111');
-					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++++++++++++');
-					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++) {
-							if (obj.list[i].step > obj.list[j].step) {
-								let z = obj.list[i];
-								obj.list[i] = obj.list[j];
-								obj.list[j] = z;
-							}
-						}
-					}
-
-					console.log(obj.list, 'new obj.list-------------');
-					uni.hideLoading();
-				});
-			}
-		},
-		ToBuy(ls) {
-			// let obj = this;
-			// obj.buyId = id;
-			// this.$refs.popup.open();
+		nav(url) {
 			uni.navigateTo({
-				url: '/pages/market/details?id=' + ls.id + '&type=' + ls.type
+				url
 			});
 		},
-		pay() {
-			let obj = this;
-			buyMining(
-				{
-					num: obj.num,
-					trade_psw: obj.password
-				},
-				obj.buyId
-			)
-				.then(({ data }) => {
-					obj.$api.msg('购买成功!');
-					obj.loadData();
-					obj.password = '';
-					obj.num = '';
-					obj.$refs.popup.close();
-				})
-				.catch(e => {
-					obj.loadData();
-					obj.password = '';
-					obj.num = '';
-					obj.$refs.popup.close();
-				});
-		},
-		close() {
-			this.$refs.popup.close();
+		go() {
+			uni.navigateTo({
+				url:'/pages/market/details'
+			})
 		},
-		tabClick(index, has_mining) {
-			if (index === '全部') {
-				console.log('ddddddddd');
-			}
-			if (has_mining == 0) {
-				this.$api.msg('敬请期待!');
-			} else {
-				this.tabCurrent = index;
-				this.loadData();
-			}
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({
+				
+			})
 		},
-		tabTypeClick(index) {
-			this.tabType = index;
-			this.loadData();
-		}
 	}
 };
 </script>
 
 <style lang="scss">
 page {
-	min-height: 100%;
-	background-color: #ffffff;
-	.container {
-		width: 100%;
-	}
-}
-.logo-img {
-	margin: 40rpx 6%;
-	width: 88%;
-	height: 209rpx;
-}
-.list-box {
-	.list-title {
-		overflow: hidden;
-		white-space: nowrap;
-		.title {
-			display: inline-block;
-			background-color: #44969d;
-			font-size: 30rpx;
-			font-weight: bold;
-			color: #ffffff;
-			width: 24.49%;
-			margin-right: 5rpx;
-			text-align: center;
-			line-height: 60rpx;
-		}
-		.blue {
-			background-color: #44969d;
-		}
-		.grey {
-			background-color: #dbdbdb !important;
-		}
-	}
-	.list-name {
-		padding: 24rpx 50rpx;
-		.name {
-			font-size: 28rpx;
-			margin-right: 15%;
-			font-weight: 500;
-			color: #666666;
-		}
-		.black {
-			color: #333333;
-			border-bottom: 2rpx solid #5771df;
-			padding-bottom: 10rpx;
-			font-size: 30rpx;
-			font-weight: bold;
-		}
-	}
+	background: #ffffff;
+	height: 100%;
 }
-.more {
-	color: #606266;
-	font-size: 24rpx;
-	font-weight: normal;
-	border-bottom: 1rpx solid #606266;
-}
-.all-list {
-	width: 180rpx;
-	height: 180rpx;
-	position: absolute;
-	top: 10rpx;
-	right: 10rpx;
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
 }
-.list-cell {
-	box-sizing: border-box;
-	width: 670rpx;
-	margin: 0 auto;
-	padding: 40rpx 40rpx;
-	border-radius: 30rpx 30rpx;
-	background: #f3feff;
-	margin-bottom: 20rpx;
+.content-money {
+	padding-bottom: 30rpx;
 	position: relative;
-	.cell-title {
-		padding: 29rpx 38rpx 29rpx 15rpx;
-		font-size: 38rpx;
-		font-weight: bold;
-		color: #333333;
+	height: 448rpx;
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 448rpx;
 		image {
-			width: 40rpx;
-			height: 40rpx;
-			margin-right: 15rpx;
+			width: 100%;
+			height: 100%;
 		}
 	}
-	.tags {
-		.cell-tip {
-			display: inline-block;
-			padding: 11rpx 18rpx 9rpx 20rpx;
-			font-size: 30rpx;
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
 			font-weight: bold;
-			color: #0ec1a1;
-			background-color: #e3f6fa;
-			border-radius: 24rpx 24rpx;
-			margin-right: 20rpx;
-			margin-top: 15rpx;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
 		}
-		.cell-tag {
-			display: inline-block;
-			margin-left: 20rpx;
-			padding: 4rpx 18rpx 3rpx 20rpx;
-			font-size: 30rpx;
-			font-weight: bold;
-			color: red;
-			// background-color: #fff;
-			// border-radius: 24rpx 24rpx;
-			border: 4rpx red solid;
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
 		}
-	}
 
-	.cell-tpl {
-		padding: 50rpx 0rpx 34rpx;
-		font-size: 30rpx;
-		font-weight: bold;
-		color: #333333;
-		line-height: 40rpx;
-		// text-align: center;
-	}
-	.cell-info {
-		.tip {
-			font-size: 34rpx;
-			font-weight: bold;
-			color: #44969d;
-			line-height: 55px;
-		}
-		.zhiya-btn {
-			background-color: #44969d;
-			width: 150rpx;
-			text-align: center;
-			line-height: 60rpx;
-			font-size: 26rpx;
-			border-radius: 50rpx;
-			color: #ffffff;
-		}
-		.grey {
-			background-color: #999999;
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
 		}
 	}
-	.luckbox {
-		margin-left: -40rpx;
-		width: 670rpx;
-		background: #7bbbc0;
-		border-radius: 0px 0px 10rpx 10rpx;
-		padding: 32rpx;
-		font-size: 24rpx;
+}
+.money {
+	position: relative;
+	z-index: 10;
+	padding-top: 64rpx;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	.num {
+		font-size: 84rpx;
+		font-family: PingFang SC;
+		font-weight: 800;
+		color: #ffffff;
+	}
+	.font {
+		font-size: 30rpx;
 		font-family: PingFang SC;
 		font-weight: 500;
-		color: #333333;
-		span {
-			font-size: 30rpx;
-			color: #ff0000;
-		}
+		color: #ffffff;
 	}
-}
-
-.empty-box {
-	width: 100%;
-	height: 500rpx;
-}
-//弹窗
-.popup {
-	background-color: #ffffff;
-	border-radius: 25rpx;
-	font-size: 30rpx;
-	.cancel {
-		text-align: center;
-		width: 100%;
+	.all {
+		margin-top: 20rpx;
+		width: 194rpx;
+		height: 60rpx;
 		line-height: 60rpx;
-		.tip {
-			background-color: #5771df;
-			color: #ffffff;
-			width: 70rpx;
-			height: 70rpx;
-			border-top-right-radius: 25rpx;
-		}
-	}
-	.list-box {
-		padding: 0rpx 80rpx;
-		.password {
-			padding: 50rpx 0rpx;
-			width: 100%;
-			input {
-				width: 70%;
-				height: 80rpx;
-				border: 2rpx solid #999999;
-				padding-left: 25rpx;
-				box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.27);
-				border-radius: 11rpx;
-			}
-		}
-		.confirm-btn {
-			padding-bottom: 120rpx;
-			padding-top: 30rpx;
-			text {
-				background-color: #44969d;
-				color: #ffffff;
-				width: 70%;
-				text-align: center;
-				padding: 25rpx 90rpx;
-				border-radius: 15rpx;
-			}
-		}
+		border: 1px solid #ffffff;
+		border-radius: 30rpx;
+		font-size: 26rpx;
+		font-family: SourceHanSansCN;
+		font-weight: 500;
+		color: #ffffff;
+		text-align: center;
 	}
 }
-.jg {
-	height: 20rpx;
-}
-.mini-list-cell {
-	padding: 0rpx 40rpx 10rpx;
-	.cell-tpl {
-		padding: 10rpx 0 8rpx;
-	}
-	.cell-info {
-		.tip {
+.main {
+	margin-top: 26rpx;
+	.main-title {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		image {
+			width: 24rpx;
+			height: 24rpx;
+		}
+		.title-font {
+			width: 170rpx;
 			font-size: 34rpx;
+			font-family: PingFang SC;
 			font-weight: bold;
-			color: #44969d;
-			opacity: 0;
-			line-height: 40px;
-		}
-		.zhiya-btn {
-			background-color: #44969d;
-			width: 150rpx;
+			color: #2E58FF;
 			text-align: center;
-			line-height: 60rpx;
-			font-size: 26rpx;
-			border-radius: 50rpx;
-			color: #ffffff;
 		}
-		.grey {
-			background-color: #999999;
+	}
+	.main-box {
+		padding: 16rpx 20rpx 70rpx;
+		.main-item {
+			margin-top: 20rpx;
+			background: #FFFFFF;
+			box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+			border-radius: 10rpx;
+			padding: 14rpx;
+			display: flex;
+			justify-content: flex-start;
+			.item-bg {
+				background: #82848A;
+				width: 260rpx;
+				height: 260rpx;
+				flex-shrink: 0;
+				image {
+					width: 100%;
+					height: 100%;
+				}
+			}
+			.item-info {
+				position: relative;
+				margin-left: 30rpx;
+				padding-top: 20rpx;
+				width: 100%;
+				.item-name {
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #333333;
+				}
+				.item-tip {
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #666666;
+				}
+				.price {
+					margin-top: 70rpx;
+					font-size: 40rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #E83F30;
+					text {
+						font-size: 22rpx;
+					}
+				}
+			}
+			.btn {
+				position: absolute;
+				right: 24rpx;
+				bottom: 34rpx;
+				width: 141rpx;
+				height: 50rpx;
+				background: linear-gradient(0deg, #2E58FF, #32C6FF);
+				border-radius: 25rpx;
+				text-align: center;
+				line-height: 50rpx;
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+			}
 		}
 	}
 }

+ 7 - 7
pages/market/myCalculation.vue

@@ -296,7 +296,7 @@ page {
 			padding: 0rpx 38rpx;
 			font-size: 24rpx;
 			font-weight: bold;
-			color: #0EC1A1;
+			color: #2E58FF;
 		}
 		.cell-tpl{
 			padding: 40rpx 31rpx;
@@ -310,7 +310,7 @@ page {
 			.tip{
 				font-size: 30rpx;
 				font-weight: bold;
-				color: #44969d;
+				color: #2E58FF;
 			}
 			.zhiya-btn{
 				background-color: #44969d;
@@ -343,7 +343,7 @@ page {
 		width: 690rpx;
 		height: 748rpx;
 		background: #F7F6FB;
-		border: 1rpx solid #44969d;
+		border: 1rpx solid #2E58FF;
 		border-radius: 20rpx;
 		margin: 20rpx auto;
 		font-size: 28rpx;
@@ -362,7 +362,7 @@ page {
 			}
 		}
 		.blue {
-			color: #44969d;
+			color: #2E58FF;
 			
 		}
 	}
@@ -370,7 +370,7 @@ page {
 		height: 20rpx;
 	}
 	.btn {
-		background-color: #44969d;
+		background-color: #2E58FF;
 		width: 150rpx;
 		text-align: center;
 		line-height: 60rpx;
@@ -448,7 +448,7 @@ page {
 					padding: 20rpx;
 					text-align: center;
 					color: #fff;
-					background: #44969d;
+					background: #2E58FF;
 					border-radius: 40rpx;
 				}
 			}
@@ -487,7 +487,7 @@ page {
 			font-size: 35rpx;
 		}
 		.psw-qd {
-			color: #45969b;
+			color: #2E58FF;
 		}
 	}
 	

+ 33 - 52
pages/market/pay.vue

@@ -29,11 +29,11 @@
 			</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 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 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">
@@ -43,38 +43,22 @@
 			</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 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="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"/>
+				<input type="password" v-model="password" class="psw-ipt" />
 				<view class="psw-btn">
 					<text @click="cancel">取消</text>
 					<text class="psw-qd" @click="pswQd">确定</text>
@@ -97,22 +81,20 @@ export default {
 			num: 1,
 			step: 0,
 			password: '',
-			
+
 			price: '',
-			list: {
-				
-			},
+			list: {},
 			checked: false,
 			isHiden: true
 		};
 	},
 	filters: {
 		Keept(value) {
-			if(!value) {
-				return '0.00'
+			if (!value) {
+				return '0.00';
 			}
-			value = Math.round(value* 100)/100;
-			return value
+			value = Math.round(value * 100) / 100;
+			return value;
 		}
 	},
 	onLoad(option) {
@@ -120,13 +102,13 @@ export default {
 		// console.log(this.list)
 		this.id = option.id;
 		this.type = option.type;
-		
+
 		this.loadData();
 	},
-	
+
 	computed: {
 		money() {
-			return this.num * this.price *this.step ;
+			return this.num * this.price * this.step;
 		}
 	},
 	onShow() {},
@@ -160,13 +142,13 @@ export default {
 				obj.$api.msg('请阅读并同意协议!');
 				return;
 			}
-			console.log()
-			if (obj.list.cost_times > (obj.list.luck_point - obj.list.exchange_point)) {
+			console.log();
+			if (obj.list.cost_times > obj.list.luck_point - obj.list.exchange_point) {
 				obj.$api.msg('所需荣誉值不足!');
 				return;
 			}
 			//弹出输入交易密码
-			this.isHiden = false
+			this.isHiden = false;
 			// buyMining(
 			// 	{
 			// 		num: obj.num * obj.step,
@@ -202,18 +184,17 @@ export default {
 			obj.num = data.number;
 		},
 		cancel() {
-			this.password = ''
-			this.isHiden = true
+			this.password = '';
+			this.isHiden = true;
 		},
 		pswQd() {
 			let obj = this;
-			if( obj.password === '' ) {
+			if (obj.password === '') {
 				obj.$api.msg('请输入交易密码!');
-				return
+				return;
 			}
-			obj.isHiden = true
-			
-			
+			obj.isHiden = true;
+
 			buyMining(
 				{
 					num: obj.num * obj.step,
@@ -263,7 +244,7 @@ page {
 	}
 }
 .list-box {
-	background: linear-gradient(90deg, #60BAB0, #60BAB0, #45969B);
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
 	width: 100%;
 	height: 200rpx;
 }
@@ -327,7 +308,7 @@ page {
 	.tips {
 		font-size: 26rpx;
 		font-weight: 500;
-		color: #60BAB0;
+		color: #60bab0;
 		padding-bottom: 25rpx;
 	}
 	.explain {
@@ -340,7 +321,7 @@ page {
 }
 .submit-box {
 	.submit {
-		background-color: #60BAB0;
+		background: linear-gradient(0deg, #2e58ff, #32c6ff);
 		color: #ffffff;
 		text-align: center;
 		padding: 25rpx 0rpx;
@@ -352,7 +333,7 @@ page {
 	font-size: 28rpx;
 	padding-bottom: 60rpx;
 	text {
-		color: #60BAB0;
+		color: #60bab0;
 	}
 }
 .curtain {
@@ -365,10 +346,10 @@ page {
 		position: fixed;
 		top: 50%;
 		left: 50%;
-		transform: translate(-50%,-100%);
+		transform: translate(-50%, -100%);
 		width: 548.6rpx;
 		height: 344.4rpx;
-		background-color: #FFFFFF;
+		background-color: #ffffff;
 		border-radius: 15rpx 15rpx;
 		.psw-title {
 			width: 100%;
@@ -386,7 +367,7 @@ page {
 			margin: 0 auto;
 			font-size: 80rpx;
 		}
-		.psw-btn text{
+		.psw-btn text {
 			display: inline-block;
 			text-align: center;
 			width: 50%;
@@ -394,11 +375,11 @@ page {
 			font-size: 35rpx;
 		}
 		.psw-qd {
-			color:#60BAB0;
+			color: #60bab0;
 		}
 	}
 }
 .ishiden {
 	display: none;
 }
-</style>
+</style>

+ 8 - 0
pages/message/message.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 5 - 4
pages/money/award.vue

@@ -219,16 +219,17 @@ page {
 		}
 		.goback-box {
 			position: absolute;
-			z-index: 10;
-			left: 24rpx;
+			left: 18rpx;
 			top: 0;
 			height: 80rpx;
 			display: flex;
 			align-items: center;
 		}
+		
 		.goback {
-			width: 30rpx;
-			height: 37rpx;
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
 		}
 	}
 }

+ 416 - 0
pages/money/integralP.vue

@@ -0,0 +1,416 @@
+<template>
+	<view class="content">
+		<view class="status_bar"><!-- 这里是状态栏 --></view>
+		<view class="content-money">
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">我的拼团积分</view>
+			</view>
+			<view class="content-bg"><image src="../../static/img/user-integralP.png" mode=""></image></view>
+			<view class="money-box"><view class="money">100</view></view>
+			<view class="rule" @click="open()">转赠规则</view>
+		</view>
+		<view class="btn flex">
+			<view class="btn-item" @click="navto('/pages/conversion/candy')">转换为糖果</view>
+			<view class="btn-item" @click="navto('/pages/conversion/transfers')">积分转赠</view>
+		</view>
+		<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" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+
+					<!-- 订单列表 -->
+					<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+						<view class="title-box">
+							<view class="title">
+								<text>{{ item.title }}</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>
+		<uni-popup ref="popup" type="center">
+			<view class="popup-box">
+				<view class="popup-title">转赠规则</view>
+				<view class="popup-main">
+					<view class="popup-little">一、活动时间</view>
+					<view class="popup-text">xxxx年xx月xx日xx时举办活动</view>
+					<view class="popup-little">二、规则</view>
+					<view class="popup-text">本次活动奖励共二挡,活动奖励按 最高档发放</view>
+					<view class="popup-little">一、活动时间</view>
+					<view class="popup-text">xxxx年xx月xx日xx时举办活动</view>
+					<view class="popup-little">二、规则</view>
+					<view class="popup-text">本次活动奖励共二挡,活动奖励按 最高档发放</view>
+				</view>
+			</view>
+			<view class="close" @click="close"><image src="../../static/img/Close.png" mode=""></image></view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+import { spreadCommission, userBalance } from '@/api/wallet.js';
+import { mapState, mapMutations } from 'vuex';
+import uniLoadMore from '@/uview-ui/components/u-loadmore/u-loadmore.vue';
+import empty from '@/uview-ui/components/u-empty/u-empty.vue';
+import uniPopup from '@/components/uni-popup/uni-popup.vue';
+export default {
+	components: {
+		empty,
+		uniLoadMore,
+		uniPopup
+	},
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.maxheight = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
+	},
+	data() {
+		return {
+			// 头部图高度
+			maxheight: '',
+			tabCurrentIndex: 0,
+			navList: [
+				{
+					state: 0,
+					text: '收入',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页面
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 1,
+					text: '支出',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页面
+					limit: 10 //每次信息条数
+				}
+			],
+			money: 0,
+		};
+	},
+	onLoad(options) {},
+	onShow() {
+		this.loadData();
+		//获取用户余额
+		userBalance({}).then(({ data }) => {
+			this.money = data.commissionCount;
+		});
+	},
+	methods: {
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		},
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		async loadData(source) {
+			//这里时将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state + 3;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType === 'loading') {
+				//防止重复加载
+				return;
+			}
+			//修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			spreadCommission(
+				{
+					page: navItem.page,
+					limit: navItem.limit
+				},
+				state
+			)
+				.then(({ data }) => {
+					if (data.length > 0) {
+						navItem.orderList = navItem.orderList.concat(data[0].list);
+						console.log(navItem.orderList);
+						navItem.page++;
+					}
+					//判断是否还有数据, 有改为more, 没有改为noMore
+					if (navItem.limit == data.length) {
+						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;
+		},
+		open() {
+			this.$refs.popup.open();
+		},
+		close() {
+			this.$refs.popup.close();
+		},
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+.content-money {
+	padding-bottom: 30rpx;
+	position: relative;
+	height: 400rpx;
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 400rpx;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 2;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+		
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+	.rule {
+		z-index: 11;
+		position: absolute;
+		top: 130rpx;
+		right: 0;
+		width: 140rpx;
+		height: 50rpx;
+		background: #ffffff;
+		border-top-left-radius: 8rpx;
+		border-bottom-left-radius: 8rpx;
+		text-align: center;
+		line-height: 50rpx;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #2e58ff;
+	}
+}
+.btn {
+	justify-content: center;
+	align-items: center;
+	position: relative;
+	z-index: 10;
+	.btn-item {
+		margin: 0 15rpx;
+		width: 330rpx;
+		height: 100rpx;
+		background: #ffffff;
+		box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+		border-radius: 10rpx;
+		text-align: center;
+		line-height: 100rpx;
+		font-size: 34rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #3c77ff;
+		margin-top: -50rpx;
+	}
+}
+.money-box {
+	position: relative;
+	z-index: 10;
+	padding-top: 100rpx;
+	color: #ffffff;
+	text-align: center;
+	.money {
+		font-size: 86rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+}
+
+.navbar {
+	margin-top: 20rpx;
+	display: flex;
+	height: 88rpx;
+	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 {
+	.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 {
+	background: #ffffff;
+	height: 100%;
+}
+.content {
+	height: 100%;
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+.popup-box {
+	background: #FFFFFF;
+	border-radius: 10rpx;
+	width: 580rpx;
+	padding: 43rpx 60rpx 56rpx 34rpx;
+	.popup-title {
+		width: 100%;
+		text-align: center;
+		font-size: 36rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+	.popup-main {
+		margin-top: 48rpx;
+		.popup-little {
+			padding-top: 18rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+		}
+		.popup-text {
+			padding-left: 60rpx;
+			padding-top: 18rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #666666;
+		}
+	}
+}
+.close {
+	margin: 70rpx auto 0;
+	width: 84rpx;
+	height: 84rpx;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+</style>

+ 416 - 0
pages/money/integralShopping.vue

@@ -0,0 +1,416 @@
+<template>
+	<view class="content">
+		<view class="status_bar"><!-- 这里是状态栏 --></view>
+		<view class="content-money">
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">我的拼团积分</view>
+			</view>
+			<view class="content-bg"><image src="../../static/img/user-integralP.png" mode=""></image></view>
+			<view class="money-box"><view class="money">100</view></view>
+			<view class="rule" @click="open()">转赠规则</view>
+		</view>
+		<view class="btn flex">
+			<view class="btn-item" @click="navto('/pages/conversion/candy')">转换为糖果</view>
+			<view class="btn-item" @click="navto('/pages/conversion/transfers')">积分转赠</view>
+		</view>
+		<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" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
+				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
+
+					<!-- 订单列表 -->
+					<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+						<view class="title-box">
+							<view class="title">
+								<text>{{ item.title }}</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>
+		<uni-popup ref="popup" type="center">
+			<view class="popup-box">
+				<view class="popup-title">转赠规则</view>
+				<view class="popup-main">
+					<view class="popup-little">一、活动时间</view>
+					<view class="popup-text">xxxx年xx月xx日xx时举办活动</view>
+					<view class="popup-little">二、规则</view>
+					<view class="popup-text">本次活动奖励共二挡,活动奖励按 最高档发放</view>
+					<view class="popup-little">一、活动时间</view>
+					<view class="popup-text">xxxx年xx月xx日xx时举办活动</view>
+					<view class="popup-little">二、规则</view>
+					<view class="popup-text">本次活动奖励共二挡,活动奖励按 最高档发放</view>
+				</view>
+			</view>
+			<view class="close" @click="close"><image src="../../static/img/Close.png" mode=""></image></view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+import { spreadCommission, userBalance } from '@/api/wallet.js';
+import { mapState, mapMutations } from 'vuex';
+import uniLoadMore from '@/uview-ui/components/u-loadmore/u-loadmore.vue';
+import empty from '@/uview-ui/components/u-empty/u-empty.vue';
+import uniPopup from '@/components/uni-popup/uni-popup.vue';
+export default {
+	components: {
+		empty,
+		uniLoadMore,
+		uniPopup
+	},
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.maxheight = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
+	},
+	data() {
+		return {
+			// 头部图高度
+			maxheight: '',
+			tabCurrentIndex: 0,
+			navList: [
+				{
+					state: 0,
+					text: '收入',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页面
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 1,
+					text: '支出',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页面
+					limit: 10 //每次信息条数
+				}
+			],
+			money: 0,
+		};
+	},
+	onLoad(options) {},
+	onShow() {
+		this.loadData();
+		//获取用户余额
+		userBalance({}).then(({ data }) => {
+			this.money = data.commissionCount;
+		});
+	},
+	methods: {
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		},
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		async loadData(source) {
+			//这里时将订单挂载到tab列表下
+			let index = this.tabCurrentIndex;
+			let navItem = this.navList[index];
+			let state = navItem.state + 3;
+			if (source === 'tabChange' && navItem.loaded === true) {
+				//tab切换只有第一次需要加载数据
+				return;
+			}
+			if (navItem.loadingType === 'loading') {
+				//防止重复加载
+				return;
+			}
+			//修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			spreadCommission(
+				{
+					page: navItem.page,
+					limit: navItem.limit
+				},
+				state
+			)
+				.then(({ data }) => {
+					if (data.length > 0) {
+						navItem.orderList = navItem.orderList.concat(data[0].list);
+						console.log(navItem.orderList);
+						navItem.page++;
+					}
+					//判断是否还有数据, 有改为more, 没有改为noMore
+					if (navItem.limit == data.length) {
+						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;
+		},
+		open() {
+			this.$refs.popup.open();
+		},
+		close() {
+			this.$refs.popup.close();
+		},
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #f1f1f1;
+	height: 100%;
+}
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+.content-money {
+	padding-bottom: 30rpx;
+	position: relative;
+	height: 400rpx;
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 400rpx;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 2;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+		
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+	.rule {
+		z-index: 11;
+		position: absolute;
+		top: 130rpx;
+		right: 0;
+		width: 140rpx;
+		height: 50rpx;
+		background: #ffffff;
+		border-top-left-radius: 8rpx;
+		border-bottom-left-radius: 8rpx;
+		text-align: center;
+		line-height: 50rpx;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #2e58ff;
+	}
+}
+.btn {
+	justify-content: center;
+	align-items: center;
+	position: relative;
+	z-index: 10;
+	.btn-item {
+		margin: 0 15rpx;
+		width: 330rpx;
+		height: 100rpx;
+		background: #ffffff;
+		box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+		border-radius: 10rpx;
+		text-align: center;
+		line-height: 100rpx;
+		font-size: 34rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #3c77ff;
+		margin-top: -50rpx;
+	}
+}
+.money-box {
+	position: relative;
+	z-index: 10;
+	padding-top: 100rpx;
+	color: #ffffff;
+	text-align: center;
+	.money {
+		font-size: 86rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+}
+
+.navbar {
+	margin-top: 20rpx;
+	display: flex;
+	height: 88rpx;
+	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 {
+	.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 {
+	background: #ffffff;
+	height: 100%;
+}
+.content {
+	height: 100%;
+	.empty-content {
+		background-color: #ffffff;
+	}
+}
+.popup-box {
+	background: #FFFFFF;
+	border-radius: 10rpx;
+	width: 580rpx;
+	padding: 43rpx 60rpx 56rpx 34rpx;
+	.popup-title {
+		width: 100%;
+		text-align: center;
+		font-size: 36rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+	.popup-main {
+		margin-top: 48rpx;
+		.popup-little {
+			padding-top: 18rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+		}
+		.popup-text {
+			padding-left: 60rpx;
+			padding-top: 18rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #666666;
+		}
+	}
+}
+.close {
+	margin: 70rpx auto 0;
+	width: 84rpx;
+	height: 84rpx;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+</style>

+ 316 - 0
pages/money/phone.vue

@@ -0,0 +1,316 @@
+<template>
+	<view class="center">
+		<view class="status_bar"><!-- 这里是状态栏 --></view>
+		<view class="content-money">
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">充值中心</view>
+			</view>
+			<view class="content-bg"></view>
+			<view class="phone">
+				<view class="phone-title">充值号码</view>
+				<view class="input"><input type="text" value="phone" v-model="phone" placeholder="请输入充值号码" placeholder-class="input" /></view>
+			</view>
+		</view>
+		<view class="main-box">
+			<view class="main-title">请选择充值套餐</view>
+			<view class="main">
+				<view class="main-item" v-for="(item, index) in moneyList" :class="{ current: money === item.price }" :key="index" @click="change(item.price)">
+					<view class="num">
+						{{ item.money }}
+						<text>元</text>
+					</view>
+					<view class="yuan">售价{{ item.price }}元</view>
+				</view>
+			</view>
+			<view class="zj">
+				<view class="zj-left">
+					应付金额
+				</view>
+				<view class="zj-right">
+					¥{{money}}元
+				</view>
+			</view>
+		</view>
+		<view class="explain">
+			<view class="explain-left">
+				充值说明
+			</view>
+			<view class="explain-right">
+			</view>
+		</view>
+		<view class="btn">
+			立即充值
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			phone: '',
+			money: 9.9,
+			moneyList: [
+				{
+					money: 10,
+					price: 9.9
+				},
+				{
+					money: 20,
+					price: 19.9
+				},
+				{
+					money: 30,
+					price: 29.9
+				},
+				{
+					money: 50,
+					price: 49.9
+				},
+				{
+					money: 100,
+					price: 99.9
+				},
+				{
+					money: 200,
+					price: 199.9
+				},
+				{
+					money: 300,
+					price: 299.9
+				},
+				{
+					money: 500,
+					price: 499.9
+				},
+				{
+					money: 1000,
+					price: 999.9
+				}
+			]
+		};
+	},
+	methods: {
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({});
+		},
+		change(money){
+			this.money = money
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page,.center {
+	background: #f1f1f1;
+	height: 100%;
+	padding-bottom: 30rpx;
+}
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+.content-money {
+	padding-bottom: 30rpx;
+	position: relative;
+	height: 520rpx;
+	.content-bg {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 520rpx;
+		background: linear-gradient(30deg, #2e58ff, #33eeff);
+		border-bottom-right-radius: 35%;
+		border-bottom-left-radius: 35%;
+	}
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+}
+.phone {
+	position: relative;
+	z-index: 10;
+	padding: 50rpx 27rpx 0;
+	.phone-title {
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+	}
+	.input {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #ffffff;
+		margin-top: 20rpx;
+		padding-bottom: 20rpx;
+		border-bottom: 1px solid #e5e5e5;
+	}
+}
+.main-box {
+	position: relative;
+	z-index: 10;
+	width: 694rpx;
+	background: #ffffff;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	margin: -200rpx auto 0;
+	padding: 30rpx;
+	.main-title {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #010101;
+	}
+	.main {
+		padding-top: 14rpx;
+		display: flex;
+		justify-content: space-between;
+		flex-wrap: wrap;
+		align-items: center;
+		.current {
+			background: linear-gradient(0deg, #2e58ff, #32c6ff) !important;
+			.num,.yuan{
+				color: #FFFFFF !important;
+			}
+		}
+		.main-item {
+			margin-top: 14rpx;
+			line-height: 1;
+			width: 204rpx;
+			height: 130rpx;
+			background: #d6e9ff;
+			border-radius: 7rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			.num {
+				font-size: 36rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #2e58ff;
+				text {
+					display: inline-block;
+					padding-left: 8rpx;
+					font-size: 26rpx;
+				}
+			}
+			.yuan {
+				margin-top: 18rpx;
+				font-size: 20rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #999999;
+			}
+		}
+	}
+	.zj {
+		margin-top: 26rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		.zj-left {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #333333;
+		}
+		.zj-right {
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FF0000;
+		}
+	}
+}
+.explain {
+	margin: 20rpx auto 0;
+	padding: 24rpx 28rpx;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	width: 694rpx;
+	background: #FFFFFF;
+	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+	border-radius: 20rpx;
+	.explain-left {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #333333;
+	}
+	.explain-right {
+		position: relative;
+		bottom: 14rpx;
+		right: 28rpx;
+	}
+	.explain-right:after,.explain-right:before {
+	  border: 12rpx solid transparent;
+	  border-left: 12rpx solid #fff;
+	  width: 0;
+	  height: 0;
+	  position: absolute;
+	  top: 0;
+	  right: -20px;
+	  content: ' ';
+	}
+	
+	.explain-right:before {
+	  border-left-color: #333333;
+	  right: -21px;
+	}
+}
+.btn {
+	margin: 200rpx auto 0;
+	width: 696rpx;
+	height: 84rpx;
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
+	border-radius: 42rpx;
+	text-align: center;
+	line-height: 84rpx;
+	font-size: 32rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #FFFFFF;
+}
+</style>

+ 5 - 4
pages/money/wallet.vue

@@ -226,16 +226,17 @@ page {
 		}
 		.goback-box {
 			position: absolute;
-			z-index: 10;
-			left: 24rpx;
+			left: 18rpx;
 			top: 0;
 			height: 80rpx;
 			display: flex;
 			align-items: center;
 		}
+		
 		.goback {
-			width: 30rpx;
-			height: 37rpx;
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
 		}
 	}
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 143 - 0
pages/order/createOrder.vue


+ 405 - 0
pages/order/evaluate.vue

@@ -0,0 +1,405 @@
+<template>
+	<view class="content">
+		<view class="order-item">
+			<view class="goods-box-single">
+				<image class="goods-img" :src="productInfo.image" mode="aspectFill"></image>
+				<view class="right position-relative">
+					<view class="flex">
+						<text class="title">{{ productInfo.store_name }}</text>
+						<view class="title-right">
+							<view class="price">{{ productInfo.price }}</view>
+							<view class="attr-box">x{{ list.cart_num }}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view>
+				<view class="flex_item zhil">
+					<view>商品质量</view>
+					<view><uniRate text="1" size="20" margin="10" :value="rateValue1" @change="rateChange1"></uniRate></view>
+				</view>
+				<view class="flex_item zhil">
+					<view>服务态度</view>
+					<view><uniRate text="1" size="20" margin="10" :value="rateValue2" @change="rateChange2"></uniRate></view>
+				</view>
+				<view class="equity_box">
+					<view class="text-box uni-textarea">
+						<textarea placeholder-style="color:#999" :placeholder="placeholder" @blur="bindTextAreaBlur"></textarea>
+					</view>
+					<view class="">
+						<view class="add-img-box flex_item">
+							<view class="add-img-item" v-for="(item, index) in imgList" :key="index">
+								<image class="add-img" @click.stop="imgInfo(index)" :src="item.url" mode="aspectFill"></image>
+								<image class="add-img-del" @click.stop="delImg(index)" src="/static/img/delete.png"></image>
+							</view>
+							<view v-if="imgList.length < 9" class="add-img-item" @click.stop="scImg()">
+								<image class="add-img" src="/static/img/add.png"></image>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view @click.stop="submit" class="address-box submit-box"><text class="submit-btn">提交评论</text></view>
+	</view>
+</template>
+
+<script>
+import { product, upload, order_comment } from '@/api/order.js';
+import uniRate from '@/components/uni-rate/uni-rate.vue';
+export default {
+	components: {
+		uniRate
+	},
+	data() {
+		return {
+			list: '', //订单详情
+			productInfo: '',
+			text: '', //评论内容
+			placeholder: '商品满足你的期待么?说说你的想法,分享给想买的他们吧~',
+			imgList: [],
+			unique: '', //商品唯一标识码
+			cloudimgList: [],
+			rateValue1: '', //商品质量
+			rateValue2: '', //服务态度
+			imgCount: 6 //最多支持9张上传,可以修改
+		};
+	},
+	onLoad(option) {
+		this.unique = option.unique;
+		this.loadOrder();
+	},
+	onShow() {},
+	methods: {
+		//text
+		bindTextAreaBlur: function(e) {
+			this.text = e.detail.value;
+		},
+		//获取收入支出信息
+		async loadOrder() {
+			product({
+				unique: this.unique
+			}).then(e => {
+				this.list = e.data;
+				this.productInfo = e.data.productInfo;
+			});
+		},
+		//商品质量评分
+		rateChange1(val) {
+			this.rateValue1 = val.value;
+		},
+		//服务态度评分
+		rateChange2(val) {
+			this.rateValue2 = val.value;
+		},
+		//单张上传图片
+		scImg() {
+			let obj = this;
+			console.log(obj.imgCount, 11);
+			if (obj.imgCount == 0) {
+				uni.showToast({
+					title: '最多添加6张图片',
+					icon: 'none'
+				});
+				return;
+			}
+			upload({
+				file: ''
+			})
+				.then(e => {
+					console.log(e,'e')
+					obj.imgList = [...obj.imgList, ...e];
+					console.log(obj.imgList,'imgList')
+					obj.imgCount = 10 - obj.imgList.length;
+					console.log(obj.imgCount ,'imgCount ')
+				})
+				.catch(e => {});
+		},
+		//提交评论
+		submit(e) {
+			let obj = this;
+			if (obj.imgList.length < 1) {
+				uni.showToast({
+					title: '请添加图片',
+					icon: 'none'
+				});
+				return;
+			}
+			for (let i = 0; i < obj.imgList.length; i++) {
+				obj.cloudimgList.push(obj.imgList[i].url);
+			}
+			let arr = obj.cloudimgList.join(',');
+			order_comment({
+				pics: arr,
+				comment: obj.text,
+				product_score: obj.rateValue1,
+				service_score: obj.rateValue2,
+				unique: obj.unique,
+				
+			})
+				.then(e => {
+					uni.navigateTo({
+						url: '/pages/order/order?state=4'
+					});
+				})
+				.catch(e => {
+					uni.navigateTo({
+						url: '/pages/order/order?state=4'
+					});
+				});
+		},
+		//点击图片显示大图
+		imgInfo(i) {
+			let tempList = [];
+			console.log(111);
+			this.imgList.forEach(e => {
+				tempList.push(e.url);
+			});
+			console.log(tempList);
+			//显示图片
+			uni.previewImage({
+				current: i,
+				loop: false,
+				urls: tempList,
+				indicator: 'default'
+			});
+		},
+		//删除图片
+		delImg(i) {
+			uni.showModal({
+				content: '确定删除这张吗',
+				success: res => {
+					if (res.confirm) {
+						this.imgList.splice(i, 1);
+						this.imgCount++;
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		// 页面跳转
+		navto(e) {
+			uni.navigateTo({
+				url: e
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #ffffff;
+	height: 100%;
+	.content {
+		background: #ffffff;
+		height: 100%;
+	}
+}
+/* 多条商品 */
+.order-item {
+	display: flex;
+	flex-direction: column;
+	padding: 0rpx 30rpx;
+	background: #fff;
+	margin-top: 20rpx;
+	/* 单条商品 */
+	.goods-box-single {
+		display: flex;
+		padding: 20rpx 0;
+		.goods-img {
+			display: block;
+			width: 120rpx;
+			height: 120rpx;
+		}
+		.right {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			padding: 0 30rpx 0 24rpx;
+			overflow: hidden;
+			height: 100%;
+			.title {
+				align-self: flex-start;
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				height: 80rpx;
+				overflow:hidden; 
+				text-overflow:ellipsis;
+				display:-webkit-box; 
+				-webkit-box-orient:vertical;
+				-webkit-line-clamp:2; 
+			}
+			.title-right {
+				flex-shrink: 0;
+				text-align: right;
+				align-self: flex-start;
+			}
+			.attr-box {
+				font-size: $font-sm + 2rpx;
+				color: $font-color-light;
+			}
+			.price {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				&:before {
+					content: '¥';
+					font-size: $font-sm;
+					margin: 0 2rpx 0 8rpx;
+				}
+			}
+		}
+	}
+}
+.equity_box {
+	background-color: #fafafa;
+	border-radius: 10rpx;
+	padding: 25rpx 25rpx;
+	margin: 25rpx 0rpx;
+	.text-box {
+		height: 200rpx;
+		textarea {
+			font-size: 25rpx;
+			width: 100%;
+			height: 100%;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 5;
+		}
+	}
+}
+.zhil {
+	font-size: 28rpx !important;
+	padding: 15rpx 15rpx;
+}
+.submit-box {
+	bottom: 0;
+	left: 0;
+	width: 750rpx;
+}
+.submit-btn {
+	margin-top: 10px;
+	display: inline-block;
+	width: 670rpx;
+	height: 96rpx;
+	line-height: 96rpx;
+	text-align: center;
+	background-color: #1BCC26 !important;
+	opacity: 1;
+	border-radius: 32rpx;
+	border-width: 8rpx;
+	border-color: rgba(255, 255, 255, 1);
+	box-shadow: 0rpx 8rpx 12rpx rgba(0, 0, 0, 0.16);
+	border-radius: 56rpx;
+	font-size: 39rpx;
+	font-weight: bold;
+	color: rgba(255, 255, 255, 1);
+}
+.submit-btn-txt {
+	font-size: 39rpx;
+	font-weight: bold;
+	line-height: 47rpx;
+	color: rgba(255, 255, 255, 1);
+	opacity: 1;
+}
+.map-box {
+	width: 484rpx;
+	height: 256rpx;
+	border-width: 4rpx;
+	border-color: rgba(255, 255, 255, 1);
+	box-shadow: 0rpx 0rpx 24rpx rgba(0, 0, 0, 0.16);
+	/* border-radius: 12rpx; */
+	position: relative;
+}
+.map {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	width: 476rpx;
+	height: 250rpx;
+}
+.map-img {
+	position: absolute;
+	top: 90rpx;
+	left: 156rpx;
+	width: 230rpx;
+	height: 68rpx;
+	background-color: rgba(51, 51, 51, 0.64);
+	border-width: 1rpx;
+	border-color: rgba(0, 0, 0, 0);
+	border-radius: 34px;
+
+	font-size: 28rpx;
+	font-weight: bold;
+	line-height: 66rpx;
+	color: rgba(255, 255, 255, 1);
+	text-align: center;
+}
+.address-box {
+	padding: 15rpx 40rpx;
+	margin-bottom: 10px;
+}
+.label {
+	font-size: 36rpx;
+	font-weight: bold;
+	line-height: 50rpx;
+	color: #222222;
+}
+.label-img {
+	padding-left: 40rpx;
+}
+
+.add-img-box {
+	width: 100%;
+	flex-direction: row;
+	flex-wrap: wrap;
+	margin-top: 50rpx;
+}
+.add-img-item {
+	width: 180rpx;
+	height: 180rpx;
+	border-radius: 24rpx;
+	position: relative;
+	margin: 0rpx 20rpx;
+	margin-bottom: 25rpx;
+	.add-img {
+		width: 100%;
+		height: 100%;
+		border-radius: 24rpx;
+	}
+}
+.add-img-camera {
+	flex: 1;
+}
+.add-img-del {
+	position: absolute;
+	width: 40rpx;
+	height: 40rpx;
+	left: 155rpx;
+	bottom: 155rpx;
+	//background-color: rgba(238, 0, 0, 1);
+	border-radius: 20rpx;
+}
+.address-time {
+	width: 484rpx;
+	height: 88rpx;
+	background-color: rgba(245, 245, 245, 1);
+	opacity: 1;
+	border-radius: 24rpx;
+	text-align: center;
+
+	font-size: 35rpx;
+	font-weight: 500;
+	color: rgba(51, 51, 51, 1);
+}
+.line {
+	width: 750rpx;
+	height: 1px;
+	transform: scaleY(0.3);
+	background-color: rgba(0, 0, 0, 0.5);
+}
+</style>

+ 74 - 0
pages/order/expressInfo.vue

@@ -0,0 +1,74 @@
+<template>
+	<view class="container">
+		<view class="express-box">
+			<view class="top-text">
+				<text class="top-com">{{expressList.com}}</text>
+				<text>{{ expressList.nu }}</text>
+			</view>
+			<view class="express-body">
+				<uni-steps :options="expressList.data" active-color="#007AFF" :active="active" direction="column"></uni-steps>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { express_query } from '@/api/order.js';
+import uniSteps from '@/components/uni-steps/uni-steps.vue';
+export default {
+	components: {
+		uniSteps
+	},
+	data() {
+		return {
+			id: '',
+			expressList: [],
+			active: 0
+		}
+	},
+	onLoad(option) {
+		this.id = option.id
+	},
+	onShow() {
+		this.loadData()
+	},
+	methods: {
+		loadData() {
+			express_query({
+				id: this.id,
+			}).then(({data}) => {
+				this.expressList = data;
+				console.log(this.expressList)
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.container {
+	padding: 40rpx;
+	.express-box {
+		border-radius: $border-radius-sm;
+		.top-text {
+			width: 100%;
+			height: 60rpx;
+			background: #FFFFFF;
+			padding-left: 20rpx;
+			font-size: $font-base;
+			border-radius: $border-radius-sm;
+			display: flex;
+			align-items: center;
+			.top-com {
+				margin-right: 10rpx;
+			}
+		}
+		.express-body {
+			margin-top: 20rpx;
+			background: #FFFFFF;
+			border-radius: $border-radius-sm;
+			padding: 20rpx 10rpx 20rpx 0;
+		}
+	}
+}
+</style>

+ 674 - 0
pages/order/order.vue

@@ -0,0 +1,674 @@
+<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 @click="goToOrderDetail(item)" v-for="(item, index) in tabItem.orderList" :key="index" class="order-item">
+						<view class="i-top b-b">
+							<text class="time">{{ item._add_time }}</text>
+							<text class="state" :style="{ color: item.stateTipColor }">{{ item._status._title }}</text>
+							<text v-if="item.status === 4" class="del-btn iconfont icondelete" @click="deleteOrder(index)"></text>
+						</view>
+
+						<scroll-view v-if="item.cartInfo.length > 1" class="goods-box" scroll-x>
+							<view v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex" class="goods-item">
+								<image class="goods-img" :src="goodsItem.productInfo.image" mode="aspectFill"></image>
+							</view>
+						</scroll-view>
+						<!-- <view v-if="item.cartInfo.length === 1" class="goods-box-single" v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex">
+							<image class="goods-img" :src="goodsItem.productInfo.image" mode="aspectFill"></image>
+							<view class="right">
+								<text class="title clamp">{{ goodsItem.productInfo.store_name }}</text>
+								<text class="attr-box">{{ goodsItem.attrInfo ? goodsItem.attrInfo.suk : '' }} x {{ goodsItem.cart_num }}</text>
+								<text class="price">{{ moneyNum(goodsItem.productInfo.price)}}</text>
+							</view>
+						</view> -->
+						<view class="goods-box-single" v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex">
+							<image class="goods-img" :src="goodsItem.productInfo.image" mode="scaleToFill"></image>
+							<view class="right">
+								<view class="flex-start">
+									<text class="title clamp">{{ goodsItem.productInfo.store_name }}</text>
+									<text class="price">{{ goodsItem.productInfo.price|moneyNum }}</text>
+								</view>
+								<view class="row flex">
+									<text class="row_title">{{ goodsItem.productInfo.attrInfo ? goodsItem.productInfo.attrInfo.suk : '' }}</text>
+									<text class="attr-box"> x {{ goodsItem.cart_num }}</text>
+								</view>
+							</view>
+						</view>
+
+						<view class="price-box">
+							共
+							<text class="num">{{ item.cartInfo.length }}</text>
+							件商品 邮费
+							<text class="price">{{ moneyNum(item.pay_postage)}}</text>
+							实付款
+							<text class="price">{{ moneyNum(item.pay_price)}}</text>
+						</view>
+						<view class="action-box b-t" v-if="item.status != 5">
+							<button v-if="item._status._title == '未支付'" class="action-btn" @click.stop="cancelOrder(item)">取消订单</button>
+							<button v-if="item._status._title == '未支付'" @click.stop="orderPay(item)" class="action-btn recom">立即支付</button>
+							<button v-if="item._status._title == '待评价'" class="action-btn">评价</button>
+							<button v-if="item._status._title == '待收货'" @click.stop="orderTake(item, index)" class="action-btn">确认收货</button>
+							<button v-if="item._status._title == '未发货'" class="action-btn" @click.stop="orderRefund(item)">申请退款</button>
+						</view>
+					</view>
+
+					<!-- <uni-load-more :status="tabItem.loadingType"></uni-load-more> -->
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+
+<script>
+import { orderList, orderCancel, orderDel, orderTake } from '@/api/order.js';
+export default {
+	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 //每次信息条数
+				},
+				{
+					state: 3,
+					text: '待评价',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 4,
+					text: '已完成',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				}
+			]
+		};
+	},
+
+	onLoad(options) {
+		/**
+		 * 修复app端点击除全部订单外的按钮进入时不加载数据的问题
+		 * 替换onLoad下代码即可
+		 */
+		this.tabCurrentIndex = +options.state;
+		// #ifndef MP
+		this.loadData();
+		// #endif
+		// #ifdef MP
+		if (options.state == 0) {
+			this.loadData();
+		}
+		// #endif
+	},
+	// #ifdef APP-PLUS || H5
+	onBackPress(e){
+		uni.switchTab({
+			url: '/pages/user/user',
+		});
+		return true;
+	},
+	// #endif
+	filters: {
+		moneyNum(value){
+				return +value;
+		},
+	},
+	methods: {
+		// 转换金额为数字
+		moneyNum(value){
+				return +value;
+		},
+		// 确认收货
+		orderTake(item, index) {
+			let obj = this;
+			uni.showModal({
+				title: '是否确认收货?',
+				success: () => {
+					orderTake({
+						uni: item.order_id
+					})
+						.then(e => {
+							obj.navList[obj.tabCurrentIndex].orderList.splice(index, 1);
+							uni.showToast({
+								title: '收货成功'
+							});
+						})
+						.catch(e => {
+							console.log(e);
+						});
+				}
+			});
+		},
+		//跳转到订单详情
+		goToOrderDetail(e) {
+			uni.navigateTo({
+				url: '/pages/order/orderDetail?id=' + e.order_id
+			});
+		},
+		// 申请退款
+		orderRefund(e) {
+			uni.navigateTo({
+				url: '/pages/order/orderRefund?id=' + e.order_id
+			});
+		},
+		// 订单支付
+		orderPay(e) {
+			uni.navigateTo({
+				url: '/pages/money/pay?type=1&ordid=' + e.order_id + '&money=' + e.pay_price
+			});
+		},
+		//获取订单列表
+		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;
+			}
+			if (navItem.loadingType === 'noMore') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+
+			orderList({
+				type: state,
+				page: navItem.page,
+				limit: navItem.limit
+			})
+				.then(({ data }) => {
+					let arr = data.map(e => {
+						let b = this.orderStateExp(e.status);
+						e.stateTip = b.stateTip;
+						e.stateTipColor = b.stateTipColor;
+						return e;
+					});
+					navItem.orderList = navItem.orderList.concat(arr);
+					// console.log(navItem.orderList);
+					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;
+		},
+		//删除订单
+		deleteOrder(index) {
+			uni.showLoading({
+				title: '请稍后'
+			});
+			setTimeout(() => {
+				this.navList[this.tabCurrentIndex].orderList.splice(index, 1);
+				uni.hideLoading();
+			}, 600);
+		},
+		//取消订单
+		cancelOrder(item) {
+			uni.showModal({
+				title: '订单取消',
+				content: '是否取消订单?',
+				success: e => {
+					if (e.confirm) {
+						uni.showLoading({
+							title: '请稍后'
+						});
+						orderCancel({ id: item.order_id })
+							.then(e => {
+								uni.showToast({
+									title: '取消成功',
+									duration: 2000,
+									position: 'top'
+								});
+							})
+							.catch(e => {
+								console.log(e);
+							});
+						//取消订单后删除待付款中该项
+						let list = this.navList[this.tabCurrentIndex].orderList;
+						let index = list.findIndex(val => val.id === item.id);
+						index !== -1 && list.splice(index, 1);
+						uni.hideLoading();
+					}
+				}
+			});
+		},
+
+		//订单状态文字和颜色
+		orderStateExp(state) {
+			let stateTip = '',
+				stateTipColor = '#fa436a';
+			switch (+state) {
+				case 0:
+					stateTip = '待付款';
+					break;
+				case 1:
+					stateTip = '待发货';
+					break;
+				case 2:
+					stateTip = '待收货';
+					break;
+				case 3:
+					stateTip = '待评价';
+					break;
+				case 4:
+					stateTip = '已完成';
+					stateTipColor = '#5dbc7c';
+					break;
+				case 9:
+					stateTip = '订单已关闭';
+					stateTipColor = '#909399';
+					break;
+
+				//更多自定义
+			}
+			return { stateTip, stateTipColor };
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page,
+.content {
+	background: $page-color-base;
+	height: 100%;
+}
+
+.swiper-box {
+	height: calc(100% - 40px);
+}
+.list-scroll-content {
+	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;
+			}
+		}
+	}
+}
+
+.uni-swiper-item {
+	height: auto;
+}
+.order-item {
+	display: flex;
+	flex-direction: column;
+	padding-left: 30rpx;
+	background: #fff;
+	margin-top: 16rpx;
+	.i-top {
+		display: flex;
+		align-items: center;
+		height: 80rpx;
+		padding-right: 30rpx;
+		font-size: $font-base;
+		color: $font-color-dark;
+		position: relative;
+		.time {
+			flex: 1;
+		}
+		.state {
+			color: $base-color;
+		}
+		.del-btn {
+			padding: 10rpx 0 10rpx 36rpx;
+			font-size: $font-lg;
+			color: $font-color-light;
+			position: relative;
+			&:after {
+				content: '';
+				width: 0;
+				height: 30rpx;
+				border-left: 1px solid $border-color-dark;
+				position: absolute;
+				left: 20rpx;
+				top: 50%;
+				transform: translateY(-50%);
+			}
+		}
+	}
+	/* 多条商品 */
+	.goods-box {
+		height: 160rpx;
+		padding: 20rpx 0;
+		white-space: nowrap;
+		.goods-item {
+			width: 120rpx;
+			height: 120rpx;
+			display: inline-block;
+			margin-right: 24rpx;
+		}
+		.goods-img {
+			display: block;
+			width: 100%;
+			height: 100%;
+		}
+	}
+	/* 单条商品 */
+	.goods-box-single {
+		display: flex;
+		padding: 20rpx 0;
+		.goods-img {
+			display: block;
+			width: 120rpx;
+			height: 120rpx;
+		}
+		.right {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			padding: 0 30rpx 0 24rpx;
+			overflow: hidden;
+			.row{
+				margin-top: 10rpx;
+			}
+			.row_title{
+				padding:5rpx 10rpx;
+				background-color: #dddddd;
+				border-radius: 10rpx;
+				font-size: 22rpx;
+				color: #ffffff;
+			}
+			.title {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				line-height: 1;
+				width: 80%;
+			}
+			.attr-box {
+				display: flex;
+				justify-content: flex-end;
+				font-size: $font-sm + 2rpx;
+				color: $font-color-light;
+			}
+			.price {
+				display: inline;
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				&:before {
+					content: '¥';
+					font-size: $font-sm;
+					
+				}
+			}
+		}
+	}
+	.price-box {
+		display: flex;
+		justify-content: flex-end;
+		align-items: baseline;
+		padding: 20rpx 30rpx;
+		font-size: $font-sm + 2rpx;
+		color: $font-color-light;
+		.num {
+			margin: 0 8rpx;
+			color: $font-color-dark;
+		}
+		.price {
+			font-size: $font-lg;
+			color: $font-color-dark;
+			&:before {
+				content: '¥';
+				font-size: $font-sm;
+				margin: 0 2rpx 0 8rpx;
+			}
+		}
+	}
+	.action-box {
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+		height: 100rpx;
+		position: relative;
+		padding-right: 30rpx;
+	}
+	.action-btn {
+		width: 160rpx;
+		height: 60rpx;
+		margin: 0;
+		margin-left: 24rpx;
+		padding: 0;
+		text-align: center;
+		line-height: 60rpx;
+		font-size: $font-sm + 2rpx;
+		color: $font-color-dark;
+		background: #fff;
+		border-radius: 100px;
+		&:after {
+			border-radius: 100px;
+		}
+		&.recom {
+			color: $base-color;
+			&:after {
+				border-color: $base-color;
+			}
+		}
+		&.evaluate {
+			color: $color-yellow;
+			&:after {
+				border-color: $color-yellow;
+			}
+		}
+	}
+}
+
+/* load-more */
+.uni-load-more {
+	display: flex;
+	flex-direction: row;
+	height: 80rpx;
+	align-items: center;
+	justify-content: center;
+}
+
+.uni-load-more__text {
+	font-size: 28rpx;
+	color: #999;
+}
+
+.uni-load-more__img {
+	height: 24px;
+	width: 24px;
+	margin-right: 10px;
+}
+
+.uni-load-more__img > view {
+	position: absolute;
+}
+
+.uni-load-more__img > view view {
+	width: 6px;
+	height: 2px;
+	border-top-left-radius: 1px;
+	border-bottom-left-radius: 1px;
+	background: #999;
+	position: absolute;
+	opacity: 0.2;
+	transform-origin: 50%;
+	animation: load 1.56s ease infinite;
+}
+
+.uni-load-more__img > view view:nth-child(1) {
+	transform: rotate(90deg);
+	top: 2px;
+	left: 9px;
+}
+
+.uni-load-more__img > view view:nth-child(2) {
+	transform: rotate(180deg);
+	top: 11px;
+	right: 0;
+}
+
+.uni-load-more__img > view view:nth-child(3) {
+	transform: rotate(270deg);
+	bottom: 2px;
+	left: 9px;
+}
+
+.uni-load-more__img > view view:nth-child(4) {
+	top: 11px;
+	left: 0;
+}
+
+.load1,
+.load2,
+.load3 {
+	height: 24px;
+	width: 24px;
+}
+
+.load2 {
+	transform: rotate(30deg);
+}
+
+.load3 {
+	transform: rotate(60deg);
+}
+
+.load1 view:nth-child(1) {
+	animation-delay: 0s;
+}
+
+.load2 view:nth-child(1) {
+	animation-delay: 0.13s;
+}
+
+.load3 view:nth-child(1) {
+	animation-delay: 0.26s;
+}
+
+.load1 view:nth-child(2) {
+	animation-delay: 0.39s;
+}
+
+.load2 view:nth-child(2) {
+	animation-delay: 0.52s;
+}
+
+.load3 view:nth-child(2) {
+	animation-delay: 0.65s;
+}
+
+.load1 view:nth-child(3) {
+	animation-delay: 0.78s;
+}
+
+.load2 view:nth-child(3) {
+	animation-delay: 0.91s;
+}
+
+.load3 view:nth-child(3) {
+	animation-delay: 1.04s;
+}
+
+.load1 view:nth-child(4) {
+	animation-delay: 1.17s;
+}
+
+.load2 view:nth-child(4) {
+	animation-delay: 1.3s;
+}
+
+.load3 view:nth-child(4) {
+	animation-delay: 1.43s;
+}
+
+@-webkit-keyframes load {
+	0% {
+		opacity: 1;
+	}
+
+	100% {
+		opacity: 0.2;
+	}
+}
+</style>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 178 - 0
pages/order/orderDetail.vue


+ 237 - 0
pages/order/orderRefund.vue

@@ -0,0 +1,237 @@
+<template>
+	<view class="content">
+		<view class="order-item">
+			<scroll-view v-if="listStyle == 1" class="goods-box" scroll-x>
+				<view v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex" class="goods-item">
+					<image class="goods-img" :src="goodsItem.productInfo.image" mode="aspectFill"></image>
+				</view>
+			</scroll-view>
+			<view v-if="listStyle == 2" class="goods-box-single" v-for="(goodsItem, goodsIndex) in item.cartInfo" :key="goodsIndex">
+				<image class="goods-img" :src="goodsItem.productInfo.image" mode="aspectFill"></image>
+				<view class="right">
+					<text class="title clamp">{{ goodsItem.productInfo.store_name }}</text>
+					<text class="attr-box">{{ goodsItem.attrInfo ? goodsItem.attrInfo.suk : '' }} x {{ goodsItem.cart_num }}</text>
+					<text class="price">{{ goodsItem.productInfo.price }}</text>
+				</view>
+			</view>
+		</view>
+		<view class="orderDetial">
+			<view class="row b-b flex">
+				<text class="tit">订单总价</text>
+				<view class="input">¥{{ item.total_price }}</view>
+			</view>
+			<view class="row b-b flex">
+				<text class="tit">邮费</text>
+				<view class="input">{{ item.pay_postage > 0 ? '¥' +item.pay_postage : '免邮费' }}</view>
+			</view>
+			<view class="row b-b flex" v-if="item.coupon_id > 0">
+				<text class="tit">优惠券</text>
+				<view class="input">-¥{{ item.coupon_price }}</view>
+			</view>
+			<view class="row b-b flex" v-if="item.use_integral > 0">
+				<text class="tit">积分抵扣</text>
+				<view class="input">-¥{{ item.use_integral }}</view>
+			</view>
+			<view class="row b-b flex">
+				<text class="tit ">实付</text>
+				<view class="input payColor">¥{{ item.pay_price }}</view>
+			</view>
+		</view>
+		<view class="row b-b">
+			<text class="tit">退款理由</text>
+			<picker mode="selector" :range="value" @change="bindChange">
+				<view class="refund" v-if="refund">{{ refund || '请选择退款理由' }}</view>
+				<view class="noRefund" v-else>请选择退款理由</view>
+			</picker>
+		</view>
+		<view class="row b-b">
+			<text class="tit">备注说明</text>
+			<input class="input" type="text" v-model="reason" placeholder="请填写备注" placeholder-class="placeholder" />
+		</view>
+		<button class="add-btn" @click="confirm">提交</button>
+	</view>
+</template>
+
+<script>
+import { refund, refundReason, orderDetail } from '@/api/order.js';
+export default {
+	data() {
+		return {
+			refund: '', //退款理由
+			reason: '', //备注
+			value: ['1', '2', '3', '4', '5', '6', '7', '8', 9, 10, 11, 12, 13],
+			orderId: '',
+			item: {},
+			listStyle: 2
+		};
+	},
+	onLoad(option) {
+		this.orderId = option.id;
+		this.refundReason();
+		this.loadOrder();
+	},
+	methods: {
+		// 切换选中事件
+		bindChange(e) {
+			this.refund = this.value[e.detail.value];
+		},
+		// 加载退款理由
+		refundReason() {
+			refundReason({}).then(e => {
+				this.value = e.data;
+			});
+		},
+		loadOrder() {
+			orderDetail({}, this.orderId).then(e => {
+				this.item = e.data;
+			});
+		},
+		//提交
+		confirm() {
+			if (!obj.refund) {
+				uni.showModal({
+					title: '错误',
+					content: '请填写退货理由',
+					showCancel: false
+				});
+				return false;
+			}
+			let obj = this;
+			refund({
+				text: obj.refund,
+				uni: obj.orderId,
+				refund_reason_wap_explain: obj.reason
+			}).then(function(e) {
+				uni.showToast({
+					title:'提交成功',
+					duration:1500
+				})
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: $page-color-base;
+	padding-top: 16rpx;
+}
+.orderDetial {
+	.row {
+		.input {
+			text-align: right;
+		}
+	}
+}
+.row {
+	display: flex;
+	align-items: center;
+	position: relative;
+	padding: 0 30rpx;
+	height: 110rpx;
+	background: #fff;
+	.refund {
+		font-size: 30rpx;
+		color: $font-color-dark;
+	}
+	.noRefund {
+		font-size: 30rpx;
+		color: $font-color-light;
+		padding-left: 20rpx;
+	}
+	.tit {
+		flex-shrink: 0;
+		width: 120rpx;
+		font-size: 30rpx;
+		color: $font-color-dark;
+	}
+	.input {
+		flex: 1;
+		font-size: 30rpx;
+		color: $font-color-dark;
+		padding-left: 20rpx;
+		&.payColor {
+			color: $color-red;
+		}
+	}
+	.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);
+}
+
+/* 多条商品 */
+.order-item {
+	display: flex;
+	flex-direction: column;
+	padding-left: 30rpx;
+	background: #fff;
+	margin-top: 16rpx;
+	.goods-box {
+		height: 160rpx;
+		padding: 20rpx 0;
+		white-space: nowrap;
+		.goods-item {
+			width: 120rpx;
+			height: 120rpx;
+			display: inline-block;
+			margin-right: 24rpx;
+		}
+		.goods-img {
+			display: block;
+			width: 100%;
+			height: 100%;
+		}
+	}
+	/* 单条商品 */
+	.goods-box-single {
+		display: flex;
+		padding: 20rpx 0;
+		.goods-img {
+			display: block;
+			width: 120rpx;
+			height: 120rpx;
+		}
+		.right {
+			flex: 1;
+			display: flex;
+			flex-direction: column;
+			padding: 0 30rpx 0 24rpx;
+			overflow: hidden;
+			.title {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				line-height: 1;
+			}
+			.attr-box {
+				font-size: $font-sm + 2rpx;
+				color: $font-color-light;
+				padding: 10rpx 12rpx;
+			}
+			.price {
+				font-size: $font-base + 2rpx;
+				color: $font-color-dark;
+				&:before {
+					content: '¥';
+					font-size: $font-sm;
+					margin: 0 2rpx 0 8rpx;
+				}
+			}
+		}
+	}
+}
+</style>

+ 509 - 0
pages/product/list.vue

@@ -0,0 +1,509 @@
+<template>
+	<view class="content">
+		<view class="navbar" :style="{ position: headerPosition, top: headerTop }">
+			<!-- 兼容小程序搜索 -->
+			<!-- #ifdef MP -->
+			<view class="input-box flex">
+				<view class=" input-content flex">
+					<view class="iconfont iconsearch"></view>
+					<view class="input"><input type="text" v-model="keyword" placeholder="请输入搜索内容" /></view>
+				</view>
+				<view class="input-button flex" @click="navTo"><text>搜索</text></view>
+			</view>
+			<!-- #endif -->
+			<view class="flex navbar-box">
+				<view class="nav-item" :class="{ current: filterIndex === 0 }" @click="tabClick(0)">综合排序</view>
+				<view class="nav-item" :class="{ current: filterIndex === 1 }" @click="tabClick(1)">
+					<text>销量优先</text>
+					<view class="p-box">
+						<text :class="{ active: numberOrder === 1 && filterIndex === 1 }" class="iconfont iconfold"></text>
+						<text :class="{ active: numberOrder === 2 && filterIndex === 1 }" class="iconfont iconfold xia"></text>
+					</view>
+				</view>
+				<view class="nav-item" :class="{ current: filterIndex === 2 }" @click="tabClick(2)">
+					<text>价格</text>
+					<view class="p-box">
+						<text :class="{ active: priceOrder === 1 && filterIndex === 2 }" class="iconfont iconfold"></text>
+						<text :class="{ active: priceOrder === 2 && filterIndex === 2 }" class="iconfont iconfold xia"></text>
+					</view>
+				</view>
+				<text class="cate-item iconfont iconapps" @click="toggleCateMask('show')"></text>
+			</view>
+		</view>
+		<view class="goods-list">
+			<view v-for="(item, index) in goodsList" :key="index" class="goods-item" @click="navToDetailPage(item)">
+				<view class="image-wrapper"><image :src="item.image" mode="aspectFill"></image></view>
+				<text class="title">{{ item.store_name }}</text>
+				<view class="price-box">
+					<text class="price">{{ item.price }}</text>
+					<!-- <text>已售 {{ item.sales+(item.ficti||0) }}</text> -->
+				</view>
+			</view>
+		</view>
+		<!-- <uni-load-more :status="loadingType"></uni-load-more> -->
+
+		<view class="cate-mask" :class="cateMaskState === 0 ? 'none' : cateMaskState === 1 ? 'show' : ''" @click="toggleCateMask">
+			<view class="cate-content" @click.stop.prevent="stopPrevent" @touchmove.stop.prevent="stopPrevent">
+				<scroll-view scroll-y class="cate-list">
+					<view><view class="cate-item b-b" @click="changeCate(tItem)">全部</view></view>
+					<view v-for="item in cateList" :key="item.id">
+						<view class="cate-item b-b two">{{ item.cate_name }}</view>
+						<view v-for="tItem in item.children" :key="tItem.id" class="cate-item b-b" :class="{ active: tItem.id == cateId }" @click="changeCate(tItem)">
+							{{ tItem.cate_name }}
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+// import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import { getProducts } from '@/api/product.js';
+// import { getList } from '@/api/category.js';
+import { mapState } from 'vuex';
+export default {
+	computed: {
+		...mapState(['shopId'])
+	},
+	// components: {
+	// 	uniLoadMore
+	// },
+	data() {
+		return {
+			cateMaskState: 0, //分类面板展开状态
+			headerPosition: 'fixed',
+			headerTop: '0px',
+			loadingType: 'more', //加载更多状态
+			filterIndex: 0, //查询类型
+			numberOrder: 0, //1 销量从低到高 2销量从高到低
+			limit: 6, //每次加载数据条数
+			page: 1, //当前页数
+			cateId: 0, //已选三级分类id
+			priceOrder: 0, //1 价格从低到高 2价格从高到低
+			cateList: [], //分类列表
+			goodsList: [], //商品列表
+			keyword: '' //关键字
+		};
+	},
+	// #ifndef MP
+	//点击导航栏 buttons 时触发
+	onNavigationBarButtonTap(e) {
+		const index = e.index;
+		if (index === 0) {
+			this.navTo();
+		}
+	},
+	// 点击键盘搜索事件
+	onNavigationBarSearchInputConfirmed(e) {
+		this.navTo();
+	},
+	// 搜索栏内容变化事件
+	onNavigationBarSearchInputChanged(e) {
+		this.keyword = e.text;
+	},
+	// #endif
+	onLoad(options) {
+		// #ifdef H5
+		this.headerTop = document.getElementsByTagName('uni-page-head')[0].offsetHeight + 'px';
+		// #endif
+		this.cateId = options.tid || '';
+		this.loadCateList();
+		this.loadData();
+	},
+	onPageScroll(e) {
+		//兼容iOS端下拉时顶部漂移
+		if (e.scrollTop >= 0) {
+			this.headerPosition = 'fixed';
+		} else {
+			this.headerPosition = 'absolute';
+		}
+	},
+	//下拉刷新
+	onPullDownRefresh() {
+		this.loadData('refresh');
+	},
+	//加载更多
+	onReachBottom() {
+		this.loadData();
+	},
+	methods: {
+		// 点击触发搜索事件
+		navTo() {
+			this.tabCurrentIndex = 1;
+			this.infoData();
+		},
+		// 查询切换后初始化
+		infoData() {
+			// 初始化页数
+			this.page = 1;
+			// 初始化数组
+			uni.pageScrollTo({
+				duration: 300,
+				scrollTop: 0
+			});
+			// 加载数据
+			this.loadData('refresh', 1);
+			uni.showLoading({
+				title: '正在加载'
+			});
+		},
+		//加载分类
+		async loadCateList(fid, sid) {
+			let obj = this;
+			getList({}).then(function(e) {
+				obj.cateList = e.data;
+			});
+		},
+		//加载商品 ,带下拉刷新和上滑加载
+		async loadData(type = 'add', loading) {
+			let obj = this;
+			let data = {
+				page: obj.page,
+				limit: obj.limit,
+				sid: obj.cateId, //分类id
+				mer_id: obj.shopId || '',
+				keyword: obj.keyword || '',
+				// isPink: 1
+			};
+			//没有更多直接返回
+			if (type === 'add') {
+				if (obj.loadingType === 'nomore') {
+					return;
+				}
+				obj.loadingType = 'loading';
+			} else {
+				obj.loadingType = 'more';
+			}
+
+			if (this.filterIndex == 1) {
+				console.log(obj.salesOrder);
+				data.salesOrder = obj.numberOrder == 1 ? 'asc' : 'desc';
+			}
+			if (this.filterIndex == 2) {
+				console.log(obj.priceOrder);
+				data.priceOrder = obj.priceOrder == 1 ? 'asc' : 'desc';
+			}
+			console.log(data)
+			getProducts(data).then(function(e) {
+				if (type === 'refresh') {
+					console.log('jinru');
+					// 清空数组
+					obj.goodsList = [];
+				}
+				console.log(e.data);
+				obj.goodsList = obj.goodsList.concat(e.data);
+				//判断是否还有下一页,有是more  没有是nomore
+				if (obj.limit == e.data.length) {
+					obj.page++;
+					obj.loadingType = 'more';
+				} else {
+					obj.loadingType = 'nomore';
+				}
+				if (type === 'refresh') {
+					if (loading == 1) {
+						uni.hideLoading();
+					} else {
+						uni.stopPullDownRefresh();
+					}
+				}
+			});
+		},
+		//筛选点击
+		tabClick(index) {
+			// 防止重复点击综合排序
+			if (this.filterIndex === 0 && this.filterIndex === index) {
+				return;
+			}
+			this.filterIndex = index;
+			// 判断是否为销量优先
+			if (index === 1) {
+				this.numberOrder = this.numberOrder === 1 ? 2 : 1;
+			}
+			// 判断是否为价格优先
+			if (index === 2) {
+				this.priceOrder = this.priceOrder === 1 ? 2 : 1;
+			}
+			// 初始化页数
+			this.page = 1;
+			// 初始化数组
+			uni.pageScrollTo({
+				duration: 300,
+				scrollTop: 0
+			});
+			this.loadData('refresh', 1);
+			uni.showLoading({
+				title: '正在加载'
+			});
+		},
+		//显示分类面板
+		toggleCateMask(type) {
+			let timer = type === 'show' ? 10 : 300;
+			let state = type === 'show' ? 1 : 0;
+			this.cateMaskState = 2;
+			setTimeout(() => {
+				this.cateMaskState = state;
+			}, timer);
+		},
+		//分类点击
+		changeCate(item) {
+			if (item) {
+				this.cateId = item.id;
+			} else {
+				this.cateId = '';
+			}
+			this.toggleCateMask();
+			this.infoData();
+		},
+		//详情
+		navToDetailPage(item) {
+			let id = item.id;
+			uni.navigateTo({
+				url: `/pages/product/product?id=${id}`
+			});
+		},
+		stopPrevent() {}
+	}
+};
+</script>
+
+<style lang="scss">
+page,
+.content {
+	background: $page-color-base;
+}
+.content {
+	padding-top: 40px;
+	/* #ifdef MP */
+	padding-top: 84px;
+	/* #endif */
+}
+/* #ifdef MP || APP-PLUS*/
+.input-box {
+	padding: 25rpx;
+	/* #ifdef APP-PLUS */
+	margin-top: var(--status-bar-height);
+	/* #endif */
+	background-color: #ffffff;
+	height: 44px;
+	.iconsearch {
+		font-size: 50rpx;
+	}
+	.input-content {
+		border-radius: 99rpx;
+		flex-grow: 1;
+		padding: 5rpx 30rpx;
+		background-color: rgba(231, 231, 231, 0.7);
+		.input {
+			flex-grow: 1;
+			input {
+				font-size: $font-base;
+			}
+		}
+	}
+	.input-button {
+		padding-left: 20rpx;
+		font-size: $font-base;
+		height: 100%;
+	}
+}
+/* #endif */
+
+.navbar {
+	position: fixed;
+	left: 0;
+	top: var(--window-top);
+	width: 100%;
+	height: 40px;
+	/* #ifdef MP ||APP-PLUS */
+	height: 84px;
+	/* #endif */
+	background: #fff;
+	box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.06);
+	z-index: 10;
+	.navbar-box {
+		height: 40px;
+		.nav-item {
+			flex: 1;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 100%;
+			font-size: 30rpx;
+			color: $font-color-dark;
+			position: relative;
+			&.current {
+				color: $base-color;
+				&:after {
+					content: '';
+					position: absolute;
+					left: 50%;
+					bottom: 0;
+					transform: translateX(-50%);
+					width: 120rpx;
+					height: 0;
+					border-bottom: 4rpx solid $base-color;
+				}
+			}
+		}
+		.p-box {
+			display: flex;
+			flex-direction: column;
+			.iconfont {
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				width: 30rpx;
+				height: 14rpx;
+				line-height: 1;
+				margin-left: 4rpx;
+				font-size: 26rpx;
+				color: #888;
+				&.active {
+					color: $base-color;
+				}
+			}
+			.xia {
+				transform: scaleY(-1);
+			}
+		}
+		.cate-item {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 100%;
+			width: 80rpx;
+			position: relative;
+			font-size: 44rpx;
+			&:after {
+				content: '';
+				position: absolute;
+				left: 0;
+				top: 50%;
+				transform: translateY(-50%);
+				border-left: 1px solid #ddd;
+				width: 0;
+				height: 36rpx;
+			}
+		}
+	}
+}
+
+/* 分类 */
+.cate-mask {
+	position: fixed;
+	left: 0;
+	top: var(--window-top);
+	bottom: 0;
+	width: 100%;
+	background: rgba(0, 0, 0, 0);
+	z-index: 95;
+	transition: 0.3s;
+
+	.cate-content {
+		width: 630rpx;
+		height: 100%;
+		background: #fff;
+		float: right;
+		transform: translateX(100%);
+		transition: 0.3s;
+	}
+	&.none {
+		display: none;
+	}
+	&.show {
+		background: rgba(0, 0, 0, 0.4);
+
+		.cate-content {
+			transform: translateX(0);
+		}
+	}
+}
+.cate-list {
+	display: flex;
+	flex-direction: column;
+	height: 100%;
+	.cate-item {
+		display: flex;
+		align-items: center;
+		height: 90rpx;
+		padding-left: 30rpx;
+		font-size: 28rpx;
+		color: #555;
+		position: relative;
+	}
+	.two {
+		height: 64rpx;
+		color: #303133;
+		font-size: 30rpx;
+		background: #f8f8f8;
+	}
+	.active {
+		color: $base-color;
+	}
+}
+
+/* 商品列表 */
+.goods-list {
+	display: flex;
+	flex-wrap: wrap;
+	padding: 0 30rpx;
+	// background: #fff;
+	// padding-top: 30rpx;
+	.goods-item {
+		display: flex;
+		flex-direction: column;
+		width: 48%;
+		padding-bottom: 30rpx;
+		border-radius: 10rpx;
+		background: #FFFFFF;
+		margin-top: 20rpx;
+		&:nth-child(2n + 1) {
+			margin-right: 4%;
+		}
+	}
+	.image-wrapper {
+		width: 100%;
+		height: 330rpx;
+		border-radius: 10rpx 10rpx 0 0;
+		overflow: hidden;
+		image {
+			width: 100%;
+			height: 100%;
+			opacity: 1;
+		}
+	}
+	.title {
+		font-size: $font-base - 2rpx;
+		color: $font-color-dark;
+		line-height: 1.2;
+		height: 64rpx;
+		// padding-top: 20rpx;
+		padding: 0 20rpx;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+	}
+	.price-box {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 10rpx 20rpx 0;
+		font-size: 24rpx;
+		color: $font-color-light;
+	}
+	.price {
+		font-size: $font-lg;
+		// color: $uni-color-primary;
+		color: #EF041F;
+		line-height: 1;
+		&:before {
+			content: '¥';
+			font-size: 26rpx;
+		}
+	}
+}
+</style>

+ 166 - 0
pages/product/ping.vue

@@ -0,0 +1,166 @@
+<template>
+	<view class="center">
+		<image class="logo-img" src="../../static/img/img01.png"></image>
+		<view class="goods-list">
+			<view v-for="(item, index) in 2" :key="index" class="guess-item" @click="navToDetailPage(item)">
+				<image src=""></image>
+				<view class="guess-box">
+					<view class="title clamp2">
+						<view class="tuanF">
+							<view class="tuan">
+								<image class="tuan-image" src="../../static/img/fire.png" mode=""></image>
+								<view class="tuan-font">11人团1人中</view>
+							</view>
+						</view>
+						西部数据 紫盘 4TB 移动监控硬盘...
+					</view>
+					<view class="price-box flex">
+						<view class="yuanprice">105</view>
+						<image src="../../static/img/down.png" mode=""></image>
+						<view class="jiang">直降40元</view>
+					</view>
+					<view class="price">¥65</view>
+					<view class="btn">马上拼</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			producList: []
+		};
+	},
+	methods: {
+		navToDetailPage(item){
+			uni.navigateTo({
+				url:'/pages/product/pingDetails'
+			})
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.center,
+page {
+	height: 100%;
+	background: #f8f6f6;
+}
+.logo-img {
+	margin: 20rpx;
+	width: 710rpx;
+	height: 268rpx;
+}
+/* 商品列表 */
+.goods-list {
+	display: flex;
+	flex-wrap: wrap;
+	padding: 0 30rpx;
+	background: #fff;
+	.guess-item {
+		display: flex;
+		width: 710rpx;
+		height: 290rpx;
+		background: #ffffff;
+		box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+		border-radius: 10rpx;
+		padding: 15rpx;
+		margin: 20rpx auto 0;
+		position: relative;
+		image {
+			background: #000000;
+			width: 260rpx;
+			height: 260rpx;
+			border-radius: 10rpx;
+		}
+		.guess-box {
+			padding: 12rpx 0 0 24rpx;
+			width: 436rpx;
+			.title {
+				font-size: 30rpx;
+				padding-left: 4rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				width: 368rpx;
+				line-height: 36rpx;
+				.tuanF {
+					display: inline-block;
+					margin-right: 4rpx;
+					position: relative;
+					top: -6rpx;
+					.tuan {
+						display: flex;
+						align-items: center;
+						padding: 10rpx;
+						height: 36rpx;
+						background: #ffebe9;
+						border-radius: 18rpx;
+						.tuan-image {
+							width: 18rpx;
+							height: 18rpx;
+						}
+						.tuan-font {
+							display: inline;
+							font-size: 20rpx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #ff1135;
+							margin-left: 2rpx;
+						}
+					}
+				}
+			}
+
+			.price-box {
+				margin-top: 88rpx;
+				justify-content: flex-start;
+				.yuanprice {
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					text-decoration: line-through;
+					color: #999999;
+					padding-right: 6rpx;
+				}
+				image {
+					width: 14rpx;
+					height: 16rpx;
+				}
+				.jiang {
+					padding-left: 2rpx;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #b59467;
+				}
+			}
+			.price {
+				font-size: 36rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #ff1135;
+			}
+			.btn {
+				width: 137rpx;
+				height: 56rpx;
+				background: linear-gradient(0deg, #2e58ff, #32c6ff);
+				border-radius: 28rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 56rpx;
+				text-align: center;
+				position: absolute;
+				bottom: 25rpx;
+				right: 25rpx;
+			}
+		}
+	}
+}
+</style>

+ 253 - 0
pages/product/pingDetails.vue

@@ -0,0 +1,253 @@
+<template>
+	<view class="center">
+		<view class="top"><image src="" mode=""></image></view>
+		<view class="name-box">
+			<view class="price-box">
+				
+				¥
+				<text class="price">9800</text>
+				<text class="yuan">¥229</text>
+			</view>
+			<view class="name clamp">西部数据 紫盘 4TB 移动监控硬盘</view>
+			<view class="info">
+				<view class="info-item">
+					快递:¥0.00
+				</view>
+				<view class="info-item">
+					销量:56件
+				</view>
+				<view class="info-item">
+					浙江省台州市
+				</view>
+			</view>
+		</view>
+		<view class="tip-box">
+			<view class="tip-titele">拼团玩法</view>
+			<view class="tip-main">开团/参团-邀请好友-满员开团-拼中发货</view>
+		</view>
+		<view class="tip-box">
+			<view class="tip-titele">拼团须知</view>
+			<view class="tip-main">开团玩法详细介绍开团玩法详细介绍开团 玩法详细介绍开团玩法详细介绍开团玩法 详细介绍开团玩法详细介绍</view>
+		</view>
+		<view class="detail">
+			<view class="detail-title">商品详情</view>
+			<view class="systom"></view>
+		</view>
+		<view class="btn" @click="buy()">立即拼团</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
+		};
+	},
+	onLoad(option) {
+		this.id = option.id;
+		this.type = option.type;
+	},
+
+	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/order/createOrder'
+			});
+			// console.log(this.list,'--------------***********')
+			// console.log('buy click')
+		},
+		changeCurrent(index) {
+			this.current = index;
+		},
+		back() {
+			uni.navigateBack({
+				url: '/pages/calculation/buyCalculation'
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+page,
+.center {
+	background: #f8f6f6;
+	height: 100%;
+}
+.top {
+	background: #45969b;
+	width: 750rpx;
+	height: 710rpx;
+}
+.name-box {
+	padding: 30rpx 26rpx;
+	line-height: 1;
+	background-color: #ffffff;
+	.price-box {
+		font-size: 28rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #e83f30;
+		.price {
+			font-size: 48rpx;
+		}
+		.yuan {
+			padding-left: 10rpx;
+			font-size: 30rpx;
+			font-weight: 500;
+			text-decoration: line-through;
+			color: #999999;
+		}
+	}
+	.name {
+		font-size: 34rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #1d2023;
+		margin-top: 30rpx;
+	}
+	.info {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		margin-top: 30rpx;
+		font-size: 24rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #999999;
+	}
+}
+.tip-box {
+	margin-top: 20rpx;
+	padding: 34rpx 60rpx 50rpx 30rpx;
+	display: flex;
+	align-items: flex-start;
+	background-color: #ffffff;
+	.tip-titele {
+		font-size: 32rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #3b3b3b;
+	}
+	.tip-main {
+		margin-left: 30rpx;
+		width: 500rpx;
+		font-size: 26rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #8a8a8a;
+	}
+}
+.detail {
+	.detail-title {
+		width: 750rpx;
+		height: 80rpx;
+		line-height: 80rpx;
+		text-align: center;
+		font-size: 28rpx;
+		font-family: PingFangSC;
+		font-weight: bold;
+		color: #1d2023;
+	}
+}
+.btn {
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+	width: 750rpx;
+	height: 98rpx;
+	background: linear-gradient(0deg, #2e58ff, #32c6ff);
+	text-align: center;
+	line-height: 98rpx;
+	font-size: 36rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	color: #ffffff;
+}
+</style>

+ 2579 - 0
pages/product/product.vue

@@ -0,0 +1,2579 @@
+<template>
+	<view class="container">
+		<view class="carousel">
+			<swiper indicator-dots :circular="true" duration="400">
+				<swiper-item class="swiper-item" v-for="(item, index) in imgList" :key="index">
+					<view class="image-wrapper"><image :src="item" class="loaded" mode="scaleToFill"></image></view>
+				</swiper-item>
+			</swiper>
+		</view>
+
+		<view class="introduce-section">
+			<view class="price-box flex">
+				<view class="flex_item">
+					<view>
+						<text class="price" v-if="wholesale == 1">{{ goodsObjact.wholesaler_price | parseFloatNum }}</text>
+						<text class="price" v-else-if="userInfo.level > 0">{{ goodsObjact.vip_price | parseFloatNum }}</text>
+						<text class="price" v-else>{{ goodsObjact.price | parseFloatNum }}</text>
+					</view>
+					<view class="vip_price">¥{{ goodsObjact.ot_price | parseFloatNum }}</view>
+				</view>
+				<!-- #ifdef H5 -->
+				<view class="fenxiang" @click="open">
+					<image class="fenxiang-img" src="https://tmp01.kktv6.com/img/share.png"></image>
+				</view>
+				<view class="mask" v-show="show"><image @click="onTap" src="https://tmp01.kktv6.com/img/shareimg.png"></image></view>
+				<!-- #endif -->
+				<!-- #ifdef MP -->
+				<view class="fenxiang" @click="share">
+					<image class="fenxiang-img" src="https://tmp01.kktv6.com/img/share.png"></image>
+				</view>
+				<!-- <button open-type="share" class="fenxiang" v-if="userInfo.level == 2">
+					<image class="fenxiang-img" src="https://tmp01.kktv6.com/img/share.png"></image>
+				</button> -->
+				<!-- #endif -->
+			</view>
+			<view class="title">{{ goodsObjact.store_name }}</view>
+			<!-- <view class="bot-row">
+				<text>销量: {{ goodsObjact.sales + goodsObjact.ficti }}</text>
+				<text>库存: {{ goodsObjact.stock - goodsObjact.ficti }}</text>
+				<text>邮费: {{ goodsObjact.postage }}</text>
+			</view> -->
+		</view>
+		<!-- <view class="quan" @click="openpop">
+			<view class="quan-left">
+				领券
+			</view>
+			<view class="img-box">
+				<image src="https://tmp01.kktv6.com/img/quan.png" mode="" class="quan-img"></image>
+			</view>
+			<view class="quan-center">
+				领券购物更优惠
+			</view>
+			<view class="quan-right">
+				<text class="iconfont iconenter" style="color: #CCCCCC;"></text>
+			</view>
+		</view> -->
+		
+		<view class="eva-section" v-if="reply" @click="navTo('/pages/product/reply?id=' + goodsid)">
+			<view class="e-header">
+				<text class="tit">评价</text>
+				<text>({{ list.replyCount }})</text>
+				<text class="tip">好评率 {{ list.replyChance }}%</text>
+				<text class="iconfont iconenter"></text>
+			</view>
+			<view class="eva-box">
+				<image class="portrait" :src="reply.avatar || '/static/error/missing-face.png'" mode="aspectFill"></image>
+				<view class="right">
+					<text class="name">{{ reply.nickname }}</text>
+					<text class="con">{{ reply.comment }}</text>
+					<view class="con_box">
+						<view class="con_image" v-for="item in reply.pics"><image :src="item"></image></view>
+					</view>
+					<view class="bot">
+						<text class="attr"></text>
+						<text class="time">{{ reply.add_time }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 商品详情图 -->
+		<view class="detail-desc">
+			<!-- @click="showoption" -->
+			<view class="d-header"><text>商品详情</text></view>
+			<rich-text :nodes="goodsObjact.description"></rich-text>
+		</view>
+		<!-- 热销推荐 -->
+		<view v-if="!wholesale && store_id == 0">
+			<view class="hotsheader" v-if="hotList.length != 0">
+				热销推荐
+			</view>
+			<view class="hotgoods">
+				<view class="hotgoods-item" v-for="item in hotList" :key = "item.id" @click="navToDetailPage(item)">
+					<view class="image-wrapper"><image :src="item.image" mode="scaleToFill"></image></view>
+					<view class="title clamp margin-c-20">{{ item.store_name }}</view>
+					<view class="hot-price">
+						<view class="price">
+							<text class="font-size-sm">¥</text>
+							{{ item.price }}
+						</view>
+						<view class="cart-icon">
+							<image src="https://zhibo.liuniu946.com/img/img002.png" mode=""></image>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="page-bottom">
+			<view class="action-btn-group pt-btn-group">
+				<!-- <navigator url="/pages/index/index" open-type="switchTab" class="p-b-btn">
+					<text class="iconfont iconhomefill"></text>
+					<text>首页</text>
+				</navigator> -->
+				<view class="p-b-btn" :class="{ active: goodsObjact.userCollect }" @click="toFavorite(goodsObjact)">
+					<text class="iconfont iconlikefill"></text>
+					<text>收藏</text>
+				</view>
+				<!-- <button v-if="!isaddCart" type="primary" class=" action-btn1 no-border buy-now-btn" @click="toggleSpec(2)">加入购物车</button> -->
+				<button v-if="!wholesale && store_id == 0"type="primary" class=" action-btn1 no-border buy-now-btn" @click="toggleSpec(2)">加入购物车</button>
+
+				<button type="primary" class=" action-btn1 no-border add-cart-btn" @click="toggleSpec(1)">立即购买</button>
+			</view>
+		</view>
+		
+		<!-- 规格-模态层弹窗 -->
+		<view class="popup spec" :class="specClass" @touchmove.stop.prevent="stopPrevent" @click="toggleSpec()">
+			<!-- 遮罩层 -->
+			<view class="mask"></view>
+			<view class="layer attr-content" @click.stop="stopPrevent">
+				<view class="a-t">
+					<image :src="actionImage"></image>
+					<view class="right">
+						<text class="name">{{ goodsObjact.store_name }}</text>
+						<text class="price">¥{{ actionPrice * goodsNumber }}</text>
+						<!-- <text class="stock">库存:{{ goodsStore }}件</text> -->
+						<view class="selected" v-if="specList != ''">
+							已选:
+							<text class="selected-text" v-for="(sItem, sIndex) in specSelected" :key="sIndex">{{ sItem }}</text>
+						</view>
+					</view>
+				</view>
+				<view v-for="(item, index) in specList" :key="index" class="attr-list">
+					<text>{{ item.attr_name }}</text>
+					<view class="item-list">
+						<text
+							v-for="(childItem, childIndex) in item.attr_value"
+							:key="childIndex"
+							class="tit"
+							:class="{ selected: childItem.check }"
+							@click="selectSpec(childItem, item, index)"
+						>
+							{{ childItem.attr }}
+						</text>
+					</view>
+				</view>
+				<view class="attr-list">
+					<text>购买数量</text>
+					<view class="num-list">
+						<uni-number-box class="step" :isMin="true" :value="goodsNumber" :min="1" :max="goodsNumberMax" @eventChange="numberChange"></uni-number-box>
+					</view>
+				</view>
+				<button class="btn" @click.stop="buy" v-show="buys_show">完成</button>
+				<button class="btn" style="background-color: #999999;" v-show="buys_shows">售罄</button>
+			</view>
+		</view>
+		<view v-if="shareShow" class="Shraremask" @click="cancel">
+			<view class="mask-content">
+				<scroll-view class="view-content" scroll-y>
+					<view class="share-header">分享到</view>
+					<view class="share-list">
+						<view class="share-item">
+							<!-- 微信 -->
+							<button class="wechat-box" open-type="share">
+								<image class="itemImage" src="https://tmp01.kktv6.com/img/img001.png" mode=""></image>
+								<text class="itemText">微信</text>
+							</button>
+							<!-- 朋友圈 -->
+							<view class="wechat-box" @click="shareToFriend()">
+								<image class="itemImage" src="https://tmp01.kktv6.com/img/img002.png" mode=""></image>
+								<text class="itemText">朋友圈</text>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+				<view class="bottomButtom b-t" @click="cancel">取消</view>
+			</view>
+		</view>
+		
+		<uni-popup ref="popup1" style="z-index: 998;" type="bottom">
+			<view class="pop-box">
+				<view class="pop-top">
+					<view class="top-center">
+						领取优惠券
+					</view>
+					<view class="top-right" @click="closepop">
+						<image src="https://tmp01.kktv6.com/img/close.png" mode="" class="right-img"></image>
+					</view>
+				</view>
+		
+				<scroll-view class="scroll-h" scroll-y="true">
+					<view class="pop-center">
+						<view class="pop-item" v-for="(item,index) in quanlist" :key='index'>
+							<view class="item-left">
+								<view class="pic">
+									¥<text style="font-size: 59rpx;">{{item.coupon_price}}</text>
+								</view>
+								<view class="pic-info">
+									满{{item.use_min_price}}元使用
+								</view>
+							</view>
+							<view class="item-right">
+								<view class="right-left">
+									<view class="top">
+										{{item.title}}
+									</view>
+									<view class="center" v-if="item.type == 0">通用券</view>
+									<view class="center" v-if="item.type == 2">商品券</view>
+									<view class="foot">
+										<text v-if="item.end_time !== '不限时'">有效期至{{item.end_time}}</text>
+										<text v-if="item.end_time == '不限时'">不限时</text>
+									</view>
+								</view>
+								<view class="right-right" @click="lingqu(item)" v-if="!item.used">
+									立即领取
+								</view>
+								<view class="right-right" v-if="item.used || item.show">
+									已领取
+								</view>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+		</uni-popup>
+		
+		<!-- 分享弹出窗 -->
+		<view class="pop-mask" v-if="backShare" @click="closeBack"><image class="share-img" :src="shareImage" mode="aspectFit" @longpress="saveImg()"></image></view>
+	</view>
+</template>
+<script>
+	import { getProducts } from '@/api/product.js';
+import { mapState } from 'vuex';
+import uniNumberBox from '@/components/uni-number-box.vue';
+// 11
+// import { uniFav } from '@/components/uni-fav/uni-fav.vue';
+import { goodsDetail, cartAdd, collectAdd, collectDel, productDetail, productCode } from '@/api/product.js';
+import { saveUrl } from '@/utils/loginUtils.js';
+// 111
+// import { couponslist, setCoupons } from '@/api/coupon.js'
+// import uniNoticeBar from '@/components/uni-notice-bar/uni-notice-bar.vue';
+import uniPopup from '@/components/uni-popup/uni-popup.vue';
+// #ifdef H5
+import { weixindata } from '@/utils/wxAuthorized';
+// #endif
+export default {
+	filters: {
+		// 去处小数点后的0
+		parseFloatNum(clock) {
+			return parseFloat(clock);
+		},
+	},
+	components: {
+		uniNumberBox,
+		uniFav,
+		uniNoticeBar,
+		uniPopup
+	},
+	// #ifdef MP
+	onShareAppMessage: function(res) {
+			// 来自页面内分享按钮
+			let pages = getCurrentPages();
+			// 获取当前页面
+			let page = pages[pages.length - 1];
+			let path = '/' + page.route + '?';
+			// 保存传值
+			for (let i in page.options) {
+				path += i + '=' + page.options[i] + '&';
+			}
+			// 保存邀请人
+			path += 'spread=' + this.userInfo.uid;
+			console.log(path);
+			let data = {
+				path: path,
+				imageUrl: this.goodsObjact.image,
+				title: this.goodsObjact.store_name
+			};
+			console.log(data);
+			return data;
+	},
+	// #endif
+	data() {
+		return {
+			wholesale:'',  
+			one_num:0,
+			is_integral: '', // 是否是积分
+			use_integral:0, // 可用积分
+			integral:0,
+			is_vip: '', // 是否是vip
+			is_repurchase: '',  // 是否是复购
+			isaddCart:0,
+			shareShow: false, //分享
+			backShare: false, // 分享遮罩层
+			show: false,
+			showModal: true, //拼单遮罩层
+			more: true, //查看更多按钮
+			autoplay: true,
+			vertical: true,
+			interval: 3000,
+			duration: 500,
+			buys_show: true,
+			buys_shows: false,
+			circular: true,
+			type: 1, //默认支付方式add为
+			specClass: 'none', //显示隐藏弹窗
+			actionImage: '', //商品图片
+			goodsid: '', //商品id
+			store_id: '', //小店id
+			actionPrice: '', //商品价格
+			// specClass: 'none', //显示隐藏弹窗
+			goodsObjact: {}, //保存商品数据
+			goodsNumberMax: 0, //商品库存
+			//图片循环
+			imgList: [], //商品轮播图
+			specList: [], //保存规格列表
+			people: '', //拼团人数
+			goodsNumber: 1, //购买数量(开团数量为1,整团数量为1*参团人数)
+			carnumber: '', //整团购买商品数量
+			reply: '', //商品数据
+			list: '', //详情数据
+			goodsType: 0, //商品类型1秒杀商品0为普通商品2为拼团商品3为新人礼包
+			pinkTlist: '', //拼团数据
+			count: 0, //点击查看更多
+			showlist: [],
+			showmore: true,
+			pinkTlistnum: '',
+			spread: '',
+			chooseGoodsNumber: 1, //选择商品的数量
+			specSelected: [], //选中的分类
+			goodsStore: 0, //选中库存
+			uniqueId: '', //选中的规格id
+			productValue: '', //保存属性值对象
+			isCollect: '', //是否被收藏
+			maskshow: false, //弹窗
+			posturl: '',
+			shareImage: '', // 获取的分享海报
+			option: '', //保存传值
+			opt: '', //保存小程序传值
+			// 保存普通商品详细
+			goodsData: {
+				specSelected: [], //选中的分类
+				productValue: '', //保存属性值对象
+				specList: [], //保存规格列表
+				goodsStore: 0, //选中库存
+				actionImage: '', //商品图片
+				actionPrice: '', //商品价格
+				goodsNumber: 1, //购买数量(开团数量为1,整团数量为1*参团人数)
+				goodsObjact: {}, //商品对象数据
+				uniqueId: '', //选中的规格id
+				goodsType: 0, //商品类型1秒杀商品0为普通商品2为拼团商品3为新人礼包
+				list: '' //报
+			},
+			goodsDataType: 0, //判断是否为团队的商品
+			//保存拼团商品信息
+			pinkGoodsData: {
+				specSelected: [], //选中的分类
+				productValue: '', //保存属性值对象
+				specList: [], //保存规格列表
+				goodsStore: 0, //选中库存
+				actionImage: '', //商品图片
+				actionPrice: '', //商品价格
+				goodsNumber: 1, //购买数量(开团数量为1,整团数量为1*参团人数)
+				goodsObjact: {}, //商品对象数据
+				uniqueId: '', //选中的规格id
+				goodsType: 2 //商品类型1秒杀商品0为普通商品2为拼团商品3为新人礼包
+			},
+			PinkShow: {},	// 显示拼团
+			AutopinkList: [],	// 谁购买了商品
+			AutoList: '',
+			quanlist: [], //优惠券列表
+			tuanzhangPrice: '',	// 团长立省
+			many: 1, //1是单规格  2是多规格
+			hotList:[],//热销推荐产品
+		};
+	},
+	computed: {
+		...mapState(['userInfo']),
+	},
+	onLoad(option) {
+		console.log('option',option);
+		this.wholesale = option.wholesale
+		this.use_integral = option.use_integral
+		console.log('可用积分',this.use_integral );
+		this.option = option;
+		if (option.scene) {
+			if (typeof option.scene == 'string') {
+				let scene = ('{' + option.scene + '}')
+					.replace('qr%26', '')
+					.replace(/%3D/g, ':')
+					.replace(/%26/g, ',')
+					.replace('pid', '"pid"')
+					.replace('type', '"type"')
+					.replace('id', '"id"')
+					.replace('sid', '"sid"');
+				let opt = JSON.parse(scene);
+				this.opt = opt;
+				// 保存拼团订单id
+				this.goodsid = opt.id;
+				if (opt.pid) {
+					// 存储邀请人
+					this.spread = opt.pid;
+					uni.setStorageSync('spread', opt.pid);
+				}
+				if (opt.type) {
+					this.goodsType = opt.type;
+				}
+			}
+		} else {
+			//保存商品id
+			this.goodsid = option.id;
+			//保存店铺id
+			this.store_id = option.sid;
+			console.log("店铺id",this.store_id)
+			//判断有无人邀请
+			if (option.spread) {
+				// 存储邀请人
+				this.spread = option.spread;
+				uni.setStorageSync('spread', option.spread);
+			}
+			//判断是否是普通商品
+			if (option.type) {
+				console.log(option.type);
+				this.goodsType = option.type;
+			}
+		}
+		// 保存当前页面
+		saveUrl();
+	},
+	onShow() {
+		let obj = this;
+		obj.gethot();
+		obj.more = true;
+		obj.productDetail();
+		obj.loadCoupon();
+		// combination({}, obj.goodsid).then()
+	},
+	computed: {
+		...mapState(['userInfo', 'baseURL'])
+	},
+	methods: {
+		// 跳转普通商品
+		navToDetailPage(item) {
+			uni.navigateTo({
+				url: '/pages/product/product?id=' + item.id
+			})
+		},
+		//获取热销推荐
+		gethot(){
+			getProducts({
+				page: 1,
+				limit: 10,
+				sid: 29
+			}).then(({data}) => {
+				console.log(data);
+				this.hotList = data;
+			})
+		},
+		// 加载普通商品信息
+		productDetail(type = false) {
+			let obj = this;
+			let id = obj.goodsid;
+			// 获取普通商品信息
+			productDetail({}, id).then(function({ data }) {
+				console.log('-----',data)
+				// is_integral,is_vip,is_repurchase
+				// 判断是否在拼团商品中
+				obj.imgList = data.storeInfo.slider_image; //保存轮播图
+				obj.one_num = data.storeInfo.one_num
+				obj.goodsDataProcessing(data, obj); //保存默认
+				// #ifdef H5
+				obj.shareDate();
+				// #endif
+			});
+			return;
+		},
+		
+		// 基础数据处理
+		goodsDataProcessing(data, obj) {
+			console.log('基础数据处理data',data)
+			let goods = data.storeInfo;
+			if (data.reply) {
+				obj.reply = data.reply;
+			}
+			//
+			obj.list = data;
+			obj.goodsObjact = goods;
+			console.log(obj.goodsObjact,'93985')
+			let tzshen = '', tzPrice = '';
+			// 计算价格
+			console.log('obj.userInfo',obj.userInfo);
+			// if ( obj.userInfo.level_info.list.length > 0 ) {
+			// 	tzshen = obj.userInfo.level_info.list[1].discount / 100;
+			// 	tzPrice = (obj.goodsObjact.price * 100) - (obj.goodsObjact.price * tzshen * 100);
+			// } else {
+			// 	tzPrice = (obj.goodsObjact.price * 100) - (obj.goodsObjact.vip_price * 100);
+			// }
+			
+			obj.tuanzhangPrice =( obj.goodsObjact.price -obj.goodsObjact.cost )*obj.goodsObjact.level3_common_rate/100 //(tzPrice / 100).toFixed(2);
+			console.log(tzPrice, obj.tuanzhangPrice, '团长省');
+			
+			//商品详情图超出屏幕问题
+			if (obj.goodsObjact.description != null) {
+				obj.goodsObjact.description = obj.goodsObjact.description.replace(/<img/g, '<img class="rich-img"').replace(/<p>\s*<img/g, '<p class="pHeight"><img');
+			}
+			if ( obj.goodsObjact.rule != null ) {
+				obj.goodsObjact.rule ='<p>' + obj.goodsObjact.rule.replace(/\n/g, '</p><p>').trim() + '</p>'
+			}
+			
+			
+			if (data.productAttr) {
+				let productValueArr = {}; //保存循环数据结果
+				// 循环获取用于判断是否显示分类的数组
+				for (let i in data.productValue) {
+					//判断该分类是否可以选择
+					let arr = i.split(',');
+					for (let j = 0; j < arr.length; j++) {
+						//判断是否已经保存该对象不存在则保存
+						if (!productValueArr[arr[j]]) {
+							productValueArr[arr[j]] = true;
+						}
+					}
+				}
+				console.log(productValueArr,"循环")
+				// 循环获取分类数据并过滤保存
+				obj.specList = data.productAttr.map(e => {
+					let attr_value = [];
+					let attr_values = [];
+					// 循环获取判断是否存在相对应的数据
+					e.attr_value.forEach(s => {
+						// 判断是否存在对应的数据
+						if (productValueArr[s.attr]) {
+							attr_value.push(s);
+							attr_values.push(s.attr);
+							return;
+						}
+					});
+					//
+					e.attr_value = attr_value;
+					e.attr_values = attr_values;
+					// 判断该分类下是否有数据
+					if (attr_value.length > 0) {
+						return e;
+					}
+				}); //保存分类列表
+			}
+
+			//保存属性值
+				obj.productValue = data.productValue;
+			// obj.productValue = data.productValue.默认;
+			console.log('obj.productValue ',obj.productValue )
+			// 保存默认选中的对象
+			obj.specSelected = []; //初始化默认选择对象
+			for (let i = 0; i < obj.specList.length; i++) {
+				// 设置默认数据
+				let attrValue = obj.specList[i].attr_value[0];
+				attrValue.check = true;
+				obj.specSelected.push(attrValue.attr);
+			
+			}
+
+			//保存默认选中的对象字符串名称
+			let str = obj.specSelected.join(',');
+			// 设置默认值
+			if(obj.wholesale == 1){
+				obj.actionPrice = obj.productValue[str].wholesaler_price;
+			}else {
+				obj.actionPrice = obj.productValue[str].price;
+			}
+			obj.goodsNumberMax = obj.productValue[str].stock;
+			obj.actionImage = obj.productValue[str].image;
+			obj.uniqueId = obj.productValue[str].unique;
+			console.log('---999data.storeInfo',data.storeInfo)
+			// obj.goodsStore = obj.goodsObjact[str].stock;
+		},
+		// 数据根据分类保存保存
+		loadCoupon() {
+			let obj = this;
+			couponslist({
+				page: 1,
+				limit: 100
+			}).then(({ data }) => {
+				obj.quanlist = data;
+				obj.quanlist.map(e => {
+					e.coupon_price = parseInt(e.coupon_price);
+					e.use_min_price = parseInt(e.use_min_price);
+					e.show = false
+				})
+				couponslist({
+					page: 1,
+					limit: 100,
+					product_id: obj.goodsid,
+					type: 1
+				}).then(({ data }) => {
+					let shopList = data;
+					shopList.map(e => {
+						e.coupon_price = parseInt(e.coupon_price);
+						e.use_min_price = parseInt(e.use_min_price);
+						e.show = false
+					})
+					obj.quanlist = obj.quanlist.concat(shopList)
+				})
+			})
+		},
+		lingqu(item) {
+			setCoupons({
+				couponId: item.id
+			}).then((data) => {
+				console.log(data);
+				if (data.status == 200) {
+					this.$api.msg('领取成功')
+					item.show = true;
+					this.$refs.popup1.close();
+					this.loadCoupon();
+				}
+			})
+		},
+		//分享
+		share() {
+			this.shareShow = true;
+		},
+		//取消分享
+		cancel() {
+			this.shareShow = false;
+			if (!this.share) return;
+			this.close();
+		},
+		// 分享海报关闭按钮
+		closeBack() {
+			this.backShare = false;
+		},
+		// 长按保存图片
+		saveImg(w) {
+			console.log(w);
+			let obj = this;
+			uni.downloadFile({
+				//下载图片
+				url: obj.shareImage,
+				success: res => {
+					console.log(res.tempFilePath);
+					uni.saveImageToPhotosAlbum({
+						//将图片保存在手机
+						filePath: res.tempFilePath, //保存的位置
+						success: res => {
+							uni.showToast({
+								title: '保存成功',
+								icon: 'none'
+							});
+						}
+					});
+				}
+			});
+		},
+		// 具体分享
+		shareToFriend(item) {
+			let obj = this;
+			uni.showLoading({
+				title: 'Loading...',
+				mask: true
+			})
+			// #ifdef H5
+			let url = location.href;
+			// #endif
+			productCode({
+				id: obj.goodsid,
+				type: 1,
+				// #ifdef MP-WEIXIN
+				user_type: 'routine', //来源
+				// #endif
+				// #ifdef H5
+				user_type: 'wechat', //来源
+				// #endif
+				// #ifdef H5
+				qurl: url
+				// #endif
+			}).then(({ data }) => {
+				this.backShare = true;
+				this.shareImage = data.url;
+				uni.hideLoading();
+				console.log(data);
+			}).catch(e=> {
+				uni.hideLoading()
+			})
+		},
+		
+		closepop() {
+			this.$refs.popup1.close();
+		},
+		openpop() {
+			if (this.quanlist.length == 0) {
+				this.$api.msg('暂无优惠券')
+			} else {
+				this.$refs.popup1.open();
+			}
+		},
+		//防止冒泡和滚动穿透
+		stopPrevent() {},
+		numberChange(e) {
+			//购买数量
+			this.chooseGoodsNumber = e.number;
+		},
+		// 拼团发起拼单
+		specOPne() {
+			this.goodsDataType = 0;
+			//显示弹出框
+			this.specClass = 'show';
+			// 拼团
+			this.productDataUp(this.pinkGoodsData);
+		},
+		
+		// 一键拼团
+		// PinkAuto() {
+		// 	console.log(11111)
+		// 	this.goodsDataType = 2;
+		// 	//显示弹出框
+		// 	this.specClass = 'show';
+		// 	// 拼团
+		// 	this.productDataUp(this.pinkGoodsData);
+		// },
+		
+		// 处理数组结构
+		dataUpReturn(data) {
+			//保存处理完毕数据
+			let arr = [];
+			// 保存临时数据
+			let arr1 = [];
+			// 设置每个小数组可以存放的数量
+			let num = 2;
+			if (data.length > 1) {
+				for (let i = 0; i < data.length; i++) {
+					// 保存数据到临时数组
+					arr1.push(data[i]);
+					if ((i + 1) % num === 0) {
+						console.log(arr1, 2);
+						// 添加数据到返回数组,用map方法解决物理指针问题导致的数据对象改变问题
+						arr.push(
+							arr1.map(e => {
+								return e;
+							})
+						);
+						// 清空临时数组重新开始计算
+						arr1 = [];
+					}
+				}
+			}
+			// 判断是否为奇数
+			if (data.length % num === 1) {
+				arr.push([data[data.length - 1]]);
+			}
+			return arr;
+		},
+		//拼团列表数据分页
+		setPinkList() {
+			let obj = this;
+			let showlist = new Array();
+			for (let i = 0; i < obj.pinkTlist.length; i++) {
+				if (i >= obj.count) {
+					break;
+				}
+				showlist[i] = obj.pinkTlist[i];
+			}
+			obj.showlist = showlist;
+		},
+		//查看更多
+		// clickMore() {
+		// 	let obj = this;
+		// 	obj.count += 2;
+		// 	obj.setPinkList();
+		// 	if (obj.count >= obj.pinkTlist.length) {
+		// 		obj.showmore = false; //当次数大于拼团数据,查看更多隐藏
+		// 	} else {
+		// 		obj.showmore = true; //当次数大于拼团数据,查看更多隐藏
+		// 	}
+		// },
+		clickMore() {
+			this.showlist = this.pinkTlist;
+			console.log(this.showlist, 22);
+			this.more = false;
+		},
+		//规格弹窗开关
+		toggleSpec(str) {
+			// console.log('是否是登录状态',this.hasLogin)
+			// if (!this.hasLogin) {
+			// 	uni.showModal({
+			// 		title: '登录',
+			// 		content: '您未登录,是否马上登陆?',
+			// 		success: e => {
+			// 			if (e.confirm) {
+			// 				interceptor();
+			// 			}
+			// 		},
+			// 		fail: e => {
+			// 			console.log(e);
+			// 		}
+			// 	});
+			// 	return;
+			// }
+			// uni.navigateTo({
+			// 	url
+			// });
+			if (this.specClass === 'show') {
+				this.specClass = 'hide';
+				setTimeout(() => {
+					this.specClass = 'none';
+				}, 250);
+			} else if (this.specClass === 'none') {
+				this.specClass = 'show';
+			}
+			// 判断是否为数字
+			if (typeof str == 'number') {
+				// 保存当前购买类型
+				this.type = str;
+			}
+		},
+		//选择规格
+		selectSpec(item, arr, ind) {
+			console.log('--999--',item, arr, ind);
+			arr.attr_value.forEach(function(e) {
+				e.check = false;
+			});
+			item.check = true;
+			let obj = this;
+			obj.specSelected[ind] = item.attr;
+			let str = obj.specSelected.join(',');
+			console.log(str);
+			// 获取当前选中的对象
+			if (obj.productValue[str]) {
+				console.log(obj.productValue[str],'当前选中对象')
+				obj.buys_show = true;
+				obj.buys_shows = false;
+				if(obj.wholesale == 1){
+					obj.actionPrice = obj.productValue[str].wholesaler_price;
+				}else {
+					obj.actionPrice = obj.productValue[str].price;
+				}
+				obj.goodsNumberMax = obj.productValue[str].stock;
+				obj.actionImage = obj.productValue[str].image;
+				obj.uniqueId = obj.productValue[str].unique;
+				console.log('--9090---',obj.uniqueId )
+				obj.goodsStore = obj.productValue[str].stock;
+			} else {
+				(obj.buys_show = false), (obj.buys_shows = true);
+			}
+
+			obj.specSelected[ind] = item.attr;
+			// console.log(obj.specList)
+			// console.log(str)
+			if (obj.specList[str]) {
+				let data = obj.specList[str];
+				console.log(data)
+				if(obj.wholesale == 1){
+					obj.actionPrice = data.wholesaler_price;
+				}else {
+					obj.actionPrice = data.price;
+				}
+				if (obj.goodsType == 2) {
+					obj.goodsStore = obj.productValue[item.attr].quota;
+				} else {
+					obj.goodsStore = obj.goodsObjact.stock;
+				}
+				obj.goodsNumberMax = data.stock;
+				obj.actionImage = data.image;
+				obj.uniqueId = data.unique;
+			}
+		},
+		//显示弹窗
+		open() {
+			console.log('1');
+			this.show = true;
+		},
+		//随意点击隐藏弹窗
+		onTap() {
+			if (!this.open) return;
+			this.close();
+		},
+		close() {
+			this.show = false;
+		},
+		//收藏
+		toFavorite(item) {
+			let obj = this;
+
+			item.userCollect = !item.userCollect;
+			// 判断是否已经收藏
+			if (!item.userCollect) {
+				collectDel({
+					id: item.id,
+					category: 'product'
+				}).then(function(e) {
+					obj.$api.msg('成功取消收藏!');
+				});
+			} else {
+				collectAdd({
+					id: item.id,
+					category: 'product'
+				}).then(function(e) {
+					obj.$api.msg('成功加入收藏!');
+				});
+			}
+		},
+		//去拼团
+		groupBooking(item, unique) {
+			uni.navigateTo({
+				url: '/pages/product/details?pink_id=' + item + '&unique=' + unique
+			});
+		},
+		// #ifdef H5
+		shareDate() {
+			let obj = this;
+			let url = window.location.href.replace(/[\?,&]{0,1}from=singlemessage/g, '') + '&spread=' + this.userInfo.uid;
+			let bool = uni.getStorageSync('weichatBrowser') || '';
+			// 判断是否微信浏览器
+			if (bool) {
+				let data;
+					data = {
+						link: url, // 分享链接
+						imgUrl: obj.goodsObjact.image, // 分享图标
+						desc: obj.goodsObjact.store_info,
+						title: obj.goodsObjact.store_name,
+						success: function() {}
+					};
+				weixindata(data);
+			}
+		},
+		// #endif
+
+		// 单独购买
+		goProduct(item) {
+			//显示弹出框
+			this.goodsDataType = 1;
+			this.specClass = 'show';
+			this.productDataUp(this.goodsData);
+		},
+		/* 弹窗数据更新 */
+		productDataUp(data) {
+			console.log('--弹窗数据更新data---',data)
+			let obj = this;
+			obj.specSelected = data.specSelected; //选中的分类
+			obj.productValue = data.productValue; //保存属性值对象
+			obj.specList = data.specList; //保存规格列表
+			obj.goodsStore = data.goodsStore; //选中库存
+			obj.actionImage = data.actionImage; //商品图片
+			obj.actionPrice = data.actionPrice; //商品价格
+			obj.goodsNumber = data.goodsNumber; //购买数量(开团数量为1,整团数量为1*参团人数)
+			obj.uniqueId = data.uniqueId; //选中的规格id
+		},
+		/**
+		 * 统一跳转接口,拦截未登录路由
+		 * navigator标签现在默认没有转场动画,所以用view
+		 */
+		navTo(url) {
+			uni.navigateTo({
+				url
+			});
+		},
+		// 确定
+		comfim() {
+			this.buyInfo();
+		},
+		// 立即购买
+		buy(item) {
+			console.log(this.goodsDataType,777)
+			let obj = this;
+			console.log('900---009',item)
+			obj.buyInfo(item);
+			
+		},
+		// 购买流程
+		async buyInfo(item) {
+			console.log('99999',item)
+			let obj = this;
+			
+			// 创建传值对象
+			let data = {
+				wholesale:this.wholesale || '',
+				cartNum: obj.chooseGoodsNumber, //商品数量
+				uniqueId: obj.uniqueId, //商品标签
+				new: 1, //商品是否新增加到购物车1为不加入0为加入
+				mer_id: obj.shopId,
+				storeId: this.store_id,
+			};
+			console.log('--123--',data);
+			// 判断是否为加入购物车
+			if (obj.type == 2) {
+				data.new = 0;
+			}
+			// 判断是否为普通商品
+				data.productId = obj.goodsid; //商品编号
+				// data.is_gift = 1; // 是否为礼包 0 不是 1是
+			
+			this.specClass = 'none';
+			cartAdd(data)
+				.then(function(e) {
+					let da = e.data;
+					console.log(e);
+					if (obj.type == 1) {
+						// 跳转到支付页
+						uni.navigateTo({
+							url: '/pages/order/createOrder?id=' + da.cartId + '&is_wholesale=' + obj.wholesale + '&integral=' + obj.integral + '&use_integral=' + obj.use_integral + '&sid=' + obj.store_id
+						});
+					}
+					if (obj.type == 2) {
+						obj.$api.msg('成功加入购物车');
+					}
+				})
+				.catch(e => {
+					console.log(e);
+				});
+		},
+		// 阻止触发上级事件
+		stopPrevent() {}
+	}
+};
+</script>
+
+<style lang="scss">
+/* #ifdef MP || APP-PLUS */
+.barHeight {
+	height: var(--status-bar-height);
+}
+/* #endif */
+page {
+	background: $page-color-base;
+	padding-bottom: 160rpx;
+}
+// 处理图片间白色间距问题
+/deep/ .pHeight {
+	line-height: 0;
+}
+/deep/ .rich-img {
+	width: 100% !important;
+	height: auto;
+}
+
+/deep/ div,
+/deep/ table {
+	max-width: 100% !important;
+}
+
+/* #ifdef MP */
+.rich-img {
+	width: 100% !important;
+	height: auto;
+}
+// 处理图片间白色间距问题
+.pHeight {
+	line-height: 0;
+}
+/* #endif */
+.list-row {
+	position: fixed;
+	top: 450rpx;
+	left: 86rpx;
+
+	.row {
+		position: relative;
+		width: 578rpx;
+		height: 700rpx;
+		background: #ffffff;
+		border-radius: 20rpx;
+
+		.row-1 {
+			flex: 1;
+			text-align: center;
+			padding: 26rpx 223rpx;
+			border-bottom: 2rpx solid #eeeeee;
+
+			.row-1-1 {
+				font-size: $font-lg;
+				font-weight: bold;
+				color: #333333;
+			}
+		}
+
+		.row-2 {
+			padding: 0 23rpx;
+
+			.pinklist_list1 {
+				padding: 20rpx 0;
+				display: flex;
+				justify-content: space-around;
+				align-items: center;
+				border-bottom: 1px solid #eeeeee;
+
+				.left {
+					width: 74rpx;
+					height: 74rpx;
+					background-color: #e3e3e3;
+					border-radius: 50%;
+				}
+
+				.center {
+					display: flex;
+					flex-wrap: wrap;
+					margin-left: 17rpx;
+
+					.center-1 {
+						display: flex;
+						align-items: center;
+						letter-spacing: 3rpx;
+
+						.center-1-1 {
+							font-size: $font-base;
+							font-weight: 500;
+							color: #333333;
+						}
+
+						.center-1-2 {
+							font-size: $font-base - 2rpx;
+							font-weight: 500;
+							color: #333333;
+						}
+					}
+				}
+
+				.right {
+					width: 134rpx;
+					height: 59rpx;
+					background: $base-color;
+					border-radius: 10rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+
+					.right-word {
+						font-size: 26rpx;
+						font-weight: 500;
+						color: #ffffff;
+					}
+				}
+			}
+		}
+
+		.row-3 {
+			width: 56rpx;
+			height: 56rpx;
+			position: absolute;
+			top: -28rpx;
+			right: -28rpx;
+		}
+	}
+}
+
+.iconenter {
+	font-size: $font-base + 2rpx;
+	color: #888;
+}
+
+.pinklist_list {
+	margin-bottom: 25rpx;
+}
+
+.kf {
+	width: 146rpx;
+	height: 146rpx;
+	position: fixed;
+	right: 0;
+	top: 710rpx;
+	z-index: 99;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+
+.fuli {
+	position: fixed;
+	right: 24rpx;
+	bottom: 400rpx;
+	width: 136rpx;
+	height: 136rpx;
+	z-index: 99;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+
+.fuli-box {
+	position: fixed;
+	right: 24rpx;
+	bottom: 390rpx;
+	width: 136rpx;
+	height: 136rpx;
+	z-index: 99;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+
+
+@keyframes rowup {
+    0% {
+        // -webkit-transform: translate3d(0, 0, 0);
+        // transform: translate3d(0, 0, 0);
+			opacity:0
+    }
+    100% {
+        // -webkit-transform: translate3d(0, -106rpx, 0);
+        // transform: translate3d(0, -106rpx, 0);
+			opacity:1;
+			display: none;
+    }
+}
+.pt-box {
+	// width: 380rpx;
+	height: 70rpx;
+	background: rgba(0, 0, 0, 0.4);
+	border-radius: 10rpx;
+	position: absolute;
+	top: 106rpx;
+	left: 24rpx;
+	padding: 0 15rpx;
+	display: flex;
+	align-items: center;
+	overflow: hidden;
+	-webkit-animation: 3s rowup linear infinite normal;
+	animation: 3s rowup linear infinite normal;
+	
+	.pt-frame {
+		display: flex;
+		align-items: center;
+	}
+	.pt-img {
+		width: 60rpx;
+		height: 60rpx;
+		border-radius: 50%;
+		margin-right: 10rpx;
+	}
+	.pt-text {
+		font-size: $font-base;
+		font-weight: 500;
+		color: rgba(255, 255, 255, 1);
+		display: flex;
+		align-items: center;
+		.pt-name {
+			// display: inline-block;
+			// width: 200rpx;
+			// overflow: hidden;
+			// text-overflow: ellipsis;
+			// white-space: nowrap;
+		}
+	}
+}
+
+.carousel {
+	height: 722rpx;
+	position: relative;
+
+	swiper {
+		height: 100%;
+	}
+
+	.image-wrapper {
+		width: 100%;
+		height: 100%;
+	}
+
+	.swiper-item {
+		display: flex;
+		justify-content: center;
+		align-content: center;
+		height: 750rpx;
+		overflow: hidden;
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+}
+
+/* 标题简介 */
+.introduce-section {
+	background: #fff;
+	padding: 20rpx 30rpx;
+
+	.title {
+		width: 100%;
+		font-size: 32rpx;
+		color: $font-color-dark;
+		// height: 50rpx;
+		line-height: 50rpx;
+		word-break: break-all;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		-webkit-box-orient: vertical;
+		overflow: hidden;
+	}
+
+	.price-box {
+		display: flex;
+		// align-items: baseline;
+		// height: 64rpx;
+		padding: 10rpx 0;
+		font-size: 26rpx;
+		color: #ff0000;
+		.fenxiang {
+			width: 36rpx;
+			height: 36rpx;
+			padding: 0;
+			margin: 0;
+			border-radius: 0;
+			background: #FFFFFF;
+			display: flex;
+			&::after {
+				border: none;
+			}
+			.fenxiang-img {
+				width: 36rpx;
+				height: 36rpx;
+			}
+		}
+	}
+
+	.price {
+		font-size: 50rpx;
+		font-family: PingFang SC;
+		font-weight: 800;
+		color: #FF0000;
+		&::before {
+			content: '¥';
+			font-size: 26rpx;
+		}
+	}
+
+	.vip_price {
+		// font-size: $font-lg + 2rpx;
+		// color: $uni-color-primary;
+		// padding-left: 15rpx;
+		margin-left: 15rpx;
+		font-size: $font-lg;
+		font-family: PingFang SC;
+		font-weight: 500;
+		text-decoration: line-through;
+		color: #333333;
+		opacity: 0.61;
+	}
+	.tz_box {
+		margin-left: 15rpx;
+		font-size: 20rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #303131;
+		line-height: 1;
+		padding: 6rpx 10rpx;
+		background: linear-gradient(90deg, #FFF4E9, #FBDBB2);
+		border-radius: 16rpx;
+	}
+
+	.m-price {
+		margin: 0 12rpx;
+		color: $font-color-light;
+		text-decoration: line-through;
+	}
+
+	.coupon-tip {
+		align-items: center;
+		padding: 4rpx 10rpx;
+		background: $uni-color-primary;
+		font-size: $font-sm;
+		color: #fff;
+		border-radius: 6rpx;
+		line-height: 1;
+		transform: translateY(-4rpx);
+	}
+
+	.bot-row {
+		display: flex;
+		align-items: center;
+		height: 50rpx;
+		font-size: $font-sm;
+		color: $font-color-light;
+
+		text {
+			flex: 1;
+		}
+	}
+
+	.people {
+		border-radius: 10rpx;
+		height: 35rpx !important;
+		position: relative;
+		width: 116rpx;
+		height: 35rpx;
+		// border: 2rpx solid #db1935;
+		
+		.people_image {
+			// background-color: #db1935;
+			width: 100%;
+			height: 100%;
+			text-align: center;
+			border-top-left-radius: 20%;
+			border-bottom-left-radius: 20%;
+
+			image {
+				width: 100%;
+				height: 100%;
+				// margin-bottom: 5rpx;
+			}
+		}
+
+		.people_number {
+			position: absolute;
+			top: 0;
+			right: 8rpx;
+			font-size: 22rpx;
+			line-height: 35rpx;
+			// padding: 5rpx 10rpx;
+		}
+	}
+}
+
+/* 分享 */
+.share-section {
+	display: flex;
+	align-items: center;
+	color: $font-color-base;
+	background: linear-gradient(left, #fdf5f6, #fbebf6);
+	padding: 12rpx 30rpx;
+
+	.share-icon {
+		display: flex;
+		align-items: center;
+		width: 70rpx;
+		height: 30rpx;
+		line-height: 1;
+		border: 1px solid $uni-color-primary;
+		border-radius: 4rpx;
+		position: relative;
+		overflow: hidden;
+		font-size: 22rpx;
+		color: $uni-color-primary;
+
+		&:after {
+			content: '';
+			width: 50rpx;
+			height: 50rpx;
+			border-radius: 50%;
+			left: -20rpx;
+			top: -12rpx;
+			position: absolute;
+			background: $uni-color-primary;
+		}
+	}
+
+	.iconfavorfill {
+		position: relative;
+		z-index: 1;
+		font-size: 24rpx;
+		margin-left: 2rpx;
+		margin-right: 10rpx;
+		color: #fff;
+		line-height: 1;
+	}
+
+	.tit {
+		font-size: $font-base;
+		margin-left: 10rpx;
+	}
+
+	.iconprompt {
+		padding: 10rpx;
+		font-size: 30rpx;
+		line-height: 1;
+	}
+
+	.share-btn {
+		flex: 1;
+		text-align: right;
+		font-size: $font-sm;
+		color: $uni-color-primary;
+	}
+
+	.iconenter {
+		font-size: $font-sm;
+		margin-left: 4rpx;
+		color: $uni-color-primary;
+	}
+}
+
+.c-list {
+	font-size: $font-sm + 2rpx;
+	color: #303133;
+	margin-top: 20rpx;
+	background: #fff;
+
+	.c-row {
+		display: flex;
+		align-items: center;
+		padding: 20rpx 30rpx;
+		position: relative;
+
+		.c-text {
+			text {
+				padding-left: 25rpx;
+				padding-right: 25rpx;
+			}
+		}
+	}
+
+	.tit {
+		width: 140rpx;
+	}
+
+	.con {
+		flex: 1;
+		color: $font-color-dark;
+
+		.selected-text {
+			margin-right: 10rpx;
+		}
+	}
+
+	.bz-list {
+		height: 40rpx;
+		font-size: $font-sm + 2rpx;
+		color: $font-color-dark;
+
+		text {
+			display: inline-block;
+			margin-right: 30rpx;
+		}
+	}
+
+	.con-list {
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		color: $font-color-dark;
+		line-height: 40rpx;
+	}
+
+	.red {
+		color: $uni-color-primary;
+	}
+}
+
+
+// 谁购买了商品
+.autoPink-box {
+	display: flex;
+	align-items: center;
+	padding: 0 20rpx;
+	.auto-img {
+		width: 50rpx;
+		height: 50rpx;
+		border-radius: 50%;
+		border: 1px solid #FFFFFF;
+		margin-left: -10rpx;
+		&:first-of-type {
+			margin-left: 0;
+		}
+	}
+	.shenlue {
+		width: 50rpx;
+		height: 50rpx;
+		border-radius: 50%;
+		border: 1px solid #FFFFFF;
+		background: #9d9fa6;
+		margin-left: -10rpx;
+	}
+	.auto-text {
+		color: #9f9f9f;
+		font-size: $font-base - 2rpx;
+		margin-left: 10rpx;
+	}
+}
+
+.quan {
+	width: 750rpx;
+	height: 83rpx;
+	background-color: #FFFFFF;
+	padding: 0 24rpx;
+	margin: 15rpx 0;
+	display: flex;
+	align-items: center;
+
+	.quan-left {
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #606972;
+		margin-right: 33rpx;
+	}
+
+	.img-box {
+		width: 90rpx;
+		height: 30rpx;
+		margin-right: 10rpx;
+
+		.quan-img {
+			width: 90rpx;
+			height: 30rpx;
+		}
+	}
+
+	.quan-center {
+		font-size: 26rpx;
+		font-weight: 500;
+		color: #333333;
+		flex: 1;
+	}
+
+	.quan-right {
+		// width: 40rpx;
+		// height: 40rpx;
+
+		.right-next {
+			width: 100%;
+			height: 100%;
+		}
+	}
+}
+
+/* 评价 */
+.eva-section {
+	display: flex;
+	flex-direction: column;
+	padding: 20rpx 30rpx;
+	background: #fff;
+	margin-top: 16rpx;
+
+	.e-header {
+		display: flex;
+		align-items: center;
+		height: 70rpx;
+		font-size: $font-sm + 2rpx;
+		color: $font-color-light;
+
+		.tit {
+			font-size: $font-base + 2rpx;
+			color: $font-color-dark;
+			margin-right: 4rpx;
+		}
+
+		.tip {
+			flex: 1;
+			text-align: right;
+		}
+
+		.iconenter {
+			margin-left: 10rpx;
+		}
+	}
+}
+
+.eva-box {
+	display: flex;
+	padding: 20rpx 0;
+
+	.portrait {
+		flex-shrink: 0;
+		width: 80rpx;
+		height: 80rpx;
+		border-radius: 100px;
+	}
+
+	.right {
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		font-size: $font-base;
+		color: $font-color-base;
+		padding-left: 26rpx;
+
+		.con {
+			font-size: $font-base;
+			color: $font-color-dark;
+			padding: 20rpx 0;
+		}
+
+		.bot {
+			display: flex;
+			justify-content: space-between;
+			font-size: $font-sm;
+			color: $font-color-light;
+		}
+	}
+}
+
+.con_image {
+	width: 130rpx;
+	height: 130rpx;
+	display: inline-block;
+	padding: 15rpx;
+
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
+
+/*  详情 */
+.detail-desc {
+	background: #fff;
+	margin-top: 16rpx;
+	p {
+		line-height: 1;
+	}
+	img {
+		max-width: 100%;
+	}
+
+	.d-header {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		height: 80rpx;
+		font-size: $font-base + 2rpx;
+		color: $font-color-dark;
+		position: relative;
+
+		text {
+			padding: 0 20rpx;
+			background: #fff;
+			position: relative;
+			z-index: 1;
+		}
+
+		&:after {
+			position: absolute;
+			left: 50%;
+			top: 50%;
+			transform: translateX(-50%);
+			width: 300rpx;
+			height: 0;
+			content: '';
+			border-bottom: 1px solid #ccc;
+		}
+	}
+}
+.hotgoods{
+		width: 100%;
+		display: flex;
+		flex-wrap: wrap;
+		padding: 0 32rpx 108rpx;
+		
+		.hotgoods-item{
+			width: 48%;
+			background-color: #FFFFFF;
+			border-radius: 12rpx;
+			margin-bottom: 24rpx;
+			&:nth-child(2n + 1){
+				margin-right: 24rpx;
+			}
+			.image-wrapper {
+				width: 100%;
+				height: 330rpx;
+				border-radius: 3px;
+				overflow: hidden;
+				image {
+					width: 100%;
+					height: 100%;
+					opacity: 1;
+					border-radius: 12rpx 12rpx 0 0;
+				}
+			}
+			.title {
+				font-size: $font-base;
+				color: $font-color-dark;
+				font-weight: bold;
+				line-height: 80rpx;
+			}
+			.hot-price{
+				display: flex;
+				justify-content: space-between;
+				padding: 0 16rpx 12rpx;
+				
+				.price{
+					font-size: 40rpx;
+					color: #FF0000;
+					font-weight: 500;
+				}
+				.cart-icon{
+					image{
+						width: 44rpx;
+						height: 44rpx;
+					}
+				}
+			}
+		}
+	}
+.hotsheader{
+	text-align: center;
+	color: #FF0000;
+	font-size: 40rpx;
+	font-family: PingFang SC;
+	font-weight: bold;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	padding: 32rpx 0 24rpx;
+}
+
+
+/* 规格选择弹窗 */
+.attr-content {
+	padding: 25rpx 30rpx;
+
+	.a-t {
+		display: flex;
+
+		image {
+			width: 170rpx;
+			height: 170rpx;
+			flex-shrink: 0;
+			border-radius: 8rpx;
+		}
+
+		.right {
+			display: flex;
+			flex-direction: column;
+			padding-left: 24rpx;
+			font-size: $font-sm + 2rpx;
+			color: $font-color-base;
+			line-height: 42rpx;
+			width: 75%;
+
+			.price {
+				font-size: $font-lg;
+				color: $uni-color-primary;
+				margin: 10rpx 0rpx;
+			}
+
+			.name {
+				font-size: 32rpx;
+				color: $font-color-dark;
+				height: 50rpx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				display: block;
+			}
+
+			.selected-text {
+				margin-right: 10rpx;
+			}
+		}
+	}
+
+	.attr-list {
+		display: flex;
+		flex-direction: column;
+		font-size: $font-base + 2rpx;
+		color: $font-color-base;
+		padding-top: 30rpx;
+		padding-left: 10rpx;
+	}
+
+	.item-list {
+		padding: 20rpx 0 0;
+		display: flex;
+		flex-wrap: wrap;
+
+		text {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			background: #eee;
+			margin-right: 20rpx;
+			margin-bottom: 20rpx;
+			border-radius: 100rpx;
+			min-width: 60rpx;
+			height: 60rpx;
+			padding: 0 20rpx;
+			font-size: $font-base;
+			color: #ff0000;
+		}
+
+		.selected {
+			background: #fbebee;
+			color: $uni-color-primary;
+		}
+	}
+
+	.num-list {
+		padding: 20rpx 0 0;
+		display: flex;
+		flex-wrap: wrap;
+
+		text {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			border-radius: 100rpx;
+			min-width: 60rpx;
+			height: 60rpx;
+			padding: 0 20rpx;
+			font-size: $font-base;
+			color: $font-color-dark;
+		}
+	}
+}
+
+/*  弹出层 */
+.popup {
+	position: fixed;
+	left: 0;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	z-index: 99;
+
+	&.show {
+		display: block;
+
+		.mask {
+			animation: showPopup 0.2s linear both;
+		}
+
+		.layer {
+			animation: showLayer 0.2s linear both;
+		}
+	}
+
+	&.hide {
+		.mask {
+			animation: hidePopup 0.2s linear both;
+		}
+
+		.layer {
+			animation: hideLayer 0.2s linear both;
+		}
+	}
+
+	&.none {
+		display: none;
+	}
+
+	.mask {
+		position: fixed;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		z-index: 1;
+		background-color: rgba(0, 0, 0, 0.4);
+	}
+
+	.layer {
+		position: fixed;
+		z-index: 99;
+		bottom: 0;
+		width: 100%;
+		min-height: 35vh;
+		border-radius: 10rpx 10rpx 0 0;
+		background-color: #fff;
+
+		.btn {
+			height: 66rpx;
+			line-height: 66rpx;
+			border-radius: 100rpx;
+			background: #FF0000;
+			font-size: $font-base + 2rpx;
+			color: #fff;
+			margin: 30rpx auto 20rpx;
+		}
+	}
+
+	@keyframes showPopup {
+		0% {
+			opacity: 0;
+		}
+
+		100% {
+			opacity: 1;
+		}
+	}
+
+	@keyframes hidePopup {
+		0% {
+			opacity: 1;
+		}
+
+		100% {
+			opacity: 0;
+		}
+	}
+
+	@keyframes showLayer {
+		0% {
+			transform: translateY(120%);
+		}
+
+		100% {
+			transform: translateY(0%);
+		}
+	}
+
+	@keyframes hideLayer {
+		0% {
+			transform: translateY(0);
+		}
+
+		100% {
+			transform: translateY(120%);
+		}
+	}
+}
+//分享
+.btn_fenxiang {
+	position: fixed;
+	// right: 20rpx;
+	right: 0;
+	bottom: 50%;
+	z-index: 95;
+	width: 140rpx;
+	height: 140rpx;
+	// width: 100rpx;
+	// color: #ffffff;
+	// border-radius: 100%;
+	// background-color: $background-color;
+	// line-height: 100rpx;
+	// text-align: center;
+	// font-size: 30rpx;
+	image {
+		width: 140rpx;
+		height: 140rpx;
+	}
+}
+
+.mask {
+	position: fixed;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	z-index: 999;
+	background-color: rgba(0, 0, 0, 0.4);
+	image {
+		width: 100%;
+		height: 100%;
+		opacity: 0.8;
+	}
+}
+
+// 拼团协议弹窗
+.xieyi-box {
+	position: fixed;
+	z-index: 998;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	top: 0;
+	background-color: rgba(0, 0, 0, 0.4);
+	padding: 30rpx;
+	display: flex;
+	align-items: center;
+	.xieyi-frame {
+		background: #FFFFFF;
+		border-radius: 15rpx;
+		padding: 15rpx 0 0;
+		.xieyi-tit {
+			font-size: 40rpx;
+			font-weight: bold;
+			text-align: center;
+		}
+		.xieyi-text {
+			padding: 20rpx 30rpx;
+			font-size: 30rpx;
+		}
+		.xieyi-btn-box {
+			margin-top: 20rpx;
+			display: flex;
+			.xieyi-btn {
+				width: 50%;
+				height: 80rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border-bottom-left-radius: 15rpx;
+				background: #ffaa00;
+				color: #FFFFFF;
+			}
+			.queding {
+				border-bottom-left-radius: 0;
+				border-bottom-right-radius: 15rpx;
+				background: #03A9F4;
+			}
+		}
+	}
+}
+
+// 分享遮罩层
+.pop-mask {
+	position: fixed;
+	z-index: 9999;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	top: 0;
+	background-color: rgba(0, 0, 0, 0.4);
+	padding: 60rpx;
+	.share-img {
+		width: 100%;
+		height: 100%;
+	}
+}
+
+.shareDate {
+	position: fixed;
+	right: 0;
+	bottom: 50%;
+	z-index: 95;
+	width: 140rpx;
+	height: 140rpx;
+	// color: #ffffff;
+	// border-radius: 100%;
+	// width: 120rpx;
+	// height: 120rpx;
+	// line-height: 120rpx;
+	// background-color: $background-color;
+	// text-align: center;
+	// font-size: 30rpx;
+	image {
+		width: 140rpx;
+		height: 140rpx;
+	}
+}
+/* 底部操作菜单 */
+.page-bottom {
+	position: fixed;
+	left: 0;
+	bottom: 0;
+	z-index: 95;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	width: 100%;
+	height: 100rpx;
+	background: rgba(255, 255, 255, 1);
+	box-shadow: 0 0 20rpx 0 rgba(0, 0, 0, 0.5);
+	// border-radius: 16rpx;
+
+	.kefu-mp {
+		padding: 0;
+		background: 0;
+		&::after {
+			border: 0;
+		}
+	}
+	
+	.p-b-btn {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		font-size: $font-sm;
+		color: $font-color-base;
+		width: 180rpx;
+		height: 100rpx;
+		// padding-left: 15rpx;
+
+		.kefu-btn {
+			width: 36rpx;
+			height: 35rpx;
+			margin-bottom: 8rpx;
+		}
+
+		.iconfont {
+			font-size: 40rpx;
+			line-height: 48rpx;
+			color: $font-color-light;
+		}
+
+		&.active,
+		&.active .iconfont {
+			color: #ff0000;
+		}
+
+		.icon-fenxiang2 {
+			font-size: 42rpx;
+			transform: translateY(-2rpx);
+		}
+
+		.iconlikefill {
+			font-size: 46rpx;
+		}
+	}
+
+	.gobuy {
+		width: 100%;
+		background: #db1935;
+		height: 100%;
+		color: #ffffff;
+		text-align: center;
+		padding-top: 25rpx;
+		// border-radius: 15rpx;
+	}
+	
+	.primary-text {
+		display: flex;
+		height: 100%;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		line-height: 1.7;
+	}
+	.pt-btn-group {
+		margin-left: 0 !important;
+		width: 100%;
+	}
+	.action-btn-group {
+		display: flex;
+		height: 100%;
+		overflow: hidden;
+		margin-left: 20rpx;
+		position: relative;
+		// border-top-right-radius: 15rpx;
+		// border-bottom-right-radius: 15rpx;
+
+		&:after {
+			content: '';
+			position: absolute;
+			top: 50%;
+			right: 50%;
+			transform: translateY(-50%);
+			height: 28rpx;
+			width: 0;
+			// border-right: 1px solid rgba(255, 255, 255, 0.5);
+		}
+
+		.action-btn {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 540rpx;
+			height: 100%;
+			font-size: $font-base;
+			padding: 0;
+			border-radius: 0;
+			background: transparent;
+
+			&.buy-now-btn {
+				background-color: #ffb238;
+			}
+
+			&.add-cart-btn {
+				background-color: #DF3525;
+			}
+			&.btn-favorites-btn {
+				background-color: rgba(24, 179, 255, 1);
+			}
+		}
+
+		.action-btn1 {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 580rpx;
+			height: 100%;
+			font-size: $font-base;
+			padding: 0;
+			border-radius: 0;
+			background: transparent;
+
+			&.buy-now-btn {
+				// background-color: #ffb238;
+				background: linear-gradient(90deg, #454545, #666666);
+			}
+
+			&.add-cart-btn {
+				background-color: #FF0000;
+				// background: linear-gradient(90deg, #FE8119, #FF4E00);
+			}
+		}
+	}
+}
+
+//拼团列表
+.pinklistbox1 {
+	padding: 15rpx 15rpx;
+	background: #ffffff;
+	text-align: center;
+	font-size: 26rpx;
+	margin-top: 25rpx;
+}
+
+.pinklistbox {
+	background: #ffffff;
+	margin-top: 25rpx;
+	overflow: hidden;
+}
+
+.pink_num {
+	background: -webkit-linear-gradient(left, #fdf5f6, #fbebf6);
+	padding: 15rpx 25rpx;
+	font-size: 26rpx;
+	color: #DC442C;
+}
+
+.pint {
+	// background: -webkit-linear-gradient(left, #ff1f4f, #ff0409);
+	background: #DF3525;
+	padding: 10rpx 25rpx;
+	color: #ffffff;
+	font-size: 24rpx;
+	border-radius: 25rpx;
+
+	.iconenter {
+		font-size: 15px;
+		color: #ffffff;
+	}
+}
+
+.pinklist {
+	padding: 0rpx 25rpx;
+	padding-top: 45rpx !important;
+}
+
+.pink_img {
+	width: 100rpx;
+	height: 100rpx;
+
+	image {
+		width: 100%;
+		height: 100%;
+		border-radius: 100%;
+	}
+}
+.pink_people {
+	font-size: 28rpx;
+
+	text {
+		color: #dd524d;
+	}
+}
+
+.pink_time {
+	font-size: 26rpx;
+	color: #909399;
+}
+
+.pink_name {
+	width: 200rpx;
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+	padding-left: 10rpx;
+	// background: #FC2A3F;
+	// height: 50rpx;
+}
+.More {
+	width: 100%;
+	line-height: 2;
+	background-color: #DF3525;
+	font-size: $font-lg;
+	margin: 0 auto;
+	text-align: center;
+	color: #ffffff;
+	// border-radius: 50rpx;
+}
+.Shraremask {
+	position: fixed;
+	left: 0;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	display: flex;
+	justify-content: center;
+	align-items: flex-end;
+	z-index: 998;
+	transition: 0.3s;
+	background-color: rgba(51, 51, 51, 0.6);
+	.bottomButtom {
+		position: absolute;
+		left: 0;
+		bottom: 0;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		width: 100%;
+		height: 90rpx;
+		background: #fff;
+		z-index: 9;
+		font-size: $font-base + 2rpx;
+		color: $font-color-dark;
+	}
+}
+.mask-content {
+	width: 100%;
+	height: 380rpx;
+	transition: 0.3s;
+	background: #fff;
+	&.has-bottom {
+		padding-bottom: 90rpx;
+	}
+	.view-content {
+		height: 100%;
+	}
+}
+.share-header {
+	height: 110rpx;
+	font-size: $font-base + 2rpx;
+	color: font-color-dark;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	padding-top: 10rpx;
+	&:before,
+	&:after {
+		content: '';
+		width: 240rpx;
+		heighg: 0;
+		border-top: 1px solid $border-color-base;
+		transform: scaleY(0.5);
+		margin-right: 30rpx;
+	}
+	&:after {
+		margin-left: 30rpx;
+		margin-right: 0;
+	}
+}
+.share-list {
+	display: flex;
+	width: 80%;
+	margin: 0rpx auto;
+}
+.share-item {
+	min-width: 33.33%;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	height: 180rpx;
+	width: 100%;
+	.wechat-box {
+		width: 50%;
+		height: 100%;
+		background: #ffffff;
+		border: 0;
+		display: flex;
+		align-items: center;
+		flex-direction: column;
+		&::after {
+			border: 0;
+		}
+		.itemImage {
+			width: 80rpx;
+			height: 80rpx;
+			margin-bottom: 16rpx;
+		}
+		.itemText {
+			font-size: $font-base;
+			color: $font-color-base;
+			line-height: 2;
+		}
+	}
+}
+
+.pop-box {
+	width: 750rpx;
+	background: #F8F6F6;
+	z-index: 999;
+	border-radius: 10rpx 10rpx 0px 0px;
+
+	.pop-top {
+		display: flex;
+		align-items: center;
+		padding: 35rpx 30rpx 45rpx 60rpx;
+
+		.top-center {
+			font-size: 32rpx;
+			font-weight: bold;
+			color: #333333;
+			text-align: center;
+			flex: 1;
+		}
+
+		.top-right {
+			width: 30rpx;
+			height: 30rpx;
+
+			.right-img {
+				width: 30rpx;
+				height: 30rpx;
+			}
+		}
+	}
+
+	.scroll-h {
+		max-height: 956rpx;
+	}
+
+	.pop-center {
+
+		padding-bottom: 20rpx;
+
+		.pop-item {
+			width: 693rpx;
+			height: 170rpx;
+			background: #FFFFFF;
+			border: 1px solid #DFEDE4;
+			border-radius: 10rpx;
+			margin: 0rpx auto 20rpx;
+			display: flex;
+
+			&:last-of-type {
+				margin: 0rpx auto 0rpx;
+			}
+
+			.item-left {
+				width: 195rpx;
+				height: 170rpx;
+				background: #FDEFEF;
+				border-right: 1px solid #FFD8D8;
+				text-align: center;
+				padding-top: 28rpx;
+
+				.pic {
+
+					font-size: 28rpx;
+					font-weight: bold;
+					color: #FC6168;
+				}
+
+				.pic-info {
+					font-size: 22rpx;
+					font-weight: 500;
+					color: #FC6168;
+				}
+			}
+
+			.item-right {
+				flex: 1;
+				display: flex;
+				// align-items: center;
+				padding-right: 20rpx;
+
+				.right-left {
+					padding: 33rpx 0rpx 0 18rpx;
+					flex: 1;
+
+					.top {
+						font-size: 30rpx;
+						font-weight: bold;
+						color: #333333;
+						margin-bottom: 5rpx;
+					}
+
+					.center {
+						font-size: 22rpx;
+						font-weight: 500;
+						color: #999999;
+						margin-bottom: 5rpx;
+					}
+
+					.foot {
+						font-size: 22rpx;
+						font-weight: 500;
+						color: #999999;
+					}
+				}
+
+				.right-right {
+					width: 120rpx;
+					height: 46rpx;
+					background: #FC6168;
+					border-radius: 23rpx;
+					font-size: 22rpx;
+					font-weight: 500;
+					color: #FFFFFF;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					margin: auto;
+				}
+			}
+		}
+	}
+}
+</style>

+ 1 - 1
pages/set/set.vue

@@ -117,7 +117,7 @@ page {
 	margin: 158rpx auto 30rpx;
 	width: 560rpx;
 	height: 80rpx;
-	background: linear-gradient(90deg, #58bab0, #60bab0, #45969b);
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
 	border-radius: 40px;
 	color: #ffffff;
 }

+ 52 - 0
pages/user/about.vue

@@ -0,0 +1,52 @@
+<template>
+	<view class="conter">
+		<view class="box">
+			<!-- <image src="../../static/img/about.png" class="image" mode=""></image> -->
+			<view class="image">
+				
+			</view>
+			<view class="title">
+				V1.1.1.0
+			</view>
+		</view>
+		<view class="main">
+			<text>六牛科技,2014年创立于浙江台州 ,公司以网站建设、微信公众号、微信商城以及O2O商城为核心业务 专注于创意设计和传播应用 ,探索并实现商业价值最大化 ,为所有谋求长远发展的企业机构贡献全力。
+浙江六牛科技有限公司注重专业探索,摒弃虚浮夸张,在更深远的认知中,将不断修正服务导向,完善制作品格,以探求精品塑造与理念升华,勇做推动行业发展的中坚力量</text>
+		</view>
+	</view>
+</template>
+
+<script>
+</script>
+
+<style lang="scss">
+.conter,page {
+	background: #FFFFFF;
+	height: 100%;
+}
+.box {
+	width: 100%;
+	text-align: center;
+	.image {
+		width: 162rpx;
+		height: 162rpx;
+		margin: 0 auto;
+		margin-top: 88rpx;
+	}
+	.title{
+		font-size: 30rpx;
+		font-family: PingFangSC;
+		font-weight: 500;
+		color: #666666;
+	}
+}
+.main {
+	padding: 0 50rpx;
+	margin-top: 70rpx;
+	font-size: 30rpx;
+	font-family: PingFangSC;
+	font-weight: 500;
+	color: #666666;
+	line-height: 54rpx;
+}
+</style>

+ 202 - 251
pages/user/extension.vue

@@ -4,200 +4,168 @@
 		<view class="content-money">
 			<view class="money-box">
 				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/img/fanhui.png" mode=""></image></view>
-				<view class="header">我的推广</view>
+				<view class="header">我的团队</view>
 				<image class="tuiguang_bg" src="../../static/img/share-bg.png"></image>
-				<!--  <view class="money_img"><image :src="list.avatar || img"></image></view> -->
-				<view class="user">
-					<view class="avtor">
-						<image class="portrait" :src="userInfo.avatar || '/static/img/missing-face.png'"></image>
-						<view class="he"><image class="image" v-if="userInfo.point" src="../../static/img/hehuoren.png"></image></view>
+				<view class="money-frame">
+					<!-- <view class="money_name">我的推广</view> -->
+					<view class="money_num">
+						<text class="money_ren">共</text>
+						{{ all || '0' }}
+						<text class="money_ren">人</text>
 					</view>
-					<view class="">
-						<view class="name">
-							<view class="name-left clamp">{{ userInfo.phone || userInfo.email || '游客' }}</view>
-							<view class="name-right">
-								<image class="image" src="../../static/img/img28.png"></image>
-								<view class="level" v-if="userInfo.level">{{ userInfo.level_info.name }}</view>
-								<view class="level" v-else>V0</view>
-							</view>
-						</view>
-						<!-- <view class="id">uid:{{ userInfo.uid }}</view> -->
-					</view>
-				</view>
-				<view class="right">
-					<view class="right-num">
-						{{team}}
-					</view>
-					<view class="right-font ">
-						团队总人数
-					</view>
-					<view class="time ">
-						{{today}}
-					</view>
-				</view>
-			</view>
-		</view>
-		
-		<view class="main flex">
-			<view class="main-box flex">
-				<view class="item">
-					<view class="num">{{myPerformance || 0}}</view>
-					<view class="font ">我的历史业绩</view>
-				</view>
-				<view class="item bottom">
-					<view class="num">{{plotPerformance || 0}}</view>
-					<view class="font ">历史小区业绩</view>
-				</view>
-			</view>
-			<view class="main-box flex">
-				<view class="item">
-					<view class="num">{{push || 0}}</view>
-					<view class="font ">直推人数</view>
-				</view>
-				<view class="item bottom">
-					<view class="num">{{team || 0}}</view>
-					<view class="font ">团队人数</view>
 				</view>
 			</view>
-			<view class="main-box flex">
-				<view class="item">
-					<view class="num">{{achievement_month || 0}}</view>
-					<view class="font ">本月新增业绩</view>
-				</view>
-				<view class="item bottom">
-					<view class="num">{{small_achivement_month || 0}}</view>
-					<view class="font ">本月新增小区业绩</view>
-				</view>
-			</view>
-		</view>
-		<view class="box">
-			<view class="box-item flex">
-				<view class="box-left">昨日拼购奖励</view>
-				<view class="box-right">{{yesterday.pink*1 || 0}}USDT</view>
-			</view>
-			<view class="box-item flex">
-				<view class="box-left">昨日分享奖励</view>
-				<view class="box-right">{{yesterday.recommend*1 || 0}}USDT</view>
-			</view>
-			<view class="box-item flex">
-				<view class="box-left">昨日团队奖励</view>
-				<view class="box-right">{{yesterday.group*1 || 0}}USDT</view>
-			</view>
-			<view class="box-item flex">
-				<view class="box-left" style="color:#44969D;">昨日累计奖励</view>
-				<view class="box-right" style="color:#44969D;">{{yesterday.all*1 || 0}}USDT</view>
-			</view>
-		</view>
-		<view class="box">
-			<view class="box-item flex">
-				<view class="box-left">累计拼购奖励</view>
-				<view class="box-right">{{all.pink*1 || 0}}USDT</view>
-			</view>
-			<view class="box-item flex">
-				<view class="box-left">累计分享奖励</view>
-				<view class="box-right">{{all.recommend*1 || 0}}USDT</view>
-			</view>
-			<view class="box-item flex">
-				<view class="box-left">累计团队奖励</view>
-				<view class="box-right">{{all.group*1 || 0}}USDT</view>
-			</view>
-			<view class="box-item flex">
-				<view class="box-left" style="color:#44969D;">历史累计奖励</view>
-				<view class="box-right" style="color:#44969D;">{{all.all*1 || 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>
+		<swiper :current="tabCurrentIndex" :style="{ height: maxheight }" 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 flex_item">
+							<view class="title-avatar"><image :src="item.avatar"></image></view>
+							<view class="list_tpl">
+								<view class="title">
+									<text>{{ item.nickname }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.time }}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!-- <uni-load-more :status="tabItem.loadingType"></uni-load-more> -->
+				</scroll-view>
+			</swiper-item>
+		</swiper>
 	</view>
 </template>
 <script>
 import { spread } from '@/api/finance.js';
 import { mapState, mapMutations } from 'vuex';
-import { gitExtension } from '@/api/user.js';
 export default {
-	onReady() {
-		// 初始化获取页面宽度
-		uni.createSelectorQuery()
-			.select('.content')
-			.fields(
-				{
-					size: true
-				},
-				data => {
-					// console.log(data);
-					// console.log(Math.floor((data.width / 750) * 300));
-					// 保存头部高度
-					this.maxheight = data.height - Math.floor((data.width / 750) * 470) - 44;
-					// console.log(this.maxheight);
-				}
-			)
-			.exec();
-	},
-	computed: {
-		...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+	onReady(res) {
+		var _this = this;
+		uni.getSystemInfo({
+			success: resu => {
+				const query = uni.createSelectorQuery();
+				query.select('.swiper-box').boundingClientRect();
+				query.exec(function(res) {
+					_this.maxheight = resu.windowHeight - res[0].top + 'px';
+					console.log('打印页面的剩余高度', _this.height);
+				});
+			},
+			fail: res => {}
+		});
 	},
 	data() {
 		return {
 			// 头部图高度
 			maxheight: '',
-			myPerformance:'',//我的业绩
-			plotPerformance:'',//小区业绩
-			push:'',//直推人数
-			team:'',//团队人数
-			achievement_month:'',//本月新增业绩
-			small_achivement_month:'',// 本月新增小区业绩
-			all: '', //累计奖励
-			yesterday:'',//昨日
-			today:'',//日期
+			tabCurrentIndex: 0,
+			navList: [
+				{
+					state: 0,
+					text: '直接推荐',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				},
+				{
+					state: 1,
+					text: '间接推荐',
+					loadingType: 'more',
+					orderList: [],
+					page: 1, //当前页数
+					limit: 10 //每次信息条数
+				}
+			],
+			all:'',
+			list:'',
 		};
 	},
-	onLoad(options) {
-		var myDate = new Date();
-		this.today = myDate.getFullYear() + '年' + (myDate.getMonth()+1) + '月' + myDate.getDate() +'日';
-		console.log(this.today)
-		this.loadData(); //onload只是在第一次进入页面会刷新数据,从二级页面回来不会重新加载数据
-	},
-
+	onLoad(options) {},
 	onShow() {
-		//onShow没有参数
-		this.loadData(); //onshow在每次打开页面都会加载数据,可以用于数据在需要刷新的环境下
+		// this.loadData();	
 	},
 	methods: {
-		async loadData() {
-			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.achievement_month = data.achievement_month;
-				this.small_achivement_month = data.small_achivement_month;
-				this.all = data.all;
-				this.all.all = this.all.pink*1 + this.all.recommend*1 + this.all.group*1;
-				this.yesterday = data.yesterday;
-				this.yesterday.all = this.yesterday.pink*1 + this.yesterday.recommend*1 + this.yesterday.group*1;
-			})
-			
-		},
-
 		// 页面跳转
 		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;
+			}
+			if (navItem.loadingType === 'noMore') {
+				//防止重复加载
+				return;
+			}
+			// 修改当前对象状态为加载中
+			navItem.loadingType = 'loading';
+			spread(
+				{
+					page: navItem.page,
+					limit: navItem.limit,
+					keyword:'',
+					grade:state
+				},
+			)
+				.then(({ data }) => {
+					this.total = data.total;
+					this.totalLevel =data.totalLevel;
+					this.all = this.total + this.totalLevel;
+					if (data.list.length > 0) {
+						this.list = data.list;
+						navItem.orderList = navItem.orderList.concat(data.list);
+						navItem.page++;
+					}
+					this.$nextTick(function(){
+						if (navItem.limit == data.list.length) {
+							//判断是否还有数据, 有改为 more, 没有改为noMore
+							navItem.loadingType = 'more';
+							return;
+						} else {
+							//判断是否还有数据, 有改为 more, 没有改为noMore
+							navItem.loadingType = 'noMore';
+						}
+					})
+					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;
+		},
 		// 点击返回 我的页面
-		toBack() {
+		toBack(){
 			uni.switchTab({
-				url: '/pages/user/user'
-			});
-		},
-		
+				url:'/pages/user/user'
+			})
+		}
 	}
 };
 </script>
@@ -267,7 +235,7 @@ page {
 	text-align: center;
 	font-size: 35rpx;
 	position: relative;
-	
+
 	// padding-top: 60rpx;
 	.header {
 		position: absolute;
@@ -302,7 +270,6 @@ page {
 		width: 750rpx;
 		height: 424rpx;
 		position: relative;
-		
 	}
 	.right {
 		position: absolute;
@@ -314,91 +281,91 @@ page {
 			font-size: 50rpx;
 			font-family: PingFang SC;
 			font-weight: bold;
-			
-			color: #FFFFFF;
+
+			color: #ffffff;
 		}
 		.right-font {
 			margin-top: 10rpx;
 			font-size: 24rpx;
 			font-family: PingFang SC;
 			font-weight: 400;
-			color: #FFFFFF;
+			color: #ffffff;
 		}
 		.time {
 			font-size: 26rpx;
 			font-family: PingFang SC;
 			font-weight: 500;
-			color: #FFFFFF;
+			color: #ffffff;
 			line-height: 35px;
 		}
 	}
 	.user {
-			position: absolute;
-			top: 140rpx;
-			left: 34rpx;
-			display: flex;
-			justify-content: flex-start;
-			align-items: center;
-			z-index: 10;
-			.avtor {
-				width: 102rpx;
-				height: 102rpx;
+		position: absolute;
+		top: 140rpx;
+		left: 34rpx;
+		display: flex;
+		justify-content: flex-start;
+		align-items: center;
+		z-index: 10;
+		.avtor {
+			width: 102rpx;
+			height: 102rpx;
+			border-radius: 50%;
+			position: relative;
+			.portrait {
+				width: 100%;
+				height: 100%;
 				border-radius: 50%;
+			}
+			.he {
+				position: absolute;
+				height: 30rpx;
+				bottom: -4rpx;
+				left: 0;
+				.image {
+					width: 102rpx;
+					height: 30rpx;
+				}
+			}
+		}
+		.name {
+			margin-left: 30rpx;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #ffffff;
+			display: flex;
+			justify-content: start;
+			.name-left {
+				width: 220rpx;
+			}
+			.name-right {
+				margin-left: 20rpx;
+				width: 50rpx;
+				height: 60rpx;
 				position: relative;
-				.portrait {
+				image {
 					width: 100%;
 					height: 100%;
-					border-radius: 50%;
 				}
-				.he {
+				.level {
 					position: absolute;
-					height: 30rpx;
-					bottom: -4rpx;
-					left: 0;
-					.image {
-						width: 102rpx;
-						height: 30rpx;
-					}
-				}
-			}
-			.name {
-				margin-left: 30rpx;
-				font-size: 36rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #ffffff;
-				display: flex;
-				justify-content: start;
-				.name-left {
-					width: 220rpx;
-				}
-				.name-right {
-					margin-left: 20rpx;
-					width: 50rpx;
-					height: 60rpx;
-					position: relative;
-					image {
-						width: 100%;
-						height: 100%;
-					}
-					.level {
-						position: absolute;
-						top: 35%;
-						left: 50%;
-						margin-left: -12rpx;
-						font-size: 20rpx;
-					}
+					top: 35%;
+					left: 50%;
+					margin-left: -12rpx;
+					font-size: 20rpx;
 				}
 			}
-			.id {
-				margin-left: 30rpx;
-				font-size: 30rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #ffffff;
-			}
 		}
-	
+		.id {
+			margin-left: 30rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #ffffff;
+		}
+	}
+
 	.money_img {
 		width: 100%;
 		height: 120rpx;
@@ -418,24 +385,8 @@ page {
 		position: absolute;
 		top: 0;
 		width: 100%;
-		padding-top: 120rpx;
-		// left: 30rpx;
-		// height: 460rpx;
-		// display: flex;
-		// align-items: flex-start;
-		// flex-direction: column;
-		// justify-content: center;
+		padding-top: 200rpx;
 	}
-
-	.money_name {
-		width: 100%;
-		text-align: center;
-		font-size: 32rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #ffffff;
-	}
-
 	.money_num {
 		font-size: 72rpx;
 		font-family: PingFang SC;
@@ -528,12 +479,12 @@ page {
 }
 .box {
 	width: 690rpx;
-	background: #FFFFFF;
+	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{
+	.box-item:first-child {
 		margin-top: 0;
 	}
 	.box-item {
@@ -544,19 +495,19 @@ page {
 			font-size: 26rpx;
 			font-family: PingFang SC;
 			font-weight: 500;
-			color: #6D7C88;
+			color: #6d7c88;
 		}
 		.box-right {
 			font-size: 26rpx;
 			font-family: PingFang SC;
 			font-weight: bold;
-			color: #0F253A;
+			color: #0f253a;
 		}
 	}
 }
 .liebiao {
 	width: 692rpx;
-	background: #FFFFFF;
+	background: #ffffff;
 	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
 	border-radius: 20rpx;
 	padding: 34rpx;
@@ -569,7 +520,7 @@ page {
 			width: 46rpx;
 			height: 36rpx;
 		}
-		.leibiao-font{
+		.leibiao-font {
 			margin-left: 10rpx;
 			font-size: 32rpx;
 			font-family: PingFang SC;

+ 0 - 137
pages/user/extensionList.vue

@@ -1,137 +0,0 @@
-<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: this.limit,
-				page: this.page
-			}).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>

+ 11 - 9
pages/user/fuli.vue

@@ -18,7 +18,8 @@
 		<view class="rule">
 			<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_target_get * 1}}{{ list.sp_exchange_target }}+{{ list.sp_exchange_bingo_time }}荣誉值
+				每{{ list.sp_exchange_origin_cost * 1 }}{{ list.sp_exchange_origin }}+{{ list.sp_exchange_bingo_time }}幸运值可兑换{{ list.sp_exchange_target_get * 1
+				}}{{ list.sp_exchange_target }}+{{ list.sp_exchange_bingo_time }}荣誉值
 			</view>
 		</view>
 		<view class="main-title">
@@ -30,7 +31,7 @@
 			<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">{{item.time}}</view>
+					<view class="time">{{ item.time }}</view>
 				</view>
 				<view class="list-right">已兑换</view>
 			</view>
@@ -70,7 +71,7 @@ export default {
 				.then(({ data }) => {
 					console.log(data);
 					this.honor = data.exchange_point;
-					this.lucky = data.luck_point-data.exchange_point;
+					this.lucky = data.luck_point - data.exchange_point;
 					this.list = data.data;
 				})
 				.catch(e => {
@@ -92,10 +93,10 @@ export default {
 				},
 				this.id
 			).then(({ data }) => {
-				if(data.count != 0){
+				if (data.count != 0) {
 					data.data.forEach(e => {
-						e.time = getTime(e.add_time)
-					})
+						e.time = getTime(e.add_time);
+					});
 				}
 				this.exchange = data.list;
 				if (data.length != this.limit) {
@@ -124,7 +125,8 @@ page {
 .bg {
 	width: 750rpx;
 	height: 248rpx;
-	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+
+	background: linear-gradient(30deg, #2e58ff, #33eeff);
 	border-bottom-left-radius: 150rpx;
 	border-bottom-right-radius: 150rpx;
 }
@@ -166,7 +168,7 @@ page {
 		font-size: 28rpx;
 		font-family: PingFang SC;
 		font-weight: bold;
-		color: #44969d;
+		color: #2e58ff;
 	}
 	.rule-main {
 		font-size: 26rpx;
@@ -232,7 +234,7 @@ page {
 	margin: 0 auto;
 	width: 674rpx;
 	height: 88rpx;
-	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+	background: linear-gradient(0deg, #2E58FF, #32C6FF);
 	border-radius: 44rpx;
 	font-size: 36rpx;
 	font-family: PingFang SC;

+ 2 - 2
pages/user/fulilist.vue

@@ -91,14 +91,14 @@ export default {
 				font-size: 40rpx;
 				font-family: PingFang SC;
 				font-weight: bold;
-				color: #44969d;
+				color: #2E58FF;
 			}
 	
 			.number-right {
 				font-size: 24rpx;
 				font-family: PingFang SC;
 				font-weight: bold;
-				color: #44969d;
+				color: #2E58FF;
 			}
 		}
 	

+ 35 - 30
pages/user/myNote.vue

@@ -14,11 +14,11 @@
 		<view class="zongbox flex">
 			<view class="zongbox-left">昨日</view>
 			<view class="info">
-				<view class="num">{{yesterday_award}}</view>
+				<view class="num">{{ yesterday_award }}</view>
 				<view class="info-font">昨日门票分红</view>
 			</view>
 			<view class="info">
-				<view class="num">{{yesterday_service}}</view>
+				<view class="num">{{ yesterday_service }}</view>
 				<view class="info-font">手续费分红</view>
 			</view>
 			<view class="info">
@@ -29,11 +29,11 @@
 		<view class="zongbox flex">
 			<view class="zongbox-left">历史</view>
 			<view class="info">
-				<view class="num">{{all_award}}</view>
+				<view class="num">{{ all_award }}</view>
 				<view class="info-font">历史门票分红</view>
 			</view>
 			<view class="info">
-				<view class="num">{{all_service}}</view>
+				<view class="num">{{ all_service }}</view>
 				<view class="info-font">手续费分红</view>
 			</view>
 			<view class="info">
@@ -59,9 +59,7 @@
 									<view class="top-left">释放天数:{{ ls.release_time_now }}</view>
 									<!-- <view class="top-right">累计释放:20</view> -->
 								</view>
-								<view class="main-top flex">
-									<!-- <view class="top-right">累计分红:20</view> -->
-								</view>
+								<view class="main-top flex"><!-- <view class="top-right">累计分红:20</view> --></view>
 							</view>
 						</view>
 					</view>
@@ -80,9 +78,9 @@
 						<view class="name1">{{ ls.plan_name }}</view>
 					</view>
 					<view class="item-main">
-						<view class="main-top">已加入人数:{{ls.request_num*1}}</view>
-						<view class="main-top">合伙总人数:{{ls.all_stock*1}}</view>
-						<view class="main-top">分红总量:{{ls.release_money*1}}</view>
+						<view class="main-top">已加入人数:{{ ls.request_num * 1 }}</view>
+						<view class="main-top">合伙总人数:{{ ls.all_stock * 1 }}</view>
+						<view class="main-top">分红总量:{{ ls.release_money * 1 }}</view>
 						<!-- <view class="main-top">时间:2021年9月2日</view> -->
 					</view>
 				</view>
@@ -114,12 +112,12 @@ export default {
 			tabList: [],
 			pointList: [],
 			loding: 'more',
-			all: '',//累计释放
-			yesterday: '',//昨天释放
-			all_award:'',//历史门票分红
-			yesterday_award:'',//昨日门票分红
-			all_service: 0,//历史手续费分红
-			yesterday_service:'',//昨日手续费分红
+			all: '', //累计释放
+			yesterday: '', //昨天释放
+			all_award: '', //历史门票分红
+			yesterday_award: '', //昨日门票分红
+			all_service: 0, //历史手续费分红
+			yesterday_service: '' //昨日手续费分红
 		};
 	},
 	//页面加载即刻发生
@@ -137,21 +135,21 @@ export default {
 				this.yesterday_award = (data.yesterday_award * 1).toFixed(4);
 				this.all = data.all * 1;
 				this.all_award = (data.all_award * 1).toFixed(4);
-				if (data.all_service.length != 0 ){
-					for(let i = 0;i < data.all_service.length; i++){
-						let j = data.all_service[i].sum *1
-						this.all_service = this.all_service + j
-						console.log(j,'1111')
+				if (data.all_service.length != 0) {
+					for (let i = 0; i < data.all_service.length; i++) {
+						let j = data.all_service[i].sum * 1;
+						this.all_service = this.all_service + j;
+						console.log(j, '1111');
 					}
-					this.all_service = (this.all_service*1).toFixed(4)
-				}else {
+					this.all_service = (this.all_service * 1).toFixed(4);
+				} else {
 					this.all_service = 0;
 				}
-				if (data.yesterday_service.length != 0 ){
-					for(let i = 0;i < data.yesterday_service.length; i++){
-						this.yesterday_service += data.yesterday_service[i].sum
+				if (data.yesterday_service.length != 0) {
+					for (let i = 0; i < data.yesterday_service.length; i++) {
+						this.yesterday_service += data.yesterday_service[i].sum;
 					}
-				}else {
+				} else {
 					this.yesterday_service = 0;
 				}
 				this.tabList = data.list;
@@ -182,7 +180,8 @@ page {
 .bg {
 	width: 750rpx;
 	height: 248rpx;
-	background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+
+	background: linear-gradient(30deg, #2e58ff, #33eeff);
 	border-bottom-left-radius: 150rpx;
 	border-bottom-right-radius: 150rpx;
 }
@@ -206,6 +205,12 @@ page {
 		font-weight: bold;
 		color: #0f253a;
 	}
+	.num {
+		font-size: 40rpx;
+		font-family: PingFang SC;
+		font-weight: bold;
+		color: #0f253a;
+	}
 	.info-font {
 		font-size: 28rpx;
 		font-family: PingFang SC;
@@ -233,7 +238,7 @@ page {
 		height: 100%;
 		color: #fff;
 		line-height: 1.5;
-		background: linear-gradient(90deg, #60bab0, #60bab0, #45969b);
+		background: linear-gradient(0deg, #2e58ff, #32c6ff);
 		border-top-left-radius: 20rpx;
 		border-bottom-left-radius: 20rpx;
 	}
@@ -317,7 +322,7 @@ page {
 		margin-bottom: 30rpx;
 		border-radius: 15rpx;
 		background-color: #ffffff;
-		border: 1px solid $uni-color-primary;
+		border: 1px solid #2E58FF;
 		padding: 15rpx 10rpx 35rpx 30rpx;
 		.ls1 {
 			font-weight: bold;

+ 570 - 0
pages/user/myjiedian.vue

@@ -0,0 +1,570 @@
+<template>
+	<view class="content">
+		<view class="status_bar"><!-- 这里是状态栏 --></view>
+		<!-- 头部 -->
+		<view class="container">
+			<view class="body-title">
+				<view class="goback-box" @click="toBack"><image class="goback" src="../../static/icon/fanhui.png" mode=""></image></view>
+				<view class="header">互助团队</view>
+			</view>
+			<view class="jiedianbackground"><image src="../../static/img/myJ-bg.png" mode=""></image></view>
+			<view class="number-box">
+				<view class="number">
+					<text>{{ 100 }}</text>
+					人
+				</view>
+				<view class="renshu">我的互助团队人数</view>
+			</view>
+		</view>
+		<view class="message">
+			<view class="yeji">
+				<view class="yeji-a">
+					<view class="yeji-buttom">8000</view>
+					<view class="yeji-top">收益</view>
+				</view>
+				<view class="border"></view>
+				<view class="yeji-a">
+					<view class="yeji-buttom">8000</view>
+					<view class="yeji-top">支出</view>
+				</view>
+			</view>
+			<view class="back" @click="navBack()" v-if="parentList.length > 0">
+				<image src="../../static/img/zhengyi10.png" mode=""></image>
+				返回
+			</view>
+			<view class="relation-box">
+				<view class="relation">
+					<view class="headbox">
+						<view class="head">
+							<view class="photo"><image v-if="avatar" :src="avatar"></image></view>
+						</view>
+					</view>
+					<view class="information">
+						<view class="name clamp">{{ name }}</view>
+						<view class="cell clamp">{{ phone }}</view>
+					</view>
+				</view>
+				<view class="sanchaji"><image src="../../static/img/sanchaji.png" mode=""></image></view>
+				<view class="subordinate">
+					<view class="headbox" v-if="listA" @click="nav('a')">
+						<view class="head">
+							<view class="photo"><image v-if="listA.avatar" :src="listA.avatar" mode="scaleToFill"></image></view>
+						</view>
+						<view class="head-name">{{ listA.nickname }}</view>
+						<view class="head-phone">{{ listA.phone }}</view>
+					</view>
+					<view class="zhuce" v-else @click="open('A')"><view class="jia"></view></view>
+					<view class="headbox" v-if="listB" @click="nav('b')">
+						<view class="head">
+							<view class="photo"><image :key="listB.id" :src="listB.avatar" mode="scaleToFill"></image></view>
+						</view>
+						<view class="head-name">{{ listB.nickname }}</view>
+						<view class="head-phone">{{ listB.phone }}</view>
+					</view>
+					<view class="zhuce" v-else @click="open('B')"><view class="jia"></view></view>
+
+					<view class="headbox" v-if="listC" @click="nav('c')">
+						<view class="head">
+							<view class="photo"><image v-if="listC.avatar" :src="listC.avatar" mode="scaleToFill"></image></view>
+						</view>
+						<view class="head-name">{{ listC.nickname }}</view>
+						<view class="head-phone">{{ listC.phone }}</view>
+					</view>
+					<view class="zhuce" v-else @click="open('C')"><view class="jia"></view></view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { getjiedian, getReferralList, addJiedian } from '@/api/user.js';
+import { mapState, mapMutations } from 'vuex';
+export default {
+	data() {
+		return {
+			bianhao: '1',
+			a: 1,
+			b: 2,
+			c: 3,
+			listA: '', //节点A
+			listB: '', //节点B
+			listC: '', //节点C
+			name: '', //当前节点姓名
+			phone: '', //当前节点手机号
+			avatar: '', //当前节点头像
+			id: '',
+			uid: '',
+			jiedianList: [],
+			parentList: [], //保存打开层级用户数据
+			parent_area: ''
+		};
+	},
+	computed: {
+		...mapState('user', ['userInfo', 'orderInfo', 'hasLogin'])
+	},
+	onLoad() {
+		this.name = this.userInfo.nickname;
+		this.phone = this.userInfo.phone;
+		this.avatar = this.userInfo.avatar;
+		this.id = this.userInfo.uid;
+		// this.loadData();
+	},
+
+	methods: {
+		// 点击返回 我的页面
+		toBack() {
+			uni.navigateBack({
+				
+			})
+		},
+		//切换按钮
+		radio(e) {
+			this.bianhao = e;
+		},
+		//返回
+		navBack() {
+			const obj = this;
+			// 删除
+			let parent = obj.parentList.pop();
+			console.log(parent);
+			console.log(obj.parentList, 'navBack');
+			// 保存回退后数据对象
+			obj.name = parent.name;
+
+			obj.avatar = parent.avatar;
+			obj.id = parent.id;
+			obj.listA = obj.listB = obj.listC = '';
+			console.log(parent, '对象');
+			obj.loadData();
+		},
+		loadData() {
+			const obj = this;
+			uni.showLoading({
+				title: '加载中。。。',
+				mask: true
+			});
+			getjiedian({}, this.id)
+				.then(({ data }) => {
+					uni.hideLoading();
+					if (data.list.length != 0) {
+						data.list.forEach(e => {
+							console.log('e', e);
+							let item = '';
+							if (e.parent_area == 'A') {
+								item = 'listA';
+							} else if (e.parent_area == 'B') {
+								item = 'listB';
+							} else if (e.parent_area == 'C') {
+								item = 'listC';
+							}
+							obj[item] = e;
+							console.log(obj, '当前数据');
+						});
+					} else {
+						return;
+					}
+				})
+				.catch(e => {
+					uni.hideLoading();
+				});
+		},
+		nav(type) {
+			const obj = this;
+			// 保存当前选中的对象
+			let item = '';
+			if (type == 'a') {
+				item = 'listA';
+			} else {
+				if (type == 'b') {
+					item = 'listB';
+				} else if (type == 'c') {
+					item = 'listC';
+				}
+			}
+			obj.parentList.push({
+				name: obj.name,
+				phone: obj.phone,
+				avatar: obj.avatar,
+				id: obj.id
+			});
+			console.log(obj.parentList, 's');
+			obj.name = obj[item].nickname;
+			obj.phone = obj[item].phone;
+			obj.avatar = '';
+			obj.$nextTick(function() {
+				obj.avatar = obj[item].avatar;
+				obj.id = obj[item].uid;
+				obj.listA = '';
+				obj.listB = '';
+				obj.listC = '';
+				obj.loadData();
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	padding: 0;
+	margin: 0;
+	height: 100%;
+	background-color: #ffffff;
+}
+.status_bar {
+	height: var(--status-bar-height);
+	width: 100%;
+}
+.container {
+	width: 750rpx;
+	height: 460rpx;
+	position: relative;
+	.jiedianbackground {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		width: 750rpx;
+		height: 460rpx;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.body-title {
+		height: 80rpx;
+		text-align: center;
+		font-size: 35rpx;
+		position: relative;
+		.header {
+			position: absolute;
+			left: 0;
+			top: 0;
+			width: 100%;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #fffeff;
+			height: 80rpx;
+			font-size: 36rpx;
+			font-weight: 700;
+			z-index: 9;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.goback-box {
+			position: absolute;
+			left: 18rpx;
+			top: 0;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+		}
+		.goback {
+			z-index: 100;
+			width: 34rpx;
+			height: 34rpx;
+		}
+	}
+
+	.number-box {
+		margin-top: 100rpx;
+		width: 750rpx;
+		height: 400rpx;
+		position: absolute;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+
+		.number {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #ffffff;
+
+			text {
+				font-size: 72rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #ffffff;
+				line-height: 86rpx;
+			}
+		}
+
+		.renshu {
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #ffffff;
+		}
+	}
+}
+
+.message {
+	padding: 0 30rpx;
+
+	.relation-box {
+		margin-top: 100rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+
+		.relation {
+			position: relative;
+			display: flex;
+			align-items: center;
+
+			.headbox {
+				position: absolute;
+				// width: 154rpx;
+				// height: 154rpx;
+
+				.head {
+					width: 154rpx;
+					height: 154rpx;
+					background: #2e58ff;
+					box-shadow: 5rpx 0rpx 5rpx 0rpx rgba(110, 171, 78, 0.26);
+					border-radius: 50%;
+					overflow: hidden;
+
+					.photo {
+						width: 154rpx;
+						height: 154rpx;
+
+						image {
+							width: 100%;
+							height: 100%;
+						}
+					}
+				}
+
+				.head-title {
+					margin: -30rpx 30rpx 0 30rpx;
+					width: 94rpx;
+					height: 32rpx;
+
+					image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+
+				// .head-name{
+				// 	max-width: 100%;
+				// 	font-size: 32rpx;
+				// 	font-weight: bold;
+				// 	color: #333333;
+				// }
+				// .head-phone{
+				// 	font-size: 26rpx;
+				// 	font-weight: 500;
+				// 	color: #999999;
+				// }
+			}
+
+			.information {
+				margin-left: 77rpx;
+				display: flex;
+				padding: 20rpx 10rpx;
+				flex-direction: column;
+				width: 297rpx;
+				height: 137rpx;
+				background: #ffffff;
+				border: 4rpx solid #2e58ff;
+				border-radius: 10rpx;
+
+				.name {
+					text-align: left;
+					margin-left: 80rpx;
+					font-size: 32rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #2e58ff;
+				}
+
+				.cell {
+					text-align: left;
+					margin-left: 80rpx;
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #2e58ff;
+				}
+			}
+		}
+
+		.sanchaji {
+			margin: 30rpx 0;
+			width: 530rpx;
+			height: 91rpx;
+
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.subordinate {
+			width: 750rpx;
+			display: flex;
+			justify-content: space-around;
+
+			.zhuce {
+				width: 154rpx;
+				height: 154rpx;
+
+				.jia {
+					width: 154rpx;
+					height: 154rpx;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					justify-content: center;
+
+					background: #e8e8e8;
+					box-shadow: 5rpx 0rpx 5rpx 0rpx rgba(110, 171, 78, 0.26);
+					border-radius: 50%;
+					overflow: hidden;
+
+					.jia_photo {
+						font-size: 80rpx;
+						line-height: 1;
+						color: #a3a3a3;
+					}
+
+					.font {
+						font-size: 22rpx;
+						font-weight: 500;
+						color: #999999;
+					}
+				}
+			}
+
+			.headbox {
+				width: 33.3%;
+				// height: 154rpx;
+				display: flex;
+				flex-direction: column;
+				// flex-wrap: nowrap;
+				align-items: center;
+				padding: 0 10rpx;
+
+				.head {
+					width: 154rpx;
+					height: 154rpx;
+					background: #2e58ff;
+					box-shadow: 5rpx 0rpx 5rpx 0rpx rgba(110, 171, 78, 0.26);
+					border-radius: 50%;
+					overflow: hidden;
+
+					.photo {
+						width: 154rpx;
+						height: 154rpx;
+
+						image {
+							width: 100%;
+							height: 100%;
+						}
+					}
+				}
+
+				.head-title {
+					margin: -30rpx 30rpx 0 30rpx;
+					width: 94rpx;
+					height: 32rpx;
+
+					image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+
+				.head-name {
+					margin-top: 20rpx;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					width: 150rpx;
+					padding-top: 10rpx;
+					text-align: center;
+					// margin: 30rpx 0 0 0;
+					font-size: 32rpx;
+					font-weight: bold;
+					color: #333333;
+				}
+
+				.head-phone {
+					margin: 15rpx 0 0 0;
+					font-size: 26rpx;
+					font-weight: 500;
+					color: #999999;
+				}
+			}
+		}
+	}
+
+	.yeji {
+		position: relative;
+		margin-top: -72rpx;
+		width: 690rpx;
+		height: 143rpx;
+		background: #ffffff;
+		box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(50, 50, 52, 0.06);
+		border-radius: 10rpx;
+		display: flex;
+		align-items: center;
+
+		.yeji-a {
+			width: 50%;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+
+			.yeji-top {
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #333333;
+			}
+
+			.yeji-buttom {
+				font-size: 42rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #333333;
+			}
+		}
+
+		.border {
+			width: 1rpx;
+			height: 51rpx;
+			background: #dddddd;
+		}
+	}
+
+	.back {
+		float: right;
+		margin-top: 40rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+
+		image {
+			width: 24rpx;
+			height: 23rpx;
+		}
+
+		width: 104rpx;
+		height: 39rpx;
+		border: 2rpx solid #6eab4e;
+		border-radius: 7rpx;
+		font-size: 24rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #6eab4e;
+	}
+}
+</style>

+ 0 - 153
pages/user/notice.vue

@@ -1,153 +0,0 @@
-<template>
-	<view>
-		<view class="notice-item">
-			<text class="time">11:30</text>
-			<view class="content">
-				<text class="title">新品上市,全场满199减50</text>
-				<view class="img-wrapper">
-					<image class="pic" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556465765776&di=57bb5ff70dc4f67dcdb856e5d123c9e7&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F01fd015aa4d95fa801206d96069229.jpg%401280w_1l_2o_100sh.jpg"></image>
-				</view>
-				<text class="introduce">
-					虽然做了一件好事,但很有可能因此招来他人的无端猜测,例如被质疑是否藏有其他利己动机等,乃至谴责。即便如此,还是要做好事。
-				</text>
-				<view class="bot b-t">
-					<text>查看详情</text>
-					<text class="more-icon iconfont iconenter"></text>
-				</view>
-			</view>
-		</view>
-		<view class="notice-item">
-			<text class="time">昨天 12:30</text>
-			<view class="content">
-				<text class="title">新品上市,全场满199减50</text>
-				<view class="img-wrapper">
-					<image class="pic" src="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3761064275,227090144&fm=26&gp=0.jpg"></image>
-					<view class="cover">
-						活动结束
-					</view>
-				</view>
-				<view class="bot b-t">
-					<text>查看详情</text>
-					<text class="more-icon iconfont iconenter"></text>
-				</view>
-			</view>
-		</view>
-		<view class="notice-item">
-			<text class="time">2019-07-26 12:30</text>
-			<view class="content">
-				<text class="title">新品上市,全场满199减50</text>
-				<view class="img-wrapper">
-					<image class="pic" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1556465765776&di=57bb5ff70dc4f67dcdb856e5d123c9e7&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F01fd015aa4d95fa801206d96069229.jpg%401280w_1l_2o_100sh.jpg"></image>
-					<view class="cover">
-						活动结束
-					</view>
-				</view>
-				<text class="introduce">新品上市全场2折起,新品上市全场2折起,新品上市全场2折起,新品上市全场2折起,新品上市全场2折起</text>
-				<view class="bot b-t">
-					<text>查看详情</text>
-					<text class="more-icon iconfont iconenter"></text>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		data() {
-			return {
-
-			}
-		},
-		methods: {
-
-		}
-	}
-</script>
-
-<style lang='scss'>
-	page {
-		background-color: #f7f7f7;
-		padding-bottom: 30upx;
-	}
-
-	.notice-item {
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-	}
-
-	.time {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		height: 80upx;
-		padding-top: 10upx;
-		font-size: 26upx;
-		color: #7d7d7d;
-	}
-
-	.content {
-		width: 710upx;
-		padding: 0 24upx;
-		background-color: #fff;
-		border-radius: 4upx;
-	}
-
-	.title {
-		display: flex;
-		align-items: center;
-		height: 90upx;
-		font-size: 32upx;
-		color: #303133;
-	}
-
-	.img-wrapper {
-		width: 100%;
-		height: 260upx;
-		position: relative;
-	}
-
-	.pic {
-		display: block;
-		width: 100%;
-		height: 100%;
-		border-radius: 6upx;
-	}
-
-	.cover {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		left: 0;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		background-color: rgba(0, 0, 0, .5);
-		font-size: 36upx;
-		color: #fff;
-	}
-
-	.introduce {
-		display: inline-block;
-		padding: 16upx 0;
-		font-size: 28upx;
-		color: #606266;
-		line-height: 38upx;
-	}
-
-	.bot {
-		display: flex;
-		align-items: center;
-		justify-content: space-between;
-		height: 80upx;
-		font-size: 24upx;
-		color: #707070;
-		position: relative;
-	}
-
-	.more-icon {
-		font-size: 32upx;
-	}
-</style>

+ 0 - 354
pages/user/rake.vue

@@ -1,354 +0,0 @@
-<template>
-	<view class="rake">
-		<view class="item" v-for="(ls,index) in list" v-if="ls.stock != 0">
-			<view class="top">
-				<view class="info-title">
-					<image :src="ls.logo" mode=""></image>
-					<view class="">{{ ls.name }}</view>
-				</view>
-				<view class="tags">
-					<view class="tag" v-for="it in ls.tags" :key="it">{{ it }}</view>
-				</view>
-				<view class="base-info">
-					<view class="info-item">
-						<view class="tit">单价</view>
-						<view class="val">{{ +ls.cost_money }}{{ls.cost_money_type}}/{{ ls.get_money_type === 'BZZ' ? '节点' : 'T' }}</view>
-					</view>
-					<view class="info-item">
-						<view class="tit">有效算力</view>
-						<view class="val">{{ ls.step }} {{ ls.get_money_type === 'BZZ' ? '节点' : 'T' }}</view>
-					</view>
-					<view class="info-item">
-						<view class="tit">周期</view>
-						<view class="val">{{ ls.first_step_time + ls.second_step_time }}天 + {{ ls.third_step_time }}天</view>
-					</view>
-				</view>
-			</view>
-			<view class="btn-wrapper">
-				<view class="btn">
-					服务费:{{ls.user_service_ratio*1}}%
-					<text @click="+ls.lower_service_ratio<= +mList[index].user_service_ratio ? '': set(index,ls,0)" :class="{'black':+ls.lower_service_ratio<= +mList[index].user_service_ratio }">设置</text>
-					
-				</view>
-<!-- 				<view class="btn">
-					佣金:{{ls.award_ratio*1}}%
-					<text @click="ls.lower_award_ratio*1 < mList[index].award_ratio*1 ? set(index,ls,1):''" :class="{'black':+ls.lower_award_ratio >= +mList[index].award_ratio }">设置</text>
-				</view> -->
-			</view>
-			
-		</view>
-		<view class="jg" v-if="list.length !== 0"></view>
-		<u-empty v-if="list.length == 0"></u-empty>
-		<uni-popup ref="popup" type="center">
-			<view class="wrapper">
-				<view class="title">
-					设置{{setType === 0? '服务费比例':'佣金比例'}}
-				</view>
-				<input type="number" v-model="setVal" :placeholder="placeTitle" class="inp" />
-				<view class="btn-wrapper">
-					<view class="cansel" @click="close()">取消</view>
-					<view class="qr" @click="sub()">确定</view>
-				</view>
-			</view>
-		</uni-popup>
-	</view>
-</template>
-
-<script>
-import { mining, buyMining } from '@/api/market.js';
-import {setServiceRatio ,setRatio} from '@/api/set.js'
-export default {
-	data() {
-		return {
-			height: 0,
-			setType: 0,
-			setVal: null,
-			list: [],
-			mList: [],
-			m_service_ratio: 0,
-			uid:0,
-			max_ratio: 0,
-			min_ratio: 0,
-			item: {}
-		};
-	},
-	computed: {
-		placeTitle() {
-			return `可设置比例为${this.min_ratio}%~${this.max_ratio}%`;
-		}
-	},
-	onReady(res) {
-		// var _this = this;
-		// uni.getSystemInfo({
-		// 	success: resu => {
-		// 		const query = uni.createSelectorQuery();
-		// 		query.select('.list-cell').boundingClientRect();
-		// 		query.exec(function(res) {
-		// 			console.log(res, 'ddddddddddddd');
-		// 			_this.height = resu.windowHeight - res[0].top + 'px';
-		// 			console.log('打印页面的剩余高度', _this.height);
-		// 		});
-		// 	},
-		// 	fail: res => {}
-		// });
-	},
-	onLoad(opt) {
-		if(opt) {
-			this.uid = opt.uid
-		}
-		// uni.showLoading({
-		// 	title: '加载中'
-		// })
-		this.loadMlist()
-		
-	},
-	methods: {
-		set(index,ls,num) {
-			console.log(index)
-			this.setType = num
-			this.item = ls
-			if(this.setType === 0) {
-				this.min_ratio = +this.mList[index].user_service_ratio
-				this.max_ratio = +this.list[index].lower_service_ratio
-				console.log(this.min_ratio,this.max_ratio,'5555555555555555555555555')
-				if(this.min_ratio  === this.max_ratio) {
-					this.$api.msg('当前无法设置')
-				}else {
-					this.$refs.popup.open();
-				}
-				
-				console.log(this.min_ratio,this.max_ratio)
-			}else {
-				this.min_ratio = +this.list[index].lower_award_ratio
-				this.max_ratio = +this.mList[index].award_ratio
-				console.log(this.min_ratio,this.max_ratio,'5555555555555555555555555')
-				if(this.min_ratio  === this.max_ratio) {
-					this.$api.msg('当前无法设置')
-				}else {
-					this.$refs.popup.open();
-				}
-			}
-			
-			
-		},
-		close() {
-			this.$refs.popup.close();
-			this.setVal = null;
-		},
-		sub() {
-			console.log();
-			this.$refs.popup.close();
-			if(this.setType === 0){
-				setServiceRatio(this.uid,{
-					ratio: this.setVal,
-					mid: this.item.id
-				}).then(res => {
-					this.$api.msg(res.msg)
-					this.loadData()
-				})
-			}else {
-				setRatio(this.uid,{
-					ratio: this.setVal,
-					mid: this.item.id
-				}).then(res => {
-					this.$api.msg(res.msg)
-					this.loadData()
-				})
-			}
-
-			this.setVal = null
-			
-			
-			
-		},
-		loadData() {
-			mining({
-				uid: this.uid,
-				page: 1,
-				limit: 1000
-			}).then(({ data }) => {
-				this.list = data.data;
-				// uni.hideLoading()
-				console.log(this.list, '88888888888888');
-			});
-		},
-		loadMlist() {
-			mining({
-				// uid: this.uid,
-				page: 1,
-				limit: 1000
-			}).then(({ data }) => {
-				this.mList = data.data;
-				console.log(this.mList, '999999999999999999999999999999999999');
-				this.loadData();
-			});
-		}
-		
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-page {
-	height: 100%;
-	// padding-top: 20rpx;
-}
-.rake {
-	height: 100%;
-	// padding-top: 30rpx;
-}
-.item {
-	margin: 20rpx auto;
-	width: 670rpx;
-	// height: 438rpx;
-	background: #f7f6fb;
-	border-radius: 10rpx;
-	box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2);
-	.top {
-		// height: 347rpx;
-		width: 100%;
-		padding: 40rpx 30rpx 0;
-		.info-title {
-			display: flex;
-
-			image {
-				display: inline-block;
-				width: 38rpx;
-				height: 38rpx;
-				margin-left: 10rpx;
-				flex-shrink: 0;
-			}
-			view {
-				padding-left: 12rpx;
-				font-size: 30rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #333333;
-			}
-		}
-		.tags {
-			padding-top: 20rpx;
-			display: flex;
-			flex-wrap: wrap;
-			.tag {
-				display: inline-block;
-				padding: 0 20rpx;
-				text-align: center;
-				line-height: 43rpx;
-				background: #e3f6fa;
-				border-radius: 22rpx;
-				margin: 10rpx 10rpx 0;
-				font-size: 24rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #0ec1a1;
-			}
-		}
-		.base-info {
-			padding-top: 30rpx;
-			display: flex;
-			justify-content: space-between;
-			// text-align: center;
-			font-size: 24rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #333333;
-			padding-bottom: 30rpx;
-		}
-		.end-time {
-			font-size: 30rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #5771df;
-			padding-bottom: 24rpx;
-		}
-	}
-	.btn-wrapper {
-		// width: 670rpx;
-		height: 95rpx;
-		background: #ffffff;
-		border-radius: 0px 0px 10rpx 10rpx;
-		display: flex;
-		justify-content: flex-end;
-		// justify-content: space-between;
-		align-items: center;
-		padding-right: 20rpx;
-		.btn {
-			// display: flex;
-			padding-left: 10rpx;
-			text {
-				
-				display: inline-block;
-				width: 108rpx;
-				height: 39rpx;
-				background: #5771df;
-				border: 1rpx solid #5771df;
-				box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.1);
-				border-radius: 20rpx;
-				text-align: center;
-				line-height: 35rpx;
-				margin-left: 11rpx;
-				font-size: 24rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #ffffff;
-			}
-			.black {
-				background-color: #999;
-				border-color: #999;
-			}
-		}
-	}
-}
-.list-cell {
-	width: 100%;
-	height: 100%;
-	background-color: #f8f8f8;
-}
-.wrapper {
-	width: 549rpx;
-	height: 344rpx;
-	background: #ffffff;
-	border-radius: 14rpx;
-	.title {
-		text-align: center;
-		padding-top: 40rpx;
-		font-size: 37rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #333333;
-	}
-	.inp {
-		display: block;
-		margin: 60rpx auto;
-		width: 439rpx;
-		height: 68rpx;
-		background: #f6f6f6;
-		border-radius: 10rpx;
-		padding-left: 13rpx;
-	}
-	.btn-wrapper {
-		display: flex;
-	
-		view {
-			width: 50%;
-			text-align: center;
-		}
-		.cansel {
-			font-size: 37rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #333333;
-		}
-		.qr {
-			font-size: 37rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: #5771df;
-		}
-	}
-}
-.jg {
-	height: 20rpx;
-}
-</style>

+ 96 - 20
pages/user/user.vue

@@ -24,12 +24,12 @@
 					<view class="sweets-name">糖果</view>
 				</view>
 				<view class="jiange"></view>
-				<view class="sweets">
+				<view class="sweets" @click="nav('/pages/money/integralP')">
 					<view class="limit">111</view>
 					<view class="sweets-name">拼团积分</view>
 				</view>
 				<view class="jiange"></view>
-				<view class="sweets">
+				<view class="sweets" @click="nav('/pages/money/integralShopping')">
 					<view class="limit">111</view>
 					<view class="sweets-name">购物积分</view>
 				</view>
@@ -42,28 +42,28 @@
 			<view class="my-order">
 				<view class="box-title flex ">
 					<view class="title1"><text>我的订单</text></view>
-					<view class="link" @click="navTo()" hover-class="common-hover"><text class="iconfont iconenter"></text></view>
+					<view class="link" @click="nav('/pages/order/order?state=0')" hover-class="common-hover"><text class="iconfont iconenter"></text></view>
 				</view>
 				<view class="order-section">
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/order/order?state=0')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative">
 							<image class="icon-img" src="/static/user/user01.png" mode="aspectFit"></image>
 						</view>
 						<text>待付款</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/order/order?state=1')" hover-class="common-hover" :hover-stay-time="50">
 						<view class="icon1 position-relative">
 							<image class="icon-img" src="/static/user/user02.png" mode="aspectFit"></image>
 						</view>
 						<text>待发货</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/order/order?state=2')" hover-class="common-hover" :hover-stay-time="50">
 						<view class="icon1 position-relative">
 							<image class="icon-img" src="/static/user/user03.png" mode="aspectFit"></image>
 						</view>
 						<text>待收货</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/order/order?state=4')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="/static/user/user04.png" mode="aspectFit"></image></view>
 						<text>已完成</text>
 					</view>
@@ -72,22 +72,22 @@
 			<view class="my-order">
 				<view class="box-title flex ">
 					<view class="title1"><text>拼购工具</text></view>
-					<view class="link" @click="navTo()" hover-class="common-hover"></view>
+					<view class="link" hover-class="common-hover"></view>
 				</view>
 				<view class="order-section">
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/assets/myPing')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="../../static/user/myPing.png" mode="aspectFit"></image></view>
 						<text>我的拼购</text>
 					</view>
-					<view class="order-item" @click="navTo('./pages/user/pingou')" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/user/myNote')" hover-class="common-hover" :hover-stay-time="50">
 						<view class="icon1 position-relative"><image class="icon-img" src="../../static/user/myPoint.png" mode="aspectFit"></image></view>
 						<text>我的节点</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/market/myCalculation')" hover-class="common-hover" :hover-stay-time="50">
 						<view class="icon1 position-relative"><image class="icon-img" src="../../static/user/myFu.png" mode="aspectFit"></image></view>
 						<text>我的服务器</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/index/info')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="../../static/user/data.png" mode="aspectFit"></image></view>
 						<text>汇总数据</text>
 					</view>
@@ -96,40 +96,56 @@
 			<view class="my-order">
 				<view class="box-title flex ">
 					<view class="title1"><text>更多功能</text></view>
-					<view class="link" @click="navTo()" hover-class="common-hover"></view>
+					<view class="link" hover-class="common-hover"></view>
 				</view>
 				<view class="order-section">
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/user/extension')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="../../static/user/myTeam.png" mode="aspectFit"></image></view>
 						<text>我的团队</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/user/myjiedian')" hover-class="common-hover" :hover-stay-time="50">
 						<view class="icon1 position-relative"><image class="icon-img" src="../../static/user/myTeams.png" mode="aspectFit"></image></view>
 						<text>互助团队</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/user/shareQrCode')" hover-class="common-hover" :hover-stay-time="50">
 						<view class="icon1 position-relative"><image class="icon-img" src="../../static/user/myShare.png" mode="aspectFit"></image></view>
 						<text>团队邀请</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/address/address')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="../../static/user/myAddress.png" mode="aspectFit"></image></view>
 						<text>收货地址</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="server()" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="../../static/user/myKefu.png" mode="aspectFit"></image></view>
 						<text>联系客服</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/user/about')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="../../static/user/myAbout.png" mode="aspectFit"></image></view>
 						<text>关于我们</text>
 					</view>
-					<view class="order-item" @click="navTo()" hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="nav('/pages/set/set')" hover-class="common-hover" :hover-stay-time="50">
 						<view class=" icon1 position-relative"><image class="icon-img" src="../../static/user/mySet.png" mode="aspectFit"></image></view>
 						<text>设置</text>
 					</view>
 				</view>
 			</view>
 		</view>
+		<uni-popup ref="popup" type="center">
+			<view class="popup">
+				<view class="popup-dox">
+					<image class="popup-logo" src="../../static/img/lianxi.png"></image>
+					<view class="pop-title">已为您定制专属客服</view>
+					<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 class="close_icon" @click="close"><image src="../../static/img/Close.png"></image></view>
+		</uni-popup>
 	</view>
 </template>
 <script>
@@ -506,4 +522,64 @@ page,
 		}
 	}
 }
+.popup {
+	width: 640rpx;
+	background-color: #ffffff;
+	border-radius: 15rpx;
+	text-align: center;
+	.popup-dox {
+		position: relative;
+		top: -60rpx;
+		.popup-logo {
+			width: 460rpx;
+			height: 132rpx;
+		}
+		.pop-title {
+			font-size: 40rpx;
+			font-weight: bold;
+			color: #333333;
+			padding: 25rpx 0rpx;
+			margin-bottom: 50rpx;
+		}
+		.popup-text {
+			width: 400rpx;
+			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;
+				margin-right: 14rpx;
+				image {
+					width: 48rpx;
+					height: 40rpx;
+				}
+			}
+		}
+	}
+}
+.close_icon {
+	width: 60rpx;
+	height: 60rpx;
+	margin: 88rpx auto 0;
+	image {
+		width: 100%;
+		height: 100%;
+	}
+}
 </style>

BIN
static/icon/add.png


BIN
static/icon/f-l.png


BIN
static/icon/f-r.png


BIN
static/icon/reduce.png


BIN
static/img/auto.png


BIN
static/img/down.png


BIN
static/img/fire.png


BIN
static/img/fwq-bg.png


BIN
static/img/index4.png


BIN
static/img/logroll-bg.png


BIN
static/img/myJ-bg.png


BIN
static/img/pgTip.png


BIN
static/img/rengouBg.png


BIN
static/img/sanchaji.png


BIN
static/img/sign-bg.png


BIN
static/img/sign-main.png


BIN
static/img/sign-popup.png


BIN
static/img/user-integralP.png


BIN
static/img/zhengyi10.png


BIN
static/tabBar/tab-assets-current.png


BIN
static/tabBar/tab-assets.png


BIN
static/tabBar/tab-home-current.png


BIN
static/tabBar/tab-home.png


BIN
static/tabBar/tab-market-current.png


BIN
static/tabBar/tab-market.png


BIN
static/tabBar/tab-message-current.png


BIN
static/tabBar/tab-message.png


BIN
static/tabBar/tab-my-current.png


BIN
static/tabBar/tab-my.png


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels