gcz há 2 anos atrás
pai
commit
cbb0d376c2
5 ficheiros alterados com 258 adições e 131 exclusões
  1. 2 1
      center/center.vue
  2. 10 5
      pages/login/login.vue
  3. 1 4
      shopping/order.vue
  4. 239 77
      shopping/orderdetails.vue
  5. 6 44
      utils/filter.js

+ 2 - 1
center/center.vue

@@ -5,7 +5,7 @@
 		</view>
 		<view class="base-info page-wrap u-flex u-row-between">
 			<view class="left u-flex">
-				<u-avatar :src="avatar" size="110rpx"></u-avatar>
+				<u-avatar :src="avatar||staticUrl+'/img/avatar.png'" size="110rpx"></u-avatar>
 				<view class="info">
 					<view class="name ellipsis-1">{{vuex_member_info.name}}</view>
 					<view class="level u-flex">
@@ -175,6 +175,7 @@ page{
 			margin-bottom: 10rpx;
 		}
 		.level{
+			width: fit-content;
 			background: linear-gradient(131deg, #FFF2DB 0%, #FFD9A5 100%);
 			border-radius: 2px;
 			font-size: 22rpx;

+ 10 - 5
pages/login/login.vue

@@ -218,10 +218,15 @@
 					if(res.code ===200) {
 						_this.userInfo = res.data;
 						this.$u.vuex('vuex_member_info', res.data);
-						this.$u.vuex('vuex_member_info.avatar', 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0');
-						this.$u.vuex('vuex_member_info.name', '微信用户');
-						this.updateMemberInfo();
-						
+						// this.$u.vuex('vuex_member_info.avatar', 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0');
+						if(!res.data.name){
+							this.$u.vuex('vuex_member_info.name', '微信用户');
+							this.updateMemberInfo();
+						}else{
+							uni.navigateTo({
+								url: '/pages/index/index'
+							})
+						}
 						// 下面需要获取微信头像和昵称
 						// if(res.data.name){
 						// 	_this.hasUserInfo = true;
@@ -241,7 +246,7 @@
 			updateMemberInfo(){
 				let params ={
 					id:this.userInfo.id,
-					avatar:'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
+					// avatar:'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
 					name:'微信用户'
 				};
 				this.$u.api.updateMemberInfo(params).then(res=>{

+ 1 - 4
shopping/order.vue

@@ -87,7 +87,7 @@
 				dataList:[{status:0},{status:1},{status:2},{status:3},{status:4}],
 				statusBtn:{
 					0:[{name:'取消订单',fun:'cancelOrder',class:''},{name:'去支付',fun:'pay',class:'red'}],
-					1:[{name:'申请退款',fun:'refund',class:'green'}],
+					1:[{name:'申请退款',fun:'refund',class:''}],
 					2:[{name:'查看物流',fun:'logistics',class:''},{name:'确认收货',fun:'confirmReceipt',class:'green'}],
 					3:[{name:'查看物流',fun:'logistics',class:''},{name:'评价',fun:'evaluate',class:'green'}],
 					// 4:[{name:'查看物流',fun:'logistics',class:''},{name:'评价',fun:'evaluate',class:'green'}],
@@ -205,9 +205,6 @@
 					id: id
 				});
 			},
-			pay(item){
-				console.log('pay',item);
-			},
 			clickEven(fun,item){
 				// console.log('fun',fun);
 				let funObj = {

+ 239 - 77
shopping/orderdetails.vue

@@ -7,87 +7,111 @@
 			 :safeAreaInsetTop="true"
 		>
 		</u-navbar>
-        <view class="addr page-wrap u-flex u-row-between">
-        	<view class="left">
-        		<view class="top">
-        			<text class="label" v-if="orderDetails.ifDefault">默认</text>{{orderDetails.address||''}}
-        		</view>
-        		<view class="center">{{orderDetails.receiveAdress}}</view>
-        		<view class="bottom">{{orderDetails.receiveName}} {{orderDetails.receivePhone}}</view>
-        	</view>
-        	<!-- <u-icon name="arrow-right" color="#676767" size="20" @click="selectAddr"></u-icon> -->
-        </view>
-		<!-- <view class="payway page-wrap u-flex u-row-between">
-			<view class="left">支付方式</view>
-			<view class="u-flex">
-				微信支付
-				<u-icon name="arrow-right" color="#676767" size="20"></u-icon>
-			</view>
-		</view> -->
-		<view class="order-product page-wrap">
-			<view class="product u-flex" v-for="(item,index) in orderDetails.detailList" :key="item.id">
-				<u--image :showLoading="true" :src="item.mainImg" width="180rpx" height="180rpx"></u--image>
-				<view class="text">
-					<view class="up">
-						<view class="name ellipsis-2">{{item.goodsName}}</view>
-						<view class="info">
-							{{item.specification}}
-							{{item.unit}}
-						</view>
-					</view>
-					<view class="down u-flex u-row-between">
-						<view class="left">
-							<text class="price">¥ <text class="price-num">{{item.price}}</text></text>
-						</view>
-						<u-number-box v-model="item.quantity" :disabled="true" @change="changeQuantity(index, $event)" integer></u-number-box>
+		<view class="page-wrap">
+			<view class="box distribution u-flex u-row-between" 
+			v-if="orderDetails.status>0"
+			@click="$u.route('/shopping/distribution', {orderId: orderDetails.id})">
+				<view class="left u-flex">
+					<u--image :showLoading="false" :src="staticUrl+'/img/car.png'" width="48rpx" height="48rpx"></u--image>
+					<view class="text">
+						<view class="status">{{orderDetails.detailList[0].status|filterDilevery}}</view>
+						<view>{{orderDetails.createTime}}</view>
 					</view>
 				</view>
+				<u-icon name="arrow-right" color="#676767" size="24rpx"></u-icon>
 			</view>
-		</view>
-<!-- 		<view class="page-wrap order-reduced">
-			<view class="reduced-item u-flex u-row-between u-border-bottom">
+			<view class="box addr u-flex u-row-between">
 				<view class="left">
-					<text>优惠券</text>
-					<text class="label">已选一张</text>
+					<view class="top">
+						<text class="label" v-if="orderDetails.ifDefault">默认</text>{{orderDetails.address||''}}
+					</view>
+					<view class="center">{{orderDetails.receiveAdress}}</view>
+					<view class="bottom">{{orderDetails.receiveName}} {{orderDetails.receivePhone}}</view>
 				</view>
-				<view class="right u-flex">
-					<text class="price red">-¥ <text class="price-num">1000</text></text>
+				<!-- <u-icon name="arrow-right" color="#676767" size="20" @click="selectAddr"></u-icon> -->
+			</view>
+			<!-- <view class="payway page-wrap u-flex u-row-between">
+				<view class="left">支付方式</view>
+				<view class="u-flex">
+					微信支付
 					<u-icon name="arrow-right" color="#676767" size="20"></u-icon>
 				</view>
+			</view> -->
+			<view class="box order-product">
+				<view class="product u-flex" v-for="(item,index) in orderDetails.detailList" :key="item.id">
+					<u--image :showLoading="true" :src="item.mainImg" width="180rpx" height="180rpx"></u--image>
+					<view class="text">
+						<view class="up">
+							<view class="name ellipsis-2">{{item.goodsName}}</view>
+							<view class="info">
+								{{item.specification}}
+								{{item.unit}}
+							</view>
+						</view>
+						<view class="down u-flex u-row-between">
+							<view class="left">
+								<text class="price">¥ <text class="price-num">{{item.price}}</text></text>
+							</view>
+							<u-number-box v-model="item.quantity" :disabled="true" @change="changeQuantity(index, $event)" integer></u-number-box>
+						</view>
+					</view>
+				</view>
 			</view>
-			<view class="reduced-item integral u-flex u-row-between">
-				<view class="left">
-					<text>积分</text>
-					<text class="num">3676</text>
-					<text class="tip">满1000可用</text>
+	<!-- 		<view class="page-wrap order-reduced">
+				<view class="reduced-item u-flex u-row-between u-border-bottom">
+					<view class="left">
+						<text>优惠券</text>
+						<text class="label">已选一张</text>
+					</view>
+					<view class="right u-flex">
+						<text class="price red">-¥ <text class="price-num">1000</text></text>
+						<u-icon name="arrow-right" color="#676767" size="20"></u-icon>
+					</view>
 				</view>
-				<view class="right u-flex">
-					<text class="price red" v-if="useIntegral">-¥ <text class="price-num">1000</text></text>
-					<u-checkbox-group @change="integralCheckboxChange">
-						<u-checkbox shape="circle" activeColor="#02AB35" name="integral" ></u-checkbox>
-					</u-checkbox-group>
+				<view class="reduced-item integral u-flex u-row-between">
+					<view class="left">
+						<text>积分</text>
+						<text class="num">3676</text>
+						<text class="tip">满1000可用</text>
+					</view>
+					<view class="right u-flex">
+						<text class="price red" v-if="useIntegral">-¥ <text class="price-num">1000</text></text>
+						<u-checkbox-group @change="integralCheckboxChange">
+							<u-checkbox shape="circle" activeColor="#02AB35" name="integral" ></u-checkbox>
+						</u-checkbox-group>
+					</view>
 				</view>
-			</view>
-		</view> -->
-		<view class="page-wrap total">
-			<view class="total-item u-flex u-row-between u-border-bottom">
-				<view class="left">
-					商品金额
+			</view> -->
+			<view class="box total">
+				<view class="total-item u-flex u-row-between u-border-bottom">
+					<view class="left">
+						商品金额
+					</view>
+					<view class="right red">
+						¥ {{orderDetails.originalOrderPrice}}
+					</view>
 				</view>
-				<view class="right red">
-					¥ {{orderDetails.originalOrderPrice}}
+				<view class="total-item u-flex u-row-between">
+					<view class="left">
+						运费
+						<!-- <text class="gray">总重:{{totalWeight}}</text> -->
+					</view>
+					<view class="right red">
+						<text v-if="orderDetails.originalFreightPrice">+ ¥ {{orderDetails.originalFreightPrice}}</text>
+						<text v-else>免运费</text>
+					</view>
 				</view>
 			</view>
-			<view class="total-item u-flex u-row-between">
-				<view class="left">
-					运费
-					<!-- <text class="gray">总重:{{totalWeight}}</text> -->
-				</view>
-				<view class="right red">
-					<text v-if="orderDetails.originalFreightPrice">+ ¥ {{orderDetails.originalFreightPrice}}</text>
-					<text v-else>免运费</text>
+			<view class="box order-info page-wrap" v-if="orderDetails.status>0">
+				<view class="order-info-item" v-for="(item,index) in orderInfo[orderDetails.status]" :key="index">
+					<text class="til">{{item.name}}</text>
+					<text class="con">
+						<text v-if="item.key=='payType'">{{orderDetails[item.key]|filterPayType}}</text>
+						<text v-else>{{orderDetails[item.key]}}</text>
+					</text>
 				</view>
 			</view>
+		
 		</view>
 		<view class="cart-bottom">
 			<view class="inner u-flex u-row-between">
@@ -122,24 +146,43 @@
 				dataList:[],
 				theAddr:{},
 				isDefaultAddr:false,
+				staticUrl:this.$commonConfig.staticUrl,
 				statusBtn:{
-					0:[{name:'取消订单',fun:'cancel ',class:'cancel'},{name:'去支付',fun:'pay',class:'red'}],
-					1:[{name:'申请退款',fun:'refund',class:'green'}],
+					0:[{name:'取消订单',fun:'cancelOrder',class:''},{name:'去支付',fun:'pay',class:'red'}],
+					1:[{name:'申请退款',fun:'refund',class:''}],
 					2:[{name:'查看物流',fun:'logistics',class:''},{name:'确认收货',fun:'confirmReceipt',class:'green'}],
 					3:[{name:'查看物流',fun:'logistics',class:''},{name:'评价',fun:'evaluate',class:'green'}],
 					// 4:[{name:'查看物流',fun:'logistics',class:''},{name:'评价',fun:'evaluate',class:'green'}],
-					5:[{name:'查看退款',fun:'viewRefund',class:'green'}],
+					5:[{name:'查看退款',fun:'viewRefund',class:''}],
 					// 6:[{name:'查看退款',fun:'viewRefund',class:'green'}],
-					// 7:[{name:'查看退款',fun:'viewRefund',class:'green'}]
+					7:[{name:'查看退款',fun:'viewRefund',class:''}]
+				},
+				orderInfo:{
+					0:[],
+					1:[{name:'订单编号',key:'orderNum'},{name:'下单时间',key:'createTime'},{name:'支付方式',key:'payType'},{name:'支付时间',key:'payTime'}],
+					2:[{name:'订单编号',key:'orderNum'},{name:'下单时间',key:'createTime'},{name:'支付方式',key:'payType'},{name:'支付时间',key:'payTime'}],
+					3:[{name:'订单编号',key:'orderNum'},{name:'下单时间',key:'createTime'},{name:'支付方式',key:'payType'},{name:'支付时间',key:'payTime'}],
+					4:[{name:'订单编号',key:'orderNum'},{name:'下单时间',key:'createTime'},{name:'支付方式',key:'payType'},{name:'支付时间',key:'payTime'}],
+					5:[{name:'订单编号',key:'orderNum'},{name:'下单时间',key:'createTime'},{name:'支付方式',key:'payType'},{name:'支付时间',key:'payTime'}],
+					6:[{name:'订单编号',key:'orderNum'},{name:'下单时间',key:'createTime'},{name:'支付方式',key:'payType'},{name:'支付时间',key:'payTime'}],
+					7:[{name:'订单编号',key:'orderNum'},{name:'下单时间',key:'createTime'},{name:'支付方式',key:'payType'},{name:'支付时间',key:'payTime'}],
 				}
             }
         },
 		onLoad(page) {
-			console.log('page',page);
+			// console.log('page',page);
 			this.id = page.id;
-			this.getOrderDetails(this.id);
 		},
 		onShow() {
+			this.getOrderDetails(this.id);
+		},
+		computed:{
+			payType(){
+				return function(value){
+					let payTypeList = ['', '微信', '余额', '积分']
+					return '-' + payTypeList[value]
+				}
+			}
 		},
         methods: {
 			leftClick(){
@@ -156,8 +199,15 @@
 			clickEven(fun,item){
 				// console.log('fun',fun);
 				let funObj = {
-				  'pay': this.pay
+				  pay: this.pay,
+				  logistics:this.logistics,
+				  evaluate:this.evaluate,
+				  refund:this.refund,
+				  cancelOrder:this.cancelOrder,
+				  viewRefund:this.viewRefund,
+				  confirmReceipt:this.confirmReceipt
 				};
+				// console.log('funObj[fun]',funObj[fun]);
 				if (fun in funObj) {
 				  funObj[fun](item);
 				}
@@ -165,11 +215,82 @@
 			pay(item){
 				console.log('pay',item);
 				uni.$u.route('/shopping/pay', {
-					orderId: this.orderDetails.id,
+					orderId: item.id,
 					// openid: that.vuex_wechatOpenid,
-					payAmount:this.orderDetails.orderPrice
+					payAmount:item.orderPrice
 				});
 			},
+			logistics(item){
+				// console.log('logistics',item);
+				uni.$u.route('/shopping/distribution', {
+					orderId: item.id
+				});
+			},
+			evaluate(item){
+				// console.log('logistics',item);
+				uni.$u.route('/shopping/evaluate', {
+					id: item.id
+				});
+			},
+			refund(item){
+				// console.log('logistics',item);
+				uni.$u.route('/shopping/refund', {
+					id: item.id
+				});
+			},
+			cancelOrder(item){
+				let that = this;
+				uni.showModal({
+				    title: '提示',
+				    content: '确认取消吗!',
+				    success: res => {
+				        if (res.confirm) {
+				            this.$u.api.cancelOrder({orderId:item.id}).then(res=>{
+				            	this.$refs.uToast.show({
+				            		message:res.msg,
+				            		complete() {
+				            			that.getOrderDetails(that.id);
+				            		}
+				            	});
+				            	// uni.$u.toast(res.msg);
+				            	console.log('res',res.data);
+				            }).catch(err=>{
+				            	console.log('cancelOrder',err);
+				            })
+				        }
+				    }
+				});
+				// console.log('logistics',item);
+				
+			},
+			viewRefund(item){
+				uni.$u.route('/shopping/viewRefund', {
+					orderId: item.id
+				});
+			},
+			confirmReceipt(item){
+				let that = this;
+				uni.showModal({
+				    title: '提示',
+				    content: '确认收货吗!',
+				    success: res => {
+				        if (res.confirm) {
+				            this.$u.api.confirmReceipt({orderId:item.id}).then(res=>{
+								uni.showToast({
+									title:res.msg,
+									duration:2000,
+									complete() {
+										that.getOrderDetails(that.id);
+									}
+								});
+				            	console.log('res',res.data);
+				            }).catch(err=>{
+				            	console.log('confirmReceipt',err);
+				            })
+				        }
+				    }
+				})
+			}
         }
     }
 </script>
@@ -179,9 +300,11 @@
 	}
 </style>
 <style lang="scss" scoped>
-.page-wrap{
-	background-color: #fff;
+.box{
 	margin-bottom: 20rpx;
+	background-color: #fff;
+	border-radius: 8rpx;
+	padding: 20rpx;
 }
 .addr{
 	.top{
@@ -288,6 +411,11 @@
 				background-color: #FF3C3F;
 				color: #fff;
 			}
+			&.green{
+				border-color: #00A447;
+				background-color: #00A447;
+				color: #fff;
+			}
 		}
 	}
 }
@@ -303,4 +431,38 @@
 		}
 	}
 }
+.order-info{
+	.order-info-item{
+		font-size: 30rpx;
+		font-weight: 400;
+		color: #333333;
+		line-height: 42rpx;
+		padding: 30rpx 20rpx;
+		&:not(:last-child){
+			border-bottom: 0.5px solid #eee;
+		}
+		.til{
+			font-size: 24rpx;
+			font-weight: 400;
+			color: #999999;
+			margin-right: 90rpx;
+		}
+	}
+}
+.distribution{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #00A447;
+	line-height: 33rpx;	
+	.text{
+		margin-left: 16rpx;
+	}
+	.status{
+		margin-bottom: 10rpx;
+		font-size: 30rpx;
+		font-weight: 600;
+		color: #00A447;
+		line-height: 38rpx;
+	}
+}
 </style>

+ 6 - 44
utils/filter.js

@@ -19,50 +19,6 @@ Vue.filter("timestamp", function(link) {
 	return link + '?t=' + new Date().getTime();
 });
 
-// 时间去掉时分秒
-Vue.filter("timeSplit", function(time) {	
-	if(time) {
-		return time.indexOf(" ") > -1 ?  time.split(" ")[0] : time
-	} else {
-		return ""
-	}
-});
-
-// 结账方式
-Vue.filter("filterPayWay", function(val) {	
-	if(val == 0){
-		return '现销';
-	}else if(val == 1){
-		return '赊销';
-	}else {
-	  return '未知';
-	}
-});
-
-
-// 订单类型
-Vue.filter("filterOrderType", function(val) {	
-	if(val == 0){
-		return '普通';
-	}else if(val == 1){
-		return '换货销售';
-	}else {
-	  return '未知';
-	}
-});
-// 收货方式
-Vue.filter("filterReceiveWay", function(val) {	
-	if(val == 0){
-		return '物流';
-	}else if(val == 1){
-		return '自提';
-	}else if(val == 2){
-		return '顺丰直发';
-	}else {
-	  return '未知';
-	}
-});
-
 // 保留两位小数,自动补充零
 Vue.filter("filterToFixed", function(val) {	
  var value=Math.round(parseFloat(val)*100)/100;
@@ -86,6 +42,12 @@ Vue.filter("filterOrderState", function(val) {
 	return orderList[val]
 });
 
+// 结账方式
+Vue.filter("filterPayType", function(val) {	
+	let payTypeList = ['', '微信', '余额', '积分'];
+	return payTypeList[val]
+});
+
 // 物流状态
 Vue.filter("filterDilevery", function(val) {	
 	let dileveryList = ['下单', '揽件', '运输中', '派件中', '签收', '退回', '拒签']