JeecgBoot Online 自定义预览按钮开发记录

JeecgBoot Online 自定义预览按钮开发记录

功能目标:Online列表增加【预览】行按钮,点击在新标签打开HTML富文本内容,用于查看交易复盘报告

一、整体实现思路

  1. Online表单新增自定义JS按钮,按钮类型Js,按钮编码必须和JS增强内函数名完全一致:previewHtml
  2. 在List列表JS增强中编写预览逻辑,新窗口打开HTML,规避Jeecg内置modal的this上下文作用域报错问题
  3. 关键配置:HTML内容字段必须在【页面属性→列表】勾选列表查询,否则后端不会返回此字段到前端行数据row中,前端拿不到内容。

二、按钮配置(新增按钮弹窗)

项目
*按钮编码 previewHtml必须和JS函数名大小写一致
*按钮名称 预览
按钮样式 Link
按钮类型 Js
排序 1
表达式 留空
按钮状态 激活

三、List JS增强完整代码

位置:Online表单【JS增强】→ list标签页

注意:Jeecg Online JS增强是对象字面量,方法之间必须加英文逗号,最后一个函数不加逗号

javascript 复制代码
one() {
  console.log('当前选中行的id', this.selectedRowKeys);
},
three(row) {
  console.log('当前行数据', row)
},
beforeDelete(row) {
  return new Promise(resolve=>{
    console.log('删除数据之前看看数据', row);
    resolve();
  })
},
previewHtml(row) {
  console.log('行数据', row);
  // 这里根据你的数据库字段名修改,当前表html内容字段为 html_content
  var html = row.html_content || row.htmlContent || '';
  if (!html) {
    alert("暂无HTML内容,请检查【页面属性-列表】是否勾选该字段");
    return;
  }
  var title = row.title || "HTML页面预览";
  var newWin = window.open("");
  newWin.document.write(html);
  newWin.document.title = title;
  newWin.document.close();
}

四、踩坑记录(重点)

  1. ❌ 语法报错 Unexpected identifier 'three'

原因:Jeecg list JS增强是对象字面量,函数之间缺少英文逗号 。每个方法}后面必须加逗号,最后一个函数除外。

  1. Cannot read properties of undefined (reading '$message')

原因:自定义行按钮的执行上下文this不是vue实例,this.$message / this.$modal / this.$vue全部无法访问。

✅ 解决方案:放弃内置弹窗,改用原生window.open()新开标签预览,alert做提示。

  1. ❌ 点击预览弹窗提示「暂无HTML内容」,控制台row对象没有html字段

原因:【页面属性-列表】没有勾选HTML字段的列表查询,后端不返回该字段。列表查询勾选后,表格列可设置隐藏,只用于后端返回数据,前端不展示

  1. ✅ 成功现象:点击预览按钮,打开新标签,完整渲染HTML页面。

五、后续扩展备选方案

如果后续想改成弹窗内嵌预览(不新开标签),需要重写纯DOM弹窗,不再依赖jeecg内置modal。

六、操作步骤速查

  1. 配置自定义按钮,编码previewHtml
  2. 打开JS增强list,粘贴完整代码,保存
  3. 页面属性 → 列表,找到HTML字段,勾选【列表查询】
  4. 保存Online表单,F5刷新页面
  5. 点击列表行【预览】测试,F12控制台调试字段

要不要我再帮你把这个md精简成一个极简版本,只保留核心代码和坑点,方便直接丢到gitcode仓库?

相关推荐
不懂英语的程序猿6 个月前
【JEECG】JeecgBoot 多租户架构深度解析(Saas)
saas·jeecgboot·多租户·jeecg
不懂英语的程序猿6 个月前
【JEECG】JeecgBoot 项目自定义接口路径
前端·后端·jeecgboot·jeecg
一川晚照人闲立2 年前
JEECGBOOT前端VUE3版本浏览器兼容支持chrome>=76版本方法
java·前端·vue.js·chrome·anti-design-vue·jeecgboot·jeecg
CVE-柠檬i2 年前
app&小程序&web安全—sign签名绕过
yakit·jeecg·yaklang
业余敲代码3 年前
从0到1快速搭建一个jeecg 企业级应用管理后台
mysql·低代码·vue·springboot·jeecg