低开视图自定义按钮导出视图数据

一、前言

在低开平台列表视图开发场景中,实现自定义导出按钮的实用功能。为避免用户无筛选条件导出全量数据(引发性能损耗、数据安全风险),需增加查询条件强制校验规则:仅当视图存在检索条件时,允许导出筛选后的数据;无检索条件时,阻断导出并给出友好提示。

二、适用场景

  1. 低开平台列表视图需要自定义导出按钮,替代系统默认导出功能
  2. 强制限制用户必须输入检索条件,禁止无筛选全量导出数据
  3. 基于视图当前筛选条件,精准导出过滤后的业务数据

三、核心实现逻辑

  1. 在低开列表视图中创建自定义操作按钮
  2. 按钮点击事件中,校验视图当前查询条件是否存在
  3. 校验规则:this.finalcondition.and.items.length > 0(筛选条件数组长度大于 0,代表存在检索条件)
  4. 有检索条件:调用导出接口,处理文件流实现下载;无检索条件:弹出提示,终止导出流程

四、实现步骤

4.1 创建视图自定义按钮

  1. 进入低开平台列表视图配置页面
  2. 找到「操作按钮」配置区域,点击新增自定义按钮
  3. 配置按钮基础信息:
    • 按钮名称:导出视图数据
    • 按钮类型:点击事件
    • 按钮样式:按需选择

  4. 保存配置,进入按钮JS 事件编辑页面

4.2 编写按钮点击事件 JS 代码

将以下完整代码粘贴到自定义按钮的 click 事件中,按需修改参数即可使用:

javascript

运行

// 导出按钮点击事件
if (this.finalcondition.and.items.length > 0) {
  // 存在查询条件,执行导出逻辑
  const param = {};
  this.Ajax.post(
    "/api/lowcode/resources/export/view?entityName=jyjt.jyjt.t_demo1&viewCode=view&resourceId=jyjt.newform3&isExportOriginalData=false&cascadeDeep=0",
    param, true, {
      responseType: 'arraybuffer',
      returnResponse: true,
    }).then(response => {
      // 创建Blob对象解析文件流
      const blob = new Blob([response.data], {
        type: 'application/vnd.ms-excel;charset=UTF-8'
      })
      // 定义导出文件名
      const filename = 'example.xlsx'
      // 创建a标签模拟下载
      const link = document.createElement('a')
      link.href = URL.createObjectURL(blob)
      link.setAttribute('download', filename)
      // 触发下载
      document.body.appendChild(link)
      link.click()
      // 清理DOM与资源,防止内存泄漏
      document.body.removeChild(link)
      URL.revokeObjectURL(link.href)
      // 导出成功提示
      this.$success("数据导出成功")
    }).catch(error => {
      console.error('导出失败:', error)
      this.$fail('导出失败,请重试')
    })
} else {
  // 无查询条件,提示用户
  this.$warning('请输入检索内容')
}

五、核心代码解析

5.1 查询条件校验

javascript

运行

this.finalcondition.and.items.length > 0

  • this.finalcondition:低开平台内置对象,存储视图当前所有查询条件
  • and.items:视图筛选条件数组,长度大于 0 表示用户已设置检索条件
  • 作用:核心校验逻辑,严格控制导出前提

5.2 导出接口请求

  • responseType: 'arraybuffer':必选配置,用于接收后端返回的 Excel 文件二进制流
  • this.Ajax.post:低开平台内置 Ajax 请求方法,无需额外引入依赖

5.3 文件下载逻辑

  1. 通过 Blob 对象解析接口返回的文件流
  2. 创建隐藏 <a> 标签,绑定文件流地址并设置下载文件名
  3. 模拟点击触发浏览器下载
  4. 下载完成后移除 DOM 元素、释放 URL 资源,避免内存泄漏

六、关键参数配置说明

表格

参数名说明修改要求
entityName业务实体名称替换为当前视图对应的实体编码
viewCode列表视图编码替换为当前视图的编码
resourceId视图资源 ID替换为当前视图的资源 ID
filename导出文件名自定义修改,后缀保持 .xlsx

七、效果验证

  1. 无检索条件:点击导出按钮 → 弹出提示请输入检索内容,导出流程终止
  2. 有检索条件:设置筛选条件 → 点击导出按钮 → 自动下载 Excel 文件,弹出成功提示

八、注意事项

  1. 校验语法this.finalcondition.and.items为低开平台固定写法,禁止修改
  2. 确保当前登录用户拥有视图导出权限,否则接口调用失败

九、总结

  1. 核心能力:通过低开平台内置对象实现检索条件校验,精准控制导出范围
  2. 完整流程:按钮创建 → 条件校验 → 接口调用 → 文件下载 → 资源清理
  3. 通用性:替换接口参数即可适配所有低开列表视图的自定义导出需求

更多请参见EOS Low-Code Platform 8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值