liujiaxin 2 ヶ月 前
コミット
f1e8fab111

+ 4 - 0
api/living.js

@@ -166,3 +166,7 @@ export function curCoupon(data) {
 	return request(api.curCoupon, data, 'POST', 'application/json;charset=UTF-8');
 }
 
+// 流量(缓冲百分比)
+export function internetTraffic(data) {
+	return request('/app/live/liveTrafficLog/getInternetTraffic', data, 'POST', 'application/json;charset=UTF-8');
+}

+ 3 - 2
common/request.js

@@ -2,10 +2,11 @@
 export default class Request {
 	http(router, data = {}, method,contentType,url) {
 		let that = this;
+		let path = 'https://api.fhhx.runtzh.com';
+		
+		
 		// let path =  'http://192.168.10.122:7014';
-		let path = 'https://api.fhhx.runtzh.com'; 
 		// let path = 'http://192.168.10.126:7014';
-		
 		   // let path = 'https://live.test.ylrztop.com/live-api'; // 余红奇
 		   // let path = 'http://192.168.10.166:7014'; // 余红奇
 		

+ 5 - 11
pages.json

@@ -890,15 +890,7 @@
 						"navigationBarTextStyle": "black"
 					}
 				},
-				{
-					"path": "live/storeOrderRefundDetails",
-					"style": {
-						"navigationBarTitleText": "售后详情",
-						"enablePullDownRefresh": false,
-						"navigationBarBackgroundColor": "#FF5C03",
-						"navigationBarTextStyle": "white"
-					}
-				},
+				
 				{
 					"path": "live/storeOrderRefundSubmit",
 					"style": {
@@ -920,7 +912,9 @@
 				{
 					"path": "live/refundOrderDetail",
 					"style": {
-						"navigationBarTitleText": "处理进度",
+						"navigationBarTitleText": "",
+						"navigationStyle": "custom",
+						"scrollIndicator": "none",
 						"navigationBarTextStyle": "black",
 						"app-plus": {
 							"bounce": "none"
@@ -1032,7 +1026,7 @@
 					"style": {
 						"navigationBarTitleText": "",
 						"navigationBarTextStyle": "black",
-						"enablePullDownRefresh": false,
+						"enablePullDownRefresh": true,
 						"navigationStyle": "custom",
 						"softinputMode": "adjustResize", // 必须配置这个才能正常获取高度
 						"app-plus": {

+ 142 - 279
pages_course/living.vue

@@ -32,7 +32,6 @@
 						<LikeButton :initialCount="100" :heartsPerClick="5" @like="onLike" />
 						<view>{{liveViewData && liveViewData.like||0}}</view>
 					</view>
-
 					<view class="side-item">
 						<button open-type="share" class="button">
 							<image class="image" src="/static/images/weixin.png" mode="widthFix" />
@@ -146,25 +145,26 @@
 				<view :style="{position: 'fixed',width: '100%',bottom: chatHeight + 'rpx',zIndex:999}">
 					<view class="mt20" :style="{ height: chatHeight ? '64rpx' : '30vh' }">
 						<scroll-view v-if="Array.isArray(talklist)" enable-flex scroll-y="true"
-							class=" pl20 scrolly flex-1 column" style="width: calc(100% - 20rpx); height: 100%;"
-							:scroll-into-view="scrollIntoView">
-
+							class="pl20 scrolly flex-1 column" style="width: calc(100% - 20rpx); height: 100%;"
+							:scroll-top="scrollTop" ref="scrollView">
+							<!-- 聊天消息列表 -->
 							<view class="list justify-start" v-for="(item,talkIndex) in (talklist||[])" :key="talkIndex"
 								:id="`list_${talkIndex}`" v-show="item.cmd!='red'&&item.cmd!='out'&&item.cmd!='entry'">
-								<view class="talk-list  justify-start">
+								<view class="talk-list justify-start">
 									<view class="fs30" style="max-width: 100%;">
 										<text style="color: #FFDA73;">{{item.nickName||"未命名"}}:</text>
 										<text class='colorf'>{{item.msg}}</text>
 									</view>
 								</view>
 							</view>
+
+							<!-- 欢迎消息 -->
 							<view v-if="showWelcomeMessage" class="welcome-message" style="max-width: 100%;">
 								<view class="list justify-start" v-show="inAndOut.cmd=='entry'||inAndOut.cmd=='out'">
 									<view class="talk-list justify-start">
 										<view class="fs30">
 											<text style="color: #ff89d6;">{{inAndOut.nickName||"未命名"}} </text>
-											<text class='colorf'>
-												{{inAndOut.msg}}直播间</text>
+											<text class='colorf'>{{inAndOut.msg}}直播间</text>
 										</view>
 									</view>
 								</view>
@@ -173,16 +173,15 @@
 					</view>
 
 					<!-- 底部输入框和操作按钮 -->
-					<view :class="{'justify-between': true,'p24': true,'pb40': isFocus}"
-						:style="{background: isFocus ? '#fff' : 'transparent',}">
+					<view class="justify-between p24">
 						<view class="x-f"
-							:style="{background: isFocus ? '#ededed' : '#393939' ,padding: '10rpx 14rpx 10rpx 32rpx',boxSizing: 'border-box',borderRadius: '36rpx',width: isFocus ? '100%' : '580rpx'}">
+							:style="{background:'#393939' ,padding: '10rpx 14rpx 10rpx 32rpx',boxSizing: 'border-box',borderRadius: '36rpx',width: isFocus ? '100%' : '580rpx'}">
 							<u-input :placeholder="placeholderText" border="none" customStyle='font-size:24rpx;'
-								v-model="value" shape='circle' :color="isFocus ? '#000000' : '#ffffff'"
-								:placeholderStyle="{color:isFocus ? '#888888' : '#e7e7e7' }" :adjust-position="false"
-								:scroll-with-animation="false" class="ml20" @focus="inputFocus" @blur="inputBlur">
+								v-model="value" shape='circle' color="#ffffff" placeholderStyle="color:#e7e7e7"
+								:adjust-position="false" :scroll-with-animation="false" class="ml20" @focus="inputFocus"
+								@blur="inputBlur">
 							</u-input>
-							<view :class="isFocus ? 'send-input' : 'send'" @click="sendMsg()">发送</view>
+							<view class="send" @click="sendMsg()">发送</view>
 						</view>
 						<view class="justify-between mr15 align-center" v-if="!isFocus">
 							<view class="icon-bg ml20" @click="openCart()">
@@ -191,7 +190,6 @@
 						</view>
 					</view>
 				</view>
-
 			</view>
 
 			<view class="goods" v-if="isShowGoods">
@@ -294,9 +292,6 @@
 					<view class="button" @click="isShowPrize=false">确认</view>
 				</view>
 			</u-popup>
-
-
-
 			<!-- 观众列表弹窗 -->
 			<u-popup :show="showadd" @close="close" @open="openViews" round='20rpx' bgColor='#ffffff' zIndex='10077'>
 				<view class="view-box">
@@ -382,89 +377,7 @@
 					</view>
 				</view>
 			</view>
-
-
-			<!-- <u-popup :show="true" @close="closeShop" round='20rpx' bgColor='#f3f5f9' zIndex='10075'>
-				<view class="coupon">
-					<view class="coupon-top">
-						<view class=" search-top">
-							<image class="w48 h48" src="/static/images/order.png" />
-							<view>我的券码</view>
-						</view>
-					</view>
-
-					<scroll-view enable-flex scroll-y :style="{ height: boxHeight + 'px' }">
-						<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="/static/images/coupon1.png"
-										mode="widthFix"></image>
-									<image v-if="item.status!=0" class="img" src="/static/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 gray" v-if="item.status==1">已使用</div>
-										<div class="bnt gray" v-if="item.status==-1">已过期</div>
-										<div class="bnt bg-color-red" v-if="item.status==0">可使用</div>
-									</div>
-								</div>
-							</div>
-						</div>
-					</scroll-view>
-					<view v-if="couponsList.length == 0" class="no-data-box" @click="getMyCouponList()">
-						<image src="/static/images/no_data.png" mode="aspectFit"></image>
-						<view class="empty-title">暂无数据</view>
-					</view>
-				</view>
-			</u-popup> -->
-			<!-- <u-popup :show="true" @close="closeShop" round='20rpx' bgColor='#f3f5f9' zIndex='10075'>
-				<view class="coupon">
-					<scroll-view enable-flex scroll-y :style="{ height: boxHeight + 'px' }">
-						<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="/static/images/coupon1.png"
-										mode="widthFix"></image>
-									<image v-if="item.status!=0" class="img" src="/static/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 gray" v-if="item.status==1">已使用</div>
-										<div class="bnt gray" v-if="item.status==-1">已过期</div>
-										<div class="bnt bg-color-red" v-if="item.status==0">可使用</div>
-									</div>
-								</div>
-							</div>
-						</div>
-					</scroll-view>
-					<view v-if="couponsList.length == 0" class="no-data-box" @click="getMyCouponList()">
-						<image src="/static/images/no_data.png" mode="aspectFit"></image>
-						<view class="empty-title">暂无数据</view>
-					</view>
-				</view>
-			</u-popup> -->
 		</view>
-
 	</view>
 </template>
 <script>
@@ -488,11 +401,16 @@
 		getLiveViewData, //直播间点赞、关注、在线人数数据
 		currentActivities, //红包 卡片 抽奖
 		getlive,
-		subNotifyLive
+		subNotifyLive,
+		internetTraffic // 流量(缓冲百分比)
 	} from '@/api/living.js'
 	import {
 		getUserInfo
 	} from '@/api/user'
+	import {
+		generateRandomString
+	} from "@/utils/common.js"
+	import dayjs from 'dayjs';
 	import {
 		nextTick
 	} from "vue"
@@ -510,19 +428,16 @@
 		},
 		data() {
 			return {
+				stayTime: 0,
+				startTime: 0,
+
+				scrollTop: 0,
 				isOnload: false,
 				isConnecting: false, // 是否正在连接中
 				previousToken: null,
 				hasInitialized: false,
 
-
-				couponsList: [{
-					status: 0,
-					couponPrice: 59,
-					useMinPrice: 99,
-					couponTitle: '包装袋',
-					limitTime: 2
-				}],
+				couponsList: [],
 				liveViewersData: [],
 				liveUserCalled: false, //调用过watchUserList没
 				liveViewDataTimer: null,
@@ -534,8 +449,6 @@
 				shownEntryUsers: new Set(), // 存储已显示过「进入提示」的用户ID
 				isPageUnloading: false, // 标记页面是否正在卸载(区分主动离开vs重连out)
 
-
-
 				templateId: 'fxYJu817lxHNKXl0hJypb54UnGRCNAoI72Qf-xjKCik',
 				isAgreement: false,
 				socket: null, // WebSocket 实例
@@ -546,12 +459,8 @@
 				reconnectCount: 0, // 当前重连次数
 				maxReconnectAttempts: 3, // 最大重连次数
 				isManualClose: false, // 是否手动关闭(用于区分主动关闭和异常断开)
-				// pingTimeout: 10000, // 心跳响应超时时间(10秒)
 				pingTimeoutTimer: null, // 心跳超时定时器
 
-
-
-				// wsNewUrl: 'ws://192.168.10.126:7014/app/webSocket',
 				// wsNewUrl: 'wss://api.fhhx.runtzh.com/app/webSocket',
 				wsNewUrl: 'wss://api.fhhx.runtzh.com/ws/app/webSocket',
 				// wsNewUrl: 'ws://192.168.10.166:7114/ws/app/webSocket',
@@ -559,11 +468,9 @@
 				qrFrom: null,
 				scene: '',
 
-				liveCountdown: {},
-				countdown: {},
-
+				liveCountdown: {}, //直播倒计时
+				countdown: {}, //抽奖倒计时
 				liveViewData: {},
-
 				chatHeight: 0,
 
 				keyboardHeight: 0,
@@ -655,6 +562,9 @@
 				videoContext: '',
 				livedata: {}, //直播间点赞、关注、在线人数数据
 				userData: {},
+
+				//流量
+				uuId: "",
 			};
 		},
 
@@ -717,6 +627,13 @@
 			// }
 
 		},
+		onPullDownRefresh() {
+			this.getLiveMsg(this.liveId)
+			this.getliveUser()
+			setTimeout(() => {
+				uni.stopPullDownRefresh()
+			}, 1000)
+		},
 		async onShow() {
 			if (this.liveId && !this.isOnload) {
 				await this.getLiveMsg(this.liveItem);
@@ -724,6 +641,7 @@
 			if (!this.userData) {
 				await this.getUserInfo()
 			}
+			this.uuId = generateRandomString(16)
 			const currentToken = await uni.getStorageSync('AppToken')
 			console.log("token在这里", currentToken)
 			const isLiveLogin = uni.getStorageSync('isLiveLogin')
@@ -734,6 +652,7 @@
 			if (this.share && this.share.length > 0) {
 				this.liveId = this.share.liveId
 				this.qrFrom = `&companyId=${this.share.companyId}&companyUserId=${this.share.companyUserId}`;
+				uni.removeStorageSync('share')
 			}
 			if (this.scene) {
 				console.log("有扫码")
@@ -749,6 +668,7 @@
 				if (params.b && params.c) {
 					this.qrFrom = `&companyId=${params.b}&companyUserId=${params.c}`;
 				}
+				uni.removeStorageSync('scene')
 			}
 			if (isLiveLogin) {
 				console.log("登录了")
@@ -773,6 +693,13 @@
 				this.setVideoProgress();
 			});
 			console.log("预约liveiD", this.liveId)
+			if (this.lookTimer) {
+				clearInterval(this.lookTimer)
+				this.lookTimer = null;
+				this.stayTime = 0;
+				this.startTime = 0;
+			}
+			this.startTimer()
 		},
 
 		//分享给好友
@@ -861,6 +788,15 @@
 				clearInterval(this.welcomeTimer);
 				this.welcomeTimer = null;
 			}
+			if (this.trafficInterval != null) {
+				clearInterval(this.trafficInterval)
+			}
+			if (this.lookTimer) {
+				clearInterval(this.lookTimer)
+				this.lookTimer = null;
+				this.stayTime = 0;
+				this.startTime = 0;
+			}
 		},
 
 		mounted() {
@@ -903,6 +839,68 @@
 			}
 		},
 		methods: {
+			startTimer() {
+				this.startTime = Date.now()
+
+				this.lookTimer = setInterval(() => {
+					this.stayTime = Math.floor((Date.now() - this.startTime) / 1000)
+				}, 1000)
+			},
+			// 缓冲
+			getInternetTraffic() {
+				console.log("流量>>>>")
+				// if(!this.liveId) return
+				// const playVideoTime = Math.ceil(this.playTime / this.duration * 100) // 播放百分比
+				// if(this.bufferRate == 0 || this.bufferRate < playVideoTime) {
+				// 	this.bufferRate = playVideoTime
+				// }
+				// if(this.bufferRate == 0 || Number(this.bufferRate.toFixed(2)) == 0) return
+
+				const currentTime = this.stayTime / this.liveItem.duration * 100;
+				console.log("currentTime是什么", currentTime)
+
+				const param = {
+					companyId: this.companyId || '',
+					companyUserId: this.companyUserId || '',
+					userId: this.userData.userId || '',
+					liveId: this.liveId || '',
+					videoType: this.liveItem.videoType,
+					videoId: this.liveItem.videoId,
+
+					uuId: dayjs().format('YYYYMMDD') + this.uuId,
+					duration: this.liveItem.duration,
+					bufferRate: currentTime,
+				}
+				// if(!param.bufferRate) return
+				// internetTraffic(param)
+				console.log("流量1>>>>")
+				internetTraffic(param).then(res => {
+					if (res.code == 200) {
+						console.log("流量成功>>>>", res)
+
+					}
+				}).catch(error => {
+					console.error("流量失败:", error);
+
+				});
+			},
+			scrollToBottom() {
+				this.$nextTick(() => {
+					setTimeout(() => {
+						const query = uni.createSelectorQuery().in(this);
+
+						// 获取 scroll-view 和内容的高度
+						query.select('.scrolly').boundingClientRect(scrollRect => {
+							query.select('.scrolly').scrollOffset(scrollOffset => {
+								// 计算新的滚动位置
+								const newScrollTop = scrollOffset.scrollHeight - scrollRect
+									.height;
+								this.scrollTop = newScrollTop;
+							}).exec();
+						}).exec();
+					}, 100);
+				});
+			},
 			// 恢复页面活动
 			async resumePageActivity() {
 				console.log("恢复了")
@@ -1192,7 +1190,7 @@
 
 			//输入框
 			inputFocus() {
-				this.chatHeight = this.keyboardHeight - 10;
+				this.chatHeight = this.keyboardHeight;
 				this.isFocus = true;
 			},
 			inputBlur() {
@@ -1288,12 +1286,6 @@
 				}
 			},
 
-
-
-
-
-
-
 			// 点击红包
 			onRed() {
 
@@ -1735,23 +1727,21 @@
 				}, 1000); // 延迟时间:500毫秒
 			},
 			async getLiveMsg(liveItem) {
-				// 强化校验:确保 liveItem 存在且包含 liveId
 				if (!liveItem || !this.liveId) {
-					console.error('getLiveMsg 错误:无效的 liveItem', {
-						liveItem: liveItem,
-						currentIndex: this.currentSwiperIndex,
-					});
-					return; // 直接返回,不执行后续逻辑
+					console.error('getLiveMsg 错误:无效的 liveItem');
+					return;
 				}
+
 				try {
 					const res = await liveMsg(this.liveId, 30, 1);
 					if (res.code == 200) {
 						const rows = Array.isArray(res.rows) ? res.rows : [];
 						const reversedTalkList = [...rows].reverse();
-						// .reverse();
 						this.talklist = Array.isArray(reversedTalkList) ? reversedTalkList : [];
+
+						// 获取历史消息后也滚动到底部
 						this.$nextTick(() => {
-							this.scrollIntoView = `list_${reversedTalkList.length - 1}`;
+							this.scrollToBottom();
 						});
 					} else {
 						this.talklist = [];
@@ -1896,6 +1886,7 @@
 								clearInterval(this.liveStartTimer);
 							}
 						}, 1000);
+
 						this.$set(this.liveItem, 'previewUrl', res.data.previewUrl);
 						this.$set(this.liveItem, 'livingUrl', ''); // 清空直播流
 						this.$set(this.liveItem, 'videoUrl', ''); // 清空回放视频
@@ -1920,6 +1911,15 @@
 					await this.getLiveMsg(this.liveItem);
 					await this.getliveViewData(this.liveItem);
 
+					//流量
+					let that = this
+					if (this.trafficInterval != null) {
+						clearInterval(that.trafficInterval)
+					}
+					this.trafficInterval = setInterval(function() {
+						that.getInternetTraffic()
+					}, 5000);
+
 					this.$set(this.liveItem, 'autoplay', res.data.liveType !== 0);
 					this.$set(this.liveItem, 'showType', res.data.showType);
 					this.storeId = res.storeId;
@@ -2314,11 +2314,12 @@
 						this.talklist = newList;
 						// 1. 将消息追加到当前直播间的talklist中(响应式更新)
 						this.talklist = newList;
+						this.scrollToBottom();
 						// 2. 延迟下一帧滚动到最新消息(确保DOM已更新)
-						this.$nextTick(() => {
-							const lastIndex = this.talklist.length - 1;
-							this.scrollIntoView = `list_${lastIndex}`;
-						});
+						// this.$nextTick(() => {
+						// 	const lastIndex = this.talklist.length - 1;
+						// 	this.scrollIntoView = `list_${lastIndex}`;
+						// });
 					} else if (socketMessage.cmd == 'red') {
 						this.redInfo = JSON.parse(socketMessage.data);
 						this.isShowRed = socketMessage.status === 1;
@@ -2380,13 +2381,10 @@
 						}
 					} else if (socketMessage.cmd == 'entry') {
 						try {
-
-
 							if (!this.liveUserCalled) {
 								await this.getliveUser(false);
 								this.liveUserCalled = true;
 							}
-
 							const userIdToEntry = socketMessage.userId;
 							const existingIndex = this.liveViewersData.findIndex(item => item.userId ===
 								userIdToEntry);
@@ -2398,7 +2396,6 @@
 									avatar: socketMessage.avatar
 								}
 								this.liveViewersData.push(liveViewers);
-								console.log("在这里>>>", this.liveViewersData);
 								this.liveUserTotal++;
 							}
 
@@ -2435,8 +2432,6 @@
 								this.liveUserTotal--; // 根据userId删除对应的用户数据
 							}
 						}
-
-
 						this.inAndOut = socketMessage;
 						this.showWelcomeMessage = true;
 
@@ -2621,94 +2616,6 @@
 		justify-content: center;
 	}
 
-	.coupon {
-		padding: 20rpx;
-
-		.coupon-top {}
-
-		.coupon-list {
-			margin-top: 0.25 * 100rpx;
-			box-sizing: border-box;
-
-			.item {
-				display: flex;
-				width: 100%;
-				height: 1.7 * 100rpx;
-				margin-bottom: 0.16 * 100rpx;
-
-				.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;
-
-					.img {
-						position: absolute;
-						width: 2.4 * 100rpx;
-						height: 100%;
-						color: #fff;
-
-					}
-
-					.num {
-						font-size: 0.6 * 100rpx;
-					}
-
-					.pic-num {
-						font-size: 20rpx;
-						z-index: 99;
-					}
-
-				}
-
-				.text {
-					width: 4.5 * 100rpx;
-					padding: 0 0.17 * 100rpx 0 0.24 * 100rpx;
-					background-color: #fff;
-					box-sizing: border-box;
-
-					.condition {
-						font-size: 0.3 * 100rpx;
-						color: #282828;
-						height: 0.93 * 100rpx;
-						line-height: 0.93 * 100rpx;
-						border-bottom: 1px solid #f0f0f0;
-					}
-
-					.data {
-						font-size: 0.2 * 100rpx;
-						color: #999;
-						height: 0.76 * 100rpx;
-
-						.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;
-
-							.gray {
-								background-color: #ccc;
-							}
-						}
-					}
-				}
-
-			}
-		}
-	}
-
 	.swiper-wrapper {
 		position: relative;
 		width: 100%;
@@ -2721,15 +2628,11 @@
 			height: 100%;
 			position: relative;
 			transition: opacity 0.3s ease;
-			transform: translateZ(0); // 开启GPU加速
-			will-change: opacity; // 告诉浏览器提前优化该属性
+			transform: translateZ(0);
+			will-change: opacity;
 		}
-
-
 	}
 
-
-
 	.loading-tip {
 		position: absolute;
 		top: 50%;
@@ -2748,22 +2651,6 @@
 		}
 	}
 
-	.loading-more,
-	.no-more {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		padding: 20rpx 0;
-		color: #999;
-		font-size: 24rpx;
-	}
-
-	.loading-more {
-		flex-direction: column;
-	}
-
-
-
 	/* button自带样式清除 */
 	button::after {
 		border: none !important;
@@ -2794,16 +2681,6 @@
 		transition: opacity 0.3s ease;
 	}
 
-	@keyframes fadeOut {
-		from {
-			opacity: 1;
-		}
-
-		to {
-			opacity: 0;
-		}
-	}
-
 	.send {
 		background-color: #fafafa;
 		border-radius: 28rpx;
@@ -2812,14 +2689,6 @@
 		font-weight: 500;
 	}
 
-	.send-input {
-		background-color: #ffb082;
-		border-radius: 28rpx;
-		padding: 14rpx 16rpx;
-		color: #ffffff;
-		font-weight: 500;
-	}
-
 	.talk-list {
 		max-width: 100%;
 		border-radius: 30rpx;
@@ -2838,8 +2707,6 @@
 		flex-direction: column;
 		justify-content: space-between;
 
-
-
 		.activity-box {
 			position: fixed;
 			top: 188rpx;
@@ -3391,10 +3258,6 @@
 				top: 10rpx;
 			}
 		}
-
-
-
-
 	}
 
 	.icon-bg {
@@ -3422,7 +3285,7 @@
 		}
 
 		to {
-			margin-top: 20rpx;
+			// margin-top: 20rpx;
 			opacity: 1;
 		}
 	}

ファイルの差分が大きいため隠しています
+ 360 - 366
pages_course/videovip.vue


+ 3 - 3
pages_shopping/live/confirmCreateOrder.vue

@@ -36,7 +36,7 @@
 					</view>
 					<view class="right" style="align-items: baseline;">
 						<text class="price-info-unit">¥</text>
-						<text class="price-info-num">{{(orderData.payPrice||0).toFixed(2)}}</text>
+						<text class="price-info-num">{{(orderData.totalPrice||0).toFixed(2)}}</text>
 					</view>
 				</view>
 				<view class="points" @click="openCoupon()">
@@ -72,7 +72,7 @@
 					</view>
 					<view class="right" style="align-items: baseline;">
 						<text class="price-info-unit">¥</text>
-						<text class="price-info-num">{{(orderData.totalPrice||0).toFixed(2)}}</text>
+						<text class="price-info-num">{{(orderData.payPrice||0).toFixed(2)}}</text>
 					</view>
 				</view>
 			</view>
@@ -84,7 +84,7 @@
 					<text class="label">合计:</text>
 					<view class="price">
 						<text class="unit">¥</text>
-						<text class="num">{{(orderData.totalPrice||0).toFixed(2)}}</text>
+						<text class="num">{{(orderData.payPrice||0).toFixed(2)}}</text>
 					</view>
 				</view>
 				<view class="btn" @click="submitOrder">提交订单</view>

+ 18 - 9
pages_shopping/live/order.vue

@@ -33,7 +33,7 @@
 							<text v-if="item.status==-1&&item.refundStatus==0">未退款</text>
 							<text v-if="item.status==-1&&item.refundStatus==1">申请中</text>
 							<text v-if="item.status==-1&&item.refundStatus==2">已退款</text>
-							
+
 							<!-- <text v-if="item.status==-1">申请售后</text> -->
 							<text v-else-if="item.status==-2">退款成功</text>
 							<text v-else-if="item.status==1">待支付</text>
@@ -63,11 +63,11 @@
 							</view>
 							<view class="button-group">
 								<view v-if="item.status == 1" @click="cancel(item)" class="button cancel ">取消订单</view>
+								<view v-if="item.isAfterSales==1" @click="refund(item)" class="button cancel">申请售后
+								</view>
 								<view
-									v-if="item.status !== -1 && item.status !== -3&& item.status !== 1&& item.status !==-2"
-									@click="refund(item)" class="button cancel">申请售后</view>
-								<view v-if="item.status ==3 ||item.status ==5 " class="button cancel"
-									@click.stop="showDelivery(item)">查看物流</view>
+									v-if="item.status ==3 ||item.status ==4 ||item.deliverySn"
+									class="button cancel" @click.stop="showDelivery(item)">查看物流</view>
 								<view v-if="item.status == 1" @click="pay(item)" class="button pay">去支付</view>
 								<view v-if="item.status == 3" @click="confirmReceipt(item)" class="button pay">确认收货
 								</view>
@@ -113,6 +113,14 @@
 					{
 						name: "已完成",
 						status: "4"
+					},
+					{
+						name: "售后中",
+						status: "-1"
+					},
+					{
+						name: "退款成功",
+						status: "-2"
 					}
 				],
 				// mescroll配置
@@ -170,7 +178,7 @@
 						let curPageData = res.data.list || [];
 						// let curPageData = res.rows || [];
 						let curPageLen = curPageData.length;
-						let totalSize = res.total || 0;
+						let totalSize = res.data.total || 0;
 
 						// 如果是第一页,直接赋值
 						if (pageNum === 1) {
@@ -379,7 +387,8 @@
 					justify-content: space-between;
 					font-size: 28rpx;
 					color: #2BC7B9;
-					.lable{
+
+					.lable {
 						color: #5a5a5a;
 						font-size: 26rpx;
 					}
@@ -464,7 +473,7 @@
 							// border-radius: 8rpx;
 							// font-weight: 500;
 							// font-size: 24rpx;
-							width: 155upx;
+							width: 150upx;
 							height: 64upx;
 							line-height: 64upx;
 							font-size: 26upx;
@@ -472,7 +481,7 @@
 							font-weight: 500;
 							text-align: center;
 							border-radius: 32upx;
-							margin-left: 15upx;
+							margin-left: 10upx;
 						}
 
 						.cancel {

+ 197 - 144
pages_shopping/live/refundOrderDetail.vue

@@ -3,7 +3,7 @@
 		<view class="top-cont">
 			<!-- 背景图片 -->
 			<image class="bg" src="../../static/images/order_top_bg.png" mode=""></image>
-			<view class="top-inner">			
+			<view class="top-inner">
 				<!-- 这里是状态栏 -->
 				<view class="fixed-top-box">
 					<view class="status_bar" :style="{height: statusBarHeight}"></view>
@@ -13,15 +13,15 @@
 						<text></text>
 					</view>
 				</view>
-				
+
 				<!-- 顶部固定后站位元素 -->
 				<view style="padding-bottom: 88upx;">
 					<view :style="{height: statusBarHeight}"></view>
 				</view>
 				<!-- 订单状态 -->
-				<view class="order-status" >
+				<view class="order-status">
 					<!-- 处理中 -->
-					<view  v-if="sales.salesStatus == 0" class="inner">
+					<view v-if="sales.salesStatus == 0" class="inner">
 						<view class="img-box">
 							<image src="../../static/images/deal96.png" mode=""></image>
 						</view>
@@ -30,7 +30,7 @@
 							<text class="desc">请等待客服处理...</text>
 						</view>
 					</view>
-					<view  v-if="sales.salesStatus == 1" class="inner">
+					<view v-if="sales.salesStatus == 1" class="inner">
 						<view class="img-box">
 							<image src="../../static/images/close_trade.png" mode=""></image>
 						</view>
@@ -39,7 +39,7 @@
 							<text class="desc">用户已取消售后</text>
 						</view>
 					</view>
-					<view  v-if="sales.salesStatus == 2" class="inner">
+					<view v-if="sales.salesStatus == 2" class="inner">
 						<view class="img-box">
 							<image src="../../static/images/close_trade.png" mode=""></image>
 						</view>
@@ -49,7 +49,7 @@
 						</view>
 					</view>
 					<!-- 退款成功 -->
-					<view  v-if="sales.salesStatus == 3" class="inner">
+					<view v-if="sales.salesStatus == 3" class="inner">
 						<view class="img-box">
 							<image src="../../static/images/compel96.png" mode=""></image>
 						</view>
@@ -58,7 +58,7 @@
 							<text class="desc">已退款,退款金额将按原支付退回</text>
 						</view>
 					</view>
-					
+
 				</view>
 				<!-- 退款信息 -->
 				<view class="refund-info">
@@ -68,24 +68,27 @@
 								<text class="title">退款金额</text>
 								<view class="price-box">
 									<text class="unit">¥</text>
-									<text class="num" v-if="sales.refundAmount!=null">{{sales.refundAmount.toFixed(2)}}</text>
+									<text class="num"
+										v-if="sales.refundAmount!=null">{{sales.refundAmount.toFixed(2)}}</text>
 								</view>
 							</view>
 							<view class="right">
 								<text class="text" v-if="sales.salesStatus==0">
-										<text  class="text success">{{utils.getDictLabelName("storeAfterSalesStatus",sales.status)}}</text>
+									<text
+										class="text success">{{utils.getDictLabelName("storeAfterSalesStatus",sales.status)}}</text>
 								</text>
 							</view>
 						</view>
-			 
+
 						<view class="refund-item" v-if="sales.status>=1&&sales.serviceType==1">
 							<view class="text">收件人:{{sales.consignee}} </view>
 							<view class="text">电话:{{sales.address}} </view>
 							<view class="text">收件地址:{{sales.phoneNumber}}</view>
 						</view>
-						<view class="btn-box"  v-if="sales.salesStatus==0" >
-							<view  v-if="sales.status==1" class="btn cancel" @click="addDeliverySn()" >填写1物流</view>
-							<view  v-if="sales.status==0||sales.status==1" class="btn cancel" @click="revoke()"  >撤销申请</view>
+						<view class="btn-box" v-if="sales.salesStatus==0">
+							<view v-if="sales.status==1" class="btn cancel" @click="addDeliverySn()">填写物流</view>
+							<view v-if="sales.status==0||sales.status==1" class="btn cancel" @click="revoke()">撤销申请
+							</view>
 							<!-- <view  class="btn cancel" @click="showLogs()" >查看进度</view> -->
 						</view>
 						<view class="refund-item" v-if="sales.status==0">
@@ -94,15 +97,15 @@
 						<view class="refund-item" v-if="sales.status==1">
 							<view class="text">平台已审核,等待用户发货 </view>
 						</view>
-						 <view class="refund-item" v-if="sales.status==2">
-						 	<view class="text">用户已发货,等待仓库审核 </view>
-						 </view>
-						 <view class="refund-item" v-if="sales.status==3">
-						 	<view class="text">财务审核 </view>
-						 </view>
-						 <view class="refund-item" v-if="sales.status==4">
-						 	<view class="text">已完成 </view>
-						 </view>
+						<view class="refund-item" v-if="sales.status==2">
+							<view class="text">用户已发货,等待仓库审核 </view>
+						</view>
+						<view class="refund-item" v-if="sales.status==3">
+							<view class="text">财务审核 </view>
+						</view>
+						<view class="refund-item" v-if="sales.status==4">
+							<view class="text">已完成 </view>
+						</view>
 					</view>
 				</view>
 				<view class="content">
@@ -114,7 +117,8 @@
 						</view> -->
 						<!-- 退货列表 -->
 						<view class="goods-list">
-							<view v-if="sales!=null&&sales.isPackage!=1"  v-for="(item,index) in items" :key="index" class="item">
+							<view v-if="sales!=null&&sales.isPackage!=1" v-for="(item,index) in items" :key="index"
+								class="item">
 								<view class="img-box">
 									<image :src="JSON.parse(item.jsonInfo).image" mode="aspectFill"></image>
 								</view>
@@ -132,7 +136,7 @@
 									</view>
 								</view>
 							</view>
-							<view v-if="sales!=null&&sales.isPackage==1"  class="item">
+							<view v-if="sales!=null&&sales.isPackage==1" class="item">
 								<view class="img-box">
 									<image :src="JSON.parse(sales.packageJson).imgUrl" mode="aspectFill"></image>
 								</view>
@@ -158,101 +162,102 @@
 								</view>
 								<view class="det-item">
 									<text class="label">退款金额</text>
-									<text class="text" v-if="sales.refundAmount!=null">¥{{sales.refundAmount.toFixed(2)}}</text>
+									<text class="text"
+										v-if="sales.refundAmount!=null">¥{{sales.refundAmount.toFixed(2)}}</text>
+								</view>
+								<view class="det-item">
+									<text class="label">订单编号</text>
+									<text class="text">{{order.orderCode}}</text>
 								</view>
-								 <view class="det-item">
-								 	<text class="label">订单编号</text>
-								 	<text class="text">{{sales.orderCode}}</text>
-								 </view>
 								<view class="det-item">
 									<text class="label">申请时间</text>
 									<text class="text">{{sales.createTime}}</text>
 								</view>
-								
+
 							</view>
 						</view>
 					</view>
 				</view>
-			
+
 			</view>
 		</view>
-		
+
 	</view>
 </template>
 
 <script>
-	import {getAfterSalesDetails,revoke} from '@/api/storeAfterSales.js'
+	import {
+		getStoreAfterSalesById,
+		revoke
+	} from '@/api/order.js'
 	export default {
 		data() {
 			return {
-				modalTitle:"请输入快递单号",
-				sales:{},
-				items:[],
-				salesId:null,
+				modalTitle: "请输入快递单号",
+				sales: {},
+				items: [],
+				order: null,
+				id:null,
 				// 状态栏的高度
 				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
- 
+
 			};
 		},
 		onLoad(option) {
-			console.log("option是",option)
-			this.salesId = option.id
+			console.log("option是", option)
+			this.id = option.id
 
 		},
 		onShow() {
-			this.getAfterSalesDetails()
+			this.getStoreAfterSalesById()
 		},
 		methods: {
-			addDeliverySn(){
-				console.log("点了填写物流")
-				console.log("点了填写物流", this.salesId)
+			addDeliverySn() {
 				uni.navigateTo({
-					url: './refundOrderDelivery?salesId=' + this.salesId
-				}) 
+					url: './refundOrderDelivery?id=' + this.id
+				})
 			},
-			revoke(){
-				var data={salesId:this.salesId};
+			revoke() {
+				var data = {
+					id: this.id
+				};
 				revoke(data).then(res => {
-					if(res.code==200){
-						 uni.showToast({
-						 	icon:'success',
-						 	title:'操作成功'
-						 });
-						 setTimeout(function() {
-							 uni.$emit('refreshAfterSales');
-							 uni.navigateBack({
-								 delta: 1
-							 })
-						 }, 500);
-						 
-					}else{
+					if (res.code == 200) {
 						uni.showToast({
-							icon:'none',
+							icon: 'success',
+							title: '操作成功'
+						});
+						setTimeout(function() {
+							uni.$emit('refreshAfterSales');
+							uni.navigateBack({
+								delta: 1
+							})
+						}, 500);
+
+					} else {
+						uni.showToast({
+							icon: 'none',
 							title: res.msg
 						});
-						 
+
 					}
 				});
 			},
-			getAfterSalesDetails() {
+			getStoreAfterSalesById() {
 				//联网加载数据
-				var that = this;
-				var data = {
-					salesId:this.salesId,
-
-				};
-				getAfterSalesDetails(data).then(res => {
-					if(res.code==200){
+				getStoreAfterSalesById(this.id).then(res => {
+					if (res.code == 200) {
 						//设置列表数据
-						 this.sales=res.sales;
-						 this.items=res.items;
-						
-					}else{
+						this.sales = res.sales;
+						this.items = res.items;
+						this.order = res.order;
+
+					} else {
 						uni.showToast({
-							icon:'none',
+							icon: 'none',
 							title: res.msg
 						});
-						 
+
 					}
 				});
 			},
@@ -260,18 +265,13 @@
 			back() {
 				uni.navigateBack()
 			},
-			showLogs(status) {
-				uni.navigateTo({
-					url: './refundOrderLogs?orderStatus=' + status
-				})
-			},
-			
+
 		}
 	}
 </script>
 
 <style lang="scss">
-	.fixed-top-box{
+	.fixed-top-box {
 		width: 100%;
 		background: linear-gradient(135deg, #2BC7B9 0%, #60CDC3 100%);
 		position: fixed;
@@ -279,11 +279,13 @@
 		left: 0;
 		z-index: 1000;
 	}
-	.top-cont{
+
+	.top-cont {
 		width: 100%;
 		height: 500upx;
 		position: relative;
-		.bg{
+
+		.bg {
 			width: 100%;
 			height: 100%;
 			position: absolute;
@@ -291,62 +293,73 @@
 			left: 0;
 			z-index: 1;
 		}
-		.top-inner{
+
+		.top-inner {
 			width: 100%;
 			height: 100%;
 			position: absolute;
 			top: 0;
 			left: 0;
 			z-index: 2;
-			.back-box{
+
+			.back-box {
 				height: 88upx;
 				padding-left: 22upx;
 				display: flex;
 				align-items: center;
 				justify-content: space-between;
 				padding: 0 20upx;
-				image{
+
+				image {
 					width: 40upx;
 					height: 40upx;
 				}
-				.title{
+
+				.title {
 					font-size: 36upx;
 					font-family: PingFang SC;
 					font-weight: 500;
 					color: #FFFFFF;
 				}
 			}
-			.order-status{
+
+			.order-status {
 				margin-top: 60upx;
 				display: flex;
 				align-items: center;
 				justify-content: space-between;
 				padding: 0 30upx;
-				.inner{
+
+				.inner {
 					display: flex;
 					align-items: center;
-					.img-box{
+
+					.img-box {
 						width: 96upx;
 						height: 96upx;
 						margin-right: 30upx;
-						image{
+
+						image {
 							width: 100%;
 							height: 100%;
 						}
 					}
-					.status-box{
+
+					.status-box {
 						height: 96upx;
 						display: flex;
 						flex-direction: column;
 						justify-content: center;
-						.status{
+
+						.status {
 							font-size: 40upx;
 							font-family: PingFang SC;
 							font-weight: bold;
 							color: #FFFFFF;
 							line-height: 1;
 						}
-						.desc{
+
+						.desc {
 							font-size: 26upx;
 							font-family: PingFang SC;
 							font-weight: 500;
@@ -354,10 +367,12 @@
 							line-height: 1;
 							margin-top: 30upx;
 						}
-						.det-box{
+
+						.det-box {
 							display: flex;
 							align-items: center;
-							image{
+
+							image {
 								width: 14upx;
 								height: 24upx;
 								margin-left: 12upx;
@@ -367,24 +382,29 @@
 					}
 				}
 			}
-			.refund-info{
+
+			.refund-info {
 				margin-top: 50upx;
 				padding: 0 20upx;
-				.inner{
-					
+
+				.inner {
+
 					background: #FFFFFF;
 					border-radius: 16upx;
 					padding: 0 30upx 15upx 30upx;
-					.title-box{
+
+					.title-box {
 						height: 88upx;
 						border-bottom: 1px solid #F0F0F0;
 						display: flex;
 						align-items: center;
 						justify-content: space-between;
-						.left{
+
+						.left {
 							display: flex;
 							align-items: center;
-							.title{
+
+							.title {
 								font-size: 30upx;
 								font-family: PingFang SC;
 								font-weight: bold;
@@ -392,10 +412,12 @@
 								line-height: 1;
 								margin-right: 20upx;
 							}
-							.price-box{
+
+							.price-box {
 								display: flex;
 								align-items: flex-end;
-								.unit{
+
+								.unit {
 									font-size: 24upx;
 									font-family: PingFang SC;
 									font-weight: 500;
@@ -403,7 +425,8 @@
 									line-height: 1.2;
 									margin-right: 4upx;
 								}
-								.num{
+
+								.num {
 									font-size: 32upx;
 									font-family: PingFang SC;
 									font-weight: bold;
@@ -412,10 +435,12 @@
 								}
 							}
 						}
-						.right{
+
+						.right {
 							display: flex;
 							align-items: center;
-							.text{
+
+							.text {
 								font-size: 24upx;
 								font-family: PingFang SC;
 								font-weight: 500;
@@ -423,15 +448,18 @@
 								line-height: 1;
 								margin-right: 10upx;
 							}
-							image{
+
+							image {
 								width: 12upx;
 								height: 22upx;
 							}
 						}
 					}
-					.refund-item{
+
+					.refund-item {
 						margin-top: 40upx;
-						.text{
+
+						.text {
 							margin-bottom: 10upx;
 							font-size: 26upx;
 							font-family: PingFang SC;
@@ -444,62 +472,74 @@
 			}
 		}
 	}
-	.content{
+
+	.content {
 		padding: 0 20upx 20upx;
-		.return-info{
+
+		.return-info {
 			margin-top: 30upx;
 			background: #FFFFFF;
 			border-radius: 16upx;
-			.title-box{
+
+			.title-box {
 				height: 88upx;
 				padding: 0 30upx;
 				display: flex;
 				align-items: center;
 				justify-content: space-between;
-				.label{
+
+				.label {
 					font-size: 30upx;
 					font-family: PingFang SC;
 					font-weight: bold;
 					color: #333333;
 				}
-				.ret-num{
+
+				.ret-num {
 					font-size: 26upx;
 					font-family: PingFang SC;
 					font-weight: 500;
 					color: #999999;
 				}
 			}
-			.goods-list{
+
+			.goods-list {
 				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;
-						.title{
+
+						.title {
 							font-size: 28upx;
 							font-family: PingFang SC;
 							font-weight: 500;
 							color: #333333;
 							line-height: 36upx;
-							.tag{
+
+							.tag {
 								display: inline-block;
 								padding: 0 6upx;
 								height: 30upx;
@@ -515,7 +555,8 @@
 								margin-top: 7upx;
 							}
 						}
-						.spec{
+
+						.spec {
 							margin-top: 18upx;
 							font-size: 24upx;
 							font-family: PingFang SC;
@@ -523,14 +564,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;
@@ -538,7 +582,8 @@
 									line-height: 1.2;
 									margin-right: 4upx;
 								}
-								.num{
+
+								.num {
 									font-size: 32upx;
 									font-family: PingFang SC;
 									font-weight: 500;
@@ -546,7 +591,8 @@
 									line-height: 1;
 								}
 							}
-							.num{
+
+							.num {
 								font-size: 24upx;
 								font-family: PingFang SC;
 								font-weight: 500;
@@ -556,21 +602,25 @@
 						}
 					}
 				}
-				.refund-det-info{
+
+				.refund-det-info {
 					padding-bottom: 30upx;
-					.det-item{
+
+					.det-item {
 						margin-top: 40upx;
 						display: flex;
 						align-items: center;
 						justify-content: space-between;
-						.label{
+
+						.label {
 							font-size: 26upx;
 							font-family: PingFang SC;
 							font-weight: 500;
 							color: #666666;
 							line-height: 1;
 						}
-						.text{
+
+						.text {
 							font-size: 26upx;
 							font-family: PingFang SC;
 							font-weight: 500;
@@ -581,15 +631,17 @@
 				}
 			}
 		}
-		
+
 	}
-	.btn-box{
+
+	.btn-box {
 		margin-top: 15upx;
 		box-sizing: border-box;
 		display: flex;
 		align-items: center;
 		justify-content: flex-end;
-		.btn{
+
+		.btn {
 			width: 155upx;
 			height: 64upx;
 			line-height: 64upx;
@@ -599,15 +651,16 @@
 			text-align: center;
 			border-radius: 32upx;
 			margin-left: 15upx;
-			&:first-child{
+
+			&:first-child {
 				margin-left: 0;
 			}
-			&.cancel{
+
+			&.cancel {
 				border: 1px solid #DDDDDD;
 				color: #666666;
 			}
-			 
+
 		}
 	}
-	
-</style>
+</style>

+ 1 - 2
pages_shopping/live/storeOrderDelivery.vue

@@ -89,8 +89,7 @@
 					if(res.code==200){
 						this.ExpressMulti=res.data
 						this.expressList=res.data[this.actexpress]
-						console.log(this.expressList)
-						console.log(this.ExpressMulti)
+						
 					}
 				})
 			},

+ 10 - 1
pages_shopping/live/storeOrderDetail.vue

@@ -70,7 +70,7 @@
 							<text class="desc">订单已取消</text>
 						</view>
 					</view>
-					<view v-if="order.status == -1" class="inner">
+					<!-- <view v-if="order.status == -1" class="inner">
 						<view class="img-box">
 							<image src="../../static/images/close_trade.png" mode=""></image>
 						</view>
@@ -78,6 +78,15 @@
 							<text class="status">申请售后</text>
 							<text class="desc">请等待客服审核</text>
 						</view>
+					</view> -->
+					<view v-if="order.status == -1" class="inner">
+						<view class="img-box">
+							<image src="../../static/images/close_trade.png" mode=""></image>
+						</view>
+						<view class="status-box">
+							<text class="status">售后中</text>
+							<text class="desc">请等待客服审核</text>
+						</view>
 					</view>
 					<view v-if="order.status == -2" class="inner">
 						<view class="img-box">

+ 0 - 592
pages_shopping/live/storeOrderRefundDetails.vue

@@ -1,592 +0,0 @@
-<template>
-	<view>
-		<view class="top-cont">
-			<view class="bg"></view>
-			<view class="top-inner">			
-				<!-- 订单状态 -->
-				<view class="order-status" >
-					<!-- 处理中 -->
-					<view  v-if="sales.salesStatus == 0" class="inner">
-						<view class="img-box">
-							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/a4bf17c7fb7342118f5ba52911fbcd84.png" mode=""></image>
-						</view>
-						<view class="status-box">
-							<text class="status">售后中</text>
-							<text class="desc">请等待客服处理...</text>
-						</view>
-					</view>
-					<view  v-if="sales.salesStatus == 1" class="inner">
-						<view class="img-box">
-							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/5be93a404ff148c99ff41b39a3b23665.png" mode=""></image>
-						</view>
-						<view class="status-box">
-							<text class="status">售后取消</text>
-							<text class="desc">用户已取消售后</text>
-						</view>
-					</view>
-					<view  v-if="sales.salesStatus == 2" class="inner">
-						<view class="img-box">
-							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/5be93a404ff148c99ff41b39a3b23665.png" mode=""></image>
-						</view>
-						<view class="status-box">
-							<text class="status">售后取消</text>
-							<text class="desc">商家已拒绝...</text>
-						</view>
-					</view>
-					<!-- 退款成功 -->
-					<view  v-if="sales.salesStatus == 3" class="inner">
-						<view class="img-box">
-							<image src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/09e5cf7de97d4ee6aa9f0c778599d760.png" mode=""></image>
-						</view>
-						<view class="status-box">
-							<text class="status">退款成功</text>
-							<text class="desc">已退款,退款金额将按原支付退回</text>
-						</view>
-					</view>
-					
-				</view>
-				<!-- 退款信息 -->
-				<view class="refund-info">
-					<view class="inner">
-						<view class="title-box">
-							<view class="left">
-								<text class="title">退款金额</text>
-								<view class="price-box">
-									<text class="unit">¥</text>
-									<text class="num" v-if="sales.refundAmount!=null">{{sales.refundAmount.toFixed(2)}}</text>
-								</view>
-							</view>
-							<view class="right">
-								<text class="text" >
-										<text  class="text success">
-										</text>
-								</text>
-							</view>
-						</view>
-			 
-						<view class="refund-item" v-if="sales.status>=1&&sales.refundType==1">
-							<view class="text">收件人:{{sales.consignee}} </view>
-							<view class="text">电话:{{sales.address}} </view>
-							<view class="text">收件地址:{{sales.phoneNumber}}</view>
-						</view>
-						<view class="btn-box"  v-if="sales.salesStatus==0" >
-							<view   v-if="sales.status==1"  class="btn cancel" @click="addDeliverySn()"  >填写物流</view>
-							<view  v-if="sales.status==0||sales.status==1" class="btn cancel" @click="revoke()"  >撤销申请</view>
-							<!-- <view  class="btn cancel" @click="showLogs()" >查看进度</view> -->
-						</view>
-						<view class="refund-item" v-if="sales.status==0">
-							<view class="text">已提交等待平台审核 </view>
-						</view>
-						<view class="refund-item" v-if="sales.status==1">
-							<view class="text">平台已审核,等待用户发货 </view>
-						</view>
-						 <view class="refund-item" v-if="sales.status==2">
-						 	<view class="text">用户已发货,等待仓库审核 </view>
-						 </view>
-						 <view class="refund-item" v-if="sales.status==3">
-						 	<view class="text">财务审核 </view>
-						 </view>
-						 <view class="refund-item" v-if="sales.status==4">
-						 	<view class="text">已完成 </view>
-						 </view>
-					</view>
-				</view>
-				<view class="content">
-					<!-- 退货信息 -->
-					<view class="return-info">
-						<!-- 退货列表 -->
-						<view class="goods-list">
-							<view v-if="sales!=null"  v-for="(item,index) in items" :key="index" class="item">
-								<view class="img-box">
-									<image :src="JSON.parse(item.jsonInfo).image==''?'/static/images/drug.svg':JSON.parse(item.jsonInfo).image" mode="aspectFill"></image>
-								</view>
-								<view class="info-box">
-									<view>
-										<view class="title ellipsis2">{{JSON.parse(item.jsonInfo).productName}}</view>
-										<view class="spec">规格:{{JSON.parse(item.jsonInfo).sku}}</view>
-									</view>
-									<view class="price-num">
-										<view class="price">
-											<text class="unit">¥</text>
-											<text class="num">{{JSON.parse(item.jsonInfo).price.toFixed(2)}}</text>
-										</view>
-										<view class="num">x{{JSON.parse(item.jsonInfo).num}}</view>
-									</view>
-								</view>
-							</view>
-							 
-							<!-- 详细信息 -->
-							<view class="refund-det-info">
-								<view class="det-item">
-									<text class="label">退货原因</text>
-									<text class="text">{{sales.reasons}}</text>
-								</view>
-								<view class="det-item">
-									<text class="label">退货说明</text>
-									<text class="text">{{sales.explains}}</text>
-								</view>
-								<view class="det-item">
-									<text class="label">退款金额</text>
-									<text class="text" v-if="sales.refundAmount!=null">¥{{sales.refundAmount.toFixed(2)}}</text>
-								</view>
-								 <view class="det-item">
-								 	<text class="label">订单编号</text>
-								 	<text class="text">{{order.orderCode}}</text>
-								 </view>
-								<view class="det-item">
-									<text class="label">申请时间</text>
-									<text class="text">{{sales.createTime}}</text>
-								</view>
-								
-							</view>
-						</view>
-					</view>
-				</view>
-			
-			</view>
-		</view>
-		
-	</view>
-</template>
-
-<script>
-	import {getStoreAfterSalesById,revoke} from '@/api/order.js'
-	
-	export default {
-		data() {
-			return {
-				statusOptions:[],
-				sales:{},
-				items:[],
-				order:null,
-				salesId:null,
-				// 状态栏的高度
-				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
- 
-			};
-		},
-		onLoad(option) {
-			this.id = option.id
-
-		},
-		onShow() {
-			this.getStoreAfterSalesById()
-			// this.getDictByKey("sys_after_sales_status")
-		},
-		methods: {
-			// getDictByKey(key){
-			// 	var data={key:key}
-			// 	getDictByKey(data).then(
-			// 		res => {
-			// 			if(res.code==200){
-			// 				if(key=="sys_after_sales_status"){
-			// 					this.statusOptions=res.data;
-			// 				}
-			// 			}
-			// 		},
-			// 		err => {
-			// 		}
-			// 	);
-				
-			// },
-			addDeliverySn(){
-				uni.navigateTo({
-					url: './refundOrderDelivery?id=' + this.id
-				}) 
-			},
-			revoke(){
-				var data={id:this.id};
-				revoke(data).then(res => {
-					if(res.code==200){
-						 uni.showToast({
-						 	icon:'success',
-						 	title:'操作成功'
-						 });
-						 setTimeout(function() {
-							 uni.$emit('refreshAfterSales');
-							 uni.navigateBack({
-								 delta: 1
-							 })
-						 }, 500);
-						 
-					}else{
-						uni.showToast({
-							icon:'none',
-							title: res.msg
-						});
-						 
-					}
-				});
-			},
-			getStoreAfterSalesById() {
-				//联网加载数据
-				getStoreAfterSalesById(this.id).then(res => {
-					if(res.code==200){
-						//设置列表数据
-						this.sales=res.sales;
-						this.items=res.items;
-						this.order=res.order;
-					}else{
-						uni.showToast({
-							icon:'none',
-							title: res.msg
-						});
-						 
-					}
-				});
-			},
-		 
-			// showLogs(status) {
-			// 	uni.navigateTo({
-			// 		url: './refundOrderLogs?orderStatus=' + status
-			// 	})
-			// },
-			
-		}
-	}
-</script>
-
-<style lang="scss">
-	.fixed-top-box{
-		width: 100%;
-		background: linear-gradient(135deg, #2BC7B9 0%, #60CDC3 100%);
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 1000;
-	}
-	.top-cont{
-		width: 100%;
-		height: 500upx;
-		position: relative;
-		.bg{
-			width: 100%;
-			height: 350upx;
-			position: absolute;
-			top: 0;
-			left: 0;
-			z-index: 1;
-			background-color: #FF5C03;
-			background: linear-gradient(#FF5C03, #E2C99E);
-			border-radius: 0rpx 0rpx 100rpx 100rpx;
-		}
-		.top-inner{
-			width: 100%;
-			height: 100%;
-			position: absolute;
-			top: 0;
-			left: 0;
-			z-index: 2;
-			.back-box{
-				height: 88upx;
-				padding-left: 22upx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				padding: 0 20upx;
-				image{
-					width: 40upx;
-					height: 40upx;
-				}
-				.title{
-					font-size: 36upx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #FFFFFF;
-				}
-			}
-			.order-status{
-				margin-top: 60upx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				padding: 0 30upx;
-				.inner{
-					display: flex;
-					align-items: center;
-					.img-box{
-						width: 96upx;
-						height: 96upx;
-						margin-right: 30upx;
-						image{
-							width: 100%;
-							height: 100%;
-						}
-					}
-					.status-box{
-						height: 96upx;
-						display: flex;
-						flex-direction: column;
-						justify-content: center;
-						.status{
-							font-size: 40upx;
-							font-family: PingFang SC;
-							font-weight: bold;
-							color: #FFFFFF;
-							line-height: 1;
-						}
-						.desc{
-							font-size: 26upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #FFFFFF;
-							line-height: 1;
-							margin-top: 30upx;
-						}
-						.det-box{
-							display: flex;
-							align-items: center;
-							image{
-								width: 14upx;
-								height: 24upx;
-								margin-left: 12upx;
-								margin-top: 30upx;
-							}
-						}
-					}
-				}
-			}
-			.refund-info{
-				margin-top: 50upx;
-				padding: 0 20upx;
-				.inner{
-					
-					background: #FFFFFF;
-					border-radius: 16upx;
-					padding: 0 30upx 15upx 30upx;
-					.title-box{
-						height: 88upx;
-						border-bottom: 1px solid #F0F0F0;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						.left{
-							display: flex;
-							align-items: center;
-							.title{
-								font-size: 30upx;
-								font-family: PingFang SC;
-								font-weight: bold;
-								color: #333333;
-								line-height: 1;
-								margin-right: 20upx;
-							}
-							.price-box{
-								display: flex;
-								align-items: flex-end;
-								.unit{
-									font-size: 24upx;
-									font-family: PingFang SC;
-									font-weight: 500;
-									color: #FF6633;
-									line-height: 1.2;
-									margin-right: 4upx;
-								}
-								.num{
-									font-size: 32upx;
-									font-family: PingFang SC;
-									font-weight: bold;
-									color: #FF6633;
-									line-height: 1;
-								}
-							}
-						}
-						.right{
-							display: flex;
-							align-items: center;
-							.text{
-								font-size: 24upx;
-								font-family: PingFang SC;
-								font-weight: 500;
-								color: #999999;
-								line-height: 1;
-								margin-right: 10upx;
-							}
-							image{
-								width: 12upx;
-								height: 22upx;
-							}
-						}
-					}
-					.refund-item{
-						margin-top: 40upx;
-						.text{
-							margin-bottom: 10upx;
-							font-size: 26upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #666666;
-							line-height: 1.5;
-						}
-					}
-				}
-			}
-		}
-	}
-	.content{
-		padding: 0 20upx 20upx;
-		.return-info{
-			margin-top: 30upx;
-			background: #FFFFFF;
-			border-radius: 16upx;
-			.title-box{
-				height: 88upx;
-				padding: 0 30upx;
-				display: flex;
-				align-items: center;
-				justify-content: space-between;
-				.label{
-					font-size: 30upx;
-					font-family: PingFang SC;
-					font-weight: bold;
-					color: #333333;
-				}
-				.ret-num{
-					font-size: 26upx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #999999;
-				}
-			}
-			.goods-list{
-				padding: 0 30upx;
-				background-color: #FFFFFF;
-				border-radius: 16upx;
-				.item{
-					padding: 30upx 0;
-					border-bottom: 1px solid #EDEEEF;
-					display: flex;
-					align-items: center;
-					.img-box{
-						width: 160upx;
-						height: 160upx;
-						margin-right: 30upx;
-						image{
-							width: 100%;
-							height: 100%;
-						}
-					}
-					.info-box{
-						width: calc(100% - 190upx);
-						height: 160upx;
-						display: flex;
-						flex-direction: column;
-						justify-content: space-between;
-						.title{
-							font-size: 28upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #333333;
-							line-height: 36upx;
-							.tag{
-								display: inline-block;
-								padding: 0 6upx;
-								height: 30upx;
-								background: linear-gradient(90deg, #2BC7B9 0%, #2BC7A4 100%);
-								border-radius: 4upx;
-								margin-right: 10upx;
-								font-size: 22upx;
-								font-family: PingFang SC;
-								font-weight: bold;
-								color: #FFFFFF;
-								line-height: 30upx;
-								float: left;
-								margin-top: 7upx;
-							}
-						}
-						.spec{
-							margin-top: 18upx;
-							font-size: 24upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #999999;
-							line-height: 1;
-						}
-						.price-num{
-							display: flex;
-							align-items: center;
-							justify-content: space-between;
-							.price{
-								display: flex;
-								align-items: flex-end;
-								.unit{
-									font-size: 24upx;
-									font-family: PingFang SC;
-									font-weight: 500;
-									color: #111111;
-									line-height: 1.2;
-									margin-right: 4upx;
-								}
-								.num{
-									font-size: 32upx;
-									font-family: PingFang SC;
-									font-weight: 500;
-									color: #111111;
-									line-height: 1;
-								}
-							}
-							.num{
-								font-size: 24upx;
-								font-family: PingFang SC;
-								font-weight: 500;
-								color: #999999;
-								line-height: 1;
-							}
-						}
-					}
-				}
-				.refund-det-info{
-					padding-bottom: 30upx;
-					.det-item{
-						margin-top: 40upx;
-						display: flex;
-						align-items: center;
-						justify-content: space-between;
-						.label{
-							font-size: 26upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #666666;
-							line-height: 1;
-						}
-						.text{
-							font-size: 26upx;
-							font-family: PingFang SC;
-							font-weight: 500;
-							color: #222222;
-							line-height: 1;
-						}
-					}
-				}
-			}
-		}
-		
-	}
-	.btn-box{
-		margin-top: 15upx;
-		box-sizing: border-box;
-		display: flex;
-		align-items: center;
-		justify-content: flex-end;
-		.btn{
-			width: 155upx;
-			height: 64upx;
-			line-height: 64upx;
-			font-size: 26upx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			text-align: center;
-			border-radius: 32upx;
-			margin-left: 15upx;
-			&:first-child{
-				margin-left: 0;
-			}
-			&.cancel{
-				border: 1px solid #DDDDDD;
-				color: #666666;
-			}
-			 
-		}
-	}
-	
-</style>

+ 1 - 1
pages_shopping/live/storeOrderRefundList.vue

@@ -171,7 +171,7 @@
 			showDetail(item) {
 				console.log("查看",item)
 				uni.navigateTo({
-					url: './storeOrderRefundDetails?id=' + item.id
+					url: './refundOrderDetail?id=' + item.id
 				})
 			},
 			

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません