vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例-汇总

news2024/11/26 11:37:37

github求⭐

可通过github 地址和npm 地址查看全部内容,范例Ⅰ、Ⅱ、Ⅲ、Ⅳ免VIP查阅

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅰ)配置项文档

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅱ)搜索及数据获取配置项

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅲ)列表项及分页器配置及props配置

vue3 依赖-组件tablepage-vue3说明文档,列表页快速开发,使用思路及范例(Ⅳ)其他配置项

目录

  • 引入
  • 思路介绍
  • 全文档模拟接口的数据结构
  • TablePage-vue3 API汇总
    • 属性
    • 插槽
    • Exposes
    • 自定义对象
      • searchConfig(array<object\> 类型)
        • searchConfig-type
        • 当type=times时
        • 当type不为时间类型时的 bind默认值(Object类型)
        • 当type为时间类型时的 bind默认值(Object类型)
      • props(object类型)
      • tableColumnList(array<object\> 类型)
  • 全文档的模拟接口结构
  • 搜索及数据获取配置项
    • 属性: noSearchModel(无表单搜索标识)
    • 属性:changeToSearch(表单change事件是否触发搜索 )
    • 属性: changeParams(参数预处理【可异步】 )
    • 属性: resetFun(重置触发【可异步】)
    • 属性: tableFileter(表格过渡效果【可异步】)
    • 属性: searchOver(搜索完成触发)
    • 插槽: buttonModel
    • 属性: searchConfig(搜索项设置)
      • key
      • label
      • noLabel
      • defaultValue
      • bind
      • childSlot
      • type
        • String类型数据(除 times 与 slot )
        • 字符串 times
        • 字符串 slot (及 配套 slotName 属性)
        • vue组件类型 VueComponent
  • 列表项及分页器配置
    • 属性 tableHeight
    • 属性 tableColumnList 与 插槽 default / 插槽 tableShow
      • 属性 tableColumnList
        • 嵌套多层级 child
        • 插槽 slotName
      • 插槽 default / 插槽 tableShow
      • 优先级
    • 属性 noPage
    • 属性 paginationProps
    • ElTable的其他相关属性
  • props配置
    • pageNumKey
    • pageSizeKey
    • totalKey
    • dataKey
    • pageNumInit
    • pageSizeInit
    • 总结
  • 其他配置项
    • title
    • noTitle
    • noMountedGetData
    • loading

引入

npm i element-plus
npm i tablepage-vue3

思路介绍

本组件是基于element-UI进行快速搭建搜索列表页的依赖,主干思路为:将异步接口声明到组件的tableApi属性,并将搜索项通过searchConfig声明给组件,将搜索、重置、分页的逻辑均交给组件内部去处理,达到最简化的代码实现,对于标准搜索列表页能够进行快速开发。
如下所示,便完成了一个标准搜索列表页的开发

<template>
  <table-page :searchConfig="searchConfig" :tableApi="getMessageList" >
    <template #default>
      <el-table-column type="index" label="序号" align="center" width="90" />
      <el-table-column prop="recieveUserName" label="接收人姓名" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="recieveUserPhone" label="接收人电话" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="content" label="内容" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="createTime" label="提交时间" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="sendTime" label="发送时间" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="recieveTime" label="送达时间" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="recieveStatusVal" label="送达状态" align="center" min-width="90" show-overflow-tooltip />
    </template>
  </table-page>
</template>
<script setup>
  import TablePage from 'tablepage-vue3'
  import {
      getMessageList } from '@/api/message' // 接口
  const searchConfig = [
    {
     
      label: '时间',
      type: 'times'
    },
    {
     
      label: '电话',
      key: 'phone'
    }
  ]
</script>
<style lang="scss" scoped></style>

在这里插入图片描述

全文档模拟接口的数据结构

  const getMessageList = () => ({
    total: 5,
    data: new Array(5).fill({ name: '张三', phone: '13x-xxxx-xxxx' })
  })

TablePage-vue3 API汇总

属性

属性名 说明 类型 默认值
tableApi [必填]表格api【可异步】 Function Promise.reject()
title 标题 String 当前route的meta?.title
noTitle 无标题标识 Boolean -
noPage 不显示分页器标识 Boolean -
noMountedGetData onMounted 不获取数据标识 ,为true时不会默认调用api接口,需要外部触发getList,但是分页和搜索仍会调用接口 Boolean -
loading 外部loading传入,与内部loading为<或>的关系 Boolean -
noSearchModel 无表单搜索标识 Boolean -
changeToSearch 表单change事件是否触发搜索 Boolean -
tableHeight 表格高度 Number/String 550
searchConfig 搜索项设置 Array []
changeParams 参数预处理【可异步】 Function (value) => value
resetFun 重置触发【可异步】 Function () => {}
tableFileter 表格过渡效果【可异步】 Function (list) => list
searchOver 搜索完成触发函数 Function ()=>{}
props 配置选项 Object {}
tableColumnList 表格列list【当default 或 tableShow插槽使用时,将不会使用tableColumnList进行渲染】 Array []
paginationProps 分页器配置选项【将element-ui中的pagination相关属性写进该对象里即可】 Object {}

插槽

插槽名 说明
buttonModel 按钮
default / tableShow 表格展示插槽【当default 或 tableShow插槽使用时,将不会使用tableColumnList进行渲染】
[你设定的slotName] 本组件内部使用了大量的动态组件,方便配置,可阅读文档自行设置插槽名

Exposes

值名 说明
searchHandler() 执行数据获取
resetHandler() 执行重置逻辑
queryParams 获取页面搜索参数
inputQueryParams 页面输入参数
getParams 接口查询参数
tableList 获取表格数据
TableRef tableRef对象

自定义对象

searchConfig(array<object> 类型)

属性名 说明 类型 默认值
key 字段key值,该值将作用于表单搜索时向接口所发送的字段key,当type为times时详见当type=times时 String -
type 详见下文 searchConfig-type String/vue3Component ‘input’
label 搜索表单标签文本 String -
noLabel 搜索表单无标签文本标识,为true时将不显示标签文本 Boolean false
bind 搜索表单搜索项属性绑定,将直接作用于搜索表单筛选框的绑定,当type为times时详见当type=times时 Object 默认值可详见当type不为时间类型时 bind默认值 与 当type为时间类型时 bind默认值
defaultValue 默认参数,当type为times时详见当type=times时 String -
slotName 插槽名称 将整个搜索项暴露给父页面进行使用 String -
childSlot 子插槽名,当组件结构为<el-select><el-option><\el-option></el-select>时,可将type设置为 select,通过子插槽渲染option String -
searchConfig-type

值 / 值类型 值详情 说明
‘times’ 文本times 将渲染分开为两个的时间筛选器,key、bind、defaultValue详见当type=times时
‘slot’ 文本slot 该搜索项将索引页面插槽进行渲染
String element相关组件标签文本(以<el-time-picker>为例:‘el-time-picker’|‘time-picker’|‘ElTimePicker’|‘TimePicker’均可) 将捕获element-UI相关组件,并通过v-model将值与页面搜索项进行绑定
类型为 VueComponent vue3组件对象 将该组件进行绑定并通过v-model绑定值,逻辑与主要处理的element-ui的相关标签保持一致
当type=times时

属性名 说明 类型 默认值
key 字段key值,该值将作用于表单搜索时向接口所发送的字段key,当type=times时字段固定 无法修改 startTime,endTime
startDefaultValue 开始时间默认参数 String -
endDefaultValue 结束时间默认参数 String -
startBind 开始时间属性绑定 Object 详见 当type为时间类型时 bind默认值
endBind 结束时间属性绑定 Object 详见 当type为时间类型时 bind默认值
当type不为时间类型时的 bind默认值(Object类型)

属性名 默认值
placeholder label的值
clearable true
style width: 200px
当type为时间类型时的 bind默认值(Object类型)

属性名 默认值
style width: 190px
type datetime
placeholder 请选择时间
format YYYY-MM-DD HH:mm:ss
valueFormat YYYY-MM-DD HH:mm:ss

props(object类型)

属性名 说明 类型 默认值
pageNumKey 接口调用时的当前页码字段 String page
pageSizeKey 接口调用时的每页显示条目个数字段 String limit
totalKey 接口调用时的总页数字段 String count
dataKey 接口调用时的列表数据字段 String data
pageNumInit 列表默认当前页码 Number 1
pageSizeInit 列表默认每页显示条目个数 Number 10

tableColumnList(array<object> 类型)

属性名 说明 类型 默认值
slotName 使用插槽嵌入tableColumn,并使用slotName为插槽key String -
align element-UI的 tableColumn中align字段复写默认值 String center
element-UI的 tableColumn中的字段均可直接声明
child 子tableColumn,嵌套tableColumn使用 Array -

全文档的模拟接口结构

  const getMessageList = () => ({
   
    total: 5,
    data: new Array(5).fill({
    name: '张三', phone: '13x-xxxx-xxxx' })
  })

搜索及数据获取配置项

属性: noSearchModel(无表单搜索标识)

该属性为true时,将不会显示表单项(以及属于表单的按钮项也不会显示),但是列表和属于列表的分页器将正常展示

<template>
  <table-page noSearchModel :searchConfig="searchConfig" :tableApi="getMessageList" >
    <template #default>
      <el-table-column type="index" label="序号" align="center" width="90" />
      <el-table-column prop="recieveUserName" label="接收人姓名" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="recieveUserPhone" label="接收人电话" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="content" label="内容" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="createTime" label="提交时间" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="sendTime" label="发送时间" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="recieveTime" label="送达时间" align="center" min-width="90" show-overflow-tooltip />
      <el-table-column prop="recieveStatusVal" label="送达状态" align="center" min-width="90" show-overflow-tooltip />
    </template>
  </table-page>
</template>
<script setup>
  import TablePage from 'tablepage-vue3'
  import {
      getMessageList } from '@/api/message' // 接口
  const searchConfig = [
    {
     
      label: '时间',
      type: 'times'
    },
    {
     
      label: '电话',
      type:'input',
      key: 'phone'
    }
  ]
</script>

在这里插入图片描述

属性:changeToSearch(表单change事件是否触发搜索 )


此属性为true时,当搜索项被触发change事件时,将会立即执行搜索逻辑,无需用户手动点击搜索按钮

<template>
  <table-page changeToSearch :searchConfig="searchConfig" :tableApi="getMessageList" >
    <template #default>
	...
	// 与前文一致,省略处理
	...
    </template>
  </table-page>
</template>
<script setup>
  import TablePage from 'tablepage-vue3'
  import {
      getMessageList } from '@/api/message' // 接口
  const searchConfig = 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1600044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Java EE] 多线程(一) :线程的创建与常用方法(上)

1. 认识线程 1.1 概念 1.1.1 什么是线程 ⼀个线程就是⼀个"执⾏流".每个线程之间都可以按照顺序执⾏⾃⼰的代码.多个线程之间"同时"执⾏ 着多份代码. 还是回到我们之前的银⾏的例⼦中。之前我们主要描述的是个⼈业务&#xff0c;即⼀个⼈完全处理⾃⼰的…

十大排序——9.桶排序

这篇文章我们来介绍一下桶排序 目录 1.介绍 2.代码实现 3.总结与思考 1.介绍 桶排序和计数排序一样&#xff0c;都不是基于比较进行排序的。 下面通过一个例子来理解一下桶排序吧。 首先&#xff0c;给你一个无序数组[ 20,18,28,66,25,31,67,30 ]&#xff0c;然后&#…

CANoe中LIN工程主节点的配置(如何切换调度表)

1&#xff1a;前置条件 1&#xff09;工程已经建立&#xff0c;simulation窗口已经配置好&#xff08;包括且不限于通道mappin好&#xff0c;数据库文件已经添加&#xff09; 2&#xff09;我已系统自带sampleCfg工程&#xff0c;作为例子。如下图 2 &#xff1a;主节点的配置…

普发Pfeiffer CCR263 CCR272 CMR261 CMR273 PBR260 IMR265 TPR265 使用说明手侧

普发Pfeiffer CCR263 CCR272 CMR261 CMR273 PBR260 IMR265 TPR265 使用说明手侧

PhpStorm2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 PhpStorm是由JetBrains公司开发的一款商业的PHP集成开发环境&#xff08;IDE&#xff09;&#xff0c;深受全球开发人员的喜爱。它旨在提高开发效率&#xff0c;通过深刻理解用户的编码习惯&#xff0c;提供智能代码补全、快速导…

线程终止操作

关于线程的终止&#xff0c;我们有两种方法来实现 1.使用一个标志位 private static boolean flag true;public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() -> {while (flag) {System.out.println("你好");}});//…

【C语言】带你完全理解指针(五)练习

复习一下对数组名的理解 数组名的理解 数组名是数组首元素的地址 但是有2个例外&#xff1a; 1. sizeof(数组名)&#xff0c;这里的数组名表示整个数组&#xff0c;计算的是整个数组的大小&#xff0c;单位是字节 2. &数组名&#xff0c;这里的数组名表示整个数组&#xff…

《六》输入组控件InputWidget---Combo Box

一、Qt 输入组控件(Input Widgets&#xff09; Qt Input Widgets是一组用户界面元素&#xff0c;用于输入和显示文字和数字等的数据。这些小部件可以组成各种不同的表单和对话框&#xff0c;用户可以使用这些小部件与程序交互。 以下是Qt Input Widgets的一些常见小部件&…

L2-3 完全二叉树的层序遍历

完全二叉树的层序遍历 一个二叉树&#xff0c;如果每一个层的结点数都达到最大值&#xff0c;则这个二叉树就是完美二叉树。对于深度为 D 的&#xff0c;有 N 个结点的二叉树&#xff0c;若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点&#xff0c;这样的树就是完全…

跟着Datawhale重学数据结构与算法

数据结构和算法之前学过&#xff0c;现在跟着Datawhale重学一下&#xff0c;就当是监督自己学习&#xff0c;重新拾起来养成一个好的习惯&#xff0c;以后可以一直坚持下去。 开源链接&#xff1a;【 教程地址 】【电子网站】 首先&#xff1a; #mermaid-svg-Cdr3rn9fGCVAiKS…

STM32-ADC(独立模式、双重模式)

ADC简介 18个通道&#xff1a;外部信号源就是16个GPIO回。在引脚上直接接模拟信号就行了&#xff0c;不需要侄何额外的电路。引脚就直接能测电压。2个内部信号源是内部温度传感器和内部参考电压。 逐次逼近型ADC: 它是一个独立的8位逐次逼近型ADC芯片&#xff0c;这个ADC0809是…

C语言 | 自定义类型:联合和枚举

目录&#xff1a; ----前言 1. 联合体 1.1 联合体类型的声明 1.2 联合体的特点 1.3 相同成员的结构体和联合体对比 1.4 联合体大小的计算 1.5 联合的使用 1.6联合体的练习 2. 枚举 2.1 枚举类型的声明 2.2 枚举类型的优点 2.3 枚举类型的使用 --前言&#xff1a; c语言中内…

String类的几个常用方法

描述 以下程序演示了String类的几个常用方法&#xff0c;包括比较字符串、取得字符串长度、拆分字符串、获取子串、字符串转换成字符数组、获取字符串位置、替换字符串等方法。 案例 public class StringTest {public static void main(String[] args) {//比较字符串String …

阿赵UE学习笔记——28、粒子系统Niagara简介

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的使用。这次开始学习粒子系统的使用。 一、Cascade系统 在介绍UE5的Niagara系统之前&#xff0c;必须先介绍一下旧版本的粒子系统。   在UE4的时候&#xff0c;虚幻引擎的粒子系统叫做Cascade&#x…

ubuntu 使用conda 创建虚拟环境总是报HTTP错误,转换多个镜像源之后仍报错

最近在使用Ubuntu conda创建虚拟环境时&#xff0c;总是报Http错误&#xff0c;如下图所示&#xff1a; 开始&#xff0c;我以为是conda 镜像源的问题&#xff0c;但是尝试了好几个镜像源都不行&#xff0c;还是报各种各样的HTTP错误。后来查阅很多&#xff0c;总算解决了。解…

数学建模--深入剖析线性规划(模型全方位解读+代码分析)

1.简介 &#xff08;1&#xff09;线性规划三要素 &#xff08;2&#xff09;模型适用赛题 2.典例讲解 &#xff08;1&#xff09;问题分析 目标函数是净收益尽可能大&#xff0c;风险尽可能小&#xff1b; 约束条件是交易费的分段函数&#xff0c;以及每一笔投资都是非负数&am…

【精读文献】Scientific data|2017-2021年中国10米玉米农田变化制图

论文名称&#xff1a;Mapping annual 10-m maize cropland changes in China during 2017–2021 第一作者及通讯作者&#xff1a;Xingang Li, Ying Qu 第一作者单位及通讯作者单位&#xff1a;北京师范大学地理学部 文章发表期刊&#xff1a;《Scientific data》&#xff08…

hot100 -- 链表(中)

不要觉得力扣核心代码模式麻烦&#xff0c;它确实比不上ACM模式舒服&#xff0c;可以自己处理输入输出 只是你对 链表 和 return 的理解不到位 &#x1f442; ▶ 屿前世 (163.com) &#x1f442; ▶ see you tomorrow (163.com) 目录 &#x1f382;两数相加 &#x1f6a9;删…

android不同版本(支持>10)获取当前连接的wifi名称

1、AndroidManifest.xml 配置权限 <uses-permission android:name"android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name"android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name&q…

Rust腐蚀服务器清档多教程

Rust腐蚀服务器清档多教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师。上期教了大家怎么搭建服务器以及安装插件等那么随着大家自己架设服或是玩耍的时间肯定会有小伙伴想要去新增开区数量或是把原本的服务器进行一些调整等&#xff0c;那么今天主要聊的就是怎…