- {{item.name}}
用户注销后自动切换到指定画面
- 0
- 215
1. 功能概述
在有些应用场景下希望项目中的用户注销后自动切换到指定画面,如何实现该功能呢?
2. 实现方法
实现思路:通过获取当前用户的注销状态并编写对应的JavaScript脚本实现。
步骤1:在HMI变量表中创建2个数据类型为Bool的内部变量。

步骤2:添加2张画面。分别命名为“用户管理”和“用户注销后切换到的画面”。
- 名称为“用户管理”的画面内容:

IO域关联系统变量“@UserName”

在按钮的“按下”事件中调用“显示登录对话”系统函数用于用户登录。

在按钮的“按下”事件中调用“注销”系统函数用于手动注销用户。

- 名称为“用户注销后切换到的画面”的画面内容:

步骤2:在名称为“用户管理”的画面中的某个对象的动态化属性中编写脚本并结合逻辑判断实现功能。例如在画面的文本框对象的“工具提示”的动态化中编写脚本。

脚本示例如下:
export function 文本框_1_ToolTipText_Trigger(item, triggerDataSet) {
var value;
// 读取系统变量@UserName
var currentUser = Tags("@UserName").Read();
// 用于标记用户是否曾经登录过
var hasLoggedIn = Tags("LoginOccurred").Read();
// 防止注销后反复跳转画面
var logoutHandled = Tags("LogoutHandled").Read();
// 如果当前是有效用户,记录已登录,并重置注销处理标志
if (currentUser !== "DefaultUser" && currentUser !== "") {
Tags("LoginOccurred").Write(true);
Tags("LogoutHandled").Write(false);
}
else if (hasLoggedIn && !logoutHandled && (currentUser === "DefaultUser" || currentUser === "")) {
HMIRuntime.UI.SysFct.ChangeScreen("用户注销后切换到的画面", ".");
Tags("LogoutHandled").Write(true);
}
return value;
}
选择触发器为“变量-自动”模式,通过系统变量“@UserName”触发该脚本。

3. 最终效果
本次演示是通过手动注销用户的方式说明该功能。实际使用时用户自动注销也是相同的行为。

- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错



西门子官方商城


{{item.nickName}}