vxe-grid 实现配置式form搜索条件 form搜索条件框可折叠 配置式table

news2024/9/22 17:22:50

文章目录

  • 效果图
  • 代码

效果图

效果图

代码

<template>
  <div class="app-container">
    <vxe-grid ref='xGrid' v-bind="gridOptions" v-if="tableHeight" :height="tableHeight">
      <template #billDate="{ data }">
        <el-date-picker v-model="data.billDate" type="datetimerange"
                        value-format="yyyy-MM-dd HH:mm:ss"
                        range-separator="" start-placeholder="单据开始日期" end-placeholder="单据结束日期"/>
      </template>
      <template #reconciliationTime="{ data }">
        <el-date-picker v-model="data.reTime" type="datetimerange"
                        value-format="yyyy-MM-dd HH:mm:ss"
                        range-separator="" start-placeholder="开始日期" end-placeholder="结束日期"/>
      </template>
      <template #fromButton="{ data }">
        <el-button @click="handleQuery" icon="el-icon-search" type="primary"
                   v-hasPermi="['synergy:reconciliation:list']">搜索
        </el-button>
        <el-button @click="resetQuery" icon="el-icon-refresh">重置</el-button>
      </template>
      <template #operate="scope">
        <el-button v-if="scope.row.auditState !== '2'" type="text" v-hasPermi="['synergy:reconciliation:add']"
                   @click="editEvent(scope.row)" icon="el-icon-edit">修改
        </el-button>
        <el-button v-if="scope.row.auditState !== '2'" type="text" v-hasPermi="['synergy:reconciliation:add']"
                   @click="removeRowEvent(scope.row)" icon="el-icon-delete">删除
        </el-button>
      </template>
      <template #toolbar_buttons>
        <el-row class="mb8" align="middle" type="flex" :gutter="10">
          <el-col :span="20">
            <el-row type="flex">
              <el-menu :default-active="activeIndex" mode="horizontal" @select="handleSelect">
                <el-menu-item v-for="item in menus" :key="item.key" :index="item.key">
                  {{ item.name }} {{ item.count ? `(${item.count})` : '' }}
                </el-menu-item>
              </el-menu>
              <el-radio v-model="radio" label="header" style="margin-top: 8px;margin-left: 5px">表头</el-radio>
              <el-radio v-model="radio" label="body" style="margin-top: 8px;margin-left: -20px">表头+表体</el-radio>
            </el-row>
          </el-col>
          <el-col :span="4" justify="right" style="display: flex;justify-content: flex-end;margin-right: 15px">
            <el-button @click="insertEvent(0)" icon="el-icon-plus" plain type="primary"
                       v-hasPermi="['price:just:add']">新增
            </el-button>
            <el-button v-if="removeButton" @click="removeEvent(false)" icon="el-icon-delete" plain
                       type="danger" v-hasPermi="['price:just:edit']">删除
            </el-button>
          </el-col>
        </el-row>
      </template>
    </vxe-grid>
    <pagination :limit.sync="pageSize" :page.sync="pageNum" :total="total"
                @pagination="getList" v-show="total > 0"/>
  </div>
</template>

data定义

gridOptions: {
  id: 'full_edit_1', //storage需要
  keepSource: true,//编辑状态下的还原需要
  border: true,
  loading: false,
  align: "center",
  stripe: true,
  printConfig: {},
  exportConfig: {},
  rowConfig: {
    isHover: true//高亮显示
  },
  formConfig: {
    titleWidth: 80,
    titleAlign: 'right',
    items: [],
    data: {}
  },
  columnConfig: {
    resizable: true //是否启用列宽调整
  },
  customConfig: {
    storage: true, //是否启用 localStorage 本地保存
    immediate: true,
    showFooter: false
  },
  toolbarConfig: {
    refresh: {queryMethod: this.handleQuery},
    slots: {
      buttons: 'toolbar_buttons'//自定义工具栏按钮
    }
  },
  editConfig: {
    trigger: 'dblclick',
    enabled: true,
    mode: 'row',
    showStatus: true //只对 keep-source 开启有效,是否显示单元格新增与修改状态
  },
  sortConfig: {
    trigger: 'cell',//触发方式
    remote: true //所有列是否使用服务端排序,如果设置为 true 则不会对数据进行处理
  },
  filterConfig: {
    remote: true
  },
  //右击菜单
  menuConfig: {
    body: {}
  },
  importConfig: {
    remote: true,
    importMethod: this.importMethod,
    types: ['xlsx'],
    modes: ['insert']
  },
  checkboxConfig: {
    labelField: '',
    reserve: true,
    highlight: true,
    range: true
  },
  //列
  columns: [],
  //较验规则
  editRules: {},
  data: []
}
created() {
   this.gridOptions.menuConfig.body = constant.menuConfig;
   this.getColumns();//请求tableConfig配置项数据
   this.priceJustStatic()
 },
methods: {
    getColumns() {
      this.gridOptions.loading = true
      getInfoByBusiCode("请求配置项数据").then(res => {
        if (res.code === 200) {
          this.gridOptions.columns = JSON.parse(res.data.columns);
          this.gridOptions.formConfig.items = JSON.parse(res.data.formConfig);
          this.gridOptions.editRules = JSON.parse(res.data.rules);
          this.handleQuery();
        } else {
          this.gridOptions.loading = false;
          this.$modal.msgError("获取表数据失败,请重试");
        }
      });
    },
    getList() { //获取table列表数据
      this.gridOptions.loading = true
      const params = {
        pageNum: this.pageNum,
        pageSize: this.pageSize,
        form: this.gridOptions.formConfig.data //获取from搜索条件数据
      }
      getInfoList(params).then(res => {
        this.gridOptions.loading = false;
        if (res.code === 200) {
          this.gridOptions.data = res.rows;
          this.total = res.total;
        }
      })
    },
	 handleQuery() {
      this.pageNum = 1;
      this.getList();
    },
}
//from 配置
[{
	"field": "pId",
	"title": "标题",
	"span": 8,
	"itemRender": {},
	"slots": {
		"default": "pId"
	}
}, {
	"field": "billCode",
	"title": "单据号",
	"span": 8,
	"itemRender": {
		"name": "VxeInput",
		"props": {
			"placeholder": "请输入单据号"
		}
	}
}, {
	"field": "sType",
	"title": "标题",
	"span": 8,
	"folding": true, //开启折叠
	"itemRender": {},
	"slots": {
		"default": "sType"
	}
}, {
	"field": "Time",
	"title": "日期",
	"span": 12,
	"folding": true,//开启折叠
	"itemRender": {},
	"slots": {
		"default": "Time"
	}
}, {
	"span": 24,
	"align": "center",
	"collapseNode": true,//折叠终止
	"itemRender": {},
	"slots": {
		"default": "fromButton"
	}
}]

在这里插入图片描述

//table 配置
[{
	"type": "checkbox",
	"width": "50",
	"fixed": "left"
}, {
	"type": "seq",
	"title": "序号",
	"visible": true,
	"width": "80"
}, {
	"field": "id",
	"title": "ID",
	"visible": false,
	"width": "60",
	"fixed": "left"
}, {
	"field": "remark",
	"title": "备注",
	"visible": true,
	"width": "80",
	"slots": {
		"default": "remark"
	}
}, {
	"title": "操作",
	"width": "150",
	"fixed": "right",
	"slots": {
		"default": "operate"
	}
}]

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

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

相关文章

FPGA实验5:4位加法计数器

实验目的及要求 掌握时钟信号、进程和BUFFER端口的运用&#xff1b;了解计数器的设计、仿真和硬件测试&#xff0c;进一步熟悉VHDL语句、语法及应用等。 实验原理 运用Quartus II 集成环境下的VHDL文本设计方法设计4位加法计数器&#xff0c;进行波形仿真和分析、引脚分配…

【Apache Doris】周FAQ集锦:第 15 期

【Apache Doris】周FAQ集锦&#xff1a;第 15 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目&#xff01; 在这个栏目中&#xff0c;每周将筛选社区反馈的热门问题和话题&#xff0c;重点回答并进行深入探讨。旨在为广大用户…

从数据湖到湖仓一体:统一数据架构演进之路

文章目录 一、前言二、什么是湖仓一体&#xff1f;起源概述 三、为什么要构建湖仓一体&#xff1f;1. 成本角度2. 技术角度 四、湖仓一体实践过程阶段一&#xff1a;摸索阶段(仓、湖并行建设)阶段二&#xff1a;发展阶段方式一、湖上建仓(湖在下、仓在上)方式二&#xff1a;仓外…

一种优雅的方法获取PyInstaller打包Python程序的资源路径和目录路径

1、需求分析 运行Python程序的时候需要获取的资源有2种&#xff1a; 一种是固定的资源文件&#xff0c;你希望启动程序的时候可以调用的&#xff0c;比如数据库文件和图片资源文件&#xff1b;另一种是用于存储历史记录的文件&#xff0c;你希望每次打开都会改变其中的内容&am…

【机器学习】智能驱动未来:机器学习在能源效率提升与环境管理中的创新应用

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习能源环境领域的应用潜力&#x1f304;能源效率提升&#x1f3de;️环境管理⛰️具体案例…

动漫风格动漫404网站维护HTML源码

源码介绍 动漫风格动漫404网站维护HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 效果预览 源码下载 动漫风格动漫404网站维护HTML源码

收银系统源码-千呼新零售收银视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

XMl基本操作

引言 使⽤Mybatis的注解⽅式&#xff0c;主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能&#xff0c;建议使⽤XML来配置映射语句&#xff0c;也就是将SQL语句写在XML配置⽂件中. 之前&#xff0c;我们学习了&#xff0c;用注解的方式来实现MyBatis 接下来我们…

传输层和网络层的关系,ip协议+ip地址+ip报头字段介绍(4位TOP字段,8位生存时间(ttl)),ip地址和端口号的作用

目录 传输层和网络层的关系 引入 介绍 ip协议 介绍 ip地址 引入 数据传递过程 举例(ip地址的作用) ip报头 格式 4位版本号 ip地址不足的问题 8位服务类型 4位TOP(type of service)字段 最小延时 最大吞吐量 4位首部长度 16位总长度 8位协议号 首部校验和…

科研绘图系列:R语言分割小提琴图(Split-violin)

介绍 分割小提琴图(Split-violin plot)是一种数据可视化工具,它结合了小提琴图(violin plot)和箱线图(box plot)的特点。小提琴图是一种展示数据分布的图形,它通过在箱线图的两侧添加曲线来表示数据的密度分布,曲线的宽度表示数据点的密度。而分割小提琴图则是将小提…

LeNet实验 四分类 与 四分类变为多个二分类

目录 1. 划分二分类 2. 训练独立的二分类模型 3. 二分类预测结果代码 4. 二分类预测结果 5 改进训练模型 6 优化后 预测结果代码 7 优化后预测结果 8 训练四分类模型 9 预测结果代码 10 四分类结果识别 1. 划分二分类 可以根据不同的类别进行多个划分&#xff0c;以…

【数据分享】2013-2022年我国省市县三级的逐月SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2000——2022年的省市县三级的逐月PM2.5数据和2013-2022年的省市县三级的逐月CO数据&#xff08;均可查看之前的文章获悉详情&#xff09;&#xff01; 本次我们分享的是我国2013——2022年的省…

Langchain-Chatchat-Ubuntu服务器本地安装部署笔记

Langchain-Chatchat&#xff08;原Langchain-ChatGLM&#xff09;基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain。 开源网址&#xff1a;https:…

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS 1. RoMe1.1 Mesh Initialization / Waypoint Sampling1.2 Optimization1.3 Experiments 2. EMIE-MAP2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding2.2 Optimizing Strategies2.3 Experimen…

基于面向对象和递归的拦截器设计模式

1 定义 拦截器模式&#xff08;Interceptor Pattern&#xff09;&#xff0c;是指提供一种通用的扩展机制&#xff0c;可以在业务操作前后提供一些切面的&#xff08;Cross-Cutting&#xff09;的操作。这些切面操作通常是和业务无关的&#xff0c;比如日志记录、性能统计、安…

SciPy版本与Python和NumPy各个版本的兼容性

但是现在我用Scipy1.13.1&#xff0c;Python3.10&#xff0c;NumPy2.0.0&#xff0c;使用Scipy时会报错&#xff0c;将NumPy 版本降低为1.26.4以后&#xff0c;就没有报错了。

C++ | Leetcode C++题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:int missingNumber(vector<int>& nums) {int n nums.size();int total n * (n 1) / 2;int arrSum 0;for (int i 0; i < n; i) {arrSum nums[i];}return total - arrSum;} };

【MySQL】一些业务场景常见的查询,比如实现多表字段同步,递归查询等

目录 快速加注释多表关联查询更新多个字段循环查询子级方法1&#xff1a;递归查询方法2&#xff1a;循环查询 快速加注释 使用ALTER TABLE语句可以修改表结构&#xff0c;包括添加注释。以下是添加注释的语法&#xff1a; ALTER TABLE 表名 MODIFY COLUMN 列名 列类型 COMMEN…

【开源库学习】libodb库学习(三)

4 查询数据库 如果我们不知道我们正在寻找的对象的标识符&#xff0c;我们可以使用查询在数据库中搜索符合特定条件的对象。ODB查询功能是可选的&#xff0c;我们需要使用--generate-query ODB编译器选项显式请求生成必要的数据库支持代码。 ODB提供了一个灵活的查询API&#x…

LeetCode 热题 HOT 100 (001/100)【宇宙最简单版】

【链表】 No. 0160 相交链表 【简单】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; ⭐题目描述&#xff1a;两个单链表的头节点 headA 和 …