美文网首页
vue mintui手机淘宝登录页面

vue mintui手机淘宝登录页面

作者: simplerandom | 来源:发表于2020-07-14 16:27 被阅读0次

    路由

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import Home from '../views/Home.vue'
    import login from '../components/PoP.vue'
    
    Vue.use(VueRouter)
    
      const routes = [
      {
        path: '/home',
        name: 'Home',
        component: Home,
        meta:{
          needLogin: true
         }
      },
      {
        path: '/',
        name: 'c',
        component: login,
        meta:{
          needLogin: false
         }
      },
      {
        path: '/about',
        name: 'About',
        // route level code-splitting
        // this generates a separate chunk (about.[hash].js) for this route
        // which is lazy-loaded when the route is visited.
        component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
      }
    ]
    
    const router = new VueRouter({
      routes
    })
    //路由守卫
    router.beforeEach((to, from, next)=>{
      //路由中设置的needLogin字段就在to当中 
      if(window.sessionStorage.data){
       console.log(window.sessionStorage);
       // console.log(to.path) //每次跳转的路径
       if(to.path === '/'){
        //登录状态下 访问login.vue页面 会跳到index.vue
        next({path: '/home'});
       }else{
        next();
       }
      }else{
       // 如果没有session ,访问任何页面。都会进入到 登录页
       if (to.path === '/') { // 如果是登录页面的话,直接next() -->解决注销后的循环执行bug
        next();
       } else { // 否则 跳转到登录页面
        next({ path: '/' });
       }
      }
    })
    export default router
    

    登录界面PoP.vue

    <template>
      <div id="mydiv">
        <!-- 提醒栏 -->
        <br>
        <br>
        <br>
        <div class="imgDiv">
          <img
            src="../assets/tblogo.png"
            alt=""
            class="logo"
          >
        </div>
        <!-- 操作区域 -->
        <div class="operateDiv">
          <!-- 账号 -->
          <mt-field
            :placeholder="accountPlaceholder"
            v-model="uname"
            class="myinput"
          ></mt-field>
          <!-- 密码 -->
          <mt-field
            v-show="isUserAccount"
            placeholder="密码"
            type="password"
            v-model="upass"
            class="myinput"
          ></mt-field>
          <!-- 短信验证码 -->
          <mt-field
            v-show="!isUserAccount"
            placeholder="校验码"
            v-model="getCode"
            class="myinput"
          >
            <span class="getCode">获取短信验证码</span>
          </mt-field>
          <!-- 免费注册块 -->
          <div class="registerDiv">
            <span>免费注册</span>
            <span v-show="forgetPassShowroNot">忘记密码</span>
          </div>
          <!-- 登录和切换登录方式块 -->
          <div>
            <mt-button
              size="large"
              class="mybutton"
              @click.native="login"
            >登录</mt-button>
            <mt-button
              size="large"
              type="primary"
              class="mybutton"
              @click.native="changeLoginMethod"
            >{{defaultAccountText}}</mt-button>
          </div>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      name: "page-badge",
      data() {
        return {
          // 默认的用户名
          uname: "",
          // 默认的用户密码
          upass: "",
          // 是否显示忘记密码
          forgetPassShowroNot: true,
          // 默认的用户名默认值
          accountPlaceholder: "账号",
          // 是否是用户账户登录,默认是 true
          isUserAccount: true,
          // 默认短信验证码的值
          getCode: "",
          // 切换登录方式按钮默认显示的文本
          defaultAccountText: "短信验证码登录"
        };
      },
      methods: {
    
        // 登录显示模态框 调用 mint-ui 的 messagebox
        login(){
       const self = this;
       var res =[{
       "id": '1',
       "usertitle": "管理员",
       "username": "admin",
       "password": "123456",
       "token": "@date(T)",
      },
      {
       "id": '2',
       "usertitle": "超级管理员",
       "username": "root",
       "password": "root",
       "token": "@date(T)",
      }
     ],
          len = res.length,
          userNameArr= [],
          passWordArr= [],
          ses= window.sessionStorage; 
        // 拿到所有的username
        for(var i=0; i<len; i++){
         userNameArr.push(res[i].username);
         passWordArr.push(res[i].password);
        }
        console.log(userNameArr, passWordArr);
        if(userNameArr.indexOf(this.uname) === -1){
          alert('账号不存在!');
        }else{
         var index = userNameArr.indexOf(this.uname);
         if(passWordArr[index] === this.upass){
          // 把token放在sessionStorage中
          ses.setItem('data', res[index].token);
          this.$parent.$data.userTitle = res[index].usertitle;
          //验证成功进入首页
          console.log(this.$parent);
          
          alert('登录成功!');
          //跳转到首页
          this.$router.push('/home');
          // console.log(this.$router);
         }else{
          alert('密码错误!')
         }
        }
      }
        ,
        // 切换登录方式
        changeLoginMethod() {
          if (this.isUserAccount) {
            this.defaultAccountText = "账户密码登录";
            this.accountPlaceholder = "请输入手机号码";
            this.forgetPassShowroNot = false;
          } else {
            this.defaultAccountText = "短信验证码登录";
            this.accountPlaceholder = "账号";
            this.forgetPassShowroNot = true;
          }
          this.isUserAccount = !this.isUserAccount;
        }
      }
    };
    </script>
    
    <style lang="css">
    .page-badge-container {
      padding: 0 10px;
    }
    
    /* 你需要登录才能继续仿问的布局样式 */
    .tipslogin {
      display: flex;
      justify-content: space-between;
      align-items: center;
      height: 52px;
      background: rgb(238, 238, 238);
      padding-left: 20px;
      padding-right: 20px;
    }
    /* 半闭样式 */
    .closeSpan {
      color: rgb(153, 153, 153);
    }
    /* 图片 logo 根样式 */
    .imgDiv {
      display: flex;
      justify-content: center;
    }
    /* 图片样式 */
    .logo {
      width: 80px;
      height: 80px;
    }
    /* 上面的线隐藏 */
    .mint-cell-wrapper {
      background-image: linear-gradient(180deg, #fff, #fff 0%, transparent 0%);
    }
    /* 输入框底边框样式 */
    .mint-cell-wrapper {
      border: 1px solid #495949;
    }
    
    /* 修改按钮按钮下的默认颜色 */
    .mint-button::after {
      background-color: transparent;
    }
    /* 操作区域的样式*/
    .operateDiv {
      padding-left: 20px;
      padding-right: 20px;
    }
    /* 输入框边距 */
    .myinput {
      margin-top: 30px;
    }
    /* 获取短信验证码字体颜色 */
    .getCode {
      color: #ff5000;
      font-size: 17px;
      border-left: 1px solid #b5b5b5;
      padding-left: 7px;
    }
    /* 免费注册根样式 */
    .registerDiv {
      margin-top: 20px;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
    /* 免费注册字体样式*/
    .registerDiv span {
      color: #555;
    }
    /* 登录短信验证按钮边距 */
    .mybutton {
      margin-top: 20px;
    }
    /* 修改默认 butoon 的样式 达到和淘宝登录一样 */
    .mint-button--default {
      background: linear-gradient(to right, #2dbcfe, 5%, #1e2822);
      border-radius: 25px;
      color: #fff !important;
      height: 48px;
    }
    /* 同上 */
    .mint-button--primary {
      border-radius: 25px;
      height: 48px;
      background: linear-gradient(to right, #2dbcfe, 5%, #6e7b55);
      border: 1px solid #ff5000;
      color: #ff5000;
    }
    /* 修改默认弹框的样式,达到基本和淘宝的效果一样 */
    .mint-msgbox {
      border-radius: 8px;
      width: 70%;
    }
    /* 弹出框内容样式 */
    .mint-msgbox-content {
      min-height: 50px;
      font-size: 18px;
    }
    /* 弹出内容居中 */
    .mint-msgbox-message {
      line-height: 50px;
    }
    /* 弹出框确定按钮样式 */
    .mint-msgbox-btns {
      height: 60px;
    }
    /* 弹出框确定按钮字体 */
    .mint-msgbox-confirm {
      color: #f40;
    }
    </style>
    

    主页面Home.vue

    <template>
      <div>
        <h1>home</h1>
        <mt-button
          type="danger"
          @click="loginOut"
        >注销登录</mt-button>
      </div>
    </template>
    
    <script>
    // @ is an alias to /src
    import HelloWorld from "@/components/HelloWorld.vue";
    import pop from "@/components/PoP.vue";
    import { MessageBox } from "mint-ui";
    
    export default {
      name: "Home",
      components: {
        HelloWorld,
        pop
      },
      data() {
        return {
          list: [],
          loading: false
        };
      },
      methods: {
        loginOut() {
          // 注销后 清除session信息 ,并返回登录页
          window.sessionStorage.removeItem("data");
          MessageBox("", "注销登录成功");
          this.$router.push("/");
        },
        openToast() {
          MessageBox.prompt(" hello", "请输入姓名").then(({ value }) => {
            if (value) {
              MessageBox.alert(`你的名字是 ${value}`, "输入成功");
            }
          });
        }
      }
    };
    </script>
    

    相关文章

      网友评论

          本文标题:vue mintui手机淘宝登录页面

          本文链接:https://www.haomeiwen.com/subject/fbdfhktx.html