首页 > 其他分享 >全局右键菜单点击弹窗打开指定报表

全局右键菜单点击弹窗打开指定报表

时间:2022-09-18 17:56:49浏览次数:117  
标签:菜单 报表 反馈 右键 按钮 var 弹窗

最近收到领导提出的一个需求,大致如下:

用户在决策平台使用报表时,如果发现某张报表有问题时可以随时右键进行反馈,信息部在接收到反馈时可以根据用户的反馈快速定位并解决问题。

针对此问题,在思考许久后觉得还是直接弹窗,让用户可以直接在弹窗中提交问题反馈是最好的。因此实现了以下功能。

用户在决策平台的任何一张报表中右键,都会出现"报表问题反馈"按钮,点击按钮后会出现一张弹窗填报表,用户填写完成后点击提交既可以完成问题的反馈。

效果如下:

实现步骤如下:

1. 开发报表反馈登记表

为了方便演示,本填报表是基于信息采集报表上修改的,数据存储在Finedemo中的雇员表中。
需要注意的是,为了方便记录用户反馈的问题是属于那张报表中,我们需要定义一个参数reportName,这个参数需要通过URL进行传递。

具体的报表文件可以在文章底部进行下载。

2. 书写JS

全局js rightclick.js代码如下:

// 将后续可能用到的一些菜单样式提前添加到head中,如果需要自定义,可以修改该样式代码
$("<style>.rightclickcontextmenu *{padding:0px;margin:0px}.rightclickcontextmenu ul {list-style: none;}.rightclickcontextmenu {width: 100px;border: 1px solid #999;box-shadow: 3px 3px 3px #ccc;background-color: #fff;position: absolute;top: 10px;left: 10px;display: block;}.rightclickcontextmenu li {height: 40px;line-height: 40px;}.rightclickcontextmenu li a {display: block;padding: 0 10px;text-decoration: none;color: #333;}.rightclickcontextmenu li a:hover {background-color: #ccc;font-weight: bold;color: #fff;}</style>").appendTo("head");

// 监控全局右键按钮
$(document).contextmenu(function(env) {
  
  var e = env || window.event;
  
  // 执行公式,获取当前报表的名称及完整的路径
  var reportname = FR.remoteEvaluate('=if(len(formletName)==0,reportName,formletName)');
  
  // 为防止出现多次右击出现多个按钮,每次右击后先清除之前的按钮
  $("#rightclickcontext").remove();

  // JQ将右键出现的菜单按钮手动添加到body中,并添加按钮事件
  $('<div class="rightclickcontextmenu" id="rightclickcontext"><ul><li><a href="javascript:;">报表问题反馈</a></li></ul></div>').appendTo("body").bind('click', function() {

    // 定义弹窗报表文件的路径,如果要跟换报表,可以修改该参数
    var url = "/webroot/decision/view/report?viewlet=报表问题反馈.cpt&op=write&reportname=" + reportname;

    // 将URL  endcode 保证传输中文路径时不会出错
    url = FR.cjkEncode(url);
    
    // 定义iframe弹窗
    var $iframe = $("<iframe id='inp' name='inp' width='100%' height='100%' scrolling='no' frameborder='0'>");
    $iframe.attr("src", url);
    var o = {
      title: "报表问题反馈",
      width: 600,
      height: 300
    };
    // 弹窗展示
    FR.showDialog(o.title, o.width, o.height, $iframe, o)
  });

  // 获取右键菜单按钮元素,并隐藏
  var context = $("#rightclickcontext");
  context.css("display", "block");
  
  获取右击的位置并调整菜单按钮位置
  var x = e.clientX;
  var y = e.clientY;
  var w = window.innerWidth;
  var h = window.innerHeight;
  context.css({
    "left": Math.min(w - 202, x) + "px",
    "top": Math.min(h - 230, y) + "px"
  });
  return false
});

// 全局监测单击事件,单击后删除右键的菜单按钮
$(document).bind("click", function(e) {
  $("#rightclickcontext").remove()
});

3. 全局配置JS

如果只针对个别报表才允许反馈的话,可以在指定报表中引入该js文件。下面演示一下全局引入。
1、首先将js文件存放到工程webroot文件夹下:

2、在设计器中点开服务器->服务器配置

3、在引入JavaScript中选择第一步添加的文件,并添加,点击确定即可

问题点
因为只是出版,写文章是突然思考到弹窗嵌套问题,目前尚未解决,后续解决后更新

文件下载
点击下载模板文件及JS文件

标签:菜单,报表,反馈,右键,按钮,var,弹窗
From: https://www.cnblogs.com/weibw162/p/16705327.html

相关文章

  • 使选择下拉菜单可搜索
    使选择下拉菜单可搜索每个人都熟悉HTML选择标签,它使用户能够从可用选项中选择一个或多个。虽然这是几乎每个网站表单中最常见的功能之一,但用户滚动并找到所需的选项可能......
  • js canvas2D CanvasImageRender.js 之 带图标的菜单
    1"usestrict";23var__emptyPoint=null,__emptyContext=null,__emptyPointA=null;45constColorRefTable={6"aliceblue":......
  • 用qt designer"设计"出带圆点的单选菜单项
    先放张图,也许我们要的是右边的样子,而QT设计器设计出来是左边的样子,那怎么样稍做修改一下,实现右边的效果呢?另外,据说,在很久以前,QT实际上是可以设计出右边的样子的,但......
  • Windows 11恢复旧版的右键菜单
    1.打开注册表开始->运行->输入regedit->回车 2.在左边框的树,展开到以下路径:HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID 3.右键CLSID节点,新建->项->输入{......
  • vue3 组件-通知菜单
    https://kuangyx.cn/docs/文章/vue3组件/通知菜单.html......
  • IDL界面程序直接调用envi菜单对应功能的实现方法
    ENVI软件具备强大的二次开发功能,提供了绝大多数功能的函数调用接口。但二次开发的时候需要自己编写处理和操作界面,很多时候这也是个头疼的问题。如果希望在自己的程序界面......
  • 使用媒体查询的响应式菜单 - 教程
    使用媒体查询的响应式菜单-教程HTML在HTML中,我们有标题和菜单。在菜单项中,我们有桌面和移动元素。屏幕大于500px时显示桌面,小于500px时显示手机。在移动类中,我们将......
  • 组合控件——顶部导航栏——溢出菜单OverflowMenu
       点击导航栏右边的三点图标,会弹出溢出菜单OverflowMenu,意指导航栏不够放了、溢出来了。 溢出菜单的菜单项也在res\menu下面的XML文件中定义,不同之处是多了个sh......
  • 使用媒体查询的响应式菜单 - 教程
    使用媒体查询的响应式菜单-教程HTML在HTML中,我们有标题和菜单。在菜单项中,我们有桌面和移动元素。屏幕大于500px时显示桌面,小于500px时显示手机。在移动类中,我们将......
  • 右击菜单增加IobitUnlocker解锁
    WindowsRegistryEditorVersion5.00[HKEY_CLASSES_ROOT\Folder\shell\2IobitUnlocker]@="IobitUnlocker解锁"[HKEY_CLASSES_ROOT\Folder\shell\2IobitUnlocker\comman......