diff --git a/src/api/system/operatelog/index.ts b/src/api/system/operatelog/index.ts index edbd9444a..786148982 100644 --- a/src/api/system/operatelog/index.ts +++ b/src/api/system/operatelog/index.ts @@ -1,41 +1,37 @@ -import { defHttp } from '@/utils/http/axios' +import { defHttp } from "@/utils/http/axios"; export interface OperateLogVO { - id: number - userNickname: string - traceId: string - userId: number - module: string - name: string - type: number - content: string - exts: Map - defHttpMethod: string - defHttpUrl: string - userIp: string - userAgent: string - javaMethod: string - javaMethodArgs: string - startTime: Date - duration: number - resultCode: number - resultMsg: string - resultData: string + id: number; + traceId: string; + userType: number; + userId: number; + userName: string; + type: string; + subType: string; + bizId: number; + action: string; + extra: string; + requestMethod: string; + requestUrl: string; + userIp: string; + creator: string; + creatorName: string; + createTime: Date; } export interface OperateLogPageReqVO extends PageParam { - module?: string - userNickname?: string - type?: number - success?: boolean - startTime?: Date[] + module?: string; + userNickname?: string; + type?: number; + success?: boolean; + startTime?: Date[]; } // 查询操作日志列表 export function getOperateLogPage(params: OperateLogPageReqVO) { - return defHttp.get({ url: '/system/operate-log/page', params }) + return defHttp.get({ url: "/system/operate-log/page", params }); } // 导出操作日志 export function exportOperateLog(params: OperateLogPageReqVO) { - return defHttp.download({ url: '/system/operate-log/export', params }, '操作日志.xls') + return defHttp.download({ url: "/system/operate-log/export", params }, "操作日志.xls"); } diff --git a/src/views/system/operatelog/operateLog.data.ts b/src/views/system/operatelog/operateLog.data.ts index 2c5da7a09..51edc9e7a 100644 --- a/src/views/system/operatelog/operateLog.data.ts +++ b/src/views/system/operatelog/operateLog.data.ts @@ -1,202 +1,151 @@ -import { h } from 'vue' -import type { BasicColumn, FormSchema } from '@/components/Table' -import { useRender } from '@/components/Table' -import { DICT_TYPE, getDictOptions } from '@/utils/dict' -import type { DescItem } from '@/components/Description/index' +import type { BasicColumn, FormSchema } from "@/components/Table"; +import { useRender } from "@/components/Table"; +import type { DescItem } from "@/components/Description"; +import { getListSimpleUsers } from "@/api/system/user"; export const columns: BasicColumn[] = [ { - title: '日志编号', - dataIndex: 'id', + title: "日志编号", + dataIndex: "id", width: 100, }, { - title: '操作模块', - dataIndex: 'module', + title: "操作人", + dataIndex: "userName", + width: 120, + }, + { + title: "操作模块", + dataIndex: "type", width: 200, }, { - title: '操作名', - dataIndex: 'name', + title: "操作名", + dataIndex: "subType", width: 180, }, { - title: '操作类型', - dataIndex: 'type', - width: 120, + title: "操作内容", + dataIndex: "action", customRender: ({ text }) => { - return useRender.renderDict(text, DICT_TYPE.SYSTEM_OPERATE_TYPE) + // 和 action 关键字冲突,所以通过 customRender 解决 + return text; }, }, { - title: '操作人', - dataIndex: 'userNickname', + title: "操作时间", + dataIndex: "createTime", + width: 180, + customRender: ({ text }) => { + return useRender.renderDate(text); + }, + }, + { + title: "业务编号", + dataIndex: "bizId", width: 120, }, - // { - // title: 'userAgent', - // dataIndex: 'userAgent', - // width: 400 - // }, { - title: '请求路径', - dataIndex: 'requestUrl', + title: "操作 IP", + dataIndex: "userIp", + width: 120, }, - { - title: '操作结果', - dataIndex: 'resultCode', - width: 180, - customRender: ({ text }) => { - return useRender.renderTag(text === 0 ? '成功' : '失败', text === 0 ? '#87d068' : '#f50') - }, - }, - { - title: '执行时长', - dataIndex: 'duration', - width: 180, - customRender: ({ text }) => { - return useRender.renderText(text, 'ms') - }, - }, - { - title: '操作日期', - dataIndex: 'startTime', - width: 180, - customRender: ({ text }) => { - return useRender.renderDate(text) - }, - }, -] +]; export const searchFormSchema: FormSchema[] = [ { - label: '系统模块', - field: 'title', - component: 'Input', - colProps: { span: 8 }, - }, - { - label: '操作人员', - field: 'operName', - component: 'Input', - colProps: { span: 8 }, - }, - { - label: '类型', - field: 'type', - component: 'Select', + label: "操作人", + field: "userId", + component: "ApiSelect", componentProps: { - options: getDictOptions(DICT_TYPE.SYSTEM_OPERATE_TYPE), + api: () => getListSimpleUsers(), + labelField: "nickname", + valueField: "id", }, colProps: { span: 8 }, }, { - label: '状态', - field: 'success', - component: 'Select', - componentProps: { - options: [ - { value: true, key: true, label: '成功' }, - { value: false, key: false, label: '失败' }, - ], - }, + label: "操作模块", + field: "type", + component: "Input", colProps: { span: 8 }, }, { - label: '操作时间', - field: 'startTime', - component: 'RangePicker', + label: "操作名", + field: "subType", + component: "Input", colProps: { span: 8 }, }, -] - -const httpMethods = [ - { value: 'GET', color: '#108ee9' }, - { value: 'POST', color: '#2db7f5' }, - { value: 'PUT', color: 'warning' }, - { value: 'DELETE', color: '#f50' }, -] + { + label: "操作内容", + field: "action", + component: "Input", + colProps: { span: 8 }, + }, + { + label: "操作时间", + field: "createTime", + component: "RangePicker", + colProps: { span: 8 }, + }, + { + label: "业务编号", + field: "bizId", + component: "Input", + colProps: { span: 8 }, + }, +]; export const infoSchema: DescItem[] = [ { - field: 'module', - label: '操作模块', + field: "id", + label: "日志编号", }, { - field: 'name', - label: '操作名', + field: "userName", + label: "操作人", }, { - field: 'userNickname', - label: '操作人', - render(_, data) { - const { userNickname, userId } = data - // return useRender.renderText(userNickname, 'uid: ' + userId) - return useRender.renderTags([userNickname, `uid: ${userId}`]) - }, + field: "type", + label: "操作模块", }, { - field: 'resultCode', - label: '请求结果', + field: "subType", + label: "操作名", + }, + { + field: "action", + label: "操作内容", + }, + { + field: "createTime", + label: "操作时间", render(value) { - return useRender.renderTag(value === 0 ? '成功' : '失败', value === 0 ? '#87d068' : '#f50') + return useRender.renderDate(value); }, }, { - field: 'resultMsg', - label: '响应信息', - show(data) { - return data && data.resultMsg && data.resultMsg !== '' - }, - render(value) { - return h('span', { style: { color: 'red', fontWeight: 'bold' } }, value) - }, + field: "bizId", + label: "业务编号", }, { - field: 'userIp', - label: '请求ip', + field: "userIp", + label: "操作 IP", }, { - field: 'startTime', - label: '请求时间', - render(value) { - return useRender.renderDate(value) - }, + field: "extra", + label: "拓展字段", }, { - field: 'requestUrl', - label: '请求路径', - render(_, data) { - if (!data) - return '' - - const { requestMethod, requestUrl } = data - const current = httpMethods.find(item => item.value === requestMethod.toUpperCase()) - const methodTag = current ? useRender.renderTag(requestMethod, current.color) : requestMethod - return h('span', {}, [methodTag, requestUrl]) - }, + field: "requestMethod", + label: "请求方法名", }, { - field: 'javaMethod', - label: '操作方法', - labelMinWidth: 80, + field: "requestUrl", + label: "请求 URL", }, { - field: 'javaMethodArgs', - label: '请求参数', - render(value) { - return useRender.renderJsonPreview(value) - }, + field: "userAgent", + label: "浏览器 UA", }, - { - field: 'userAgent', - label: 'userAgent', - }, - { - field: 'duration', - label: '请求耗时', - render(value) { - return useRender.renderText(value, 'ms') - }, - }, -] +];