如何使用element-ui相关组件如:el-select,el-table,el-switch,el-pagination,el-dialog

news2024/11/27 18:01:08

element-ui 官方链接:

组件 | Elementicon-default.png?t=N7T8https://element.eleme.cn/#/zh-CN/component/installation

el-select

<!-- 用户类型选择框
              <template> 看情况使用
              value选择框绑定的值 命名必须是value不能改
              v-for="item in Options" options数据源来自于数据库
              查询的对象数组包含id和roleName
              :key="item.id" 确保每个列表项都有唯一的id,这样就不会出现重复的元素:
              :label="item.roleName" 显示的内容
              :value="item.id" 选项的值
               -->
              <template>
                <el-select v-model="value" placeholder="请选择用户类型">
                  <el-option
                    v-for="item in userTypeOptions"
                    :key="item.id"
                    :label="item.roleName"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
              </template>

userTypeOptions后端响应的对象数组数据

el-table 和 el-switch

<!-- max-height="420"设置表格最大宽度超过宽度会有滚动条  
      :data="tableData" 绑定的数组数据 
      style="width: 100%" 宽度继承父盒100%-->
      <el-table max-height="420" :data="tableData" stripe style="width: 100%">
        <!-- 每一列 数组每一个元素对象(每一行)的属性 注意要与tableData的对象属性一致否则不显示 width="160"设置该列宽 -->
        <el-table-column prop="id" label="用户编号" width="160">
        </el-table-column>
        <el-table-column prop="userType" label="用户类型" width="160">
        </el-table-column>
        <el-table-column prop="account" label="账号" width="160">
        </el-table-column>
        <el-table-column prop="userName" label="用户名" width="160">
        </el-table-column>
        <el-table-column prop="ctime" label="创建时间" width="160">
          <!-- <template slot-scope="scope"> 将该列设置成模板 然后用一个方法去格式化时间 可用可不用
            {{ formatDate(scope.row.createdTime) }}
          </template> -->
        </el-table-column>
        <el-table-column prop="createdUserId" label="创建人id" width="120">
        </el-table-column>
        <el-table-column label="状态" width="100">
          <!-- slot-scope是一个作用域属性 scope是作用域名字
                使用该名字可以获取到该行表格的数据 -->
          <template slot-scope="scope1">
            <!-- element-ui的开关组件 -->
            <!-- 绑定的开关状态1关0开 
            或者你绑定的值scope1.row.status该隐藏域的状态值 是布尔值
            是true关false开也行 按需求来
            @change="handleAuthority(scope1.row)监听处理行数据
            当点击开关时scope1.row.status数据发生改变change事件会触发可以
            在方法中做你想做的事 比如异步请求
            -->
            <el-switch
              v-model="scope1.row.status" 
              :active-value="1"
              active-color="#ff4949"
              :inactive-value="0"
              inactive-color="#13ce66"
              @change="handleAuthority(scope1.row)"
            >
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column label="操作">
          <!-- slot-scope是一个作用域属性 scope是作用域名字
                使用该名字可以获取到该行表格的数据 -->
          <template slot-scope="scope2">
            <el-button size="mini" @click="handleEdit(scope2.$index, scope2.row)"
              >编辑</el-button
            >
            <el-button
              size="mini"
              type="danger"
              @click="handleDelete(scope2.$index, scope2.row)"
              >删除</el-button
            >
          </template>
        </el-table-column>
      </el-table>

表格中添加模板的作用域实现 异步处理

监听status的状态

//监听启用禁用按钮的状态
    handleAuthority(row) {
      console.log(row);
      console.log(row.status);
      // 发送请求到后端来更新status值
      const newStatus = row.status ? 1 : 0; // 反转status值
      this.updateUserStatus(newStatus, row.id);
    },

el-pagination 分页

<!-- 分页
      @size-change处理 当前页条数的改变
      @current-change处理 当前页的改变
      :current-page="pageNo" 绑定当前页
      :page-sizes="[7, 14, 21, 28]" 绑定每页条数
      :page-size="pageSize" 绑定当前页条数
      layout="total, sizes, prev, pager, next, jumper" 绑定布局
      :total="total" 绑定总条数
       -->
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        :current-page="pageNo"
        :page-sizes="[7, 14, 21, 28]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="totalParam"
      >
      </el-pagination>

几个监听函数与异步请求

methods: {
    //监听分页条数
    handleSizeChange(val) {
      console.log(`每页 ${val} 条`);
      this.pageSize = val;
      this.selectUser();
    },
    //监听分页条数的改变
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
      this.pageNo = val;
      this.selectUser();
    },
    //用户表全查方法
    selectUser() {
      console.log("查询");
      var url = `http://localhost:8080/qy/User/select`;
      var userparam = {
        userType: this.value,
        userName: this.likeUserUserName,
        account: this.likeUserAccount,
      };
      var pageParam = {
        pageNo: this.pageNo,
        pageSize: this.pageSize,
      };

      var userDto = {
        pages: pageParam,
        users: userparam,
      };
      userDto = JSON.stringify(userDto);
      var data = userDto;
      var config = {
        headers: {
          //配置请求表头防止后端接收不到data中的参数
          "Content-Type": "application/json",
          // 可以在这里添加其他的header配置
        },
      };
      this.axios
        .post(url, data, config)
        .then((res) => {
          console.log(res);
          //使用res.data.data 获取自己封装的对象中的数据
          console.log("data", res.data.data);
          if (res.data.status == 200) {
            //将响应数据存进数组
            this.tableData = res.data.data.pages;
            //修改后端传递的用户类型
            // 使用forEach函数修改userType属性值
            this.tableData.forEach((item) => {
              // eslint-disable-next-line no-prototype-builtins
              if (item.hasOwnProperty("userType")) {
                // 在这里修改userType的值,例如将其设置为新值4
                item.userType =
                  item.userType === 1
                    ? "系统管理员"
                    : item.userType === 2
                    ? "挂号员"
                    : "门诊医师";
              }
            });
            //接收数据库总条数
            this.totalParam = res.data.data.total;
          }

          if (res.data.status == -1) {
            //用户未登录重定向到登录页面
            this.$message.error(res.data.msg);
            this.$router.push("/login");
          }
        })
        .catch((rej) => {
          //请求失败捕获
          console.log(rej);
        });
    },
  },

axios实现发送异步请求

el-dialog 弹窗

<!-- 修改用户弹窗
      title="编辑用户" 弹窗主题
      :visible.sync="dialogFormVisible" 弹窗是否显示
      :model="editForm" 弹窗表单数据
      :rules="rules" 表单验证规则
       -->
      <el-dialog title="编辑用户" :visible.sync="dialogFormVisible">
        <el-form :model="editForm">
          <!-- 隐藏域
          type="hidden" 隐藏input
          name="id" 绑定name
          v-model="editForm.id" 绑定表单id
          v-model="editForm.userName" 绑定表单用户名
          autocomplete="off" 禁用浏览器自动填充敏感信息如:密码
           -->
          <el-input type="hidden" name="id" v-model="editForm.id"></el-input>
          <el-form-item label="用户名">
            <el-input v-model="editForm.userName" autocomplete="off"></el-input>
          </el-form-item>
        </el-form>
        <!-- 表单底部
        @click="dialogFormVisible = false" 关闭弹窗 此变量控制弹窗显示与关闭
        type="primary" icon="el-icon-search" 控制按钮的样式 两个属性都可以
         -->
        <div slot="footer" class="dialog-footer">
          <el-button @click="dialogFormVisible = false">取 消</el-button>
          <el-button type="primary" @click="submitForm">确 定</el-button>
        </div>
      </el-dialog>

      <!-- 删除用户弹窗
      title="删除用户" 弹窗主题
      :visible.sync="dialogFormVisible" 弹窗是否显示
       -->
      <el-dialog title="删除用户" :visible.sync="dialogRemove" width="30%">
        <span>确认要删除用户吗?</span>
        <!-- 表单底部
        @click="dialogRemove = false" 关闭弹窗 此变量控制弹窗显示与关闭
        type="primary" icon="el-icon-search" 控制按钮的样式 两个属性都可以
         -->
        <span slot="footer" class="dialog-footer">
          <el-button @click="dialogRemove = false">取 消</el-button>
          <el-button type="primary" @click="deleteSubmint">确 定</el-button>
        </span>
      </el-dialog>

监听弹窗

//监听修改代码弹窗
    handleEdit(index, row) {
      console.log(index, row);
      //将查询到的行数据显示到弹窗的表单里  默认显示
      this.editForm = row;
      //显示对话框获取用户输入的信息
      this.dialogFormVisible = true;
    },
    //监听删除代码弹窗
    handleDelete(index, row) {
      console.log(index, row);
      //将查询到的行数据显示到弹窗的表单里  默认显示
      this.deleteForm = row;
      //显示对话框获取用户输入的信息
      this.dialogRemove = true;
    },

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

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

相关文章

【dubbo3】看懂消费者如何发现提供者

服务发现机制 服务发现是RPC框架非常重要的能力。典型的服务发现一般有两种&#xff1a;接口级服务发现、应用级服务发现。  接口级服务发现典型代表是dubbo2基于zk的服务发现机制。提供者直接向注册中心注册接口信息及地址&#xff0c;消费者通过接口从注册中心拿到对应的地址…

1 Linux输入子系统

1 Linux输入子系统 https://www.cnblogs.com/beijiqie1104/p/11418082.html Linux input 子系统详解 https://www.cnblogs.com/yikoulinux/p/15208238.html

2023-9-8 求组合数(四)

题目链接&#xff1a;求组合数 IV #include <iostream> #include <algorithm>using namespace std;const int N 5010;int primes[N], cnt; bool st[N]; // 每个质数的次数 int sum[N];void get_primes(int n) {for(int i 2; i < n; i){if(!st[i]) primes[cnt]…

5.删除链表元素问题

1.删除特点节点 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输…

【LeetCode: 207.课程表:拓扑排序+图】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【C/C++】BMP格式32位转24位

问题 如题 解决方法 bmp文件格式参考:【C/C++】BITMAP格式分析_vc++ bitmap头文件_sunriver2000的博客-CSDN博客BITMAP文件大体上分成四个部分,如下表所示。文件部分长度(字节)位图文件头 Bitmap File Header14位图信息数据头 Bitmap Info Header40调色板 Palette4*n (n≥…

Linux 安装elasticsearch-7.5.1

相关链接 官⽹&#xff1a; https://www.elastic.co/cn/downloads/elasticsearch 下载&#xff1a; wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz 分词器&#xff1a; https://github.com/medcl/elasticsearch-an…

MJDK 如何实现压缩速率的 5 倍提升?

MJDK 是基于 OpenJDK 构建的美团 JDK 发行版。本文主要介绍 MJDK 是如何在保障 java.util.zip.* API 及压缩格式兼容性的前提下&#xff0c;实现压缩/解压缩速率提升 5-10 倍的效果。希望相关的经验能够帮助到更多的技术同学。 1 前言 数据压缩技术[1]因可有效降低数据存储及…

appium环境搭建

一.appium环境搭建 1.python3 python3的下载安装这里就不多做介绍了&#xff0c;当然你也可以选择自己喜欢的语音&#xff0c;比如java… 2.jdk 1&#xff09;下载地址 官网(需登录账号)&#xff1a; https://www.oracle.com/java/technologies/downloads/ 百度网盘&…

2022护网行动经验分享(2023护网招人)

今年的护网又开始摇人了&#xff0c;不知道大家有想法没&#xff1f; 去年的护网结束之后&#xff0c;朋友圈感觉是在过年&#xff0c;到处是倒计时和庆祝声。 看得出来防守方们7*24小时的看监控还是比较无奈的。 本次复盘基于我对整个护网行动的观察总结而来&#xff0c;仅…

Spring Security OAuth2 远程命令执行漏洞

文章目录 一、搭建环境二、漏洞验证三、准备payload四、执行payload五、变形payload 一、搭建环境 cd vulhub/spring/CVE-2016-4977/ docker-compose up -d 二、漏洞验证 访问 http://192.168.10.171:8080/oauth/authorize?response_type${233*233}&client_idacme&s…

早期传言和升级:Apple Watch Ultra 2,我们的期待!

Apple Watch Ultra 2可能正在研制中,为去年的Apple Watch Ultras带来升级。现在,该公司提供了一款适合跑步者和户外运动爱好者的智能手表,我们迫切希望看到第二代型号将如何改进。 作为Apple Watch Series 8和Apple Watch SE(2022)的替代品,Apple Watch Ultra具有所有苹…

MPP 与 SMP 的区别,终于有人讲明白了【文末送书】

文章目录 导读01 SMP1. SMP 的典型特征2. SMP的优缺点 02 分布式MPP计算架构1. MPP 架构核心原理2. MPP 典型特征3. MPP优缺点 写作末尾 导读 当今数据计算领域主要的应用程序和模型可大致分为在线事务处理&#xff08;On-line Transaction Processing &#xff0c;OLTP&#…

笔试记录-扔鸡蛋问题

写目录 一个鸡蛋两个鸡蛋K个鸡蛋 今天面试官问了我这个扔鸡蛋问题&#xff0c;以前学过&#xff0c;但是面试的时候想不起来了&#xff0c;应该是直接寄了&#xff0c;接下来总结一下这个问题的动态规划做法. 问题&#xff1a;有一个N层高的楼&#xff0c;现在给你若干个鸡蛋&a…

实现在一张图片中寻找另一张图片的目标

OpenCV库中的SIFT特征检测算法和FLANN&#xff08;快速最近邻搜索库&#xff09;匹配算法来找到一个图片中的元素在另一个图片中的位置&#xff0c;并在源图片中标出它们的位置。 以下是一个简单的例子&#xff0c;使用OpenCV库&#xff0c;利用SIFT特征检测算法&#xff0c;在…

Kafka中Producer源码解读

Producer源码解读 在 Kafka 中, 我们把产生消息的一方称为 Producer 即 生产者, 它是 Kafka 的核心组件之一, 也是消息的来源所在。它的主要功能是将客户端的请求打包封装发送到 kafka 集群的某个 Topic 的某个分区上。那么这些生产者产生的消息是怎么传到 Kafka 服务端的呢&a…

如何使用Google Compute Engine入门指南快速创建和配置您的云虚拟机实例

文章目录 步骤1&#xff1a;创建 Google Cloud Platform&#xff08;GCP&#xff09;账户步骤2&#xff1a;设置 GCP 项目步骤3&#xff1a;启用 Google Compute Engine API步骤4&#xff1a;安装 Google Cloud SDK步骤5&#xff1a;创建虚拟机实例步骤6&#xff1a;连接到虚拟…

ADL200N单相逆流监测多功能仪表在光伏中的应用-安科瑞黄安南

安科瑞电气-黄安南 ,18/*76-150-/6237 随着光伏行业的发展&#xff0c;部分地区村级变压器及工业用电变压器容量与光伏项目的装机容量处于饱和。电网公司要求对后建的光伏并网系统为不可逆流发电系统&#xff0c;指光伏并网系统所发生的电由本地负载消耗&#xff0c;多余的电不…

100万级连接,爱奇艺WebSocket网关如何架构

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;很多小伙伴拿到一线互联网企业如阿里、网易、有赞、希音、百度、滴滴的面试资格。 最近&#xff0c;尼恩指导一个小伙伴简历&#xff0c;写了一个《高并发网关项目》&#xff0c;此项目帮这个小伙拿到 字节/阿里/微…

IDEFICS 简介: 最先进视觉语言模型的开源复现

我们很高兴发布 IDEFICS ( Image-aware Decoder Enhanced la Flamingo with Ininterleaved Cross-attention S ) 这一开放视觉语言模型。IDEFICS 基于 Flamingo&#xff0c;Flamingo 作为最先进的视觉语言模型&#xff0c;最初由 DeepMind 开发&#xff0c;但目前尚未公开发布…