Ver código fonte

Merge remote-tracking branch 'origin/master'

wgl 4 anos atrás
pai
commit
b8cfd8cf65

+ 11 - 0
src/apis/common.js

@@ -15,4 +15,15 @@ export function getSchoolServeList(params) {
 		data: Qs.stringify(params),
 		method: 'post',
 	})
+}
+
+//获取banner图片
+export function getBannerInfo(type) {
+	return request({
+		url: '/mobile/bannerInfo/getBannerInfo',
+		data: Qs.stringify({
+			type: type
+		}),
+		method: 'post',
+	})
 }

+ 6 - 12
src/apis/payment.js

@@ -1,27 +1,21 @@
 import request from '$project/utils/request'
 import Qs from 'qs';
 
-//购买页面商品详情
-export function getGoodsDetail(params) {
-    return request({
-        url: '/mobile/cameraApi/getGoodsDetail',
-        data: Qs.stringify(params),
-        method: 'post',
-    })
-}
+
 
 //微信支付
-export function wxJsapiPay(params) {
+export function wxJsapiPay(params,code) {
+
     return request({
-        url: '/wxPay/wxJsapiPay?orderId='+params,
+        url: '/wxPay/wxJsapiPay?orderId='+params+'&popularizePersonId='+code,
 
         method: 'get',
     })
 }
 //支付宝支付
-export function tradePrecreatePay(params) {
+export function tradePrecreatePay(params,code) {
     return request({
-        url: '/aliPay/tradePrecreatePay?orderId='+params,
+        url: '/aliPay/tradePrecreatePay?orderId='+params+'&popularizePersonId='+code,
         method: 'get',
     })
 }

+ 12 - 2
src/assets/css/xpwyfyy.css

@@ -1288,7 +1288,17 @@ h3 {
 	padding: 10px;
 	margin: 10px 10px 10px 50px
 }
-
+.vongi-wordcard-sp .mui-input-row a .mui-media-body{
+	position:relative;	
+}
+.vongi-bksp-time{
+	position:absolute;
+	right:20px;
+	top:50%;
+	margin:0;
+	margin-top:-6px;
+	color:#999	
+}
 .vongi-wordcard-sp .mui-input-group .mui-input-row {
 	background: 0;
 	height: auto
@@ -2669,4 +2679,4 @@ h3 {
 	flex-direction: column;
 	display: flex;
 	height: 100%;
-}
+}

+ 1 - 0
src/projects/business/views/Master/Attendance/VerifyLeaveList.vue

@@ -43,6 +43,7 @@
 											<div class="mui-media-body">
 												{{mod.name}}
 												<p class='mui-ellipsis'><span class="colorfe616c">{{mod.typeN}}</span>请假申请</p>
+												<h5 class="vongi-bksp-time">10-17 18:00</h5>
 											</div>
 										</router-link>
 

+ 1 - 0
src/projects/business/views/Master/Attendance/VerifyList.vue

@@ -27,6 +27,7 @@
 											<div class="mui-media-body">
 												{{item.personName}}
 												<p class='mui-ellipsis'><span class="colorfe616c" v-text="item.typeN"></span>申请</p>
+												<h5 class="vongi-bksp-time">10-17 18:00</h5>
 											</div>
 										</router-link>
 										<input name="checkbox" v-model="selectIdList" :value="item.id" type="checkbox">

+ 1 - 0
src/projects/business/views/Master/Company/RegisterExamine.vue

@@ -27,6 +27,7 @@
 											<div class="mui-media-body">
 												{{item.name}}
 												<p class='mui-ellipsis'>申请注册为<span class="colorfe616c" v-text="item.personRoleName"></span></p>
+												<h5 class="vongi-bksp-time">10-17 18:00</h5>
 											</div>
 										</router-link>
 										<input name="checkbox" v-model="selectIdList" :value="item.id" type="checkbox">

+ 11 - 11
src/projects/pension/router/master.js

@@ -284,14 +284,14 @@ const routesMaster = [
 
 			//直播
 			{
-				path: 'line',
+				path: 'live',
 				component: () => import('../views/Layout.vue'),
 				children: [
 					//功能主页
 					{
 						path: 'info',
-						name: 'MasterLineInfo',
-						component: () => import('../views/Master/Line/info.vue'),
+						name: 'MasterLiveInfo',
+						component: () => import('../views/Master/Live/Info.vue'),
 						meta: {
 							requireAuth: false,
 							role: [],
@@ -302,8 +302,8 @@ const routesMaster = [
 					//产品介绍
 					{
 						path: 'show',
-						name: 'MasterLineShow',
-						component: () => import('../views/Master/Line/show.vue'),
+						name: 'MasterLiveShow',
+						component: () => import('../views/Master/Live/Show.vue'),
 						meta: {
 							requireAuth: false,
 							role: [],
@@ -314,8 +314,8 @@ const routesMaster = [
 					//直播房间
 					{
 						path: 'room',
-						name: 'MasterLineRoom',
-						component: () => import('../views/Master/Line/room.vue'),
+						name: 'MasterLiveRoom',
+						component: () => import('../views/Master/Live/Room.vue'),
 						meta: {
 							requireAuth: false,
 							role: [],
@@ -326,8 +326,8 @@ const routesMaster = [
 					//收银台
 					{
 						path: 'pay',
-						name: 'MasterLinePay',
-						component: () => import('../views/Master/Line/pay.vue'),
+						name: 'MasterLivePay',
+						component: () => import('../views/Master/Live/Pay.vue'),
 						meta: {
 							requireAuth: false,
 							role: [],
@@ -338,8 +338,8 @@ const routesMaster = [
 					//支付成功
 					{
 						path: 'paySuccess',
-						name: 'MasterLinePaySuccess',
-						component: () => import('../views/Master/Line/paySucess.vue'),
+						name: 'MasterLivePaySuccess',
+						component: () => import('../views/Master/Live/PaySuccess.vue'),
 						meta: {
 							requireAuth: false,
 							role: [],

+ 0 - 69
src/projects/pension/views/Master/Line/info.vue

@@ -1,69 +0,0 @@
-<template>
-<div>
-    <header class="mui-bar mui-bar-nav">
-				<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-				<h1 class="mui-title">视频看护</h1>
-			</header>
-			<div class="mui-content vongi-fklist vongi-spkh">
-				<div class="vongi-spkh-title flew">
-					<div class="mui-media-body">
-						<span class="mui-media-object mui-pull-left"><img src="~$project/assets/img/02.jpg"></span> 郭睿阳
-					</div>
-					<p class='mui-ellipsis'>有效期至2021-08-31 <a href="">续期</a></p>
-				</div>
-				<ul class="mui-table-view openfyy-list">
-					<li class="mui-table-view-cell mui-media">
-						<a href="javascript:;">
-							<div class="vongi-video-img"><img src="~$project/assets/img/02.jpg" width="100%"></div>
-							<div class="mui-media-body flew">
-								小(2)班教室
-								<p class='mui-ellipsis'>[正在直播]</p>
-							</div>
-						</a>
-					</li>
-					<li class="mui-table-view-cell mui-media">
-						<a href="javascript:;">
-							<div class="vongi-video-img"><img src="~$project/assets/img/02.jpg" width="100%"></div>
-							<div class="mui-media-body flew">
-								新世纪幼儿园多媒体教室
-								<p class='mui-ellipsis'>[未开播]</p>
-							</div>
-						</a>
-					</li>
-				</ul>
-			</div>
-			<!--未开通服务状态-->
-			<!-- <div class="mui-content vongi-spkh">
-				<div class="vongi-payyes-icon">
-					<img src="~$project/assets/img/gkke01.png" width="128" />
-					<h2>暂未开通公开课服务</h2>
-				</div>
-				<div class="vongi-rec-btn-white">
-					<div class="vongi-rec-btn">开通服务</div>
-				</div>
-			</div> -->
-			<!--已购买尚未开通状态-->
-			<!-- <div class="mui-content vongi-spkh">
-				<div class="vongi-payyes-icon">
-					<img src="~$project/assets/img/spkh.png" />
-					<h2>感谢您购买视频看护服务<br>现已加入安装排期计划</h2>
-				</div>
-			</div>
-			<div class="fyy-footer">
-				<div class="fyy-footer-text">
-					我们将会通过电话方式与您确定上门安装时间<br>
-					请保持联系方式的通讯畅通<br>
-					服务咨询电话: 400-8899-619
-				</div>
-			</div> -->
-</div>
-</template>
-
-<script>
-</script>
-
-<style scoped src="$project/assets/css/pension.css"></style>
-<style scoped src="$project/assets/css/xpwyfyy.css"></style>
-<style src="$project/assets/css/iconfont.css"></style>
-<style>
-</style>

+ 0 - 77
src/projects/pension/views/Master/Line/pay.vue

@@ -1,77 +0,0 @@
-<template>
-<div>
-    <header class="mui-bar mui-bar-nav">
-				<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-				<h1 class="mui-title">收银台</h1>
-			</header>
-			<div class="mui-content vongi-qingjiadt">
-				<div class="vongi-cashier">
-					<img src="~$project/assets/img/03.jpg" alt="">
-					<div class="vongi-cashier-text">
-						<div class="vongi-text-tit">
-							<h3 class="flew-sp ellipsis">
-								视频看护摄像头设备与直播服务费</h3>
-							<p class="ellipsis">手机查看视频直播服务</p>
-						</div>
-						
-						<h3 class="flew-sp">¥499.00<p>×1</p></h3>
-					</div>
-				</div>
-				<form class="mui-input-group">
-					<div class="mui-input-row">
-						<label>长者姓名</label>
-						<span>郭源潮</span>
-					</div>
-					<div class="mui-input-row">
-						<label>家属姓名</label>
-						<span>郭大宝</span>
-					</div>
-					<div class="mui-input-row">
-						<label>支付订单号</label>
-						<span>80000000200900000000</span>
-					</div>
-					<div class="mui-input-row">
-						<label>合计金额</label>
-						<span style="color:#ED6A0C">¥75.00</span>
-					</div>
-				</form>
-				<div class="mui-content-padded"><h5>支付方式</h5></div>
-				<form class="mui-input-group margin10">
-					<div class="mui-input-row mui-radio">
-						<label>微信支付</label>
-						<input name="radio1" type="radio">
-					</div>
-					<div class="mui-input-row mui-radio">
-						<label>支付宝支付</label>
-						<input name="radio1" type="radio" checked>
-					</div>
-				</form>
-			<div class="vongi-qingjiadt vongi-editme">
-			<form class="mui-input-group">
-					
-					<div class="mui-input-row">
-						<label>推广人</label>
-						<input type="text" class="mui-input-clear" placeholder="请输入推广人编号,没有可不填">
-					</div>
-					
-				</form>
-			</div>
-
-				<div class="vongi-cashier-btn-row">
-					<div class="vongi-cashier-btn-white">
-						<span>合计:¥60.00</span>
-						<div class="vongi-cashier-btn">支付</div>
-					</div>
-				</div>
-			</div>
-</div>
-</template>
-
-<script>
-</script>
-
-<style scoped src="$project/assets/css/pension.css"></style>
-<style scoped src="$project/assets/css/xpwyfyy.css"></style>
-<style src="$project/assets/css/iconfont.css"></style>
-<style>
-</style>

+ 0 - 24
src/projects/pension/views/Master/Line/paySucess.vue

@@ -1,24 +0,0 @@
-<template>
-  <div>
-    <div class="mui-content">
-      <div class="vongi-examineInfo">
-        <span class="mui-icon iconfont icon-gou"></span>
-        <h1>支付成功</h1>
-      </div>
-    </div>
-    <div class="fyy-footer">
-      <div class="bindfyy-btn">
-        <button type="submit" class="mui-btn mui-btn-pink">返回直播主页</button>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-</script>
-
-<style scoped src="$project/assets/css/pension.css"></style>
-<style scoped src="$project/assets/css/xpwyfyy.css"></style>
-<style src="$project/assets/css/iconfont.css"></style>
-<style>
-</style>

+ 0 - 55
src/projects/pension/views/Master/Line/room.vue

@@ -1,55 +0,0 @@
-<template>
-<div>
-    <header class="mui-bar mui-bar-nav">
-				<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-				<h1 class="mui-title">直播房间</h1>
-			</header>
-			<div class="mui-content vongi-zbfj">
-				<div class="mui-content-padded">
-					<div class="fyy-video">
-						<!--未开播状态-->
-						<!--<div class="mui-media-body">
-							<img src="~$project/assets/img/gkke02.png" width="50"/>
-							<h6>该直播间未开播</h6>
-						</div>-->
-						<video src="" width="100%" controls></video>
-					</div>
-					<div class="mui-table-view-cell flew-sp">
-						新世纪幼儿园小(2)班
-						<span class="color4fc5f7">[正在直播]</span>
-					</div>
-				</div>
-				<div class="mui-table-view-cell flew">
-					紧急联系热线
-					<button class="mui-btn" type='button'>0716-8121234<span class="iconfont icon-ziyuan1"></span></button>
-				</div>
-			</div>
-			<!--挂机弹窗-->
-			<!-- <div class="vongi-popup">
-				<div class="vongi-popup-bg"></div>
-				<div class="vongi-popup-ceter vongi-zbfj-pop" style="top:10%">
-					<div class="vongi-popup-inner">
-						<div class="vongi-popup-ma">
-							<img src="~$project/assets/img/lad.png" width="50%">
-							<h3>还在观看吗?</h3>
-
-						</div>
-						<div class="vongi-btn vongi-login-btn">
-							<button class="mui-btn mui-btn-pink"><spn class="iconfont icon-bofang"></spn>继续观看</button>
-							<button class="mui-btn "><spn class="iconfont icon-tuichu4"></spn>结束观看</button>
-						</div>
-					</div>
-
-				</div>
-			</div> -->
-</div>
-</template>
-
-<script>
-</script>
-
-<style scoped src="$project/assets/css/pension.css"></style>
-<style scoped src="$project/assets/css/xpwyfyy.css"></style>
-<style src="$project/assets/css/iconfont.css"></style>
-<style>
-</style>

+ 0 - 27
src/projects/pension/views/Master/Line/show.vue

@@ -1,27 +0,0 @@
-<template>
-<div>
-     <header class="mui-bar mui-bar-nav">
-				<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-				<h1 class="mui-title">产品介绍</h1>
-			</header>
-    <div class="mui-content">
-        <div class="mui-content-padded">
-            <img src="~$project/assets/img/03.jpg" width="100%"/>
-        </div>
-    </div>
-    <div class="fyy-footer">
-      <div class="bindfyy-btn">
-        <button type="submit" class="mui-btn mui-btn-pink">开通服务</button>
-      </div>
-    </div>
-</div>
-</template>
-
-<script>
-</script>
-
-<style scoped src="$project/assets/css/pension.css"></style>
-<style scoped src="$project/assets/css/xpwyfyy.css"></style>
-<style src="$project/assets/css/iconfont.css"></style>
-<style>
-</style>

+ 159 - 0
src/projects/pension/views/Master/Live/Info.vue

@@ -0,0 +1,159 @@
+<template>
+<div>
+
+	<common @asynCallBack="asynCallBack"></common>
+	<top-header :pageTitle="pageTitle"     ></top-header>
+
+	<div class="mui-content vongi-fklist vongi-spkh" v-if="buystatus&&list.length" >
+				<div class="vongi-spkh-title flew">
+					<div class="mui-media-body">
+						<span class="mui-media-object mui-pull-left">
+							<img :src="person_data.faceImageUrl" :alt="person_data.name">
+						</span>  {{person_data.name}}
+					</div>
+					<p class='mui-ellipsis'>有效期至{{endtime}} <a @click="goToPay()" >续期</a></p>
+				</div>
+				<ul class="mui-table-view openfyy-list">
+					<li class="mui-table-view-cell mui-media"  v-for="(mod,index) in list">
+						<a @click="goToPlay(mod.id)" >
+							<div class="vongi-video-img"><img :src="mod.picUrl"   width="100%"></div>
+							<div class="mui-media-body flew">
+								{{mod.roomAddress}}
+								<p class='mui-ellipsis'>[{{mod.status=='1'?'在线':'离线'}}]</p>
+							</div>
+						</a>
+					</li>
+				</ul>
+			</div>
+			<!--未开通服务状态-->
+			 <div class="mui-content vongi-spkh" v-if="!buystatus">
+				<div class="vongi-payyes-icon">
+					<img src="~$project/assets/img/gkke01.png" width="128" />
+					<h2>暂未开通视频看护服务</h2>
+				</div>
+				<div class="vongi-rec-btn-white">
+					<div class="vongi-rec-btn" @click="goToPay()">开通服务</div>
+				</div>
+			</div>
+			<!--已购买尚未开通状态-->
+			 <div class="mui-content vongi-spkh" v-if="buystatus&&!list.length" >
+				<div class="vongi-payyes-icon">
+					<img src="~$project/assets/img/spkh.png" />
+					<h2>感谢您购买视频看护服务<br>现已加入安装排期计划</h2>
+				</div>
+			</div>
+			<div class="fyy-footer" v-if="buystatus&&!list.length">
+				<div class="fyy-footer-text">
+					我们将会通过电话方式与您确定上门安装时间<br>
+					请保持联系方式的通讯畅通<br>
+					服务咨询电话: 400-8899-619
+				</div>
+			</div>
+	<loading :visible="isLoading"></loading>
+
+</div>
+</template>
+
+
+<script>
+
+	import * as API  from '@/apis/Master/live'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import {
+		currentTimeStamp,
+		parseUnixTime
+	} from '$project/utils'
+	export default {
+		name: 'GuestFromInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '视频看护',
+
+				buystatus: false,
+				list: [],
+				endtime: null,
+				isLoading: false,
+
+			}
+		},
+		created() {
+ 		},
+		methods:  {
+
+			goToPlay(cameraId) {
+				this.$router.push({
+					name: 'MasterLiveRoom',
+					query: {
+						id: cameraId
+					}
+				})
+			},
+			goToPay() {
+
+				this.$router.push({
+					name: 'MasterLiveShow',
+				})
+			},
+			queryCameraList() {
+				this.isLoading = true;
+
+				API.queryCameraList({
+					//currentId:this.student_current_info.id
+				}).then(response => {
+					this.isLoading = false;
+
+					this.buystatus = response.buystatus;
+					if (this.buystatus) {
+						this.list = response.list;
+						this.endtime = response.endtime;
+					}
+					if(false){
+
+						this.$router.push({
+							name: 'MasterLiveShow',
+							query: {
+								routeName: "Master"
+							}
+						})
+					}
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},asynCallBack(){},
+		},
+		mounted() {
+			this.queryCameraList();
+		},
+
+
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
+</script>
+
+<style scoped src="$project/assets/css/pension.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style>
+</style>

+ 218 - 0
src/projects/pension/views/Master/Live/Pay.vue

@@ -0,0 +1,218 @@
+<template>
+<div>
+
+	<common @asynCallBack="asynCallBack"></common>
+	<top-header :pageTitle="pageTitle"    ></top-header>
+
+	<div class="mui-content vongi-qingjiadt">
+				<div class="vongi-cashier">
+
+					<img   :src="detail.pic" alt="">
+					<div class="vongi-cashier-text">
+						<div class="vongi-text-tit">
+							<h3 class="flew-sp ellipsis">
+								{{detail.name}}</h3>
+							<p class="ellipsis">{{detail.desc}}</p>
+						</div>
+						
+						<h3 class="flew-sp">¥{{detail.totalFee}}<p>×1</p></h3>
+					</div>
+				</div>
+				<form class="mui-input-group">
+					<div class="mui-input-row">
+						<label>购买者姓名</label>
+						<span>{{person_data.name}}</span>
+					</div>
+
+					<div class="mui-input-row">
+						<label>支付订单号</label>
+						<span>{{detail.outOrderNo}}</span>
+					</div>
+					<div class="mui-input-row">
+						<label>合计金额</label>
+						<span style="color:#ED6A0C">¥{{detail.totalFee}}</span>
+					</div>
+				</form>
+				<div class="mui-content-padded"><h5>支付方式</h5></div>
+				<form class="mui-input-group margin10">
+					<div class="mui-input-row mui-radio">
+						<label>微信支付</label>
+						<input name="radio1" type="radio" checked value="1" v-model="paytypeindex" >
+					</div>
+					<div class="mui-input-row mui-radio">
+						<label>支付宝支付</label>
+						<input name="radio1" type="radio" value="2" v-model="paytypeindex">
+					</div>
+				</form>
+			<div class="vongi-qingjiadt vongi-editme">
+			<form class="mui-input-group">
+					
+					<div class="mui-input-row">
+						<label>推广人</label>
+						<input type="number" class="mui-input-clear" placeholder="请输入推广人编号,没有可不填"   v-model="paycode">
+					</div>
+					
+				</form>
+			</div>
+
+				<div class="vongi-cashier-btn-row">
+					<div class="vongi-cashier-btn-white">
+						<span>合计:¥{{detail.totalFee}}</span>
+						<div class="vongi-cashier-btn" @click="submit">支付</div>
+					</div>
+				</div>
+			</div>
+	<loading :visible="isLoading"></loading>
+
+</div>
+</template>
+
+
+<script>
+	import * as API_Pay from '$project/apis/payment'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	require('$project/assets/js/mui.picker.min.js');
+	import QRCode from 'qrcodejs2'
+
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import {
+		wxPayJs
+	} from '$project/utils/wxpay'
+	import {
+
+		convertCanvasToImage,
+		currentTimeStamp,
+		parseUnixTime
+	} from '$project/utils'
+	export default {
+		name: 'GuestFromInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '收银台',
+				paytypeindex:"1",
+				paycode:null,
+				paytype:"微信支付",
+				qrCodeImg:"",
+				isLoading: false,
+				detail:{}
+
+			}
+		},
+		created() {
+			this.detail=this.$route.query;
+			console.log(this.detail);
+			if(this.detail.goodsPic=="null"){
+				this.detail.goodsPic=null;
+			}		},
+		methods:  {
+			selectPay() {
+				var picker = new mui.PopPicker();
+
+				picker.setData([{
+					text: "微信支付",
+					value: '1'
+				}
+					,
+					{
+						text: "支付宝扫码",
+						value: '2'
+					}
+					// ,
+					// {
+					// 	text: "现场支付",
+					// 	value: '0'
+					// }
+				]);
+
+				picker.show((selectItems) => {
+					this.paytypeindex=selectItems[0].value;
+					this.paytype=selectItems[0].text;
+				});
+			},
+			//提交表单
+			submit() {
+				this.isLoading=true;
+				if(this.paytypeindex=="1"){
+					API_Pay.wxJsapiPay(this.detail.id,this.paycode).then(data=>{
+						this.isLoading=false;
+						wxPayJs(data)
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+
+				}else if(this.paytypeindex=="2"){
+					API_Pay.tradePrecreatePay(this.detail.id,this.paycode).then(url=>{
+						this.isLoading = false;
+						let qrcode = new QRCode('qrcode', {
+							width: 200,
+							height: 200,
+							text: url,
+							correctLevel: QRCode.CorrectLevel.M,
+
+						})
+						var canvas = document.getElementsByTagName('canvas')[0];
+						this.qrCodeImg = convertCanvasToImage(canvas);
+
+						var btnArray = ['关闭',"支付成功?"];
+						var _this=this
+						mui.confirm('<img src="'+this.qrCodeImg+'" >',
+
+								'请使用支付宝扫码', btnArray, function(e) {
+									if (e.index == 1) {
+										_this.$router.push({
+											name: 'StudentOpenClass',
+										})
+									}
+
+								})
+
+
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+
+
+			},asynCallBack(){},
+		},
+		mounted() {
+			if(this.id){
+				this.detail.id=this.id;
+				this.getDetail();
+			}
+
+
+		},
+
+
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
+</script>
+
+<style scoped src="$project/assets/css/pension.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style>
+</style>

+ 83 - 0
src/projects/pension/views/Master/Live/PaySuccess.vue

@@ -0,0 +1,83 @@
+<template>
+
+  <div>
+    <div class="mui-content">
+      <div class="vongi-examineInfo">
+        <span class="mui-icon iconfont icon-gou"></span>
+        <h1>支付成功</h1>
+      </div>
+    </div>
+    <div class="fyy-footer">
+      <div class="bindfyy-btn">
+        <button type="submit" class="mui-btn mui-btn-pink"  @click="back">返回主页</button>
+      </div>
+    </div>
+    <loading :visible="isLoading"></loading>
+
+  </div>
+</template>
+
+
+<script>
+
+  import Common from '$project/components/Common.vue'
+  import Loading from '$project/components/Loading.vue'
+  import TopHeader from '$project/components/TopHeader.vue'
+  import {
+    mapGetters,
+    mapMutations
+  } from 'vuex'
+  import {
+    currentTimeStamp,
+    parseUnixTime
+  } from '$project/utils'
+  export default {
+    name: 'GuestFromInfo',
+    components: {
+      Common,
+      Loading,
+      TopHeader
+    },
+    data() {
+      return {
+        pageTitle: '支付成功',
+        isLoading: false,
+      }
+    },
+    created() {
+     },
+    methods:  {
+      back(){
+        this.$router.push({
+          name: 'master',
+          query: {}
+        })
+      },
+      //公共子组件异步回调事件
+      asynCallBack() {
+
+      }
+    },
+    mounted() {
+
+
+    },
+    destroyed() {
+
+    },
+    computed: {
+      ...mapGetters({
+        openId: 'wx_openid',
+        token: 'token',
+        person_data: 'person_data',
+        person_popedom: 'person_popedom',
+      })
+    }
+  }
+</script>
+
+<style scoped src="$project/assets/css/pension.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style>
+</style>

+ 275 - 0
src/projects/pension/views/Master/Live/Room.vue

@@ -0,0 +1,275 @@
+<template>
+<div>
+
+	<common @asynCallBack="asynCallBack"></common>
+	<top-header :pageTitle="pageTitle"    ></top-header>
+
+	<div class="mui-content vongi-zbfj">
+				<div class="mui-content-padded">
+
+					<div class="fyy-video">
+						<!--未开播状态-->
+						 <div class="mui-media-body" v-if="!detail.status">
+							<img src="~$project/assets/img/gkke02.png" width="50"/>
+							<h6>该直播间未开播</h6>
+						</div>
+						<video autoplay controls class="video" ref="myPlayer">
+							<source :src="liveAddressUrl" type="application/x-mpegURL" />
+						</video>					</div>
+					<div class="mui-table-view-cell flew-sp">
+						{{detail.roomAddress}}
+						<span class="color4fc5f7">[{{detail.status=='1'?'在线':'离线'}}]</span>
+					</div>
+				</div>
+				<div class="mui-table-view-cell flew">
+					紧急联系热线
+					<button class="mui-btn" type='button'>0716-8121234<span class="iconfont icon-ziyuan1"></span></button>
+				</div>
+			</div>
+			<!--挂机弹窗-->
+			 <div class="vongi-popup"  v-if="isLoading2">
+				<div class="vongi-popup-bg"></div>
+				<div class="vongi-popup-ceter vongi-zbfj-pop" style="top:10%">
+					<div class="vongi-popup-inner">
+						<div class="vongi-popup-ma">
+							<img src="~$project/assets/img/lad.png" width="50%">
+							<h3>还在观看吗?</h3>
+
+						</div>
+						<div class="vongi-btn vongi-login-btn">
+							<button class="mui-btn mui-btn-pink"><spn class="iconfont icon-bofang"></spn>继续观看</button>
+							<button class="mui-btn "><spn class="iconfont icon-tuichu4"></spn>结束观看</button>
+						</div>
+					</div>
+
+				</div>
+			</div>
+	<loading :visible="isLoading"></loading>
+
+</div>
+</template>
+
+
+<script>
+	import * as API_Common from '$project/apis/common'
+
+	import * as API  from '@/apis/Master/live'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import {
+		currentTimeStamp,
+		parseUnixTime
+	} from '$project/utils'
+	export default {
+		name: 'GuestFromInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '教室直播间',
+				id: this.$route.query.id,
+				detail: {
+					status: 0
+				},
+
+				liveAddressUrl: "",
+				player: {},
+				list: [],
+				isLoading: false,
+				sz: ["", "一", "二", "三", "四", "五", "六", "日"],
+				plan: "",
+				planshow: false,
+				hls: null,
+				setTimeoutId:null,
+				isLoading2:false,
+				isLoading3:false,
+				banner:null,
+				serverList: [],
+				bannerList:[],
+			}
+		},
+		created() {
+			this.id = this.$route.query.id;
+		},
+		methods:  {
+			getBannerInfo() {
+
+				API_Common.getBannerInfo("4").then(response => {
+					//this.bannerList = response;
+					for (var i in response) {
+						var mod = response[i];
+						this.bannerList.push(mod);
+
+					}
+
+					if(this.bannerList.length>0){
+						var x=Math.floor(Math.random()*this.bannerList.length);
+						this.banner=this.bannerList[x];
+					}
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+
+			},myback(){
+				this.$router.push({
+					name: 'Student',
+				})
+			},
+			mystart(){
+				if(this.isLoading3){
+					window.location.reload();
+				}else{
+					this.player.play() //开始
+					this.isLoading2=false;
+				}
+
+			},	handlePlay() {
+
+				console.log("开始播放");
+				if(this.player!=null){
+					clearTimeout(this.setTimeoutId)
+					this.setTimeoutId=setTimeout(()=> {
+						console.log("延迟暂停");
+
+						this.player.pause() //暂停
+
+						if(document.exitFullscreen) {
+							document.exitFullscreen();
+						} else if(document.mozCancelFullScreen) {
+							document.mozCancelFullScreen();
+						} else if(document.webkitCancelFullScreen) {
+							document.webkitCancelFullScreen();
+						} else if(document.msExitFullscreen) {
+							document.msExitFullscreen();
+						}
+
+						this.isLoading2=true;
+						if(this.banner!=null){
+							var x=Math.floor(Math.random()*this.bannerList.length);
+							this.banner=this.bannerList[x];
+							console.log(this.bannerList)
+							console.log(x)
+						}else{
+							this.getSchoolServeList();
+						}
+
+						setTimeout(()=> {
+							if(this.isLoading2){
+								this.hls.stopLoad();
+								this.isLoading3=true;//需要刷新;
+							}
+						},1000*60*1)
+
+					},1000*60*10)
+				}
+
+			},
+
+			getplan(mod) {
+				return "每周" + this.sz[mod.week] + mod.startTime + '-' + mod.endTime + "开播";
+			},
+
+			play() {
+				this.liveAddressUrl = this.liveAddressUrl.replace("http:", "https:");
+
+				this.player = this.$refs["myPlayer"];
+
+
+				var userAgent = navigator.userAgent;
+
+				if (/(iPhone|iPad|iPod|iOS)/i.test(userAgent)) {
+					//this.player.play();
+					console.log("ios原生支持播放m3u8!");
+				} else {
+					this.player.addEventListener('play', this.handlePlay);
+
+					var hls = new Hls();
+					hls.loadSource(this.liveAddressUrl);
+					hls.attachMedia(this.player);
+
+					hls.on(Hls.Events.MANIFEST_PARSED, () => {
+						this.player.play();
+					});
+					this.hls = hls;
+				}
+
+			},
+			cameraDetail(){
+				var week = new Date().getDay();
+				if (week == 0) {
+					week = 7;
+				}
+				this.isLoading = true;
+				API.cameraDetail({
+ 					id:this.id
+				}).then(response => {
+
+					this.isLoading = false;
+
+					this.detail = response.detail;
+					var text = this.detail.roomAddress + "(" + this.detail.deviceSerial + ")";
+
+
+
+
+					if (this.detail.status&& response.json) {
+						//this.liveAddressUrl = response.json.hdAddress;
+						this.liveAddressUrl = response.json.liveAddress;
+						this.play();
+					} else {
+						this.isLoading = false;
+					}
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},asynCallBack(){},
+		},
+		mounted() {
+			console.log("open class living...");
+			this.cameraDetail();
+
+		},
+
+
+		destroyed() {
+			this.liveAddressUrl = "";
+
+			console.log("页面销毁");
+			if (this.$refs["myPlayer"] != null) {
+				//this.player.dispose()
+				this.$refs["myPlayer"].pause() //暂停
+				this.$refs["myPlayer"].dispose() //销毁
+				console.log("关闭视频流");
+			}
+			if (this.hls != null) {
+				this.hls.destroy()
+				this.hls.loadSource(this.liveAddressUrl);
+
+			}
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
+</script>
+
+<style scoped src="$project/assets/css/pension.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style>
+</style>

+ 112 - 0
src/projects/pension/views/Master/Live/Show.vue

@@ -0,0 +1,112 @@
+<template>
+<div>
+
+    <common @asynCallBack="asynCallBack"></common>
+    <top-header :pageTitle="pageTitle"  :routeName="routeName"  ></top-header>
+
+    <div class="mui-content">
+        <div class="mui-content-padded">
+            <img src="~$project/assets/img/03.jpg" width="100%"/>
+        </div>
+    </div>
+    <div class="fyy-footer">
+      <div class="bindfyy-btn">
+        <button type="submit" class="mui-btn mui-btn-pink"   @click="toPay()" v-text="paytext">开通服务</button>
+      </div>
+    </div>
+    <loading :visible="isLoading"></loading>
+
+</div>
+</template>
+
+
+<script>
+
+    import * as API  from '@/apis/Master/live'
+    import Common from '$project/components/Common.vue'
+    import Loading from '$project/components/Loading.vue'
+    import TopHeader from '$project/components/TopHeader.vue'
+    import {
+        mapGetters,
+        mapMutations
+    } from 'vuex'
+    import {
+        currentTimeStamp,
+        parseUnixTime
+    } from '$project/utils'
+    export default {
+        name: 'GuestFromInfo',
+        components: {
+            Common,
+            Loading,
+            TopHeader
+        },
+        data() {
+            return {
+                pageTitle: '产品介绍',
+                routeName: "MasterLiveInfo",
+
+                isLoading: false,
+                 paytext: "点击购买",
+                orderId: null,
+                id: this.$route.query.id,
+
+                detail: {
+                    order: {},
+                    info: null,
+                    list: []
+                },
+            }
+        },
+        created() {
+             //接收参数来实现返回的页面是哪一种
+            if (this.$route.query.routeName) {
+                this.routeName = this.$route.query.routeName;
+            }
+        },
+        methods:  {
+
+            toPay() {
+                this.isLoading = true;
+
+                API.submit({
+                    "personId": this.person_data.id,
+                    "payPersonId": this.person_data.id,
+                }).then(data => {
+
+                    var url = window.location.href.split("#")[0];
+                    var param = JSON.stringify(data).replace("{", "").replace("}", "").replace(/\",\"/g, "&").replace(/,\"/g, "&").replace(
+                        /:/g, "=").replace(/\":\"/g, "=").replace(/\"/g, "");
+                    param = param.replace('=//', '://');
+                    window.location = url + "?#/master/live/pay?" + param;
+
+                }).catch(error => {
+                    this.isLoading = false;
+                    mui.toast(error);
+                })
+
+
+            },asynCallBack(){},
+        },
+        mounted() {
+
+         },
+        destroyed() {
+
+        },
+        computed: {
+            ...mapGetters({
+                openId: 'wx_openid',
+                token: 'token',
+                person_data: 'person_data',
+                person_popedom: 'person_popedom',
+            })
+        }
+    }
+</script>
+
+<style scoped src="$project/assets/css/pension.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style>
+</style>

+ 4 - 0
src/utils/wxpay.js

@@ -18,6 +18,10 @@ function onBridgeReady(params) {
 }
 
 export const wxPayJs = (params) => {
+
+	//公共页面
+	params.url=window.location.href.split("#")[0]+"/#/master/live/paySuccess";
+
 	if (typeof window.WeixinJSBridge === 'undefined') {
 		if (document.addEventListener) {
 			document.addEventListener('WeixinJSBridgeReady', function() {