From 0ae2f2f277c9a20648e2b53a804b443e412b523a Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期五, 10 十月 2025 13:32:51 +0800 Subject: [PATCH] Merge branch 'master' into dev-1.1.2 --- src/views/TraceIdLogManage/components/ResourceLogsView.vue | 201 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 132 insertions(+), 69 deletions(-) diff --git a/src/views/TraceIdLogManage/components/ResourceLogsView.vue b/src/views/TraceIdLogManage/components/ResourceLogsView.vue index e5f4f6d..530c536 100644 --- a/src/views/TraceIdLogManage/components/ResourceLogsView.vue +++ b/src/views/TraceIdLogManage/components/ResourceLogsView.vue @@ -1,76 +1,71 @@ <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" + <AppContainer> + <ProTableV2 + :columns="columns" + :operationBtns="operationBtns" + :show-pagination="false" + :table-data="resourceLogs" + :column-render-map="columnsRenderProps" > - <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 + <template #requestHeaders="{ row }"> + <el-button + type="primary" + link + @click="handleAdd({ json: { requestHeaders: JSON.parse(row.requestHeaders) } })" + >鏌ョ湅</el-button > - </ProForm> - </el-collapse-item> - </el-collapse> + </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: row.createdUser } })" + >鏌ョ湅</el-button + > + </template> + </ProTableV2> + <JsonViewerDialog v-bind="dialogProps" /> + </AppContainer> </template> <script setup lang="ts"> -import { ProForm, ProFormItemV2 } from '@bole-core/components'; +import { + AppContainer, + ProTableV2, + defineColumns, + defineOperationBtns, + ProTableV2Props, + useFormDialog, +} from '@bole-core/components'; import { EnumResourceMethodText } from '@/constants'; -import JsonViewer from 'vue-json-viewer'; import * as logRecordsServices from '@/services/api/logRecords'; - -import { format } from '@/utils'; import { Message } from '@bole-core/core'; +import JsonViewerDialog from './JsonViewerDialog.vue'; +import { request } from 'http'; defineOptions({ name: 'ResourceLogsView', @@ -80,24 +75,92 @@ resourceLogs: API.GetResourceLogsQueryResultItem[]; }; -const activeName = ref('1'); - const props = withDefaults(defineProps<Props>(), { resourceLogs: () => [] as API.GetResourceLogsQueryResultItem[], }); -const emit = defineEmits<{ - (e: 'resend'): void; -}>(); +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: 170, + })) +); + +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: JSON.parse(row.requestHeaders), + request: JSON.parse(row.request), + responseHeaders: JSON.parse(row.responseHeaders), + response: JSON.parse(row.response), + createdUser: row.createdUser, + }, + }); +} </script> <style lang="scss" scoped> -- Gitblit v1.9.1