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

这篇具有很好参考价值的文章主要介绍了如何使用element-ui相关组件如:el-select,el-table,el-switch,el-pagination,el-dialog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

element-ui 官方链接:

组件 | Elementhttps://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"设置该列宽 -->
        <!-- 显示编号  别用数据库中的id代替 -->
        <el-table-column label="编号" width="140">
          <template slot-scope="scope">
            {{ scope.$index + 1 }}
          </template>
        </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);
    },

权限修改异步处理:

// //修改权限请求
    updateUserStatus(authority, userId) {
      //开始发送修改请求
      var url = `http://localhost:8080/qy/User/UpdateUserStatus/${authority}/${userId}`;
      var config = {
        headers: {
          //配置请求表头防止后端接收不到data中的参数
          "Content-Type": "application/json",
          // 可以在这里添加其他的header配置
        },
      };
      this.axios
        .get(url, config)
        .then((res) => {
          console.log("修改成功", res);
        })
        .catch((rej) => {
          //请求失败捕获
          console.log(rej);
        });
    },

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>

监听弹窗文章来源地址https://www.toymoban.com/news/detail-733630.html

//监听修改代码弹窗
    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;
    },

到了这里,关于如何使用element-ui相关组件如:el-select,el-table,el-switch,el-pagination,el-dialog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • el-select值的回显问题:如何使element-ui的下拉框显示label值

    今天写前端又遇到个很神奇的事情,element的下拉框el-select出现了一点儿问题,回显的时候显示value的值,这个强迫症看来就很难受  我写的代码是这样的 查阅大量资料,突然发现一个简单的方法,那就是vue的v-bind的神奇之处,v-bind的简写是:冒号 所以解决方法就来了(敲重

    2024年02月07日
    浏览(31)
  • 最简单的使用css修改element-ui的el-select的高度

    个人博客同步csdn 首先给el-select的容器上面自定义一个类名,避免污染别的el-select 写css,注意这里用了less 效果图(前) 效果图(后)

    2024年02月12日
    浏览(19)
  • Element-UI el-select多选表单校验问题

    在使用 el-select 多选下拉菜单配置表单校验时, 如果form表单绑定的form对象对应属性值为空字符串或者null(其他未尝试),表单中的多选下拉框会立刻执行校验并弹出校验信息,代码如下: 正确方式如下: 将多选下拉框对应的属性值默认值设置未空数组即可

    2024年02月16日
    浏览(41)
  • element-ui 表单校验,el-select校验失效问题

    form表单验证时,遇到了校验失效问题,有值的情况下,校验规则并没有对应消失,检查了几个容易出错的地方:1、:model=\\\"addForm\\\" 用model绑定表单,而不是v-model,没问题 2、需要添加校验的对应字段,是否添加了prop属性,ok没问题 3、检查rules,里面校验提示的事件是否正确,发

    2024年02月11日
    浏览(39)
  • 关于Element-UI el-select多选表单校验问题

       在使用 el-select 多选下拉菜单配置表单校验时, 如果form表单绑定的form对象对应属性值为空字符串或者null(其他未尝试),表单中的多选下拉框会立刻执行校验并弹出校验信息,代码如下: 正确方式如下: 将多选下拉框对应的属性值默认值设置未空数组即可

    2024年02月11日
    浏览(32)
  • Element-UI组件使用 --踩坑篇

    问题描述 : Element ui 中的 el-input ,当 input 仅有一项时,使用 @keyup.enter.native 事件绑定回车事 件,点击回车之后浏览器会刷新页面 问题原因 :由于当表单只有一个文本框时,按下回车将会触发表单的提交事件,导致页面的刷新 解决方法1 :在 el-form 加上 @submit.native.prevent ,

    2024年02月04日
    浏览(22)
  • VUE element-ui 使用Screefull 页面全屏时el-select下拉菜单不显示(下拉框不显示无法选择)问题解决

    问题原因:elemrnt-ui会默认将弹出框插入至 body 元素;当设置了某个元素全屏时,会遮挡住原来的select下拉数据。

    2024年02月14日
    浏览(38)
  • 【Vue框架】Vue2中element-ui/mint-ui组件库——element-ui引入组件以及使用案例、mint-ui引入组件及使用案例

    element-ui 提供了大量的组件,如:布局组件、表单组件、JS组件等等。 Element-ui官网: https://element.eleme.cn/#/zh-CN 安装 Element-ui: npm i element-ui -S 1.1.1 引入组件 引入 Element 完整引入(在 main.js 中写入以下内容): 按需引入 借助 babel-plugin-component,我们可以只引入需要的组件,以达到

    2024年02月07日
    浏览(38)
  • Element-UI el-select 多选菜单换行撑开

    问题描述:           Element-UI el-select 多选菜单换行撑开显示破坏整体样式  问题解决:         添加如下样式:          若出现滚动条样式不好看,可以更改样式,和elementui保持一致。        

    2024年02月16日
    浏览(28)
  • element-ui upload图片上传组件使用

    图片上传前端收集 数据 再调用接口发送到后端 组件标签内的参数: 参数 说明 类型 可选值 默认值 action 必选参数,上传的地址 string — — headers 设置上传的请求头部 object — — multiple 是否支持多选文件 boolean — — data 上传时附带的额外参数 object — — name 上传的文件字段

    2023年04月19日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包