@scenetechnology/cj_iview_table

iview 2.0 表格组件
4,018
Install
npm install @scenetechnology/cj_iview_table@0.0.75
Latest Version:0.0.75
Vue:2
License:MIT
Last Updated:Sep 28, 2026
Links: npm
Maintainer: flysheep__

cj_iview_table

项目概述

cj_iview_table 是一个基于 Vue.js 和 ViewUI (原 iView) 的表格组件项目。该项目提供了增强的表格功能,简化了表格的使用和配置。

安装说明

环境要求

  • Node.js (建议 v12 或更高版本)
  • Yarn 包管理器

安装步骤

  1. 克隆或下载项目代码
  2. 在项目根目录运行以下命令安装依赖:
npm install @scenetechnology/cj_iview_table --legacy-peer-deps

引入

  1. 在main.js中 引入UI库 引入UI样式
import cj_iview_table from '@scenetechnology/cj_iview_table'
import '@scenetechnology/cj_iview_table/dist/cj_iview_table.css'
Vue.use(cj_iview_table)

2.在页面使用

<cj_iview_table :border="true" ref="proTable" :tool-bar="toolBar" @onToolBar="onToolBar" :request="getTableData" :columns="columns" maxHeight='550' :filterLabelWidth="100" ></cj_iview_table>

Customize configuration

See Configuration Reference.

Pro Table 组件文档

组件介绍

cj_iview_table 是一个功能强大的表格组件,支持筛选、排序、自定义列等高级特性。

基础用法

<cj_iview_table
  :columns="columns"
  :data="tableData"
  :loading="loading"
  :border="true"
/>

属性配置

基础属性

属性名 类型 默认值 说明
columns Array [] 表格列配置项
data Object - 表格数据源
loading Boolean false 加载状态
border Boolean false 是否显示边框
height String - 表格高度
maxHeight String - 最大高度
toolBar Array/Boolean true 工具栏配置
defaultSize Number - 默认分页大小
rowKey String/Boolean id 开启跨分页保留选中时使用的唯一键,支持如 id、user.id
selectedRowKeys Array [] 外部传入的已选 rowKey 列表,可用于页面返回后恢复勾选
selectedRows Array [] 外部传入的已选完整行数据,用于页面返回后直接恢复完整提交数据
reserveSelection Boolean false 是否保留跨分页、跨筛选/搜索的多选结果
filterGridSpan Number 6 筛选栏栅格跨度
filterLabelWidth Number 80 筛选标签宽度
fields Array [] 导出数据时需要包含的属性名

列配置项

每个column支持以下属性:

属性名 类型 说明
title String 列标题
key String 列数据字段
filter Boolean 是否可筛选
filterLable String 筛选项标签
valueType String 值类型(text/select/date/daterange/datetime/datetimerange/year)
valueEnum Array 选择项数据(valueType为select时有效)
hideInTable Boolean 是否在表格中隐藏
slot Boolean 是否使用自定义插槽

事件

事件名 说明 回调参数
on-change 分页、排序等变化时触发 (pagination, filters, sorter)
on-selection-change 当前页选中项变化时触发 (selection)
on-reserve-selection-change 开启 reserveSelection 后,所有已保留选中项变化时触发 (selection)
on-reserve-selection-keys-change 开启 reserveSelection 后,所有已保留选中的 rowKey 列表变化时触发 (selectedRowKeys)

插槽

插槽名 说明
toolbar 自定义工具栏
[column.key] 自定义列内容渲染

高级特性

1. 筛选功能

组件支持多种筛选类型:

  • 文本输入筛选
  • 下拉选择筛选
  • 日期选择筛选

2. 列设置

支持通过列设置功能动态控制表格显示列:

  • 列显示/隐藏
  • 列排序
  • 列固定

3. 数据请求

支持两种数据加载方式:

  • 通过data属性直接传入数据
  • 通过request函数异步加载数据

4. 跨分页保留选中

当表格包含 type: 'selection' 列时,可通过 reserveSelection 开启跨分页、跨搜索/筛选保留勾选。

<cj_iview_table
  :columns="columns"
  :request="loadData"
  row-key="id"
  :reserveSelection="true"
  @on-reserve-selection-change="handleSelectionChange"
/>

说明:

  • rowKey 必须能唯一标识一行数据,支持多级路径,例如 user.id
  • on-selection-change 返回的是当前页选中项
  • on-reserve-selection-change 返回的是所有分页/筛选范围内累计保留的选中项

5. 跨页面返回后恢复勾选

如果你会在离开列表页后再回来,需要由父页面自己保存已选 rowKey 列表,并在重新进入时通过 selectedRowKeys 传回组件。

<cj_iview_table
  :columns="columns"
  :request="loadData"
  row-key="id"
  :reserveSelection="true"
  :selectedRowKeys="savedSelectedRowKeys"
  :selectedRows="savedSelectedRows"
  @on-reserve-selection-change="handleReserveSelectionChange"
  @on-reserve-selection-keys-change="handleReserveSelectionKeysChange"
/>
export default {
  data () {
    return {
      savedSelectedRowKeys: JSON.parse(sessionStorage.getItem('table-selected-row-keys') || '[]'),
      savedSelectedRows: JSON.parse(sessionStorage.getItem('table-selected-rows') || '[]')
    }
  },
  methods: {
    handleReserveSelectionChange (selectedRows) {
      this.savedSelectedRows = selectedRows
      sessionStorage.setItem('table-selected-rows', JSON.stringify(selectedRows))
    },
    handleReserveSelectionKeysChange (selectedRowKeys) {
      this.savedSelectedRowKeys = selectedRowKeys
      sessionStorage.setItem('table-selected-row-keys', JSON.stringify(selectedRowKeys))
    }
  }
}

说明:

  • selectedRowKeys 传的是 rowKey 数组,不是整行数据
  • selectedRows 传的是之前保存下来的完整行数据,组件会优先用它恢复完整提交数据
  • 组件会在数据重新加载后自动按这些 key 回显勾选
  • 如果某些 key 在当前数据集中不存在,会被自动忽略
  • 如果你希望“进入页面不翻页也能直接提交全部已选数据”,需要同时传 selectedRowKeys 和 selectedRows

使用示例

<template>
  <cj_iview_table
    :columns="columns"
    :request="loadData"
    :toolBar="toolBarConfig"
  >
    <template #toolbar>
      <Button type="primary">自定义按钮</Button>
    </template>
  </cj_iview_table>
</template>

<script>
export default {
  data() {
    return {
      columns: [
        {
          title: '名称',
          key: 'name',
          filter: true
        },
        {
          title: '状态',
          key: 'status',
          valueType: 'select',
          valueEnum: [
            { value: 1, label: '正常' },
            { value: 0, label: '禁用' }
          ]
        }
      ],
      toolBarConfig: [
        { text: '新增', type: 'primary' }
      ]
    }
  },
  methods: {
    async loadData(params) {
      // 实现数据加载逻辑
    }
  }
}
</script>

注意事项

  1. 使用request函数加载数据时,返回的数据格式必须包含data和total字段
  2. 列的key值必须唯一
  3. 使用列设置功能时,必须给每列配置唯一的title值

Related Packages

vue

The progressive JavaScript framework for building modern web UI.

588,019,132 54,801
vue
@vueuse/shared
372,738,348 22,398
@vueuse/core

Collection of essential Vue Composition Utilities

367,188,523 22,398
@vitejs/plugin-vue

The official plugin for Vue SFC support in Vite.

333,357,380 686
eslint-plugin-vue

Official ESLint plugin for Vue.js

266,364,830 4,591

Version History

Version Released Vue License
0.0.75 ^2.6.0 MIT
0.0.74 ^2.6.0 MIT
0.0.73 ^2.6.0 MIT
0.0.72 ^2.6.0 MIT
0.0.71 ^2.6.0 MIT