Bläddra i källkod

perf(系统监控-在线用户): 在线用户功能支持租户模式

shizhongming 2 år sedan
förälder
incheckning
04994098b5

+ 26 - 0
src/modules/smart-system/views/onlineUser/OnlineUserListView.config.ts

@@ -3,6 +3,7 @@ import {
   type SmartSearchFormSchema,
   tableBooleanColumnClass,
 } from '@/components/SmartTable';
+import { formatDuration } from '@/utils/dateUtil';
 
 export const getTableColumns = (): SmartColumn[] => {
   return [
@@ -72,6 +73,31 @@ export const getTableExpandColumns = (): SmartColumn[] => {
       field: 'loginIp',
       minWidth: 200,
     },
+    {
+      title: '{system.views.onlineUser.title.timeout}',
+      field: 'timeout',
+      width: 150,
+      formatter({ row }) {
+        const timeout = row.timeout;
+        if (!timeout) {
+          return '';
+        }
+        return formatDuration(timeout);
+      },
+    },
+    {
+      title: '{system.views.onlineUser.title.tenantCode}',
+      field: 'tenantCode',
+      width: 150,
+    },
+    {
+      title: '{system.views.onlineUser.title.tenantName}',
+      field: 'tenantName',
+      width: 100,
+      formatter({ row }) {
+        return row.tenantShotName || row.tenantName;
+      },
+    },
     {
       ...tableBooleanColumnClass('{system.views.onlineUser.title.bindIp}', 'bindIp'),
       width: 120,

+ 2 - 1
src/modules/smart-system/views/onlineUser/OnlineUserListView.vue

@@ -103,11 +103,12 @@
     columns: getTableExpandColumns(),
     border: true,
     stripe: true,
+    showOverflow: 'tooltip',
   });
 </script>
 
 <style scoped lang="less">
   .expand-wrapper {
-    padding: 15px;
+    padding: 10px 0;
   }
 </style>

+ 3 - 0
src/modules/smart-system/views/onlineUser/lang/zh_CN.ts

@@ -8,6 +8,9 @@ export default {
           loginTime: '登录时间',
           loginIp: '登录IP',
           bindIp: '是否绑定IP',
+          timeout: '有效时长',
+          tenantCode: '租户编码',
+          tenantName: '租户名字',
         },
         button: {
           offline: '下线',

+ 13 - 0
src/utils/dateUtil.ts

@@ -2,9 +2,13 @@
  * Independent time operation tool to facilitate subsequent switch to dayjs
  */
 import dayjs from 'dayjs';
+import duration, { DurationUnitType } from 'dayjs/plugin/duration';
+
+dayjs.extend(duration);
 
 const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';
 const DATE_FORMAT = 'YYYY-MM-DD';
+const TIME_FORMAT = 'HH小时mm分钟ss秒';
 
 export function formatToDateTime(date?: dayjs.ConfigType, format = DATE_TIME_FORMAT): string {
   return dayjs(date).format(format);
@@ -15,3 +19,12 @@ export function formatToDate(date?: dayjs.ConfigType, format = DATE_FORMAT): str
 }
 
 export const dateUtil = dayjs;
+
+/**
+ * 格式化时长
+ * @param duration
+ * @param format
+ */
+export const formatDuration = (duration: number, format: DurationUnitType = 'seconds') => {
+  return dayjs.duration(duration, format).format(TIME_FORMAT);
+};