diff --git a/README.md b/README.md index 12196a0b..f32bc97b 100644 --- a/README.md +++ b/README.md @@ -250,6 +250,9 @@ continew-admin │ ├─ utils # 工具库 │ ├─ views # 页面模板 │ │ ├─ login # 登录模块 + │ │ ├─ monitor # 系统监控模块 + │ │ │ └─ log # 日志管理 + │ │ │ └─ operation # 操作日志 │ │ └─ system # 系统管理模块 │ │ └─ user # 用户模块 │ │ └─ center # 个人中心 diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LogContext.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LogContext.java index 934d753e..cd30f8fd 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LogContext.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/dto/LogContext.java @@ -30,12 +30,12 @@ import lombok.Data; public class LogContext { /** - * 操作人 + * 创建人 */ private Long createUser; /** - * 操作时间 + * 创建时间 */ private LocalDateTime createTime; diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/IpUtils.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/IpUtils.java index deb06e0a..3a4b9b31 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/IpUtils.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/IpUtils.java @@ -43,16 +43,16 @@ import net.dreamlu.mica.ip2region.core.IpInfo; public class IpUtils { /** - * 太平洋网开放 API,查询 IP 归属地 + * 太平洋网开放 API:查询 IP 归属地 */ private static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp?ip=%s&json=true"; /** - * 根据IP获取详细地址 + * 根据 IP 获取归属地信息 * * @param ip - * IP地址 - * @return 详细地址 + * IP 地址 + * @return 归属地信息 */ public static String getCityInfo(String ip) { if (ContinewAdminProperties.IP_ADDR_LOCAL_PARSE_ENABLED) { @@ -63,11 +63,11 @@ public class IpUtils { } /** - * 根据 IP 获取详细地址(网络解析) + * 根据 IP 获取归属地信息(网络解析) * * @param ip - * IP地址 - * @return 详细地址 + * IP 地址 + * @return 归属地信息 */ public static String getHttpCityInfo(String ip) { if (isInnerIP(ip)) { @@ -79,11 +79,11 @@ public class IpUtils { } /** - * 根据 IP 获取详细地址(本地解析) + * 根据 IP 获取归属地信息(本地解析) * * @param ip * IP 地址 - * @return 详细地址 + * @return 归属地信息 */ public static String getLocalCityInfo(String ip) { if (isInnerIP(ip)) { @@ -98,11 +98,11 @@ public class IpUtils { } /** - * 是否为内网IPv4 + * 是否为内网 IPv4 * * @param ip * IP 地址 - * @return 是否为内网IP + * @return 是否为内网 IP */ public static boolean isInnerIP(String ip) { ip = "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : HtmlUtil.cleanHtmlTag(ip); diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/enums/LogResultEnum.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/enums/LogStatusEnum.java similarity index 93% rename from continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/enums/LogResultEnum.java rename to continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/enums/LogStatusEnum.java index 05c16221..2c533e87 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/enums/LogResultEnum.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/enums/LogStatusEnum.java @@ -22,14 +22,14 @@ import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.annotation.IEnum; /** - * 操作结果枚举 + * 操作状态枚举 * * @author Charles7c * @since 2022/12/25 9:09 */ @Getter @RequiredArgsConstructor -public enum LogResultEnum implements IEnum { +public enum LogStatusEnum implements IEnum { /** 成功 */ SUCCESS(1, "成功"), diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/filter/LogFilter.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/filter/LogFilter.java index a0ee989c..7517ddc1 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/filter/LogFilter.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/filter/LogFilter.java @@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.core.Ordered; +import org.springframework.lang.NonNull; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.util.ContentCachingRequestWrapper; @@ -32,7 +33,7 @@ import org.springframework.web.util.ContentCachingResponseWrapper; import org.springframework.web.util.WebUtils; /** - * 操作日志过滤器(缓存请求和响应体过滤器) + * 系统日志过滤器(缓存请求和响应体过滤器) * *

* 由于 requestBody 和 responseBody 分别对应的是 InputStream 和 OutputStream,由于流的特性,读取完之后就无法再被使用了。 所以,需要额外缓存一次流信息。 @@ -50,8 +51,8 @@ public class LogFilter extends OncePerRequestFilter implements Ordered { } @Override - protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) - throws ServletException, IOException { + protected void doFilterInternal(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, + @NonNull FilterChain filterChain) throws ServletException, IOException { // 包装流,可重复读取 if (!(request instanceof ContentCachingRequestWrapper)) { request = new ContentCachingRequestWrapper(request); diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java index 24845bce..c5fd5c54 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/interceptor/LogInterceptor.java @@ -52,7 +52,7 @@ import top.charles7c.cnadmin.common.util.helper.LoginHelper; import top.charles7c.cnadmin.common.util.holder.LogContextHolder; import top.charles7c.cnadmin.monitor.annotation.Log; import top.charles7c.cnadmin.monitor.config.properties.LogProperties; -import top.charles7c.cnadmin.monitor.enums.LogResultEnum; +import top.charles7c.cnadmin.monitor.enums.LogStatusEnum; import top.charles7c.cnadmin.monitor.model.entity.SysLog; /** @@ -73,7 +73,7 @@ public class LogInterceptor implements HandlerInterceptor { public boolean preHandle(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, @NonNull Object handler) { if (checkIsNeedRecord(handler, request)) { - // 记录操作时间 + // 记录时间 this.logCreateTime(); } return true; @@ -100,7 +100,7 @@ public class LogInterceptor implements HandlerInterceptor { } /** - * 记录操作时间 + * 记录时间 */ private void logCreateTime() { LogContext logContext = new LogContext(); @@ -121,12 +121,12 @@ public class LogInterceptor implements HandlerInterceptor { SysLog sysLog = new SysLog(); sysLog.setCreateTime(logContext.getCreateTime()); sysLog.setElapsedTime(System.currentTimeMillis() - LocalDateTimeUtil.toEpochMilli(sysLog.getCreateTime())); - sysLog.setResult(LogResultEnum.SUCCESS); + sysLog.setStatus(LogStatusEnum.SUCCESS); // 记录异常信息 Exception exception = logContext.getException(); if (exception != null) { - sysLog.setResult(LogResultEnum.FAILURE); + sysLog.setStatus(LogStatusEnum.FAILURE); sysLog.setException(ExceptionUtil.stacktraceToString(exception, -1)); } return sysLog; @@ -175,8 +175,8 @@ public class LogInterceptor implements HandlerInterceptor { sysLog.setRequestBody(this.desensitize( JSONUtil.isTypeJSON(requestBody) ? JSONUtil.parseObj(requestBody) : ServletUtil.getParamMap(request))); } - sysLog.setRequestIp(ServletUtil.getClientIP(request)); - sysLog.setLocation(IpUtils.getCityInfo(sysLog.getRequestIp())); + sysLog.setClientIp(ServletUtil.getClientIP(request)); + sysLog.setLocation(IpUtils.getCityInfo(sysLog.getClientIp())); sysLog.setBrowser(ServletUtils.getBrowser(request)); sysLog.setCreateUser(sysLog.getCreateUser() == null ? LoginHelper.getUserId() : sysLog.getCreateUser()); } @@ -199,7 +199,7 @@ public class LogInterceptor implements HandlerInterceptor { sysLog.setResponseBody(responseBody); } // 操作失败:>= 400 - sysLog.setResult(status >= HttpStatus.HTTP_BAD_REQUEST ? LogResultEnum.FAILURE : sysLog.getResult()); + sysLog.setStatus(status >= HttpStatus.HTTP_BAD_REQUEST ? LogStatusEnum.FAILURE : sysLog.getStatus()); } /** @@ -265,9 +265,9 @@ public class LogInterceptor implements HandlerInterceptor { * 检查是否要记录系统日志 * * @param handler - * / + * 处理器 * @param request - * / + * 请求对象 * @return true 需要记录,false 不需要记录 */ private boolean checkIsNeedRecord(Object handler, HttpServletRequest request) { diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java index 8bd0538f..03f70f16 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/entity/SysLog.java @@ -24,7 +24,7 @@ import lombok.Data; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import top.charles7c.cnadmin.monitor.enums.LogResultEnum; +import top.charles7c.cnadmin.monitor.enums.LogStatusEnum; /** * 系统日志实体 @@ -90,17 +90,17 @@ public class SysLog implements Serializable { private Long elapsedTime; /** - * 操作结果(1成功 2失败) + * 操作状态(1成功 2失败) */ - private LogResultEnum result; + private LogStatusEnum status; /** - * 操作IP + * 客户端IP */ - private String requestIp; + private String clientIp; /** - * 操作地点 + * IP归属地 */ private String location; @@ -115,12 +115,12 @@ public class SysLog implements Serializable { private String exception; /** - * 操作人 + * 创建人 */ private Long createUser; /** - * 操作时间 + * 创建时间 */ private LocalDateTime createTime; } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java index 984849d9..c0c41668 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java @@ -19,12 +19,15 @@ package top.charles7c.cnadmin.monitor.model.query; import static top.charles7c.cnadmin.common.annotation.Query.Type; import java.io.Serializable; +import java.util.Date; +import java.util.List; import lombok.Data; import io.swagger.v3.oas.annotations.media.Schema; import org.springdoc.api.annotations.ParameterObject; +import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; @@ -47,4 +50,26 @@ public class OperationLogQuery implements Serializable { @Schema(description = "操作人") @Query(property = "createUser", type = Type.EQUAL) private Long uid; + + /** + * 操作内容 + */ + @Schema(description = "操作内容") + @Query(type = Type.INNER_LIKE) + private String description; + + /** + * 操作状态(1成功 2失败) + */ + @Schema(description = "操作状态(1成功 2失败)") + @Query(type = Type.EQUAL) + private Integer status; + + /** + * 操作时间 + */ + @Schema(description = "操作时间") + @Query(type = Type.BETWEEN) + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private List createTime; } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/OperationLogVO.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/OperationLogVO.java index 2eb6f847..7f9ca815 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/OperationLogVO.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/vo/OperationLogVO.java @@ -25,7 +25,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import com.fasterxml.jackson.annotation.JsonIgnore; -import top.charles7c.cnadmin.monitor.enums.LogResultEnum; +import top.charles7c.cnadmin.monitor.enums.LogStatusEnum; /** * 操作日志信息 @@ -52,16 +52,16 @@ public class OperationLogVO implements Serializable { private String description; /** - * 操作结果(1成功 2失败) + * 操作状态(1成功 2失败) */ - @Schema(description = "操作结果(1成功 2失败)", type = "Integer", allowableValues = {"1", "2"}) - private LogResultEnum result; + @Schema(description = "操作状态(1成功 2失败)", type = "Integer", allowableValues = {"1", "2"}) + private LogStatusEnum status; /** * 操作IP */ @Schema(description = "操作IP") - private String requestIp; + private String clientIp; /** * 操作地点 diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/OperationLogServiceImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/OperationLogServiceImpl.java index 5bd02c91..da61bb53 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/OperationLogServiceImpl.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/OperationLogServiceImpl.java @@ -69,7 +69,14 @@ public class OperationLogServiceImpl implements OperationLogService { // 分页查询 IPage page = logMapper.selectPage(pageQuery.toPage(), queryWrapper); PageInfo pageInfo = PageInfo.build(page, OperationLogVO.class); - pageInfo.getList().forEach(this::fill); + + // 填充数据(如果是查询个人操作日志,只查询一次用户信息即可) + if (query.getUid() != null) { + SysUser sysUser = userMapper.selectById(query.getUid()); + pageInfo.getList().forEach(o -> o.setCreateUserString(sysUser.getUsername())); + } else { + pageInfo.getList().forEach(this::fill); + } return pageInfo; } @@ -85,6 +92,6 @@ public class OperationLogServiceImpl implements OperationLogService { return; } SysUser sysUser = userMapper.selectById(createUser); - vo.setCreateUserString(sysUser.getNickname()); + vo.setCreateUserString(sysUser.getUsername()); } } diff --git a/continew-admin-ui/src/api/monitor/operation-log.ts b/continew-admin-ui/src/api/monitor/operation-log.ts index bbfc31a9..48b9d482 100644 --- a/continew-admin-ui/src/api/monitor/operation-log.ts +++ b/continew-admin-ui/src/api/monitor/operation-log.ts @@ -4,8 +4,8 @@ import qs from 'query-string'; export interface OperationLogRecord { logId: string; description: string; - result: number, - requestIp: string, + status: number, + clientIp: string, location: string, browser: string, createUserString: string; @@ -16,7 +16,7 @@ export interface OperationLogParams extends Partial { page: number; size: number; sort: Array; - uid: string; + uid?: string; } export interface OperationLogListRes { diff --git a/continew-admin-ui/src/locale/en-US.ts b/continew-admin-ui/src/locale/en-US.ts index fd909d49..cd129d69 100644 --- a/continew-admin-ui/src/locale/en-US.ts +++ b/continew-admin-ui/src/locale/en-US.ts @@ -5,6 +5,11 @@ import localeWorkplace from '@/views/dashboard/workplace/locale/en-US'; import localeMonitor from '@/views/dashboard/monitor/locale/en-US'; +import localeDataAnalysis from '@/views/visualization/data-analysis/locale/en-US'; +import localeMultiDAnalysis from '@/views/visualization/multi-dimension-data-analysis/locale/en-US'; + +import localeLog from '@/views/monitor/log/operation/locale/en-US'; + import localeSearchTable from '@/views/list/search-table/locale/en-US'; import localeCardList from '@/views/list/card/locale/en-US'; @@ -13,9 +18,6 @@ import localeGroupForm from '@/views/form/group/locale/en-US'; import localeBasicProfile from '@/views/profile/basic/locale/en-US'; -import localeDataAnalysis from '@/views/visualization/data-analysis/locale/en-US'; -import localeMultiDAnalysis from '@/views/visualization/multi-dimension-data-analysis/locale/en-US'; - import localeSuccess from '@/views/result/success/locale/en-US'; import localeError from '@/views/result/error/locale/en-US'; @@ -33,12 +35,13 @@ export default { 'menu.server.dashboard': 'Dashboard-Server', 'menu.server.workplace': 'Workplace-Server', 'menu.server.monitor': 'Monitor-Server', + 'menu.visualization': 'Data Visualization', + 'menu.monitor': 'Monitor', 'menu.list': 'List', - 'menu.result': 'Result', - 'menu.exception': 'Exception', 'menu.form': 'Form', 'menu.profile': 'Profile', - 'menu.visualization': 'Data Visualization', + 'menu.result': 'Result', + 'menu.exception': 'Exception', 'menu.user': 'User Center', 'menu.arcoWebsite': 'Arco Design', 'menu.faq': 'FAQ', @@ -48,15 +51,17 @@ export default { ...localeMessageBox, ...localeLogin, ...localeWorkplace, - ...localeMonitor, + ...localeDataAnalysis, + ...localeMultiDAnalysis, + + ...localeLog, + ...localeSearchTable, ...localeCardList, ...localeStepForm, ...localeGroupForm, ...localeBasicProfile, - ...localeDataAnalysis, - ...localeMultiDAnalysis, ...localeSuccess, ...localeError, ...locale403, diff --git a/continew-admin-ui/src/locale/zh-CN.ts b/continew-admin-ui/src/locale/zh-CN.ts index 7a6c4220..1fbc21cd 100644 --- a/continew-admin-ui/src/locale/zh-CN.ts +++ b/continew-admin-ui/src/locale/zh-CN.ts @@ -5,6 +5,11 @@ import localeWorkplace from '@/views/dashboard/workplace/locale/zh-CN'; import localeMonitor from '@/views/dashboard/monitor/locale/zh-CN'; +import localeDataAnalysis from '@/views/visualization/data-analysis/locale/zh-CN'; +import localeMultiDAnalysis from '@/views/visualization/multi-dimension-data-analysis/locale/zh-CN'; + +import localeLog from '@/views/monitor/log/operation/locale/zh-CN'; + import localeSearchTable from '@/views/list/search-table/locale/zh-CN'; import localeCardList from '@/views/list/card/locale/zh-CN'; @@ -13,9 +18,6 @@ import localeGroupForm from '@/views/form/group/locale/zh-CN'; import localeBasicProfile from '@/views/profile/basic/locale/zh-CN'; -import localeDataAnalysis from '@/views/visualization/data-analysis/locale/zh-CN'; -import localeMultiDAnalysis from '@/views/visualization/multi-dimension-data-analysis/locale/zh-CN'; - import localeSuccess from '@/views/result/success/locale/zh-CN'; import localeError from '@/views/result/error/locale/zh-CN'; @@ -33,12 +35,13 @@ export default { 'menu.server.dashboard': '仪表盘-服务端', 'menu.server.workplace': '工作台-服务端', 'menu.server.monitor': '实时监控-服务端', + 'menu.visualization': '数据可视化', + 'menu.monitor': '系统监控', 'menu.list': '列表页', - 'menu.result': '结果页', - 'menu.exception': '异常页', 'menu.form': '表单页', 'menu.profile': '详情页', - 'menu.visualization': '数据可视化', + 'menu.result': '结果页', + 'menu.exception': '异常页', 'menu.user': '个人中心', 'menu.arcoWebsite': 'Arco Design', 'menu.faq': '常见问题', @@ -48,15 +51,17 @@ export default { ...localeMessageBox, ...localeLogin, ...localeWorkplace, - ...localeMonitor, + ...localeDataAnalysis, + ...localeMultiDAnalysis, + + ...localeLog, + ...localeSearchTable, ...localeCardList, ...localeStepForm, ...localeGroupForm, ...localeBasicProfile, - ...localeDataAnalysis, - ...localeMultiDAnalysis, ...localeSuccess, ...localeError, ...locale403, diff --git a/continew-admin-ui/src/router/routes/modules/exception.ts b/continew-admin-ui/src/router/routes/modules/exception.ts index dac1cccb..226ae54b 100644 --- a/continew-admin-ui/src/router/routes/modules/exception.ts +++ b/continew-admin-ui/src/router/routes/modules/exception.ts @@ -9,7 +9,7 @@ const EXCEPTION: AppRouteRecordRaw = { locale: 'menu.exception', requiresAuth: true, icon: 'icon-exclamation-circle', - order: 6, + order: 7, }, children: [ { diff --git a/continew-admin-ui/src/router/routes/modules/form.ts b/continew-admin-ui/src/router/routes/modules/form.ts index 5c8682f5..c2fe158a 100644 --- a/continew-admin-ui/src/router/routes/modules/form.ts +++ b/continew-admin-ui/src/router/routes/modules/form.ts @@ -9,7 +9,7 @@ const FORM: AppRouteRecordRaw = { locale: 'menu.form', icon: 'icon-settings', requiresAuth: true, - order: 3, + order: 4, }, children: [ { diff --git a/continew-admin-ui/src/router/routes/modules/list.ts b/continew-admin-ui/src/router/routes/modules/list.ts index ba0bba6b..59190702 100644 --- a/continew-admin-ui/src/router/routes/modules/list.ts +++ b/continew-admin-ui/src/router/routes/modules/list.ts @@ -9,7 +9,7 @@ const LIST: AppRouteRecordRaw = { locale: 'menu.list', requiresAuth: true, icon: 'icon-list', - order: 2, + order: 3, }, children: [ { diff --git a/continew-admin-ui/src/router/routes/modules/monitor.ts b/continew-admin-ui/src/router/routes/modules/monitor.ts new file mode 100644 index 00000000..efd2e4bf --- /dev/null +++ b/continew-admin-ui/src/router/routes/modules/monitor.ts @@ -0,0 +1,28 @@ +import { DEFAULT_LAYOUT } from '../base'; +import { AppRouteRecordRaw } from '../types'; + +const Monitor: AppRouteRecordRaw = { + path: '/monitor', + name: 'monitor', + component: DEFAULT_LAYOUT, + meta: { + locale: 'menu.monitor', + requiresAuth: true, + icon: 'icon-computer', + order: 2, + }, + children: [ + { + path: 'log/operation', + name: 'OperationLog', + component: () => import('@/views/monitor/log/operation/index.vue'), + meta: { + locale: 'menu.log.operation.list', + requiresAuth: true, + roles: ['*'], + }, + }, + ], +}; + +export default Monitor; diff --git a/continew-admin-ui/src/router/routes/modules/profile.ts b/continew-admin-ui/src/router/routes/modules/profile.ts index 4c396fcd..c94d044c 100644 --- a/continew-admin-ui/src/router/routes/modules/profile.ts +++ b/continew-admin-ui/src/router/routes/modules/profile.ts @@ -9,7 +9,7 @@ const PROFILE: AppRouteRecordRaw = { locale: 'menu.profile', requiresAuth: true, icon: 'icon-file', - order: 4, + order: 5, }, children: [ { diff --git a/continew-admin-ui/src/router/routes/modules/result.ts b/continew-admin-ui/src/router/routes/modules/result.ts index 52d281cb..4419dd14 100644 --- a/continew-admin-ui/src/router/routes/modules/result.ts +++ b/continew-admin-ui/src/router/routes/modules/result.ts @@ -9,7 +9,7 @@ const RESULT: AppRouteRecordRaw = { locale: 'menu.result', icon: 'icon-check-circle', requiresAuth: true, - order: 5, + order: 6, }, children: [ { diff --git a/continew-admin-ui/src/router/routes/modules/user.ts b/continew-admin-ui/src/router/routes/modules/user.ts index 99f66124..c57a2613 100644 --- a/continew-admin-ui/src/router/routes/modules/user.ts +++ b/continew-admin-ui/src/router/routes/modules/user.ts @@ -9,7 +9,7 @@ const USER: AppRouteRecordRaw = { locale: 'menu.user', icon: 'icon-user', requiresAuth: true, - order: 7, + order: 8, }, children: [ { diff --git a/continew-admin-ui/src/views/monitor/log/operation/index.vue b/continew-admin-ui/src/views/monitor/log/operation/index.vue new file mode 100644 index 00000000..00cfa0dd --- /dev/null +++ b/continew-admin-ui/src/views/monitor/log/operation/index.vue @@ -0,0 +1,222 @@ + + + + + + + diff --git a/continew-admin-ui/src/views/monitor/log/operation/locale/en-US.ts b/continew-admin-ui/src/views/monitor/log/operation/locale/en-US.ts new file mode 100644 index 00000000..e7c267f0 --- /dev/null +++ b/continew-admin-ui/src/views/monitor/log/operation/locale/en-US.ts @@ -0,0 +1,3 @@ +export default { + 'menu.log.operation.list': 'Operation log', +}; diff --git a/continew-admin-ui/src/views/monitor/log/operation/locale/zh-CN.ts b/continew-admin-ui/src/views/monitor/log/operation/locale/zh-CN.ts new file mode 100644 index 00000000..6af1b67f --- /dev/null +++ b/continew-admin-ui/src/views/monitor/log/operation/locale/zh-CN.ts @@ -0,0 +1,3 @@ +export default { + 'menu.log.operation.list': '操作日志', +}; diff --git a/continew-admin-ui/src/views/system/user/center/components/operation-log.vue b/continew-admin-ui/src/views/system/user/center/components/operation-log.vue index 61e4c8eb..c8d23ca1 100644 --- a/continew-admin-ui/src/views/system/user/center/components/operation-log.vue +++ b/continew-admin-ui/src/views/system/user/center/components/operation-log.vue @@ -1,20 +1,21 @@