Jelajahi Sumber

Merge branch 'wxl' into online

lex-xin 5 tahun lalu
induk
melakukan
5fad2e79e8

+ 29 - 0
src/api/app.js

@@ -2,6 +2,14 @@ const axios = require('@/common/axios').default
 import qs from 'qs'
 // import axios from '@/common/axios'
 const api = '/api-teacher'
+// 手机号密码方式登录
+const usernameLogin = (data) => {
+  return axios({
+      url: '/api-auth/usernameLogin',
+      method: 'post',
+      data: qs.stringify(data)
+  })
+}
 
 // 发送登录短信验证码
 const sendSms = (data) => {
@@ -21,6 +29,24 @@ const smsLogin = (data) => {
   })
 }
 
+// 注册登录
+const registerAdd = (data) => {
+  return axios({
+      url: '/api-student/register/add',
+      method: 'post',
+      data: qs.stringify(data)
+  })
+}
+
+// 设置密码
+const userSetPassword = (data) => {
+  return axios({
+      url: '/api-auth/user/setPassword',
+      method: 'post',
+      data: qs.stringify(data)
+  })
+}
+
 // 检查手机号
 const queryUserByPhone = (data) => {
   return axios({
@@ -165,8 +191,11 @@ const batchAdd = (data) => {
 
 
 export {
+  usernameLogin,
   sendSms,
   smsLogin,
+  registerAdd,
+  userSetPassword,
   getGroupDetail,
   buyCourseGroup,
   createCourseGroup,

+ 16 - 0
src/router/appRouter.js

@@ -7,6 +7,22 @@ let teacherRouter = [{
       weight: 3 // 页面权重
   }
 }, {
+  path: '/appRegister',
+  name: 'appRegister',
+  component: () => import(/* webpackChunkName:'AppRegister'*/'@/views/app/AppRegister.vue'),
+  meta: {
+      descrition: '注册',
+      weight: 3 // 页面权重
+  }
+}, {
+  path: '/appSetInfo',
+  name: 'appSetInfo',
+  component: () => import(/* webpackChunkName:'AppSetInfo'*/'@/views/app/AppSetInfo.vue'),
+  meta: {
+      descrition: '填写信息',
+      weight: 3 // 页面权重
+  }
+}, {
   path: '/classDetail',
   name: 'classDetail',
   component: () => import(/* webpackChunkName:'ClassDetail'*/'@/views/app/ClassDetail.vue'),

+ 105 - 37
src/views/app/AppLogin.vue

@@ -3,13 +3,25 @@
         <div class="logo">
             <img src="../../assets/images/logo.png" alt="">
         </div>
+        <div class="container" v-show="isTrue">
+            <div class="input-group">
+                <input type="number" @keyup="onKeyUp()" placeholder="请输入手机号" class="input" v-model="phoneNumber" pattern="[0-9]" />
+            </div>
+            <div class="input-group">
+                <input type="password" @keyup="onKeyUp()" placeholder="请输入密码" class="input" v-model="password" />
+            </div>
+
+            <van-button round size="large" @click="onLogin" :disabled="pwdDisable">登录</van-button>
+            <span class="login-change" @click="isTrue = false">验证码登录</span>
+            <span class="login-change" @click="onRegister" style="float: left;">立即注册</span>
+        </div>
 
-        <div class="container">
+        <div class="container" v-show="!isTrue">
             <div class="input-group">
-                <input type="number" @blur="codeBlur" placeholder="请输入手机号" class="input" v-model="phoneNumber" pattern="[0-9]">
+                <input type="number" @keyup="onKeyUp()" placeholder="请输入手机号" class="input" v-model="phoneNumber" pattern="[0-9]">
             </div>
             <div class="input-group">
-                <input type="text" @blur="codeBlur" placeholder="请输入验证码" class="input" v-model="code" >
+                <input type="text" @keyup="onKeyUp()" placeholder="请输入验证码" class="input" v-model="code" >
                 <span class="code-text" v-show="countDownStatus" @click="onSendCode">{{ codeText }}</span>
                 <span class="code-text" v-show="!countDownStatus">
                     <van-count-down 
@@ -22,20 +34,25 @@
             </div>
 
             <van-button round size="large" @click="onCodeLogin" :disabled="codeDisable">登录</van-button>
+            <span class="login-change" @click="isTrue = true">密码登录</span>
+            <span class="login-change" @click="onRegister" style="float: left;">立即注册</span>
         </div>
     </div>
 </template>
 <script>
-import {sendSms, smsLogin, queryUserByPhone } from '@/api/app'
+/* eslint-disable */
+import { usernameLogin, sendSms, verifySmsCode, smsLogin, queryUserByPhone } from '@/api/app'
 export default {
     name: 'login',
     data() {
         return {
             groupId: this.$route.query.groupId,
+            pwdDisable: true, // 密码登录按钮状态
             codeDisable: true, // 验证码登录按钮状态
+            isTrue: true,
             countDownStatus: true, // 到计时状态
             phoneNumber: null,
-            isRegister: 0, // 默认没有注册
+            password: null,
             code: null,
             codeText: '获取验证码',
             countDownTime: 1000 * 120, // 倒计时时间
@@ -46,29 +63,33 @@ export default {
         // 登录时删除无用的token
         localStorage.removeItem('userInfo')
         localStorage.removeItem('Authorization')
-    },
-    watch: {
-        phoneNumber(newValue) {
-            this.onKeyUp(newValue, this.code)
-        },
-        code(newValue) {
-            this.onKeyUp(this.phoneNumber, newValue)
-        }
+        // 登录时间判断用户是Token是否有效
+
     },
     methods: {
-        codeBlur() {
-            setTimeout(() => {
-                const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;
-                window.scrollTo(0, Math.max(scrollHeight - 1, 0));
-            }, 100);
-        },
-        onKeyUp(phoneNumber, code) {
-            if(!phoneNumber || !code) {
-                this.codeDisable = true
+        onKeyUp() {
+            if(this.isTrue) {
+                if(!this.phoneNumber || !this.password) {
+                    this.pwdDisable = true
+                } else {
+                    this.pwdDisable = false
+                }
             } else {
-                this.codeDisable = false
+                if(!this.phoneNumber || !this.code) {
+                    this.codeDisable = true
+                } else {
+                    this.codeDisable = false
+                }
             }
         },
+        onRegister() {
+            this.$router.push({
+                path: '/appRegister',
+                query: {
+                    groupId: this.groupId
+                }
+            })
+        },
         onSendCode() { // 发送验证码
             if(!this.checkPhone(this.phoneNumber)) {
                 return
@@ -84,23 +105,13 @@ export default {
                 } else {
                     this.$toast(result.msg)
                 }
-            })
+            })            
         },
         onCodeLogin() { // 短信登录
             if(this.isClick) {
                 return
             }
             this.isClick = true
-            queryUserByPhone({ mobile: this.phoneNumber }).then(res => {
-                let result = res.data
-                if(result.code == 200) {
-                    this.isRegister = result.data
-                }
-                this.onLogin()
-            })
-            
-        },
-        onLogin() {
             let params = {
                 clientId: 'student',
                 clientSecret: 'student',
@@ -108,9 +119,6 @@ export default {
                 smsCode: this.code,
                 channel: 'H5'
             }
-            if(this.isRegister == 0) {
-                params.isLessee = 'true'
-            }
             smsLogin(params).then(sms => {
                 let s = sms.data
                 this.isClick = false
@@ -119,6 +127,66 @@ export default {
                     let auth = s.data.authentication
                     localStorage.setItem('userInfo', auth.token_type + ' ' + auth.access_token)
                     
+                    if(s.password) {
+                        this.$router.push({
+                            path: '/classDetail',
+                            query: {
+                                groupId: this.groupId
+                            }
+                        })
+                    } else {
+                        this.$router.push({
+                            path: '/appSetInfo',
+                            query: {
+                                groupId: this.groupId
+                            }
+                        })
+                    }
+                } else {
+                    this.$toast(s.msg)
+                }
+            })
+            // queryUserByPhone({ mobile: this.phoneNumber }).then(res => {
+            //     let result = res.data
+            //     if(result.code == 200) {
+            //         this.isRegister = result.data
+            //     }
+            //     if(this.isRegister == 1) {
+            //         this.onLoginStr()
+            //     } else {
+            //         this.$dialog.confirm({
+            //             message: '此手机号尚未注册<br/>是否注册?',
+            //             confirmButtonText: '注册'
+            //         }).then(() => {
+            //             this.$router.push({
+            //                 path: '/appRegister',
+            //                 query: {
+            //                     groupId: this.groupId
+            //                 }
+            //             })
+            //         }).catch(() => { });
+            //     }
+            // })
+        },
+        onLogin() { // 账号登录
+            if(this.isClick) {
+                return
+            }
+            this.isClick = true
+
+            usernameLogin({
+                clientId: 'student',
+                clientSecret: 'student',
+                username: this.phoneNumber,
+                password: this.password
+            }).then(sms => {
+                let s = sms.data
+                this.isClick = false
+                // 保存用户信息
+                if(s.code == 200) {
+                    let auth = s.data.authentication
+                    localStorage.setItem('userInfo', auth.token_type + ' ' + auth.access_token)
+                    
                     this.$router.push({
                         path: '/classDetail',
                         query: {

+ 300 - 0
src/views/app/AppRegister.vue

@@ -0,0 +1,300 @@
+<template>
+    <div class="login">
+        <div class="logo">
+            <img src="../../assets/images/logo.png" alt="">
+        </div>
+
+        <div class="container">
+            <div class="input-group">
+                <input type="number" placeholder="请输入手机号" class="input" v-model="phoneNumber" pattern="[0-9]">
+            </div>
+            <div class="input-group" style="margin-bottom: .05rem;">
+                <input type="text" placeholder="请输入验证码" class="input" v-model="code" >
+                <span class="code-text" v-show="countDownStatus" @click="onSendCode">{{ codeText }}</span>
+                <span class="code-text" v-show="!countDownStatus">
+                    <van-count-down 
+                        ref="countdown"
+                        :auto-start="false"
+                        :time="countDownTime" 
+                        @finish="onFinished"
+                        format="ss秒" />
+                </span>
+            </div>
+            <div class="agreeProtocol">
+                <van-checkbox v-model="agreeStatus"></van-checkbox>
+                <i style="font-style: normal;" @click="agreeStatus = !agreeStatus">阅读并同意</i> <span @click="onToProtocol">《用户协议》</span>
+            </div>
+            <van-button round size="large" @click="onCodeLogin" >注册并登录</van-button>
+            <span class="login-change" @click="onUrlLogin">登录</span>
+        </div>
+    </div>
+</template>
+<script>
+import {sendSms, smsLogin, queryUserByPhone } from '@/api/app'
+export default {
+    name: 'login',
+    data() {
+        return {
+            groupId: this.$route.query.groupId,
+            // codeDisable: true, // 验证码登录按钮状态
+            countDownStatus: true, // 到计时状态
+            phoneNumber: null,
+            isRegister: 0, // 默认没有注册
+            code: null,
+            codeText: '获取验证码',
+            countDownTime: 1000 * 120, // 倒计时时间
+            isClick: false,
+            agreeStatus: false
+        }
+    },
+    mounted() {
+        // 登录时删除无用的token
+        localStorage.removeItem('userInfo')
+        localStorage.removeItem('Authorization')
+    },
+    methods: {
+        codeBlur() {
+            setTimeout(() => {
+                const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;
+                window.scrollTo(0, Math.max(scrollHeight - 1, 0));
+            }, 100);
+        },
+        onToProtocol() {
+            this.$router.push({
+                path: '/userProtocol',
+                query: {
+                    groupId: this.groupId
+                }
+            })
+        },
+        onUrlLogin() {
+            this.$router.push({
+                path: '/appLogin',
+                query: {
+                    groupId: this.groupId
+                }
+            })
+        },
+        onSendCode() { // 发送验证码
+            if(!this.checkPhone(this.phoneNumber)) {
+                return
+            }
+
+            queryUserByPhone({ mobile: this.phoneNumber }).then(res => {
+                let result = res.data
+                if(result.code == 200) {
+                    this.isRegister = result.data
+                    if(result.data == 1) {
+                        this.$toast('用户已存在')
+                        return
+                    } else {
+                        sendSms({
+                            mobile: this.phoneNumber
+                        }).then(res => {
+                            let result = res.data
+                            if(result.code == 200) {
+                                this.countDownStatus = false
+                                this.$refs.countdown.start() // 倒计时开始
+                            } else {
+                                this.$toast(result.msg)
+                            }
+                        })
+                    }
+                }
+            })
+            
+        },
+        onCodeLogin() { // 短信登录
+            if(!this.phoneNumber) {
+                this.$toast('请输入手机号')
+                return
+            } else if(!this.checkPhone(this.phoneNumber)) {
+                return
+            }
+
+            if(!this.code) {
+                this.$toast('请输入验证码')
+                return
+            }
+
+            if(!this.agreeStatus) {
+                this.$toast('请先阅读并同意用户协议')
+                return
+            }
+
+            if(this.isClick) {
+                return
+            }
+            this.isClick = true
+            queryUserByPhone({ mobile: this.phoneNumber }).then(res => {
+                let result = res.data
+                if(result.code == 200) {
+                    this.isRegister = result.data
+                    if(result.data == 1) {
+                        this.$toast('用户已存在')
+                        this.isClick = false
+                        return
+                    } else {
+                        this.onLogin()
+                    }
+                }
+                
+            })
+        },
+        onLogin() {
+            let params = {
+                clientId: 'student',
+                clientSecret: 'student',
+                phone: this.phoneNumber,
+                smsCode: this.code,
+                channel: 'H5',
+                isLessee: 'true'
+            }
+            smsLogin(params).then(sms => {
+                let s = sms.data
+                this.isClick = false
+                // 保存用户信息
+                if(s.code == 200) {
+                    let auth = s.data.authentication
+                    localStorage.setItem('userInfo', auth.token_type + ' ' + auth.access_token)
+                    
+                    if(s.password) {
+                        this.$router.push({
+                            path: '/classDetail',
+                            query: {
+                                groupId: this.groupId
+                            }
+                        })
+                    } else {
+                        this.$router.push({
+                            path: '/appSetInfo',
+                            query: {
+                                groupId: this.groupId
+                            }
+                        })
+                    }
+                } else {
+                    this.$toast(s.msg)
+                }
+            })
+        },
+        onFinished() { // 倒计时结束
+            this.countDownStatus = true
+            this.$refs.countdown.reset()
+        },
+        checkPhone(phoneNumber) {
+            let result = true
+            if(!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(phoneNumber))){ 
+                this.$toast('手机号输入有误')
+                result = false
+            }
+            return result
+        }
+    }
+}
+</script>
+<style lang='less' scoped>
+@import url("../../assets/commonLess/variable.less");
+
+.login {
+    min-height: 100vh;
+    background: linear-gradient(to bottom, #15938B, #6dbeba);
+}
+.container {
+    padding: 0 .48rem;
+}
+.agreeProtocol {
+    font-size: .14rem;
+    display: flex;
+    align-items: center;
+    // color: #333333;
+    color: #fff;
+    padding: .05rem .06rem .15rem;
+    .van-checkbox {
+        padding-right: .08rem;
+        
+    }
+    /deep/.van-checkbox__icon .van-icon {
+        // border-color: #14928A;
+        background: #fff;
+    }
+    /deep/.van-checkbox__icon--checked .van-icon {
+        color: #14928A;
+        background-color: #fff;
+        border-color: #fff;
+    }
+    span {
+        // color: #14928A;
+        color: #fff;
+    }
+}
+.logo {
+    padding-top: 1rem;
+    padding-bottom: .9rem;
+    width: 1.6rem;
+    margin: 0 auto;
+    img {
+        width: inherit;
+    }
+}
+.input-group {
+    position: relative;
+    height: .44rem;
+    border-radius: .5rem;
+    border: .02rem solid @whiteColor;
+    margin-bottom: .2rem;
+    padding-left: .3rem;
+    padding-right: .3rem;
+    display: flex;
+    align-items: center;
+    .input {
+        flex: 1;
+        font-size: .14rem;
+        color: @whiteColor;
+        
+        background: transparent;
+        border: none;
+        &::placeholder {
+            color: @whiteColor;
+        }
+    }
+    .code-text {
+        position: absolute;
+        right: 0;
+        flex: 1;
+        display: block;
+        width: .94rem;
+        text-align: center;
+        border-left: .02rem solid @whiteColor;
+        font-size: .14rem;
+        color: @whiteColor;
+        line-height: .3rem;
+        height: .3rem;
+    }
+}
+/deep/.van-count-down {
+    font-size: .14rem;
+    color: @whiteColor;
+    line-height: .3rem;
+    height: .3rem;
+}
+/deep/.van-button--large {
+    height: .44rem;
+    line-height: .42rem;
+    color: @mColor;
+    border: 0;
+}
+/deep/.van-button:active::before {
+    opacity: 0.05;
+}
+/deep/.van-button--disabled {
+    opacity: 1;
+    color: rgba(0, 0, 0, 0.25);
+}
+.login-change {
+    padding-top: .08rem;
+    font-size: .14rem;
+    color: @whiteColor;
+    float: right;
+}
+</style>

+ 257 - 0
src/views/app/AppSetInfo.vue

@@ -0,0 +1,257 @@
+<template>
+    <div class="register">
+        <m-header v-if="headerStatus" />
+
+        <van-cell-group :border="false">
+            <van-field @blur="codeBlur" :border="false" v-model="form.username" type="text" label="您的用户名" placeholder="请输入用户名" />
+            <!-- <van-field name="radio" label="您的性别">
+                <template #input>
+                    <van-radio-group v-model="form.gender" direction="horizontal">
+                        <van-radio :name="1">男</van-radio>
+                        <van-radio :name="0">女</van-radio>
+                    </van-radio-group>
+                </template>
+            </van-field> -->
+            <van-field @blur="codeBlur" maxlength="20" :border="false" v-model="form.password" type="password" label="设置登录密码" placeholder="请输入密码" />
+            <van-field @blur="codeBlur" maxlength="20" :border="false" v-model="form.tPassword" type="password" label="再次输入登录密码" placeholder="请输入密码" />
+            <van-button round size="large" @click="onCodeLogin">登录</van-button>
+        </van-cell-group>
+    </div>
+</template>
+<script>
+import MHeader from '@/components/MHeader'
+import {sendSms, userSetPassword, queryUserByPhone } from '@/api/app'
+import { browser }  from '@/common/common'
+export default {
+    name: 'register',
+    components: { MHeader },
+    data() {
+        return {
+            headerStatus: true,
+            groupId: this.$route.query.groupId,
+            countDownStatus: true, // 到计时状态
+            codeText: '获取验证码',
+            countDownTime: 1000 * 120, // 倒计时时间
+            form: {
+                username: null,
+                gender: 1,
+                password: null,
+                tPassword: null,
+            },
+            isClick: false
+        }
+    },
+    mounted() {
+        // 登录时删除无用的token
+        let params = this.$route.query
+        if(params.Authorization) {
+            localStorage.setItem('Authorization', decodeURI(params.Authorization))
+            localStorage.setItem('userInfo', decodeURI(params.Authorization))
+        }
+        if(browser().android || browser().iPhone) {
+            this.headerStatus = false
+        } else {
+            document.title = '注册'
+        }
+    },
+    methods: {
+        codeBlur() {
+            setTimeout(() => {
+                const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;
+                window.scrollTo(0, Math.max(scrollHeight - 1, 0));
+            }, 100);
+        },
+        onCodeLogin() { // 短信登录
+            let form = this.form
+            if(form.password.length < 6 || form.password.length > 20) {
+                this.$toast('请输入6-20位数字/字母密码')
+                return
+            }
+
+            if(form.password != form.tPassword) {
+                this.$toast('两次输入密码不一致,请重新输入')
+                return
+            }
+
+            if(this.isClick) {
+                return
+            }
+            this.isClick = true
+            // userSetPassword
+            let params = {
+                username: form.username,
+                password: form.password
+            }
+            
+            userSetPassword(params).then(sms => {
+                let s = sms.data
+                this.isClick = false
+                // 保存用户信息
+                if(s.code == 200) {
+                    // let auth = s.data.authentication
+                    // localStorage.setItem('userInfo', auth.token_type + ' ' + auth.access_token)
+                    
+                    this.$router.push({
+                        path: '/classDetail',
+                        query: {
+                            groupId: this.groupId
+                        }
+                    })
+                } else {
+                    this.$toast(s.msg)
+                }
+            })
+            // queryUserByPhone({ mobile: this.phoneNumber }).then(res => {
+            //     let result = res.data
+            //     if(result.code == 200) {
+            //         this.isRegister = result.data
+            //     }
+            //     this.onLogin()
+            // })
+            
+        },
+        onLogin() {
+            let params = {
+                clientId: 'student',
+                clientSecret: 'student',
+                phone: this.phoneNumber,
+                smsCode: this.code,
+                channel: 'H5'
+            }
+            if(this.isRegister == 0) {
+                params.isLessee = 'true'
+            }
+            registerAdd(params).then(sms => {
+                let s = sms.data
+                this.isClick = false
+                // 保存用户信息
+                if(s.code == 200) {
+                    let auth = s.data.authentication
+                    localStorage.setItem('userInfo', auth.token_type + ' ' + auth.access_token)
+                    
+                    this.$router.push({
+                        path: '/classDetail',
+                        query: {
+                            groupId: this.groupId
+                        }
+                    })
+                } else {
+                    this.$toast(s.msg)
+                }
+            })
+        },
+        onFinished() { // 倒计时结束
+            this.countDownStatus = true
+            this.$refs.countdown.reset()
+        },
+        checkPhone(phoneNumber) {
+            let result = true
+            if(!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(phoneNumber))){ 
+                this.$toast('手机号输入有误')
+                result = false
+            }
+            return result
+        }
+    }
+}
+</script>
+<style lang='less' scoped>
+@import url("../../assets/commonLess/variable.less");
+
+.register {
+    min-height: 100vh;
+    background: #fff;
+}
+// .container {
+//     padding: .4rem .28rem 0;
+//     .title {
+//         font-size: .16rem;
+//         color: #444;;
+//         padding-bottom: .1rem;
+//     }
+// }
+// .input-group {
+//     position: relative;
+//     height: .44rem;
+//     border-radius: .5rem;
+//     border: .02rem solid @whiteColor;
+//     margin-bottom: .2rem;
+//     padding-left: .3rem;
+//     padding-right: .3rem;
+//     display: flex;
+//     align-items: center;
+//     .input {
+//         flex: 1;
+//         font-size: .14rem;
+//         color: @whiteColor;
+        
+//         background: transparent;
+//         border: none;
+//         &::placeholder {
+//             color: @whiteColor;
+//         }
+//     }
+//     .code-text {
+//         position: absolute;
+//         right: 0;
+//         flex: 1;
+//         display: block;
+//         width: .94rem;
+//         text-align: center;
+//         border-left: .02rem solid @whiteColor;
+//         font-size: .14rem;
+//         color: @whiteColor;
+//         line-height: .3rem;
+//         height: .3rem;
+//     }
+// }
+.van-button--plain.van-button--primary {
+    color: #14928A;
+    border-color: #14928A;
+}
+/deep/.van-cell-group {
+    margin: .3rem .28rem 0;
+}
+/deep/.van-cell {
+    display: block;
+    padding: .05rem 0;
+    margin-bottom: .1rem;
+    border-bottom: 1px solid #EBEBEB;
+    .van-field__label {
+        font-size: .16rem;
+        color: #444;
+        padding-bottom: .05rem;
+        width: 100%;
+    }
+    .van-field__value {
+        font-size: .16rem;
+    }
+}
+/deep/.van-count-down {
+    font-size: .14rem;
+    color: #14928A;
+    padding: .02rem .08rem;
+    border-radius: 1rem;
+    border: 1px solid #14928A;
+}
+/deep/.van-button--large {
+    height: .44rem;
+    line-height: .42rem;
+    color: #FFFFFF;
+    border: 0;
+    background: #14928A;
+}
+/deep/.van-button:active::before {
+    opacity: 0.05;
+}
+/deep/.van-button--disabled {
+    opacity: 1;
+    color: rgba(255, 255, 255, 0.4);
+}
+.login-change {
+    padding-top: .08rem;
+    font-size: .14rem;
+    color: @whiteColor;
+    float: right;
+}
+</style>

+ 8 - 0
src/views/app/UserProtocol.vue

@@ -1,5 +1,6 @@
 <template>
     <div class="userProtocol">
+        <m-header v-if="headerStatus" />
          <div class="container">
             <h1>管乐迷线上教室用户服务协议</h1>
             特别提示:<br />
@@ -90,9 +91,16 @@
     </div>
 </template>
 <script>
+import MHeader from '@/components/MHeader'
 import { browser } from '@/common/common'
 export default {
     name: 'userProtocol',
+    components: { MHeader },
+    data() {
+        return {
+            headerStatus: true,
+        }
+    },
     mounted() {
         // 判断是否在app里面
         if(!browser().android && !browser().iPhone) {