前言

代码效果

app.vue

<template>
	<div id="app">
		<!-- 假设为页头内容导航等...--&gt;
		<div class="routers"&gt;
			<router-link :to="item.path" v-for="item in routerLinks" :key="item.name"&gt;{{ item.name }}</router-link&gt;
		</div&gt;
		<!-- 内容区域 --&gt;
		<div class="content">
			<router-view />
		</div>
	</div>
</template>
<script>
export default {
	data() {
		return {
			routerLinks: [],
		};
	},
	created() {
		this.handleRouterLink();
	},
	methods: {
		handleRouterLink() {
			// 获取所有路由配置
			this.routerLinks = this.$router.getRoutes();
		},
	},
};
</script>

<style lang="scss" scoped>
#app {
	height: 100vh;
	display: flex;
	flex-direction: column;
}
.routers {
	display: flex;
	justify-content: space-around;
}
/* 确定内容高度,好让业务组件height:100%生效 */
.content {
	flex: 1;
}
</style>

test.vue

<!-- 表格高度自适应 -->
<template>
	<div class="wrapper">
		<!-- 查询条件 -->
		<div class="searchView">
			<div class="formItem" v-for="(item, index) in formNum" :key="index"></div>
		</div>
		<!-- 表格 -->
		<div class="tableView" :key="tableKey">
			<el-table :data="tableData" ref="myTable" style="width: 100%" :height="tableHeight">
				<el-table-column prop="date" label="日期" width="180"> </el-table-column>
				<el-table-column prop="name" label="姓名" width="180"> </el-table-column>
				<el-table-column prop="address" label="地址"> </el-table-column>
			</el-table>
		</div>
		<!-- 分页 -->
		<div class="pageView">
			<el-pagination
				:pager-count="5"
				@size-change="handleSizeChange"
				@current-change="handleCurrentChange"
				:current-page.sync="currentPage2"
				:page-sizes="[100, 200, 300, 400]"
				:page-size="100"
				layout="sizes, prev, pager, next"
				:total="1000"
			>
			</el-pagination>
		</div>
	</div>
</template>
<script>
export default {
	data() {
		return {
			// 表格key,当表格height变化时,el-table无法重新渲染,只能刷新key,强制渲染表格组件
			tableKey: 0,

			// 当前页数
			currentPage2: 1,

			// 查询条件数量
			formNum: 4,

			// 表格高度
			tableHeight: 500,

			// 表格数据
			tableData: [
				{
					date: '2016-05-02',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1518 弄',
				},
				{
					date: '2016-05-04',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1517 弄',
				},
				{
					date: '2016-05-01',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1519 弄',
				},
				{
					date: '2016-05-03',
					name: '王小虎',
					address: '上海市普陀区金沙江路 1516 弄',
				},
			],
		};
	},

	async mounted() {
		this.handleTableHeight();

        // 当浏览器大小修改时,同时动态修改表格高度
		window.onresize = this.getDebounce(this.handleTableHeight, 500);
	},
	methods: {
		// 处理表格高度修改事件
		async handleTableHeight() {
			this.tableHeight = 0;
			await this.$nextTick();
			const tableView = document.querySelector('.tableView');
			this.tableHeight = tableView.clientHeight;
			console.log('tableHeight', this.tableHeight);
			this.tableKey++;
		},

		handleSizeChange(val) {
			console.log(`每页 ${val}`);
		},
		handleCurrentChange(val) {
			console.log(`当前页: ${val}`);
		},

		// 生成一个debounce函数,避免事件频繁除法
		getDebounce(func, delay) {
			let timer = null;
			return function (...args) {
				if (timer) {
					clearTimeout(timer);
				}
				timer = setTimeout(() => {
					func.apply(this, args);
				}, delay);
			};
		},
	},
};
</script>
<style lang="scss" scoped>
/* 以下样式皆可写到全局文件中,每个页面布局基本一致 */
.wrapper {
	display: flex;
	flex-direction: column;
	height: 100%;
	.searchView {
		display: flex;
		flex-wrap: wrap;
		gap: 10px 20px;
		.formItem {
			width: 230px;
			height: 30px;
			border: 1px solid #000;
		}
	}

	.tableView {
		flex: 1;
	}
}
</style>

效果

在这里插入图片描述

思路

原文地址:https://blog.csdn.net/qq_57404736/article/details/134764844

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36328.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注