$(function () { var init = { indexUrl: 'debug.log/index', }; var page = 1, limit = 200, noMoreData = false, isLoading = false; // 添加加载状态锁 var $logContainer = $('#log-container'); var order = 'desc', sortField = 'uid'; var lastUid = null; var colorIndex = 0; var groupColors = ['#FF5733', '#3357FF']; // 定义两种颜色 function loadLogs() { if (noMoreData || isLoading) { // 如果正在加载,则直接返回 return; } isLoading = true; // 设置加载锁 var sort = {}; sort[sortField] = order; if (sortField === 'uid') { sort['id'] = 'asc'; } var requestData = { page: page, limit: limit, sort: sort, }; var filter = {}; var op = {}; var appName = $('#app-select').val(); if (appName) { filter.app_name = appName; op.app_name = '='; } var controllerName = $('#controller-select').val(); if (controllerName) { filter.controller_name = controllerName; op.controller_name = '='; } var actionName = $('#action-select').val(); if (actionName) { filter.action_name = actionName; op.action_name = '='; } var level = $('#level-select').val(); if (level) { filter.level = level; op.level = '='; } if (Object.keys(filter).length > 0) { requestData.filter = JSON.stringify(filter); requestData.op = JSON.stringify(op); } ua.request.get({ url: ua.url(init.indexUrl), data: requestData }, function (res) { if (res.data && res.data.length > 0) { var html = ''; var isFirstPage = (page === 1); layui.each(res.data, function (index, item) { var style = ''; if (sortField === 'uid') { if (lastUid !== null && item.uid !== lastUid) { colorIndex = 1 - colorIndex; // 切换颜色索引 } lastUid = item.uid; var color = groupColors[colorIndex]; style = 'style="border-left: 3px solid ' + color + '; padding-left: 5px;"'; } html += ''; html += '[' + item.uid + '] '; html += '[' + item.id + '] '; html += '[' + item.create_time + '] '; html += '[' + item.level.toUpperCase() + '] '; html += item.content; html += ' [' + item.app_name; html += '/' + item.controller_name; html += '/' + item.action_name; html += '] '; html += ''; }); var oldScrollHeight = $logContainer[0].scrollHeight; if (order === 'desc') { $logContainer.prepend(html); } else { $logContainer.append(html); } var newScrollHeight = $logContainer[0].scrollHeight; if (isFirstPage) { // 首次加载,倒序滚动到底部,正序滚动到顶部 $logContainer.scrollTop(order === 'desc' ? newScrollHeight : 0); } else { // 加载更多,保持滚动位置 if (order === 'desc') { $logContainer.scrollTop(newScrollHeight - oldScrollHeight); } } page++; } else { noMoreData = true; var endText = order === 'desc' ? '- The Beginning -' : '- The End -'; var endHtml = '