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

news2024/12/23 19:07:27

用户列表的实现与操作

  • 一、创建用户页面和路由
  • 二、表格优化
    • 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-input
      id="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-button
      type="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.coloradmin.cn/o/1487273.html

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

相关文章

苍穹外卖Day05——总结5

前期文章 文章标题地址苍穹外卖Day01——总结1https://lushimeng.blog.csdn.net/article/details/135466359苍穹外卖Day01——解决总结1中存在的问题https://lushimeng.blog.csdn.net/article/details/135473412苍穹外卖Day02——总结2https://lushimeng.blog.csdn.net/articl…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于条件风险价值的虚拟电厂参与能量及备用市场的双层随机优化》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 这篇文章的标题涉及到以下几个关键点…

【二叉树的最近公共祖先】【后序遍历】Leetcode 236. 二叉树的最近公共祖先

【二叉树的最近公共祖先】【后序遍历】Leetcode 236. 二叉树的最近公共祖先 解法1 涉及到结果向上返回就要用后序遍历解法2 自己写的方法 后序遍历 ---------------&#x1f388;&#x1f388;236. 二叉树的最近公共祖先 题目链接&#x1f388;&#x1f388;-----------------…

【kubernetes】关于k8s集群如何将pod调度到指定node节点?

目录 一、k8s的watch机制 二、scheduler的调度策略 Predicate&#xff08;预选策略&#xff09; 常见算法&#xff1a; priorities&#xff08;优选策略&#xff09;常见的算法有&#xff1a; 三、k8s的标签管理之增删改查 四、k8s的将pod调度到指定node的方法 方案一&am…

20个 K8S集群常见问题总结,建议收藏

问题1&#xff1a;K8S集群服务访问失败&#xff1f; 原因分析&#xff1a;证书不能被识别&#xff0c;其原因为&#xff1a;自定义证书&#xff0c;过期等。 解决方法&#xff1a;更新证书即可。 问题2&#xff1a;K8S集群服务访问失败&#xff1f; curl: (7) Failed connec…

YOLOv9改进 | 基础篇 | 提供YOLOv9全系列支持V9n、V9s、V9m、V9l、V9x的修改方式(全网独家首发)

一、本文介绍 大家好&#xff0c;本文给大家带来的是2024年2月21日全新发布的SOTA模型YOLOv9的补全教程&#xff08;算是一种补全吧我个人认为&#xff09;&#xff0c;了解V7的读者都知道V7系列是不支持模型深度和宽度的修改的也就是没有办法像YOLOv8那样有多个版本&#xff…

IOC中Bean的生命周期

生命周期的各个阶段&#xff1a; 可以分为三个阶段&#xff1a;产生-使用-销毁 又可以分四个阶段&#xff1a;四个阶段 实例化 ->属性注入->初始化 ->销毁 实例化后到使用的初始化过程&#xff1a; 属性赋值 ->处理各种Aware接口->实现BeanPostProcessor的b…

【大厂AI课学习笔记NO.63】模型的维护

说是模型的维护&#xff0c;其实这堂课都是在讲“在工业环境中开发和部署机器学习模型的流程”。 上图来自于我的笔记思维脑图&#xff0c;已经上传&#xff0c;要链接的访问的主页查看资源。 一路走来&#xff0c;我们学习了数据管理、模型学习、模型验证、模型部署等重要的步…

js中Generator函数详解

定义&#xff1a; promise是为了解决回调地狱的难题出现的&#xff0c;那么 Generator 就是为了解决异步问题而出现的。 普通函数&#xff0c;如果调用它会立即执行完毕&#xff1b;Generator 函数&#xff0c;它可以暂停&#xff0c;不一定马上把函数体中的所有代码执行完毕…

鸿蒙App开发新思路:小程序转App

国家与国家之间错综复杂&#xff0c;在谷歌的安卓操作系统“断供”后&#xff0c;鸿蒙系统的市场化&独立化的道路便显而易见了。 2024年1月18日&#xff0c;华为宣布&#xff0c;不再兼容安卓的“纯血鸿蒙”--HarmonyOS NEXT鸿蒙星河版最终面世&#xff0c;并与2024年Q4正…

自己本地模拟内存数据库增删改查

目录 学习初衷准备代码实现结果感谢阅读 学习初衷 用于满足自己的测试要求&#xff0c;不连接数据库&#xff0c;也不在意数据丢失 准备 maven依赖 org.springframework.boot spring-boot-starter-test test 代码实现 内存数据库&#xff08;InMemoryDatabase&#xff0…

AmzTrends x TiDB Serverless:通过云原生改造实现全局成本降低 80%

本文介绍了厦门笛卡尔数据&#xff08;AmzTrends&#xff09;在面临数据存储挑战时&#xff0c;选择将其数据分析服务迁移到 TiDB Serverless 的思路和实践。通过全托管的数据库服务&#xff0c;AmzTrends 实现了全局成本降低 80% 的效果&#xff0c;同时也充分展示了 TiDB Ser…

【活动】金三银四,前端工程师如何把握求职黄金期

随着春意盎然的气息弥漫大地&#xff0c;程序员群体中也迎来了一年一度的“金三银四”求职热潮。这个时间段对于广大前端工程师而言&#xff0c;不仅象征着生机勃发的新起点&#xff0c;更是他们职业生涯中至关重要的转折点。众多知名公司在这一时期大规模开启招聘通道&#xf…

Java面试题总结200道(二)

26、简述Spring中Bean的生命周期&#xff1f; 在原生的java环境中&#xff0c;一个新的对象的产生是我们用new()的方式产生出来的。在Spring的IOC容器中&#xff0c;将这一部分的工作帮我们完成了(Bean对象的管理)。既然是对象&#xff0c;就存在生命周期&#xff0c;也就是作用…

机器人持续学习基准LIBERO系列9——数据集轨迹查看

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新机器人持续学习基准LIBERO系列4——robosuite最基本demo机器人持续学习基准LIBERO系列5——…

windows下安装npm

windows下安装了多个node.js如何切换npm。 下载nvm 下载nvm地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases 安装nvm 这个是nodejs的安装位置&#xff0c;如果没有nodejs文件夹就新建一个(后来发现他会自动生成一个快捷方式) 设置setting.txt 打开安装…

http 协议深入介绍

一&#xff0c;http 相关概念 &#xff08;一&#xff09;关键名词 1&#xff0c;互联网 是网络的网络&#xff0c;是所有类型网络的母集 2&#xff0c;因特网 世界上最大的互联网网络。即因特网概念从属于互联网概念。习惯上&#xff0c;大家把连接在因特网上的计算机都成…

【大厂AI课学习笔记NO.66】TensorFlow

TensorFlow 这个框架&#xff0c;实在是太有名了&#xff0c;最近周红衣都在大力的宣传和讲解。 他说的是对的&#xff0c;人工智能&#xff0c;就是大力出奇迹&#xff0c;就是大量的算力&#xff0c;大量的数据&#xff0c;加上模型的加持&#xff0c;实现的智能感觉。 Goog…

MWC 2024丨Smart Health搭载高通Aware平台—美格发布智能健康看护解决方案,开启健康管理新体验

2月29日&#xff0c;在MWC 2024世界移动通信大会上&#xff0c;全球领先的无线通信模组及解决方案提供商——美格智能正式发布了新一代Cat.1模组SLM336Q&#xff0c;是中低速物联网应用场景的高性价比之选。本次还发布了首款搭载高通Aware™平台的智能看护解决方案MC303&#x…

MATLAB知识点:for-end语句(简称for循环)

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自​第4章&#xff1a;MATLAB程序流程控制 for-end语句&…