FineReport报表是一款集数据展示(报表)和数据录入(表单)功能于一身,用于快速构建企业信息系统的Java报表软件

有了FineReport这款纯java报表软件,在软件开发过程中,可以革命性的加快开发速度,提高软件的稳定性;在软件交付后,能够大大的降低维护难度,提高最终用户的满意度,开发出的软件可以做到随需应变。

您可以点击以下列表快速查看FineReport报表软件的核心优势。

报表设计器

    • 类Excel的设计风格

Java报表软件FineReport的设计风格和Excel相似(当然二者本质并不一样),整个报表设计窗口是格子式的可视化编辑界面。用户可以借助这个界面所见即所得的设计出任意复杂的表样,而且免去了传统条带式设计数据对齐的繁琐,使得报表制作的效果得以大大提高。

Web报表设计器,类excel界面

1.无限扩展的行列

FineReport 报表设计器的界面与Excel一样,包括单元格的命名方式和组织方式,同Excel一样支持无限行和无限列伸展,用户在设计格子较多的报表时,也无须单行单列的进行添加,并且未使用的格子并不会占用内存,因此不存在性能问题。

2.无失真导入导出Excel

由于很多公司以前制作报表都是使用的静态的Excel表,现在使用新的报表软件后往往面临着需要重做的难点。FineReport考虑到这一点,提出了完全兼容Excel的理念,兼具公式的兼容和格式的兼容,使java报表软件FineReport能够轻松实现无失真导入导出excel。

3.行列变化时单元格引用的内容自动变化

设计报表时经常会临时增加行列或者删除行列,随之而来的就是公式会不会不能使用了,FineReport设计报表时在行列变化时,单元格引用的内容、公式都会根据行列的变化而自动变化。

  • 三层架构设计

FineRepor报表软件采用主流的三层架构模式进行设计,只需要在报表设计人员的电脑上安装设计器,设计完后,将工程部署到服务器上,其他用户只要电脑上有浏览器,就可以直接访问报表。一旦报表需求变化后,使用FineReport设计器,可以

(1)很方便的在本地进行设计然后通过工作目录的切换发布到远程服务器上;

(2)直接对远程服务器上面的报表文件进行编辑;

这样对于公司的使用来说只需要部署一次工程,以后就可以直接远程设计,迁徙方便,提升效率,其实现原理如图所示:

java报表软件三层架构设计

  • 多工作目录的配置

Java报表软件FineReport提供了报表工作目录的概念,即每一个报表的独立应用或者集成环境都是一个工作目录。每个工作目录下都有相应的jar文件,报表模板文件,资源管理文件等。

在实际的应用中,更多的需求是使用远程工作目录。即报表服务器集成部署于实际的系统当中,报表设计者通过设计器连接远程环境,直接对报表模板文件,配置参数等进行编辑保存。特别如果有测试环境,生产环境等多个环境的情况下,FineReport的多工作目录便捷切换便能够给设计者提供极大的便利。

多工作目录即对应着多运行环境如图

java报表软件多运行环境

FineReport报表中的工作目录的配置界面及便捷切换工作目录如图java报表软件多工作目录

 

  • 多人协同工作

一个系统开发团队难免要多人同时从事报表的开发工作,可能每人承担一部分互不相关的模板任务,也有可能要利用到他人设计的报表。借助FineReport的报表运行环境就可以轻松做到多人协同制表,实现如图

FineReport多人协同报表

多个报表制作人员可通过远程设计器连接到同一个报表运行环境,同时该连接又依据权限控制每个制作人可操作的范围,保证多人工作情况下的数据和文件安全性。

另外为了防止多人同时编辑同一文件,导致文件冲突的情况,java报表软件FineReport提供了模板加锁和解锁的功能,有效防止了文件编辑冲突。

  • 零编码设计

具有零编码设计功能的Finereport报表设计器,使得非编程人员也可以制作报表并且做得更好成为可能。只要是了解企业业务逻辑及简单的数据库知识的用户,都可以通过Finereport设计器,设计出符合自己实际业务需求的报表或表单。

中国式复杂报表

中国式报表,从总体来讲,指的一些具有复杂性和任意性的报表。这些报表往往是样式不太规则,数据来自多个不同的地方,并且可能需要对数据在报表中进行一些相对复杂的处理。

FineReport报表软件提供了异构数据源模型、Excel+绑定数据列的报表设计模型等,使得行列对称,动态数据处理这些传统工具需要靠编码来实现的常见业务需求,仅通过简单的操作就能实现,轻松制作出复杂的中国式报表。

    • 多源数据关联

FineReport报表软件天然支持多数据源(集),支持多维数据库,多数据源即多数据关联、报表数据多源,同一张报表的数据可同时来自多个数据表,多个不同的数据库,或者多个不同的用户自定义数据视图,然后在报表中可直接相互运算形成最终的报表。FineReport支持不同主题的分析数据可以来源于不同的业务系统,实现多系统、多业务的多源数据的整合关联,建立统一的数据平台。

FineReport是纯java报表软件,天然支持多数据源(集),从一个数据库中不同数据库表或者不同数据库中不同数据库表的数据取出来展现在一张报表上。

FineReport报表支持多维数据库,数据连接方式即连接数据源的方式多种多样,支持通过JDBC的方式直接连接数据库,或通过JNDI的方式与应用服务器共享数据连接。FineReport报表支持多种数据连接方式:支持多种数据库数据源,如Oracle、 DB2、SQLServer、MySQL、Sybase、Informix等主流的关系型数据库,支持SQL取数据表或视图,以及存储过程;支持文本数据源,如Excel文件,Txt文件,XML文件的数据等;支持BI多维数据库,如Essbase、ssas、sap、hadoop以及FineBI的cube等;除此之外,FineReport还支持程序数据源、SAP数据源和异构数据源、内置数据集等。同时数据源还具有无限的扩展性,可以支持WebService, SOA等标准的数据。
java报表多数据源

报表的分片指的是报表被分成了多个区域,每个区域重复规则不同,而又可能相互运算。

这样的报表虽然总体上是一个规则的整体,但是实际上却是不规则的数据布局方式,那么也就无法通过将多源整合成单一数据源来实现,那么传统的报表工具对这样的报表,就只有编码这一种解决方案。

FineReport界面的自由布局方式,使得报表的样式仅通过几次拖拽就能够完美呈现。而多源支持,则只需要通过单元格中设置管理关联条件即可将明细区与列表区的数据关联对应起来,全程无需任何的编码。

    • 行列对称

FineReport采用的是EXCEL+绑定数据列的处理模型,天然支持行列对称,所有纵向的操作都可以在横向得到同样的充分体现。不仅不需要专门设定交叉表模型,还能够支持任意格式不规则的展现样式。 例如将这张表的行列对调一下,可以看到效果如图2.25所示:

java报表行列对称

    • 自定义分组

自定义分组,指数据的归类方式并非按照常规的已有数据来分组,而是按照分段分组或者其它不规则的分组。

FineReport报表软件提供的自定义分组又可以按照分组方式分为条件分组和公式分组。条件分组主要用于支持分段型分组。如图是根据销售额的数额汇总划分客户的等级,这个等级字段在数据库是不存在的,因此使用分段分组来实现。

FineReport自定义分组报表

    • 动态格间运算

基于格子界面中数据扩展的特性,即设计界面与返回数据的一对多的关系,java报表软件FineReport提供了一整套运算体系,用于扩展后数据的定位与相互引用计算,这就是层次坐标,通俗一点定义即动态格间运算。

下面这张表格体现了同比,环比,排名运算:

java报表软件动态格间计算

上图报表的设计图,可以看到同比,环比,组内排名,跨组的总排名,都是通过一些相对特别的公式,也就是我们所说的层次坐标公式来实现的:

java报表软件层次坐标

    • 聚合报表

Java报表软件FineReport根据客户需求,推出了聚合报表的概念和标准,专门用于解决这类大报表制作难点。聚合报表的概念是将多个分块同时放到一个报表里面,每一个块都类似一张单独的报表,而且报表之间相对独立,如报表布局(格子间不会相互牵扯、覆盖单元格等),但是相应模块之间可以传递数据。

聚合报表制作出上下左右结构的报表,左报表和右报表都可以分别分页显示数据,如果不希望分页可使用数据分析方式预览。

对于聚合报表,聚合块边界采用像素来定位,其高度、宽度均可设置是否固定,设置分页优先级决定优先按哪个聚合块分页。这不仅解决了嵌入主报表中子报表显示不止一页的问题,也使得复杂式报表的制作变得简单。由于这些聚合块相当于聚合报表中的一个控件,不同聚合块之间的数据交互也很方便:

具体浏览效果如图

java报表软件设计聚合报表预览

FineReport的聚合报表实现这种效果就很容易,上述一张很复杂难以实现的报表,在FineReport报表设计器里面的样式如图所示,可以看出报表设计很直观

java报表软件设计聚合报表

    • 层式报表

FineReport报表推出的层式报表概念不仅加快报表的展现速率而且缓解报表的内存压力。

对于普通明细层式报表,报表服务器会把这个报表执行完后才会显示。如果采用层式报表,就只计算当前页的报表数据,从而使报表展示速度达到最快。虽然这时报表尚未执行结束,已经执行出来的那部分已可以得到并送交客户端展现。

对于多数据集层式报表,当数据量很大的时候,FineReport提出了优先显示的概念,当用户进行数据预览时,通过传入的页码,展示相应数量的数据,就可以避免一次性将大量数据读入报表进行展现。

数据决策支持

报表的最大作用除了展现外,就是辅助企业高层指定公司的发展计划,但是这样的话,传统的报表展现就难以满足需求,FineReport报表软件充分尊重市场需求,采用了一系列方式辅助企业进行决策分析,这就有了数据决策系统。FineReport数据决策系统在报表中的作用相当于ERP的管理驾驶舱,目的在于更好地辅助决策。数据决策系统又看做(企业级报表)报表门户所在,报表管理、流程管理、系统设置等多种管理设置都是在数据决策系统中进行,故数据决策系统又可看做报表中心。

    • 数据分析

这里的数据分析,并非简单的数据汇总展现,而是在展现的数据基础上,用户可以进行更多样的控制,达到更丰富的交互。

1.丰富交互编辑器

在B/S端对数据进行二次分析,依赖于在浏览器多丰富多样的展示控件。java报表软件FineReport提供了数十种之多的编辑控件,这些控件在参数查询界面与表单的界面均可通用,使得设计者能够设计出各种交互功能,方便用户进行人机数据交互。

FineReport提供的控件不仅包含的基础的文本,数字,日历,下拉框,还包括下拉树,单/复选框组,密码框,网页框等等。由于功能已经内置进FineReport报表设计器,报表设计者完全不需要编码即可直接使用,大大降低了设计者的使用难度。

控件的设置界面:

java报表软件控件设计界面

2.关联分析

各个控件除了能够独立的去展示出各自的数据,很多用户希望控件之间还能够进行关联分析,包括控件之间的联动,控件之间的相互制约。

联动指的是两个以上的查询框内的数据有层次制约的关系。例如国家->省份->城市就是这样一个层次递进的制约关系:第一个选择框选择了国家之后,第二个选择框内自动匹配该国家的省份记录,选择相应的省份,则第三个选择框对应列出该省份的城市。以下展示的是大区->城市->客户这样一个层次关系:

java报表软件参数联动

3.输入控制

为了能够让用户的更方便快捷的使用查询/表单界面,FineReport报表软件提供了一些输入控制的方法来帮助用户实现更个性化,更人性的交互。

输入控制主要体现在以下几个方面:

(1)参数为空时得到全部值;

避免用户在没有输入参数值的情况下即提交查询,得到的是没有记录的报表,主要作用是改善用户体验。

(2)参数自动附默认值;

例如系统时间,登陆的用户等系统变量可以自动赋值。

(3)水印;

给予用户输入提示,编辑状态后水印内容消失。

 

  • 图表分析

 

FineReport报表工具通过不断积累和创新,图表功能非常强大,它支持各种图表及混合图表,以及一些图表交互、参数联动、热点链接、在线切换图表等非常实用的功能,还能进行各种样式设置,能满足客户的的各种需求,实现丰富的报表展现效果。

1.FineReport图表支持

FineReport支持几十种图表样式,图表可放置在悬浮元素中以任意拖动位置,也可固定在单元格中,并且亦能够跟随单元格的数据进行扩展,能够满足大部分客户的各种需求。

FineReport报表工具实现了柱形图(7种)、折线图(1种)、条形图(7种)、饼图(2种)、面积图(4种)、散点图(1种)、气泡图(1种)、雷达图(1种)、股价图(1种)、仪表盘(1种)、全距图(1种)、组合图(1种)、地图(4种)、甘特图(1种)、gis地图(2种)、圆环图(2种)等总共16种样式,37种图表,同时提供了多种图形组合设计,以上所述的所有图表Finereport都拥有完全的自主产权,不会存在图表单独收费等第三方图表拥有的诟病。

除此之外,FineReport的图表都支持实时从数据库或其他数据集中取数据,只需简单在如图所示位置设置定时刷新即可:

java报表软件图表交互属性

2.图表交互

FineReport报表有着图表交互这一强大的功能,意在图表中为使用网页语言如信息提示、颜色高亮、钻取等来表达产品要告诉用户的信息,让用户获得更好更舒适的体验。

在查看报表时,通过交互属性设置,FineReport报表能实现丰富的展现效果,如数据点信息提示、高亮效果、数据点坐标信息展示、坐标轴缩放、图表定时刷新等。并且FineReport报表软件的交互属性设置非常的简单,右击选中图表,点击交互属性按钮,选择交互设置选项,就可以轻松的设置了。

java报表软件图表交互属性

数据点提示效果图:在B/S端浏览时,当鼠标移动到图表,如移动到柱状图的对应块处,就会显示相应的信息,效果如图

java报表软件数据点提示

3.图表多维分析

FineReport图表可以根据需求依据不同的侧重点进行分析,即所谓的多维分析,帮助企业更好的进行决策制定,如图

java报表软件图表多维分析

4.图表钻取分析

FineReport图表除上述的多维分析外,还支持图表上面的钻取分析:

图表热点链接

下面以实际的例子来说,如图显示的一张每年各地总销售量的图表,现在用户需要上海2011-2012年度1-9月份的具体数据进行相关分析,使用FineReport图表时

java报表软件图表钻取

点击上海,就得到了下图所示的具体数据,可视化的进行了图表的钻取:

java报表软件图表钻取

 

  • 在线实时编辑器

 

现在很多企业填写和制作表单不是同一个人,为了实现Web应用中在线报表发布的正确显示和用户对报表发布后的格式、类型和功能上的需求,web报表软件FineReport提供了在线实时编辑器的功能。

FineReport的在线实时编辑器具有如下特点:

(1)所见即所得:通过编辑器,编辑的文字和格式,无需经过其他步骤的转换和编码,直接展示为HTML效果,能让用户方便地对编辑的内容进行修改和排版;

(2)简单易用:编辑器的编辑使用方法和office使用方式类似,风格一致,用户无需任何HTML语法知识,就可以快速掌握;

(3)方便快捷:与纯手工编写代码进行编辑的方式比较,可以节省大量的时间和精力。

java报表软件在线编辑器

 

  • 即时分析

 

FineReport报表软件为了实现深层次的分析,提供了当前页面数据再次分析的功能,避免了重复进行数据连接所带来的消耗,具体的页面展示如图

java报表软件即时分析

  • 定时调度

FineReport定时调度即定时任务调度,通过FineReport定时器可以方便快捷的设置日报、月报、季报、年报生成等任务,定时实现数据的加载、汇总和填入库,无需额外工作。定时任务设定后服务器便会在指定的时间自动完成设定的任务,生成所需的文件,甚至可以将生成的结果以邮件的方式通知您,让您及时的进行分析与决策,同时帮助您节省时间,避免重复劳动,提高工作效率。
定时任务调度

Flash打印

虽然浏览器都提供直接的打印功能,但是基于以下几个原因,浏览器的直接打印并不能作为报表打印的解决方案:

(1)不能精确分页

(2)会有页脚页眉干扰

(3)不能准确对齐边边距及打印文字

(4)不能支持连续打印

FineReport独创的FLASH打印技术,第一次完美解决了困扰报表行业十几年的基于浏览器的打印问题。Flash的分页或精确打印,都可以做到完美,并且几乎95%的浏览器都预装了Flash Player,打印之前不再需要安装Flash Player,即使需要安装也只有几百K的大小,非常的方便,具体对比如图

java报表打印之flash打印

Java报表软件FineReport首创的Flash打印在多年的经验积累下已经日趋完善,Flash打印更是可以做到打印报表无限制,不管什么报表,不管什么样的报表样式,只要设计出来后,都可以使用FineReport的Flash报表打印实现精确打印。

填报

    • 填报方式多样

FineReport的数据展现支持多个不同的数据源,填报表也同样支持将同一表中填写的数据提交到多个不同的表或者不同的库,并且支持多源填报报表数据的删除行和添加行(除了普通的单行外,可以选择指定行数或者一整个表单的样式)、支持bs端自动计算、支持多sheet填报。FineReport最新版本中,报表数据离线填报功能也更为完善和强大。

    • 多sheet报表使用

FineReport报表采用Excel的多sheet思想,把多张报表存放在一个模板文件中,这样便能轻松的解决操作多张报表带来的麻烦。

FineReport将数据以多sheet的形式组合到在一起,支持Excel多sheet的导入导出,并且方便对多张填报表同时进行编辑、保存数据到数据库或者批量打印等,从而提高工作效率。

支持多sheet数据填报、跨sheet计算等。

    • 数据来去无关

FineReport的填报中,数据的来源与去向是分别定义的,因此数据的来源与去向并无必然联系。

例如某企业的填报系统,基层营业处需要填写原始数据,而分公司则需要在基层数据计算的基础再填写部分数据汇总上报到总公司。此时,数据的来源是来自于基层上报的数据库A,而编辑后的数据则存往总公司的数据库B。且来源和去向数据库可能均不止一个,简单的讲就是,就是从表A中取出数据进行修改统计后存入表B中,当然去处可能有多个(来源也可能多个),所以也可以同时写入B1、B2、B3等表。由于FineReport取数和填报均支持多源,因此可以很好的解决这个现实需求,具体如图

java报表软件多源数据

    • 编辑方式多样

java报表软件FineReport提供了丰富的单元格编辑风格,不仅为填报表设计者节省了大量的编辑风格设计时间,也为最终的填报人提高了工作效率。

FineReport内置的单元格编辑风格包括:文本,数字,日历(日期,时间),下拉框,下拉复选框,下拉树,单选按钮,单选按钮组,复选框,复选框组,按钮,密码,文本域,列表,视图树,表格树,文件上传,多文件上传,网页框等数十种编辑风格。这些已经基本涵盖了常见的填报数据编辑方法,设计者可以根据需要自由设置。

各个单元格的编辑风格即可以相对独立,也可以相互关联,例如单元格之间的联动,或者格子之间的校验。

java报表软件填报编辑方式

    • 零客户端填报

企业的表单录入经常会受制于部门和地域,FineReport报表支持在线填报,用户不用安装任何客户端就可以通过浏览器进行填报录入的功能,这对企业各个部门之间或不同分公司之间的统一录入做到了完美的支持。

    • 多级上报

我们在上面也曾提到,填报业务一般经常是多级的,除最底层可能是面对原始空表填写外,其它各级都是将下级的数据进行验证和处理之后再填报给上级,这就是一个简单的工作流。

FineReport报表软件完全支持这种模式,其应用原理图如图

java报表软件多级上报

权限

现今,为了保密和业务的需要,各种应用系统都有权限方面的控制,FineReport立足于中国式复杂报表,通过反复的测试,完美的实现了报表权限方面的控制。

其总体流程图如下

java报表软件权限流程

    • 丰富的权限认证方式

Web报表软件FineReport为了保证权限功能的通用性,提供了多种认证方式:数据集认证、HTTP身份验证、LDAP身份验证。

    • 权限的粒度

很多系统的权限认证只是限制模块的使用,使得合法用户能够行使自己的权利。FineReport报表软件在满足这种整体权限认证的同时,权限的控制力度可以达到同一张报表的内容在不同权限下展示的效果不一样,这样就免除了制作大量的报表来实现同样效果,尤其是在企业内部业务繁杂,审批麻烦时,一张报表就可以解决所有问题。

    • 灵活的权限集成

FineReport报表软件提供的权限认证,可以灵活的与其它系统进行统一认证,实现单点登录。

当我们按照上面的三种类型的身份验证方式配置好相应权限后,需要将报表和相应的系统进行集成,我们采取的方式是:

(1)当客户登录时传递相应的用户名和密码给我们报表系统;

(2)报表系统会匹配报表用户数据集中的用户名和传递过来的用户名,然后识别登录用户的角色,并根据角色绑定相应的权限;

(3)把角色存储在session里面,这样用户访问每张报表时,报表权限都会先和session进行验证,满足的话就直接进行相应权限的操作,不满足的话则会提示没有权限。

具体的实现过程如图

java报表软件权限集成

移动平台的展示

随着苹果ipad、iphone的流行,越来越多的公司开始提出触摸式手机、平板电脑,使用手机、平板电脑进行商务处理已经成为了一种不可阻挡的趋势,Java报表软件FineReport基于此提出了移动BI的概念,并取得了一些不俗的成果,使得报表可以在手机上进行展示。在移动终端展现报表,可以帮助用户做好时间管理,让用户查看报表更为方便快捷,与此同时,利用移动决策平台进行决策也已成为一股潜流,逐渐蔓延开来。其具体效果如图

java报表软件移动平台展示

html5图表

国内报表及商业智能产品的图表功能通常靠第三方插件实现,如fusinocharts、jfreechart,但这种做法有天然的缺陷:基础功能薄弱,需要高级图表时需要支付额外费用;技术支持能力薄弱,后续升级缺乏保障等。
帆软自主研发的html5 图表技术,动态性能好,交互性更强,参数传递灵活,完美支持IOS移动设备。FineReport html5图表支持图表类型和样式多样,几乎包括了客户制作报表时能使用到的的所有图表类型。

动态图表/图表交互

html5图表支持动态图表,动态性能良好。html5图表的图表交互属性中,可进行坐标提示、数据点提示、交互高亮、系列交互、坐标轴缩放、多维度坐标轴等设置,完美实现强大的图表动态交互效果。
图表动态交互效果

图表在线切换

html5图表还支持图表在线切换,即多种图表类型只需绑定一次数据,即可直接在线切换图表类型,实现更丰富的图表展现效果。
图标在线切换

图表系列拖拽

html5图表支持图表系列拖拽 。通过系列拖拽,可以方便的进行归类、累计分析,让显示更直接。
图表系列拖拽

交互分析

参数设计界面和多种参数控件,使得设计多参数查询报表易如反掌,并且可以实现参数联动等高级查询效果。对于图表和数据的交互,FineReport也独具匠心,支持多种高级交互功能。

  • 图表联动

图表联动,是图与图直接的联动效果,点击父图表系列,所有子图表联动变化。

  • 数据联动

数据联动,是点击表格,数据变化,图表的数据也发生变化,点击父表格数据,所有子图表、子表格数据联动变化。
数据联动

  • 多维数据钻取

多维钻取即单元格内支持多个钻取链接一个单元格数据。
多维数据钻取

  • 任意组合钻取

图表可钻取出图表、表格,表格也可钻取出图表、表格。

  • 无限层次钻取

无限次数设置报表的钻取关系。因为数据钻取的实质就是利用超连接,所以可以实现无限层。层与层直接通过传递参数来实现业务逻辑。

  • 多维度数据分析

利用表单功能,实现数据的不同维度展现。依据不同的侧重点进行分析,帮助企业更好的进行决策制定。多维度分析是个综合应用,其实质也是数据钻取。
多维度数据分析

  • 即时分析

即时分析就是即时在web页面对数据进行筛选、排序、过滤操作,使数据分析更简单,页面深度分析减小内耗,增加大数据量分析效率。
具体效果可参考本页决策系统支持—>图表分析 和html5图表中介绍

决策平台

决策平台

依托决策平台(数据决策系统),企业可以方便的实现报表管理、用户管理、机构管理和权限管理,进而支撑起各种企业主题分析。

用户可通过FineReport决策平台进行统一访问、集中管理、分类维护等操作。

统一访问。FineReport决策平台提供统一的应用访问门户,通过对用户和权限的控制,使得不同角色的用户能够通过一个门户系统看到符合自身需求的报表视图和报表功能。

集中管理。对于决策平台中的系统资源、用户、权限、报表模板、日志、定时调度等内容提供统一的系统管理环境,方便用户的日常管理。

分类维护。在整合和规范的报表数据基础上,为不同类型报表提供相对应的报表开发手段,采取统一的报表模板化定制、发布方案,简化报表的维护环节,降低报表维护对于IT技术人员的依赖性。

另外,决策平台(数据决策系统)提供了强大的DIY功能、用户可自由调整登录界面平台的标题、主页、横幅、背景图片,乃至布局风格。

返回顶部