From eff623823502ab79efef903f3b183d2a02db907d Mon Sep 17 00:00:00 2001 From: zhangxy102 Date: Sat, 6 Aug 2022 23:36:35 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=E6=97=A5=E5=BF=97=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/log.ts | 38 +++++ src/components/QuickForm/index.vue | 12 +- src/router/dynamicRouter.ts | 1 + src/types/form.ts | 1 + src/types/log.ts | 16 ++ src/views/menu/index.vue | 2 +- src/views/system/log/operate.vue | 240 ++++++++++++++++++++--------- src/views/system/menu/index.vue | 2 +- 8 files changed, 240 insertions(+), 72 deletions(-) create mode 100644 src/api/log.ts create mode 100644 src/types/log.ts diff --git a/src/api/log.ts b/src/api/log.ts new file mode 100644 index 0000000..d2613e0 --- /dev/null +++ b/src/api/log.ts @@ -0,0 +1,38 @@ +import { Log } from '../types/log' +import request, { QuickResponseData } from '../utils/request' + +const Api = { + pageList: '/api/log/getPageList', + remove: '/api/log/remove', + batchRemove: '/api/log/batchRemove', +} + +export const getLogPageList = ( + params: any +): Promise>> => { + return request>>({ + url: Api.pageList, + method: 'GET', + params, + }) +} + +export const removeLog = (id: string) => { + return request({ + url: Api.remove, + method: 'POST', + data: { + id, + }, + }) +} + +export const batchRemove = (ids: string) => { + return request({ + url: Api.batchRemove, + method: 'POST', + data: { + ids, + }, + }) +} diff --git a/src/components/QuickForm/index.vue b/src/components/QuickForm/index.vue index 59c520f..cda9f5c 100644 --- a/src/components/QuickForm/index.vue +++ b/src/components/QuickForm/index.vue @@ -195,6 +195,17 @@ defineExpose({ handleSubmit }) :inactive-value="0" /> + diff --git a/src/views/system/log/operate.vue b/src/views/system/log/operate.vue index c330f02..2cf64fd 100644 --- a/src/views/system/log/operate.vue +++ b/src/views/system/log/operate.vue @@ -13,12 +13,10 @@ const dataList = reactive>([]) * 表单 */ const dialogTitle = reactive({ - // add: '添加日志', - // edit: '编辑日志', detail: '日志详情', }) const formModel = reactive({ - id: '', + id: 0, logTime: '', operateApi: '', requestParams: '', @@ -38,35 +36,20 @@ const formItems = reactive>([ labelWidth: '80px', vModel: 'logTime', }, - { - label: '操作接口', - labelWidth: '80px', - vModel: 'operateApi', - }, { label: 'IP', labelWidth: '80px', vModel: 'ip', }, { - label: '请求参数', - labelWidth: '80px', - vModel: 'requestParams', - }, - { - label: '操作人', - labelWidth: '80px', - vModel: 'operateUserId', - }, - { - label: '错误信息', + label: '操作接口', labelWidth: '80px', - vModel: 'errorMessage', + vModel: 'operateApi', }, { - label: '异常信息', + label: '请求参数', labelWidth: '80px', - vModel: 'exceptionMessage', + vModel: 'requestParams', type: 'textarea', }, ]) @@ -77,7 +60,6 @@ const formItems = reactive>([ const searchForm = reactive({ startTime: '', endTime: '', - operateUserId: '', logTime: '', }) const searchFormItems = reactive>([ @@ -87,11 +69,6 @@ const searchFormItems = reactive>([ placeholders: ['开始时间', '结束时间'], type: 'datetimerange', }, - { - label: '操作人', - vModel: 'operateUserId', - placeholder: '操作人', - }, ]) /** * 工具栏 @@ -103,7 +80,7 @@ const tableToolbar = reactive({ hiddenPrintButton: true, }) const handleBatchDelete = (data: any, done: any) => { - const { checkDataList, ids } = data + const { ids } = data ElMessageBox.confirm(`你真的删除选择的日志吗?`, '警告', { confirmButtonText: '确定', cancelButtonText: '取消', @@ -118,21 +95,12 @@ const handleBatchDelete = (data: any, done: any) => { }) }) } -const handleImport = (done: any) => { - done() -} -const handleExport = () => { - // window.open(`${window.location.origin}/日志报表.xlsx`)//TODO:导出bug -} -const handlePrint = () => { - window.print() -} /** * 表格 */ const tableColumns = reactive>([ { - width: '100', + width: '50', type: 'selection', align: 'center', }, @@ -141,33 +109,19 @@ const tableColumns = reactive>([ prop: 'logTime', width: '200', }, - { - label: '操作接口', - prop: 'operateApi', - width: '300', - }, { label: 'IP', prop: 'ip', width: '120', }, { - label: '请求参数', - prop: 'requestParams', - width: '180', - }, - { - label: '操作人', - prop: 'operateUserId', - width: '100', - // format: (row: Log) => { - // return row.enabled === 1 ? '禁用' : '启用' - // }, + label: '操作接口', + prop: 'operateApi', + width: '300', }, { - label: '错误信息', - prop: 'errorMessage', - width: '200', + label: '请求参数', + prop: 'requestParams', }, ]) const handleDelete = (item: Log, done: any) => { @@ -185,6 +139,15 @@ const handleDelete = (item: Log, done: any) => { }) }) } +const handleDetail = (item: Log, done: any) => { + const form: Log = { ...item } + if (form.requestParams) { + const params = JSON.parse(form.requestParams) + form.requestParams = JSON.stringify(params, null, 4) + done(form) + } +} + const tableActionbar = reactive({ width: 150, hiddenEditButton: true, @@ -205,11 +168,16 @@ const load = (params: any) => { let obj = {} const { logTime } = params if (logTime) { - obj = { ...params, startTime: logTime[0], endTime: logTime[1] } + obj = { + ...params, + logType: 0, + startTime: logTime[0], + endTime: logTime[1], + logTime: null, + } } else { - obj = { ...params } + obj = { ...params, logType: 0, logTime: null } } - getLogPageList(obj).then((res: any) => { const { data: logList, page: pagination } = res if (logList) { @@ -235,9 +203,8 @@ const load = (params: any) => { :search-form-model="searchForm" dialog-titles="dialogTitles" :page="page" - :form-inline="true" @on-load="load" - @on-form-submit="handleFormSubmit" + @on-detail="handleDetail" @on-delete="handleDelete" @on-batch-delete="handleBatchDelete" @on-import="handleImport" diff --git a/src/views/user/index.vue b/src/views/user/index.vue deleted file mode 100644 index 1866cc5..0000000 --- a/src/views/user/index.vue +++ /dev/null @@ -1,433 +0,0 @@ - - -- Gitee