Vue开发实例(十一)用户列表的实现与操作

用户列表的实现与操作

  • 一、创建用户页面和路由
  • 二、表格优化
    • 1、表头自定义
    • 2、表格滚动
    • 3、加入数据索引
    • 4、利用插槽自定义显示
  • 三、功能
    • 1、查询功能
    • 3、增加
    • 4、删除
    • 5、修改

一、创建用户页面和路由

  1. 创建用户页面

src/components/Main 下创建文件夹user,创建文件UserList.vue,文件内容如下:

页面中数据的请求代码:

  • 定义方法getUserData,使用axios 去请求数据,并将请求的数据设置给userData。
  • 在created钩子函数中调用getUserData方法。
<template><el-table:data="userData"style="width: 100%"border:default-sort="{ prop: 'date', order: 'descending' }"><el-table-column prop="date" label="日期" sortable width="180"></el-table-column><el-table-column prop="name" label="姓名" sortable width="180"></el-table-column><el-table-column prop="address" label="地址"> </el-table-column></el-table>
</template><script>
export default {name: "UserList",data() {return {userData: [],};},methods: {getUserData() {this.$axios.post("/post/userList").then((res) => {this.userData = res.data.userData;});},},created() {this.getUserData();},
};
</script><style scoped>
.el-table {width: 100%;height: auto;
}
</style>
  1. 在之前使用的mockjs中,将菜单数据进行修改,然后加入用户管理的数据
Mock.mock('/post/menuList', 'get', function () {const menu_data = [{name: '用户管理',icon: 'el-icon-user',path: '/index/userList',component: 'user/UserList'},{name: '一级菜单1',icon: 'el-icon-location',path: '/index/menu1',component: 'Main1'},{name: '一级菜单2',icon: 'el-icon-document',path: '/index/menu2',component: 'Main2'}]return {menu_data}
});Mock.mock('/post/userList', 'post', function () {const userData = [{date: "2022-05-02",name: "牛3号",address: "北京市XXXXXX路1号",},{date: "2022-05-04",name: "牛4号",address: "北京市XXXXXX路2号",},{date: "2022-05-01",name: "牛5号",address: "北京市XXXXXX路3号",},]return {userData}
});

页面效果
在这里插入图片描述

二、表格优化

1、表头自定义

  1. el-table 增加属性 header-row-class-name 值为 table_header_class
  2. 设置样式,注意使用:/deep/ .table-header-class th

参考代码:

<template><el-table:data="userData"style="width: 100%"border:default-sort="{ prop: 'date', order: 'descending' }"header-row-class-name="table-header-class"><el-table-column prop="date" label="日期" sortable width="180"></el-table-column><el-table-column prop="name" label="姓名" sortable width="180"></el-table-column><el-table-column prop="address" label="地址"> </el-table-column></el-table>
</template><script>
export default {name: "UserList",data() {return {userData: [],};},methods: {getUserData() {this.$axios.post("/post/userList").then((res) => {this.userData = res.data.userData;});},},created() {this.getUserData();},
};
</script><style scoped>.el-table {width: 100%;height: auto;
}/deep/ .table-header-class th{background-color: #91a8b1 !important;color: white;
}
</style>

页面效果
在这里插入图片描述

2、表格滚动

如果数据过多则需要加入表格滚动,否则是外部滚动很难看,这种情况处理起来比较简单,在el-table加入max-height属性即可,比如我设置值为500px
在这里插入图片描述

效果展示
在这里插入图片描述

3、加入数据索引

加入数据索引
给表格加上一列即可,设置 type=“index”

<el-table-column type="index" width="50"></el-table-column>

在这里插入图片描述

4、利用插槽自定义显示

让数据看起来更显眼、分类更明确,比如 userData 加了tag,表示地址是工作地址,还是家

<el-table-column prop="tag" label="标签"></el-table-column>

页面效果
在这里插入图片描述
只加个标签的话,很平淡,我们用插槽试一下

<el-table-column prop="tag" label="标签"><template slot-scope="scope"><el-tag:type="scope.row.tag === '家' ? 'primary' : 'success'"disable-transitions>{{ scope.row.tag }}</el-tag></template></el-table-column>

页面效果
在这里插入图片描述

三、功能

1、查询功能

  1. 页面添加搜索框和搜索按钮,在table的前面加入代码
  2. 在data里面定义search_name,对应el-input的v-model

userList代码

<template><div id="button_div"><el-inputid="search-input"size="small"label-width="100px"prefix-icon="el-icon-search"placeholder="请输入名字..."v-model="search_name"style="height: auto; width: 20%"></el-input>&nbsp;<el-buttontype="primary"size="small"class="search-button"@click="search"style="height: auto">搜索</el-button><el-table:data="userData"style="width: 100%"border:default-sort="{ prop: 'date', order: 'descending' }"header-row-class-name="table-header-class"class="custom-table-height"max-height="500px"><el-table-column type="index" width="50"> </el-table-column><el-table-column prop="date" label="日期" sortable width="180"></el-table-column><el-table-column prop="name" label="姓名" sortable width="180"></el-table-column><el-table-column prop="address" label="地址"> </el-table-column><el-table-column prop="tag" label="标签"><template slot-scope="scope"><el-tag:type="scope.row.tag === '家' ? 'primary' : 'success'"disable-transitions>{{ scope.row.tag }}</el-tag></template></el-table-column></el-table></div>
</template><script>
export default {name: "UserList",data() {return {userData: [],search_name: "",};},methods: {getUserData() {this.$axios.post("/post/userList").then((res) => {this.userData = res.data.userData;});},search() {console.log('this.search_name',this.search_name)this.$axios.post("/post/searchUser", { name: this.search_name }).then((res) => {console.log('name===',name)this.userData = res.data.userData;});},},created() {this.getUserData();},
};
</script><style scoped>
/* .el-table {width: 100%;height: 300px !important;
} *//deep/ .table-header-class th {background-color: #91a8b1 !important;color: white;
}
.custom-table-height {height: auto !important; /* 或指定一个固定高度,例如 400px */
}
</style>

mockjs代码

const userData = [{date: "2022-05-02",name: "牛3号",address: "北京市XXXXXX路1号",tag: '家'},{date: "2022-05-04",name: "牛4号",address: "北京市XXXXXX路2号",tag: '家'},{date: "2022-05-01",name: "牛5号",address: "北京市XXXXXX路3号",tag: '家'},
]
Mock.mock('/post/searchUser', 'post', function (param) {console.log('param',param.body);let body = JSON.parse(param.body);let name = body.name;let newData = []if (name) {newData = userData.filter((item) => {console.log('*******',item.name.indexOf(name))return item.name.indexOf(name) > -1;})console.log('eeee',newData)} else {newData = userData;console.log('eeee2',newData)}return {userData: newData}
});

测试如下
在这里插入图片描述

3、增加

4、删除

5、修改


休息一会,继续补充~

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

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

相关文章

Java ZooKeeper-RocketMQ 面试题

Java ZooKeeper-RocketMQ 面试题 前言1、谈谈你对ZooKeeper的理解 &#xff1f;2、Zookeeper的工作原理&#xff08;Zab协议&#xff09;3、谈谈你对分布式锁的理解&#xff0c;以及分布式锁的实现&#xff1f;4、 zookeeper 是如何保证事务的顺序一致性的&#xff1f;5、 zook…

设计模式之策略模式详解

目录 什么是策略模式 应用场景 业务场景实现 抽象类 实现类 Context上下文 测试类 策略模式的优缺点 什么是策略模式 他将定义的算法家族、分别封装起来&#xff0c;让他们之间可以相互替换&#xff0c;从而让算法的变化不会影响到使用算法的用户。 策略模式使用的就是…

idea出现莫名其妙错的时候

正常情况idea使用起来都很顺手&#xff0c;但是当项目比较多的时候&#xff0c;可能出现莫名奇妙的错误&#xff0c;比如导入的包始终报错java: 程序包com不存在&#xff0c;或者引入自己写的包也不存在&#xff0c;或者始终出现红线但是排查之后没有问题的情况&#xff0c;这种…

进来吧,给自己10分钟,这篇文章带你直接学会python

Python的语言特性 Python是一门具有强类型(即变量类型是强制要求的)、动态性、隐式类型(不需要做变量声明)、大小写敏感(var和VAR代表了不同的变量)以及面向对象(一切皆为对象)等特点的编程语言。 获取帮助 你可以很容易的通过Python解释器获取帮助。如果你想知道一个对象(o…

OJ:链表的中间结点

876. 链表的中间结点 - 力扣&#xff08;LeetCode&#xff09; 思路 思路&#xff1a;首先最容易想到的思路是什么呢&#xff0c;就是先遍历一遍链表&#xff0c;用一个值count来记录链表的长度&#xff0c;然后我们运用除法&#xff0c;/2&#xff0c;结果是几&#xff0c;就…

【C++干货基地】揭秘C++11常用特性:内联函数 | 范围for | auto自动识别 | nullptr指针空值

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

平台工程: 用Backstage构建开发者门户 - 2

本文介绍了如何使用开源Backstage构建自己的开发者门户&#xff0c;并基于此实践平台工程。本系列共两篇文章&#xff0c;这是第二篇。原文: Platform Engineering: Building Your Developer Portal with Backstage — Part 2 在本教程第一部分中我们了解了Backstage这个用于构…

外贸网站模板建站

测绘检测wordpress外贸主题 简洁实用的wordpress外贸主题&#xff0c;适合做测绘检测仪器设备的外贸公司使用。 https://www.jianzhanpress.com/?p5337 白马非马衣服WordPress外贸建站模板 白马非马服装行业wordpress外贸建站模板&#xff0c;适用于时间服装企业的官方网站…

Git 如何上传本地的所有分支

Git 如何上传本地的所有分支 比如一个本地 git 仓库里定义了两个远程分支&#xff0c;一个名为 origin&#xff0c; 一个名为 web 现在本地有一些分支是 web 远程仓库没有的分支&#xff0c;如何将本地所有分支都推送到 web 这个远程仓库上呢 git push web --all

pytorch loss函数整理

变量名解释 logits&#xff1a;未经过normalize&#xff08;未经过激活函数处理&#xff09;的原始分数&#xff0c;例如一个mlp将特征映射到num_target_class维的输出tensor就是logits。 probs&#xff1a;probabilities的简写&#xff0c;logits经过sigmoid函数&#xff0c;…

Doris实战——银联商务实时数仓构建

目录 前言 一、应用场景 二、OLAP选型 三、实时数仓构建 四、实时数仓体系的建设与实践 4.1 数仓分层的合理规划 4.2 分桶分区策略的合理设置 4.3 多源数据迁移方案 4.4 全量与增量数据的同步 4.5 离线数据加工任务迁移 五、金融级数仓稳定性最佳实践 5.1 多租户资…

Jenkins的Pipeline概念

文章目录 Pipeline什么是Jenkins Pipeline声明式和脚本式Pipeline语法为何使用PipelinePipeline概念PipelineNodeStageStep Pipeline语法概述声明式Pipeline脚本式Pipeline Pipeline示例 参考 Pipeline 什么是Jenkins Pipeline Jenkins Pipeline是一套插件&#xff0c;它支持…

【Django】model模型—模型继承

Django中三种继承风格 抽象基类&#xff1a;仅将父类用于子类公共信息的载体&#xff0c;这样的父类永远都不会单独使用。多表继承&#xff1a;继承了一个模型&#xff08;可能来源其它应用&#xff09;&#xff0c;且想要每个模型都有对应的数据表。代理模型&#xff1a;只想…

JProfiler相关问题及答案(2024)

1、JProfiler是什么及其用途 JProfiler是一款功能丰富的商业Java性能剖析&#xff08;profiling&#xff09;工具&#xff0c;它主要面向开发者和性能分析师&#xff0c;用于监测和分析Java应用程序的运行时行为。以下是对JProfiler的一些详细介绍和它的主要用途&#xff1a; …

webpack的一些知识

核心 webpack 是用来搭建前端工程的它运行在node环境中&#xff0c;它所做的事情&#xff0c;简单来说&#xff0c;就是打包具体来说&#xff0c;就是以某个模块作为入口&#xff0c;根据入口分析出所有模块的依赖关系&#xff0c;然后对各种模块进行合并、压缩&#xff0c;形…

洛谷P1157 组合的输出

深搜板子加一点点修改&#xff0c;适合初学者体会深搜&#xff0c;具体看代码 题目链接 ACcode #include<bits/stdc.h>using namespace std;int a, b;bitset<50>vis;//剪枝 int d[50];void dfs(int x) {if (x b 1) {for (int i 1;i < b;i)cout << se…

HBM(High Bandwidth Memory)

选择正确的高带宽内存 构建高性能芯片的选择越来越多&#xff0c;但附加内存的选择却几乎没有变化。为了在汽车、消费和超大规模计算中实现最大性能&#xff0c;选择取决于一种或多种 DRAM&#xff0c;而最大的权衡是成本与速度。 尽管多年来人们一直在努力用更快、更便宜或更…

Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)(2)

安装k8有多种方式如&#xff1a; minikube kubeadm 二进制安装 命令行工具 我这里就使用kubeadm进行安装 环境 3台centos7 master ip &#xff1a;192.168.113.120 2G运存 2内核 node1 ip &#xff1a;192.168.113.121 2G运存 2内核 node2 ip &#xff1a;192.168.1…

重构与设计模型的完美融合:构建稳定可扩展系统的关键步骤

在软件开发的漫长旅程中&#xff0c;系统的稳定性和可扩展性一直是开发者们追求的目标。为了实现这一目标&#xff0c;重构和设计模型成为了不可或缺的两个关键元素。本文将探讨如何通过重构&#xff0c;使系统更稳定、更具可扩展性&#xff0c;并深入研究如何将重构与设计模型…

JavaEE:多线程(3):案例代码

目录 案例一&#xff1a;单例模式 饿汉模式 懒汉模式 思考&#xff1a;懒汉模式是否线程安全&#xff1f; 案例二&#xff1a;阻塞队列 可以实现生产者消费者模型 削峰填谷 接下来我们自己实现一个阻塞队列 1.先实现一个循环队列 2. 引入锁&#xff0c;实现线程安全 …