feat(view): api access log
							parent
							
								
									cc43321361
								
							
						
					
					
						commit
						6d49095404
					
				|  | @ -0,0 +1,110 @@ | ||||||
|  | import { BasicColumn, FormSchema, useRender } from '@/components/Table' | ||||||
|  | import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' | ||||||
|  | 
 | ||||||
|  | export const columns: BasicColumn[] = [ | ||||||
|  |   { | ||||||
|  |     title: '日志编号', | ||||||
|  |     dataIndex: 'id', | ||||||
|  |     width: 100 | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '用户编号', | ||||||
|  |     dataIndex: 'userId', | ||||||
|  |     width: 100 | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '用户类型', | ||||||
|  |     dataIndex: 'userType', | ||||||
|  |     width: 120, | ||||||
|  |     customRender: ({ text }) => { | ||||||
|  |       return useRender.renderDict(text, DICT_TYPE.USER_TYPE) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '应用名', | ||||||
|  |     dataIndex: 'applicationName', | ||||||
|  |     width: 120 | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '请求方法名', | ||||||
|  |     dataIndex: 'requestMethod', | ||||||
|  |     width: 120 | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '请求地址', | ||||||
|  |     dataIndex: 'requestUrl', | ||||||
|  |     width: 250 | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '请求时间', | ||||||
|  |     dataIndex: 'beginTime', | ||||||
|  |     width: 180, | ||||||
|  |     customRender: ({ text }) => { | ||||||
|  |       return useRender.renderDate(text) | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '执行时长', | ||||||
|  |     dataIndex: 'duration', | ||||||
|  |     width: 180, | ||||||
|  |     customRender: ({ text }) => { | ||||||
|  |       return useRender.renderText(text, 'ms') | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     title: '操作结果', | ||||||
|  |     dataIndex: 'status', | ||||||
|  |     width: 180, | ||||||
|  |     customRender: ({ record }) => { | ||||||
|  |       return useRender.renderTag(record.resultCode === 0 ? '成功' : '失败(' + record.resultMsg + ')') | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | export const searchFormSchema: FormSchema[] = [ | ||||||
|  |   { | ||||||
|  |     label: '用户编号', | ||||||
|  |     field: 'userId', | ||||||
|  |     component: 'Input', | ||||||
|  |     colProps: { span: 8 } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     label: '用户类型', | ||||||
|  |     field: 'userType', | ||||||
|  |     component: 'Select', | ||||||
|  |     componentProps: { | ||||||
|  |       options: getIntDictOptions(DICT_TYPE.USER_TYPE) | ||||||
|  |     }, | ||||||
|  |     colProps: { span: 8 } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     label: '应用名', | ||||||
|  |     field: 'applicationName', | ||||||
|  |     component: 'Input', | ||||||
|  |     colProps: { span: 8 } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     label: '请求地址', | ||||||
|  |     field: 'requestUrl', | ||||||
|  |     component: 'Input', | ||||||
|  |     colProps: { span: 8 } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     label: '请求时间', | ||||||
|  |     field: 'beginTime', | ||||||
|  |     component: 'RangePicker', | ||||||
|  |     colProps: { span: 8 } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     label: '执行时长', | ||||||
|  |     field: 'duration', | ||||||
|  |     component: 'Input', | ||||||
|  |     colProps: { span: 8 } | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     label: '结果码', | ||||||
|  |     field: 'resultCode', | ||||||
|  |     component: 'Input', | ||||||
|  |     colProps: { span: 8 } | ||||||
|  |   } | ||||||
|  | ] | ||||||
|  | @ -1,3 +1,43 @@ | ||||||
| <template> | <template> | ||||||
|   <div>开发中</div> |   <div> | ||||||
|  |     <BasicTable @register="registerTable"> | ||||||
|  |       <template #toolbar> | ||||||
|  |         <a-button type="warning" @click="handleExport"> {{ t('action.export') }} </a-button> | ||||||
|  |       </template> | ||||||
|  |     </BasicTable> | ||||||
|  |   </div> | ||||||
| </template> | </template> | ||||||
|  | <script lang="ts" setup name="ApiErrorLog"> | ||||||
|  | import { useI18n } from '@/hooks/web/useI18n' | ||||||
|  | import { useMessage } from '@/hooks/web/useMessage' | ||||||
|  | import { BasicTable, useTable } from '@/components/Table' | ||||||
|  | import { getApiAccessLogPage, exportApiAccessLog, ApiAccessLogExportReqVO } from '@/api/infra/apiAccessLog' | ||||||
|  | import { columns, searchFormSchema } from './apiAccessLog.data' | ||||||
|  | 
 | ||||||
|  | const { t } = useI18n() | ||||||
|  | const { createConfirm, createMessage } = useMessage() | ||||||
|  | const [registerTable, { getForm }] = useTable({ | ||||||
|  |   title: '访问日志列表', | ||||||
|  |   api: getApiAccessLogPage, | ||||||
|  |   columns, | ||||||
|  |   formConfig: { | ||||||
|  |     labelWidth: 120, | ||||||
|  |     schemas: searchFormSchema | ||||||
|  |   }, | ||||||
|  |   useSearchForm: true, | ||||||
|  |   showTableSetting: true, | ||||||
|  |   showIndexColumn: false | ||||||
|  | }) | ||||||
|  | 
 | ||||||
|  | async function handleExport() { | ||||||
|  |   createConfirm({ | ||||||
|  |     title: t('common.exportTitle'), | ||||||
|  |     iconType: 'warning', | ||||||
|  |     content: t('common.exportMessage'), | ||||||
|  |     async onOk() { | ||||||
|  |       await exportApiAccessLog(getForm().getFieldsValue() as ApiAccessLogExportReqVO) | ||||||
|  |       createMessage.success(t('common.exportSuccessText')) | ||||||
|  |     } | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 xingyu
						xingyu