目录
1. 🍓🍓🍓🍓准备工作
- 创建测试数据库
- 准备好后台服务接口,Moudel查询,和Book查询(支持分页)
- 后台单元测试
- 修改vue配置,使用真实环境
2. 🍓🍓🍓🍓动态树
2.1 🥭🥭在配置请求路径
在src/api/action.js中配置获取动态树数据的请求路径
export default {
//服务器
'SERVER': 'http://localhost:8080/webserver',
//登陆请求
'SYSTEM_USER_DOLOGIN': '/userMsg/userAction!login.action', //登陆
//获取动态树数据请求
'SYSTEM_MODULE_REQ': '/sysMsg/sysMsgAction!getModules.action',
//获取完整的请求地址
'getFullPath': k => { //获得请求的完整地址,用于mockjs测试时使用
return this.SERVER + this[k];
}
}
2.2 🥭🥭使用动态数据构建导航菜单
2.2.1 🥭🥭通过接口获取数据
LeftAside.vue:
![](https://i-blog.csdnimg.cn/blog_migrate/2d1c1ed08358ac8d2f8659eaf2457927.png)
🚀🚀测试,通过控制台查看数据是否正常获取:
🥭🥭2.2.3 通过后台获取的数据构建菜单导航
🥭🥭2.2.3.1 先构建一级导航菜单
LeftAside.vue:
![](https://i-blog.csdnimg.cn/blog_migrate/9be1dc5f731c9db9321397ec1b9799e4.png)
页面效果:
🥭🥭2.2.3.2 构建二级导航菜单
LeftAside.vue:
🚀🚀页面效果:
![](https://i-blog.csdnimg.cn/blog_migrate/cf0ebfb9b3930f61bdb7e97d69a55ad2.png)
2.3 🥭🥭点击菜单实现路由跳转
2.3.1🥭创建书本管理组件
t_module_vue表中已经配置了功能url,为方便,将书本管理组件定义为BookList。如果使用其他名字则需要修改功能url配置,保持一致。![](https://i-blog.csdnimg.cn/blog_migrate/eda8fd1ed9a07b5c026cbbe0bf48b8bc.png)
2.3.2🥭 配置路由
2.3.3🥭 修改LeftAside组件
2.3.4 🥭修改Main组件
3. 🍓🍓🍓🍓系统首页配置
🚀🚀首先创建一个首页组件
![](https://i-blog.csdnimg.cn/blog_migrate/47e081f7e103f38a205b03c8c9606ea1.png)
配置路由:
![](https://i-blog.csdnimg.cn/blog_migrate/6e0937ba5a650e13829a3fa8a0a5bcf8.png)
配置首页菜单:
![](https://i-blog.csdnimg.cn/blog_migrate/1cadd9ae4306528b798a6601a078c306.png)
🚀🚀菜单图标可以到官网去查找。
🚀🚀设置登录成功后默认显示系统首页:
![](https://i-blog.csdnimg.cn/blog_migrate/6d1444d45714c24e17bf70bd871dd0a6.png)
4.🍓🍓🍓🍓 表格数据显示
4.1 🥭🥭页面布局
页面上使用的面包屑,查询条件,表格,分页等空间,可以查看element-ui官网。该步骤主要关注页面布局,并没有绑定数据,编写完成后,观察页面效果。
BookList.vue:
<template>
<div style="margin-left: 15px; margin-right: 15px;">
<!--面包屑-->
<el-breadcrumb style="margin-top:15px;" separator="/">
<el-breadcrumb-item :to="{path: '/Home'}">首页</el-breadcrumb-item>
<el-breadcrumb-item>书本管理</el-breadcrumb-item>
</el-breadcrumb>
<!--查询条件-->
<el-form style="margin-top: 15px;" :inline="true" class="demo-form-inline">
<el-form-item label="书名">
<el-input placeholder="书名"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary">查询</el-button>
<el-button type="primary">新增</el-button>
</el-form-item>
</el-form>
<!--表格-->
<el-table style="width: 100%;" :border="true" max-height="550">
<el-table-column prop="id" label="编号" min-width="40" align="center"></el-table-column>
<el-table-column prop="bookname" label="名称" min-width="100" align="center"></el-table-column>
<el-table-column prop="price" label="价格" min-width="70" align="center"></el-table-column>
<el-table-column prop="booktype" label="类型" min-width="70" align="center"></el-table-column>
</el-table>
<!--分页-->
<div class="block" style="text-align:right;margin-top:10px;">
<el-pagination
:page-sizes="[10, 20, 30, 40]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400">
</el-pagination>
</div>
</div>
</template>
4.2 🥭🥭查询并在表格中显示数据
先不考虑分页,从后台接口获取数据并绑定到表格显示。
- 🥭将查询书本信息的接口配置到api/action.js中
//获取书本信息
'BOOKMSG_BOOKINFO_REQ':'/bookMsg/bookAction!getBooks.action',
-
BookList.vue组件
图一: 🚀🚀template部分:
图二: 🚀🚀script部分
![](https://i-blog.csdnimg.cn/blog_migrate/ad3d400c6d6bc7c41d093850d4f4f558.png)
export default {
name: 'BookList',
data: function() {
return {
bookname: '',
books: []
}
},
methods: {
qry: function() {
let url = this.axios.urls.BOOKMSG_BOOKINFO_REQ;
this.axios.post(url, {
bookname: this.bookname
}).then(resp => {
console.log(resp);
this.books = resp.data.data;
}).catch(error => {
console.log(error);
});
}
}
}
4.3 🥭🥭实现分页
🚀🚀template部分:
![](https://i-blog.csdnimg.cn/blog_migrate/149f6cf9187841e38f5b3396d0071809.png)
<!--分页-->
<div class="block" style="text-align:right;margin-top:10px;">
<!--
@size-chang: 定义在每页显示的记录数变化时的处理函数
@current-change:当前页码发生变化时的处理函数,如点击页码或输入一个特定页码。
:current-page:指定当前页,
:page-size:每页显示的记录数
layout: 布局,可以通过调整该项来调整显示内容
:total: 总记录数
-->
<el-pagination background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="page"
:page-sizes="[10, 20, 30, 40]"
:page-size="rows" layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
🚀🚀script部分,图一
![](https://i-blog.csdnimg.cn/blog_migrate/367385589259efd99eb3b9d651ccf90f.png)
qry: function() {
let url = this.axios.urls.BOOKMSG_BOOKINFO_REQ;
this.axios.post(url, {
bookname: this.bookname,
//分页参数
page: this.page,
rows: this.rows
}).then(resp => {
console.log(resp);
this.books = resp.data.data;
//获取总页数
this.total = resp.data.total;
}).catch(error => {
console.log(error);
});
}
🚀🚀script部分,图二:
![](https://i-blog.csdnimg.cn/blog_migrate/1a6e8dbf0206efcf3c907ae17c65c7d1.png)
//当每页显示的记录数发生变化时,设置当前页码为1,执行查询。
handleSizeChange: function(rows) {
this.rows = rows;
this.page = 1;
this.qry();
},
//当前页码发生变化时,执行查询
handleCurrentChange: function(page) {
this.page = page;
this.qry();
}
VUE3.0有兴趣的小伙伴可以去看看