home.jsp 25 KB

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