--日志板块

This commit is contained in:
lai
2023-11-10 18:25:56 +08:00
parent b8190bd640
commit ca4493aaa6
12 changed files with 330 additions and 151 deletions

View File

@@ -509,6 +509,38 @@ export default {
save:'Save',
noChange:'There is no change in the alarm forwarding interface settings.',
forwardSet:'Alarm forwarding interface setting',
},
},
logManage:{
alarm:{
type:'NE Type',
neId:'NE UID',
alarmId:'Alarm ID',
alarmSeq:'Sequece Number',
alarmCode:'Alarm Code',
alarmStatus:'Severity',
eventTime:'Event Time',
logTime:'Recording Time',
status:'Status',
},
mml:{
account:'Account',
ip:'IP',
type:'NE Type',
neId:'NE ID',
MML:'MML',
logTime:'Log Time'
},
forwarding:{
type:'NE Type',
neId:'NE UID',
alarmId:'Alarm ID',
alarmSeq:'Sequece Number',
alarmObj:'Object',
alarmTitle:'Alarm Title',
alarmInfo:'Alarm Content',
eventTime:'Generation time',
logTime:'Record Time'
}
},
monitor: {
@@ -742,6 +774,49 @@ export default {
codeTip:'Please enter the position code correctly',
nameTip:'Please enter the position name correctly',
delSure:'Confirm to delete the data item with post number [{postId}]?',
},
log:{
operate:{
operId:'Log Number',
moduleName:'Module Name',
workType:'Business Type',
operUser:'Operator',
requestMe:'Request Method',
host:'Request Host',
operStatus:'Operation Status',
operDate:'Operation Date',
useTime:'Consumption Time',
logInfo:'Operation Log Information',
delSure:'Are you sure to delete the data item with access number [{ids}]?',
delAllSure:'Confirm to clear all login log data items?',
delAllSuss:'Cleared successfully',
operModule:'Operation module',
operTime:'operation time',
delAll:'Clear',
fail:'Failed',
suss:'Normal',
RequestIp:'Request Address',
operMe:'Operation Method',
reqParam:'Request Parameter',
operInfo:'Operation Information',
},
login:{
operId:'Log ID',
account:'Login Account',
loginIp:'Login Address',
loginLoc:'Login Location',
os:'operating System',
browser:'Browser',
status:'Status',
info:'Login Information',
loginTime:'Login Time',
delSure:'Are you sure to delete the data item with access number [{ids}]?',
delAllSure:'Confirm to clear all login log data items?',
delAll:'Clear',
unlock:'Unlock',
unlockSuss:'{userName} unlocked successfully',
unlockSure:'Confirm to unlock user [{username}] data item?',
}
}
},
},

View File

@@ -511,6 +511,38 @@ export default {
forwardSet:'告警前转接口设置',
}
},
logManage:{
alarm:{
type:'网元类型',
neId:'告警网元标识',
alarmId:'告警唯一标识',
alarmSeq:'告警流水号',
alarmCode:'告警编号',
alarmStatus:'原始告警级别',
eventTime:'告警产生时间',
logTime:'记录时间',
status:'告警状态'
},
mml:{
account:'登录账号',
ip:'IP地址',
type:'网元类型',
neId:'网元唯一标识',
MML:'MML',
logTime:'log Time'
},
forwarding:{
type:'网元类型',
neId:'告警网元标识',
alarmId:'告警唯一标识',
alarmSeq:'告警流水号',
alarmObj:'告警前转对象',
alarmTitle:'告警标题',
alarmInfo:'告警内容',
eventTime:'告警产生时间',
logTime:'记录时间'
}
},
monitor: {
session: {
userName: "登录账号",
@@ -742,6 +774,49 @@ export default {
codeTip:'请正确输入岗位编码',
nameTip:'请正确输入岗位名称',
delSure:'确认删除岗位编号为 【{postId}】 的数据项?',
},
log:{
operate:{
operId:'日志编号',
moduleName:'模块名称',
workType:'业务类型',
operUser:'操作人员',
requestMe:'请求方式',
host:'请求主机',
operStatus:'操作状态',
operDate:'操作日期',
useTime:'消耗时间',
logInfo:'操作日志信息',
delSure:'确认删除访问编号为 【{ids}】 的数据项吗?',
delAllSure:'确认清空所有登录日志数据项?',
delAllSuss:'清空成功',
operModule:'操作模块',
operTime:'操作时间',
delAll:'清空',
fail:'失败',
suss:'正常',
RequestIp:'请求地址',
operMe:'操作方法',
reqParam:'请求参数',
operInfo:'操作信息',
},
login:{
operId:'日志编号',
account:'登录账号',
loginIp:'登录地址',
loginLoc:'登录地点',
os:'操作系统',
browser:'浏览器',
status:'登录状态',
info:'登录信息',
loginTime:'登录时间',
delSure:'确认删除访问编号为 【{ids}】 的数据项吗?',
delAllSure:'确认清空所有登录日志数据项?',
delAll:'清空',
unlock:'解锁',
unlockSuss:'{userName} 解锁成功',
unlockSure:'确认解锁用户 【{username}】 数据项?',
}
}
},
},

View File

@@ -428,7 +428,6 @@ onMounted(() => {
<a-form
name="modalStateFrom"
layout="horizontal"
:label-col="{ span: 4 }"
>
<a-form-item
:label="t('views.configManage.license.neType')"

View File

@@ -449,6 +449,10 @@ function fnModalCancel() {
* @param row 网元编号ID
*/
function fnRecordDelete(row: Record<string, any>) {
message.success({
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
duration: 2,
});
Modal.confirm({
title: t('common.tipTitle'),
content: t('views.configManage.neManage.delSure', { msg: row.neName }),
@@ -458,7 +462,7 @@ function fnRecordDelete(row: Record<string, any>) {
delNeInfo(row).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: t('common.msgSuccess', { msg: t('common.deleteText ') }),
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
key,
duration: 2,
});

View File

@@ -83,38 +83,38 @@ let tableColumns: ColumnsType = [
align: 'center',
},
{
title: '网元类型',
title: t('views.logManage.alarm.type'),
dataIndex: 'neType',
align: 'center',
},
{
title: '告警网元标识',
title: t('views.logManage.alarm.neId'),
dataIndex: 'neId',
align: 'center',
},
{
title: '告警唯一标识',
title: t('views.logManage.alarm.alarmId'),
dataIndex: 'alarmId',
align: 'center',
},
{
title: '告警流水号',
title: t('views.logManage.alarm.alarmSeq'),
dataIndex: 'alarmSeq',
align: 'center',
},
{
title: '告警编号',
title: t('views.logManage.alarm.alarmCode'),
dataIndex: 'alarmCode',
align: 'center',
},
{
title: '原始告警级别',
title: t('views.logManage.alarm.alarmStatus'),
dataIndex: 'alarmStatus',
key: 'alarmStatus',
align: 'center',
},
{
title: '告警产生时间',
title: t('views.logManage.alarm.eventTime'),
dataIndex: 'eventTime',
align: 'center',
customRender(opt) {
@@ -123,7 +123,7 @@ let tableColumns: ColumnsType = [
},
},
{
title: '记录时间',
title: t('views.logManage.alarm.logTime'),
dataIndex: 'logTime',
align: 'center',
customRender(opt) {
@@ -212,28 +212,26 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="网元类型" name="neType">
<a-form-item :label="t('views.logManage.alarm.type')" name="neType">
<a-auto-complete
v-model:value="queryParams.neType"
:options="useNeInfoStore().getNeSelectOtions"
allow-clear
placeholder="查询网元类型"
/>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="告警状态" name="status">
<a-form-item :label="t('views.logManage.alarm.status')" name="status">
<a-select
v-model:value="queryParams.status"
allow-clear
placeholder="请选择告警状态"
:options="dict.alarmStatus"
>
</a-select>
</a-form-item>
</a-col>
<a-col :lg="8" :md="12" :xs="24">
<a-form-item label="记录时间" name="queryRangePicker">
<a-form-item :label="t('views.logManage.alarm.logTime')" name="queryRangePicker">
<a-range-picker
v-model:value="queryRangePicker"
allow-clear
@@ -241,7 +239,6 @@ onMounted(() => {
show-time
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
:placeholder="['记录开始', '记录结束']"
style="width: 100%"
></a-range-picker>
</a-form-item>

View File

@@ -81,49 +81,49 @@ let tableColumns: ColumnsType = [
width: 3,
},
{
title: '网元类型',
title: t('views.logManage.forwarding.type'),
dataIndex: 'neType',
align: 'center',
width: 4,
},
{
title: '告警网元标识',
title: t('views.logManage.forwarding.neId'),
dataIndex: 'neId',
align: 'center',
width: 5,
},
{
title: '告警唯一标识',
title: t('views.logManage.forwarding.alarmId'),
dataIndex: 'alarmId',
align: 'center',
width: 5,
},
{
title: '告警流水号',
title: t('views.logManage.forwarding.alarmSeq'),
dataIndex: 'alarmSeq',
align: 'center',
width: 4,
},
{
title: '告警前转对象',
title: t('views.logManage.forwarding.alarmObj'),
dataIndex: 'toUser',
align: 'center',
width: 5,
},
{
title: '告警标题',
title: t('views.logManage.forwarding.alarmTitle'),
dataIndex: 'alarmTitle',
align: 'left',
width: 5,
},
{
title: '告警内容',
title: t('views.logManage.forwarding.alarmInfo'),
dataIndex: 'operResult',
align: 'left',
width: 6,
},
{
title: '告警产生时间',
title: t('views.logManage.forwarding.eventTime'),
dataIndex: 'eventTime',
align: 'center',
customRender(opt) {
@@ -133,7 +133,7 @@ let tableColumns: ColumnsType = [
width: 5,
},
{
title: '记录时间',
title: t('views.logManage.forwarding.logTime'),
dataIndex: 'logTime',
align: 'center',
customRender(opt) {
@@ -223,17 +223,16 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="网元类型" name="neType">
<a-form-item :label="t('views.logManage.forwarding.type')" name="neType">
<a-auto-complete
v-model:value="queryParams.neType"
:options="useNeInfoStore().getNeSelectOtions"
allow-clear
placeholder="查询网元类型"
/>
</a-form-item>
</a-col>
<a-col :lg="8" :md="12" :xs="24">
<a-form-item label="记录时间" name="queryRangePicker">
<a-form-item :label="t('views.logManage.forwarding.logTime')" name="queryRangePicker">
<a-range-picker
v-model:value="queryRangePicker"
allow-clear
@@ -241,7 +240,6 @@ onMounted(() => {
show-time
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
:placeholder="['记录开始', '记录结束']"
style="width: 100%"
></a-range-picker>
</a-form-item>

View File

@@ -70,38 +70,38 @@ let tableColumns: ColumnsType = [
width: 2,
},
{
title: '登录账号',
title: t('views.logManage.mml.account'),
dataIndex: 'user',
align: 'center',
width: 3,
},
{
title: 'IP地址',
title: t('views.logManage.mml.ip'),
dataIndex: 'ip',
align: 'center',
width: 3,
},
{
title: '网元类型',
title: t('views.logManage.mml.type'),
dataIndex: 'neType',
align: 'center',
width: 3,
},
{
title: '网元唯一标识',
title: t('views.logManage.mml.neId'),
dataIndex: 'neId',
align: 'center',
width: 3,
},
{
title: 'MML',
title: t('views.logManage.mml.MML'),
dataIndex: 'mml',
key: 'mml',
align: 'left',
width: 5,
},
{
title: '记录时间',
title: t('views.logManage.mml.logTime'),
dataIndex: 'logTime',
align: 'center',
customRender(opt) {
@@ -183,16 +183,15 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="登录账号" name="accountName">
<a-form-item :label="t('views.logManage.mml.account')" name="accountName">
<a-input
v-model:value="queryParams.accountName"
:allow-clear="true"
placeholder="查询登录账号"
></a-input>
</a-form-item>
</a-col>
<a-col :lg="8" :md="12" :xs="24">
<a-form-item label="记录时间" name="queryRangePicker">
<a-form-item :label="t('views.logManage.mml.logTime')" name="queryRangePicker">
<a-range-picker
v-model:value="queryRangePicker"
allow-clear
@@ -200,7 +199,6 @@ onMounted(() => {
show-time
value-format="YYYY-MM-DD HH:mm:ss"
format="YYYY-MM-DD HH:mm:ss"
:placeholder="['记录开始', '记录结束']"
style="width: 100%"
></a-range-picker>
</a-form-item>

View File

@@ -368,7 +368,7 @@ function fnRecordDelete(deptId: string | number) {
hide();
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: t('common.msgSuccess', { msg: t('common.deleteText ') }),
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
duration: 2,
});
fnGetList();

View File

@@ -98,48 +98,48 @@ let tableState: TabeStateType = reactive({
/**表格字段列 */
let tableColumns: ColumnsType = [
{
title: '日志编号',
title: t('views.system.log.login.operId'),
dataIndex: 'loginId',
align: 'center',
},
{
title: '登录账号',
title: t('views.system.log.login.account'),
dataIndex: 'userName',
align: 'center',
},
{
title: '登录地址',
title: t('views.system.log.login.loginIp'),
dataIndex: 'ipaddr',
align: 'center',
},
{
title: '登录地点',
title: t('views.system.log.login.loginLoc'),
dataIndex: 'loginLocation',
align: 'center',
},
{
title: '操作系统',
title: t('views.system.log.login.os'),
dataIndex: 'os',
align: 'center',
},
{
title: '浏览器',
title: t('views.system.log.login.browser'),
dataIndex: 'browser',
align: 'center',
},
{
title: '登录状态',
title: t('views.system.log.login.status'),
dataIndex: 'status',
key: 'status',
align: 'center',
},
{
title: '登录信息',
title: t('views.system.log.login.info'),
dataIndex: 'msg',
align: 'center',
},
{
title: '登录时间',
title: t('views.system.log.login.loginTime'),
dataIndex: 'loginTime',
align: 'center',
customRender(opt) {
@@ -167,7 +167,7 @@ let tablePagination = reactive({
showSizeChanger: true,
/**数据总数 */
total: 0,
showTotal: (total: number) => `总共 ${total}`,
showTotal: (total: number) => t('common.tablePaginationTotal', { total }),
onChange: (page: number, pageSize: number) => {
tablePagination.current = page;
tablePagination.pageSize = pageSize;
@@ -192,6 +192,7 @@ function fnTableSelectedRows(
_: (string | number)[],
rows: Record<string, string>[]
) {
//debugger
tableState.selectedRowKeys = rows.map(item => item.loginId);
// 针对单个登录账号解锁
if (rows.length === 1) {
@@ -206,14 +207,14 @@ function fnRecordDelete() {
const ids = tableState.selectedRowKeys.join(',');
Modal.confirm({
title: t('common.tipTitle'),
content: `确认删除访问编号为 【${ids}】 的数据项吗?`,
content: t('views.system.log.login.browser', { ids: ids }),
onOk() {
const key = 'delSysLogLogin';
message.loading({ content: t('common.loading'), key });
delSysLogLogin(ids).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `删除成功`,
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
key,
duration: 3,
});
@@ -234,14 +235,16 @@ function fnRecordDelete() {
function fnCleanList() {
Modal.confirm({
title: t('common.tipTitle'),
content: `确认清空所有登录日志数据项?`,
content: t('views.system.log.login.delAllSure'),
onOk() {
const key = 'cleanSysLogLogin';
message.loading({ content: t('common.loading'), key });
cleanSysLogLogin().then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `清空成功`,
content: t('common.msgSuccess', {
msg: t('views.system.log.login.delAll'),
}),
key,
duration: 3,
});
@@ -263,14 +266,16 @@ function fnUnlock() {
const username = tableState.selectedUserName;
Modal.confirm({
title: t('common.tipTitle'),
content: `确认解锁用户 【${username}】 数据项?`,
content: t('views.system.log.login.unlockSure', { username }),
onOk() {
const hide = message.loading(t('common.loading'), 0);
unlock(username).then(res => {
hide();
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `${username} 解锁成功`,
content: t('views.system.log.login.unlockSure', {
userName: username,
}),
duration: 3,
});
} else {
@@ -288,14 +293,16 @@ function fnUnlock() {
function fnExportList() {
Modal.confirm({
title: t('common.tipTitle'),
content: `确认根据搜索条件导出xlsx表格文件吗?`,
content: t('views.system.user.exportSure'),
onOk() {
const key = 'exportSysLogLogin';
message.loading({ content: t('common.loading'), key });
exportSysLogLogin(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `已完成导出`,
content: t('common.msgSuccess', {
msg: t('views.system.user.export'),
}),
key,
duration: 2,
});
@@ -316,7 +323,7 @@ function fnExportList() {
function fnGetList(pageNum?: number) {
if (tableState.loading) return;
tableState.loading = true;
if(pageNum){
if (pageNum) {
queryParams.pageNum = pageNum;
}
if (!queryRangePicker.value) {
@@ -360,44 +367,52 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="登录地址" name="ipaddr">
<a-form-item
:label="t('views.system.log.login.loginIp')"
name="ipaddr"
>
<a-input
v-model:value="queryParams.ipaddr"
allow-clear
:maxlength="128"
placeholder="请输入登录地址"
></a-input>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="登录账号" name="userName">
<a-form-item
:label="t('views.system.log.login.account')"
name="userName"
>
<a-input
v-model:value="queryParams.userName"
allow-clear
:maxlength="30"
placeholder="请输入登录账号"
></a-input>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="登录状态" name="status">
<a-form-item
:label="t('views.system.log.login.status')"
name="status"
>
<a-select
v-model:value="queryParams.status"
allow-clear
placeholder="请选择登录状态"
:options="dict.sysCommonStatus"
>
</a-select>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="登录时间" name="queryRangePicker">
<a-form-item
:label="t('views.system.log.login.loginTime')"
name="queryRangePicker"
>
<a-range-picker
v-model:value="queryRangePicker"
allow-clear
bordered
value-format="YYYY-MM-DD"
:placeholder="['登录开始', '登录结束']"
style="width: 100%"
></a-range-picker>
</a-form-item>
@@ -407,11 +422,11 @@ onMounted(() => {
<a-space :size="8">
<a-button type="primary" @click.prevent="fnGetList(1)">
<template #icon><SearchOutlined /></template>
搜索</a-button
{{ t('common.search') }}</a-button
>
<a-button type="default" @click.prevent="fnQueryReset">
<template #icon><ClearOutlined /></template>
重置</a-button
{{ t('common.reset') }}</a-button
>
</a-space>
</a-form-item>
@@ -431,7 +446,7 @@ onMounted(() => {
v-perms:has="['system:log:login:unlock']"
>
<template #icon><UnlockOutlined /></template>
解锁
{{ t('views.system.log.login.unlock') }}
</a-button>
<a-button
type="default"
@@ -441,7 +456,7 @@ onMounted(() => {
v-perms:has="['system:log:login:remove']"
>
<template #icon><DeleteOutlined /></template>
删除
{{ t('common.deleteText') }}
</a-button>
<a-button
type="dashed"
@@ -450,7 +465,7 @@ onMounted(() => {
v-perms:has="['system:log:login:remove']"
>
<template #icon><DeleteOutlined /></template>
清空
{{ t('views.system.log.operate.delAll') }}
</a-button>
<a-button
type="dashed"
@@ -458,7 +473,7 @@ onMounted(() => {
v-perms:has="['system:log:login:export']"
>
<template #icon><ExportOutlined /></template>
导出
{{ t('common.export') }}
</a-button>
</a-space>
</template>
@@ -467,31 +482,31 @@ onMounted(() => {
<template #extra>
<a-space :size="8" align="center">
<a-tooltip>
<template #title>搜索栏</template>
<template #title>{{ t('common.searchBarText') }}</template>
<a-switch
v-model:checked="tableState.seached"
checked-children=""
un-checked-children=""
:checked-children="t('common.switch.show')"
:un-checked-children="t('common.switch.hide')"
size="small"
/>
</a-tooltip>
<a-tooltip>
<template #title>表格斑马纹</template>
<template #title>{{ t('common.zebra') }}</template>
<a-switch
v-model:checked="tableState.striped"
checked-children=""
un-checked-children=""
:checked-children="t('common.switch.show')"
:un-checked-children="t('common.switch.hide')"
size="small"
/>
</a-tooltip>
<a-tooltip>
<template #title>刷新</template>
<template #title>{{ t('common.reloadText') }}</template>
<a-button type="text" @click.prevent="fnGetList()">
<template #icon><ReloadOutlined /></template>
</a-button>
</a-tooltip>
<a-tooltip placement="topRight">
<template #title>密度</template>
<template #title>{{ t('common.sizeText') }}</template>
<a-dropdown placement="bottomRight" trigger="click">
<a-button type="text">
<template #icon><ColumnHeightOutlined /></template>
@@ -501,9 +516,15 @@ onMounted(() => {
:selected-keys="[tableState.size as string]"
@click="fnTableSize"
>
<a-menu-item key="default">默认</a-menu-item>
<a-menu-item key="middle">中等</a-menu-item>
<a-menu-item key="small">紧凑</a-menu-item>
<a-menu-item key="default"
>{{ t('common.size.default') }}
</a-menu-item>
<a-menu-item key="middle"
>{{ t('common.size.middle') }}
</a-menu-item>
<a-menu-item key="small"
>{{ t('common.size.small') }}
</a-menu-item>
</a-menu>
</template>
</a-dropdown>

View File

@@ -100,44 +100,44 @@ let tableState: TabeStateType = reactive({
/**表格字段列 */
let tableColumns: ColumnsType = [
{
title: '日志编号',
title: t('views.system.log.operate.operId'),
dataIndex: 'operId',
align: 'center',
},
{
title: '模块名称',
title: t('views.system.log.operate.moduleName'),
dataIndex: 'title',
align: 'center',
},
{
title: '业务类型',
title: t('views.system.log.operate.workType'),
dataIndex: 'businessType',
key: 'businessType',
align: 'center',
},
{
title: '操作人员',
title: t('views.system.log.operate.operUser'),
dataIndex: 'operName',
align: 'center',
},
{
title: '请求方式',
title: t('views.system.log.operate.requestMe'),
dataIndex: 'requestMethod',
align: 'center',
},
{
title: '请求主机',
title: t('views.system.log.operate.host'),
dataIndex: 'operIp',
align: 'center',
},
{
title: '操作状态',
title: t('views.system.log.operate.operStatus'),
dataIndex: 'status',
key: 'status',
align: 'center',
},
{
title: '操作日期',
title: t('views.system.log.operate.operDate'),
dataIndex: 'operTime',
align: 'center',
customRender(opt) {
@@ -146,7 +146,7 @@ let tableColumns: ColumnsType = [
},
},
{
title: '消耗时间',
title: t('views.system.log.operate.operId'),
dataIndex: 'costTime',
key: 'costTime',
align: 'center',
@@ -155,7 +155,7 @@ let tableColumns: ColumnsType = [
},
},
{
title: '操作',
title: t('common.operate'),
key: 'operId',
align: 'center',
},
@@ -179,7 +179,7 @@ let tablePagination = reactive({
showSizeChanger: true,
/**数据总数 */
total: 0,
showTotal: (total: number) => `总共 ${total}`,
showTotal: (total: number) => t('common.tablePaginationTotal', { total }),
onChange: (page: number, pageSize: number) => {
tablePagination.current = page;
tablePagination.pageSize = pageSize;
@@ -243,7 +243,7 @@ let modalState: ModalStateType = reactive({
*/
function fnModalVisibleByVive(row: Record<string, string>) {
modalState.from = Object.assign(modalState.from, row);
modalState.title = '操作日志信息';
modalState.title = t('views.system.log.operate.logInfo');
modalState.visibleByView = true;
}
@@ -259,14 +259,14 @@ function fnRecordDelete() {
const ids = tableState.selectedRowKeys.join(',');
Modal.confirm({
title: t('common.tipTitle'),
content: `确认删除访问编号为 【${ids}】 的数据项吗?`,
content: t('views.system.log.operate.delSure', { ids: ids }),
onOk() {
const key = 'delSysLogOperate';
message.loading({ content: t('common.loading'), key });
delSysLogOperate(ids).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: '删除成功',
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
key,
duration: 2,
});
@@ -287,14 +287,14 @@ function fnRecordDelete() {
function fnCleanList() {
Modal.confirm({
title: t('common.tipTitle'),
content: `确认清空所有登录日志数据项?`,
content: t('views.system.log.operate.delAllSure'),
onOk() {
const key = 'cleanSysLogOperate';
message.loading({ content: t('common.loading'), key });
cleanSysLogOperate().then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: '清空成功',
content: t('views.system.log.operate.delAllSuss'),
key,
duration: 2,
});
@@ -315,14 +315,16 @@ function fnCleanList() {
function fnExportList() {
Modal.confirm({
title: t('common.tipTitle'),
content: `确认根据搜索条件导出xlsx表格文件吗?`,
content: t('views.system.user.exportSure'),
onOk() {
const key = 'exportSysLogOperate';
message.loading({ content: t('common.loading'), key });
exportSysLogOperate(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `已完成导出`,
content: t('common.msgSuccess', {
msg: t('views.system.user.export'),
}),
key,
duration: 2,
});
@@ -343,7 +345,7 @@ function fnExportList() {
function fnGetList(pageNum?: number) {
if (tableState.loading) return;
tableState.loading = true;
if(pageNum){
if (pageNum) {
queryParams.pageNum = pageNum;
}
if (!queryRangePicker.value) {
@@ -393,53 +395,60 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="操作模块" name="title">
<a-input
v-model:value="queryParams.title"
allow-clear
placeholder="请输入操作模块"
></a-input>
<a-form-item
:label="t('views.system.log.operate.operModule')"
name="title"
>
<a-input v-model:value="queryParams.title" allow-clear></a-input>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="操作人员" name="operName">
<a-form-item
:label="t('views.system.log.operate.operUser')"
name="operName"
>
<a-input
v-model:value="queryParams.operName"
allow-clear
placeholder="请输入操作人员"
></a-input>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="业务类型" name="businessType">
<a-form-item
:label="t('views.system.log.operate.workType')"
name="businessType"
>
<a-select
v-model:value="queryParams.businessType"
allow-clear
placeholder="请选择业务类型"
:options="dict.sysBusinessType"
>
</a-select>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="操作状态" name="status">
<a-form-item
:label="t('views.system.log.operate.operStatus')"
name="status"
>
<a-select
v-model:value="queryParams.status"
allow-clear
placeholder="请选择操作状态"
:options="dict.sysCommonStatus"
>
</a-select>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item label="操作时间" name="queryRangePicker">
<a-form-item
:label="t('views.system.log.operate.operTime')"
name="queryRangePicker"
>
<a-range-picker
v-model:value="queryRangePicker"
allow-clear
bordered
value-format="YYYY-MM-DD"
:placeholder="['操作开始', '操作结束']"
style="width: 100%"
></a-range-picker>
</a-form-item>
@@ -449,11 +458,11 @@ onMounted(() => {
<a-space :size="8">
<a-button type="primary" @click.prevent="fnGetList(1)">
<template #icon><SearchOutlined /></template>
搜索</a-button
{{ t('common.search') }}</a-button
>
<a-button type="default" @click.prevent="fnQueryReset">
<template #icon><ClearOutlined /></template>
重置</a-button
{{ t('common.reset') }}</a-button
>
</a-space>
</a-form-item>
@@ -474,7 +483,7 @@ onMounted(() => {
v-perms:has="['system:log:operate:remove']"
>
<template #icon><DeleteOutlined /></template>
删除
{{ t('common.deleteText') }}
</a-button>
<a-button
type="dashed"
@@ -483,7 +492,7 @@ onMounted(() => {
v-perms:has="['system:log:operate:remove']"
>
<template #icon><DeleteOutlined /></template>
清空
{{ t('views.system.log.operate.delAll') }}
</a-button>
<a-button
type="dashed"
@@ -491,7 +500,7 @@ onMounted(() => {
v-perms:has="['system:log:operate:export']"
>
<template #icon><ExportOutlined /></template>
导出
{{ t('common.export') }}
</a-button>
</a-space>
</template>
@@ -500,31 +509,31 @@ onMounted(() => {
<template #extra>
<a-space :size="8" align="center">
<a-tooltip>
<template #title>搜索栏</template>
<template #title>{{ t('common.searchBarText') }}</template>
<a-switch
v-model:checked="tableState.seached"
checked-children=""
un-checked-children=""
:checked-children="t('common.switch.show')"
:un-checked-children="t('common.switch.hide')"
size="small"
/>
</a-tooltip>
<a-tooltip>
<template #title>表格斑马纹</template>
<template #title>{{ t('common.zebra') }}</template>
<a-switch
v-model:checked="tableState.striped"
checked-children=""
un-checked-children=""
:checked-children="t('common.switch.show')"
:un-checked-children="t('common.switch.hide')"
size="small"
/>
</a-tooltip>
<a-tooltip>
<template #title>刷新</template>
<template #title>{{ t('common.reloadText') }}</template>
<a-button type="text" @click.prevent="fnGetList()">
<template #icon><ReloadOutlined /></template>
</a-button>
</a-tooltip>
<a-tooltip placement="topRight">
<template #title>密度</template>
<template #title>{{ t('common.sizeText') }}</template>
<a-dropdown placement="bottomRight" trigger="click">
<a-button type="text">
<template #icon><ColumnHeightOutlined /></template>
@@ -534,9 +543,15 @@ onMounted(() => {
:selected-keys="[tableState.size as string]"
@click="fnTableSize"
>
<a-menu-item key="default">默认</a-menu-item>
<a-menu-item key="middle">中等</a-menu-item>
<a-menu-item key="small">紧凑</a-menu-item>
<a-menu-item key="default"
>{{ t('common.size.default') }}
</a-menu-item>
<a-menu-item key="middle"
>{{ t('common.size.middle') }}
</a-menu-item>
<a-menu-item key="small"
>{{ t('common.size.small') }}
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
@@ -574,14 +589,13 @@ onMounted(() => {
<template v-if="column.key === 'operId'">
<a-space :size="8" align="center">
<a-tooltip>
<template #title>查看详情</template>
<template #title>{{ t('common.viewText') }}</template>
<a-button
type="link"
@click.prevent="fnModalVisibleByVive(record)"
v-perms:has="['system:log:operate:query']"
>
<template #icon><ProfileOutlined /></template>
详情
</a-button>
</a-tooltip>
</a-space>
@@ -600,21 +614,21 @@ onMounted(() => {
<a-form layout="horizontal">
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="日志编号" name="operId">
<a-form-item :label="t('views.system.log.operate.operId')" name="operId">
{{ modalState.from.operId }}
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="执行状态" name="status">
<a-form-item :label="t('views.system.log.operate.operStatus')" name="status">
<a-tag :color="+modalState.from.status ? 'success' : 'error'">
{{ ['失败', '正常'][+modalState.from.status] }}
{{ [t('views.system.log.operate.fail'),t('views.system.log.operate.suss')][+modalState.from.status] }}
</a-tag>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="业务类型" name="businessType">
<a-form-item :label="t('views.system.log.operate.workType')" name="businessType">
{{ modalState.from.title }} /
<DictTag
:options="dict.sysBusinessType"
@@ -623,7 +637,7 @@ onMounted(() => {
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="操作人员" name="operName">
<a-form-item :label="t('views.system.log.operate.operUser')" name="operName">
{{ modalState.from.operName }} / {{ modalState.from.operIp }} /
{{ modalState.from.operLocation }}
</a-form-item>
@@ -631,13 +645,13 @@ onMounted(() => {
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="请求地址" name="operUrl">
<a-form-item :label="t('views.system.log.operate.RequestIp')" name="operUrl">
{{ modalState.from.requestMethod }} -
{{ modalState.from.operUrl }}
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="操作时间" name="operTime">
<a-form-item :label="t('views.system.log.operate.operTime')" name="operTime">
<span v-if="+modalState.from.operTime > 0">
{{ parseDateToStr(+modalState.from.operTime) }}
</span>
@@ -646,35 +660,33 @@ onMounted(() => {
</a-row>
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="请求耗时" name="costTime">
<a-form-item :label="t('views.system.log.operate.useTime')" name="costTime">
{{ modalState.from.costTime }} ms
</a-form-item>
</a-col>
<a-col :lg="12" :md="12" :xs="24">
<a-form-item label="操作方法" name="method">
<a-form-item :label="t('views.system.log.operate.operMe')" name="method">
{{ modalState.from.method }}
</a-form-item>
</a-col>
</a-row>
<a-form-item label="请求参数" name="operParam">
<a-form-item :label="t('views.system.log.operate.reqParam')" name="operParam">
<a-textarea
v-model:value="modalState.from.operParam"
:auto-size="{ minRows: 2, maxRows: 6 }"
placeholder="请求参数"
:disabled="true"
/>
</a-form-item>
<a-form-item label="操作信息" name="operMsg">
<a-form-item :label="t('views.system.log.operate.operInfo')" name="operMsg">
<a-textarea
v-model:value="modalState.from.operMsg"
:auto-size="{ minRows: 2, maxRows: 6 }"
placeholder="操作信息"
:disabled="true"
/>
</a-form-item>
</a-form>
<template #footer>
<a-button key="cancel" @click="fnModalCancel">关闭</a-button>
<a-button key="cancel" @click="fnModalCancel">{{t('common.cancel')}}</a-button>
</template>
</a-modal>
</PageContainer>

View File

@@ -346,7 +346,7 @@ function fnRecordDelete(postId: string = '0') {
delPost(postId).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: t('common.msgSuccess', { msg: t('common.deleteText ') }),
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
key,
duration: 2,
});

View File

@@ -654,7 +654,7 @@ function fnRecordDelete(roleId: string = '0') {
delRole(roleId).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: t('common.msgSuccess', { msg: t('common.deleteText ') }),
content: t('common.msgSuccess', { msg: t('common.deleteText') }),
key,
duration: 2,
});