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

搜索及数据获取配置项

  • 搜索及数据获取配置项
    • 属性: noSearchModel(无表单搜索标识)
    • 属性:changeToSearch(表单change事件是否触发搜索 )
    • 属性: changeParams(参数预处理【可异步】 )
    • 属性: resetFun(重置触发【可异步】)
    • 属性: tableFileter(表格过渡效果【可异步】)
    • 属性: searchOver(搜索完成触发)
    • 插槽: buttonModel
    • 属性: searchConfig(搜索项设置)
      • key
      • label
      • noLabel
      • defaultValue
      • bind
      • childSlot
      • type
        • String类型数据(除 times 与 slot )
        • 字符串 times
        • 字符串 slot (及 配套 slotName 属性)
        • vue组件类型 VueComponent

搜索及数据获取配置项

属性: 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 = [{label: '时间',type: 'times'},{label: '电话',type:'input',key: 'phone'}]
</script>

属性: changeParams(参数预处理【可异步】 )

该属性接收函数,将传入即将用于搜索的数据,数据经过该函数处理后需要返回,否则将仍使用原始数据进行搜索

<template><table-page :changeParams="changeParams":searchConfig="searchConfig" :tableApi="getMessageList" ><template #default>...// 与前文一致,省略处理...</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'}]function changeParams(data) {data.changeParams = truereturn data}
</script>
模式函数处理数据结构
无处理<table-page :searchConfig=“searchConfig” :tableApi=“getMessageList” >在这里插入图片描述
同步处理返回在这里插入图片描述请添加图片描述
异步处理返回在这里插入图片描述在这里插入图片描述
无返回在这里插入图片描述在这里插入图片描述

属性: resetFun(重置触发【可异步】)

当需要重置时处理其他业务时,可声明resetFun属性,该属性接收函数,可异步处理,待处理完成后继续向下执行搜索逻辑
该函数触发时机为:搜索字段已完成重置,尚未请求接口时
即:

重置字段初始值
resetFun()
请求接口
<template><table-page :resetFun="resetFun":searchConfig="searchConfig" :tableApi="getMessageList" ><template #default>...// 与前文一致,省略处理...</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'}]function resetFun() {// 处理业务逻辑}
</script>

属性: tableFileter(表格过渡效果【可异步】)

该属性接收函数,传入接口返回的数据列表,经该函数处理后将渲染至页面,函数可为异步函数,当函数不返回数据时,将使用接口数据进行渲染

<template><table-page :tableFileter="tableFileter" :searchConfig="searchConfig" :tableApi="getMessageList" >...// 与前文一致,省略处理...</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'}]async function tableFileter(list) {await new Promise((resolve) => setTimeout(() => resolve(), 5000)) //等待五秒后向下执行return list.map((item, index) => ({ ...item, recieveUserName: index % 2 ? '张三' : '李四' }))}
</script>

在这里插入图片描述

属性: searchOver(搜索完成触发)

搜索完成触发,此时tableList已经赋值完成

<template><table-page :searchOver="searchOver" :searchConfig="searchConfig" :tableApi="getMessageList" >...// 与前文一致,省略处理...</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'}]function searchOver() {// 处理业务逻辑}
</script>

插槽: buttonModel

本插槽位置位于搜索按钮右侧,方便放置业务按钮

<template><table-page  :searchConfig="searchConfig" :tableApi="getMessageList" ><template #buttonModel><el-button type="primary">buttonModel</el-button></template><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>

在这里插入图片描述

属性: searchConfig(搜索项设置)

搜索项设置接收数组类型,每项设置均为对象,结构为

{key:'test',label:'测试',type:'input',// type:'input' || type:ElInput || type:'times' || type:'slot'noLabel:false,defaultValue:'text',bind:{style:'color:red',clearable:true.........},slotName:'slotInput',childSlot:'childSlot',
}

key

本字段将设置为搜索时的属性key字段,当type=times 时,将固定为startTime与endTime
请添加图片描述

label

将作为表单label进行渲染
在这里插入图片描述

noLabel

声明本字段,将取消显示该项的label

<template><table-page  :searchConfig="searchConfig" :tableApi="getMessageList" >...// 与前文一致,省略处理...</table-page>
</template>
<script setup>import TablePage from 'tablepage-vue3'import { getMessageList } from '@/api/message' // 接口const searchConfig = [{label: '时间',noLabel: true,type: 'times'},{label: '电话',type:'input',key: 'phone'}]
</script>

在这里插入图片描述

defaultValue

声明本字段默认值,首次加载时,初始渲染时均将该项设为该值,该值也将在重置按钮触发时赋值

<template><table-page  :searchConfig="searchConfig" :tableApi="getMessageList" >...// 与前文一致,省略处理...</table-page>
</template>
<script setup>import TablePage from 'tablepage-vue3'import { getMessageList } from '@/api/message' // 接口const searchConfig = [{label: '时间',type: 'times'},{label: '电话',type:'input',defaultValue: '130000000000',key: 'phone'}]
</script>

在这里插入图片描述

bind

本属性将直接作用于搜索项表单,例如

{label: '电话',type:'input',key: 'phone',bind:{type:'textarea',placeholder:'占位文本',style:'color:red',class:'testClass'}
}

将渲染为·<el-input v-model="phone" type="textarea" placeholder="占位文本" style="color:red" class="testClass" />

示例代码如下

<template><table-page  :searchConfig="searchConfig" :tableApi="getMessageList" >...// 与前文一致,省略处理...</table-page>
</template>
<script setup>import TablePage from 'tablepage-vue3'import { getMessageList } from '@/api/message' // 接口const searchConfig = [{label: '时间',type: 'times'},{label: '电话',type:'input',defaultValue: '130000000000',key: 'phone'},{label: '电话bind',type: 'input',key: 'phone',bind: {type: 'textarea',placeholder: '占位文本',style: 'color:red',class: 'testClass'}}]
</script>

在这里插入图片描述
非时间类型的bind默认属性为:

{placeholder: label || '',clearable: true,style: 'width: 200px'}

时间类型的默认属性为:

{style: 'width: 190px',type: 'datetime',placeholder: '请选择时间',format: 'YYYY-MM-DD HH:mm:ss',valueFormat: 'YYYY-MM-DD HH:mm:ss'
}

childSlot

本属性为插槽名称,动态插槽渲染。
主要用于elementUI中el-selectel-checkbox-groupel-radio-group等此类组件中需要声明子组件的情形,例如el-select内部需要配置el-option,本示例也将以el-select为例

<template><table-page  :searchConfig="searchConfig" :tableApi="getMessageList" ><template #selectChildSlot><el-option label="2024-01-01" value="2024-01-01" /><el-option label="2023-01-01" value="2023-01-01" /><el-option label="2022-01-01" value="2022-01-01" /><el-option label="2021-01-01" value="2021-01-01" /></template><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: '时间',key: 'selectDate',type: 'select',childSlot: 'selectChildSlot'},{label: '电话',type:'input',key: 'phone'}]
</script>

在这里插入图片描述
匹配字段设置如下
请添加图片描述

type

本属性是搜索项主要配置项,默认值为ElInput
用于各搜索项配置类型及特殊处理声明

String类型数据(除 times 与 slot )

String 类型传入type是较为常用的情景,主要是将element-UI组件标签文本传入type内,交由type进行渲染交互,对于element-UI标签可传入驼峰式或-分割,下文将使用el-input-number标签进行演示,因el-input-number标签文本结构较为复杂,能够清晰表达出作者对于type接收值的处理
注意:times与slot被排除在外,当文本类型无法捕获element-UI时,将使用默认的ElInput,没有传type时也将使用ElInput

<template><table-page  :searchConfig="searchConfig" :tableApi="getMessageList" >...// 与前文一致,省略处理...</table-page>
</template>
<script setup>import TablePage from 'tablepage-vue3'import { getMessageList } from '@/api/message' // 接口const searchConfig = [{label: 'test1',key: 'test1',type: 'el-input-number'},{label: 'test2',key: 'test2',type: 'el-inputNumber'},{label: 'test3',key: 'test3',type: 'input-number'},{label: 'test4',key: 'test4',type: 'El-Input-Number'},{label: 'test5',key: 'test5',type: 'inputNumber'},{label: 'test6',key: 'test6',type: 'elInputNumber'},{label: 'test7',key: 'test7',type: 'ElInputNumber'},{label: 'test8',key: 'test8',type: 'InputNumber'}]
</script>

请添加图片描述
请添加图片描述

字符串 times

当 type = ‘times’ 将会分别展示开始时间与结束时间,字段将强制设为startTimeendTime
如:{ label: '时间', type: 'times'}就将渲染为请添加图片描述
接口中也将携带为请添加图片描述

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

请添加图片描述

字符串 slot (及 配套 slotName 属性)

当 type =‘slot’ 时,意味着你将要对该搜索项手动处理,组件将根据你设置的slotName进行暴露插槽,便于业务处理

<template><table-page  :searchConfig="searchConfig" :tableApi="getMessageList" ><template #slotModules> 插槽开发 </template><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: 'slot测试',key: 'slotData',defaultValue: 'ok',type: 'slot',slotName: 'slotModules'}]
</script>

在这里插入图片描述
匹配流程如下
在这里插入图片描述
注:可以手动在changeParams函数内进行接口参数处理,亦可以传入整个组件给type,并通过v-model进行绑定,而无需通过插槽使用自定义组件详见 type-vue组件类型 VueComponent

vue组件类型 VueComponent

最后,type 也可以接收vue3 的相关组件,并仍可使用bind字段进行属性绑定,传入组件建议可通过v-model进行双向绑定,因内部实现方法为modelValueonUpdate:modelValue进行的v-mode绑定,
另:如配置了属性: changeToSearch(表单change事件是否触发搜索 ),请在组件内部暴露change事件,该属性底层为捕获onChange事件
既:自开发组件

  • 满足<componentName v-model="data">时,即可满足其基本条件
  • 满足<componentName v-model="data" @change="change">时,即可满足其全部条件

为方便,作者复用elementUI的ElInput组件作为传入组件

<template><table-page :searchConfig="searchConfig" :tableApi="getMessageList" ><template #default>...// 与前文一致,省略处理...</template></table-page>
</template>
<script setup>import TablePage from 'tablepage-vue3'import { getMessageList } from '@/api/message' // 接口import { ElInput } from 'element-plus'//可以用你写的组件const searchConfig = [{label: '自定义组件',key: 'DIY',type: ElInput,bind: {type: 'textarea'}}]
</script>

请添加图片描述

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序button按钮怎么去掉边框

项目场景&#xff1a; 在微信小程序里写入button标签之后会有一个默认的黑色细小的边框&#xff0c;给他加了 border: none&#xff1b;也不行 代码&#xff1a; <button class"kef" open-type"contact" bindcontact"handleContact">&l…

Windows Edge 兼容性问题修复:提升用户体验的关键步骤

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

Python零基础从小白打怪升级中~~~~~~~FaskAPI中的请求和响应

第二节&#xff1a;FastAPI中请求数据 一、URL请求参数 url请求参数是通过url请求地址携带的&#xff0c;例如&#xff0c;在以下 url 中&#xff1a; http://127.0.0.1:8000/items/?skip0&limit10这些请求参数是键值对的集合&#xff0c;这些键值对位于 URL 的 &#…

19(20)-1(3)-CSS3 平面 2D 变换+CSS3 过渡

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 ✍一、CSS3 平面 2D 变换&#x1f48e;1 坐标轴&#x1f48e;2 transform 语法…

HarmonyOS实战开发-WebSocket的使用。

介绍 本示例展示了WebSocket的使用&#xff0c;包括客户端与服务端的连接和断开以及客户端数据的接收和发送。 WebSocket连接&#xff1a;使用WebSocket建立服务器与客户端的双向连接&#xff0c;需要先通过createWebSocket方法创建WebSocket对象&#xff0c;然后通过connect…

NI-LabView的DAQ缺少或丢失的解决办法(亲测有效)

DAQmx在Labview中不显示或缺失 问题&#xff1a;在NI Packasge Manager安装完DAQ后在labview中不显示控件解决办法 问题&#xff1a;在NI Packasge Manager安装完DAQ后在labview中不显示控件 在打开测量I/O时&#xff0c;见不到 DAQmx&#xff0c;或者在Express中见不到DAQ助手…

Ansys 结构 | 从力学学科体系说起

“力学是研究物质机械运动的科学” 力学有着悠久的历史&#xff0c;最早可追溯到古希腊的阿基米德(约公元前287 - 212)&#xff0c;并且在欧洲文艺复兴运动以后&#xff0c;人们逐步对力和运动之间的关系有了正确的认识。 英国科学家牛顿继承和发展了前人的研究成果&#xff0…

PC-3000 Portable III、PC-3000 Express、PC-3000 UDMA 有哪些区别?

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复公司&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含数据恢复硬件设…

Oracle 常用命令总结

文章目录 一、数据库启动 & 关闭&查看1、启动数据库2、关闭数据库3、连接数据库4、查看数据库名5、查看实例 二、用户1、创建用户2、重置密码3、账户解锁4、账号赋权5、账户撤销权限6、删除用户7、查询所有用户&#xff08;DBA账号执行&#xff09;8、查看当前用户连接…

Unity Shader之数学篇

一、坐标系 1、二维笛卡尔坐标系 屏幕坐标系是二维笛卡尔坐标系&#xff0c;OpenGL的屏幕坐标系原点在左下角&#xff0c;DirectX的屏幕坐标系原点在左上角。 2、三维笛卡尔坐标系 三维笛卡尔坐标系要区分是左手坐标系还是右手坐标系。 左手坐标系&#xff1a;举起你的左手…

蓝桥杯-求阶乘

问题描述 满足 N!的末尾恰好有 区 个o的最小的 N 是多少? 如果这样的 N 不存在输出 -1。 输入格式 一个整数 区。 输出格式 一个整数代表答案。 样例输入 样例输出 10 评测用例规模与约定 对于 30% 的数据,1<K<106 对于 100% 的数据,1<K<1018 运行限制 最大运行时…

平面上最近点对

OJ:P1429 平面最近点对&#xff08;加强版&#xff09; - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 非常详细的博客&#xff1a;平面上最近点对 - 洛谷专栏 (luogu.com.cn) 更正式的文章&#xff1a;平面最近点对 - OI Wiki 这也是我们算法课的一个实验。不过我做的不好…

计算机网络——38报文完整性

报文完整性 数字签名 数字签名类比于手写签名 发送方数字签署了文件&#xff0c;前提是他是文件的拥有者/创建者可验证性&#xff0c;不可伪造性&#xff0c;不可抵赖性 谁签署&#xff0c;接收方可以向他人证明是他&#xff0c;而不是其他人签署了这个文件签署了什么&#…

【C 数据结构】循环链表

文章目录 【 1. 基本原理 】【 2. 循环链表的创建 】2.1 循环链表结点设计2.2 循环单链表初始化 【 3. 循环链表的 插入 】【 4. 循环单链表的 删除操作 】【 5. 循环单链表的遍历 】【 6. 实例 - 循环链表的 增删查改 】【 7. 双向循环链表 】 【 1. 基本原理 】 对于单链表以…

租个阿里云的服务器多少钱?那可真便宜了

阿里云服务器租用价格表2024年最新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核…

简简单单学下python3

学习目的&#xff1a;for pytorch 输出 print("Hello World!")默认换行&#xff0c;设置不换行print("Hello World!", end"") 输入 n input("pls input a num") 注释 #, """ py中和"完全相同 缩进 用空格…

vue3.4 新特性 defineModel() 宏

v-model 简介 官网是这样解释 v-model 的 v-model 的功能是&#xff0c;实现数据的双向绑定【本质上是 :value 和 input 语法糖】 如果是表单元素&#xff0c;下面两种写法是一样&#xff0c;这时v-model就是语法糖&#xff0c;帮你简化了操作 <input v-model"messag…

LeetCode 543. 二叉树的直径

给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,4,5] 输出…

JUC:实现一个简易的数据库连接池(享元模式)

主要是学习享元模式。 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;旨在通过共享尽可能多的对象来最小化内存使用和提高性能。在该模式中&#xff0c;对象被分为两种状态&#xff1a;内部状态和外部状态。 内部状态&#xff08;Intr…

C++ | Leetcode C++题解之第22题括号生成

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<string> res; //记录答案 vector<string> generateParenthesis(int n) {dfs(n , 0 , 0, "");return res;}void dfs(int n ,int lc, int rc ,string str){if( lc n && rc n…