常见报表的JS代码
1.合并单元格
这个表格在报表里面算是比较典型的
1.里面的表格的列标题现在是写死的,其实这些可以通过配置进行
2.至于如果表头要进行合并(这种需求比较少,也比较容易实现)
3.至于统计:最好在后台按照一定的格式统计直接加入即可
注意:其实这个表格关注的仅仅病历的缺陷数量已经种类的数量,其余的都是一些维度
度量:缺陷数量,缺陷种类---真正的有意义的数字
维度:科室,病区,年度,医生,病人---完全就是类似进行挖掘的维度(上卷或者下钻)(做为列是采取具体的度量值,作为行是使其维度层次)
//运行病历质量病历明细报表
function builderTables(){ var html = '<div align="center" style=" height:22px; color:#1D417D; font-size:14px;font-weight:bold">运行病历质量病历明细报表</div>';
html += '<div id="title" style="font-size:12px; font-weight:bold;width:400px;position: absolute;">统计日期:' + "2012-01" + ' 至 ' +"2012-12" + '</div>';
html += "<div align='center'><br/><br/><table class='LxStyle'id='LxTable' border='1' cellspacing='0' ><thead><tr>" +
"<th style=\"text-align:center ; \">科室名称</th>" +
"<th style=\"text-align:center ; \">病区</th>" +
"<th style=\"text-align:center ; \">病案号</th>" +
"<th style=\"text-align:center ; \">医生</th>" +
"<th style=\"text-align:center ; \">入院日期</th>" +
"<th style=\"text-align:center ; \">缺陷种类</th>" +
"<th style=\"text-align:center ; \">缺陷总数</th>" +
"</tr></thead><tbody>"; var datas = [
{DEPTNAME:'骨科',SUBDEPTNAME:'骨科一病区',INPNO:'13021',DOCTORNAME:'周一渠',INDATE:'2012-12-12',CHECKTYPECOUNT:'5',CHECKPOINTCOUNT:'17'},
{DEPTNAME:'骨科',SUBDEPTNAME:'骨科二病区',INPNO:'30015',DOCTORNAME:'李思雨',INDATE:'2012-02-22',CHECKTYPECOUNT:'15',CHECKPOINTCOUNT:'20'},
{DEPTNAME:'骨科',SUBDEPTNAME:'骨科二病区',INPNO:'10421',DOCTORNAME:'张议天',INDATE:'2012-09-13',CHECKTYPECOUNT:'2',CHECKPOINTCOUNT:'13'},
{DEPTNAME:'骨科',SUBDEPTNAME:'骨科三病区',INPNO:'92021',DOCTORNAME:'麦子子',INDATE:'2012-08-14',CHECKTYPECOUNT:'34',CHECKPOINTCOUNT:'44'},
{DEPTNAME:'眼科',SUBDEPTNAME:'眼科一病区',INPNO:'15421',DOCTORNAME:'顾一宇',INDATE:'2012-08-15',CHECKTYPECOUNT:'5',CHECKPOINTCOUNT:'55'},
{DEPTNAME:'血液科',SUBDEPTNAME:'血液科一病区',INPNO:'10051',DOCTORNAME:'吴子玉',INDATE:'2012-09-22',CHECKTYPECOUNT:'15',CHECKPOINTCOUNT:'55'},
{DEPTNAME:'血液科',SUBDEPTNAME:'血液科二病区',INPNO:'10079',DOCTORNAME:'李永堂',INDATE:'2012-07-19',CHECKTYPECOUNT:'4',CHECKPOINTCOUNT:'22'}
]; var deptString = "";
var cntDept = 0;
var cntSubdept = 0; var subdeptString = ""; for (var i = 0; i < datas.length; i++) {
var n = datas[i]; html += "<tr>";
if (deptString != n.DEPTNAME) {
deptString = n.DEPTNAME;
subdeptString = n.SUBDEPTNAME; html = html.replace(/subdeptspan/g, cntSubdept);
html = html.replace(/deptspan/g, cntDept); html += "<td rowspan='deptspan' style=\"text-align:center ; \">" + n.DEPTNAME + "</td>" +
"<td rowspan='subdeptspan' style=\"text-align:center ; \">" +
n.SUBDEPTNAME +
"</td>"; cntDept = 0;
cntSubdept = 0;
} else if (subdeptString != n.SUBDEPTNAME) { subdeptString = n.SUBDEPTNAME;
html = html.replace(/subdeptspan/g, cntSubdept); html += "<td rowspan='subdeptspan' style=\"text-align:center ;\">" + n.SUBDEPTNAME + "</td>";
cntSubdept = 0;
} cntSubdept++;
cntDept++; html += "<td style=\"text-align:center ; \">" + n.INPNO + "</td>" +
"<td style=\"text-align:center ; \">" +
n.DOCTORNAME +
"</td>" +
"<td style=\"text-align:center ; \">" +
n.INDATE +
"</td>" +
"<td style=\"text-align:center ; \">" +
n.CHECKTYPECOUNT +
"</td>" +
"<td style=\"text-align:center ; \">" +
n.CHECKPOINTCOUNT +
"</td>"
"</tr>";
}
html = html.replace(/subdeptspan/g, cntSubdept);
html = html.replace(/deptspan/g, cntDept); html += "</tbody></table></div>"; document.getElementById("tab").innerHTML=html; }



仔细琢磨上面三幅图
就会发现,第三方图中,分类-季就是是一个层级维度,展示下钻
第二图就是看起来就会更加的明显,但是实际大家可能看到的还是第三个图的方式比较多
第一个图就是是本质图,他是平台的报表格式,通过维度,度量可以形成第2,3个图,都是关注的主要数据。
代码封装:
满足大多数需求:
常见报表的JS代码的更多相关文章
- 使用jsCompress压缩混淆js代码的一些常见的问题和技巧
不同的团队使用的js混淆器或压缩工具不一样,jsCompress是一款绿色的免费的js压缩工具,时代定制的UI团队推荐大家使用,不仅性能优越,而且操作非常人性化. 使用jsCompress.exe时, ...
- 常见的页面效果,相关的js代码
1.焦点图 $(document).ready(function(){ var i=0; var autoChange= setInterval(function(){ if(i<$(" ...
- 10个常见的Node.js面试题
如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. ...
- Web报表工具JS开发之日期校验
在报表开发过程中,我们常常需要对查询界面进行日期校验.例如有两个参数:开始日期和结束日期,我们要校验的是:开始日期与结束日期不能为空,结束日期必须在开始日期之后以及结束日期必须在开始日期后的某个时间段 ...
- 移动手机端H5无缝间歇平滑向上滚动js代码
在没结合css3的transform实现平滑过渡前,我都是用的jquery的animate方法,此方法在PC端基本看不出来有稍微卡顿的现象,但是在性能不高的手机上使用该方法,就会有明显的卡顿现象,不够 ...
- 常见算法是js实现汇总(转载)
常见算法是js实现汇总 /*去重*/ <script> function delRepeat(arr){ var newArray=new Array(); var len=arr.len ...
- 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】
原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...
- 编写高质量JS代码的68个有效方法(四)
[20141129]编写高质量JS代码的68个有效方法(四) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- JS代码格式化修改表格的数值的格式
今天在cognos中第一次需要用到JS,主要是报表页面展示的时候是可能得到如下的数据 ,我需要对其中类型中有金额字样的,后面的数值,精确2位小数:有百分比字样的,数值显示成百分比.如下. 我先尝试了自 ...
随机推荐
- PHP通过日志来发现问题
三大日志 1.Nginx的错误日志, Nginx的Access日志 2.PHPfpm的错误日志可设置级别 3.Mysql的慢查询日志
- mfc "缺少函数标题(是否是老式的形式表)"的总结
首先出现这种问题要定位到程序中出错的地方查看,如果没有问题就仔细看类的声明和定义.可能是对应类的后面没有加: 第二个原因是可能忘记了添加头文件 "stdafx",如果是这样可以加上 ...
- 数论练习(5)——青蛙的约会(扩gcd)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 122502 Accepted: 26015 Descript ...
- 自定义jQuery的animate动画
//擦除效果 jQuery.extend(jQuery.easing, { easeOutBack : function(x, t, b, c, d, s) { s = s || 1.3; retur ...
- ViewPager实现引导页(添加导航点,判断是否第一次进入主界面)
1.引导页的4个界面布局,里面加载一张背景图片 插入到guide的界面布局中(这里不用fragment) guide_background_fragment1.xml <?xml version ...
- springboot搭建的2种方式
一.搭建springboot项目有两种方式1.继承springboot项目 <parent> <groupId>org.springframework.boot</gro ...
- SPDY以及示例
SPDY是Google开发的基于传输控制协议(TCP)的应用层协议 .Google最早是在Chromium中提出的SPDY协议[1].目前已经被用于Google Chrome浏览器中来访问Google ...
- SharePoint 2013的100个新功能之搜索(一)
一:新的搜索架构 SharePoint 2013中将最好的两个搜索引擎"SharePoint搜索"和"SharePoint FAST搜索服务"整合到了一个搜索引 ...
- 20155323 2016-2017-2 《Java程序设计》第8周学习总结
20155323 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 日志API:使用日志的起点是Logger类,要取得Logger类,必须使用Logger的静态 ...
- idea 使用spring boot 搭建freemarker模板
一丶新建maven spring boot 项目 新建好了开始使用模板 先看一个目录结构 二丶配置pox.xml <?xml version="1.0" encoding ...