Browse Source

设置密保页面结构调整

hangb 7 years ago
parent
commit
0bbc33ad08

+ 380 - 0
components/encrypted-setting/EncryptedEmail.vue

@@ -0,0 +1,380 @@
+<template>
+  <div class="validation">
+    <div class="container">
+      <div class="content">
+        <div class="content-top">
+          <h3>添加密保设置</h3>
+          <div class="step">
+            <img src="/images/all/step01.png" alt=""/>
+            <div class="step-item"><span class="active">账号验证</span><span>密保设置</span><span>设置完成</span></div>
+            <a @click="chooseWay('select')" class="return"><img src="/images/all/return.png" alt=""/></a>
+          </div>
+        </div>
+        <div class="content-bottom">
+          <span class="use">使用电子邮箱<em>{{info | hide}}</em>进行验证,有效期7天</span>
+          <div class="warp"
+               @click="firstStepValidEmail"
+               v-show="!emailSendSuccess">
+            <button class="btn">发送验证请求</button>
+          </div>
+          <div class="warp" v-show="emailSendSuccess">
+            <button class="btn" :disabled="emailSendSuccess">已发送验证邮件,请查收</button>
+          </div>
+        </div>
+      </div>
+      <loading v-show="isShowLoading"/>
+    </div>
+  </div>
+</template>
+<script>
+  import Loading from '~components/common/loading/Loading.vue'
+  export default {
+    name: 'validation',
+    components: {
+      Loading
+    },
+    props: ['info'],
+    data () {
+      return {
+        isShowLoading: false,
+        emailSendSuccess: false
+      }
+    },
+    filters: {
+      hide: function (value) {
+        let getEmailIndex = value.indexOf('@')
+        if (getEmailIndex > 3) {
+          let len = value.substring(3, getEmailIndex)
+          value = value.replace(len, '***')
+        }
+        return value
+      }
+    },
+    methods: {
+      // 选择方式
+      chooseWay (type) {
+        this.$emit('stepEvent', type)
+      },
+//      第一步验证邮箱
+      firstStepValidEmail () {
+        this.isShowLoading = true
+        this.$http.get(`/update/user/check/email`, {params: {email: this.info, operate: 'question'}})
+          .then(response => {
+            this.isShowLoading = false
+            if (response.data.success) {
+              this.emailSendSuccess = true
+            } else {
+              this.emailSendSuccess = false
+              return Promise.reject(response.data)
+            }
+          }).catch(err => {
+            this.isShowLoading = false
+            this.$message.error(err.errMsg)
+          })
+      }
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .validation {
+    margin: 0 auto;
+    width: 100%;
+    background: #eee;
+  .container{
+    padding-top: 50px;
+    margin: 0 auto;
+    width: 980px;
+    text-align: center;
+  .content{
+    padding: 0 50px;
+    margin: 50px auto 0;
+    width: 100%;
+    /*height: 540px;*/
+    text-align: center;
+    background: #fff;
+  .content-top{
+    height: 80px;
+    line-height: 80px;
+  h3{
+    margin-bottom: 0;
+    font-size: 24px;
+    color: #000;
+    border-bottom: 1px solid #dcdcdc;
+  }
+  .step{
+    position: relative;
+    margin-top: 10px;
+  img{
+    width: 315px;
+    height: 46px;
+  }
+  .step-item{
+    position: absolute;
+    top: 45px;
+    left: 265px;
+  span{
+    margin-right: 78px;
+    font-size: 14px;
+    color: #b4b4b4;
+  }
+  span.active {
+    color: #0076ad;
+  }
+  }
+  }
+  }
+  form {
+    margin-top: 150px;
+    padding-bottom: 44px;
+  input{
+    padding: 0 0 0 18px;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 14px;
+    color: #000;
+    border-radius: 0;
+  }
+  input.answer {
+    background: url("/images/all/more.png") no-repeat 325px center;
+    cursor: pointer;
+  }
+  ul{
+    display: none;
+    position: absolute;
+    top: 44px;
+    left: 0;
+    width: 360px;
+    background: #fff;
+    box-shadow: 0 0 5px rgba(0,0,0,.5);
+    -moz-box-shadow: 0 0 5px rgba(0,0,0,.5);
+    -o-box-shadow: 0 0 5px rgba(0,0,0,.5);
+    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.5);
+    z-index: 10;
+  li{
+    padding-left: 18px;
+    width: 100%;
+    height: 30px;
+    line-height: 30px;
+    text-align: left;
+    font-size: 14px;
+    color: #000;
+    cursor: pointer;
+  &:hover{
+     background: #0076ad;
+     color: #fff;
+   }
+  }
+  }
+  span.tip{
+    position: absolute;
+    top: 0;
+    right: -238px;
+    font-size: 13px;
+    color: #8c8c8c;
+  a{
+    font-size: 13px;
+    color: #0076ad;
+  }
+  }
+  span.tip.codeError-tip{
+    position: absolute;
+    top: 3px;
+    left: 378px;
+    width: 200px;
+    text-align: left;
+    color: #ff4949;
+    font-size: 12px;
+  }
+  i{
+    position: absolute;
+    top: 13px;
+    left: 20px;
+    font-size: 20px;
+    color: #a0a0a0;
+  }
+  .btn {
+    margin: 34px 0 16px 0;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 16px;
+    color: #fff;
+    background: #0076AD;
+    border-radius: 3px;
+  }
+  }
+  .content-bottom{
+    margin: 155px auto 0;
+    padding-bottom: 50px;
+    width: 360px;
+  div.warp{
+    padding-bottom: 65px;
+  }
+  p{
+    font-size: 24px;
+    color: #323232;
+  img{
+    margin-right: 20px;
+    width: 30px;
+    height: 28px;
+  }
+  }
+  p.pass{
+    font-size: 24px;
+    color: #e77405;
+  img{
+    height: 30px;
+  }
+  }
+  p.passed {
+    color: #2ab300;
+  img{
+    height: 30px;
+  }
+  }
+  span{
+    display: inline-block;
+    font-size: 14px;
+    color: #8b8b8b;
+  }
+  span.close-tip{
+    margin: 15px 0 140px 0;
+  }
+  .close-btn{
+    margin: 0 auto;
+    width: 200px;
+    height: 36px;
+    line-height: 36px;
+    font-size: 14px;
+    text-align: center;
+    color: #323232;
+    border: 1px solid #d2d2d2;
+    border-radius: 3px;
+    cursor: pointer ;
+  }
+  span.use{
+    display: inline-block;
+    margin-bottom: 30px;
+    width: 360px;
+    font-size: 14px;
+    color: #000;
+    text-align: left;
+  em{
+    font-size: 14px;
+    font-style: normal;
+    color: #000;
+  }
+  }
+  .form-group {
+    margin: 0 auto 16px;
+    position: relative;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+  input{
+    padding: 0 0 0 18px;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 14px;
+    color: #000;
+    border-radius: 0;
+  }
+  input.msg{
+    float: left;
+    width: 210px;
+    padding: 0 0 0 18px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 14px;
+    color: #000;
+    border-radius: 0;
+  }
+  span.msg{
+    float: right;
+    margin: 0;
+    width: 130px;
+    height: 44px;
+    line-height: 44px;
+    text-align: center ;
+    font-size: 14px;
+    color: #5a5a5a;
+    background: #f4f4f4;
+    border: 1px solid #dcdcdc;
+    cursor: pointer;
+  }
+  span.msg.send{
+    background: #d2d2d2;
+    color: #fff;
+  }
+  }
+  .btn {
+    margin: 34px 0 10px 0;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 16px;
+    color: #fff;
+    background: #0076AD;
+    border-radius: 3px;
+  }
+  }
+  .choose{
+    margin: 155px auto 0;
+    padding-bottom: 44px;
+  div{
+    padding: 0 15px;
+    margin: 0 auto 16px;
+    width: 360px;
+    height: 60px;
+    line-height: 60px;
+    text-align: left;
+    overflow: hidden;
+    border: 1px solid #d2d2d2;
+    cursor: pointer;
+  &:hover,&.active{
+             border-color: #0076ad;
+  span{
+    color: #0076ad;
+  }
+  i.second {
+    color: #0076ad;
+  }
+  }
+  img.first{
+    float: left;
+    margin: 24px 20px 0 0;
+    font-size: 20px;
+    color: #323232;
+  }
+  img.first.mob{
+    margin: 22px 20px 0 5px;
+    font-size: 28px;
+  }
+  i.second {
+    float: right;
+    margin: 20px 0 0 5px;
+    font-size: 20px;
+    color: #323232;
+  }
+  span{
+    float: left;
+    font-size: 14px;
+    color: #323232;
+  }
+  }
+  }
+  a.return{
+    position: absolute;
+    left: 0;
+    top: -15px;
+  img{
+    width: 34px !important;
+    height: 34px !important;
+  }
+  }
+  }
+  }
+  }
+</style>

+ 18 - 177
components/encrypted-setting/EncryptedSetting.vue → components/encrypted-setting/EncryptedMobile.vue

@@ -1,38 +1,17 @@
 <template>
   <div class="validation">
     <div class="container">
-      <div class="content" v-show="goFirstStep">
+      <div class="content">
         <div class="content-top">
           <h3>添加密保设置</h3>
           <div class="step">
             <img src="/images/all/step01.png" alt=""/>
             <div class="step-item"><span class="active">账号验证</span><span>密保设置</span><span>设置完成</span></div>
-          </div>
-        </div>
-        <div class="choose">
-          <div v-show="hasValidPhoneWay"
-               @click="chooseWay(1)">
-            <img src="/images/all/icon01.png" alt="" class="first mob"/>
-            <span>通过验证手机</span><i class="fa fa-angle-right second"></i>
-          </div>
-          <div v-show="hasValidEmailWay"
-               @click="chooseWay(2)">
-            <img src="/images/all/icon02.png" alt="" class="first"/>
-            <span>通过验证邮箱</span><i class="fa fa-angle-right second"></i>
-          </div>
-        </div>
-      </div>
-      <div class="content" v-show="showPhoneValid">
-        <div class="content-top">
-          <h3>添加密保设置</h3>
-          <div class="step">
-            <img src="/images/all/step01.png" alt=""/>
-            <div class="step-item"><span class="active">账号验证</span><span>密保设置</span><span>设置完成</span></div>
-            <a @click="goPreviousStep" class="return"><img src="/images/all/return.png" alt=""/></a>
+            <a @click="chooseWay('select')" class="return"><img src="/images/all/return.png" alt=""/></a>
           </div>
         </div>
         <div class="content-bottom">
-          <span class="use">使用手机号<em>{{secretMobile}}</em>接收验证码</span>
+          <span class="use">使用手机号<em>{{info | hide}}</em>接收验证码</span>
           <div>
             <el-form :model="valid" :rules="rules" ref="valid" label-width="100px" class="demo-ruleForm" style="margin-top: 0;">
               <el-form-item prop="code">
@@ -55,39 +34,6 @@
           </div>
         </div>
       </div>
-      <div class="content" v-show="showEmailValid">
-        <div class="content-top">
-          <h3>添加密保设置</h3>
-          <div class="step">
-            <img src="/images/all/step01.png" alt=""/>
-            <div class="step-item"><span class="active">账号验证</span><span>密保设置</span><span>设置完成</span></div>
-            <a href="" class="return"><img src="/images/all/return.png" alt=""/></a>
-          </div>
-        </div>
-        <div class="content-bottom">
-          <span class="use">使用电子邮箱<em>{{secretEmail}}</em>进行验证,有效期7天</span>
-          <div class="warp"
-               @click="firstStepValidEmail"
-               v-show="!emailSendSuccess">
-            <button class="btn">发送验证请求</button>
-          </div>
-          <div class="warp" v-show="emailSendSuccess">
-            <button class="btn" :disabled="emailSendSuccess">已发送验证邮件,请查收</button>
-          </div>
-        </div>
-      </div>
-      <!--未验证手机弹出框-->
-      <div>
-        <el-dialog class="valid-phone"
-                   :visible.sync="goValidPhone"
-                   @click="goVaildPhoneStep"
-                   size="tiny">
-          <div class="set-tip" v-show="goValidPhone">
-            <p>您的账号未验证手机,请先验证手机号</p>
-            <a href="/validation/phoneValidation">确定</a>
-          </div>
-        </el-dialog>
-      </div>
       <loading v-show="isShowLoading"/>
     </div>
   </div>
@@ -99,6 +45,7 @@
     components: {
       Loading
     },
+    props: ['info'],
     data () {
 //      第一步校验验证码
       var validateFirstCode = (rule, value, callback) => {
@@ -109,9 +56,9 @@
         } else {
           if (this.valid.code !== '') {
             if (this.token) {
-              if (this.valid.code !== '' && this.getMobile !== '') {
+              if (this.valid.code !== '' && this.info !== '') {
                 let param = new FormData()
-                param.append('mobile', this.getMobile)
+                param.append('mobile', this.info)
                 param.append('code', this.valid.code)
                 param.append('token', this.token)
                 let config = {
@@ -142,23 +89,12 @@
       }
       return {
         isShowLoading: false,
-        goFirstStep: true,
-        hasValidPhoneWay: false,
-        hasValidEmailWay: false,
-        showPhoneValid: false,
-        showEmailValid: false,
         sendAccountCode: true,
         account_time: 0,
         codeErrorChecked: false,
         codeChecked: false,
-        secretMobile: '',
-        secretEmail: '',
-        getMobile: '',
-        getEmail: '',
         codeErrorMsg: '',
-        firstStepToken: '',
-        emailSendSuccess: false,
-        goValidPhone: false,
+        token: '',
         valid: {
           code: ''
         },
@@ -169,96 +105,21 @@
         }
       }
     },
-    computed: {
-      logged () {
-//        console.log(this.$store.state.option.isLogin.data.content)
-        return this.$store.state.option.isLogin.data.content
+    filters: {
+      hide: function (value) {
+        let reg = /^(\d{3})\d{6}(\d{2})$/
+        return value.replace(reg, '$1******$2')
       }
     },
-    mounted () {
-//      验证是否登录
-      this.$nextTick(() => {
-        this.isLogin()
-        // 刷新统计信息
-        setInterval(() => {
-          this.isLogin()
-        }, 10000)
-      })
-//      获取验证方式
-      this.$nextTick(() => {
-        this.getVerifyWay()
-      })
-    },
     methods: {
-//      判断用户是否登录
-      isLogin () {
-        if (!this.logged.isLogin) {
-//          未登录跳到登录页面
-          window.location.href = '/'
-        }
-      },
-//      获取验证方式
-      getVerifyWay () {
-        this.$http.get('/update/user/checkType')
-          .then(response => {
-            if (response.data.success) {
-              if (!response.data.content.mobile) {
-                this.goValidPhone = true
-              } else {
-                if (response.data.content.mobile) {
-                  this.hasValidPhoneWay = true
-                  this.showManualAppeal = true
-                  this.getMobile = response.data.content.mobile
-                  var reg = /^(\d{3})\d{6}(\d{2})$/
-                  this.secretMobile = this.getMobile.replace(reg, '$1******$2')
-                }
-                if (response.data.content.email) {
-                  this.hasValidEmailWay = true
-                  this.showManualAppeal = true
-                  this.getEmail = response.data.content.email
-                  let getEmailIndex = this.getEmail.indexOf('@')
-                  if (getEmailIndex > 3) {
-                    let len = this.getEmail.substring(3, getEmailIndex)
-                    this.secretEmail = this.getEmail.replace(len, '*')
-                  } else {
-                    this.getEmailArr = this.getEmail.split('')
-                    this.getEmailSplit = this.getEmailArr.splice(getEmailIndex, 0, '*')
-                    this.secretEmail = this.getEmailArr.join('')
-                  }
-                }
-                this.goValidPhone = false
-                this.goFirstStep = true
-              }
-            } else {
-              return Promise.reject(response.data)
-            }
-          }).catch(err => {
-            this.$message.error(err.errMsg)
-          })
-      },
-//      没验证手机将跳转到手机验证页面
-      goVaildPhoneStep () {
-        this.$router.push({ path: '/validation/phoneValidation' })
-      },
-//      选择方式
-      chooseWay (flag) {
-        if (flag === 1) {
-          this.showPhoneValid = true
-        } else if (flag === 2) {
-          this.showEmailValid = true
-        }
-        this.goFirstStep = false
-      },
-//      返回上一步
-      goPreviousStep () {
-        this.goFirstStep = true
-        this.showPhoneValid = false
-        this.showEmailValid = false
+      // 选择方式
+      chooseWay (type) {
+        this.$emit('stepEvent', type)
       },
 //      获取第一步手机验证码
       getCheckCode () {
         this.isShowLoading = true
-        this.$http.get(`/update/user/check/mobile`, {params: {mobile: this.getMobile}})
+        this.$http.get(`/update/user/check/mobile`, {params: {mobile: this.info}})
           .then(response => {
             this.isShowLoading = false
             if (response.data.success) {
@@ -291,7 +152,7 @@
         if (this.codeChecked) {
           this.isShowLoading = true
           let param = new FormData()
-          param.append('mobile', this.getMobile)
+          param.append('mobile', this.info)
           param.append('code', this.valid.code)
           param.append('token', this.token)
           let config = {
@@ -301,11 +162,9 @@
             .then(response => {
               this.isShowLoading = false
               if (response.data.success) {
-                this.$store.commit('login/GET_TOKEN', response.data.content)
-                this.showPhoneValid = false
-                this.$router.push({ path: '/encrypted-setting/EncryptedSettingSecondStep' })
+                this.$emit('stepEvent', 'new')
+                this.$emit('tokenEvent', response.data.content)
               } else {
-                this.showPhoneValid = true
                 return Promise.reject(response.data)
               }
             }).catch(err => {
@@ -313,24 +172,6 @@
               this.$message.error(err.errMsg)
             })
         }
-      },
-//      第一步验证邮箱
-      firstStepValidEmail () {
-        this.isShowLoading = true
-        this.$http.get(`/update/user/check/email`, {params: {email: this.getEmail, operate: 'question'}})
-          .then(response => {
-            this.isShowLoading = false
-            if (response.data.success) {
-              this.emailSendSuccess = true
-            } else {
-              this.emailSendSuccess = false
-              return Promise.reject(response.data)
-            }
-          }).catch(err => {
-            this.isShowLoading = false
-            // console.log(err)
-            this.$message.error(err.errMsg)
-          })
       }
     }
   }

+ 4 - 36
components/encrypted-setting/EncryptedSettingSecondStep.vue → components/encrypted-setting/EncryptedNew.vue

@@ -55,9 +55,9 @@
     components: {
       Loading
     },
-    middleware: 'authenticated',
+    props: ['tokenId'],
     data () {
-//      第二步验证手机
+//      第二步密保
       var validateSecondAnswer1 = (rule, value, callback) => {
         if (value === '') {
           callback(new Error('请填写正确的答案'))
@@ -126,22 +126,6 @@
         }
       }
     },
-    computed: {
-      firstStepToken () {
-        return this.$store.state.login.token.data
-      }
-    },
-    mounted () {
-//    获取邮箱token
-      this.$nextTick(() => {
-        this.getEmailLinkToken()
-      })
-//      密保问题
-//      this.$http.get('/data/question.json').then(response => {
-//        this.questionOne = response.data.questionOne
-//        this.questionTwo = response.data.questionTwo
-//      })
-    },
     methods: {
 //      设置密保
       questionSubmit () {
@@ -152,7 +136,7 @@
           userQuestion.push({'question': this.valid2.question1, 'answer': this.valid2.answer1, 'sort': '1'}, {'question': this.valid2.question2, 'answer': this.valid2.answer2, 'sort': '2'})
           let userQuestions = JSON.stringify(userQuestion)
           param.append('userQuestions', userQuestions)
-          param.append('token', this.firstStepToken)
+          param.append('token', this.tokenId)
           let config = {
             headers: {'Content-Type': 'multipart/form-data'}
           }
@@ -160,7 +144,7 @@
             .then(response => {
               this.isShowLoading = false
               if (response.data.success) {
-                this.$router.push({ path: '/encrypted-setting/EncryptedSettingThirdStep' })
+                this.$emit('stepEvent', 'success')
               } else {
                 return Promise.reject(response.data)
               }
@@ -169,22 +153,6 @@
               this.$message.error(err.errMsg)
             })
         }
-      },
-//      获得邮箱token
-      getEmailLinkToken () {
-        var url = window.location.search
-        var request = {}
-        if (url.indexOf('?' !== -1)) {
-          var str = url.substr(1)
-          var strs = str.split('&')
-          for (var i = 0; i < strs.length; i++) {
-            request[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1])
-          }
-        }
-        this.Token = request['token'] || ''
-        if (this.Token) {
-          this.$store.commit('login/GET_TOKEN', this.Token)
-        }
       }
     }
   }

+ 409 - 0
components/encrypted-setting/EncryptedSelect.vue

@@ -0,0 +1,409 @@
+<template>
+  <div class="validation">
+    <div class="container">
+      <div class="content">
+        <div class="content-top">
+          <h3>添加密保设置</h3>
+          <div class="step">
+            <img src="/images/all/step01.png" alt=""/>
+            <div class="step-item"><span class="active">账号验证</span><span>密保设置</span><span>设置完成</span></div>
+          </div>
+        </div>
+        <div class="choose">
+          <div v-show="hasValidPhoneWay"
+               @click="chooseWay('mobile')">
+            <img src="/images/all/icon01.png" alt="" class="first mob"/>
+            <span>通过验证手机</span><i class="fa fa-angle-right second"></i>
+          </div>
+          <div v-show="hasValidEmailWay"
+               @click="chooseWay('email')">
+            <img src="/images/all/icon02.png" alt="" class="first"/>
+            <span>通过验证邮箱</span><i class="fa fa-angle-right second"></i>
+          </div>
+        </div>
+      </div>
+      <!--未验证手机弹出框-->
+      <div>
+        <el-dialog class="valid-phone"
+                   :visible.sync="goValidPhone"
+                   @click="goValidPhoneStep"
+                   size="tiny">
+          <div class="set-tip" v-show="goValidPhone">
+            <p>您的账号未验证手机,请先验证手机号</p>
+            <a href="/validation/phoneValidation">确定</a>
+          </div>
+        </el-dialog>
+      </div>
+      <loading v-show="isShowLoading"/>
+    </div>
+  </div>
+</template>
+<script>
+  import Loading from '~components/common/loading/Loading.vue'
+  export default {
+    name: 'validation',
+    components: {
+      Loading
+    },
+    data () {
+      return {
+        isShowLoading: false,
+        hasValidPhoneWay: false,
+        hasValidEmailWay: false,
+        goValidPhone: false,
+        mobile: '',
+        email: ''
+      }
+    },
+    mounted () {
+//      获取验证方式
+      this.$nextTick(() => {
+        this.getVerifyWay()
+      })
+    },
+    methods: {
+      // 选择跳转方式
+      chooseWay (type) {
+        this.$emit('stepEvent', type)
+        if (type === 'mobile') {
+          this.$emit('setDataEvent', this.mobile)
+        }
+        if (type === 'email') {
+          this.$emit('setDataEvent', this.email)
+        }
+      },
+//      获取验证方式
+      getVerifyWay () {
+        this.$http.get('/update/user/checkType')
+          .then(response => {
+            if (response.data.success) {
+              if (!response.data.content.mobile) {
+                this.goValidPhone = true
+              } else {
+                if (response.data.content.mobile) {
+                  this.hasValidPhoneWay = true
+                  this.mobile = response.data.content.mobile
+                }
+                if (response.data.content.email) {
+                  this.hasValidEmailWay = true
+                  this.email = response.data.content.email
+                }
+                this.goValidPhone = false
+              }
+            } else {
+              return Promise.reject(response.data)
+            }
+          }).catch(err => {
+            this.$message.error(err.errMsg)
+          })
+      },
+//      验证手机页面
+      goValidPhoneStep () {
+        this.$router.push({ path: '/validation/phoneValidation' })
+      }
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .validation {
+    margin: 0 auto;
+    width: 100%;
+    background: #eee;
+  .container{
+    padding-top: 50px;
+    margin: 0 auto;
+    width: 980px;
+    text-align: center;
+  .content{
+    padding: 0 50px;
+    margin: 50px auto 0;
+    width: 100%;
+    /*height: 540px;*/
+    text-align: center;
+    background: #fff;
+  .content-top{
+    height: 80px;
+    line-height: 80px;
+  h3{
+    margin-bottom: 0;
+    font-size: 24px;
+    color: #000;
+    border-bottom: 1px solid #dcdcdc;
+  }
+  .step{
+    position: relative;
+    margin-top: 10px;
+  img{
+    width: 315px;
+    height: 46px;
+  }
+  .step-item{
+    position: absolute;
+    top: 45px;
+    left: 265px;
+  span{
+    margin-right: 78px;
+    font-size: 14px;
+    color: #b4b4b4;
+  }
+  span.active {
+    color: #0076ad;
+  }
+  }
+  }
+  }
+  form {
+    margin-top: 150px;
+    padding-bottom: 44px;
+  input{
+    padding: 0 0 0 18px;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 14px;
+    color: #000;
+    border-radius: 0;
+  }
+  input.answer {
+    background: url("/images/all/more.png") no-repeat 325px center;
+    cursor: pointer;
+  }
+  ul{
+    display: none;
+    position: absolute;
+    top: 44px;
+    left: 0;
+    width: 360px;
+    background: #fff;
+    box-shadow: 0 0 5px rgba(0,0,0,.5);
+    -moz-box-shadow: 0 0 5px rgba(0,0,0,.5);
+    -o-box-shadow: 0 0 5px rgba(0,0,0,.5);
+    -webkit-box-shadow: 0 0 5px rgba(0,0,0,.5);
+    z-index: 10;
+  li{
+    padding-left: 18px;
+    width: 100%;
+    height: 30px;
+    line-height: 30px;
+    text-align: left;
+    font-size: 14px;
+    color: #000;
+    cursor: pointer;
+  &:hover{
+     background: #0076ad;
+     color: #fff;
+   }
+  }
+  }
+  span.tip{
+    position: absolute;
+    top: 0;
+    right: -238px;
+    font-size: 13px;
+    color: #8c8c8c;
+  a{
+    font-size: 13px;
+    color: #0076ad;
+  }
+  }
+  span.tip.codeError-tip{
+    position: absolute;
+    top: 3px;
+    left: 378px;
+    width: 200px;
+    text-align: left;
+    color: #ff4949;
+    font-size: 12px;
+  }
+  i{
+    position: absolute;
+    top: 13px;
+    left: 20px;
+    font-size: 20px;
+    color: #a0a0a0;
+  }
+  .btn {
+    margin: 34px 0 16px 0;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 16px;
+    color: #fff;
+    background: #0076AD;
+    border-radius: 3px;
+  }
+  }
+  .content-bottom{
+    margin: 155px auto 0;
+    padding-bottom: 50px;
+    width: 360px;
+  div.warp{
+    padding-bottom: 65px;
+  }
+  p{
+    font-size: 24px;
+    color: #323232;
+  img{
+    margin-right: 20px;
+    width: 30px;
+    height: 28px;
+  }
+  }
+  p.pass{
+    font-size: 24px;
+    color: #e77405;
+  img{
+    height: 30px;
+  }
+  }
+  p.passed {
+    color: #2ab300;
+  img{
+    height: 30px;
+  }
+  }
+  span{
+    display: inline-block;
+    font-size: 14px;
+    color: #8b8b8b;
+  }
+  span.close-tip{
+    margin: 15px 0 140px 0;
+  }
+  .close-btn{
+    margin: 0 auto;
+    width: 200px;
+    height: 36px;
+    line-height: 36px;
+    font-size: 14px;
+    text-align: center;
+    color: #323232;
+    border: 1px solid #d2d2d2;
+    border-radius: 3px;
+    cursor: pointer ;
+  }
+  span.use{
+    display: inline-block;
+    margin-bottom: 30px;
+    width: 360px;
+    font-size: 14px;
+    color: #000;
+    text-align: left;
+  em{
+    font-size: 14px;
+    font-style: normal;
+    color: #000;
+  }
+  }
+  .form-group {
+    margin: 0 auto 16px;
+    position: relative;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+  input{
+    padding: 0 0 0 18px;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 14px;
+    color: #000;
+    border-radius: 0;
+  }
+  input.msg{
+    float: left;
+    width: 210px;
+    padding: 0 0 0 18px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 14px;
+    color: #000;
+    border-radius: 0;
+  }
+  span.msg{
+    float: right;
+    margin: 0;
+    width: 130px;
+    height: 44px;
+    line-height: 44px;
+    text-align: center ;
+    font-size: 14px;
+    color: #5a5a5a;
+    background: #f4f4f4;
+    border: 1px solid #dcdcdc;
+    cursor: pointer;
+  }
+  span.msg.send{
+    background: #d2d2d2;
+    color: #fff;
+  }
+  }
+  .btn {
+    margin: 34px 0 10px 0;
+    width: 360px;
+    height: 44px;
+    line-height: 44px;
+    font-size: 16px;
+    color: #fff;
+    background: #0076AD;
+    border-radius: 3px;
+  }
+  }
+  .choose{
+    margin: 155px auto 0;
+    padding-bottom: 44px;
+  div{
+    padding: 0 15px;
+    margin: 0 auto 16px;
+    width: 360px;
+    height: 60px;
+    line-height: 60px;
+    text-align: left;
+    overflow: hidden;
+    border: 1px solid #d2d2d2;
+    cursor: pointer;
+  &:hover,&.active{
+             border-color: #0076ad;
+  span{
+    color: #0076ad;
+  }
+  i.second {
+    color: #0076ad;
+  }
+  }
+  img.first{
+    float: left;
+    margin: 24px 20px 0 0;
+    font-size: 20px;
+    color: #323232;
+  }
+  img.first.mob{
+    margin: 22px 20px 0 5px;
+    font-size: 28px;
+  }
+  i.second {
+    float: right;
+    margin: 20px 0 0 5px;
+    font-size: 20px;
+    color: #323232;
+  }
+  span{
+    float: left;
+    font-size: 14px;
+    color: #323232;
+  }
+  }
+  }
+  a.return{
+    position: absolute;
+    left: 0;
+    top: -15px;
+  img{
+    width: 34px !important;
+    height: 34px !important;
+  }
+  }
+  }
+  }
+  }
+</style>

+ 0 - 0
components/encrypted-setting/EncryptedSettingThirdStep.vue → components/encrypted-setting/EncryptedSuccess.vue


+ 6 - 2
components/encrypted-setting/index.js

@@ -1,3 +1,7 @@
-import EncryptedSetting from './EncryptedSetting.vue'
+import EncryptedSelect from './EncryptedSelect.vue'
+import EncryptedMobile from './EncryptedMobile.vue'
+import EncryptedEmail from './EncryptedEmail.vue'
+import EncryptedNew from './EncryptedNew.vue'
+import EncryptedSuccess from './EncryptedSuccess.vue'
 
-export { EncryptedSetting }
+export { EncryptedSelect, EncryptedMobile, EncryptedEmail, EncryptedNew, EncryptedSuccess }

+ 20 - 5
pages/encrypted-setting/encryptedSetting.vue

@@ -9,13 +9,17 @@
     </template>
     <template v-else>
       <accountCenter-header/>
-      <encrypted-setting/>
+      <encrypted-select v-if="step === 'select'" @stepEvent="setStep" @setDataEvent="setInfo"/>
+      <encrypted-mobile v-if="step === 'mobile'" @stepEvent="setStep" @tokenEvent="loadToken" :info="info"/>
+      <encrypted-email v-if="step === 'email'" @stepEvent="setStep" :info="info"/>
+      <encrypted-new v-if="step === 'new'" @stepEvent="setStep" :tokenId="tokenId"/>
+      <encrypted-success v-if="step === 'success'"/>
     </template>
   </div>
 </template>
 <script>
   import AccountCenterHeader from '~components/default/AccountCenterHeader.vue'
-  import EncryptedSetting from '~components/encrypted-setting/EncryptedSetting.vue'
+  import {EncryptedSelect, EncryptedMobile, EncryptedEmail, EncryptedNew, EncryptedSuccess} from '~components/encrypted-setting'
   import {StepSelect, StepMobile, StepEmail, StepNew, StepSuccess} from '~components/mobile/encryptedSetting'
   export default {
     layout (content) {
@@ -25,7 +29,6 @@
       name: 'fade',
       mode: 'out-in'
     },
-    middleware: 'authenticated',
     data () {
       return {
         step: 'select',
@@ -35,7 +38,11 @@
     },
     components: {
       AccountCenterHeader,
-      EncryptedSetting,
+      EncryptedSelect,
+      EncryptedMobile,
+      EncryptedEmail,
+      EncryptedNew,
+      EncryptedSuccess,
       StepSelect,
       StepMobile,
       StepEmail,
@@ -43,7 +50,15 @@
       StepSuccess
     },
     mounted () {
-      this.$route.query.token ? this.step = 'new' : this.step = 'select'
+      if (this.$route.query.token) {
+        this.step = 'new'
+      } else {
+        if (this.$store.state.option.isLogin.data.content.isLogin) {
+          this.step = 'select'
+        } else {
+          this.$route.push('/')
+        }
+      }
     },
     computed: {
       isMobile () {

+ 0 - 22
pages/encrypted-setting/encryptedSettingSecondStep.vue

@@ -1,22 +0,0 @@
-<template>
-  <div>
-    <accountCenter-header/>
-    <encryptedSetting-secondStep/>
-  </div>
-</template>
-<script>
-  import AccountCenterHeader from '~components/default/AccountCenterHeader.vue'
-  import EncryptedSettingSecondStep from '~components/encrypted-setting/EncryptedSettingSecondStep.vue'
-  export default {
-    layout: 'default',
-    components: {
-      AccountCenterHeader,
-      EncryptedSettingSecondStep
-    },
-    mounted () {
-      if (this.$store.state.option.isMobile) {
-        this.$router.push('/encrypted-setting/encryptedSetting?token=' + this.$route.query.token)
-      }
-    }
-  }
-</script>

+ 0 - 17
pages/encrypted-setting/encryptedSettingThirdStep.vue

@@ -1,17 +0,0 @@
-<template>
-  <div>
-    <accountCenter-header/>
-    <encryptedSetting-thirdStep/>
-  </div>
-</template>
-<script>
-  import AccountCenterHeader from '~components/default/AccountCenterHeader.vue'
-  import EncryptedSettingThirdStep from '~components/encrypted-setting/EncryptedSettingThirdStep.vue'
-  export default {
-    layout: 'default',
-    components: {
-      AccountCenterHeader,
-      EncryptedSettingThirdStep
-    }
-  }
-</script>