Skip to content

接口及配置说明 #27

@xinglie

Description

@xinglie

部分可设计元素支持通过接口与数据源绑定,方便展示或打印,这里介绍下相关的数据格式和绑定思路

接口统一格式

项目中所有用到的接口均按以下统一格式返回

{
    "data":any, //根据接口的具体作用,返回相应的如数组、对象等结构的数据
    "success": boolean,//接口状态,成功为true,失败为false,当失败时,最好在"message"中提供相应的失败信息
    "message": "" //当接口异常时可提供的信息
}

如果您购买了源码,则设计器中所有接口统一由designer/service.ts中发出,而状态success及数据data均可以在这里适配成其它现有接口的格式,无须按这里描述的格式进行处理。

另外一种适配方案是,通过提供的配置项response进行适配,返回上述格式即可,设计器并不要求您一定修改现有接口为上述结构,如果您还是不明白,可以联系作者。您只需要知道上述提到的格式只是设计器默认的数据格式而已,并且可以很方便的适配成其它结构。

全部数据源接口

该接口为设计器数据源面板中,显示的树形列表,如下图所示

image

该接口返回后端都有哪些数据接口可供使用,可查看当前项目中使用的一份写死的格式:https://github.com/xinglie/report-designer/blob/master/apis/fields.json

说明一下data中的格式

{
    "data":[{//数组格式,可设置多个数据源
            "name": "地区测试",//数据源名称,必须设置
            "tag": "apis/area.json",//数据源接口地址、参数或其它标识,非必须
            "id": 1,//数据源id,必须且唯一
            "fields":[{//数据源中包含的可使用的字段
                    "name": "河北",//字段名称,必须
                    "key": "area_13"//字段key,必须
             }]
     }]
    "success": true,
    "message": "" 
}

如上述示例中的”地区测试“数据源,需要配合相应的”地区测试“这个数据接口来看:https://github.com/xinglie/report-designer/blob/master/apis/area.json

其中最关键的是”fields“这个对象,该对象需要列出 https://github.com/xinglie/report-designer/blob/master/apis/area.json 接口中可供使用的字段集合,这是绑定数据源的关键。

对于tag字段,因为开发和发布最终的请求地址会不一样,因此tag可以只存放一个标识字符串,而在最终请求时,report-designer会交由统一的数据模块进行处理,可在这个数据模块里根据一定的规则,把tag存储的标识字符串转换成真实的url。该 Github 上的代码为了简单,tag 中直接存储的是接口地址。

对于绑定深层次的数据,绑定 key 中使用 / 分割,该分割字符可以自定义。示例请参考小票数据

点击这里查看如何通过tagid在打印或预览时转换成真实的url

元素绑定数据源

所有元素均支持数据源的绑定,任意一个元素只要出现在属性面板中的属性也支持数据绑定。目前做了常用元素如文本、图片、条形码、二维码以及“数据”元素分组下的列表格、数据表格等的数据绑定,如果您需要定制元素或调整某些元素的某些属性成数据绑定的形式,请联系作者

元素在绑定时,内部会记录相应的接口地址或标识以及绑定的字段,在展示或打印时,由展示或打印页面根据元素绑定的接口,把数据设置到绑定信息上,而元素仅根据绑定的字段key把相应的数据取出来展示

自动分页

目前只有“数据”元素分组下的列表格、数据表格等能根据数据源的数据多少在打印时自动分页

根据可设计元素的不同,需要绑定的数据源是数组还是对象也不同。比如“数据”元素分组下的列表格、数据表格等要求数组。文本、图片等要求返回单个对象,即使返回数组也只会使用第一个。

更多规则

以上是个人根据以往的经验总结的格式,非必须按照执行的最终格式。包括元素绑定数据源时,到底使用对象还是数组,并非最终定论,可根据具体需求调整。

Metadata

Metadata

Assignees

No one assigned

    Labels

    技术方案介绍项目中好的技术点

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions