对element UI table二次封装(进行Column的自定义筛选展示和排序)

news/2024/5/20 3:58:47 标签: ui, element table, 二次封装, vue, ts

1.3.0版本 增加table头自定义显示和排序功能

 

 可以通过复选框选中来处理显示与否 ,通过拖拽来控制列的展示顺序

   设置 show-fliter为true  增加uuid进行本地缓存

在用element table时候每次写页面都会重复写很多column标签 导致页面重复代码过多 并且分页组件也是每次都要引用导致很麻烦 然后思前想后自己就对element进行了二次封装,

先看效果:

 封装出来之后和正常使用的效果一样 传入参数也基本差不多

1.引入npm包  -引入最新的玉林路扛把子UI库

yarn add htui-yllkbz   

2在代码里面引用-引用方式和elementUI一样,在main.ts在全局引用

import Htui from "htui-yllkbz";
import "htui-yllkbz/lib/htui.css";
Vue.use(Htui);

3 HtTable组件引用  --标签引用  (里面如果你不需要特别处理的属性 很多你都可以不传 ,默认会和element table保持一致)

  <!-- 用法参照element -table 参数通过columnns传递 -->
    <ht-table :data="state.tableData"
              @onchange='changePage'//分页查询回调
              style="width: 100%;margin-top:12px"
              :checked="true" //是否启用复选框
              :hide-page="false"//是否隐藏分页信息
              :hide-order="false"//是否隐藏序号列
              border
              @sort-change="sortChange"
              height="calc(100vh - 240px)"
              highlight-current-row
              :page-info="{//分页信息
                currentPage:state.filterData.currentPage,//当前页码
                pageSize:state.filterData.maxResultCount,//每页条数
                skipCount:state.filterData.skipCount,//跳过多少条(可以不管 传0也行)
                totalCount:state.filterData.totalCount,//总页数
              }"
              :columns="state.columns">//table列的配置
      <!-- 插槽显示 -->
      <template slot-scope="{row}"
                slot="state">//针对某些列需要插槽的时候 必须要传对应列 key值 如果是要重定义列的header则传入header_ +key值
        <span>玉林路扛把子</span>
      </template>
    </ht-table>

4 columns列信息配置 

数据类型引入:

 import { Column } from "htui-yllkbz/src/packages/type";//里面具体类型跳转可以看
const column:Column =[
    {
      title: "工单名称",//列名称
      key: "workOrderName",//列key值 必须传且唯一
      width: "160px",//宽度
      hide: true,是否隐藏当前列
    //还有其他属性 通element的column属性
    },
    {
      title: "设备名称",
      key: "devices[0].deviceName",
      width: 150,
    },
    {
      title: "部门",
      key: "mainteabce.organizationUnitId",
    },

    {
      title: "执行人",
      key: "executor",
    },
    {
      title: "运行模型",
      key: "mainteabce.deviceInstanceModelName",
    },
    {
      title: "设备系统",
      sortable: "custom",
      key: "mainteabce.systemTypeName",
      minWidth: 100,
    },
    {
      title: "维保名称",
      key: "mainteabce.name",
      width: 170,
    },
    {
      title: "计划开始时间",
      key: "beginTime",
      width: 150,
     
      sortable: "custom",
      align: "center",
    },
    {
      title: "计划结束时间",
      key: "endTime",
    
      sortable: "custom",
      type: "time",
    },
    {
      title: "实际完成时间",
      key: "realEndTime",
      width: 150,
      
      sortable: "custom",
      align: "center",
    },
    {
      title: "创建时间",
      key: "creationTime",
     
      width: 150,
      sortable: "custom",
      align: "center",
    },
    {
      title: "任务状态",
      key: "state",
    },
    {
      title: "操作",
      key: "handel",
      width: show ? 180 : 160,
    },
  ]

最后附上npm地址:htui-yllkbz - npm## 安装使用https://www.npmjs.com/package/htui-yllkbz

码云地址:

玉林路扛把子/玉林路扛把子UI库https://gitee.com/yulin-road-shoulder/htui-yllkbz


http://www.niftyadmin.cn/n/1409429.html

相关文章

vue 封装的简易倒计时 ,提供暂停和启动服务

可以通过传入三个参数来控制 time 倒计时一共多少秒 date 倒计时到哪一天 从今天开始计算 start是否启动/暂停倒计时 默认是启动 1先安装依赖玉林路扛把子的npm包 htui-yllkbz yarn add htui-yllkbz 2.在本地引入ui库 import HtUi from "htui-yllkbz"; import…

select distinct_万能select

一、记录要点1.select <列名><列名> from <表名>2.*可以代表所有列3.用as 设置别名&#xff0c;如select 姓名 as s_name, 姓名 as 人类性别 from student4.distinct&#xff08;用来删除一列中的重复数据&#xff09;,单列之前&#xff0c;是select distinc…

【已解决】React Ant Design如何更改主题颜色

React Ant Design如何更改主题颜色 1.开发环境:修改webpack.config.dev.js loaders:[ // 解析 less 文件&#xff0c;并加入变量覆盖配置 { test: /\.less$/, loader: style!css!postcss!less?{modifyVars:{"primary-color":"#00CC66&qu…

gtihub第二次上传项目_《使用 CODING 进行 SpringBoot 项目的持续集成》

持续集成的概念持续集成(Continuous integration,简称 CI&#xff09;是一种软件开发实践&#xff0c;即团队开发成员经常集成他们的工作&#xff0c;通常每个成员每天至少集成一次&#xff0c;也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建&#xff08;包括编…

html延迟执行_RabbitMQ实现延迟消息居然如此简单,整个插件就完事了

插件安装首先我们需要下载并安装RabbitMQ的延迟插件。去RabbitMQ的官网下载插件&#xff0c;插件地址&#xff1a;https://www.rabbitmq.com/community-plugins.html直接搜索rabbitmq_delayed_message_exchange即可找到我们需要下载的插件&#xff0c;下载和RabbitMQ配套的版本…

【已解决】React如何通过路由重新加载当前页面 Warning: You cannot PUSH the same path using hash history

在当前页面点击按钮想重新加载却发现react不刷新当前页面,提示Warning: You cannot PUSH the same path using hash history 解决方法:只需要新建一个空白页面.先跳转到空白页面.再从空白页面跳转到当前页面即可index.jsx页面执行:hashHistory.push({ pathname:…

如何通过JavaScript给朋友发送请帖(即发送邮件)

1.邮件方法封装----记得先安装nodemailer const nodemailer require(nodemailer); //引入模块 let transporter nodemailer.createTransport({//node_modules/nodemailer/lib/well-known/services.json 查看相关的配置&#xff0c;如果使用qq邮箱&#xff0c;就查看qq邮箱的…

c语言大型软件设计的面向对象_Life is short,you need Python——Python面向对象(一)...

面向对象&#xff08;Object oriented Programming&#xff0c;OOP&#xff09;编程的思想主要是针对大型软件设计而来的。面向对象编程使程序的扩展性更强、可读性更好&#xff0c;使的编程可以像搭积木一样简单。面向对象编程将数据和操作数据相关的方法封装到对象中&#xf…