自学内容网 自学内容网

Vue Element-UI 选择隐藏表格中的局部字段信息

一、功能需求分析

为什么需要这个功能?

(1)简化信息,减少混乱

就像整理抽屉,只留下常用的东西,这样找起来更快,看起来也更整洁。在表格中,只展示需要的字段,可以让信息更加清晰,减少视觉上的混乱。

(2)提高工作效率:

如果每次打开表格都要在一堆不相关的信息中寻找关键数据,会浪费很多时间。选择展示所需字段,就像是用过滤器筛选出最重要的信息,让工作更高效。

(3)专注关键数据

就像开车时只关注路标和交通信号,忽略其他无关的景物。在表格中,只展示关键字段,可以帮助用户集中注意力,做出更准确的决策。

二、实现效果

通过点击显示列,在此选择需要显示的字段

 显示的效果:(没有被勾选的列,就这样被隐藏啦!)

三、实现页面代码

<template>
  <div>
    <el-button type="primary" @click="selectDisplayColumn">显示列</el-button>

    <!-- 选择需要显示字段卡片 -->
    <el-card v-if="displayCard"  class="dialog-card">
      <div slot="header">
        <span>选择需要显示的字段信息</span>
        <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-close" @click="displayCard = false" />
      </div>
        <el-checkbox v-for="(row, index) in tableFields" :key="index"  v-model="row.display">{{ row.label }}</el-checkbox>
    </el-card>

    <el-table
      :data="tableData"
      style="width: 100%">
      <el-table-column v-if="tableFields[0].display" prop="date" label="日期" width="100"/>
      <el-table-column v-if="tableFields[1].display" prop="name" label="姓名" width="100"/>
      <el-table-column v-if="tableFields[2].display" prop="address" label="地址" width="220"/>
      <el-table-column v-if="tableFields[3].display" prop="age" label="年龄" width="60"/>
      <el-table-column v-if="tableFields[4].display" prop="email" label="邮箱" width="220"/>
      <el-table-column v-if="tableFields[5].display" prop="phone" label="电话" width="100"/>
      <el-table-column v-if="tableFields[6].display" prop="company" label="公司" width="100"/>
      <el-table-column v-if="tableFields[7].display" prop="city" label="城市" width="100"/>
      <el-table-column v-if="tableFields[8].display" prop="country" label="国家" width="100"/>
      <el-table-column v-if="tableFields[9].display" prop="postalCode" label="邮编" width="100"/>
      <el-table-column v-if="tableFields[10].display" prop="website" label="网站" width="200"/>
    </el-table>


  </div>
</template>

<script>
  export default {
    data() {
      return {
        displayCard:false,
        tableFields: [
      {
        name: 'date',
        label: '日期',
        display: true
      },
      {
        name: 'name',
        label: '姓名',
        display: true
      },
      {
        name: 'address',
        label: '地址',
        display: true
      },
      {
        name: 'age',
        label: '年龄',
        display: true
      },
      {
        name: 'email',
        label: '邮箱',
        display: true
      },
      {
        name: 'phone',
        label: '电话',
        display: true
      },
      {
        name: 'company',
        label: '公司',
        display: true
      },
      {
        name: 'city',
        label: '城市',
        display: true
      },
      {
        name: 'country',
        label: '国家',
        display: true
      },
      {
        name: 'postalCode',
        label: '邮编',
        display: true
      },
      {
        name: 'website',
        label: '网站',
        display: true
      }
    ],
    tableData: [
      {
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄',
        age: 28,
        email: 'wangxiaohu@example.com',
        phone: '1234567890',
        company: '科技有限公司',
        city: '上海',
        country: '中国',
        postalCode: '200333',
        website: 'http://example.com'
      },
      // 添加更多数据项
      {
        date: '2016-05-04',
        name: '李四',
        address: '上海市普陀区金沙江路 1517 弄',
        age: 24,
        email: 'lisi@example.com',
        phone: '0987654321',
        company: '网络科技',
        city: '北京',
        country: '中国',
        postalCode: '100000',
        website: 'http://example.com'
      },
      {
        date: '2016-05-01',
        name: '张三',
        address: '上海市普陀区金沙江路 1519 弄',
        age: 32,
        email: 'zhangsan@example.com',
        phone: '1122334455',
        company: '信息技术',
        city: '广州',
        country: '中国',
        postalCode: '510000',
        website: 'http://example.com'
      },
      {
        date: '2016-05-03',
        name: '赵六',
        address: '上海市普陀区金沙江路 1516 弄',
        age: 29,
        email: 'zhaoliu@example.com',
        phone: '5566778899',
        company: '电子科技',
        city: '深圳',
        country: '中国',
        postalCode: '518000',
        website: 'http://example.com'
      }
    ]
      }
    },
    methods:{
      selectDisplayColumn(){
        this.displayCard = !this.displayCard;
      }
    }
  }
</script>

<style>
.dialog-card {
  width: 480px;
  position: fixed;
  top: 100px;
  left: 350px;
  transform: translate(-50%, -50%);
  z-index: 1000;
}

</style>


原文地址:https://blog.csdn.net/qq_69183322/article/details/143634050

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!