import request from '@/utils/request' import { ADMIN_API_PREFIX } from '@/config' import type { PageParam, PageResult } from '@/types' /** * 系统管理 - 操作日志 * * 契约说明(新契约,与后端 parking-module-system 对齐): * - 前缀 /admin-api,回归 CommonResult{code=0} * - URL 命名:/get /list /page /export-excel * - 权限标识:system:operate-log:query / export * * 操作日志由后端在请求切面里自动落库,前端**只读**:没有 create / update / delete。 * * ⚠️ `createTime` 是毫秒时间戳数字(后端 `LocalDateTime` + 框架序列化器), * 渲染走 `formatDateTime()`。 * * ⚠️ `type` 存的是**中文**(查询 / 新增 / 修改 / 删除),因为列表页裸渲染该字段。 * 页面上请用 ``, * 该字典的 label 与 value 都是中文,等价于原样显示。 * * ⚠️ 查询条件 `createTime` 是**日期范围** `['2026-10-01', '2026-10-08']`: * 后端用 `@DateTimeFormat(pattern="yyyy-MM-dd") List` 接收, * 所以日期选择器必须带 `value-format="YYYY-MM-DD"`;数组序列化依赖 * `utils/request.ts` 里的 `paramsSerializer: { indexes: null }`。 */ const BASE = `${ADMIN_API_PREFIX}/system/operate-log` export interface OperateLogVO { id: number /** 操作人编号 */ userId?: number /** 操作人昵称 */ userNickname?: string /** 所属模块 */ module?: string /** 操作名(接口动作描述) */ name?: string /** 操作类型:查询 / 新增 / 修改 / 删除(中文,字典 system_operate_type) */ type?: string requestMethod?: string requestUrl?: string ip?: string /** 耗时(毫秒) */ duration?: number /** 结果码,0 表示成功 */ resultCode?: number /** 操作时间(毫秒时间戳) */ createTime?: number } export interface OperateLogPageReqVO extends PageParam { userNickname?: string module?: string name?: string /** 操作时间范围 [开始日期, 结束日期],格式 yyyy-MM-dd */ createTime?: string[] } export const OperateLogApi = { getOperateLogPage: (params: OperateLogPageReqVO) => request.get>(`${BASE}/page`, { params }), getOperateLogList: (params?: Partial) => request.get(`${BASE}/list`, { params }), getOperateLog: (id: number) => request.get(`${BASE}/get`, { params: { id } }), exportOperateLog: (params: OperateLogPageReqVO) => request.download(`${BASE}/export-excel`, params, '操作日志列表.xlsx') }