动态树+数据表格+分页

前言

因为我现在做的是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>

效果图
在这里插入图片描述
总结:如有什么不懂的,欢迎评论区逛街!!!!!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值