Element-案例-脚本页面布局

news2024/11/18 16:41:34

案例需求:

根据页面原型完成员工管理页面开发,并通过Axios完成数据异步加载

 步骤

  • 创建页面,完成页面的总体布局规划
  • 布局中各个组件的实现
  • 列表数据的异步加载,并渲染展示

1.创建页面,完成页面的总体布局规划

分析案例中的展示实例可以知道该页面的布局为header、aside、main三部分构成:在Element官网中的Container 布局容器中可找到对应的布局格式,将将代码复制即可。具体关键代码如下:

<!-- 定义HTML页面模板 -->
<template>
    <div>
        <el-container style="height: 700px; border: 1px solid #030101">
            <el-header style="font-size: 40px;background-color:rgb(238, 241, 246)">tlias智能学习辅助系统</el-header>
            <el-container>
                <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
                    <el-menu :default-openeds="['1', '3']">
                        <el-submenu index="1">
                            <template slot="title"><i class="el-icon-message"></i>班级学员管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="1-1">班级管理</el-menu-item>
                                <el-menu-item index="1-2">学员管理</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                        <el-submenu index="2">
                            <template slot="title"><i class="el-icon-message"></i>系统信息管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="2-1">部门管理</el-menu-item>
                                <el-menu-item index="2-2">员工管理</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                        <el-submenu index="3">
                            <template slot="title"><i class="el-icon-message"></i>数据统计管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="3-1">员工信息统计</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                    </el-menu>
                </el-aside>
                <el-main>
                    <el-table :data="tableData">
                        <el-table-column prop="name" label="姓名" width="140">
                        </el-table-column>
                        <el-table-column prop="image" label="图像" width="120">
                        </el-table-column>
                        <el-table-column prop="gender" label="性别" width="120">
                        </el-table-column>
                        <el-table-column prop="job" label="职位">
                        </el-table-column>
                        <el-table-column prop="entrydata" label="入职日期">
                        </el-table-column>
                        <el-table-column prop="updatetime" label="最后操作时间">
                        </el-table-column>
                        <el-table-column label="操作">
                            <el-button type="primary" size="mini">编辑 </el-button>
                            <el-button type="danger" size="mini">删除 </el-button>
                        </el-table-column>
                    </el-table>
                </el-main>
            </el-container>
        </el-container>
    </div>
</template>

<!-- 定义Vue当中的数据模型以及方法 -->
<script>
export default {
    data() {
        return {
            tableData: [

            ]


        }
    }
}
</script>

<!-- 定义CSS样式 -->
<style></style>

具体的运行结果为:

 ps:在上述代码中不太清楚<el-button>标签中type属性值所代表的具体含义

2.布局中各个组件的实现

对于组件的实现,我们首先要明确案例中的都是声明类型的组件,确定好组件的类型之后,在Element中去选择我们需要的样式即可。

注意

Vue要求所有在模板中使用的属性或方法必须在组件实例的 data 选项中进行声明或初始化。即模块中使用的属性和方法都需要在数据模型中进行设置,否则页面无法成功加载。

具体关键代码如下:(代码中的注释具有一定的参考价值)

<!-- 定义HTML页面模板 -->
<template>
    <div>
        <el-container style="height: 700px; border: 1px solid #030101">
            <el-header style="font-size: 40px;background-color:rgb(238, 241, 246)">tlias智能学习辅助系统</el-header>
            <el-container>
                <el-aside width="200px" style="background-color: rgb(238, 241, 246)">
                    <el-menu :default-openeds="['1', '3']">
                        <el-submenu index="1">
                            <template slot="title"><i class="el-icon-message"></i>班级学员管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="1-1">班级管理</el-menu-item>
                                <el-menu-item index="1-2">学员管理</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                        <el-submenu index="2">
                            <template slot="title"><i class="el-icon-message"></i>系统信息管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="2-1">部门管理</el-menu-item>
                                <el-menu-item index="2-2">员工管理</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                        <el-submenu index="3">
                            <template slot="title"><i class="el-icon-message"></i>数据统计管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="3-1">员工信息统计</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                    </el-menu>
                </el-aside>
                <el-main>
                    <!-- 表单 -->
                    <!-- 整个表单帮当的数据模型为searchForm -->
                    <!-- Vue要求所有在模板中使用的属性或方法必须在组件实例的 data 选项中进行声明或初始化。 -->
                    <!-- 因此运行之前一定声明searchForm否则无法运行 -->
                    <el-form :inline="true" :model="searchForm" class="demo-form-inline">
                        <el-form-item label="审批人">
                            <el-input v-model="searchForm.name" placeholder="姓名"></el-input>
                        </el-form-item>
                        <el-form-item label="性别">
                            <el-select v-model="searchForm.gender" placeholder="性别">
                                <el-option label="男" value="1"></el-option>
                                <el-option label="女" value="2"></el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="入职日期">
                            <!-- 使用日期选择器 -->
                            <!-- 由于包含开始时间和结束时间 -->
                            <!-- 因次数据模型中entrydata为数组类型的数据 -->
                            <el-date-picker v-model="searchForm.entrydata" type="daterange" range-separator="至"
                                start-placeholder="开始日期" end-placeholder="结束日期">
                            </el-date-picker>
                        </el-form-item>
                        <el-form-item>
                            <el-button type="primary" @click="onSubmit">查询</el-button>
                        </el-form-item>
                    </el-form>
                    <!-- 表格 -->
                    <el-table :data="tableData" border>
                        <el-table-column prop="name" label="姓名" width="140">
                        </el-table-column>
                        <el-table-column prop="image" label="图像" width="120">
                        </el-table-column>
                        <el-table-column prop="gender" label="性别" width="120">
                            <span v-if="gender = 1">男</span>
                            <span v-else-if="gender = 2">女</span>
                        </el-table-column>
                        <el-table-column prop="job" label="职位">
                        </el-table-column>
                        <el-table-column prop="entrydata" label="入职日期">
                        </el-table-column>
                        <el-table-column prop="updatetime" label="最后操作时间">
                        </el-table-column>
                        <el-table-column label="操作">
                            <el-button type="primary" size="mini">编辑 </el-button>
                            <el-button type="danger" size="mini">删除 </el-button>
                        </el-table-column>
                    </el-table>
                    <br>
                    <!-- 分页条 -->
                    <div class="block">
                        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                            :current-page="currentPage4" :page-sizes="[100, 200, 300, 400]" :page-size="100"
                            layout="total, sizes, prev, pager, next, jumper" :total="400">
                        </el-pagination>
                    </div>
                </el-main>
            </el-container>
        </el-container>
    </div>
</template>

<!-- 定义Vue当中的数据模型以及方法 -->
<script>
export default {
    data() {
        return {
            tableData: [
                {
                    "name": "hkm",
                    "image": "",
                    "gender": "1",
                    "job": "高贵的打工人",

                }
            ],
            searchForm: {
                user: "",
                region: "",
                entrydata: [],
            }


        }
    },
    methods: {
        onSubmit() {
            alert("进行查询数据")
        },
        handleSizeChange(val) {
            alert('数据显示容量为:' + val);
        },
        handleCurrentChange(val) {
            alert('当前页码数据为:' + val);
        }
    }
}
</script>

<!-- 定义CSS样式 -->
<style></style>

运行结果如下:

 3.列表数据的异步加载,并渲染展示

异步加载的实现需要通过Axios实现,在Vue项目中安装Axios:npm install axios

 安装完成之后,在需要使用Axios的页面中引入Axios

 思考在什么时候需要发送异步请求?

只需要在Vue当中的勾子方法中来发送请求,如此,只要vue对象一创建挂载完成就会发送异步请求,加载数据,然后将加载得到的数据赋值给tableDAta对象就可以渲染展现出来了

最后具体关键代码如下:(由于教学中提供的url地址失效,所以数据暂未填充)

<!-- 定义HTML页面模板 -->
<template>
    <div>
        <el-container style="height: 700px; border: 1px solid #030101">
            <el-header style="font-size: 40px;background-color:rgb(238, 241, 246)">tlias智能学习辅助系统</el-header>
            <el-container>
                <el-aside width="230px" style="border:1px solid #030101">
                    <el-menu :default-openeds="['1', '3']">
                        <el-submenu index="1">
                            <template slot="title"><i class="el-icon-message"></i>班级学员管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="1-1">班级管理</el-menu-item>
                                <el-menu-item index="1-2">学员管理</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                        <el-submenu index="2">
                            <template slot="title"><i class="el-icon-message"></i>系统信息管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="2-1">部门管理</el-menu-item>
                                <el-menu-item index="2-2">员工管理</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                        <el-submenu index="3">
                            <template slot="title"><i class="el-icon-message"></i>数据统计管理</template>
                            <el-menu-item-group>
                                <el-menu-item index="3-1">员工信息统计</el-menu-item>
                            </el-menu-item-group>
                        </el-submenu>
                    </el-menu>
                </el-aside>
                <el-main>
                    <!-- 表单 -->
                    <!-- 整个表单帮当的数据模型为searchForm -->
                    <!-- Vue要求所有在模板中使用的属性或方法必须在组件实例的 data 选项中进行声明或初始化。 -->
                    <!-- 因此运行之前一定声明searchForm否则无法运行 -->
                    <el-form :inline="true" :model="searchForm" class="demo-form-inline">
                        <el-form-item label="审批人">
                            <el-input v-model="searchForm.name" placeholder="姓名"></el-input>
                        </el-form-item>
                        <el-form-item label="性别">
                            <el-select v-model="searchForm.gender" placeholder="性别">
                                <el-option label="男" value="1"></el-option>
                                <el-option label="女" value="2"></el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="入职日期">
                            <!-- 使用日期选择器 -->
                            <!-- 由于包含开始时间和结束时间 -->
                            <!-- 因次数据模型中entrydata为数组类型的数据 -->
                            <el-date-picker v-model="searchForm.entrydata" type="daterange" range-separator="至"
                                start-placeholder="开始日期" end-placeholder="结束日期">
                            </el-date-picker>
                        </el-form-item>
                        <el-form-item>
                            <el-button type="primary" @click="onSubmit">查询</el-button>
                        </el-form-item>
                    </el-form>
                    <!-- 表格 -->
                    <el-table :data="tableData" border>
                        <el-table-column prop="name" label="姓名" width="140">
                        </el-table-column>
                        <el-table-column prop="image" label="图像" width="120">
                            <template slot-scope="scope">
                                <img :src="scope.row.image" width="1000px" height="70px">
                            </template>
                        </el-table-column>
                        <el-table-column prop="gender" label="性别" width="120">
                            <span v-if="gender = 1">男</span>
                            <span v-else-if="gender = 2">女</span>
                        </el-table-column>
                        <el-table-column prop="job" label="职位">
                        </el-table-column>
                        <el-table-column prop="entrydata" label="入职日期">
                        </el-table-column>
                        <el-table-column prop="updatetime" label="最后操作时间">
                        </el-table-column>
                        <el-table-column label="操作">
                            <el-button type="primary" size="mini">编辑 </el-button>
                            <el-button type="danger" size="mini">删除 </el-button>
                        </el-table-column>
                    </el-table>
                    <br>
                    <!-- 分页条 -->
                    <div class="block">
                        <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
                            :current-page="currentPage4" :page-sizes="[100, 200, 300, 400]" :page-size="100"
                            layout="total, sizes, prev, pager, next, jumper" :total="400">
                        </el-pagination>
                    </div>
                </el-main>
            </el-container>
        </el-container>
    </div>
</template>

<!-- 定义Vue当中的数据模型以及方法 -->
<script>
import axios from 'axios';
export default {
    data() {
        return {
            tableData: [
            ],
            searchForm: {
                user: "",
                region: "",
                entrydata: [],
            }


        }
    },
    methods: {
        onSubmit() {
            alert("进行查询数据")
        },
        handleSizeChange(val) {
            alert('数据显示容量为:' + val);
        },
        handleCurrentChange(val) {
            alert('当前页码数据为:' + val);
        },
        mounted() {
            // 发送异步请求,获取数据
            axios.get("").then((result) => {
                this.tableData = result.data.data;
            })// 此处url地址我还没有创建


        }
    }
}
</script>

<!-- 定义CSS样式 -->
<style></style>

最终的运行结果为:

 最重要的自己动手做

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/733898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第十三天 | 二叉树系列4

二叉树系列4 617 合并二叉树重点代码随想录的代码我的代码(晚上理解后自己编写) 700 二叉搜索树中的搜索未看解答自己编写看了解答后&#xff0c;精简了两个判断的写法重点代码随想录的代码我的代码(晚上理解后自己编写) 98 验证二叉搜索树重点看到二叉搜索树&#xff0c;就要想…

rust 自动化测试、迭代器与闭包、智能指针、无畏并发

编写测试可以让我们的代码在后续迭代过程中不出现功能性缺陷问题&#xff1b;理解迭代器、闭包的函数式编程特性&#xff1b;Box<T>智能指针在堆上存储数据&#xff0c;Rc<T>智能指针开启多所有权模式等&#xff1b;理解并发&#xff0c;如何安全的使用线程&#x…

静态路由实验

目录 第一步&#xff1a; 第二步&#xff1a; 端口IP配置方法 环回接口IP配置方法 第三步&#xff1a; 第四步&#xff1a; 第一步&#xff1a; 先进行子网划分 192.168.1.0 24 子网划分 需要13个广播域 5个网段——子网划分 192.168.1.0 24 192.168.1.000 00000 27 192.…

数据结构一:绪论

一、绪论 数据结构是计算机科学中的一门基础课程&#xff0c;研究数据的存储、组织和管理方法&#xff0c;以及在这些数据上进行各种操作的算法和技术。掌握数据结构和算法是编程中非常重要的基础&#xff0c;对于实现高效、可靠的程序至关重要。常见的数据结构包括数组、链表、…

雅思口语考试时长多少分钟?

雅思口语考试是单独考的&#xff0c;对于第一次考雅思的同学来说&#xff0c;了解雅思考试的时长才能更好的备考雅思&#xff0c;那么雅思口语考试时长多久呢&#xff1f; 一、雅思口语考试时长 雅思口语考试时长一般为11-14分钟 第一段约4-5分钟&#xff0c;会面问候一番&am…

java项目之高校信息资源共享平台(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的高校信息资源共享平台。技术交流和部署相关看文末&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

DynaSLAM 2018论文翻译

Dynaslam:动态场景下的跟踪、建图和图像修复 摘要-场景刚性假设是SLAM算法的典型特征。这种强假设限制了大多数视觉SLAM系统在人口稠密的现实环境中的使用&#xff0c;而这些环境是服务机器人或自动驾驶汽车等几个相关应用的目标。 在本文中&#xff0c;我们提出了一个基于ORB…

学习react,复制了一个C站Civitai

苦肝两个多月&#xff0c;终于复制了一个C站&#xff0c;也就是现在最热门的AI绘画社区Civitai。 来看看效果图吧&#xff01; 技术栈介绍 我还是一个菜鸡&#xff0c;所以不像c站那样用了各种技术。 目前只是为了展示数据&#xff0c;我的Civitai简单技术栈如下 前端&…

Java17:IO流

一&#xff1a;File类&#xff1a; 1.File类的理解&#xff1a; 1.File类的一个对象&#xff0c;代表一个文件或一个文件目录&#xff08;俗称&#xff1a;文件夹&#xff09; 2.File类声明在java.io包下 3.File类中涉及到关于文件或文件目录的创建,删除&#xff0c;重命名…

仙境传说RO:添加自定义道具

仙境传说RO&#xff1a;添加自定义道具 大家好&#xff0c;我是艾西今天和大家聊一下仙境传说RO怎么添加自定义道具。在我们开服时加入一些道具模组等往往会让我们的服务器更有特色以及消费点&#xff0c;那么让我们直接进入正题开始操作&#xff1a;&#xff08;此处我们讲的…

k8s集群安装Istio过程记录及问题总结

目录 一、介绍二、部署Helm三、部署Istio部署官方示例 Bookinfo 四、部署KaliBug 记录部署Bookinfo demo失败 一、介绍 这篇文章记录一下k8s集群安装Helm、Istio 和 Kiali&#xff0c;方便学习相关概念。 前提需要k8s集群&#xff1a; 可参考&#xff1a;Arm64架构(MacBookPr…

cmake流程控制--循环

目录 for循环 普通方式 demo cmake3.17中添加了一种特殊的形式,可以在一次循环多个列表,其形式如下: demo 类似python语言的for循环 demo while循环 demo cmake跳出循环(break)和继续下次循环(continue) demo block()和endblock()命令定义的块内也是允许break()和c…

Windows下 Hexdump查看hex文件

链接 &#xff1a; https://www.di-mgt.com.au/hexdump-for-windows.html C:\hexdump-2.0.2 下载解压&#xff0c;以管理员权限拷贝至C:\Windows 便可使用查看命令

蓝牙定位系统|蓝牙网关定位和蓝牙Beacon定位的区别有哪些?

作为室外定位向室内环境的延伸&#xff0c;为了解决室外定位导航“最后一公里”的问题&#xff0c;室内定位领域的科技公司和研究机构也做出了很多的努力。目前市场主流的是基于蓝牙网关、蓝牙Beacon的室内定位方案&#xff0c;经常会有客户问到&#xff0c;这两种方案有什么区…

STL好难(7):优先级队列(priority_queue)与仿函数

目录 1.优先级队列的介绍&#xff1a; 2.priority_queue的函数接口 3.仿函数&#xff08;函数对象&#xff09;的简单理解 4.priority_queue的模拟实现&#xff1a; 1.优先级队列的介绍&#xff1a; 点击查看priority_queue的文档介绍 1. 优先队列是一种容器适配器&#x…

默认成员函数

前文提要 本文全文以日期类为例 先简单写一个日期类 class Data{ public:private:int _year;int _month;int _day; };且补充一个小知识 数据类型的划分 内置类型&#xff1a;是编程语言提供的基本数据类型&#xff0c;例如整数、浮点数、字符、布尔值 自定义类型&#xff1…

FreeRTOS实时操作系统(十二)事件标志组

系列文章目录 文章目录 系列文章目录事件标志组事件标志组API函数实验测试 事件标志组 事件标志位&#xff1a;用一个位来表示事件是否可以发生。 事件标志组是一组事件标志位的集合 特点&#xff1a; 1.每一个位表示一个事件&#xff08;高8位不是&#xff09; 2.每一位事件…

Java的异常Exception

异常 1、异常概述与异常体系结构 1.1、异常概述 异常&#xff1a;在Java语言中&#xff0c;将程序执行中发生的不正常情况称为“异常”&#xff08;开发过程中的语法错误和逻辑错误不是异常&#xff09; Java程序在执行过程中所发生的异常事件可分为两类&#xff1a; Erro…

装饰器模式:通过剖析Java IO类库源码学习装饰器模式

我们通过剖析Java IO类的设计思想&#xff0c;再学习一种新的结构型模式&#xff0c;装饰器模式。它的代码结构跟桥接模式非常相似&#xff0c;不过&#xff0c;要解决的问题却大不相同。 Java IO类库非常庞大和复杂&#xff0c;有几十个类&#xff0c;负责IO数据的读取…

Appium: Windows系统桌面应用自动化测试(三) 【脚本操作】

Appium: Windows系统桌面应用自动化测试 【脚本操作】 一、常用操作1、添加被测程序1.1示例一&#xff1a;通过程序路径指定应用程序&#xff0c;例如指定写字板程序路径。1.2示例二&#xff1a;通过程序ID指定应用程序&#xff0c;例如指定计算器ID。1.3 应用程序ID&#xff0…