FineReport移动端如何获取地址位置

简介:

对于企业大多数员工来说,由于其工作位置是固定的,可以有多种方式进行上班打卡签到以保证该员工有按时正常来上班,但是对于经常需要出差,去客户现场的员工来说,就无法保证他们是否有去上班,所以希望能通过手机位置定位来保证员工有正常上班。

上述情况可以通过FineReport模板添加一个按钮控件,点击该按钮的时候,获取当前地理位置,并将该位置信息复制给某个单元格,最后员工填报当前模板即可。

实现如下图所示效果,点击地理位置按钮获取当前位置与当前时间,并显示下下方对应的单元格中:

wKiom1iGzKXg7bx7AAAIPnu6anE200.png-wh_50

模板制作

打开设计器,新建一张模板,按照如下图所示样式设计模板,其中E2单元格为按钮控件,控件名称为地理位置,C5为下拉框控件,E5为时间控件:

wKiom1iGzLOy704EAAALnvhq2Ns476.png-wh_50

获取当前地理位置

获取当前地理位置有两种方式,一个是点击按钮获取地理位置,一个是直接打开模板的时候就获取位置,示例中,想实现通过点击按钮获取地理位置。

1)通过点击按钮获取地理位置

打开按钮的控件位置,为该控件添加一个点击事件,如下图:

wKioL1iGzRLBqD8ZAACwVViFSYI300.png-wh_50

相应代码如下:

1
2
3
4
5
6
7
8
9
10
FR.location( function (status, message){  //获取地理位置
if (status== "success" ) {
//定位成功,message返回经纬度值
FR.Msg.alert( "当前位置是"  + message);
contentPane.setCellValue(2, 3, message);
else  {
//定位失败,message返回对应的错误信息
FR.Msg.alert(message);  //定位失败
}
});

FineReport通过FR.location方法获取当前位置,如果status值为success,则表示获取地理位置成功,否则定位失败,如果定位成功,则将返回的地理位置信息赋值给C4单元格。

要注意的是该方法只在移动端有用,如果在web点击该按钮事件获取地理位置,则直接提示定位失败。

2)加载结束后获取当前位置

如果想在模板加载结束之后就获取到当前地理位置,那么只需要将上述代码添加到加载结束后事件中即可,打开模板,点击模板>模板web属性>填报页面设置,添加一个加载结束事件,如下图:

wKioL1iGzVXBo7XdAAEaMATzpZU809.png-wh_50

获取当前时间

在模板中还需要将当前签到时间也赋值过去,所以还需要在按钮的点击事件中获取到当前时间,即给E2单元格再添加一个点击事件,并赋值给E4单元格,代码如下:

1
2
3
var  myDate =  new  Date();
var  mytime=myDate.getFullYear()+ "-" +myDate.getMonth()+1+ "-" +myDate.getDate()+ " " +myDate.getHours()+ ":" +myDate.getMinutes()+ ":" +myDate.getSeconds();  //获取当前时间
contentPane.setCellValue(4, 3, mytime);

按钮点击事件全部代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
FR.location( function (status, message){  //获取地理位置
if (status== "success" ) {
//定位成功,message返回经纬度值
FR.Msg.alert( "当前位置是"  + message);
contentPane.setCellValue(2, 3, message);
var  myDate =  new  Date();
var  mytime=myDate.getFullYear()+ "-" +myDate.getMonth()+1+ "-" +myDate.getDate()+ " " +myDate.getHours()+ ":" +myDate.getMinutes()+ ":" +myDate.getSeconds();  //获取当前时间
contentPane.setCellValue(4, 3, mytime);
  
else  {
//定位失败,message返回对应的错误信息
FR.Msg.alert(message);  //定位失败
}
});

效果查看

将该模板添加到数据决策系统的节点树上,其中模板的预览方式为填报,如下图:

wKiom1iGzYHxOAhHAABF8Tfgze8460.png-wh_50

用移动端登录该系统,访问该张模板,点击地理位置按钮获取当前地理位置和当前时间,如下图:

wKioL1iGzbShXEaOAADZxKg88M8241.png-wh_50

FineReport中获取的地理位置是经纬度,如果需要确定其具体位置的话,还需要另外转换。



本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1894019,如需转载请自行联系原作者

相关文章
|
Java Maven
IDEA 2021 整合 SSM 配置离线 Maven 3.8.1 报错大全 Since Maven 3.8.1 http repositories are blocked.
IDEA 2021 整合 SSM 配置离线 Maven 3.8.1 报错大全 Since Maven 3.8.1 http repositories are blocked.
7690 0
IDEA 2021 整合 SSM 配置离线 Maven 3.8.1 报错大全 Since Maven 3.8.1 http repositories are blocked.
|
4月前
|
Java 数据库连接 微服务
零基础自学 Java 全栈必备最全学习路线及知识清单方向指引
本文为零基础学习者提供完整的Java全栈学习路线,涵盖Java基础、进阶、框架、项目实战及拓展方向,助你系统掌握全栈开发技能,快速成长为优秀Java工程师。
589 6
|
7月前
|
人工智能 算法
我国“AI+X”跨界人才培养:如何通过职业技能培训,把握人工智能就业机遇?
在“AI+X”时代,人工智能与各行业的深度融合正在重塑职业图景和人才标准。跨界能力成为核心竞争力,要求从业者既能将专业问题转化为AI可理解的框架,又能将技术输出转化为实际业务价值。这推动了职业技能培训从单一技术传授向复合能力培养转型,强调知识架构重组、场景化学习和伦理判断力培养。个人发展需构建“认知-实践-认证”的闭环路径,持续更新技能以适应快速迭代的技术环境。未来属于既懂行业本质又能驾驭技术的跨界者,他们将成为推动社会进步的关键力量。职业技能培训的使命在于赋能学习者,在技术与人文之间找到平衡,实现从专业从业者到领域创新者的蜕变。
|
9月前
|
人工智能 自然语言处理 监控
17.1K star!两小时就能训练出专属与自己的个性化小模型,这个开源项目让AI触手可及!
🔥「只需一张消费级显卡,2小时完成26M参数GPT训练!」 🌟「从零构建中文大模型的最佳实践指南」 🚀「兼容OpenAI API,轻松接入各类AI应用平台」
509 1
|
机器学习/深度学习 存储 人工智能
《C++ 模型训练之早停法:有效预防过拟合的关键策略》
在C++模型开发中,过拟合是常见问题,早停法(Early Stopping)能有效避免这一陷阱。本文介绍如何在C++环境下通过设定监控指标、耐心值及记录最佳模型状态,实现早停法,确保模型在最佳状态下停止训练,保持良好泛化性能。
374 12
|
存储 Python
一文让你搞懂 Python 的 pyc 文件
一文让你搞懂 Python 的 pyc 文件
503 15
|
弹性计算 监控 网络协议
短连接服务部署
【9月更文挑战第20天】
279 2
|
JavaScript 前端开发 Java
根据地球上任意两点的经纬度计算两点间的距离
根据地球上任意两点的经纬度计算两点间的距离
831 2
|
数据采集 缓存 Linux
🔥🔥🔥最稳定好用的跨平台SDK版本管理器(version-manager)
version-manager (vm)是一个全平台的、精简的版本管理工具,旨在无缝管理多种编程语言,包括新兴语言如 vlang、zig 和 typst。与fnm、sdkman等工具不同,vm专注于提供流畅、稳定的体验,通过内置机制隔离和缓存爬虫数据,避免插件需求。它支持代理设置和多线程下载,优化了国内用户下载速度。vm覆盖40+语言和工具的安装、切换及环境管理,简化了资源查找和SDK管理。欢迎访问 <https://github.com/gvcgo/version-manager> 参与项目。演示动图分别适用于MacOS、Windows和Linux。
🔥🔥🔥最稳定好用的跨平台SDK版本管理器(version-manager)