zoukankan      html  css  js  c++  java
  • Vue

     Vue + Element 搭建后台管理系统界面

    新建项目

    安装webpack

    npm install webpack -g

    安装脚手架

    npm install vue-cli -g

    创建项目文件

    vue init webpack vue_demo

    询问项依次为:

    1. 项目名称,直接回车使用默认。注:此处项目名不能使用大写。
    2. 项目描述,如果不需要就直接回车。
    3. 项目作者,默认计算机用户名。
    4. 构建方式,建议:standalone。
    5. 是否安装vue的路由插件,建议:y。
    6. 是否使用ESLint检测你的代码,ESLint是一个语法规则和代码风格的检查工具,可以用来保证写出语法正确、风格统一的代码。建议选择n。因为选择y后调试项目时,控制台报很多黄色警告提示格式不规范,但其实并不影响项目。
    7. 是否安装单元测试,建议:y。
    8. 是否安装E2E测试框架NightWatch(End To End,“用户真实场景”。),建议:y。
    9. 项目创建后是否要为你运行“npm install”,建议:yes use npm。

    运行项目

    在idea中打开项目文件,在Terminal中输入

    npm run dev

    项目启动之后,在浏览器中输入 http://127.0.0.1:8080 即可看到页面。

    引入ElementUI

    安装element ui

    npm install element-ui --save

    将/src/main.js修改为

    import Vue from 'vue'
    import App from './App'
    import router from './router'
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    
    Vue.use(ElementUI)
    Vue.config.productionTip = false
    
    new Vue({
      el: '#app',
      router,
      render: h => h(App)
    });

    登陆页面

    src目录下新建目录views,在views下新建登陆页面Login.vue

    <template>
      <div class="login-container">
        <el-form :model="dataForm" :rules="rules"
                 status-icon
                 ref="ruleForm"
                 label-position="left"
                 label-width="0px"
                 class="demo-ruleForm login-page">
          <h3 class="title">登录</h3>
          <el-form-item prop="username">
            <el-input type="text" v-model="dataForm.username" auto-complete="off" placeholder="用户名"></el-input>
          </el-form-item>
          <el-form-item prop="password">
            <el-input type="password" v-model="dataForm.password" auto-complete="off" placeholder="密码"></el-input>
          </el-form-item>
          <el-checkbox v-model="checked" class="remember">记住密码</el-checkbox>
          <el-form-item style="100%;">
            <el-button type="primary" style="100%;" @click="handleSubmit" :loading="login">登录</el-button>
          </el-form-item>
        </el-form>
      </div>
    </template>
    
    <script>
      export default {
        data() {
          return {
            login: false,
            dataForm: {
              username: 'admin',
              password: '123456',
            },
            rules: {
              username: [{required: true, message: '请输入账号', trigger: 'blur'}],
              password: [{required: true, message: '请输入密码', trigger: 'blur'}]
            },
            checked: false
          }
        },
        methods: {
          handleSubmit(event) {
            this.$refs.ruleForm.validate((valid) => {
              if (valid) {
                this.login = true;
                if (this.dataForm.username === 'admin' && this.dataForm.password === '123456') {
                  this.login = false;
                  sessionStorage.setItem('user', this.dataForm.username);
                  this.$router.push({path: '/'});
                } else {
                  this.login = false;
                  this.$alert('用户名或密码错误!', '提示', {
                    confirmButtonText: 'ok'
                  })
                }
              } else {
                console.log('提交出错!');
                return false;
              }
            })
          }
        }
      };
    </script>
    <style scoped>
      .login-container {
        width: 100%;
        height: 100%;
      }
    
      .login-page {
        -webkit-border-radius: 5px;
        border-radius: 5px;
        margin: 180px auto;
        width: 350px;
        padding: 35px 35px 15px;
        background: #fff;
        border: 1px solid #eaeaea;
        box-shadow: 0 0 25px #cac6c6;
      }
    
      label.el-checkbox.remember {
        margin: 0px 0px 15px;
        text-align: left;
      }
    </style>

    因为页面默认插入了vue图标,去掉vue图标需要修改src/App.vue

    <template>
      <div id="app">
        <!-- 注释掉默认的vue图标 -->
        <!--    <img src="./assets/logo.png">-->
        <router-view/>
      </div>
    </template>
    
    <script>
      export default {
        name: 'App'
      }
    </script>
    
    <style>
      #app {
        font-family: 'Avenir', Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        text-align: center;
        color: #2c3e50;
        margin-top: 60px;
      }
    </style>

    将Login.vue设置为默认页面,修改路由文件router/index.js

    import Vue from 'vue'
    import Router from 'vue-router'
    import Login from '@/views/Login'
    
    Vue.use(Router);
    
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'Login',
          component: Login
        }
      ]
    })

    浏览器再次打开 http://localhost:8080/#/,出现登陆页面

    将未登录会话重定向到 /login

    用 vue-router 的 beforeEach 实现
    beforeEach 方法接收三个参数:

    • to: Rout。即将要进入的目标 路由对象
    • from: Route。当前导航正要离开的路由
    • next: Function。一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

    在 src/main.js 文件追加:

    router.beforeEach((to, from, next) => {
      if (to.path === '/login') {
        sessionStorage.removeItem('user');
      }
      let user = sessionStorage.getItem('user');
      if (!user && to.path !== '/login') {
        next({
          path: '/login'
        })
      } else {
        next();
      }
    });

     

  • 相关阅读:
    关于Weblogic的知识点
    关于Linux常用命令的使用
    VirtualBox虚拟机下Linux CentOS6.9安装增强功能
    并发与高并发(一)-缓存一致性
    麦田厦门小区信息数据爬取
    CRM 增加信息不进行readonly,自定义user
    CRM form按field自定义,多选readonly
    CRM readonly、Form and field validation——第27天
    CRM action 多选框删除——第25,26天
    CRM删除数据——24天
  • 原文地址:https://www.cnblogs.com/helios-fz/p/12656518.html
Copyright © 2011-2022 走看看