liujiaxin 2 weeks ago
parent
commit
d2a089f6f8

+ 67 - 52
App.vue

@@ -7,7 +7,17 @@
 			wsUrl: 'wss://websocket.cdwjyyh.com',
 			appId: 'wx503cf8ab31f83dd4'
 		},
-		onLaunch: function() {
+		onLaunch: function(options) {
+			console.log("onLaunch在这里", options)
+
+			if (options.query.companyId) {
+				uni.setStorageSync('share', options.query)
+			}
+
+			if (options.query.scene) {
+				uni.setStorageSync('scene', options.query.scene)
+			}
+
 			// uni.$TUIKit = TIM.create({
 			// 	SDKAppID: 1400693126
 			// });
@@ -25,21 +35,21 @@
 			// uni.$TUIKit.on(uni.$TUIKitEvent.ERROR, this.onTIMError);
 			// uni.$TUIKit.on(uni.$TUIKitEvent.NET_STATE_CHANGE, this.onNetStateChange);
 			// uni.$TUIKit.on(uni.$TUIKitEvent.SDK_RELOAD, this.onSDKReload);
-			
+
 			console.log('IM')
 		},
-		onShow: function () {
-		    console.log('App Show')
-		    uni.getSystemInfo({
+		onShow: function() {
+			console.log('App Show')
+			uni.getSystemInfo({
 				success: (result) => {
 					// 获取手机系统的状态栏高度(不同手机的状态栏高度不同)
 					// console.log('当前手机的状态栏高度',result.statusBarHeight)
 					let statusBarHeight = result.statusBarHeight + 'px'
-					
+
 					// 获取右侧胶囊的信息 单位px
 					//#ifndef H5 || APP-PLUS
 					const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
-					
+
 					//bottom: 胶囊底部距离屏幕顶部的距离
 					//height: 胶囊高度
 					//left:   胶囊左侧距离屏幕左侧的距离
@@ -54,15 +64,15 @@
 					let menuRight = result.screenWidth - menuButtonInfo.right + 'px'
 					let menuTop = menuButtonInfo.top + 'px'
 					let contentTop = result.statusBarHeight + 44 + 'px'
-			
+
 					let menuInfo = {
-						statusBarHeight: statusBarHeight,//状态栏高度----用来给自定义导航条页面的顶部导航条设计padding-top使用:目的留出系统的状态栏区域
-						menuWidth: menuWidth,//右侧的胶囊宽度--用来给自定义导航条页面的左侧胶囊设置使用
-						menuHeight: menuHeight,//右侧的胶囊高度--用来给自定义导航条页面的左侧胶囊设置使用
-						menuBorderRadius: menuBorderRadius,//一半的圆角--用来给自定义导航条页面的左侧胶囊设置使用
-						menuRight: menuRight,//右侧的胶囊距离右侧屏幕距离--用来给自定义导航条页面的左侧胶囊设置使用
-						menuTop: menuTop,//右侧的胶囊顶部距离屏幕顶部的距离--用来给自定义导航条页面的左侧胶囊设置使用
-						contentTop: contentTop,//内容区距离页面最上方的高度--用来给自定义导航条页面的内容区定位距离使用
+						statusBarHeight: statusBarHeight, //状态栏高度----用来给自定义导航条页面的顶部导航条设计padding-top使用:目的留出系统的状态栏区域
+						menuWidth: menuWidth, //右侧的胶囊宽度--用来给自定义导航条页面的左侧胶囊设置使用
+						menuHeight: menuHeight, //右侧的胶囊高度--用来给自定义导航条页面的左侧胶囊设置使用
+						menuBorderRadius: menuBorderRadius, //一半的圆角--用来给自定义导航条页面的左侧胶囊设置使用
+						menuRight: menuRight, //右侧的胶囊距离右侧屏幕距离--用来给自定义导航条页面的左侧胶囊设置使用
+						menuTop: menuTop, //右侧的胶囊顶部距离屏幕顶部的距离--用来给自定义导航条页面的左侧胶囊设置使用
+						contentTop: contentTop, //内容区距离页面最上方的高度--用来给自定义导航条页面的内容区定位距离使用
 					}
 					uni.setStorageSync('menuInfo', menuInfo)
 					//#endif
@@ -70,12 +80,12 @@
 				fail: (error) => {
 					console.log(error)
 				}
-		    })
+			})
 		},
 		onHide: function() {
 			console.log('App Hide')
 		},
-		 
+
 		methods: {
 			// TODO:
 			resetLoginData() {
@@ -91,13 +101,15 @@
 				// logger.log(`| app |  resetLoginData | globalData: ${this.globalData}`);
 			},
 			onTIMError() {},
-			onSDKReady({name}) {
-				 console.log("im注册:"+name)
-				  const isSDKReady = name === uni.$TUIKitEvent.SDK_READY ? true : false
-				  console.log("im注册:"+isSDKReady)
-					uni.$emit('isSDKReady', {
-						isSDKReady: true
-					});
+			onSDKReady({
+				name
+			}) {
+				console.log("im注册:" + name)
+				const isSDKReady = name === uni.$TUIKitEvent.SDK_READY ? true : false
+				console.log("im注册:" + isSDKReady)
+				uni.$emit('isSDKReady', {
+					isSDKReady: true
+				});
 			},
 			onNetStateChange() {},
 			onSDKReload() {},
@@ -107,12 +119,12 @@
 					title: '您被踢下线',
 					icon: 'error'
 				});
-				
+
 			}
 		}
 	}
 </script>
- 
+
 <style lang="scss">
 	/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
 	@import "@/uni_modules/uview-ui/index.scss";
@@ -120,44 +132,47 @@
 	@import '@/assets/css/common.scss';
 </style>
 <style lang="less">
-/*每个页面公共css */
+	/*每个页面公共css */
 	// @import 'animate.css';
 	@import './assets/iconfont/iconfont.css';
 	@import './assets/css/common.less';
-	page{
+
+	page {
 		background-color: #f6f6f6;
 	}
-	::-webkit-scrollbar{
-	    width: 0 !important;
-	    height: 0 !important;
-	    
+
+	::-webkit-scrollbar {
+		width: 0 !important;
+		height: 0 !important;
+
 	}
 </style>
 <style>
 	/*每个页面公共css */
 	/* 解决小程序和app滚动条的问题 */
 	/* #ifdef MP-WEIXIN || APP-PLUS */
-		::v-deep ::-webkit-scrollbar {
-		    display: none !important;
-		    width: 0 !important;
-		    height: 0 !important;
-		    -webkit-appearance: none;
-		    background: transparent;
-		    color: transparent;
-		}
+	::v-deep ::-webkit-scrollbar {
+		display: none !important;
+		width: 0 !important;
+		height: 0 !important;
+		-webkit-appearance: none;
+		background: transparent;
+		color: transparent;
+	}
+
 	/* #endif */
-	
+
 	/* 解决H5 的问题 */
 	/* #ifdef H5 */
-	    uni-scroll-view .uni-scroll-view::-webkit-scrollbar {
-	    	/* 隐藏滚动条,但依旧具备可以滚动的功能 */
-			display: none;
-		    width: 0 !important;
-		    height: 0 !important;
-		    -webkit-appearance: none;
-		    background: transparent;
-		    color: transparent;
-	    }
+	uni-scroll-view .uni-scroll-view::-webkit-scrollbar {
+		/* 隐藏滚动条,但依旧具备可以滚动的功能 */
+		display: none;
+		width: 0 !important;
+		height: 0 !important;
+		-webkit-appearance: none;
+		background: transparent;
+		color: transparent;
+	}
+
 	/* #endif */
-</style>
- 
+</style>

+ 2 - 1
api/living.js

@@ -164,4 +164,5 @@ export function coupon(data) {
 //优惠券列表
 export function curCoupon(data) {
 	return request(api.curCoupon, data, 'POST', 'application/json;charset=UTF-8');
-}
+}
+

+ 13 - 0
api/order.js

@@ -202,3 +202,16 @@ export function getMyStoreOrderById(orderId, data = {}) {
 export function computed(data ) {
 	return request(api.computed, data, 'POST', 'application/json;charset=UTF-8');
 }
+
+
+//填写物流
+ export function addDelivery(data) {
+ 	 return request('/app/live/storeAfterSales/addDelivery',data,'POST','application/json;charset=UTF-8');
+ }
+
+ export function getExpressMulti(data) {
+ 	 return request('/app/live/liveOrder/getExpressMulti',data,'POST','application/json;charset=UTF-8');
+ }
+ export function getExpress(data) {
+ 	 return request('/app/live/liveOrder/getExpress',data,'POST','application/json;charset=UTF-8');
+ }

+ 31 - 4
pages.json

@@ -872,6 +872,14 @@
 						"enablePullDownRefresh": false
 					}
 
+				},{
+					"path": "live/storeOrderDelivery",
+					"style": {
+						"navigationBarTitleText": "物流信息",
+						"navigationStyle": "custom",
+						"enablePullDownRefresh": false
+					}
+
 				},
 				{
 					"path": "live/storeOrderRefundList",
@@ -910,15 +918,26 @@
 					}
 				},
 				{
-					"path": "live/storeOrderDelivery",
+					"path": "live/refundOrderDetail",
+					"style": {
+						"navigationBarTitleText": "处理进度",
+						"navigationBarTextStyle": "black",
+						"app-plus": {
+							"bounce": "none"
+						}
+					}
+				},
+				{
+					"path": "live/refundOrderDelivery",
 					"style": {
 						"navigationBarTitleText": "物流信息",
-						"enablePullDownRefresh": false
+						"navigationBarTextStyle": "black",
+						"app-plus": {
+							"bounce": "none"
+						}
 					}
-
 				}
 
-
 			]
 		},
 		{
@@ -954,6 +973,14 @@
 					}
 
 				},
+				{
+					"path": "becomeVIP",
+					"style": {
+						"navigationBarTitleText": "注册会员",
+						"enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+					}
+				},
 				{
 					"path": "webview",
 					"style": {

+ 515 - 492
pages/auth/login.vue

@@ -1,531 +1,466 @@
 <template>
-  <view class="container">
-    <!-- #ifdef MP-WEIXIN -->
-    <view  class="force-login-wrap">
-      <view class="force-login__content y-f">
-        <view class="logo">
-        	<view class="logo-img">
-        		<image  src="https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20250721/efce6c594de34caba6537992083a5e47.png"></image>
-        	</view>
-        	<view class="title">芳华惠选</view>
-        </view>
-        <view class="login-notice">为了提供更优质的服务,请先登录</view>
-		<!-- <button
+	<view class="container">
+		<!-- #ifdef MP-WEIXIN -->
+		<view class="force-login-wrap">
+			<view class="force-login__content y-f">
+				<view class="logo">
+					<view class="logo-img">
+						<image
+							src="https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20250721/efce6c594de34caba6537992083a5e47.png">
+						</image>
+					</view>
+					<view class="title">芳华惠选</view>
+				</view>
+				<view class="login-notice">为了提供更优质的服务,请先登录</view>
+				<!-- <button
 			class="author-btn"
 			@click="wxLogin()"  >微信授权登录</button> -->
-		<view class="btns">
-			<button
-				class="author-btn"
-				open-type="getPhoneNumber"
-				@getphonenumber="phoneLogin"  >一键授权手机号登录</button>
-			<button class="author-btn" v-if="isAgreement==false" @click="handleAgree()">一键授权手机号登录</button>
-			
-		</view>
-		<!-- <button
+				<view class="btns">
+					<button class="author-btn" open-type="getPhoneNumber"
+						@getphonenumber="phoneLogin">一键授权手机号登录</button>
+					<button class="author-btn" v-if="isAgreement==false" @click="handleAgree()">一键授权手机号登录</button>
+
+				</view>
+				<!-- <button
 			class="author-btn"
 			open-type="getPhoneNumber"
 			@getphonenumber="phoneLogin"  >微信授权登录</button> -->
-		<button class="close-btn" @tap="back">暂不登录</button>
-			
-		<view class="tips">
-			<checkbox  :checked="isAgreement" @click="handleAgreement()" />
-			<view  @click="handleAgreement()">您同意并接受</view>
-		 	<view class="btn"  @click="openH5(1)">《用户协议》</view>
-		 	<view class="btn" @click="openH5(2)">《隐私保护》</view>
+				<button class="close-btn" @tap="back">暂不登录</button>
+
+				<view class="tips">
+					<checkbox :checked="isAgreement" @click="handleAgreement()" />
+					<view @click="handleAgreement()">您同意并接受</view>
+					<view class="btn" @click="openH5(1)">《用户协议》</view>
+					<view class="btn" @click="openH5(2)">《隐私保护》</view>
+				</view>
+			</view>
 		</view>
-      </view>
-    </view>
-    <!-- #endif -->
-	 
-    
-  </view>
+		<!-- #endif -->
+
+
+	</view>
 </template>
 
 <script>
-import { loginByMiniApp,getUserInfo,loginByMp } from '@/api/user'
-export default {
-	data() {
-		return {
-			code:null,
-			isAgreement:false,
-		}
-	},
-	computed: {
-	},
-	onLoad(option) 
-	{
-		// #ifdef MP-WEIXIN
-		uni.$on('refreshLogin', () => {
-			uni.navigateBack({
-				delta:1
-			})
-		})
-		//选获取CODE,防止后请求的时候腾讯服务端未同步报错
-		this.getCode();
-		// #endif
-		
-		// #ifdef H5
-		if (this.checkWeixin()) {
-			this.getWxCode()
-		} else {
-			uni.showToast({
-				icon:'none',
-				title: "请在微信中打开",
-			});
-			//跳转到手机号密码登录
-		}
-		// #endif
-	 
-	},
-	onUnload() {
-	},
-	mounted() {
-    
-	},
-	methods: {
-		handleAgree(){
-			console.log(123)
-			
-			if(!this.isAgreement){
-			  	uni.showToast({
-			  		icon:'none',
-			  		title: "请先同意协议后再登录",
-			  	});
+	import {
+		loginByMiniApp,
+		getUserInfo,
+		loginByMp
+	} from '@/api/user'
+	export default {
+		data() {
+			return {
+				isLive: null,
+				code: null,
+				isAgreement: false,
 			}
-			
 		},
-		 
-		checkWeixin(){
-			var ua = window.navigator.userAgent.toLowerCase();
-			if (ua.match(/micromessenger/i) == 'micromessenger') {
-				return true;
+		computed: {},
+		onLoad(option) {
+			// #ifdef MP-WEIXIN
+			uni.$on('refreshLogin', () => {
+				uni.navigateBack({
+					delta: 1
+				})
+			})
+			//选获取CODE,防止后请求的时候腾讯服务端未同步报错
+			this.getCode();
+			// #endif
+
+			// #ifdef H5
+			if (this.checkWeixin()) {
+				this.getWxCode()
 			} else {
-				return false;
+				uni.showToast({
+					icon: 'none',
+					title: "请在微信中打开",
+				});
+				//跳转到手机号密码登录
 			}
+			// #endif
+
 		},
-		//URL地址是否存在CODE
-		getUrlCode(name) {
-			return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1]
-				.replace(/\+/g, '%20')) || null
-		},
-		//获取微信CODE
-		getWxCode() {
-			//在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头; 
-			//http://shequ.natapp1.cc/#/pages/index/index?deviceId=8
-			var appId="wx503cf8ab31f83dd4";
-			var url="https://api.zxfh.cdwjyyh.com";
-			window.location.href ='https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appId+'&redirect_uri=' +encodeURIComponent(url+"/#/pages/auth/wxLogin") +'&response_type=code&scope=snsapi_userinfo&state=JeffreySu-954&connect_redirect=1#wechat_redirect';
-			//console.log('https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appId+'&redirect_uri=' +encodeURIComponent("http://shequ.natapp1.cc/#/pages/index/index?deviceId="+this.deviceId) +'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect')
-			// redirect_uri是授权成功后,跳转的url地址,微信会帮我们跳转到该链接,并且通过?的形式拼接code
+		onUnload() {},
+		mounted() {
+
 		},
-		handleAgreement(){
-			this.isAgreement=!this.isAgreement;
-			console.log(545454)
-			uni.requestSubscribeMessage({
-					tmplIds: ['K0RUbGggwYz7V4yjtJjFVXtthnx4hOJgHvr7RNOyRSE','5ZSzz2nPmJo9EuenZa78mQPScoOMc84LnEfEpV0-i04'], // 模板ID列表,从微信公众平台获取
+		methods: {
+			handleAgree() {
+				console.log(123)
+
+				if (!this.isAgreement) {
+					uni.showToast({
+						icon: 'none',
+						title: "请先同意协议后再登录",
+					});
+				}
+
+			},
+
+			checkWeixin() {
+				var ua = window.navigator.userAgent.toLowerCase();
+				if (ua.match(/micromessenger/i) == 'micromessenger') {
+					return true;
+				} else {
+					return false;
+				}
+			},
+			//URL地址是否存在CODE
+			getUrlCode(name) {
+				return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) ||
+					[, ''
+					])[1]
+					.replace(/\+/g, '%20')) || null
+			},
+			//获取微信CODE
+			getWxCode() {
+				//在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头; 
+				//http://shequ.natapp1.cc/#/pages/index/index?deviceId=8
+				var appId = "wx503cf8ab31f83dd4";
+				var url = "https://api.zxfh.cdwjyyh.com";
+				window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appId +
+					'&redirect_uri=' + encodeURIComponent(url + "/#/pages/auth/wxLogin") +
+					'&response_type=code&scope=snsapi_userinfo&state=JeffreySu-954&connect_redirect=1#wechat_redirect';
+				//console.log('https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appId+'&redirect_uri=' +encodeURIComponent("http://shequ.natapp1.cc/#/pages/index/index?deviceId="+this.deviceId) +'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect')
+				// redirect_uri是授权成功后,跳转的url地址,微信会帮我们跳转到该链接,并且通过?的形式拼接code
+			},
+			handleAgreement() {
+				this.isAgreement = !this.isAgreement;
+				console.log(545454)
+				uni.requestSubscribeMessage({
+					tmplIds: ['K0RUbGggwYz7V4yjtJjFVXtthnx4hOJgHvr7RNOyRSE',
+						'5ZSzz2nPmJo9EuenZa78mQPScoOMc84LnEfEpV0-i04'
+					], // 模板ID列表,从微信公众平台获取
 					success(res) {
-					  console.log('订阅消息成功', res);
-					  if(res.errMsg=='requestSubscribeMessage:ok'){
-						  console.log('订阅消息成功11111');
-					  }
-					  // 根据返回的 res 处理后续逻辑,例如显示成功消息给用户
+						console.log('订阅消息成功', res);
+						if (res.errMsg == 'requestSubscribeMessage:ok') {
+							console.log('订阅消息成功11111');
+						}
+						// 根据返回的 res 处理后续逻辑,例如显示成功消息给用户
 					},
 					fail(err) {
-					  console.error('订阅消息失败', err);
-					  // 处理失败情况,例如提示用户重新尝试或检查权限设置
-					}
-			 });
-		},
-		openH5(url){
-			var requestPath = uni.getStorageSync('requestPath');
-			// uni.setStorageSync('url',requestPath+url);
-			uni.navigateTo({
-				url: '../home/h5?type='+url
-			})
-		},
-		getCode(){
-			var that=this;
-			this.utils.getProvider()
-			.then(provider => {
-				console.log('当前的环境商',provider)
-				if (!provider) {
-				  reject()
-				}
-				// uni登录
-				uni.login({
-					provider: provider,
-					success: async loginRes => {
-						that.code = loginRes.code
+						console.error('订阅消息失败', err);
+						// 处理失败情况,例如提示用户重新尝试或检查权限设置
 					}
-				})
-			})
-			.catch(err => {
-				
-			})
-		},
-		wxLogin() {
-			var that=this;
-			if(!this.isAgreement){
-				uni.showToast({
-					icon:'none',
-					title: "请先同意协议后再登录",
 				});
-				return false;
-			}
-			uni.showLoading({
-				title:"处理中..."
-			})
-			this.utils.getProvider()
-			.then(provider => {
-				console.log('当前的环境商',provider)
-				if (!provider) {
-				  reject()
-				}
-				// uni登录
-				uni.login({
-					provider: provider,
-					success: async loginRes => {
-						console.log(loginRes)
-						let code = loginRes.code // 获取开发code
-						var userCode=uni.getStorageSync('userCode');
-						loginByMiniApp({
-						   // encryptedData: e.mp.detail.encryptedData,
-						   // iv: e.mp.detail.iv,
-						   code: code,
-						   userCode:userCode
-						})
-						.then( res => {
-							if(res.code==200){
-								uni.hideLoading();
-								uni.showToast({
-									icon:'none',
-									title: "登录成功",
-								});
-								uni.setStorageSync('AppToken',res.token);
-								uni.setStorageSync('userInfo',JSON.stringify(res.user));
-								uni.hideLoading()
-								//that.getUserInfo()
-								uni.$emit('refreshLogin');
-								uni.navigateBack({
-									delta:1
-								})
-							}
-							else{
-								uni.hideLoading();
-								uni.showToast({
-									icon:'none',
-									title: "授权登录失败,请重新登录",
-								});
-							}
-						   
-						 })
-						 .catch(error => {
-							console.log(error)
-							uni.hideLoading();
-							uni.showToast({
-								icon:'none',
-								title: "登录接口调用失败",
-							});
-						 })
-						 
-					}
+			},
+			openH5(url) {
+				var requestPath = uni.getStorageSync('requestPath');
+				// uni.setStorageSync('url',requestPath+url);
+				uni.navigateTo({
+					url: '../home/h5?type=' + url
 				})
-			})
-			.catch(err => {
-				uni.showToast({
-					icon:'none',
-					title: err,
-				});
-			})
-		},
-		// 微信用户手机号登录
-		phoneLogin(e) {
-			
-			var that=this;
-			if(!this.isAgreement){
-				uni.showToast({
-					icon:'none',
-					title: "请先同意协议后再登录",
-				});
-				return false;
-			}
-			uni.showLoading({
-				title:"处理中..."
-			})
-			if (e.mp.detail.errMsg == 'getPhoneNumber:ok') {
+			},
+			getCode() {
+				var that = this;
 				this.utils.getProvider()
-				.then(provider => {
-					console.log('当前的环境商',provider)
-					if (!provider) {
-					  reject()
-					}
-					// uni登录
-					uni.login({
-						provider: provider,
-						success: async loginRes => {
-							console.log(loginRes)
-							let code = loginRes.code // 获取开发code
-							var userCode=uni.getStorageSync('userCode');
-							loginByMiniApp({
-							   encryptedData: e.mp.detail.encryptedData,
-							   iv: e.mp.detail.iv,
-							   code: code,
-							   userCode:userCode
-							})
-							.then( res => {
-								if(res.code==200){
-									uni.hideLoading();
-									uni.showToast({
-										icon:'none',
-										title: "登录成功",
-									});
-									uni.setStorageSync('AppToken',res.token);
-									uni.setStorageSync('userInfo',JSON.stringify(res.user));
-									uni.hideLoading()
-									//that.getUserInfo()
-									uni.$emit('refreshLogin');
-									uni.navigateBack({
-										delta:1
-									})
-								}
-								else{
-									uni.hideLoading();
-									uni.showToast({
-										icon:'none',
-										title: "授权登录失败,请重新登录",
-									});
-								}
-							   
-							 })
-							 .catch(error => {
-								console.log(error)
-								uni.hideLoading();
-								uni.showToast({
-									icon:'none',
-									title: "登录接口调用失败",
-								});
-							 })
-							 
+					.then(provider => {
+						console.log('当前的环境商', provider)
+						if (!provider) {
+							reject()
 						}
+						// uni登录
+						uni.login({
+							provider: provider,
+							success: async loginRes => {
+								that.code = loginRes.code
+							}
+						})
 					})
-				})
-				.catch(err => {
+					.catch(err => {
+
+					})
+			},
+			wxLogin() {
+				var that = this;
+				if (!this.isAgreement) {
 					uni.showToast({
-						icon:'none',
-						title: err,
+						icon: 'none',
+						title: "请先同意协议后再登录",
 					});
+					return false;
+				}
+				uni.showLoading({
+					title: "处理中..."
 				})
-				 
-			} else {
-				uni.showToast({
-					title: '已拒绝授权',
-					icon: 'none',
-					duration: 2000,
+				this.utils.getProvider()
+					.then(provider => {
+						console.log('当前的环境商', provider)
+						if (!provider) {
+							reject()
+						}
+						// uni登录
+						uni.login({
+							provider: provider,
+							success: async loginRes => {
+								console.log(loginRes)
+								let code = loginRes.code // 获取开发code
+								var userCode = uni.getStorageSync('userCode');
+								loginByMiniApp({
+										// encryptedData: e.mp.detail.encryptedData,
+										// iv: e.mp.detail.iv,
+										code: code,
+										userCode: userCode
+									})
+									.then(res => {
+										if (res.code == 200) {
+											uni.hideLoading();
+											uni.showToast({
+												icon: 'none',
+												title: "登录成功",
+											});
+											uni.setStorageSync('AppToken', res.token);
+											uni.setStorageSync('userInfo', JSON.stringify(res.user));
+											uni.hideLoading()
+											uni.setStorageSync('isLiveLogin', true);
+											//that.getUserInfo()
+											uni.$emit('refreshLogin');
+											uni.navigateBack({
+												delta: 1
+											})
+										} else {
+											uni.hideLoading();
+											uni.showToast({
+												icon: 'none',
+												title: "授权登录失败,请重新登录",
+											});
+										}
+
+									})
+									.catch(error => {
+										console.log(error)
+										uni.hideLoading();
+										uni.showToast({
+											icon: 'none',
+											title: "登录接口调用失败",
+										});
+									})
+
+							}
+						})
+					})
+					.catch(err => {
+						uni.showToast({
+							icon: 'none',
+							title: err,
+						});
+					})
+			},
+			// 微信用户手机号登录
+			phoneLogin(e) {
+
+				var that = this;
+				if (!this.isAgreement) {
+					uni.showToast({
+						icon: 'none',
+						title: "请先同意协议后再登录",
+					});
+					return false;
+				}
+				uni.showLoading({
+					title: "处理中..."
 				})
+				if (e.mp.detail.errMsg == 'getPhoneNumber:ok') {
+					this.utils.getProvider()
+						.then(provider => {
+							console.log('当前的环境商', provider)
+							if (!provider) {
+								reject()
+							}
+							// uni登录
+							uni.login({
+								provider: provider,
+								success: async loginRes => {
+									console.log(loginRes)
+									let code = loginRes.code // 获取开发code
+									var userCode = uni.getStorageSync('userCode');
+									loginByMiniApp({
+											encryptedData: e.mp.detail.encryptedData,
+											iv: e.mp.detail.iv,
+											code: code,
+											userCode: userCode
+										})
+										.then(res => {
+											if (res.code == 200) {
+												uni.hideLoading();
+												uni.showToast({
+													icon: 'none',
+													title: "登录成功",
+												});
+												uni.setStorageSync('AppToken', res.token);
+												uni.setStorageSync('userInfo', JSON.stringify(res
+													.user));
+												uni.hideLoading()
+												//that.getUserInfo()
+												uni.$emit('refreshLogin');
+												uni.setStorageSync('isLiveLogin', true);
+												uni.navigateBack({
+													delta: 1
+												})
+											} else {
+												uni.hideLoading();
+												uni.showToast({
+													icon: 'none',
+													title: "授权登录失败,请重新登录",
+												});
+											}
+
+										})
+										.catch(error => {
+											console.log(error)
+											uni.hideLoading();
+											uni.showToast({
+												icon: 'none',
+												title: "登录接口调用失败",
+											});
+										})
+
+								}
+							})
+						})
+						.catch(err => {
+							uni.showToast({
+								icon: 'none',
+								title: err,
+							});
+						})
+
+				} else {
+					uni.showToast({
+						title: '已拒绝授权',
+						icon: 'none',
+						duration: 2000,
+					})
+				}
+			},
+			back() {
+				uni.navigateBack()
+				// uni.switchTab({
+				// 	url:'/pages/home/index'
+				// })
 			}
-		},
-		back() {
-			uni.navigateBack()
-			// uni.switchTab({
-			// 	url:'/pages/home/index'
-			// })
 		}
 	}
-}
 </script>
 
 <style lang="scss">
-.container {
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  justify-content: flex-start;
-  position: relative;
-}
-
-.force-login-wrap {
-  width: 100%;
-  height: 100%;
-  overflow: hidden;
-  z-index: 11111;
-  top: 0;
-
-  .force-login__content {
-    position: absolute;
-    left: 50%;
-    top: 40%;
-    transform: translate(-50%, -50%);
-
-    .logo{
-    	display: flex;
-    	flex-direction: column;
-    	justify-content: center;
-    	align-items: center;
-    	.logo-img{
-    		border: 4upx solid #FFFFFF;
-    		box-shadow: 0px 5px 15px 2px rgba(0,0,0,0.1);
-    		border-radius: 50%;
-    		width: 80px;
-    		height: 80px;
-    		image{
-    			border-radius: 50%;
-    			width: 100%;
-    			height: 100%;
-    			overflow: hidden;
-    		}
-    	}
-    	
-    	.title{
-    		margin-top: 20rpx;
-    		font-size: 35rpx;
-    		font-family: PingFang SC;
-    		font-weight: bold;
-    		color: #000;
-    		margin-bottom: 30rpx;
-    	}
-    }
-
-    .login-notice {
-      font-size: 28rpx;
-      font-family: PingFang SC;
-      font-weight: 400;
-      color: #000;
-      line-height: 44rpx;
-      width: 500rpx;
-      text-align: center;
-      margin-bottom: 80rpx;
-    }
-	.btns{
+	.container {
+		flex: 1;
+		display: flex;
+		flex-direction: column;
+		justify-content: flex-start;
 		position: relative;
-		width: 630rpx;
-		height: 80rpx;
-		.author-btn{				
-			z-index:100;
-			position: absolute;
-			width: 630rpx;
-			height: 80rpx;
-			background: linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
-			background: -moz-linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
-			// box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
-			border-radius: 40rpx;
-			font-size: 30rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			color: rgba(255, 255, 255, 1);
-		}
 	}
-	.author-btn{
-		z-index:100;
-		// position: absolute;
-		width: 630rpx;
-		height: 80rpx;
-		background: linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
-		background: -moz-linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
-		// box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
-		border-radius: 40rpx;
-		font-size: 30rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: rgba(255, 255, 255, 1);
-	}
-    .author-btn {
-      width: 630rpx;
-      height: 80rpx;
-      background: linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
-      background: -moz-linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
-      // box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
-      border-radius: 40rpx;
-      font-size: 30rpx;
-      font-family: PingFang SC;
-      font-weight: 500;
-      color: rgba(255, 255, 255, 1);
-    }
-
-    .close-btn {
-      width: 630rpx;
-      height: 80rpx;
-      margin-top: 30rpx;
-      border-radius: 40rpx;
-      border: 2rpx solid #2BC7B9;
-      background: none;
-      font-size: 30rpx;
-      font-family: PingFang SC;
-      font-weight: 500;
-      color: #2BC7B9;
-    }
-  }
-}
-.tips{
-	margin-top: 30rpx;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	font-size: 28rpx;
-	color: #000;
-	checkbox{
-	}
-	.btn{
-		color: #2BC7B9;
-	}
-}
-
-
-.wx-login{
-	background: rgba(0,0,0,0.7);
-	z-index: 99999;
-	position: fixed;
-	top: 0;
-	left: 0;
-	height: 100%;
-	width: 100%;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	.form{
-		border-radius: 20rpx;
-		padding: 60rpx 30rpx;
-		width: 500upx;
-		height: 300upx;
-		background-color: #fff;
-		.title{
-			font-size: 32upx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			
-		}
-		.desc{
-			font-size: 28upx;
-			margin: 60upx 0upx 60upx 0upx;
-			font-family: PingFang SC;
-			font-weight: 500;
-		}
-		.btn-box{
-			margin-top: 30rpx;
-			width: 100%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			
-			.btn{
+
+	.force-login-wrap {
+		width: 100%;
+		height: 100%;
+		overflow: hidden;
+		z-index: 11111;
+		top: 0;
+
+		.force-login__content {
+			position: absolute;
+			left: 50%;
+			top: 40%;
+			transform: translate(-50%, -50%);
+
+			.logo {
 				display: flex;
-				align-items: center;
+				flex-direction: column;
 				justify-content: center;
-				margin-left: 10upx;
-				width: 50%;
+				align-items: center;
+
+				.logo-img {
+					border: 4upx solid #FFFFFF;
+					box-shadow: 0px 5px 15px 2px rgba(0, 0, 0, 0.1);
+					border-radius: 50%;
+					width: 80px;
+					height: 80px;
+
+					image {
+						border-radius: 50%;
+						width: 100%;
+						height: 100%;
+						overflow: hidden;
+					}
+				}
+
+				.title {
+					margin-top: 20rpx;
+					font-size: 35rpx;
+					font-family: PingFang SC;
+					font-weight: bold;
+					color: #000;
+					margin-bottom: 30rpx;
+				}
+			}
+
+			.login-notice {
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 400;
+				color: #000;
+				line-height: 44rpx;
+				width: 500rpx;
+				text-align: center;
+				margin-bottom: 80rpx;
+			}
+
+			.btns {
+				position: relative;
+				width: 630rpx;
 				height: 80rpx;
-				border-radius: 5rpx;
-				background-color: #2BC7B9;
+
+				.author-btn {
+					z-index: 100;
+					position: absolute;
+					width: 630rpx;
+					height: 80rpx;
+					background: linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+					background: -moz-linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+					// box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
+					border-radius: 40rpx;
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: rgba(255, 255, 255, 1);
+				}
+			}
+
+			.author-btn {
+				z-index: 100;
+				// position: absolute;
+				width: 630rpx;
+				height: 80rpx;
+				background: linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+				background: -moz-linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+				// box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
+				border-radius: 40rpx;
 				font-size: 30rpx;
 				font-family: PingFang SC;
 				font-weight: 500;
-				color: #fff;
-				position: relative;
+				color: rgba(255, 255, 255, 1);
+			}
+
+			.author-btn {
+				width: 630rpx;
+				height: 80rpx;
+				background: linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+				background: -moz-linear-gradient(to right, #2BC7B9 0%, #2aa7B9 100%);
+				// box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
+				border-radius: 40rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: rgba(255, 255, 255, 1);
 			}
-			.btn-close{
-				margin-right: 10upx;
-				width: 50%;
+
+			.close-btn {
+				width: 630rpx;
 				height: 80rpx;
-				border-radius: 5rpx;
+				margin-top: 30rpx;
+				border-radius: 40rpx;
 				border: 2rpx solid #2BC7B9;
 				background: none;
 				font-size: 30rpx;
@@ -535,12 +470,100 @@ export default {
 			}
 		}
 	}
-}
-.auth_btn{
-	width: 100%;
-	height: 100%;
-	top:0upx;
-	position: absolute;
-	opacity:0.0;
-}
-</style>
+
+	.tips {
+		margin-top: 30rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 28rpx;
+		color: #000;
+
+		checkbox {}
+
+		.btn {
+			color: #2BC7B9;
+		}
+	}
+
+
+	.wx-login {
+		background: rgba(0, 0, 0, 0.7);
+		z-index: 99999;
+		position: fixed;
+		top: 0;
+		left: 0;
+		height: 100%;
+		width: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+
+		.form {
+			border-radius: 20rpx;
+			padding: 60rpx 30rpx;
+			width: 500upx;
+			height: 300upx;
+			background-color: #fff;
+
+			.title {
+				font-size: 32upx;
+				font-family: PingFang SC;
+				font-weight: bold;
+
+			}
+
+			.desc {
+				font-size: 28upx;
+				margin: 60upx 0upx 60upx 0upx;
+				font-family: PingFang SC;
+				font-weight: 500;
+			}
+
+			.btn-box {
+				margin-top: 30rpx;
+				width: 100%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+
+				.btn {
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					margin-left: 10upx;
+					width: 50%;
+					height: 80rpx;
+					border-radius: 5rpx;
+					background-color: #2BC7B9;
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #fff;
+					position: relative;
+				}
+
+				.btn-close {
+					margin-right: 10upx;
+					width: 50%;
+					height: 80rpx;
+					border-radius: 5rpx;
+					border: 2rpx solid #2BC7B9;
+					background: none;
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #2BC7B9;
+				}
+			}
+		}
+	}
+
+	.auth_btn {
+		width: 100%;
+		height: 100%;
+		top: 0upx;
+		position: absolute;
+		opacity: 0.0;
+	}
+</style>

+ 664 - 0
pages_course/becomeVIP.vue

@@ -0,0 +1,664 @@
+<template>
+	<view class="content hb column justify-center align-center bgf">
+		<image :src="imgPath+'/app/image/becomevip.png'" mode="widthFix"></image>
+		<view class="justify-start align-center fs24 base-color-9" v-if="userInfo.userId">
+			<view>{{nameuser}}#</view>
+			<view>{{userInfo.userId}}</view>
+		</view>
+		<view class="bolds">成为会员,享受更多权益</view>
+		<!--#ifdef H5-->
+		<view class="sure" @click="registerCourse">{{isVip==1?'您已成为会员':viptext}}</view>
+		<!--#endif-->
+		<!--#ifdef MP-WEIXIN-->
+		
+		<view class="base-bg-orange colorf ptb20 plr40 radius60" 
+		v-if="(userinfos==null||userinfos=='')&&imgname=='乐氏本源'" @click="nato()">授权用户信息</view>
+		<view class="btns" v-else>
+			<button class="author-btn" @click="handleAgree()">{{viptext}}</button>
+		</view>
+		
+		<!--#endif-->
+		<!--#ifdef MP-WEIXIN-->
+		<u-popup :show="userlogo" mode="bottom" round='12'>
+			<view class="userlogo column">
+				<view class="mtb30 justify-start align-center ml20">
+					<u-avatar :src="imgPath+'/app/image/logo.png'" size="50"></u-avatar>
+					<view class="bold mlr20">{{imgname}}</view>
+					<view>申请</view>
+				</view>
+				<view class="bold fs36 ml20">授权你的昵称头像信息</view>
+				<view class="mtb20 justify-between align-center  plr20">
+					<view class="justify-start align-center">
+						<view class="boxweixin" :class="userinfos.nickname==''?'boxnosel':'boxsel'">
+							<view v-if="userinfos.nickname">√</view>
+						</view>
+						<view class="ml20">
+							<view class="base-color-3 bold">第一步</view>
+							<view class="fs24 base-color-9">请点击授权微信昵称</view>
+						</view>
+					</view>
+					<view class="button-container">
+					   <input 
+					     type="nickname"
+					     class="hidden-input"
+						@blur="onNickNameInput"
+						 @input="onNickNameInput"
+					   />
+					   <button class="custom-button" :class="nameuser==''?'subname':'subavt'">{{nameuser?"已授权":'允许授权'}}</button>
+					 </view>
+				</view>
+				<view class="mtb20 justify-between align-center  plr20 mt40">
+					<view class="justify-start align-center">
+						<view class="boxweixin" :class="userinfos.nickname==''?'boxnosel':'boxsel'">
+							<view v-if="userinfos.avatar">√</view>
+						</view>
+						<view class="ml20">
+							<view class="base-color-3 bold">第二步</view>
+							<view class="fs24 base-color-9">请点击授权微信头像</view>
+						</view>
+					</view>
+					<view class="button-container">
+					  <button open-type="chooseAvatar" @chooseavatar="onChooseAvatar" class="hidden-input" 
+					  v-if="nameuser">
+					    允许授权
+					  </button>
+					  <button class="custom-button sub" @click="shouquan" v-if="nameuser==''">允许授权</button>
+					   <button class="custom-button "  :class="avataruser==''?'subname':'subavt'"
+					   v-else>{{avataruser?"已授权":'允许授权'}}</button>
+					 </view>
+				</view>
+				<view class="submitname" @click="confimrname" :class="nameuser&&avataruser?'subact':'sub'">确定</view>
+			</view>
+		</u-popup>
+		<!--#endif-->
+		<!-- <view class="footer-tips">重庆云联融智提供技术支持</view> -->
+	</view>
+</template>
+
+<script>
+	import { loginByMp,loginByMiniApp,checkUserInfo,editUser} from '@/api/user'
+	import {handleFsUserWx,registerCourses} from '@/api/courseLook.js'
+	import {
+		getConfigByKey
+	} from "@/api/course.js"
+	export default {
+		data() {
+			return {
+				isVip: 0,
+				isWechat: false,
+				isLogin: false,
+				companyid:'',
+				companyUserId:'',
+				userInfo:{},
+				tagIds:[],
+				isbecomevip:0,
+				viptext:'申请成为会员',
+				userlogo:false,
+				userinfos:{
+					nickname:'',
+					avatar:""
+				},
+				headImg:'',
+				authType:0,//0微信登录 1手机号登录
+				userdisabled:false,
+				projectId:'',
+				H5course:{},
+				projectCode:''
+			}
+		},
+		computed: {
+		    imgPath() {
+				if(uni.getStorageSync('requestImagesPath')){
+					return uni.getStorageSync('requestImagesPath')
+				}else{
+					return this.$store.state.imgpath
+				}
+		    },
+			imgname() {
+			  return this.$store.state.logoname
+			},
+			appid() {
+				return this.$store.state.appid
+			},
+			nameuser() {
+				return this.userinfos.nickname
+			},
+			avataruser() {
+				return this.userinfos.avatar
+			},
+		},
+		async onLoad(option) {
+			this.getWebviewUrl()
+			uni.$on('usercode',(data)=>{
+				console.log('huoqu ',data)
+				this.goLogin(data)
+			})
+			uni.$on('vipMsg',(data)=>{
+				console.log('vipMsg ',data)
+				this.viptext=data
+			})
+			if(uni.getStorageSync('userInfo')&&uni.getStorageSync('userInfo')!='{}') {
+				this.userInfo = uni.getStorageSync('userInfo')
+			} else {
+				this.userInfo = {}
+			}
+			// this.userInfo=JSON.parse(uni.getStorageSync('userInfo')) || {};
+			//#ifdef MP-WEIXIN
+			let obj=uni.getStorageSync('TOKEN_WEXIN');
+			//#endif
+			// #ifdef H5
+			let obj=uni.getStorageSync('TOKEN_KEY');
+			// #endif
+			// let obj=uni.getStorageSync('AppToken');
+			this.isLogin = !!obj;
+			console.log(option)
+			const keys = decodeURIComponent(Object.keys(option)[0]);
+			let becomeVip=JSON.parse(keys.split('becomeVip=')[1])
+			console.log(becomeVip)
+			this.companyid = becomeVip.companyId || ''
+			this.companyUserId=becomeVip.companyUserId || 0
+			this.projectId = becomeVip.projectId
+			this.H5course.companyId=becomeVip.companyId
+			this.H5course.companyUserId=becomeVip.companyUserId
+			this.H5course.projectId=becomeVip.projectId
+			this.projectCode=becomeVip.projectCode
+			uni.setStorageSync('H5course',this.H5course)
+			//#ifdef MP-WEIXIN
+			// if(this.$store.state.logoname!=='乐氏本源'&&!uni.getStorageSync('userInfos')){
+			// 	this.userlogo=true
+			// }
+			if(!uni.getStorageSync('userinfos')&&this.$store.state.logoname=='乐氏本源'){
+				await this.$store.dispatch('getWebviewUrl');
+				uni.navigateTo({
+					url:'/pages_course/webview'
+				})
+				return
+			}
+			// if(this.$store.state.logoname=='乐氏本源'){
+			// 	this.userInfos=uni.getStorageSync('userInfos')
+			// 	if(!uni.getStorageSync('userInfos')){
+			// 		uni.navigateTo({
+			// 			url:'/pages_course/webview'
+			// 		})
+			// 	}
+			// }
+			//#endif
+			if(option.tagids==null){
+				this.tagIds=[]
+			}else{
+				this.tagIds=option.tagids 
+				const arr =this.tagIds.split(",")
+				  .map(item => parseInt(item.trim(), 10))
+				  .filter(num => !isNaN(num)); // 过滤无效转换
+				  this.tagIds =arr
+				// console.log(this.tagIds); 
+			}
+			// this.isWechat = String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === "micromessenger"
+			// this.code = option.code
+			// 	// #ifdef H5
+			// 	if(this.code&&!this.isLogin) {
+			// 		this.loginByMp()
+			// 	}
+			// 	// #endif
+				
+		},
+		onShow() {
+			if(uni.getStorageSync('userInfo')&&uni.getStorageSync('userInfo')!='{}') {
+				this.userInfo = uni.getStorageSync('userInfo')
+			} else {
+				this.userInfo = {}
+			}
+			this.userinfos=uni.getStorageSync('userinfos')
+			let obj=uni.getStorageSync('TOKEN_WEXIN');
+			console.log(uni.getStorageSync('userinfos'))
+			this.isLogin = !!obj;
+			if(this.isLogin&&this.isVip!=1) {
+				this.registerCourse()
+			}
+			this.utils.getDomain({projectCode:this.projectCode}).then(res=>{
+				if(res.code == 200) {
+					if (this.videoId) {
+						this.sendType=uni.getStorageSync('sendType')
+						this.getH5CourseByVideo()
+						// this.utils.getConfigKey()
+					}
+				}
+			})
+			
+		},
+		methods: {
+			getWebviewUrl() {
+				var data = {
+					key: 'course.config'
+				}
+					getConfigByKey(data).then(res => {
+						if (res.code == 200) {
+							console.log("getConfigByKey====", JSON.parse(res.data))
+							let data = JSON.parse(res.data,)
+							uni.setStorageSync('weixinOauth',data.userCourseAuthDomain)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					})
+			},
+			async goLogin(data) {
+				console.log('huoqu111',data)
+				if(data){
+					console.log('huoqu1222',data)
+					uni.showLoading({
+						title: '加载中'
+					})
+					uni.login({
+						provider: "weixin",
+						success: async loginRes => {
+							console.log(loginRes)
+							let code = loginRes.code // 获取开发code
+							handleFsUserWx({
+							   code: code,
+							   appId:this.appid,
+							   userId:data.userId
+							})
+							.then( res => {
+								if(res.code==200){
+									console.log(res)
+									uni.hideLoading();
+									uni.showToast({
+										icon:'none',
+										title: "登录成功",
+									});
+									this.userinfos=uni.getStorageSync('userinfos')
+									uni.getStorageSync('TOKEN_WEXIN');
+									this.userInfo=uni.getStorageSync('userInfo');
+									this.isLogin = true
+									setTimeout(()=>{
+										this.registerCourse()
+									},200)
+								}else if(res.code==406){
+									uni.hideLoading();
+									uni.showToast({
+										icon:'none',
+										title: '该用户已成为其他销售会员',
+									});
+								}else{
+									uni.hideLoading();
+									uni.showToast({
+										icon:'none',
+										title: res.msg,
+									});
+								}
+							   
+							 })
+						},
+					})
+				}else{
+					uni.navigateTo({
+						url:'/pages_course/webview?H5course='+uni.getStorageSync('H5course')
+					})
+				}
+				
+			},
+			shouquan(){
+				if(this.userinfos.nickname==''){
+					uni.showToast({
+						icon:'none',
+						title: "请先授权微信昵称",
+					});
+				}
+			},
+			confimrname(){
+				if(this.userinfos.nickname==''){
+					uni.showToast({
+						icon:'none',
+						title: "请授权微信昵称",
+					});
+					return
+				}
+				if(this.userinfos.avatar==''){
+					uni.showToast({
+						icon:'none',
+						title: "请授权微信头像",
+					});
+					return
+				}
+				uni.setStorageSync('userinfos',this.userinfos)
+				this.editUserA()
+				this.userlogo=false
+			},
+			onChooseAvatar(e){
+				this.userinfos.avatar=e.detail.avatarUrl
+				console.log(e.detail.avatarUrl)
+				uni.uploadFile({
+					url: uni.getStorageSync('requestPath')+'/app/common/uploadOSS', //仅为示例,非真实的接口地址
+					filePath: e.detail.avatarUrl,
+					name: 'file',
+					formData: {
+						'user': 'test'  // 上传附带参数
+					},
+					success: (uploadFileRes) => {
+						console.log(uploadFileRes)
+						// 根据接口具体返回格式   赋值具体对应url
+						var data=JSON.parse(uploadFileRes.data)
+						this.headImg=uni.getStorageSync('requestPath')+data.fileName
+						this.userinfos.avatar=data.url
+					}
+				});
+			},
+			onNickNameInput(e){
+				console.log(e)
+				this.userinfos.nickname=e.detail.value
+			},
+			async nato(){
+				await this.$store.dispatch('getWebviewUrl');
+				uni.navigateTo({
+					url:'/pages_course/webview'
+				})
+			},
+			handleAgree(){
+				console.log(144443)
+				if(this.isVip==1){
+					uni.showToast({
+						title: '您已成为会员!',
+						icon: 'none',
+						duration: 2000,
+					})
+				}else{
+					this.goLogin()
+					uni.showToast({
+						title: this.viptext,
+						icon: 'none',
+						duration: 2000,
+					})
+				}
+				
+			},
+			getWechatCode() {
+				if (this.isWechat) {
+					// let appid = "wx961fadab9bcb792b"; //微信APPid(福本源)
+					// let appid = "wx93ce67750e3cfba3"; //微信APPid(云联融智)
+					// let appid = "wxea1da2b708ab3c2f"; //微信APPid(蜂巢快药)
+					// let appid = "wx3de90a39feb8107a"; //微信APPid(中康看课)
+					// let appid = "wxec49f9d783abf233"; //微信APPid(惠名大药房)
+					// let appid = "wx5a0f7e1932e2689e"; //微信APPid(同顺堂)
+					// let appid = "wxe0b82a0018449a62"; //微信APPid(良苗)
+					// let appid = "wx568ea6b70350c585"; //微信APPid(倍力优)
+					let appid = "wx0d021524695f1943"; //微信APPid(百年康城)
+					// let appid = "wx090c5f399d65456e"; //微信APPid(青岛市德瑞康)
+					// let appid = "wx52298c1781d5cc99"; //微信APPid(金慷建)
+					let code = this.getUrlCode().code; //是否存在code
+					let local = window.location.href;
+					if (code == null || code === "") {
+
+						let urlPaths = local.split("/registerCourse");
+						uni.setStorageSync('beforLoginPage', urlPaths[1]);
+
+						//不存在就打开上面的地址进行授权
+						window.location.href =
+							"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
+							appid +
+							"&redirect_uri=" +
+							encodeURIComponent(local) +
+							"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
+					} else {
+						this.code = code;
+						this.loginByMp()
+					}
+				}else{
+					uni.showToast({
+						title: '请在微信浏览器中打开',
+						icon:'error'
+					})
+				}
+			},
+			getUrlCode() {
+				// 截取url中的code方法
+				var url = location.search;
+				var theRequest = new Object();
+				if (url.indexOf("?") != -1) {
+					var str = url.substr(1);
+					var strs = str.split("&");
+					for (var i = 0; i < strs.length; i++) {
+						theRequest[strs[i].split("=")[0]] = strs[i].split("=")[1];
+					}
+				}
+				return theRequest;
+			},
+			loginByMp() {
+				if (this.code == null) {
+					return;
+				}
+				uni.showLoading({
+					title: "处理中..."
+				});
+				loginByMp({code:this.code}).then(res => {
+						uni.hideLoading();
+						if (res.code == 200) {
+							uni.setStorageSync('TOKEN_KEY', res.token);
+							uni.setStorageSync('userInfo', JSON.stringify(res.user));
+							this.userInfo= res.user
+							let beforLoginUrl = uni.getStorageSync('beforLoginPage');
+							this.isLogin = true
+							this.registerCourse()
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: 'none'
+							});
+						}
+					},
+					err => {}
+				);
+			},
+			// 成为会员
+			registerCourse() {
+				console.log(123333)
+				this.isVip = 0
+				// 确保从本地存储重新获取最新数据
+				  // if(uni.getStorageSync('userInfo')){
+				  // 	this.userInfo=JSON.parse(uni.getStorageSync('userInfo'));
+				  // }
+				  // if (!this.userInfo.userId) {
+				  // 	// 空值检查
+				  //   uni.showToast({ title: '用户未登录或信息不完整', icon: 'none' });
+				  //   return;
+				  // }
+				  if(this.tagIds==null){
+					  this.tagIds=""
+				  }
+				  // console.log(this.tagIds)
+				const data={
+					userId:this.userInfo.userId,
+					companyUserId:this.companyUserId,
+					companyId:this.companyid,
+					tagIds:this.tagIds,
+					projectId:this.projectId
+					}
+				if(this.isLogin) {
+					registerCourses(data).then(res=>{
+						if(res.code == 200) {
+							this.isVip = 1
+							this.isbecomevip=1
+							this.viptext='您已成为会员'
+							uni.showToast({
+								title: '注册成功',
+								icon:'none'
+							})
+						} else {
+							this.isbecomevip=1
+							// console.log(this.isbecomevip)
+							this.viptext=res.msg
+							uni.showToast({
+								icon:'none',
+								title: res.msg
+							})
+						}
+					})
+				} else {
+					// #ifdef H5
+					this.getWechatCode()
+					// #endif
+					
+				}
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	page{
+		background-color: #fff;
+	}
+	.subname{
+		background-color: #00aa00;
+		color: #fff;
+	}
+	.subavt{
+		background-color: #fff;
+		border: 2rpx #0a0 solid;
+		color: #00aa00;
+	}
+	.boxweixin{
+		width: 44rpx;
+		height: 44rpx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 34rpx;
+		color: #0a0;
+	}
+	.boxnosel{
+		border: #757575 4rpx solid;
+	}
+	.boxsel{
+		border: #0a0 4rpx solid;
+	}
+	.button-container {
+	  position: relative;
+	  width: 240rpx;
+	}
+	.hidden-input {
+	  position: absolute;
+	  top: 0;
+	  left: 0;
+	  width: 100%;
+	  height: 100%;
+	  opacity: 0;
+	  z-index: 2;
+	}
+	.custom-button {
+	  position: relative;
+	  z-index: 1;
+	  /* 其他样式 */
+	  width:100%;
+	  margin: 0 auto;
+	  height: 80rpx;
+	  line-height: 60rpx;
+	  font-size: 28rpx;
+	  padding: 10rpx 20rpx;
+	}
+	.submitname{
+		width: 90%;
+		margin: 0 auto;
+		text-align: center;
+		padding: 30rpx;
+		margin-top: 40rpx;
+	}
+	.sub{
+		background-color: #f0f0f0;
+		color: #0a0;
+	}
+	.subact{
+		background-color: #0a0;
+		color: #fff;
+	}
+	.userlogo{
+		height: 760rpx;
+	}
+	.getlogo{
+		width:240rpx;
+		background-color: #fff;
+		// padding: 10rpx 20rpx;
+	}
+	::v-deep .u-popup {
+	 flex: 0 !important;
+	}
+	// .submitname{
+	// 	width: 60%;
+	// 	background-color: #05a8ee;
+	// 	color: #fff;
+	// 	margin: 0 auto;
+	// 	border-radius: 80rpx;
+	// 	text-align: center;
+	// 	padding: 20rpx;
+	// 	margin-top: 40rpx;
+	// }
+	.userlogo{
+		height: 760rpx;
+	}
+	.getlogo{
+		width:calc(60% - 40rpx);
+		margin: 0 auto;
+		background-color: #fff;
+		padding: 10rpx 20rpx;
+		image{
+			width: 80rpx !important;
+			height: 80rpx !important;
+		}
+	}
+	.footer-tips {
+			// margin-top: 14rpx;
+			position: fixed;
+			width: 100%;
+			bottom: 44rpx;
+			text-align: center;
+			font-family: PingFang SC,PingFang SC;
+			font-weight: 500;
+			font-size: 12px;
+			color: #bbb;
+			transform: scale(0.8); 
+		}
+	.content {
+		image {
+			width: 300rpx;
+			height: 300rpx;
+		}
+	}
+	.bolds {
+		color: #999;
+		font-size: 16px;
+		height: auto;
+		line-height: inherit;
+		margin-bottom: 0;
+		width: 304px;
+		word-break: break-all;
+		text-align: center;
+		margin: 50rpx 0 100rpx 0;
+	}
+	.sure {
+		width: 500rpx;
+		background-color: #1777ff;
+		line-height: 88rpx;
+		text-align: center;
+		border-radius: 8rpx;
+		color: #fff;
+	}
+	.btns{
+		position: relative;
+		width: 630rpx;
+		height: 80rpx;
+		.author-btn{				
+			z-index:100;
+			position: absolute;
+			width: 630rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			text-align: center;
+			background: #1777ff;
+			border-radius: 40rpx;
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: rgba(255, 255, 255, 1);
+		}
+	}
+</style>

+ 1 - 1
pages_course/components/like.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="like-container">
-		<image class="image" @click="handleLike" src="/static/images/like.png" ref="likeBtn"></image>
+		<image class="image" @click="handleLike" src="/static/images/like_live.png" ref="likeBtn"></image>
 		<view v-for="(icon, index) in icons" :key="icon.id" class="animated-icon" :style="{
         top: icon.top + 'rpx',
         left: icon.left + 'rpx',  // 补充left属性的单位

File diff suppressed because it is too large
+ 338 - 288
pages_course/living.vue


+ 87 - 155
pages_shopping/live/confirmCreateOrder.vue

@@ -96,10 +96,10 @@
 				<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>
+							<image v-if="item.status==0&&item.useMinPrice<=orderData.totalPrice" class="img"
+								src="../../static/images/coupon1.png" mode="widthFix"></image>
+							<image v-if="item.status!=0||item.useMinPrice>orderData.totalPrice" class="img"
+								src="../../static/images/coupon2.png" mode="widthFix"></image>
 							<div style="z-index: 999;">
 								¥<span class="num">{{ item.couponPrice }}</span>
 							</div>
@@ -111,8 +111,12 @@
 							</div>
 							<div class="data acea-row row-between-wrapper">
 								<div>{{ item.limitTime }}到期</div>
-								<div v-if=" item.status==0" class="bnt bg-color-red" @click="couponSelect(item)">选择</div>
-								<div v-else class="bnt " style="background-color: #878787;" >已失效</div>
+								<div v-if=" item.status==0&&item.useMinPrice<=orderData.totalPrice"
+									class="bnt bg-color-red" @click="couponSelect(item)">选择</div>
+								<div v-else-if="item.status!=0" class="bnt " style="background-color: #878787;">已失效
+								</div>
+								<div v-else-if="item.useMinPrice>orderData.totalPrice" class="bnt "
+									style="background-color: #878787;">未达门槛</div>
 							</div>
 						</div>
 					</div>
@@ -153,7 +157,7 @@
 				totalNum: null,
 				orderKey: null,
 				// price: null,
-				goodsId:null,
+				goodsId: null,
 				liveId: null,
 				orderList: [],
 				userInfo: null,
@@ -180,10 +184,11 @@
 			this.productId = options.productId
 			this.totalNum = Number(options.totalNum) || 0
 		},
-
-		mounted() {
+		onShow() {
 			this.getUserAddr()
-
+		},
+		mounted() {
+			// this.getUserAddr()
 			uni.$on('updateAddress', (e) => {
 				this.address = e;
 				this.addressId = e.addressId;
@@ -198,11 +203,11 @@
 			uni.$off('updateAddress');
 		},
 		methods: {
-			
+
 			// getCurCoupon() {
 			// 	curCoupon().then(res => {
 			// 			if (res.code == 200) {
-							
+
 			// 			} else {
 			// 				uni.showToast({
 			// 					title: res.msg,
@@ -250,9 +255,9 @@
 					totalNum: this.totalNum,
 					productId: this.productId,
 					orderKey: this.orderKey,
-					couponUserId:this.couponUserId||''
+					couponUserId: this.couponUserId || ''
 				}
-				
+
 				computed(data).then(res => {
 						if (res.code == 200) {
 							console.log("查询创建订单信息>>>>", res.data)
@@ -284,7 +289,7 @@
 					cartId: "5",
 					productId: this.productId,
 					totalNum: this.totalNum,
-					couponUserId:this.couponUserId
+					couponUserId: this.couponUserId
 
 				}
 
@@ -322,7 +327,7 @@
 			},
 			openCoupon() {
 				console.log("点了优惠券列表")
-								const data = {
+				const data = {
 					liveId: this.liveId,
 					goodsId: this.goodsId
 				};
@@ -465,7 +470,6 @@
 		}
 
 		.goods-list {
-			// margin-top: 20upx;
 			padding: 0 30upx;
 			background-color: #FFFFFF;
 			border-radius: 16upx;
@@ -487,82 +491,7 @@
 					}
 				}
 
-				.info-box {
-					width: calc(100% - 190upx);
-					height: 160upx;
-					display: flex;
-					flex-direction: column;
-					justify-content: space-between;
-
-					.name-box {
-						font-size: 28upx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #111111;
-						line-height: 40upx;
-
-						.tag {
-							display: inline-block;
-							padding: 0 6upx;
-							height: 30upx;
-							background: linear-gradient(90deg, #66b2ef 0%, #0bb3f2 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: 10upx;
-						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;
-						}
-					}
-				}
 			}
 
 			.sub-total {
@@ -761,93 +690,96 @@
 				font-family: PingFang SC;
 				font-weight: bold;
 				color: #FFFFFF;
-				background: #0bb3f2;
+				background: #2BC7B9;
 				border-radius: 44upx;
 			}
 		}
 	}
-	
+
 	.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>

+ 54 - 129
pages_shopping/live/goods.vue

@@ -2,20 +2,12 @@
 	<view class="">
 		<view class="content">
 			<view class="shop-banner">
-				
+
 				<view class="shop-banner" @click="showImg()">
-					<swiper
-						class="swiper" 
-						:indicator-dots="false" 
-						:circular="true" 
-						:autoplay="true" 
-						:interval="3000" 
-						:duration="1000"
-						indicator-color="rgba(255, 255, 255, 0.6)"
-						indicator-active-color="#ffffff"
-						@change="swiperChange"
-					>
-						<swiper-item  class="swiper-item" v-for="(item,index) in  banner" :key="index">
+					<swiper class="swiper" :indicator-dots="false" :circular="true" :autoplay="true" :interval="3000"
+						:duration="1000" indicator-color="rgba(255, 255, 255, 0.6)" indicator-active-color="#ffffff"
+						@change="swiperChange">
+						<swiper-item class="swiper-item" v-for="(item,index) in  banner" :key="index">
 							<image :src="item" mode="aspectFill"></image>
 						</swiper-item>
 					</swiper>
@@ -24,7 +16,7 @@
 					<!-- 数量 -->
 					<view class="num-box">{{ activeBanner }}/{{ banner.length }}</view>
 				</view>
-				
+
 				<!-- <view class="swiper">
 					<view class="swiper-item">
 						<image :src="goosDetail.image" mode="aspectFill"></image>
@@ -47,26 +39,26 @@
 				<view class="name-box">
 					{{goosDetail.productName}}
 				</view>
-			
+
 			</view>
 		</view>
 		<view class="guige">
-		
+
 			<view class="safe-box">
 				<text class="text">服务</text>
 				<view class="box">
-					<view v-for="(item,index) in serviceList" :key="index">
-						<image src="/static/images/googs_service.png" mode=""></image>
+					<image class="mr20" src="/static/images/safe.png" mode=""></image>
+					<view class="mr30" v-for="(item,index) in serviceList" :key="index">
 						<text>{{item}}</text>
 					</view>
-					<view @click="openEditMoney()">
+					<!-- <view @click="openEditMoney()">
 						<image class='w48 h48' src="/static/images/arrow4.png"></image>
-					</view>
+					</view> -->
 				</view>
 			</view>
 
 			<!-- 点击服务,出现弹窗-->
-			<view class="popup-box" v-if="editShow">
+			<!-- <view class="popup-box" v-if="editShow">
 				<view class="info-mask" @tap="cancelEditMoney()"></view>
 				<view class="info-form">
 					<view class="top">
@@ -105,20 +97,21 @@
 						<view class="sub-btn" @click="cancelEditMoney()">确定</view>
 					</view>
 				</view>
-			</view>
+			</view> -->
 		</view>
 		<!-- 购买人数、库存 -->
 		<view class="det-box">
 			<view class="title">图文详情</view>
 			<view class="inner">
-				<view  v-html="goosDetail.description" style="font-size:0"></view>
+				<view v-html="goosDetail.description" style="font-size:0"></view>
 			</view>
 		</view>
 		<!-- 底部按钮 -->
 		<view class="btn-foot">
 			<view class="menu-box">
-					<view class="item"  @click="navgetTo('./storeOrderRefundList?liveId='+liveId)" style="position: relative;">
-					<image src="/static/images/googs2.png" mode=""></image>
+				<view class="item" @click="navgetTo('./storeOrderRefundList?liveId='+liveId)"
+					style="position: relative;">
+					<image src="/static/images/consult_small.png" mode=""></image>
 					<text class="label">售后</text>
 				</view>
 			</view>
@@ -146,10 +139,10 @@
 						</view>
 					</view>
 				</view>
-			
+
 				<view class="price-num">
 					<view class="label">数量</view>
-					<u-number-box bgColor="#ececec" v-model="goodsNum" @change="goodsNumChange"></u-number-box>
+					<u-number-box bgColor="#f3f3f3" v-model="goodsNum" @change="goodsNumChange"></u-number-box>
 				</view>
 				<view class="sub-btn" @click="submit">确定</view>
 			</view>
@@ -160,7 +153,7 @@
 <script>
 	import {
 		liveGoodsDetail
-	
+
 	} from '@/api/living'
 	import {
 		liveCartDetails, //获取购物车详情
@@ -170,24 +163,24 @@
 		addLiveCart // 新增购物车
 	} from "@/api/order.js"
 	import popupBottom from '@/components/px-popup-bottom/px-popup-bottom.vue'
-	
+
 	export default {
 		components: {
 			popupBottom
 		},
 		data() {
 			return {
-				banner:[],
-				storeInfo:{},
+				banner: [],
+				storeInfo: {},
 				goodsId: null,
 				totalNum: 1,
 				orderKey: null,
 				type: null,
 				liveOrderList: [], //下订单的 不在这个页面
 				liveId: null,
-				storeId:null,
+				storeId: null,
 				serviceList: ['免邮发货', '药师服务', '隐私保护'],
-				editShow: false,
+				// editShow: false,
 				productId: null,
 				goosDetail: {}, //商品详情
 				loadding: true,
@@ -225,28 +218,28 @@
 			};
 		},
 		onLoad(options) {
-			console.log("商品详情options",options)
+			console.log("商品详情options", options)
 			if (options.productId) {
 				this.productId = options.productId;
 			}
 			this.liveId = options.liveId
 			this.goodsId = options.goodsId
-			
+
 			if (options.storeId) {
 				this.storeId = options.storeId || ""
-			
+
 			} else {
 				uni.showToast({
 					title: "storeId不存在~",
 					icon: "none"
 				})
 			}
-		
+
 		},
 		mounted() {
 			this.getliveGoods()
 			var userInfo = uni.getStorageSync("userInfo")
-		
+
 		},
 		methods: {
 			// swiper变化事件
@@ -298,7 +291,7 @@
 				let data = {
 					productId: this.productId,
 					liveId: this.liveId,
-					goodsId: this.goodsId||"",
+					goodsId: this.goodsId || "",
 					cartNum: this.totalNum,
 				};
 				addLiveCart(data).then(
@@ -321,9 +314,9 @@
 							console.log("key>>>>", this.orderKey)
 							uni.navigateTo({
 								url: '/pages_shopping/live/confirmCreateOrder?&orderKey=' + this.orderKey +
-									'&liveId=' +this.liveId+'&goodsId='+this.goodsId
-									 + '&productId=' + this.productId + '&totalNum=' + this
-									.totalNum 
+									'&liveId=' + this.liveId + '&goodsId=' + this.goodsId +
+									'&productId=' + this.productId + '&totalNum=' + this
+									.totalNum
 							})
 						} else {
 							uni.showToast({
@@ -358,12 +351,12 @@
 					url: url
 				})
 			},
-			openEditMoney() {
-				this.editShow = true;
-			},
-			cancelEditMoney(){
-				this.editShow = false;
-			},
+			// openEditMoney() {
+			// 	this.editShow = true;
+			// },
+			// cancelEditMoney(){
+			// 	this.editShow = false;
+			// },
 			//商品详情
 			getliveGoods() {
 				if (!this.productId) return;
@@ -372,7 +365,7 @@
 							// console.log("小黄车 商品详情>>>>", res)
 							this.goosDetail = res.data
 							this.banner = res.data.sliderImage.split(',');
-							console.log("轮播图",this.banner)
+							// console.log("轮播图",this.banner)
 
 						} else {
 							uni.showToast({
@@ -641,7 +634,7 @@
 						font-size: 36rpx;
 						font-weight: bold;
 						color: #FFFFFF;
-						background: #008FD3;
+						background: #2BC7B9;
 						border-radius: 44rpx;
 					}
 				}
@@ -694,10 +687,10 @@
 					font-size: 24rpx;
 					font-family: PingFang SC;
 					font-weight: 400;
-					// text-decoration: line-through;
+					text-decoration: line-through;
 					color: #898E91;
 					margin-left: 10rpx;
-					// line-height: 1.3;
+					line-height: 1.3;
 				}
 			}
 
@@ -928,7 +921,7 @@
 
 
 	.shop-box {
-		
+
 		display: flex;
 		justify-content: space-between;
 		align-items: center;
@@ -1212,7 +1205,7 @@
 	}
 
 	.det-box {
-	
+
 		margin-top: 10rpx;
 		background-color: #FFFFFF;
 		padding: 24rpx;
@@ -1228,7 +1221,9 @@
 			padding-bottom: 24rpx;
 			border-bottom: 1px solid #ECECEC;
 		}
-
+.inner{
+	margin-bottom:100rpx ;
+}
 		.det-title {
 			display: flex;
 			align-items: center;
@@ -1356,7 +1351,7 @@
 				}
 
 				&.buy {
-					background: #008FD3;
+					background: #2bc7b9;
 				}
 			}
 		}
@@ -1445,88 +1440,18 @@
 			}
 		}
 
-		.spec-box {
-			padding-top: 50rpx;
-
-			.title {
-				font-size: 26rpx;
-				font-weight: bold;
-				color: #111111;
-				line-height: 1;
-			}
-
-			.spec-list {
-				display: flex;
-				flex-wrap: wrap;
-				margin-top: 30rpx;
-
-				.item {
-					box-sizing: border-box;
-					height: 64rpx;
-					padding: 0 30rpx;
-					line-height: 64rpx;
-					font-size: 24rpx;
-					font-weight: 500;
-					color: #111111;
-					background: #F7F7F7;
-					border: 1px solid #F7F7F7;
-					border-radius: 32rpx;
-					margin-right: 20rpx;
-					margin-bottom: 30rpx;
-
-					&.active {
-						background: #F1FFFE;
-						border: 1px solid #008FD3;
-						color: #008FD3;
-					}
-				}
-			}
-		}
 
 		.price-num {
 			display: flex;
 			align-items: center;
 			justify-content: space-between;
-			margin-top: 14rpx;
+			margin-top: 30rpx;
 
 			.label {
-				font-size: 26rpx;
+				font-size: 36rpx;
 				font-weight: bold;
 				color: #111111;
 			}
-
-			// .num-box {
-			// 	display: flex;
-			// 	align-items: center;
-
-			// 	.img-box {
-			// 		width: 60rpx;
-			// 		height: 60rpx;
-			// 		border: 1px solid #dddddd;
-			// 		display: flex;
-			// 		align-items: center;
-			// 		justify-content: center;
-
-			// 		image {
-			// 			width: 25rpx;
-			// 			height: 25rpx;
-			// 		}
-			// 	}
-
-			// 	input {
-			// 		width: 60rpx;
-			// 		height: 60rpx;
-			// 		line-height: 60rpx;
-			// 		font-size: 28rpx;
-			// 		font-weight: 500;
-			// 		color: #111111;
-			// 		// border-radius: 4rpx;
-			// 		border-top: 1px solid #dddddd;
-			// 		border-bottom: 1px solid #dddddd;
-			// 		text-align: center;
-			// 		// margin: 0 16rpx;
-			// 	}
-			// }
 		}
 
 		.sub-btn {
@@ -1537,7 +1462,7 @@
 			font-size: 32rpx;
 			font-weight: bold;
 			color: #FFFFFF;
-			background: #008FD3;
+			background: #2BC7B9;
 			border-radius: 44rpx;
 			margin-top: 30rpx;
 			// margin-bottom: 30rpx;

+ 136 - 33
pages_shopping/live/order.vue

@@ -2,23 +2,48 @@
 	<view>
 		<view class="content">
 			<!-- 使用mescroll-body包裹订单列表 -->
-			<mescroll-body  bottom="0" ref="mescrollRef" @init="mescrollInit" 
-				@down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
-			<u-tabs class="tabs" itemStyle="width:14%;height:100rpx;" :list="tabList" @click="tabsClick"
-				lineColor="#FF5C03"></u-tabs>
+			<mescroll-body bottom="0" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
+				:down="downOption" :up="upOption">
+
+				<!-- <u-tabs class="tabs" itemStyle="width:14%;height:100rpx;" :list="tabList" @click="tabsClick"
+				lineColor="#FF5C03"></u-tabs> -->
+
+
+				<view class="top-fixed">
+					<!-- tab切换 -->
+					<view class="pub-tab-box">
+						<view class="tab-inner">
+							<view v-for="(item,index) in tabList" :key="index"
+								:class="status == item.status?'item active':'item'" @click="tabsClick(item)">
+								<view class="text">
+									{{ item.name }}
+									<image v-show="status == item.status" class="tab-bg" src="/static/images/tab_bg.png"
+										mode=""></image>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+
+
 				<view class="order-list">
 					<view class="order-item" v-for="(item,index) in orderList" :key="index">
 						<view class="order-num">
-							<text>订单号:{{item.orderCode}}</text>
-							<text v-if="item.status==-1">申请售后</text>
+							<text class="lable">订单号:{{item.orderCode}}</text>
+							<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>
 							<text v-else-if="item.status==2">待发货</text>
 							<text v-else-if="item.status==3">待收货</text>
-							<text v-else-if="item.status==5">已完成</text>
+							<text v-else-if="item.status==4">已完成</text>
 							<text v-else-if="item.status==-3">已取消</text>
 						</view>
-						<view class="order-main" v-for="(itm,idx) in item.orderItemList" :key="idx" @click="goDetail(itm)">
+						<view class="order-main" v-for="(itm,idx) in item.orderItemList" :key="idx"
+							@click="goDetail(itm)">
 							<view class="img-box">
 								<image :src="itm.imgUrl"></image>
 							</view>
@@ -38,11 +63,14 @@
 							</view>
 							<view class="button-group">
 								<view v-if="item.status == 1" @click="cancel(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 !== -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>
 								<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>
+								<view v-if="item.status == 3" @click="confirmReceipt(item)" class="button pay">确认收货
+								</view>
 							</view>
 						</view>
 					</view>
@@ -59,7 +87,7 @@
 		finishOrder //确认收货
 	} from '@/api/order.js'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
-	
+
 	export default {
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
@@ -84,7 +112,7 @@
 					},
 					{
 						name: "已完成",
-						status: "5"
+						status: "4"
 					}
 				],
 				// mescroll配置
@@ -101,7 +129,7 @@
 					},
 					noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据
 					empty: {
-						icon: '/static/images/empty.png', // 可配置空状态图片
+						icon: '/static/images/no_data.png', // 可配置空状态图片
 						tip: '暂无订单数据' // 空状态提示文字
 					}
 				},
@@ -109,8 +137,8 @@
 			}
 		},
 		methods: {
-			goDetail(item){
-				console.log("跳转",item)
+			goDetail(item) {
+				console.log("跳转", item)
 				uni.navigateTo({
 					url: './storeOrderDetail?id=' + item.orderId
 				})
@@ -129,13 +157,13 @@
 			upCallback(mescroll) {
 				const pageNum = mescroll.num;
 				const pageSize = mescroll.size;
-				
+
 				let data = {
 					pageSize: pageSize,
 					pageNum: pageNum,
 					status: this.status
 				}
-				
+
 				liveOrderList(data).then(res => {
 					if (res.code == 200) {
 						// 请求成功,处理数据
@@ -143,18 +171,18 @@
 						// let curPageData = res.rows || [];
 						let curPageLen = curPageData.length;
 						let totalSize = res.total || 0;
-						
+
 						// 如果是第一页,直接赋值
 						if (pageNum === 1) {
 							this.orderList = [];
 						}
-						
+
 						// 追加新数据
 						this.orderList = this.orderList.concat(curPageData);
-						
+
 						// 方法一(推荐): 后台返回有总数据量
 						mescroll.endBySize(curPageLen, totalSize);
-						
+
 					} else {
 						// 请求失败
 						mescroll.endErr();
@@ -201,7 +229,7 @@
 			},
 			// 取消订单
 			cancel(item) {
-			
+
 				var that = this;
 				uni.showModal({
 					title: '提示',
@@ -211,7 +239,7 @@
 							const data = {
 								orderId: item.orderId,
 							};
-							console.log(data)	
+							console.log(data)
 							cancelOrder(data).then(res => {
 								if (res.code == 200) {
 									uni.showToast({
@@ -251,7 +279,7 @@
 			},
 			// 支付
 			pay(item) {
-				console.log("去支付",item)
+				console.log("去支付", item)
 				uni.navigateTo({
 					url: `./paymentOrder?orderList=${encodeURIComponent(JSON.stringify(item))}`
 				})
@@ -273,8 +301,70 @@
 		width: 100%;
 	}
 
+	.top-fixed {
+		width: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 10;
+	}
+
+	.pub-tab-box {
+		box-sizing: border-box;
+		width: 100%;
+		padding: 0 60upx;
+		background-color: #FFFFFF;
+
+		.tab-inner {
+			height: 88upx;
+			line-height: 88upx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			overflow-x: auto;
+		}
+
+		.item {
+			font-size: 28upx;
+			white-space: nowrap;
+			line-height: 1;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #666666;
+			margin-right: 60upx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			&:last-child {
+				margin-right: 0;
+			}
+
+			&.active {
+				font-weight: bold;
+				color: #333333;
+			}
+
+			.text {
+				position: relative;
+				z-index: 1;
+			}
+
+			.tab-bg {
+				width: 72upx;
+				height: 28upx;
+				position: absolute;
+				top: 17upx;
+				left: 50%;
+				transform: translateX(-36upx);
+				z-index: -1;
+			}
+		}
+	}
+
 	.content {
 		.order-list {
+			margin-top: 80rpx;
 			background: #F5F7FA;
 			padding: 0 24rpx;
 
@@ -287,8 +377,12 @@
 				.order-num {
 					display: flex;
 					justify-content: space-between;
-					font-size: 26rpx;
-					color: #999999;
+					font-size: 28rpx;
+					color: #2BC7B9;
+					.lable{
+						color: #5a5a5a;
+						font-size: 26rpx;
+					}
 				}
 
 				.order-main {
@@ -365,21 +459,30 @@
 						align-items: center;
 
 						.button {
-							margin-left: 10rpx;
-							padding: 10rpx 14rpx;
-							border-radius: 8rpx;
+							// margin-left: 10rpx;
+							// padding: 10rpx 14rpx;
+							// border-radius: 8rpx;
+							// font-weight: 500;
+							// font-size: 24rpx;
+							width: 155upx;
+							height: 64upx;
+							line-height: 64upx;
+							font-size: 26upx;
+							font-family: PingFang SC;
 							font-weight: 500;
-							font-size: 24rpx;
+							text-align: center;
+							border-radius: 32upx;
+							margin-left: 15upx;
 						}
 
 						.cancel {
-							background-color: #ececec;
-							color: #2c2c2c;
+							border: 1px solid #DDDDDD;
+							color: #666666;
 						}
 
 						.pay {
 							color: #FFFFFF;
-							background: linear-gradient(270deg, #FF5C03 0%, #FFAC64 100%);
+							background-color: #2BC7B9;
 						}
 					}
 				}

+ 4 - 4
pages_shopping/live/paymentOrder.vue

@@ -58,7 +58,7 @@
 				</view>
 				<view class="item">
 					<text class="label">优惠券</text>
-					<text class="text">-¥{{ order.discountMoney.toFixed(2)}} </text>
+					<text class="text">-¥{{order ? (Number(order.discountMoney) || 0).toFixed(2) : "0.00"}} </text>
 				</view>
 			</view>
 
@@ -591,7 +591,7 @@
 				font-weight: bold;
 				color: #FFFFFF;
 				text-align: center;
-				background: #0bb3f2;
+				background: #2BC7B9;
 				border-radius: 44upx;
 				margin-bottom: 10rpx;
 			}
@@ -603,8 +603,8 @@
 				font-size: 30upx;
 				font-family: PingFang SC;
 				font-weight: bold;
-				color: #0bb3f2;
-				border: 1rpx solid #0bb3f2;
+				color: #2BC7B9;
+				border: 1rpx solid #2BC7B9;
 				text-align: center;
 				background: #FFFFFF;
 				border-radius: 44upx;

+ 15 - 1
pages_shopping/live/refundOrder.vue

@@ -76,6 +76,7 @@
 		applyAfterSales, // 申请售后
 		revoke //撤销售后
 	} from '@/api/order.js'
+	import {getDicts} from '@/api/index'
 	export default {
 
 		data() {
@@ -98,10 +99,23 @@
 			this.orderId = option.orderId;
 			console.log(this.orderId);
 			this.getStoreOrder()
-			this.reasonsList=this.utils.getDict("storeAfterSalesReasons");
+			// this.reasonsList=this.utils.getDict("storeAfterSalesReasons");
+			this.getDicts();
 			// this.getDicts()
 		},
 		methods: {
+			getDicts:function(){
+				getDicts().then(
+					res => {
+						if(res.code==200){
+							 this.reasonsList=res.storeAfterSalesReasons
+							// uni.setStorageSync('dicts',JSON.stringify(res));
+						} 
+						 
+					},
+					rej => {}
+				);
+			},
 			// getDicts() {
 			// 	var data = {
 			// 		key: "store_after_sales_reasons"

+ 5 - 3
pages_shopping/live/storeOrderRefundAddDelivery.vue → pages_shopping/live/refundOrderDelivery.vue

@@ -19,13 +19,14 @@
 </template>
 
 <script>
-// import {addDelivery} from '@/api/storeAfterSales.js'
+import {addDelivery} from '@/api/order.js'
 	
 export default {
   data() {
     return {
 		form:{
-			salesId:null,
+			userId:this.userId,
+			id:null,
 			deliverySn:null,
 			deliveryName:null,
 		}
@@ -33,6 +34,7 @@ export default {
   },
   onLoad(option) {
 	  this.form.id=option.id
+	  this.userId= uni.getStorageSync("userData").userId
   },
   methods: {
 	submit(){
@@ -138,7 +140,7 @@ export default {
 				font-family: PingFang SC;
 				font-weight: bold;
 				color: #FFFFFF;
-				background: #C39A58;
+				background: #2BC7B9;
 				border-radius: 44upx;
 			}
 		}

+ 613 - 0
pages_shopping/live/refundOrderDetail.vue

@@ -0,0 +1,613 @@
+<template>
+	<view>
+		<view class="top-cont">
+			<!-- 背景图片 -->
+			<image class="bg" src="../../static/images/order_top_bg.png" mode=""></image>
+			<view class="top-inner">			
+				<!-- 这里是状态栏 -->
+				<view class="fixed-top-box">
+					<view class="status_bar" :style="{height: statusBarHeight}"></view>
+					<view class="back-box" @click="back">
+						<image src="../../static/images/back_white.png" mode=""></image>
+						<text class="title">售后详情</text>
+						<text></text>
+					</view>
+				</view>
+				
+				<!-- 顶部固定后站位元素 -->
+				<view style="padding-bottom: 88upx;">
+					<view :style="{height: statusBarHeight}"></view>
+				</view>
+				<!-- 订单状态 -->
+				<view class="order-status" >
+					<!-- 处理中 -->
+					<view  v-if="sales.salesStatus == 0" class="inner">
+						<view class="img-box">
+							<image src="../../static/images/deal96.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="../../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="sales.salesStatus == 2" 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="sales.salesStatus == 3" class="inner">
+						<view class="img-box">
+							<image src="../../static/images/compel96.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" v-if="sales.salesStatus==0">
+										<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 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="title-box">
+							<text class="label">退货信息</text>
+							<text class="ret-num">共2件</text>
+						</view> -->
+						<!-- 退货列表 -->
+						<view class="goods-list">
+							<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>
+								<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 v-if="sales!=null&&sales.isPackage==1"  class="item">
+								<view class="img-box">
+									<image :src="JSON.parse(sales.packageJson).imgUrl" mode="aspectFill"></image>
+								</view>
+								<view class="info-box">
+									<view>
+										<view class="title ellipsis2">
+											<!-- <view class="tag">处方药</view> -->
+											<view class="tag">套餐</view>{{JSON.parse(sales.packageJson).title}}
+										</view>
+										<view class="spec">{{JSON.parse(sales.packageJson).descs}}</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">{{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'
+	export default {
+		data() {
+			return {
+				modalTitle:"请输入快递单号",
+				sales:{},
+				items:[],
+				salesId:null,
+				// 状态栏的高度
+				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
+ 
+			};
+		},
+		onLoad(option) {
+			console.log("option是",option)
+			this.salesId = option.id
+
+		},
+		onShow() {
+			this.getAfterSalesDetails()
+		},
+		methods: {
+			addDeliverySn(){
+				console.log("点了填写物流")
+				console.log("点了填写物流", this.salesId)
+				uni.navigateTo({
+					url: './refundOrderDelivery?salesId=' + this.salesId
+				}) 
+			},
+			revoke(){
+				var data={salesId:this.salesId};
+				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
+						});
+						 
+					}
+				});
+			},
+			getAfterSalesDetails() {
+				//联网加载数据
+				var that = this;
+				var data = {
+					salesId:this.salesId,
+
+				};
+				getAfterSalesDetails(data).then(res => {
+					if(res.code==200){
+						//设置列表数据
+						 this.sales=res.sales;
+						 this.items=res.items;
+						
+					}else{
+						uni.showToast({
+							icon:'none',
+							title: res.msg
+						});
+						 
+					}
+				});
+			},
+			// 返回上一页
+			back() {
+				uni.navigateBack()
+			},
+			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: 100%;
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: 1;
+		}
+		.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;
+						}
+					}
+				}
+			}
+		}
+	}
+	.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>

+ 2 - 2
pages_shopping/live/refundOrderProduct.vue

@@ -30,8 +30,8 @@
 			<view class="btns">
 				<view class="left"></view>
 				<view class="right">
-					<view class="btn cancel" v-if="order.status==2 || order.status==2" @click="submit(0)">仅退款</view>
-					<view class="btn cancel" v-if="order.status==3||order.status==4" @click="submit(1)">退款退货</view>
+					<view class="btn cancel" v-if="order.status==2 || order.status==3" @click="submit(0)">仅退款</view>
+					<view class="btn cancel" v-if="order.status==4" @click="submit(1)">退款退货</view>
 				</view>
 			</view>
 		</view>

+ 47 - 13
pages_shopping/live/storeOrderDelivery.vue

@@ -2,25 +2,31 @@
 	<view>
 		<view class="top-cont">
 			<!-- 背景图片 -->
-			<image class="bg" src="/static/images/order_top_bg.png" mode=""></image>
+			<image class="bg" src="../../static/images/order_top_bg2.png" mode=""></image>
 			<view class="top-inner">			
 				<!-- 这里是状态栏 -->
 				<view class="status_bar" :style="{height: statusBarHeight}"></view>
 				<view class="back-box" @click="back">
-					<image src="/static/images/back_white.png" mode=""></image>
+					<image src="../../static/images/back_white.png" mode=""></image>
 					<text class="title">物流信息</text>
 					<text></text>
 				</view>
 				<!-- 运单号 -->
 				<view class="waybill-number">
+					<view class="itemlistall">
+						<view v-for="(item,index) in ExpressMulti" :key="index" @click="xuanze(index)"
+						 :class="actexpress==index?'itemlist itemact':'itemlist' " >
+							物流{{index+1}}</view>
+					</view>
+					
 					<view class="inner">
 						<view class="num-box">
 							<text class="text">运单号</text>
-							<text class="text">{{deliveryId}}</text>
-							<view class="copy" @click="copyOrderSn(deliveryId)">复制</view>
+							<text class="text">{{expressList.LogisticCode}}</text>
+							<view class="copy" @click="copyOrderSn(expressList.LogisticCode)">复制</view>
 						</view>
 						<view class="kf-box">
-							<text class="text">{{express.name}}</text>
+							<text class="text">{{expressList.ShipperName}}</text>
 							<!-- <text class="text">客服电话:95311</text> -->
 						</view>
 					</view>
@@ -30,14 +36,12 @@
 					<view class="refund-steps" v-if="expressList.Traces!=null">
 						<view v-for="(item,index) in expressList.Traces" :key="index" class="steps">
 							<view class="title">
-								<!-- <text v-if="index == 0" class="text black-text">已签收</text> -->
-								<!-- <text  class="text gray-bold">运输中</text> -->
 								<!-- 左侧灰色圆点 -->
 								<view class="dot"></view>
 								<!-- 对号 -->
-								<image  class="img" src="/static/images/complete.png" mode=""></image>
+								<image  class="img" src="../../static/images/complete.png" mode=""></image>
 								<!-- 运输中图标 -->
-								<image  class="img" src="/static/images/car40.png" mode=""></image>
+								<image  class="img" src="../../static/images/car40.png" mode=""></image>
 							</view>
 							<view  class="desc-text">
 								{{item.AcceptStation}}
@@ -56,7 +60,7 @@
 </template>
 
 <script>
-	// import {getMyStoreOrderById,cancelOrder,getExpress} from '@/api/storeOrder'
+	import {getExpress,getExpressMulti} from '@/api/order'
 	export default {
 		data() {
 			return {
@@ -65,13 +69,31 @@
 				deliveryId:null,
 				express:{},
 				expressList:[],
+				ExpressMulti:[],
+				actexpress:0
 			};
 		},
 		onLoad(option) {
+			console.log(option)
 			this.orderId=option.orderId;
-			this.getExpress();
+			this.getExpresslists()
 		},
 		methods: {
+			xuanze(index){
+				this.actexpress=index
+				this.getExpresslists()
+			},
+			getExpresslists(){
+				var data={orderId:this.orderId};
+				getExpressMulti(data).then(res => {
+					if(res.code==200){
+						this.ExpressMulti=res.data
+						this.expressList=res.data[this.actexpress]
+						console.log(this.expressList)
+						console.log(this.ExpressMulti)
+					}
+				})
+			},
 			getExpress(){
 				var data={orderId:this.orderId};
 				
@@ -118,6 +140,18 @@
 </script>
 
 <style lang="scss">
+	.itemlistall{
+		display: flex;
+	}
+	.itemlist{
+		background-color: #fff;
+		margin: 10rpx;
+		padding: 10rpx 30rpx;
+		border-radius: 10rpx;
+	}
+	.itemact{
+		color: #2BC7B9;
+	}
 	.top-cont{
 		width: 100%;
 		height: 336upx;
@@ -264,7 +298,7 @@
 						top: 11upx;
 						z-index: 10;
 						&.active{
-							background-color: #0bb3f2;
+							background-color: #2BC7B9;
 						}
 					}
 					.img{
@@ -287,7 +321,7 @@
 						font-size: 28upx;
 						font-family: PingFang SC;
 						font-weight: 500;
-						color: #0bb3f2;
+						color: #2BC7B9;
 						line-height: 1.6;
 					}
 				}

+ 21 - 19
pages_shopping/live/storeOrderDetail.vue

@@ -51,7 +51,7 @@
 						</view>
 					</view>
 					<!-- 已完成 -->
-					<view v-if="order.status == 5" class="inner">
+					<view v-if="order.status==4" class="inner">
 						<view class="img-box">
 							<image src="../../static/images/finish96.png" mode=""></image>
 						</view>
@@ -106,10 +106,10 @@
 					</view>
 				</view>
 				<view class="content">
-					
+
 					<!-- 药品列表 -->
 					<view class="goods-list">
-						<view class="item"	@click="openDetails(product)">
+						<view class="item" @click="openDetails(product)">
 							<view class="img-box">
 								<image :src="product.image" mode="aspectFill"></image>
 							</view>
@@ -119,7 +119,7 @@
 										<!-- <view class="tag">处方药</view> -->
 										{{product.productName}}
 									</view>
-									<view class="spec ellipsis2">{{product.sales}}</view>
+									<view class="spec ellipsis2">已售{{product.sales}}</view>
 								</view>
 								<view class="price-num">
 									<view class="price">
@@ -151,10 +151,10 @@
 							</view>
 						</view>
 					</view>
-					
-					
-					
-					
+
+
+
+
 					<!-- 订单信息 -->
 					<view class="order-info">
 						<view class="title">订单信息</view>
@@ -237,14 +237,16 @@
 		</view>
 		<!-- 按钮 -->
 		<view class="btn-box">
-			<view class="btn cancel" v-if="order.status==0" @click="cancel()">取消订单</view>
-			<view class="btn pay" v-if="order.status==0" @click="pay()">立即付款</view>
+			<view class="btn cancel" v-if="order.status==1" @click="cancel()">取消订单</view>
+			<view class="btn pay" v-if="order.status==1" @click="pay()">立即付款</view>
 			<!-- <view class="btn cancel"  v-if="(order.status==0||order.status==1)&&order.isPrescribe==1&&prescribe==null"  @click="addPrescribe()">开处方</view> -->
-			<view class="btn cancel" v-if="isAfterSales==1" @click="refund()">申请售后</view>
+			<view class="btn cancel"
+				v-if="item.status !== -1 && item.status !== -3&& item.status !== 1&& item.status !==-2"
+				@click="refund()">申请售后</view>
 			<view class="btn pay" v-if="order.status>=2&&order.deliveryId!=null" @click="express()">查看物流</view>
 			<view class="btn pay" v-if="order.status==2&&order.payType!=1&&order.isPayRemain==0&&order.deliverySn=='SF'"
 				@click="payRemain()">支付尾款</view>
-			<view class="btn pay" v-if="order.status==2" @click="finish()">确认收货</view>
+			<view class="btn pay" v-if="order.status==3" @click="finish()">确认收货</view>
 		</view>
 	</view>
 </template>
@@ -258,7 +260,7 @@
 	export default {
 		data() {
 			return {
-				product:{},
+				product: {},
 				isAfterSales: 0,
 				payLimitTime: null,
 				orderId: null,
@@ -304,8 +306,7 @@
 				getMyStoreOrderById(this.orderId).then(res => {
 					if (res.code == 200) {
 						this.order = res.data;
-						this.product=JSON.parse(res.data.itemJson) 
-						console.log("这个》》》",this.product)
+						this.product = JSON.parse(res.data.itemJson)
 						console.log(this.product.image)
 						// this.order=res.order;
 						// this.items=res.items;
@@ -322,7 +323,7 @@
 			},
 			express() {
 				uni.navigateTo({
-					url: './storeOrderDelivery?orderId=' + this.order.id
+					url: './storeOrderDelivery?orderId=' + this.order.orderId
 				})
 			},
 			cancel() {
@@ -333,7 +334,7 @@
 					success: function(res) {
 						if (res.confirm) {
 							var data = {
-								orderId: that.order.id
+								orderId: that.order.orderId
 							};
 							cancelOrder(data).then(res => {
 								if (res.code == 200) {
@@ -358,7 +359,7 @@
 					success: function(res) {
 						if (res.confirm) {
 							var data = {
-								orderId: that.order.id
+								orderId: that.order.orderId
 							};
 							finishOrder(data).then(res => {
 								if (res.code == 200) {
@@ -377,7 +378,8 @@
 			},
 			pay() {
 				uni.navigateTo({
-					url: './paymentOrder?orderId=' + this.order.id
+					url: `./paymentOrder?orderList=${encodeURIComponent(JSON.stringify(this.order))}`
+					// url: './paymentOrder?orderId=' + this.order.orderId
 				})
 			},
 			// payRemain() {

+ 2 - 2
pages_shopping/live/storeOrderRefundDetails.vue

@@ -191,7 +191,7 @@
 			// },
 			addDeliverySn(){
 				uni.navigateTo({
-					url: './storeOrderRefundAddDelivery?id=' + this.id
+					url: './refundOrderDelivery?id=' + this.id
 				}) 
 			},
 			revoke(){
@@ -416,7 +416,7 @@
 							font-family: PingFang SC;
 							font-weight: 500;
 							color: #666666;
-							line-height: 1;
+							line-height: 1.5;
 						}
 					}
 				}

+ 71 - 9
pages_shopping/live/storeOrderRefundList.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<u-sticky>
+		<!-- <u-sticky>
 			<view class="top-fixed">
 				 <u-tabs
 				  :scrollable="true"
@@ -9,7 +9,25 @@
 				 @change="tabChange">
 				 </u-tabs>
 			</view>
-		</u-sticky>
+		</u-sticky> -->
+		<view class="top-fixed">
+			<!-- tab切换 -->
+			<view class="pub-tab-box">
+				<view class="tab-inner">
+					<view 
+						v-for="(item,index) in tabs" 
+						:key="index"
+						:class="status == item.status?'item active':'item'"
+						@click="tabChange(item)"
+					>
+						<view class="text">
+							{{ item.name }}
+							<image v-show="status == item.status" class="tab-bg" src="/static/images/tab_bg.png" mode=""></image>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
 		<!-- 订单列表 -->
 		<mescroll-body top="110rpx" bottom="0"  ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
 			<view class="order-list">
@@ -84,7 +102,7 @@
 					{name:"财务审核 ",status:"3"},
 					{name:"退款成功 ",status:"4"},
 				],
-				status: 0,
+				status: '',
 				mescroll:null,
 				// 上拉加载的配置
 				upOption: {
@@ -107,7 +125,6 @@
 		onLoad(options) {
 			console.log("拿到了",options)
 			if(options.liveId){
-				console.log("拿到了",options.liveId)
 				this.liveId=options.liveId
 			}
 			
@@ -152,6 +169,7 @@
 			},
 			// 查看订单详情
 			showDetail(item) {
+				console.log("查看",item)
 				uni.navigateTo({
 					url: './storeOrderRefundDetails?id=' + item.id
 				})
@@ -167,12 +185,56 @@
 	}
 	.top-fixed{
 		width: 100%;
-		position: absolute;
+		position: fixed;
 		top: 0;
 		left: 0;
 		z-index: 10;
-		height: 110upx;
-		background-color: #fff;
+	}
+	.pub-tab-box{
+		box-sizing: border-box;
+		width: 100%;
+		padding: 0 60upx;
+		background-color: #FFFFFF;
+		.tab-inner{
+			height: 88upx;
+			line-height: 88upx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			overflow-x: auto;
+		}
+		.item{
+			font-size: 28upx;
+			white-space: nowrap;
+			line-height: 1;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #666666;
+			margin-right: 60upx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			&:last-child{
+				margin-right: 0;
+			}
+			&.active{
+				font-weight: bold;
+				color: #333333;
+			}
+			.text{
+				position: relative;
+				z-index: 1;
+			}
+			.tab-bg{
+				width: 72upx;
+				height: 28upx;
+				position: absolute;
+				top: 17upx;
+				left: 50%;
+				transform: translateX(-36upx);
+				z-index: -1;
+			}
+		}
 	}
 	.order-list{
 		padding: 20upx;
@@ -202,7 +264,7 @@
 						font-weight: 500;
 						line-height: 1;
 						&.success{
-							color: #FF5C03;
+							color: #2BC7B9;
 						}
 						&.info{
 							color: #999999;
@@ -344,7 +406,7 @@
 							text-align: center;
 							border-radius: 32upx;
 							&.pay{
-								background: #FF5C03;
+								background: #2BC7B9;
 								color: #FFFFFF;
 							}
 						}

BIN
static/images/googs2.png


BIN
static/images/like_live.png


BIN
static/images/weixin.png


Some files were not shown because too many files changed in this diff