log.js 8.7 KB

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