log.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. var LogObject = {
  2. first: true,
  3. ResetQueryLog: function() {
  4. $("#log_query_panel").find("input,select").val("");
  5. $("#text_startdate,#text_enddate").val(new Date().Format("yyyy-MM-dd"));
  6. this.QueryLog();
  7. },
  8. QueryLog: function() {
  9. $("#btnSearch").attr("disabled", true);
  10. var parameter = {};
  11. $("#log_query_panel").find("input,select").each(function() {
  12. var id = $.trim($(this).attr("id")),
  13. v = $(this).val();
  14. if (id != "") {
  15. id = id.replace("text_", "").replace("combox_", "");
  16. parameter[id] = v;
  17. }
  18. });
  19. layui.table.reload('syslog_search', {
  20. page: {
  21. pageIndex: 1,
  22. },
  23. where: parameter
  24. });
  25. $("#btnSearch").attr("disabled", false);
  26. },
  27. DataStat: function() {
  28. var pageurl = "/static/module/log/datastat.html";
  29. layui.use(['layer', 'form'], function() {
  30. layui.layer.open({
  31. "type": 2,
  32. "resize": false,
  33. "scrollbar": false,
  34. "title": "操作统计",
  35. "area": ["70rem", "50rem"],
  36. "content": pageurl
  37. });
  38. });
  39. },
  40. ChartsStat: function() {
  41. var pageurl = "/static/module/log/chartstat.html";
  42. layui.use(['layer', 'form'], function() {
  43. layui.layer.open({
  44. "type": 2,
  45. "resize": false,
  46. "scrollbar": false,
  47. "title": "图表分析",
  48. "area": ["60rem", "40rem"],
  49. "content": pageurl
  50. });
  51. });
  52. },
  53. SearchLog: function() {
  54. var desc_width = $(".children-content").width() * 0.55;
  55. var columns = [
  56. [{
  57. field: 'audittypename',
  58. title: '审计分类',
  59. width: 180,
  60. sort: false
  61. }, {
  62. field: 'eventtypename',
  63. title: '事件类型',
  64. width: 120
  65. }, {
  66. field: 'staff',
  67. width: 120,
  68. title: "操作用户",
  69. align: 'center'
  70. }, {
  71. field: 'eventlevelname',
  72. title: '事件等级',
  73. width: 120
  74. }, {
  75. field: 'logtypename',
  76. title: '操作类型',
  77. width: 120
  78. }, {
  79. field: 'ip',
  80. title: '操作IP',
  81. width: 120
  82. }, {
  83. field: 'insdate',
  84. title: '操作时间',
  85. width: 165,
  86. sort: true
  87. }, {
  88. field: 'optresultname',
  89. title: '结果',
  90. width: 165,
  91. sort: true
  92. }, {
  93. field: 'description',
  94. templet: "#log_desc_status",
  95. title: "日志描述",
  96. width: desc_width
  97. }]
  98. ];
  99. var parameter = {
  100. elem: "#table-log",
  101. url: Global.AccessUrl + "/api/getSyslogList",
  102. id: "syslog_search",
  103. height: $(".main-body").height() - $("#log_query_panel").height() - 100 * hRate,
  104. cols: columns
  105. };
  106. if (LogObject.first) {
  107. parameter["where"] = {
  108. "startdate": Global.GetCurrentDate(),
  109. "enddate": Global.GetCurrentDate()
  110. };
  111. LogObject.first = false;
  112. }
  113. Tools.BindTable(parameter);
  114. },
  115. SearchLogBackupList: function() {
  116. var desc_width = $(".children-content").width() * 0.55;
  117. var columns = [
  118. [{
  119. field: 'backfilepath',
  120. title: '文件名称',
  121. width: 180,
  122. templet: function(row) {
  123. var ps = row.backfilepath.split("\\");
  124. return ps[ps.length - 1];
  125. },
  126. sort: false
  127. }, {
  128. field: 'backdate',
  129. title: '备份时间',
  130. width: 180
  131. }, {
  132. field: 'backstaff',
  133. width: 120,
  134. title: "操作人员",
  135. align: 'center'
  136. }, {
  137. field: 'datastartdate',
  138. title: '数据开始时间',
  139. width: 180
  140. }, {
  141. field: 'dataenddate',
  142. title: '数据结束时间',
  143. width: 180
  144. }, {
  145. field: 'backfilesize',
  146. title: '文件大小',
  147. width: 165,
  148. templet: function(row) {
  149. var size = row.backfilesize;
  150. if (size < 1024) return size + "字节";
  151. else {
  152. size = (size / 1024).toFixed(2);
  153. if (size < 1024) return size + "KB";
  154. else {
  155. size = (size / 1024).toFixed(2);
  156. return size + "MB";
  157. }
  158. }
  159. },
  160. sort: true
  161. }, {
  162. field: '',
  163. templet: function(data) {
  164. return "<a download href='/" + data.backfilepath + "' style='color:#5f5fe8;cursor:pointer;'><i class='fa fa-download'>下载</i></a>&nbsp;&nbsp;&nbsp;&nbsp;<span onclick='LogObject.DeleteLogBackup(" + data.id + ")' style='color:#5f5fe8;cursor:pointer;'><i class='fa fa-remove'>删除</i></span>";
  165. },
  166. title: "操作"
  167. }]
  168. ];
  169. var parameter = {
  170. elem: "#table-logbackup",
  171. url: Global.AccessUrl + "/api/log/backup/list",
  172. id: "syslogbackup_search",
  173. height: $(".main-body").height() - $("#log_query_panel").height() - 100 * hRate,
  174. cols: columns
  175. };
  176. if (LogObject.first) {
  177. LogObject.first = false;
  178. }
  179. Tools.BindTable(parameter);
  180. },
  181. NewBackup: function() {
  182. layer.confirm('<input type="text" placeholder="请选择备份开始时间" readonly="" id="backup_startdate" style="text-align:center;padding:0;" autocomplete="off" class="layui-input">', {
  183. "btn": ["确定", "取消"]
  184. }, function() {
  185. var startdate = $("#backup_startdate").val();
  186. if (startdate == "") {
  187. layer.msg("开始时间不能为空!")
  188. return;
  189. }
  190. $.post(Global.AccessUrl + "/api/log/backup", {
  191. "enddate": Global.GetCurrentDate(),
  192. "startdate": startdate
  193. }, function(jsondata) {
  194. if (jsondata.code != 0) {
  195. layer.msg(jsondata.msg)
  196. return;
  197. }
  198. LogObject.SearchLogBackupList();
  199. layer.closeAll();
  200. })
  201. });
  202. layui.laydate.render({
  203. "elem": "#backup_startdate",
  204. "max": Global.GetCurrentDate()
  205. });
  206. },
  207. ResetQueryAlarm: function() {
  208. $("#alarm_query_panel").find("input,select").val("");
  209. $("#text_startdate,#text_enddate").val(new Date().Format("yyyy-MM-dd"));
  210. this.SearchAlarm();
  211. },
  212. SearchAlarm: function() {
  213. if (!LogObject.first) {
  214. $("#btnSearch").attr("disabled", true);
  215. var parameter = {};
  216. $("#alarm_query_panel").find("input,select").each(function() {
  217. var id = $.trim($(this).attr("id")),
  218. v = $(this).val();
  219. if (id != "") {
  220. id = id.replace("text_", "").replace("combox_", "");
  221. parameter[id] = v;
  222. }
  223. });
  224. layui.table.reload('sysalarm_search', {
  225. page: {
  226. pageIndex: 1,
  227. },
  228. where: parameter
  229. });
  230. $("#btnSearch").attr("disabled", false);
  231. return
  232. }
  233. var desc_width = $(".children-content").width() * 0.55;
  234. var columns = [
  235. [{
  236. field: 'alarm_time',
  237. title: '告警时间',
  238. width: 180,
  239. sort: true
  240. }, {
  241. field: 'eventtypename',
  242. title: '事件类型',
  243. width: 120
  244. }, {
  245. field: 'alarm_type',
  246. width: 120,
  247. title: "告警类型",
  248. align: 'center',
  249. templet: function(row) {
  250. var codes = {
  251. "log": "日志容量",
  252. "cpu": "CPU耗用",
  253. "mem": "内存耗用",
  254. "disk": "磁盘空间"
  255. }
  256. return codes[row.alarm_type];
  257. }
  258. }, {
  259. field: 'alarm_text',
  260. title: '告警内容',
  261. width: desc_width
  262. }]
  263. ];
  264. var parameter = {
  265. elem: "#table-alarm",
  266. url: Global.AccessUrl + "/api/sys/alarm/list",
  267. id: "sysalarm_search",
  268. height: $(".main-body").height() - $("#log_query_panel").height() - 100 * hRate,
  269. cols: columns
  270. };
  271. if (LogObject.first) {
  272. parameter["where"] = {
  273. "startdate": Global.GetCurrentDate(),
  274. "enddate": Global.GetCurrentDate()
  275. };
  276. LogObject.first = false;
  277. }
  278. Tools.BindTable(parameter);
  279. },
  280. DeleteLogBackup: function(id) {
  281. layer.confirm('将物理删除备份的日志数据文件,确定吗?', {
  282. "btn": ["确定", "取消"]
  283. }, function() {
  284. $.post(Global.AccessUrl + "/api/log/backup/del", {
  285. "id": id
  286. }, function(jsondata) {
  287. if (jsondata.code != 0) {
  288. layer.msg(jsondata.msg)
  289. return;
  290. }
  291. LogObject.SearchLogBackupList();
  292. layer.closeAll();
  293. })
  294. });
  295. },
  296. LogRecover: function(id) {
  297. layer.confirm('[建议手动通过专业工具完成]。该操作为后台运行,将清除已有日志记录数据!确定吗?', {
  298. "btn": ["确定", "取消"]
  299. }, function() {
  300. $.post(Global.AccessUrl + "/api/log/backup/recover", {
  301. "id": id
  302. }, function(jsondata) {
  303. if (jsondata.code != 0) {
  304. layer.msg(jsondata.msg)
  305. return;
  306. }
  307. LogObject.SearchLogBackupList();
  308. layer.closeAll();
  309. })
  310. });
  311. },
  312. NewDbBackup: function() {
  313. layer.confirm('该操作为后台运行,将备份整个数据库数据,时间可能较长!', {
  314. "btn": ["确定", "取消"]
  315. }, function() {
  316. $.post(Global.AccessUrl + "/api/db/backup/new", {}, function(jsondata) {
  317. if (jsondata.code != 0) {
  318. layer.msg(jsondata.msg)
  319. return;
  320. }
  321. LogObject.SearchDbBackupList();
  322. layer.closeAll();
  323. })
  324. });
  325. },
  326. SearchDbBackupList: function() {
  327. var desc_width = $(".children-content").width() * 0.55;
  328. var columns = [
  329. [{
  330. field: 'backfilepath',
  331. title: '文件名称',
  332. width: 180,
  333. templet: function(row) {
  334. var ps = row.backfilepath.split("\\");
  335. return ps[ps.length - 1];
  336. },
  337. sort: false
  338. }, {
  339. field: 'backdate',
  340. title: '备份时间',
  341. width: 180
  342. }, {
  343. field: 'backstaff',
  344. width: 120,
  345. title: "操作人员",
  346. align: 'center'
  347. }, {
  348. field: 'backfilesize',
  349. title: '文件大小',
  350. width: 165,
  351. templet: function(row) {
  352. if (row.state == 1) {
  353. return "执行中..."
  354. }
  355. var size = row.backfilesize;
  356. if (size < 1024) return size + "字节";
  357. else {
  358. size = (size / 1024).toFixed(2);
  359. if (size < 1024) return size + "KB";
  360. else {
  361. size = (size / 1024).toFixed(2);
  362. return size + "MB";
  363. }
  364. }
  365. },
  366. sort: true
  367. }, {
  368. field: '',
  369. templet: function(data) {
  370. if (data.state == 1) {
  371. return "";
  372. }
  373. return "<a download href='/" + data.backfilepath + "' style='color:#5f5fe8;cursor:pointer;'><i class='fa fa-download'>下载</i></a>&nbsp;&nbsp;&nbsp;&nbsp;<span onclick='LogObject.DeleteDbBackup(" + data.id + ")' style='color:#5f5fe8;cursor:pointer;'><i class='fa fa-remove'>删除</i></span>&nbsp;&nbsp;&nbsp;&nbsp;<span onclick=LogObject.BbRecover(" + data.id + ") style='color:#5f5fe8;cursor:pointer;'><i class='fa fa-refresh'></i>还原</span>";
  374. },
  375. title: "操作"
  376. }]
  377. ];
  378. var parameter = {
  379. elem: "#table-dbbackup",
  380. url: Global.AccessUrl + "/api/db/backup/list",
  381. id: "sysdbbackup_search",
  382. height: $(".main-body").height() - $("#log_query_panel").height() - 100 * hRate,
  383. cols: columns
  384. };
  385. if (LogObject.first) {
  386. LogObject.first = false;
  387. }
  388. Tools.BindTable(parameter);
  389. },
  390. DeleteDbBackup: function(id) {
  391. layer.confirm('将物理删除备份数据,确定吗?', {
  392. "btn": ["确定", "取消"]
  393. }, function() {
  394. $.post(Global.AccessUrl + "/api/db/backup/del", {
  395. "id": id
  396. }, function(jsondata) {
  397. if (jsondata.code != 0) {
  398. layer.msg(jsondata.msg)
  399. return;
  400. }
  401. LogObject.SearchDbBackupList();
  402. layer.closeAll();
  403. })
  404. });
  405. },
  406. BbRecover: function(id) {
  407. layer.msg("由于数据量较大,请采用专业工具手动完成数据还原!")
  408. /*
  409. layer.confirm('[建议手动通过专业工具完成]。该操作为后台运行,将清除已有数据库全部数据并且时间可能较长!确定吗?', {
  410. "btn": ["确定", "取消"]
  411. }, function() {
  412. $.post(Global.AccessUrl + "/api/db/backup/recover", {
  413. "id": id
  414. }, function(jsondata) {
  415. if (jsondata.code != 0) {
  416. layer.msg(jsondata.msg)
  417. return;
  418. }
  419. LogObject.SearchDbBackupList();
  420. layer.closeAll();
  421. })
  422. });
  423. */
  424. },
  425. }