uniapp:mosowe-table高级表格组件

演示地址
下载地址

为偷懒而开发:

  1. 多级表头,默认子集占父级宽度50%,flex布局
  2. 根据设置自动生成搜索区
  3. 搜索区可设置默认展开/收起
  4. 可以设置左右固定列,多选框及索引列默认左侧固定
  5. 用户可自主设置展示列
  6. 组件内部翻页、刷新及搜索事件处理
  7. 组件内flex垂直布局模式
  8. 透传uni-table的props,events
  9. 内置常用表单按钮,emits返回相关数据
  10. 丰富的slots
  11. 可单选,多选

依赖

uni-table
uni-pagination
mosowe-form
mosowe-dropdown

props

属性类型默认说明
columncolumnItem[]-列配置,排列顺序即为表格顺序
localDataarray本地数据列表,与requestMethod不能同时为空,优先级最高
requestMethodfunction数据获取的方法,接受一个promise返回的方法,其then方法的回调参数res={code,data,msg}格式,data包含了dataListKeydataTotalKey,若不满足可以使用initBefore处理
autoRequestbooleantrue是否自动请求数据,即页面加载完就请求
rowOperationrowOperation[]表格行末尾的操作选项列表,即操作列
rowOperationWidthstring100操作列宽度
tablePropsobject表格uni-table的props配置,loading属性无效,已被组件内部处理了,如需请使用ref调用
titlestring左上角表格名称
initBeforefunction表格通过requestMethod获取数据后渲染页面前数据处理,参数为接口返回数据res,return值为{list,total}结构,list、total为固定字段
dataListKeystringlistrequestMethod时数据列表的键名
dataTotalKeystringtotalrequestMethod时数据总数的键名
toolbarboolean/toolbarStringtrue表格常用工具展示,默认true展示全部,false不展示,值为toolbarString时展示相关按钮,多个英文逗号分隔
paginationboolean/paginationConfigtrue分页器配置,默认true显示,组件默认配置为{current:1,pageSize:10},false不展示,翻页功能添加了节流处理,点击翻页300ms后请求数据
defaultOpenSearchboolean/numberfalse是否默认展开搜索区,或者默认展开多少项,配置为number的时候,默认显示‘收起’按钮,点击收起的时候,只展示一行
autoHeightbooleanfalse不限制高度,自动增加
maxHeightstring-最大高度,低于最大高度的时候,高度自适应,优先级高于autoHeight
showIndexbooleanfalse显示序号
exportSelectConfigexportSelectConfigObject导出已选配置
radiobooleanfalsetableProps.type === 'selection'时单选,单选时只能在当前页选中,跨页清空

注意

  1. 组件内部使用flex垂直布局,最外层元素宽高设置为100%,所以建议组件的父级元素应该设置固定高度,且y轴可滚动。
  2. 可通过ref操作uni-table等组件methods

columnItem

属性类型可选说明
textstring列表头名称
valuestring列单元格键名
widthstring单元格宽度
fixedstringleft/right固定位置,多选和序号固定在左侧,只针对一级表头,该项设置时列宽度默认100px
hideInTableboolean在表格中不显示,仅一级表头生效
mustShowboolean该列在表中必须展示,不能被用户隐藏,仅一级表头生效
alignstringleft/center/right表头对齐方式
filter-typestringsearch/select/range/date筛选类型,仅一级表头生效,search关键字搜索,select类别选择
filter-dataarray筛选数据,仅一级表头生效
sortableboolean是否启用排序,仅一级表头生效
searchOrdernumber在搜索区的排列权重,越大越靠前
searchboolean/searchConfig是否可搜索,默认false,为true会根据是否包含enum字段选择显示input还是select
enumenumItem[]枚举数组,若列表数据字段为enum的value,则会自动替换展示enum的text
childrencolumnItem[]子表头

rowOperation

属性类型可选说明
textstring按钮文案
clickfunction按钮点击事件,回调参数为行数据
isShowboolean是否显示,用于权限配置
typestringtext/button按钮类型
configobjecttype=button的props配置,或type=text时文字颜色等样式设置

tableProps

属性类型默认说明
borderbooleanfalse是否带有纵向边框
stripebooleantrue是否显示斑马线样式
typestring值为type=“selection” 时开启多选
emptyTextstring没有更多数据空数据时显示的文本内容

toolbarString

说明
export导出按钮,默认文案:导出
exportChoose导出已选按钮,默认文案:导出已选,组件内置导出功能,导出原始表格列表数据,与右上角列显隐无关,多级表头只导出子集表头,有配置enum的会转文案后输出
add新增按钮,默认文案:新增
download下载模板按钮,默认文案:下载模板
upload导入按钮,默认文案:导入数据
delete删除按钮,表格可选择时生效,默认文案:删除已选
column列布局展示按钮
refresh刷新按钮

paginationConfig

属性类型默认说明
prevTextstring上一页左侧按钮文字
nextTextstring下一页右侧按钮文字
pageSizenumber10每页数据量
showIconbooleanfalse是否以icon形式展示按钮,即‘上一页’‘下一页’变为图标形式

searchConfig

参考mosowe-formnameConfig配置,其中col,hide,visible配置无效

enumItem

属性类型说明
textstring文案
valuestring|number

exportSelectConfigObject

属性类型说明
typestring导出类型,支持:xls,html,csv,默认xls
filenamestring导出文件名称,优先级 > title,都没有就默认时间戳

emits

事件说明
onSearchChange搜索区表单项值改变时,回调参数为name及值
onExport导出按钮点击事件,回调参数为查询参数,导出功能的传参需要搜索区点击查询后方能生效
onAdd新增按钮点击事件
onDownload下载按钮点击事件,回调参数为查询参数
onUpload导入数据按钮点击事件
onDelete删除已选按钮点击事件,回调参数为表格已选数据列表
onSelectionChange多选时选项改变事件,回调参数为已选数据列表
onSortChangeth点击排序,回调参数obj
onFilterChangeth点击筛选,回调参数obj

slots

slot说明
search搜索区插槽
toolbar工具栏区插槽,作用域参数为{selectData,searchQuery}
toolbarLeft工具栏左侧区插槽,作用域参数为{selectData,searchQuery},包含了title,export,add,download,delete按钮
toolbarRight工具栏右侧区插槽,作用域参数为{selectData,searchQuery},包含了column,refresh按钮
rowOperation表格行操作栏插槽,作用域参数为{index,rowData}
more工具栏上方,搜索区下方插槽
under分页下方底部区插槽
paginationLeft分页区左侧插槽
[columnItem.value]Header表格头部插槽,一级表头有效,作用域参数为{index,colnum}
[columnItem.value]Default表格单元插槽,一级表头有效,作用域参数为{index,rowData,colnum}

示例代码

<template>
  <mosowe-table
    :column="column"
    :requestMethod="requestMethod"
    dataListKey="content"
    dataTotalKey="totalCount"
    rowOperationWidth="100"
    showIndex
    :tableProps="{
      type: 'selection'
    }"
    :rowOperation="rowOperation"
    @onAdd="onAdd"
    @onDelete="onDelete"
    @onSelectionChange="selectionChange"
    @onSortChange="onSortChange"
    @onSearchChange="onSearchChange"
  ></mosowe-table>
</template>

<script setup lang="ts">
import { ref } from 'vue';
const app = getApp().globalData;
app?.checkLogin();

const requestMethod = (query: any) => {
  return new Promise((resolve) => {
    console.log('query', query);
    setTimeout(() => {
      resolve({
        code: 0,
        data: {
          content: Array.from({ length: query.pageSize }).map((_, index) => {
            return {
              name: '测试' + Date.now().toString().substring(9) + '-' + index,
              name2: '测试2',
              sex: index % 3,
              age: 20,
              date: Date.now()
            };
          }),
          totalCount: 100
        },
        msg: ''
      });
    }, 1000);
  });
};

const initBefore = (data: any) => {
  return {
    list: data.data.list.map((item: any) => ({ ...item, name: '我改了' })),
    total: data.data.total
  };
};
const onSortChange = (obj: any) =>{
  console.log('onSortChange',obj)
}

const selectionChange = (data: any) => {
  console.log('selectionChange',data)
}

const localData = Array.from({ length: 50 }).map((_, index) => {
  return {
    name: '测试',
    name2: '测试2',
    sex: index % 3,
    age: 20,
    date: Date.now()
  };
});
const rowOperation = [
  {
    text: '编辑',
    type: 'text',
    isShow: true,
    config: {
      color: '#409eff'
    },
    click: (row: any) => {
      console.log('编辑', row);
    }
  },
  {
    text: '删除',
    type: 'text',
    isShow: true,
    config: {
      sizi: 'mini',
      type: 'primary',
      style: {
        height: '20px',
        lineHeight: '20px',
        fontSize: '12px'
      }
    },
    click: (row: any) => {
      console.log('删除', row);
    }
  }
];

const onSearchChange = (name: any,value: any) => {
  console.log(name,value)
  if (name ==='name') {
    column.value[2].enum = [
      {
        text: '男',
        value: 0
      },
      {
        text: '女',
        value: 1
      }
    ]
  }
}

const column = ref([
  {
    text: '姓名',
    value: 'name',
    fixed: 'right',
    sortable: true,
    search: {
      type:'input',
      unionName: 'date=2023-02-01'
    }
  },
  {
    text: '姓名2',
    value: 'name2',
    width:'150',
    fixed: 'right'
  },
  {
    text: '性别',
    value: 'sex',
    width: '300',
    search: true,
    enum: [
      {
        text: '男',
        value: 0
      },
      {
        text: '女',
        value: 1
      },
      {
        text: '未知',
        value: 2
      }
    ]
  },
  {
    text: '年龄',
    value: 'age',
    search: true,
  },
  {
    text: '创建时间',
    value: 'date',
    searchOrder:12,
    search: {
      type: 'date',
      defaultValue: '2021-02-1',
      transform:(value: any)=>{
        return {
          time: value
        }
      }
    }
  }
]);

const onAdd = () => {
  console.log('onAdd');
};
const onDelete = (data: any) => {
  console.log('onDelete', data);
};
</script>

<style lang="scss" scoped></style>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
vxe-table是一个基于vue的表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、模态窗口、自定义模板、灵活的配置项、丰富的扩展插件等... 设计理念: 面向现代浏览器,高效的简洁 API 设计 模块化表格、按需加载、插件化扩展 为单行编辑表格而设计,支持增删改查及更多扩展,强大的功能的同时兼具性能 功能: Basic table (基础表格) Grid (高级表格) Size (尺寸) Striped (斑马线条纹) Table with border (带边框) Cell style (单元格样式) Column resizable (列宽拖动) Maximum table height (最大高度) Resize height and width (响应式宽高) Fixed column (固定列) Grouping table head (表头分组) Highlight row and column (高亮行、列) Table sequence (序号) Radio (单选) Checkbox (多选) Sorting (排序) Filter (筛选) Rowspan and colspan (合并行或列) Footer summary (表尾合计) Import (导入) Export (导出) Print (打印) Show/Hide column (显示/隐藏列) Loading (加载中) Formatted content (格式化内容) Custom template (自定义模板) Context menu(快捷菜单) Virtual Scroller(虚拟滚动) Expandable row (展开行) Pager(分页) Form(表单) Toolbar(工具栏) Tree table (树形表格) Editable CRUD(增删改查) Validate(数据校验) Data Proxy(数据代理) Keyboard navigation(键盘导航) Modal window(模态窗口) Charts(图表工具) 更新日志: v4.0.20 table 修改单选框、复选框获取值错误问题 grid 修复 KeepAlive 中报错问题
uniappuni-table表格的使用可以通过设置rowspan和colspan参数来实现合并单元格的效果。这些参数可以直接在代码中使用,通过设置对应的值来控制合并的行数和列数。[1]举个例子,可以在uni-th标签中设置rowspan和colspan来合并单元格。比如,设置rowspan="3"表示该单元格纵向合并3行,而设置colspan="2"表示横向合并2列。这样就可以实现表格中的合并效果。 此外,uni-table还提供了一些关键的代码来实现其他功能。比如,可以使用toggleRowSelection方法来选中指定行的数据。通过传入选中行的index下标数组,可以在页面渲染完成后使用$nextTick方法调用toggleRowSelection来实现选中操作。这样就可以实现在uni-table中选中特定行的功能。 综上所述,uniappuni-table表格可以通过设置rowspan和colspan参数来实现合并单元格,同时还可以使用关键代码来实现其他功能,如选中行等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [uniapp uni-table表格组件 合并单元格](https://blog.csdn.net/qq_17627195/article/details/130227353)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [uniapp uni ui uni-table表格 回显](https://blog.csdn.net/qq_22182989/article/details/129143508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mosowe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值