码迷,mamicode.com
首页 > 其他好文 > 详细

五 Vue学习 首页学习

时间:2018-04-06 15:23:20      阅读:585      评论:0      收藏:0      [点我收藏+]

标签:value   error   头部   err   ref   fun   一个   管理系   size   

首页:   http://localhost:8002/#/,  登录页面如下:

技术分享图片

index.js文件中如下的路由配置,转过去看login.vue是如何实现的。

const routes = [
{
path: ‘/‘,
component: login
},

这里一个问题: login.vue是如何与index.xml整到一起的呢:
   login作为路由在Router中定义,而在App.vue中Router是参数,这样login就是App.vue的路由了;  App.vue和index.html已经绑定了,并且在App.vue的模板中又又有<Router-View>标签,
所以就可以在index.html中看到login的内容了。)
login.vue代码如下:
  
 
 <section>: HTML5中的新标签,定义了文档的某个区域。比如章节、头部、底部或者文档的其他区域。
   v-show="true/false: VUE元素的隐藏和显示;
   el-form:  element的表单
   rules: element-UI组件定义的规则,对规则进行校验,如果不满足,会有相应的提示信息等,其规则定义在下面:      
                     rules: {
                      username: [
                        { required: true, message: ‘请输入用户名‘, trigger: ‘blur‘ },   // 定义了username必填,提示的信息,以及触发条件
              ], password: [ { required: true, message: ‘请输入密码‘, trigger: ‘blur‘ } ], },
     ref:  表示是el-form的别名,或者叫引用,供其他地方使用:
   如下的代码,在提交表单的时候,用的就是ref指定的名字。
             <el-form-item>
                        <el-button type="primary" @click="submitForm(‘loginForm‘)" class="submit_btn">登陆</el-button>
                      </el-form-item>
    placeholder
v-if: 指令是条件渲染指令,它根据表达式的真假来删除和插入.
v-for: v-for指令基于一个数组渲染一个列表;
v-bind: 和某个值绑定
v-on : v-on指令用于给监听DOM事件;
<template>
      <div class="login_page fillcontain">
          <!--<transition name="form-fade" mode="in-out">-->
              <section class="form_contianer" v-show="showLogin">
                  <div class="manage_tip">
                      <p>档案管理系统</p>
                  </div>
                <el-form :model="loginForm" :rules="rules" ref="loginForm">
                    <el-form-item prop="username">
                        <el-input v-model="loginForm.username" placeholder="用户名"><span>dsfsf</span></el-input>
                    </el-form-item>
                    <el-form-item prop="password">
                        <el-input type="password" placeholder="密码" v-model="loginForm.password"></el-input>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" @click="submitForm(‘loginForm‘)" class="submit_btn">登陆</el-button>
                      </el-form-item>
                </el-form>
                <!--<p class="tip">温馨提示:</p>-->
                <!--<p class="tip">未登录过的新用户,自动注册</p>-->
                <!--<p class="tip">注册过的用户可凭账号密码登录</p>-->
              </section>
          <!--</transition>-->
      </div>
</template>

<script>
    import {login, getAdminInfo} from ‘@/api/getData‘
    import {mapActions, mapState} from ‘vuex‘

    export default {
        data(){
            return {
                loginForm: {
                    username: ‘‘,
                    password: ‘‘,
                },
                rules: {
                    username: [
                        { required: true, message: ‘请输入用户名‘, trigger: ‘blur‘ },
                    ],
                    password: [
                        { required: true, message: ‘请输入密码‘, trigger: ‘blur‘ }
                    ],
                },
                showLogin: false,
            }
        },
        mounted(){
            this.showLogin = true;
            if (!this.adminInfo.id) {
                this.getAdminData()
            }
        },
        computed: {
            ...mapState([‘adminInfo‘]),
        },
        methods: {
            ...mapActions([‘getAdminData‘]),
            async submitForm(formName) {
                this.$refs[formName].validate(async (valid) => {
                    if (valid) {
                        const res = await login({user_name: this.loginForm.username, password: this.loginForm.password})
                        if (res.status == 1) {
                            this.$message({
                                type: ‘success‘,
                                message: ‘登录成功‘
                            });
                            this.$router.push(‘manage‘)
                        }else{
                            this.$message({
                                type: ‘error‘,
                                message: res.message
                            });
                        }
                    } else {
                        this.$notify.error({
                            title: ‘错误‘,
                            message: ‘请输入正确的用户名密码‘,
                            offset: 100
                        });
                        return false;
                    }
                });
            },
        }
        // watch: {
        //     adminInfo: function (newValue){
        //         if (newValue.id) {
        //             this.$message({
         //                type: ‘success‘,
         //                message: ‘检测到您之前登录过,将自动登录‘
         //            });
        //             this.$router.push(‘manage‘)
        //         }
        //     }
        // }
    }
</script>

<style lang="less" scoped>
    @import ‘../style/mixin‘;
    .login_page{
        background-color: #324057;
    }
    .manage_tip{
        position: absolute;
        width: 100%;
        top: -100px;
        left: 0;
        p{
            font-size: 34px;
            color: #fff;
        }
    }
    .form_contianer{
        .wh(320px, 210px);
        .ctp(320px, 210px);
        padding: 25px;
        border-radius: 5px;
        text-align: center;
        background-color: #fff;
        .submit_btn{
            width: 100%;
            font-size: 16px;
        }
    }
    .tip{
        font-size: 12px;
        color: red;
    }
    .form-fade-enter-active, .form-fade-leave-active {
          transition: all 1s;
    }
    .form-fade-enter, .form-fade-leave-active {
          transform: translate3d(0, -50px, 0);
          opacity: 0;
    }
</style>

 

五 Vue学习 首页学习

标签:value   error   头部   err   ref   fun   一个   管理系   size   

原文地址:https://www.cnblogs.com/liufei1983/p/8727543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!