trackJobJs.jsp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%>
  2. <%@include file="/WEB-INF/ehr/commons/jsp/commonInclude.jsp" %>
  3. <script src="${contextRoot}/develop/lib/plugin/switchery/switchery.js"></script>
  4. <script src="${contextRoot}/develop/lib/plugin/echarts/echarts-all.js"></script>
  5. <script>
  6. /* *************************** 自定义模块 ***************************** */
  7. var trackJob = {
  8. $form:$("#div_form"),
  9. grid:null,
  10. chart:null,
  11. dialog:null,
  12. repeat:null,
  13. switchery:null,
  14. init:function(){
  15. var me = this;
  16. //控件初始化
  17. $("#selJob").ligerComboBox({
  18. dict:true,
  19. dictName:"RS_JOB_CONFIG",
  20. onSelected:function(value,text)
  21. {
  22. me.search(value);
  23. },
  24. onSuccess:function(data)
  25. {
  26. if(data!=null&&data.length>0)
  27. {
  28. this.selectValue(data[0].code);
  29. }
  30. }
  31. });
  32. me.initSwitcher();
  33. me.chart=echarts.init(document.getElementById("echarts-bar-chart"));
  34. //列表控件
  35. me.grid = $("#div_grid").ligerGrid({
  36. url: '${contextRoot}/datacollect/getJobLog',
  37. selectRowButtonOnly:true,
  38. delayLoad:true,//初始化不加载
  39. columns: [
  40. {display:'采集开始时间',name:'jobStartTime', width: '12%'},
  41. {display:'采集结束时间',name:'jobEndTime', width: '12%'},
  42. {display:'采集数据集数',name:'jobDatasetCount', width: '12%'},
  43. {display:'成功数据集数',name:'jobDatasetSuccess', width: '12%'},
  44. {display:'数据总数',name:'count', width: '12%'},
  45. {display:'成功数据',name:'success', width: '12%'},
  46. {display:'补采数据',name:'repeatNum', width: '12%'},
  47. {
  48. display:'操作',name:'id',width: '16%',render:function(row){
  49. return '<a href="javascript:void(0)" onclick="javascript:trackJob.repeat()">补采</a>';
  50. }
  51. }
  52. ],
  53. onSuccess:function(data)
  54. {
  55. try {
  56. var list = data.detailModelList;
  57. if(list!=null&&list.length>0)
  58. {
  59. me.reload(list);
  60. }
  61. return true;
  62. }
  63. catch(e)
  64. {
  65. return false;
  66. }
  67. },
  68. onDblClickRow:function(data)
  69. {
  70. me.reloadRow(data.id);
  71. }
  72. });
  73. //任务补采
  74. $('#btnRepeatJob').click(function () {
  75. parent.indexPage.openMenuByText("任务补采", {
  76. jobId: $("#selJob").ligerComboBox("getValue")
  77. }, false);
  78. });
  79. //任务编辑
  80. $('#btnEditJob').click(function(){
  81. var title = "编辑任务";
  82. var params = {jobId:$("#selJob").ligerComboBox("getValue")};
  83. me.dialog=$.ligerDialog.open({
  84. height: 556,
  85. width: 700,
  86. title: title,
  87. url: '${contextRoot}/datacollect/editorJob',
  88. //load: true,
  89. urlParms: params
  90. });
  91. });
  92. },
  93. initSwitcher:function(){
  94. var me = this;
  95. //开关控件
  96. var changeCheckbox = document.querySelector('#jobStatusSwitch');
  97. me.switchery = new Switchery(changeCheckbox, { disabled: true,size: 'large' });
  98. changeCheckbox.onchange = function() {
  99. debugger
  100. var a = me.switchery;
  101. var jobId = $("#selJob").ligerComboBox("getValue");
  102. if(!changeCheckbox.checked)
  103. {
  104. me.valid(jobId,"0");
  105. }
  106. else{
  107. me.valid(jobId,"1");
  108. }
  109. };
  110. },
  111. repeat:function() {
  112. parent.indexPage.openMenuByText("任务补采", {jobId: $("#selJob").ligerComboBox("getValue")}, false);
  113. },
  114. callbackDialog:function(message){
  115. $.ligerDialog.success(message);
  116. this.dialog.close();
  117. },
  118. //获取任务相关数据
  119. search:function(jobId){
  120. debugger
  121. var me = this;
  122. me.clearTop();
  123. me.initSwitcher();
  124. if(jobId!="" && jobId.length>0)
  125. {
  126. //获取运行状态
  127. $.ajax({
  128. type: "POST",
  129. url : "${contextRoot}/datacollect/getJobInfo",
  130. dataType : "json",
  131. data:{jobId:jobId},
  132. cache:false,
  133. success :function(data){
  134. if(data.successFlg) {
  135. me.switchery.enable();
  136. me.setJobStatus(data.data);
  137. }
  138. else{
  139. $.ligerDialog.error(data.message);
  140. }
  141. },
  142. error :function(data){
  143. $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
  144. }
  145. });
  146. me.grid.set({
  147. parms: {jobId:jobId}
  148. });
  149. me.grid.reload();
  150. }
  151. },
  152. //任务状态
  153. setJobStatus:function(status)
  154. {
  155. var me = this;
  156. if(status=="1")
  157. {
  158. $('#jobStatusSwitch').attr("checked",true);
  159. me.switchery.element.checked=true;
  160. me.switchery.setPosition();
  161. $("#jobStatus").html('<span class="green job_run">正在运行中...</span>');
  162. }
  163. else{
  164. $('#jobStatusSwitch').removeAttr("checked");
  165. me.switchery.element.checked=false;
  166. me.switchery.setPosition();
  167. $("#jobStatus").html('<span class="red job_stop">运行暂停</span>');
  168. }
  169. },
  170. //生效失效
  171. valid:function(id,valid){
  172. if(id==null||id.length==0) return false;
  173. setTimeout(function () { return; }, 1000);
  174. $.ajax({
  175. type: "POST",
  176. url : "${contextRoot}/datacollect/validJob",
  177. dataType : "json",
  178. data:{jobId:id,valid:valid},
  179. cache:false,
  180. success :function(data){
  181. if(data.successFlg) {
  182. if(valid=="1")
  183. {
  184. $("#jobStatus").html('<span class="green job_run">正在运行中...</span>');
  185. }
  186. else{
  187. $("#jobStatus").html('<span class="red job_stop">运行暂停</span>');
  188. }
  189. }
  190. else{
  191. $.ligerDialog.error(data.message);
  192. }
  193. },
  194. error :function(data){
  195. $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
  196. }
  197. });
  198. },
  199. //上部数据情况
  200. clearTop:function(){
  201. var me = this;
  202. var parent = $("#jobStatusSwitch").parent();
  203. $("#jobStatusSwitch").next().remove();
  204. $("#jobStatusSwitch").remove();
  205. $('<input type="checkbox" class="js-switch" id="jobStatusSwitch" checked />').appendTo(parent);
  206. $("#divCount").html("-");
  207. $("#divSuccess").html("-");
  208. $("#divPercent").html("-");
  209. $("#echarts-bar-chart").hide();
  210. $("#echarts-blank").show();
  211. },
  212. setTop:function(count,success,percent){
  213. $("#divCount").html(count);
  214. $("#divSuccess").html(success);
  215. $("#divPercent").html(percent +"%");
  216. $("#echarts-bar-chart").show();
  217. $("#echarts-blank").hide();
  218. },
  219. //刷新页面数据
  220. reload:function(data)
  221. {
  222. var me =this;
  223. if(data!=null && data.length>0)
  224. {
  225. var count = 0
  226. var success =0;
  227. var x = [];
  228. var y1=[];
  229. var y2=[];
  230. for(var i=0;i<data.length;i++)
  231. {
  232. count += data[i].count;
  233. success += data[i].success;
  234. x.push(data[i].jobStartTime);
  235. y1.push(data[i].count);
  236. y2.push(data[i].success);
  237. }
  238. me.setTop(count,success,count?(success/count *100).toFixed(2):0);
  239. me.chart.setOption({
  240. title: {text:"采集情况"},
  241. tooltip:{trigger:"axis"},
  242. legend:{data:["数据总数","成功数据"]},
  243. grid:{x:30,x2:40,y2:24},
  244. calculable:!0,
  245. xAxis:[{type:"category",data:x}],
  246. yAxis:[{type:"value"}],
  247. series:[{name:"数据总数",type:"bar",data:y1,markLine:{data:[{type:"average",name:"平均值"}]}},
  248. {name:"成功数据",type:"bar",data:y2,markLine:{data:[{type:"average",name:"平均值"}]}}]},true);
  249. window.onresize=me.chart.resize;
  250. }
  251. else{
  252. me.clearTop();
  253. }
  254. },
  255. //根据某行获取刷新
  256. reloadRow:function(id)
  257. {
  258. var me = this;
  259. if(id!="" && id.length>0)
  260. {
  261. //获取某次采集情况数据
  262. $.ajax({
  263. type: "POST",
  264. url : "${contextRoot}/datacollect/getJobLogDataset",
  265. dataType : "json",
  266. data:{logId:id},
  267. cache:false,
  268. success :function(re){
  269. if(re.successFlg) {
  270. var data = re.detailModelList;
  271. if(data!=null && data.length>0)
  272. {
  273. var count = 0
  274. var success =0;
  275. var x = [];
  276. var y1=[];
  277. var y2=[];
  278. for(var i=0;i<data.length;i++)
  279. {
  280. count += data[i].y1;
  281. success += data[i].y2;
  282. x.push(data[i].x);
  283. y1.push(data[i].y1);
  284. y2.push(data[i].y2);
  285. }
  286. me.setTop(count,success,count?(success/count *100).toFixed(2):0);
  287. me.chart.setOption({title:{text:"采集情况"},
  288. tooltip:{trigger:"axis"},
  289. legend:{data:["数据总数","成功数据"]},
  290. grid:{x:30,x2:40,y2:24},
  291. calculable:!0,
  292. xAxis:[{type:"category",data:x}],
  293. yAxis:[{type:"value"}],
  294. series:[{name:"数据总数",type:"bar",data:y1,markLine:{data:[{type:"average",name:"平均值"}]}},
  295. {name:"成功数据",type:"bar",data:y2,markLine:{data:[{type:"average",name:"平均值"}]}}]},true);
  296. window.onresize=me.chart.resize;
  297. }
  298. else{
  299. me.clearTop();
  300. }
  301. }
  302. else{
  303. $.ligerDialog.error(re.message);
  304. }
  305. },
  306. error :function(data){
  307. $.ligerDialog.error("Status:"+data.status +"(" +data.statusText+")");
  308. }
  309. });
  310. }
  311. }
  312. }
  313. $(function () {
  314. trackJob.init();
  315. });
  316. </script>