({
+ id: 'sysOnlineUser',
+ name: '在线用户',
+ columns: [
+ // { type: 'checkbox', width: 40, fixed: 'left' },
+ { type: 'seq', title: '序号', width: 50, fixed: 'left' },
+ { field: 'userName', title: '账号', minWidth: 110, showOverflow: 'tooltip' },
+ { field: 'realName', title: '姓名', minWidth: 110, showOverflow: 'tooltip' },
+ { field: 'ip', title: 'IP地址', minWidth: 100, showOverflow: 'tooltip' },
+ { field: 'browser', title: '浏览器', minWidth: 160, showOverflow: 'tooltip' },
+ // { field: 'connectionId', title: '连接Id', minWidth: 160, showOverflow: 'tooltip', sortable: true },
+ { field: 'time', title: '登录时间', minWidth: 120, showOverflow: 'tooltip' },
+ { title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
+ ],
+ enableExport: true,
+ searchCallback: () => handleQuery(),
+ queryAllCallback: () => fetchData({ pageSize: 99999 }),
+});
+
+// 页面初始化
onMounted(async () => {
// 在线用户列表
signalR.off('OnlineUserList');
@@ -95,7 +134,6 @@ onMounted(async () => {
};
notificationThrottle();
});
-
// 强制下线
signalR.off('ForceOffline');
signalR.on('ForceOffline', async (data: any) => {
@@ -131,13 +169,19 @@ const openDrawer = () => {
};
// 查询操作
-const handleQuery = async () => {
- state.loading = true;
- let params = Object.assign(state.queryParams, state.tableParams);
- var res = await getAPI(SysOnlineUserApi).apiSysOnlineUserPagePost(params);
- state.onlineUserList = res.data.result?.items ?? [];
+const handleQuery = async (reset = false) => {
+ options.loading = true;
+ if (reset) state.tableParams.page = 1;
+ var res = await fetchData(null);
+ xGrid.value?.loadData(res.data.result?.items ?? []);
state.tableParams.total = res.data.result?.total;
- state.loading = false;
+ options.loading = false;
+};
+
+// 获取数据
+const fetchData = async (tableParams: any) => {
+ let params = Object.assign(state.queryParams, state.tableParams, tableParams);
+ return getAPI(SysOnlineUserApi).apiSysOnlineUserPagePost(params);
};
// 重置操作
@@ -148,9 +192,9 @@ const resetQuery = () => {
};
// 发送消息
-const openSendMessage = (row: any)=>{
+const openSendMessage = (row: any) => {
sendMessageRef.value?.openDialog(row);
-}
+};
// 强制下线
const forceOffline = async (row: any) => {
@@ -167,18 +211,38 @@ const forceOffline = async (row: any) => {
.catch(() => {});
};
-// 改变页面容量
-const handleSizeChange = (val: number) => {
- state.tableParams.pageSize = val;
+// 改变页码序号或页面容量
+const pageChange: VxePagerEvents.PageChange = ({ currentPage, pageSize }: VxePagerDefines.PageChangeEventParams) => {
+ state.tableParams.page = currentPage;
+ state.tableParams.pageSize = pageSize;
handleQuery();
};
-// 改变页码序号
-const handleCurrentChange = (val: number) => {
- state.tableParams.page = val;
+// 列排序
+const sortChange = (options: any) => {
+ state.tableParams.field = options.field;
+ state.tableParams.order = options.order;
handleQuery();
};
// 导出对象
defineExpose({ openDrawer });
+
+
diff --git a/Web/src/views/system/onlineUser/signalR.ts b/Web/src/views/system/onlineUser/signalR.ts
index 91bd7600..18837e52 100644
--- a/Web/src/views/system/onlineUser/signalR.ts
+++ b/Web/src/views/system/onlineUser/signalR.ts
@@ -20,10 +20,12 @@ connection.serverTimeoutInMilliseconds = 30 * 60 * 1000; // 超时时间30m
connection.start().then(() => {
console.log('启动连接');
});
+
// 断开连接
connection.onclose(async () => {
console.log('断开连接');
});
+
// 重连中
connection.onreconnecting(() => {
ElNotification({
@@ -33,6 +35,7 @@ connection.onreconnecting(() => {
position: 'bottom-right',
});
});
+
// 重连成功
connection.onreconnected(() => {
console.log('重连成功');
@@ -41,7 +44,7 @@ connection.onreconnected(() => {
connection.on('OnlineUserList', () => {});
// 接收消息
-connection.on("ReceiveMessage", (message: any)=>{
+connection.on('ReceiveMessage', (message: any) => {
var tmpMsg = `${message.message}
`;
tmpMsg += `发送人员:${message.sendUserName}
`;
tmpMsg += `
发送时间:${message.sendTime}
`;
@@ -52,7 +55,7 @@ connection.on("ReceiveMessage", (message: any)=>{
type: 'info',
position: 'top-right',
dangerouslyUseHTMLString: true,
- duration: 0
+ duration: 0,
});
});