Pārlūkot izejas kodu

大牌点餐bug修复

wenjie 7 mēneši atpakaļ
vecāks
revīzija
367353f7ed

+ 2 - 2
login/login/login.vue

@@ -127,7 +127,6 @@
 				getPhoneNum({
 					code: val.detail.code
 				}).then(data => {
-					console.log(11111111,data);
 					if(data.msg != '成功'){
 						clear({type:1}).then(()=>{
 							this.decryptPhoneNumber(val)
@@ -144,12 +143,12 @@
 							uni.login({
 								provider: 'weixin',
 								success(r) {
+									// return console.log(r.code);
 									wechatLogin({
 										jsCode: r.code,
 										phone: data.content,
 										loginToken: msg.content
 									}).then(res => {
-										uni.hideLoading()
 										if(res.state == 'Success'){
 											uni.setStorageSync('isAuth', res.content
 												.isAuth) //登录状态
@@ -159,6 +158,7 @@
 												.refreshToken) //refreshToken
 												
 											getUserDetail().then(res => {
+												uni.hideLoading()
 												uni.setStorageSync('userInfo', JSON.stringify(res.content))
 													if(that.redirect){
 														console.log(that.scene);

+ 1 - 1
login/login/otherLogin.vue

@@ -195,7 +195,6 @@
 								userInfo.jsCode = r.code
 								if(res.state != 'Success') return
 								validLogin(userInfo).then(res=>{
-									uni.hideLoading()
 									if(res.state == 'Success'){
 										uni.setStorageSync('isAuth', res.content
 											.isAuth) //登录状态
@@ -204,6 +203,7 @@
 										uni.setStorageSync('refreshToken', res.content
 											.refreshToken) //refreshToken
 										getUserDetail().then(res => {
+											uni.hideLoading()
 											uni.setStorageSync('userInfo', JSON.stringify(res.content))
 											if(that.redirect){
 												uni.reLaunch({

+ 20 - 13
my/order/foodOrder/detail.vue

@@ -59,21 +59,22 @@
 				</view>
 			</view>
 			
-			<view class="content code-box"  v-if="info.goodsList[0].goodsState == 'USED'||(info.goodsList[0].goodsState == 'REFUNDED'&&(info.goodsList[0].extend.sync.refundProducts.length!=info.goodsList[0].goodsInfo.products.length))">
-			<!-- <view class="content code-box" v-if="info.goodsList[0].goodsState == 'WAIT_USE'"> -->
+<!-- 			<view class="content code-box"  v-if="info.goodsList[0].goodsState == 'USED'||((info.goodsList[0].goodsState == 'REFUNDED'||info.goodsList[0].goodsState == 'APPLY_REFUNDING'||info.goodsList[0].goodsState == 'APPLY_REFUND')&&(info.goodsList[0].extend.sync.refundProducts.length!=info.goodsList[0].goodsInfo.products.length))"> -->
+			<view class="content code-box" v-if="info.goodsList[0].goodsState == 'USED'||info.goodsList[0].goodsState == 'REFUNDED'||info.goodsList[0].goodsState == 'APPLY_REFUNDING'||info.goodsList[0].goodsState == 'APPLY_REFUND'">
 					<view class="title">
 						取餐码
 					</view>
 					
-					<view class="qrCodes">
-						{{info.goodsList[0].extend.sync.qrCodes || info.goodsList[0].extend.sync.codes}}
-					</view>
 					
-					<!-- <uqrcode class="qrcode" ref="uqrcode" type="2d" auto canvas-id="qrcode" :value="codeData" :loading="loading" :options="{ margin: 20 }">
+					
+					<uqrcode v-if="info.shopInfo.ot == 'RXKF'" class="qrcode" ref="uqrcode" type="2d" auto canvas-id="qrcode" :value="codeData" :loading="loading" :options="{ margin: 20 }">
 						 <template v-slot:loading>
 							<text style="color: black;">拼命加载中...</text>
 						  </template>
-					</uqrcode> -->
+					</uqrcode>
+					<view class="qrCodes">
+						{{info.goodsList[0].extend.sync.codes}}
+					</view>
 			</view>
 			
 			
@@ -164,7 +165,7 @@
 	export default {
 		data() {
 			return {
-				codeData:'123',
+				codeData:'test',
 				show:false,
 				loading:false,
 				pageLoading:true,
@@ -286,7 +287,7 @@
 				payDetails(orderNo).then(res=>{
 					this.pageLoading = false
 					this.info = res.content
-		
+					this.codeData = res.content.goodsList[0].extend.sync.qrCodes
 					if(!this.info.goodsList[0].refundLog){
 						this.info.goodsList[0].refundLog = {}
 					}
@@ -563,13 +564,19 @@
 		}
 		
 		.qrCodes{
-			font-size: 36rpx;
-			font-weight: bold;
+			// font-size: 36rpx;
+			// font-weight: bold;
+			// text-align: center;
+			// color: $uni-color-primary;
+			// padding: 30rpx 0;
+			font-size: 28rpx;
+			color: #222222;
 			text-align: center;
-			color: $uni-color-primary;
-			padding: 30rpx 0;
+			margin-top: 20rpx;
 		}
 		
+		
+		
 	}
 	
 	.input-box{

+ 1 - 1
orderFood/pay.vue

@@ -149,7 +149,7 @@
 				address:'',
 				total:0,
 				createQuery:{
-					ot:'Kfc',
+					ot:uni.getStorageSync('ot'),
 				  "channel": "ZhongShu",
 				  "cityId": 0,
 				  "eatType": 0,

+ 72 - 23
orderFood/shopDetail.vue

@@ -82,7 +82,7 @@
 		
 		
 		<!-- 购物车 -->
-		<u-popup :show="show" round="32rpx" mode="bottom" @close="show = false">
+		<u-popup :show="show" round="32rpx" mode="bottom" @close="close('show')">
 			<view class="popup-title-box" >
 				<view class="title">
 					已选商品
@@ -157,7 +157,7 @@
 		
 		
 		<!-- 商品详情 -->
-		<u-popup :show="show2" round="32rpx" mode="bottom" @close="show2 = false">
+		<u-popup :show="show2" round="32rpx" mode="bottom" @close="close('show2')">
 			<view class="popup-goodsDetail">
 				<view class="box">
 					
@@ -170,13 +170,13 @@
 							{{goodsInfo.product_description}}
 						</view>
 						
-						<view class="choose-box" v-if="ot == 'NXDC'">
+						<view class="choose-box" v-if="goodsInfo.details&&ot == 'NXDC'">
 							<view class="choose-item" v-for="item in goodsInfo.details.spu_specs" :key="item.code">
 								<view class="choose-title">
 									{{item.name}}
 								</view>
 								<view class="item-box">
-									<view class="item" :class="[i.code == chooseInfo[item.code].code?'active':'']" v-for="i in item.values" :key="i.code" @click="choose(i,item.code)">
+									<view class="item" :class="[i.code == chooseInfo[item.code].code?'active':'',isDisable(i,'NXDC',item)?'disable':'']" v-for="i in item.values" :key="i.code" @click="choose(i,item.code)">
 										{{i.name}} {{i.price?`¥${i.price}`:''}}
 									</view>
 								</view>
@@ -189,7 +189,7 @@
 									{{item.name}}
 								</view>
 								<view class="item-box">
-									<view class="item" :class="[i.id == chooseInfo[item.name+'-'+item.id].id?'active':'']" v-for="i in item.sku_infos" :key="i.id" @click="()=>choose(i,item.name+'-'+item.id)">
+									<view class="item" :class="[i.id == chooseInfo[item.name+'-'+item.id].id?'active':'',i.disable?'disable':'']" v-for="i in item.sku_infos" :key="i.id" @click="()=>choose(i,item.name+'-'+item.id)">
 										{{i.name}} {{i.price?`¥${i.price}`:''}}
 									</view>
 								</view>
@@ -214,21 +214,21 @@
 									{{item.name}}
 								</view>
 								<view class="item-box">
-									<view class="item" :class="[i.id == chooseInfo[item.id].id?'active':'']" v-for="i in item.sku_infos" :key="i.id" @click="()=>choose(i,item.id)">
+									<view class="item" :class="[i.id == chooseInfo[item.id].id?'active':'',i.disable?'disable':'']" v-for="i in item.sku_infos" :key="i.id" @click="()=>choose(i,item.id)">
 										{{i.name}} {{i.price?`¥${i.price}`:''}}
 									</view>
 								</view>
 							</view>
 						</view>							
 						
-						<view class="choose-box" v-else-if="ot == 'XC'">
-							<view class="choose-item" v-for="item in goodsInfo.details.specifications" :key="item.code">
+						<view class="choose-box" v-else-if="goodsInfo.details&&goodsInfo.details.specifications&&ot == 'XC'">
+							<view class="choose-item" v-for="item in goodsInfo.details.specifications" :key="item.id">
 								<view class="choose-title">
 									{{item.name}}
 								</view>
 								<view class="item-box">
 									<!-- ,isDisable(i.id,'XC')?'disable':'' -->
-									<view class="item " :class="[i.id == chooseInfo[item.id].id?'active':'']" v-for="i in item.values" :key="i.id" @click="()=>choose(i,item.id,item)">
+									<view class="item " :class="[i.id == chooseInfo[item.id].id?'active':'',isDisable(i.id,'XC')?'disable':'']" v-for="i in item.values" :key="i.id" @click="choose(i,item.id,item)">
 										{{i.name}} {{i.price?`¥${i.price}`:''}}
 									</view>
 								</view>
@@ -349,7 +349,8 @@
 				itemPrice:{//弹窗内商品价格
 					price:0,
 					oldPrice:0
-				}
+				},
+				test:false
 			};
 		},
 		computed: {
@@ -369,6 +370,7 @@
 			},
 			// 选择的规格文字 同时计算当前选择的价格
 			config(){
+				console.log('config');
 				let str = ''
 				for (let key in this.chooseInfo) {
 					if(this.ot == 'KD'){
@@ -384,7 +386,7 @@
 						price,
 						oldPrice
 					}
-				}else if(this.goodsInfo.details&&this.goodsInfo.details.specifications&&this.ot=='XC'){
+				}else if(this.ot=='XC'&&this.goodsInfo.details&&this.goodsInfo.details.specifications){
 					let addPrice = 0
 					for (let key in this.chooseInfo) {
 						addPrice += this.chooseInfo[key].price
@@ -426,7 +428,8 @@
 			}
 		},
 		methods: {
-			isDisable(item,type){
+			isDisable(item,type,data){
+				console.log('isDisable');
 				if(type == 'KD'){
 					let flag = true
 					this.goodsInfo.skuCombinList.map(skuItem=>{
@@ -439,7 +442,6 @@
 					return flag
 				}else if(type == 'XC'){
 					let flag = false
-						console.log('pppppppp',this.chooseInfo);
 					for (let key in this.chooseInfo) {
 						if(this.chooseInfo[key].exclusives.length){
 							this.chooseInfo[key].exclusives.map(i=>{
@@ -452,6 +454,27 @@
 						}
 					}
 					return flag
+				}else if(type == 'NXDC'){
+					let flag = true
+					let cur = {}
+					for (let key in this.chooseInfo) {
+						if(data.code == key){
+							cur[key] = item.code
+						}else{
+							cur[key] = this.chooseInfo[key].code
+						}
+					}
+					 this.goodsInfo.details.sku_infos.map(item=>{
+							let obj = {}
+							item.specs.map(i=>{
+								obj[i.code] = i.spec_code
+								
+							})
+							if(this.areObjectsEqual(cur,obj)){
+								flag = false
+							}
+					})
+					return flag
 				}
 			},
 			// 选择规格
@@ -459,10 +482,8 @@
 				console.log(item,key,data,this.chooseInfo);
 				if(this.ot == 'XC'){
 					if(this.chooseInfo[key]&&this.chooseInfo[key].id == item.id &&!data.mandatory){
-						console.log(1111);
 						this.$delete(this.chooseInfo,key)
 					}else{
-						console.log(2222);
 						this.$set(this.chooseInfo,key,item)
 					}
 				}else if(this.ot == 'MDL'){
@@ -540,9 +561,11 @@
 			},
 			// 购物车内添加数量 商品添加数量 选择规格时不走这里 但是选择规格的购物车内数量操作走这里
 			add(item,num,data={},idx){//item:当前操作item num:增加或者减少 data:当前item的上层栏目,idx:购物车内当前操作商品index 方便删除
+				console.log('add',item);
 				// 如果需要选择规格
 				if(data.childClassList) return this.handleItem(item,data)
-				
+				// 影响逻辑太大 暂时不改
+				// if(item.menuFlag == "C") return this.handleItem(item,data)
 				// 肯德基
 				if(this.ot == 'Kfc'){
 					if(this.carList.some(i=>item.productId == i.productId)){
@@ -565,7 +588,7 @@
 						}
 						this.carList.push(obj)
 					}
-				// }else if(this.ot == 'NXDC'){//奈雪的茶 购物车内没有的商品不会从这里添加 所以只处理有的情况
+				// }else if(this.ot == 'NXDC'){
 				}else{
 					if(this.carList.some((i,d)=>item.productId == i.productId)){
 						this.carList.forEach((row,index)=>{
@@ -576,6 +599,15 @@
 								}
 							}
 						})
+					}else{//单品直接添加
+					console.log(2222);
+						this.chooseInfo = {}
+						this.itemPrice = {
+							price:this.item.priceHead,
+							oldPrice:this.item.price
+						}
+						this.item = item
+						this.handleAdd()
 					}
 				}
 			},
@@ -840,6 +872,9 @@
 			 }
 		
 			 return true;
+		   },
+		   close(key){
+			   this[key] = false
 		   },
 			handleItem(i,item){
 				console.log(item);
@@ -856,7 +891,6 @@
 								this.$set(this.chooseInfo,item.code,item.values[0])
 							})
 						}else if(this.goodsInfo.details&&this.goodsInfo.details.specifications&&this.ot=='XC'){//喜茶
-						console.log('xccccc',this.goodsInfo.details);
 							this.goodsInfo.details.specifications.map(item=>{
 								item.values.map(i=>{
 									if(i.checked){
@@ -866,16 +900,32 @@
 							})
 						}else if(this.goodsInfo.details&&this.goodsInfo.details.optional&&this.goodsInfo.details.optional.length&&this.ot=='XBK'){//星巴克
 							this.goodsInfo.details.optional.map(item=>{
-								this.$set(this.chooseInfo,item.id,item.sku_infos[0])
+								item.sku_infos.map(i=>{
+									if(i.checked){
+									this.$set(this.chooseInfo,item.id,i)
+									}
+								})
+								// this.$set(this.chooseInfo,item.id,item.sku_infos[0])
 							})
 						}else if(this.goodsInfo.details&&this.goodsInfo.details.optional&&this.goodsInfo.details.optional.length){//麦当劳
 							this.goodsInfo.details.optional.map(item=>{
+								item.sku_infos.map(i=>{
+									if(i.checked){
+									this.$set(this.chooseInfo,item.name+'-'+item.id,i)
+									}
+								})
+								
 								// id可能相同 所以加上类目的name 方便创建订单时能取到id
-								this.$set(this.chooseInfo,item.name+'-'+item.id,item.sku_infos[0])
+								// this.$set(this.chooseInfo,item.name+'-'+item.id,item.sku_infos[0])
 							})
 						}else if(this.goodsInfo.details&&this.goodsInfo.details.specifications&&this.ot=='RXKF'){//瑞幸
 							this.goodsInfo.details.specifications.map(item=>{
-								this.$set(this.chooseInfo,item.name,item.ingredients[0])
+								item.ingredients.map(i=>{
+									if(i.checked){
+										this.$set(this.chooseInfo,item.name,i)
+									}
+								})
+								// this.$set(this.chooseInfo,item.name,item.ingredients[0])
 							})
 						}else if(this.goodsInfo.firstSku&&this.goodsInfo.firstSku.skusSpecs&&this.ot=='KD'){//库迪
 							this.goodsInfo.product_img = this.goodsInfo.detailImgUrl
@@ -925,7 +975,6 @@
 						this.$nextTick(()=>{
 							let query = uni.createSelectorQuery().in(this);
 							query.selectAll('.section-name').boundingClientRect(data=>{
-								console.log(data);
 								this.topList =data.map(item=>{
 									return item.top
 								})
@@ -1040,7 +1089,6 @@
 			   const openSecondsTotal = openHours * 3600 + openMinutes * 60 + openSeconds;
 			   const closeSecondsTotal = closeHours * 3600 + closeMinutes * 60 + closeSeconds;
 				
-				console.log(openSecondsTotal,closeSecondsTotal,nowSecondsTotal);
 			  if ( openSecondsTotal <nowSecondsTotal && nowSecondsTotal<closeSecondsTotal  ) {
 			    return true
 			  } else {
@@ -1443,6 +1491,7 @@
 						}
 						.item.disable{
 							color: #AAAAAA;
+							pointer-events: none;
 						}
 					}
 				}

+ 10 - 0
orderFood/shopList.vue

@@ -1,5 +1,8 @@
 <template>
 	<view class="shopList">
+		<view class="sub-title">
+			自助餐厅,不支持外卖
+		</view>
 		<view class="step-box">
 			<view class="step-item" v-for="(item,index) in iconList" :key="index">
 				<view class="step-content">
@@ -174,6 +177,13 @@
 .shopList{
 	background: #F9F9F9;
 	min-height: 100vh;
+	.sub-title{
+		font-weight: 800;
+		font-size: 32rpx;
+		color: #222222;
+		background: #FFFFFF;
+		text-align: center;
+	}
 	.step-box{
 		display: flex;
 		justify-content: space-between;

+ 2 - 1
utils/request.js

@@ -17,7 +17,8 @@ export let request = (options) => {
 					method: options.method || 'GET',
 					data: options.data || {},
 					header: {
-						accessToken: uni.getStorageSync('token')
+						accessToken: uni.getStorageSync('token'),
+						code:1
 					},
 					success: (res) => {
 						if (res.statusCode !== 200) {