前言
因为我现在做的是vue的一个小项目,就是界面的小功能,先看一下前面做的类容
https://blog.csdn.net/qq_46964039/article/details/108241801
需要的数据表
可以使用我提供的数据库表,也可以使用自己的数据表
DROP TABLE IF EXISTS `t_book_vue`;
CREATE TABLE `t_book_vue` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`bookname` varchar(50) NOT NULL,
`price` float NOT NULL,
`booktype` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COMMENT='书本信息表';
/*Data for the table `t_book_vue` */
insert into `t_book_vue`(`id`,`bookname`,`price`,`booktype`) values (1,'西游记',100.02,'名著'),(2,'红楼梦',110.08,'名著'),(3,'三国演义',121.12,'名著'),(4,'遮天',130.9,'玄幻'),(5,'凡人修仙传',200,'修仙'),(6,'倚天屠龙记',150.16,'武侠'),(7,'斗破苍穹',115.07,'玄幻'),(8,'超级兵王',145,'言情'),(9,'武极天下',45.55,'玄幻'),(10,'聊斋志异',100.12,'玄幻'),(11,'永生',110.11,'玄幻'),(12,'武动乾坤',90.89,'玄幻'),(13,'完美世界',100,'玄幻'),(14,'万域之王',56.5,'玄幻'),(15,'西游记',100.02,'名著'),(16,'红楼梦',110.08,'名著'),(17,'三国演义',121.12,'名著'),(18,'遮天',130.9,'玄幻'),(19,'凡人修仙传',200,'修仙'),(20,'倚天屠龙记',150.16,'武侠'),(21,'斗破苍穹',115.07,'玄幻'),(22,'超级兵王',145,'言情'),(23,'武极天下',45.55,'玄幻'),(24,'聊斋志异',100.12,'玄幻'),(25,'永生',110.11,'玄幻'),(26,'武动乾坤',90.89,'玄幻'),(27,'完美世界',100,'玄幻'),(28,'万域之王',56.5,'玄幻'),(32,'Java',1000,'修仙'),(33,'娃哈哈',100,'玄幻');
/*Table structure for table `t_module_vue` */
DROP TABLE IF EXISTS `t_module_vue`;
CREATE TABLE `t_module_vue` (
`id` int(11) NOT NULL COMMENT '唯一标识',
`pid` int(11) NOT NULL COMMENT '父ID',
`text` varchar(50) NOT NULL,
`icon` varchar(30) DEFAULT NULL,
`url` varchar(50) DEFAULT NULL,
`sort` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_module_vue` */
insert into `t_module_vue`(`id`,`pid`,`text`,`icon`,`url`,`sort`) values (10,-1,'书本管理','el-icon-notebook-2','',1),(11,-1,'订单管理','el-icon-s-order','',2),(12,-1,'系统管理','el-icon-setting','',3),(1001,10,'新增书本',NULL,'/book/AddBook',4),(1002,10,'书本管理',NULL,'/book/BookList',5),(1101,11,'订单管理','','/OrderList',6),(1102,11,'订单统计',NULL,'/OrderStatistics',7),(1201,12,'用户管理',NULL,'/UserManager',8),(1202,12,'权限管理',NULL,'/AuthManager',10),(1203,12,'字典管理',NULL,'/DictList',11);
/*Table structure for table `t_user_vue` */
DROP TABLE IF EXISTS `t_user_vue`;
CREATE TABLE `t_user_vue` (
`id` varchar(36) NOT NULL COMMENT '唯一标识',
`username` varchar(40) NOT NULL COMMENT '登录账号',
`password` varchar(40) NOT NULL COMMENT '登录密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `t_user_vue` */
通过连接后台和数据,把死的数据变成活的
实现的效果
菜单栏是属于leftAside.vue中的,代码块
<template>
<!-- 页面加载的时候动态树就要显示出来 -->
<el-menu router :default-active="$router.path" class="el-menu-vertical-demo" background-color="#334157"
text-color="#fff" active-text-color="#ffd04b" :collapse="leftCollapsed">
<div class="logobox">
<img class="logoimg" src="../assets/img/logo.png"/>
</div>
<el-menu-item index="/Main">
<i class="el-icon-s-home"></i>
<span slot="title">首页</span>
</el-menu-item>
<!--使用v-for指令进行遍历 -->
<el-submenu v-for="node in treeNodes"
:key="'key-'+node.id"
:index="'index-'+node.id">
<template slot="title">
<i :class="node.icon"></i>
<span>{{node.text}}</span>
</template>
<!--使用v-for指令进行遍历 -->
<el-menu-item v-for="node in node.children"
:key="'key-'+node.id"
:index="node.url">
<i :class="node.icon"></i>
<span slot="title">{{node.text}}</span>
</el-menu-item>
</el-submenu>
</el-menu>
</template>
<script>
export default {
name:'LeftAside',
props:['leftCollapsed'],
data:function(){
return{
treeNodes:[]
}
},
created:function(){
/* 使用let进行声明 避免数据污染 */
let params={
'methodName':'queryTreeNode'
};
let url=this.axios.urls.SYSTEM_MODULE_TREENODE;
this.axios.get(url,{
params:params,
}).then(resp=>{
this.treeNodes=resp.data.data;
console.log(this.treeNodes);
}).catch(resp=>{
});
//配置首页默认打开
this.$router.push('/Main');
}
}
</script>
<style>
.el-menu-vertical-demo:not(.el-menu--collapse) {
width: 240px;
min-height: 400px;
}
.el-menu-vertical-demo:not(.el-menu--collapse) {
border: none;
text-align: left;
}
.el-menu-item-group__title {
padding: 0px;
}
.el-menu-bg {
background-color: #1f2d3d !important;
}
.el-menu {
border: none;
}
.logobox {
height: 40px;
line-height: 40px;
color: #9d9d9d;
font-size: 20px;
text-align: center;
padding: 20px 0px;
}
.logoimg {
height: 40px;
}
</style>
登录之后跳转到主界面,默认打开的是首页
子菜单点击跳转事件
其他的子菜单的跳转
写booklist界面的样式
注:样式可以去element的官网找,然后进行修改,改成自己想要的样子
代码块
<template>
<div>
<el-breadcrumb separator="/" style="padding-top: 20px;">
<el-breadcrumb-item :to="{ path: '/Home' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>书本管理</el-breadcrumb-item>
</el-breadcrumb>
<!-- 搜索框 -->
<el-form :inline="true" class="demo-form-inline" style="margin-top: 20px;">
<el-form-item label="书本名称">
<el-input v-model="bookname"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="query(1)">查询</el-button>
</el-form-item>
</el-form>
<!-- 表格 -->
<el-table :data="result" style="width: 100%;" :border="true" max-height="550">
<el-table-column prop="id" label="书本编号" min-width="30" align="center"></el-table-column>
<el-table-column prop="bookname" label="书本名称" min-width="60" align="center"></el-table-column>
<el-table-column prop="price" label="书本价格" min-width="30" align="center"></el-table-column>
<el-table-column prop="booktype" label="书本类型" min-width="60" align="center"></el-table-column>
</el-table>
<!-- 分页 -->
<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>
</template>
<script>
export default {
data:function() {
return {
bookname:null,
result:[],
total:0,
page:1,
rows:10
}
},
methods:{
query:function(){
if(null!=page){
this.page=page;
}
let url=this.axios.urls.BOOK_QUERY_PAGER;
let params={
bookname:this.bookname,
methodName:'queryBookPager',
page:this.page,
rows:this.rows
}
this.axios.post(url,params).then(resp=>{
let data=resp.data;
//获取查询结果
this.result=data.data.rows;
//获取总记录数
this.result=data.data.total;
}).catch(resp=>{
});
},
//改变每页显示条数所触发的事件
handleSizeChange:function(rows){
this.rows=rows;
this.page=1;
this.query(null);
},
//点击分页按钮所触发的事件
handleCurrentChange:function(page){
console.log(page);
this.page=page;
this.query(null);
}
}
}
</script>
<style>
</style>
效果图
总结:如有什么不懂的,欢迎评论区逛街!!!!!!