vxe-table表格组件的使用已经query函数扩展

news2024/11/17 12:31:44

        最近新项目使用vue3+typescript开发后台管理系统,基本上展示内容一致表格的方式展示,所以使用vxe-table组件来开发,主要是为了方便使用工具栏,以及其他表格操作。

vxe-table

 开发文档:https://vxetable.cn/#/table/start/install

全局安装

推荐使用 npm 的方式安装,它能更好地和 webpack、vite 等打包工具配合使用。
依赖库: xe-utils  vue 3.2+(我用的是4.5.21版本,支持vue3,因此依赖库需要vue3.2+)

 npm install vxe-table
import { App, createApp } from 'vue'
import VXETable from 'vxe-table'
import 'vxe-table/lib/style.css'

function useTable (app: App) {
  app.use(VXETable)
}

createApp(App).use(useTable).mount('#app')
        

CDN

可以通过 unpkg 或 cdnjs 获取到最新版本的资源,并在页面上引入即可
(注:不建议将不受信任的CDN地址用于生产,因为该连接随时都可能会失效,导致项目挂掉,使用CDN方式记得锁定版本号,锁定版本的方法请查看 unpkg.com)

<!-- 引入样式 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vxe-table/lib/style.css">
<!-- 引入vue -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<!-- 引入组件 -->
<script src="https://cdn.jsdelivr.net/npm/xe-utils"></script>
 <script src="https://cdn.jsdelivr.net/npm/vxe-table"></script>

注意:按需安装、快速入门、全局参数等,详见开发文档

query函数的使用

官方只展示了通过fetch来请求,所以想要扩展使用其他方法请求数据

vxe-table 是一个 Vue 的表格组件库,它提供了丰富的功能和自定义选项。query 函数是你为 vxe-table 组件定义的一个方法,用于构建和发送数据请求。这个函数的具体写法取决于你的应用需求和数据API的结构。

关于 query 函数的写法,并没有固定的模式或数量限制。你可以根据你的应用逻辑和数据API的要求来编写这个函数。以下是一些可能的 query 函数示例,它们展示了不同的处理逻辑和API调用方式:

示例 1: 基本的查询函数

query: ({ page, sorts, filters, form }) => {  
  const queryParams = {  
    ...form,  
    page: page.currentPage,  
    size: page.pageSize,  
    ...sorts.reduce((obj, sort, index) => ({  
      ...obj,  
      [`sortField${index + 1}`]: sort.field,  
      [`sortOrder${index + 1}`]: sort.order  
    }),  
    ...filters.reduce((obj, filter) => ({  
      ...obj,  
      [filter.field]: filter.values.join(',')  
    }),  
  };  
    
  return fetch(`${serveApiUrl}/api/pub/page/list`, {  
    method: 'POST',  
    headers: { 'Content-Type': 'application/json' },  
    body: JSON.stringify(queryParams)  
  }).then(response => response.json());  
}

示例 2: 使用 axios 的查询函数

import axios from 'axios';  
  
query: ({ page, sorts, filters, form }) => {  
  const queryParams = {  
    ...form,  
    pageNum: page.currentPage,  
    pageSize: page.pageSize,  
    orderBy: sorts.map(sort => `${sort.field} ${sort.order}`).join(','),  
    ...filters.reduce((obj, filter) => ({  
      ...obj,  
      [filter.field]: filter.values.join(',')  
    }),  
  };  
    
  return axios.post(`${serveApiUrl}/api/pub/page/list`, queryParams)  
    .then(response => response.data);  
}

示例 3: 复杂的查询逻辑

query: ({ page, sorts, filters, form }) => {  
  const queryParams = {  
    ...form,  
    pageIndex: page.currentPage - 1, // 假设API从0开始计数  
    pageSize: page.pageSize,  
  };  
    
  // 处理排序条件,假设API接受排序字段和排序方向的数组  
  if (sorts.length > 0) {  
    queryParams.orderBy = sorts.map(sort => ({  
      field: sort.field,  
      order: sort.order  
    }));  
  }  
    
  // 处理筛选条件,假设API接受筛选字段和值的对象数组  
  if (filters.length > 0) {  
    queryParams.filter = filters.map(filter => ({  
      field: filter.field,  
      operator: 'IN', // 假设所有筛选条件使用IN运算符  
      value: filter.values  
    }));  
  }  
    
  return fetch(`${serveApiUrl}/api/pub/page/list`, {  
    method: 'POST',  
    headers: { 'Content-Type': 'application/json' },  
    body: JSON.stringify(queryParams)  
  }).then(response => response.json());  
}

        每个示例都展示了不同的查询参数构建方式和API调用方法。你可以根据你的API要求和业务逻辑来编写自己的 query 函数。记住,最重要的是确保你的查询参数与API期望的格式相匹配,并且能够正确地获取和返回你所需的数据。

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

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

相关文章

qiankun:vite/webpack项目配置

相关博文&#xff1a; https://juejin.cn/post/7216536069285429285?searchId202403091501088BACFF113F980BA3B5F3 https://www.bilibili.com/video/BV12T411q7dq/?spm_id_from333.337.search-card.all.click qiankun结构&#xff1a; 主应用base&#xff1a;vue3historyv…

通过Maven创建Web工程

通过Maven创建Web工程 方式一方式二 方式一 1.先创建一个Maven工程 2.把该Maven模块的pom文件里添加一个war 3.选中该Maven模块 点击项目架构 4.手动添加一个Web架构 方式二 1.也是new一个模块 但是直接配置好Web 2.这里就是我IDEA对Maven的设置 3.第一次创建 可能…

JavaEE框架学习笔记——Mybatis篇

四、一级缓存 五、二级缓存 一、Mybatis的Dao编写【mapper代理方式实现】 Mapper代理的开发方式&#xff0c;程序员只需要编写mapper接口&#xff08;相当于dao接口&#xff09;即可。Mybatis会自动的为mapper接口生成动态代理实现类。不过要实现mapper代理的开发方式****&am…

酷开科技大内容战略,打破时间和空间的限制畅快追剧!

随着科技的发展&#xff0c;电视作为家庭娱乐中心设备的角色正在发生改变&#xff0c;它不仅仅 是家庭的娱乐中心&#xff0c;更是成为连接家庭智能家居的中心枢纽&#xff0c;为家庭带来更为丰富和个性化的娱乐体验。深耕大屏十余年&#xff0c;酷开科技通过技术上的不断突破和…

nacos做注册注册中心go语言实战教程(服务的注册与获取)

背景 随着访问量的逐渐增大&#xff0c;单体应用结构渐渐不满足需求&#xff0c;在微服务出现之后引用被拆分为一个个的服务&#xff0c;服务之间可以互相访问。初期服务之间的调用只要知道服务地址和端口即可&#xff0c;而服务会出现增减、故障、升级等变化导致端口和ip也变…

LeetCode Python - 51. N 皇后

目录 题目答案运行结果 题目 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n …

深度学习——SAM(Segment-Anything)代码详解

目录 引言代码目录segment-anything 代码详解build_sam.pypredictor.pyautomatic_mask_generator.py 引言 从去年年初至今&#xff0c;SAM(Segment Anything )已经问世快一年了&#xff0c;SAM凭借其强大而突出的泛化性能在各项任务上取得了优异的表现&#xff0c;广大的研究者…

ChromeDriver 122 版本为例 国内下载地址及安装教程

ChromeDriver 国内下载地址 https://chromedriver.com/download 靠谱 千千万万别下载错了 先确认 Chrome 浏览器版本 以 win64 版本为例 那我们下载这一个啊&#xff0c;不要下载错了 下载地址贴在这哈 https://storage.googleapis.com/chrome-for-testing-public/122.0.…

linux安全--CentOS7安装Tomcat,远程管理ManagerApp

目录 1.Tomcat安装 2.Tomcat远程管理 1.Tomcat安装 下载安装包并解压 tar xf apache-tomcat-7.0.54.tar.gz -C /usr/local/apache-tomcat_7.0.54/tomcat启停 启动 ./startup.sh 停止 ./shutdown.sh 2.Tomcat远程管理 找到tomcat文件夹中webapps/manager/META-INF/contex…

IDEA中导入eclipse运行的java项目

本篇文章主要的内容是在IDEA中导入eclipse运行的java项目&#xff0c;亲测有效。 话不多说&#xff0c;直接开整。 前提&#xff1a;先打开idea软件&#xff0c;界面如下&#xff1a; 开始按下方步骤依次走即可。 1、file --> new --> Project from Existing Sources..…

OPPO后端二面,凉了!

这篇文章的问题来源于一个读者之前分享的 OPPO 后端凉经&#xff0c;我对比较典型的一些问题进行了分类并给出了详细的参考答案。希望能对正在参加面试的朋友们能够有点帮助&#xff01; Java String 为什么是不可变的? public final class String implements java.io.Seri…

C++提高笔记(三)---STL容器(vector、deque)

1、vector容器 1.1vector基本概念 功能&#xff1a;vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector与普通数组区别&#xff1a;不同之处在于数组是静态空间&#xff0c;而vector可以动态扩展 动态扩展&#xff1a;并不是在原空间之后续接新空间&#xff0…

ES6(三):Iterator、Generator、类的用法、类的继承

一、迭代器Iterator 迭代器是访问数据的一个接口&#xff0c;是用于遍历数据结构的一个指针&#xff0c;迭代器就是遍历器 const items[one,two,three];//创建新的迭代器const ititems[Symbol.iterator]();console.log(it.next()); done&#xff1a;返回false表示遍历继续&a…

Kafka MQ 生产者

Kafka MQ 生产者 生产者概览 尽管生产者 API 使用起来很简单&#xff0c;但消息的发送过程还是有点复杂的。图 3-1 展示了向 Kafka 发送消息的主要步骤。 我们从创建一个 ProducerRecord 对象开始&#xff0c;ProducerRecord 对象需要包含目标主题和要发送的内容。我们还可以…

linux命令深入研究——cat

cat命令&#xff0c;“猫”&#xff0c;可以理解为瞄一眼文件内容&#xff0c;其中可以用重定向符号对文件进行一些修改&#xff0c;如增加&#xff0c;删除文件内容&#xff0c;其命令参数如-n&#xff0c;-s&#xff0c;-b可以输出带有行号的行 如果想要快速删除文件内容&…

[全志T113]:Tina SDK安装

[全志T113]&#xff1a;Tina SDK安装 SDK安装与补丁 SDK下载地址 https://pan.baidu.com/s/1wxUeYQZaSgAPGorGOVcJxA?pwdtina 1.解压SDK tar -zxvf Tina-Linux-20220815.tar.gz cd Tina-Linux2.安装补丁&#xff1a; $ wget http://dl.mangopi.org/tina/prebuilt.tar.gz …

【数据结构】双向链表及LRU缓存的实现

目录 前言 1. 在原有的自定义链表类 Linked 的基础上&#xff0c;添加新的 “节点添加”方法 addNode(Node node) 测试用例 测试结果 2. 在自定义链表类的基础上&#xff0c;使用双重循环“强力” 判断两个节点是否发生相交 测试用例 测试结果 3. 在自定义链表类的基础上…

Linux基础开发工具之yum与vim

1. Linux软件包管理器——yum 1.1 什么是软件包&#xff1f; 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, …

JavaWeb06-MVC和三层架构

目录 一、MVC模式 1.概述 2.好处 二、三层架构 1.概述 三、MVC与三层架构 四、练习 一、MVC模式 1.概述 MVC是一种分层开发的模式&#xff0c;其中 M&#xff1a;Model&#xff0c;业务模型&#xff0c;处理业务 V&#xff1a; View&#xff0c;视图&#xff0c;界面展…

浅谈HTTP 和 HTTPS (中间人问题)

前言 由于之前的文章已经介绍过了HTTP , 这篇文章介绍 HTTPS 相对于 HTTP 做出的改进 开门见山: HTTPS 是对 HTTP 的加强版 主要是对一些关键信息 进行了加密 一.两种加密方式 1.对称加密 公钥 明文 密文 密文 公钥 明文 2.非对称加密 举个例子就好比 小区邮箱 提供一…