vue项目中使用ag-grid

我这个项目中使用原因:

  1. 支持大数据量数据,滑动页面不会有白屏现象
  2. 可对当前列表中数据进行过滤

安装依赖

  1. ag-grid-vue
  2. ag-grid-community 我这里使用的社区版
  3. @ag-grid-community/locale 中文配置依赖

main.js

import "ag-grid-community/styles/ag-grid.css";
import "ag-grid-community/styles/ag-theme-balham.css"; //主题样式(除了balham,还有quartz、material、alpine)

vue.config.js

module: {
      rules: [{
        test: /\.mjs$/,
        include: /node_modules/,
        type: 'javascript/auto'
      }]
    },

关键代码

  1. template中(我这里没用自带的分页器,使用的是基于el-pagination封装的pagination组件)
<template>
<div class="app-table">
  <AgGridVue
     :style="styleClass"
     class="ag-theme-balham"
     v-loading="loading"
     :columnDefs="columns"
     :rowData="tableData"
     :defaultColDef="defaultColDef"
     :gridOptions="gridOptions"
     @grid-ready="onGridReady"
  />
  <pagination
     :total="total"
     :page.sync="queryParams.pageNum"
     :page-sizes="[100, 200, 500, 1000, 20000]"
     :limit.sync="queryParams.pageSize"
     :pager-count="queryParams.pagerCount ? queryParams.pagerCount : 7"
     @pagination="getList"
 />
</div>
</template>
  1. script中
<script>
import { AgGridVue } from "ag-grid-vue";
import { AG_GRID_LOCALE_CN } from "@ag-grid-community/locale"; // 汉化包
import Setter from "./Setter.vue"; //自定义组件-操作列按钮
export default {
	name: "demo",
	components: {
    	AgGridVue,
    	Setter,
   },
   computed: {
    styleClass() {
      return `width: 100%; height: ${this.tableH}`;
    },
  },
   data(){
		return {
			queryParams: {
        		pageNum: 1,
        		pageSize: 100,
      		},
			total: 0, // 数据量
			/**
       			* 列属性
       			* headerName 列名
       			* field 列匹配的字段
		    	* filter 是否可过滤
       			* sortable 是否可排序
       			* tooltipField 鼠标悬浮是单元格内容的tooltip提示【未验证】
      	    	* checkboxSelection: true, //该列前带CheckBox复选框【未验证】
       			* hide 配置是否显示
       			* wrapText: true,//单元格文字自动换行*
       			* autoHeight: true,//单元格根据内容自动调整高度
       			* suppressMovable: true, //禁止拖拽列
       	*/
      	columns: [
        	{
          		headerName: "", //选择列头部显示的文字,可以为空
          		checkboxSelection: true, //设置为ture显示为复选框
          		headerCheckboxSelection: true, //表头是否也显示复选框,全选反选用
          		pinned: "left", //固定再左边
          		width: 50, //列的宽度
          		sortable: false,
          		resizable: false,
          		filter: false,
          		suppressMovable: true,
            },
            {
          		headerName: "序号", // 必填,显示在表头的文本
          		width: 70, // 宽度
          		cellRenderer: function (params) {
            		return parseInt(params.node.id) + 1;
          		},
          		cellStyle: {
            		// 设置本栏的CSS样式
            		"text-align": "left",
            		"text-indent": "10px",
          		},
          		pinned: "left",
          		suppressSizeToFit: true,
          		suppressSorting: true,
          		suppressMenu: true,
          		sortable: false,
          		filter: false,
          		suppressMovable: true,
        	},
        	{
          		headerName: "分公司",
          		field: "comName",
          		tooltipField: "comName",
          		width: 100,
          		pinned: "left",
          		tooltipValueGetter: (p) => p.value,
        	},
        	{
          		headerName: "小区名",
          		field: "areaName",
          		tooltipField: "areaName",
          		width: 100,
          		pinned: "left",
          		filter: true,
          		wrapText: true,
          		autoHeight: true,
          		tooltipValueGetter: (p) => p.value,
        	},
        	{
          		headerName: "来源",
          		field: "equipManagePlatform",
          		dictName: "source_type",
          		valueFormatter: this.sexFormatter, // 值去匹配字典项
          		width: 140,
          		filter: true,
        	},
        	{
          		headerName: "操作",
          		field: "action",
          		filter: false,
          		sortable: false,
          		pinned: "right",
          		width: 320,
          		cellRenderer: "Setter",
          		cellRendererParams: {
            		editFun: this.editFun,
            		delFun: this.delFun,
          		},
        	},
      ],
      tableData: [],
			defaultColDef: {
            	// sortable: true, //可排序
            	// resizable: true, //可拖动改变列宽
            	filter: true, //可过滤筛选
            	// editable: true, //是否可编辑单元格
            	enablePivot: true,
           },
      	   gridApi: null,
           gridColumnApi: null,
           gridOptions: {
           	id: "agTableid",
            tooltipShowDelay: 1000, // tooltip 只有添加 tooltipShowDelay 才会显示
            localeText: AG_GRID_LOCALE_CN,
            rowSelection: "multiple", //设置多好可选
            rowMultiSelectWithClick: true, //点击行可取消选择
            // suppressRowDeselection: false,
            toolPanel: "side",
            sideBar: true,
         },
        gridApi: null,
        gridColumnApi: null,	
		}
	},
	methods: {
		getList() {
      		this.loading = true;
      		const data = {
        		...this.queryParams,
      		};
      		listApi(data)
        	.then((res) => {
          		this.loading = false;
          		this.tableData = res.rows;
          		this.total = res.total;
        		})
            .finally(() => {
          		this.$refs.baseTable.toggleSelection();
        	});
   		},
		editFun(){},
		delFun(){},
		// 匹配字典项(可提取到utils中封装为公共方法)
    	sexFormatter(item) {
      		let dictList = [];
      		let foundItem = {};
      		let all_dict_data = localStorage.getItem("all_dict");
      		const dicts = all_dict_data ? JSON.parse(all_dict_data) : [];
      		dictList = dicts.filter(
        		(dictItem) => dictItem.dictType == item?.colDef?.dictName
      		);

      		foundItem = dictList.find((curItem) => curItem.dictValue == item.value);
      		return foundItem ? foundItem.dictLabel : item.value ? item.value : "-";
    		},
    		onGridReady(params) {
      			this.gridApi = params.api;
      			this.gridColumnApi = params.columnApi;
    		},
    		//获取选中行数据
    		getSelect() {
      			if (this.gridApi) {
        			let rows = this.gridApi.getSelectedRows();
        			this.selectList = JSON.parse(JSON.stringify(rows));
      			}
    		},
	}
}
</script>
  1. setter组件
<template>
  <div class="setter">
    <el-button size="mini" type="text" @click="editFun">编辑</el-button>
    <el-button size="mini" type="text" @click="delFun">删除</el-button>
  </div>
</template>

<script>
export default {
  name: "Setter",
  methods: {
    editFun() {
      this.params.editFun(this.params.data);
    },
    delFun() {
      this.params.delFun(this.params.data);
    },
  },
};
</script>

ag-grid分为:
AG Grid Community 社区版(免费的支持的功能相对少)
AG Grid Enterprise 企业版(会支持像侧边过滤工具栏、列配置栏等)
Enterprise Bundle(在企业版基础上支持 AG Charts)

详细功能英文文档
ag-grid-community社区版中文文档
参考文章

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

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

相关文章

vue3和element-plus笔记

对子组件直接使用v-model 子组件内定义如下 const props defineProps({modelValue: {type: String,required: true} }) const emits defineEmits(["update:modelValue"]) 父组件定义如下 <script setup> const deleteId ref(null) </script> <…

Buck开关电源闭环控制的仿真研究15V/5V[Matlab/simulink源码+Word文档]

课题设计要求 ⑴输入直流电压(VIN)&#xff1a;15V ⑵输出电压(VO)&#xff1a;5.0V ⑶负载电阻&#xff1a;R2欧 ⑷输出电压纹波峰-峰值 Vpp≤50mV &#xff0c;电感电流脉动&#xff1a;输出电流的10% ⑸开关频率(fs)&#xff1a;100kHz ⑹BUCK主电路二极管的通态压降VD0.5V…

单元测试使用记录

什么是单元测试 简单来说就是对一个类中的方法进行测试&#xff0c;对输出的结果检查判断是否符合预期结果 但是在多年的工作中&#xff0c;从来没有哪个项目中真正系统的用到了单元测试&#xff0c;因此对它还是很陌生的&#xff0c;也就造成更加不会在项目中区使用它。 如何…

麒麟操作系统服务架构保姆级教程(三)ssh远程连接

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 作为一名成熟运维架构师&#xff0c;我们需要管理的服务器会达到几十台&#xff0c;上百台&#xff0c;上千台&#xff0c;甚至是上万台服务器&#xff0c;而且咱们的服务器还不一定都在一个机房&am…

2024年图像处理、多媒体技术与机器学习

重要信息 官网&#xff1a;www.ipmml.org 时间&#xff1a;2024年12月27-29日 地点&#xff1a;中国-大理 简介 2024年图像处理、多媒体技术与机器学习&#xff08;CIPMT 2024&#xff09;将于2024年12月27-29日于中国大理召开。将围绕图像处理与多媒体技术、机器学习等在…

用Python在Excel工作表中创建、修改及删除表格区域

在数据分析和自动化处理的工作中&#xff0c;Excel作为一种强大的工具被广泛应用&#xff0c;而通过Python来操作Excel工作表中的表格&#xff0c;可以极大提高工作效率。表格&#xff08;Table&#xff09;是Excel中的一种重要结构&#xff0c;它是一个特殊的单元格区域&#…

【AI】✈️问答页面搭建-内网穿透公网可访问!

目录 &#x1f44b;前言 &#x1f440;一、后端改动 &#x1f331;二、内网穿透 &#x1f49e;️三、前端改动 &#x1f379;四、测试 &#x1f4eb;五、章末 &#x1f44b;前言 小伙伴们大家好&#xff0c;上次本地搭建了一个简单的 ai 页面&#xff0c;实现流式输出问答…

GM_T 0039《密码模块安全检测要求》题目

单项选择题 根据GM/T 0039《密码模块安全检测要求》,送检单位的密码模块应包括()密码主管角色。 A.一个 B.两个 C.至少一个 D.至少两个 正确答案:C 多项选择题 根据GM/T 0039《密码模块安全检测要求》,关于非入侵式安全,以下属于安全三级密码模块要求的是()。 …

使用生存分析进行游戏时间测量

标题&#xff1a;Playtime Measurement with Survival Analysis 作者&#xff1a;Markus Viljanen, Antti Airola, Jukka Heikkonen, Tapio Pahikkala 译者&#xff1a;游戏数据科学 1 游戏中的游戏时间 1.1 为什么游戏时间很重要 游戏分析在理解玩家行为方面变得越来越重…

Linux快速入门-兼期末快速复习使用

Linux快速入门-兼期末快速复习使用 一小时快速入门linux快速一&#xff1a;Linux操作系统概述1. Linux概述1.1 定义与特点1.2 起源与发展1.3 Linux结构1.4 版本类别1.5 应用和发展方向 2. 安装与启动2.1 Windows下VMware安装Linux2.2 安装Ubuntu 快速二&#xff1a;linux的桌面…

制造研发企业与IPD管理体系

芯片/半导体/制造研发型企业&#xff0c;大都知道华为使用过的IPD管理体系&#xff0c;但大家用到什么程度&#xff0c;那就是参差不齐了。 因为IPD管理体系它只是一个管理理念&#xff0c;是一个方法论。它需要有相应的组织架构来承载&#xff0c;它有很复杂的流程需要有IT系统…

帝国CMS自动生成标题图片并写进数据库

帝国CMS背景可自定义&#xff0c;可单独背景也可以随机背景,此插件根帝国cms官方论坛帖子改的&#xff0c;增加了生成图片后写入数据库,笔者的古诗词网 www.gushichi.com 也是这样设置的。 效果图 将下面的代码插入到/e/class/userfun.php中增加如下函数 单独背景代码 //自动…

数据分析和AI丨知识图谱,AI革命中数据集成和模型构建的关键推动者

人工智能&#xff08;AI&#xff09;已经吸引了数据科学家、技术领导者以及任何使用数据进行商业决策者的兴趣。绝大多数企业都希望利用人工智能技术来增强洞察力和生产力&#xff0c;而对于这些企业而言&#xff0c;数据集的质量差成为了最主要的障碍。 数据源需要进行清洗且明…

java小知识点:比较器

java中自主排序主要根据一个Comparator类来实现。 他内部实现用的是Timsort策略。大概思想是说将整个集合分成几个小段&#xff0c;每个小段分别排序&#xff0c;然后再拼在一起。 主要用法是传入两个数&#xff08;也可以不是Integer或int类型&#xff0c;这里只是把他们都统称…

【嵌入式开发笔记】OpenOCD到嵌入式调试

最近在把玩一块Risc-V的开发板&#xff0c;使用开发板调试时&#xff0c;需要用到专门的下载器和OpenOCD进行调试。 为了连接这个板子&#xff0c;费了九牛二虎之力。 这里简单记录一下自己的折腾经过吧。 0x00 环境准备 0x0001 调试背景 系统&#xff1a;Virtual Box Ub…

安装MongoDB,环境配置

官网下载地址&#xff1a;MongoDB Shell Download | MongoDB 选择版本 安装 下载完成双击打开 点击mongodb-windows-x86_64-8.0.0-signed 选择安装地址 检查安装地址 安装成功 二.配置MongoDB数据库环境 1.找到安装好MongoDB的bin路径 复制bin路径 打开此电脑 -> 打开高级…

15.初识接口1 C#

这是一个用于实验接口的代码 适合初认识接口的人 【CSDN开头介绍】&#xff08;文心一言AI生成&#xff09; 在C#编程世界中&#xff0c;接口&#xff08;Interface&#xff09;扮演着至关重要的角色&#xff0c;它定义了一组方法&#xff0c;但不提供这些方法的实现。它要求所…

2.学习TypeScript 编译选项配置

自动编译 我们可以使用 tsc ...../.ts -w 命令进行ts文件的自动编译 执行后 编译会持续侦听 自动编译 这种方式只能侦听一个文件 对做项目肯定是不现实的&#xff0c;为了解决这个问题&#xff0c;我们需要添加一个tsconfig.json文件&#xff0c;写入一个基础对象 再有tsconfi…

Python爬虫(5) --爬取网页视频

文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具&#xff0c;用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持&#xff08;如 requ…

VS Code Copilot 与 Cursor 对比

选手简介 VS Code Copilot&#xff1a;算是“老牌”编程助手了&#xff0c;虽然Copilot在别的编辑器上也有扩展&#xff0c;不过体验最好的还是VS Code&#xff0c;毕竟都是微软家的所以功能集成更好一些&#xff1b;主要提供的是Complete和Chat能力&#xff0c;也就是代码补全…