Skip to content

VTablePro 表格

何时使用

提示

本组件使用 ref 指令获取组件方法并且更新组件 必填valueId唯一ID 此组件序列号默认展示,序列号无法关闭,设置图标可以对列进行 置顶或显/隐操作

写ts需要类型时:

import { VTablePro } from "@nexacore/vantage";

const TableRef = ref<InstanceType<typeof VTablePro > | null>(null)

vue
<template>
  <!-- value-id为请求数据体的唯一id如没有唯一id组件将无法正常工作 -->
  <v-table-pro ref="TableRef" value-id="id"></v-table-pro>
</template>
<script setUp lang="ts">
//需要先等待组件加载完毕才可以使用TableRef方法
// import { VTablePro } from "@nexacore/vantage";
// const TableRef = ref<InstanceType<typeof VTablePro> | null>(null)
</script>

column参数如下

vue
<script setup lang="ts">
  // 定义列配置接口 column参数如下
  interface ColumnConfig {
    // 数据字段名
    prop?: string
    // 列标题
    label: string 
    // 列宽度
    width?: string | number 
    // 最小宽度
    minWidth?: number
    // 对齐方式
    align?: "left" | "center" | "right"
    // 特殊列类型
    type?: "selection" | "index" | "expand"
    // 格式化函数
    formatter?: (row: any, column: TableColumnCtx, cellValue: any, index: number) => VNode | string
    //废弃
    slots?: boolean
    // 嵌套表头
    children?: ColumnConfig[]
    //如果单元格是可以点击修改的
    cellClickModify?: boolean
    //是否必填
    required?: boolean 
    //校验方法
    requiredFun?: () => void
    //自定义警告校验
    requireText?: string
     //是否置顶
    fixed?: "left" | "right" | boolean
    //是否隐藏显示
    hidden?: boolean
    //排序按照 字符串 或整型 或 时间来排序
    sortType?: "string" | "number" | "data"
    //operation是否关闭当前列操作
    operation?: boolean
    //值集地址
    lovCode: string
    //值集key
    labelKey: string
    //值集value
    valueKey: string
    //是否属于vpage
    vPage?:boolean
    //是否有输入框 输入框类型 目前只有
    cellClickModifyType?:"select" | "input"
  }

    //带值集 或则默认输入框下拉框的 table
  // TableRef.value?.columnRef([
  //   {
  //     prop: "name",
  //     label: "值集下拉",
  //     lovCode: "/base/lov/getLov/automotivesteel.PACK_STATUS",
  //     labelKey: "value",
  //     valueKey: "meaning",
  //     cellClickModify:true,
  //     cellClickModifyType: "select",
  //     slots: true,
  //   },
  //   {
  //     prop: "select1",
  //     label: "无值集下拉",
  //     cellClickModifyType: "select",
  //     cellClickModify:true,
  //     List: [
  //       {
  //         value: "10",
  //         label: "我是1",
  //       },
  //       {
  //         value: "20",
  //         label: "我是2",
  //       },
  //     ],
  //     slots: true,
  //   },
  //   {
  //     prop: "age",
  //     cellClickModifyType: "input",
  //     cellClickModify:true,
  //     label: "普通下拉框",
  //   },
  // ]);
  
</script>

vtable的基础功能

vtable的序号列 头部为⚙️ 此为列:显/隐和左/右置顶。功能,无法隐藏无法关闭 serialNumber 序号方法会返回对列的操作后重新生成的colunm信息方便用户存储到数据库里 具体信息请打开控制台查看 也可以通过 TableRef.value?.serialNumber()方法在任意地方获取列信息。 通过#header_prop重写表头插槽比如姓名的propname 那么插槽就应该是 <template #header_name ></template> 即可重写插槽

前端分页

提示

组件会对返回来的每一条数据添加pagination 为true即可

注入 column 表头

注入 data 数组

测试默认铺满高度

合计功能

table配合分页功能

pagesizeUpdate 为分页变化后返回给用户新的分页数据 用户进行请求 请修改组件为v-model方便组件更改数据结构 v-model:page-size="start.pagesize" v-model:current="start.currentpage"

自定义表内容

仿el-table-column 如果需要自定义列请给那个列传入slots:true 开启此功能

点击展示输入框(带校验功能)

cellClickModifyslots功能互不干扰 但是点击当前内容体会默认切换到 cellClickModify_prop的插槽里, 仿el-table-column 如果需要自定义列请给那个列传入 requiredFun 方法可以根据当前行的所有数据发生变更进行校验详情看代码内容 requiredFun 方法返回 true为错误 显示提示语句 false为成功删除提示语句

虚拟滚动

虚拟滚动-延迟拖影优化

多选

虚拟滚动配合多选,必填valueId唯一ID,此多选默认不会清空选中数据需要用户手动进行清空

单选

虚拟滚动配合单选,必填valueId唯一ID,此单选默认不会清空选中数据需要用户手动进行清空

多表头

支持无限嵌套children序列 并且虚拟滚动等其他功能完美支持

合并行或列

TablePro 参数

####继承官网所有属性 el-table官网文档外网

插槽说明类型
valueId必填,数据唯一IDstring
type是否单选多选checkBox|radio
heighttable高度不传的话默认铺满剩余高度number
pagesize是否显示分页boolean
pagesizeUpdate分页发生变化的监听()=>{ return { currentPage: number; pageSize: number,total:number } }
tableLoading控制是否加载boolean
selected获取选中的key和对应的选中数组()=>{ return {selectKey:valueId[],selectObj:object[]} }
selectUpdate外部控制选中需要传唯一ID数组 单选多选都可以传 单选只会拿数组下标为0的数据,valueId[](selectList:string[])=>void
interlacingColors隔行变色颜色string 传入颜色字符串
interlacingColorsDark隔行变色颜色夜间模式string 传入颜色字符串
hoverColorsRow鼠标移入变色string 传入颜色字符串
hoverColorsRowDark鼠标移入变色夜间模式string 传入颜色字符串
SelectedColors选中变色string 传入颜色字符串
SelectedColorsDark选中变色夜间模式string 传入颜色字符串
amounto合计小记传入对象aggregate后端返回的合计信息,Notes是需要展示小计的列信息{aggregate: {age: 500},Notes: ["age"]}

ref插槽

插槽说明类型
dataVerify获取全部行修改后的data信息通过行标记 del(删除)initial(无操作)modify(修改)add(新增)res.dataVerify
modify返回原始数据 可以通过 ref.modify(id)标记当前行为前端修改行 id可以为'id'或[id,id,id]或res.selected()(id)=>void
del返回原始数据 可以通过 ref.modify(id)标记当前行为前端删除行 id可以为'id'或[id,id,id]或res.selected()(id)=>void
dataIndex返回原始数据 可以通过 ref.dataIndex(id)获取当前id对应的数据下标(id)=>number
data返回原始数据 可以通过 ref.data[0].name='修改' 或者console.log(ref.data)打印ref(object)
rulesListFun如果行可以修改可以通过此方法对当前行或者所有选中等数据进行必填校验(str?: number
columnRef如果只返回了 index并且值是数组那代表他是更新数据 否则如果attribute返回的是对象 代表根据index下标覆盖当前整行数据 否则如果attribute是字符串那么代表覆盖对象的那个值(index: number
columnPush末尾追加表头object
columnSplice针对表头原生的数组操作splice功能,splice 传参跟splice一致(index: number, index2: number, str1: any, str2: any)
dataRef如果只返回了 index并且值是数组那代表他是更新数据 否则如果attribute返回的是对象 代表根据index下标覆盖当前整行数据 否则如果attribute是字符串那么代表覆盖对象的那个值(index: number
dataSplice针对数据原生的数组操作splice功能,splice 传参跟splice一致(index: number, index2: number, str1: any, str2: any)
dataPush末尾追加内容dataPush追加的数据为虚拟数据将会强制删除valueId并且转换为虚拟IDobject 或[object,object]
tableLoading控制是否加载boolean
selected获取选中的key和对应的选中数组()=>{ return {selectKey:valueId[],selectObj:object[]} }
selectUpdate外部控制选中需要传唯一ID数组,valueId[](selectList:string[])=>void
serialNumber获取列信息column()=>[{prop,label,hidden,fixed}]