实现首页的路由重定向

实现进入home页面在main那里路由跳转到welcome页面,也就是welcome页面嵌套在home页面里面

welcome是以子路由形式存在于home页面中

首先在components文件夹新建Welcome.vue文件

<template><div><h3>welcome</h3></div>
</template>
​

配置router:router>index.js

import Welcome from '../components/Welcome.vue'
{path: '/home',component: Home,redirect: '/welcome',//只要访问home就重定向到Welcomechildren: [{ path: '/welcome', component: Welcome }]}//数组中放子路由
<!-- 右侧内容主体 --><el-main><!-- 路由占位符 --><router-view></router-view></el-main>

在home.vue的el-main主体区域那里加一个路由占位符

左侧菜单改造为路由链接

router 是否使用 vue-router 的模式,启用该模式会在激活导航时以 index 作为 path 进行路由跳转 boolean false

此时在el-menu标签中加一个router属性

<!-- 侧边栏菜单区域 -->(home.vue)
​
<el-menu background-color="#333744"text-color="#fff"active-text-color="#409EFF"unique-opened:collapse="isCollapse":collapse-transition="false":router="true">//也可以直接写router<!-- 激活(点击)的文本颜色 --><!-- 一级菜单 --><el-submenu :index="item.id+''"v-for="item in menulist":key="item.id"><!-- 一级菜单模板区域 -->
​<template slot="title"><!-- 图标 --><i :class="iconsObj[item.id]"></i><!-- 文本 --><span>{{item.authName}}</span></template>
​
•            <!-- 二级菜单 -->
•       <el-menu-item   :index="subItem.id+''"•                   v-for="subItem in item.children"•                   :key="subItem.id">
•              <!-- 二级菜单模板区域 -->
​<template slot="title"><!-- 图标 --><i class="el-icon-menu"></i><!-- 文本 --><span>{{subItem.authName}}</span></template>
​
•       </el-menu-item>
•     </el-submenu>
•   </el-menu>

点击菜单栏的二级菜单用户列表跳转到了/110页面

110即为用户列表的id(二级菜单 :index="subItem.id+''")

一般我们都是跳转到path,所以我们这里对index做一下更改

:index="subItem.path"

path本来就是字符串String类型所以不需要加空字符串' '

用户列表开发

实现点击用户列表在main主题区域显示列表页面

首先,在components文件下新建一个文件夹user,user下新建文件Users.vue,此文件先写好简单框架

<template><div><h3>用户列表组件</h3></div>
</template>
​
<script>
export default {
​
}
</script>
<style lang="less" scoped>
</style>

然后,给此文件添加router路由,因为点击用户列表页面显示在main主题区域,所以要把此路由作为home的子路由

打开router下的index.js,新增以下两句

import Users from '../components/user/Users.vue'
children: [{ path: '/welcome', component: Welcome },{ path: '/users', component: Users }]

path后面是要跳转的地址要跟接口里面的path对应

最后实现效果如下,点击用户列表,在右侧主体区域展示出来

实现被点击菜单栏高亮

default-active 当前激活菜单的 index string

(el-menu属性)

若default-active=“users”,则可以实现用户列表菜单栏一直高亮。但是直接赋值某个页面是写死的,只能是赋值的那个页面高亮。我们要实现动态的更改页面,使当前点击的页面高亮,我们可以在每次点击链接时,先将对应的地址保存到sessionStorage中,然后当我们刷新页面时,把那个值从sessionStorage中再取出来,动态的赋值给el-menu中的default-active

首先,给点击链接添加一个单击事件,事件传的值就是path地址

<!-- 二级菜单 -->
<el-menu-item :index="subItem.path"v-for="subItem in item.children":key="subItem.id"@click="saveNavState(subItem.path)">

sessionStorage解读:

在编写程序过程中,用到sessionStorage方法存储一个数据,会大大方便代码的编写,使用sessionStorage创建一个本地的存储,以key/value的形式,该键值对可以直接保存在浏览器中供我们使用,sessionStorage用于临时存储同一窗口或标签页的数据,当关闭该窗口或者标签页后,该数据随之删除,如果想浏览器窗口关闭后还保留数据,则可以使用localStorage,该存储的数据会一直存在,除非自己手动删除。

常用语句就是存储,读取数据,

存储:window.sessionStorage.setItem(key,value);

读取:window.sessionStorage.getItem(key),返回value值

 // 保存链接的激活状态saveNavState (activePath) {window.sessionStorage.setItem('activePath', activePath)}

点击用户列表链接,查看application中的sessionStorage中新增activePath

②现在我们要把users取出来

先在data中定义一个数组,把path放到这里面

// 被激活的链接地址activePath: ''

然后把数组动态绑定到default-active

 <el-menu background-color="#333744"text-color="#fff"active-text-color="#409EFF"unique-opened:collapse="isCollapse":collapse-transition="false":router="true":default-active="activePath">

现在,给数组activePath动态赋值

created () {this.getMenuList()this.activePath = window.sessionStorage.getItem('activePath')//获取key},

加上上面这句,可以实现高亮,但是若再点击下一个链接不能高亮,说明它没转换过来,需要更新一下

 // 保存链接的激活状态saveNavState (activePath) {window.sessionStorage.setItem('activePath', activePath)this.activePath = activePath//使用再次赋值,更新activePath//等号右边是此方法的参数就是subItem.path}

绘制用户列表的基本UI结构

面包屑导航栏

elementUI官网找到面包屑导航栏,Breadcrumb,找到差不多样式的,复制到users.vue并做一下调整

<template><div><!-- 面包屑导航区域 --><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: '/home' }">首页</el-           breadcrumb-item>//点击首页跳转到home<el-breadcrumb-item>用户管理</el-breadcrumb-item><el-breadcrumb-item>用户列表</el-breadcrumb-item></el-breadcrumb></div>
</template>

Card卡片视图区域

<el-card><!-- 搜索与添加区域 --><el-input placeholder="请输入内容"><el-button slot="append"icon="el-icon-search"></el-button></el-input>
</el-card>
//添加卡片区域并加上一个带搜索的input输入框

但是卡片区域距离面包屑导航栏很近

assets>css>global.css添加全局样式:

.el-breadcrumb {margin-bottom: 15px;font-size: 12px;
}
.el-card {box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15) !important;
}

现在需要在input输入框的右边加一个按钮,所以要把输入框长度缩小

<el-card><el-row :gutter="20">//gutter用于指定列与列之间的距离<el-col :span="8"><!-- 搜索与添加区域 --><el-input placeholder="请输入内容"><el-button slot="append"icon="el-icon-search"></el-button></el-input></el-col><el-col :span="4"><el-button type="primary">添加用户</el-button></el-col></el-row>
//一行两列,一行一共24,input占8,button占4
</el-card>

获取用户列表数据

查阅文档

1.3.1. 用户数据列表

  • 请求路径:users

  • 请求方法:get

  • 请求参数

参数名 参数说明 备注
query 查询参数 可以为空
pagenum 当前页码 不能为空
pagesize 每页显示条数 不能为空

使用axios.get请求数据并且打印输出:

data () {return {// 获取用户列表的参数对象queryInfo: {query: '',pagenum: 1,pagesize: 2}}},
created () {this.getUserList()},
methods: {async getUserList () {const { data: res } = await this.$http.get('users', { params: this.queryInfo })console.log(res)}//第一个参数为请求地址(路径),第二个请求参数为携带三个get参数get使用params(向服务器提交三个参数),这里的$http.post实际上就是axios.post请求}

data () {return {// 获取用户列表的参数对象queryInfo: {query: '',pagenum: 1,pagesize: 2},userlist: [],total: 0}},
created () {this.getUserList()},methods: {async getUserList () {const { data: res } = await this.$http.get('users', { params: this.queryInfo })if (res.meta.status !== 200) {return this.$message.error('获取用户列表失败!')}// 返回200,请求成功//请求成功时,将请求到的数据保存到data的userlist中this.userlist = res.data.usersthis.total = res.data.totalconsole.log(res)}}

用户列表数据渲染至表格

<!-- 卡片视图区域 --><el-card><el-row :gutter="20">。。。</el-row><!-- 用户列表区域 --><el-table :data="userlist"//绑定数据来源border//添加表格边框stripe>//表格各行变色(斑马纹)<el-table-column label="姓名"//label指定当前列标题,prop指定当前列的数据prop="username"></el-table-column><el-table-column label="邮箱"prop="email"></el-table-column><el-table-column label="电话"prop="mobile"></el-table-column><el-table-column label="角色"prop="role_name"></el-table-column><el-table-column label="状态"prop="mg_state"></el-table-column><el-table-column label="操作"></el-table-column></el-table></el-card>

全局样式表global.css

.el-table {margin-top: 15px;font-size: 12px;
}

表格添加索引列

在表格最前面添加该列:

<el-table-column type="index"></el-table-column>

index表示索引

vue与elementUI电商后台管理系统笔记05相关推荐

  1. Vue+Element-UI 电商后台管理系统详细总结

    一.概述 基于 Vue 和 Element-UI 的电商后台管理系统 1.1 实现功能 用户登录/退出 用户管理 用户列表 实现用户的增删改查.分页查询以及分配角色功能 权限管理 角色列表 实现角色的 ...

  2. 【VUE项目】VUE+ElementUI电商后台管理系统

    电商后台管理系统 项目来源:https://www.bilibili.com/video/BV1x64y1S7S7?p=191&spm_id_from=333.1007.top_right_b ...

  3. Vue全家桶 - 电商后台管理系统项目开发实录(详)

    目录 1. 项目概述 1.1 电商项目基本业务概述 1.2 电商后台管理系统的功能 1.3 电商后台管理系统的开发模式(前.后端分离) 2. 项目初始化 2.1 前端项目初始化步骤 码云相关操作 2. ...

  4. Vue全家桶-电商后台管理系统项目开发

    项目效果展示: 1. 项目概述 1.1 电商项目基本业务概述 一般情况下客户使用的业务服务包括:PC端,小程序,移动web,移动app. 管理员使用的业务服务:PC后台管理端: PC后台管理端的功能 ...

  5. html全局布局 vue_基于Vue+Element的电商后台管理系统

    前言 mall项目后台管理系统的前端项目. 项目介绍 mall-admin-web是一个电商后台管理系统的前端项目,基于Vue+Element实现. 主要包括商品管理.订单管理.会员管理.促销管理.运 ...

  6. 黑马程序员课程-Vue项目实战-Element-UI——电商后台管理系统主页制作

    黑马程序员视频_主页制作 目录 一.主页布局 1.整体布局:先上下划分,再左右划分 2.主页header布局 3.左侧菜单布局:菜单分为两级,并且可以折叠 二. 通过接口获取菜单数据 1.请求预处理 ...

  7. 【Vue】实战项目:电商后台管理系统(Element-UI)(一)前后端搭建 - 登录界面 - 主页界面

    文章目录 0. 项目介绍 电商管理系统(Element-UI) 开发模式 前端技术栈 后端技术栈 1. 配置--初始化 前端项目 ① 安装 Vue 脚手架 ② 通过 Vue 脚手架创建项目 ③ 配置 ...

  8. Vue项目实战之电商后台管理系统(二) 主页模块

    前言 目录 前言 一.主页布局 1.1 整体布局 1.2 头部区域布局 1.3 左侧菜单布局 1.3.1 静态布局 1.3.2 通过axios请求拦截器来进行权限验证 1.3.3 通过axios获取左 ...

  9. Vue项目实战之电商后台管理系统(一) 用户登录模块

    目录 一.项目概述 二.项目初始化 2.1 前端项目初始化步骤 2.2 后台项目的环境安装配置 三.用户登录/登出功能实现 3.1 登录功能概述 3.1.1 登录状态保持 3.1.2 登录逻辑: 3. ...

最新文章

  1. java邮箱_java发送邮件(qq邮箱)
  2. 网络游戏:为什么失败
  3. 一种语音识别的自动控制系统及方法与流程
  4. 浏览器URL中 encodeURIComponent()加密和decodeURIComponent()解码
  5. angularJs service
  6. wxWindows 第一个Frame程序
  7. 机器人学基础–左乘和右乘
  8. java的的socket编程_javasocket编程
  9. 机械专业怎么学matlab,MATLAB在机械类专业课教学中的应用
  10. 酷狗歌词Krc批量转换工具Lrc [附转换编码DLL]
  11. linux find查找时间段文件,查找某个时间段的文件和find命令
  12. Drupal 7 自定义页面如何向自定义的主题传参
  13. Mysql支持translate函数吗_Oracle-函数-translate
  14. _,predicted=中_,的作用
  15. 计算机安装调试维修员中级习题,计算机安装调试维修员培训计划(三级)
  16. 陀螺仪重力感应(the gyroscope gravity induction)and (core Motion Framework)
  17. java创建user类在哪里_java中创建对象有哪几种方式
  18. 算法:连续邮资问题(回溯+动态规划+剪枝)
  19. 【整理】SSD的TRIM指令作用与GC关系
  20. Alien Skin Exposure2023调色滤镜插件RAW后期处理软件

热门文章

  1. objective-c与Lua的交互(一)
  2. 《啥是佩奇》怎么就刷屏了?
  3. 平板android怎么升级版本,[原创]最简单的方式为华硕平板电脑EeePad TF101升级Android 3.1教程...
  4. IDEA中HTML标签替换成Thymeleaf标签
  5. 【SpringBoot 】结合thymeleaf的一个前端表格展示的小小Demo
  6. Python:ffmpeg修改视频分辨率
  7. 使用ZXing实现二维码扫描
  8. SQL 条件匹配(一)
  9. 笔记本搭建无线路由供iPad上网 笔记本共享wifi ,w7共享wifi,w8共享wifi
  10. Photoshop 简笔效果