diff --git a/src/modules/smart-system/views/onlineUser/OnlineUserListView.config.ts b/src/modules/smart-system/views/onlineUser/OnlineUserListView.config.ts index 814282ffc..f852ed9ba 100644 --- a/src/modules/smart-system/views/onlineUser/OnlineUserListView.config.ts +++ b/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, diff --git a/src/modules/smart-system/views/onlineUser/OnlineUserListView.vue b/src/modules/smart-system/views/onlineUser/OnlineUserListView.vue index adfca9ad2..1b11570a4 100644 --- a/src/modules/smart-system/views/onlineUser/OnlineUserListView.vue +++ b/src/modules/smart-system/views/onlineUser/OnlineUserListView.vue @@ -103,11 +103,12 @@ columns: getTableExpandColumns(), border: true, stripe: true, + showOverflow: 'tooltip', }); diff --git a/src/modules/smart-system/views/onlineUser/lang/zh_CN.ts b/src/modules/smart-system/views/onlineUser/lang/zh_CN.ts index 58abc61dc..2dc7d33cb 100644 --- a/src/modules/smart-system/views/onlineUser/lang/zh_CN.ts +++ b/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: '下线', diff --git a/src/utils/dateUtil.ts b/src/utils/dateUtil.ts index e18387dfa..f1cdf2805 100644 --- a/src/utils/dateUtil.ts +++ b/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); +};