重构一个可配的查询统计到底有多难?
2023-02-28 04:07:46 来源:腾讯云

背景

查询统计,可以说是任何业务系统都必备的一个工具。也是很多公司给新人熟悉业务练手的一个系统。

它的前端业务逻辑一般比较简单明了。设置几个输入条件,根据输入条件生成调用参数,通过后端接口生成报表。


(资料图片)

这样一个系统维护起来难度并不大,但是往往随着报表的增多,工作量很大。因此我们需要设计一个可根据配置自动生成报表页面的查询统计前端。这样前端的工作量就可以大大减少,节约了前端开发的资源。

基础实现

这个查询统计到我手里时,已经实现了既定的功能。下面我们简单看一下原来的功能和代码结构。

原来的实现大致可以分成三个模块。

上方是导航栏,是可配置的菜单。

中间是查询条件,也是不同报表间最大的区别。我们希望这个区域能修改成可配置的。比较常见的查询方式有时间,输入框,下拉框,下拉框树等。此外还包含一个查询和重置的按钮。

下方是ureport的报表,由后端生成。

界面示例

那么我们看看原来的代码实现:

菜单实现

菜单的实现可以说已经非常的不错了,抽象出了一级菜单name,code,icon,二级菜单通过parentCode确定挂载在哪个一级菜单下面,点击时通过routeCode路由到对应查询组件页面。

扩展开发痛点

相信大家看到第三张图,也就是我们已有的报表组件时,就会发现原来实现的问题。

其一:报表数量太大了,后续维护管理,包括项目上二次开发回归代码,都存在巨大的工作量。

其二:新增报表时修改工作量也不小,首先复制一个已经做好的报表,然后在上面修改字段,在路由中添加这个组件。一个报表前前后后修改的工作也不少。

菜单代码示例
菜单代码示例
组件示例

模板生成查询条件

首先需要定义的是我们模板的数据结构,他应该包含报表名字,报表code,报表的url路径,查询字段,报表归属菜单等主要属性。特别需要注意的是下拉框,下拉框树这种查询条件,需要配置字典来源Source。当然还可以包括排序,是否展示等辅助属性。routeCode咱们复用一下原来的实现。新增一个template模板组件,通过配置生成的报表统一路由到这个模板组件展示。

按照这个思路我定义了TemplateItem这个模板数组。同时顺手把title和菜单配置也一起单独拉出来,为了后续进一步优化做准备。

模板定义

首先要把模板生成的菜单和原有的菜单兼容,通过设置sort属性来排序。这样就可以在不破坏原有实现的基础上追加新功能。

菜单兼容

在路由切换时,需要缓存一下点击进入了哪个模板,这样打开模板页面时才能根据缓存的数据生成页面。

路由切换

模板组件

前面的工作完成后,那么模板组件的实现也是水到渠成了。

根据field生成查询条件,采用flex布局,一行六个条件,自动换行。

除了时间,输入框,下拉框,下拉框树等之前说的查询条件,这边还新加了两个type,space代表一个空的区域,便于调整页面布局,query代表查询和重置两个按钮。

html
scss

展开来看,里面是各个查询的具体实现,非常的简单,唯一值得一提的是里面的各个code不是写死的,采用queryData[xxxCode]这样的形式去绑定。下拉框内的字典来源基本采用了原有的实现,我这边加了个GetSource的方法,根据Source配置的key获取字典定义。

最后

既然json定义好了,也能根据json生成页面了。那么最后一步显而易见,我们把这个json放到数据库里,在页面打开时通过后端查询获取。那么前端的工作量就彻底消灭了。将来再有新的报表需求,前端版本发布完后不再需要再在前端修改。后端完成报表后根据字段填写json即可实现前端查询条件模板的自动生成。当然我们甚至可以更进一步,提供一个维护页面,通过可视化的界面去输入字段name code,选择source type。这样现场的工程人员可以直接通过操作页面来生成json。

感想

比较大的前端项目也从零开始做了三四个了。在做前端产品的时候,我最大的感受就是我们不能仅仅局限于我们亲自去实现一个页面,也要让没有前端编程经验的人,甚至是没有编程经验的工程人员参与进来。当他们在现场接到需求时,我们可以赋予他们一点实现需求的能力。这样的实现才能说是一个好的实现。

重构一个可配的查询统计到底有多难?

2023-02-28

客户违约金账务处理流程_客户违约金账务处理-全球热点

2023-02-27

西峰:抓执行促落实 奋战项目建设“开门红”

2023-02-27

七少的老婆有点狂-热门

2023-02-27

微资讯!【森林奇境 碧水铜锣】《美丽家园》栏目播出

2023-02-27

大众探岳“换壳”捷达VS8 预计卖12万PK比亚迪宋PLUS|热头条

2023-02-27

足少阳胆经不通的症状_胆经不通的症状

2023-02-27

环球微速讯:皮宗石

2023-02-27

出国留学可以申请贷款吗

2023-02-27

今热点:贯彻总体国家安全观以坚定的意志品质维护国家主权安全_贯彻

2023-02-27

杜甫自号-滚动

2023-02-27

蓝港互动(08267.HK):委任FU Frank Kan为独立非执行董事

2023-02-27

热点评!脖子的淋巴结在哪里部位图片_脖子的淋巴结在哪里

2023-02-27

不得不走

2023-02-27

天天精选!滞笨_说一说滞笨的简介

2023-02-27

这3个坏习惯一定要改了,不然血脂还会继续升

2023-02-26

【全球聚看点】猴头菌

2023-02-26

继《美人鱼》后,《白雪公主》官宣人选,主演“黑化”成趋势?

2023-02-26

野生小蝎子吃什么食物_小蝎子吃什么简介介绍

2023-02-26

【环球速看料】丝瓜猪蹄汤

2023-02-26

年度“投资圣经”新鲜出炉,“股神”巴菲特说了些什么?

2023-02-26

篮球规则有哪些之比赛时间和球队划分_四_篮球比赛时间规则包括 世界报资讯

2023-02-26

中国人类学评论:第5辑

2023-02-26

圣钟大师_圣钟

2023-02-26

看点:中国文化知识读本:唐代传奇小说

2023-02-25

速看:带环的副作用有哪些_带环的副作用

2023-02-25

破千万大关!广州地铁单日客流创2023年新高

2023-02-25

包晓琳

2023-02-25

全球快资讯丨缓解旅途疲惫 回家小天鹅群首次歇脚洛阳黄河湿地

2023-02-25

为救灾,这国出动航母

2023-02-25

天天播报:中部军民融合协同创新产业研究院

2023-02-25

手链的编法大全图解简单_手链的编法大全图解

2023-02-25

实时:义务教育课程标准实验教科书:小学英语

2023-02-25

高盛公布300亿美元股票回购计划 回购步伐有所加快

2023-02-25

全球热讯:22胜0负!提前颁奖吧!MVP已经没有悬念了?

2023-02-25

环球时讯:元芳你怎么看呢_元芳你怎么看是什么意思

2023-02-24

九谷烧

2023-02-24

胤禛和胤禵怎么读_胤禵怎么读 今亮点

2023-02-24

天天快播:盛世风华_盛世风华

2023-02-24

天天热门:wealink

2023-02-24

库里赛后与世界拳王苏尔-阿瓦雷兹合影

2023-02-24

集资诈骗2.5亿余元 8人获刑

2023-02-24

强化全链条监督 实现闭环式管理

2023-02-24

新车报讯:梅赛德斯-AMG推出车顶箱部件经过空力优化/带有扩散器

2023-02-24

苦劳_关于苦劳的简介|每日焦点

2023-02-24

房产税计税标准_房产税计税依据及税率

2023-02-24

王俊豪产业经济学第3版笔记和题库及详解资料_环球讯息

2023-02-23

环球热资讯!炎黄子孙的搞笑视频_炎黄子孙打一肖

2023-02-23

LOL首个“飞行”英雄诞生后,Rookie试玩直言:12年没见过这么强的

2023-02-23

怎样画青萝卜车_萝卜车怎么画

2023-02-23

环球播报:商丘回应公交停运:公司经营确实遇到困难,财政一直予以补贴

2023-02-23

梦回江南3D山水实景

2023-02-23

横跨5000公里实施肝胆手术上海微创机器人完成中国首例5G超远程机器人手术|环球热门

2023-02-23

二月初四,提醒:2要做,吃3样,忌2事,开春迎好运,安康一整年

2023-02-23

花头台-每日看点

2023-02-23

www_se97 com|环球滚动

2023-02-22

【世界独家】toefl是什么意思

2023-02-22

当日快讯:在岸人民币兑美元16:30收盘报6.8953

2023-02-22

当前快讯:世界杯回放在哪看

2023-02-22

始于皇马终于皇马,利物浦黄金一代的告别演出|快播

2023-02-22

世界观天下!拱火递刀很积极 西方对乌财政“画饼”仅兑现不到一半

2023-02-22

每日短讯:江苏泰兴:“梦想小屋”帮困境儿童圆梦

2023-02-22

世界最资讯丨福建法院探索一站式多元解纷新路径

2023-02-22

全球讯息:斗破苍穹第三季什么时候出来的_斗破苍穹第三季什么时候上映

2023-02-22

“二月二,龙抬头”,今天可以理发了吗?

2023-02-22

全球首个十万吨级绿色低碳甲醇工厂投产

2023-02-21

【护安保畅】贵安交警“四举措”全力保畅道路交通安全畅通_天天微资讯

2023-02-21

视点!excel加电子公章_excel怎么盖电子公章

2023-02-21

今日聚焦!新冠报道引争议,不妨以理性视角看待

2023-02-21

快报:无间道粤语版_无间道粤语

2023-02-21

高三励志口号16字_高三励志口号-每日快报

2023-02-21

微动态丨平方公式_平方数怎么计算

2023-02-21

在iPhone上推出新的即时视频创建和消息传递平台

2023-02-21

天天视点!夏天,鸡腿这么做最经典,我家一周至少吃三次,拿来宴客倍有面子

2023-02-21

yy什么意思网络流行语_yy什么意思 世界热讯

2023-02-21

御前夜巡使 每日快看

2023-02-20

焦点播报:加拿大要求中国锂企撤资后续:两家已出售

2023-02-20

2月20日恺英网络涨10.02%,华夏中证动漫游戏ETF基金重仓该股 世界报资讯

2023-02-20

大行评级|高盛:希慎业绩符预测期维持“买入”评级

2023-02-20

天天短讯!党的二十大顺利召开以来,一系列着力推进高质量发展的举措正迅速落地

2023-02-20

世界微资讯!A股小幅震荡,券商、创投板块集体高开,医药股领跌

2023-02-20

今日快看!科顺股份董秘回复:公司可转债各项工作正在有序推进,具体可查阅公司的相关公告

2023-02-20

黄螺的特点_黄螺是什么螺_每日热闻

2023-02-20

焦点资讯:“去全球化”、脱钩论不绝于耳?麦肯锡认为全球互联迎来“新风口”

2023-02-20

“香香”在日本有多受欢迎?后天就要回国,有日本民众落泪告别 环球通讯

2023-02-19

广州率先推出元宇宙办税厅 可沉浸式办税 新视野

2023-02-19

天天速读:男篮与上海赛后!李春江乔帅致敬,老叔接军暧昧,赵睿欺负任骏威

2023-02-19

榧_榧|环球快讯

2023-02-19

微头条丨如何繁殖斑柳

2023-02-19

仙剑奇侠传3歌曲胡歌_仙剑奇侠传3歌曲-焦点速看

2023-02-19

天天消息!【赛马娘怪文书】阿尔丹t与阿尔丹的相遇。

2023-02-19

因管子爆裂 西安东城桃园小区部分业主停暖一周 速讯

2023-02-18

【世界独家】总部经济提升创新“浓度”,智创TOP“双碳”先进材料持续发力

2023-02-18

杭州每244人里就有一个主播 具体详细内容是什么

2023-02-18

「开好局 起好步」内蒙古:布局新能源赛道 推动绿色发展|世界热讯

2023-02-18

天天动态:君子兰浇水的方法_君届

2023-02-18

金运昌鉴定水平_金运昌_全球新消息

2023-02-18

进入LOL游戏界面后无声音怎么办_lol游戏界面没有声音

2023-02-18

每日播报!希诺股份冲刺上交所:年营收7亿 张碧峰家族控制98%股权

2023-02-17

四个火的燚怎么读?青春跟年龄无关_四个火的燚怎么读

2023-02-17