refactor: 重构操作日志drawer

This commit is contained in:
dap
2025-04-04 21:06:16 +08:00
parent 542407dcd6
commit aeed0fd48e
4 changed files with 76 additions and 122 deletions

View File

@@ -1,17 +1,10 @@
import type { FormSchemaGetter } from '#/adapter/form';
import type { VxeGridProps } from '#/adapter/vxe-table';
import type { DescItem } from '#/components/description';
import { DictEnum } from '@vben/constants';
import { Tag } from 'ant-design-vue';
import { getDictOptions } from '#/utils/dict';
import {
renderDict,
renderHttpMethodTag,
renderJsonPreview,
} from '#/utils/render';
import { renderDict } from '#/utils/render';
export const querySchema: FormSchemaGetter = () => [
{
@@ -96,104 +89,3 @@ export const columns: VxeGridProps['columns'] = [
width: 120,
},
];
export const descSchema: DescItem[] = [
{
field: 'operId',
label: '日志编号',
},
{
field: 'status',
label: '操作结果',
render(value) {
return renderDict(value, DictEnum.SYS_COMMON_STATUS);
},
},
{
field: 'title',
label: '操作模块',
labelMinWidth: 80,
render(value, { businessType }) {
const operType = renderDict(businessType, DictEnum.SYS_OPER_TYPE);
return (
<div class="flex items-center">
<Tag>{value}</Tag>
{operType}
</div>
);
},
},
{
field: 'operIp',
label: '操作信息',
render(_, data) {
return `账号: ${data.operName} / ${data.deptName} / ${data.operIp} / ${data.operLocation}`;
},
},
{
field: 'operUrl',
label: '请求信息',
render(_, data) {
const { operUrl, requestMethod } = data;
const methodTag = renderHttpMethodTag(requestMethod);
return (
<span>
{methodTag} {operUrl}
</span>
);
},
},
{
field: 'errorMsg',
label: '异常信息',
render(value) {
return <span class="font-bold text-red-600">{value}</span>;
},
show: (data) => {
return data && data.errorMsg !== '';
},
},
{
field: 'method',
label: '方法',
},
/**
* 默认word-break: break-word;会导致json预览样式异常
*/
{
field: 'operParam',
label: '请求参数',
render(value) {
return (
<div class="max-h-[300px] w-full overflow-y-auto">
{renderJsonPreview(value)}
</div>
);
},
},
{
field: 'jsonResult',
label: '响应参数',
render(value) {
return (
<div class="max-h-[300px] w-full overflow-y-auto">
{renderJsonPreview(value)}
</div>
);
},
show(data) {
return data && data.jsonResult;
},
},
{
field: 'costTime',
label: '耗时',
render(value) {
return `${value} ms`;
},
},
{
field: 'operTime',
label: '操作时间',
},
];