基于element自动表格

news2024/10/7 6:51:27

需求是根据JSON文件生成表格,包含配置和自动props属性以及过滤器;

数据示例:

表格设置:

/**
 * 表格表头信息
 * @chineseToPinYin: 这是封装的根据中文汉字转换为拼音的方法
 * @prop: 表头字段名
 * @filter: 数据过滤器
 * @label: 表头显示名称
 */
const tableTitle = [
  { prop: chineseToPinYin('日期'), label: '日期', width: '160' },
  { prop: chineseToPinYin('地点'), label: '地点', filter: addressFilter },
  { prop: chineseToPinYin('早餐'), label: '早餐' },
  { prop: chineseToPinYin('开会'), label: '开会' },
  { prop: chineseToPinYin('纪要'), label: '纪要' },
  { prop: chineseToPinYin('工作'), label: '工作' },
  { prop: chineseToPinYin('午餐'), label: '午餐' },
  { prop: chineseToPinYin('午休'), label: '午休' },
  { prop: chineseToPinYin('下班'), label: '下班' }
]

addressFilter 过滤器:

function addressFilter (value) {
  return addressOptions.filter(i => i.value === value)[0].label
}

表格事件示例:

/**
 * 表格按钮事件
 * @event: 按钮事件名(子组件直接@eventName=handleCustomizeEvent)
 * @primary:按钮类型(按钮的颜色)
 */
const tableButton = [
  { label: '编辑', event: 'edit', type: 'primary' },
  { label: '删除', event: 'delete', type: 'danger' }
]

抛出示例:

export { tableTitle, tableButton }

组件示例:

<el-table ref="autoTable" size='mini'
            border stripe default-expand-all
            row-key="id"
            :data="data"
            tooltip-effect="dark"
            :header-cell-style="headerCellStyle"
            :cell-style="cellStyle"
            style="width: 100%"
            cell-class-name='custom-table'
            @cell-click="handleClickCells"
            @row-click="handleClickRow"
            @selection-change="handleSelectionChange">
   <!--左侧自定义插槽-->
    <slot name="before"></slot>
    <!--左侧是否有勾选-->
    <el-table-column v-if="isChecked" fixed="left" label="全选" type="selection" width="40"></el-table-column>
    <!--循环表格-->
    <el-table-column v-for="(item, key) in title" :label="item.label" :width="item.width" :key="key">
      <template slot-scope="scope">
        <span v-if="item.filter">{{item.filter(scope.row[item.prop])}}</span>
        <span v-else>{{scope.row[item.prop]}}</span>
      </template>
    </el-table-column>
<!--    <el-table-column v-for="(item, key) in title" :prop="item.prop" :label="item.label" :width="item.width" :key="key"/>-->
    <!--右侧自定义插槽-->
    <slot name="after"></slot>
    <!--右侧按钮集合-->
    <el-table-column v-if="event.length" fixed="right" :width="event.length*70" label="操作">
      <template slot-scope="scope">
        <span class="customize-link" v-for="(item, key) in event" :key="key" @click="handleTableEvent(item.event, scope.$index, scope.row)">
          <el-link :type="item.type" :icon="item.icon" size="mini">{{item.label}}</el-link>
        </span>
      </template>
    </el-table-column>
  </el-table>

PROPS示例:

  props: {
    isChecked: {
      type: Boolean,
      default: false
    },
    title: {
      type: Array,
      default: () => ([])
    },
    data: {
      type: Array,
      default: () => ([])
    },
    event: {
      type: Array,
      default: () => ([])
    }
  }

methods示例:

  methods: {
    // 表格选择行
    handleSelectionChange (row) {
      this.$emit('checkRow', row, this.$refs.autoTable)
    },
    // 表格操作事件
    handleTableEvent (event, index, row) {
      this.$emit(event, index, row)
    },
    // 单击行
    handleClickRow (row, column, event) {
      this.$emit('clickRow', row, column, event)
    },
    // 选择某个单元格
    handleClickCells (row, column, cell, event) {
      this.$emit('clickCell', row, column, cell, event)
    }
  }

页面示例:

<auto-table is-checked :title="tableTitle" :data="mockTableData" :event="tableButton" @checkRow="handleTableCheckRow" @edit="handleClickTableEdit" @delete="handleClickTableDelete"/>

事件部分就不用叨叨了吧;

效果示例:

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

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

相关文章

从零学算法400

400.给你一个整数 n &#xff0c;请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;n 11 输出&#xff1a;0 解释&#xff1a;第…

Windows Python3安装salt模块失败处理

复现CVE-2020-11651时候运行CVE-2020-11651的poc时候需要salt模块 在下载时出现了错误 尝试在网上寻找解决方法&#xff1a; 1.更新 setuptools 和 wheel pip install --upgrade setuptools wheel 2. 安装Microsoft Visual C 14.0 因为salt模块包包使用了 C/C 扩展&#x…

Flutter开发警告Constructors in ‘@immutable‘ classes should be declared as ‘const‘

文章目录 警告信息报错代码警告原因修改后的代码 警告信息 Flutter开发遇到如下警告 Constructors in ‘immutable’ classes should be declared as ‘const’. 报错代码 class TaskWidget extends StatefulWidget {final String title;final bool isChecked;final int ord…

AD9528学习笔记

前言 AD9528是ADI的一款时钟芯片&#xff0c;由2-stage PLL组成&#xff0c;并且集成JESD204B/JESD204C SYSREF信号发生器&#xff0c;SYSREF发生器输出单次、N次或连续信号&#xff0c;并与PLL1和PLL2输出同步&#xff0c;从而可以实现多器件之间的同步。 AD9528总共有14路输…

电源模块重轻载变化测试的测试目的、测试标准、测试方法介绍

电源自动测试系统针对电源模块的各项测试项目提供最合适的测试方案&#xff0c;解决测试需求&#xff0c;提高测试效能。重轻载变化测试是电源模块测试的项目之一&#xff0c;是为了检测负载变化时输出电压的变化情况。为此&#xff0c;纳米软件将介绍电源重轻载变化测试的方法…

盘点43个Python登录第三方源码Python爱好者不容错过

盘点43个Python登录第三方源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 项目名称 bnuz中国电信校园网模拟登录&#xff0c;python selenium BNUZ教务系统认证爬虫Python语言实现&#xff0c;你可以用…

为什么在Pycharm中使用Pandas画图,却不显示?

问题描述&#xff1a; 在 Pycharm 中使用 Pandas 的 plot() 方法画图&#xff0c;却不显示图像&#xff0c;源代码如下&#xff1a; import pandas as pd import numpy as np# 从文件中读取数据 starbucks pd.read_csv(./file_csv/directory.csv)# 按照国家分组&#xff0c;…

【T3】畅捷通T3登录时操作日期的日历中日期与星期对应关系错误。

【问题描述】 畅捷通T3软件登录的时候&#xff0c; 在选择操作日期位置&#xff0c;点击出日历后发现&#xff1a; 几月几日和星期几是对不上的。但是查看电脑系统右下角日期&#xff0c;是正确的。 例如&#xff1a;2023年11月24日应该是星期五&#xff0c;这里反而是星期三。…

如何去掉图片水印不伤原图?无痕去水印教程分享!

如何去掉图片水印不伤原图&#xff1f;在电商广告设计和营销领域&#xff0c;水印已经成为一种常见的版权保护手段。不过&#xff0c;水印也给淘宝商家带来了一些困扰。那么如何去掉图片水印还能不伤原图呢&#xff0c;接下来&#xff0c;将分享简单好用的无痕去水印教程&#…

高级IO—select

高级IO—select 文章目录 高级IO—selectIO的概念 五种IO模型阻塞IO非阻塞IO信号驱动IOIO多路转接异步IO I/O多路转接之select IO的概念 通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。输入是系统接收的信号或数据&#xff0c;输出则是从其发送的信号或…

python中range函数的用法

range() 是Python的一个内置函数。语法格式为&#xff1a;range(start, stop, step) start是初始值&#xff0c;stop是最终值&#xff0c;step是步长。range()函数仅适用于整数&#xff0c;所有参数都必须是整数。步长值可以为正数或负数&#xff0c;不得为零。使用range函数时…

Mintegral业务再创新高,汇量科技基建成果已然显现?

游戏出海经过几年的跨越式发展&#xff0c;红海特征日益明显。 《2023中国游戏App出海驱动力报告》显示&#xff0c;2022年1月至2023年6月&#xff0c;我国约17000款游戏类App出海&#xff0c;安装总量超过240亿次。与此同时&#xff0c;Android和iOS侧的安装量在2022年三季度…

ONNX实践系列-修改yolov5-seg的proto分支输出shape

一、目标 本文主要介绍要将原始yolov5分割的输出掩膜从[b,c,h,.w]修改为[b, h, w, c] 原来的: 目标的: 代码如下: Descripttion: version: @Company: WT-XM Author: yang jinyi Date: 2023-09-08 11:26:28 LastEditors: yang jinyi LastEditTime: 2023-09-08 11:48:01 …

【深度学习】因果推断与机器学习

2023年初是人工智能爆发的里程碑式的重要阶段&#xff0c;以OpenAI研发的GPT为代表的大模型大行其道&#xff0c;NLP领域的ChatGPT模型火爆一时&#xff0c;引发了全民热议。而最新更新的GPT-4更是实现了大型多模态模型的飞跃式提升&#xff0c;它能够同时接受图像和文本的输入…

2023 Unite 大会关于“Muse“ AI 大模型训练

Unity Muse 借助强大的 AI 能力帮助你探索、构思和迭代&#xff0c;其中包括纹理和精灵两项功能&#xff0c;可将自然语言和视觉输入转化为可用资产。 将 AI 引入 Unity Editor 中的 Muse 提供了更快将想法转化为实物的选项。您可以调整并使用文本提示、图案、颜色和草图&…

全面预算管理,帮助企业财务团队冲破市场挑战

在实现企业财务发展的必经之路上&#xff0c;大多数财务专业人士会通过实施全面预算管理策略&#xff0c;为部门乃至整个组织建立一个用于数据管理和预测分析的财务模型&#xff0c;旨在影响和监控业务决策和变化趋势。全面预算管理通常包括历史数据分析和关于未来走向更详细的…

加入华为云鲲鹏极简开发创造营,激活创造力,探索无限可能!

数字经济时代&#xff0c;速度、效率、质量安全已成为各行业告诉拓新发展的关键&#xff0c;华为云不断打磨敏捷安全开发的软件平台&#xff0c;为更高效率的生产力变革积蓄能量。 在刚刚过去不久的2023华为全联接大会上&#xff0c;华为最新发布了华为云CodeArts与鲲鹏DevKit…

鸿蒙开发之android开发人员指南《基础知识》

基于华为鸿蒙未来可能不再兼容android应用&#xff0c;推出鸿蒙开发系列文档&#xff0c;帮助android开发人员快速上手鸿蒙应用开发。 1. 鸿蒙使用什么基础语言开发&#xff1f; ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风…

别再为仓库库存损耗头疼了!掌握6S必备装备管理轻松降低损失!

仓库库存损耗是很多装配制造企业头疼的问题&#xff0c;不仅会导致企业资产流失&#xff0c;还可能会对企业的生产和运营产生严重影响&#xff0c;因此&#xff0c;企业应认真分析导致损耗的原因&#xff0c;并有针对性地采取策略&#xff0c;降低库存损耗&#xff0c;提高企业…

JS 中的随机数方法 Math.random()

有时候项目中遇到一个功能需要随机返回多条不重复的数据&#xff0c;也可以是拿了就用&#xff0c;下次再需要时已经忘记如何使用了。 js中的生成随机数操作是基于 Math 方法下的 random() 方法 Math.random() &#xff1a; 随机获取范围内的一个数 &#xff08; 精确到小数点…