更新记录

0.0.0(2026-04-22) 下载此版本

好的,根据你的要求,以下为版本 0.0.0 的更新日志内容,可直接追加到插件根目录的 changelog.md 文件中,与插件市场自动同步。


## [0.0.0] - 2026-04-21

### 

平台兼容性

HbuilderX/cli最低兼容版本
2.7.0

HBuilderX插件通用注意事项

HBuilderX-2.7.12以下版本安装插件市场内的插件后,卸载时需手动卸载,详细教程参考:如何手动卸载插件


# xq-table-plus (即组合了 xq-tablexq-pagination 的增强组件)的全部特性、配置、方法和示例。


xq-table-plus 组合表格组件

xq-table-plus 是一个集成了 增强表格 (xq-table)分页器 (xq-pagination) 的 uni-app 组合组件。它旨在为后台管理系统提供一站式的数据展示与交互解决方案,只需少量配置即可拥有:

  • ✅ 自定义全选/半选样式
  • ✅ 列显示隐藏 + 本地记忆
  • ✅ 排序、筛选事件代理
  • ✅ 跨端文本溢出省略
  • ✅ 灵活的分页布局

📦 安装与引入

组件采用 easycom 规范,将整个文件夹放入项目 uni_modules/ 目录即可自动识别,无需手动 import

components/
├── xq-table/
│   ├── index.vue
│   └── utils.js
├── xq-pagination/
│   └── index.vue
└── xq-table-plus/
    └── index.vue      # 本组件

依赖 @dcloudio/uni-ui 中的 uni-tableuni-iconsuni-popupuni-tooltipuni-data-picker。请确保项目已安装或通过插件市场导入时自动安装。


🚀 快速开始

<template>
  <xq-table-plus
    v-model:columns="columns"
    v-model:current-page="currentPage"
    v-model:page-size="pageSize"
    :table-data="tableData"
    :total="total"
    type="selection"
    row-key="id"
    local-cloumn-keys="user_table"
    @selection-change=""
    @current-change="onPageChange"
  />
</template>

<script setup>
import { ref } from 'vue'

const columns = ref([
  { prop: 'name', label: '姓名', width: 100 },
  { prop: 'age', label: '年龄', sortable: true },
  { prop: 'status', label: '状态', slot: 'status' }
])

const tableData = ref([])
const total = ref(0)
const currentPage = ref(1)
const pageSize = ref(10)

const  = (rows) => console.log('选中行:', rows)
const onPageChange = (page) => fetchData(page)
</script>

⚙️ Props

表格相关(xq-table)

参数 类型 默认值 说明
v-model:columns Array [] 列配置数组,支持双向绑定
tableData Array [] 表格数据源
type String '' 设为 'selection' 开启自定义多选列
rowKey String '' 行唯一标识字段,多选时建议提供
selectionKey String '_checked' 选中状态在行数据中的字段名
border Boolean true 是否显示纵向边框
stripe Boolean true 是否显示斑马纹
loading Boolean false 是否显示加载中
emptyText String '暂无数据' 无数据时的提示文本
index Boolean true 是否显示序号列(自动从 1 开始)
localCloumnKeys String '' 本地存储列配置的 key,传入即自动保存/读取

分页相关(xq-pagination)

参数 类型 默认值 说明
v-model:currentPage Number 1 当前页码,支持双向绑定
v-model:pageSize Number 10 每页条数,支持双向绑定
total Number 0 总数据条数
pageSizes Array [10,20,30,50,100] 每页条数可选项
layout String 'prev,pager,next,ct,sizes,pages,total' 分页功能块排列顺序(见下方说明)
background Boolean false 页码按钮是否添加背景色
disabled Boolean false 是否禁用分页器

layout 可用标识

标识 说明
total 总条数
sizes 每页条数下拉选择器
pages 第几页下拉选择器
prev 上一页按钮
pager 页码列表(带省略号)
next 下一页按钮
ct 当前页/总页数(如 1/10

标识的顺序决定了它们在分页栏中的排列顺序。


📤 Events

事件名 参数 说明
selection-change (rows) 选中行变化时触发,返回选中行数组
sort-change { column, event } 点击排序时触发
filter-change { column, event } 筛选条件变化时触发
size-change (pageSize) 每页条数改变时触发
current-change (currentPage) 当前页码改变时触发
update:columns (newColumns) 列配置变化时触发(v-model 自动处理)
update:currentPage (page) 页码更新时触发(v-model 自动处理)
update:pageSize (size) 每页条数更新时触发(v-model 自动处理)

🧩 Slots

通过列配置中的 slot 字段定义插槽名,然后在组件内使用对应名称的插槽自定义单元格内容。

<template>
  <xq-table-plus :columns="columns" :table-data="tableData">
    <template #status="{ row }">
      <u-tag v-if="row.status === '0'" text="启用" type="success" />
      <u-tag v-else text="禁用" type="error" />
    </template>
  </xq-table-plus>
</template>
插槽名 作用域 说明
动态插槽(如 status { row, column, rowIndex } 根据列配置的 slot 生成,用于渲染自定义列内容

🛠️ 方法 (通过 ref 调用)

方法名 参数 说明
selectionAll() - 选中全部行
toggleRowSelection(arrIndex, selected?) arrIndex: [行索引]
selected: 可选,强制指定选中状态
切换指定索引行的选中状态
clearSelection() - 清空所有选中行
toggleAllSelection() - 反转所有行的选中状态
getSelectionRows() - 获取当前所有选中的行数据

调用示例

const tableRef = ref(null)
tableRef.value.selectionAll()
tableRef.value.toggleRowSelection([0])      // 切换第一行
tableRef.value.clearSelection()

📋 列配置详解 (columns)

每个列对象支持的属性如下:

属性 类型 默认值 说明
prop String - 对应数据字段名
label String - 表头显示文本
visible Boolean true 是否显示该列
width Number - 列宽(单位 px
minWidth Number - 最小宽度(单位 rpx
tooltip Boolean true 内容溢出时是否显示气泡提示
align String 'center' 对齐方式
thAlign / tdAlign String 继承 align 单独控制表头/单元格对齐
disabled Boolean false 在列显隐弹窗中是否禁止取消勾选
slot String - 自定义插槽名
sortable Boolean false 是否可排序
filterType String - 筛选类型,如 'select'
filterData Array [] 筛选选项数据
events Object - 事件回调集合,键为事件名

events 示例

{
  prop: 'postId',
  sortable: true,
  events: {
    'sort-change': ({ column, event }) => {
      console.log(`排序字段: ${column.prop}, 顺序: ${event.order}`)
    }
  }
}

🌐 跨端文本省略

组件内置了 u-line-1u-line-5 样式类,可直接用于表格单元格内容的多行省略:

<text class="u-line-2">{{ veryLongText }}</text>
  • 非 nvue:使用 -webkit-line-clamp 实现
  • nvue:使用 lines 属性适配

📱 平台兼容性

平台 支持情况
H5
微信小程序
App-Vue
App-nvue
支付宝/百度/字节小程序

📄 完整示例

<template>
  <view>
    <xq-table-plus
      ref="tableRef"
      v-model:columns="columns"
      v-model:current-page="currentPage"
      v-model:page-size="pageSize"
      :table-data="tableData"
      :total="total"
      type="selection"
      row-key="id"
      local-cloumn-keys="demo_table"
      layout="total, sizes, prev, pager, next, ct"
      @selection-change=""
      @current-change="fetchData"
    >
      <template #status="{ row }">
        <u-tag :text="row.status === '0' ? '启用' : '禁用'" :type="row.status === '0' ? 'success' : 'error'" />
      </template>
    </xq-table-plus>

    <button @click="handleClear">清空选中</button>
  </view>
</template>

<script setup>
import { ref, onMounted } from 'vue'

const tableRef = ref(null)
const columns = ref([
  { prop: 'name', label: '姓名', width: 100 },
  { prop: 'status', label: '状态', slot: 'status' }
])
const tableData = ref([])
const total = ref(0)
const currentPage = ref(1)
const pageSize = ref(10)

const fetchData = (page = 1) => {
  // 模拟请求
  setTimeout(() => {
    tableData.value = [
      { id: 1, name: '张三', status: '0' },
      { id: 2, name: '李四', status: '1' }
    ]
    total.value = 100
  }, 300)
}

onMounted(() => fetchData())

const  = (rows) => console.log('选中:', rows)

const handleClear = () => tableRef.value.clearSelection()
</script>

🔗 相关链接

  • xq-table 独立文档:参考 xq-tablexq-table 组件内的 README
  • xq-pagination 独立文档:参考 xq-paginationxq-pagination 组件内的 README
  • 问题反馈:请在插件市场评论区或 GitHub Issues 留言

文档版本:v1.0.0
最后更新:2026-04-22

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。