puyao пре 16 часа
родитељ
комит
84cb06a376

+ 22 - 0
api/courseAuto.js

@@ -95,4 +95,26 @@ export function getConfigByKey(data) {
  }
  export function complaintRecord(data) {
  	return request('/course_auto/app/user/complaint/record', data, 'POST','application/json;charset=UTF-8');
+ }
+ //福袋
+ export function registerQwFsUserFinish(data) {
+ 	return request('/course_auto/app/course/registerQwFsUserFinish', data, 'POST', 'application/json;charset=UTF-8');
+ }
+ export function isAddCompanyUser(data) {
+ 	return request('/course_auto/app/course/registerQwFsUser', data, 'POST', 'application/json;charset=UTF-8');
+ }
+ export function getLuckyBagInfo(data) {
+ 	 return request('/course_auto/app/luckyBag/getLuckyBagInfo',data,'GET');
+ }
+ export function receiveLuckyBag(data) {
+  	return request('/course_auto/app/luckyBag/receiveLuckyBag', data, 'POST','application/json;charset=UTF-8');
+ }
+ //更改用户头像以及昵称
+ export function editUser(data) {
+ 	 return request('/course_auto/app/user/editUser',data,'POST','application/json;charset=UTF-8');
+ }
+ 
+ // 获取积分礼品
+ export function getCourseIntegralGoods(data,type) {
+ 	return request('/course_auto/app/course/getCourseIntegralGoods', null, 'GET');
  }

+ 64 - 0
components/FloatingCustomerService/index.vue

@@ -0,0 +1,64 @@
+<template>
+	<view class="floating-customer-service">
+		<button open-type="contact" class="contact-btns">
+			<image src="https://kntobs.jnmyunl.com/shop/images/customer.png" mode="aspectFit" />
+			<view class="text">客服投诉</view>
+		</button>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "FloatingCustomerService",
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.floating-customer-service {
+		position: fixed;
+		right: 30rpx;
+		bottom: 15%; // Slightly higher to avoid tabbar overlap
+		z-index: 9999;
+		width: 100rpx;
+		height: 100rpx;
+		border-radius: 50%;
+		box-shadow: 0 4rpx 10rpx rgba(0, 0, 0, 0.2);
+		background-color: #2BC7B9;
+		overflow: hidden;
+
+		.contact-btns {
+			width: 100%;
+			height: 100%;
+			padding: 0;
+			margin: 0;
+			background: transparent;
+			border: none;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: center;
+
+			&::after {
+				border: none;
+			}
+
+			image {
+				width: 50%;
+				height: 50%;
+				margin-bottom: 2rpx;
+			}
+
+			.text {
+				font-size: 20rpx;
+				color: #fff;
+				line-height: 1;
+				font-weight: bold;
+			}
+		}
+	}
+</style>

+ 1 - 1
manifest.json

@@ -53,7 +53,7 @@
     /* 小程序特有相关 */
     "mp-weixin" : {
         // "appid" : "wx1de020b57c05a990",
-        "appid" : "wxd2edd379beb6581b",
+        "appid" : "wx7f32e725d9935c32",
         "setting" : {
             "urlCheck" : false
         },

+ 26 - 3
pages.json

@@ -24,8 +24,8 @@
 		{
 			"path": "pages/home/index",
 			"style": {
-				// "navigationBarTitleText": "康年惠选 ",
-				"navigationBarTitleText": "康年惠选 ",
+				// "navigationBarTitleText": "荣健堂优选 ",
+				"navigationBarTitleText": "荣健堂优选 ",
 				"enablePullDownRefresh": false,
 				"navigationStyle": "custom",
 				"app-plus": {
@@ -1399,6 +1399,29 @@
 						"enablePullDownRefresh": false
 					}
 				},
+				{
+					"path" : "activity",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "",
+						"navigationStyle": "custom",
+						"scrollIndicator": "none",
+						"app-plus": {
+							"bounce": "none"
+						}
+					}
+				},
+				{
+					"path" : "appDownload",
+					"style" :                                                                                    
+					{
+						"navigationBarTitleText": "下载",
+						"scrollIndicator": "none",
+						"app-plus": {
+							"bounce": "none"
+						}
+					}
+				},
 				{
 					"path" : "feedback",
 					"style" :                                                                                    
@@ -1453,7 +1476,7 @@
 	],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "康年惠选 ",
+		"navigationBarTitleText": "荣健堂优选 ",
 		"navigationBarBackgroundColor": "#FFFFFF",
 		"backgroundColor": "#FFFFFF"
 	},

+ 2 - 2
pages/auth/login.vue

@@ -7,8 +7,8 @@
 		  	<view class="logo-img">
 				<image  :src="logoimg"></image>
 		  	</view>
-		  	<!-- <view class="title">康年惠选 </view> -->
-			<view class="title">康年惠选 </view>
+		  	<!-- <view class="title">荣健堂优选 </view> -->
+			<view class="title">荣健堂优选 </view>
 		  </view>
         <!-- <open-data class="user-avatar" type="userAvatarUrl"></open-data>
         <open-data class="user-name" type="userNickName"></open-data> -->

+ 1 - 1
pages/common/launch.vue

@@ -5,7 +5,7 @@
 				<view class="circle"></view>
 				<image :src="logoimg"></image>
 			</view>
-			<text class="text">康年惠选 </text>
+			<text class="text">荣健堂优选 </text>
 		</view>
 	</view>
 </template>

+ 5 - 0
pages/healthy/index.vue

@@ -50,13 +50,18 @@
 			</view>
 		</mescroll-body>
 		<!-- <tabbar :actindex="1"></tabbar> -->
+		<floating-customer-service></floating-customer-service>
 	</view>
 </template>
 
 <script>
 	import {getArticleCate,getArticleList} from '@/api/article'
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	import FloatingCustomerService from "@/components/FloatingCustomerService/index.vue"
 	export default {
+		components: {
+			FloatingCustomerService
+		},
 		mixins: [MescrollMixin], 
 		data() {
 			return {

+ 6 - 5
pages/home/index.vue

@@ -8,7 +8,7 @@
 					<!-- 这里是状态栏 -->
 					<view class="status_bar" :style="{height: statusBarHeight}"></view>
 					<view class="top-title">
-						<view class="name">康年惠选 </view>
+						<view class="name">荣健堂优选 </view>
 						<!-- <view class="dot">•</view><view class="sub-name">七彩互联网医院</view> -->
 					</view>
 					<!-- 搜索框、购物车、客服 -->
@@ -257,6 +257,7 @@
 		  :right="30"
 		  @menuItemClick="handleAction"
 		/> -->
+		<floating-customer-service></floating-customer-service>
 		<z-modal :show="tuiModalControl" placeholderText="请输入邀请码" :btnGroup="btnGroup" :contentType="2"
 			titleText="填写邀请码" @cancle="cancleTui" @sure="submitTui"></z-modal>
 		<!-- <tabbar :actindex="0"></tabbar> -->
@@ -301,12 +302,12 @@
 	import HotProduct from './components/HotProduct.vue'
 	import NewProduct from './components/NewProduct.vue'
 	import TuiProduct from '@/components/tuiProduct.vue'
+	import FloatingCustomerService from "@/components/FloatingCustomerService/index.vue"
 	import {
 		getUserInfo,
 		bindPromoter
 	} from '@/api/user'
 	import { mapGetters } from 'vuex';
-	import FloatingActionButton from '@/components/FloatingActionButton/FloatingActionButton.vue'
 	export default {
 		components: {
 			zModal,
@@ -315,7 +316,7 @@
 			HotProduct,
 			NewProduct,
 			TuiProduct,
-			FloatingActionButton
+			FloatingCustomerService
 		},
 		data() {
 			return {
@@ -471,7 +472,7 @@
 		},
 		onShareAppMessage(res) {
 			return {
-				title: '康年惠选 -您的专属健康解决方案',
+				title: '荣健堂优选 -您的专属健康解决方案',
 				path: `/pages/common/launch`,
 				imageUrl:this.logoimg//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}
@@ -483,7 +484,7 @@
 		//分享到朋友圈
 		onShareTimeline(res) {
 			return {
-				title: '康年惠选 -您的专属健康解决方案',
+				title: '荣健堂优选 -您的专属健康解决方案',
 				query: '', //页面参数
 				imageUrl: this.logoimg//分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
 			}

+ 6 - 1
pages/shopping/index.vue

@@ -55,13 +55,18 @@
 			</view>
 		</view>
 		<!-- <tabbar :actindex="3"></tabbar> -->
+		<floating-customer-service></floating-customer-service>
 	</view>
 </template>
 
 <script>
 	import {getProductCate} from '@/api/product'
 	import {getAdv} from '@/api/adv'
+	import FloatingCustomerService from "@/components/FloatingCustomerService/index.vue"
 	export default {
+		components: {
+			FloatingCustomerService
+		},
 		data() {
 			return {
 				divHeight:'0px',
@@ -74,7 +79,7 @@
 				cateSelect: 0,
 				// 轮播图
 				advs: [],
-				isshow:false
+				isshow:false,
 			};
 		},
 		onLoad() {

+ 4 - 1
pages/user/index.vue

@@ -161,6 +161,7 @@
 			</view>
 			
 		</view>
+		<floating-customer-service></floating-customer-service>
 	</view>
 </template>
 
@@ -168,9 +169,11 @@
 	import {getOrderCount} from '@/api/storeOrder'
 	import {getUserInfo} from '@/api/user'
 	import likeProduct from '@/components/likeProduct.vue'
+	import FloatingCustomerService from "@/components/FloatingCustomerService/index.vue"
 	export default {
 		components: {
-			likeProduct
+			likeProduct,
+			FloatingCustomerService
 		},
 		data() {
 			return {

+ 1000 - 0
pages_course/activity.vue

@@ -0,0 +1,1000 @@
+<template>
+	<view class="container_box">
+		<view class="header-nav"
+			:style="{height: `calc(88rpx + ${statusBarHeight}px)`,paddingTop: statusBarHeight + 'px'}">
+		</view>
+		<view class="conbox">
+			<image class="activity_yh_right" src="https://obs.jnmyunl.com/minapp/course/activity_yh_right.png"
+				mode="widthFix"></image>
+			<image class="activity_yh_left" src="https://obs.jnmyunl.com/minapp/course/activity_yh_left.png"
+				mode="widthFix"></image>
+			<image class="activity_title" v-if="collectType!=1&&isExpiry" src="https://obs.jnmyunl.com/minapp/course/activity_title.png" mode="widthFix"></image>
+			<view class="activity_title2" v-if="!isExpiry&&collectType!=1">
+				福袋已经失效了~
+			</view>
+			<template v-if="collectType==1">
+				<view class="activity_title3">
+					您已经领取过本次福袋啦~
+				</view>
+				<view class="activity_title4">
+					赶紧前往国健通APP,兑换好物吧
+				</view>
+			</template>
+			<view class="ybg_box">
+				<view class="ybg"></view>
+				<image class="activity_lucky_bag" src="https://obs.jnmyunl.com/minapp/course/activity_lucky_bag.png"
+					mode="heightFix"></image>
+				<image class="activity_ysx" v-show="!isExpiry&&collectType!=1"
+					src="https://obs.jnmyunl.com/minapp/course/activity_ysx.png" mode="widthFix"></image>
+				<image class="activity_ylq" v-show="collectType==1"
+					src="https://obs.jnmyunl.com/minapp/course/activity_ylq.png" mode="widthFix"></image>
+			</view>
+			<view class="activity_btn animation" v-if="collectType!=1&&isExpiry" @click="handleReceive">
+				<view class="btn">领取福袋</view>
+				<image src="https://obs.jnmyunl.com/minapp/course/activity_btn.png" mode="heightFix"></image>
+				<view class="exsct"></view>
+			</view>
+			<view class="activity_btn_down x-c" v-else @click="navTo">
+				<text>如何下载国健通APP</text>
+				<image src="https://obs.jnmyunl.com/minapp/course/activity_more.png" mode="aspectFill"></image>
+			</view>
+		</view>
+		<image class="footer_img" src="https://obs.jnmyunl.com/minapp/course/activity_xy.png" mode="widthFix">
+		</image>
+		<u-popup :show="show" mode="center" bgColor="transparent" :closeOnClickOverlay="false" overlayOpacity="0.7">
+			<view class="popup-box">
+				<image class="activity_jb" src="https://obs.jnmyunl.com/minapp/course/activity_jb.png"
+					mode="heightFix"></image>
+				<text class="popup-tit">恭喜您获得</text>
+				<view class="con">
+					<view class="numbox color_FB2205"><text class="num">+{{coinAmount||0}}</text>积分</view>
+					<view>您的积分总额:<text class="color_FB2205" style="font-weight: 600;">{{balance||0}}</text></view>
+				</view>
+				<view class="goodslist">
+					<view class="goodsitem" v-for="(item,index) in products" :key="index" @click="handleItem(item,index)">
+						<image class="bg" src="https://obs.jnmyunl.com/fs/20260105/1767598882857.png" mode="widthFix"></image>
+						<image class="img" :src="item.imageUrl" mode="aspectFill"></image>
+						<view class="goodsitem-name ellipsis">{{item.productName}}</view>
+						<view class="goodsitem-integral">
+							<text class="goodsitem-integral-num">{{item.requiredPoints}}</text>
+							<text>积分</text>
+						</view>
+						<view class="goodsitem-price">原价{{item.otPrice&&item.otPrice.toFixed(2)}}元</view>
+					</view>
+				</view>
+				<view class="changebtn" @click="getInfo">换一批</view>
+				<view class="popup-tips">赶紧去国健通APP,兑换好物吧~</view>
+				<view class="popbtn x-c" @click="show=false">我知道啦</view>
+			</view>
+			<view class="popup-tips" style="color: #FFFFFF;margin-top: 40rpx;">兑换提示:请前往国健通APP兑换</view>
+			<view class="popup-tips" style="color: #FFC05C;text-decoration-line: underline;margin-top: 20rpx;" @click="navTo">如何下载国健通APP?
+			</view>
+		</u-popup>
+		<u-popup :show="userlogo" mode="bottom" round='12'>
+			<view class="userlogo column">
+				<view class="mtb30 justify-start align-center ml20">
+					<u-avatar src="https://obs.jnmyunl.com/fs/20250425/logo.png" size="50"></u-avatar>
+					<view class="bold mlr20">荣健堂优选</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">
+								<u-icon name="checkbox-mark" color="#00aa00" size="22"></u-icon>
+							</view>
+						</view>
+						<view class="ml20">
+							<view class="base-color-3 bold">第一步</view>
+							<view class="fs32 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="fs32 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>
+	</view>
+</template>
+
+<script>
+	import {TOKEN_KEYAuto} from '@/utils/courseTool.js'
+	import {mapGetters} from 'vuex';
+	import { getLuckyBagInfo, receiveLuckyBag,loginByMp,editUser,isAddCompanyUser,registerQwFsUserFinish,getCourseIntegralGoods,getConfigByKey}from '@/api/courseAuto.js'
+	import {handleFsUserWx} from '@/api/courseLook.js'
+	export default {
+		data() {
+			return {
+				statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
+				show: false,
+				status: 0,
+				recordId: '',
+				urlOption: {},
+				sortLink: '',
+				isLogin: false,
+				isLoginH5: 1, // 1服务号授权
+				collectType: 0, // 领取状态(0-已发放 1-已领取 2-已失效)
+				isExpiry: true, // false 失效 true 有效
+				coinAmount: 0,
+				balance: 0,
+				chatId: '',
+				userlogo:false,
+				imgname:'',
+				userinfos:{
+					nickname:"",
+					avatar:""
+				},
+				btnLoading: false,
+				registerLoading: false,
+				products:[]
+			}
+		},
+		computed: {
+			...mapGetters(['coureLogin','logoimg']),
+			nameuser() {
+				return this.userinfos.nickname
+			},
+			avataruser() {
+				return this.userinfos.avatar
+			},
+		},
+		watch: {
+			coureLogin: {
+				immediate: true, // 页面一进入就检查一次
+				handler(val) {
+					if (val == 2 && this.isLogin) {
+						console.log("注册AppToken失效,请重新登录")
+						uni.removeStorageSync('auto_userInfo');
+						uni.removeStorageSync('TOKEN_WEXIN');
+						this.isLogin = false
+						if (this.isLoginH5 == 0) {
+							this.goWXLogin()
+						} else {
+							this.goLogin()
+						}
+					}
+				}
+			}
+		},
+		onLoad(option) {
+			this.getWebviewUrl()
+			this.urlOption = option.link ? JSON.parse(decodeURIComponent(option.link)) : {};
+			this.sortLink = this.urlOption.link || ''
+			this.chatId = this.urlOption.chatId || ''
+			this.recordId =this.urlOption.businessId || ''
+			console.log('232323',this.recordId)
+			uni.$on('usercode',(data)=>{
+				if(data) {
+					this.goLogin(data)
+				}
+			})
+			this.getLuckyBagInfo()
+			this.getInfo()
+		},
+		beforeDestroy() {
+			uni.$off('usercode')
+		},
+		onUnload() {
+			uni.$off('usercode')
+		},
+		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('setWebviewUrl',data.userCourseAuthDomain)
+						}else{
+							uni.showToast({
+								icon:'none',
+								title: res.msg,
+							});
+						}
+					})
+			},
+			getInfo() {
+				getCourseIntegralGoods().then(res=>{
+					if(res.code == 200) {
+						// this.goodsInfo = res.data
+						this.products = res.data && res.data.products? res.data.products:[]
+					} else {
+						uni.showToast({
+							title: res.msg,
+							icon: 'none'
+						})
+					}
+				})
+			},
+			registerQwFsUserFinish() {
+				uni.showLoading({
+					title: '领取中...'
+				});
+				registerQwFsUserFinish(this.urlOption).then(res=>{
+					uni.hideLoading()
+					if(res.code==200) {
+						this.receiveLuckyBag()
+					} else {
+						if (this.chatId) {
+							this.userlogo = true
+						} else {
+							this.getAddCompanyUser()
+						}
+					}
+				}).catch(()=>{
+					uni.hideLoading()
+				})
+			},
+			getAddCompanyUser() {
+				if(this.registerLoading) return;
+				uni.showLoading({
+					title: '注册中'
+				})
+				this.registerLoading = true
+				isAddCompanyUser(this.urlOption).then(res=>{
+					this.registerLoading = false
+					uni.hideLoading()
+					if(res.code==200) {
+						this.receiveLuckyBag()
+					} else {
+						uni.showToast({
+							title: res.msg,
+							icon: 'none'
+						});
+					}
+				}).catch(()=>{
+					this.registerLoading = false
+					uni.hideLoading()
+				})
+			},
+			//修改用户昵称以及头像
+			editUserA(){
+				this.userinfos=uni.getStorageSync('auto_userInfo')?uni.getStorageSync('auto_userInfo'):this.userinfos
+				const data={
+					nickName:this.userinfos.nickname,
+					// avatar:this.userinfos.avatar,
+				}
+				editUser(data).then(res=>{
+					if(res.code==200){
+						this.isLogin = true
+						uni.showToast({
+							icon:'none',
+							title:'修改成功!',
+						});
+						setTimeout(()=>{
+							this.getAddCompanyUser()
+						},100)
+					}else{
+						uni.removeStorageSync('auto_userInfo')
+						uni.showToast({
+							icon:'none',
+							title:res.msg+'请重新领取福袋',
+						});
+					}
+				})
+			},
+			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('auto_userInfo',this.userinfos)
+				this.editUserA()
+				this.userlogo=false
+			},
+			onNickNameInput(e){
+				console.log(e)
+				this.userinfos.nickname=e.detail.value
+			},
+			onChooseAvatar(e){
+				this.userinfos.avatar=e.detail.avatarUrl
+				uni.uploadFile({
+					url: 'https://userapp.jnmyunl.com'+'/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
+					}
+				});
+			},
+			handleReceive() {
+				// if (this.isLoginH5 == 0) {
+					this.$isLoginCourseAuto().then(
+						isLogin => {
+							this.isLogin = isLogin
+							if (this.isLogin) {
+								this.registerQwFsUserFinish()
+							} else {
+								this.goLogin()
+							}
+						},
+						rej => {}
+					);
+				// } 
+			},
+			receiveLuckyBag() {
+				if(this.btnLoading) {
+					return
+				}
+				uni.showLoading({
+					title: '领取中...',
+				});
+				this.btnLoading = true
+				console.log('11111',JSON.parse(uni.getStorageSync('auto_userInfo')).userId)
+				const param = {
+					...this.urlOption,
+					recordId: this.recordId,
+					userId:JSON.parse(uni.getStorageSync('auto_userInfo')).userId
+				}
+				receiveLuckyBag(param).then(res => {
+					uni.hideLoading()
+					this.btnLoading = false
+					if(res.code == 200) {
+						this.coinAmount = res.data.coinAmount || 0
+						this.balance =  res.data.balance || 0
+						this.collectType = 1
+						this.show = true
+					} else {
+						uni.showModal({
+							title: '领取失败',
+							content: res.msg,
+							showCancel: false,
+							success: function (res) {
+								if (res.confirm) {
+									console.log('用户点击确定');
+								} else if (res.cancel) {
+									console.log('用户点击取消');
+								}
+							}
+						});
+					}
+				}).catch(()=>{
+					this.btnLoading = false
+				})
+			},
+			navTo() {
+				this.show = false
+				uni.navigateTo({
+					url: '/pages_course/appDownload'
+				})
+			},
+			getLuckyBagInfo() {
+				uni.hideLoading()
+				getLuckyBagInfo({
+					recordId: this.recordId
+				}).then(res => {
+					if (res.code == 200) {
+						this.collectType = res.data.collectType || 0; //领取状态(0-已发放 1-已领取 2-已失效)
+						this.isExpiry = res.data.isExpiry; //false 失效 true 有效
+					} else {
+						uni.showToast({
+							title: res.msg,
+							icon: 'none'
+						});
+					}
+				})
+			},
+			goLogin(data) {
+				console.log('----',this.isLoginH5)
+				if (this.isLoginH5 == 0) {
+					this.goWXLogin(1)
+					return
+				}
+				console.log('----===',this.isLoginH5)
+				if(data) {
+					this.utils.getProvider().then(provider=>{
+						console.log('当前的环境商',provider)
+						if (!provider) {
+						  reject()
+						}
+						uni.login({
+							provider: provider,
+							success: loginRes => {
+								console.log(loginRes)
+								uni.getUserInfo({
+								   provider: provider,
+								   success: (infoRes)=> {
+										const param = {
+											code: loginRes.code, // 必填参数,不能为空,code参数缺失时会报错
+											appId:wx.getAccountInfoSync().miniProgram.appId, // 应用ID
+											userId: data.userId // 用户id
+										}
+										uni.showLoading({
+											title: '报名中'
+										})
+										handleFsUserWx(param).then(res=>{
+											uni.hideLoading()
+											if(res.code==200) {
+												let token = uni.getStorageSync('TOKEN_WEXIN');
+												let user = uni.getStorageSync('userInfo')
+												uni.setStorageSync(TOKEN_KEYAuto, token);
+												uni.setStorageSync('auto_userInfo', JSON.stringify(user));
+												this.isLogin = true
+												this.registerQwFsUserFinish()
+												
+											} else {
+												uni.removeStorageSync('auto_userInfo');
+												uni.removeStorageSync('TOKEN_WEXIN');
+												uni.showToast({
+													title: res.msg,
+													icon: 'none'
+												});
+											}
+										}).catch(err=>{
+											uni.hideLoading()
+										})
+								   }
+								});
+							}
+						})
+					})
+				} else {
+					uni.setStorageSync('H5course',{
+						companyId: this.urlOption.companyId,
+						companyUserId:this.urlOption.companyUserId,
+					})
+					uni.navigateTo({
+						url:'/pages_course/webview'
+					})
+				}
+			},
+			goWXLogin() {
+				this.utils.getProvider().then(provider => {
+					console.log('当前的环境商', provider)
+					if (!provider) {
+						reject()
+					}
+					uni.login({
+						provider: provider,
+						success: async loginRes => {
+							console.log(loginRes)
+							uni.getUserInfo({
+								provider: provider,
+								success: (infoRes) => {
+									uni.showToast({
+										title: '登录中...',
+										icon: 'loading'
+									});
+									loginByMp({
+										code: loginRes.code,
+										encryptedData: infoRes.encryptedData,
+										iv: infoRes.iv,
+										appId: wx.getAccountInfoSync().miniProgram.appId
+									}).then(res => {
+										uni.hideLoading();
+										if (res.code == 200) {
+											// this.checkUserInfoA()
+											this.$store.commit('setCoureLogin', 1);
+											uni.setStorageSync(TOKEN_KEYAuto, res.token);
+											uni.setStorageSync('auto_userInfo',JSON.stringify(res.user));
+											this.isLogin = true
+											this.registerQwFsUserFinish()
+										} else {
+											uni.showToast({
+												title: res.msg,
+												icon: 'none'
+											});
+										}
+									}).catch(err => {
+										uni.hideLoading();
+										uni.showToast({
+											icon: 'none',
+											title: "登录失败,请重新登录",
+										});
+									});
+								}
+							});
+						}
+					})
+				}).catch(err => {})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.changebtn {
+		width: 152rpx;
+		height: 64rpx;
+		margin: 0 auto 24rpx auto;
+		border-radius: 32rpx 32rpx 32rpx 32rpx;
+		border: 1rpx solid #FF5C03;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-family: PingFang SC;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #FF5C03;
+	}
+	.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;
+	}
+	.exsct {
+		height: 92rpx;
+		width: 437rpx;
+		background-color: transparent;
+		border-radius: 69rpx;
+		position: absolute;
+		top: 27rpx;
+		left: 28rpx;
+		box-shadow: inset -57rpx 0px 40rpx -26rpx rgba(255, 255, 255, 0.7);
+		will-change: left, opacity;
+		animation: leftFade 2s linear infinite;
+		opacity: 0;
+	}
+
+	.color_FB2205 {
+		color: #FB2205;
+	}
+
+	.activity_title2,
+	.activity_title3,
+	.activity_title4 {
+		margin-top: 8vh;
+		margin-bottom: 56rpx;
+		font-family: PingFang SC, PingFang SC;
+		font-weight: 600;
+		font-size: 48rpx;
+		line-height: 80rpx;
+		filter: drop-shadow(0px 4rpx 8rpx rgba(174, 0, 25, 0.8));
+		text-align: center;
+		font-style: normal;
+		text-transform: none;
+		background: linear-gradient(270deg, #FFF5EE 0%, #FFE2B3 100%);
+		-webkit-background-clip: text;
+		background-clip: text;
+		-webkit-text-fill-color: transparent;
+		text-fill-color: transparent;
+		display: inline-block
+	}
+
+	.activity_title3 {
+		font-size: 48rpx;
+		line-height: 80rpx;
+		margin-top: 6vh;
+		margin-bottom: 8rpx;
+	}
+
+	.activity_title4 {
+		font-size: 32rpx;
+		line-height: 44rpx;
+		margin-top: 0;
+		margin-bottom: 48rpx;
+	}
+
+	.container_box {
+		min-height: 100vh;
+		position: relative;
+		background: linear-gradient(180deg, #FD2F3C 0%, #FFE7CE 100%);
+	}
+
+	.activity_yh_right {
+		width: 100rpx;
+		position: absolute;
+		top: 25%;
+		right: 0;
+	}
+
+	.activity_yh_left {
+		width: 114rpx;
+		position: absolute;
+		top: 50%;
+		left: 0;
+	}
+
+	.header-nav {
+		height: 88rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		overflow: hidden;
+		box-sizing: border-box;
+		width: 100%;
+	}
+
+	.conbox {
+		position: relative;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: flex-start;
+		z-index: 3;
+
+		.activity_title {
+			width: 632rpx;
+			height: auto;
+			margin-top: 28rpx;
+		}
+
+		.ybg_box {
+			width: 566rpx;
+			height: 580rpx;
+			position: relative;
+
+			.activity_ysx,
+			.activity_ylq {
+				position: absolute;
+				left: 242rpx;
+				top: 215rpx;
+				width: 300rpx;
+				height: auto;
+			}
+
+			.ybg {
+				width: 616rpx;
+				height: 616rpx;
+
+				background: #FFE7CE;
+				border-radius: 0rpx 0rpx 0rpx 0rpx;
+
+				filter: blur(94.30000305175781px);
+			}
+
+			image {
+				height: 580rpx;
+				position: absolute;
+				top: 0;
+				left: 0;
+				z-index: 99;
+			}
+		}
+
+		.activity_btn_down {
+			width: 416rpx;
+			height: 88rpx;
+			margin-top: 94rpx;
+			background: rgba(0, 0, 0, 0.3);
+			border-radius: 56rpx 56rpx 56rpx 56rpx;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 600;
+			font-size: 28rpx;
+			color: #FFFFFF;
+
+			image {
+				width: 32rpx;
+				height: 32rpx;
+				margin-left: 16rpx;
+			}
+		}
+
+		.activity_btn {
+			height: 137rpx;
+			width: 502rpx;
+			margin-top: 48rpx;
+			font-family: PingFang SC;
+			font-weight: 600;
+			font-size: 44rpx;
+			color: #FFFFFF;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			position: relative;
+			z-index: 2;
+			overflow: hidden;
+			border-radius: 137rpx;
+
+			image {
+				height: 137rpx;
+				position: absolute;
+				left: 0;
+				top: 12rpx;
+				z-index: -1;
+			}
+		}
+	}
+
+	.popup-box {
+		width: 670rpx;
+		min-height: 568rpx;
+		padding-bottom: 24rpx;
+		margin-top: 130rpx;
+		background: linear-gradient(180deg, #FFE7AC 0%, #FFFFFF 100%);
+		border-radius: 56rpx 56rpx 56rpx 56rpx;
+		position: relative;
+		display: flex;
+		align-items: center;
+		flex-direction: column;
+		box-shadow: 0 0 30px -6px rgba(255, 231, 206, 1);
+
+		.activity_jb {
+			height: 184rpx;
+			margin-top: -130rpx;
+			position: relative;
+		}
+
+		.popup-tit {
+			font-family: PingFang SC;
+			font-weight: 600;
+			font-size: 40rpx;
+			color: #000000;
+			line-height: 80rpx;
+		}
+
+		.con {
+			// margin-top: 16rpx;
+			width: 538rpx;
+			min-height: 170rpx;
+			padding: 16rpx 0;
+			background: #FFE8AE;
+			border-radius: 16rpx 16rpx 16rpx 16rpx;
+			font-family: PingFang SC;
+			font-weight: 400;
+			font-size: 28rpx;
+			color: #333333;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			justify-content: center;
+		}
+
+		.numbox {
+			font-weight: 600;
+			margin-bottom: 12rpx;
+		}
+
+		.num {
+			font-size: 68rpx;
+			margin-right: 10rpx;
+		}
+
+		.popbtn {
+			width: 358rpx;
+			height: 88rpx;
+			background: linear-gradient(90deg, #F82D31 0%, #FD6C05 100%);
+			box-shadow: 0rpx 8rpx 0rpx 0rpx #FEBC92;
+			border-radius: 64rpx 64rpx 64rpx 64rpx;
+			margin-top: 32rpx;
+			font-family: PingFang SC, PingFang SC;
+			font-weight: 600;
+			font-size: 32rpx;
+			color: #FFFFFF;
+		}
+	}
+
+	.popup-tips {
+		// margin-top: 20rpx;
+		font-family: PingFang SC;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #666666;
+		text-align: center;
+	}
+
+	.footer_img {
+		width: 100%;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+	}
+
+	.animation {
+		will-change: transform;
+		animation: scaleAnimation 2s ease infinite;
+	}
+
+	@keyframes leftFade {
+		0% {
+			left: -464rpx;
+			opacity: 0;
+		}
+
+		25% {
+			opacity: 1;
+			left: -249rpx;
+		}
+
+		50% {
+			opacity: 0;
+			left: 16rpx;
+		}
+
+		100% {
+			opacity: 0;
+			left: 490rpx;
+		}
+	}
+
+	@keyframes scaleAnimation {
+		0% {
+			transform: scale(1);
+		}
+
+		// 30% {
+		//   transform: scale(1.05);
+		// }
+
+		50% {
+			transform: scale(1.05);
+		}
+
+		100% {
+			transform: scale(1);
+		}
+	}
+	.goodslist {
+		width: 100%;
+		margin-top: 58rpx;
+		padding: 24rpx 10rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-evenly;
+		.bg {
+			width: 100%;
+			height: 100%;
+			position: absolute;
+			bottom: 0;
+			left: 0;
+			z-index: -1;
+		}
+	}
+	.goodsitem {
+		flex: 1;
+		max-width: 200rpx;
+		min-height: 124rpx;
+		border-radius: 10rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: flex-start;
+		font-family: PingFang SC;
+		font-weight: 400;
+		font-size: 22rpx;
+		color: #999999;
+		position: relative;
+		z-index: 2;
+		.img {
+			width: 153rpx;
+			height: 126rpx;
+			margin-top: -44rpx;
+			border-radius: 10rpx;
+		}
+		&-name {
+			width: 100%;
+			padding: 8rpx 14rpx;
+			text-align: center;
+			font-family: PingFang SC;
+			font-weight: 500;
+			font-size: 24rpx;
+			color: #222222;
+			box-sizing: border-box;
+		}
+		&-integral {
+			min-width: 80%;
+			padding-bottom: 16rpx;
+			box-sizing: border-box;
+			font-family: PingFang SC;
+			font-weight: 400;
+			font-size: 22rpx;
+			color: #FF5C03;
+			border-bottom: 2px #999999 dotted;
+			&-num {
+				font-family: DINPro, DINPro;
+				font-weight: 500;
+				font-size: 36rpx;
+			}
+		}
+		&-price {
+			padding: 10rpx 0;
+		}
+	}
+</style>

+ 30 - 0
pages_course/appDownload.vue

@@ -0,0 +1,30 @@
+<template>
+	<view>
+		<image v-if="os!='ios'" class="img" src="https://obs.jnmyunl.com/minapp/course/android_app.jpg" mode="widthFix"></image>
+		<image v-if="os!='android'" class="img" src="https://obs.jnmyunl.com/minapp/course/ios_app.jpg" mode="widthFix"></image>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				os: ''
+			}
+		},
+		onLoad() {
+			uni.getSystemInfo({
+				success: (res)=>{
+					this.os = res.osName
+				}
+			});
+		}
+	}
+</script>
+
+<style scoped>
+	.img {
+		width: 100%;
+		display: block;
+	}
+</style>

+ 2 - 2
pages_course/videovip.vue

@@ -287,11 +287,11 @@
 		sendReward,
 		getRealLink,
 		loginByMiniApp,
-		handleFsUserWx
+		handleFsUserWx,
 	} from "@/api/courseLook.js"
 	import {
 		getConfigByKey
-	} from "@/api/user.js"
+	} from "@/api/courseAuto.js"
 	export default {
 		data() {
 			return {

+ 2 - 2
pages_user/user/pay.vue

@@ -4,7 +4,7 @@
 			<view class="inner">
 				<view class="pay">
 					<view class="title">
-						<text class="name">付款给 康年惠选 </text>
+						<text class="name">付款给 荣健堂优选 </text>
 						<text class="desc">微信收款</text>
 					</view>
 					<view class="pay-money">
@@ -62,7 +62,7 @@
 		},
 		onShareAppMessage(res) {
 			return {
-				title: '康年惠选 -收款',
+				title: '荣健堂优选 -收款',
 				path: `/pages_user/user/pay?companyId=`+this.companyId+"&companyUserId="+this.companyUserId
 			}
 		},

+ 2 - 2
pages_user/user/userTuiAdd.vue

@@ -1,12 +1,12 @@
 <template>
   <view>
 		<view class="form-box">
-			<view class="title">你为什么想成为康年惠选 健康推广?</view>
+			<view class="title">你为什么想成为荣健堂优选 健康推广?</view>
 			<view class="textarea-box">
 				<textarea v-model="question1" value="" placeholder="请输入..." maxlength="200" placeholder-class="textarea-place" />
 				<view class="num-box">{{ question1.length }}/200</view>
 			</view>
-			<view class="title">你是否了解康年惠选 健康推广大使?</view>
+			<view class="title">你是否了解荣健堂优选 健康推广大使?</view>
 			<view class="textarea-box">
 				<textarea v-model="question2" value="" placeholder="请输入..." maxlength="200" placeholder-class="textarea-place" />
 				<view class="num-box">{{ question1.length }}/200</view>

+ 6 - 3
store/index.js

@@ -22,10 +22,13 @@ export default new Vuex.Store({
 	 uploadFile: 'https://userapp.cqsft.vip',
 	imgpath: 'https://kntobs.jnmyunl.com',//惠选商城图片请求地址
 	// https://kntobs.jnmyunl.com/shop  惠选商城图片链接
-	logoname:'康年惠选',
+	logoname:'荣健堂优选',
+	// appid:'wxdc473753fd42a1d2',//荣健堂优选
+	//appid:'wx6c20263c87c4dfae',//德信嘉选
+	//appid:'wx93e9cafa0f306254',//康年嘉选
 	// appid:'wx1de020b57c05a990',//臻选
-	appid:'wxd2edd379beb6581b',//惠选
-	// appid:'wx3d99227bd098ba02',//其他
+	//appid:'wxd2edd379beb6581b',//惠选
+	appid:'wx7f32e725d9935c32',//其他
   },
   mutations: {
     setCount(state, value) {