<template>
|
<!-- <el-collapse v-model="activeName" accordion>
|
<el-collapse-item
|
v-for="item in resourceLogs"
|
:key="item.id"
|
name="1"
|
style="overflow: auto; max-height: 600px"
|
>
|
<template #title>
|
<el-button type="primary" @click="resend(item.id)" link>重新发送</el-button>
|
</template>
|
<ProForm :model="item" is-read style="padding: 0 20px">
|
<ProFormItemV2 label="method:">
|
{{ EnumResourceMethodText[item.method] }}
|
</ProFormItemV2>
|
<ProFormItemV2 label="domain:">{{ item.domain }} </ProFormItemV2>
|
<ProFormItemV2 label="path:"> {{ item.path }}</ProFormItemV2>
|
<ProFormItemV2 label="requestHeaders:" label-position="top">
|
<json-viewer
|
:copyable="true"
|
:boxed="true"
|
:value="JSON.parse(item.requestHeaders)"
|
></json-viewer>
|
</ProFormItemV2>
|
<ProFormItemV2 label="request:" label-position="top">
|
<json-viewer
|
:copyable="true"
|
:boxed="true"
|
:value="JSON.parse(item.request)"
|
></json-viewer>
|
</ProFormItemV2>
|
<ProFormItemV2 label="responseHeaders:" label-position="top">
|
<json-viewer
|
:copyable="true"
|
:boxed="true"
|
:value="JSON.parse(item.responseHeaders)"
|
></json-viewer>
|
</ProFormItemV2>
|
<ProFormItemV2 label="response:" label-position="top">
|
<json-viewer
|
:copyable="true"
|
:boxed="true"
|
:value="JSON.parse(item.response)"
|
></json-viewer>
|
</ProFormItemV2>
|
<ProFormItemV2 label="isSuccess:"> {{ item.isSuccess ? '是' : '否' }}</ProFormItemV2>
|
<ProFormItemV2 label="clientIpAddress:"> {{ item.clientIpAddress }}</ProFormItemV2>
|
<ProFormItemV2 label="refererUrl:"> {{ item.refererUrl }}</ProFormItemV2>
|
<ProFormItemV2 label="consoleLogs:"> {{ item.consoleLogs }}</ProFormItemV2>
|
<ProFormItemV2 label="elapsedMilliseconds:"> {{ item.elapsedMilliseconds }}</ProFormItemV2>
|
<ProFormItemV2 label="createdUser:">
|
<json-viewer
|
:copyable="true"
|
:boxed="true"
|
:value="JSON.parse(JSON.stringify(item.createdUser))"
|
></json-viewer>
|
</ProFormItemV2>
|
<ProFormItemV2 label="createdTime:">
|
{{ format(item.createdTime, 'YYYY-MM-DD HH:mm:ss') }}</ProFormItemV2
|
>
|
</ProForm>
|
</el-collapse-item>
|
</el-collapse> -->
|
<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: JSON.parse(row.requestHeaders) })"
|
>查看</el-button
|
>
|
</template>
|
<template #request="{ row }">
|
<el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.request) })"
|
>查看</el-button
|
>
|
</template>
|
<template #responseHeaders="{ row }">
|
<el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.responseHeaders) })"
|
>查看</el-button
|
>
|
</template>
|
<template #response="{ row }">
|
<el-button type="primary" link @click="handleAdd({ json: JSON.parse(row.response) })"
|
>查看</el-button
|
>
|
</template>
|
<template #createdUser="{ row }">
|
<el-button
|
type="primary"
|
link
|
@click="handleAdd({ json: 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';
|
|
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: '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('操作成功');
|
}
|
} catch (error) {}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@use '@/style/common.scss' as *;
|
</style>
|