一、效果展示
二、背景需求
客户系统做了个考勤统计统计表可以统计考勤数据,现在客户要结算工资了想把上个月的考勤数据导出来处理(是的这关乎到钱钱所以还是挺重要的💸💸)。但是这个考勤统计统计表是个虚拟报表没有物理表直接存储数据,所以直接用吾码低代码平台自带的导出方法无法导出数据😶🌫️😶🌫️,这就需要另写一个接口获取到数据并转成excel文件来导出。
三、实现步骤
参考✨✨开源低代码平台-Microi吾码-自定义导出Excel-CSDN博客✨✨
(一) 获取数据源
最开始我是打算用前端post方法把这个虚拟报表的数据源接口的代码跑一遍,但是这个方法试过之后报错,提示无法拿到token,请教过后发现前端点击导出按钮事件是无法把token传到接口引擎,有两种解决方法:
1. 直接在接口里写死一个token,但是在程序中写死不太好()
2. 把获取数据源的方法直接用后端DataSourceEngine方法,这个接口引擎本身就是后端,没必要再拐弯用前端的方法拿数据,可以直接用后端的方法来获取数据(这才是程序员正常的逻辑,是我能力不佳经验不足了只想着用前端的方法了🥲🥲),到这就体现出我们吾码低代码平台的优势了:前后端直接打通,可以用调用前端方法也可以直接调用后端方法接口,自如调用畅通无阻。
var res = V8.DataSourceEngine.Run({
ModuleEngineKey: ModuleEngineKey,
DataSourceKey: DataSourceId,
_Where : whereArray,// 查询条件
OsClient: 'crm',
});
// 解析返回的数据并只返回 Data 部分
var dataList = res.Data;
3. 因为系统前端看到数据的是支持查询的,现在获取到数据源之后就可以考虑如何把查询条件传进去接口来实现导出的数据也是符合前端查询条件的。但是传入接口的参数和数据源接收到的查询参数是不一样的,数据源查询的参数格式是这样的: