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

news/2024/7/10 1:56:16 标签: arcgis, vue, 前端框架, 前端, html, typescript
htmledit_views">

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

vxe-table

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

全局安装

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

 npm install vxe-table
import { App, createApp } from 'html" title=vue>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)

html"><!-- 引入样式 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vxe-table/lib/style.css">
<!-- 引入html" title=vue>vue -->
<script src="https://cdn.jsdelivr.net/npm/html" title=vue>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.niftyadmin.cn/n/5427436.html

相关文章

排序算法之快速排序算法介绍

目录 快速排序介绍 时间复杂度和稳定性 代码实现 C语言实现 c实现 java实现 快速排序介绍 快速排序(Quick Sort)使用分治法策略。 它的基本思想是&#xff1a;选择一个基准数&#xff0c;通过一趟排序将要排序的数据分割成独立的两部分&#xff1b;其中一部分的所有数据…

day01.蓝桥杯

1.哈希算法&#xff1a; #include <bits/stdc.h> using namespace std; const int MAXN1000001; int a[MAXN]; int main(){int n,m;while(~scanf("%d %d",&n,&m)){//输入m和n memset(a,0,sizeof(a));//将a数组初始化为0 for(int i0;i<n;i){int t;c…

Java基础_内部类

文章目录 1.基本介绍1.定义&#xff1a;2.基本语法&#xff1a;3.内部类的分类 2.局部内部类1.快速入门2.局部内部类的使用 3.匿名内部类1.匿名内部类实现接口2.匿名内部类继承抽象类3.匿名内部类细节4.匿名内部类最佳实践1.匿名内部类作为实参传入函数2.匿名内部类课堂练习 4.…

IDEA如何切换git账户

一、首先设置idea的密码不保存 二、找到你的windos的凭据管理器&#xff0c;直接在电脑里面搜索就行。 把已经有的git的凭据删掉&#xff0c;然后重启IDEA&#xff0c;拉取代码&#xff0c;就会弹框来让你输入账号。 注意&#xff1a;将系统弹出的账号密码框关掉&#xff0c;…

LeetCode[题解] 2864. 最大二进制奇数

题目 给你一个 二进制 字符串 s &#xff0c;其中至少包含一个 ‘1’ 。 你必须按某种方式 重新排列 字符串中的位&#xff0c;使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。 以字符串形式&#xff0c;表示并返回可以由给定组合生成的最大二进制奇数。 注意 返回…

Docker启动安装nacos(踩过坑版)

1、Docker 拉取镜像 docker pull nacos/nacos-server:v2.1.0 2、创建宿主机挂载目录 mkdir -p /mydata/nacos/logs/ mkdir -p /mydata/nacos/conf/ 3、启动nacos并复制文件到宿主机&#xff0c;关闭容器 启动容器 docker run -p 8848:8848 --name nacos -d nacos/nacos-se…

bootstrap精选模板tabler下载

官网演示&#xff1a; https://mb.bootcss.com/themes/tabler/index.html 在线预览&#xff1a; https://tabler.io/preview Github 开源地址&#xff1a; https://github.com/tabler/tabler Tabler 项目特点&#xff1a; 现代化设计&#xff1a; Tabler 采用现代化的设计…

(差分)胡桃爱原石

琴团长带领着一群胡桃准备出征&#xff0c;进攻丘丘人&#xff0c;出征前&#xff0c;琴团长根据不同胡桃的战力&#xff0c;发放原石作为军饷&#xff0c;琴团长分批次发放&#xff0c;每批次会给连续的几个胡桃发放相同的原石&#xff0c;琴团长最后想知道给每个胡桃发放了多…