Browse Source

2020.04.28

yinchengnuo 4 năm trước cách đây
mục cha
commit
9506ab1b27
100 tập tin đã thay đổi với 2213 bổ sung394 xóa
  1. 2 1
      App.vue
  2. 2 1
      apis/good.js
  3. 12 1
      apis/order.js
  4. 3 0
      apis/team.js
  5. 2 0
      apis/verify.js
  6. 4 7
      common/util/request.js
  7. 142 0
      components/public/add-cart.vue
  8. 123 0
      components/public/num-input.vue
  9. 1 1
      components/public/swiper-status.vue
  10. 10 12
      filters/index.js
  11. 11 0
      index.html
  12. 4 4
      mixin/swiper-list.js
  13. 43 1
      pages.json
  14. 1 1
      pages/auth-card/auth-card.vue
  15. 11 1
      pages/auth-progress/auth-progress.vue
  16. 1 1
      pages/choose-size/choose-size.vue
  17. 61 0
      pages/comfirm-order-success/comfirm-order-success.vue
  18. 1 0
      pages/confirm-order/confirm-order.vue
  19. 294 0
      pages/confirm-order1/confirm-order1.vue
  20. 7 0
      pages/examine-detail/examine-detail.vue
  21. 8 8
      pages/good-detail/good-detail.vue
  22. 131 0
      pages/good-detail1/good-detail1.vue
  23. 8 4
      pages/index-my/index-my.vue
  24. 9 22
      pages/index/index.vue
  25. 106 54
      pages/invite-proxy/invite-proxy.vue
  26. 2 4
      pages/login-reg/login-reg.vue
  27. 5 8
      pages/manage-order/manage-order.vue
  28. 175 143
      pages/my-order/my-order.vue
  29. 5 3
      pages/my-storage/my-storage.vue
  30. 115 0
      pages/new-proxy/new-proxy.vue
  31. 101 0
      pages/order-detail1-list/order-detail1-list.vue
  32. 19 0
      pages/order-detail1-log/order-detail1-log.vue
  33. 262 0
      pages/order-detail1/order-detail1.vue
  34. 86 0
      pages/pay-order/pay-order.vue
  35. 83 104
      pages/place-order/place-order.vue
  36. 8 2
      pages/safe-manage/safe-manage.vue
  37. 1 1
      pages/shop-car/shop-car.vue
  38. 206 0
      pages/shop-car1/shop-car1.vue
  39. 5 2
      pages/team-manage/team-manage.vue
  40. BIN
      static/avatar.jpg
  41. BIN
      static/index/tabbar/a.png
  42. BIN
      static/index/tabbar/ac.png
  43. BIN
      static/index/tabbar/cart-act.png
  44. BIN
      static/index/tabbar/cart.png
  45. 2 0
      store/index.js
  46. 0 1
      store/modules/address.js
  47. 1 3
      store/modules/app.js
  48. 136 0
      store/modules/cart.js
  49. 3 0
      store/modules/userinfo.js
  50. 1 1
      uni.scss
  51. BIN
      unpackage/dist/build/h5.zip
  52. 0 3
      unpackage/dist/build/h5/index.html
  53. BIN
      unpackage/dist/build/h5/static/.9.png/1.9.png
  54. BIN
      unpackage/dist/build/h5/static/.9.png/LaunchImage@3x.png
  55. BIN
      unpackage/dist/build/h5/static/appicon/Icon-App-1024x1024@1x.png
  56. BIN
      unpackage/dist/build/h5/static/appicon/logo.png
  57. BIN
      unpackage/dist/build/h5/static/flashscreen.png
  58. BIN
      unpackage/dist/build/h5/static/icon/Video.png
  59. BIN
      unpackage/dist/build/h5/static/icon/appupdata.png
  60. BIN
      unpackage/dist/build/h5/static/icon/auth-float.png
  61. BIN
      unpackage/dist/build/h5/static/icon/auth-progress.png
  62. BIN
      unpackage/dist/build/h5/static/icon/copy.png
  63. BIN
      unpackage/dist/build/h5/static/icon/data-card.png
  64. BIN
      unpackage/dist/build/h5/static/icon/downToSuper.png
  65. BIN
      unpackage/dist/build/h5/static/icon/downToTop.png
  66. BIN
      unpackage/dist/build/h5/static/icon/downloadImg.png
  67. BIN
      unpackage/dist/build/h5/static/icon/emptyshopcar.png
  68. BIN
      unpackage/dist/build/h5/static/icon/heart-fill.png
  69. BIN
      unpackage/dist/build/h5/static/icon/heart.png
  70. BIN
      unpackage/dist/build/h5/static/icon/howuse.png
  71. BIN
      unpackage/dist/build/h5/static/icon/invite-proxy.png
  72. BIN
      unpackage/dist/build/h5/static/icon/like-fill.png
  73. BIN
      unpackage/dist/build/h5/static/icon/like.png
  74. BIN
      unpackage/dist/build/h5/static/icon/live-time.png
  75. BIN
      unpackage/dist/build/h5/static/icon/login-reg.png
  76. BIN
      unpackage/dist/build/h5/static/icon/nopass.png
  77. BIN
      unpackage/dist/build/h5/static/icon/ok.png
  78. BIN
      unpackage/dist/build/h5/static/icon/pass.png
  79. BIN
      unpackage/dist/build/h5/static/icon/share.png
  80. BIN
      unpackage/dist/build/h5/static/icon/sharemore.png
  81. BIN
      unpackage/dist/build/h5/static/icon/sharepyq.png
  82. BIN
      unpackage/dist/build/h5/static/icon/sharewx.png
  83. BIN
      unpackage/dist/build/h5/static/icon/super_price.png
  84. BIN
      unpackage/dist/build/h5/static/icon/top_price.png
  85. BIN
      unpackage/dist/build/h5/static/icon/upToCrown.png
  86. BIN
      unpackage/dist/build/h5/static/icon/upToTop.png
  87. BIN
      unpackage/dist/build/h5/static/icon/updata_wrapper.png
  88. 0 0
      unpackage/dist/build/h5/static/index.2d26d90a.css
  89. BIN
      unpackage/dist/build/h5/static/index/index/down-order.png
  90. BIN
      unpackage/dist/build/h5/static/index/index/income-running.png
  91. BIN
      unpackage/dist/build/h5/static/index/index/income-shop.png
  92. BIN
      unpackage/dist/build/h5/static/index/index/invite-proxy.png
  93. BIN
      unpackage/dist/build/h5/static/index/index/manage-money.png
  94. BIN
      unpackage/dist/build/h5/static/index/index/manage-order.png
  95. BIN
      unpackage/dist/build/h5/static/index/index/manage-poeple.png
  96. BIN
      unpackage/dist/build/h5/static/index/index/my-invite.png
  97. BIN
      unpackage/dist/build/h5/static/index/index/my-order.png
  98. BIN
      unpackage/dist/build/h5/static/index/index/my-stock.png
  99. BIN
      unpackage/dist/build/h5/static/index/index/news.png
  100. BIN
      unpackage/dist/build/h5/static/index/index/place-order.png

+ 2 - 1
App.vue

@@ -2,7 +2,8 @@
 	export default {
 		onLaunch: function() {
 			console.log('App Launch')
-			uni.toast = (...args) => uni.showToast({ duration: 3333, title: args[0], icon: 'none' })
+			uni.toast = (...args) => uni.showToast({ duration: 5678, title: args[0], icon: 'none' })
+			uni.loading = () => uni.showLoading({ mask: false })
 		},
 		onShow: function() {
 			console.log('App Show')

+ 2 - 1
apis/good.js

@@ -1,5 +1,6 @@
 import request from '@/common/util/request'
 
-export const _API_GoodList = data => request.get('/goods/list', data) // 获取商品列别接口
+// export const _API_GoodList = data => request.get('/goods/list', data) // 获取商品列别接口
+export const _API_GoodList = data => request.get('/goods/list1', data) // 获取商品列别接口
 
 export const _API_GoodDetail = data => request.get('/goods/detail', data) // 获取商品详情接口

+ 12 - 1
apis/order.js

@@ -2,11 +2,19 @@ import request from '@/common/util/request'
 
 export const _API_OrderChart = data => request.get('/app/chart?type=0', data) // 获取 订单管理 图表数据接口
 
+export const _API_OrderPay = data => request.get('/order/pay', data) // 我的订单-待审核
+
 
 export const _API_OrderMyExamine = data => request.get('/order/my_order?status=0', data) // 我的订单-待审核
 export const _API_OrderMySended = data => request.get('/order/my_order?status=1', data) // 我的订单-已发货
 export const _API_OrderMyCompleted = data => request.get('/order/my_order?status=2', data) // 我的订单-已完成
 
+export const _API_OrderMy1 = data => request.get('/order/my_order1?status=0', data) // 我的订单-全部
+export const _API_OrderMy2 = data => request.get('/order/my_order1?status=1', data) // 我的订单-待付款
+export const _API_OrderMy3 = data => request.get('/order/my_order1?status=2', data) // 我的订单-待审核
+export const _API_OrderMy4 = data => request.get('/order/my_order1?status=3', data) // 我的订单-待收货
+export const _API_OrderMy5 = data => request.get('/order/my_order1?status=4', data) // 我的订单-已完成
+
 
 export const _API_OrderDownWillpay = data => request.get('/order/order_lower?status=0', data) // 下级订单-待付款
 export const _API_OrderDownWillsend = data => request.get('/order/order_lower?status=1', data) // 下级订单-待发货
@@ -28,9 +36,12 @@ export const _API_OrderDel = data => request.get('/order/del', data) // 删除
 
 
 export const _API_OrderDetail = data => request.get('/order/detail', data) // 获取订单详情
+export const _API_OrderDetail1 = data => request.get('/order/detail1', data) // 获取订单详情
 
 
 export const _API_OrderSend = data => request.post('/order/forward', data) // 发货/转单
 
 
-export const _API_OrderStorage = data => request.get('/order/my_storage', data) // 我的库存
+export const _API_OrderStorage = data => request.get('/order/my_storage', data) // 我的库存
+
+export const _API_OrderAgain = data => request.get('/order/again', data) // 再次下单

+ 3 - 0
apis/team.js

@@ -8,6 +8,9 @@ export const _API_TeamPerData = data => request.get('/team/card_data', data) //
 export const _API_TeamList_Direct = data => request.get('/team/list?type=0', data) // 获取 => 团队管理 => 直属代理列表
 export const _API_TeamList_Down = data => request.get('/team/list?type=1', data) // 获取 => 团队管理 => 下级代理列表
 
+export const _API_TeamNewList_Day = data => request.get('/team/add_list?type=0', data) // 获取 => 团队新增 => 今日新增
+export const _API_TeamNewList_Month = data => request.get('/team/add_list?type=1', data) // 获取 => 团队新增 => 本月新增
+
 
 export const _API_TeamAchievement = data => request.get('/team/money', data) // 获取团队成员业绩
 

+ 2 - 0
apis/verify.js

@@ -8,6 +8,8 @@ export const _API_GetVerifyCode = data => request.get('/login/judge_login', data
 export const _API_LoginByPsw = data => request.post('/user/login', data) // 密码登陆
 export const _API_UpdataPsw = data => request.post('/user/update_pass', data) // 修改密码
 
+export const _API_Logout = data => request.get('/logout', data) // 退出登录
+
 export const _API_GzhWebInit = data => request.get('/wechat/wechat')
 
 // export const _API_GzhWebInit = data => request.post('/wechat/wechat', {

+ 4 - 7
common/util/request.js

@@ -2,15 +2,12 @@ import Vue from 'vue'
 import $store from '@/store'
 import uni_request from './uni_request.js'
 
-// const host = 'http://192.168.0.14'
-// const host = 'http://192.168.0.13'
-// const host = 'https://yinchengnuo.com'
-const host = 'http://api.app.jiuweiyun.cn'
-// const host = 'http://192.168.2.108'
+// const host = 'http://api.app.jiuweiyun.cn'
+const host = 'http://192.168.0.11'
 const port = 80
 // const port = 443
-// const url = '/dwbsapp'
-const url = '/api'
+const url = '/dwbsapp'
+// const url = '/api'
 
 // uni.onNetworkStatusChange(res => { $store.commit('device/NETWORKTYPE_CHANGE', res.networkType) }) // 网络类型变化监听
 // uni.getNetworkType({ success(res) { $store.commit('device/NETWORKTYPE_CHANGE', res.networkType) }}) // 获取网络类型

+ 142 - 0
components/public/add-cart.vue

@@ -0,0 +1,142 @@
+<template>
+	<view v-if="showed" class="add-cart">
+		<view class="content">
+			<view class="close" @tap="showed = false">
+				<text class="cuIcon-close"></text>
+			</view>
+			<view class="info">
+				<view class="item-info">
+					<image :src="item.main_img" mode=""></image>
+					<view class="ellipsis">{{ item.name }}</view>
+				</view>
+				<view v-for="(size, index) in item.size" :key="index" class="size-item">
+					<view class="left">
+						<text>{{ size }}</text>
+						<text class="basecolor">¥{{ item.money }}.00/套</text>
+					</view>
+					<NumInput :value="item.cart[index]" :args="[item.size_id[index]]" @change="numChange" />
+				</view>
+			</view>
+			<view class="add" @tap="addCart">加入购物车</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import NumInput from '@/components/public/num-input.vue'
+	export default {
+		components: { NumInput },
+		data() {
+			return {
+				showed: false,
+				item: {}
+			}
+		},
+		computed: {
+			choosedNum () {
+				return this.item.cart.reduce((t, e) => t + e, 0)
+			}
+		},
+		methods: {
+			show(item) {
+				this.showed = true
+				this.item = item
+			},
+			hide() {
+				this.showed = false
+			},
+			numChange(value, size_id) {
+				this.$set(this.item.cart, this.item.size_id.findIndex(e => e === size_id), value)
+			},
+			addCart() {
+				if (this.choosedNum) {
+					this.item.choosed = true
+					this.item.sizeChoosed = Array(this.item.size.length).fill(true)
+					console.log(this.item)
+					this.$store.commit('cart/ADD', this.item)
+					this.hide()
+				} else {
+					uni.showToast({ title: '请选择尺寸', icon: 'none' })
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.add-cart {
+		position: fixed;
+		width: 100vw;
+		height: 100vh;
+		z-index: 1;
+		background: rgba(0, 0, 0, .3);
+		.content {
+			left: 0;
+			right: 0;
+			bottom: 0;
+			height: 960rpx;
+			@include flex(column);
+			position: absolute;
+			background: #FFFFFF;
+			.close {
+				top: 0;
+				right: 0;
+				width: 100rpx;
+				height: 70rpx;
+				font-size: 40rpx;
+				@include flex();
+				z-index: 1;
+				position: absolute;
+			}
+			.info {
+				width: 100%;
+				height: 860rpx;
+				overflow: auto;
+				padding: 30rpx;
+				position: relative;
+				box-sizing: border-box;
+				.item-info {
+					height: 180rpx;
+					@include flex();
+					margin-bottom: 30rpx;
+					align-items: flex-start;
+					justify-content: flex-start;
+					image {
+						width: 180rpx;
+						height: 180rpx;
+						margin: 0 37rpx 0 18rpx;
+					}
+					view {
+						color: #181818;
+						font-size: 32rpx;
+						font-weight: bold;
+						line-height: 3;
+					}
+				}
+				.size-item {
+					@include flex()
+					height: 168rpx;
+					padding: 36rpx 18rpx;
+					box-sizing: border-box;
+					border-top: 2rpx solid #CCCCCC;
+					.left {
+						flex: 1;
+						height: 100%;
+						font-size: 28rpx;
+						@include flex(column);
+						align-items: flex-start;
+						justify-content: space-between;
+					}
+				}
+			}
+			.add {
+				@include flex();
+				color: #FFFFFF;
+				font-size: 36rpx;
+				flex: 1;
+				width: 100%;
+				background: $app-base-color;
+			}
+		}
+	}
+</style>

+ 123 - 0
components/public/num-input.vue

@@ -0,0 +1,123 @@
+<template>
+	<view class="num-input">
+		<view class="i l" @tap.stop="red">-</view>
+		<view class="i c" @tap.stop="inputNum = value ? value : ''; showInput = true">{{ value }}</view>
+		<view class="i r basecolor" @tap.stop="add">+</view>
+		<view v-if="showInput" class="inputModelWrapper">
+			<view class="inputModel">
+				<view class="t">请输入数量</view>
+				<view class="m">
+					<input ref="input" focus type="number" maxlength="3" v-model="inputNum" />
+				</view>
+				<view class="b">
+					<text class="l" @tap.stop="showInput = false">取消</text>
+					<text class="r basecolor" @tap.stop="comfirmNum">确定</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			value: { type: Number, default: 0 },
+			args: { type: Array, default: () => [] }
+		},
+		data() {
+			return {
+				showInput: false,
+				inputNum: 0
+			}
+		},
+		methods: {
+			red() {
+				if (this.value > 0) {
+					this.$emit('change', this.value - 1, ...this.args)
+				}
+			},
+			add() {
+				this.$emit('change', this.value + 1, ...this.args)
+			},
+			comfirmNum() {
+				if (this.inputNum) {
+					this.$emit('change', +this.inputNum, ...this.args)
+				} else {
+					this.$emit('change', 0, ...this.args)
+				}
+				this.showInput = false
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.num-input {
+		@include flex();
+		width: 200rpx;
+		height: 64rpx;
+		overflow: hidden;
+		font-size: 32rpx;
+		background: #F2F2F2;
+		border-radius: 64rpx;
+		.i {
+			flex: 1;
+			height: 100%;
+			@include flex();
+			&.c {
+				border-left: 4rpx solid #FFFFFF;
+				border-right: 4rpx solid #FFFFFF;
+			}
+		}
+		.inputModelWrapper {
+			@include flex();
+			top: 0;
+			left: 0;
+			z-index: 2;
+			width: 100vw;
+			height: 100vh;
+			position: fixed;
+			background: rgba(0, 0, 0, 0.3);
+			.inputModel {
+				width: 600rpx;
+				height: 400rpx;
+				background: #FFFFFF;
+				border-radius: 8rpx;
+				@include flex(column);
+				.t {
+					@include flex();
+					width: 100%;
+					height: 100rpx;
+					border-bottom: 1rpx solid #CCCCCC;
+				}
+				.m {
+					width: 100%;
+					flex: 1;
+					@include flex();
+					input {
+						width: 240rpx;
+						height: 120rpx;
+						text-align: center;
+						font-size: 88rpx;
+						border-radius: 8rpx;
+						border: 1rpx solid #CCCCCC;
+					}
+				}
+				.b {
+					@include flex();
+					width: 100%;
+					height: 100rpx;
+					border-top: 1rpx solid #CCCCCC;
+					text {
+						height: 100%;
+						flex: 1;
+						@include flex();
+						&.basecolor {
+							border-left: 1rpx solid #CCCCCC;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>

+ 1 - 1
components/public/swiper-status.vue

@@ -19,7 +19,7 @@
 	.swiper-status {
 		@include flex();
 		width: 100%;
-		height: 123rpx;
+		height: calc(100vh - 84rpx);
 		background: #F8F8F8;
 		color: $app-sec-text-color;
 	}

+ 10 - 12
filters/index.js

@@ -49,18 +49,16 @@ export const numDot = num => {
 }
 
 export const getOrderStatus = val => {
-	if (val) {
-		if (+val === 0) {
-			return '待付款'
-		} else if (+val === 1) {
-			return '待发货'
-		} else if (+val === 2) {
-			return '配送中'
-		} else if (+val === 3) {
-			return '已完成'
-		} else if (+val === 4) {
-			return '已取消'
-		}
+	if (+val === 0) {
+		return '待付款'
+	} else if (+val === 1) {
+		return '待发货'
+	} else if (+val === 2) {
+		return '配送中'
+	} else if (+val === 3) {
+		return '已完成'
+	} else if (+val === 4) {
+		return '已取消'
 	} else {
 		return ''
 	}

+ 11 - 0
index.html

@@ -9,11 +9,22 @@
         </title>
 		<script type='text/javascript' src='http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js'></script> 
 		<script type="text/javascript" src="http://cdn.staticfile.org/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>
+		<script src="https://cdn.staticfile.org/pako/1.0.10/pako.min.js"></script>
+		<script src="https://cdn.staticfile.org/Base64/1.0.2/base64.min.js"></script>
         <script>
             document.addEventListener('DOMContentLoaded', function() {
                 document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
             })
         </script>
+		<style type="text/css">
+			.uni-simple-toast__text {
+				font-size: 24px!important;
+				width: 65vw!important;
+			}
+			.uni-modal__btn_primary {
+				color: #F76454!important;
+			}
+		</style>
         <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
     </head>
     <body>

+ 4 - 4
mixin/swiper-list.js

@@ -14,7 +14,7 @@ export default {
 	},
 	methods: {
 		MIXIN_transition({ detail: { dx } }) { // swiper 切换时 ///////////////////////////////////////////////////////////////////<固定写法>
-			this.MIXIN_MoveBarLeft = this.MIXIN_FinishedIndex * (this.MIXIN_ScreenWidth / this.typeList.length) +  dx / this.typeList.length
+			// this.MIXIN_MoveBarLeft = this.MIXIN_FinishedIndex * (this.MIXIN_ScreenWidth / this.typeList.length) +  dx / this.typeList.length
 		},
 		MIXIN_change({ detail: { current } }) {
 			this.MIXIN_ActiveIndex = current
@@ -27,8 +27,8 @@ export default {
 			}
 		},
 		switchSwiper(index) { // 点击导航栏切换
-			this.MIXIN_NowIndex = index
-			this.MIXIN_MoveBarLeft = this.MIXIN_NowIndex * (this.MIXIN_ScreenWidth / this.typeList.length)
+			this.MIXIN_NowIndex = this.MIXIN_ActiveIndex = index
+			this.MIXIN_MoveBarLeft = (this.MIXIN_NowIndex + 1) * (this.MIXIN_ScreenWidth / this.typeList.length)
 		}, /////////////////////////////////////////////////////////////////////////////////////////////////////////////////<固定写法>
 		MIXIN_pulldownrefresh() { // 下拉刷新
 			this.page[this.MIXIN_NowIndex] = 1
@@ -40,7 +40,7 @@ export default {
 		MIXIN_request(action) { // 请求数据
 			return new Promise(resolve => { // 只有在 首次加载列表或者下拉刷新时才显示 liaoding
 				if (this.page[this.MIXIN_NowIndex]) { // 当上一批数量不小于 size 时执行
-					// !action && uni.showLoading({ mask: true }) // 开始 loading, 只有在 首次加载列表或者下拉刷新时才显示 liaoding
+					!action && uni.showLoading({ mask: true }) // 开始 loading, 只有在 首次加载列表或者下拉刷新时才显示 liaoding
 					this._requesting = true // 请求加锁防抖
 					this.apis[this.MIXIN_NowIndex]({ page: this.page[this.MIXIN_NowIndex] }).then(res => {
 						this.MIXIN_requestHandle ? this.MIXIN_requestHandle(res) : '' // 执行请求结束处理函数

+ 43 - 1
pages.json

@@ -90,7 +90,7 @@
         }
         ,{
             "path" : "pages/my-order/my-order",
-            "style": { "navigationBarTitleText": "我的订单" }
+            "style": { "navigationBarTitleText": "我的订单", "enablePullDownRefresh": true }
         }
         ,{
             "path" : "pages/down-order/down-order",
@@ -164,6 +164,42 @@
             "path" : "pages/change-phone/change-phone",
             "style": { "navigationBarTitleText": "手机换绑" }
         }
+        ,{
+            "path" : "pages/new-proxy/new-proxy",
+            "style": { "navigationBarTitleText": "新增代理" }
+        }
+        ,{
+            "path" : "pages/good-detail1/good-detail1",
+            "style": { "navigationBarTitleText": "订货下单" }
+        }
+        ,{
+            "path" : "pages/shop-car1/shop-car1",
+            "style": { "navigationBarTitleText": "购物车" }
+        }
+        ,{
+            "path" : "pages/confirm-order1/confirm-order1",
+            "style": { "navigationBarTitleText": "填写订单" }
+        }
+        ,{
+            "path" : "pages/comfirm-order-success/comfirm-order-success",
+            "style": { "navigationBarTitleText": "订单提交成功" }
+        }
+        ,{
+            "path" : "pages/pay-order/pay-order",
+            "style": { "navigationBarTitleText": "订单付款" }
+        }
+        ,{
+            "path" : "pages/order-detail1/order-detail1",
+            "style": { "navigationBarTitleText": "订单详情" }
+        }
+        ,{
+            "path" : "pages/order-detail1-list/order-detail1-list",
+            "style": { "navigationBarTitleText": "商品列表" }
+        }
+        ,{
+            "path" : "pages/order-detail1-log/order-detail1-log",
+            "style": { "navigationBarTitleText": "操作日志" }
+        }
     ],
 	"tabBar": {
 		"color": "#666666",
@@ -181,6 +217,12 @@
 				"selectedIconPath": "static/index/tabbar/index-act.png"
 			},
 			{
+				"text": "购物车",
+				"pagePath": "pages/shop-car1/shop-car1",
+				"iconPath": "static/index/tabbar/a.png",
+				"selectedIconPath": "static/index/tabbar/ac.png"
+			},
+			{
 				"text": "我的",
 				"pagePath": "pages/index-my/index-my",
 				"iconPath": "static/index/tabbar/my.png",

+ 1 - 1
pages/auth-card/auth-card.vue

@@ -73,7 +73,7 @@
 					const m2 = this.m = this.$options.filters.getMonth(res.data.auth_endtime)
 					const d2 = this.d = this.$options.filters.getDate(res.data.auth_endtime)
 					ctx.fillText(`${y1}年${m1}月${d1}日 - ${y2}年${m2}月${d2}日`, 120 * regW, 395 * regH)
-					this.src = can.toDataURL("image/png")
+					this.src = can.toDataURL("image/png", 1)
 				}, 333)
 			})
 		},

+ 11 - 1
pages/auth-progress/auth-progress.vue

@@ -38,6 +38,7 @@
 					<text class="title">资料审核中...</text>
 					<text>您的资料正在审核中,请耐心等待</text>
 				</view>
+				<view class="big-btn" @tap="logout">退出登录</view>
 			</view>
 		</view>
 	</view>
@@ -45,6 +46,7 @@
 
 <script>
 	import { _API_SubAuthOver } from '@/apis/user.js'
+	import { _API_Logout } from '@/apis/verify.js'
 	export default {
 		data() {
 			return {
@@ -75,6 +77,14 @@
 			},
 			auth() { // 点击重新认证
 				uni.reLaunch({ url: '../auth-identity/auth-identity' })
+			},
+			logout() {
+				uni.showLoading({ mask: true })
+				_API_Logout().then(() => {
+					uni.hideLoading()
+					window.history.replaceState({}, '', '/api/gzh')
+					location.reload()
+				})
 			}
 		}
 	}
@@ -131,6 +141,7 @@
 			}
 			.body {
 				@include flex();
+				flex-direction: column;
 				flex: 1;
 				width: 100%;
 				background: #FFFFFF;
@@ -139,7 +150,6 @@
 				}
 				.ing {
 					@include flex(column);
-					height: 100%;
 					justify-content: flex-start;
 					image {
 						width: 356rpx;

+ 1 - 1
pages/choose-size/choose-size.vue

@@ -100,7 +100,7 @@
 			width: 160rpx;
 			position: absolute;
 			background: #FFFFFF;
-			top: $app-nav-height;
+			top: 0;
 			box-shadow: 0rpx 3rpx 7rpx 0rpx rgba(0, 0, 0, 0.35);
 			.item {
 				@include flex();

+ 61 - 0
pages/comfirm-order-success/comfirm-order-success.vue

@@ -0,0 +1,61 @@
+<template>
+	<view class="comfirm-order-success">
+		<image class="ok" src="../../static/icon/ok.png"></image>
+		<text class="t1">提交成功</text>
+		<text class="t2">订单编号:{{ order_num }}</text>
+		<text class="t3">应付金额:¥{{ money }}.00</text>
+		<view class="btn">
+			<navigator open-type="navigateBack" class="big-btn">返回</navigator>
+			<navigator :url="'../pay-order/pay-order?fromS=1&order_num=' + order_num + '&money=' + money"  class="big-btn bg">付款</navigator>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				order_num: '',
+				money: ''
+			}
+		},
+		onLoad({ order_num, money }) {
+			this.order_num = order_num
+			this.money = money
+		}
+	}
+</script>
+
+<style lang="scss">
+	.comfirm-order-success {
+		@include flex(column);
+		height: 100vh;
+		background: $app-base-bg;
+		justify-content: flex-start;
+		image {
+			width: 176rpx;
+			height: 176rpx;
+			margin-top: 136rpx;
+		}
+		.t1 {
+			font-size: 48rpx;
+			margin-top: 63rpx;
+		}
+		.t2, .t3 {
+			color: #858585;
+			font-size: 32rpx;
+			margin-top: 30rpx;
+		}
+		.btn {
+			@include flex();
+			justify-content: space-between;
+			margin-top: 177rpx;
+			height: 80rpx;
+			width: 630rpx;
+			navigator, view {
+				width: 280rpx;
+				font-size: 34rpx;
+			}
+		}
+	}
+</style>

+ 1 - 0
pages/confirm-order/confirm-order.vue

@@ -186,6 +186,7 @@
 			.title {
 				font-size: 36rpx;
 				margin-top: 100rpx;
+				text-align: center;
 			}
 			.big-btn {
 				width: 100%;

+ 294 - 0
pages/confirm-order1/confirm-order1.vue

@@ -0,0 +1,294 @@
+<template>
+	<view class="confirm-order1">
+		<navigator url="../address-manage/address-manage?choose=1" class="address">
+			<view v-if="address" class="address-info">
+				<view class="top">
+					<text class="name">收货人:{{ address.con_name }}</text>
+					<text class="phone">{{ address.con_mobile }}</text>
+				</view>
+				<view class="detail ellipsis">{{ address | getAddressString }}</view>
+			</view>
+			<view v-else class="choose">
+				<text class="add">+</text>
+				<text class="text">添加收货人</text>
+			</view>
+			<text class="cuIcon-right"></text>
+		</navigator>
+		<view class="border">
+			<text style="margin-left: 0;"></text>
+			<text v-for="item in 21" :key="item" :class="{ red: item % 2 === 1 }"></text>
+		</view>
+		<view class="list">
+			<view class="list-item" v-for="(item, index) in list" :key="index" v-if="item.cart.reduce((t, e, i) => t + (item.sizeChoosed[i] ? e : 0), 0)">
+				<view class="info">
+					<view class="name">{{ item.name }}</view>
+					<view class="num">
+						<text>尺码:{{ item.sizeChoosed.reduce((t, e, i) => t + (item.cart[i] ? 1 : 0), 0) }}</text>
+						<text>数量:{{ item.cart.reduce((t, e, i) => t + (item.sizeChoosed[i] ? e : 0), 0) }}</text>
+					</view>
+				</view>
+				<view class="size-item" v-for="(sizeItem, sizeIndex) in item.size" :key="sizeIndex" v-if="item.sizeChoosed[sizeIndex] && item.cart[sizeIndex]">
+					<image :src="item.main_img"></image>
+					<view class="info">
+						<text class="size">尺码:{{ sizeItem }}</text>
+						<text class="basecolor">¥{{ item.money }}.00/{{ item.unit }}</text>
+					</view>
+					<view class="num">数量:{{ item.cart[sizeIndex] }}</view>
+				</view>
+			</view>
+		</view>
+		<view class="total app-item">
+			<text>订单金额</text>
+			<text class="basecolor">共计:¥{{ choosedPrice }}.00</text>
+		</view>
+		<view class="remark app-item">
+			<text>备注信息</text>
+			<input type="text" v-model="remark" placeholder="请输入备注信息" />
+		</view>
+		<view class="submit">
+			<view class="left">合计:<text class="basecolor">¥{{ choosedPrice }}.00</text></view>
+			<view class="right" @tap="sumbit">提交订单</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { deepClone } from '@/common/util/index.js'
+	import { _API_PlaceOrder } from '@/apis/order.js'
+	export default {
+		data() {
+			return {
+				remark: ''
+			}
+		},
+		computed: {
+			address() { return this.$store.state.address.list[this.$store.getters['address/usingAddressIndex']] }, // 用户选择的地址
+			list() { return this.$store.state.cart.list }, // 用户选择的地址
+			choosedNum() { return this.$store.getters['cart/choosedNum'] },
+			choosedPrice() { return this.$store.getters['cart/choosedPrice'] }
+		},
+		beforeDestroy() {
+			this.$store.commit('address/CLEARCHOOSED') // 清除已选地址
+		},
+		methods: {
+			sumbit() {
+				if (this.address) {
+					if (!this.requesting) {
+						this.requesting = true
+						uni.showLoading({ mask: true })
+						let type = 0
+						let total = 0
+						let num = []
+						let size_id = []
+						deepClone(this.list).forEach((goodItem, goodIndex) => {
+							goodItem.cart.forEach((n, i) => {
+								if (n && goodItem.sizeChoosed[i]) {
+									type ++
+									total += n
+									num.push(n)
+									size_id.push(goodItem.size_id[i])
+								}
+							})
+						})
+						_API_PlaceOrder({ // 发送网络请求
+							remark: this.remark, // 备注
+							total,
+							type,
+							num,
+							size_id,
+							money: this.choosedPrice, // 订单总金额
+							address_id: this.address.id // 地址
+						}).then(res => {
+							if (res.code === 200) {
+								this.requesting = false
+								this.$store.commit('address/CLEARCHOOSED') // 清除已选地址
+								const money = this.choosedPrice
+								deepClone(this.list).forEach((goodItem, goodIndex) => { // 清除购物车已选中项
+									goodItem.cart.forEach((num, i) => {
+										if (num && goodItem.sizeChoosed[i]) {
+											this.$store.commit('cart/COUNTCHANGE', { value: 0, index: goodIndex, sizeIndex: i })
+										}
+									})
+								})
+								this.$store.commit('cart/CLEAREMPTYITEM')
+								uni.redirectTo({ url: `../comfirm-order-success/comfirm-order-success?order_num=${res.data.order_num}&money=${money}` })
+							} else {
+								this.requesting = false
+								uni.toast('下单失败,请稍后重试')
+							}
+						}).catch(() => his.requesting = false)
+					}
+				} else {
+					uni.showToast({ title: '请选择地址', icon: 'none' })
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.confirm-order1 {
+		height: 100vh;
+		overflow: auto;
+		background: $app-base-bg;
+		border-bottom: 100rpx solid transparent;
+		.address {
+			height: 120rpx;
+			background: #FFFFFF;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			@include flex();
+			justify-content: space-between;
+			.address-info {
+				flex: 1;
+				color: #181818;
+				font-size: 28rpx;
+				@include flex(column);
+				align-items: flex-start;
+				.name {
+					font-size: 32rpx;
+					font-weight: bold;
+				}
+				.phone {
+					margin-left: 30rpx;
+				}
+				.detail {
+					width: 654rpx;
+					color: #666666;
+				}
+			}
+			.choose {
+				@include flex();
+				justify-content: flex-start;
+				.add {
+					@include flex();
+					background: $app-base-color;
+					font-size: 40rpx;
+					color: #FFFFFF;
+					width: 60rpx;
+					height: 60rpx;
+				}
+				.text {
+					margin-left: 17rpx;
+					color: 32rpx;
+				}
+			}
+			.cuIcon-right {
+				font-size: 38rpx;
+			}
+		}
+		.border {
+			@include flex();
+			height: 6rpx;
+			background: #FFFFFF;
+			text {
+				flex: 1;
+				height: 100%;
+				background: #3283FA;
+				margin-left: 8rpx;
+				&.red {
+					background: #F56C6C;
+				}
+			}
+		}
+		.list {
+			margin-top: 30rpx;
+			.list-item {
+				margin-bottom: 20rpx;
+				> .info {
+					height: 90rpx;
+					@include flex();
+					padding: 30rpx;
+					background: #FFFFFF;
+					margin-bottom: 1rpx;
+					box-sizing: border-box;
+					justify-content: space-between;
+					.name {
+						font-size: 32rpx;
+						font-weight: bold;
+					}
+					.num {
+						font-size: 28rpx;
+						text {
+							margin-left: 24rpx;
+						}
+					}
+				}
+				.size-item {
+					@include flex();
+					height: 200rpx;
+					background: #FFFFFF;
+					border-bottom: 2rpx;
+					background: #FFFFFF;
+					box-sizing: border-box;
+					align-items: flex-end;
+					justify-content: space-between;
+					padding: 30rpx 81rpx 30rpx 30rpx;
+					image {
+						width: 140rpx;
+						height: 140rpx;
+						border-radius: 6rpx;
+						margin-right: 30rpx;
+					}
+					> .info {
+						@include flex(column);
+						justify-content: space-between;
+						align-items: flex-start;
+						height: 100%;
+						flex: 1;
+						line-height: 2;
+						.size {
+							font-size: 32rpx;
+							font-weight: bold;
+						}
+						.basecolor {
+							font-weight: bold;
+						}
+					}
+					.num {
+						line-height: 2;
+						font-size: 28rpx;
+					}
+				}
+			}
+		}
+		.total {
+			font-size: 32rpx;
+			.basecolor {
+				font-weight: bold;
+			}
+		}
+		.remark {
+			font-size: 32rpx;
+			margin-bottom: 10rpx;
+			input {
+				text-align: right;
+			}
+		}
+		.submit {
+			@include flex();
+			position: fixed;
+			height: 100rpx;
+			bottom: 0;
+			width: 100vw;
+			background: #FFFFFF;
+			border-top: 1rpx solid #999999;
+			.right {
+				width: 280rpx;
+				height: 100%;
+				background: $app-base-color;
+				color: #FFFFFF;
+				@include flex();
+				font-size: 36rpx;
+			}
+			.left {
+				height: 100%;
+				flex: 1;
+				font-size: 28rpx;
+				box-sizing: border-box;
+				padding: 0 31rpx;
+				line-height: 100rpx;
+			}
+		}
+	}
+</style>

+ 7 - 0
pages/examine-detail/examine-detail.vue

@@ -106,6 +106,13 @@
 			this.type = +opt.type
 			this.index = opt.index
 			this.info = JSON.parse(opt.data)
+			if (!this.info.id) {
+				uni.navigateBack({delta: 2 })
+				uni.navigateTo({ url: '../register-examine/register-examine' })
+				setTimeout(() => {
+					uni.showToast({ title: 'id丢失,请重新点击审核' })
+				}, 123)
+			}
 		},
 		methods: {
 			chooseLevel() { // 点击选择级别

+ 8 - 8
pages/good-detail/good-detail.vue

@@ -2,7 +2,7 @@
 	<view class="good-detail">
 		<custom-nav noback="noback" transparent="transparent" ref="ltm" title=" " />
 		<view class="shopcar-buy">
-			<navigator url="../shop-car/shop-car" id="shopcar" class="shopcar">
+			<navigator open-type="switchTab" url="../shop-car1/shop-car1" id="shopcar" class="shopcar">
 				<text class="cuIcon-cart"></text>
 				<text>购物车</text>
 				<text v-if="shopcarNum" class="num">{{ shopcarNum }}</text>
@@ -148,13 +148,13 @@
 				}
 			},
 			getSizePositons() { // 获取尺寸按钮和购物车的位置信息
-				this.$offset('#s').then(res => this.positions.s = res)
-				this.$offset('#m').then(res => this.positions.m = res)
-				this.$offset('#l').then(res => this.positions.l = res)
-				this.$offset('#xl').then(res => this.positions.xl = res)
-				this.$offset('#xxl').then(res => this.positions.xxl = res)
-				this.$offset('#xxxl').then(res => this.positions.xxxl = res)
-				this.$offset('#shopcar').then(res => this.positions.shopcar = res)
+				this.$offset('#s').then(res => this.positions.s = res).catch(e => e)
+				this.$offset('#m').then(res => this.positions.m = res).catch(e => e)
+				this.$offset('#l').then(res => this.positions.l = res).catch(e => e)
+				this.$offset('#xl').then(res => this.positions.xl = res).catch(e => e)
+				this.$offset('#xxl').then(res => this.positions.xxl = res).catch(e => e)
+				this.$offset('#xxxl').then(res => this.positions.xxxl = res).catch(e => e)
+				this.$offset('#shopcar').then(res => this.positions.shopcar = res).catch(e => e)
 			}
 		},
 		onBackPress(opt) {

+ 131 - 0
pages/good-detail1/good-detail1.vue

@@ -0,0 +1,131 @@
+<template>
+	<view class="good-detail1">
+		<AddCart ref="addCart" />
+		<swiper :indicator-dots="true" :circular="true" :autoplay="true" :interval="3456" :duration="234" indicator-color="#FFFFFF" indicator-active-color="#F76454">
+			<swiper-item v-if="data.banner_img" v-for="(item, index) in data.banner_img" :key="index">
+				<image :src="item"></image>
+			</swiper-item>
+		</swiper>
+		<view class="info">
+			<text>{{ data.name }}</text>
+			<text>¥{{ data.money }}.00/{{ data.unit }}</text>
+		</view>
+		<view class="size app-item" @tap="tapAdd">
+			<text>规格</text>
+			<text class="cuIcon-right"></text>
+		</view>
+		<view class="intr">
+			
+		</view>
+		<view class="bottom-bar">
+			<navigator open-type="switchTab" url="../shop-car1/shop-car1" class="left">
+				<text class="cuIcon-cart"></text>
+				<text>购物车</text>
+				<view v-if="shopcarNum" class="num">{{ shopcarNum }}</view>
+			</navigator>
+			<view class="right" @tap="tapAdd">加入购物车</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { deepClone } from '@/common/util/index.js'
+	import AddCart from '@/components/public/add-cart.vue'
+	export default {
+		components: { AddCart },
+		data() {
+			return {
+				data: {}
+			}
+		},
+		computed: {
+			item() {
+				const temp = deepClone(this.data)
+				temp.cart = Array(temp.size.length).fill(0)
+				const index = this.$store.state.cart.list.findIndex(e => e.id === temp.id)
+				return index === -1 ? temp : Object.assign(temp, this.$store.state.cart.list[index])
+			},
+			shopcarNum() { return this.$store.getters['cart/shopcarNum'] },
+		},
+		onLoad({ data }) {
+			this.data = JSON.parse(data)
+			if (!this.data.banner_img.length) {
+				this.data.banner_img = [this.data.main_img]
+			}
+		},
+		methods: {
+			tapAdd() {
+				this.$refs.addCart.show(deepClone(this.item))
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.good-detail1 {
+		height: 100vh;
+		background: $app-base-bg;
+		border-bottom: 99rpx solid #000000;
+		swiper {
+			height: 400rpx;
+			image {
+				width: 100%;
+				height: 100%;
+			}
+		}
+		.info {
+			@include flex(column);
+			height: 140rpx;
+			background: #FFFFFF;
+			padding: 24rpx 31rpx;
+			box-sizing: border-box;
+			align-items: flex-start;
+			justify-content: space-between;
+		}
+		.size {
+			height: 90rpx;
+			margin: 10rpx 0;
+			background: #FFFFFF;
+		}
+		.bottom-bar {
+			height: 99rpx;
+			position: fixed;
+			width: 100vw;
+			bottom: 0;
+			background: #FFFFFF;
+			@include flex();
+			> view, > navigator {
+				flex: 1;
+				height: 100%;
+				@include flex();
+				position: relative;
+				.num {
+					position: absolute;
+					right: 30%;
+					top: 10%;
+					background: red;
+					font-size: 24rpx;
+					height: 42rpx;
+					min-width: 42rpx;
+					line-height: 42rpx;
+					text-align: center;
+					border-radius: 42rpx;
+					padding: 2rpx 8rpx;
+					color: #FFFFFF;
+				}
+				&.left {
+					flex-direction: column;
+					font-size: 24rpx;
+					.cuIcon-cart {
+						font-size: 49rpx;
+					}
+				}
+				&.right {
+					font-size: 36rpx;
+					color: #FFFFFF;
+					background: $app-base-color;
+				}
+			}
+		}
+	}
+</style>

+ 8 - 4
pages/index-my/index-my.vue

@@ -26,16 +26,20 @@
 					</navigator>
 				</view>
 				<view class="numinfo">
-					<navigator url="../../pages/my-order/my-order?type=0" class="numitem">
+					<navigator url="../../pages/my-order/my-order?type=1" class="numitem">
 						<text class="num">{{ userinfo.order_num1 || 0 }}</text>
 						<text class="numname">待审核</text>
 					</navigator>
-					<navigator url="../../pages/my-order/my-order?type=1" class="numitem">
+					<navigator url="../../pages/my-order/my-order?type=2" class="numitem">
 						<text class="num">{{ userinfo.order_num2 || 0 }}</text>
-						<text class="numname">待收货</text>
+						<text class="numname">待审核</text>
 					</navigator>
-					<navigator url="../../pages/my-order/my-order?type=2" class="numitem">
+					<navigator url="../../pages/my-order/my-order?type=3" class="numitem">
 						<text class="num">{{ userinfo.order_num3 || 0 }}</text>
+						<text class="numname">待收货</text>
+					</navigator>
+					<navigator url="../../pages/my-order/my-order?type=4" class="numitem">
+						<text class="num">{{ userinfo.order_num4 || 0 }}</text>
 						<text class="numname">已完成</text>
 					</navigator>
 				</view>

+ 9 - 22
pages/index/index.vue

@@ -69,7 +69,6 @@
 		computed: {
 			kingkongList() {
 				const data = deepClone(this.$store.state.userinfo)
-				delete data.avatar
 				return [
 					{
 						name: '订货下单',
@@ -93,7 +92,7 @@
 					},
 					{
 						name: '邀请代理',
-						url: `../../pages/invite-proxy/invite-proxy?data=${JSON.stringify(data)}`,
+						url: `../../pages/invite-proxy/invite-proxy?nickname=${encodeURIComponent(data.nickname)}&mobile=${data.mobile}&invite_code=${data.recom_code}`,
 						image: '../../static/index/index/invite-proxy.png'
 					},
 					{
@@ -115,23 +114,14 @@
 			}
 		},
 		onLoad() {
-			uni.$on('noopening', () => uni.showToast({ title: '暂未开放', icon: 'none' }))
-			// if (!this.$store.state.app.token) { // 
-			// 	if (location.search.length > 24 && decodeURIComponent) {
-			// 		uni.reLaunch({ url: `../invite-proxy/invite-proxy?data=${JSON.stringify({
-			// 			nickname: decodeURIComponent(location.search.replace(/^\?/, '').split('&')[0].split('=')[1]),
-			// 			mobile: decodeURIComponent(location.search.replace(/^\?/, '').split('&')[1].split('=')[1]),
-			// 			invite_code: decodeURIComponent(location.search.replace(/^\?/, '').split('&')[2].split('=')[1]),
-			// 		})}` })
-			// 		return
-			// 	}
-			// 	uni.reLaunch({ url: '../login-psw/login-psw' }) // 跳转到登陆
-			// 	return
-			// }
+			uni.$on('noopening', () => uni.showToast({ title: '暂未开放', duration: 2333, icon: 'none' }))
 		},
 		mounted() { // 页面创建后判断用户状态
 			uni.$on('RELAUNCH', () => uni.reLaunch({ url: '../login-psw/login-psw' })) // 监听 token 失效事件,跳转到登录页
 			if (this.$store.state.app.token) { // 当用户处于登陆状态
+				if (window.location.pathname.split('/').length > 4) {
+					window.history.replaceState({}, '', '/api/gzh')
+				}
 				uni.showLoading({ mask: true })
 				_API_GetUserStatus().then(res => { // 获取用户状态
 					this.$store.commit('userinfo/UPDATA_USERINFO', res.data) // 获取用户状态后保存在 vuex 中
@@ -145,7 +135,6 @@
 							this.indexRequest() // 请求首页数据
 							_API_GetUserInfo().then(res => { // 请求用户信息
 								this.$store.commit('userinfo/UPDATA_USERINFO', res.data) // 获取用户信息后保存在 vuex 中
-								console.log(this.$store.state.userinfo.pass_status)
 								if (this.$store.state.userinfo.pass_status) {
 									uni.showModal({ title: '提示', content: '为了保障您的账户安全,请立即修改密码', showCancel: false, success: res => {
 										uni.reLaunch({ url: '../updata-psw/updata-psw' })
@@ -168,12 +157,10 @@
 					uni.showLoading({ mask: true })
 					setTimeout(() => {
 						uni.hideLoading()
-						uni.reLaunch({ url: `../invite-proxy/invite-proxy?data=${JSON.stringify({
-							nickname: decodeURIComponent(window.location.pathname.split('/')[3]),
-							mobile: decodeURIComponent(window.location.pathname.split('/')[4]),
-							invite_code: decodeURIComponent(window.location.pathname.split('/')[5])
-						})}` })
-					}, 888)
+						const query = window.location.pathname.split('/')
+						window.history.replaceState({}, '', '/api/gzh')
+						uni.reLaunch({ url: `../invite-proxy/invite-proxy?nickname=${query[3]}&mobile=${query[4]}&invite_code=${query[5]}` })
+					})
 				} else {
 					uni.reLaunch({ url: '../login-psw/login-psw' })
 				}

+ 106 - 54
pages/invite-proxy/invite-proxy.vue

@@ -2,15 +2,15 @@
 	<view class="invite-proxy">
 		<custom-nav noback="noback" transparent="transparent" ref="ltm" title=" " />
 		<view class="content">
-			<view class="app-item item">
+			<view v-if="!logged" class="app-item item">
 				<text>邀请人</text>
 				<text>{{ recom_nickname }}</text>
 			</view>
-			<view class="app-item item">
+			<view v-if="!logged" class="app-item item">
 				<text>邀请码</text>
 				<text>{{ invite_code }}</text>
 			</view>
-			<view class="app-item item">
+			<view v-if="!logged" class="app-item item">
 				<text>联系方式</text>
 				<text>{{ recom_mobile }}</text>
 			</view>
@@ -51,7 +51,11 @@
 			
 			<button v-if="isREG && !logged" class="big-btn bg" @tap="submit">立即加入</button>
 			<view id="erweima" style="display: none;"></view>
-			<image class="showCan" v-if="src" :src="src" ></image>
+			<image style="width: 0; height: 0;" src="../../static/avatar.jpg"></image>
+			<view id="imgWrapper">
+				<image class="showCan" v-if="src" :src="src" ></image>
+			</view>
+			<view v-if="logged" class="basecolor sharetext">{{ src ? '长按二维码发送给代理即可邀请加入' : '' }}</view>
 		</view>
 	</view>
 </template>
@@ -94,40 +98,72 @@
 				document.getElementsByTagName('head')[0].appendChild(script)
 				script.onload = () => {
 					_API_GzhWebInit().then(res => {
-						console.log(res)
-						window.history.replaceState({}, '', `/api/gzh/${encodeURIComponent(this.recom_nickname)}/${this.recom_mobile}/${this.invite_code}/${res.timestamp}`)
+						window.history.replaceState({}, '', res.url.split('.cn')[1])
 						setTimeout(() => {
-							$('#erweima').qrcode({ width: 333, height: 333, text: window.location.href })
+							const img = document.getElementsByTagName('img')[0]
+							$('#erweima').qrcode({ width: 333, height: 333, text: res.url })
+							document.getElementsByTagName('canvas')[0].getContext('2d').drawImage(img, 123, 123, 80, 80)
 							wx.config(res)
 							wx.ready(() => {
 								wx.updateAppMessageShareData({
 									title: `我是${this.$store.state.userinfo.nickname}, 邀请你加入大卫博士`,
 									desc: '传递健康,改变命运。',
-									link: window.location.href,
-									imgUrl: 'http://api.app.jiuweiyun.cn/public/uploads/logo.jpg',
-									success () {
-										uni.hideLoading()
-									}
+									link: res.url,
+									imgUrl: 'http://api.app.jiuweiyun.cn/public/uploads/logo.jpg'
 								})
 							})
-							wx.error(res => {
-								uni.hideLoading()
-								window.history.replaceState({}, '', `/api/gzh/david`)
-								this.src = document.getElementsByTagName('canvas')[0].toDataURL("image/png")
-								alert('微信分享初始化失败,请分享二维码给好友以邀请')
-							})
-						}, 123)
+							wx.error(res => window.history.replaceState({}, '', `/api/gzh/david`))
+							uni.hideLoading()
+							const can = document.createElement('canvas')
+							const pixelRatio = window.devicePixelRatio || 1;
+							const ctx = can.getContext('2d')
+							const backingStoreRatio = ctx.webkitBackingStorePixelRatio ||
+							    ctx.mozBackingStorePixelRatio ||
+							    ctx.msBackingStorePixelRatio ||
+							    ctx.oBackingStorePixelRatio ||
+							    ctx.backingStorePixelRatio || 1;
+							const ratio = pixelRatio / backingStoreRatio;
+							can.width = uni.upx2px(680) * ratio
+							can.height = uni.upx2px(960) * ratio
+							can.style.width = uni.upx2px(680) + 'px'
+							can.style.height = uni.upx2px(960) + 'px'
+							ctx.scale(ratio, ratio);
+							
+							ctx.fillStyle="#ffffff";
+							ctx.fillRect(0, 0, uni.upx2px(680), uni.upx2px(960));
+							ctx.fillStyle="#000000";
+							ctx.font=`${uni.upx2px(42)}px Arial`;
+							ctx.textAlign="center";
+							
+							ctx.drawImage(img, uni.upx2px(276), uni.upx2px(16), uni.upx2px(128), uni.upx2px(128))
+												
+							ctx.fillText(`“${this.recom_nickname.length > 18 ? this.recom_nickname.slice(0, 18) + '...' : this.recom_nickname }”`, uni.upx2px(340), uni.upx2px(206))
+							
+							ctx.fillStyle="#333333";
+							ctx.font=`${uni.upx2px(36)}px Arial`;
+							ctx.fillText(`邀请你加入大卫博士`, uni.upx2px(340), uni.upx2px(271))
+							
+							ctx.drawImage(document.getElementsByTagName('canvas')[0], uni.upx2px(80), uni.upx2px(332), uni.upx2px(517), uni.upx2px(518))
+							
+							ctx.font=`${uni.upx2px(36)}px Arial`;
+							ctx.fillStyle="#F76454";
+							ctx.fillText(`长按-识别二维码-填写信息`, uni.upx2px(340), uni.upx2px(910))
+							this.src = can.toDataURL("image/png")
+						}, 567)
 					})
 				}
 			} else {
 				uni.hideLoading()
 			}
 		},
-		onLoad({ data }) {
-			this.recom_nickname = JSON.parse(data).nickname
-			this.recom_mobile = JSON.parse(data).mobile
-			this.invite_code = JSON.parse(data).invite_code
-			window.history.replaceState({}, '', `/api/gzh/${encodeURIComponent(this.recom_nickname)}/${encodeURIComponent(this.recom_mobile)}/${encodeURIComponent(this.invite_code)}`)
+		onLoad({ nickname, mobile, invite_code }) {
+			this.recom_nickname = decodeURIComponent(nickname)
+			this.recom_mobile = mobile
+			this.invite_code = invite_code
+			if (!this.recom_nickname || !this.recom_mobile || !this.invite_code) {
+				uni.showToast({ title: '用户信息获取失败,请重新登陆' })
+				uni.navigateBack()
+			}
 		},
 		methods: {
 			inputChange() {
@@ -184,31 +220,35 @@
 					return
 				}
 				uni.showLoading({ mask: true }) // 显示 loading
-				_API_Reg({
-					mobile: this.phone,
-					verify_code: this.verifycode,
-					recom_code: this.invite_code,
-					code: this.areaCode
-				}).then(res => {
-					uni.showLoading({ mask: true }) // 显示 loading
-					if (res.code == 200) { // 注册成功
-						this.$store.commit('app/LOGIN', res.data.token) // 保存 token
-						_API_SubAuthInfo({ // 提交信息
-							wechatname: this.wx_nickname,
-							realname: this.real_name,
-							cre_num: this.id_card_num
-						}).then(res => {
-							if (res.code === 200) { // 提交成功
-								this.$store.commit('userinfo/UPDATA_USERINFO', { cert_status: 1 })
-								uni.redirectTo({ url:'../auth-progress/auth-progress' }) // redirect 到 审核进度页面
-							} else if (res.code === 300) {
-								uni.showToast({ title: res.message })
-							}
-						})
-					} else if (res.code == 300) { // 验证码不正确
-						uni.toast('验证码错误')
-					}
-				})
+				if (!this.requesting) {
+					this.requesting = true
+					setTimeout(() => this.requesting = false, 567)
+					_API_Reg({
+						mobile: this.phone,
+						verify_code: this.verifycode,
+						recom_code: this.invite_code,
+						code: this.areaCode
+					}).then(res => {
+						uni.showLoading({ mask: true }) // 显示 loading
+						if (res.code == 200) { // 注册成功
+							this.$store.commit('app/LOGIN', res.data.token) // 保存 token
+							_API_SubAuthInfo({ // 提交信息
+								wechatname: this.wx_nickname,
+								realname: this.real_name,
+								cre_num: this.id_card_num
+							}).then(res => {
+								if (res.code === 200) { // 提交成功
+									this.$store.commit('userinfo/UPDATA_USERINFO', { cert_status: 1 })
+									uni.redirectTo({ url:'../auth-progress/auth-progress' }) // redirect 到 审核进度页面
+								} else if (res.code === 300) {
+									uni.showToast({ title: res.message })
+								}
+							})
+						} else if (res.code == 300) { // 验证码不正确
+							uni.toast('验证码错误')
+						}
+					})
+				}
 			}
 		}
 	}
@@ -217,12 +257,24 @@
 <style lang="scss" scoped>
 	.invite-proxy {
 		@include page();
-		.showCan {
-			width: 90vw;
-			height: 90vw;
-			margin: 5vw;
-		}
 		.content {
+			#imgWrapper {
+				flex: 1;
+				@include flex();
+				.showCan {
+					width: 680rpx;
+					height: 960rpx;
+					border-radius: 14rpx;
+					box-shadow:0px 0px 23px 2px rgba(194,133,58,0.5);
+				}
+			}
+			.sharetext {
+				font-size: 88rpx;
+				text-align: center;
+				margin: 8rpx 0;
+				box-sizing: border-box;
+				padding: 0 24rpx;
+			}
 			.form {
 				padding: 30rpx;
 				margin-top: 10rpx;

+ 2 - 4
pages/login-reg/login-reg.vue

@@ -112,10 +112,8 @@
 						if (res.code == 200) { // 注册成功
 							this.$store.commit('app/LOGIN', res.data.token) // 保存 token
 							uni.reLaunch({ url: '/pages/index/index' }) // 跳转到首页
-						} else if (res.code == 300) { // 验证码不正确
-							uni.toast('验证码错误')
-						} else if (res.code == 400) { // 邀请码不存在
-							uni.toast('邀请码不存在,请联系邀请人确认邀请码是否正确')
+						} else { // 邀请码不存在
+							uni.toast(res.message)
 						}
 					})
 				} else { // 如果是登录

+ 5 - 8
pages/manage-order/manage-order.vue

@@ -59,13 +59,11 @@
 			}
 		},
 		mounted() {
-			// uni.startPullDownRefresh()
-			uni.navigateBack()
-			setTimeout(() => uni.$emit('noopening'))
-			return
-			this.request()
-		},
-		onPullDownRefresh() {
+			if (this.$store.state.userinfo.level !== '代理公司') {
+				uni.navigateBack()
+				setTimeout(() => uni.$emit('noopening'))
+				return
+			}
 			this.request()
 		},
 		methods: {
@@ -75,7 +73,6 @@
 			},
 			request() { // 网络请求方法
 				uni.showLoading({ mask: true })
-				// uni.startPullDownRefresh()
 				_API_OrderChart({ day: this.active }).then(res => {
 					const data = { categories: [], series: [{ data: [] }] }
 					data.categories = res.data.date

+ 175 - 143
pages/my-order/my-order.vue

@@ -7,138 +7,115 @@
 				<view class="moveBar" :style="{ left: MIXIN_MoveBarLeft + 'px', width: 100 / typeList.length + '%' }"><text></text></view>
 			</view>
 			<view class="swiper-area">
-				<pulldown-refresher ref="pulldownRefresher" @pulldownRefresh="MIXIN_pulldownrefresh">
-					<swiper class="swiper" :current="MIXIN_NowIndex" :duration="234" @transition="MIXIN_transition" @change="MIXIN_change" @animationfinish="MIXIN_animationfinish">
-						<swiper-item>
-							<scroll-view scroll-y :style="{ height: MIXIN_ScrollViewHeight + 'px' }" @scrolltolower="MIXIN_scrolltolower">
-								<view class="order-item" v-for="(orderItem) in lists[0]" :key="orderItem.order_num">
-									<view class="order-num">
-										<text>订单编号:{{ orderItem.order_num }}</text>
-										<text class="basecolor">未付款</text>
-									</view>
-									<view class="good-item" v-for="(goodItem, goodIndex) in orderItem.goodList" :key="goodIndex">
-										<image :src="goodItem.img"></image>
-										<view class="info">
-											<text class="name">{{ goodItem.name }}</text>
-											<text class="num">数量:{{ goodItem.num }}件</text>
-											<text class="price">金额:¥{{ goodItem.price * goodItem.num + '.00' }}</text>
-										</view>
-									</view>
-									<view class="totalPrice">
-										<text>合计:<text class="basecolor">{{ orderItem | total }}</text></text>
-										<view class="right">
-											<text class="small-btn" @tap="toDetail(orderItem.order_num)">查看订单</text>
-										</view>
-									</view>
+				<swiper class="swiper" :current="MIXIN_NowIndex" :duration="234" @transition="MIXIN_transition" @change="MIXIN_change" @animationfinish="MIXIN_animationfinish">
+					<swiper-item v-for="(typeValue, typeKey) in lists" :key="typeKey">
+						<scroll-view scroll-y :style="{ height: MIXIN_ScrollViewHeight + 'px' }" @scrolltolower="MIXIN_scrolltolower">
+							<view class="order-item" v-for="(orderItem) in lists[typeKey]" :key="orderItem.order_num" @click="toDetail(orderItem)">
+								<view class="order-num">
+									<text>订单编号:{{ orderItem.order_num }}</text>
+									<text :class="orderItem | orderStatus | orderStatusClass">{{ orderItem | orderStatus }}</text>
 								</view>
-								<custom-reach-bottom v-if="lists[0].length" :nomore="page[0] === 0" />
-								<swiper-status v-else :page="page[0]" />
-							</scroll-view>
-						</swiper-item>
-						<swiper-item>
-							<scroll-view scroll-y :style="{ height: MIXIN_ScrollViewHeight + 'px' }" @scrolltolower="MIXIN_scrolltolower">
-								<view class="order-item" v-for="(orderItem, orderIndex) in lists[1]" :key="orderItem.order_num">
-									<view class="order-num">
-										<text>订单编号:{{ orderItem.order_num }}</text>
+								<view class="good-item">
+									<view class="imgs">
+										<image v-for="(item, index) in orderItem.order" :key="index" :src="item.main_img"></image>
 									</view>
-									<view class="good-item" v-for="(goodItem, goodIndex) in orderItem.goodList" :key="goodIndex">
-										<image :src="goodItem.img"></image>
-										<view class="info">
-											<text class="name">{{ goodItem.name }}</text>
-											<text class="num">数量:{{ goodItem.num }}件</text>
-											<text class="price">金额:¥{{ goodItem.price * goodItem.num + '.00' }}</text>
-										</view>
-									</view>
-									<view class="totalPrice">
-										<text>合计:<text class="basecolor">{{ orderItem | total }}</text></text>
-										<view class="right">
-											<text class="small-btn" @tap="confirmReceive(orderItem.order_num, orderIndex)">确认收货</text>
-											<text v-if="orderItem.forward" class="small-btn" @tap="toForward(orderItem.order_num)">查看转单</text>
-											<text class="small-btn" @tap="toDetail(orderItem.order_num)">查看订单</text>
-										</view>
+									<view class="info">
+										<text class="name">种类:{{ orderItem.type }}{{ ', ' }}</text>
+										<text class="num">数量:{{ orderItem.total }}{{ ', ' }}</text>
+										<text class="price">共计金额:<text class="basecolor">¥{{ orderItem.money }}.00</text></text>
 									</view>
 								</view>
-								<custom-reach-bottom v-if="lists[1].length" :nomore="page[1] === 0" />
-								<swiper-status v-else :page="page[1]" />
-							</scroll-view>
-						</swiper-item>
-						<swiper-item>
-							<scroll-view scroll-y :style="{ height: MIXIN_ScrollViewHeight + 'px' }" @scrolltolower="MIXIN_scrolltolower">
-								<view class="order-item" v-for="(orderItem) in lists[2]" :key="orderItem.order_num">
-									<view class="order-num">
-										<text>订单编号:{{ orderItem.order_num }}</text>
-										<text v-if="orderItem.status == 3" class="basecolor">已完成</text>
-										<text v-if="orderItem.status == 4" >已取消</text>
-									</view>
-									<view class="good-item" v-for="(goodItem, goodIndex) in orderItem.goodList" :key="goodIndex">
-										<image :src="goodItem.img"></image>
-										<view class="info">
-											<text class="name">{{ goodItem.name }}</text>
-											<text class="num">数量:{{ goodItem.num }}件</text>
-											<text class="price">金额:¥{{ goodItem.price * goodItem.num + '.00' }}</text>
-										</view>
-									</view>
-									<view class="totalPrice">
-										<text>合计:<text class="basecolor">{{ orderItem | total }}</text></text>
-										<view class="right">
-											<text v-if="orderItem.forward" class="small-btn" @tap="toForward(orderItem.order_num)">查看转单</text>
-											<text class="small-btn" @tap="toDetail(orderItem.order_num)">查看订单</text>
-										</view>
-									</view>
+								<view class="bottom-bar">
+									<view class="btn" v-if="!orderItem.is_deleted && !orderItem.pay_status" @click.stop="changeOrder(orderItem)">修改订单</view>
+									<view class="btn" @click.stop="buyAgain(orderItem)">再次购买</view>
+									<view class="btn bg" v-if="!orderItem.is_deleted && !orderItem.pay_status" @click.stop="payNow(orderItem)">立即付款</view>
+									<view class="btn border" v-if="!orderItem.is_deleted && orderItem.status == 3" @click.stop="received(orderItem)">确认收货</view>
 								</view>
-								<custom-reach-bottom v-if="lists[2].length" :nomore="page[2] === 0" />
-								<swiper-status v-else :page="page[2]" />
-							</scroll-view>
-						</swiper-item>
-					</swiper>
-				</pulldown-refresher>
+							</view>
+							<custom-reach-bottom v-if="lists[typeKey].length" :nomore="page[typeKey] === 0" />
+							<swiper-status v-else :page="page[typeKey]" />
+						</scroll-view>
+					</swiper-item>
+				</swiper>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import { _API_GoodList } from '@/apis/good.js'
 	import { deepClone } from '@/common/util/index.js'
 	import MIXIN from '@/mixin/swiper-list.js'
 	import swiperStatus from '@/components/public/swiper-status.vue'
 	import pulldownRefresher from '@/components/public/pulldown-refresher.vue'
 	import customReachBottom from '@/components/public/custom-reach-bottom.vue'
-	import { _API_OrderMyExamine, _API_OrderMySended, _API_OrderMyCompleted, _API_OrderReceiveGoods } from '@/apis/order.js'
+	// import { _API_OrderMyExamine, _API_OrderMySended, _API_OrderMyCompleted, _API_OrderReceiveGoods } from '@/apis/order.js'
+	import { _API_OrderMy1, _API_OrderMy2, _API_OrderMy3, _API_OrderMy4, _API_OrderMy5, _API_OrderAgain, _API_OrderDel, _API_OrderDetail1 } from '@/apis/order.js'
 	export default {
 		mixins: [MIXIN],
 		components: { swiperStatus, customReachBottom, pulldownRefresher },
 		data() {
 			return {
 				title: '我的订单',
-				page: [1, 1, 1], // 每种类型的页数 当页数为 0 时表示当前类型没有更多了 -1 表示请求失败
-				lists: { 0: [], 1: [], 2: [] }, // 数据
-				typeList: ['待审核', '待收货', '已完成'],
-				apis: [_API_OrderMyExamine, _API_OrderMySended, _API_OrderMyCompleted]
+				page: [1, 1, 1, 1, 1], // 每种类型的页数 当页数为 0 时表示当前类型没有更多了 -1 表示请求失败
+				lists: { 0: [], 1: [], 2: [], 3: [], 4: {} }, // 数据
+				typeList: ['全部', '待付款', '待审核', '待收货', '已完成'],
+				apis: [_API_OrderMy1, _API_OrderMy2, _API_OrderMy3, _API_OrderMy4, _API_OrderMy5]
 			}
 		},
 		filters: {
-			total(orderItem) { // 计算订单总金额过滤器
-				return '¥ ' + orderItem.goodList.reduce((t, e) => t + (+e.num * +e.price), 0) + '.00'
+			orderStatus(orderItem) { // 计算订单总金额过滤器
+				if (orderItem.is_deleted) {
+					return '已删除'
+				} else if (!orderItem.pay_status) {
+					return '待支付订单'
+				} else if (orderItem.status == 3) {
+					return '待收货'
+				} else if (orderItem.status == 4) {
+					return '已完成'
+				} else {
+					return '待审核订单'
+				}
+			},
+			orderStatusClass(status) {
+				if (status == '已删除' || status == '已完成') {
+					return ''
+				} else {
+					return 'basecolor'
+				}
 			}
 		},
 		onLoad(opt) {
-			uni.navigateBack()
-			setTimeout(() => uni.$emit('noopening'))
-			return
-			if (opt.type === '0') {
-				this.MIXIN_NowIndex = 0
+			if (this.$store.state.userinfo.level !== '代理公司') {
+				uni.navigateBack()
+				setTimeout(() => uni.$emit('noopening'))
+				return
+			}
+			if (opt.type === '1') {
+				this.MIXIN_NowIndex = this.MIXIN_ActiveIndex = this.MIXIN_FinishedIndex = 1
 				this.MIXIN_MoveBarLeft = this.MIXIN_NowIndex * (this.MIXIN_ScreenWidth / this.typeList.length)
-			} 
-			else if (opt.type === '1') {
-				this.MIXIN_NowIndex = 1
+			} else if (opt.type === '2') {
+				this.MIXIN_NowIndex = this.MIXIN_ActiveIndex = this.MIXIN_FinishedIndex = 2
 				this.MIXIN_MoveBarLeft = this.MIXIN_NowIndex * (this.MIXIN_ScreenWidth / this.typeList.length)
-			} 
-			else if (opt.type === '2') {
-				this.MIXIN_NowIndex = 2
+			} else if (opt.type === '3') {
+				this.MIXIN_NowIndex = this.MIXIN_ActiveIndex = this.MIXIN_FinishedIndex = 3
+				this.MIXIN_MoveBarLeft = this.MIXIN_NowIndex * (this.MIXIN_ScreenWidth / this.typeList.length)
+			} else if (opt.type === '4') {
+				this.MIXIN_NowIndex = this.MIXIN_ActiveIndex = this.MIXIN_FinishedIndex = 4
 				this.MIXIN_MoveBarLeft = this.MIXIN_NowIndex * (this.MIXIN_ScreenWidth / this.typeList.length)
 			}
 			this.MIXIN_request()
 		},
+		onPullDownRefresh() {
+			this.page[this.MIXIN_NowIndex] = 1
+			this.MIXIN_request()
+		},
+		created() {
+			uni.$on('PAYSUCCESS', (order_num) => {
+				this.lists[0].splice(this.lists[0].findIndex(e => e.order_num == order_num), 1)
+				this.lists[1].splice(this.lists[1].findIndex(e => e.order_num == order_num), 1)
+			})
+		},
 		methods: {
 			confirmReceive(order_num, index) { // 点击确认收货
 				this.$refs.ltm.modal('提示', ['确定收到商品?']).then(() => {
@@ -157,14 +134,69 @@
 					uni.toast('取消确认')
 				})
 			},
-			MIXIN_requestHandle(res) {
+			MIXIN_requestHandle(res) { // 请求 handler
 				console.log(res)
+				uni.stopPullDownRefresh()
 			},
-			toDetail(order_num) { // 点击查看订单
-				uni.navigateTo({ url: `../order-detail/order-detail?order_num=${order_num}` })
+			toDetail(gooItem) { // 点击查看订单
+				const { order_num, is_deleted, pay_status } = gooItem
+				let str = ''
+				if (!is_deleted && !pay_status) {
+					str = '&nopay=1'
+				}
+				uni.navigateTo({ url: `../order-detail1/order-detail1?status=${this.$options.filters.orderStatus(gooItem)}&order_num=${order_num}${str}` })
 			},
 			toForward(order_num) { // 点击查看转单
 				uni.navigateTo({ url: `../order-detail/order-detail?order_num=${order_num}&forward=1` })
+			},
+			changeOrder({ order_num }) { // 取消订单
+				uni.showModal({
+					title: '',
+					content: '修改订单后会作废此订单,然后复制此订单的商品到购物车中重新下单,确定作废?',
+					success: (res) => {
+						if (res.confirm) {
+							uni.loading()
+							_API_GoodList().then(({ data: { list: list1 } }) => {
+								uni.loading()
+								list1.forEach(e => e.cart = Array(e.size.length).fill(0))
+								_API_OrderDetail1({ order_num }).then(({ data: { list: list2 } }) => {
+									// uni.loading()
+									list1.forEach((item, index) => {
+										if (item.id == list2[index].id) {
+											list2[index].size.forEach((size, sizeIndex) => {
+												const goodItemSizeIndex = list1[index].size.findIndex(e => e === size)
+												list1[index].cart[goodItemSizeIndex] = list2[index].num[sizeIndex]
+											})
+											item.choosed = true
+											item.sizeChoosed = Array(item.size.length).fill(true)
+											this.$store.commit('cart/ADD', item)
+										}
+									})
+								})
+							})
+						}
+					}
+				})
+			},
+			buyAgain({ order_num, money }) { // 点击再次购买
+				uni.showModal({
+					title: '提示',
+					content: '确定要再次购买?',
+					success: (res) => {
+						if (res.confirm) {
+							uni.loading()
+							_API_OrderAgain({ order_num }).then(({ data: { order_num } }) => {
+								uni.navigateTo({ url: `../comfirm-order-success/comfirm-order-success?order_num=${order_num}&money=${money}` })
+							})
+						}
+					}
+				})
+			},
+			payNow({ order_num, money }) { // 点击立即付款
+				uni.navigateTo({ url: `../pay-order/pay-order?order_num=${order_num}&money=${money}` })
+			},
+			received(orderItem) { // 点击确认收货
+				console.log(orderItem)
 			}
 		}
 	}
@@ -175,11 +207,6 @@
 		@include page();
 		.content {
 			@include flex(column);
-			.swiper-nav {
-				text {
-					width: 56rpx;
-				}
-			}
 			.swiper-area {
 				scroll-view {
 					.order-item {
@@ -190,58 +217,63 @@
 						}
 						.order-num {
 							@include flex();
-							height: 60rpx;
-							font-size: 26rpx;
+							height: 90rpx;
+							font-size: 28rpx;
+							font-weight: bold;
 							justify-content: space-between;
-							border-top: 10rpx solid $app-base-bg;
+							border-top: 20rpx solid $app-base-bg;
 							border-bottom: 1rpx solid $app-base-bg;
 						}
 						.good-item {
-							@include flex();
-							height: 180rpx;
+							min-height: 240rpx;
 							padding: 0 30rpx;
-							margin-bottom: 1rpx;
 							background: #FFFFFF;
 							box-sizing: border-box;
-							justify-content: space-between;
 							border-bottom: 1rpx solid $app-base-bg;
-							image {
-								width: 140rpx;
-								height: 140rpx;
+							.imgs {
+								min-height: 140rpx;
+								width: 100%;
+								margin-top: 28rpx;
+								image {
+									width: 140rpx;
+									height: 140rpx;
+									margin-right: 10rpx;
+									border-radius: 6rpx;
+								}
 							}
 							.info {
-								@include flex(column);
-								flex: 1;
-								height: 100%;
-								margin: 0 30rpx;
-								align-items: flex-start;
-								justify-content: flex-start;
-								.name {
-									font-size: 32rpx;
-									margin-top: 20rpx;
-								}
-								.num {
-									font-size: 26rpx;
-									margin-top: 10rpx;
-									color: $app-sec-text-color;
-								}
-								.price {
-									font-size: 26rpx;
-									margin-top: 10rpx;
-									color: $app-base-color;
-								}
+								margin-top: 4rpx;
+								text-align: right;
+								height: 64rpx;
+								line-height: 64rpx;
+								font-size: 24rpx;
+								font-weight: bold;
 							}
 						}
-						.totalPrice {
+						.bottom-bar {
 							@include flex();
-							height: 100rpx;
+							height: 90rpx;
 							font-size: 26rpx;
-							justify-content: space-between;
-							.right {
+							justify-content: flex-end;
+							background: #FFFFFF;
+							.btn {
 								@include flex();
-								flex: 1;
-								height: 100%;
-								justify-content: flex-end;
+								width: 156rpx;
+								height: 54rpx;
+								font-size: 28rpx;
+								margin-left: 24rpx;
+								color: #181818;
+								border-radius: 54rpx;
+								border: 1px solid rgba(24,24,24,1);
+								&.bg {
+									color: #FFFFFF;
+									border-color: $app-base-color;
+									background: $app-base-color;
+								}
+								&.border {
+									color: $app-base-color;
+									border-color: $app-base-color;
+								}
 							}
 						}
 					}

+ 5 - 3
pages/my-storage/my-storage.vue

@@ -74,9 +74,11 @@
 			}
 		},
 		mounted() {
-			uni.navigateBack()
-			setTimeout(() => uni.$emit('noopening'))
-			return
+			if (this.$store.state.userinfo.level !== '代理公司') {
+				uni.navigateBack()
+				setTimeout(() => uni.$emit('noopening'))
+				return
+			}
 			uni.showLoading({ mask: true })
 			_API_OrderStorage().then(res => {
 				console.log(JSON.stringify(res.data.list), 666)

+ 115 - 0
pages/new-proxy/new-proxy.vue

@@ -0,0 +1,115 @@
+<template>
+	<view class="new-proxy">
+		<view class="content">
+			<view class="swiper-nav">
+				<view v-for="(item, index) in typeList" :key="index" class="item" :class="{ active: MIXIN_ActiveIndex === index }" @tap="switchSwiper(index)">{{ item }}</view>
+				<view class="moveBar" :style="{ left: MIXIN_MoveBarLeft + 'px', width: 100 / typeList.length + '%' }"><text></text></view>
+			</view>
+			<view class="swiper-area">
+				<pulldown-refresher ref="pulldownRefresher" @pulldownRefresh="MIXIN_pulldownrefresh">
+					<swiper class="swiper" :current="MIXIN_NowIndex" :duration="234" @transition="MIXIN_transition" @change="MIXIN_change" @animationfinish="MIXIN_animationfinish">
+						<swiper-item v-for="(item, index) in typeList" :key="index">
+							<scroll-view scroll-y :style="{ height: MIXIN_ScrollViewHeight + 'px' }" @scrolltolower="MIXIN_scrolltolower">
+								<view class="team-item" v-for="(item, itemIndex) in lists[index]" :key="itemIndex" @tap="toPerson(item.id)">
+									<view class="left">
+										<image :src="item.avatar"></image>
+										<text class="ellipsis name">{{ item.nickname }}</text>
+										<view class="level-name"><text class="cuIcon-crownfill"></text>{{ item.level_name }}</view>
+									</view>
+									<view class="right">
+										<view>查看详情</view>
+										<text class="cuIcon-right"></text>
+									</view>
+								</view>
+								<custom-reach-bottom v-if="lists[index].length" :nomore="page[index] === 0" />
+								<swiper-status v-else :page="page[index]" unit="新增团队成员" />
+							</scroll-view>
+						</swiper-item>
+					</swiper>
+				</pulldown-refresher>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import MIXIN from '@/mixin/swiper-list.js'
+	import swiperStatus from '@/components/public/swiper-status.vue'
+	import pulldownRefresher from '@/components/public/pulldown-refresher.vue'
+	import customReachBottom from '@/components/public/custom-reach-bottom.vue'
+	import { _API_TeamNewList_Day, _API_TeamNewList_Month } from '@/apis/team.js'
+	export default {
+		mixins: [MIXIN],
+		components: { swiperStatus, customReachBottom, pulldownRefresher },
+		data() {
+			return {
+				page: [1, 1], // 每种类型的页数 当页数为 0 时表示当前类型没有更多了 -1 表示请求失败
+				lists: { 0: [], 1: []}, // 数据
+				typeList: ['今日新增(0)', '本月新增(0)'],
+				apis: [_API_TeamNewList_Day, _API_TeamNewList_Month]
+			};
+		},
+		onLoad({ type, day, month }) { // 发起请求
+			this.typeList = [`今日新增(${day})`, `本月新增(${month})`]
+			this.MIXIN_NowIndex = this.MIXIN_ActiveIndex = this.MIXIN_FinishedIndex = +type
+			this.MIXIN_MoveBarLeft = this.MIXIN_NowIndex * (this.MIXIN_ScreenWidth / this.typeList.length)
+			this.MIXIN_request()
+		},
+		methods: {
+			toPerson(id) {
+				uni.navigateTo({ url: `../person-card/person-card?id=${id}` })
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.new-proxy {
+		@include page();
+		.content {
+			@include flex(column);
+			.swiper-nav {
+				text {
+					width: 56rpx;
+				}
+				margin-bottom: 10rpx;
+			}
+			.swiper-area {
+				scroll-view {
+					.team-item {
+						@include flex();
+						height: 90rpx;
+						background: #FFFFFF;
+						padding: 0 30rpx;
+						box-sizing: border-box;
+						border-bottom: 1rpx solid $app-base-bg;
+						.left {
+							@include flex();
+							flex: 1;
+							justify-content: flex-start;
+							height: 100%;
+							image {
+								width: 66rpx;
+								height: 66rpx;
+								border-radius: 50%;
+							}
+							.name {
+								max-width: 268rpx;
+								margin: 0 30rpx;
+							}
+						}
+						.right {
+							@include flex();
+							height: 100%;
+							color: #999999;
+							justify-content: space-between;
+							> view { font-size: 24rpx; }
+							>text { font-size: 32rpx; }
+						}
+					}
+				}
+				margin-bottom: 10rpx;
+			}
+		}
+	}
+</style>

+ 101 - 0
pages/order-detail1-list/order-detail1-list.vue

@@ -0,0 +1,101 @@
+<template>
+	<view class="order-detail1-list">
+		<view class="list-item" v-for="(item, index) in list" :key="index">
+			<view class="info">
+				<view class="name">{{ item.name }}</view>
+				<view class="num">
+					<text>尺码:{{ item.size.length }}</text>
+					<text>数量:{{ item.num.reduce((t, e) => t + e, 0) }}</text>
+				</view>
+			</view>
+			<view class="size-item" v-for="(sizeItem, sizeIndex) in item.size" :key="sizeIndex">
+				<image :src="item.main_img"></image>
+				<view class="info">
+					<text class="size">尺码:{{ sizeItem }}</text>
+					<text class="basecolor">¥{{ item.money }}.00/{{ item.unit }}</text>
+				</view>
+				<view class="num">数量:{{ item.num[sizeIndex] }}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				list: []
+			};
+		},
+		onLoad({ list }) {
+			this.list = JSON.parse(uni.getStorageSync('lll'))
+			console.log(this.list)
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.order-detail1-list {
+		height: 100vh;
+		overflow: auto;
+		background: $app-base-bg;
+		.list-item {
+			margin-bottom: 20rpx;
+			> .info {
+				height: 90rpx;
+				@include flex();
+				padding: 30rpx;
+				background: #FFFFFF;
+				margin-bottom: 1rpx;
+				box-sizing: border-box;
+				justify-content: space-between;
+				.name {
+					font-size: 32rpx;
+					font-weight: bold;
+				}
+				.num {
+					font-size: 28rpx;
+					text {
+						margin-left: 24rpx;
+					}
+				}
+			}
+			.size-item {
+				@include flex();
+				height: 200rpx;
+				background: #FFFFFF;
+				border-bottom: 2rpx;
+				background: #FFFFFF;
+				box-sizing: border-box;
+				align-items: flex-end;
+				justify-content: space-between;
+				padding: 30rpx 81rpx 30rpx 30rpx;
+				image {
+					width: 140rpx;
+					height: 140rpx;
+					border-radius: 6rpx;
+					margin-right: 30rpx;
+				}
+				> .info {
+					@include flex(column);
+					justify-content: space-between;
+					align-items: flex-start;
+					height: 100%;
+					flex: 1;
+					line-height: 2;
+					.size {
+						font-size: 32rpx;
+						font-weight: bold;
+					}
+					.basecolor {
+						font-weight: bold;
+					}
+				}
+				.num {
+					line-height: 2;
+					font-size: 28rpx;
+				}
+			}
+		}
+	}
+</style>

+ 19 - 0
pages/order-detail1-log/order-detail1-log.vue

@@ -0,0 +1,19 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 262 - 0
pages/order-detail1/order-detail1.vue

@@ -0,0 +1,262 @@
+<template>
+	<view class="order-detail1">
+		<view url="../address-manage/address-manage?choose=1" class="address">
+			<view v-if="address" class="address-info">
+				<view class="top">
+					<text class="name">收货人:{{ address.con_name }}</text>
+					<text class="phone">{{ address.con_mobile }}</text>
+				</view>
+				<view class="detail ellipsis">{{ address | getAddressString }}</view>
+			</view>
+			<view v-else class="choose">
+				<text class="add">+</text>
+				<text class="text">添加收货人</text>
+			</view>
+			<text class="cuIcon-right"></text>
+		</view>
+		<view class="border">
+			<text style="margin-left: 0;"></text>
+			<text v-for="item in 21" :key="item" :class="{ red: item % 2 === 1 }"></text>
+		</view>
+		<view class="order_num app-item">
+			<text>订单编号:{{ order_num }}</text>
+			<text class="basecolor">{{ status }}</text>
+		</view>
+		<view class="list" @click="toList">
+			<view class="list-item" v-for="(item, index) in goodList" :key="index">
+				<image :src="item.main_img" ></image>
+				<view class="info">
+					<text>尺码:{{ item.size.length }}</text>
+					<text>数量:{{ item.num.reduce((t, e) => t + e, 0) }}</text>
+					<text>共计金额:<text class="basecolor">¥{{ item.money }}.00</text></text>
+				</view>
+			</view>
+		</view>
+		<view v-if="nopay">
+			<view class="top app-item">
+				<text>付款信息</text>
+			</view>
+			<view class="app-item">
+				<text>订单金额</text>
+				<text>¥356.00</text>
+			</view>
+			<view class="app-item">
+				<text>应付金额</text>
+				<text>¥356.00</text>
+			</view>
+			<view class="app-item pay">
+				<text>已付:<text class="basecolor">¥0.00</text></text>
+				<text class="paynow">立即付款</text>
+			</view>
+		</view>
+		<view class="app-item t" @click="showRemark">
+			<text>备注信息</text>
+			<text class="cuIcon-right"></text>
+		</view>
+		<view class="app-item">
+			<text>操作日志</text>
+			<text class="cuIcon-right"></text>
+		</view>
+		<view class="submit">
+			<view class="left">催办</view>
+			<view v-if="nopay" class="center">订单作废</view>
+			<view class="right">再次购买</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { _API_OrderDetail1 } from '@/apis/order.js'
+	export default {
+		data() {
+			return {
+				address: {},
+				goodList: [],
+				nopay: false,
+				status: '',
+				order_num: '',
+				remark: ''
+			}
+		},
+		onLoad({ status, order_num, nopay }) {
+			this.status = status
+			this.order_num = order_num
+			if (nopay) {
+				this.nopay = true
+			}
+			uni.loading()
+			_API_OrderDetail1({ order_num }).then(({ code, data }) => {
+				this.remark = data.remark
+				this.address = data.address
+				this.goodList = data.list
+			})
+		},
+		methods: {
+			showRemark() { // 点击备注
+				if (this.remark) {
+					uni.showModal({ title: '备注', content: this.remark, showCancel: false })
+				} else {
+					uni.toast('该订单无备注')
+				}
+			},
+			toList() { // 点击查看商品详情
+				uni.setStorageSync('lll', JSON.stringify(this.goodList))
+				uni.navigateTo({ url: '../order-detail1-list/order-detail1-list' })
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.order-detail1 {
+		height: 100vh;
+		overflow: auto;
+		background: $app-base-bg;
+		border-bottom: 100rpx solid transparent;
+		.address {
+			height: 120rpx;
+			background: #FFFFFF;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			@include flex();
+			justify-content: space-between;
+			.address-info {
+				flex: 1;
+				color: #181818;
+				font-size: 28rpx;
+				@include flex(column);
+				align-items: flex-start;
+				.name {
+					font-size: 32rpx;
+					font-weight: bold;
+				}
+				.phone {
+					margin-left: 30rpx;
+				}
+				.detail {
+					width: 654rpx;
+					color: #666666;
+				}
+			}
+			.choose {
+				@include flex();
+				justify-content: flex-start;
+				.add {
+					@include flex();
+					background: $app-base-color;
+					font-size: 40rpx;
+					color: #FFFFFF;
+					width: 60rpx;
+					height: 60rpx;
+				}
+				.text {
+					margin-left: 17rpx;
+					color: 32rpx;
+				}
+			}
+			.cuIcon-right {
+				font-size: 38rpx;
+			}
+		}
+		.border {
+			@include flex();
+			height: 6rpx;
+			background: #FFFFFF;
+			text {
+				flex: 1;
+				height: 100%;
+				background: #3283FA;
+				margin-left: 8rpx;
+				&.red {
+					background: #F56C6C;
+				}
+			}
+		}
+		.order_num {
+			height: 90rpx;
+			font-size: 28rpx;
+			margin-top: 14rpx;
+			font-weight: bold;
+			background: #FFFFFF;
+		}
+		.list {
+			.list-item {
+				height: 200rpx;
+				margin-top: 1rpx;
+				background: #FFFFFF;
+				box-sizing: border-box;
+				padding: 30rpx;
+				@include flex();
+				image {
+					width: 140rpx;
+					height: 140rpx;
+					border-radius: 6rpx;
+				}
+				.info {
+					flex: 1;
+					height: 100%;
+					font-size: 28rpx;
+					font-weight: bold;
+					margin-left: 30rpx;
+					@include flex(column);
+					align-items: flex-start;
+					justify-content: space-between;
+				}
+			}
+		}
+		.app-item {
+			font-size: 28rpx;
+			font-weight: bold;
+			&.top {
+				font-size: 32rpx;
+				font-weight: bold;
+				margin-top: 20rpx;
+			}
+			&.t {
+				margin-top: 20rpx;
+			}
+			&.pay {
+				justify-content: flex-end;
+				.paynow {
+					width: 156rpx;
+					height: 54rpx;
+					@include flex();
+					color: #FFFFFF;
+					margin-left: 28rpx;
+					font-weight: normal;
+					border-radius: 54rpx;
+					background: $app-base-color;
+				}
+			}
+		}
+		.submit {
+			@include flex();
+			position: fixed;
+			height: 100rpx;
+			bottom: 0;
+			font-size: 36rpx;
+			width: 100vw;
+			background: #FFFFFF;
+			color: #FFFFFF;
+			border-top: 1rpx solid #999999;
+			.left {
+				width: 190rpx;
+				height: 100%;
+				color: #666666;
+				@include flex();
+			}
+			.center {
+				flex: 1;
+				@include flex();
+				height: 100%;
+				background: #F7BC54;
+			}
+			.right {
+				height: 100%;
+				flex: 1;
+				@include flex();
+				background: #F76454;
+			}
+		}
+	}
+</style>

+ 86 - 0
pages/pay-order/pay-order.vue

@@ -0,0 +1,86 @@
+<template>
+	<view class="pay-order">
+		<view class="need">待支付<text>¥{{ money }}.00</text></view>
+		<view class="app-item ">
+			<text>钱包余额(¥{{ hadMoney }}.00)</text>
+			<text class="basecolor">¥{{ money }}.00</text>
+		</view>
+		<view class="app-item">
+			<text>还需支付</text>
+			<text class="basecolor">¥{{ (money - hadMoney) >= 0 ? (money - hadMoney) : 0 }}.00</text>
+		</view>
+		<view class="big-btn bg" @click="pay">确认支付</view>
+	</view>
+</template>
+
+<script>
+	import { _API_OrderPay } from '@/apis/order.js'
+	export default {
+		data() {
+			return {
+				order_num: '',
+				money: '',
+				fromS: ''
+			}
+		},
+		computed: {
+			hadMoney() {
+				return this.$store.state.userinfo.money
+			}
+		},
+		onLoad({ order_num, money, fromS }) {
+			this.order_num = order_num
+			this.money = money
+			this.fromS = fromS
+		},
+		methods: {
+			pay() {
+				if (this.money - this.hadMoney > 0) {
+					uni.toast('您的余额不足,无法付款')
+				} else {
+					uni.loading()
+					_API_OrderPay({ order_num: this.order_num }).then(({ code, message }) => {
+						if (code == 200) {
+							this.$store.commit('userinfo/REDUCEMONEY', this.money)
+							uni.$emit('PAYSUCCESS', this.order_num)
+							uni.showModal({
+								showCancel: false,
+								title: '提示',
+								content: '付款成功',
+								success: () => {
+									uni.navigateBack({ delta: this.fromS ? 2 : 1 })
+								}
+							})
+						} else {
+							uni.toast(message)
+						}
+					})
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.pay-order {
+		height: 100vh;
+		background: $app-base-bg;
+		.need {
+			@include flex();
+			height: 120rpx;
+			background: #FFFFFF;
+			font-size: 42rpx;
+			text {
+				font-weight: bold;
+				margin-left: 57rpx;
+			}
+		}
+		.app-item {
+			margin-top: 20rpx;
+		}
+		.big-btn {
+			margin-top: 390rpx;
+			width: 400rpx;
+		}
+	}
+</style>

+ 83 - 104
pages/place-order/place-order.vue

@@ -1,22 +1,28 @@
 <template>
 	<view class="place-order">
 		<custom-nav noback="noback" transparent="transparent" ref="ltm" title=" " />
+		<AddCart ref="addCart" />
 		<view class="content">
 			<scroll-view scroll-y :style="{ height: scrollviewHeight + 'px' }">
 				<view
-					:class="mode === 'list' ? 'list' : 'square'"
-					v-for="item in goodsList" :key="item.id"
-					@tap="tap(item.id, item.storage)"
+					class="item"
+					v-for="(item, index) in list" :key="index"
+					@tap="tap(index)"
 				>
 					<view class="img">
-						<image :src="item.img"></image>
+						<image :src="item.main_img"></image>
 					</view>
 					<view class="info">
-						<view class="top">{{ item.name }}</view>
-						<view class="mid">进货价:¥{{ item.price }}</view>
-						<view class="bot">我的库存:{{ item.storage }}套</view>
+						<view class="top ellipsis">{{ item.name }}</view>
+						<view class="mid">¥{{ item.money }}.00/{{ item.unit }}</view>
+						<view class="bot">
+							<text>{{ item.size.length }}个尺码可选</text>
+							<view class="shopCar" @tap.stop="tapShopCar(item)">
+								<view v-if="item.cart.reduce((t, e) => t + e, 0)" class="sizeNum">{{ item.cart.reduce((t, e) => t + e, 0) }}</view>
+								<text class="cuIcon-cart"></text>
+							</view>
+						</view>
 					</view>
-					<view class="buy">立即购买</view>
 				</view>
 				<view v-if="!goodsList.length" class="loading">加载中...</view>
 			</scroll-view>
@@ -25,8 +31,11 @@
 </template>
 
 <script>
+	import { deepClone } from '@/common/util/index.js'
 	import { _API_GoodList } from '@/apis/good.js'
+	import AddCart from '@/components/public/add-cart.vue'
 	export default {
+		components: { AddCart },
 		data() {
 			return {
 				title: '订货下单',
@@ -35,16 +44,26 @@
 				scrollviewHeight: 0
 			}
 		},
+		computed: {
+			list() {
+				const temp = deepClone(this.goodsList)
+				temp.forEach(goodItem => {
+					goodItem.cart = Array(goodItem.size.length).fill(0)
+					const itemInCart = this.$store.state.cart.list.find(e => e.id === goodItem.id)
+					if (itemInCart) {
+						Object.assign(goodItem, itemInCart)
+					}
+				})
+				return temp
+			}
+		},
 		mounted() { // 获取商品列表
 			this.$offset('.content').then(res => this.scrollviewHeight = res.height) // 设置scrollview 高
-			// uni.startPullDownRefresh()
-			
-			uni.navigateBack()
-			setTimeout(() => uni.$emit('noopening'))
-			return
-			this.request()
-		},
-		onPullDownRefresh() {
+			if (this.$store.state.userinfo.level !== '代理公司') {
+				uni.navigateBack()
+				setTimeout(() => uni.$emit('noopening'))
+				return
+			}
 			this.request()
 		},
 		methods: {
@@ -58,15 +77,16 @@
 					}
 				}).catch(() => setTimeout(() => uni.toast('网络好像出了点问题,下拉刷新试试'), 123))
 			},
-			navRight() { // 切换显示模式
-				this.mode = this.mode === 'list' ? 'square' : 'list'
+			tap(index) { // 查看商品详情
+				// if (this.$store.state.userinfo.level === '销售主管') {
+				// 	uni.toast('销售主管不能通过App下单')
+				// } else {
+				uni.navigateTo({ url: `../good-detail1/good-detail1?data=${JSON.stringify(this.goodsList[index])}` })
+				// }
+				// console.log()
 			},
-			tap(id, storage) { // 查看商品详情
-				if (this.$store.state.userinfo.level === '销售主管') {
-					uni.toast('销售主管不能通过App下单')
-				} else {
-					uni.navigateTo({ url: `../good-detail/good-detail?id=${id}&storage=${storage}` })
-				}
+			tapShopCar(item) {
+				this.$refs.addCart.show(deepClone(item))
 			}
 		}
 	}
@@ -80,17 +100,17 @@
 				text-align: center;
 				margin-top: 567rpx;
 			}
-			.list {
+			.item {
 				@include flex();
-				height: 180rpx;
+				height: 300rpx;
 				background: #FFFFFF;
 				margin-bottom: 10rpx;
-				padding: 20rpx 30rpx;
+				padding: 30rpx;
 				align-items: flex-end;
 				box-sizing: border-box;
 				.img {
-					height: 100%;
-					width: 140rpx;
+					height: 240rpx;
+					width: 300rpx;
 					image {
 						width: 100%;
 						height: 100%;
@@ -100,97 +120,56 @@
 					@include flex(column);
 					flex: 1;
 					height: 100%;
-					margin: 0 30rpx;
-					justify-content: space-between;
-					align-items: flex-start;
-					view {
-						width: 100%;
-						overflow: hidden;
-						white-space: nowrap;
-						text-overflow: ellipsis;
-						&.top {
-							font-size: 32rpx;
-						}
-						&.mid {
-							font-size: 26rpx;
-							color: $app-base-color;
-						}
-						&.bot {
-							font-size: 26rpx;
-							color: $app-sec-text-color;
-						}
-					}
-				}
-				.buy {
-					@include flex();
-					width: 130rpx;
-					height: 48rpx;
-					font-size: 26rpx;
-					color: $app-base-color;
-					border: 2rpx solid $app-base-color;
-				}
-			}
-			.square {
-				@include flex(column);
-				float: left;
-				width: 335rpx;
-				height: 500rpx;
-				overflow: hidden;
-				margin-top: 30rpx;
-				margin-left: 30rpx;
-				position: relative;
-				background: #FFFFFF;
-				border-radius: 10rpx;
-				box-shadow: 0rpx 10rpx 14rpx 2rpx rgba(168, 168, 168, 0.56);
-				&:nth-child(even) {
-					margin-left: 20rpx;
-				}
-				.img {
-					width: 100%;
-					height: 335rpx;
-					image {
-						width: 100%;
-						height: 100%;
-					}
-				}
-				.info {
-					@include flex(column);
-					flex: 1;
-					width: 100%;
-					padding: 20rpx;
-					box-sizing: border-box;
+					margin-left: 23rpx;
 					align-items: flex-start;
 					justify-content: space-between;
-					view {
+					> view {
 						width: 100%;
 						overflow: hidden;
 						white-space: nowrap;
 						text-overflow: ellipsis;
 						&.top {
 							font-size: 32rpx;
+							line-height: 3;
 						}
 						&.mid {
-							font-size: 28rpx;
+							font-size: 26rpx;
 							color: $app-base-color;
 						}
 						&.bot {
-							font-size: 22rpx;
-							color: $app-sec-text-color;
+							width: 100%;
+							display: flex;
+							overflow: visible;
+							justify-content: space-between;
+							> text {
+								font-size: 26rpx;
+								line-height: 2;
+								color: #666666;
+							}
+							> view {
+								@include flex();
+								color: #FFFFFF;
+								height: 60rpx;
+								width: 60rpx;
+								font-size: 40rpx;
+								border-radius: 50%;
+								position: relative;
+								overflow: visible;
+								background: $app-base-color;
+								view {
+									position: absolute;
+									font-size: 20rpx;
+									right: 0;
+									height: 32rpx;
+									top: -24rpx;
+									padding: 2rpx 8rpx;
+									border-radius: 32rpx;
+									background: #FF0000;
+								}
+							}
 						}
 					}
 				}
-				.buy {
-					@include flex();
-					right: 10rpx;
-					bottom: 10rpx;
-					width: 120rpx;
-					height: 48rpx;
-					color: #FFFFFF;
-					font-size: 26rpx;
-					position: absolute;
-					border-radius: 10rpx;
-					background: $app-base-color;
-				}
 			}
 		}
 	}

+ 8 - 2
pages/safe-manage/safe-manage.vue

@@ -27,6 +27,7 @@
 </template>
 
 <script>
+	import { _API_Logout } from '@/apis/verify.js'
 	export default {
 		data() {
 			return {
@@ -35,8 +36,13 @@
 		},
 		methods: {
 			logout() {
-				this.$store.commit('app/LOGOUT')
-				uni.reLaunch({ url: '../login-psw/login-psw' })
+				uni.showLoading({ mask: true })
+				_API_Logout().then(() => {
+					this.$store.commit('app/LOGOUT')
+					uni.navigateBack()
+					window.history.replaceState({}, '', '/api/gzh')
+					location.reload()
+				})
 			}
 		}
 	}

+ 1 - 1
pages/shop-car/shop-car.vue

@@ -111,7 +111,7 @@
 		@include page();
 		.content {
 			overflow: auto;
-			border-bottom: 98rpx solid #FFFFFF;
+			border-bottom: 98rpx solid transparent;
 			.shopcar-item {
 				margin-bottom: 10rpx;
 				.item {

+ 206 - 0
pages/shop-car1/shop-car1.vue

@@ -0,0 +1,206 @@
+<template>
+	<view class="shop-car1">
+		<view v-if="list.length" class="list">
+			<view class="shopcar-item" v-for="(item, index) in list" :key="index">
+				<view class="name" @tap="chooseGood(!item.choosed, index)">
+					<text v-if="item.choosed" class="cuIcon-roundcheckfill"></text>
+					<text v-else class="cuIcon-round"></text>
+					<view class="name ellipsis">{{ item.name }}</view>
+				</view>
+				<view class="sizeItem" v-for="(sizeItem, sizeIndex) in item.size" :key="sizeIndex" v-if="item.cart[sizeIndex]" 
+					@tap="chooseSize(!item.sizeChoosed[sizeIndex], index, sizeIndex)"
+				>
+					<text v-if="item.sizeChoosed[sizeIndex]" class="cuIcon-roundcheckfill"></text>
+					<text v-else class="cuIcon-round"></text>
+					<image :src="item.main_img"></image>
+					<view class="info">
+						<text>尺码:{{ sizeItem }}</text>
+						<text class="basecolor">¥{{ item.money }}.00/{{ item.unit }}</text>
+					</view>
+					<NumInput :value="item.cart[sizeIndex]" :args="[index, sizeIndex]" @change="numChange" />
+				</view>
+			</view>
+		</view>
+		<view v-else class="none">
+			<image src="../../static/icon/emptyshopcar.png"></image>
+			<view class="big-btn" @tap="goToBuy">去下单</view>
+		</view>
+		<view class="buy">
+			<view class="all" @tap="chooseAll(!choosedAll)">
+				<text v-if="choosedAll" class="cuIcon-roundcheckfill"></text>
+				<text v-else class="cuIcon-round"></text>
+				<text>全选</text>
+			</view>
+			<view class="total">总计: <text>{{ '¥ ' + choosedPrice + '.00' }}</text></view>
+			<view class="pay" @tap="confirm">结算({{ ' ' + choosedNum + ' ' }})</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import NumInput from '@/components/public/num-input.vue'
+	export default {
+		components: { NumInput },
+		data() {
+			return {
+				
+			};
+		},
+		computed: {
+			list() { return this.$store.state.cart.list },
+			choosedAll() { return this.$store.getters['cart/choosedAll'] },
+			choosedNum() { return this.$store.getters['cart/choosedNum'] },
+			choosedPrice() { return this.$store.getters['cart/choosedPrice'] }
+		},
+		methods: {
+			numChange(value, index, sizeIndex) { // 购物车数量发生变化
+				if (value) {
+					this.$store.commit('cart/COUNTCHANGE', { value, index, sizeIndex, del: true })
+				} else {
+					uni.showModal({
+					    title: '提示',
+					    content: '确定删除这个尺寸?',
+					    success: res => {
+					        if (res.confirm) {
+					            this.$store.commit('cart/COUNTCHANGE', { value, index, sizeIndex, del: true })
+					        }
+					    }
+					});
+				}
+			},
+			chooseAll(to) { // 点击全选
+				this.$store.commit('cart/CHOOSEDCHANGE', [to])
+			},
+			chooseGood(to, index) { // 点击商品
+				this.$store.commit('cart/CHOOSEDCHANGE', [to, index])
+			},
+			chooseSize(to, index, sizeIndex) { // 点击尺寸
+				this.$store.commit('cart/CHOOSEDCHANGE', [to, index, sizeIndex])
+			},
+			goToBuy() { // 点击去下单
+				uni.navigateTo({ url: '../place-order/place-order' })
+			},
+			confirm() { // 点击结算
+				if (this.choosedNum) {
+					uni.navigateTo({ url: '../confirm-order1/confirm-order1' })
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.shop-car1 {
+		height: 100vh;
+		overflow: auto;
+		background: $app-base-bg;
+		border-bottom: calc(var(--window-bottom) + 100rpx) solid transparent;
+		.shopcar-item {
+			margin-bottom: 10rpx;
+			.name {
+				height: 90rpx;
+				@include flex();
+				background: #FFFFFF;
+				justify-content: flex-start;
+				.name {
+					color: #181818;
+					font-size: 32rpx;
+					font-weight: bold;
+				}
+				.cuIcon-round, .cuIcon-roundcheckfill {
+					@include flex();
+					width: 102rpx;
+					height: 100%;
+					font-size: 32rpx;
+					&.cuIcon-roundcheckfill {
+						color: $app-base-color;
+					}
+				}
+			}
+			.sizeItem {
+				@include flex();
+				height: 200rpx;
+				margin-top: 4rpx;
+				background: #FFFFFF;
+				box-sizing: border-box;
+				padding-right: 39rpx;
+				.cuIcon-round, .cuIcon-roundcheckfill {
+					@include flex();
+					width: 102rpx;
+					height: 100%;
+					font-size: 32rpx;
+					&.cuIcon-roundcheckfill {
+						color: $app-base-color;
+					}
+				}
+				image {
+					width: 140rpx;
+					height: 140rpx;
+					border-radius: 6rpx;
+				}
+				.info {
+					flex: 1;
+					height: 100%;
+					@include flex(column);
+					align-items: flex-start;
+					padding: 43rpx 29rpx;
+					box-sizing: border-box;
+					justify-content: space-between;
+				}
+			}
+		}
+		.none {
+			@include flex(column);
+			height: 100%;
+			image {
+				width: 305rpx;
+				height: 417rpx;
+			}
+			.big-btn {
+				width: 280rpx;
+				height: 80rpx;
+				margin-top: 123rpx;
+				border-radius: 40rpx;
+			}
+		}
+		.buy {
+			@include flex();
+			position: fixed;
+			left: 0;
+			right: 0;
+			bottom: var(--window-bottom);
+			z-index: 1;
+			height: 98rpx;
+			font-size: 32rpx;
+			background: #FFFFFF;
+			justify-content: space-between;
+			box-shadow: 0rpx -1rpx 0rpx 0rpx rgba(178,178,178,1);
+			view {
+				@include flex();
+				height: 100%;
+				&.all {
+					font-size: 32rpx;
+					text {
+						margin-left: 30rpx;
+						&.cuIcon-roundcheckfill {
+							color: $app-base-color;
+						}
+					}
+				}
+				&.total {
+					flex: 1;
+					margin-right: 30rpx;
+					justify-content: flex-end;
+					text {
+						color: $app-base-color;
+					}
+				}
+				&.pay {
+					width: 220rpx;
+					color: #FFFFFF;
+					background: $app-base-color;
+				}
+			}
+		}
+	}
+</style>

+ 5 - 2
pages/team-manage/team-manage.vue

@@ -2,11 +2,11 @@
 	<view class="team-manage">
 		<view class="content">
 			<view class="add-num">
-				<view class="left">
+				<view class="left" @tap="toNewList(0)">
 					<view class="num basecolor"><text>{{ dayAdd || 0 }}人</text></view>
 					<view class="text">今日新增代理</view>
 				</view>
-				<view class="right">
+				<view class="right" @tap="toNewList(1)">
 					<view class="num basecolor"><text>{{ monthAdd || 0 }}人</text></view>
 					<view class="text">本月新增代理</view>
 				</view>
@@ -71,6 +71,9 @@
 			},
 			toPerson(id) {
 				uni.navigateTo({ url: `../person-card/person-card?id=${id}` })
+			},
+			toNewList(type) {
+				uni.navigateTo({ url: `../new-proxy/new-proxy?type=${type}&day=${this.dayAdd}&month=${this.monthAdd}` })
 			}
 		}
 	}

BIN
static/avatar.jpg


BIN
static/index/tabbar/a.png


BIN
static/index/tabbar/ac.png


BIN
static/index/tabbar/cart-act.png


BIN
static/index/tabbar/cart.png


+ 2 - 0
store/index.js

@@ -2,6 +2,7 @@ import Vue from 'vue'  //引入 Vue
 import Vuex from 'vuex'  //引入 Vuex
 
 import app from '@/store/modules/app'
+import cart from '@/store/modules/cart.js'
 import device from '@/store/modules/device'
 import address from '@/store/modules/address'
 import article from '@/store/modules/article'
@@ -15,6 +16,7 @@ Vue.use(Vuex)
 const $store = new Vuex.Store({
 	modules: {
 		app,
+		cart,
 		device,
 		address,
 		article,

+ 0 - 1
store/modules/address.js

@@ -12,7 +12,6 @@ export default {
 	mutations: {
 		GET_ADDRESS(state, list) { // 请求地址
 			state.list = list
-			console.log(state.list)
 		},
 		CHOOSEADDRESS(state, index) { // 用户下单手动选择地址
 			state.usingIndex = index

+ 1 - 3
store/modules/app.js

@@ -12,13 +12,11 @@ export default {
 	mutations: {
 		LOGIN(state, payload) { // 登录 保存 token
 			state.token = payload
-			document.cookie = `DWBSTOKEN=${payload}; expires=Fri, 31 Dec 9999 23:59:59 GMT`
+			document.cookie = `DWBSTOKEN=${payload}; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/;`
 			// uni.setStorage({ key: 'token', data: payload })
 		},
 		LOGOUT(state) { // 退出登录 删除 token
 			state.token = ''
-			document.cookie = "DWBSTOKEN=123; expires=Thu, 01 Jan 1970 00:00:00 UTC"
-			console.log('cookie', document.cookie)
 			// token: uni.removeStorageSync('token')
 		}
 		// SWITCHINDEXTAABARINDEX(state, payload) { // 切换首页 tabbar

+ 136 - 0
store/modules/cart.js

@@ -0,0 +1,136 @@
+import Vue from 'vue'
+import { deepClone } from '@/common/util/index.js'
+
+// 解压
+const unzip = b64Data => {
+	let strData = atob(b64Data);
+	const charData = strData.split('').map(function (x) {
+		return x.charCodeAt(0);
+	});
+	const binData = new Uint8Array(charData);
+	const data = pako.inflate(binData);
+	strData = String.fromCharCode.apply(null, new Uint16Array(data));
+	return decodeURIComponent(strData);
+}
+
+// 压缩
+const zip = str => btoa(pako.gzip(encodeURIComponent(str), {to: 'string'}))
+
+const storage = list => {
+	document.cookie = `CART=${zip(JSON.stringify(list))}; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/;`
+}
+
+let cartinfo = []
+
+try{
+	cartinfo = document.cookie.split(';').findIndex((e) => e.match('CART')) == -1 ? [] : 
+	JSON.parse(unzip(document.cookie.split(';')[document.cookie.split(';').findIndex((e) => e.match('CART'))].split('=')[1]))
+}catch(e){
+	cartinfo = []
+}
+
+export default {
+	namespaced: true,
+	state: {
+		list: cartinfo
+	},
+	getters: {
+		shopcarNum: state => { // 计算购车商品数量
+			return state.list.reduce((t, e) => {
+				return e.size.reduce((tt, ee, ii) => {
+					return tt + e.cart[ii]
+				}, t)
+			}, 0)
+		},
+		choosedNum: state => { // 计算购车已选商品数量
+			return state.list.reduce((t, e) => {
+				return e.size.reduce((tt, ee, ii) => {
+					return tt + (e.sizeChoosed[ii] ? e.cart[ii] : 0)
+				}, t)
+			}, 0)
+		},
+		choosedPrice: state => { // 计算购车已选商品价值
+			return state.list.reduce((t, e) => {
+				return e.size.reduce((tt, ee, ii) => {
+					return tt + (e.sizeChoosed[ii] ? e.cart[ii] * e.money : 0)
+				}, t)
+			}, 0)
+		},
+		// choosedList: state => { // 获取购物车已选中的商品列表
+		// 	const list = deepClone(state.list)
+		// 	for(let i = list.length - 1; i >= 0; i --) {
+		// 		if (!list[i].choosed) {
+		// 			list.splice(i, 1)
+		// 		} else {
+		// 			list[i].typeList.forEach(ee => {
+		// 				Object.keys(ee.choosed).forEach(eee => {
+		// 					if (!ee.choosed[eee]) {
+		// 						delete ee.size[eee]
+		// 						delete ee.choosed[eee]
+		// 					}
+		// 				})
+		// 			})
+		// 		}
+		// 	}
+		// 	return list
+		// },
+		choosedAll: state => { // 计算购车是否为全选状态
+			const list = deepClone(state.list)
+			list.forEach(goodItem => {
+				for(let i = goodItem.cart.length - 1; i >= 0; i --) {
+					if (goodItem.cart[i] === 0) {
+						goodItem.cart.splice(i, 1)
+						goodItem.size.splice(i, 1)
+						goodItem.size_id.splice(i, 1)
+						goodItem.sizeChoosed.splice(i, 1)
+					}
+				}
+			})
+			return list.every(e => {
+				return e.sizeChoosed.every(ee => ee)
+			})
+		}
+	},
+	mutations: {
+		ADD(state, payload) { // 添加商品到购物车 (已存在合并,不存在添加)
+			const index = state.list.findIndex(e => e.id === payload.id) // 检查添加商品是否存在于购物车中
+			if(index === -1) {
+				state.list.push(payload)
+			} else {
+				Object.assign(state.list[index], payload)
+			}
+			storage(state.list)
+		},
+		CLEAREMPTYITEM(state) {
+			for(let i = state.list.length - 1; i >= 0; i --) {
+				if (state.list[i].cart.reduce((t, e) => t + e, 0) === 0) { // 当某个尺码数量变为 0 时,进行一波操作,删除这件商品的这个类型或者商品
+					state.list.splice(i, 1)
+				}
+			}
+			storage(state.list)
+		},
+		COUNTCHANGE(state, payload) { // 修改购物商品数量相关操作
+			Vue.set(state.list[payload.index].cart, payload.sizeIndex, payload.value)
+			if (payload.del && payload.value === 0 && state.list[payload.index].cart.reduce((t, e) => t + e, 0) === 0) { // 当某个尺码数量变为 0 时,进行一波操作,删除这件商品的这个类型或者商品
+				state.list.splice(payload.index, 1)
+			}
+			storage(state.list)
+		},
+		CHOOSEDCHANGE(state, payload) { // 修改选择状态相关操作
+			if (payload.length === 3) { // 点击 选择/取消 商品类型, 选择/取消 该商品商品类型,同时和 选择/取消 商品联动
+				state.list[payload[1]].sizeChoosed[payload[2]] = payload[0]
+				state.list[payload[1]].choosed = state.list[payload[1]].sizeChoosed.some((e, i) => e && state.list[payload[1]].cart[i])
+			} else if (payload.length === 2) { // 点击 选择/取消 商品, 选择/取消 该商品所有的类型
+				state.list[payload[1]].choosed = payload[0]
+				state.list[payload[1]].sizeChoosed = Array(state.list[payload[1]].sizeChoosed.length).fill(payload[0])
+			} else { // 点击 取消/全选
+				state.list.forEach((e, i) => {
+					e.choosed = payload[0]
+					e.sizeChoosed = Array(e.size.length).fill(payload[0])
+				})
+			}
+			state.list = JSON.parse(JSON.stringify(state.list))
+			storage(state.list)
+		}
+	}
+}

+ 3 - 0
store/modules/userinfo.js

@@ -6,6 +6,9 @@ export default {
 	mutations: {
 		UPDATA_USERINFO(state, payload) {
 			Object.keys(payload).forEach(e => Vue.set(state, e, payload[e]))
+		},
+		REDUCEMONEY(state, money) {
+			state.money -= +money
 		}
 	}
 }

+ 1 - 1
uni.scss

@@ -143,7 +143,7 @@ $app-item-padding-width: 30rpx; // app 功能列表项左右空白宽度
 	width: 130rpx;
 	height: 36rpx;
 	color: #FFFFFF;
-	font-size: 20rpx;
+	font-size: 16rpx!important;
 	border-radius: 18rpx;
 	background: $app-base-color;
 	.cuIcon-crownfill {

BIN
unpackage/dist/build/h5.zip


+ 0 - 3
unpackage/dist/build/h5/index.html

@@ -1,3 +0,0 @@
-<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title>大卫博士公众号</title><script src=http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js></script><script src=http://cdn.staticfile.org/jquery.qrcode/1.0/jquery.qrcode.min.js></script><script>document.addEventListener('DOMContentLoaded', function() {
-                document.documentElement.style.fontSize = document.documentElement.clientWidth / 20 + 'px'
-            })</script><link rel=stylesheet href=/gzh/static/index.2d26d90a.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/gzh/static/js/chunk-vendors.376a9f79.js></script><script src=/gzh/static/js/index.618197e1.js></script></body></html>

BIN
unpackage/dist/build/h5/static/.9.png/1.9.png


BIN
unpackage/dist/build/h5/static/.9.png/LaunchImage@3x.png


BIN
unpackage/dist/build/h5/static/appicon/Icon-App-1024x1024@1x.png


BIN
unpackage/dist/build/h5/static/appicon/logo.png


BIN
unpackage/dist/build/h5/static/flashscreen.png


BIN
unpackage/dist/build/h5/static/icon/Video.png


BIN
unpackage/dist/build/h5/static/icon/appupdata.png


BIN
unpackage/dist/build/h5/static/icon/auth-float.png


BIN
unpackage/dist/build/h5/static/icon/auth-progress.png


BIN
unpackage/dist/build/h5/static/icon/copy.png


BIN
unpackage/dist/build/h5/static/icon/data-card.png


BIN
unpackage/dist/build/h5/static/icon/downToSuper.png


BIN
unpackage/dist/build/h5/static/icon/downToTop.png


BIN
unpackage/dist/build/h5/static/icon/downloadImg.png


BIN
unpackage/dist/build/h5/static/icon/emptyshopcar.png


BIN
unpackage/dist/build/h5/static/icon/heart-fill.png


BIN
unpackage/dist/build/h5/static/icon/heart.png


BIN
unpackage/dist/build/h5/static/icon/howuse.png


BIN
unpackage/dist/build/h5/static/icon/invite-proxy.png


BIN
unpackage/dist/build/h5/static/icon/like-fill.png


BIN
unpackage/dist/build/h5/static/icon/like.png


BIN
unpackage/dist/build/h5/static/icon/live-time.png


BIN
unpackage/dist/build/h5/static/icon/login-reg.png


BIN
unpackage/dist/build/h5/static/icon/nopass.png


BIN
unpackage/dist/build/h5/static/icon/ok.png


BIN
unpackage/dist/build/h5/static/icon/pass.png


BIN
unpackage/dist/build/h5/static/icon/share.png


BIN
unpackage/dist/build/h5/static/icon/sharemore.png


BIN
unpackage/dist/build/h5/static/icon/sharepyq.png


BIN
unpackage/dist/build/h5/static/icon/sharewx.png


BIN
unpackage/dist/build/h5/static/icon/super_price.png


BIN
unpackage/dist/build/h5/static/icon/top_price.png


BIN
unpackage/dist/build/h5/static/icon/upToCrown.png


BIN
unpackage/dist/build/h5/static/icon/upToTop.png


BIN
unpackage/dist/build/h5/static/icon/updata_wrapper.png


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/build/h5/static/index.2d26d90a.css


BIN
unpackage/dist/build/h5/static/index/index/down-order.png


BIN
unpackage/dist/build/h5/static/index/index/income-running.png


BIN
unpackage/dist/build/h5/static/index/index/income-shop.png


BIN
unpackage/dist/build/h5/static/index/index/invite-proxy.png


BIN
unpackage/dist/build/h5/static/index/index/manage-money.png


BIN
unpackage/dist/build/h5/static/index/index/manage-order.png


BIN
unpackage/dist/build/h5/static/index/index/manage-poeple.png


BIN
unpackage/dist/build/h5/static/index/index/my-invite.png


BIN
unpackage/dist/build/h5/static/index/index/my-order.png


BIN
unpackage/dist/build/h5/static/index/index/my-stock.png


BIN
unpackage/dist/build/h5/static/index/index/news.png


BIN
unpackage/dist/build/h5/static/index/index/place-order.png


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác