Skip to content

Commit adc80aa

Browse files
committed
feat: 添加操作日志和登录日志功能,重构日志相关API和视图
1 parent afab230 commit adc80aa

File tree

5 files changed

+198
-52
lines changed

5 files changed

+198
-52
lines changed

src/api/system/log.ts renamed to src/api/maint/log.ts

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,33 @@
11
import request from "@/utils/request";
22

3-
const LOG_BASE_URL = "/usr/logs";
3+
const LOG_BASE_URL = "/maint/operationlogs";
4+
const LOGIN_LOG_BASE_URL = "/maint/loginlogs";
45

56
const LogAPI = {
67
/**
7-
* 获取日志分页列表
8+
* 获取操作日志分页列表
89
*
910
* @param queryParams 查询参数
1011
*/
11-
getPage(queryParams: LogPageQuery) {
12+
getOperationLogPage(queryParams: LogPageQuery) {
1213
return request<any, PageResult<LogPageVO[]>>({
1314
url: `${LOG_BASE_URL}/page`,
1415
method: "get",
1516
params: queryParams,
1617
});
1718
},
19+
/**
20+
* 获取登录日志分页列表
21+
*
22+
* @param queryParams 查询参数
23+
*/
24+
getLoginLogPage(queryParams: LogPageQuery) {
25+
return request<any, PageResult<LoginLogPageVO[]>>({
26+
url: `${LOGIN_LOG_BASE_URL}/page`,
27+
method: "get",
28+
params: queryParams,
29+
});
30+
},
1831

1932
/**
2033
* 获取访问趋势
@@ -57,31 +70,59 @@ export interface LogPageQuery extends PageQuery {
5770
}
5871

5972
/**
60-
* 系统日志分页VO
73+
* 操作日志分页VO
6174
*/
6275
export interface LogPageVO {
6376
/** 主键 */
6477
id: number;
6578
/** 日志模块 */
66-
module: string;
79+
logname: string;
6780
/** 日志内容 */
68-
content: string;
69-
/** 请求路径 */
70-
requestUri: string;
81+
message: string;
82+
/** 操作类名 */
83+
className: string;
7184
/** 请求方法 */
7285
method: string;
7386
/** IP 地址 */
74-
ip: string;
75-
/** 地区 */
76-
region: string;
77-
/** 浏览器 */
78-
browser: string;
79-
/** 终端系统 */
80-
os: string;
87+
remoteIpAddress: string;
88+
/** 执行时间(毫秒) */
89+
executionTime: number;
90+
/** 操作人账号 */
91+
account: string;
92+
/** 操作人 */
93+
name: string;
94+
/** 是否成功 */
95+
succeed: boolean;
96+
/** 创建时间 */
97+
createTime: string;
98+
}
99+
100+
/**
101+
* 登录日志分页VO
102+
*/
103+
export interface LoginLogPageVO {
104+
/** 主键 */
105+
id: number;
106+
/** 登录设备 */
107+
device: string;
108+
/** 日志内容 */
109+
message: string;
110+
/** 状态码 */
111+
statusCode: number;
112+
/** 用户id */
113+
userId: number;
114+
/** IP 地址 */
115+
remoteIpAddress: string;
81116
/** 执行时间(毫秒) */
82117
executionTime: number;
118+
/** 操作人账号 */
119+
account: string;
83120
/** 操作人 */
84-
operator: string;
121+
name: string;
122+
/** 是否成功 */
123+
succeed: boolean;
124+
/** 创建时间 */
125+
createTime: string;
85126
}
86127

87128
/** 访问趋势视图对象 */

src/views/dashboard/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ defineOptions({
282282
});
283283
284284
import { dayjs } from "element-plus";
285-
import LogAPI, { VisitStatsVO, VisitTrendVO } from "@/api/system/log";
285+
import LogAPI, { VisitStatsVO, VisitTrendVO } from "@/api/maint/log";
286286
import { useUserStore } from "@/store/modules/user";
287287
import { formatGrowthRate } from "@/utils";
288288

src/views/system/log/index.vue renamed to src/views/maint/log/index.vue

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<el-form-item prop="keywords" label="关键字">
66
<el-input
77
v-model="queryParams.keywords"
8-
placeholder="日志内容"
8+
placeholder="方法名"
99
clearable
1010
@keyup.enter="handleQuery"
1111
/>
@@ -32,21 +32,22 @@
3232

3333
<el-card shadow="never">
3434
<el-table v-loading="loading" :data="pageData" highlight-current-row border>
35-
<el-table-column label="操作时间" prop="createTime" width="180" />
36-
<el-table-column label="操作人" prop="operator" width="120" />
37-
<el-table-column label="日志模块" prop="module" width="100" />
38-
<el-table-column label="日志内容" prop="content" min-width="200" />
39-
<el-table-column label="IP 地址" prop="ip" width="150" />
40-
<el-table-column label="地区" prop="region" width="150" />
41-
<el-table-column label="浏览器" prop="browser" width="150" />
42-
<el-table-column label="终端系统" prop="os" width="200" show-overflow-tooltip />
43-
<el-table-column label="执行时间(ms)" prop="executionTime" width="150" />
35+
<el-table-column label="操作时间" prop="createTime" width="140" />
36+
<el-table-column label="操作账号" prop="account" width="100" />
37+
<el-table-column label="操作人" prop="name" width="100" />
38+
<el-table-column label="" prop="className" width="200" show-overflow-tooltip />
39+
<el-table-column label="方法" prop="method" width="200" />
40+
<el-table-column label="方法名" prop="logName" width="100" />
41+
<el-table-column label="日志内容" prop="message" min-width="200" show-overflow-tooltip />
42+
<el-table-column label="IP 地址" prop="remoteIpAddress" width="100" />
43+
<el-table-column label="成功" prop="succeed" width="60" />
44+
<el-table-column label="执行时间(ms)" prop="executionTime" width="100" />
4445
</el-table>
4546

4647
<pagination
4748
v-if="total > 0"
4849
v-model:total="total"
49-
v-model:page="queryParams.pageNum"
50+
v-model:page="queryParams.pageIndex"
5051
v-model:limit="queryParams.pageSize"
5152
@pagination="handleQuery"
5253
/>
@@ -56,19 +57,19 @@
5657

5758
<script setup lang="ts">
5859
defineOptions({
59-
name: "Log",
60+
name: "OperateLog",
6061
inheritAttrs: false,
6162
});
6263
63-
import LogAPI, { LogPageVO, LogPageQuery } from "@/api/system/log";
64+
import LogAPI, { LogPageVO, LogPageQuery } from "@/api/maint/log";
6465
6566
const queryFormRef = ref();
6667
6768
const loading = ref(false);
6869
const total = ref(0);
6970
7071
const queryParams = reactive<LogPageQuery>({
71-
pageNum: 1,
72+
pageIndex: 1,
7273
pageSize: 10,
7374
keywords: "",
7475
createTime: ["", ""],
@@ -80,7 +81,7 @@ const pageData = ref<LogPageVO[]>();
8081
/** 查询 */
8182
function handleQuery() {
8283
loading.value = true;
83-
LogAPI.getPage(queryParams)
84+
LogAPI.getOperationLogPage(queryParams)
8485
.then((data) => {
8586
pageData.value = data.list;
8687
total.value = data.total;
@@ -92,7 +93,7 @@ function handleQuery() {
9293
/** 重置查询 */
9394
function handleResetQuery() {
9495
queryFormRef.value.resetFields();
95-
queryParams.pageNum = 1;
96+
queryParams.pageIndex = 1;
9697
queryParams.createTime = undefined;
9798
handleQuery();
9899
}

src/views/maint/log/loginlog.vue

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
<template>
2+
<div class="app-container">
3+
<div class="search-bar">
4+
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
5+
<el-form-item prop="keywords" label="关键字">
6+
<el-input
7+
v-model="queryParams.keywords"
8+
placeholder="登录账号"
9+
clearable
10+
@keyup.enter="handleQuery"
11+
/>
12+
</el-form-item>
13+
<el-form-item prop="createTime" label="登录时间">
14+
<el-date-picker
15+
v-model="queryParams.createTime"
16+
:editable="false"
17+
class="!w-[240px]"
18+
type="daterange"
19+
range-separator="~"
20+
start-placeholder="开始时间"
21+
end-placeholder="截止时间"
22+
value-format="YYYY-MM-DD"
23+
/>
24+
</el-form-item>
25+
26+
<el-form-item>
27+
<el-button type="primary" icon="search" @click="handleQuery">搜索</el-button>
28+
<el-button icon="refresh" @click="handleResetQuery">重置</el-button>
29+
</el-form-item>
30+
</el-form>
31+
</div>
32+
33+
<el-card shadow="never">
34+
<el-table v-loading="loading" :data="pageData" highlight-current-row border>
35+
<el-table-column label="登录时间" prop="createTime" width="140" />
36+
<el-table-column label="登录Id" prop="userId" width="140" />
37+
<el-table-column label="登录账号" prop="account" width="100" />
38+
<el-table-column label="登录人" prop="name" width="100" />
39+
<el-table-column label="状态码" prop="statusCode" width="80" />
40+
<el-table-column label="设备" prop="device" width="100" />
41+
<el-table-column label="日志内容" prop="message" min-width="200" show-overflow-tooltip />
42+
<el-table-column label="IP 地址" prop="remoteIpAddress" width="150" />
43+
<el-table-column label="成功" prop="succeed" width="80" />
44+
<el-table-column label="执行时间(ms)" prop="executionTime" width="100" />
45+
</el-table>
46+
47+
<pagination
48+
v-if="total > 0"
49+
v-model:total="total"
50+
v-model:page="queryParams.pageIndex"
51+
v-model:limit="queryParams.pageSize"
52+
@pagination="handleQuery"
53+
/>
54+
</el-card>
55+
</div>
56+
</template>
57+
58+
<script setup lang="ts">
59+
defineOptions({
60+
name: "LoginLog",
61+
inheritAttrs: false,
62+
});
63+
64+
import LogAPI, { LogPageQuery, LoginLogPageVO } from "@/api/maint/log";
65+
66+
const queryFormRef = ref();
67+
68+
const loading = ref(false);
69+
const total = ref(0);
70+
71+
const queryParams = reactive<LogPageQuery>({
72+
pageIndex: 1,
73+
pageSize: 10,
74+
keywords: "",
75+
createTime: ["", ""],
76+
});
77+
78+
// 日志表格数据
79+
const pageData = ref<LoginLogPageVO[]>();
80+
81+
/** 查询 */
82+
function handleQuery() {
83+
loading.value = true;
84+
LogAPI.getLoginLogPage(queryParams)
85+
.then((data) => {
86+
pageData.value = data.list;
87+
total.value = data.total;
88+
})
89+
.finally(() => {
90+
loading.value = false;
91+
});
92+
}
93+
/** 重置查询 */
94+
function handleResetQuery() {
95+
queryFormRef.value.resetFields();
96+
queryParams.pageIndex = 1;
97+
queryParams.createTime = undefined;
98+
handleQuery();
99+
}
100+
101+
onMounted(() => {
102+
handleQuery();
103+
});
104+
</script>

src/views/system/config/index.vue

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@
2121
<el-card shadow="never">
2222
<div class="mb-10px">
2323
<el-button
24-
v-hasPerm="['sys:config:add']"
24+
v-hasPerm="['sysconfig-create']"
2525
type="success"
2626
icon="plus"
2727
@click="handleOpenDialog()"
2828
>
2929
新增
3030
</el-button>
3131
<el-button
32-
v-hasPerm="['sys:config:refresh']"
32+
v-hasPerm="['sysconfig-refresh']"
3333
color="#626aef"
3434
icon="RefreshLeft"
3535
@click="handleRefreshCache"
@@ -46,14 +46,14 @@
4646
@selection-change="handleSelectionChange"
4747
>
4848
<el-table-column type="index" label="序号" width="60" />
49-
<el-table-column key="Name" label="配置名称" prop="Name" min-width="100" />
50-
<el-table-column key="Key" label="配置键" prop="Key" min-width="100" />
51-
<el-table-column key="Value" label="配置值" prop="Value" min-width="100" />
49+
<el-table-column key="name" label="配置名称" prop="name" min-width="100" />
50+
<el-table-column key="key" label="配置键" prop="key" min-width="100" />
51+
<el-table-column key="value" label="配置值" prop="value" min-width="100" />
5252
<el-table-column key="remark" label="描述" prop="remark" min-width="100" />
5353
<el-table-column fixed="right" label="操作" width="220">
5454
<template #default="scope">
5555
<el-button
56-
v-hasPerm="['sys:config:update']"
56+
v-hasPerm="['sysconfig-update']"
5757
type="primary"
5858
size="small"
5959
link
@@ -63,7 +63,7 @@
6363
编辑
6464
</el-button>
6565
<el-button
66-
v-hasPerm="['sys:config:delete']"
66+
v-hasPerm="['sysconfig-delete']"
6767
type="danger"
6868
size="small"
6969
link
@@ -99,14 +99,14 @@
9999
label-suffix=":"
100100
label-width="100px"
101101
>
102-
<el-form-item label="配置名称" prop="Name">
103-
<el-input v-model="formData.Name" placeholder="请输入配置名称" :maxlength="50" />
102+
<el-form-item label="配置名称" prop="name">
103+
<el-input v-model="formData.name" placeholder="请输入配置名称" :maxlength="50" />
104104
</el-form-item>
105-
<el-form-item label="配置键" prop="Key">
106-
<el-input v-model="formData.Key" placeholder="请输入配置键" :maxlength="50" />
105+
<el-form-item label="配置键" prop="key">
106+
<el-input v-model="formData.key" placeholder="请输入配置键" :maxlength="50" />
107107
</el-form-item>
108-
<el-form-item label="配置值" prop="Value">
109-
<el-input v-model="formData.Value" placeholder="请输入配置值" :maxlength="100" />
108+
<el-form-item label="配置值" prop="value">
109+
<el-input v-model="formData.value" placeholder="请输入配置值" :maxlength="100" />
110110
</el-form-item>
111111
<el-form-item label="描述" prop="remark">
112112
<el-input
@@ -160,16 +160,16 @@ const dialog = reactive({
160160
161161
const formData = reactive<ConfigForm>({
162162
id: undefined,
163-
Name: "",
164-
Key: "",
165-
Value: "",
163+
name: "",
164+
key: "",
165+
value: "",
166166
remark: "",
167167
});
168168
169169
const rules = reactive({
170-
Name: [{ required: true, message: "请输入系统配置名称", trigger: "blur" }],
171-
Key: [{ required: true, message: "请输入系统配置编码", trigger: "blur" }],
172-
Value: [{ required: true, message: "请输入系统配置值", trigger: "blur" }],
170+
name: [{ required: true, message: "请输入系统配置名称", trigger: "blur" }],
171+
key: [{ required: true, message: "请输入系统配置编码", trigger: "blur" }],
172+
value: [{ required: true, message: "请输入系统配置值", trigger: "blur" }],
173173
});
174174
175175
// 查询系统配置

0 commit comments

Comments
 (0)