layui.define(['layer','form','element','vciWebMenu','util'],//数组里是需要使用的layui的组件 function(exports){ /** * 主页,包含北区、西区、中间区域和南区 * @author wangting@2022-1-4 */ var portal = { sessionInfo:{}, themeName:'default', moduleKey:'vciWebPortalDojoUI', downloadFileUUID:[], mainConfig:{ indexPageModel:"", //注意,这里的配置会被更改 leftMenuWidth:"220",//左侧菜单的宽度 leftMenuMinWidth:'40',//左侧菜单的最小宽度 //北区相关的配置 companyLogo:"",//LOGO区域路径 companyMinLogo:"",//LOGO区域的缩略图 //功能图标 menuMinClass:'layui-icon-spread-left',//菜单最小显示 menuClass:'layui-icon-shrink-right',//菜单正常显示 refreshClass:'layui-icon-refresh',//刷新按钮 isShowSearch:false,//是否显示全文检索 isShowTheme:false,//是否可以切换主题 searchUrl:'',//全文检索执行路径 msgClass:'layui-icon-reply-fill',//消息中心样式 themeClass:'layui-icon-theme',//主题样式 noteClass:'layui-icon-note',//便签样式 favClass:'layui-icon-star-fill',//收藏 unFavClass:'layui-icon-star',//未收藏 fullClass:'layui-icon-screen-full',//全屏 restoreClass:'layui-icon-screen-restore',//全屏恢复 iconFontSize:"16px",//字体图标的字号大小 userCenterSrc:"layui-icon-user",//用户头像 //版权的信息 isShowVersion:"false",//是否显示版本信息 versionInfo:''//版本信息 }, loginUrl:'/webUserController/login', favStore:null,//收藏的所有功能 portalDiv:null, tabPanelFilter:'vciPortalTab', menuStyle:'normal',//菜单显示的样式normal和min menuChangeWidthEl:["#portal_menu"],//菜单宽度变换的时候要处理宽度的元素 menuChangeLeftEl:["#portal_body"],//菜单宽度变换的时候要处理left的元素 init:function(){ //在这里执行初始页面 //1.布局是在页面上直接定义好的.但是默认是隐藏的,所以需要后面执行显示 var me = this; $webUtil.copyConfig(me,me.moduleKey); var windowWidth=$('body').width() if(windowWidth>configData.vciWebPortal.mainConfig.pageWidth1440){ me.mainConfig.leftMenuWidth='220' }else if(windowWidth>configData.vciWebPortal.mainConfig.pageWidth1280){ me.mainConfig.leftMenuWidth='200' }else { me.mainConfig.leftMenuWidth='180' } me.portalDiv = $("#portal"); me.portalLogoDiv = $("#portal_logo"); me.portalToolDiv = $("#portal_toolmenu"); me.portalPersonDiv = $("#portal_personArea"); me.portalBody = $("#portal_body"); me.portalFooter =$("#portal_footer"); if(!me.mainConfig.iconFontSize){ me.mainConfig.iconFontSize = '16px'; } //me.portalBody.css({'left':me.mainConfig.leftMenuWidth}) //2.设置logo区域 var logoInfoHtml = me.createLogoInfoHtml(); if(configData.isLogo) { me.portalLogoDiv.html(logoInfoHtml); }else if(configData.titleLogo){ me.portalLogoDiv.html(''+configData.title+''); }else{ me.portalLogoDiv.html(configData.title); if(configData.titleFontSize){ me.portalLogoDiv.css('font-size',configData.titleFontSize+'px') } } var toolHtml = me.createToolHtml(); me.portalToolDiv.html(toolHtml); //3.处理个人中心 var personInfoHtml = me.createPersonInfoHtml(); me.portalPersonDiv.html(personInfoHtml); //4.处理菜单 var webMenu = layui.vciWebMenu; webMenu.menuUlId = 'portal_menu_tree'; webMenu.menuClickListener = function(id,menuObject,isFav){ me.showFavImage(isFav); me.showTabByMenu(id,menuObject); }; me.webMenu = webMenu; me.webMenu.init(); //5.处理版权信息 if(me.mainConfig.isShowVersion && $webUtil.isNotNull(me.mainConfig.versionInfo)){ me.portalFooter.html("©版权信息 - " +me.mainConfig.versionInfo.trim() ); me.portalFooter.show(); }else{ me.portalFooter.remove(); me.portalBody.css("bottom","0px"); } //6.处理首页 if(!me.mainConfig || $webUtil.isNull(me.mainConfig.indexPageModel)){ if(!me.mainConfig){ me.mainConfig = { indexPageModel:"portal/vciDefaultIndex" } }else{ me.mainConfig.indexPageModel = "portal/vciDefaultIndex"; } } layui.use([me.mainConfig.indexPageModel], function () { var index = layui[me.mainConfig.indexPageModel]; $("#vciPortalIndexContent").html(index.getContent()); index.init(); }); //7.绑定所有的事件,并显示内容 me.buildAllListener(); me.portalDiv.show(); var element = layui.element; element.init();//刷新所有的元素 element.on('tabDelete(' + me.tabPanelFilter + ')',function(data){ var id = $(this).parent().attr("lay-id"); if(me.allAddedTab && me.allAddedTab[id] && me.allAddedTab[id].instanceObject){//调用销毁事件 try{ me.allAddedTab[id].instanceObject.destory(); }catch(e){ } } delete me.allAddedTab[id]; }); me.element = element; //设置固定块 var util = layui.util; //执行 util.fixbar({}); //easyui布局 $('#mainEasyuiLayout').layout(); // layui.use(['vciWebCheckSession'],function(){ // var vciWebCheckSession = layui.vciWebCheckSession; // vciWebCheckSession.init(); // }); /*layui.use(['vciWebReminder'],function(){ var vciWebReminder = layui.vciWebReminder; vciWebReminder.init() })*/ }, createLogoInfoHtml:function(){ //设置LOGO区域 var me = this; var html = ''; if($webUtil.isNotNull(me.mainConfig.companyLogo)){ html+=''; } return html + ""; }, createToolHtml:function(){ var me = this; var lis = []; lis.push('
  • '); lis.push('
  • '); if(me.mainConfig.isShowSearch == "true" || me.mainConfig.isShowSearch == true){ lis.push('
  • '); } return lis.join(''); }, createPersonInfoHtml:function(){ //创建个人中心部分的html代码 // 头像 人名 // 点击后出现设置菜单 var me = this; var html = ''; //工艺 if(me.mainConfig.isShowMpm == 'true' || me.mainConfig.isShowMpm == true){ //html += '
  • '; } //看板 if(me.mainConfig.isShowWatch == "true" || me.mainConfig.isShowWatch == true){ html += '
  • ' + '
  • '; } //消息个数 //html += '
  • '; //收藏图标 //html += '
  • '; //切换主题 if(me.mainConfig.isShowTheme == "true" || me.mainConfig.isSHowTheme == true){ html += '
  • ' + '
  • '; } //html += '
  • '; html += '
  • ' + ''; if(me.mainConfig.userCenterSrc.indexOf(".")>-1){//头像,说明使用的图片 html += ''; }else{ html += ' '; } var showUserName = me.sessionInfo.userName && me.sessionInfo.userName.trim(); if(me.sessionInfo.personName && showUserName !=me.sessionInfo.personName.trim()){ showUserName += "(" + me.sessionInfo.personName.trim() + ")" } html += showUserName + ''; var onlineUser = ""; if($webUtil.getCurrentUserId() == "sysAdmin"){ onlineUser = '
    在线用户
    ' ; } html += '
    ' + //'
    基本资料
    ' + //'
    锁定窗口
    ' + '
    修改密码
    ' + onlineUser + '
    流程代理
    ' + '
    使用和安装帮助
    ' + '
    退出
    ' + '
    '; html += '
  • '; return html; }, buildAllListener:function(){ var me = this; $("[lay-portal-event]").click(function(){ var event = $(this).attr("lay-portal-event"); if(!event){ event = $(this).parent().attr("lay-portal-event"); } if(event && me[event]){ me[event](); } }); }, swapScreen:function(){ //切换屏幕 var me = this; if(me.fullscreen){ //恢复 if(typeof window.ActiveXObject != "undefined") { //这的方法 模拟f11键,使浏览器全屏 var wscript = new ActiveXObject("WScript.Shell"); if(wscript != null) { wscript.SendKeys("{F11}"); } }else{ if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } if(typeof cfs != "undefined" && cfs) { cfs.call(el); } } $("[lay-portal-event='swapScreen'] i").addClass(me.mainConfig.fullClass); $("[lay-portal-event='swapScreen'] i").removeClass(me.mainConfig.restoreClass); me.fullscreen = false; }else{ //全屏 var el = document.documentElement; var rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullscreen; if(typeof window.ActiveXObject != "undefined") { //这的方法 模拟f11键,使浏览器全屏 var wscript = new ActiveXObject("WScript.Shell"); if(wscript != null) { wscript.SendKeys("{F11}"); } }else if(typeof rfs != "undefined" && rfs){ rfs.call(el); } $("[lay-portal-event='swapScreen'] i").removeClass(me.mainConfig.fullClass); $("[lay-portal-event='swapScreen'] i").addClass(me.mainConfig.restoreClass); me.fullscreen = true; } }, swapMenu:function(){//切换菜单 var me = this; if(me.menuStyle == "normal"){ //要最小化 me.minMenu(); }else{ me.maxMenu(); } }, maxMenu:function(){ var me = this; //$('#mainEasyuiLayout').layout('expand','west'); //$("#portal .layui-side-menu span").show(); //$("#portal_menu").removeClass("sidebarHover"); //$(".side-hover dl").hide(); //$(".layui-logo img").attr("src",me.mainConfig.companyLogo); if(me.menuChangeWidthEl){ layui.each(me.menuChangeWidthEl,function(_index,_item){ $(_item).css("width",me.mainConfig.leftMenuWidth-5) $(_item).parent('.layout-panel-west').css("width",me.mainConfig.leftMenuWidth); }); } if(me.menuChangeLeftEl){ layui.each(me.menuChangeLeftEl,function(_index,_item){ var width=$('body').width()-10-me.mainConfig.leftMenuWidth; $(_item).css("width",width-5); $(_item).parent('.layout-panel-center').css({"width":width,'left':me.mainConfig.leftMenuWidth+'px'}); }) } $("[lay-portal-event='swapMenu'] i").addClass(me.mainConfig.menuClass); $("[lay-portal-event='swapMenu'] i").removeClass(me.mainConfig.menuMinClass); me.menuStyle = "normal"; }, minMenu:function(){ var me = this; //$('#mainEasyuiLayout').layout('collapse','west'); //$("#portal .layui-side-menu span").hide(); //$("#portal_menu").addClass("sidebarHover"); //$(".layui-nav-item").siblings().removeClass("layui-nav-itemed") //$(".layui-logo img").attr("src",me.mainConfig.companyMinLogo); if(me.menuChangeWidthEl){ layui.each(me.menuChangeWidthEl,function(_index,_item){ $(_item).css("width",me.mainConfig.leftMenuMinWidth-5) $(_item).parent('.layout-panel-west').css("width",me.mainConfig.leftMenuMinWidth); }); } if(me.menuChangeLeftEl){ layui.each(me.menuChangeLeftEl,function(_index,_item){ var width=$('body').width()-10-me.mainConfig.leftMenuMinWidth; $(_item).css("width",width-5); $(_item).parent('.layout-panel-center').css({"width":width,'left':me.mainConfig.leftMenuMinWidth+'px'}); }); } $("[lay-portal-event='swapMenu'] i").removeClass(me.mainConfig.menuClass); $("[lay-portal-event='swapMenu'] i").addClass(me.mainConfig.menuMinClass); me.menuStyle = "min"; }, fav:function () { var me =this; me.webMenu.changeFav(function(isFav){ me.showFavImage(!isFav); }); }, relogin:function(callback){ //重新登录 var me =this; $webUtil.copyConfig(me,me.moduleKey); var formHtml = '
    '; var form = layui.form; var btn=['登录','取消']; var height =200; var thisindex = layer.open({ type:1, title:'输入密码重新登录', btn:btn, //skin:'layui-layer-lan', content:formHtml, area:['350px',height+'px'], btnAlign:'r', closeBtn:0, shade:true, resize:false, success:function(layero){ var formItems = []; formItems.push({ type:'password', name:'password', text:'请输入密码' }); form.addItems(me.id+"_relogin",formItems,function(){},me.sourceData,{defaultColumnOneRow:1}); $("#form_" + me.id + "_relogin").keydown(function(e){ if(e.keyCode == 13){ $(this).parent().parent().find(".layui-layer-btn0").click(); } layui.stope(e); }); }, yes:function(index,layero){ //先验证 if(form.validata(me.id + "_relogin")){ var values = form.getValues(me.id + "_relogin"); browserInfo = checkBrowser(); var loginData = { userid : $webUtil.getCurrentUserId(), password : values['password'], isForceLogin : true, browser:browserInfo.browser, browserversion:browserInfo.browserversion, osversion: browserInfo.osversion }; $webUtil.post(me.loginUrl,loginData,function(result){ if(result == undefined || result == null){ $webUtil.showErrorMsg("登录出现了错误!请查看服务器是否开启"); } if (result.success){ //还需要刷新菜单,否则没有权限 me.webMenu.init(); $webUtil.showAutoMsg("登录成功,等到左侧功能菜单刷新完成后您就可以继续使用本系统"); layer.close(index); if(callback){ callback(); } }else { $webUtil.showErrorMsg(result.msg); } }); } }, btn2:function(index,layero){ window.location.href=projectName + "index.html"; } }); }, changepdw:function(isMustChange,callback){ var me =this; $webUtil.copyConfig(me,me.moduleKey); var formHtml = '
    '; var form = layui.form; var btn=['修改','取消']; var height =280; if(isMustChange){ height = 320; } var thisindex = layer.open({ type:1, title:'修改密码', btn:btn, //skin:'layui-layer-lan', content:formHtml, area:['350px',height+'px'], btnAlign:'r', closeBtn:0, shade:true, resize:false, success:function(layero){ var formItems = []; if(isMustChange){ formItems.push({ type:'word', name:'label', text:'您的密码已经过期,请立即更改密码', labelWidth:340, titleAlign:'center' }); } formItems.push({ type:'password', name:'password', text:'当前密码', required:true }); formItems.push({ type:'password', name:'password', text:'新密码', required:true }); formItems.push({ type:'password', name:'confirmPassword', text:'确认密码', required:true }); form.addItems(me.id+"_changepdw",formItems,function(){},me.sourceData,{defaultColumnOneRow:1}); }, yes:function(index,layero){ //先验证 if(form.validata()){ var values = form.getValues(me.id + "_changepdw"); values.userOid = $webUtil.getCurrentUserOid(); $webUtil.ajax('post','/userQueryController/changePassword',values,function(result){ if(result.success){ $webUtil.showMsg("修改密码成功",function(){ if(callback){ callback(); } }); layer.close(thisindex); }else{ $webUtil.showErrorMsg(result.msg); } },function(xhr,err){ $webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },configData.frameworkPath); } }, btn2:function(index,layero){ if(isMustChange){ $webUtil.showConfirmMsg("您的密码已经过期,你必须修改后才能使用本系统,如果取消将会返回登录页面,是否继续?",function (index){ me.logout(true); },function(){ }); }else { layer.close(index); } } }); }, install:function(){ var me = this; $webUtil.dialog({ type: 2, fullScreen:true, content:(me.mainConfig.installHtml)?me.mainConfig.installHtml:"install.html", title:'使用和安装说明' }); }, proProxy:function(){ //流程代理 var me = this; var menuObject = { id:'workflowProxy', text:'流程代理设置', bsUrl:'USEJS://process/vciWebProProxy', notAllowFav:true }; me.showTabByMenu("workflowProxy",menuObject); }, onlineUser:function(){ //在线用户列表 var me = this; var menuObject = { id:'vciWebOnlineUser', text:'在线用户列表', bsUrl:'USEJS://framework/vciWebOnlineUser', notAllowFav:true }; me.showTabByMenu("vciWebOnlineUser",menuObject); }, logout:function(isIgnore){ if(isIgnore){ $webUtil.post(configData.logoutUrl,{},function(result){ //无论成功与否都需要跳转了 $.removeCookie('AuthorizationToken',{path:"/"}); window.location.href = projectName + "index.html"; },function (err,xhr) { $.removeCookie('AuthorizationToken',{path:"/"}); window.location.href = projectName + "index.html"; }); }else { $webUtil.showConfirmMsg('您确定要退出系统吗', function (index) { $webUtil.post(configData.logoutUrl, {}, function (result) { //无论成功与否都需要跳转了 $.removeCookie('AuthorizationToken',{path:"/"}); window.location.href = projectName + "index.html"; },function (err,xhr) { $.removeCookie('AuthorizationToken',{path:"/"}); window.location.href = projectName + "index.html"; }); }); } }, showFavImage:function(isFav){ var me = this; if(isFav){ $("#portal_fav i").removeClass(me.mainConfig.unFavClass); $("#portal_fav i").addClass(me.mainConfig.favClass); }else{ $("#portal_fav i").removeClass(me.mainConfig.favClass); $("#portal_fav i").addClass(me.mainConfig.unFavClass); } }, lockWindow:function(){//锁定窗口,必须使用密码才能解锁 var me = this; var windowHtml = '
    ' + '
    ' + '' + '
    ' + '' + '
    ' + '
    ' + '
    '; var thisindex = layer.open({ type:1, title:'锁定窗口', btn:['解锁'], //skin:'layui-layer-lan', content:windowHtml, area:['350px','200px'], btnAlign:'r', closeBtn:0, shadeClose:false, shade:true, resize:false, yes:function(index,layero){ var form = layui.form; //先验证 if(form.validata()){ var values = form.getValues('vciPortalLockWindow'); $webUtil.post('/webUserController/checkPassword',values,function(result){ if(result.success){ layer.close(thisindex); }else{ $webUtil.showErrorMsg(result.msg); } },function(xhr,err){ $webUtil.showErrorMsg("请求服务出现了错误,可能服务器未开启"); },configData.frameworkPath); } } }); }, showTabByMenu:function(id,menuObject){ var me = this; if(!me.allAddedTab){ me.allAddedTab = {}; } var isAdded = false; for(var key in me.allAddedTab){ if(key == id){ isAdded = true; break; } } if(!isAdded){ if(!menuObject){ menuObject = me.webMenu.getMenuObjectById(id); } var url = menuObject.bsUrl || menuObject.url || menuObject.href; if($webUtil.isNull(url)) { return ; } var urlUp = url.toUpperCase(); if($webUtil.startWith(urlUp,"USEJS:")){ //说明是使用js组件 var trueUrl = url.substring(6); if($webUtil.startWith(trueUrl,"//")){ trueUrl = trueUrl.substring(2); } var sourceData = {}; sourceData['functionId'] = id; me.wrapperSourceDataByUrl(trueUrl,sourceData); if(menuObject && menuObject.initSourceData){ for(var key in menuObject.initSourceData){ sourceData[key] = menuObject.initSourceData[key]; } } if(trueUrl.indexOf("?")>-1) { trueUrl = trueUrl.substring(0, trueUrl.indexOf("?")); } trueUrl=trueUrl.replace(/^\/+/,''); layui.use([trueUrl],function(){ var newTabClass = layui[trueUrl]; newTabClass.id = id; newTabClass.sourceData = sourceData; if(menuObject.multiCompent){ newTabClass.multiCompent = menuObject.multiCompent; } me.element.tabAdd(me.tabPanelFilter,{ title:menuObject.text, id:id, item:newTabClass }); me.element.tabChange(me.tabPanelFilter,id); menuObject.instanceObject = newTabClass; }); }else if( $webUtil.startWith(urlUp,"OPEN:")){ window.open(url,id,'fullscreen=yes'); //说明是弹出窗口 }else if($webUtil.startWith(urlUp,"UI://") || $webUtil.startWith(url.toUpperCase(),"PLM.UIF.ENGINE.CLIENT.UILAYOUTPANEL?")){ //说明是UI上下文的定义 var type = ""; var content = ""; var sourceData = {}; var trueUrl = ""; sourceData['functionId'] = id; sourceData['sourceDataMap']={}; if($webUtil.startWith(urlUp,"UI://")){ trueUrl = url; //UI://type#content?param=xxx if(trueUrl.indexOf("?") > -1){ var temp = trueUrl.substring(3,trueUrl.indexOf("?")); if(temp.indexOf("#") < 0){ $webUtil.showErrorMsg("请联系管理员,这个菜单的地址格式不正确。应该是UI://type#content?param=xxx这种形式"); return; } type = temp.split("#")[0]; content = temp.split("#")[1]; }else{ var temp = trueUrl.substring("UI://".length); if(temp.indexOf("#") < 0){ $webUtil.showErrorMsg("请联系管理员,这个菜单的地址格式不正确。应该是UI://type#content?param=xxx这种形式"); return; } type = temp.split("#")[0]; content = temp.split("#")[1]; } }else{ trueUrl = url; //plm.uif.engine.client.UILayoutPanel?type=batchtask&context=batchtaskManagementExp if(trueUrl.indexOf("?") <0){ $webUtil.showErrorMsg("请联系管理员,这个菜单的地址格式不正确。推荐使用UI://type#content?param=xxx这种形式"); return; } var temp = trueUrl.split("?")[1]; var paramsArray = temp.split("&"); for(var i = 0 ; i < paramsArray.length ; i ++){ var preParam =paramsArray[i].split("="); if(preParam[0] == 'type'){ type = preParam[1]; }else if(preParam[0] == 'context' ){ content = preParam[1]; }else{ sourceData['sourceDataMap'][preParam[0]]=preParam[1] } } } me.wrapperSourceDataByUrl(trueUrl,sourceData.sourceDataMap); if(menuObject && menuObject.initSourceData){ for(var key in menuObject.initSourceData){ sourceData['sourceDataMap'][key] = menuObject.initSourceData[key]; } } sourceData['btmType'] = type; sourceData['content'] = content; layui.use('platform/objectService/VciUIContentViewer',function () { var newTabClass = layui['platform/objectService/VciUIContentViewer']; newTabClass.id = id; newTabClass.multiCompent = true; newTabClass.sourceData = sourceData; me.element.tabAdd(me.tabPanelFilter,{ title:menuObject.text, id:id, item:newTabClass }); me.element.tabChange(me.tabPanelFilter,id); menuObject.instanceObject = newTabClass; }); }else if($webUtil.isNotNull(url) ){ //链接网页 me.element.tabAdd(me.tabPanelFilter,{ title:menuObject.text, id:id, href:url }); me.element.tabChange(me.tabPanelFilter,id); }else{ return; } me.allAddedTab[id] = menuObject; }else{ me.element.tabChange(me.tabPanelFilter,id);//自动选择这个选项卡 } if(menuObject.notAllowFav == true){ me.webMenu.currentMenuId = ""; } }, wrapperSourceDataByUrl : function(trueUrl,sourceData){ if(trueUrl.indexOf("?") > -1){//说明有参数 var params = trueUrl.substring(trueUrl.indexOf("?")+1); var paramsArray = params.split("&"); for(var i = 0 ; i < paramsArray.length ; i ++){ var preParam =paramsArray[i].split("="); sourceData[preParam[0]] = preParam[1]; } } }, refresh:function(){ layui.table.reload('table_vciProcessUndoTask_vciDefaultIndex_protask_1'); layui.each(this.allAddedTab,function (i,tab){ if(tab.instanceObject.refreshAll){ tab.instanceObject.refreshAll() }else{ try { tab.instanceObject.refresh() }catch (e) { } } }) }, msgcenter:function(){ $("#portal_msgcount_star").hide(); //消息中心 var me = this; var menuObject = { id:'messageCenter', text:'消息中心', bsUrl:'USEJS://messages/vciWebMessage', notAllowFav:true }; portal.showTabByMenu("messageCenter",menuObject); }, portal:function(){ var that = this; var portalUrl = "url1";//非工人 var rolesname = $webUtil.getRolesName(); layui.each(rolesname,function(_index,_item){ if(_item == "工人"){ portalUrl = "url2" } }); window.open("portalUrl"); }, mpm:function (){ var that = this; var winOpen = window.open("vci-client://do?token=" + $webUtil.getCurrentUserId(),'','location=no,width=1,height=1'); setTimeout(function(){winOpen.close();},500); } }; exports('vciWebPortalDojoUI',portal); });