From f544ac221f87a62b3ec4fb6ebdc7ac7d484b2dbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=9F=E8=B1=86=E5=93=A5?= Date: Sun, 7 Aug 2022 19:05:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/QuickCrud/index.vue | 6 + src/components/QuickForm/index.vue | 2 +- src/types/form.ts | 2 +- src/types/log.ts | 3 +- src/views/assignUser/index.vue | 199 ------------- src/views/dept/index.vue | 249 ----------------- src/views/dictionary/index.vue | 222 --------------- src/views/dictionaryType/index.vue | 151 ---------- src/views/log/error.vue | 145 ---------- src/views/log/operate.vue | 145 ---------- src/views/menu/index.vue | 345 ----------------------- src/views/role/index.vue | 145 ---------- src/views/rolePermission/index.vue | 186 ------------- src/views/system/log/error.vue | 216 +++++++++----- src/views/system/log/operate.vue | 93 ++----- src/views/user/index.vue | 433 ----------------------------- 16 files changed, 187 insertions(+), 2355 deletions(-) delete mode 100644 src/views/assignUser/index.vue delete mode 100644 src/views/dept/index.vue delete mode 100644 src/views/dictionary/index.vue delete mode 100644 src/views/dictionaryType/index.vue delete mode 100644 src/views/log/error.vue delete mode 100644 src/views/log/operate.vue delete mode 100644 src/views/menu/index.vue delete mode 100644 src/views/role/index.vue delete mode 100644 src/views/rolePermission/index.vue delete mode 100644 src/views/user/index.vue diff --git a/src/components/QuickCrud/index.vue b/src/components/QuickCrud/index.vue index 35ac071..7b93372 100644 --- a/src/components/QuickCrud/index.vue +++ b/src/components/QuickCrud/index.vue @@ -257,6 +257,12 @@ const handleDetail = (row: any) => { Object.keys(formModel.value).forEach((key) => { formModel.value[key] = row[key] }) + emits('onDetail', formModel.value, (data: any) => { + Object.keys(formModel.value).forEach((key) => { + formModel.value[key] = data[key] + }) + dialogFormVisible.value = true + }) dialogFormVisible.value = true } /** diff --git a/src/components/QuickForm/index.vue b/src/components/QuickForm/index.vue index cda9f5c..fb35bd6 100644 --- a/src/components/QuickForm/index.vue +++ b/src/components/QuickForm/index.vue @@ -199,7 +199,7 @@ defineExpose({ handleSubmit }) - format?: () => any + format?: (value: string) => any change?: (value: string) => void select?: (value: string) => void success?: () => void diff --git a/src/types/log.ts b/src/types/log.ts index ad471ce..0639c8e 100644 --- a/src/types/log.ts +++ b/src/types/log.ts @@ -1,5 +1,5 @@ export interface Log { - id: string | number + id: number logTime: string operateApi: string requestParams?: string @@ -11,6 +11,5 @@ export interface Log { export interface SearchLog { startTime?: string endTime?: string - operateUserId?: string logTime: string } diff --git a/src/views/assignUser/index.vue b/src/views/assignUser/index.vue deleted file mode 100644 index ad3d944..0000000 --- a/src/views/assignUser/index.vue +++ /dev/null @@ -1,199 +0,0 @@ - - diff --git a/src/views/dept/index.vue b/src/views/dept/index.vue deleted file mode 100644 index 65b93f1..0000000 --- a/src/views/dept/index.vue +++ /dev/null @@ -1,249 +0,0 @@ - - diff --git a/src/views/dictionary/index.vue b/src/views/dictionary/index.vue deleted file mode 100644 index 7b45410..0000000 --- a/src/views/dictionary/index.vue +++ /dev/null @@ -1,222 +0,0 @@ - - diff --git a/src/views/dictionaryType/index.vue b/src/views/dictionaryType/index.vue deleted file mode 100644 index cc4e248..0000000 --- a/src/views/dictionaryType/index.vue +++ /dev/null @@ -1,151 +0,0 @@ - - diff --git a/src/views/log/error.vue b/src/views/log/error.vue deleted file mode 100644 index a269961..0000000 --- a/src/views/log/error.vue +++ /dev/null @@ -1,145 +0,0 @@ - - diff --git a/src/views/log/operate.vue b/src/views/log/operate.vue deleted file mode 100644 index a269961..0000000 --- a/src/views/log/operate.vue +++ /dev/null @@ -1,145 +0,0 @@ - - diff --git a/src/views/menu/index.vue b/src/views/menu/index.vue deleted file mode 100644 index 02266c1..0000000 --- a/src/views/menu/index.vue +++ /dev/null @@ -1,345 +0,0 @@ - - diff --git a/src/views/role/index.vue b/src/views/role/index.vue deleted file mode 100644 index a269961..0000000 --- a/src/views/role/index.vue +++ /dev/null @@ -1,145 +0,0 @@ - - diff --git a/src/views/rolePermission/index.vue b/src/views/rolePermission/index.vue deleted file mode 100644 index e23fd7a..0000000 --- a/src/views/rolePermission/index.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - - diff --git a/src/views/system/log/error.vue b/src/views/system/log/error.vue index a269961..7a39b1c 100644 --- a/src/views/system/log/error.vue +++ b/src/views/system/log/error.vue @@ -3,84 +3,109 @@ import { reactive } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' import QuickCrud from '@/components/QuickCrud/index.vue' import { Column, Actionbar, Toolbar } from '@/types/table' -import { Role } from '@/types/role' +import { Log, SearchLog } from '@/types/log' import { FormItem } from '@/types/form' -import { getRoleList, addRole, updateRole, deleteRole } from '@/api/role' +import { Page } from '@/types/page' +import { getLogPageList, removeLog, batchRemove } from '@/api/log' -const dataList = reactive>([]) +const dataList = reactive>([]) /** * 表单 */ const dialogTitle = reactive({ - add: '新增角色', - edit: '编辑角色', - detail: '角色详情', + detail: '日志详情', }) -const formModel = reactive({ - id: '', - roleId: '', - roleName: '', +const formModel = reactive({ + id: 0, + logTime: '', + operateApi: '', + requestParams: '', + errorMessage: '', + exceptionMessage: '', + ip: '', + logType: 0, }) const formItems = reactive>([ { - label: '角色编号', + label: '编号', labelWidth: '80px', - vModel: 'roleId', - placeholder: '角色编号', - editReadonly: true, - prop: 'roleId', - rules: [ - { - required: true, - message: '角色编号不能为空', - trigger: 'blur', - }, - ], + vModel: 'id', }, { - label: '角色名称', + label: '日志时间', labelWidth: '80px', - vModel: 'roleName', - placeholder: '角色名称', - prop: 'roleName', - rules: [ - { - required: true, - message: '角色名称不能为空', - trigger: 'blur', - }, - ], + vModel: 'logTime', + }, + { + label: '操作接口', + labelWidth: '80px', + vModel: 'operateApi', + }, + { + label: 'IP', + labelWidth: '80px', + vModel: 'ip', + }, + { + label: '错误信息', + labelWidth: '80px', + vModel: 'errorMessage', + }, + { + label: '请求参数', + labelWidth: '80px', + vModel: 'requestParams', + type: 'textarea', + }, + { + label: '异常信息', + labelWidth: '80px', + vModel: 'exceptionMessage', + type: 'textarea', + }, +]) + +/** + * 搜索 + */ +const searchForm = reactive({ + startTime: '', + endTime: '', + logTime: '', +}) +const searchFormItems = reactive>([ + { + label: '日志时间', + vModel: 'logTime', + placeholders: ['开始时间', '结束时间'], + type: 'datetimerange', }, ]) -const handleFormSubmit = (form: Role, done: any) => { - console.log('handleFormSubmit', form) - if (form.id) { - updateRole(form).then(() => { - ElMessage({ - type: 'success', - message: '角色修改成功', - }) - done() - }) - } else { - addRole(form).then(() => { - ElMessage({ - type: 'success', - message: '角色创建成功', - }) - done() - }) - } -} /** * 工具栏 */ const tableToolbar = reactive({ - hiddenBatchDeleteButton: true, hiddenImportButton: true, hiddenExportButton: true, + hiddenAddButton: true, hiddenPrintButton: true, }) +const handleBatchDelete = (data: any, done: any) => { + const { ids } = data + ElMessageBox.confirm(`你真的删除选择的日志吗?`, '警告', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + }).then(() => { + batchRemove(ids).then(() => { + ElMessage({ + type: 'success', + message: '日志删除成功', + }) + done() + }) + }) +} /** * 表格 */ @@ -88,43 +113,90 @@ const tableColumns = reactive>([ { width: '50', type: 'selection', + align: 'center', }, { - label: '角色编号', - prop: 'roleId', + label: '日志时间', + prop: 'logTime', width: '200', }, { - label: '角色名称', - prop: 'roleName', + label: 'IP', + prop: 'ip', + width: '120', + }, + { + label: '错误信息', + prop: 'errorMessage', + width: '200', + }, + { + label: '操作接口', + prop: 'operateApi', + width: '300', + }, + { + label: '请求参数', + prop: 'requestParams', }, ]) -const handleDelete = (item: Role, done: any) => { - ElMessageBox.confirm(`你真的删除【${item.roleName}】的角色吗?`, '警告', { +const handleDelete = (item: Log, done: any) => { + ElMessageBox.confirm(`你真的删除【${item.id}】的日志吗?`, '警告', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning', }).then(() => { - deleteRole(item.id).then(() => { + removeLog(item.id.toString()).then(() => { ElMessage({ type: 'success', - message: '角色删除成功', + message: '日志删除成功', }) done() }) }) } +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, +}) +/** + * 分页 + */ +const page = reactive({ + current: 1, + size: 10, + sizes: [10, 20, 30, 40, 50], + total: 100, }) /** * 加载数据 */ -const load = () => { - getRoleList().then((res) => { - const { data: roleList } = res - dataList.length = 0 - dataList.push(...roleList) +const load = (params: any) => { + let obj = {} + const { logTime } = params + if (logTime) { + obj = { ...params, logType: 1, startTime: logTime[0], endTime: logTime[1] } + } else { + obj = { ...params, logType: 1 } + } + + getLogPageList(obj).then((res: any) => { + const { data: logList, page: pagination } = res + if (logList) { + dataList.length = 0 + dataList.push(...logList) + } + if (pagination) { + page.total = pagination.total + } }) } @@ -137,9 +209,17 @@ const load = () => { :table-columns="tableColumns" :table-actionbar="tableActionbar" :table-toolbar="tableToolbar" + :search-form-items="searchFormItems" + :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" + @on-export="handleExport" + @on-print="handlePrint" > 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