elementui Container工具栏,表格,分页布局

样式如图
在这里插入图片描述
最上边是搜索条件与操作按钮,中间是查询结果表格,下边是分页,要在浏览器大小改变时控件可以折行,但是不能被其他层遮盖,需要动态计算header与表格的高度,footer的高度设置各固定值就可以


@{
    ViewBag.Title = "学生基本信息";
    Layout = "~/Views/Shared/_vueLayout.cshtml";
}
<script src="~/Scripts/vue/dept.js"></script>
<script src="~/Scripts/vue/grade.js"></script>
<script src="~/Scripts/vue/ban.js"></script>

<div id="app">
    <el-container>
        <el-header ref="header" :height="headerHeight">
            <el-form size="mini" :inline="true" ref="headerrow">
                <el-form-item label="专业:">
                    <spec-combo v-model=frmsrh.spno></spec-combo>
                </el-form-item>
                <el-form-item label="年级:">
                    <grade-input v-model="frmsrh.grade">
                    </grade-input>
                </el-form-item>
                <el-form-item label="班级:">
                    <ban-input v-model="frmsrh.classno" v-bind:spno="frmsrh.spno" v-bind:grade="frmsrh.grade"></ban-input>
                </el-form-item>
                <el-form-item label="学号:">
                    <el-input v-model="frmsrh.stid" style="width:120px;" clearable></el-input>
                </el-form-item>
                <el-form-item label="姓名:">
                    <el-input v-model="frmsrh.name" style="width:100px;" clearable></el-input>
                </el-form-item>
                <el-form-item label="当前状态:">
                    <el-select v-model="frmsrh.changetype" placeholder="请选择" style="width:100px;">
                        <el-option v-for="item in stuflag" :key="item.value" :label="item.label" :value="item.value">
                        </el-option>
                    </el-select>
                </el-form-item>
                <el-form-item>
                    <template>
                        <el-button type="primary" icon="el-icon-search" size="mini" v-on:click="list">查询</el-button>
                        <el-button type="success" icon="el-icon-plus" size="mini" v-on:click="add">新增</el-button>
                        <el-button type="primary" icon="el-icon-download" size="mini" v-on:click="exp">导出</el-button>
                        <el-button type="success" icon="el-icon-upload2" size="mini" v-on:click="imp">导入</el-button>
                        <el-button type="warning" icon="el-icon-edit-outline" size="mini" v-on:click="batchupdate">批量修改</el-button>
                        <el-button type="warning" icon="el-icon-picture" size="mini" v-on:click="upimg">上传照片</el-button>
                    </template>
                </el-form-item>
            </el-form>
        </el-header>
        <el-main ref="maintab">
            <el-table ref="table" v-loading="table.loading" size="mini" :height="table.height"
                      :data="table.data" border>
                <el-table-column type="selection" align="center"></el-table-column>
                <el-table-column label="院系" prop="dptname" align="center" width="120" show-overflow-tooltip></el-table-column>
                <el-table-column label="专业" prop="spname" align="center" width="150" show-overflow-tooltip></el-table-column>
                <el-table-column label="年级" prop="grade" align="center" width="80"></el-table-column>
                <el-table-column label="班级" prop="class" align="center" width="80"></el-table-column>
                <el-table-column label="学号" prop="stid" align="center" width="120"></el-table-column>
                <el-table-column label="姓名" prop="name" align="center" width="100"></el-table-column>
                <el-table-column></el-table-column>
            </el-table>
        </el-main>
        <el-footer style="height:35px;">
            <el-pagination background
                           layout="total, sizes, prev, pager, next,slot"
                           v-bind:current-page="table.page"
                           v-bind:page-sizes="table.pagesize"
                           v-bind:page-size="table.rows"
                           v-bind:total="table.total"
                           v-on:size-change="pagesizechange"
                           v-on:current-change="pageindexchange">
            </el-pagination>
        </el-footer>
    </el-container>
</div>

<script>
    new Vue({
        el: '#app',
        data() {
            return {
                headerHeight: 70,
                stuflag: [{ value: '', label: '全部' }, { value: '在校', label: '在校' }, { value: '离校', label: '离校' }],
                frmsrh: {
                    spno: '',
                    grade: '',
                    classno: '',
                    stid: '',
                    name: '',
                    changetype: ''
                },
                table: {
                    loading: false,
                    height: 500,
                    data: [],
                    page: 1,
                    rows: 50,
                    pagesize: [50, 100, 150, 200, 250, 300],
                    total: 0
                }
            }
        },
        methods: {
            pagesizechange(size) {
                this.table.rows = size;
                this.list();
            },
            pageindexchange(pindex) {
                this.table.page = pindex;
                this.list();
            },
            list() {

            },
            add() {

            },
            exp() {

            },
            imp() {

            },
            batchupdate() {

            },
            upimg() {

            }
        },
        mounted() {
            this.$nextTick(function () {
                this.table.height = this.$refs.maintab.$el.clientHeight - 10;
                this.headerHeight = this.$refs.headerrow.$el.clientHeight;
                var self = this;
                window.onresize = function () {
                    self.table.height = self.$refs.maintab.$el.clientHeight - 10;
                    self.headerHeight = self.$refs.headerrow.$el.clientHeight;
                }
            })
        },
         watch: {
            frmsrh: {
                deep: true,
                handler: function (newVal, oldVal) {
                    this.table.page = 1;
                }
            }
        }
    })
</script>

注意使用watch监控frmsrh的变化,有变化时要将当前页设置为1,否则会有因为传递页数不正确查不到结果的情况

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用 ElementUI 实现响应式布局的网页示例: ```html <template> <div class="container"> <el-row :gutter="20"> <el-col :xs="24" :sm="12" :md="8" :lg="6"> <div class="card"> <img src="https://picsum.photos/200/200" alt="Sample Image"> <h2>Card Title</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce condimentum augue non libero malesuada, sit amet pellentesque leo mattis. Aliquam vitae velit eu felis consequat eleifend.</p> <a href="#">Read More</a> </div> </el-col> <el-col :xs="24" :sm="12" :md="8" :lg="6"> <div class="card"> <img src="https://picsum.photos/200/200" alt="Sample Image"> <h2>Card Title</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce condimentum augue non libero malesuada, sit amet pellentesque leo mattis. Aliquam vitae velit eu felis consequat eleifend.</p> <a href="#">Read More</a> </div> </el-col> <el-col :xs="24" :sm="12" :md="8" :lg="6"> <div class="card"> <img src="https://picsum.photos/200/200" alt="Sample Image"> <h2>Card Title</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce condimentum augue non libero malesuada, sit amet pellentesque leo mattis. Aliquam vitae velit eu felis consequat eleifend.</p> <a href="#">Read More</a> </div> </el-col> <el-col :xs="24" :sm="12" :md="8" :lg="6"> <div class="card"> <img src="https://picsum.photos/200/200" alt="Sample Image"> <h2>Card Title</h2> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce condimentum augue non libero malesuada, sit amet pellentesque leo mattis. Aliquam vitae velit eu felis consequat eleifend.</p> <a href="#">Read More</a> </div> </el-col> </el-row> </div> </template> <script> export default { name: 'ResponsiveLayout', } </script> <style> .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .card { background-color: #fff; padding: 20px; margin-bottom: 20px; text-align: center; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .card img { width: 100%; height: auto; margin-bottom: 10px; border-radius: 50%; } </style> ``` 在这个示例中,我们使用了 `el-row` 和 `el-col` 组件来实现网页布局。我们将每个卡片放在一个 `el-col` 中,并使用了 `:xs`、`:sm`、`:md` 和 `:lg` 属性来设置不同屏幕尺寸下的列宽。这样,当用户在不同的设备上访问网站时,网页会自动调整布局,以适应不同的屏幕尺寸。 除了 `el-row` 和 `el-col` 组件之外,我们还使用了一些简单的 CSS 样式来设置卡片的样式。我们使用了 `max-width` 属性来设置容器的最大宽度,并使用 `margin` 和 `padding` 属性来设置容器的外边距和内边距。我们还使用了 `box-shadow` 属性来为卡片添加投影效果,并为卡片图片添加了圆角。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值