mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-01 15:32:48 +08:00
feat: 优化日志显示
This commit is contained in:
@@ -1,5 +1,27 @@
|
|||||||
<div class="layuimini-container">
|
<div class="layuimini-container">
|
||||||
<div class="layuimini-main">
|
<div class="layuimini-main">
|
||||||
|
<form class="layui-form" style="margin-bottom: 10px;">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label" style="width: auto; padding: 9px 10px;">排序方式</label>
|
||||||
|
<div class="layui-input-inline" style="width: 120px;">
|
||||||
|
<select id="order-select" lay-filter="order-select">
|
||||||
|
<option value="desc" selected>倒序</option>
|
||||||
|
<option value="asc">正序</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label" style="width: auto; padding: 9px 10px;">排序字段</label>
|
||||||
|
<div class="layui-input-inline" style="width: 180px;">
|
||||||
|
<select id="sort-select" lay-filter="sort-select">
|
||||||
|
<option value="uid" selected>按请求分组 (uid排序)</option>
|
||||||
|
<option value="id" >实时记录 (id排序)</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
<div id="log-container" class="log-container"></div>
|
<div id="log-container" class="log-container"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -12,7 +34,7 @@
|
|||||||
padding: 15px;
|
padding: 15px;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
height: calc(100vh - 120px);
|
height: calc(100vh - 170px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,28 +7,35 @@ $(function () {
|
|||||||
limit = 50,
|
limit = 50,
|
||||||
noMoreData = false;
|
noMoreData = false;
|
||||||
var $logContainer = $('#log-container');
|
var $logContainer = $('#log-container');
|
||||||
|
var order = 'desc', sortField = 'uid';
|
||||||
|
|
||||||
function loadLogs() {
|
function loadLogs() {
|
||||||
if (noMoreData) {
|
if (noMoreData) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sort = {};
|
||||||
|
sort[sortField] = order;
|
||||||
|
if(sortField = 'uid'){
|
||||||
|
sort['id'] = 'asc'
|
||||||
|
}
|
||||||
|
|
||||||
ua.request.get({
|
ua.request.get({
|
||||||
url: ua.url(init.indexUrl),
|
url: ua.url(init.indexUrl),
|
||||||
data: {
|
data: {
|
||||||
page: page,
|
page: page,
|
||||||
limit: limit,
|
limit: limit,
|
||||||
sort:{
|
sort: sort
|
||||||
id:'desc'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, function (res) {
|
}, function (res) {
|
||||||
if (res.data && res.data.length > 0) {
|
if (res.data && res.data.length > 0) {
|
||||||
var html = '';
|
var html = '';
|
||||||
var isFirstPage = (page === 1);
|
var isFirstPage = (page === 1);
|
||||||
|
|
||||||
layui.each(res.data, function (index, item) {
|
layui.each(res.data, function (index, item) {
|
||||||
html += '<span class="log-line log-level-' + item.level.toLowerCase() + '">';
|
html += '<span class="log-line log-level-' + item.level.toLowerCase() + '">';
|
||||||
html += '[' + item.uid + '] ';
|
html += '[' + item.uid + '] ';
|
||||||
|
html += '[' + item.id + '] ';
|
||||||
html += '[' + item.create_time + '] ';
|
html += '[' + item.create_time + '] ';
|
||||||
html += '[' + item.level.toUpperCase() + '] ';
|
html += '[' + item.level.toUpperCase() + '] ';
|
||||||
html += item.content;
|
html += item.content;
|
||||||
@@ -36,44 +43,75 @@ $(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
var oldScrollHeight = $logContainer[0].scrollHeight;
|
var oldScrollHeight = $logContainer[0].scrollHeight;
|
||||||
$logContainer.prepend(html);
|
|
||||||
|
if (order === 'desc') {
|
||||||
|
$logContainer.prepend(html);
|
||||||
|
} else {
|
||||||
|
$logContainer.append(html);
|
||||||
|
}
|
||||||
|
|
||||||
var newScrollHeight = $logContainer[0].scrollHeight;
|
var newScrollHeight = $logContainer[0].scrollHeight;
|
||||||
|
|
||||||
if (isFirstPage) {
|
if (isFirstPage) {
|
||||||
// 首次加载,滚动到底部
|
// 首次加载,倒序滚动到底部,正序滚动到顶部
|
||||||
$logContainer.scrollTop(newScrollHeight);
|
$logContainer.scrollTop(order === 'desc' ? newScrollHeight : 0);
|
||||||
} else {
|
} else {
|
||||||
// 加载更多,保持滚动位置
|
// 加载更多,保持滚动位置
|
||||||
$logContainer.scrollTop(newScrollHeight - oldScrollHeight);
|
if (order === 'desc') {
|
||||||
|
$logContainer.scrollTop(newScrollHeight - oldScrollHeight);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
page++;
|
page++;
|
||||||
} else {
|
} else {
|
||||||
noMoreData = true;
|
noMoreData = true;
|
||||||
$logContainer.prepend('<div style="text-align:center;color:#888;padding-bottom:15px;">- The Beginning -</div>');
|
var endText = order === 'desc' ? '- The Beginning -' : '- The End -';
|
||||||
|
var endHtml = '<div style="text-align:center;color:#888;padding:15px 0;">' + endText + '</div>';
|
||||||
|
if (order === 'desc') {
|
||||||
|
$logContainer.prepend(endHtml);
|
||||||
|
} else {
|
||||||
|
$logContainer.append(endHtml);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}, function () {
|
}, function () {
|
||||||
// complete
|
// complete
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reloadLogs() {
|
||||||
|
page = 1;
|
||||||
|
noMoreData = false;
|
||||||
|
$logContainer.empty();
|
||||||
|
loadLogs();
|
||||||
|
}
|
||||||
|
|
||||||
// 初始加载
|
// 初始加载
|
||||||
loadLogs();
|
loadLogs();
|
||||||
|
|
||||||
// 监听滚动事件
|
// 监听滚动事件
|
||||||
$logContainer.on('scroll', function () {
|
$logContainer.on('scroll', function () {
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
// 滚动条到顶部时加载更多
|
// 滚动条到顶部时(倒序)或到底部时(正序)加载更多
|
||||||
if ($this.scrollTop() === 0) {
|
if ((order === 'desc' && $this.scrollTop() === 0) ||
|
||||||
|
(order === 'asc' && $this.scrollTop() + $this.innerHeight() >= $this[0].scrollHeight - 1)) {
|
||||||
loadLogs();
|
loadLogs();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 监听排序方式选择
|
||||||
|
layui.form.on('select(order-select)', function (data) {
|
||||||
|
order = data.value;
|
||||||
|
reloadLogs();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听排序字段选择
|
||||||
|
layui.form.on('select(sort-select)', function (data) {
|
||||||
|
sortField = data.value;
|
||||||
|
reloadLogs();
|
||||||
|
});
|
||||||
|
|
||||||
// 监听刷新按钮
|
// 监听刷新按钮
|
||||||
ua.listen.refresh(function () {
|
ua.listen.refresh(function () {
|
||||||
page = 1;
|
reloadLogs();
|
||||||
noMoreData = false;
|
|
||||||
$logContainer.empty();
|
|
||||||
loadLogs();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user