home.jsp 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. <%@ page import="ss.WebC" %>
  2. <%@ page import="ss.serv.ServC" %>
  3. <%@ page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
  4. <%@ taglib uri="/ssTag" prefix="ss"%>
  5. <!DOCTYPE html>
  6. <html lang="en">
  7. <head>
  8. <meta charset="UTF-8" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  10. <script>window.loginStatus="${empty sessionScope['ssUser']?'0':'1'}"</script>
  11. <ss:skin file='main.css'/>
  12. <script type="text/javascript" src="/ss/jquery/jquery.js"></script>
  13. <script type="text/javascript" src="/ss/artdialog/artDialogUtil.js"></script>
  14. <script type="text/javascript" src="/ss/js/base.js"></script>
  15. <script> if(!window.wd) var wd={}; if(!wd.display) wd.display={}; wd.display.wdDialogId="1"; if(!wd.app) wd.app={}; wd.app.name='pms';</script>
  16. <script type="text/javascript" src="/ss/js/masklayer.js"></script>
  17. <script type="text/javascript" src="/ss/js/wdDialogInit.js"></script>
  18. <script type="text/javascript" src="/ss/js/common.js"></script>
  19. <script type="text/javascript" src="/ss/js/display.js"></script>
  20. <script type="text/javascript" src="/ss/js/edit.js"></script>
  21. <script type="text/javascript" src="/ss/nicescroll/jquery.nicescroll.js"></script>
  22. <script type="text/javascript" src="/ss/nicescroll/jquery.nicescroll.iframehelper.min.js"></script>
  23. <link rel="stylesheet" type="text/css" href="/ss/window/theme/dhtmlxwindows.css">
  24. <link rel="stylesheet" type="text/css" href="/ss/window/theme/dhx_blue/dhtmlxwindows_dhx_blue.css">
  25. <script type="text/javascript" src="/ss/window/dhtmlxcommon.js"></script>
  26. <script type="text/javascript" src="/ss/window/dhtmlxwindows.js"></script>
  27. <script type="text/javascript" src="/ss/window/dhtmlxcontainer.js"></script>
  28. <script type="text/javascript" src="/js/pageC.js"></script> <%-- 对象变动、修改、查看页,左则选项卡宽度 在里面定义 Ben(20251213) --%>
  29. <%
  30. if(pageContext.getSession().getAttribute("ssUser")==null){
  31. /* 再改,去掉 loginExp.ss.jsp(写死错误信息),改用 relogin.ss.jsp。Lin
  32. request.getRequestDispatcher(WebC.PPATH_loginExp).forward(request,response);
  33. */
  34. request.setAttribute(ServC.REQ_msg, WebC.LOGIN_expMsg);
  35. request.getRequestDispatcher(WebC.PPATH_relogin).forward(request,response);
  36. return;
  37. }
  38. %>
  39. <title>${sessionScope.projectUrlDesc}</title>
  40. <link rel="stylesheet" type="text/css" href="/ss/window/theme/dhtmlxwindows.css">
  41. <script type="text/javascript" src="/ss/window/dhtmlxcommon.js"></script>
  42. <%-- 去掉,上面已经有了。Lin(新UI)
  43. <script type="text/javascript" src="/ss/window/dhtmlxwindows.js"></script>
  44. --%>
  45. <script type="text/javascript" src="/ss/window/dhtmlxcontainer.js"></script>
  46. <script type="text/javascript" src="/ss/js/wdDialogInit.js"></script>
  47. <ss:skin file='dlg.css'/>
  48. <script type="text/javascript" src="/js/load.js"></script> <%-- ="/newUI/ss/js/base.js"。Lin(新UI) --%>
  49. </head>
  50. <body>
  51. <!-- menu标签输出start -->
  52. <%-- <ss:menu/>--%>
  53. <!-- menu标签输出end -->
  54. <div id="app" >
  55. <div class="self-block layout-container" :sys-mode="sysMode" v-show="isLockScreen==false">
  56. <div class="header">
  57. <global-header :menu-data="menuData[8]" :icon-items="iconItems"></global-header>
  58. </div>
  59. <div class="content-area">
  60. <global-menu :menu-items="menuData[1]"></global-menu>
  61. <div class="main-content">
  62. <iframe
  63. :src="currentPage"
  64. frameborder="0"
  65. ifrType="appWin"
  66. name="win2"
  67. class="appIframe"
  68. oriSrc="/initDesktop?"
  69. ></iframe>
  70. </div>
  71. </div>
  72. </div>
  73. <div class="login-container lockscreen-container" style="background-image: url(/skin/easy/images/login-bg.png)" <%-- (/newUI/skin/easy/images/login-bg.png)。Lin(新UI) --%>
  74. v-show="isLockScreen == true" @click.self="toggleRight">
  75. <div class="left" @click.self="toggleRight"></div>
  76. <div class="right" :class="{ 'right--visible': isRightVisible }"
  77. @click="resetTimer"
  78. @mousemove="resetTimer">
  79. <div class="content-area">
  80. <div class="login-box">
  81. <ss-login-icon class="login-icon-change-user" onclick="wd.display.exit({homepage:1})"></ss-login-icon>
  82. <div class="box-header">
  83. <img :src="defaultPersonalPhoto" style="margin-bottom: 15px;" />
  84. <p>您好,${sessionScope['ssUser'].xm} 欢迎回来</p>
  85. </div>
  86. <div>
  87. </div>
  88. <div class="box-container">
  89. <form class="box-form">
  90. <div class="form-item">
  91. <div class="icon">
  92. <ss-login-icon class="login-icon-password" />
  93. </div>
  94. <ss-login-input type="password" v-model="formData.password"
  95. placeholder="请输入您的密码" />
  96. </div>
  97. <div class="form-bar">
  98. <span><ss-login-button class="login-icon-yaoyiyao" text="摇一摇登录" type="button"
  99. @click="handleClick" /></span>
  100. <span><ss-login-button class="login-icon-loginin" text="登录" type="button"
  101. @click="unlockSessionByPassword" /></span>
  102. </div>
  103. </form>
  104. <!-- 错误提示 -->
  105. <div v-if="errInfo.status" class="err-tip">
  106. <div class="time">
  107. <div v-for="i in errInfo.allTime" :key="i"
  108. :class="{ fill: errInfo.allTime - i < errInfo.time }"></div>
  109. </div>
  110. <div class="tip">{{ errInfo.tip }}</div>
  111. </div>
  112. </div>
  113. <div class="box-footer">
  114. <div class="left"></div>
  115. </div>
  116. </div>
  117. </div>
  118. <div class="footer">
  119. <div>服务单位:广州非繁科技有限公司</div>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. <script type="text/javascript" src="/js/lockScreen.js"></script> <%-- ="/newUI/ss/js/lockScreen.js"。Lin(新UI) --%>
  125. <%-- 去掉。Lin(新UI)
  126. 用新UI的 lockScreen.js(注意大小写)
  127. 先不去掉
  128. --%>
  129. <script type="text/javascript" src="/ss/js/lockscreen.js"></script>
  130. <ss:skin file='lock.css'/>
  131. <script>
  132. var body = $(window.top.document.body);
  133. // $(top.document.head).append('');
  134. var funcStr = " if($('#mm').attr('type') == 'password') {$('#mm').attr('type','text')} else {$('#mm').attr('type','password')}";
  135. var defaultPersonalPhoto=wd.common.loadSkinFile('image/default-personalPhoto.png');
  136. <ss:equal val='${empty sessionScope["ssUser"]["yszwj"]}' val2='false'>
  137. <%-- 改。Lin
  138. defaultPersonalPhoto="/service?wdService=getData&path=${sessionScope['env.ry']['yszwj']}"; --%>
  139. <%--defaultPersonalPhoto="/service?wdService=dlByHttp&path=${sessionScope['wd.yyh']['yszwj']}";--%>
  140. defaultPersonalPhoto="/service?ssServ=dlByHttp&type=img&path=${sessionScope['ssOrigUser']['yszwj']}";
  141. </ss:equal>
  142. body.append('<div class="lock-controll-screen" style="display:none;">'+
  143. '<div id="lock-screen" class="lock-screen login-js-lock-screen" style="background-color: rgb(0, 0, 0);">'+
  144. '<div class="lock-controll-panel login-translucentDiv" style="position:relative;">'+
  145. '<div class="login-sca" ></div>'+
  146. '<div class="login-black icon-replace" title="切换登录" style="width: 22px;height: 22px;margin-right: 5px;margin-top: 5px;cursor:pointer;position:absolute;top:0;right:0;" onclick="wd.display.exit({homepage:1})"></div>'+
  147. '<div class="welcomeWords" style="padding: 4px 24px;border-radius: 20px;text-align: center;"><div class="personalPhoto" style="margin-left: 98px;margin-bottom: 15px;"><img src="'+defaultPersonalPhoto+'" /></div><p class="login-unlockHello">您好,&nbsp;<input id="zh" name="zh" type="hidden" value="${sessionScope['ssUser'].xm}"></input>${sessionScope['ssUser'].xm}&nbsp;欢迎回来</p><p>&nbsp;</p></div>'+
  148. '<p class="lock-controll-input clearfix" ><input id="mm" name="mm" style="background:none !important;" class="login-header_password_sp login-input login-unlockInput" type="password" /><span class="ksmm icon-eye" onclick="'+funcStr+'"></span><button style="background-size:unset;" id="unlockByPassword" class="lock-controll-button icon-enter content-invertButton"></button><button id="unlockByApp" class="lock-controll-button content-invertButton invertIcon-mobile"></button><span class="icon-countdownButton" style="position: absolute;top: 0px;width: 45px;border-radius: 3px;right: -94px;line-height: 30px;text-align: center;"></span></p>'+
  149. '<p class="lock-controll-hint"><span style="text-align: center;display: block;font-size: 14px;margin-top: 10px;color: #f00;" id="lock-msg"></span></p>'+
  150. '<p class="lock-controll-button-container" style="display: flex;align-items: center;justify-content: space-between;"><button id="unlockByVoice" style="display:none" class="lock-controll-button login-jslock-button login-unlockByVoice">按住说话</button></p>'+
  151. '</div>'+
  152. '</div>'+
  153. '<div class="home-clock desktop-time">12:12</div>'+
  154. '</div>');
  155. body.append('<div id="background-desktop" class="background-desktop" style="display:none;"></div>');
  156. body.append('<ul class="home-tool desktop-time clearfix" style="display:none">' +
  157. '<li id="pl-list"><div class="pl-list-container"><div class="pl-list"></div><div id="pl-page" class="pl-page"></div></div><a href="#" class="icon-forum listIcon"></a></li>' +
  158. '<li id="dz-count"><div class="dz-count" id="dz-count"><div id="dz-count-text" class="login-dz-count-text"></div></div><a href="#" class="icon-like listIcon"></a></li>' +
  159. '<li id="pic-info"><div class="pic-info login-pic-info"><table><tr><th>作者</th><td id="pic-zz-text"></td></tr><tr><th>发布时间</th><td id="pic-fbsj-text"></td></tr><tr><th>名称</th><td id="pic-mc-text"></td></tr></table></div><a href="#" class="icon-info listIcon"></a></li>' +
  160. '</ul>');
  161. /** 锁屏监听处理开始 **/
  162. var lockScreenData = {
  163. url1: '<ss:serv name='wd.lockSession' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  164. url2: '<ss:serv name='wd.checkIsUnlockedByApp' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  165. url3: '<ss:serv name='unlockByPwd' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  166. url4: '<ss:serv name='loadDeskImg' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  167. url5: '<ss:serv name='pl_cxajax' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  168. url6: 'wd.display.showComponent({show:["wdDialog"],url:"<ss:serv name='pl_cx' parm='{"wdConfirmationCaptchaService":"0"}' dest='pl_cx'/>",title:"pl_cx",width:650,height:555});',
  169. url7: '<ss:serv name='nr_dz' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  170. url8: '<ss:serv name='wrLockStat' parm='{"wdConfirmationCaptchaService":"0"}'/>'
  171. };
  172. // 将锁屏需要的东西放进sessionStorage里
  173. sessionStorage.setItem("lockScreenData",JSON.stringify(lockScreenData));
  174. // 获取sessionStorage里用户设置的锁屏时间
  175. var time = sessionStorage.getItem("lockTime");
  176. //var time = 2;
  177. console.log("用户设置的锁屏时间",time)
  178. if(!time){
  179. time = 15;
  180. }
  181. // 实例化锁屏方法,time分钟后锁屏
  182. // var lock = new LockScreen($(top.document).find('.lock-controll-screen'),$(top.document).find('#home-background'),$(top.document).find('.home-tool'),time,lockScreenData);
  183. // 键盘按下重新设置锁屏
  184. // $(document).keydown(function(event){
  185. // // time分钟后重新锁屏
  186. // lock.setupAutoLock(time);
  187. // });
  188. // 鼠标移动重新设置锁屏
  189. // document.onmousemove = function() {
  190. // // time分钟后重新锁屏
  191. // lock.setupAutoLock(time);
  192. // }
  193. /** 锁屏监听处理结束 **/
  194. function lockScreenFun(){
  195. console.log("锁屏点击了2");
  196. wd.display.beaconLogin("loginOut");
  197. $(top.document).find('#background-desktop').css('display','block');
  198. $.ajax({
  199. type: 'POST',
  200. url: '<ss:serv name='wrLockStat' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  201. data: {},
  202. async: false,
  203. success: function (data) {
  204. console.log("成功锁屏");
  205. lock.lockSession(time);
  206. },
  207. });
  208. }
  209. wd.topWindow.lockScreen=function(){
  210. $('#lock').trigger("click");
  211. }
  212. var passwordeye = $('.login-eyeIcon');
  213. var showPwd = $(".login-unlockInput");
  214. passwordeye.on('click', function() {
  215. console.log(1111111111111);
  216. if(showPwd.prop('type') == 'text') {
  217. showPwd.prop('type', 'password');
  218. } else {
  219. showPwd.prop('type', 'text');
  220. };
  221. });
  222. var kscs =parseInt('<%=base.SsC.LOGIN_maxNum %>');
  223. var cwcs = 0;
  224. var cs="";
  225. for(let i = 1;i<=kscs;i++){
  226. if(i>cwcs){
  227. cs += '<span class="login-sc login-used login-unused" style="display:none;width: 8px;height: 8px;border-radius: 50%;float: left;margin-right: 5px;" time="'+i+'"></span>';
  228. }else{
  229. cs += '<span class="login-sc login-used login-used" style="display:none;width: 8px;height: 8px;border-radius: 50%;float: left;margin-right: 5px;" time="'+i+'"></span>';
  230. }
  231. }
  232. $(".login-sca").append(cs);
  233. console.log("出去了");
  234. function goToIndex() {
  235. delCookie("userId");
  236. var sbbs = $("input[name='sbbs']").val();
  237. var ysbbs = $("input[name='ysbbs']").val();
  238. window.location.href = "/index?homepage=1&sbbs=" + sbbs+"&ysbbs=" + ysbbs;
  239. }
  240. function getCookie(name){
  241. var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
  242. if(arr=document.cookie.match(reg))
  243. return unescape(arr[2]);
  244. else
  245. return null;
  246. }
  247. function delCookie(name){
  248. var exp = new Date();
  249. exp.setTime(exp.getTime() - 1);
  250. var cval=getCookie(name);
  251. if(cval!=null)
  252. document.cookie= name + "="+cval+";expires="+exp.toGMTString();
  253. }
  254. </script>
  255. <script type="module">
  256. import { eventBus, EVEN_VAR } from "/js/vue/EventBus.js"; <%-- "/newUI/ss/js/EventBus.js"。Lin(新UI) --%>
  257. SS.ready(function() {
  258. if (!window.sharedEventBus) {
  259. window.sharedEventBus = eventBus;
  260. }
  261. const sysMode = {
  262. read: {
  263. key: "read",
  264. icon: "setting",
  265. },
  266. edit: {
  267. key: "edit",
  268. icon: "check",
  269. },
  270. };
  271. const currentMode = Vue.ref(sysMode.read.key);
  272. const toggoleSysMode = function (key) {
  273. let newKey = sysMode.edit.key;
  274. if (currentMode.value === sysMode.edit.key) {
  275. newKey = sysMode.read.key;
  276. // SYBJCTRL.saveedit(SESSION_STATE); //保存编辑模式
  277. }else{
  278. wd.topWindow.gxhymWindow.userEdit('gr');
  279. // wd.topWindow.gxhymWindow.userEdit("gf"); //打开编辑模式
  280. }
  281. // 设置系统模式
  282. currentMode.value = newKey;
  283. eventBus.publish(EVEN_VAR.systemEditModelChange, newKey);
  284. }
  285. // 调用组件中的初始化方法
  286. window.SS.dom.initializeFormApp({
  287. el: "#app",
  288. data() {
  289. return {
  290. lockTime: sessionStorage.getItem("lockTime") || 15,
  291. isLockScreen: ${!empty sessionScope.isLockScreen},
  292. isRightVisible: false,
  293. hideTimer: null,
  294. defaultPersonalPhoto: "",
  295. errInfo: {
  296. status: false,
  297. time: 5,
  298. allTime: 5,
  299. tip: "",
  300. },
  301. formData: {
  302. password: "",
  303. },
  304. sysMode: sysMode.read.key,
  305. currentPage: "/initDesktop?",
  306. menuData: {
  307. "8": //系统菜单(左上角LOGO下拉出来的菜单)
  308. [],
  309. "1"://侧方菜单(主菜单)
  310. [{
  311. desc: "首页",
  312. icon: "nav-icon-home",
  313. pid:"00001",
  314. type:"2",
  315. url:'/initDesktop?'
  316. }]
  317. },
  318. iconItems: [
  319. { name: 'question', size: '22px', class: 'header-help', action: () => wd.display.showComponent({show:["wdDialog"],url:"<ss:serv name='querySYSHelp' parm='{"wdConfirmationCaptchaService":"0","ishelp":"true","dialogid":"1"}' dest='cmsPlay'/>",title:"使用指南",width:900,height:800,minHeight:1,maxHeight:800}) },
  320. { name: 'check', size: '22px',class: 'header-save', condition: () => currentMode.value === sysMode.edit.key, action: () => toggoleSysMode()},
  321. { name: 'setting-fill', size: '22px', class: 'header-setting',condition: () => currentMode.value !== sysMode.edit.key, action: () => toggoleSysMode() },
  322. { name: 'list-fill', size: '22px', class: 'header-menu', action: () => console.log('list-fill clicked') },
  323. { name: 'topic-fill', size: '22px', class: 'header-skin', action: () => wd.display.showComponent({show:["wdDialog"],url:"<ss:serv name='gxhpf_cx' parm='{"wdConfirmationCaptchaService":"0"}' dest='ty_hf'/>",title:"换肤",width:799,height:757}) },
  324. { name: 'lock-fill', size: '22px', class: 'header-lock', action: () => this.lockScreenFun() },
  325. { name: 'quit', class: 'big', size: '36px', class: 'header-logout', action: () => wd.display.exit() },
  326. ],
  327. };
  328. },
  329. methods: {
  330. setupAutoLock() {
  331. if(this.autoLockTimer) {
  332. clearTimeout(this.autoLockTimer);
  333. }
  334. this.autoLockTimer = setTimeout(() => {
  335. console.log('自动锁屏');
  336. this.lockScreenFun();
  337. }, this.lockTime * 60 * 1000);
  338. },
  339. // 编辑模式变化
  340. sysEditModelChange(mode) {
  341. this.sysMode = mode;
  342. },
  343. currentPageChange(page) {
  344. this.currentPage = "./" + page;
  345. },
  346. showErrorMsg(msg,sydlcs,zcs){
  347. console.log(msg,sydlcs,zcs);
  348. var kscs = zcs;
  349. var cs = '';
  350. // for (let i = 1; i <= kscs; i++) {
  351. // if (i <= (zcs - sydlcs)) {
  352. // cs = '<span class="login-sc login-used login-used" style="width: 8px;height: 8px;display:block;border-radius: 50%;float: left;margin-right: 5px;" time="' + i + '"></span>';
  353. // } else {
  354. // cs = '<span class="login-sc login-used login-unused" style="width: 8px;height: 8px;display: block;border-radius: 50%;float: left;margin-right: 5px;" time="' + i + '"></span>';
  355. // }
  356. // console.log(cs);
  357. // }
  358. this.errInfo.time = sydlcs;
  359. this.errInfo.allTime = zcs;
  360. this.errInfo.tip = msg;
  361. this.errInfo.status = true;
  362. if (sydlcs == zcs) {
  363. this.errInfo.status = false;
  364. }
  365. if (0 >= sydlcs) {
  366. this.errInfo.status = true;
  367. this.errInfo.time = 0;
  368. this.errInfo.allTime = 5;
  369. this.errInfo.tip = msg;
  370. return false;
  371. } else {
  372. this.errInfo.status = true;
  373. this.errInfo.tip = msg;
  374. }
  375. },
  376. lockScreenFun(){
  377. console.log("锁屏点击了1");
  378. this.isLockScreen = true;
  379. $("#app").css("position", "relative");
  380. wd.display.beaconLogin("loginOut");
  381. $.ajax({
  382. type: 'POST',
  383. url: '<ss:serv name='wrLockStat' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  384. data: {},
  385. async: false,
  386. success: function (data) {
  387. console.log("成功锁屏");
  388. // lock.lockSession(time);
  389. },
  390. });
  391. },
  392. unlockSessionByPassword(){
  393. console.log("解锁");
  394. $("#app").css("position", "");
  395. var mm=this.formData.password;
  396. if(!mm){
  397. this.errInfo.status = true;
  398. this.errInfo.tip = "请输入密码";
  399. this.errInfo.time = 5;
  400. return;
  401. }
  402. var that = this;
  403. $.ajax({
  404. url: '<ss:serv name='unlockByPwd' parm='{"wdConfirmationCaptchaService":"0"}'/>',
  405. dataType: 'json',
  406. type: 'POST',
  407. data: {
  408. mm: mm,
  409. },
  410. success: function(data) {
  411. // context.target.find('#lock-msg').html(data.msg);
  412. if (data.code == -1) {
  413. that.showErrorMsg(data.msg, data.sydlcs, data.zcs);
  414. }
  415. if (data.code == 0) {
  416. that.isLockScreen = false;
  417. that.formData.password = "";
  418. that.errInfo.status = false;
  419. that.errInfo.time = 5;
  420. that.errInfo.allTime = 5;
  421. }
  422. },
  423. });
  424. },
  425. changeUser(){
  426. console.log('Button clicked!', event);
  427. },
  428. toggleRight() {
  429. this.isRightVisible = !this.isRightVisible;
  430. // 清除之前的定时器
  431. if (this.hideTimer) {
  432. clearTimeout(this.hideTimer);
  433. }
  434. // 设置新的定时器
  435. if (this.isRightVisible) {
  436. this.hideTimer = setTimeout(() => {
  437. this.isRightVisible = false;
  438. }, 10000);
  439. }
  440. },
  441. // 当用户在右侧区域操作时,重置定时器
  442. resetTimer() {
  443. if (this.hideTimer) {
  444. clearTimeout(this.hideTimer);
  445. }
  446. this.hideTimer = setTimeout(() => {
  447. this.isRightVisible = false;
  448. }, 10000);
  449. }
  450. },
  451. mounted() {
  452. // console.log(window.SS)
  453. console.log(window.top.SS)
  454. window.top.SS.lockScreenService.init(this);
  455. eventBus.subscribe(EVEN_VAR.systemEditModelChange,this.sysEditModelChange);
  456. eventBus.subscribe(EVEN_VAR.currentPage, this.currentPageChange);
  457. // 监听锁屏
  458. // 设置键盘和鼠标事件监听
  459. document.addEventListener('keydown', () => {
  460. this.setupAutoLock();
  461. });
  462. document.addEventListener('mousemove', () => {
  463. this.setupAutoLock();
  464. });
  465. this.setupAutoLock();
  466. <ss:equal val='${empty sessionScope.isLockScreen}' val2='false'>
  467. this.lockScreenFun();
  468. </ss:equal>
  469. this.defaultPersonalPhoto = wd.common.loadSkinFile('image/default-personalPhoto.png');
  470. // 如果用户有自定义头像,则使用自定义头像
  471. <ss:equal val='${empty sessionScope["ssUser"]["yszwj"]}' val2='false'>
  472. <%-- 改。Lin
  473. defaultPersonalPhoto="/service?wdService=getData&path=${sessionScope['env.ry']['yszwj']}"; --%>
  474. <%--this.defaultPersonalPhoto="/service?wdService=dlByHttp&path=${sessionScope['wd.yyh']['yszwj']}";--%>
  475. this.defaultPersonalPhoto="/service?ssServ=dlByHttp&type=img&path=${sessionScope['ssOrigUser']['yszwj']}";
  476. </ss:equal>
  477. const that = this;
  478. $.ajax({
  479. type: 'POST',
  480. url: '<ss:serv name='wrMenuList'/>',
  481. async: false,
  482. dataType: 'json',
  483. success: function (data) {
  484. // alert('菜单数据:'+JSON.stringify(data));
  485. that.menuData = data;
  486. <%-- 测试新UI临时写死 start --%>
  487. // that.menuData["1"].unshift({
  488. // desc: "单位",
  489. // icon: "nav-icon-home",
  490. // pid:"00001",
  491. // type:"2",
  492. // url:'<ss:serv name='dw_cx' dest='objList_bk' parm='{}'/>'
  493. // });
  494. // that.menuData["1"].unshift({
  495. // desc: "在用单位-部门",
  496. // icon: "nav-icon-home",
  497. // pid:"00001",
  498. // type:"2",
  499. // url:'<ss:serv name='bm_cx' dest='1objList' parm='{dwid:"101122",ssObjId:"101122",ssObjName:"dw",dataType:"change",ParentViewObject:"dw"}'/>'
  500. // });
  501. // that.menuData["1"].unshift({
  502. // desc: "人员",
  503. // icon: "nav-icon-person",
  504. // pid:"00001",
  505. // type:"2",
  506. // url:'<ss:serv name='ry_cx' dest='1ryList' parm='{}'/>'
  507. // });
  508. <%-- 测试新UI临时写死 end --%>
  509. that.menuData["1"].unshift({
  510. desc: "首页",
  511. icon: "icon-shouye", // v3.0 改为使用新图标库 by xu 20251215
  512. pid:"00001",
  513. type:"2",
  514. url:'/initDesktop?'
  515. });
  516. // v3.0 设置菜单图标 - 使用业务图标库 by xu 20251215
  517. that.menuData["1"].forEach(item => {
  518. // 一级菜单(文件夹类型)- 有同名二级菜单的用同样图标
  519. if(item.id === "1021775") item.icon = "icon-obj-ry"; // 人员
  520. if(item.id === "1021812") item.icon = "icon-obj-xy"; // 学员
  521. if(item.id === "1021809") item.icon = "icon-biz-grxf"; // 个人消费
  522. if(item.id === "1021783") item.icon = "icon-biz-men"; // 门
  523. if(item.id === "1021806") item.icon = "icon-caipin"; // 菜品
  524. if(item.id === "1021786") item.icon = "icon-biz-rc"; // 日程
  525. if(item.id === "1021789") item.icon = "icon-biz-xc"; // 巡查
  526. if(item.id === "1021793") item.icon = "icon-biz-kq"; // 考勤
  527. if(item.id === "1021795") item.icon = "icon-biz-wp"; // 物品
  528. if(item.id === "1021804") item.icon = "icon-biz-cl"; // 车辆
  529. // 评价(1021780)、场地(1021800) 暂无图标,使用默认文件夹图标
  530. // 二级菜单使用对象图标
  531. if(item.id === "ry_search") item.icon = "icon-obj-ry"; // 人员
  532. if(item.id === "gw_search") item.icon = "icon-obj-gw"; // 岗位
  533. if(item.id === "qz_search") item.icon = "icon-obj-qz"; // 群组
  534. if(item.id === "dw_search") item.icon = "icon-obj-dw"; // 单位
  535. if(item.id === "xy_search") item.icon = "icon-obj-xy"; // 学员
  536. if(item.id === "grcz_search") item.icon = "icon-obj-grcz"; // 个人充值
  537. if(item.id === "xfj_search") item.icon = "icon-obj-xfj"; // 消费机
  538. if(item.id === "jcjl_search") item.icon = "icon-obj-jcjl"; // 进出记录
  539. if(item.id === "mjd_search") item.icon = "icon-obj-mjd"; // 门禁点
  540. if(item.id === "mtcp_search") item.icon = "icon-mingricaipin"; // 明天菜品
  541. if(item.id === "cp_search") item.icon = "icon-caipin"; // 菜品
  542. if(item.id === "rc_search") item.icon = "icon-biz-rc"; // 日程
  543. if(item.id === "rcjh_search") item.icon = "icon-obj-rcjh"; // 日程计划
  544. if(item.id === "xcdjl_search") item.icon = "icon-obj-xcjl"; // 巡查记录
  545. if(item.id === "xcd_search") item.icon = "icon-obj-xcd"; // 巡查点
  546. if(item.id === "kqjl_search") item.icon = "icon-obj-kqjl"; // 考勤记录
  547. if(item.id === "wp_search") item.icon = "icon-biz-wp"; // 物品
  548. if(item.id === "cl_search") item.icon = "icon-biz-cl"; // 车辆
  549. if(item.id === "cd_search") item.icon = "icon-biz-cd"; // 场地
  550. });
  551. },
  552. });
  553. // 初始化菜单模式为收起(设置CSS变量)
  554. const layoutContainer = document.querySelector('.layout-container');
  555. if (layoutContainer) {
  556. layoutContainer.style.setProperty('--left-side-width', '60px');
  557. }
  558. },
  559. unmounted() {
  560. // 清理定时器和事件监听
  561. if(this.autoLockTimer) {
  562. clearTimeout(this.autoLockTimer);
  563. }
  564. document.removeEventListener('keydown', this.setupAutoLock);
  565. document.removeEventListener('mousemove', this.setupAutoLock);
  566. eventBus.clear(
  567. EVEN_VAR.systemEditModelChange,
  568. this.sysEditModelChange
  569. );
  570. },
  571. });
  572. });
  573. </script>
  574. </body>
  575. </html>