瀏覽代碼

Merge branch 'master' of http://1.14.104.71:10880/liujiaxin/baiyuchengpin.git

# Conflicts:
#	pages/user/index.vue

Signed-off-by: 李妹妹 <1639016684@qq.com>
李妹妹 2 周之前
父節點
當前提交
dda8c245f3

+ 361 - 270
pages/shopping/confirmOrder.vue

@@ -10,7 +10,8 @@
 					</vie>
 				</view>
 				<view class="arrow-box">
-					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/arrow_gray.png" mode=""></image>
+					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/arrow_gray.png"
+						mode=""></image>
 				</view>
 			</view>
 			<view class="address-box" v-if="address!=null" @click="openAddress()">
@@ -24,7 +25,8 @@
 					</view>
 				</view>
 				<view class="arrow-box">
-					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/arrow_gray.png" mode=""></image>
+					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/arrow_gray.png"
+						mode=""></image>
 				</view>
 			</view>
 			<!-- 产品列表 -->
@@ -62,12 +64,14 @@
 			<!-- 积分 -->
 			<view class="points">
 				<view class="left">
-					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/points.png" mode=""></image>
+					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/points.png" mode="">
+					</image>
 					<text class="text">可用积分</text>
 				</view>
 				<view class="right">
 					<text class="text">{{price.usedIntegral}}积分</text>
-					<evan-switch @change="integralChange" v-model="checked" activeColor="#2BC7B9" inactiveColor="rgba(0, 0, 0, 0.1)"></evan-switch>
+					<evan-switch @change="integralChange" v-model="checked" activeColor="#2BC7B9"
+						inactiveColor="rgba(0, 0, 0, 0.1)"></evan-switch>
 				</view>
 			</view>
 			<view class="points" @click="openCoupon()">
@@ -76,7 +80,8 @@
 				</view>
 				<view class="right">
 					<text class="text">{{couponText}}</text>
-					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/arrow4.png" mode=""></image>
+					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/arrow4.png" mode="">
+					</image>
 				</view>
 			</view>
 			<view class="points">
@@ -84,7 +89,8 @@
 					<text class="text">运费</text>
 				</view>
 				<view class="right">
-					<text class="text">{{price.payPostage==null||price.payPostage==0?'免运费':price.payPostage.toFixed(2)}}</text>
+					<text
+						class="text">{{price.payPostage==null||price.payPostage==0?'免运费':price.payPostage.toFixed(2)}}</text>
 				</view>
 			</view>
 			<!-- 备注 -->
@@ -105,48 +111,61 @@
 				<view class="btn" @click="submitOrder">提交订单</view>
 			</view>
 		</view>
-		<popupBottom ref="popup" :visible.sync="couponVisible" title=" " bgColor="#f5f5f5" radius="30"    maxHeight="60%">
-		     <view class="coupon" style="height:650rpx;">
-				 <div class="coupon-list" v-if="couponsList.length > 0">
-				   <div class="item acea-row row-center-wrapper"  v-for="(item, index) in couponsList" :key="index">
-				     <div class="money" >
-				       <image v-if="item.status==0" class="img" src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/coupon1.png" mode="widthFix"></image>
-				 	  <image v-if="item.status!=0" class="img" src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/coupon2.png" mode="widthFix"></image>
-				 	  <div style="z-index: 999;">
-				         ¥<span class="num">{{ item.couponPrice }}</span>
-				       </div>
-				       <div class="pic-num"  >满{{ item.useMinPrice }}元可用</div>
-				     </div>
-				     <div class="text">
-				       <div class="condition line1">
-				         {{ item.couponTitle }}
-				       </div>
-				       <div class="data acea-row row-between-wrapper">
-							<div >{{ item.limitTime }}到期</div>
-							<div class="bnt bg-color-red" @click="couponSelect(item)"  >选择</div>
-				       </div>
-				     </div>
-				   </div>
-				 </div>
-				 <view v-if="couponsList.length == 0" class="no-data-box" >
-				 	<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/no_data.png" mode="aspectFit"></image>
-				 	<view class="empty-title">暂无数据</view>
-				 </view>
-			 </view>
-			 
+		<popupBottom ref="popup" :visible.sync="couponVisible" title=" " bgColor="#f5f5f5" radius="30" maxHeight="60%">
+			<view class="coupon" style="height:650rpx;">
+				<div class="coupon-list" v-if="couponsList.length > 0">
+					<div class="item acea-row row-center-wrapper" v-for="(item, index) in couponsList" :key="index">
+						<div class="money">
+							<image v-if="item.status==0" class="img"
+								src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/coupon1.png"
+								mode="widthFix"></image>
+							<image v-if="item.status!=0" class="img"
+								src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/coupon2.png"
+								mode="widthFix"></image>
+							<div style="z-index: 999;">
+								¥<span class="num">{{ item.couponPrice }}</span>
+							</div>
+							<div class="pic-num">满{{ item.useMinPrice }}元可用</div>
+						</div>
+						<div class="text">
+							<div class="condition line1">
+								{{ item.couponTitle }}
+							</div>
+							<div class="data acea-row row-between-wrapper">
+								<div>{{ item.limitTime }}到期</div>
+								<div class="bnt bg-color-red" @click="couponSelect(item)">选择</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<view v-if="couponsList.length == 0" class="no-data-box">
+					<image src="https://jnlzjk-1323137866.cos.ap-chongqing.myqcloud.com/shop/images/no_data.png"
+						mode="aspectFit"></image>
+					<view class="empty-title">暂无数据</view>
+				</view>
+			</view>
+
 		</popupBottom>
 	</view>
 </template>
 
 <script>
-	import {getWeixinOrderTemps} from '@/api/common'
-	
-	import {confirm,computed,create} from '@/api/storeOrder'
-	import { getMyEnableCouponList } from '@/api/coupon'
-	 
+	import {
+		getWeixinOrderTemps
+	} from '@/api/common'
+
+	import {
+		confirm,
+		computed,
+		create
+	} from '@/api/storeOrder'
+	import {
+		getMyEnableCouponList
+	} from '@/api/coupon'
+
 	import EvanSwitch from '@/components/evan-switch/evan-switch.vue'
 	import popupBottom from '@/components/px-popup-bottom/px-popup-bottom.vue'
-	
+
 	export default {
 		components: {
 			EvanSwitch,
@@ -154,45 +173,45 @@
 		},
 		data() {
 			return {
-				temps:[],
-				couponUserId:null,
-				couponText:"请选择",
-				couponsList:[],
-				couponVisible:false,
-				price:{
-					payPrice:0,
-					totalPostage:0,
-					usedIntegral:0,
-					totalPrice:0.00,
+				temps: [],
+				couponUserId: null,
+				couponText: "请选择",
+				couponsList: [],
+				couponVisible: false,
+				price: {
+					payPrice: 0,
+					totalPostage: 0,
+					usedIntegral: 0,
+					totalPrice: 0.00,
 				},
-				address:null,
-				carts:[],
+				address: null,
+				carts: [],
 				checked: false,
-				type:null,
-				cartIds:null,
-				storeId:null,
-				form:{
-					useIntegral:0,
-					orderKey:null,
-					addressId:null,
-					mark:null,
-					companyId:null,
-					companyUserId:null
+				type: null,
+				cartIds: null,
+				storeId: null,
+				form: {
+					useIntegral: 0,
+					orderKey: null,
+					addressId: null,
+					mark: null,
+					companyId: null,
+					companyUserId: null
 				}
-				
+
 			}
 		},
 		onLoad(option) {
-			console.log("确认订单option是",option)
-			this.form.companyId=option.companyId;
-			this.form.companyUserId=option.companyUserId;
-			this.cartIds=option.cartIds;
-			this.type=option.type;
-			this.storeId=option.storeId;
+			console.log("确认订单option是", option)
+			this.form.companyId = option.companyId;
+			this.form.companyUserId = option.companyUserId;
+			this.cartIds = option.cartIds;
+			this.type = option.type;
+			this.storeId = option.storeId;
 			this.confirm();
 			uni.$on('updateAddress', (e) => {
-				this.address=e;
-				this.form.addressId=e.id;
+				this.address = e;
+				this.form.addressId = e.id;
 				this.computed();
 			})
 			this.getWeixinOrderTemps();
@@ -201,56 +220,62 @@
 			uni.$off('updateAddress')
 		},
 		methods: {
-			getWeixinOrderTemps:function(){
+			getWeixinOrderTemps: function() {
 				getWeixinOrderTemps().then(
 					res => {
-						if(res.code==200){
-							this.temps=res.temp
+						if (res.code == 200) {
+							this.temps = res.temp
 							console.log(this.temps)
-						}else{
-							 
+						} else {
+
 						}
 					},
 					rej => {}
 				);
 			},
-			couponSelect(item){
-				this.couponText="-¥"+item.couponPrice.toFixed(2);
-				this.couponUserId=item.id;
-				this.couponVisible=false;
+			couponSelect(item) {
+				this.couponText = "-¥" + item.couponPrice.toFixed(2);
+				this.couponUserId = item.id;
+				this.couponVisible = false;
 				this.computed();
 			},
-			openCoupon(){
+			openCoupon() {
 				let that = this;
-				var data={couponType:0,useMinPrice:this.price.payPrice};
+				var data = {
+					couponType: 0,
+					useMinPrice: this.price.payPrice
+				};
 				getMyEnableCouponList(data).then(res => {
-				  this.couponVisible=true;
-				  that.couponsList = res.data
+					this.couponVisible = true;
+					that.couponsList = res.data
 				})
 			},
-			integralChange(e){
+			integralChange(e) {
 				console.log(e)
-				this.form.useIntegral=e?1:0
+				this.form.useIntegral = e ? 1 : 0
 				this.computed()
 			},
-			confirm(item){
-				let data = {type:this.type,cartIds:this.cartIds};
+			confirm(item) {
+				let data = {
+					type: this.type,
+					cartIds: this.cartIds
+				};
 				confirm(data).then(
 					res => {
-						if(res.code==200){
-							 
-							 this.carts=res.carts;
-							 this.form.orderKey=res.orderKey;
-							 if(res.address!=null){
-								 this.form.addressId=res.address.id;
-								 this.address=res.address;
-								 console.log(this.form.addreddId)
-							 }
-							 this.computed()
-						}else{
-							
+						if (res.code == 200) {
+
+							this.carts = res.carts;
+							this.form.orderKey = res.orderKey;
+							if (res.address != null) {
+								this.form.addressId = res.address.id;
+								this.address = res.address;
+								console.log(this.form.addreddId)
+							}
+							this.computed()
+						} else {
+
 							uni.showToast({
-								icon:'none',
+								icon: 'none',
 								title: res.msg,
 							});
 						}
@@ -258,34 +283,38 @@
 					rej => {}
 				);
 			},
-			computed(item){
-				let data = {couponUserId:this.couponUserId,orderKey:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral};
+			computed(item) {
+				let data = {
+					couponUserId: this.couponUserId,
+					orderKey: this.form.orderKey,
+					addressId: this.form.addressId,
+					useIntegral: this.form.useIntegral
+				};
 				computed(data).then(
 					res => {
-						if(res.code==200){
-							 console.log(res)
-							 this.price=res.data
-							 
-						}else{
-							if(res.code==501){
+						if (res.code == 200) {
+							console.log(res)
+							this.price = res.data
+
+						} else {
+							if (res.code == 501) {
 								uni.showToast({
-									icon:'none',
+									icon: 'none',
 									title: res.msg,
 								});
-								setTimeout(function(){
+								setTimeout(function() {
 									uni.navigateBack({
-										delta:1
+										delta: 1
 									})
-								},500);
+								}, 500);
 								return;
-							}
-							else{
+							} else {
 								uni.showToast({
-									icon:'none',
+									icon: 'none',
 									title: res.msg,
 								});
 							}
-							
+
 						}
 					},
 					rej => {}
@@ -293,87 +322,104 @@
 			},
 			// 提交订单
 			submitOrder() {
-				var that=this;
-				if(this.form.orderKey==null){
+				var that = this;
+				if (this.form.orderKey == null) {
 					uni.showToast({
-						icon:'none',
+						icon: 'none',
 						title: '订单KEY不存在',
 					});
 					return;
 				}
-				if(this.form.addressId==null){
+				if (this.form.addressId == null) {
 					uni.showToast({
-						icon:'none',
+						icon: 'none',
 						title: '收货地址不能为空',
 					});
 					return;
 				}
-				
+
 				uni.requestSubscribeMessage({
 					tmplIds: this.temps,
 					success(res) {
-						 that.createOrder();
+						that.createOrder();
 					},
 					fail(res) {
 						that.createOrder();
 					}
 				})
-				
+
 			},
-			createOrder(){
-				var that=this;
-				var data=null;
-				var tuiUserId=uni.getStorageSync('tuiUserId');
+			createOrder() {
+				var that = this;
+				var data = null;
+				var tuiUserId = uni.getStorageSync('tuiUserId');
 				uni.showLoading({
 					title: '正在处理中...'
 				});
-				if(tuiUserId!=null&&tuiUserId!=undefined&&tuiUserId>0){
-					data = {orderCreateType:1,tuiUserId:tuiUserId,companyId:this.form.companyId,companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,mark:this.form.mark,orderKey:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral,payType:1};
-				}
-				else{
-					data = {orderCreateType:1,companyId:this.form.companyId,companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,mark:this.form.mark,orderKey:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral,payType:1};
+				if (tuiUserId != null && tuiUserId != undefined && tuiUserId > 0) {
+					data = {
+						orderCreateType: 1,
+						tuiUserId: tuiUserId,
+						companyId: this.form.companyId,
+						companyUserId: this.form.companyUserId,
+						couponUserId: this.couponUserId,
+						mark: this.form.mark,
+						orderKey: this.form.orderKey,
+						addressId: this.form.addressId,
+						useIntegral: this.form.useIntegral,
+						payType: 1
+					};
+				} else {
+					data = {
+						orderCreateType: 1,
+						companyId: this.form.companyId,
+						companyUserId: this.form.companyUserId,
+						couponUserId: this.couponUserId,
+						mark: this.form.mark,
+						orderKey: this.form.orderKey,
+						addressId: this.form.addressId,
+						useIntegral: this.form.useIntegral,
+						payType: 1
+					};
 				}
-				if(this.storeId!=null&& this.storeId>0){
-					data.storeId=this.storeId;
+				if (this.storeId != null && this.storeId > 0) {
+					data.storeId = this.storeId;
 				}
 				uni.hideLoading()
 				create(data).then(
 					res => {
 						uni.hideLoading()
-						if(res.code==200){
+						if (res.code == 200) {
 							uni.hideLoading()
-							if(res.order.isPrescribe==1){
-								setTimeout(function(){
+							if (res.order.isPrescribe == 1) {
+								setTimeout(function() {
 									uni.redirectTo({
-										url:"prescribe?orderId="+res.order.id
+										url: "prescribe?orderId=" + res.order.id
 									})
-								},200);
-							}
-							else{
-								setTimeout(function(){
+								}, 200);
+							} else {
+								setTimeout(function() {
 									uni.redirectTo({
-										url: './paymentOrder?orderId='+res.order.id
+										url: './paymentOrder?orderId=' + res.order.id
 									})
-								},200);
+								}, 200);
 							}
 							return;
-						}
-						else{
-							if(res.code==501){
+						} else {
+							if (res.code == 501) {
 								uni.showToast({
-									icon:'none',
+									icon: 'none',
 									title: res.msg,
 								});
-								setTimeout(function(){
+								setTimeout(function() {
 									uni.navigateBack({
-										delta:1
+										delta: 1
 									})
-								},200);
+								}, 200);
 								return;
-							}
-							else{
+							} else {
 								uni.showToast({
-									icon:'none',
+									icon: 'none',
 									title: res.msg,
 								});
 							}
@@ -382,7 +428,7 @@
 					rej => {}
 				);
 			},
-			openAddress(){
+			openAddress() {
 				uni.navigateTo({
 					url: '/pages_user/user/address'
 				})
@@ -392,9 +438,10 @@
 </script>
 
 <style lang="scss">
-	.inner-box{
+	.inner-box {
 		padding: 20upx 20upx 140upx;
-		.address-box{
+
+		.address-box {
 			box-sizing: border-box;
 			min-height: 171upx;
 			background: #FFFFFF;
@@ -407,76 +454,90 @@
 			display: flex;
 			align-items: center;
 			justify-content: space-between;
-			.left{
+
+			.left {
 				width: 92%;
-				.name-box{
+
+				.name-box {
 					display: flex;
 					align-items: center;
-					.text{
+
+					.text {
 						font-size: 32upx;
 						font-family: PingFang SC;
 						font-weight: bold;
 						color: #111111;
 						line-height: 1;
-						&.name{
+
+						&.name {
 							margin-right: 30upx;
 						}
 					}
 				}
-				.address{
+
+				.address {
 					font-size: 28upx;
 					font-family: PingFang SC;
 					font-weight: 500;
 					color: #666666;
 					line-height: 42upx;
-					text-align:left;
+					text-align: left;
 					margin-top: 23upx;
 				}
 			}
-			.arrow-box{
+
+			.arrow-box {
 				width: 12upx;
 				height: 23upx;
 				display: flex;
 				align-items: cenetr;
 				justify-content: cenetr;
-				image{
+
+				image {
 					width: 100%;
 					height: 100%;
 				}
 			}
 		}
-		.goods-list{
+
+		.goods-list {
 			margin-top: 20upx;
 			padding: 0 30upx;
 			background-color: #FFFFFF;
 			border-radius: 16upx;
-			.item{
+
+			.item {
 				padding: 30upx 0;
 				border-bottom: 1px solid #EDEEEF;
 				display: flex;
 				align-items: center;
-				.img-box{
+
+				.img-box {
 					width: 160upx;
 					height: 160upx;
 					margin-right: 30upx;
-					image{
+
+					image {
 						width: 100%;
 						height: 100%;
 					}
 				}
-				.info-box{
+
+				.info-box {
 					width: calc(100% - 190upx);
 					height: 160upx;
 					display: flex;
 					flex-direction: column;
 					justify-content: space-between;
-					.name-box{
+
+					.name-box {
 						font-size: 28upx;
 						font-family: PingFang SC;
 						font-weight: 500;
 						color: #111111;
 						line-height: 40upx;
-						.tag{
+
+						.tag {
 							display: inline-block;
 							padding: 0 6upx;
 							height: 30upx;
@@ -492,7 +553,8 @@
 							margin-top: 7upx;
 						}
 					}
-					.spec{
+
+					.spec {
 						margin-top: 10upx;
 						font-size: 24upx;
 						font-family: PingFang SC;
@@ -500,14 +562,17 @@
 						color: #999999;
 						line-height: 1;
 					}
-					.price-num{
+
+					.price-num {
 						display: flex;
 						align-items: center;
 						justify-content: space-between;
-						.price{
+
+						.price {
 							display: flex;
 							align-items: flex-end;
-							.unit{
+
+							.unit {
 								font-size: 24upx;
 								font-family: PingFang SC;
 								font-weight: 500;
@@ -515,7 +580,8 @@
 								line-height: 1.2;
 								margin-right: 4upx;
 							}
-							.num{
+
+							.num {
 								font-size: 32upx;
 								font-family: PingFang SC;
 								font-weight: 500;
@@ -523,7 +589,8 @@
 								line-height: 1;
 							}
 						}
-						.num{
+
+						.num {
 							font-size: 24upx;
 							font-family: PingFang SC;
 							font-weight: 500;
@@ -533,21 +600,25 @@
 					}
 				}
 			}
-			.sub-total{
+
+			.sub-total {
 				height: 88upx;
 				display: flex;
 				align-items: center;
 				justify-content: flex-end;
-				.label{
+
+				.label {
 					font-size: 24upx;
 					font-family: PingFang SC;
 					font-weight: 500;
 					color: #999999;
 				}
-				.price{
+
+				.price {
 					display: flex;
 					align-items: flex-end;
-					.unit{
+
+					.unit {
 						font-size: 24upx;
 						font-family: PingFang SC;
 						font-weight: 500;
@@ -555,7 +626,8 @@
 						line-height: 1.2;
 						margin-right: 4upx;
 					}
-					.num{
+
+					.num {
 						font-size: 32upx;
 						font-family: PingFang SC;
 						font-weight: bold;
@@ -565,48 +637,56 @@
 				}
 			}
 		}
-		.points{
+
+		.points {
 			height: 88upx;
 			padding: 0 30upx;
 			background: #FFFFFF;
 			border-radius: 16upx;
-			 
+
 			display: flex;
 			align-items: center;
 			justify-content: space-between;
-			.left{
+
+			.left {
 				display: flex;
 				align-items: center;
-				image{
+
+				image {
 					width: 28upx;
 					height: 28upx;
 					margin-right: 20upx;
 				}
-				.text{
+
+				.text {
 					font-size: 28upx;
 					font-family: PingFang SC;
 					font-weight: 500;
 					color: #666666;
 				}
 			}
-			.right{
+
+			.right {
 				display: flex;
 				align-items: center;
-				.text{
+
+				.text {
 					font-size: 28upx;
 					font-family: PingFang SC;
 					font-weight: 500;
 					color: #111111;
-					 
+
 				}
-				image{
+
+				image {
 					margin-left: 15upx;
 					width: 14upx;
 					height: 24upx;
 				}
 			}
 		}
-		.remarks{
+
+		.remarks {
 			height: 88upx;
 			padding: 0 30upx;
 			background: #FFFFFF;
@@ -614,14 +694,16 @@
 			margin-top: 20upx;
 			display: flex;
 			align-items: center;
-			input{
+
+			input {
 				width: 100%;
 				font-size: 28upx;
 				font-family: PingFang SC;
 				font-weight: 500;
 				color: #000000;
 			}
-			.input{
+
+			.input {
 				font-size: 28upx;
 				font-family: PingFang SC;
 				font-weight: 500;
@@ -629,9 +711,9 @@
 			}
 		}
 	}
-	
-	
-	.btn-foot{
+
+
+	.btn-foot {
 		box-sizing: border-box;
 		width: 100%;
 		height: 121upx;
@@ -644,24 +726,29 @@
 		left: 0;
 		bottom: 0;
 		z-index: 99;
-		.right{
+
+		.right {
 			display: flex;
 			align-items: center;
-			.total{
+
+			.total {
 				display: flex;
 				align-items: flex-end;
 				margin-right: 36upx;
-				.label{
+
+				.label {
 					font-size: 26upx;
 					font-family: PingFang SC;
 					font-weight: 500;
 					color: #999999;
 					line-height: 1.5;
 				}
-				.price{
+
+				.price {
 					display: flex;
 					align-items: flex-end;
-					.unit{
+
+					.unit {
 						font-size: 32upx;
 						font-family: PingFang SC;
 						font-weight: bold;
@@ -669,7 +756,8 @@
 						line-height: 1.2;
 						margin-right: 10upx;
 					}
-					.num{
+
+					.num {
 						font-size: 50upx;
 						font-family: PingFang SC;
 						font-weight: bold;
@@ -678,7 +766,8 @@
 					}
 				}
 			}
-			.btn{
+
+			.btn {
 				width: 200upx;
 				height: 88upx;
 				line-height: 88upx;
@@ -695,87 +784,89 @@
 </style>
 <style lang="less" scoped>
 	.coupon {
-	  height: 100%;
+		height: 100%;
 	}
+
 	/*优惠券列表公共*/
-	.coupon-list {
-	}
+	.coupon-list {}
+
 	.coupon-list .item {
-	  display: flex;
-	  flex-direction: column;
-	  justify-content: center;
-	  align-items: center;
-	  width: 100%;
-	  height: 1.7 * 100rpx;
-	  margin-bottom: 0.16 * 100rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		width: 100%;
+		height: 1.7 * 100rpx;
+		margin-bottom: 0.16 * 100rpx;
 	}
-	
+
 	.coupon-list .item .money {
-	  background-size: 100% 100%;
-	  width: 2.4 * 100rpx;
-	  height: 100%;
-	  color: #fff;
-	  font-size: 0.36 * 100rpx;
-	  font-weight: bold;
-	  text-align: center;
-	  display: flex;
-	  flex-direction: column;
-	  align-items: center;
-	  justify-content: center;
-	  position: relative;
-	  
+		background-size: 100% 100%;
+		width: 2.4 * 100rpx;
+		height: 100%;
+		color: #fff;
+		font-size: 0.36 * 100rpx;
+		font-weight: bold;
+		text-align: center;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		position: relative;
+
 	}
-	.coupon-list .item .money .img{
-	  position: absolute;
-	  width: 2.4 * 100rpx;
-	  height: 100%;
-	  color: #fff;
-	  
+
+	.coupon-list .item .money .img {
+		position: absolute;
+		width: 2.4 * 100rpx;
+		height: 100%;
+		color: #fff;
+
 	}
-	
+
 	.coupon-list .item .money .num {
-	  font-size: 0.6 * 100rpx;
+		font-size: 0.6 * 100rpx;
 	}
+
 	.coupon-list .item .money .pic-num {
-	  font-size: 20rpx;
-	  z-index: 99;
+		font-size: 20rpx;
+		z-index: 99;
 	}
 
-	
+
 	.coupon-list .item .text {
-	  width: 4.5 * 100rpx;
-	  padding: 0 0.17 * 100rpx 0 0.24 * 100rpx;
-	  background-color: #fff;
-	  box-sizing: border-box;
+		width: 4.5 * 100rpx;
+		padding: 0 0.17 * 100rpx 0 0.24 * 100rpx;
+		background-color: #fff;
+		box-sizing: border-box;
 	}
-	
+
 	.coupon-list .item .text .condition {
-	  font-size: 0.3 * 100rpx;
-	  color: #282828;
-	  height: 0.93 * 100rpx;
-	  line-height: 0.93 * 100rpx;
-	  border-bottom: 1px solid #f0f0f0;
+		font-size: 0.3 * 100rpx;
+		color: #282828;
+		height: 0.93 * 100rpx;
+		line-height: 0.93 * 100rpx;
+		border-bottom: 1px solid #f0f0f0;
 	}
-	
+
 	.coupon-list .item .text .data {
-	  font-size: 0.2 * 100rpx;
-	  color: #999;
-	  height: 0.76 * 100rpx;
+		font-size: 0.2 * 100rpx;
+		color: #999;
+		height: 0.76 * 100rpx;
 	}
-	
+
 	.coupon-list .item .text .data .bnt {
-	  width: 1.36 * 100rpx;
-	  height: 0.44 * 100rpx;
-	  border-radius: 0.22 * 100rpx;
-	  font-size: 0.22 * 100rpx;
-	  color: #fff;
-	  text-align: center;
-	  line-height: 0.44 * 100rpx;
-	  background-color: red;
+		width: 1.36 * 100rpx;
+		height: 0.44 * 100rpx;
+		border-radius: 0.22 * 100rpx;
+		font-size: 0.22 * 100rpx;
+		color: #fff;
+		text-align: center;
+		line-height: 0.44 * 100rpx;
+		background-color: red;
 	}
-	
+
 	.coupon-list .item .text .data .bnt.gray {
-	  background-color: #ccc;
+		background-color: #ccc;
 	}
-</style>
-
+</style>

+ 3 - 0
pages/shopping/paymentOrder.vue

@@ -191,6 +191,9 @@
 			// this.orderBindUser(this.orderId)
 			this.getStoreOrderById();
 			this.getStoreConfig();
+			// this.getUserInfo();
+		},
+		onShow() {
 			this.getUserInfo();
 		},
 		onUnload() {

+ 3 - 2
pages/user/index.vue

@@ -387,8 +387,9 @@
 			loginOUt() {
 				this.utils.loginOut();
 				uni.navigateTo({
-									url: '/pages/auth/login'
-								})
+					url: '/pages/auth/login'
+				})
+				// this.getUserInfo();
 			}
 		}
 	}

+ 277 - 194
pages_course/living.vue

@@ -53,9 +53,11 @@
 
 			<!-- 主要内容区域 -->
 
-			<view class="content" :class="{ 'horizontal-content': isFocus==1, 'trailer-content': liveItem.status==1  }">
+			<view class="content"
+				:class="{ 'horizontal-content': isFocus==1, 'trailer-content': liveItem.status==1,  'fullscreen-mode': isFullscreen   }">
 				<!-- 顶部信息栏 -->
-				<view class="top-info-bar" v-if="!isFullscreen" :class="liveItem.showType == 1 ? 'horizontal-top' : ''">
+				<view class="top-info-bar" v-if="!isFullscreen"
+					:class="{'horizontal-top': liveItem.showType == 1,'hidden-on-fullscreen': isFullscreen}">
 					<view class="user-info-section">
 						<image v-if="!scene&&liveItem.showType==2" @click="goBack" class="back-icon mr4"
 							src="https://bjzmky-1323137866.cos.ap-chongqing.myqcloud.com/userapp/images/return3.png" />
@@ -94,9 +96,11 @@
 				</view> -->
 
 				<!-- 视频区域 -->
-				<view class="videolist" v-if="liveItem.status == 2">
-					<view class="video-container" :class="liveItem.showType == 1 ? 'horizontal-layout' : ''">
-						<video v-if="liveItem.videoUrl && liveItem.liveType == 2 && !generating"
+
+				<view class="videolist" v-if="liveItem.status == 2" :class="isFullscreen ? 'screen' : ''">
+					<view class="video-container"
+						:class="{'horizontal-layout': liveItem.showType == 1,'fullscreen-mode': isFullscreen}">
+						<!-- <video v-if="liveItem.videoUrl && liveItem.liveType == 2 && !generating"
 							:id="`myVideo_${liveId}`" :autoplay="true" class="video-player" :src="liveItem.videoUrl"
 							object-fit="contain" :custom-cache="false" :enable-progress-gesture="false"
 							vslide-gesture-in-fullscreen="true" :show-center-play-btn="false" :http-cache="false" loop
@@ -104,39 +108,56 @@
 							@pause="onVideoPause" @play="onVideoPlay" @waiting="onVideoWaiting"
 							:enable-play-gesture="false" :play-strategy="1" @dblclick="preventDoubleClick"
 							preload="auto" :enable-stash-buffer="false" :stash-initial-size="0" :stash-max-size="0"
-							:stash-time="0" type="application/x-mpegURL" :controls="false" :show-fullscreen-btn="false"
+							:stash-time="0" type="application/x-mpegURL" :controls="false" :show-fullscreen-btn="true"
 							show-play-btn show-mute-btn enable-play-gesture="true"
 							@fullscreenchange="onFullscreenChange" x5-video-player-fullscreen="true"
+							x5-video-player-type="h5" x5-video-orientation="landscape" :webkit-playsinline="false"
+							playsinline="false" :x5-playsinline="false">
+						</video> -->
+						<video v-if="liveItem.videoUrl && liveItem.liveType == 2 && !generating"
+							:id="`myVideo_${liveId}`" :autoplay="true" class="video-player" :src="liveItem.videoUrl"
+							object-fit="contain" :custom-cache="false" :enable-progress-gesture="false"
+							vslide-gesture-in-fullscreen="false" :show-center-play-btn="false" :http-cache="false" loop
+							@error="videoError" @timeupdate="onVideoTimeUpdate" @loadedmetadata="onVideoMetaLoaded"
+							@pause="onVideoPause" @play="onVideoPlay" @waiting="onVideoWaiting"
+							:enable-play-gesture="false" :play-strategy="1" @dblclick="preventDoubleClick"
+							preload="auto" :enable-stash-buffer="false" :stash-initial-size="0" :stash-max-size="0"
+							:stash-time="0" type="application/x-mpegURL" :controls="false" :show-fullscreen-btn="false"
+							show-play-btn show-mute-btn enable-play-gesture="true"
+							@fullscreenchange="onFullscreenChange" x5-video-player-fullscreen="false"
 							x5-video-player-type="h5" x5-video-orientation="landscape" :webkit-playsinline="true"
 							playsinline="true" :x5-playsinline="true">
 						</video>
 
+						<view v-if="showCustomControls && liveItem.showType==1 && !isFullscreen" class="custom-controls"
+							@click.stop="toggleFullscreen">
+							<image src="/static/images/full_screen.png" class="control-icon" />
+						</view>
+
 						<!-- 全屏返回按钮 - 只在全屏状态下显示 -->
 						<view v-if="isFullscreen" class="fullscreen-exit-btn" @click="exitFullscreen">
 							<image src="/static/images/half_screen.png" class="exit-fullscreen-icon" />
 							<text class="exit-text">退出全屏</text>
 						</view>
-						<!-- 全屏按钮 - 只在非全屏状态下显示 -->
-						<view v-if="showCustomControls && liveItem.showType==1 && !isFullscreen" class="custom-controls"
-							@click="toggleFullscreen">
-							<image src="/static/images/full_screen.png" class="control-icon" />
-						</view>
 
 						<!-- 投诉按钮 -->
-						<view v-if="liveItem.showType==2" class="complaint-box"
+						<view v-if="liveItem.showType==2||isFullscreen" class="complaint-box"
+							:class="isFullscreen ? 'complaint-full' : ''"
 							@click="navgetTo('/pages_shopping/live/complaintList') ">
 							<image class="image w32 h32 mr10" src="/static/images/complaint.png" mode="widthFix" />
 							<view class="fs26">投诉</view>
 						</view>
 
 						<!-- 回放标签 -->
-						<view v-if="isPlayback" class="replay-label">回放</view>
+						<view v-if="isPlayback" class="replay-label" :class="isFullscreen ? 'replay-full' : ''">回放
+						</view>
 					</view>
 				</view>
 				<!-- 直播结束状态 -->
 				<!-- v-if="liveItem.status == 3" -->
 				<view class="videolist" v-if="liveItem.status == 3">
-					<view class="video-container" :class="liveItem.showType == 1 ? 'horizontal-layout' : ''">
+					<view class="video-container"
+						:class="{'horizontal-layout': liveItem.showType == 1, 'fullscreen-mode': isFullscreen}">
 						<view class="live-end-message">直播已结束</view>
 					</view>
 				</view>
@@ -155,8 +176,8 @@
 						<view v-if="liveItem.videoUrl && liveItem.liveType == 3" class="replay-label">直播回放</view>
 					</view>
 				</view>
-				<view class="slide-group">
-					<view class="action-button-group" v-if="!isFocus">
+				<view class="slide-group" v-if="!isFocus && !isFullscreen">
+					<view class="action-button-group">
 						<view :class="[liveItem.showType === 1 ? 'horizontal' : 'vertical','icon-button','ml20']">
 							<button open-type="share" class="action-icon button-reset">
 								<image class="action-icon"
@@ -165,7 +186,7 @@
 							</button>
 						</view>
 					</view>
-					<view class="action-button-group" v-if="!isFocus">
+					<view class="action-button-group">
 						<view
 							:class="[liveItem.showType === 1 ? 'horizontal' : 'vertical','icon-button','ml20','like-container']"
 							@click="onLike">
@@ -235,7 +256,7 @@
 								:class="{ 'input-focused': isFocus }" @focus="inputFocus" @blur="inputBlur"
 								cursor-spacing="100" :adjust-position="false" :disabled="isEnd" />
 							<!-- v-if="isFocus&&!isIOS" -->
-							<view class="send-button" :class="liveItem.showType == 1 ? 'send2' : ''" @click="sendMsg()">
+							<view class="send-button" v-if="!isIOS" :class="liveItem.showType == 1 ? 'send2' : ''" @click="sendMsg()">
 								发送</view>
 						</view>
 						<!--  :class="{ 'action-buttons-hidden': isFocus }" -->
@@ -267,7 +288,8 @@
 			</view>
 
 			<!-- 商品卡片 -->
-			<view class="goods-card" v-if="isShowGoods" @click.stop="goShop(goodsCard.productId, goodsCard.goodsId)">
+			<view class="goods-card" v-if="isShowGoods&&!isFullscreen"
+				@click.stop="goShop(goodsCard.productId, goodsCard.goodsId)">
 				<view class="goods-card-header">
 					<view class="goods-status">
 						<image class="status-icon mr8"
@@ -707,6 +729,9 @@
 		data() {
 			return {
 				isFullscreen: false,
+				isVideoRotated: false,
+				showNonVideoElementsFlag: true,
+
 				isMuted: false,
 				showCustomControls: true,
 				videoContext: null,
@@ -879,7 +904,7 @@
 			};
 		},
 		async onLoad(options) {
-			this.toggleFullscreen()
+
 			this.initTime()
 			this.getLocationByIP();
 			if (options.liveId) {
@@ -1123,7 +1148,15 @@
 				query: 'companyId=-2&companyUserId=' + this.userInfo.userId + '&liveId=' + this.liveId
 			};
 		},
-		computed: {
+		computed: { // 控制是否显示非视频元素
+			shouldShowNonVideoElements() {
+				return !this.isFullscreen && this.showNonVideoElementsFlag;
+			},
+
+			// 控制是否显示全屏按钮
+			shouldShowFullscreenButton() {
+				return this.liveItem.showType == 1 && !this.isFullscreen;
+			},
 			...mapGetters(['coureLogin']),
 			appid() {
 				return this.$store.state.appid
@@ -1275,11 +1308,13 @@
 			// 清理大数据和状态
 			this.clearBigData();
 			this.resetAllStates();
-			// 清理屏幕方向锁定
+			// 解锁屏幕方向
 			this.unlockOrientation();
 
-			// 移除屏幕方向监听
-			this.removeOrientationChangeListener();
+
+			// 强制退出全屏
+			this.isFullscreen = false;
+			this.showCustomControls = true;
 		},
 
 		mounted() {
@@ -1327,25 +1362,19 @@
 			}
 		},
 		methods: { // 退出全屏
+			// 退出全屏
 			exitFullscreen() {
-				console.log('退出全屏按钮被点击');
+				console.log('执行退出全屏');
+				this.isFullscreen = false;
 
-				if (!this.videoContext) {
-					console.log('创建 videoContext');
-					this.videoContext = uni.createVideoContext(`myVideo_${this.liveId}`, this);
-				}
+				// 恢复竖屏样式
+				this.restoreVideoList();
 
-				if (!this.videoContext) {
-					console.error('videoContext 创建失败');
-					return;
-				}
+				// 显示非videolist元素
+				this.showNonVideoElements();
 
-				if (this.isFullscreen) {
-					console.log('执行退出全屏操作');
-					this.videoContext.exitFullScreen();
-				} else {
-					console.log('当前不是全屏状态,无需退出');
-				}
+				// 强制页面重排
+				this.$forceUpdate();
 			},
 			// 添加屏幕方向变化监听
 			addOrientationChangeListener() {
@@ -1361,23 +1390,27 @@
 				}
 			}, // 处理屏幕方向变化
 			handleOrientationChange() {
-				const orientation = window.orientation;
-				console.log('屏幕方向变化:', orientation);
-
-				// 0: 竖屏
-				// 90: 横屏(向左转)
-				// -90: 横屏(向右转)
-				// 180: 倒置(很少用)
-
-				if (this.isFullscreen && Math.abs(orientation) !== 90) {
-					// 全屏状态下,如果不是横屏,尝试退出全屏
-					console.log('全屏状态下屏幕方向不正确,尝试退出全屏');
-					if (this.videoContext) {
-						this.videoContext.exitFullScreen();
+				// 在小程序中,使用 uni.onWindowResize 或 uni.onDeviceOrientationChange
+				uni.onWindowResize((res) => {
+					const windowWidth = res.size.windowWidth;
+					const windowHeight = res.size.windowHeight;
+					const isLandscape = windowWidth > windowHeight;
+
+					if (this.isFullscreen && !isLandscape) {
+						console.log('全屏状态下屏幕方向不正确,尝试退出全屏');
+						if (this.videoContext) {
+							this.videoContext.exitFullScreen();
+						}
 					}
-				}
+				});
+			}, // 恢复videolist盒子
+			restoreVideoList() {
+				this.isVideoRotated = false;
+				this.isFullscreen = false;
+				console.log('恢复视频容器竖屏状态');
 			},
 
+
 			// 强制横屏全屏(备用方案)
 			forceLandscapeFullscreen() {
 				// 尝试多种全屏方式
@@ -1433,76 +1466,133 @@
 			// 切换全屏
 			// 切换全屏
 			toggleFullscreen() {
-				console.log('全屏按钮被点击');
+				console.log('自定义全屏按钮被点击');
 
-				// 确保 videoContext 存在
-				if (!this.videoContext) {
-					console.log('创建 videoContext');
-					this.videoContext = uni.createVideoContext(`myVideo_${this.liveId}`, this);
+				if (this.isFullscreen) {
+					// 退出全屏
+					this.exitFullscreen();
+				} else {
+					// 进入全屏
+					this.enterFullscreen();
 				}
+			}, // 进入全屏
+			enterFullscreen() {
+				console.log('执行进入全屏');
+				this.isFullscreen = true;
 
-				if (!this.videoContext) {
-					console.error('videoContext 创建失败');
-					return;
+				// 设置横屏样式
+				this.rotateVideoList();
+
+				// 隐藏非videolist元素
+				this.hideNonVideoElements();
+
+				// 强制页面重排
+				this.$forceUpdate();
+			},
+			// 强制全屏的备用方案
+			forceFullscreen() {
+				console.log('使用备用方案进入全屏');
+
+				const videoId = `myVideo_${this.liveId}`;
+
+				// 在小程序中,只能使用 videoContext
+				if (this.videoContext) {
+					try {
+						this.videoContext.requestFullScreen({
+							direction: 90 // 横屏方向
+						});
+					} catch (error) {
+						console.error('请求全屏失败:', error);
+						uni.showToast({
+							title: '无法全屏播放,请尝试手动横屏',
+							icon: 'none'
+						});
+					}
 				}
+			}, // 隐藏非videolist元素
+			hideNonVideoElements() {
+				this.showNonVideoElementsFlag = false;
+				console.log('隐藏非视频元素');
+			},
+			// 显示非videolist元素
+			showNonVideoElements() {
+				this.showNonVideoElementsFlag = true;
+				console.log('显示非视频元素');
+			}, // 防止默认全屏事件
+			onFullscreenChange(e) {
+				// 阻止默认全屏行为
+				e.preventDefault();
 
-				if (this.isFullscreen) {
-					this.exitFullscreen();
-				} else {
-					console.log('请求全屏(横屏模式)');
-					this.videoContext.requestFullScreen({
-						direction: 90 // 90表示横屏,0是竖屏
-					});
+				// 如果有video进入全屏,立即退出
+				if (e.detail && e.detail.fullScreen) {
+					const videoContext = uni.createVideoContext(`myVideo_${this.liveId}`, this);
+					if (videoContext) {
+						setTimeout(() => {
+							videoContext.exitFullScreen();
+						}, 100);
+					}
 				}
+
+			},
+
+			// 旋转videolist盒子
+			rotateVideoList() {
+				// 在小程序中,通过设置CSS类名来控制样式,而不是直接操作DOM
+				this.isVideoRotated = true;
+				this.isFullscreen = true;
+
+				// 在小程序中,应该通过绑定class的方式控制样式
+				// 而不是直接操作DOM
+				console.log('视频容器旋转到横屏状态');
 			},
 			// 全屏状态变化监听
-			// 加强 onFullscreenChange 方法
-			// onFullscreenChange(e) {
-			// 	console.log('全屏状态变化事件:', e);
 
-			// 	// 确保正确获取状态
-			// 	const isFullScreen = e.detail && e.detail.fullScreen;
-			// 	console.log('全屏状态:', isFullScreen);
+			onFullscreenChange(e) {
+				console.log('全屏状态变化事件详情:', e);
 
-			// 	this.isFullscreen = isFullScreen;
+				// 方法1:通过事件参数获取(小程序主要方式)
+				let fullScreen = false;
 
-			// 	// 全屏时隐藏自定义控制条
-			// 	this.showCustomControls = !this.isFullscreen;
+				// 视频组件的全屏事件参数
+				if (e.detail && typeof e.detail.fullScreen !== 'undefined') {
+					fullScreen = e.detail.fullScreen;
+					console.log('通过e.detail.fullScreen获取全屏状态:', fullScreen);
+				}
+				// 其他可能的参数名
+				else if (e.detail && typeof e.detail.fullscreen !== 'undefined') {
+					fullScreen = e.detail.fullscreen;
+					console.log('通过e.detail.fullscreen获取全屏状态:', fullScreen);
+				}
+				// 方法2:检测横屏(备用)
+				else {
+					// 在小程序环境中,可以通过屏幕方向判断
+					try {
+						const systemInfo = uni.getSystemInfoSync();
+						fullScreen = systemInfo.windowWidth > systemInfo.windowHeight;
+						console.log('通过屏幕方向判断全屏状态:', fullScreen);
+					} catch (err) {
+						console.error('获取系统信息失败:', err);
+						// 默认使用事件参数
+						fullScreen = e.detail || false;
+					}
+				}
 
-			// 	// 强制更新UI
-			// 	this.$forceUpdate();
+				this.isFullscreen = fullScreen;
+				console.log('最终设置isFullscreen为:', this.isFullscreen);
 
-			// 	// 调试输出
-			// 	console.log('isFullscreen:', this.isFullscreen);
-			// 	console.log('showCustomControls:', this.showCustomControls);
-			// },
-			 onFullscreenChange(e) {
-			      const videoContainer = e.target.parentNode; // 获取视频父容器
-			      const isFullscreen = document.fullscreenElement || document.webkitFullscreenElement || document.msFullscreenElement;
-			      
-			      if (isFullscreen) {
-			        // 进入全屏:让图标容器也进入全屏,确保层级
-			        if (videoContainer.requestFullscreen) {
-			          videoContainer.requestFullscreen();
-			        } else if (videoContainer.webkitRequestFullscreen) {
-			          videoContainer.webkitRequestFullscreen();
-			        } else if (videoContainer.msRequestFullscreen) {
-			          videoContainer.msRequestFullscreen();
-			        }
-			        // 适配x5内核(微信等)
-			        document.documentElement.style.webkitTouchCallout = 'none';
-			        document.documentElement.style.webkitUserSelect = 'none';
-			      } else {
-			        // 退出全屏:退出容器的全屏
-			        if (document.exitFullscreen) {
-			          document.exitFullscreen();
-			        } else if (document.webkitExitFullscreen) {
-			          document.webkitExitFullscreen();
-			        } else if (document.msExitFullscreen) {
-			          document.msExitFullscreen();
-			        }
-			      }
-			    },
+				// 根据全屏状态显示/隐藏自定义控件
+				this.showCustomControls = !this.isFullscreen;
+
+				// 强制UI更新
+				this.$forceUpdate();
+
+				// 全屏时锁定横屏
+				if (this.isFullscreen) {
+					this.lockOrientation();
+				} else {
+					this.unlockOrientation();
+				}
+			},
 			// 锁定屏幕方向为横屏
 			lockOrientation() {
 				// 设置屏幕方向为横屏
@@ -4176,15 +4266,6 @@
 				// 使用单次nextTick确保DOM更新后再滚动
 				this.$nextTick(() => {
 					this.forceScrollToBottomOnSend();
-					// if (isMyMessage) {
-					// 	// 如果是自己发送的消息,强制滚动到底部
-					// 	console.log('自己的消息,执行强制滚动');
-					// 	this.forceScrollToBottomOnSend();
-					// } else {
-					// 	// 如果是他人的消息,使用普通滚动(有防抖)
-					// 	console.log('他人的消息,执行普通滚动');
-					// 	this.simpleScrollToBottom();
-					// }
 				});
 			},
 			// 处理Socket消息
@@ -4506,32 +4587,33 @@
 				}
 				console.log("qxj userTotal", userTotal);
 				return userTotal;
-			}
 
-		},
 
+			},
+		}
 
 	};
 </script>
 
 <style scoped lang="scss">
+	/* 退出全屏按钮 */
 	.fullscreen-exit-btn {
-		position: absolute;
-		bottom: 120rpx;
-		right: 40rpx;
+		position: fixed;
+		bottom: 40rpx;
+		left: 82vh;
 		display: flex;
 		flex-direction: column;
 		align-items: center;
 		justify-content: center;
-		z-index: 99999;
-		background: rgba(0, 0, 0, 0.6);
+		z-index: 100001;
+		background: rgba(57, 57, 57, 0.6);
 		border-radius: 40rpx;
 		padding: 20rpx 24rpx;
 		transition: all 0.3s ease;
 
 		&:active {
 			transform: scale(0.95);
-			background: rgba(0, 0, 0, 0.8);
+			background: rgba(50, 50, 50, 0.6);
 		}
 
 		.exit-fullscreen-icon {
@@ -4547,83 +4629,62 @@
 		}
 	}
 
-	// 全屏时的样式调整
+	.video-container.fullscreen-mode .fullscreen-exit-btn {
+		z-index: 999999 !important;
+	}
+
+	/* 全屏模式样式 */
 	.video-container.fullscreen-mode {
-		position: fixed;
-		top: 0;
-		left: 0;
-		width: 100%;
-		height: 100%;
-		z-index: 999999;
-		background-color: #000;
+		width: auto !important;
+		height: auto !important;
+		z-index: 99999 !important;
+		background-color: #000 !important;
+		transform: rotate(90deg) !important;
+		transform-origin: center center !important;
 
 		.video-player {
-			width: 100%;
-			height: 100%;
-		}
-
-		.custom-controls {
-			position: absolute;
-			bottom: 42rpx;
-			right: 20rpx;
-			display: flex;
-			align-items: center;
-			z-index: 9999;
-			background: rgba(0, 0, 0, 0.5);
-			border-radius: 40rpx;
-			padding: 10rpx 20rpx;
-			transition: all 0.3s ease;
-
-			// 全屏状态下的样式调整
-			.fullscreen-mode & {
-				display: none;
-			}
-
-			&:active {
-				transform: scale(0.95);
-				background: rgba(0, 0, 0, 0.6);
-				opacity: 0.8;
-			}
+			width: 100vh !important;
+			height: 100vw !important;
+			object-fit: contain !important;
 		}
+	}
 
-		// 全屏时其他元素隐藏
-		.complaint-box,
-		.replay-label {
-			display: none;
-		}
+	/* 全屏时隐藏其他元素 */
+	.video-container.fullscreen-mode~* {
+		display: none !important;
 	}
 
 	.video-container {
-		position: relative;
-		width: 100%;
-		height: 100%;
-		/* 根据需要调整 */
+		transition: all 0.3s ease;
 	}
 
-	.video-player {
-		width: 100%;
-		height: 100%;
+	.video-player.fullscreen {
+		width: 100vh !important;
+		height: 100vw !important;
+		object-fit: contain !important;
 	}
 
+
+
+	/* 全屏按钮样式优化 */
 	.custom-controls {
 		position: absolute;
-		bottom: 42rpx;
-		/* 调整位置,避免被其他元素覆盖 */
-		right: 20rpx;
+		bottom: 60rpx;
+		right: 40rpx;
+		z-index: 9999;
+		background: rgba(0, 0, 0, 0.6);
+		border-radius: 50%;
+		width: 80rpx;
+		height: 80rpx;
 		display: flex;
 		align-items: center;
-		z-index: 9999;
-		/* 确保在最上层 */
-		background: rgba(0, 0, 0, 0.5);
-		border-radius: 40rpx;
-		padding: 10rpx 20rpx;
-	}
+		justify-content: center;
+		transition: all 0.3s ease;
 
-	/* 优化全屏按钮样式 */
-	.custom-controls:active {
-		transform: scale(0.95);
-		background: rgba(0, 0, 0, 0.6);
-		opacity: 0.8;
+		&:active {
+			transform: scale(0.95);
+			background: rgba(0, 0, 0, 0.8);
+		}
 	}
 
 	.control-icon {
@@ -4631,7 +4692,7 @@
 		height: 46rpx;
 	}
 
-	
+
 
 	@media screen and (orientation: landscape) {
 		.video-container.horizontal-layout {
@@ -4639,10 +4700,10 @@
 			height: 100%;
 		}
 
-		.video-player {
-			width: 100%;
-			height: 100%;
-		}
+		// .video-player {
+		// 	width: 100vh !important;
+		// 	height: 100vw !important;
+		// }
 	}
 
 
@@ -4952,6 +5013,11 @@
 					height: var(--video-height);
 					width: 100%;
 
+					&.screen {
+						width: 100vw;
+						height: 100vh;
+					}
+
 					.video-container {
 						height: var(--video-height);
 						width: 100%;
@@ -4975,11 +5041,21 @@
 							display: flex;
 							align-items: center;
 							justify-content: center;
-							background-color: rgba(77, 77, 77, 0.5);
+							background-color: rgba(57, 57, 57, 0.6);
 							padding: 16rpx 0;
 							color: #fff;
 							border-radius: 28rpx;
 							z-index: 999;
+
+							&.complaint-full {
+								top: 10rpx;
+								left: 82vh;
+							}
+
+							&:active {
+								transform: scale(0.95);
+								background: rgba(50, 50, 50, 0.6);
+							}
 						}
 
 						.txt {
@@ -5010,10 +5086,17 @@
 							top: 15%;
 							right: 24rpx;
 							background-color: rgba(57, 57, 57, 0.6);
-							padding: 6rpx 16rpx;
+							width: 100rpx;
+							height: 70rpx;
+							line-height: 70rpx;
+							text-align: center;
 							color: #fff;
 							border-radius: 15rpx;
 							z-index: 1;
+
+							&.replay-full {
+								left: 82vh;
+							}
 						}
 					}
 				}

+ 1 - 1
pages_shopping/live/confirmCreateOrder.vue

@@ -492,7 +492,7 @@
 					console.log("orderList>>", orderList)
 					const orderListStr = encodeURIComponent(JSON.stringify(orderList));
 					uni.redirectTo({
-						url: `/pages_shopping/live/paymentOrder?orderList=${orderListStr}&couponUserId=${this.couponUserId}&type=${this.type}`
+						url: `/pages_shopping/live/paymentOrder?orderList=${orderListStr}&couponUserId=${this.couponUserId}&type=${this.type}&liveId=${this.liveId}`
 					});
 				} catch (error) {
 					console.error('提交订单错误:', error);

+ 5 - 1
pages_shopping/live/paymentOrder.vue

@@ -91,6 +91,7 @@
 	export default {
 		data() {
 			return {
+				liveId:null,
 				type: '',
 				payPrice: null,
 				newOrder: {},
@@ -118,6 +119,9 @@
 			}
 		},
 		onLoad(options) {
+			if(options.liveId){
+				this.liveId=options.liveId
+			}
 			this.getSafeUserInfo(); // 页面加载时获取用户信息
 			
 			if (options.couponUserId) {
@@ -199,7 +203,7 @@
 									success: function(res) {
 										uni.hideLoading();
 										uni.redirectTo({
-											url: "./success?order=" + JSON.stringify(that.newOrder)
+											url: "./success?order=" + JSON.stringify(that.newOrder)+"&liveId"+this.liveId
 										})
 									},
 									fail: function(err) {

+ 5 - 1
pages_shopping/live/success.vue

@@ -35,9 +35,13 @@
 		data() {
 			return {
 				order: null,
+				liveId:null
 			}
 		},
 		onLoad(option) {
+			if(option.liveId){
+				this.liveId=option.liveId
+			}
 			console.log("options是", option)
 			// this.order=JSON.parse(decodeURIComponent(option.order))
 			this.order = JSON.parse(decodeURIComponent(option.order))
@@ -92,7 +96,7 @@
 				console.log("id是", id)
 				if (id) {
 					uni.redirectTo({
-						url: "./storeOrderDetail?orderId=" + this.order.orderId
+						url: "./storeOrderDetail?orderId=" + this.order.orderId+"&liveId"+this.liveId
 					})
 
 				} else {

+ 3 - 2
utils/common.js

@@ -57,8 +57,9 @@ var checkLiveToken= function() {
 // }
 
 var loginOut= function() {
-	  uni.setStorageSync('AppToken',null);
-	  uni.setStorageSync('userInfo',null);
+	  // uni.setStorageSync('AppToken',null);
+	  // uni.setStorageSync('userInfo',null);
+	  uni.clearStorage();
 }
 var checkLoginState= function() {
 	var token = uni.getStorageSync('AppToken');