<template>
|
<AppContainer>
|
<ProTableV2
|
:columns="columns"
|
:operationBtns="operationBtns"
|
:show-pagination="false"
|
:table-data="resourceLogs"
|
:column-render-map="columnsRenderProps"
|
>
|
<template #requestHeaders="{ row }">
|
<el-button
|
type="primary"
|
link
|
@click="handleAdd({ json: { requestHeaders: JSON.parse(row.requestHeaders) } })"
|
>查看</el-button
|
>
|
</template>
|
<template #request="{ row }">
|
<el-button
|
type="primary"
|
link
|
@click="handleAdd({ json: { request: JSON.parse(row.request) } })"
|
>查看</el-button
|
>
|
</template>
|
<template #responseHeaders="{ row }">
|
<el-button
|
type="primary"
|
link
|
@click="handleAdd({ json: { responseHeaders: JSON.parse(row.responseHeaders) } })"
|
>查看</el-button
|
>
|
</template>
|
<template #response="{ row }">
|
<el-button
|
type="primary"
|
link
|
@click="handleAdd({ json: { response: JSON.parse(row.response) } })"
|
>查看</el-button
|
>
|
</template>
|
<template #createdUser="{ row }">
|
<el-button
|
type="primary"
|
link
|
@click="handleAdd({ json: { createdUser: JSON.parse(JSON.stringify(row.createdUser)) } })"
|
>查看</el-button
|
>
|
</template>
|
</ProTableV2>
|
<JsonViewerDialog v-bind="dialogProps" />
|
</AppContainer>
|
</template>
|
|
<script setup lang="ts">
|
import {
|
AppContainer,
|
ProTableV2,
|
defineColumns,
|
defineOperationBtns,
|
ProTableV2Props,
|
useFormDialog,
|
} from '@bole-core/components';
|
import { EnumResourceMethodText } from '@/constants';
|
import * as logRecordsServices from '@/services/api/logRecords';
|
import { Message } from '@bole-core/core';
|
import JsonViewerDialog from './JsonViewerDialog.vue';
|
import { request } from 'http';
|
|
defineOptions({
|
name: 'ResourceLogsView',
|
});
|
|
type Props = {
|
resourceLogs: API.GetResourceLogsQueryResultItem[];
|
};
|
|
const props = withDefaults(defineProps<Props>(), {
|
resourceLogs: () => [] as API.GetResourceLogsQueryResultItem[],
|
});
|
|
const columns = defineColumns(
|
[
|
'method',
|
'domain',
|
'path',
|
'requestHeaders',
|
'request',
|
'responseHeaders',
|
'response',
|
'isSuccess',
|
'clientIpAddress',
|
'refererUrl',
|
'consoleLogs',
|
'elapsedMilliseconds',
|
'createdUser',
|
'createdTime',
|
].map((x, index) => ({
|
id: index + '',
|
enCode: x,
|
name: x,
|
width: 160,
|
}))
|
);
|
|
const operationBtns = defineOperationBtns([
|
{
|
data: {
|
enCode: 'detailBtn',
|
name: '查看',
|
},
|
emits: {
|
onClick: (role) => openDialog(role),
|
},
|
},
|
{
|
data: {
|
enCode: 'reSendBtn',
|
name: '重新发送',
|
},
|
emits: {
|
onClick: (row) => resend(row.id),
|
},
|
},
|
]);
|
|
const columnsRenderProps: ProTableV2Props['columnRenderMap'] = {
|
method: { type: 'enum', valueEnum: EnumResourceMethodText },
|
isSuccess: {
|
formatter: (row: API.GetResourceLogsQueryResultItem) => {
|
return row.isSuccess ? '是' : '否';
|
},
|
},
|
createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
|
};
|
|
const { dialogProps, handleAdd } = useFormDialog({
|
defaultFormParams: {
|
json: null,
|
},
|
});
|
|
async function resend(id: string) {
|
try {
|
let res = await logRecordsServices.resendResource({ id: id });
|
if (res) {
|
Message.successMessage('操作成功');
|
handleAdd({ json: JSON.parse(res) });
|
}
|
} catch (error) {}
|
}
|
|
function openDialog(row: API.GetResourceLogsQueryResultItem) {
|
handleAdd({
|
json: {
|
requestHeaders: row.requestHeaders,
|
request: row.request,
|
responseHeaders: row.responseHeaders,
|
response: row.response,
|
createdUser: JSON.stringify(row.createdUser),
|
},
|
});
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@use '@/style/common.scss' as *;
|
</style>
|