Authored by 袁晋鹏

新增日志页面嵌套监控的公共方法,后续根据需求合入公共代码

@@ -43,7 +43,8 @@ layui.define(['laytpl', 'layer', 'element', 'util'], function(exports){ @@ -43,7 +43,8 @@ layui.define(['laytpl', 'layer', 'element', 'util'], function(exports){
43 //独立页面路由,可随意添加(无需写参数) 43 //独立页面路由,可随意添加(无需写参数)
44 ,indPage: [ 44 ,indPage: [
45 '/user/login', //登入页 45 '/user/login', //登入页
46 - '/page/forward' // 听云访问系统页面 46 + '/page/forward', // 听云访问系统页面
  47 + '/page/log' //辽宁日志系统访问监控页面
47 ] 48 ]
48 49
49 //扩展的第三方模块 50 //扩展的第三方模块
  1 +layui.define(['sessions', 'form', 'common'],function (exports) {
  2 + //登录相关模块,对外暴露的接口
  3 + exports('pageLog', function () {
  4 +
  5 + var $ = layui.$
  6 + , setter = layui.setter
  7 + , form = layui.form
  8 + , router = layui.router()
  9 + , search = router.search
  10 + , common = layui.common
  11 + , sessions = layui.sessions;
  12 +
  13 +
  14 + function getUrlParam(key) {
  15 + var href = window.location.href;
  16 + var url = href.split("?");
  17 + if (url.length <= 1) {
  18 + return "";
  19 + }
  20 + var params = url[1].split("&");
  21 +
  22 + for (var i = 0; i < params.length; i++) {
  23 + var param = params[i].split("=");
  24 + if (key == param[0]) {
  25 + var temp = "" + params[1];
  26 + if (temp.search("#") > -1) {
  27 + return temp.substring(0, temp.indexOf("#"));
  28 + }
  29 + return param[1];
  30 + }
  31 + }
  32 + return "";
  33 + }
  34 +
  35 + try {
  36 + logPage();
  37 + }catch (e) {
  38 + err()
  39 + }
  40 +
  41 +
  42 + function err(){
  43 + layer.msg('没有权限!', {icon: 5, time: 500});
  44 + $('#text').text("没有权限!")
  45 + layer.closeAll();
  46 + }
  47 +
  48 + /**
  49 + * 听云系统嵌套咋们系统
  50 + * 听云token是通过连接传参,key=Authorization
  51 + * url 是请求的页面
  52 + * http://xxxxxx:8088/?show=0&Authorization=token&url=alarm/activewarning#/page/forward
  53 + * @constructor
  54 + */
  55 + function logPage(){
  56 + var index = layer.load(2); //加载层
  57 + // 日志token
  58 + var tokenStr = getUrlParam("Authorization").replace('Bearer%20','').replace('Bearer ','');
  59 + // 跳转地址
  60 + var url = getUrlParam("url").split('#/')[0];
  61 +
  62 + // 日志地址
  63 + var logApi = 'http://192.168.0.44:8080';
  64 + $.ajax({
  65 + url: '/config/getConfig',
  66 + data: {
  67 + configName: 'url'
  68 + },
  69 + async: false,
  70 + success(response) {
  71 + //debugger
  72 + if(response.gateway){
  73 + //logApi = response.gateway;
  74 + }
  75 + }
  76 + });
  77 +
  78 + var api = logApi + "/api-user/users/getUserByToken";
  79 + $.ajax(api,{
  80 + data:{
  81 + "access_token": tokenStr
  82 + },
  83 + headers: {
  84 + 'authorization': 'Bearer '+tokenStr,
  85 + },
  86 + //dataType:'json',//服务器返回json格式数据
  87 + type:'get',//HTTP请求类型
  88 + timeout:30000,//超时时间设置为30秒;
  89 + //contentType: 'application/x-www-form-urlencoded',
  90 + success:function(rsp){
  91 + if(rsp.code == 0){
  92 + console.log(JSON.stringify(rsp.data));
  93 + var name = rsp.object.username;
  94 + var pwd = common.Base64.decode(rsp.object.password);
  95 + console.log(pwd);
  96 + var field = {};
  97 + field.username = name;
  98 + field.password = '123456';
  99 + field.grant_type = 'password';
  100 + field.scope = 'app';
  101 + field.client_id = 'webApp';
  102 + field.client_secret = 'webApp';
  103 + field.deviceId = "";
  104 + field.validCode = '';
  105 +
  106 +
  107 + $.ajax({
  108 + url: common.domainName + '/api-auth/oauth/token',
  109 + data: field,
  110 + type: 'POST',
  111 + dataType: 'JSON',
  112 + success: function (data) {
  113 + if (data.access_token) {
  114 + console.log('登录成功')
  115 +
  116 + layui.data(setter.tableName, {
  117 + key: setter.request.tokenName
  118 + , value: data.access_token
  119 + });
  120 + sessions.putToken(data);
  121 + sessions.putUser(name);
  122 + layer.closeAll();
  123 + //将access_token和refresh_token写入本地
  124 + localStorage.setItem("access_token", data.access_token);
  125 + localStorage.setItem("refresh_token", data.refresh_token);
  126 + //将登陆url写入本地
  127 + localStorage.setItem("loginUrl", location.href);
  128 +
  129 + //登入成功的提示与跳转
  130 + window.location = window.location.origin + '/start/index.html?show=0&access_token='+data.access_token+'#/'+url;
  131 +
  132 + } else {
  133 + layer.msg('登录失败,请重试', {icon: 5, time: 500});
  134 + }
  135 + },
  136 + error: function (xhr) {
  137 + err();
  138 + }
  139 + });
  140 + }
  141 + },
  142 + error:function(xhr,type,errorThrown){
  143 + err();
  144 + }
  145 + });
  146 + }
  147 + });
  148 +});
@@ -8,303 +8,310 @@ @@ -8,303 +8,310 @@
8 */ 8 */
9 9
10 layui.extend({ 10 layui.extend({
11 - setter: 'config' //配置文件  
12 - ,admin: 'lib/admin' //核心模块  
13 - /*,sessions: 'controller/sessions'*/  
14 - ,view: 'lib/view' //核心模块  
15 -}).define(['setter', 'admin'], function(exports){  
16 - var setter = layui.setter  
17 - ,element = layui.element  
18 - ,admin = layui.admin  
19 - ,tabsPage = admin.tabsPage  
20 - ,view = layui.view  
21 - ,defaultIndex = ''  
22 -  
23 -  
24 - // 根据 路由渲染页面  
25 - ,renderPage = function(){  
26 - var show = location.search.substr(1).split("&")[0].split("=")[1];  
27 - var router = layui.router()  
28 - ,path = router.path  
29 - ,pathURL = admin.correctRouter(router.path.join('/'));  
30 - //默认读取主页  
31 - if(!path.length) path = [''];  
32 - if(!tabsPage.index && !renderPage.haveInit && show != '0') path=['']  
33 - // 如果访问首页  
34 - if(pathURL === '/'){  
35 - // path[path.length - 1] = setter.entry;  
36 -  
37 - // 根据不同角色 用户 展示不同首页 开始  
38 - if (!defaultIndex) {  
39 - $.ajax({  
40 - url: sessionStorage.getItem('domainName') + '/api-web/defaultIndex/getDefaultIndexByUser?access_token=' + localStorage.getItem("access_token"),  
41 - async: false,  
42 - success(response) {  
43 - // 获取成功  
44 - if(response && response.success && response.object){  
45 - if (response.object.path && response.object.path != '/') {  
46 - defaultIndex = '/' + response.object.path;  
47 - } else {  
48 - defaultIndex = setter.entry;  
49 - }  
50 - setter.entry = '';  
51 - }  
52 - }  
53 - });  
54 - }  
55 - // path = defaultIndex.substring(1).split('/');  
56 - path = defaultIndex.split('/');  
57 - // 根据不同角色 用户 展示不同首页 结束  
58 - }  
59 - if (pathURL === defaultIndex) {  
60 - $('li[lay-id="/"]').click();  
61 - return;  
62 - } 11 + setter: 'config' //配置文件
  12 + , admin: 'lib/admin' //核心模块
  13 + /*,sessions: 'controller/sessions'*/
  14 + , view: 'lib/view' //核心模块
  15 +}).define(['setter', 'admin'], function (exports) {
  16 + var setter = layui.setter
  17 + , element = layui.element
  18 + , admin = layui.admin
  19 + , tabsPage = admin.tabsPage
  20 + , view = layui.view
  21 + , defaultIndex = ''
  22 +
  23 +
  24 + // 根据 路由渲染页面
  25 + , renderPage = function () {
  26 + var show = location.search.substr(1).split("&")[0].split("=")[1];
  27 + var router = layui.router()
  28 + , path = router.path
  29 + , pathURL = admin.correctRouter(router.path.join('/'));
  30 + //默认读取主页
  31 + if (!path.length) path = [''];
  32 + if (!tabsPage.index && !renderPage.haveInit && show != '0') path = ['']
  33 + // 如果访问首页
  34 + if (pathURL === '/') {
  35 + // path[path.length - 1] = setter.entry;
  36 +
  37 + // 根据不同角色 用户 展示不同首页 开始
  38 + if (!defaultIndex) {
  39 + $.ajax({
  40 + url: sessionStorage.getItem('domainName') + '/api-web/defaultIndex/getDefaultIndexByUser?access_token=' + localStorage.getItem("access_token"),
  41 + async: false,
  42 + success(response) {
  43 + // 获取成功
  44 + if (response && response.success && response.object) {
  45 + if (response.object.path && response.object.path != '/') {
  46 + defaultIndex = '/' + response.object.path;
  47 + } else {
  48 + defaultIndex = setter.entry;
  49 + }
  50 + setter.entry = '';
  51 + }
  52 + }
  53 + });
  54 + }
  55 + // path = defaultIndex.substring(1).split('/');
  56 + path = defaultIndex.split('/');
  57 + // 根据不同角色 用户 展示不同首页 结束
  58 + }
  59 + if (pathURL === defaultIndex) {
  60 + $('li[lay-id="/"]').click();
  61 + return;
  62 + }
63 63
64 - /*  
65 - layui.config({  
66 - base: setter.base + 'controller/'  
67 - });  
68 - */  
69 -  
70 - //重置状态  
71 - var reset = function(type){  
72 - //renderPage.haveInit && layer.closeAll();  
73 - if(renderPage.haveInit){  
74 - $('.layui-layer').each(function(){  
75 - var othis = $(this),  
76 - index = othis.attr('times');  
77 - if(!othis.hasClass('layui-layim')){  
78 - layer.close(index);  
79 - }  
80 - });  
81 - }  
82 - renderPage.haveInit = true; 64 + /*
  65 + layui.config({
  66 + base: setter.base + 'controller/'
  67 + });
  68 + */
  69 +
  70 + //重置状态
  71 + var reset = function (type) {
  72 + //renderPage.haveInit && layer.closeAll();
  73 + if (renderPage.haveInit) {
  74 + $('.layui-layer').each(function () {
  75 + var othis = $(this),
  76 + index = othis.attr('times');
  77 + if (!othis.hasClass('layui-layim')) {
  78 + layer.close(index);
  79 + }
  80 + });
  81 + }
  82 + renderPage.haveInit = true;
  83 +
  84 + $(APP_BODY).scrollTop(0);
  85 + delete tabsPage.type; //重置页面标签的来源类型
  86 + };
  87 +
  88 + //如果路由来自于 tab 切换,则不重新请求视图
  89 + if (tabsPage.type === 'tab') {
  90 + //切换到非主页、或者切换到主页且主页必须有内容。方可阻止请求
  91 + if (pathURL !== '/' || (pathURL === '/' && admin.tabsBody().html())) {
  92 + admin.tabsBodyChange(tabsPage.index);
  93 + return reset(tabsPage.type);
  94 + }
  95 + }
83 96
84 - $(APP_BODY).scrollTop(0);  
85 - delete tabsPage.type; //重置页面标签的来源类型  
86 - }; 97 + //请求视图渲染
  98 + view().render(path.join('/')).then(function (res) {
  99 + //遍历页签选项卡
  100 + var matchTo
  101 + , tabs = $('#LAY_app_tabsheader>li');
  102 +
  103 + tabs.each(function (index) {
  104 + var li = $(this)
  105 + , layid = li.attr('lay-id');
  106 + if (layid === pathURL) {
  107 + matchTo = true;
  108 + tabsPage.index = index;
  109 + }
  110 + });
  111 + var tabName;
  112 + //start lsq 页面刷新后名称改变,把aj得存储到localStorage中 2022-03-30
  113 + let routerPath = router.path;
  114 + if (routerPath.indexOf('ajConfig') != -1 && routerPath.indexOf('view') != -1 && !localStorage.getItem(router.search.ajConfig)) {
  115 + localStorage.setItem(router.search.ajConfig, admin.tabsPage.elem.text());
  116 + }
  117 + //end lsq 2022-03-30
  118 + try {
  119 + let el = admin.tabsPage.elem;
  120 + if (el && el.attr('lay-href-type')) {
  121 + if (el.attr('lay-href-type') == 'menu' && !matchTo) {
  122 + tabName = admin.tabsPage.elem.text();
  123 + }
  124 + }
  125 + } catch (e) {
  126 + }
  127 + if (!tabName) {
  128 + //lsq 页面刷新后名称改变 2022-03-30
  129 + if (routerPath.indexOf('ajConfig') != -1 && routerPath.indexOf('view') != -1) {
  130 + tabName = localStorage.getItem(router.search.ajConfig);
  131 + } else {
  132 + tabName = res.title
87 133
88 - //如果路由来自于 tab 切换,则不重新请求视图  
89 - if(tabsPage.type === 'tab'){  
90 - //切换到非主页、或者切换到主页且主页必须有内容。方可阻止请求  
91 - if(pathURL !== '/' || (pathURL === '/' && admin.tabsBody().html())){  
92 - admin.tabsBodyChange(tabsPage.index);  
93 - return reset(tabsPage.type);  
94 - }  
95 - }  
96 -  
97 - //请求视图渲染  
98 - view().render(path.join('/')).then(function(res){  
99 - //遍历页签选项卡  
100 - var matchTo  
101 - ,tabs = $('#LAY_app_tabsheader>li');  
102 -  
103 - tabs.each(function(index){  
104 - var li = $(this)  
105 - ,layid = li.attr('lay-id');  
106 - if(layid === pathURL){  
107 - matchTo = true;  
108 - tabsPage.index = index;  
109 - }  
110 - });  
111 - var tabName;  
112 - //start lsq 页面刷新后名称改变,把aj得存储到localStorage中 2022-03-30  
113 - let routerPath=router.path;  
114 - if(routerPath.indexOf('ajConfig')!=-1 && routerPath.indexOf('view')!=-1 && !localStorage.getItem(router.search.ajConfig)){  
115 - localStorage.setItem(router.search.ajConfig,admin.tabsPage.elem.text()); 134 + }
  135 + }
  136 +
  137 + //如果未在选项卡中匹配到,则追加选项卡
  138 + if (setter.pageTabs && pathURL !== '/') {
  139 + if (!matchTo) {
  140 + $(APP_BODY).append('<div class="layadmin-tabsbody-item layui-show"></div>');
  141 + tabsPage.index = tabs.length;
  142 + element.tabAdd(FILTER_TAB_TBAS, {
  143 + title: '<span>' + (tabName || '新标签页') + '</span>'
  144 + , id: pathURL
  145 + , attr: router.href
  146 + });
  147 + }
  148 + }
  149 +
  150 + this.container = admin.tabsBody(tabsPage.index);
  151 + setter.pageTabs || this.container.scrollTop(0); //如果不开启标签页,则跳转时重置滚动条
  152 +
  153 + //定位当前tabs
  154 + element.tabChange(FILTER_TAB_TBAS, pathURL);
  155 + // 修改为当前菜单名称
  156 + $('* [lay-id="' + pathURL + '"] span').text(tabName)
  157 + admin.tabsBodyChange(tabsPage.index);
  158 +
  159 + }).done(function () {
  160 + layui.use('common', layui.cache.callback.common);
  161 + $win.on('resize', layui.data.resize);
  162 +
  163 + element.render('breadcrumb', 'breadcrumb');
  164 +
  165 + //容器 scroll 事件,剔除吸附层
  166 + admin.tabsBody(tabsPage.index).on('scroll', function () {
  167 + var othis = $(this)
  168 + , elemDate = $('.layui-laydate')
  169 + , layerOpen = $('.layui-layer')[0];
  170 +
  171 + //关闭 layDate
  172 + if (elemDate[0]) {
  173 + elemDate.each(function () {
  174 + var thisElemDate = $(this);
  175 + thisElemDate.hasClass('layui-laydate-static') || thisElemDate.remove();
  176 + });
  177 + othis.find('input').blur();
  178 + }
  179 +
  180 + //关闭 Tips 层
  181 + layerOpen && layer.closeAll('tips');
  182 + });
  183 + });
  184 +
  185 + reset();
116 } 186 }
117 - //end lsq 2022-03-30  
118 - try {  
119 - let el = admin.tabsPage.elem;  
120 - if(el && el.attr('lay-href-type')){  
121 - if(el.attr('lay-href-type') == 'menu' && !matchTo){  
122 - tabName= admin.tabsPage.elem.text(); 187 +
  188 + //入口页面
  189 + , entryPage = function (fn) {
  190 + var router = layui.router()
  191 + , container = view(setter.container)
  192 + , pathURL = admin.correctRouter(router.path.join('/'))
  193 + , isIndPage;
  194 + //检查是否属于独立页面
  195 + layui.each(setter.indPage, function (index, item) {
  196 + if (pathURL === item) {
  197 + return isIndPage = true;
  198 + }
  199 + });
  200 +
  201 + //将模块根路径设置为 controller 目录
  202 + layui.config({
  203 + base: setter.base + 'controller/'
  204 + });
  205 +
  206 + // 跳转到过度页面的时候,判断参数与跳转的过渡页面的参数是否一直,则强制设置hash
  207 + // http://localhost:8088/?Authorization=xxx&show=0&url=alarm/activewarning#/page/forward
  208 + var href = window.location.href;
  209 + console.log(pathURL)
  210 + console.log(href)
  211 + if (href.indexOf('?Authorization') != -1 && href.indexOf('&show=0&url=') != -1 && pathURL !== '/page/forward'&& pathURL !== '/page/log') {
  212 + if(href.indexOf('&flag=log') != -1){
  213 + return location.hash = "/page/log";
  214 + }else {
  215 + return location.hash = "/page/forward";
123 } 216 }
124 } 217 }
125 - } catch (e){  
126 - }  
127 - if(!tabName){  
128 - //lsq 页面刷新后名称改变 2022-03-30  
129 - if(routerPath.indexOf('ajConfig')!=-1 && routerPath.indexOf('view')!=-1){  
130 - tabName=localStorage.getItem(router.search.ajConfig);  
131 - }else{  
132 - tabName= res.title  
133 218
  219 + //跳转到告警页面
  220 + let params = new URLSearchParams(location.search);
  221 + let [bizId] = [params.get('bizId')];
  222 + //活动告警页面
  223 + if (href.indexOf('&show=3') != -1 && pathURL !== '/alarm/activewarning') {
  224 + return location.hash = "/alarm/activewarning/bizId=" + bizId;
  225 + }
  226 + //历史告警页面
  227 + if (href.indexOf('&show=4') != -1 && pathURL !== '/alarm/historywarning') {
  228 + return location.hash = "/alarm/historywarning/bizId=" + bizId;
134 } 229 }
135 - }  
136 230
137 - //如果未在选项卡中匹配到,则追加选项卡  
138 - if(setter.pageTabs && pathURL !== '/'){  
139 - if(!matchTo){  
140 - $(APP_BODY).append('<div class="layadmin-tabsbody-item layui-show"></div>');  
141 - tabsPage.index = tabs.length;  
142 - element.tabAdd(FILTER_TAB_TBAS, {  
143 - title: '<span>'+ (tabName || '新标签页') +'</span>'  
144 - ,id: pathURL  
145 - ,attr: router.href  
146 - });  
147 - }  
148 - }  
149 -  
150 - this.container = admin.tabsBody(tabsPage.index);  
151 - setter.pageTabs || this.container.scrollTop(0); //如果不开启标签页,则跳转时重置滚动条  
152 -  
153 - //定位当前tabs  
154 - element.tabChange(FILTER_TAB_TBAS, pathURL);  
155 - // 修改为当前菜单名称  
156 - $('* [lay-id="' + pathURL + '"] span').text(tabName)  
157 - admin.tabsBodyChange(tabsPage.index);  
158 -  
159 - }).done(function(){  
160 - layui.use('common', layui.cache.callback.common);  
161 - $win.on('resize', layui.data.resize);  
162 -  
163 - element.render('breadcrumb', 'breadcrumb');  
164 -  
165 - //容器 scroll 事件,剔除吸附层  
166 - admin.tabsBody(tabsPage.index).on('scroll', function(){  
167 - var othis = $(this)  
168 - ,elemDate = $('.layui-laydate')  
169 - ,layerOpen = $('.layui-layer')[0];  
170 -  
171 - //关闭 layDate  
172 - if(elemDate[0]){  
173 - elemDate.each(function(){  
174 - var thisElemDate = $(this);  
175 - thisElemDate.hasClass('layui-laydate-static') || thisElemDate.remove();  
176 - });  
177 - othis.find('input').blur();  
178 - } 231 + //独立页面
  232 + if (isIndPage || pathURL === '/user/login' || pathURL === '/page/forward' || pathURL == "/page/log") { //此处单独判断登入页,是为了兼容旧版(即未在 sessions.js 配置 indPage 的情况)
  233 +
  234 + let path = router.path.join('/')
  235 + if (pathURL.indexOf('/user/login') != -1) {
  236 + var loginIndex = 'default';
  237 + // let loginSkin = sessionStorage.getItem("loginSkin");
  238 + //lsq 从cookie中获取登录皮肤 2022-03-31
  239 + let loginSkin = admin.getCookie("loginSkin");
  240 + if (loginSkin && ["default", 'skin1', 'skin2'].indexOf(loginSkin) != -1) {
  241 + loginIndex = loginSkin;
  242 + }
179 243
180 - //关闭 Tips 层  
181 - layerOpen && layer.closeAll('tips');  
182 - });  
183 - }); 244 + path = path + '-' + loginIndex;
  245 + }
  246 + container.render(path).done(function () {
  247 + admin.pageType = 'alone';
  248 + });
  249 + } else { //后台框架页面
184 250
185 - reset();  
186 - }  
187 -  
188 - //入口页面  
189 - ,entryPage = function(fn){  
190 - var router = layui.router()  
191 - ,container = view(setter.container)  
192 - ,pathURL = admin.correctRouter(router.path.join('/'))  
193 - ,isIndPage;  
194 - //检查是否属于独立页面  
195 - layui.each(setter.indPage, function(index, item){  
196 - if(pathURL === item){  
197 - return isIndPage = true;  
198 - }  
199 - }); 251 + //强制拦截未登入
  252 + if (setter.interceptor) {
  253 + var local = layui.data(setter.tableName);
  254 + if (!local[setter.request.tokenName]) {
  255 + return location.hash = '/user/login/redirect=' + encodeURIComponent(pathURL); //跳转到登入页
  256 + }
  257 + }
200 258
201 - //将模块根路径设置为 controller 目录  
202 - layui.config({  
203 - base: setter.base + 'controller/'  
204 - }); 259 + //渲染后台结构
  260 + if (admin.pageType === 'console') { //后台主体页
  261 + renderPage();
  262 + } else { //初始控制台结构
  263 + var renderUrl = 'layout';
  264 + // if(localStorage.getItem("lgn") != 'admin'){
  265 + // renderUrl = 'layout-nx';
  266 + // }
  267 + let userLayout = sessionStorage.getItem("userLayout");
  268 + if (userLayout && ['layout', 'layout-nx'].indexOf(userLayout) != -1) {
  269 + renderUrl = userLayout;
  270 + }
  271 + container.render(renderUrl).done(function () {
  272 + renderPage();
  273 + layui.element.render();
  274 +
  275 + if (admin.screen() < 2) {
  276 + admin.sideFlexible();
  277 + }
  278 + admin.pageType = 'console';
  279 + });
  280 + }
205 281
206 - // 跳转到过度页面的时候,判断参数与跳转的过渡页面的参数是否一直,则强制设置hash  
207 - // http://localhost:8088/?Authorization=xxx&show=0&url=alarm/activewarning#/page/forward  
208 - var href = window.location.href;  
209 - if(href.indexOf('?Authorization') != -1 && href.indexOf('&show=0&url=') != -1 && pathURL !== '/page/forward'){  
210 - return location.hash = "/page/forward";  
211 - }  
212 - //跳转到告警页面  
213 - let params=new URLSearchParams(location.search);  
214 - let [bizId]=[params.get('bizId')];  
215 - //活动告警页面  
216 - if( href.indexOf('&show=3') != -1 && pathURL !== '/alarm/activewarning'){  
217 - return location.hash = "/alarm/activewarning/bizId="+bizId;  
218 - }  
219 - //历史告警页面  
220 - if( href.indexOf('&show=4') != -1 && pathURL !== '/alarm/historywarning'){  
221 - return location.hash = "/alarm/historywarning/bizId="+bizId;  
222 - }  
223 -  
224 - //独立页面  
225 - if(isIndPage || pathURL === '/user/login'|| pathURL === '/page/forward'){ //此处单独判断登入页,是为了兼容旧版(即未在 sessions.js 配置 indPage 的情况)  
226 -  
227 - let path = router.path.join('/')  
228 - if(pathURL.indexOf('/user/login') != -1){  
229 - var loginIndex = 'default';  
230 - // let loginSkin = sessionStorage.getItem("loginSkin");  
231 - //lsq 从cookie中获取登录皮肤 2022-03-31  
232 - let loginSkin = admin.getCookie("loginSkin");  
233 - if(loginSkin && ["default",'skin1','skin2'].indexOf(loginSkin) != -1){  
234 - loginIndex = loginSkin;  
235 } 282 }
  283 + }
  284 +
  285 + , APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'
  286 + , $ = layui.$, $win = $(window);
  287 +
  288 + //初始主体结构
  289 + layui.link(setter.base + 'style/admin.css?v=' + (admin.v + '-1'));
  290 + layui.link(setter.base + 'style/css/main.css?v=' + (admin.v + '-1'), entryPage, 'layuiAdmin');
  291 +
  292 + //监听Hash改变
  293 + window.onhashchange = function () {
  294 + entryPage();
  295 + //执行 {setter.MOD_NAME}.hash 下的事件
  296 + layui.event.call(this, setter.MOD_NAME, 'hash({*})', layui.router());
  297 + };
236 298
237 - path = path + '-' + loginIndex; 299 + //扩展 lib 目录下的其它模块
  300 + layui.each(setter.extend, function (index, item) {
  301 + var mods = {};
  302 + if (item === 'mxClient') {
  303 + mods[item] = '{/}' + setter.base + 'lib/mxgraph/' + item;
238 } 304 }
239 - container.render(path).done(function(){  
240 - admin.pageType = 'alone';  
241 - });  
242 - } else { //后台框架页面  
243 -  
244 - //强制拦截未登入  
245 - if(setter.interceptor){  
246 - var local = layui.data(setter.tableName);  
247 - if(!local[setter.request.tokenName]){  
248 - return location.hash = '/user/login/redirect='+ encodeURIComponent(pathURL); //跳转到登入页 305 + else if (item === 'soulTable' || item === 'tableFilter' || item === 'tableChild'
  306 + || item === 'tableMerge' || item === 'excel') {
  307 + mods[item] = '{/}' + setter.base + 'lib/soultable/' + item;
  308 + } else if (item === 'tableEdit' || item === 'tableTree') {
  309 + mods[item] = '{/}' + setter.base + 'lib/tabletree/' + item;
  310 + } else {
  311 + mods[item] = '{/}' + setter.base + 'lib/extend/' + item;
249 } 312 }
250 - }  
251 -  
252 - //渲染后台结构  
253 - if(admin.pageType === 'console') { //后台主体页  
254 - renderPage();  
255 - } else { //初始控制台结构  
256 - var renderUrl = 'layout';  
257 - // if(localStorage.getItem("lgn") != 'admin'){  
258 - // renderUrl = 'layout-nx';  
259 - // }  
260 - let userLayout = sessionStorage.getItem("userLayout");  
261 - if(userLayout && ['layout','layout-nx'].indexOf(userLayout) != -1){  
262 - renderUrl = userLayout;  
263 - }  
264 - container.render(renderUrl).done(function(){  
265 - renderPage();  
266 - layui.element.render();  
267 -  
268 - if(admin.screen() < 2){  
269 - admin.sideFlexible();  
270 - }  
271 - admin.pageType = 'console';  
272 - });  
273 - }  
274 -  
275 - }  
276 - }  
277 -  
278 - ,APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'  
279 - ,$ = layui.$, $win = $(window);  
280 -  
281 - //初始主体结构  
282 - layui.link(setter.base + 'style/admin.css?v='+ (admin.v + '-1'));  
283 - layui.link(setter.base + 'style/css/main.css?v='+ (admin.v + '-1'), entryPage, 'layuiAdmin');  
284 -  
285 - //监听Hash改变  
286 - window.onhashchange = function(){  
287 - entryPage();  
288 - //执行 {setter.MOD_NAME}.hash 下的事件  
289 - layui.event.call(this, setter.MOD_NAME, 'hash({*})', layui.router());  
290 - };  
291 -  
292 - //扩展 lib 目录下的其它模块  
293 - layui.each(setter.extend, function(index, item){  
294 - var mods = {};  
295 - if(item === 'mxClient'){  
296 - mods[item] = '{/}' + setter.base + 'lib/mxgraph/' + item;  
297 - }  
298 - else if(item === 'soulTable' || item === 'tableFilter' || item === 'tableChild'  
299 - || item === 'tableMerge' || item === 'excel'){  
300 - mods[item] = '{/}' + setter.base + 'lib/soultable/' + item;  
301 - }else if(item === 'tableEdit' || item === 'tableTree'){  
302 - mods[item] = '{/}' + setter.base + 'lib/tabletree/' + item;  
303 - } else{  
304 - mods[item] = '{/}' + setter.base + 'lib/extend/' + item;  
305 - }  
306 - layui.extend(mods);  
307 - }); 313 + layui.extend(mods);
  314 + });
308 315
309 // 创建canvas 316 // 创建canvas
310 window.createCanvas = function (target) { 317 window.createCanvas = function (target) {
@@ -324,34 +331,34 @@ layui.extend({ @@ -324,34 +331,34 @@ layui.extend({
324 331
325 // 设置canvas尺寸 332 // 设置canvas尺寸
326 window.resizeEventFn = function () { 333 window.resizeEventFn = function () {
327 - $(onresizeEvents).map(function (index, event) {  
328 - var item = event.val;  
329 - if (typeof item === 'function') {  
330 - item();  
331 - } else if (item[0].nodeName.toUpperCase() === 'CANVAS') {  
332 - var canvas = item;  
333 - var target = canvas.parent();  
334 - canvas[0].width= target.width() + 30;  
335 - canvas[0].height = target.height() + 20;  
336 - }  
337 - }); 334 + $(onresizeEvents).map(function (index, event) {
  335 + var item = event.val;
  336 + if (typeof item === 'function') {
  337 + item();
  338 + } else if (item[0].nodeName.toUpperCase() === 'CANVAS') {
  339 + var canvas = item;
  340 + var target = canvas.parent();
  341 + canvas[0].width = target.width() + 30;
  342 + canvas[0].height = target.height() + 20;
  343 + }
  344 + });
338 }; 345 };
339 346
340 // 页面尺寸变化的事件栈 347 // 页面尺寸变化的事件栈
341 window.onresizeEvents = []; 348 window.onresizeEvents = [];
342 - window.setResizeEvents = function(key, val) {  
343 - var index = -1; 349 + window.setResizeEvents = function (key, val) {
  350 + var index = -1;
344 351
345 - $(onresizeEvents).map(function (i, event) {  
346 - if (event.key === key) {  
347 - index = i;  
348 - }  
349 - }); 352 + $(onresizeEvents).map(function (i, event) {
  353 + if (event.key === key) {
  354 + index = i;
  355 + }
  356 + });
350 357
351 - if (index !== -1) {  
352 - onresizeEvents.splice(index, 1);  
353 - }  
354 - onresizeEvents.push({ key: key, val: val }); 358 + if (index !== -1) {
  359 + onresizeEvents.splice(index, 1);
  360 + }
  361 + onresizeEvents.push({key: key, val: val});
355 }; 362 };
356 window.addEventListener('resize', resizeEventFn); 363 window.addEventListener('resize', resizeEventFn);
357 364
@@ -361,7 +368,7 @@ layui.extend({ @@ -361,7 +368,7 @@ layui.extend({
361 */ 368 */
362 window.generateUUID = function () { 369 window.generateUUID = function () {
363 var d = new Date().getTime() 370 var d = new Date().getTime()
364 - return'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { 371 + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
365 var r = (d + Math.random() * 16) % 16 | 0; 372 var r = (d + Math.random() * 16) % 16 | 0;
366 d = Math.floor(d / 16); 373 d = Math.floor(d / 16);
367 return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); 374 return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
@@ -370,285 +377,285 @@ layui.extend({ @@ -370,285 +377,285 @@ layui.extend({
370 377
371 378
372 //系统登录后建立长连接监控实时告警信息 379 //系统登录后建立长连接监控实时告警信息
373 - layui.use(['jquery','msgTips','sockjs','stomp', 'laytpl'], function () {  
374 - var msgTips = layui.msgTips  
375 - ,webSockState = false  
376 - ,sock = undefined  
377 - ,stompClient = null  
378 - ,laytpl = layui.laytpl  
379 - ,access_token = localStorage.getItem("access_token")  
380 - ,domainName = sessionStorage.getItem('domainName');  
381 -  
382 - var connectFlg = false;  
383 - var tryIndex = 1;  
384 - var voiceList = [{  
385 - voice_:'咳咳',  
386 - type_:'ERROR',  
387 - },{  
388 - voice_:'微信提醒',  
389 - type_:'WARNING',  
390 - },{  
391 - voice_:'滑稽',  
392 - type_:'SUCCESS',  
393 - }];  
394 -  
395 - //setTimeout(alarmWebSocket,10000);  
396 - function alarmWebSocket() {  
397 - if (!webSockState) {  
398 - webSockState = true;  
399 - console.log("websock正在连接。。。。。。")  
400 - sock = new SockJS(domainName+'/api-web/sock-js?access_token=' + access_token);  
401 - stompClient = Stomp.over(sock);  
402 -  
403 -  
404 - stompClient.connect({},function (frame) {  
405 - console.log("websock连接成功。。。。。。")  
406 - connectFlg = true;  
407 - tryIndex = 1;  
408 - //通过stompClient.subscribe订阅/topic/getResponse 目标(destination)发送的消息  
409 - // stompClient.send("/home/alarmPolling", {}, JSON.stringify({ 'accessToken': access_token }),function (e) {  
410 - // console.log(e)  
411 - // });  
412 - //通过stompClient.subscribe订阅/topic/getResponse 目标(destination)发送的消息  
413 - stompClient.subscribe('/alarmQuery/', function(respnose){  
414 - var alarmArr = JSON.parse(respnose.body);  
415 - var mp3Name = sessionStorage.getItem('mp3');  
416 - var audio = audioPlayer(`../src/style/mp3/${mp3Name}.mp3`)  
417 - $.each(alarmArr,function (i,v) {  
418 - if (v.alarmContent) {  
419 - (function(i) {  
420 - var alarmLevel = 'error';  
421 - var alarmType = 'alarm';  
422 - if (v.clearType && v.alarmLevel === '1') {  
423 - alarmLevel = 'info';  
424 - } else if (v.clearType && v.alarmLevel === '2') {  
425 - alarmLevel = 'warning';  
426 - } else if (v.clearType && v.alarmLevel === '3') {  
427 - alarmLevel = 'error';  
428 - } else if (v.clearType === 0) {  
429 - alarmLevel = 'success';  
430 - alarmType = 'alarmHis'  
431 - }  
432 - let isNotify = alarmByUser(v.alarmId,alarmType === 'alarm' ? 'b_alarm' : 'b_alarm_his');  
433 - if (isNotify) {  
434 - setTimeout(function() {  
435 - audio.playclip();  
436 - new msgTips({  
437 - dom:".right-bottom-tips",  
438 - title: "告警消息",  
439 - message:`<p style="line-height: 40px">${v.alarmContent}</p>`,  
440 - duration:10000,  
441 - space:10,  
442 - firstSpace:8,  
443 - limit:8,  
444 - margin:15,  
445 - direction:'right bottom',  
446 - timingFun:'ease',  
447 - width:'300px',  
448 - toastType:alarmLevel,  
449 - type:'click',  
450 - action: function () {  
451 - if (alarmType === 'alarm') {  
452 - location.hash = "/alarm/activewarning/alarmNo=" + v.alarmNo;  
453 - } else {  
454 - location.hash = "/alarm/historywarning/alarmNo=" + v.alarmNo;  
455 - }  
456 - }  
457 - })  
458 - }, (i + 1) * 1250);  
459 - }  
460 - })(i)  
461 - }  
462 - })  
463 - });  
464 - // 弹框展示错误消息  
465 - let showTips = function (content,title="提示", toastType = 'error', hash, delay = 1000, queryResult) {  
466 - if (queryResult) {  
467 - content = laytpl(content).render(queryResult);  
468 - }  
469 -  
470 - //判断是否为故障诊断的三种类型  
471 - if(toastType=='faultinfo'||toastType=='faultover'||toastType=='faultprogress'){  
472 - var imgUrl="";  
473 - if(toastType=='faultinfo'){  
474 - imgUrl="/src/style/img/fault.png";  
475 - } 380 + layui.use(['jquery', 'msgTips', 'sockjs', 'stomp', 'laytpl'], function () {
  381 + var msgTips = layui.msgTips
  382 + , webSockState = false
  383 + , sock = undefined
  384 + , stompClient = null
  385 + , laytpl = layui.laytpl
  386 + , access_token = localStorage.getItem("access_token")
  387 + , domainName = sessionStorage.getItem('domainName');
  388 +
  389 + var connectFlg = false;
  390 + var tryIndex = 1;
  391 + var voiceList = [{
  392 + voice_: '咳咳',
  393 + type_: 'ERROR',
  394 + }, {
  395 + voice_: '微信提醒',
  396 + type_: 'WARNING',
  397 + }, {
  398 + voice_: '滑稽',
  399 + type_: 'SUCCESS',
  400 + }];
  401 +
  402 + //setTimeout(alarmWebSocket,10000);
  403 + function alarmWebSocket() {
  404 + if (!webSockState) {
  405 + webSockState = true;
  406 + console.log("websock正在连接。。。。。。")
  407 + sock = new SockJS(domainName + '/api-web/sock-js?access_token=' + access_token);
  408 + stompClient = Stomp.over(sock);
  409 +
  410 +
  411 + stompClient.connect({}, function (frame) {
  412 + console.log("websock连接成功。。。。。。")
  413 + connectFlg = true;
  414 + tryIndex = 1;
  415 + //通过stompClient.subscribe订阅/topic/getResponse 目标(destination)发送的消息
  416 + // stompClient.send("/home/alarmPolling", {}, JSON.stringify({ 'accessToken': access_token }),function (e) {
  417 + // console.log(e)
  418 + // });
  419 + //通过stompClient.subscribe订阅/topic/getResponse 目标(destination)发送的消息
  420 + stompClient.subscribe('/alarmQuery/', function (respnose) {
  421 + var alarmArr = JSON.parse(respnose.body);
  422 + var mp3Name = sessionStorage.getItem('mp3');
  423 + var audio = audioPlayer(`../src/style/mp3/${mp3Name}.mp3`)
  424 + $.each(alarmArr, function (i, v) {
  425 + if (v.alarmContent) {
  426 + (function (i) {
  427 + var alarmLevel = 'error';
  428 + var alarmType = 'alarm';
  429 + if (v.clearType && v.alarmLevel === '1') {
  430 + alarmLevel = 'info';
  431 + } else if (v.clearType && v.alarmLevel === '2') {
  432 + alarmLevel = 'warning';
  433 + } else if (v.clearType && v.alarmLevel === '3') {
  434 + alarmLevel = 'error';
  435 + } else if (v.clearType === 0) {
  436 + alarmLevel = 'success';
  437 + alarmType = 'alarmHis'
  438 + }
  439 + let isNotify = alarmByUser(v.alarmId, alarmType === 'alarm' ? 'b_alarm' : 'b_alarm_his');
  440 + if (isNotify) {
  441 + setTimeout(function () {
  442 + audio.playclip();
  443 + new msgTips({
  444 + dom: ".right-bottom-tips",
  445 + title: "告警消息",
  446 + message: `<p style="line-height: 40px">${v.alarmContent}</p>`,
  447 + duration: 10000,
  448 + space: 10,
  449 + firstSpace: 8,
  450 + limit: 8,
  451 + margin: 15,
  452 + direction: 'right bottom',
  453 + timingFun: 'ease',
  454 + width: '300px',
  455 + toastType: alarmLevel,
  456 + type: 'click',
  457 + action: function () {
  458 + if (alarmType === 'alarm') {
  459 + location.hash = "/alarm/activewarning/alarmNo=" + v.alarmNo;
  460 + } else {
  461 + location.hash = "/alarm/historywarning/alarmNo=" + v.alarmNo;
  462 + }
  463 + }
  464 + })
  465 + }, (i + 1) * 1250);
  466 + }
  467 + })(i)
  468 + }
  469 + })
  470 + });
  471 + // 弹框展示错误消息
  472 + let showTips = function (content, title = "提示", toastType = 'error', hash, delay = 1000, queryResult) {
  473 + if (queryResult) {
  474 + content = laytpl(content).render(queryResult);
  475 + }
476 476
477 - if(toastType=='faultover'){  
478 - imgUrl="/src/style/img/faultprogress.png";  
479 - } 477 + //判断是否为故障诊断的三种类型
  478 + if (toastType == 'faultinfo' || toastType == 'faultover' || toastType == 'faultprogress') {
  479 + var imgUrl = "";
  480 + if (toastType == 'faultinfo') {
  481 + imgUrl = "/src/style/img/fault.png";
  482 + }
480 483
481 - if(toastType=='faultprogress'){  
482 - imgUrl="/src/style/img/faultover.png";  
483 - }  
484 - setTimeout(function () {  
485 - new msgTips({  
486 - dom: ".right-bottom-tips",  
487 - title: title,  
488 - message: `<p style="line-height: 18px;background: url(${imgUrl}) no-repeat;background-size: 100%;height: 160px;background-position-x: right;padding: 145px 22px 0; "><span style=" overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical;" title="${content}">${content}</span><span class="title closeFault" style="position: absolute;top: 66px;left: 214px;">X</span><span style="position: absolute;left: 87px;top: 124px; font-weight: bold;float: right;">${title}</span></p>`,  
489 - duration: 10000,  
490 - space: 10,  
491 - firstSpace: 8,  
492 - limit: 8,  
493 - margin: 15,  
494 - direction: 'right top',  
495 - timingFun: 'ease',  
496 - width: '300px',  
497 - toastType: toastType,  
498 - type: 'click',  
499 - action: function () {  
500 - //if (hash) {  
501 - // location.hash = hash;  
502 - location.hash = "/faultDiagnosis/list/faultNo="+content.split(",")[0].split(":")[1];  
503 - //} 484 + if (toastType == 'faultover') {
  485 + imgUrl = "/src/style/img/faultprogress.png";
504 } 486 }
505 - })  
506 487
507 - }, delay);  
508 - }else{  
509 - setTimeout(function () {  
510 - new msgTips({  
511 - dom: ".right-bottom-tips",  
512 - title: title,  
513 - message: `<p style="line-height: 40px">${content}</p>`,  
514 - duration: 10000,  
515 - space: 10,  
516 - firstSpace: 8,  
517 - limit: 8,  
518 - margin: 15,  
519 - direction: 'right bottom',  
520 - timingFun: 'ease',  
521 - width: '300px',  
522 - toastType: toastType,  
523 - type: 'click',  
524 - action: function () {  
525 - if (hash) {  
526 - if(hash.toLowerCase().indexOf("http://")!=-1 && hash.toLowerCase().indexOf("https://")!=-1){  
527 - location.hash = hash;  
528 - }else{  
529 - window.location.href=hash; 488 + if (toastType == 'faultprogress') {
  489 + imgUrl = "/src/style/img/faultover.png";
  490 + }
  491 + setTimeout(function () {
  492 + new msgTips({
  493 + dom: ".right-bottom-tips",
  494 + title: title,
  495 + message: `<p style="line-height: 18px;background: url(${imgUrl}) no-repeat;background-size: 100%;height: 160px;background-position-x: right;padding: 145px 22px 0; "><span style=" overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical;" title="${content}">${content}</span><span class="title closeFault" style="position: absolute;top: 66px;left: 214px;">X</span><span style="position: absolute;left: 87px;top: 124px; font-weight: bold;float: right;">${title}</span></p>`,
  496 + duration: 10000,
  497 + space: 10,
  498 + firstSpace: 8,
  499 + limit: 8,
  500 + margin: 15,
  501 + direction: 'right top',
  502 + timingFun: 'ease',
  503 + width: '300px',
  504 + toastType: toastType,
  505 + type: 'click',
  506 + action: function () {
  507 + //if (hash) {
  508 + // location.hash = hash;
  509 + location.hash = "/faultDiagnosis/list/faultNo=" + content.split(",")[0].split(":")[1];
  510 + //}
  511 + }
  512 + })
  513 +
  514 + }, delay);
  515 + } else {
  516 + setTimeout(function () {
  517 + new msgTips({
  518 + dom: ".right-bottom-tips",
  519 + title: title,
  520 + message: `<p style="line-height: 40px">${content}</p>`,
  521 + duration: 10000,
  522 + space: 10,
  523 + firstSpace: 8,
  524 + limit: 8,
  525 + margin: 15,
  526 + direction: 'right bottom',
  527 + timingFun: 'ease',
  528 + width: '300px',
  529 + toastType: toastType,
  530 + type: 'click',
  531 + action: function () {
  532 + if (hash) {
  533 + if (hash.toLowerCase().indexOf("http://") != -1 && hash.toLowerCase().indexOf("https://") != -1) {
  534 + location.hash = hash;
  535 + } else {
  536 + window.location.href = hash;
  537 + }
  538 + }
530 } 539 }
  540 + })
  541 + }, delay);
  542 + }
  543 + }
  544 +
  545 +
  546 + // 订阅实时消息
  547 + stompClient.subscribe('/realTime/', function (respnose) {
  548 + console.log('实时信息: ' + respnose);
  549 + var data = respnose.body;
  550 + if (data) {
  551 + var obj = JSON.parse(data);
  552 + showTips(obj.content, obj.title, obj.msgType.toLowerCase(), obj.href, 1000, obj.queryResult);
  553 + }
  554 + });
  555 +
  556 + // 订阅用户消息
  557 + stompClient.subscribe("/user/realTime/notifications/", function (respnose) {
  558 + console.log('专属信息: ' + respnose);
  559 + var data = respnose.body;
  560 + if (data) {
  561 + var obj = JSON.parse(data);
  562 + if (obj.msgType == 'LOGOUT') {
  563 + layer.msg("登录凭证失效,请重新登录验证!", {
  564 + icon: 7, time: 3000
  565 + }, function () {
  566 + view.exit();
  567 + });
  568 + } else {
  569 + showTips(obj.content, obj.title, obj.msgType.toLowerCase(), obj.href, 1000, obj.queryResult);
  570 + if (typeof(obj.msgType) != "undefined") {
  571 + var str = '滑稽';
  572 + voiceList.forEach(item => {
  573 + if (item.type_ == obj.msgType) {
  574 + str = item.voice_;
  575 + }
  576 + })
  577 + var url = '../src/style/mp3/' + str + '.mp3';
  578 + var audio = audioPlayer(url);
  579 + audio.playclip();
531 } 580 }
532 } 581 }
533 - })  
534 - }, delay);  
535 - } 582 + }
  583 + });
  584 + }, function (e) {
  585 + console.log(`(${tryIndex})链接失败,重试中....`)
  586 + connectFlg = false;
  587 + if (location.hash.indexOf('#/user/login') == -1) {
  588 + // 调用测试接口,出现过期则会跳转到登录页面
  589 + admin.req({
  590 + url: domainName + "/api-web/common/test"
  591 + , type: "get"
  592 + , async: false
  593 + , done: function (data) {
  594 + tryFunc();
  595 + }
  596 + });
  597 + } else {
  598 + tryFunc();
  599 + }
  600 + })
536 } 601 }
  602 + }
537 603
538 -  
539 - // 订阅实时消息  
540 - stompClient.subscribe('/realTime/', function (respnose) {  
541 - console.log('实时信息: '+ respnose);  
542 - var data = respnose.body;  
543 - if (data) {  
544 - var obj = JSON.parse(data);  
545 - showTips(obj.content, obj.title, obj.msgType.toLowerCase(), obj.href, 1000, obj.queryResult); 604 + //告警是否属于当前用户
  605 + function alarmByUser(alarmId, tableName) {
  606 + let isNotify = false;
  607 + $.ajax({
  608 + url: sessionStorage.getItem('domainName') + '/api-web/bAlarm/hasAlarmByUserName?access_token=' + localStorage.getItem("access_token") + '&alarmId=' + alarmId + '&tableName=' + tableName,
  609 + async: false,
  610 + success(res) {
  611 + if (res && res.success) {
  612 + isNotify = true;
  613 + }
546 } 614 }
547 }); 615 });
  616 + return isNotify;
  617 + }
548 618
549 - // 订阅用户消息  
550 - stompClient.subscribe("/user/realTime/notifications/", function (respnose) {  
551 - console.log('专属信息: '+ respnose);  
552 - var data = respnose.body;  
553 - if (data) {  
554 - var obj = JSON.parse(data);  
555 - if (obj.msgType == 'LOGOUT') {  
556 - layer.msg("登录凭证失效,请重新登录验证!", {  
557 - icon: 7, time: 3000  
558 - }, function () {  
559 - view.exit();  
560 - });  
561 - } else {  
562 - showTips(obj.content,obj.title, obj.msgType.toLowerCase(), obj.href, 1000, obj.queryResult);  
563 - if(typeof(obj.msgType)!="undefined"){  
564 - var str = '滑稽';  
565 - voiceList.forEach(item =>{  
566 - if(item.type_== obj.msgType){  
567 - str = item.voice_;  
568 - }  
569 - })  
570 - var url = '../src/style/mp3/' + str + '.mp3';  
571 - var audio = audioPlayer(url);  
572 - audio.playclip();  
573 - }  
574 - } 619 + //音频播放
  620 + function audioPlayer(url) {
  621 + var audio = document.createElement('audio')
  622 + if (audio.canPlayType) {
  623 + var element = document.createElement('source')
  624 + element.setAttribute('src', url)
  625 + element.setAttribute('type', 'audio/mpeg')
  626 + audio.appendChild(element)
  627 + audio.load()
  628 + audio.playclip = function () {
  629 + audio.pause()
  630 + audio.currentTime = 0
  631 + audio.play()
575 } 632 }
576 - });  
577 - },function(e){  
578 - console.log(`(${tryIndex})链接失败,重试中....`)  
579 - connectFlg = false;  
580 - if(location.hash.indexOf('#/user/login') == -1){  
581 - // 调用测试接口,出现过期则会跳转到登录页面  
582 - admin.req({  
583 - url: domainName + "/api-web/common/test"  
584 - , type: "get"  
585 - , async: false  
586 - , done: function (data) {  
587 - tryFunc();  
588 - }  
589 - });  
590 - } else {  
591 - tryFunc(); 633 + return audio
592 } 634 }
593 - })  
594 - }  
595 - }  
596 -  
597 - //告警是否属于当前用户  
598 - function alarmByUser(alarmId,tableName) {  
599 - let isNotify = false;  
600 - $.ajax({  
601 - url: sessionStorage.getItem('domainName') + '/api-web/bAlarm/hasAlarmByUserName?access_token=' + localStorage.getItem("access_token") + '&alarmId=' + alarmId + '&tableName=' + tableName,  
602 - async: false,  
603 - success(res) {  
604 - if (res && res.success) {  
605 - isNotify = true; 635 + }
  636 +
  637 + var tryFunc = function () {
  638 + setTimeout(function () {
  639 + if (!connectFlg) {
  640 + tryIndex++;
  641 + access_token = localStorage.getItem("access_token")
  642 + webSockState = false;
  643 + alarmWebSocket();
  644 + //setTimeout(tryFunc(),3000);
606 } 645 }
607 - }  
608 - });  
609 - return isNotify;  
610 - }  
611 -  
612 - //音频播放  
613 - function audioPlayer(url){  
614 - var audio = document.createElement('audio')  
615 - if (audio.canPlayType){  
616 - var element = document.createElement('source')  
617 - element.setAttribute('src', url)  
618 - element.setAttribute('type', 'audio/mpeg')  
619 - audio.appendChild(element)  
620 - audio.load()  
621 - audio.playclip=function(){  
622 - audio.pause()  
623 - audio.currentTime=0  
624 - audio.play()  
625 - }  
626 - return audio  
627 - }  
628 - }  
629 -  
630 - var tryFunc = function () {  
631 - setTimeout(function () {  
632 - if(!connectFlg){  
633 - tryIndex++;  
634 - access_token = localStorage.getItem("access_token")  
635 - webSockState = false;  
636 - alarmWebSocket();  
637 - //setTimeout(tryFunc(),3000);  
638 - }  
639 - },tryIndex*3000);  
640 - }  
641 - tryFunc();  
642 - })  
643 -  
644 - //对外输出  
645 - exports('index', {  
646 - render: renderPage  
647 - }); 646 + }, tryIndex * 3000);
  647 + }
  648 + tryFunc();
  649 + })
  650 +
  651 + //对外输出
  652 + exports('index', {
  653 + render: renderPage
  654 + });
648 //解决刷新后中间出现404页面问题 655 //解决刷新后中间出现404页面问题
649 var show = location.search.substr(1).split("&")[0].split("=")[1]; 656 var show = location.search.substr(1).split("&")[0].split("=")[1];
650 - if(show == '1') window.history.pushState({} ,'' ,'#');  
651 - if(show != '0') location.hash = "/"; 657 + if (show == '1') window.history.pushState({}, '', '#');
  658 + if (show != '0') location.hash = "/";
652 }); 659 });
653 660
654 661
@@ -132,7 +132,7 @@ layui.define(['laytpl', 'layer'], function(exports){ @@ -132,7 +132,7 @@ layui.define(['laytpl', 'layer'], function(exports){
132 typeof success === 'function' && success(res); 132 typeof success === 'function' && success(res);
133 } 133 }
134 ,error: function(e, code){ 134 ,error: function(e, code){
135 - if(window.location.hash.indexOf('page/forward') != -1){ 135 + if(window.location.hash.indexOf('page/forward') != -1 || window.location.hash.indexOf('page/log') != -1){
136 return; 136 return;
137 } 137 }
138 if(e.status == '401'){ 138 if(e.status == '401'){
  1 +<!-- -->
  2 +<article class="page-container template">
  3 + <div class="page-panel">
  4 + <div class="main" id="text">
  5 + 加载中.....
  6 + </div>
  7 + </div>
  8 + <textarea id="line_param" style="display: none;">{{d}}</textarea>
  9 +</article>
  10 +
  11 +<script>
  12 + layui.use('pageLog', function (fn) {
  13 + var $ = layui.$;
  14 + var parm = $("#line_param").val();
  15 + if(parm.indexOf('{{d') != -1){
  16 + fn();
  17 + }else{
  18 + fn(JSON.parse(parm));
  19 + }
  20 + });
  21 +</script>