报表引擎
介绍
报表引擎由【数据源引擎+接口引擎+表单引擎+模块引擎】组合实现,目前暂时只支持表格展现形式,ECharts
图形展示形式正在开发中。
功能亮点
- 支持完全自定义的增、删、改、查:一般统计报表数据来源于多张表,在执行新增、修改、删除时可能需要操作多张表,可通过接口引擎事务实现。
- 报表均会生成虚拟
diy_table
表、虚拟diy_field
字段 - 报表支持独立表单设计(虚拟字段)
- 支持【模块引擎】为报表配置查询列、可编辑列、可搜索列等等
创建一个表格报表
- 创建一条数据源引擎。目前一个报表引擎均需要一个数据源引擎来提供数据源支撑。数据源支持
SQL、V8、JSON
(若老版本数据源类型中包含中文,请修改为此三项就大写字母) - 创建一条报表引擎。选择相应的数据源,保存后再配置一下需要显示的字段
- 在【模块引擎DIY】新增一个模块,选择打开方式选择【DIY】。并选择刚刚自动生成的虚拟报表
- 在【报表引擎】设计中,修改【查询接口替换、新增接口替换、修改接口替换、删除接口替换】为接口引擎相应的实现接口(如替换为:
/apiengine/get_webuser_info
)
实现效果展示
客户是个商城的小程序,在小程序上购物可获得积分,此报表记录了每家商户产生的积分消费订单数积分消费统计。
可通过头部商户名称、订单时间进行搜索筛选,动态统计近给定时间内的积分订单统计。
实现步骤
添加数据源引擎
在数据源引擎中新增一个数据源,用于统计报表的数据,实现代码如下:
js
// 分页参数
var pageIndex = V8.Param._PageIndex || 1;
var pageSize = V8.Param._PageSize || 15;
var PageNum = 0
if (pageIndex > 1) {
PageNum = pageSize * (pageIndex - 1)
}
// 搜索条件
var ShanghuMC = ''
var _Where = V8.Param._Where || '';
if(_Where){
_Where = JSON.parse(_Where)
_Where.forEach(item=>{
if(item.Name == 'ShanghuMC') ShanghuMC = item.Value
})
}
// 关键词搜索
var _Keyword = ''
if(V8.Param._Keyword){
_Keyword = V8.Param._Keyword
}
// 时间搜索条件
var KaishiSJ = ''
var JieshuSJ = ''
var where1 = ''
if(V8.Param._SearchDateTime){
var ShijianFW = V8.Param._SearchDateTime.ShijianFW
if(ShijianFW){
KaishiSJ = ShijianFW[0]
JieshuSJ = ShijianFW[1]
KaishiSJ = `${KaishiSJ} 00:00:00`
JieshuSJ = `${JieshuSJ} 23:59:59`
where1 = `and CreateTime >= '${KaishiSJ}' and CreateTime <= '${JieshuSJ}'`
}
}
// 统计总共的条数
var Count = V8.Db.FromSql(`select count(Id) from diy_shanghuGL where IsDeleted = 0 and ShenheZT = '已通过' and ShangjiaZT = '上架' and ShanghuMC Like '%${ShanghuMC}%' and ShanghuMC Like '%${_Keyword}%'`).ToScalar()
// 获取主数据
var ShanghuInfo = V8.Db.FromSql(`select * from diy_shanghuGL where IsDeleted = 0 and ShenheZT = '已通过' and ShangjiaZT = '上架' and ShanghuMC Like '%${ShanghuMC}%' and ShanghuMC Like '%${_Keyword}%' limit ${PageNum},${pageSize} `).ToArray()
var data = []
// 写代码逻辑获取需要的内容
ShanghuInfo.forEach(item=>{
var FuzeR = V8.Db.FromSql(`select * from sys_user where Id = '${item.FuzeRID}'`).ToArray();
FuzeR = FuzeR[0];
var obj = {
ShanghuMC:item.ShanghuMC,
FuzeRXM : FuzeR.Name || FuzeR.Account,
FuzeR : FuzeR.Account,
YonghuID : FuzeR.Id,
ShanghuSK : 0,
DingDanShu:0,
ShanghuID : item.Id,
ShanghuLOGO : item.ShanghuLOGO
}
// 消费积分统计
obj.ShanghuSK = V8.Db.FromSql(`select sum(XiaofeiJF) from diy_JFXFMX where IsDeleted =0 and (HexiaoZT = '已完成' or HexiaoZT = '待评价' ) and ShanghuID = '${item.Id}' ` + where1).ToScalar()
obj.ShanghuSK = obj.ShanghuSK || 0
// 订单数统计
obj.DingDanShu = V8.Db.FromSql(`select Count(Id) from diy_JFXFMX where IsDeleted =0 and (HexiaoZT = '已完成' or HexiaoZT = '待评价' ) and ShanghuID = '${item.Id}' ` + where1).ToScalar()
data.push(obj)
})
V8.Result = { Code : 1, Data : data, DataCount : Count}
报表添加
设计报表
新增完报表以后点击报表设计,可进入对应的表单设计区域。
可在左边选择需要的空间拖拉到中间的表单区域,右边的表单属性可设置控件的字段属性。 也可根据需求拉入需要的搜索条件控件,一样在流程引擎中配置搜索条件代码。
🌈注意:字段名需要和流程引擎中获取的数据对应。
🌈注意:也可通过字段配置中,选择已存在表中的字段或者添加选择表中的所有字段。
模块引擎分配报表到页面中
- 如需添加二级菜单,打开方式选择
SecondMenu
,添加表单选择Diy
。 - 在自定义表中选择刚刚新增的报表,在界面模板中选择搜索
+
表格。 - 排序则是在此父级菜单中的排序顺序,越小越靠前,不填默认为
0
。
权限分配
- 在岗位角色中选择需要看到此报表的角色。
- 在对应菜单中将其复选框勾上。
- 点击保存。
- 刷新浏览器,则可看到刚分配的报表引擎。