feat: 增加按应用、控制器、方法查询日志

This commit is contained in:
augushong
2025-10-10 22:28:47 +08:00
parent 3a6cfacd0a
commit 63b1cb472a
4 changed files with 113 additions and 10 deletions

View File

@@ -24,4 +24,44 @@ class LogBase extends AdminController
$this->model = new \app\admin\model\DebugLog();
}
/**
* @\app\admin\service\annotation\NodeAnotation(title="列表")
*/
public function index()
{
if ($this->request->isAjax()) {
if (input('selectFields')) {
return $this->selectList();
}
list($page, $limit, $where, $excludes, $request_options, $group) = $this->buildTableParames();
$count = $this->model
->where($where)
->group($group)
->count();
$list = $this->model
->where($where)
->page($page, $limit)
->order($this->sort)
->group($group)
->select();
$data = [
'code' => 0,
'msg' => '',
'count' => $count,
'data' => $list,
];
return json($data);
}
$distinctData = $this->model->field('app_name, controller_name, action_name')->distinct(true)->select();
$this->assign([
'apps' => array_unique($distinctData->column('app_name')),
'controllers' => array_unique($distinctData->column('controller_name')),
'actions' => array_unique($distinctData->column('action_name')),
]);
return $this->fetch();
}
}

View File

@@ -20,6 +20,39 @@
</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: 120px;">
<select id="app-select" lay-filter="filter-select">
<option value="">所有模块</option>
{foreach $apps as $app}
<option value="{$app}">{$app}</option>
{/foreach}
</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="controller-select" lay-filter="filter-select" lay-search>
<option value="">所有控制器</option>
{foreach $controllers as $controller}
<option value="{$controller}">{$controller}</option>
{/foreach}
</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: 120px;">
<select id="action-select" lay-filter="filter-select" lay-search>
<option value="">所有方法</option>
{foreach $actions as $action}
<option value="{$action}">{$action}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<button type="button" class="layui-btn layui-btn-primary" id="refresh-btn"><i class="layui-icon layui-icon-refresh"></i> 刷新</button>
</div>

View File

@@ -22,16 +22,44 @@ $(function () {
var sort = {};
sort[sortField] = order;
if (sortField === 'uid') {
sort['id'] = 'asc'
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 = '=';
}
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: {
page: page,
limit: limit,
sort: sort
}
data: requestData
}, function (res) {
if (res.data && res.data.length > 0) {
var html = '';
@@ -131,8 +159,13 @@ $(function () {
reloadLogs();
});
// 监听筛选条件选择
layui.form.on('select(filter-select)', function (data) {
reloadLogs();
});
// 监听刷新按钮点击
$('#refresh-btn').on('click', function() {
$('#refresh-btn').on('click', function () {
reloadLogs();
});
});

View File

@@ -193,9 +193,6 @@
data: option.data,
timeout: 60000,
success: function (res) {
console.log(res);
console.log(option.statusName);
loading.hide();
if (eval('res.' + option.statusName) == option.statusCode) {
return ok(res);