committed by
GitHub
5 changed files with 148 additions and 14 deletions
@ -0,0 +1,125 @@ |
|||||
|
<template> |
||||
|
<BasicModal |
||||
|
v-bind="$attrs" |
||||
|
@register="registerModal" |
||||
|
:width="800" |
||||
|
:height="500" |
||||
|
:title="L('SecurityLog')" |
||||
|
:mask-closable="false" |
||||
|
:can-fullscreen="false" |
||||
|
:show-ok-btn="false" |
||||
|
> |
||||
|
<Card style="height: 100%"> |
||||
|
<div :style="getContentStyle" ref="contentWrapRef"> |
||||
|
<ScrollContainer ref="contentScrollRef"> |
||||
|
<template v-for="securityLog in securityLogs" :key="securityLog.id"> |
||||
|
<CardGrid> |
||||
|
<Form layout="horizontal" :colon="false" :model="securityLog" :labelCol="{ span: 4 }" :wrapperCol="{ span: 16 }"> |
||||
|
<FormItem labelAlign="left" :label="L('ApplicationName')"> |
||||
|
<span>{{ securityLog.applicationName }}</span> |
||||
|
</FormItem> |
||||
|
<FormItem labelAlign="left" :label="L('Identity')"> |
||||
|
<span>{{ securityLog.identity }}</span> |
||||
|
</FormItem> |
||||
|
<FormItem labelAlign="left" :label="L('Actions')"> |
||||
|
<span>{{ securityLog.action }}</span> |
||||
|
</FormItem> |
||||
|
<FormItem labelAlign="left" :label="L('ClientId')"> |
||||
|
<span>{{ securityLog.clientId }}</span> |
||||
|
</FormItem> |
||||
|
<FormItem labelAlign="left" :label="L('ClientIpAddress')"> |
||||
|
<span>{{ securityLog.clientIpAddress }}</span> |
||||
|
</FormItem> |
||||
|
<FormItem labelAlign="left" :label="L('BrowserInfo')"> |
||||
|
<span>{{ securityLog.browserInfo }}</span> |
||||
|
</FormItem> |
||||
|
<FormItem labelAlign="left" :label="L('CreationTime')"> |
||||
|
<span>{{ securityLog.creationTime }}</span> |
||||
|
</FormItem> |
||||
|
</Form> |
||||
|
</CardGrid> |
||||
|
</template> |
||||
|
</ScrollContainer> |
||||
|
</div> |
||||
|
</Card> |
||||
|
<template #footer> |
||||
|
<APagination |
||||
|
ref="paginationRef" |
||||
|
:pageSizeOptions="['10', '25', '50', '100']" |
||||
|
:total="securityLogTotal" |
||||
|
@change="fetchSecurityLogs" |
||||
|
@showSizeChange="fetchSecurityLogs" |
||||
|
/> |
||||
|
</template> |
||||
|
</BasicModal> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts" setup> |
||||
|
import type { CSSProperties } from 'vue'; |
||||
|
import { computed, ref } from 'vue'; |
||||
|
import { Card, Form, Pagination } from 'ant-design-vue'; |
||||
|
import { BasicModal, useModalInner } from '/@/components/Modal'; |
||||
|
import { ScrollContainer } from '/@/components/Container'; |
||||
|
import { useLocalization } from '/@/hooks/abp/useLocalization'; |
||||
|
import { useContentHeight } from '/@/hooks/web/useContentHeight'; |
||||
|
import { useUserStoreWithOut } from '/@/store/modules/user'; |
||||
|
import { getList } from '/@/api/identity/securityLog'; |
||||
|
import { SecurityLog } from '/@/api/identity/model/securityLogModel'; |
||||
|
import { formatPagedRequest } from '/@/utils/http/abp/helper'; |
||||
|
|
||||
|
const CardGrid = Card.Grid; |
||||
|
const FormItem = Form.Item; |
||||
|
const APagination = Pagination; |
||||
|
|
||||
|
const props = defineProps({ |
||||
|
autoContentHeight: { |
||||
|
type: Boolean, |
||||
|
default: true, |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
const contentWrapRef = ref<any>(); |
||||
|
const contentScrollRef = ref<any>(); |
||||
|
const paginationRef = ref<any>(); |
||||
|
const getContentHeight = computed(() => props.autoContentHeight); |
||||
|
const { contentHeight } = useContentHeight( |
||||
|
getContentHeight, contentWrapRef, [paginationRef], [] |
||||
|
); |
||||
|
const getContentStyle = computed((): CSSProperties => { |
||||
|
return { |
||||
|
width: '100%', |
||||
|
height: `${contentHeight.value}px`, |
||||
|
}; |
||||
|
}); |
||||
|
const securityLogs = ref<SecurityLog[]>([]); |
||||
|
const securityLogTotal = ref(0); |
||||
|
const { L } = useLocalization(['AbpAuditLogging', 'AbpIdentity']); |
||||
|
const userStore = useUserStoreWithOut(); |
||||
|
const [registerModal] = useModalInner(() => { |
||||
|
console.log('fetchSecurityLogs'); |
||||
|
fetchSecurityLogs(); |
||||
|
}); |
||||
|
|
||||
|
function fetchSecurityLogs(page: number = 1, pageSize: number = 10) { |
||||
|
const request = { |
||||
|
skipCount: page, |
||||
|
maxResultCount: pageSize, |
||||
|
}; |
||||
|
formatPagedRequest(request); |
||||
|
getList({ |
||||
|
skipCount: request.skipCount, |
||||
|
maxResultCount: request.maxResultCount, |
||||
|
sorting: 'creationTime DESC', |
||||
|
userId: userStore.getUserInfo.userId, |
||||
|
}).then((res) => { |
||||
|
securityLogs.value = res.items; |
||||
|
securityLogTotal.value = res.totalCount; |
||||
|
}); |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less" scoped> |
||||
|
.ant-card-grid { |
||||
|
width: 100%; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue