diff --git a/src/components/Table/src/hooks/useRender.ts b/src/components/Table/src/hooks/useRender.ts
index a7e4eb1a12438f68cfb944dda0e182a123d0dc07..af1bc4a4867fd1231225186dd0a65e9cd8aa8f06 100644
--- a/src/components/Table/src/hooks/useRender.ts
+++ b/src/components/Table/src/hooks/useRender.ts
@@ -5,6 +5,7 @@ import { isArray, isString } from '@/utils/is'
 import { DictTag } from '@/components/DictTag'
 import { Icon } from '@/components/Icon'
 import TableImg from '../components/TableImg.vue'
+import { JsonPreview } from '@/components/CodeEditor'
 
 export const useRender = {
   /**
@@ -112,5 +113,24 @@ export const useRender = {
     if (text) {
       return h(Icon, { icon: text })
     }
+  },
+  /**
+   * 使用JsonPreview组件  方便预览JSON
+   * @param json json字符串/obj
+   * @returns 能转为json返回JsonPreview 否则返回自身
+   */
+  renderJsonPreview: (json: any) => {
+    if (!json) return ''
+    if (typeof json === 'object') {
+      return h(JsonPreview, { data: json })
+    }
+    if (typeof json === 'string') {
+      try {
+        const data = JSON.parse(json)
+        return h(JsonPreview, { data })
+      } catch (e) {
+        return json
+      }
+    }
   }
 }
diff --git a/src/views/infra/apiAccessLog/AccessLogModal.vue b/src/views/infra/apiAccessLog/AccessLogModal.vue
new file mode 100644
index 0000000000000000000000000000000000000000..45a657159e5d043fb577558bf224c13f5d0f6452
--- /dev/null
+++ b/src/views/infra/apiAccessLog/AccessLogModal.vue
@@ -0,0 +1,27 @@
+
+  
+    
+  
+
+
+
+
+
diff --git a/src/views/infra/apiAccessLog/apiAccessLog.data.ts b/src/views/infra/apiAccessLog/apiAccessLog.data.ts
index 12bb65a2c379f3eb393d0eb38377cb239f3ad4c0..21926cc13a3bbb7063f8f22315819952c0bdc273 100644
--- a/src/views/infra/apiAccessLog/apiAccessLog.data.ts
+++ b/src/views/infra/apiAccessLog/apiAccessLog.data.ts
@@ -1,5 +1,7 @@
 import { BasicColumn, FormSchema, useRender } from '@/components/Table'
 import { DICT_TYPE, getDictOptions } from '@/utils/dict'
+import { DescItem } from '@/components/Description/index'
+import { h } from 'vue'
 
 export const columns: BasicColumn[] = [
   {
@@ -58,7 +60,7 @@ export const columns: BasicColumn[] = [
     ellipsis: true,
     customRender: ({ record }) => {
       const success = record.resultCode === 0
-      return useRender.renderTag(success ? '成功' : '失败(' + record.resultMsg + ')', success ? '#87d068' : '#f50')
+      return useRender.renderTag(success ? '成功' : '失败', success ? '#87d068' : '#f50')
     }
   }
 ]
@@ -110,3 +112,110 @@ export const searchFormSchema: FormSchema[] = [
     colProps: { span: 8 }
   }
 ]
+
+const httpMethods = [
+  { value: 'GET', color: '#108ee9' },
+  { value: 'POST', color: '#2db7f5' },
+  { value: 'PUT', color: 'warning' },
+  { value: 'DELETE', color: '#f50' }
+]
+
+export const infoSchema: DescItem[] = [
+  {
+    label: '日志id',
+    field: 'id'
+  },
+  {
+    label: '链路id',
+    field: 'traceId',
+    show: (data) => data && data.traceId && data.traceId !== ''
+  },
+  {
+    label: '应用名称',
+    field: 'applicationName',
+    labelMinWidth: 100
+  },
+  {
+    field: 'userId',
+    label: '用户id',
+    render(value, data) {
+      const tag = useRender.renderDict(data.userType, DICT_TYPE.USER_TYPE)
+      const uidTag = useRender.renderTag('uid: ' + value)
+      return h('span', {}, [tag, uidTag])
+    }
+  },
+  {
+    field: 'resultCode',
+    label: '请求结果',
+    render(value) {
+      return useRender.renderTag(value === 0 ? '成功' : '失败', value === 0 ? '#87d068' : '#f50')
+    }
+  },
+  {
+    field: 'resultMsg',
+    label: '响应信息',
+    show(data) {
+      return data && data.resultMsg && data.resultMsg !== ''
+    },
+    render(value) {
+      return h('span', { style: { color: 'red', fontWeight: 'bold' } }, value)
+    }
+  },
+  {
+    field: 'userIp',
+    label: '请求ip'
+  },
+  {
+    field: 'userAgent',
+    label: 'userAgent'
+  },
+  {
+    field: 'beginTime',
+    label: '请求时间',
+    render(value) {
+      return useRender.renderDate(value)
+    }
+  },
+  {
+    field: 'requestUrl',
+    label: '请求路径',
+    render(_, data) {
+      if (!data) {
+        return ''
+      }
+      const { requestMethod, requestUrl } = data
+      const current = httpMethods.find((item) => item.value === requestMethod.toUpperCase())
+      const methodTag = current ? useRender.renderTag(requestMethod, current.color) : requestMethod
+      return h('span', {}, [methodTag, requestUrl])
+    }
+  },
+  {
+    field: 'requestParams',
+    label: '请求参数',
+    render(value) {
+      return useRender.renderJsonPreview(value)
+    }
+  },
+  {
+    field: 'beginTime',
+    label: '请求开始时间',
+    render(value) {
+      return useRender.renderDate(value)
+    }
+  },
+  {
+    field: 'endTime',
+    label: '请求结束时间',
+    render(value) {
+      return useRender.renderDate(value)
+    }
+  },
+  {
+    field: 'duration',
+    label: '请求耗时',
+    render(value) {
+      // 为0的话需要转为string  否则不会显示
+      return useRender.renderText(String(value), 'ms')
+    }
+  }
+]
diff --git a/src/views/infra/apiAccessLog/index.vue b/src/views/infra/apiAccessLog/index.vue
index ce222317310c0d4d4a92296ce2999e36c8221565..dd9ee2ecec53d56b42a5cd6e7ea45b79c3926c8b 100644
--- a/src/views/infra/apiAccessLog/index.vue
+++ b/src/views/infra/apiAccessLog/index.vue
@@ -6,16 +6,32 @@
           {{ t('action.export') }}
         
       
+      
+        
+          
+        
+      
     
+    
   
 
 
+
+
diff --git a/src/views/infra/apiErrorLog/apiErrorLog.data.ts b/src/views/infra/apiErrorLog/apiErrorLog.data.ts
index f319168133f2bc1f8638278ac92b018f602b1e21..bdc55f71c0376e21f50c05e1449da995968f0b79 100644
--- a/src/views/infra/apiErrorLog/apiErrorLog.data.ts
+++ b/src/views/infra/apiErrorLog/apiErrorLog.data.ts
@@ -1,5 +1,8 @@
 import { BasicColumn, FormSchema, useRender } from '@/components/Table'
 import { DICT_TYPE, getDictOptions } from '@/utils/dict'
+import { Textarea } from 'ant-design-vue'
+import { h } from 'vue'
+import { DescItem } from '@/components/Description/index'
 
 export const columns: BasicColumn[] = [
   {
@@ -108,3 +111,139 @@ export const searchFormSchema: FormSchema[] = [
     colProps: { span: 8 }
   }
 ]
+
+function renderText(value: string, color: string, bold = true) {
+  return h('span', { style: { color, fontWeight: bold ? 'bold' : 'normal' } }, value)
+}
+
+const httpMethods = [
+  { value: 'GET', color: '#108ee9' },
+  { value: 'POST', color: '#2db7f5' },
+  { value: 'PUT', color: 'warning' },
+  { value: 'DELETE', color: '#f50' }
+]
+
+export const infoSchema: DescItem[] = [
+  {
+    field: 'id',
+    label: '异常id'
+  },
+  {
+    field: 'traceId',
+    label: '链路ID',
+    show(data) {
+      return data && data.traceId && data.traceId !== ''
+    }
+  },
+  {
+    field: 'applicationName',
+    label: '应用名称',
+    labelMinWidth: 100
+  },
+  {
+    field: 'processStatus',
+    label: '处理状态',
+    render(_, data) {
+      const { processStatus, processUserId } = data
+      const tag = useRender.renderDict(processStatus, DICT_TYPE.INFRA_API_ERROR_LOG_PROCESS_STATUS)
+      if (!processUserId) {
+        return tag
+      }
+      const uidTag = useRender.renderTag('uid: ' + processUserId)
+      return h('span', {}, [tag, uidTag])
+    }
+  },
+  {
+    field: 'processTime',
+    label: '处理时间',
+    show(data) {
+      return data && data.processTime && data.processTime !== ''
+    },
+    render(value) {
+      return useRender.renderDate(value)
+    }
+  },
+  {
+    field: 'userId',
+    label: '用户id',
+    render(value, data) {
+      const tag = useRender.renderDict(data.userType, DICT_TYPE.USER_TYPE)
+      const uidTag = useRender.renderTag('uid: ' + value)
+      return h('span', {}, [tag, uidTag])
+    }
+  },
+  {
+    field: 'userIp',
+    label: 'ip地址'
+  },
+  {
+    field: 'requestUrl',
+    label: '请求地址',
+    render(_, data) {
+      if (data) {
+        const { requestMethod } = data
+        const current = httpMethods.find((item) => item.value === requestMethod)
+        const tag = current ? useRender.renderTag(requestMethod, current.color) : requestMethod
+        return h('span', {}, [tag, data.requestUrl])
+      }
+    }
+  },
+  {
+    field: 'requestParams',
+    label: '请求参数',
+    render(value) {
+      return useRender.renderJsonPreview(value)
+    }
+  },
+  {
+    field: 'userAgent',
+    label: 'userAgent'
+  },
+  {
+    field: 'exceptionTime',
+    label: '异常时间',
+    render(value) {
+      return useRender.renderDate(value)
+    }
+  },
+  {
+    field: 'exceptionClassName',
+    label: '异常类名/方法',
+    render(_, data) {
+      if (data) {
+        return renderText(data.exceptionClassName + ' / ' + data.exceptionMethodName, 'red')
+      }
+    }
+  },
+  {
+    field: 'exceptionMessage',
+    label: '异常信息',
+    render(value) {
+      return renderText(value, 'red')
+    }
+  },
+  {
+    field: 'exceptionFileName',
+    label: '异常文件名',
+    render(_, data) {
+      if (data) {
+        return useRender.renderText(data.exceptionFileName, 'Line: ' + data.exceptionLineNumber)
+      }
+    }
+  },
+  {
+    field: 'exceptionName',
+    label: '异常名称'
+  },
+  {
+    field: 'exceptionRootCauseMessage',
+    label: '异常信息'
+  },
+  {
+    field: 'exceptionStackTrace',
+    label: '异常堆栈',
+    render(value) {
+      return h(Textarea, { value, readonly: true, style: { minHeight: '300px' } })
+    }
+  }
+]
diff --git a/src/views/infra/apiErrorLog/index.vue b/src/views/infra/apiErrorLog/index.vue
index b018151c08045112285ef4c2b4218bc9f25dc8ec..ddd53998d15001c23d67527fe0d8b38548ea35c0 100644
--- a/src/views/infra/apiErrorLog/index.vue
+++ b/src/views/infra/apiErrorLog/index.vue
@@ -10,6 +10,11 @@
         
           
   
 
 
+
+
diff --git a/src/views/system/operatelog/index.vue b/src/views/system/operatelog/index.vue
index c5f28a836ff242ab6af9996716b3ab25bbef110c..93fbd1632e26596d1fcd4f02a8cbbcd8d64e77f3 100644
--- a/src/views/system/operatelog/index.vue
+++ b/src/views/system/operatelog/index.vue
@@ -4,16 +4,32 @@
       
          {{ t('action.export') }} 
       
+      
+        
+          
+        
+      
     
+    
   
 
 
diff --git a/src/views/system/operatelog/operateLog.data.ts b/src/views/system/operatelog/operateLog.data.ts
index 8e0473c49ec6d7a2a95bca492eb6bc8d48fd3cf4..f6bffe7e595ea67035b3fb765d9f69043cc74ebe 100644
--- a/src/views/system/operatelog/operateLog.data.ts
+++ b/src/views/system/operatelog/operateLog.data.ts
@@ -1,5 +1,7 @@
 import { BasicColumn, FormSchema, useRender } from '@/components/Table'
 import { DICT_TYPE, getDictOptions } from '@/utils/dict'
+import { DescItem } from '@/components/Description/index'
+import { h } from 'vue'
 
 export const columns: BasicColumn[] = [
   {
@@ -10,7 +12,7 @@ export const columns: BasicColumn[] = [
   {
     title: '操作模块',
     dataIndex: 'module',
-    width: 120
+    width: 200
   },
   {
     title: '操作名',
@@ -20,7 +22,7 @@ export const columns: BasicColumn[] = [
   {
     title: '操作类型',
     dataIndex: 'type',
-    width: 180,
+    width: 120,
     customRender: ({ text }) => {
       return useRender.renderDict(text, DICT_TYPE.SYSTEM_OPERATE_TYPE)
     }
@@ -30,10 +32,14 @@ export const columns: BasicColumn[] = [
     dataIndex: 'userNickname',
     width: 120
   },
+  // {
+  //   title: 'userAgent',
+  //   dataIndex: 'userAgent',
+  //   width: 400
+  // },
   {
-    title: 'userAgent',
-    dataIndex: 'userAgent',
-    width: 400
+    title: '请求路径',
+    dataIndex: 'requestUrl'
   },
   {
     title: '操作结果',
@@ -44,19 +50,19 @@ export const columns: BasicColumn[] = [
     }
   },
   {
-    title: '操作日期',
-    dataIndex: 'startTime',
+    title: '执行时长',
+    dataIndex: 'duration',
     width: 180,
     customRender: ({ text }) => {
-      return useRender.renderDate(text)
+      return useRender.renderText(text, 'ms')
     }
   },
   {
-    title: '执行时长',
-    dataIndex: 'duration',
+    title: '操作日期',
+    dataIndex: 'startTime',
     width: 180,
     customRender: ({ text }) => {
-      return useRender.renderText(text, 'ms')
+      return useRender.renderDate(text)
     }
   }
 ]
@@ -102,3 +108,94 @@ export const searchFormSchema: FormSchema[] = [
     colProps: { span: 8 }
   }
 ]
+
+const httpMethods = [
+  { value: 'GET', color: '#108ee9' },
+  { value: 'POST', color: '#2db7f5' },
+  { value: 'PUT', color: 'warning' },
+  { value: 'DELETE', color: '#f50' }
+]
+
+export const infoSchema: DescItem[] = [
+  {
+    field: 'module',
+    label: '操作模块'
+  },
+  {
+    field: 'name',
+    label: '操作名'
+  },
+  {
+    field: 'userNickname',
+    label: '操作人',
+    render(_, data) {
+      const { userNickname, userId } = data
+      // return useRender.renderText(userNickname, 'uid: ' + userId)
+      return useRender.renderTags([userNickname, 'uid: ' + userId])
+    }
+  },
+  {
+    field: 'resultCode',
+    label: '请求结果',
+    render(value) {
+      return useRender.renderTag(value === 0 ? '成功' : '失败', value === 0 ? '#87d068' : '#f50')
+    }
+  },
+  {
+    field: 'resultMsg',
+    label: '响应信息',
+    show(data) {
+      return data && data.resultMsg && data.resultMsg !== ''
+    },
+    render(value) {
+      return h('span', { style: { color: 'red', fontWeight: 'bold' } }, value)
+    }
+  },
+  {
+    field: 'userIp',
+    label: '请求ip'
+  },
+  {
+    field: 'startTime',
+    label: '请求时间',
+    render(value) {
+      return useRender.renderDate(value)
+    }
+  },
+  {
+    field: 'requestUrl',
+    label: '请求路径',
+    render(_, data) {
+      if (!data) {
+        return ''
+      }
+      const { requestMethod, requestUrl } = data
+      const current = httpMethods.find((item) => item.value === requestMethod.toUpperCase())
+      const methodTag = current ? useRender.renderTag(requestMethod, current.color) : requestMethod
+      return h('span', {}, [methodTag, requestUrl])
+    }
+  },
+  {
+    field: 'javaMethod',
+    label: '操作方法',
+    labelMinWidth: 80
+  },
+  {
+    field: 'javaMethodArgs',
+    label: '请求参数',
+    render(value) {
+      return useRender.renderJsonPreview(value)
+    }
+  },
+  {
+    field: 'userAgent',
+    label: 'userAgent'
+  },
+  {
+    field: 'duration',
+    label: '请求耗时',
+    render(value) {
+      return useRender.renderText(value, 'ms')
+    }
+  }
+]