IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue后台管理系统项目实战(一) -> 正文阅读

[JavaScript知识库]vue后台管理系统项目实战(一)

每天更新…

项目地址:https://gitee.com/wang_li_pingping/mallmanager

install dependencies

npm install

serve with hot reload at localhost:8080

npm run dev

build for production with minification

npm run build

build for production and view the bundle analyzer report

npm run build --report

1、项目搭建 2、路由配置 3、全局样式重置

App.vue:

#app {
  height: 100%;
}

asset下新建重置样式reset.css(需要全局生效的样式 按需增改删)

html,body{
  height: 100%;
  padding: 0;
  margin: 0;
}

4、用户登录页面

login页面 用户token存储

<template>
  <div class="login-wrap">
    <el-form
      class="login-form"
      label-position="top"
      label-width="80px"
      :model="formdata">
      <h2>用户登录</h2>
      <el-form-item label="用户名">
        <el-input v-model="formdata.username"></el-input>
      </el-form-item>
      <el-form-item label="密码">
        <el-input v-model="formdata.password"></el-input>
      </el-form-item>
      <el-button class="login-btn" type="primary" @click.prevent="handleLogin()">登录</el-button>
    </el-form>
  </div>
</template>
<script>
  export default {
    data(){
      return{
        formdata:{
          username:'',
          password:'',
        }
      }
    },
    methods:{
      //登录请求
      async handleLogin(){
        /*this.$http.post('login',this.formdata).then(res=>{
          console.log(res,'登录接口');
          //解构赋值的写法
          const {
            data,
            meta:{msg,status}
          } = res.data
          //登录成功
          /!**
           * 成功
           *1.跳转home
           * 2.提示成功
           * 失败
           * 1.提示信息
           *
          * *!/
          if(status===200){
            this.$router.push({name:'home'})
            this.$message.success(msg)
          }else {
            this.$message.error(msg)
          }
        })*/
        //es7 async+await 简化异步操作
        const res = await this.$http.post('login',this.formdata)
          console.log(res,'登录接口');
          //解构赋值的写法
          const {
            data,
            meta:{msg,status}
          } = res.data
          //登录成功
          /**
           * 成功
           * 0.保存用户token
           *1.跳转home
           * 2.提示成功
           * 失败
           * 1.提示信息
           *
          * */
          if(status===200){
            //保存token
            localStorage.setItem('token',data.token)
            this.$router.push({name:'home'})
            this.$message.success(msg)
          }else {
            this.$message.error(msg)
          }
      }
    }
  }
</script>
<style>
  .login-wrap{
    height: 100%;
    background-color: #324152;
    /*弹性盒布局:让登录窗口居中css*/
    display: flex;
    justify-content: center;
    align-items: center;
    /*让登录窗口居中css*/
  }
  .login-wrap .login-form{
    width: 400px;
    background-color: #fff;
    border-radius: 5px;
    padding: 30px;
  }
  .login-wrap .login-btn{
    width: 100%;
  }
</style>


5、home页面:

用户token校验 退出清除token

<template>
  <el-container class="container">
    <el-header class="header">
      <el-row>
        <el-col :span="4">
          <div class="grid-content bg-purple">
            <img src="../../assets/logo.png">
          </div>
        </el-col>
        <el-col :span="18" class="middle">
          <h3>超级赛亚人电商后台系统</h3>
        </el-col>
        <el-col :span="2">
          <div class="grid-content bg-purple">
            <a href="#" class="loginOut" @click.prevent="handleSignOut()">退出</a>
          </div>
        </el-col>
      </el-row>
    </el-header>
    <el-container>
      <el-aside class="aside" width="200px">
        <!--侧边栏-->
        <el-menu
        :unique-opened="true"
        >
          <!--1-->
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-setting"></i>
              <span>用户管理</span>
            </template>
              <el-menu-item index="1-1">
                <i class="el-icon-setting"></i>
                <span>用户列表</span>
              </el-menu-item>
          </el-submenu>
          <!--2-->
          <el-submenu index="2">
            <template slot="title">
              <i class="el-icon-user-solid"></i>
              <span>权限管理</span>
            </template>
            <el-menu-item index="2-1">
              <i class="el-icon-user-solid"></i>
              <span>角色列表</span>
            </el-menu-item>
            <el-menu-item index="2-2">
              <i class="el-icon-location"></i>
              <span>权限列表</span>
            </el-menu-item>
          </el-submenu>
          <!--3-->
          <el-submenu index="3">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>商品管理</span>
            </template>
            <el-menu-item index="3-1">
              <i class="el-icon-location"></i>
              <span>商品列表</span>
            </el-menu-item>
            <el-menu-item index="3-2">
              <i class="el-icon-location"></i>
              <span>分类参数</span>
            </el-menu-item>
            <el-menu-item index="3-3">
              <i class="el-icon-location"></i>
              <span>商品分类</span>
            </el-menu-item>
          </el-submenu>
          <!--4-->
          <el-submenu index="4">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>订单管理</span>
            </template>
            <el-menu-item index="4-1">
              <i class="el-icon-location"></i>
              <span>订单列表</span>
            </el-menu-item>
          </el-submenu>
          <!--5-->
          <el-submenu index="5">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>数据统计</span>
            </template>
            <el-menu-item index="5-1">
              <i class="el-icon-location"></i>
              <span>数据报表</span>
            </el-menu-item>
          </el-submenu>
        </el-menu>
      </el-aside>
      <el-main class="main">Main</el-main>
    </el-container>
  </el-container>
</template>
<script>
  export default {
    //mewVue之前触发
    beforeCreate () {
      //获取token
      const token = localStorage.getItem('token')
      //if token 有->继续渲染组件
      if (!token){
        this.$router.push({name:'login'})
      }
      //token没有->跳转登录
    },
    data(){
      return{

      }
    },
    methods:{
      handleSignOut(){
        /**
         * 1.清除token
         * 2.提示信息
         * 3.来到login组件
         * */
        localStorage.clear();
        this.$message.success("退出成功");
        this.$router.push('/login')
      }
    }
  }
</script>
<style>
  .container {
    height: 100%;
  }

  .header {
    background-color: #b3c0d1;
  }

  .aside {
    background-color: #d3dcd6
  }

  .main {
    background-color: #e9eef3;
  }

  /*头部样式*/
  .middle {
    text-align: center;
  }

  .loginOut {
    line-height: 60px;
    text-decoration: none;
  }
</style>

登录页面效果:
在这里插入图片描述home页面(注:图标乱找的 )
在这里插入图片描述

后续功能持续完善

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 01:25:52  更:2021-08-17 01:26:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 16:03:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计