log.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. $(function() {
  2. var defaultPage = 0;
  3. var defaultSize = 10;
  4. var currentPage = defaultPage;
  5. var currentSize = defaultSize;
  6. var tableFirstLoad = true;
  7. Date.prototype.Format = function(fmt) {
  8. var o = {
  9. "M+": this.getMonth() + 1, //月份
  10. "d+": this.getDate(), //日
  11. "h+": this.getHours(), //小时
  12. "m+": this.getMinutes(), //分
  13. "s+": this.getSeconds(), //秒
  14. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  15. "S": this.getMilliseconds() //毫秒
  16. };
  17. if (/(y+)/.test(fmt))
  18. fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  19. for (var k in o)
  20. if (new RegExp("(" + k + ")").test(fmt))
  21. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  22. return fmt;
  23. };
  24. function formatDate(t) {
  25. var now = new Date(t),
  26. y = now.getFullYear(),
  27. m = now.getMonth() + 1,
  28. d = now.getDate();
  29. return y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d) + " " + now.toTimeString().substr(0, 8);
  30. }
  31. layui.config({
  32. base: './lib/layui_exts/'
  33. }).use(["table", 'excel', "laypage", "layer"], function() {
  34. var table = layui.table;
  35. var laypage = layui.laypage;
  36. excel = layui.excel;
  37. var title = $("#realName");
  38. var searchTitleKey = "";
  39. function loadLogList(page, size, searchTitle) {
  40. if (page === null || page === undefined) page = defaultPage;
  41. if (size === null || size === undefined) size = defaultSize;
  42. var tableOption = {
  43. elem: "#logList",
  44. height: "full-81",
  45. limit: size,
  46. cols: [
  47. [{
  48. type: "checkbox"
  49. },
  50. {
  51. field: "realName",
  52. title: "姓名",
  53. width: 100,
  54. align: "center"
  55. },
  56. {
  57. field: "beginTime",
  58. title: "开始时间",
  59. width: 190,
  60. align: "center"
  61. },
  62. {
  63. field: "finishTime",
  64. title: "结束时间",
  65. width: 190,
  66. align: "center"
  67. },
  68. {
  69. field: "requestDescription",
  70. title: "功能",
  71. align: "center"
  72. },
  73. {
  74. field: "execStatus",
  75. title: "执行状态",
  76. align: "center",
  77. templet: function(d) {
  78. return d.execStatus == 0 ? "成功" : "失败"
  79. }
  80. },
  81. {
  82. fixed: "right",
  83. title: "操作",
  84. toolbar: "#operationToolbar",
  85. width: 150,
  86. align: "center"
  87. }
  88. ]
  89. ]
  90. };
  91. var url = "api/log/listByName?realName=" + searchTitle + "&page=" + (page + 1) + "&size=" + size;
  92. if (searchTitle === null || searchTitle === undefined || searchTitle === "") url = "api/log/listpage?page=" + (
  93. page + 1) + "&size=" + size;
  94. fetchJSON(url, {}, "get", function(data) {
  95. if (data.status === 0) {
  96. if (tableFirstLoad) {
  97. tableFirstLoad = false;
  98. laypage.render({
  99. curr: page + 1,
  100. elem: "pagination",
  101. count: data.data.length,
  102. layout: ["count", "prev", "page", "next", "limit", "refresh", "skip"],
  103. jump: function(obj, first) {
  104. if (first) return;
  105. currentPage = obj.curr - 1;
  106. currentSize = obj.limit;
  107. loadLogList(currentPage, currentSize, searchTitleKey);
  108. }
  109. });
  110. }
  111. tableOption.data = data.data.list;
  112. table.render(tableOption);
  113. } else {
  114. showMsg(data.msg, 2, 2000);
  115. }
  116. });
  117. }
  118. loadLogList();
  119. $("#searchArticle").on("click", function(e) {
  120. e.preventDefault();
  121. tableFirstLoad = true;
  122. searchTitleKey = title.val().trim();
  123. if (searchTitleKey === "")
  124. loadLogList(0, currentSize);
  125. else
  126. loadLogList(0, currentSize, searchTitleKey);
  127. });
  128. $("#keyword").on("keyup", function(e) {
  129. e.preventDefault();
  130. if (e.keyCode === 13) {
  131. $("#searchArticle").click();
  132. }
  133. });
  134. // 监听表内工具条
  135. table.on("tool(logList)", function(obj) {
  136. var data = obj.data;
  137. // 删除
  138. var ids = [];
  139. ids.push(data.id);
  140. let form = {
  141. ids: ids
  142. };
  143. layer.confirm("确认要删除吗?", function() {
  144. fetchJSON("api/log/delete", form, "post", function(data) {
  145. if (data.status === 0) {
  146. showMsg("已删除!");
  147. tableFirstLoad = true;
  148. loadLogList(currentPage, currentSize);
  149. } else {
  150. showMsg(data.msg, 2, 2000);
  151. }
  152. });
  153. });
  154. });
  155. //表格导出
  156. function exportFile(id) {
  157. //根据传入tableID获取表头
  158. var headers = layui.$("div[lay-id='logList'] .layui-table-box table").get(0);
  159. var htrs = Array.from(headers.querySelectorAll('tr'));
  160. var titles = {};
  161. for (var j = 0; j < htrs.length; j++) {
  162. var hths = Array.from(htrs[j].querySelectorAll("th"));
  163. for (var i = 1; i < hths.length - 1; i++) {
  164. //排除居左、具有、隐藏字段
  165. //修改:默认字段data-field+i,兼容部分数据表格中不存在data-field值的问题
  166. titles['data-field' + i] = hths[i].innerText;
  167. }
  168. }
  169. //根据传入tableID获取table内容
  170. var bodys = layui.$("div[lay-id='logList'] .layui-table-box table").get(1);
  171. var btrs = Array.from(bodys.querySelectorAll("tr"))
  172. var bodysArr = new Array();
  173. for (var j = 0; j < btrs.length; j++) {
  174. var contents = {};
  175. var btds = Array.from(btrs[j].querySelectorAll("td"));
  176. for (var i = 1; i < btds.length - 1; i++) {
  177. for (var key in titles) {
  178. //修改:默认字段data-field+i,兼容部分数据表格中不存在data-field值的问题
  179. var field = 'data-field' + i;
  180. if (field === key) {
  181. //根据表头字段获取table内容字段
  182. contents[field] = btds[i].innerText;
  183. }
  184. }
  185. }
  186. bodysArr.push(contents)
  187. }
  188. //将标题行置顶添加到数组
  189. bodysArr.unshift(titles);
  190. //导出excel
  191. excel.exportExcel({
  192. sheet1: bodysArr
  193. }, '日志' + new Date().toLocaleString() + '.xlsx', 'xlsx');
  194. }
  195. $("#exportLog").on("click", function(e) {
  196. exportFile("logList");
  197. });
  198. // 批量删除
  199. $("#batchDelete").on("click", function(e) {
  200. e.preventDefault();
  201. var checkedData = table.checkStatus("logList").data;
  202. if (checkedData.length === 0) {
  203. showMsg("未选择需要删除的日志", 2, 2000);
  204. return;
  205. }
  206. layer.confirm("确认要删除吗?", function() {
  207. var ids = [];
  208. for (var i = 0; i < checkedData.length; i++) {
  209. ids.push(checkedData[i].id);
  210. }
  211. fetchJSON("api/log/delete", {
  212. ids: ids
  213. }, "post", function(data) {
  214. if (data.status === 0) {
  215. showMsg("已删除!");
  216. tableFirstLoad = true;
  217. loadLogList(currentPage, currentSize);
  218. } else {
  219. showMsg(data.msg, 2, 2000);
  220. }
  221. });
  222. });
  223. });
  224. });
  225. });