首页 > 其他分享 >view-ui-plus iView Vue 3 table 自定义输入筛选条件

view-ui-plus iView Vue 3 table 自定义输入筛选条件

时间:2024-09-21 18:21:36浏览次数:12  
标签:flex style Vue center 自定义 ui 筛选 view

使用自定义表格头实现筛选:为何和如何

在使用 view-ui-plus(iView 的 Vue 3 版本)时,发现原生的表格组件不支持自定义输入筛选条件

为什么要使用自定义表格头?

原生组件的限制

view-ui-plus 的表格组件提供了基本的功能,但在原生实现中,对于复杂的筛选条件或输入框的支持较为有限。原生的筛选功能通常依赖于简单的下拉选择或预定义的筛选选项,这在处理自定义需求时显得不够灵活。

实现自定义筛选功能

下面是一个使用自定义表格头实现筛选的示例代码:

{
    title: '标题',
    key: 'taskCount',
    width: 200,
    renderHeader: (h, { column }) => {
      return h('div', { style: { display: 'flex', alignItems: 'center' } }, [
        h(
          'span',
          {
            style: {
              marginRight: '8px',
              cursor: 'default' // 默认光标样式
            },
            on: {
              mouseenter: (event) => {
                event.target.style.cursor = 'pointer' // 鼠标移入时变为手型光标
              },
              mouseleave: (event) => {
                event.target.style.cursor = 'default' // 鼠标移出时恢复为默认光标
              }
            }
          },
          column.title
        ), // 显示标题
        h(
          Poptip,
          {
            placement: 'bottom',
            width: 'auto',
            trigger: 'click',
            transfer: true
          },
          {
            default: () =>
              h(
                'span',
                {
                  style: {
                    display: 'flex',
                    alignItems: 'center',
                    justifyContent: 'center',
                    cursor: 'pointer' // 确保 Poptip 触发区域的光标样式为手型
                  }
                },
                [
                  h('i', {
                    class: 'ivu-icon ivu-icon-ios-funnel',
                    style: {
                      fontSize: '14px',
                      color: '#B9BCCD'
                    }
                  })
                ]
              ),
            content: () =>
              h('div', { style: { display: 'flex', flexDirection: 'column', padding: '8px' } }, [
                h(
                  Input,
                  {
                    placeholder: '请输入',
                    type: 'number',
                    style: { width: '110px', minWidth: '40px' },
                    onInput: (e) => {
                      console.log('Input value:', e)
                    }
                  },
                  {
                    suffix: () =>
                      h(
                        'span',
                        {
                          style: {
                            display: 'flex',
                            alignItems: 'center',
                            justifyContent: 'center',
                            height: '100%',
                            fontSize: '14px'
                          }
                        },
                        [h('span', '≥')]
                      )
                  }
                )
              ])
          }
        )
      ])
    }
}

解释说明

如果觉得h函数看起来很抽象,可以让gpt转成普通的vue代码,改好后,再转转成h函数的写法。重要的是本质,这都是两种不同展现和表现而已。

  • renderHeader: 自定义列头的渲染方法。在这里我们通过 Flex 布局将标题和筛选图标组合在一起。
  • Poptip: 用于显示筛选输入框的弹出提示组件。通过点击触发弹出,并提供筛选输入区域。
  • Input: 用于输入筛选条件的组件。可以根据需要调整其样式和行为。

这里只做了一个大于等于条件的自定义筛选,要支持其他更多条件,只需要按照以上demo,使用h函数继续丰富对应的内容即可。
transfer: true
transfer
将弹层放置于 body 内,在 Tabs、带有 fixed 的 Table 列内使用时,建议添加此属性,它将不受父级样式影响,从而达到更好的效果。
如果不添加,会无法触发点击事件。

https://doufei.eu.org/2024/09/19/js/view-ui-plus%20iView%20Vue%203%20table%20%E8%87%AA%E5%AE%9A%E4%B9%89%E8%BE%93%E5%85%A5%E7%AD%9B%E9%80%89%E6%9D%A1%E4%BB%B6/

在这里插入图片描述

标签:flex,style,Vue,center,自定义,ui,筛选,view
From: https://blog.csdn.net/dou986532/article/details/142421345

相关文章

  • 基于微信小程序UNIAPP+Spring Boot+Vue+MySQL的多角色用户的高校毕业生离校管理系统
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低学校的运营人员成本,实现了高校毕业生离校管理的标准化、制度化、程序化的管理,有效地防止了高校毕业生离......
  • 基于spring boot+vue+mysql的高校大学生评奖评优系统
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低学校的运营人员成本,实现了高校大学生评奖评优的标准化、制度化、程序化的管理,有效地防止了高校大学生评......
  • Win10 安装Node.js 以及 Vue项目的创建
    一、Node.js和Vue介绍1.Node.jsNode.js 是一个基于ChromeV8引擎的JavaScript运行环境。它允许你在服务器端运行JavaScript,使得你能够使用JavaScript来编写后端代码。以下是Node.js的一些关键特点:事件驱动和非阻塞I/O:Node.js使用事件驱动模型和非阻塞I/O操......
  • Vue学习笔记6:分别使用纯JavaScript和Vue的v-if 指令来有条件地渲染网页元素
    0缘起有时我们的网页需要根据需要用户的选择展示不同的页面元素。例如:<p>你喜欢哪种水果?</p><p> <label> <inputtype="radio"value="苹果"name="fruit"/> 苹果 </label></p><p> <label> <inputtype="ra......
  • 【服务集成】最新版 | 阿里云OSS对象存储服务使用教程(包含OSS工具类优化、自定义阿里
    文章目录一、阿里云OSS对象存储服务介绍二、服务开通与使用准备1、准备工作2、开通OSS云服务(新用户免费使用三个月)3、创建存储空间bucket4、创建并保存Accesskey5、配置访问凭证AK&SK(系统环境变量)三、阿里云OSS使用步骤1、导入依赖坐标2、文件上传Demo快速入门3、阿里......
  • springboot+vue在线动漫信息平台【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,动漫文化在全球范围内迅速普及,成为年轻人娱乐与社交的重要载体。传统动漫传播方式受限于时间与空间,已难以满足日益增长的动漫爱好者需求。在线动漫信息平台作为连接创作者与观众的桥梁,不仅能够提供丰富多样的动漫......
  • springboot+vue自行车租赁管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着城市化进程的加速和环保意识的提升,自行车作为绿色出行方式,其租赁服务在近年来得到了迅猛发展。传统的自行车租赁方式存在管理效率低下、信息不透明、用户体验不佳等问题,已难以满足现代都市人便捷、高效、环保的出行需求。因此,开发......
  • springboot+vue幼儿园管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着教育信息化的不断深入,幼儿园作为儿童成长启蒙的重要阶段,其管理模式的现代化与智能化已成为必然趋势。传统的幼儿园管理方式往往依赖于纸质记录和人工操作,不仅效率低下,还容易出错,难以满足当前家长对幼儿教育透明化、个性化、高质量......
  • 自定义类型:联合和枚举
    一.联合体类型的声明像结构体一样,联合体也是有一个或者多个成员构成,这些成员可以是不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。给联合体其中一个成员赋值,其他成员的值也跟着变化。#include......
  • uniapp - 实现安卓App打包上架应用商店详细教程,详解Hbuilder打包编译apk发布上传到应
    前言【苹果App】打包上架Appstore应用商店,请访问。在uni-app安卓App项目开发中,详解打包app及上架应用市场教程,uniapp打包app安卓应用并发布到软件商店,提供多种方式打包编译为APK文件(HbuilderX云打包/本地原生打包/离线打包),附带申请Android签名证书多种方法、对要上......