vue项目中使用ag-grid

news2024/12/22 13:31:15

我这个项目中使用原因:

  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社区版中文文档
参考文章

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

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

相关文章

【UE5】pmx导入UE5,套动作。(防止“气球人”现象。

参考视频&#xff1a;UE5Animation 16: MMD模型與動作導入 (繁中自動字幕) 问题所在&#xff1a; 做法记录&#xff08;自用&#xff09; 1.导入pmx&#xff0c;删除这两个。 2.转换给blender&#xff0c;清理节点。 3.导出时&#xff0c;内嵌贴图&#xff0c;选“复制”。 …

yolo 视频流播放并进行目标识别

根据视频流&#xff0c;实时的进行目标识别 一、下载 [lal](https://github.com/q191201771/lal/releases/tag/v0.37.4)二、安装 [FFmpeg](https://ffmpeg.org/)三、完整代码演示 需要前置了解YOLO的完整操作 使用labelImg标注&#xff0c;YOLO进行目标训练 一、下载 lal 下载…

分类模型的预测概率解读:3D概率分布可视化的直观呈现

背景 在分类模型中&#xff0c;预测概率不仅是结果&#xff0c;更是模型决策的关键依据。为了更直观地理解这些概率分布&#xff0c;3D可视化提供了一种生动的展示方式&#xff0c;本文通过3D概率分布图&#xff0c;直观展示分类模型的预测概率 代码实现 基于时间序列的3D分…

【Spring】获取Bean对象需要哪些注解

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;Service&#xff08;服务存储&#xff09; 1&#xff1a;存储bean的代码 2&#xff1…

【C++】哈希表实现

目录 一、哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转为整数 二、哈希函数 2.1 除法散列法/除留余数法 2.2 乘法散列图&#xff08;了解即可&#xff09; 2.3 全域散列法&#xff08;了解即可&#xff09; ​编辑 三、处理哈希冲突 3.1 开放…

Android-相对布局RelativeLayout

相对布局在摆放子视图位置时&#xff0c;按照指定的参考系来摆放子视图的位置&#xff0c;默认以屏幕左上角(0,0)位置作为参考系摆放位置 了解一下接下来都会以代码的方式可视化出来 属性 可选值 说明 layout_alignParentTop true/false 是否让控件相对于父容器顶部对齐 …

Intellij配置scala运行环境

文章目录 Intellij配置scala运行环境下载地址安装插件设置sdk与scala scala项目创建安装可能出现的错误 Intellij配置scala运行环境 下载地址 在centos7上安装intellij https://www.jetbrains.com/idea/download/other.html解压后进入文件夹启动打开ide ./idea-IC-232.1033…

【批量生成WORD和PDF文件】根据表格内容和模板文件批量创建word文件,一次性生成多个word文档和批量创建PDF文件

如何按照Word模板和表格的数据快速制作5000个word文档 &#xff1f; 在与客户的合作的中需要创建大量的合同&#xff0c;这些合同的模板大概都是一致的&#xff0c;是不是每次我们都需要填充不一样的数据来完成&#xff1f; 今天用表格数据完成合同模板的填充&#xff0c;批量…

深度网络结构中的梯度消失与爆炸原理分析

原理 梯度消失的定义 在深度神经网络中&#xff0c;梯度消失是指在误差反向传播过程中&#xff0c;接近输入层的层次上梯度趋近于零的现象。这导致网络权重的更新非常缓慢&#xff0c;甚至停止&#xff0c;使得训练过程变得极其困难。主要发生在使用Sigmoid或Tanh等饱和激活函…

请求go web后端接口 java安卓端播放视频

前端代码 添加gradle依赖 implementation com.squareup.retrofit2:retrofit:2.9.0 implementation com.squareup.retrofit2:converter-gson:2.9.0 添加访问网络权限 <uses-permission android:name"android.permission.INTERNET" />允许http 请求请求 andro…

乐凡信息智能安全管控方案:助力油气田行业安全管控多方位升级

我国油田地域广阔&#xff0c;分布着大量各种油井&#xff0c;油井开采设备的连续稳定运行是保证石油开采的首要条件。然而&#xff0c;由于油田多位于特殊地理环境中&#xff0c;因而实现油井之间的通信首要问题就是要克服地理环境所带来的限制&#xff0c;传统通信系统的建设…

编辑, 抽成组件

问题 错误思路&#xff1a; 1 dept不能修改&#xff0c; 用watch监听一下&#xff1a;赋值给新的变量进行修改&#xff0c; 问题&#xff1a; currentDept 发生改变&#xff0c; depth也发生了改变&#xff0c;因为是浅拷贝&#xff0c; 用了json.pase(json.stringify(value…

<项目代码>YOLO Visdrone航拍目标识别<目标检测>

项目代码下载链接 &#xff1c;项目代码&#xff1e;YOLO Visdrone航拍目标识别&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90163918YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一…

如何从全局视角规划项目与战略决策(“精准接送”案例、技术架构设计与选型、业务逻辑及产品商业模式探讨)

文章目录 1. 引言2. 项目背景与需求分析2.1 业务背景&#xff08;5W分析法&#xff09;2.2 需求概述功能需求非功能需求 2.3 典型挑战 3. 技术架构设计与选型3.1 技术选型扩展表3.2 架构设计的深度思考3.2.1 核心架构原则3.2.2 实际架构实践 4. 业务逻辑及产品商业模式探讨4.1 …

QT exe文件设置图标【终极解决方案!】

会报错&#xff1a;makefile error 1 将图片转换成ico文件&#xff0c;不能自己改后缀&#xff01;多试几个转换的网站&#xff0c;下面是我使的转换网站【成功了】 在线转换网址&#xff1a; https://onlineconvertfree.com/zh/convert/jpg/ 将图片放在.pro同级下 .pro和…

JAVA:组合模式(Composite Pattern)的技术指南

1、简述 组合模式(Composite Pattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使客户端对单个对象和组合对象的使用具有一致性。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什么是组合模式 组合模式…

CTFHUB 历年真题 afr-1

发现传参为 ?phello&#xff0c;尝试 ?pflag 发现都是 no 尝试假设它是个PHP文件&#xff0c;利用php伪协议 ?pphp://filter/readconvert.base64-encode/resourceflag 得到 base64 编码再解码发现了本题的 flag n1book{afr_1_solved}

共创共建!葡萄城 SpreadJS 完成 HarmonyOS NEXT 操作系统兼容认证

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 近日&#xff0c;华为“企业工作必备应用鸿蒙化论坛”在北京圆满落幕&#xff0c;论坛汇聚了众多行业精英和合作伙伴&#xff0c;聚焦讨论企业数字化转型与原生鸿蒙生态融合等话题。葡萄…

Android学习(二)-Kotlin编程语言学习

接上篇文章&#xff0c;我们写如下语法&#xff0c;重新赋值&#xff0c;你会发现报错了&#xff0c;是因为val关键字等同于Java中的final&#xff0c;是无法被改变的&#xff0c;如果想更改数值&#xff0c;换成var即可 函数学习 函数的基本概念 函数是用于封装一段代码的载…

【JavaEE进阶】第一个Spring Boot程序

目录 &#x1f334;安装插件 &#x1f384;Spring Boot介绍 &#x1f333;Spring Boot项目创建 &#x1f6a9;创建Spring Boot项目 &#x1f3c0;jar 包下载不下来问题 &#x1f6a9;启动项目 &#x1f332;目录介绍 &#x1f6a9;src文件 &#x1f6a9;target文件 &…