vue-element 表格组合查询 - fc-table-search 组件封装

ops/2024/10/18 14:26:03/

开发目的

解决搜索form参数读取,配合异步请求,更新渲染数据;支持自适应高度,分页查询,搜索查询/重置。
额外提供formater类型:标签定义,金额,时间格式化,跨页勾选,静态分页等。
只需三个条件属性,满足大部分场景表格,搜索,分页组合业务场景和统一UI风格规范。
提高开发效率,代码优雅,可读性,方便维护。

示例效果:

代码:

javascript"><template><div class="fc-table-search-demo"><fc-table-searchclassName="searchListPage"ref='tableSearch':form-items='formItems':table-columns='tableColumns'v-model="formData"@requestMethod="getTableData"v-bind="searchOptions"><!-- 搜索按钮区域-表单自定义 --><template #propName="{form, attrs}"><el-form-item v-bind="attrs"><el-input v-model="form.ceshi"/></el-form-item></template><template #handleLeft><el-button @click="() => $refs.tableSearch.onRefresh()">通过ref调用onRefresh()重置刷新</el-button><el-button @click="() => $refs.tableSearch.onRefresh(true)">通过ref调用onRefresh(true)当前刷新</el-button></template><!-- 操作表格区域 --><template #handleRight><el-button>导出</el-button></template></fc-table-search></div>
</template><script>
export default {name: 'fc-table-search-demo',data () {return {formData: { date: [new Date(), new Date()],desc: { aa: { bb: { cc: '111' } } }, result: { code: '' }, resultType: null } // 收集查询}},computed: {// 搜索表单定义formItems () {return [{ comp: 'date', prop: 'date', label: '日期范围', type: 'datetimerange', dateRangeKeys:['starts','ends'] },{ comp: 'input', prop: 'result.code', label: '对账结果' },{ comp: 'date', prop: 'date', label: '对账日期', type: 'datetimerange', dateRangeKeys:['starts','ends'], itemAttrs: {labelWidth: ''} },{ comp: 'input', prop: 'desc.aa.bb.cc', label: '业务描述' },{ comp: 'cascader', prop: 'cascader', label: '城市地区' },{ comp: 'select', prop: 'resultType', label: '对账类型', placeholder: '自定义', options: [{label: '对账差异', value: 1}, {label: '对账1', value: 4}] }]},// 表格定义tableColumns() {return [{ type: 'selection'},{ label: '对账结果', slotName: 'ceshi' },{ prop: 'date', label: '对账日期', formatter: 'date' },{ prop: 'status', label: '对账金额', formatter: 'money' },{ prop: 'desc', label: '对账描述', width: 150, formatter: () => '213213业务/类型描述文本,业务类型/描述文本,业务类型描述文本,业务类型描述文本,' },{label: '操作',fixed: 'right',width: 100,render: (h, {row}) => {return <div><el-button size="mini" type="text">详情</el-button></div>}}]},// 额外自定义配置searchOptions() {return {// 自定义表格配置'table-config': {height: 300,isPaging: false, // 是否启用静态分页isCrossCheck: true, // 是否启用跨页勾选'show-summary': true,'summary-method': () => {return ['', '合计']}},// 自定义分页配置'pagination-config': {},// 自定义form搜索配置'form-config': {'label-width': '70px'},// 是否自动高度autoHeight: false// 是否隐藏分页// pageHide: false,// 展示几行// formLine: 1// 自定义展示个数// formSpan: 4// 定义每个col的响应布局// formCol: { xl: '12' }// 是否包含折叠功能// isToggle: true// 自定义loading// setLoading: true// 标示key,用于跨页勾选// columnKey: 'id'}}},methods: {// 请求数据async getTableData ({ current, size, total, ...formData }, fn, options) {try {let { date, ...use } = formDataconst [start = '', end = ''] = date || []use.startDate = startuse.endDate = enduse.pageNum = currentuse.pageSize = sizeconsole.log('查询结果:', { current, size, total, ...formData }, 'options', options)setTimeout(() => {fn({data: Array(10).fill({status: 0, date: '2020-08-10', status: '9992342.448423', desc: '业务类型描述文本,业务类型描述文本,业务类型描述文本,业务类型描述文本,'}),total: 100})}, 1000)} catch (error) {fn({message: error.message})}}}
}
</script><style lang="less" scoped>
.fc-table-search-demo{width: 100%;background: #f6f6f6;padding:16px
}
</style>

 

 


http://www.ppmy.cn/ops/122301.html

相关文章

滚雪球学Oracle[2.4讲]:创建Oracle数据库实例

全文目录&#xff1a; 前言一、使用DBCA进行复杂环境下的实例创建1.1 使用DBCA的步骤案例演示&#xff1a;DBCA创建实例 1.2 优点与适用场景 二、手动创建数据库实例的步骤与脚本2.1 手动创建数据库实例的步骤案例演示&#xff1a;手动创建Oracle数据库实例 2.2 手动创建的优点…

【js逆向学习】极志愿 javascript+python+rpc

JSRPC使用方式 逆向目标逆向过程逆向分析1、什么是 websocket2、websocket的原理3、总体过程3.1 环境说明3.2 python服务端代码3.3 python客户端代码 4、Sekiro-RPC4.1 执行方式4.2 客户端环境4.3 参数说明4.4 SK API4.5 python代码调试4.6 代码注入流程 逆向总结 逆向目标 网…

Spring Boot 进阶-详解Spring Boot整合数据库

在Java企业级开发中,不可避免的要对数据进行持久化,我们常见的数据持久化的技术又Mybatis技术、Spring自带的JdbcTemplate以及SpringBoot中的JPA技术。但是无论怎么样的持久化技术,其底层都是离不开数据库的支持。 在刚开始学习Java操作数据库的时候,最长用到的技术就是JDB…

Spring Boot + MyBatis 项目中常用注解详解(万字长篇解读)

Spring Boot MyBatis 项目中常用注解详解 在现代Java开发中&#xff0c;Spring Boot和MyBatis是两大热门框架&#xff0c;广泛应用于构建高效、可维护的企业级应用。两者结合使用&#xff0c;可以充分发挥各自的优势&#xff0c;提高开发效率和代码质量。在这个过程中&#x…

【Android 源码分析】Activity生命周期之onStop-1

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

【SQLite】基础操作

数据查询 SELECT 查询所有数据 SELECT *FROM tableName使用AND操作符 SELECT * FROM tableName WHERE id=? AND name=?使用OR操作符 SELECT * FROM tableName WHERE id=? OR name=?组合使用AND和OR SELECT * FROM tableName WHERE (id=? AND name=?) OR status=?多表查询…

github学生认证(Github Copilot)

今天想配置一下Github Copilot&#xff0c;认证学生可以免费使用一年&#xff0c;认证过程中因为各种原因折腾了好久&#xff0c;记录一下解决方法供大家参考。 p.s.本文章只针对Github学生认证部分遇到的问题及解决方法&#xff0c;不包括配置copilot的全部流程~ 1、准备工作…

网站集群批量管理-密钥认证与Ansible模块

一、集群批量管理-密钥认证 1、概述 管理更加轻松&#xff1a;两个节点,通过密钥形式进行访问,不需要输入密码,仅支持单向. 服务要求(应用场景)&#xff1a; 一些服务在使用前要求我们做秘钥认证.手动写批量管理脚本. 名字: 密钥认证,免密码登录,双机互信. 2、原理 税钥对…