UnprocessedEarlyWarningManagementIndex.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. function viewModel() {
  2. this.ID = "";
  3. this.init = function () {
  4. InitTable();
  5. }
  6. };
  7. function InitTable() {
  8. var params = {};
  9. params.WCLZT = "红色,橙色";
  10. params.ZT = 1;
  11. //提交表单信息到具体得页面
  12. var url = '/CloudMonitor/GetServerAlertBySearch';
  13. $.post(url, params, function (data) {
  14. // 获取今天的日期
  15. const today = new Date();
  16. //未及时处理判断
  17. data = data.filter(item => {
  18. switch (item.预警等级显示) {
  19. case "橙色预警": {
  20. if (Number(((new Date() - new Date(item.创建时间)) / (1000 * 60))) > window.未及时处理预警橙色) {
  21. return true;
  22. }
  23. return false;
  24. break;
  25. }
  26. case "红色预警": {
  27. if (Number(((new Date() - new Date(item.创建时间)) / (1000 * 60))) > window.未及时处理预警红色) {
  28. return true;
  29. }
  30. return false;
  31. break;
  32. }
  33. }
  34. return false;
  35. })
  36. // 计算每个记录的 "创建时间" 距离今天的天数,并添加到新字段中
  37. data.forEach(record => {
  38. const creationDate = new Date(record["创建时间"]);
  39. const diffTime = today - creationDate; // 计算时间差(毫秒)
  40. const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24)); // 转换为天数
  41. record["距离今天的天数"] = diffDays + "天";
  42. });
  43. const result = separateByWorkHours(data);
  44. LoadTable($("#treegrid1"), result.workHoursData.sort((a, b) => {
  45. // 将时间字符串转换为 Date 对象
  46. const dateA = new Date(a["创建时间"]);
  47. const dateB = new Date(b["创建时间"]);
  48. // 进行倒序排序
  49. return dateA - dateB;
  50. }));
  51. LoadTable($("#treegrid2"), result.offWorkHoursData.sort((a, b) => {
  52. // 将时间字符串转换为 Date 对象
  53. const dateA = new Date(a["创建时间"]);
  54. const dateB = new Date(b["创建时间"]);
  55. // 进行倒序排序
  56. return dateB - dateA;
  57. }));
  58. });
  59. }
  60. function gethours(dateStr) {
  61. // 以 "HH:MM:SS" 格式处理时间字符串
  62. const [hours, minutes, seconds] = dateStr.split(':').map(Number);
  63. return hours;
  64. }
  65. function isWithinWorkHours(dateStr, workStartHour, workEndHour) {
  66. const date = new Date(dateStr);
  67. const hours = date.getHours();
  68. // 判断时间是否在工作时间内
  69. return (hours > workStartHour && hours < workEndHour);
  70. }
  71. function separateByWorkHours(data) {
  72. const workHoursData = [];
  73. const offWorkHoursData = [];
  74. try {
  75. // 定义工作时间的开始和结束时间
  76. const workStartHour = gethours(window.starTime);
  77. const workEndHour = gethours(window.endTime);
  78. data.forEach(item => {
  79. if (isWithinWorkHours(item["创建时间"], workStartHour, workEndHour)) {
  80. workHoursData.push(item);
  81. } else {
  82. offWorkHoursData.push(item);
  83. }
  84. });
  85. return {
  86. workHoursData,
  87. offWorkHoursData
  88. };
  89. } catch (e) {
  90. top.ZLPMS.Msg("当前工作时间定义获取失败");
  91. return {
  92. workHoursData:[],
  93. offWorkHoursData: []
  94. };
  95. }
  96. }
  97. function LoadTable(ele, data) {
  98. //初始化树形表格
  99. ele.datagrid({
  100. idField: 'ID',
  101. data: data,
  102. fit: true,
  103. pageSize: 0,
  104. toolbar: window.proId != null ? "" : "#Channeltb",
  105. rownumbers: true,
  106. //底部显示分页工具栏
  107. pagination: false,
  108. //列名称
  109. columns: [[
  110. { field: '项目名称', title: '项目', width: 300 },
  111. { field: '渠道名称', title: '渠道', width: 100 },
  112. { field: '预警类型显示', title: '预警类型', width: 120, align: 'center' },
  113. { field: '异常说明', title: '异常说明', width: 350, align: 'left' },
  114. {
  115. field: '创建时间', title: '初次预警时间', width: 150, align: 'center', formatter: ZLPMS.formatterData
  116. },
  117. {
  118. field: '预警次数', title: '预警次数', width: 100, align: 'center'
  119. },
  120. {
  121. field: '服务器IP', title: 'IP', width: 100, align: 'center'
  122. },
  123. { field: '服务器类型显示', title: '服务器类型', width: 100, align: 'center' },
  124. { field: '负责人', title: '负责人', width: 100, align: 'center' },
  125. {
  126. field: '预警等级显示', title: '预警等级', width: 100, align: 'center',
  127. formatter: function (value, rowData, index) {
  128. let className = "";
  129. if (rowData.预警状态显示 == "已处理") {
  130. className = "Normal";
  131. } else {
  132. switch (rowData.预警等级显示) {
  133. case "橙色预警": {
  134. className = "Warning";
  135. break
  136. }
  137. case "红色预警": {
  138. className = "Serious";
  139. break
  140. }
  141. }
  142. }
  143. return `<div class="${className}">${value}</div>`;
  144. }
  145. },
  146. {
  147. field: '预警状态显示', title: '状态', width: 100, align: 'center',
  148. formatter: function (value, rowData, index) {
  149. return `<div class="">${value}</div>`;
  150. }
  151. },
  152. { field: '距离今天的天数', title: '未处理天数', width: 150, align: 'center'}
  153. ]],
  154. singleSelect: true,
  155. onClickRow: function (index, row) {
  156. },
  157. onSelectAll: function (rows) {
  158. }
  159. });
  160. }
  161. //提交表单信息
  162. var Forms = {
  163. Submit: function (index, layero) {
  164. var iframeWin = ZLPMS.GetChildFrame(layero);//得到iframe页的窗口对象,执行iframe页的方法:
  165. //调用子页面的方法,得到子页面返回的ids
  166. var param = iframeWin.GetData();
  167. if (!param) return;
  168. if (param != null) {
  169. if (param.创建时间 == "") {
  170. top.ZLPMS.Msg("请填写处理时间");
  171. return;
  172. }
  173. if (param.处理人 == "") {
  174. top.ZLPMS.Msg("请填写处理人");
  175. return;
  176. }
  177. if (param.处理状态 == "") {
  178. top.ZLPMS.Msg("请选择处理状态");
  179. return;
  180. }
  181. //提交表单信息到具体得页面
  182. var url = '/CloudMonitor/InsertServerAlertProcess';
  183. $.post(url, param, function (data) {
  184. if (data == "1") {
  185. top.ZLPMS.CloseWindow(index);
  186. top.ZLPMS.Msg("保存成功");
  187. //刷新页面
  188. List.Reload();
  189. }
  190. else {
  191. ZLPMS.Msg(data.msg, 2);
  192. }
  193. });
  194. }
  195. }
  196. };
  197. //重新刷新页面 7
  198. var List = {
  199. //重新加载页面所有信息
  200. Reload: function () {
  201. $('#treegrid').datagrid('reload');
  202. }
  203. };
  204. //删除
  205. var Doajax = function (data) {
  206. $.ajax({
  207. url: `/CloudMonitor/DeleteCustomAlertById?id=${data.ID}`,
  208. method: 'GET',
  209. success: function (data) {
  210. if (data == "1") {
  211. top.ZLPMS.Msg("删除成功");
  212. //刷新页面
  213. List.Reload();
  214. }
  215. else {
  216. top.ZLPMS.Msg("删除失败");
  217. List.Reload();
  218. }
  219. }
  220. });
  221. }
  222. //回车提交查询
  223. function Enter_Submit() {
  224. InitTable();
  225. }