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

开发目的

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

示例效果:

代码:

<template>
  <div class="fc-table-search-demo">
    <fc-table-search
      className="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 } = formData
        const [start = '', end = ''] = date || []
        use.startDate = start
        use.endDate = end
        use.pageNum = current
        use.pageSize = size
        console.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.mfbz.cn/a/885415.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp/vue项目 import 导入文件时提示Module is not installed,‘@/views/xxx‘路径无法追踪

文章目录 背景解决方案1.IDE配置2.alias&#xff08;别名&#xff09;配置webpackvue-clivite 3.检查 jsconfig.json 或 tsconfig.json 写在最后 前往闪闪の小窝以获得更好的阅读和评论体验 背景 Vue3在我自学Vue的时候看过一点&#xff0c;实操过一点&#xff0c;但是太久没用…

基于php的酒店管理系

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

动手学深度学习(李沐)PyTorch 第 3 章 线性神经网络

3.1 线性回归 线性回归是对n维输入的加权&#xff0c;外加偏差 线性回归可以看作是单层神经网络 回归问题中最常用的损失函数是平方误差函数。 平方误差可以定义为以下公式&#xff1a; 常数1/2不会带来本质的差别&#xff0c;但这样在形式上稍微简单一些 &#xff08;因为当…

实时语音交互,打造更加智能便捷的应用

随着人工智能和自然语言处理技术的进步&#xff0c;用户对智能化和便捷化应用的需求不断增加。语音交互技术以其直观的语音指令&#xff0c;革新了传统的手动输入方式&#xff0c;简化了用户操作&#xff0c;让应用变得更加易用和高效。 通过语音交互&#xff0c;用户可以在不…

Android入门

下载Android studio&#xff0c;创建第一个项目 模板可以选择empty views Activity 在这个界面可以修改&#xff0c;使用语言&#xff0c;项目名字&#xff0c;存储路径以及适用版本 完成后&#xff0c;得到一个最初始的Android 项目&#xff0c;红色标记的两个文件&#xf…

七星创客:重塑商业模式认知

近期&#xff0c;一个普遍存在的疑问困扰着许多人&#xff1a;“商业模式是否仅仅等同于拉人头或传销活动&#xff1f;”这样的联想或许源于对商业模式概念的片面理解&#xff0c;使得一些人错误地将所有商业模式都笼罩在负面阴影之下。 商业模式&#xff0c;这一商业领域的核心…

(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案

系列文章目录 文章目录 系列文章目录一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案1.资料 一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案 1.资料…

Windows11系统下SkyWalking环境搭建教程

目录 前言SkyWalking简介SkyWalking下载Agent监控实现启动配置SkyWalking启动Java应用程序启动Elasticsearch安装总结 前言 本文为博主在项目环境搭建时记录的SkyWalking安装流程&#xff0c;希望对大家能够有所帮助&#xff0c;不足之处欢迎批评指正&#x1f91d;&#x1f91…

828华为云征文|华为云Flexus云服务器X实例部署 即时通讯IM聊天交友软件——高性能服务器实现120W并发连接

营运版的即时通讯IM聊天交友系统&#xff1a;特点可发红包&#xff0c;可添加多条链接到用户网站和应用&#xff0c;安卓苹果APPPC端H5四合一 后端开发语言&#xff1a;PHP&#xff0c; 前端开发语言&#xff1a;uniapp混合开发。 集安卓苹果APPPC端H5四合一APP源码&#xff0…

微信小程序——婚礼邀请函

目的 1.掌握微信小程序的开发技术&#xff0c;包括页面布局、交互设计、数据存储等。 2.学会运用微信小程序的各种组件和 API&#xff0c;实现个性化的婚礼邀请函功能。 3.通过制作婚礼邀请函小程序&#xff0c;提升创意设计和用户体验优化的能力。 4.了解如何在小程序中整…

JAVA并发编程系列(11)线程池底层原理架构剖析

面试官&#xff1a;说说JAVA线程池的几个核心参数&#xff1f; 之前我们用了10篇文章详细剖析了synchronized、volatile、CAS、AQS、ReentrantLock、Semaphore、CountDownLatch、CyclicBarrier、并发锁、Condition等各个核心基础原理&#xff0c;今天开始我们说说并发领域的各种…

信息安全数学基础(24)模为奇数的平方剩余与平方非剩余

前言 在信息安全数学基础中&#xff0c;模为奇数的平方剩余与平方非剩余是数论中的一个重要概念&#xff0c;特别是在密码学和安全协议中扮演着关键角色。当模数为奇数时&#xff0c;我们通常关注的是模为奇素数的平方剩余与平方非剩余&#xff0c;因为奇合数的情况更为复杂且…

自己做个国庆75周年头像生成器

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 下载相关代码&#xff1a;【免费】《自己做个国庆75周年头像生成器》代码资源-CSDN文库 又是一年国庆节&#xff0c;今年使用国旗做…

智慧城市交通管理中的云端多车调度与控制

城市交通管理中的云端多车调度与控制 智慧城市是 21世纪的城市基本发展方向&#xff0c;为了实现智慧城市建设的目标&#xff0c;人们需要用现代化的手段去管理和控制城市中的各种资源和设施。智能交通控制与管理是智慧城市中不可缺少的一部分&#xff0c;因为现代城市交通系统…

【2024工业3D异常检测文献】CMDIAD: 基于跨模态蒸馏驱动的多模态工业异常检测

Incomplete Multimodal Industrial Anomaly Detection via Cross-Modal Distillation 1、Background 近年来&#xff0c;基于3D点云和RGB图像的多模态工业异常检测(IAD)研究强调了利用模态间的冗余性和互补性对于精确分类和分割的重要性。 在项目中&#xff0c;提出了CMDIAD方…

亲身体验Llama 3.1:开源模型的部署与应用之旅

文章目录 1 Llama 3.1系列的诞生2 大型模型的未来发展3 使用教程4 Llama 3.1在客户服务中的运用 1 Llama 3.1系列的诞生 在人工智能的浪潮中&#xff0c;大型语言模型&#xff08;LLM&#xff09;正以其独特的魅力和潜力&#xff0c;成为深度学习领域的一颗耀眼明星。 这些模…

大模型增量训练--基于transformer制作一个大模型聊天机器人

针对夸夸闲聊数据集&#xff0c;利用UniLM模型进行模型训练及测试&#xff0c;更深入地了解预训练语言模型的使用方法&#xff0c;完成一个生成式闲聊机器人任务。 项目主要结构如下&#xff1a; data 存放数据的文件夹 dirty_word.txt 敏感词数据douban_kuakua_qa.txt 原始语…

【算法篇】二叉树类(2)(笔记)

目录 一、Leetcode 题目 1. 左叶子之和 &#xff08;1&#xff09;迭代法 &#xff08;2&#xff09;递归法 2. 找树左下角的值 &#xff08;1&#xff09;广度优先算法 &#xff08;2&#xff09;递归法 3. 路径总和 &#xff08;1&#xff09;递归法 &#xff08;2…

JavaScript类型转换和相等性详解

类型转换 10"objects" //10objects,数字10转换为字符串 "7"*"4" //28&#xff0c;两个字符串均转为数字,只要不是加&#xff0c;其他都按两个数字算 var n 1-"x"// NaN&#xff0c;字符串x无法转化为数字 n"objects"//…

大模型训练:K8s 环境中数千节点存储最佳实践

今天这篇博客来自全栈工程师朱唯唯&#xff0c;她在前不久举办的 KubeCon 中国大会上进行了该主题分享。 Kubernetes 已经成为事实的应用编排标准&#xff0c;越来越多的应用在不断的向云原生靠拢。与此同时&#xff0c;人工智能技术的迅速发展&#xff0c;尤其是大型语言模型&…