Ver código fonte

新增锁定屏幕功能

RuoYi 4 anos atrás
pai
commit
fb480530c8

+ 35 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java

@@ -9,8 +9,12 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.constant.ShiroConstants;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.core.text.Convert;
@@ -19,6 +23,7 @@ import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.ServletUtils;
 import com.ruoyi.common.utils.ShiroUtils;
 import com.ruoyi.common.utils.ShiroUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.shiro.service.SysPasswordService;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysMenuService;
 import com.ruoyi.system.service.ISysMenuService;
 
 
@@ -36,6 +41,9 @@ public class SysIndexController extends BaseController
     @Autowired
     @Autowired
     private ISysConfigService configService;
     private ISysConfigService configService;
 
 
+    @Autowired
+    private SysPasswordService passwordService;
+
     // 系统首页
     // 系统首页
     @GetMapping("/index")
     @GetMapping("/index")
     public String index(ModelMap mmap)
     public String index(ModelMap mmap)
@@ -73,6 +81,33 @@ public class SysIndexController extends BaseController
         return webIndex;
         return webIndex;
     }
     }
 
 
+    // 锁定屏幕
+    @GetMapping("/lockscreen")
+    public String lockscreen(ModelMap mmap)
+    {
+        mmap.put("user", ShiroUtils.getSysUser());
+        ServletUtils.getSession().setAttribute(ShiroConstants.LOCK_SCREEN, true);
+        return "lock";
+    }
+
+    // 解锁屏幕
+    @PostMapping("/unlockscreen")
+    @ResponseBody
+    public AjaxResult unlockscreen(String password)
+    {
+        SysUser user = ShiroUtils.getSysUser();
+        if (StringUtils.isNull(user))
+        {
+            return AjaxResult.error("服务器超时,请重新登陆");
+        }
+        if (passwordService.matches(user, password))
+        {
+            ServletUtils.getSession().removeAttribute(ShiroConstants.LOCK_SCREEN);
+            return AjaxResult.success();
+        }
+        return AjaxResult.error("密码不正确,请重新输入。");
+    }
+
     // 切换主题
     // 切换主题
     @GetMapping("/system/switchSkin")
     @GetMapping("/system/switchSkin")
     public String switchSkin()
     public String switchSkin()

Diferenças do arquivo suprimidas por serem muito extensas
+ 767 - 0
ruoyi-admin/src/main/resources/static/js/three.min.js


+ 5 - 0
ruoyi-admin/src/main/resources/static/ruoyi/index.js

@@ -480,6 +480,11 @@ $(function() {
     $('#fullScreen').on('click', function () {
     $('#fullScreen').on('click', function () {
     	$(document).toggleFullScreen();
     	$(document).toggleFullScreen();
     });
     });
+    
+    // 锁定屏幕
+    $('#lockScreen').on('click', function () {
+    	location.href  = ctx + "lockscreen";
+    });
 
 
     // 页签刷新按钮
     // 页签刷新按钮
     $('.tabReload').on('click', refreshTab);
     $('.tabReload').on('click', refreshTab);

+ 1 - 1
ruoyi-admin/src/main/resources/templates/include.html

@@ -18,6 +18,7 @@
 
 
 <!-- 通用JS -->
 <!-- 通用JS -->
 <div th:fragment="footer">
 <div th:fragment="footer">
+    <script th:inline="javascript"> var ctx = [[@{/}]]; var lockscreen = [[${session.lockscreen}]]; if(lockscreen){window.top.location=ctx+"lockscreen";} </script>
     <a id="scroll-up" href="#" class="btn btn-sm display"><i class="fa fa-angle-double-up"></i></a>
     <a id="scroll-up" href="#" class="btn btn-sm display"><i class="fa fa-angle-double-up"></i></a>
 	<script th:src="@{/js/jquery.min.js}"></script>
 	<script th:src="@{/js/jquery.min.js}"></script>
 	<script th:src="@{/js/bootstrap.min.js}"></script>
 	<script th:src="@{/js/bootstrap.min.js}"></script>
@@ -38,7 +39,6 @@
 	<script th:src="@{/ajax/libs/layui/layui.js}"></script>
 	<script th:src="@{/ajax/libs/layui/layui.js}"></script>
 	<script th:src="@{/ruoyi/js/common.js?v=4.5.1}"></script>
 	<script th:src="@{/ruoyi/js/common.js?v=4.5.1}"></script>
 	<script th:src="@{/ruoyi/js/ry-ui.js?v=4.5.1}"></script>
 	<script th:src="@{/ruoyi/js/ry-ui.js?v=4.5.1}"></script>
-	<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
 </div>
 </div>
 
 
 <!-- ztree树插件 -->
 <!-- ztree树插件 -->

+ 10 - 4
ruoyi-admin/src/main/resources/templates/index-topnav.html

@@ -234,9 +234,10 @@
 				</div>
 				</div>
                 <!-- 右侧栏 -->
                 <!-- 右侧栏 -->
                 <ul class="nav navbar-top-links navbar-right welcome-message">
                 <ul class="nav navbar-top-links navbar-right welcome-message">
-                    <li><a title="视频教程" href="http://doc.ruoyi.vip/ruoyi/document/spjc.html" target="_blank"><i class="fa fa-video-camera"></i> 视频教程</a></li>
-                    <li><a title="开发文档" href="http://doc.ruoyi.vip" target="_blank"><i class="fa fa-question-circle"></i> 开发文档</a></li>
-	                <li><a title="全屏显示" href="javascript:void(0)" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏显示</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
+	                <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li>
+                
                     <li class="dropdown user-menu">
                     <li class="dropdown user-menu">
 						<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
 						<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
 							<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">
 							<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">
@@ -311,7 +312,10 @@
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:src="@{/js/resize-tabs.js}"></script>
 <script th:src="@{/js/resize-tabs.js}"></script>
 <script th:inline="javascript">
 <script th:inline="javascript">
-var ctx = [[@{/}]];
+window.history.forward(1);
+var ctx = [[@{/}]]; 
+var lockscreen = [[${session.lockscreen}]]; 
+if(lockscreen){window.top.location=ctx+"lockscreen";}
 // 皮肤缓存
 // 皮肤缓存
 var skin = storage.get("skin");
 var skin = storage.get("skin");
 // history(表示去掉地址的#)否则地址以"#"形式展示
 // history(表示去掉地址的#)否则地址以"#"形式展示
@@ -417,6 +421,8 @@ $(function() {
 			layer.close(index);
 			layer.close(index);
 		});
 		});
 	}
 	}
+	
+	$("[data-toggle='tooltip']").tooltip();
 });
 });
 </script>
 </script>
 </body>
 </body>

+ 8 - 4
ruoyi-admin/src/main/resources/templates/index.html

@@ -185,9 +185,9 @@
                     </a>
                     </a>
                 </div>
                 </div>
                 <ul class="nav navbar-top-links navbar-right welcome-message">
                 <ul class="nav navbar-top-links navbar-right welcome-message">
-                    <li><a title="视频教程" href="http://doc.ruoyi.vip/ruoyi/document/spjc.html" target="_blank"><i class="fa fa-video-camera"></i> 视频教程</a></li>
-                    <li><a title="开发文档" href="http://doc.ruoyi.vip" target="_blank"><i class="fa fa-question-circle"></i> 开发文档</a></li>
-	                <li><a title="全屏显示" href="javascript:void(0)" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏显示</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li>
+                    <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
+	                <li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li>
                     <li class="dropdown user-menu">
                     <li class="dropdown user-menu">
 						<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
 						<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
 							<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">
 							<img th:src="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">
@@ -261,7 +261,10 @@
 <script th:src="@{/ruoyi/index.js}"></script>
 <script th:src="@{/ruoyi/index.js}"></script>
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:inline="javascript">
 <script th:inline="javascript">
-var ctx = [[@{/}]];
+window.history.forward(1);
+var ctx = [[@{/}]]; 
+var lockscreen = [[${session.lockscreen}]]; 
+if(lockscreen){window.top.location=ctx+"lockscreen";}
 // 皮肤缓存
 // 皮肤缓存
 var skin = storage.get("skin");
 var skin = storage.get("skin");
 // history(表示去掉地址的#)否则地址以"#"形式展示
 // history(表示去掉地址的#)否则地址以"#"形式展示
@@ -357,6 +360,7 @@ $(function() {
 			layer.close(index);
 			layer.close(index);
 		});
 		});
 	}
 	}
+	$("[data-toggle='tooltip']").tooltip();
 });
 });
 </script>
 </script>
 </body>
 </body>

Diferenças do arquivo suprimidas por serem muito extensas
+ 208 - 0
ruoyi-admin/src/main/resources/templates/lock.html


+ 6 - 1
ruoyi-common/src/main/java/com/ruoyi/common/constant/ShiroConstants.java

@@ -13,11 +13,16 @@ public class ShiroConstants
     public static final String CURRENT_USER = "currentUser";
     public static final String CURRENT_USER = "currentUser";
 
 
     /**
     /**
-     * 用户名
+     * 用户名字段
      */
      */
     public static final String CURRENT_USERNAME = "username";
     public static final String CURRENT_USERNAME = "username";
 
 
     /**
     /**
+     * 锁定屏幕字段
+     */
+    public static final String LOCK_SCREEN = "lockscreen";
+
+    /**
      * 消息key
      * 消息key
      */
      */
     public static final String MESSAGE = "message";
     public static final String MESSAGE = "message";