删除无用工程(hg-monitor-web-nx)
Showing
8 changed files
with
0 additions
and
3359 deletions
hg-monitor-web-nx/pom.xml
deleted
100644 → 0
1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
2 | -<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" | ||
3 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
4 | - <modelVersion>4.0.0</modelVersion> | ||
5 | - <parent> | ||
6 | - <groupId>com.honggroup</groupId> | ||
7 | - <artifactId>hg-monitor-web</artifactId> | ||
8 | - <version>0.0.1-SNAPSHOT</version> | ||
9 | - </parent> | ||
10 | - <groupId>com.honggroup</groupId> | ||
11 | - <artifactId>hg-monitor-web-nx</artifactId> | ||
12 | - <version>5.4.0</version> | ||
13 | - <name>hg-monitor-web-nx</name> | ||
14 | - <description>宁夏个性化版本</description> | ||
15 | - <properties> | ||
16 | - <java.version>1.8</java.version> | ||
17 | - </properties> | ||
18 | - <dependencies> | ||
19 | - <dependency> | ||
20 | - <groupId>com.honggroup</groupId> | ||
21 | - <artifactId>hg-monitor-web-base</artifactId> | ||
22 | - <version>0.0.1-SNAPSHOT</version> | ||
23 | - </dependency> | ||
24 | - </dependencies> | ||
25 | - | ||
26 | - <build> | ||
27 | - <finalName>nxweb-${version}.${timestamp}</finalName> | ||
28 | - <resources> | ||
29 | - <resource> | ||
30 | - <directory>src/main/resources</directory> | ||
31 | - <includes> | ||
32 | - <include>**/**</include> | ||
33 | - </includes> | ||
34 | - </resource> | ||
35 | - </resources> | ||
36 | - <plugins> | ||
37 | - <plugin> | ||
38 | - <groupId>org.codehaus.mojo</groupId> | ||
39 | - <artifactId>buildnumber-maven-plugin</artifactId> | ||
40 | - <version>1.4</version> | ||
41 | - <configuration> | ||
42 | - <timestampFormat>yyyyMMdd</timestampFormat> | ||
43 | - </configuration> | ||
44 | - <executions> | ||
45 | - <execution> | ||
46 | - <goals> | ||
47 | - <goal>create-timestamp</goal> | ||
48 | - </goals> | ||
49 | - </execution> | ||
50 | - </executions> | ||
51 | - <inherited>false</inherited> | ||
52 | - </plugin> | ||
53 | - <plugin> | ||
54 | - <groupId>org.springframework.boot</groupId> | ||
55 | - <artifactId>spring-boot-maven-plugin</artifactId> | ||
56 | - </plugin> | ||
57 | - </plugins> | ||
58 | - </build> | ||
59 | - | ||
60 | -</project> |
1 | -package com.web; | ||
2 | - | ||
3 | -import org.springframework.boot.SpringApplication; | ||
4 | -import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
5 | - | ||
6 | -@SpringBootApplication | ||
7 | -public class HGMonitorNXWebApplication { | ||
8 | - | ||
9 | - public static void main(String[] args) { | ||
10 | - SpringApplication.run(HGMonitorNXWebApplication.class, args); | ||
11 | - } | ||
12 | - | ||
13 | -} |
1 | -spring: | ||
2 | - application: | ||
3 | - name: zjweb | ||
4 | -server: | ||
5 | - port: 8088 | ||
6 | - ssl: | ||
7 | - enabled: false | ||
8 | - key-alias: tomcat_https | ||
9 | - key-store: classpath:keystore/tomcat_https.keystore | ||
10 | - key-store-type: JKS | ||
11 | - key-store-password: Hg0801.. | ||
12 | - key-password: Hg0801.. | ||
13 | -url: | ||
14 | - gateway: http://127.0.0.1:8080 | ||
15 | - inspection_web: http://127.0.0.1:8082 | ||
16 | - assetsweb: http://127.0.0.1:8082 | ||
17 | - mxgraph_editor: http://127.0.0.1:8085 | ||
18 | - tingyun: http://127.0.0.1:8088 | ||
19 | - bigScreen: http://127.0.0.1:8081 | ||
20 | - #流程系统路径,当ssl.enabled=true时,http要改为https,并修改流程nginx的conf文件 | ||
21 | - workflow: http://192.168.0.248:8002 | ||
22 | - # 积木报表工具 | ||
23 | - jimuReport: http://192.168.0.41:8085 | ||
24 | -config: | ||
25 | - layer: | ||
26 | - load: | ||
27 | - icon: mj | ||
28 | - audio: | ||
29 | - mp3: 14039 | ||
30 | - tingyun: | ||
31 | - api_key: aZipZbC18BhpG5GrjtiFAtThL1I0OUfn | ||
32 | - secret_key: nbxay44wx8c3x4n5wcxe63mp87a72xed |
1 | -/** | ||
2 | - | ||
3 | - @Name:layuiAdmin 公共业务 | ||
4 | - @Author:贤心 | ||
5 | - @Site:http://www.layui.com/admin/ | ||
6 | - @License:LPPL | ||
7 | - | ||
8 | - */ | ||
9 | - | ||
10 | -layui.define(['xmSelect', 'md5'], function (exports) { | ||
11 | - var $ = layui.$ | ||
12 | - , laytpl = layui.laytpl | ||
13 | - , layer = layui.layer | ||
14 | - , view = layui.view | ||
15 | - , xmSelect = layui.xmSelect | ||
16 | - , md5 = layui.md5 | ||
17 | - , form = layui.form | ||
18 | - , commonDetail = layui.commonDetail | ||
19 | - , admin = layui.admin; | ||
20 | - //公共业务的逻辑处理可以写在此处,切换任何页面都会执行 | ||
21 | - var obj = { | ||
22 | - domainIpManage: "http://94.12.40.231:8080/zoneportal/", | ||
23 | - domainName: sessionStorage.getItem('domainName'), // gateway地址 | ||
24 | - domainInspectionURI: sessionStorage.getItem('domainInspectionURI'), // 巡检系统地址 | ||
25 | - domainAssetsManage: sessionStorage.getItem('domainAssetsManage'), // 资产系统地址 | ||
26 | - graphEditorOrigin: sessionStorage.getItem('graphEditorOrigin'), // 拓扑系统地址 | ||
27 | - ajScreenStatement: sessionStorage.getItem('ajWeb'), //aj系统地址 | ||
28 | - workflowName: sessionStorage.getItem('workflow'),//流程系统地址 | ||
29 | - domainCMDBName: "http://80.12.147.24:8888/hgkjcmdb", //杭州咨源老cmdb系统地址 | ||
30 | - lineTimer: null,//性能曲线图全局定时器 | ||
31 | - detailTimer: [],//详细页的全局定时器 | ||
32 | - alarmTimer: null,//首页告警刷新定时器 | ||
33 | - limit: 50,//全局分页条目数 | ||
34 | - limits: [50, 100, 150, 200],//全局分页条目数组 | ||
35 | - //base64加密 | ||
36 | - Base64: { | ||
37 | - _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", | ||
38 | - encode: function (e) { | ||
39 | - var t = ""; | ||
40 | - var n, r, i, s, o, u, a; | ||
41 | - var f = 0; | ||
42 | - e = obj.Base64._utf8_encode(e); | ||
43 | - while (f < e.length) { | ||
44 | - n = e.charCodeAt(f++); | ||
45 | - r = e.charCodeAt(f++); | ||
46 | - i = e.charCodeAt(f++); | ||
47 | - s = n >> 2; | ||
48 | - o = (n & 3) << 4 | r >> 4; | ||
49 | - u = (r & 15) << 2 | i >> 6; | ||
50 | - a = i & 63; | ||
51 | - if (isNaN(r)) { | ||
52 | - u = a = 64 | ||
53 | - } else if (isNaN(i)) { | ||
54 | - a = 64 | ||
55 | - } | ||
56 | - t = t + this._keyStr.charAt(s) + this._keyStr.charAt(o) + this._keyStr.charAt(u) + this._keyStr.charAt(a) | ||
57 | - } | ||
58 | - return t | ||
59 | - }, | ||
60 | - decode: function (e) { | ||
61 | - var t = ""; | ||
62 | - var n, r, i; | ||
63 | - var s, o, u, a; | ||
64 | - var f = 0; | ||
65 | - e = e.replace(/[^A-Za-z0-9+/=]/g, ""); | ||
66 | - while (f < e.length) { | ||
67 | - s = this._keyStr.indexOf(e.charAt(f++)); | ||
68 | - o = this._keyStr.indexOf(e.charAt(f++)); | ||
69 | - u = this._keyStr.indexOf(e.charAt(f++)); | ||
70 | - a = this._keyStr.indexOf(e.charAt(f++)); | ||
71 | - n = s << 2 | o >> 4; | ||
72 | - r = (o & 15) << 4 | u >> 2; | ||
73 | - i = (u & 3) << 6 | a; | ||
74 | - t = t + String.fromCharCode(n); | ||
75 | - if (u != 64) { | ||
76 | - t = t + String.fromCharCode(r) | ||
77 | - } | ||
78 | - if (a != 64) { | ||
79 | - t = t + String.fromCharCode(i) | ||
80 | - } | ||
81 | - } | ||
82 | - t = obj.Base64._utf8_decode(t); | ||
83 | - return t | ||
84 | - }, | ||
85 | - _utf8_encode: function (e) { | ||
86 | - e = e.replace(/rn/g, "n"); | ||
87 | - var t = ""; | ||
88 | - for (var n = 0; n < e.length; n++) { | ||
89 | - var r = e.charCodeAt(n); | ||
90 | - if (r < 128) { | ||
91 | - t += String.fromCharCode(r) | ||
92 | - } else if (r > 127 && r < 2048) { | ||
93 | - t += String.fromCharCode(r >> 6 | 192); | ||
94 | - t += String.fromCharCode(r & 63 | 128) | ||
95 | - } else { | ||
96 | - t += String.fromCharCode(r >> 12 | 224); | ||
97 | - t += String.fromCharCode(r >> 6 & 63 | 128); | ||
98 | - t += String.fromCharCode(r & 63 | 128) | ||
99 | - } | ||
100 | - } | ||
101 | - return t | ||
102 | - }, | ||
103 | - _utf8_decode: function (e) { | ||
104 | - var t = ""; | ||
105 | - var n = 0; | ||
106 | - var r = c1 = c2 = 0; | ||
107 | - while (n < e.length) { | ||
108 | - r = e.charCodeAt(n); | ||
109 | - if (r < 128) { | ||
110 | - t += String.fromCharCode(r); | ||
111 | - n++ | ||
112 | - } else if (r > 191 && r < 224) { | ||
113 | - c2 = e.charCodeAt(n + 1); | ||
114 | - t += String.fromCharCode((r & 31) << 6 | c2 & 63); | ||
115 | - n += 2 | ||
116 | - } else { | ||
117 | - c2 = e.charCodeAt(n + 1); | ||
118 | - c3 = e.charCodeAt(n + 2); | ||
119 | - t += String.fromCharCode((r & 15) << 12 | (c2 & 63) << 6 | c3 & 63); | ||
120 | - n += 3 | ||
121 | - } | ||
122 | - } | ||
123 | - return t | ||
124 | - } | ||
125 | - }, | ||
126 | - /** | ||
127 | - * 颜色数组 | ||
128 | - */ | ||
129 | - colorsArr: [ | ||
130 | - { | ||
131 | - start: '#46d6d8', | ||
132 | - end: '#2883d0' | ||
133 | - }, | ||
134 | - { | ||
135 | - start: '#facf5b', | ||
136 | - end: '#f77623' | ||
137 | - }, | ||
138 | - { | ||
139 | - start: '#C04DD8', | ||
140 | - end: '#D81F72' | ||
141 | - }, | ||
142 | - { | ||
143 | - start: '#F5A1EB', | ||
144 | - end: '#A04DE2' | ||
145 | - }, | ||
146 | - { | ||
147 | - start: '#F36093', | ||
148 | - end: '#FF465C' | ||
149 | - }, | ||
150 | - { | ||
151 | - start: '#C2E74D', | ||
152 | - end: '#00AE8B' | ||
153 | - }, | ||
154 | - { | ||
155 | - start: '#3DC3FF', | ||
156 | - end: '#01FFFF' | ||
157 | - }, | ||
158 | - { | ||
159 | - start: '#B850ED', | ||
160 | - end: '#9062EF' | ||
161 | - }, | ||
162 | - { | ||
163 | - start: '#305be6', | ||
164 | - end: '#36a7d3' | ||
165 | - }, | ||
166 | - { | ||
167 | - start: '#FFA500', | ||
168 | - end: '#FFEE00' | ||
169 | - }, | ||
170 | - { | ||
171 | - start: '#C4E64C', | ||
172 | - end: '#2de078' | ||
173 | - }, | ||
174 | - { | ||
175 | - start: '#30ffb3', | ||
176 | - end: '#01FFFF' | ||
177 | - }, | ||
178 | - { | ||
179 | - start: '#FF4488', | ||
180 | - end: '#F13EFF' | ||
181 | - }, | ||
182 | - { | ||
183 | - start: '#A64CE2', | ||
184 | - end: '#625AE7' | ||
185 | - }, | ||
186 | - { | ||
187 | - start: '#5AEBC7', | ||
188 | - end: '#5FC9F8' | ||
189 | - }, | ||
190 | - { | ||
191 | - start: '#FFA500', | ||
192 | - end: '#FFEE00' | ||
193 | - }, | ||
194 | - { | ||
195 | - start: '#00AAD6', | ||
196 | - end: '#625AE7' | ||
197 | - }, | ||
198 | - { | ||
199 | - start: '#E48BDE', | ||
200 | - end: '#FF9262' | ||
201 | - }, | ||
202 | - { | ||
203 | - start: '#B2797B', | ||
204 | - end: '#FF4B51' | ||
205 | - }, | ||
206 | - { | ||
207 | - start: '#ffe393', | ||
208 | - end: '#feff5b' | ||
209 | - } | ||
210 | - ], | ||
211 | - //资源类型悬浮提示信息定义 | ||
212 | - nodeTipsKpiArr: { | ||
213 | - //小型机:主机状态,主机IP、运行状态、磁盘使用率、CPU使用率、网络联通状态、网络带宽占用率、运行时长 | ||
214 | - HOST_MINICOMPUTER_SERVER: "KPI1635BB9B,KPI1AF5B3C6,KPIE4B51D5C,KPI2C8A6D17,KPI7054BC34,KPI618689D8,KPID1E6EFA1,KPI1C777D98", | ||
215 | - //小型机分区:主机状态,主机IP、运行状态、磁盘使用率、CPU使用率、网络联通状态、网络带宽占用率、运行时长 | ||
216 | - HOST_MINICOMPUTER_PARTITION: "KPI1635BB9B,KPI1AF5B3C6,KPIE4B51D5C,KPI2C8A6D17,KPI7054BC34,KPI618689D8,KPID1E6EFA1,KPI1C777D98", | ||
217 | - //物理服务器:主机状态、主机IP、磁盘使用率、内存使用率、网络连通状态、CPU使用率、服务器与存储间的连通状态、、网络带宽占用率 | ||
218 | - HOST_X86SERVER: "KPI1635BB9B,KPI1AF5B3C6,KPI2C8A6D17,KPI31CB8D97,KPI618689D8,KPI7054BC34,KPIA537846F,KPID1E6EFA1", | ||
219 | - //虚拟服务器:主机状态、主机IP、磁盘使用率、内存使用率、网络连通状态、CPU使用率、服务器与存储间的连通状态、、网络带宽占用率 | ||
220 | - HOST_X86VIRTUAL: "KPI1635BB9B,KPI1AF5B3C6,KPI2C8A6D17,KPI31CB8D97,KPI618689D8,KPI7054BC34,KPIA537846F,KPID1E6EFA1", | ||
221 | - //华为云:物理机数量 | ||
222 | - HUAWEI_CLOUD: "KPI3CF8A73E", | ||
223 | - //华为云物理机:物理主机IP、所属资源池、已分配内存大小、已分配磁盘大小、CPU使用率、内存使用率、磁盘使用率 | ||
224 | - HUAWEI_CLOUD_PHYSICSHOST: "KPIEA270DAB,KPID7BE5E90,KPI191373C6,KPI9B34D90F,KPI7054BC34,KPI31CB8D97,KPI2C8A6D17", | ||
225 | - //华为存储 IP地址、总容量、已使用容量、CPU使用率、内存占用率、运行状态 | ||
226 | - HUAWEI_CLOUD_STORAGE: "KPI2DC9105C,KPI2D4365CA,KPI008F0D3A,KPI7054BC34,KPI31CB8D97,KPIE4B51D5C", | ||
227 | - //华为交换机:IP地址、管理状态、操作状态、所属区域、CPU平均使用率、内存平均使用率 | ||
228 | - HUAWEI_CLOUD_SWITCHBOARD: "KPI2DC9105C,KPI6F17667E,KPIF21A9F60,KPI5364695E,KPI961A9688,KPIE78B29FF", | ||
229 | - //华为防火墙:IP地址、管理状态、操作状态、所属区域、CPU平均使用率、内存平均使用率 | ||
230 | - HUAWEI_CLOUD_FIREWALL: "KPI2DC9105C,KPI6F17667E,KPIF21A9F60,KPI5364695E,KPI961A9688,KPIE78B29FF", | ||
231 | - //虚拟化vmware平台:主机数、虚拟机数量、磁盘已使用大小、已使用内存、网络数、磁盘数量、网卡数量、平台运行状态 | ||
232 | - VIRTUALIZATION_VMWARE: "KPI02EA188F,KPID4E1FD1D,KPI1988842F,KPI4A216352,KPI63916615,KPIA4D671CC,KPID1BA9510", | ||
233 | - //虚拟化资源池:资源池名称、HA健康监测、主机数、网络数、CPU大小、内存大小、CPU线程数、资源池状态、CPU使用率、内存使用率 | ||
234 | - VIRTUALIZATION_VMWARE_CLUSTER: "KPIC3F28B34,KPI26E85604,KPI02EA188F,KPI63916615,KPI98960E55,KPI1584BE1C,KPI15358CE3,KPIEE008133,KPI7054BC34,KPI31CB8D97", | ||
235 | - //虚拟化物理机:所属资源池 、主机状态 、CPU使用率、内存使用率、启动时间 | ||
236 | - VIRTUALIZATION_VMWARE_PHYSICSHOST: "KPID7BE5E90,KPI1635BB9B,KPI7054BC34,KPI31CB8D97,KPIF0A20BB4", | ||
237 | - //虚拟化虚拟机:所属资源池、所属物理主机IP、主机状态、运行状态、网卡数量、磁盘数量、CPU使用率、内存使用率 | ||
238 | - VIRTUALIZATION_VMWARE_VHOST: "KPID7BE5E90,KPI9BFCAA00,KPI1635BB9B,KPIE4B51D5C,KPICB05513A,KPIA4D671CC,KPI7054BC34,KPI31CB8D97", | ||
239 | - //存储:总容量、已使用容量、已分配容量、已分配未使用容量、磁带库运行状态 | ||
240 | - STORAGE: "KPI2D4365CA,KPI008F0D3A,KPIFAFA06EE,KPI358301D0,KPIEFF93409", | ||
241 | - //网络设备路由器:端口数量\所属区域\视频会议期间链路带宽占用率\接收丢包率\端口发送流量\发送丢包率\设备的连通状态\征收期宽带链路占用率\主备链路的通断状态 | ||
242 | - NETHARDWARE_ROUTER: "KPI1FC18754,KPI5364695E,KPI59705C06,KPI87312ED9,KPI88D5DF44,KPI89560B13,KPI94AEBD99,KPI9806211A,KPIC37FE51C", | ||
243 | - //网络设备:交换机 | ||
244 | - NETHARDWARE_SWITCHBOARD: "KPI1FC18754,KPI5364695E,KPI59705C06,KPI87312ED9,KPI88D5DF44,KPI89560B13,KPI94AEBD99,KPI9806211A,KPIC37FE51C", | ||
245 | - //负载均衡 CPU使用率 | ||
246 | - NETHARDWARE_LOADBALANCING: "KPI7054BC34", | ||
247 | - //Oracle 数据库:数据库状态、是否为集群、会话百分比、表空间使用率、归档日志状态、安装的选项、锁数量、活动会话数量 | ||
248 | - DATABASE_ORACLE: "KPI7498580B,KPI096EB5BA,KPI18F18278,KPI64B1610A,KPI69E67C68,KPIA52AF07F,KPIA55F9590,KPICFA785F5", | ||
249 | - //DATABASE_MYSQL :mysql运行线程数、mysql当前连接线程数最大连接数、mysql进程执行时间、吞吐量、版本信息 | ||
250 | - DATABASE_MYSQL: "KPI08809218,KPIA5980712,KPI8914AC3B,KPIDB9E6D41,KPIFB54AE94,KPIDAC7AC64", | ||
251 | - //weblogic:活动线程数、网络连通性、最大连接数、执行线程数使用率、已打开会话数、队列长度、总队列数 | ||
252 | - MIDDLEWARE_WEBLOGIC: "KPI2893A9EC,KPI2DBC270D,KPI8914AC3B,KPI8BF5E027,KPIC0A94965,KPIC18DC28A,KPIFDB4AD23", | ||
253 | - //tomcat:最大线程数、当前线程数、繁忙线程数、已使用heap内存量、Non-heap使用率、heap使用率 | ||
254 | - MIDDLEWARE_TOMCAT: "KPI0A144EC2,KPI70500CAA,KPIAAF2D335,KPIA0FB8392,KPI68B432E5,KPIADACC4E3" | ||
255 | - }, | ||
256 | - /** | ||
257 | - * 预览附件 | ||
258 | - * @param id 附件ID | ||
259 | - */ | ||
260 | - openReport: function (id, flag, suffix, code, name, document) { | ||
261 | - var accessToken = ''; | ||
262 | - layui.use(['sessions', 'common'], function () { | ||
263 | - var sessions = layui.sessions; | ||
264 | - accessToken = sessions.getToken()['access_token']; | ||
265 | - }); | ||
266 | - var url = obj.domainName + '/api-web/home/priviewOfiice/' + id + '?document=' + document + '&access_token=' + accessToken; | ||
267 | - var loadIndex = layer.load(1, {shade: [0.3], content: '文件正在转换...'}); | ||
268 | - $.ajax({ | ||
269 | - type: "get", | ||
270 | - url: url, | ||
271 | - async: true, | ||
272 | - success: function (data) { | ||
273 | - if (data.code == 0) { | ||
274 | - layer.close(loadIndex); | ||
275 | - window.open("/src/lib/extend/pdfjs/web/viewer.html?test=" + encodeURIComponent(data.pdfPath)); | ||
276 | - } | ||
277 | - } | ||
278 | - }); | ||
279 | - }, | ||
280 | - //业务下拉选择数据绑定 | ||
281 | - bizTypeSelect: function (targtetId, callback) { | ||
282 | - var options = "<option value=''>=所属业务=</option>"; | ||
283 | - admin.req({ | ||
284 | - url: this.domainName + '/api-web/home/business/findAllBusType', | ||
285 | - data: {'type': 'per'} | ||
286 | - , async: false | ||
287 | - }).done(function (res) { | ||
288 | - var bizlist = res.data; | ||
289 | - $.each(bizlist, function (i, v) { | ||
290 | - options += '<option value="' + v.busId + '">' + v.busTypeName + '</option>'; | ||
291 | - }); | ||
292 | - $('#' + targtetId).html($(options)); | ||
293 | - if (callback) { | ||
294 | - callback(); | ||
295 | - } | ||
296 | - }).error(function (error) { | ||
297 | - console.error(error); | ||
298 | - }); | ||
299 | - }, | ||
300 | - //资源类型下拉选择数据绑定 | ||
301 | - resTypeSelect: function (targtetId, callback, ajaxParams) { | ||
302 | - var options = "<option value=''>=资源类型=</option>"; | ||
303 | - admin.req(Object.assign({ | ||
304 | - url: this.domainName + '/api-web/home/restype/getAllResType' | ||
305 | - }, ajaxParams)).done(function (res) { | ||
306 | - var reslist = res.data; | ||
307 | - $.each(reslist, function (i, v) { | ||
308 | - options += '<option value="' + v.resTypeCode + '">' + v.resTypeName + '</option>'; | ||
309 | - }); | ||
310 | - $('#' + targtetId).html($(options)); | ||
311 | - if (callback) { | ||
312 | - callback(); | ||
313 | - } | ||
314 | - }).error(function (error) { | ||
315 | - console.error(error); | ||
316 | - }); | ||
317 | - }, | ||
318 | - resTypeXmSelect: function (xmSelectParams) { | ||
319 | - admin.req({ | ||
320 | - url: `${obj.domainName}/api-web/manage/restype/list`, | ||
321 | - async: false, | ||
322 | - success: function (res) { | ||
323 | - // 资源类型下拉框 | ||
324 | - var resTypeList = res.data; | ||
325 | - var resTypeTree = obj.pidToChildren(resTypeList, "resTypeCode", "parentId"); | ||
326 | - xmSelect.render(Object.assign({ | ||
327 | - el: '#', | ||
328 | - tips: '=资源类型=', | ||
329 | - filterable: true, | ||
330 | - radio: false, | ||
331 | - clickClose: false, | ||
332 | - initValue: [], | ||
333 | - prop: { | ||
334 | - name: 'resTypeName', | ||
335 | - value: 'resTypeCode' | ||
336 | - }, | ||
337 | - toolbar: { | ||
338 | - show: true, | ||
339 | - list: ['CLEAR'] | ||
340 | - }, | ||
341 | - tree: { | ||
342 | - show: true, | ||
343 | - showFolderIcon: true, | ||
344 | - showLine: true, | ||
345 | - strict: false, | ||
346 | - indent: 20 | ||
347 | - }, | ||
348 | - data: resTypeTree, | ||
349 | - on: function (data) { | ||
350 | - | ||
351 | - } | ||
352 | - }, xmSelectParams)); | ||
353 | - } | ||
354 | - }); | ||
355 | - }, | ||
356 | - /** | ||
357 | - * @description 厂商公共方法 | ||
358 | - * @author XuHaoJie | ||
359 | - * @date 2021/12/27 15:03 | ||
360 | - */ | ||
361 | - providerSelect: function (targtetId, callback) { | ||
362 | - var sessions = layui.sessions; | ||
363 | - var accessToken = sessions.getToken()['access_token']; | ||
364 | - var options = "<option value=''>=所属厂商=</option>"; | ||
365 | - admin.req({ | ||
366 | - url: `${obj.domainName}/api-web/manage/ddic/findSucDdics/provider?access_token=` + accessToken, | ||
367 | - type: 'POST', | ||
368 | - async: false | ||
369 | - }).done(function (res) { | ||
370 | - var list = res.data; | ||
371 | - $.each(list, function (i, v) { | ||
372 | - options += '<option value="' + v.ddicCode + '">' + v.ddicName + '</option>'; | ||
373 | - }); | ||
374 | - $('#' + targtetId).html($(options)); | ||
375 | - if (callback) { | ||
376 | - callback(); | ||
377 | - } | ||
378 | - }).error(function (error) { | ||
379 | - console.error(error); | ||
380 | - }); | ||
381 | - }, | ||
382 | - | ||
383 | - menuXmSelect: function (xmSelectParams, done, username_, roleId_) { | ||
384 | - var username = username_ ? username_ : ''; | ||
385 | - var roleId = roleId_ ? roleId_ : ''; | ||
386 | - admin.req({ | ||
387 | - url: `${obj.domainName}/api-user/menus/findMenus?username=` + username + '&roleIds=' + roleId, | ||
388 | - success: function (res) { | ||
389 | - // 菜单下拉框 | ||
390 | - var menuList = res.data; | ||
391 | - // menuList.forEach(item => { | ||
392 | - // item.disabled = item.isLeaf !== 'Y'; | ||
393 | - // }); | ||
394 | - var menuTree = obj.pidToChildren(menuList, "id", "parentId"); | ||
395 | - //XuHaoJie 2021/10/21 添加是否是父节点 | ||
396 | - addProperty(menuTree); | ||
397 | - var menuSelect = xmSelect.render(Object.assign({ | ||
398 | - el: '#', | ||
399 | - tips: '=菜单=', | ||
400 | - filterable: true, | ||
401 | - radio: false, | ||
402 | - clickClose: false, | ||
403 | - initValue: [], | ||
404 | - prop: { | ||
405 | - name: 'name', | ||
406 | - value: 'id' | ||
407 | - }, | ||
408 | - toolbar: { | ||
409 | - show: true, | ||
410 | - list: ['CLEAR'] | ||
411 | - }, | ||
412 | - tree: { | ||
413 | - show: true, | ||
414 | - showFolderIcon: true, | ||
415 | - showLine: true, | ||
416 | - strict: false, | ||
417 | - indent: 20 | ||
418 | - }, | ||
419 | - data: menuTree, | ||
420 | - on: function (data) { | ||
421 | - | ||
422 | - } | ||
423 | - }, xmSelectParams)); | ||
424 | - if (done) { | ||
425 | - done(menuSelect); | ||
426 | - } | ||
427 | - } | ||
428 | - }); | ||
429 | - | ||
430 | - //添加是否是父节点的删除 | ||
431 | - function addProperty(list) { | ||
432 | - list.forEach(item => { | ||
433 | - if (item.children && item.children.length > 0) { | ||
434 | - item['isParent'] = 1; | ||
435 | - addProperty(item.children); | ||
436 | - } else { | ||
437 | - item['isParent'] = 0; | ||
438 | - } | ||
439 | - return item; | ||
440 | - }) | ||
441 | - } | ||
442 | - }, | ||
443 | - relationTypeXmSelect: function (xmSelectParams, done) { | ||
444 | - admin.req({ | ||
445 | - url: `${obj.domainName}/api-web/relationType/getAll`, | ||
446 | - success: function (res) { | ||
447 | - var relationTypeList = res.data; | ||
448 | - var relationTypeSelect = xmSelect.render(Object.assign({ | ||
449 | - el: '#', | ||
450 | - tips: '=关系=', | ||
451 | - filterable: true, | ||
452 | - radio: false, | ||
453 | - clickClose: false, | ||
454 | - initValue: [], | ||
455 | - prop: { | ||
456 | - name: 'typeName', | ||
457 | - value: 'reType' | ||
458 | - }, | ||
459 | - toolbar: { | ||
460 | - show: true, | ||
461 | - list: ['ALL', 'CLEAR'] | ||
462 | - }, | ||
463 | - data: relationTypeList, | ||
464 | - on: function (data) { | ||
465 | - | ||
466 | - } | ||
467 | - }, xmSelectParams)); | ||
468 | - if (done) { | ||
469 | - done(relationTypeSelect); | ||
470 | - } | ||
471 | - } | ||
472 | - }); | ||
473 | - }, | ||
474 | - | ||
475 | - //绑定拓扑数据 | ||
476 | - topoSelect: function (targtetId, callback) { | ||
477 | - var options = "<option value=''>=选择拓扑=</option>"; | ||
478 | - admin.req({ | ||
479 | - url: this.domainName + "/api-web/topo/jtopo/getListByUser?page=1&limit=50" | ||
480 | - }).done(function (res) { | ||
481 | - var topolist = res.data; | ||
482 | - $.each(topolist, function (i, v) { | ||
483 | - options += '<option value="' + v.jtopoId + '">' + v.topoName + '</option>'; | ||
484 | - }); | ||
485 | - $('#' + targtetId).html($(options)); | ||
486 | - if (callback) { | ||
487 | - callback(); | ||
488 | - } | ||
489 | - }).error(function (error) { | ||
490 | - console.error(error); | ||
491 | - }); | ||
492 | - }, | ||
493 | - //绑定虚拟化平台 | ||
494 | - virtualPlatFormSelect: function (targtetId, bizId, callback) { | ||
495 | - var options = "<option value=''>=所属平台=</option>"; | ||
496 | - admin.req({ | ||
497 | - url: this.domainName + '/api-web/home/virtual/platform' | ||
498 | - }).done(function (res) { | ||
499 | - var virtuallist = res.data; | ||
500 | - $.each(virtuallist, function (i, v) { | ||
501 | - options += '<option value="' + v.resId + '">' + v.resName + '</option>'; | ||
502 | - }); | ||
503 | - $('#' + targtetId).html($(options)); | ||
504 | - if (callback) { | ||
505 | - callback(); | ||
506 | - } | ||
507 | - }).error(function (error) { | ||
508 | - console.error(error); | ||
509 | - }); | ||
510 | - }, | ||
511 | - /** | ||
512 | - * 数据字典下拉选择数据绑定 | ||
513 | - * | ||
514 | - * @param targtetId 下拉框id | ||
515 | - * @param ddicCategory 数据类别 | ||
516 | - * @param callback 回调函数 | ||
517 | - */ | ||
518 | - ddicSelect: function (targtetId, ddicCategory, callback) { | ||
519 | - layui.use(['sessions', 'common'], function () { | ||
520 | - var sessions = layui.sessions; | ||
521 | - accessToken = sessions.getToken()['access_token']; | ||
522 | - }); | ||
523 | - var options = "<option value=''>=请选择=</option>"; | ||
524 | - $.ajax({ | ||
525 | - url: `${this.domainName}/api-web/manage/ddic/findSucDdics/${ddicCategory}?access_token=${accessToken}` | ||
526 | - , method: 'POST' | ||
527 | - , success: function (res) { | ||
528 | - if (res && res.data) { | ||
529 | - var ddiclist = res.data; | ||
530 | - $.each(ddiclist, function (i, v) { | ||
531 | - options += '<option value="' + v.ddicCode + '">' + v.ddicName + '</option>'; | ||
532 | - }); | ||
533 | - $('#' + targtetId).html($(options)); | ||
534 | - if (callback) { | ||
535 | - callback(ddiclist); | ||
536 | - } | ||
537 | - } | ||
538 | - } | ||
539 | - , error(error) { | ||
540 | - console.error(error); | ||
541 | - } | ||
542 | - }); | ||
543 | - }, | ||
544 | - // 用户下拉框 | ||
545 | - userXmSelect: function (xmSelectParams) { | ||
546 | - var userSelect; | ||
547 | - $.ajax({ | ||
548 | - url: this.domainName + '/api-user/users/getAll?access_token=' + localStorage.getItem("access_token"), | ||
549 | - async: false, | ||
550 | - success: function (response) { | ||
551 | - userSelect = xmSelect.render(Object.assign({ | ||
552 | - el: '#', | ||
553 | - tips: '=选择用户=', | ||
554 | - prop: { | ||
555 | - name: 'nickname', | ||
556 | - value: 'username' | ||
557 | - }, | ||
558 | - autoRow: true, | ||
559 | - filterable: true, | ||
560 | - toolbar: { | ||
561 | - show: true, | ||
562 | - list: ['ALL', 'REVERSE', 'CLEAR'] | ||
563 | - }, | ||
564 | - data: response, | ||
565 | - on: function (data) { | ||
566 | - | ||
567 | - } | ||
568 | - }, xmSelectParams)); | ||
569 | - } | ||
570 | - }); | ||
571 | - return userSelect; | ||
572 | - }, | ||
573 | - //打开弹框 | ||
574 | - openWin: function (url, name, params, btns, fn, cancelfn, area, done, layerParams) { | ||
575 | - if (!name) { | ||
576 | - name = "信息"; | ||
577 | - } | ||
578 | - if (!area) { | ||
579 | - area = ['80%', '90%'] | ||
580 | - } | ||
581 | - var id = md5(url) | ||
582 | - view('commonViewModel').render(url).then(function (res) { | ||
583 | - layer.open(Object.assign({ | ||
584 | - title: [name, 'font-size:18px;'], | ||
585 | - type: 1, | ||
586 | - area: area, | ||
587 | - resize: false, | ||
588 | - shadeClose: true,//开启遮罩层 | ||
589 | - id: id, | ||
590 | - content: laytpl(res.body).render(JSON.stringify(params)), | ||
591 | - success: function (layero, index) { | ||
592 | - if (done) { | ||
593 | - done(layero, index); | ||
594 | - } | ||
595 | - }, | ||
596 | - yes: function (index, layero) { | ||
597 | - if (fn && fn(index)) { | ||
598 | - layer.close(index); | ||
599 | - } | ||
600 | - }, | ||
601 | - cancel: function () { | ||
602 | - $.each(obj.detailTimer, function (i, v) { | ||
603 | - clearTimeout(obj.detailTimer[i]); | ||
604 | - }); | ||
605 | - obj.detailTimer.length = 0; | ||
606 | - //取消的回调函数 | ||
607 | - if (cancelfn) { | ||
608 | - cancelfn(); | ||
609 | - } | ||
610 | - }, | ||
611 | - btn: btns | ||
612 | - }, layerParams)); | ||
613 | - }); | ||
614 | - }, | ||
615 | - openMoreBtnWin: function (url, name, params, btns, fn, fn2, cancelfn, area, done, layerParams) { | ||
616 | - if (!name) { | ||
617 | - name = "信息"; | ||
618 | - } | ||
619 | - if (!area) { | ||
620 | - area = ['80%', '90%'] | ||
621 | - } | ||
622 | - view('commonViewModel').render(url).then(function (res) { | ||
623 | - layer.open(Object.assign({ | ||
624 | - title: [name, 'font-size:18px;'], | ||
625 | - type: 1, | ||
626 | - resize: false, | ||
627 | - area: area, | ||
628 | - content: laytpl(res.body).render(JSON.stringify(params)), | ||
629 | - scrollbar: false, | ||
630 | - success: function (layero, index) { | ||
631 | - if (done) { | ||
632 | - done(layero, index); | ||
633 | - } | ||
634 | - }, | ||
635 | - yes: function (index, layero) { | ||
636 | - if (fn && fn()) { | ||
637 | - layer.close(index); | ||
638 | - } | ||
639 | - } | ||
640 | - , btn2: function (index, layero) { | ||
641 | - if (fn2 && fn2()) { | ||
642 | - layer.close(index); | ||
643 | - } | ||
644 | - } | ||
645 | - , cancel: function () { | ||
646 | - //取消的回调函数 | ||
647 | - if (cancelfn) { | ||
648 | - cancelfn(); | ||
649 | - } | ||
650 | - }, | ||
651 | - btn: btns | ||
652 | - }, layerParams)); | ||
653 | - }); | ||
654 | - }, | ||
655 | - /** | ||
656 | - * @desc 以layer.open打开弹框,渲染html元素在弹框的内容区域,可以直接传参为html片段 | ||
657 | - * @param id 设定一个id,防止重复弹出 | ||
658 | - * @param conent html内容 | ||
659 | - * @param title 标题,可选 | ||
660 | - * @param width 宽度,可选 | ||
661 | - * @param height 高度,可选 | ||
662 | - * @param btns 按钮组 ,可选 | ||
663 | - * @param fn 点击确定回调函数,可选 | ||
664 | - * @param successfn 加载成功后的回调处理,可选 | ||
665 | - */ | ||
666 | - openWindow: function (id, conent, title, width, height, btns, fn, successfn) { | ||
667 | - if (!width) { | ||
668 | - width = '80%' | ||
669 | - } | ||
670 | - if (!height) { | ||
671 | - height = '90%' | ||
672 | - } | ||
673 | - layer.open({ | ||
674 | - type: 1 | ||
675 | - , title: title //不显示标题栏 | ||
676 | - , closeBtn: false | ||
677 | - , area: [width, height] | ||
678 | - , shade: 0.8 | ||
679 | - , resize: false | ||
680 | - , id: id //设定一个id,防止重复弹出 | ||
681 | - , btn: btns | ||
682 | - , content: conent | ||
683 | - , success: function (layero, index) { | ||
684 | - if (successfn && successfn) { | ||
685 | - successfn(); | ||
686 | - } | ||
687 | - } | ||
688 | - , yes: function (index, layero) { | ||
689 | - if (fn && fn()) { | ||
690 | - fn() | ||
691 | - layer.close(index); //如果设定了yes回调,需进行手工关闭 | ||
692 | - } | ||
693 | - } | ||
694 | - }); | ||
695 | - }, | ||
696 | - //详细页地址 | ||
697 | - detailPath: function (resType, resId, protocol) { | ||
698 | - //供从详细页配置策略时使用 | ||
699 | - localStorage.setItem("currentResType", resType); | ||
700 | - //网络设备 | ||
701 | - if (resType.indexOf("NETHARDWARE_") == 0 && resType != 'NETHARDWARE_360SAFE' && resType != 'NETHARDWARE_LOADBALANCING' && resType != 'NETHARDWARE_SAN_SWITCHBOARD') { | ||
702 | - resType = 'NETHARDWARE'; | ||
703 | - } | ||
704 | - //安全 | ||
705 | - // if (resType != 'NETSAFE_FIREWALL_SUB' && resType.indexOf("NETSAFE_") == 0 && resType !== 'NETSAFE_FIREWALL') { | ||
706 | - // resType = 'NETHARDWARE'; | ||
707 | - // } | ||
708 | - //华为云的防火墙和路由器走相同页面 | ||
709 | - if (resType == 'HUAWEI_CLOUD_SWITCHBOARD' || resType == 'HUAWEI_CLOUD_FIREWALL') { | ||
710 | - resType = "HUAWEI_CLOUD_NETHARDWARE"; | ||
711 | - } | ||
712 | - //小型机分区 | ||
713 | - if (resType.indexOf("HOST_MINICOMPUTER_P") != -1) { | ||
714 | - resType = 'HOST_MINICOMPUTER_PARTITION'; | ||
715 | - } | ||
716 | - //如果是物理服务器并且配置了ssh和snmp协议。则跳转至tab详情页 | ||
717 | - if (resType.indexOf("HOST_X86SERVER") != -1 && protocol && protocol.split(",").length > 1) { | ||
718 | - resType = 'X86SERVER_BMC'; | ||
719 | - } | ||
720 | - //如果是HOST_X86SERVER服务器并且协议为snmp,或共享存储则根据厂商和型号判断类型 | ||
721 | - if ((resType.indexOf("HOST_X86SERVER") !== -1 && protocol == 'SNMP') || resType.indexOf("STORAGE_SHARE") != -1) { | ||
722 | - resType = this.detailPathByProviderAndModel(resType, resId); | ||
723 | - } | ||
724 | - //如果是虚拟化相关资源类型,则根据采集协议判断去那个页面 | ||
725 | - var resTypeList = ['VIRTUALIZATION_VMWARE_VHOST', 'VIRTUALIZATION_HUAWEI_VHOST', 'HUAWEI_CLOUD_VIRTUALHOST', 'ALI_CLOUD_ECS']; | ||
726 | - if (resTypeList.indexOf(resType) != -1) { | ||
727 | - if (protocol == 'SSH' || protocol == 'SNMP') { | ||
728 | - resType = 'HOST_X86VIRTUAL'; | ||
729 | - } | ||
730 | - } | ||
731 | - //如果是虚拟化虚拟机资源,则直接走X86虚拟机页面 | ||
732 | - if (resType.indexOf("VIRTUALIZATION_VHOST") != -1) { | ||
733 | - resType = 'HOST_X86VIRTUAL'; | ||
734 | - } | ||
735 | - //如果是oracle数据库,则判定是否配置集群 | ||
736 | - if (resType == 'DATABASE_ORACLE') { | ||
737 | - resType = this.checkHasCluster(resType, resId); | ||
738 | - } | ||
739 | - | ||
740 | - return "template/detail/" + resType.toLowerCase(); | ||
741 | - }, | ||
742 | - checkHasCluster: function (resType, resId) { | ||
743 | - $.ajax({ | ||
744 | - url: this.domainName + '/api-web/detail/block?access_token=' + layui.sessions.getToken()['access_token'], | ||
745 | - data: { | ||
746 | - resId: resId, | ||
747 | - kpiId: 'KPI096EB5BA' | ||
748 | - }, | ||
749 | - async: false, | ||
750 | - success: function (res) { | ||
751 | - | ||
752 | - if (res && res.data && res.data.length > 0) { | ||
753 | - if (res.data[0].value == '是') { | ||
754 | - resType = 'ORACLE_RAC'; | ||
755 | - } | ||
756 | - } | ||
757 | - } | ||
758 | - }); | ||
759 | - return resType; | ||
760 | - }, | ||
761 | - //BMC服务器和共享存储根据厂商和型号跳转不同的详情页 | ||
762 | - detailPathByProviderAndModel: function (resType, resId) { | ||
763 | - $.ajax({ | ||
764 | - url: this.domainName + '/api-web/manage/resource/findById?access_token=' + layui.sessions.getToken()['access_token'], | ||
765 | - data: {resId: resId}, | ||
766 | - async: false, | ||
767 | - success: function (res) { | ||
768 | - var res = res.obj; | ||
769 | - var bean = res['bean']; | ||
770 | - | ||
771 | - //存放BMC服务器厂商和详情页关系的map | ||
772 | - var BMCMap = new Map(); | ||
773 | - BMCMap.set('DELL', 'HOST_BMC_DELL'); | ||
774 | - BMCMap.set('H3C', 'HOST_BMC_H3C'); | ||
775 | - BMCMap.set('HUAWEI', 'HOST_BMC_HUAWEI'); | ||
776 | - BMCMap.set('LENOVO', 'HOST_BMC_LENOVO'); | ||
777 | - BMCMap.set("IBM", "HOST_BMC_IBM"); | ||
778 | - BMCMap.set('Inspur', 'HOST_BMC_INSPUR'); | ||
779 | - BMCMap.set('sugon', 'HOST_BMC_SUGON'); | ||
780 | - BMCMap.set('HP', 'HOST_BMC_HP'); | ||
781 | - BMCMap.set('HP_knifeBox', 'HOST_BMC_HP_KNIFEBOX'); | ||
782 | - BMCMap.set('HUAWEI_KNIFEBOX', 'HOST_BMC_HUAWEI_KNIFEBOX'); | ||
783 | - BMCMap.set('HUAWEI_BLADE', 'HOST_BMC_HUAWEI_BLADE'); | ||
784 | - | ||
785 | - //存放共享存储厂商和详情页关系的map | ||
786 | - var shareMap = new Map(); | ||
787 | - shareMap.set('HUAWEI', 'STORAGE_SHARE'); | ||
788 | - shareMap.set('Inspur', 'STORAGE_SHARE_INSPUR'); | ||
789 | - | ||
790 | - if (resType.indexOf('HOST_X86SERVER') != -1) { | ||
791 | - if (bean.provider == 'HP' && bean.model.split('-')[0] == 'C7000') { | ||
792 | - resType = BMCMap.get('HP_knifeBox'); | ||
793 | - } else if (bean.provider == 'H3C' && bean.model.split('-')[1] == 'R690') { | ||
794 | - resType = BMCMap.get('HP'); | ||
795 | - } else if (bean.provider === 'HUAWEI' && bean.model === 'E9000') { | ||
796 | - resType = BMCMap.get('HUAWEI_KNIFEBOX'); | ||
797 | - } else if (bean.resCode && bean.resCode.indexOf('华为Blade__') && bean.parentId) { | ||
798 | - resType = BMCMap.get('HUAWEI_BLADE'); | ||
799 | - } else { | ||
800 | - if (BMCMap.get(bean.provider)) { | ||
801 | - resType = BMCMap.get(bean.provider) | ||
802 | - } | ||
803 | - } | ||
804 | - } | ||
805 | - if (resType.indexOf('STORAGE_SHARE') != -1) { | ||
806 | - resType = shareMap.get(bean.provider) | ||
807 | - } | ||
808 | - } | ||
809 | - }) | ||
810 | - return resType; | ||
811 | - }, | ||
812 | - //打开性能曲线图 | ||
813 | - openLineChart: function (title, params) { | ||
814 | - // Start 将对象转成key=value&key1=value1 LSQ 2022/1/17 | ||
815 | - let urlParams = ''; | ||
816 | - for (let key in params) { | ||
817 | - if (params[key]) { | ||
818 | - urlParams += key + '=' + params[key] + '&' | ||
819 | - } | ||
820 | - } | ||
821 | - urlParams = urlParams.substr(0, urlParams.length - 1) | ||
822 | - //End LSQ 2022/1/17 | ||
823 | - if (!title) { | ||
824 | - title = "性能曲线图"; | ||
825 | - } | ||
826 | - view('commonViewModel').render("template/detail/line").then(function (res) { | ||
827 | - // Start ident==1为性能趋势 LSQ 2022/1/17 | ||
828 | - let type = 1; | ||
829 | - let content = laytpl(res.body).render(JSON.stringify(params)); | ||
830 | - if (params.ident && params.ident == 1) { | ||
831 | - type = 2; | ||
832 | - content = ['/vue3/index.html#/vue3/pieDetailLine?' + urlParams, 'no']; | ||
833 | - } | ||
834 | - //End LSQ 2022/1/17 | ||
835 | - layer.open({ | ||
836 | - title: [title, 'font-size:18px;'], | ||
837 | - // type: 1, | ||
838 | - type: type, | ||
839 | - area: ['80%', '90%'], | ||
840 | - shadeClose: true,//开启遮罩层 | ||
841 | - id: 'line_chart_div', | ||
842 | - // content: laytpl(res.body).render(JSON.stringify(params)), | ||
843 | - content: content, | ||
844 | - cancel: function () { | ||
845 | - clearTimeout(obj.lineTimer); | ||
846 | - } | ||
847 | - }); | ||
848 | - }); | ||
849 | - }, | ||
850 | - //打开性能柱状图 | ||
851 | - openBarChart: function (title, params) { | ||
852 | - if (!title) { | ||
853 | - title = "使用情况"; | ||
854 | - } | ||
855 | - view('commonViewModel').render("template/detail/bar").then(function (res) { | ||
856 | - layer.open({ | ||
857 | - title: [title, 'font-size:18px;'], | ||
858 | - type: 1, | ||
859 | - area: ['90%', '600px'], | ||
860 | - content: laytpl(res.body).render(JSON.stringify(params)) | ||
861 | - }); | ||
862 | - }); | ||
863 | - }, | ||
864 | - //将数组切割分组 | ||
865 | - splieceGroup: function (array, subLength) { | ||
866 | - var index = 0; | ||
867 | - var newArray = []; | ||
868 | - while (index < array.length) { | ||
869 | - newArray.push(array.slice(index, index += subLength)); | ||
870 | - } | ||
871 | - return newArray; | ||
872 | - }, | ||
873 | - //判定是否为空或者undefined wtc add | ||
874 | - isNotEmpty: function (data) { | ||
875 | - if (data != '' && data != null && data != undefined) { | ||
876 | - return true | ||
877 | - } else { | ||
878 | - return false | ||
879 | - } | ||
880 | - }, | ||
881 | - getPreMonth(date) { | ||
882 | - var arr = date.split('-'); | ||
883 | - var year = arr[0]; //获取当前日期的年份 | ||
884 | - var month = arr[1]; //获取当前日期的月份 | ||
885 | - var day = arr[2]; //获取当前日期的日 | ||
886 | - var days = new Date(year, month, 0); | ||
887 | - days = days.getDate(); //获取当前日期中月的天数 | ||
888 | - var year2 = year; | ||
889 | - var month2 = parseInt(month) - 1; | ||
890 | - if (month2 == 0) { | ||
891 | - year2 = parseInt(year2) - 1; | ||
892 | - month2 = 12; | ||
893 | - } | ||
894 | - var day2 = day; | ||
895 | - var days2 = new Date(year2, month2, 0); | ||
896 | - days2 = days2.getDate(); | ||
897 | - if (day2 > days2) { | ||
898 | - day2 = days2; | ||
899 | - } | ||
900 | - if (month2 < 10) { | ||
901 | - month2 = '0' + month2; | ||
902 | - } | ||
903 | - var t2 = year2 + '年' + month2 + '月'; | ||
904 | - return t2; | ||
905 | - }, | ||
906 | - //生成uuid wtc add | ||
907 | - uuid: function () { | ||
908 | - var s = []; | ||
909 | - var hexDigits = "0123456789abcdef"; | ||
910 | - for (var i = 0; i < 36; i++) { | ||
911 | - s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); | ||
912 | - } | ||
913 | - s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 | ||
914 | - s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 | ||
915 | - s[8] = s[13] = s[18] = s[23] = "-"; | ||
916 | - | ||
917 | - var uuid = s.join(""); | ||
918 | - return uuid; | ||
919 | - }, | ||
920 | - //获取当日 joke add 0200422 | ||
921 | - getToday: function (type) { | ||
922 | - var date = new Date(); | ||
923 | - var year = date.getFullYear();//当前年份 | ||
924 | - var month = date.getMonth();//当前月份 | ||
925 | - var data = date.getDate();//天 | ||
926 | - var hours = date.getHours();//小时 | ||
927 | - var minute = date.getMinutes();//分 | ||
928 | - var second = date.getSeconds();//秒 | ||
929 | - if (type === 'day') { | ||
930 | - return year + "-" + obj.fnW(month + 1) + "-" + obj.fnW(data) | ||
931 | - } else { | ||
932 | - return year + "-" + obj.fnW(month + 1) + "-" + obj.fnW(data) + ' ' + obj.fnW(hours) + ":" + obj.fnW(minute) + ":" + obj.fnW(second); | ||
933 | - } | ||
934 | - }, | ||
935 | - //日期时间补0 joke add 0200422 | ||
936 | - fnW: function (str) { | ||
937 | - var num; | ||
938 | - str > 9 ? num = str : num = "0" + str; | ||
939 | - return num; | ||
940 | - }, | ||
941 | - getUrlParam: function (key) { | ||
942 | - var href = window.location.href; | ||
943 | - href = href.substr(0, href.indexOf("#")); | ||
944 | - var url = href.split("?"); | ||
945 | - if (url.length <= 1) { | ||
946 | - return ""; | ||
947 | - } | ||
948 | - var params = url[1].split("&"); | ||
949 | - | ||
950 | - for (var i = 0; i < params.length; i++) { | ||
951 | - var param = params[i].split("="); | ||
952 | - if (key == param[0]) { | ||
953 | - return param[1]; | ||
954 | - } | ||
955 | - } | ||
956 | - return ""; | ||
957 | - }, | ||
958 | - //保存列 | ||
959 | - saveTableCols: function (data, sign) { | ||
960 | - var accessToken = ''; | ||
961 | - layui.use(['sessions', 'common'], function () { | ||
962 | - var sessions = layui.sessions; | ||
963 | - accessToken = sessions.getToken()['access_token']; | ||
964 | - }); | ||
965 | - var cols = data['cols'][0]; | ||
966 | - if (sign === 0) { | ||
967 | - var parseData = JSON.parse(data['cols']); | ||
968 | - cols = parseData[0]; | ||
969 | - } | ||
970 | - $.each(cols, function (i, e) { | ||
971 | - if (e['isChild']) { | ||
972 | - if (e['isChild'] && typeof e['isChild'] === 'function') { | ||
973 | - e['isChild'] = e['isChild'] + ''; | ||
974 | - } | ||
975 | - } | ||
976 | - if (e['children']) { | ||
977 | - $.each(e['children'], function (j, k) { | ||
978 | - if (k['url'] && typeof k['url'] === 'function') { | ||
979 | - k['url'] = k['url'] + ''; | ||
980 | - } | ||
981 | - if (k['done'] && typeof k['done'] === 'function') { | ||
982 | - k['done'] = k['done'] + ''; | ||
983 | - } | ||
984 | - }) | ||
985 | - } | ||
986 | - }) | ||
987 | - data['cols'] = JSON.stringify([cols]); | ||
988 | - layer.load(2); | ||
989 | - admin.req({ | ||
990 | - url: obj.domainName + '/api-web/bUsercustomTable/save?access_token=' + accessToken | ||
991 | - , type: 'post' | ||
992 | - , contentType: "application/json;charset=UTF-8"//指定消息请求类型 | ||
993 | - , data: JSON.stringify(data) | ||
994 | - , error: function (e) { | ||
995 | - layer.closeAll('loading'); | ||
996 | - } | ||
997 | - }).done(function (res) { | ||
998 | - layer.closeAll('loading'); | ||
999 | - layer.msg("保存成功", {icon: 1, time: 2000}) | ||
1000 | - }); | ||
1001 | - }, | ||
1002 | - //获取列 | ||
1003 | - getTableCols: function (param, callback) { | ||
1004 | - //获取配置的列 | ||
1005 | - admin.req({ | ||
1006 | - url: obj.domainName + '/api-web/bUsercustomTable/findByUserNameAndOthers' | ||
1007 | - , data: param | ||
1008 | - }).done(function (res) { | ||
1009 | - var cols = null; | ||
1010 | - if (res.object && res.object.cols) { | ||
1011 | - cols = JSON.parse(res.object.cols)[0]; | ||
1012 | - $.each(cols, function (i, e) { | ||
1013 | - if (e['isChild']) { | ||
1014 | - if (e['isChild']) { | ||
1015 | - e['isChild'] = eval("(function(){return " + e['isChild'] + " })()"); | ||
1016 | - } | ||
1017 | - } | ||
1018 | - if (e['children']) { | ||
1019 | - $.each(e['children'], function (j, k) { | ||
1020 | - if (k['url']) { | ||
1021 | - k['url'] = eval("(function(){return " + k['url'] + " })()"); | ||
1022 | - } | ||
1023 | - if (k['done']) { | ||
1024 | - k['done'] = eval("(function(){return " + k['done'] + " })()"); | ||
1025 | - } | ||
1026 | - }) | ||
1027 | - } | ||
1028 | - }) | ||
1029 | - } | ||
1030 | - if (callback) { | ||
1031 | - callback(cols); | ||
1032 | - } | ||
1033 | - }); | ||
1034 | - }, | ||
1035 | - //列拖动事件 | ||
1036 | - dragCols: function (target) { | ||
1037 | - $(".layui-table th").mousedown(function () { | ||
1038 | - $(".layui-table th").mousemove(function () { | ||
1039 | - $("#" + target).show(); | ||
1040 | - $("#" + target).removeClass("hide"); | ||
1041 | - }); | ||
1042 | - }); | ||
1043 | - }, | ||
1044 | - // 树表格列拖动/保存事件 | ||
1045 | - treeTableDragCols: function (tableTarget, toolBarTarget) { | ||
1046 | - var toolBarHtml = ''; | ||
1047 | - if (toolBarTarget) { | ||
1048 | - toolBarHtml = '<div class="layui-table-tool"><div class="layui-table-tool-temp">' + $(toolBarTarget).html() + '</div></div>'; | ||
1049 | - } else { | ||
1050 | - toolBarHtml = '<div class="layui-table-tool"><div class="layui-table-tool-temp"><button class="layui-btn layui-btn-primary layui-btn-xs btn_save_cols toolbar-btn" lay-tips="保存列顺序"><i class="iconfont"></i></button></div></div>'; | ||
1051 | - } | ||
1052 | - $(tableTarget).next().find('.layui-table-box').before(toolBarHtml); | ||
1053 | - $(".layui-table th").mousedown(function () { | ||
1054 | - $(".layui-table th").mousemove(function () { | ||
1055 | - $(tableTarget).next().find('.layui-table-tool .btn_save_cols').removeClass('hide'); | ||
1056 | - $(tableTarget).next().find('.layui-table-tool .btn_save_cols').show(); | ||
1057 | - }); | ||
1058 | - }); | ||
1059 | - }, | ||
1060 | - | ||
1061 | - // 普通表格导出到excel | ||
1062 | - exportTableData: function (tableObj, title) { | ||
1063 | - var cols = tableObj.config.cols[0].filter(item => (item.title && item.field)); | ||
1064 | - var tableData = layui.table.cache[tableObj.config.id]; | ||
1065 | - var headList = cols.map(item => item.title); | ||
1066 | - var rowList = tableData.map(item => { | ||
1067 | - var row = {}; | ||
1068 | - cols.forEach(col => { | ||
1069 | - if (!col.templet) { | ||
1070 | - row[col.field] = item[col.field]; | ||
1071 | - } else { | ||
1072 | - var renderHtml = laytpl($(col.templet).html()).render(item).replace(/[\r\n]/g, ''); | ||
1073 | - if (renderHtml.match(/(<.+>)([^<]+)(<\/.+>)/)) { | ||
1074 | - row[col.field] = renderHtml.match(/(<.+>)([^<]+)(<\/.+>)/)[2]; | ||
1075 | - if (!row[col.field].trim()) { | ||
1076 | - row[col.field] = item[col.field]; | ||
1077 | - } | ||
1078 | - } else { | ||
1079 | - row[col.field] = renderHtml | ||
1080 | - } | ||
1081 | - } | ||
1082 | - }); | ||
1083 | - return row; | ||
1084 | - }); | ||
1085 | - obj.exportData(title, headList, rowList); | ||
1086 | - }, | ||
1087 | - // 树表格导出到excel | ||
1088 | - exportTreeTableData: function (tableObj, title) { | ||
1089 | - var cols = tableObj.getTreeOptions().cols[0].filter(item => (item.title && item.field)); | ||
1090 | - var tableData = tableObj.getTableTreeData(); | ||
1091 | - var headList = cols.map(item => item.title); | ||
1092 | - var rowList = []; | ||
1093 | - rowList = treeToList(tableData, rowList, cols); | ||
1094 | - obj.exportData(title, headList, rowList); | ||
1095 | - | ||
1096 | - function treeToList(treeData, rowList, cols) { | ||
1097 | - treeData.forEach(item => { | ||
1098 | - var row = {}; | ||
1099 | - cols.forEach(col => { | ||
1100 | - if (!col.templet) { | ||
1101 | - row[col.field] = item[col.field]; | ||
1102 | - } else { | ||
1103 | - var renderHtml = laytpl($(col.templet).html()).render(item); | ||
1104 | - var value = ''; | ||
1105 | - if (renderHtml.match(/(<.+>|\w)+(.+)(\w|<\/.+>)+/)) { | ||
1106 | - value = renderHtml.match(/(<.+>|\w)+(.+)(\w|<\/.+>)+/)[0]; | ||
1107 | - } | ||
1108 | - if (value) { | ||
1109 | - row[col.field] = value | ||
1110 | - } else { | ||
1111 | - row[col.field] = renderHtml | ||
1112 | - } | ||
1113 | - } | ||
1114 | - }); | ||
1115 | - rowList.push(row); | ||
1116 | - if (item.children && item.children.length > 0) { | ||
1117 | - treeToList(item.children, rowList, cols); | ||
1118 | - } | ||
1119 | - }); | ||
1120 | - return rowList; | ||
1121 | - } | ||
1122 | - }, | ||
1123 | - | ||
1124 | - /** | ||
1125 | - * 导出数据至excel | ||
1126 | - * | ||
1127 | - * @return null | ||
1128 | - * @author 惠佳旭 | ||
1129 | - * @date 2020/11/23 | ||
1130 | - * @param title 导出excel文件名 | ||
1131 | - * @param headList 导出excel列头 | ||
1132 | - * @param rowList 导出excel数据 | ||
1133 | - */ | ||
1134 | - exportData: function (title, headList, rowList) { | ||
1135 | - if (rowList.length < 1) { | ||
1136 | - layer.msg('暂无数据导出...', {icon: 0}); | ||
1137 | - return; | ||
1138 | - } | ||
1139 | - if (layui.device().ie) { | ||
1140 | - layer.msg('不支持ie导出...', {icon: 0}); | ||
1141 | - return; | ||
1142 | - } | ||
1143 | - // 转换bodyData | ||
1144 | - var bodyData = rowList.map(row => Object.values(row).map(item => item ? item.toString().trim().replace(/,/g, ',') : '').join(',')); | ||
1145 | - // 创建下载文件的a标签 | ||
1146 | - var alink = document.createElement('a'); | ||
1147 | - var content = encodeURIComponent(headList.join(',') + '\r\n' + bodyData.join('\r\n')); | ||
1148 | - var contentType = ({csv: 'text/csv', xls: 'application/vnd.ms-excel'})['xls']; | ||
1149 | - alink.href = 'data:' + contentType + ';charset=utf-8,\ufeff' + content; | ||
1150 | - alink.download = title + '.xls'; | ||
1151 | - document.body.appendChild(alink); | ||
1152 | - alink.click(); | ||
1153 | - document.body.removeChild(alink); | ||
1154 | - }, | ||
1155 | - | ||
1156 | - /**检查权限*/ | ||
1157 | - checkPermission: function (access_token) { | ||
1158 | - // Start Wang 2021/12/13 19:42 权限列表,如果能从缓存中加载到数据,则获取缓存中的数据 | ||
1159 | - var ps = sessionStorage.getItem('permissions'); | ||
1160 | - if (ps && ps != '' && ps != null) { | ||
1161 | - return ps.split(','); | ||
1162 | - } | ||
1163 | - // End Wang 2021/12/13 19:43 权限列表,如果能从缓存中加载到数据,则获取缓存中的数据 | ||
1164 | - var pers = []; | ||
1165 | - $.ajax({ | ||
1166 | - type: 'get', | ||
1167 | - url: obj.domainName + '/api-u/users/current?access_token=' + access_token, | ||
1168 | - contentType: "application/json; charset=utf-8", | ||
1169 | - async: false, | ||
1170 | - success: function (data) { | ||
1171 | - pers = data.permissions; | ||
1172 | - $("[permission]").each(function () { | ||
1173 | - var per = $(this).attr("permission"); | ||
1174 | - if ($.inArray(per, pers) < 0) { | ||
1175 | - $(this).hide(); | ||
1176 | - } | ||
1177 | - }); | ||
1178 | - } | ||
1179 | - }); | ||
1180 | - return pers; | ||
1181 | - }, | ||
1182 | - /* pid转children形式 */ | ||
1183 | - pidToChildren: function (data, idName, pidName, childName, pId, canNotCheckPranet) { | ||
1184 | - childName || (childName = 'children'); | ||
1185 | - var newList = []; | ||
1186 | - for (var i = 0; i < data.length; i++) { | ||
1187 | - (pId == undefined) && (pId = obj.getPids(data, idName, pidName)); | ||
1188 | - if (obj.pidEquals(data[i][pidName], pId)) { | ||
1189 | - var children = this.pidToChildren(data, idName, pidName, childName, data[i][idName], canNotCheckPranet); | ||
1190 | - if (canNotCheckPranet === false) { //当不能选择时,设置父节点不可选择 | ||
1191 | - if (children.length > 0) { | ||
1192 | - data[i].disabled = true; | ||
1193 | - } | ||
1194 | - } | ||
1195 | - (children.length > 0) && (data[i][childName] = children); | ||
1196 | - newList.push(data[i]); | ||
1197 | - } | ||
1198 | - } | ||
1199 | - return newList; | ||
1200 | - }, | ||
1201 | - /** 获取顶级的pId */ | ||
1202 | - getPids: function (list, idName, pidName) { | ||
1203 | - var pids = []; | ||
1204 | - for (var i = 0; i < list.length; i++) { | ||
1205 | - var hasPid = false; | ||
1206 | - for (var j = 0; j < list.length; j++) { | ||
1207 | - if (i != j && list[j][idName] == list[i][pidName]) { | ||
1208 | - hasPid = true; | ||
1209 | - } | ||
1210 | - } | ||
1211 | - if (!hasPid) { | ||
1212 | - pids.push(list[i][pidName]); | ||
1213 | - } | ||
1214 | - } | ||
1215 | - return pids; | ||
1216 | - }, | ||
1217 | - | ||
1218 | - /** 判断pId是否相等 */ | ||
1219 | - pidEquals: function (pId, pIds) { | ||
1220 | - if (obj.isClass(pIds) == 'Array') { | ||
1221 | - for (var i = 0; i < pIds.length; i++) { | ||
1222 | - if (pId == pIds[i]) { | ||
1223 | - return true; | ||
1224 | - } | ||
1225 | - } | ||
1226 | - } else { | ||
1227 | - return pId == pIds; | ||
1228 | - } | ||
1229 | - return false; | ||
1230 | - }, | ||
1231 | - /** 获取变量类型 */ | ||
1232 | - isClass: function (o) { | ||
1233 | - if (o === null) | ||
1234 | - return 'Null'; | ||
1235 | - if (o === undefined) | ||
1236 | - return 'Undefined'; | ||
1237 | - return Object.prototype.toString.call(o).slice(8, -1); | ||
1238 | - }, | ||
1239 | - copyText: function (text, formId) { | ||
1240 | - var textarea = document.createElement("textarea"); //创建input对象 | ||
1241 | - var currentFocus = document.activeElement; //当前获得焦点的元素 | ||
1242 | - var toolBoxwrap = document.getElementById(formId); //将文本框插入到NewsToolBox这个之后 | ||
1243 | - toolBoxwrap.appendChild(textarea); //添加元素 | ||
1244 | - textarea.value = text; | ||
1245 | - textarea.focus(); | ||
1246 | - if (textarea.setSelectionRange) { | ||
1247 | - textarea.setSelectionRange(0, textarea.value.length); //获取光标起始位置到结束位置 | ||
1248 | - } else { | ||
1249 | - textarea.select(); | ||
1250 | - } | ||
1251 | - try { | ||
1252 | - var flag = document.execCommand("copy"); //执行复制 | ||
1253 | - } catch (e) { | ||
1254 | - var flag = false; | ||
1255 | - } | ||
1256 | - toolBoxwrap.removeChild(textarea); //删除元素 | ||
1257 | - currentFocus.focus(); | ||
1258 | - return flag; | ||
1259 | - }, | ||
1260 | - layJump: function (layHref) { | ||
1261 | - var alink = document.createElement('a'); | ||
1262 | - var param = ''; | ||
1263 | - if (layHref.indexOf('=') !== -1) { | ||
1264 | - param = "=" + encodeURIComponent(layHref.split('=')[1]); | ||
1265 | - } | ||
1266 | - alink.setAttribute("lay-href", layHref.split('=')[0] + param); | ||
1267 | - admin.req({ | ||
1268 | - url: obj.domainName + '/api-web/mxgraph/getJtopoInfoById/' + layHref.split('=')[2], | ||
1269 | - success(response) { | ||
1270 | - //LH 修改 弹框展示子拓扑 | ||
1271 | - layer.open({ | ||
1272 | - title: response.object.topoName, | ||
1273 | - type: 2, | ||
1274 | - area: ['90%', '90%'], | ||
1275 | - content: obj.graphEditorOrigin + "/jgraph/grapheditor/viewer.html?access_token=" + localStorage.getItem('access_token') + '&id=' + layHref.split('=')[2],//+ "&layout=organic", | ||
1276 | - }) | ||
1277 | - }, | ||
1278 | - error() { | ||
1279 | - layer.closeAll('loading'); | ||
1280 | - layer.msg('生成资源拓扑失败...', {icon: 2}); | ||
1281 | - } | ||
1282 | - }); | ||
1283 | - | ||
1284 | - // document.body.appendChild(alink); | ||
1285 | - // alink.click(); | ||
1286 | - // document.body.removeChild(alink); | ||
1287 | - }, | ||
1288 | - | ||
1289 | - /** | ||
1290 | - * @desc 查看资源详细 | ||
1291 | - * @author wangfeng | ||
1292 | - * @date 2020/9/1 15:42 | ||
1293 | - **/ | ||
1294 | - viewMxGraphNodeResInfo: function (resId) { | ||
1295 | - admin.req({ | ||
1296 | - url: obj.domainName + "/api-web/home/resource/findById?resId=" + resId | ||
1297 | - , type: "get" | ||
1298 | - , done: function (res) { | ||
1299 | - if (res.str === 'false') { | ||
1300 | - layer.msg('暂无该资源权限!', {icon: 0}); | ||
1301 | - return; | ||
1302 | - } | ||
1303 | - var data = res.object; | ||
1304 | - if (data) { | ||
1305 | - // var resTypeName = data.resTypeName ? data.resTypeName + " | " : ""; | ||
1306 | - // var resName = data.resName ? data.resName + " | " : ""; | ||
1307 | - // var resIp = data.ip ? data.ip + " | " : ""; | ||
1308 | - // var resPositon = data.resPositon ? data.resPositon + " | " : ""; | ||
1309 | - // var resLabel = data.resLabel ? data.resLabel + " | " : ""; | ||
1310 | - // var admin = data.admin ? data.admin : ""; | ||
1311 | - // var title = resTypeName + resName + resIp + resPositon + resLabel + admin; | ||
1312 | - var resId = data.resId; | ||
1313 | - var resType = data.resType; | ||
1314 | - var resName = data.resName; | ||
1315 | - var ip = data.ip; | ||
1316 | - var resTypeName = data.resTypeName; | ||
1317 | - var adminName = data.adminName; | ||
1318 | - var manageIp = data.manageIp; | ||
1319 | - var collProtocol = data.collProtocol; | ||
1320 | - var title = resName; | ||
1321 | - if (title && title != '') { | ||
1322 | - title += '|'; | ||
1323 | - } | ||
1324 | - if (resTypeName && resType !== 'HOST_X86SERVER') { | ||
1325 | - title += resTypeName + '|'; | ||
1326 | - } | ||
1327 | - if (ip) { | ||
1328 | - if (resType === 'HOST_X86SERVER') { | ||
1329 | - if (collProtocol && (collProtocol.split(",").length > 1 || collProtocol === 'SSH')) { | ||
1330 | - title += '应用IP-' + ip + '|'; | ||
1331 | - } | ||
1332 | - } else { | ||
1333 | - title += ip + '|'; | ||
1334 | - } | ||
1335 | - } | ||
1336 | - if (resType === 'HOST_X86SERVER' && collProtocol && collProtocol.indexOf('SNMP') !== -1) { | ||
1337 | - if (manageIp) { | ||
1338 | - title += '管理IP-' + manageIp + '|'; | ||
1339 | - } | ||
1340 | - } | ||
1341 | - if (adminName) { | ||
1342 | - title += adminName + '|'; | ||
1343 | - } | ||
1344 | - if (title.length > 0) { | ||
1345 | - title = title.substr(0, title.length - 1); | ||
1346 | - } | ||
1347 | - if (!commonDetail) { | ||
1348 | - commonDetail = layui.commonDetail; | ||
1349 | - } | ||
1350 | - if (data.pingEnable == '2') { //如果pingEnable为2,则进入ping状态详情页面 | ||
1351 | - commonDetail.openNewWin('template/detail/pingIndex', title, {'resId': data.resId}, false); | ||
1352 | - } else { //否则进入监控详情页面 | ||
1353 | - commonDetail.openDetail(data.resId, data.resType, title); | ||
1354 | - } | ||
1355 | - } else { | ||
1356 | - layer.msg("获取资源详细信息失败,请稍后再试!", {offset: '15px', icon: 7, time: 2000}); | ||
1357 | - } | ||
1358 | - } | ||
1359 | - }); | ||
1360 | - }, | ||
1361 | - viewResTopo: function (resId) { | ||
1362 | - layer.load(2); | ||
1363 | - admin.req({ | ||
1364 | - url: obj.domainName + '/api-web/mxgraph/generateByResId', | ||
1365 | - data: {resId}, | ||
1366 | - success(response) { | ||
1367 | - layer.closeAll('loading'); | ||
1368 | - if (response && response.success) { | ||
1369 | - layer.open({ | ||
1370 | - type: 2, | ||
1371 | - content: obj.graphEditorOrigin + "/jgraph/grapheditor/viewer.html?access_token=" + localStorage.getItem('access_token') + '&id=' + response.str + "&layout=organic", | ||
1372 | - area: ['98%', '98%'], | ||
1373 | - title: '' | ||
1374 | - }); | ||
1375 | - } else { | ||
1376 | - layer.msg('生成资源拓扑失败!', {icon: 2}); | ||
1377 | - } | ||
1378 | - }, | ||
1379 | - error() { | ||
1380 | - layer.closeAll('loading'); | ||
1381 | - layer.msg('生成资源拓扑失败...', {icon: 2}); | ||
1382 | - } | ||
1383 | - }); | ||
1384 | - }, | ||
1385 | - viewAjView: function (reportCode, height, width) { | ||
1386 | - layer.load(2); | ||
1387 | - admin.req({ | ||
1388 | - url: obj.domainName + '/api-web/ajConfig/findOneById', | ||
1389 | - data: {id: reportCode}, | ||
1390 | - success(response) { | ||
1391 | - layer.closeAll('loading'); | ||
1392 | - if (response && response.success) { | ||
1393 | - layer.open({ | ||
1394 | - type: 2, | ||
1395 | - content: obj.ajScreenStatement + "/#/bigscreen/viewer?reportCode=" + response.object.designPage + response.object.param + "&access_token=" + localStorage.getItem('access_token'), | ||
1396 | - area: [height, width], | ||
1397 | - title: response.object.title | ||
1398 | - }); | ||
1399 | - } else { | ||
1400 | - layer.open({ | ||
1401 | - type: 2, | ||
1402 | - content: obj.ajScreenStatement + "/#/bigscreen/viewer?reportCode=" + reportCode + "&access_token=" + localStorage.getItem('access_token'), | ||
1403 | - area: [height, width], | ||
1404 | - title: '' | ||
1405 | - }); | ||
1406 | - layer.closeAll('loading'); | ||
1407 | - } | ||
1408 | - } | ||
1409 | - }); | ||
1410 | - }, | ||
1411 | - viewBizTopo: function (busId) { | ||
1412 | - layer.load(2); | ||
1413 | - admin.req({ | ||
1414 | - url: obj.domainName + '/api-web/mxgraph/generateByBusId', | ||
1415 | - data: {busId}, | ||
1416 | - success(response) { | ||
1417 | - layer.closeAll('loading'); | ||
1418 | - if (response && response.success) { | ||
1419 | - layer.open({ | ||
1420 | - type: 2, | ||
1421 | - content: obj.graphEditorOrigin + "/jgraph/grapheditor/viewer.html?access_token=" + localStorage.getItem('access_token') + '&id=' + response.str + "&layout=organic", | ||
1422 | - area: ['98%', '98%'], | ||
1423 | - title: '' | ||
1424 | - }); | ||
1425 | - } else { | ||
1426 | - layer.msg('生成业务拓扑失败!', {icon: 2}); | ||
1427 | - } | ||
1428 | - }, | ||
1429 | - error() { | ||
1430 | - layer.closeAll('loading'); | ||
1431 | - layer.msg('生成业务拓扑失败...', {icon: 2}); | ||
1432 | - } | ||
1433 | - }); | ||
1434 | - }, | ||
1435 | - | ||
1436 | - /** | ||
1437 | - * @description 采集器选择一级是所属域,第二级别是域下采集器 | ||
1438 | - * @author XuHaoJie | ||
1439 | - * @date 2021/6/9 15:43 | ||
1440 | - */ | ||
1441 | - collectorTree: function (data, parentId, parentName, childName, childId) { | ||
1442 | - var dataList = []; | ||
1443 | - $.each(data, function (i, v) { | ||
1444 | - var child = []; | ||
1445 | - $.each(v.children, function (x, y) { | ||
1446 | - child.push({name: y[childName] + ' | ' + y.deployIp, value: y[childId]}) | ||
1447 | - }) | ||
1448 | - var val = { | ||
1449 | - name: v[parentName], | ||
1450 | - value: i == 0 ? parentId : -(i + 1), | ||
1451 | - children: child, | ||
1452 | - } | ||
1453 | - dataList.push(val); | ||
1454 | - }) | ||
1455 | - return dataList; | ||
1456 | - }, | ||
1457 | - | ||
1458 | - /** 业务下拉选择(tree) | ||
1459 | - *radio传入则为单选,不传或传入false为多选 joke add | ||
1460 | - *strict传入false为非严格父子关系,不传或传入非false为严格父子关系 joke add | ||
1461 | - * canNotCheckPranet传入true为不能选择,传入false为可以选择 | ||
1462 | - */ | ||
1463 | - busTreeSelect: function (xmSelectParams, canNotCheckPranet) { | ||
1464 | - //绑定业务下拉选择数据 | ||
1465 | - admin.req({ | ||
1466 | - url: this.domainName + '/api-web/home/business/findAllBusType', | ||
1467 | - async: false, | ||
1468 | - success: function (response) { | ||
1469 | - if (response && response.success) { | ||
1470 | - var bizList = response.data.map(item => { | ||
1471 | - return { | ||
1472 | - name: item.busTypeName, | ||
1473 | - value: item.busId, | ||
1474 | - parentId: item.parentId | ||
1475 | - } | ||
1476 | - }); | ||
1477 | - var bizTree = obj.pidToChildren(bizList, 'value', 'parentId', canNotCheckPranet); | ||
1478 | - // 影响业务下拉框 | ||
1479 | - xmSelect.render(Object.assign({ | ||
1480 | - el: '#', | ||
1481 | - name: '', | ||
1482 | - tips: '=所属业务=', | ||
1483 | - //默认开启多选、选完不关闭下拉 | ||
1484 | - radio: false, | ||
1485 | - clickClose: false, | ||
1486 | - //开启搜索 | ||
1487 | - filterable: true, | ||
1488 | - direction: 'down', | ||
1489 | - initValue: [], | ||
1490 | - toolbar: { | ||
1491 | - show: true, | ||
1492 | - list: ['ALL', 'REVERSE', 'CLEAR'] | ||
1493 | - }, | ||
1494 | - height: '400px', | ||
1495 | - tree: { | ||
1496 | - show: true, | ||
1497 | - showFolderIcon: true, | ||
1498 | - showLine: true, | ||
1499 | - strict: true, | ||
1500 | - //间距 | ||
1501 | - indent: 20, | ||
1502 | - }, | ||
1503 | - data: bizTree, | ||
1504 | - on: function (data) { | ||
1505 | - } | ||
1506 | - }, xmSelectParams)); | ||
1507 | - } else { | ||
1508 | - layer.msg('获取业务失败', {icon: 2}); | ||
1509 | - } | ||
1510 | - }, | ||
1511 | - error: function () { | ||
1512 | - layer.msg('获取业务失败', {icon: 2}); | ||
1513 | - } | ||
1514 | - },); | ||
1515 | - }, | ||
1516 | - getTingyunToken: function () { | ||
1517 | - var token = ''; | ||
1518 | - | ||
1519 | - var api_key = ''; | ||
1520 | - var secret_key = ''; | ||
1521 | - $.ajax({ | ||
1522 | - url: '/config/getConfig', | ||
1523 | - data: { | ||
1524 | - configName: 'config.tingyun' | ||
1525 | - }, | ||
1526 | - async: false, | ||
1527 | - success(response) { | ||
1528 | - api_key = response.api_key; | ||
1529 | - secret_key = response.secret_key; | ||
1530 | - } | ||
1531 | - }); | ||
1532 | - var timestamp = Date.now(); | ||
1533 | - var auth = md5(`api_key=${api_key}&secret_key=${secret_key}×tamp=${timestamp}`); | ||
1534 | - | ||
1535 | - var formData = new FormData(); | ||
1536 | - formData.append("api_key", api_key); | ||
1537 | - formData.append("auth", auth); | ||
1538 | - formData.append("timestamp", timestamp); | ||
1539 | - $.ajax({ | ||
1540 | - url: sessionStorage.getItem('tingyun') + '/auth-api/auth/token', | ||
1541 | - type: 'POST', | ||
1542 | - processData: false, | ||
1543 | - mimeType: "multipart/form-data", | ||
1544 | - contentType: false, | ||
1545 | - async: false, | ||
1546 | - data: formData, | ||
1547 | - success(response) { | ||
1548 | - response = JSON.parse(response) | ||
1549 | - if (response && response.code == '200') { | ||
1550 | - token = 'Bearer ' + response.access_token; | ||
1551 | - } | ||
1552 | - } | ||
1553 | - }); | ||
1554 | - sessionStorage.setItem("tingyun_token", token); | ||
1555 | - return token; | ||
1556 | - }, | ||
1557 | - tingyunReq: function (ajaxParams) { | ||
1558 | - var response = { | ||
1559 | - success: false, | ||
1560 | - msg: '', | ||
1561 | - data: [] | ||
1562 | - } | ||
1563 | - var token = sessionStorage.getItem("tingyun_token"); | ||
1564 | - if (!token) { | ||
1565 | - token = obj.getTingyunToken(); | ||
1566 | - } | ||
1567 | - if (!token) { | ||
1568 | - response.msg = '获取token失败!'; | ||
1569 | - ajaxParams.success(response); | ||
1570 | - return; | ||
1571 | - } | ||
1572 | - var successFun = ajaxParams.success; | ||
1573 | - var errorFun = ajaxParams.error; | ||
1574 | - delete ajaxParams.success; | ||
1575 | - delete ajaxParams.error; | ||
1576 | - var failCount = 2; | ||
1577 | - var res = null; | ||
1578 | - var err = null; | ||
1579 | - do { | ||
1580 | - try { | ||
1581 | - $.ajax(Object.assign({ | ||
1582 | - url: '', | ||
1583 | - headers: { | ||
1584 | - Authorization: token | ||
1585 | - }, | ||
1586 | - async: false, | ||
1587 | - success(response) { | ||
1588 | - res = response; | ||
1589 | - if (response && response.code.toString().startsWith('401')) { | ||
1590 | - throw new Error(); | ||
1591 | - } | ||
1592 | - }, | ||
1593 | - error(error) { | ||
1594 | - err = error; | ||
1595 | - throw new Error(); | ||
1596 | - } | ||
1597 | - }, ajaxParams)); | ||
1598 | - } catch (e) { | ||
1599 | - failCount--; | ||
1600 | - if (failCount) { | ||
1601 | - token = obj.getTingyunToken(); | ||
1602 | - } | ||
1603 | - continue; | ||
1604 | - } | ||
1605 | - failCount = 0; | ||
1606 | - } while (failCount) | ||
1607 | - if (res) { | ||
1608 | - successFun(res); | ||
1609 | - } else { | ||
1610 | - errorFun(); | ||
1611 | - } | ||
1612 | - }, | ||
1613 | - //音频播放 | ||
1614 | - audioPlayer: function (url) { | ||
1615 | - var audio = document.createElement('audio') | ||
1616 | - if (audio.canPlayType) { | ||
1617 | - var element = document.createElement('source') | ||
1618 | - element.setAttribute('src', url) | ||
1619 | - element.setAttribute('type', 'audio/mpeg') | ||
1620 | - audio.appendChild(element) | ||
1621 | - audio.load() | ||
1622 | - audio.muted = true; | ||
1623 | - audio.playclip = function () { | ||
1624 | - audio.pause(); | ||
1625 | - audio.currentTime = 0; | ||
1626 | - audio.play(); | ||
1627 | - } | ||
1628 | - return audio | ||
1629 | - } | ||
1630 | - }, | ||
1631 | - | ||
1632 | - /** | ||
1633 | - * 导出数据至excel 可以修改sheet | ||
1634 | - * | ||
1635 | - * @return null | ||
1636 | - * @author 徐毫杰 | ||
1637 | - * @date 2021/08/01 | ||
1638 | - * @param title 导出excel文件名 | ||
1639 | - * @param headList 导出excel列头 | ||
1640 | - * @param rowList 导出excel数据 | ||
1641 | - * @param sheet 导出excel sheet页 | ||
1642 | - */ | ||
1643 | - exportDataExcel: function (title, headList, rowList, sheetName) { | ||
1644 | - rowList.unshift(headList); | ||
1645 | - var sheet = XLSX.utils.aoa_to_sheet(rowList); | ||
1646 | - openDownloadDialog(sheet2blob(sheet, sheetName), title + '.xlsx'); | ||
1647 | - }, | ||
1648 | - | ||
1649 | - /** | ||
1650 | - * @description 根据用户资源权限或、业务权限、资源类型权限获取详情页展示页签(优先度由高到低) | ||
1651 | - * @author XuHaoJie | ||
1652 | - * @date 2021/9/23 11:41 | ||
1653 | - */ | ||
1654 | - getShowType: function (resId, username) { | ||
1655 | - //默认查出全部 | ||
1656 | - var value = 'all'; | ||
1657 | - //查找用户资源权限 | ||
1658 | - admin.req({ | ||
1659 | - url: this.domainName + '/api-web/manage/resource/getShowType?resId=' + resId + '&username=' + username, | ||
1660 | - async: false, | ||
1661 | - success: function (response) { | ||
1662 | - if (response && response.success) { | ||
1663 | - value = response.str; | ||
1664 | - } | ||
1665 | - }, | ||
1666 | - error: function () { | ||
1667 | - layer.msg('获取用户权限失败', {icon: 2}); | ||
1668 | - } | ||
1669 | - }); | ||
1670 | - return value; | ||
1671 | - }, | ||
1672 | - | ||
1673 | - }; | ||
1674 | - | ||
1675 | - //通用的打开下载对话框方法,没有测试过具体兼容性 | ||
1676 | - //url 下载地址,也可以是一个blob对象,必选 | ||
1677 | - //saveName 保存文件名,可选 | ||
1678 | - function openDownloadDialog(url, saveName) { | ||
1679 | - if (typeof url == 'object' && url instanceof Blob) { | ||
1680 | - url = URL.createObjectURL(url); // 创建blob地址 | ||
1681 | - } | ||
1682 | - var aLink = document.createElement('a'); | ||
1683 | - aLink.href = url; | ||
1684 | - aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效 | ||
1685 | - var event; | ||
1686 | - if (window.MouseEvent) event = new MouseEvent('click'); | ||
1687 | - else { | ||
1688 | - event = document.createEvent('MouseEvents'); | ||
1689 | - event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); | ||
1690 | - } | ||
1691 | - aLink.dispatchEvent(event); | ||
1692 | - } | ||
1693 | - | ||
1694 | - // 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载 | ||
1695 | - function sheet2blob(sheet, sheetName) { | ||
1696 | - sheetName = sheetName || 'sheet1'; | ||
1697 | - var workbook = { | ||
1698 | - SheetNames: [sheetName], | ||
1699 | - Sheets: {} | ||
1700 | - }; | ||
1701 | - workbook.Sheets[sheetName] = sheet; | ||
1702 | - // 生成excel的配置项 | ||
1703 | - var wopts = { | ||
1704 | - bookType: 'xlsx', // 要生成的文件类型 | ||
1705 | - bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性 | ||
1706 | - type: 'binary' | ||
1707 | - }; | ||
1708 | - var wbout = XLSX.write(workbook, wopts); | ||
1709 | - var blob = new Blob([s2ab(wbout)], {type: "application/octet-stream"}); | ||
1710 | - | ||
1711 | - // 字符串转ArrayBuffer | ||
1712 | - function s2ab(s) { | ||
1713 | - var buf = new ArrayBuffer(s.length); | ||
1714 | - var view = new Uint8Array(buf); | ||
1715 | - for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; | ||
1716 | - return buf; | ||
1717 | - } | ||
1718 | - | ||
1719 | - return blob; | ||
1720 | - } | ||
1721 | - | ||
1722 | - //退出 | ||
1723 | - admin.events.logout = function () { | ||
1724 | - var logoutIdx = layer.confirm('确定退出登录?', function () { | ||
1725 | - admin.exit(); | ||
1726 | - layer.close(logoutIdx); | ||
1727 | - }); | ||
1728 | - }; | ||
1729 | - //菜单折叠事件 | ||
1730 | - admin.events.closeMenu = function () { | ||
1731 | - admin.sideFlexible(); | ||
1732 | - }; | ||
1733 | - | ||
1734 | - //监听F5刷新 | ||
1735 | - $(document).keydown(function (e) { | ||
1736 | - e = e || window.event; | ||
1737 | - if ((e.ctrlKey && e.keyCode == 82) || //ctrl+R | ||
1738 | - e.keyCode == 116) {//F5刷新 | ||
1739 | - | ||
1740 | - //获取首页 | ||
1741 | - var firstTab = $('.layui-tab-title').children().first().attr('lay-id'); | ||
1742 | - | ||
1743 | - if (firstTab === '/index/' || firstTab === '/') { | ||
1744 | - | ||
1745 | - location.hash = "/"; | ||
1746 | - } else { | ||
1747 | - //刷新后跳转到首页(用户默认首页) | ||
1748 | - location.hash = firstTab; | ||
1749 | - } | ||
1750 | - | ||
1751 | - if ($.isFunction(admin.closeAllTabs)) { | ||
1752 | - admin.closeAllTabs(); | ||
1753 | - } | ||
1754 | - | ||
1755 | - return false; | ||
1756 | - } | ||
1757 | - }); | ||
1758 | - | ||
1759 | - //检索条件区域收缩事件 | ||
1760 | - $("a.search_expend_icon").on("click", function () { | ||
1761 | - if ($(this).hasClass("expend")) { | ||
1762 | - $(this).parent().css("height", "auto") | ||
1763 | - $(".layui-status .layui-form-item").slideDown(300, 'linear'); | ||
1764 | - } else { | ||
1765 | - $(".layui-status .layui-form-item").not(":eq(0)").slideUp(300, 'linear'); | ||
1766 | - } | ||
1767 | - $(this).toggleClass("expend"); | ||
1768 | - }); | ||
1769 | - | ||
1770 | - //解决layui-table-tips不能点击其他地方关闭问题 joke add 20200420 | ||
1771 | - document.onclick = function (event) { | ||
1772 | - //如果页面中有layui-table-tips样式,且点击其他的元素不是layui-table-tips或者点击元素的腹肌不是layui-table-tips(资源名称需要判定父级) | ||
1773 | - if ($('.layui-table-tips').length > 0 && event.target.className.indexOf('layui-table-tips') == -1 && event.target.parentNode.className.indexOf('layui-table-tips') == -1) { | ||
1774 | - $('.layui-table-tips-c').click(); | ||
1775 | - } | ||
1776 | - }; | ||
1777 | - | ||
1778 | - //自动化巡检系统 | ||
1779 | - admin.events.inspectionsys = function () { | ||
1780 | - var accessToken = ''; | ||
1781 | - layui.use(['sessions', 'common'], function () { | ||
1782 | - var sessions = layui.sessions; | ||
1783 | - accessToken = sessions.getToken()['access_token']; | ||
1784 | - }); | ||
1785 | - var url = obj.domainInspectionURI + "/start/index.html#/access_token=" + accessToken; | ||
1786 | - window.open(url); | ||
1787 | - } | ||
1788 | - // 资产管理系统 | ||
1789 | - admin.events.assetsmanage = function () { | ||
1790 | - var accessToken = ''; | ||
1791 | - layui.use(['sessions', 'common'], function () { | ||
1792 | - var sessions = layui.sessions; | ||
1793 | - accessToken = sessions.getToken()['access_token']; | ||
1794 | - }); | ||
1795 | - var url = obj.domainAssetsManage + "/ITAM/index.jsp?access_token=" + accessToken; | ||
1796 | - window.open(url); | ||
1797 | - }; | ||
1798 | - | ||
1799 | - // ip管理系统 | ||
1800 | - admin.events.ipmanage = function () { | ||
1801 | - var accessToken = ''; | ||
1802 | - layui.use(['sessions', 'common'], function () { | ||
1803 | - var sessions = layui.sessions; | ||
1804 | - accessToken = sessions.getToken()['access_token']; | ||
1805 | - }); | ||
1806 | - var url = obj.domainIpManage + "?access_token=" + accessToken; | ||
1807 | - window.open(url); | ||
1808 | - }; | ||
1809 | - | ||
1810 | - // 科来系统 | ||
1811 | - admin.events.kelai = function () { | ||
1812 | - var accessToken = ''; | ||
1813 | - layui.use(['sessions', 'common'], function () { | ||
1814 | - var sessions = layui.sessions; | ||
1815 | - accessToken = sessions.getToken()['access_token']; | ||
1816 | - }); | ||
1817 | - //查询科来系统账号及密码 | ||
1818 | - admin.req({ | ||
1819 | - url: obj.domainName + '/api-web/userRefSystem/getByUsernameAndSystem', | ||
1820 | - type: "GET", | ||
1821 | - dataType: "json", | ||
1822 | - data: { | ||
1823 | - username: localStorage.getItem("lgn"), | ||
1824 | - refSystem: 'kelai' | ||
1825 | - }, | ||
1826 | - success: function (res) { | ||
1827 | - if (res && res.success && res.object) { | ||
1828 | - var url = obj.kelaiTargetUrl; | ||
1829 | - url = url.replace('{USERNAME}', res.object.account).replace('{PASSWORD}', obj.Base64.decode(res.object.password)) | ||
1830 | - window.open(url); | ||
1831 | - } else { | ||
1832 | - layer.alert('请先绑定科来账号'); | ||
1833 | - } | ||
1834 | - } | ||
1835 | - }) | ||
1836 | - }; | ||
1837 | - | ||
1838 | - //第三方系统账号绑定 joke add 20210525 | ||
1839 | - admin.events.setAccount = function () { | ||
1840 | - view('data-setting-account').render('template/user/accountSet').then(function (res) { | ||
1841 | - layer.open({ | ||
1842 | - title: ['第三方账号绑定', 'font-size:18px;'], | ||
1843 | - type: 1, | ||
1844 | - area: ['450px', '300px'], | ||
1845 | - content: res.body | ||
1846 | - }); | ||
1847 | - }); | ||
1848 | - }; | ||
1849 | - | ||
1850 | - /** | ||
1851 | - * 打开第三方系统界面 | ||
1852 | - * <p> | ||
1853 | - * 作者: Wang | ||
1854 | - * 时间:2022/2/9 17:10 | ||
1855 | - */ | ||
1856 | - admin.events.openOtherSystem = function () { | ||
1857 | - let code = $(this).attr("data-code"); | ||
1858 | - if (code) { | ||
1859 | - var isHttp = function (str) { | ||
1860 | - var RegUrl = new RegExp(); | ||
1861 | - RegUrl.compile("^http|https+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$"); | ||
1862 | - if (!RegUrl.test(str)) { | ||
1863 | - return false; | ||
1864 | - } | ||
1865 | - return true; | ||
1866 | - } | ||
1867 | - | ||
1868 | - if (isHttp(code)) { | ||
1869 | - var accessToken = ''; | ||
1870 | - layui.use(['sessions', 'common'], function () { | ||
1871 | - var sessions = layui.sessions; | ||
1872 | - accessToken = sessions.getToken()['access_token']; | ||
1873 | - }); | ||
1874 | - window.open(`${code}?access_token=${accessToken}`); | ||
1875 | - } | ||
1876 | - admin.events[code].call(); | ||
1877 | - } | ||
1878 | - } | ||
1879 | - | ||
1880 | - //监听浏览器窗口变化 | ||
1881 | - $(window).resize(function () { //当浏览器大小变化时 | ||
1882 | - resizePageWidth(); | ||
1883 | - }); | ||
1884 | - | ||
1885 | - function resizePageWidth() { | ||
1886 | - var pagewidth = $('.layui-body').width() - 40; | ||
1887 | - $(".layui-table-page").css({width: pagewidth + "px"}); | ||
1888 | - }; | ||
1889 | - //修改密码 joke add 20210413 | ||
1890 | - admin.events.updtpswd = function () { | ||
1891 | - view('data-setting-pwd').render('template/user/password').then(function (res) { | ||
1892 | - layer.open({ | ||
1893 | - title: ['修改密码', 'font-size:18px;'], | ||
1894 | - type: 1, | ||
1895 | - area: ['450px', '300px'], | ||
1896 | - content: res.body | ||
1897 | - }); | ||
1898 | - }); | ||
1899 | - }; | ||
1900 | - //修改基本信息 joke add 20211206 | ||
1901 | - admin.events.changeInfo = function () { | ||
1902 | - obj.openWin('baseconfig/user/userChange', '个人信息修改', { | ||
1903 | - id: sessionStorage.getItem('user_id'), | ||
1904 | - type: 'userChange' | ||
1905 | - }, ['保存', '取消'], function f() { | ||
1906 | - $("#user_form_save_id").trigger("click"); | ||
1907 | - }, null, ['60%', '45%']); | ||
1908 | - }; | ||
1909 | - | ||
1910 | - // 监听拓扑iframe事件 | ||
1911 | - window.onmessage = function (messageEvent) { | ||
1912 | - if (messageEvent.data.type === 'function') { | ||
1913 | - // 如果是执行方法 | ||
1914 | - var result = eval(messageEvent.data.evalParam); | ||
1915 | - } | ||
1916 | - } | ||
1917 | - | ||
1918 | - //全局搜索框回车事件 | ||
1919 | - $('#allSearchKeywords').keydown(function (e) { | ||
1920 | - if (e.keyCode === 13) { | ||
1921 | - $('[layadmin-event="globalSearch"]').trigger("click"); | ||
1922 | - } | ||
1923 | - }) | ||
1924 | - // 日期个格式化 | ||
1925 | - Date.prototype.format = function (fmt, hoursTime) { | ||
1926 | - //12小时制和24小时制 | ||
1927 | - var hours = 12; | ||
1928 | - if (hoursTime == 24) { | ||
1929 | - hours = 24; | ||
1930 | - } | ||
1931 | - var o = { | ||
1932 | - "M+": this.getMonth() + 1, //月份 | ||
1933 | - "d+": this.getDate(), //日 | ||
1934 | - "h+": this.getHours() % hours == 0 ? hours : this.getHours() % hours, //小时 | ||
1935 | - "H+": this.getHours(), //小时 | ||
1936 | - "m+": this.getMinutes(), //分 | ||
1937 | - "s+": this.getSeconds(), //秒 | ||
1938 | - "q+": Math.floor((this.getMonth() + 3) / 3), //季度 | ||
1939 | - "S": this.getMilliseconds() //毫秒 | ||
1940 | - }; | ||
1941 | - if (/(y+)/.test(fmt)) | ||
1942 | - fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); | ||
1943 | - for (var k in o) | ||
1944 | - if (new RegExp("(" + k + ")").test(fmt)) | ||
1945 | - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); | ||
1946 | - return fmt; | ||
1947 | - } | ||
1948 | - | ||
1949 | - // 表单验证 | ||
1950 | - form.verify({ | ||
1951 | - json: function (d) { | ||
1952 | - try { | ||
1953 | - if (d) { | ||
1954 | - var obj = JSON.parse(d); | ||
1955 | - } | ||
1956 | - } catch (e) { | ||
1957 | - return "请输入格式正确的JSON" | ||
1958 | - } | ||
1959 | - } | ||
1960 | - }); | ||
1961 | - //对外暴露的接口 | ||
1962 | - exports('common', obj); | ||
1963 | -}); |

29.7 KB
1 | -<!--默认布局--> | ||
2 | -<div class="layui-layout layui-layout-admin"> | ||
3 | - <script> | ||
4 | - var show = location.search.substr(1).split("&")[0].split("=")[1]; | ||
5 | - if (show === '0') { | ||
6 | - document.querySelector("body").classList.add("layout-nav-hide"); | ||
7 | - } | ||
8 | - | ||
9 | - var editFlag = location.search.substr(1).split("&")[1]; | ||
10 | - if (editFlag) { | ||
11 | - var name = editFlag.split("=")[0]; | ||
12 | - var val = editFlag.split("=")[1] == "true" ? true : false; | ||
13 | - if (name === "editFlag") { | ||
14 | - localStorage.setItem("editFlag", val); | ||
15 | - } | ||
16 | - } | ||
17 | - var menuIsopen = 'false'; | ||
18 | - layui.use(['jquery'], function () { | ||
19 | - var $ = layui.jquery; | ||
20 | - // 读取配置文件 | ||
21 | - $.ajax({ | ||
22 | - url: sessionStorage.getItem('domainName') + '/api-web/sysConf/getByCode', | ||
23 | - async: false, | ||
24 | - data: { | ||
25 | - code: 'view_menu_isopen', | ||
26 | - access_token: localStorage.getItem('access_token') | ||
27 | - }, | ||
28 | - success(response) { | ||
29 | - if (response && response.success && response.object) { | ||
30 | - menuIsopen = response.object.value; | ||
31 | - } | ||
32 | - } | ||
33 | - }); | ||
34 | - }); | ||
35 | - | ||
36 | - | ||
37 | - </script> | ||
38 | - <div class="layui-header"> | ||
39 | - <!-- 头部区域 --> | ||
40 | - <ul class="layui-nav layui-layout-left"> | ||
41 | - <li class="layui-nav-item layadmin-flexible" lay-unselect> | ||
42 | - <a href="javascript:;" layadmin-event="flexible" title="侧边伸缩"> | ||
43 | - <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i> | ||
44 | - </a> | ||
45 | - </li> | ||
46 | - <!--判定是否有daping角色,如果有则显示该菜单 joke add 20211203--> | ||
47 | - <script lay-url="{{sessionStorage.getItem('domainName')}}/api-user/users/checkHasRole?roleCode=daping" | ||
48 | - template | ||
49 | - type="text/html"> | ||
50 | - {{# if(d.count > 0){ }} | ||
51 | - <li class="layui-nav-item" lay-tips="展示大屏"> | ||
52 | - <a href="javascript:;" layadmin-event="toBigScreen"><img src="/src/style/img/icon-daping.png" | ||
53 | - style="width: 16px;height: 16px"></a> | ||
54 | - </li> | ||
55 | - {{# } }} | ||
56 | - </script> | ||
57 | - | ||
58 | - <script lay-url="{{sessionStorage.getItem('domainName')}}/api-web/sxview/getbizListByUser?access_token={{localStorage.getItem('access_token')}}" | ||
59 | - template | ||
60 | - type="text/html"> | ||
61 | - | ||
62 | - {{# if(d.data.length>0){ }} | ||
63 | - <li class="layui-nav-item"> | ||
64 | - | ||
65 | - <div id="toYTHView_div"> | ||
66 | - <dd layadmin-event="toYTHViewScreen" title="一体化监控台"><a><img | ||
67 | - src="/src/style/img/icon-yitihuadaping.png" style="width: 16px;height: 16px"></a></dd> | ||
68 | - </div> | ||
69 | - </li> | ||
70 | - | ||
71 | - {{# } }} | ||
72 | - </script> | ||
73 | - | ||
74 | - | ||
75 | - <li class="layui-nav-item" lay-unselect> | ||
76 | - <a href="javascript:;" layadmin-event="refresh" title="刷新"> | ||
77 | - <i class="layui-icon layui-icon-refresh-3"></i> | ||
78 | - </a> | ||
79 | - </li> | ||
80 | - | ||
81 | - </ul> | ||
82 | - <img class="logo" src="/src/style/img/logo.png"> | ||
83 | - <ul class="layui-nav layui-layout-right" lay-filter="layadmin-layout-right"> | ||
84 | - <!--搜索框检索--> | ||
85 | - <!-- <li class="layui-nav-item layui-hide-xs">--> | ||
86 | - <!-- <input type="text" class="layui-input" id="allSearchKeywords" style="margin-top: 6px">--> | ||
87 | - <!-- </li>--> | ||
88 | - <li class="layui-nav-item layui-hide-xs" lay-tips="全局搜索"> | ||
89 | - <a href="javascript:;" layadmin-event="globalSearch"><i class="layui-icon layui-icon-search"></i></a> | ||
90 | - </li> | ||
91 | - <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-unselect> | ||
92 | - <a href="javascript:;" layadmin-event="more"><i class="layui-icon layui-icon-more-vertical"></i></a> | ||
93 | - </li> | ||
94 | - <!-- <li class="layui-nav-item layui-hide-xs" lay-unselect> | ||
95 | - <a href="javascript:;" layadmin-event="theme"> | ||
96 | - <i class="layui-icon layui-icon-theme"></i> | ||
97 | - </a> | ||
98 | - </li>--> | ||
99 | - <li class="layui-nav-item" id="systems-select" lay-unselect> | ||
100 | - <script lay-done="layui.element.render('nav', 'layadmin-systems');" | ||
101 | - lay-url="{{sessionStorage.getItem('domainName')}}/api-web/manage/ddic/list?ddicCategory=systems" | ||
102 | - template | ||
103 | - type="text/html"> | ||
104 | - <a href="javascript:;" title="第三方系统"> | ||
105 | - <span class="layui-icon layui-icon-slider"></span> | ||
106 | - </a> | ||
107 | - <dl class="layui-nav-child"> | ||
108 | - {{# if(d.data && d.data.length == 0){ }} | ||
109 | - {{# var sysObj = document.querySelector('#systems-select'); }} | ||
110 | - {{# sysObj != null ? sysObj.remove() :''; }} | ||
111 | - {{# } }} | ||
112 | - {{# layui.each(d.data, function(index, item){ }} | ||
113 | - <dd style="text-align: left;" lay-filter="layadmin-systems"> | ||
114 | - <a href="javascript:;" layadmin-event="openOtherSystem" data-code="{{item.ddicCode}}" | ||
115 | - title="{{item.ddicName}}"> | ||
116 | - <i class="iconfont icon-tree {{ item.ddicDesc }}"/> {{ item.ddicName }} | ||
117 | - </a> | ||
118 | - </dd> | ||
119 | - {{# }); }} | ||
120 | - | ||
121 | - </dl> | ||
122 | - </script> | ||
123 | - </li> | ||
124 | - <li class="layui-nav-item layui-hide-xs" lay-unselect> | ||
125 | - <a href="javascript:;" layadmin-event="fullscreen"> | ||
126 | - <i class="layui-icon layui-icon-screen-full"></i> | ||
127 | - </a> | ||
128 | - </li> | ||
129 | - <!-- 报表通知统计 --> | ||
130 | - <li class="layui-nav-item" lay-unselect> | ||
131 | - <script lay-url="{{sessionStorage.getItem('domainName')}}/api-web/home/messageRemind" template | ||
132 | - type="text/html"> | ||
133 | - <a href="javascript:;" class="notice_msg"> | ||
134 | - <i class="layui-icon layui-icon-notice"></i><span>{{d.map==null? 0 : d.map.totalCountByUser}}</span> | ||
135 | - </a> | ||
136 | - <dl class="layui-nav-child"> | ||
137 | - <dd><a href="javascript:;" lay-href="/alarm/activewarning">活动告警:{{d.map==null? 0 : | ||
138 | - d.map.totalCountByUser}}</a></dd> | ||
139 | - <!-- <hr>--> | ||
140 | - <!-- <dd><a href="javascript:;" lay-href="/iframe/insp/monitor/flag=0">未处理报表:{{d.map==null? 0 : d.map.statusCountByUser}}</a></dd>--> | ||
141 | - <!-- <hr>--> | ||
142 | - <!-- <dd><a href="javascript:;" lay-href="/iframe/insp/workview/read=0/type=1">工作汇报未读:{{d.map==null? 0 : d.map.notReadCountByUser}}</a></dd>--> | ||
143 | - <!-- <hr>--> | ||
144 | - <!-- <dd><a href="javascript:;" lay-href="/iframe/insp/notice/t=day">今日通知:{{d.map==null? 0 : d.map.countByUserAndToday}}</a></dd>--> | ||
145 | - </dl> | ||
146 | - </script> | ||
147 | - </li> | ||
148 | - | ||
149 | - <li class="layui-nav-item" lay-unselect> | ||
150 | - <script lay-done="layui.element.render('nav', 'layadmin-layout-right');" | ||
151 | - lay-url="{{sessionStorage.getItem('domainName')}}/api-user/users/getUserByToken" | ||
152 | - template | ||
153 | - type="text/html"> | ||
154 | - <a href="javascript:;"> | ||
155 | - 欢迎 <cite style="color: #1E9FFF" user-info>{{d.object.nickname}}</cite> | ||
156 | - </a> | ||
157 | - {{# | ||
158 | - var roles = ''; | ||
159 | - layui.each(d.object.sysRoles, function(idx, role){ | ||
160 | - roles += role.code+","; | ||
161 | - }); | ||
162 | - }} | ||
163 | - <li><input type="hidden" id="user_roles" value="{{roles}}"></li> | ||
164 | - <dl class="layui-nav-child"> | ||
165 | - <dd layadmin-event="updtpswd" style="text-align: center;"><a>修改密码</a></dd> | ||
166 | - <dd user-info layadmin-event="changeInfo" style="text-align: center;"><a>修改信息</a></dd> | ||
167 | - <dd layadmin-event="logout" style="text-align: center;"><a>退出</a></dd> | ||
168 | - </dl> | ||
169 | - </script> | ||
170 | - </li> | ||
171 | - | ||
172 | - <!-- <script type="text/html" template lay-url="{{sessionStorage.getItem('domainName')}}/api-user/users/getUserByToken"--> | ||
173 | - <!-- lay-done="layui.element.render('nav', 'layadmin-text-name');">--> | ||
174 | - <!-- <li class="layui-nav-item layui-hide-xs" lay-unselect lay-filter="layadmin-text-name">--> | ||
175 | - <!-- <a href="javascript:;" style="text-align: center;" >欢迎 <b id="user-name" lay-tips="点击退出" layadmin-event="logout" style="color: #3d9fe6">{{d.object.nickname }}</b></a>--> | ||
176 | - <!-- </li>--> | ||
177 | - <!-- </script>--> | ||
178 | - </ul> | ||
179 | - </div> | ||
180 | - | ||
181 | - <!-- 侧边菜单 --> | ||
182 | - <!-- 先获取默认菜单拼接 d.str 返回数据格式 modeleid#path--> | ||
183 | - <!-- 如果配置默认首页,则给默认首页,否则给工作台(moduleid为work,path为work/index)--> | ||
184 | - | ||
185 | - <div class="layui-side layui-side-menu"> | ||
186 | - <div class="layui-side-scroll"> | ||
187 | - <script id="TPL_layout" lay-done="layui.element.render('nav', 'layadmin-system-side-menu');" | ||
188 | - lay-url="{{sessionStorage.getItem('domainName')}}/api-user/menus/current?type=1" | ||
189 | - template type="text/html"> | ||
190 | - | ||
191 | - {{# | ||
192 | - var dataName = layui.setter.response.dataName; | ||
193 | - var fisthref = "/index"; | ||
194 | - var defaultMenu = d.str; | ||
195 | - var defaultModuleid = ''; | ||
196 | - var defaultPath = ''; | ||
197 | - if(defaultMenu && defaultMenu != ''){ | ||
198 | - defaultModuleid = d.str.split('#')[0]; | ||
199 | - defaultPath = d.str.split('#')[1]; | ||
200 | - fisthref = defaultPath; | ||
201 | - } | ||
202 | - }} | ||
203 | - | ||
204 | - <div class="layui-logo" lay-href="{{fisthref}}"> | ||
205 | - <span>{{ layui.setter.name || 'layuiAdmin' }}</span> | ||
206 | - </div> | ||
207 | - | ||
208 | - <ul class="layui-nav layui-nav-tree" lay-shrink="all" id="LAY-system-side-menu" | ||
209 | - lay-filter="layadmin-system-side-menu"> | ||
210 | - {{# | ||
211 | - var show = location.search.substr(1).split("&")[0].split("=")[1]; | ||
212 | - if(show == '1') window.history.pushState({} ,'' ,'#'); | ||
213 | - if(show != '0') location.hash = "/"; | ||
214 | - | ||
215 | - var path = layui.router().path | ||
216 | - ,pathURL = layui.admin.correctRouter(path.join('/')) | ||
217 | - ,dataName = layui.setter.response.dataName; | ||
218 | - var fistModuleid = ''; | ||
219 | - if(d && d[dataName].length>0){ | ||
220 | - fistModuleid = d[dataName][0].moduleid; | ||
221 | - } | ||
222 | - | ||
223 | - layui.each(d[dataName], function(index, item){ | ||
224 | - var isselectd = ''; | ||
225 | - var isSelectedModuleid = ''; | ||
226 | - if(defaultModuleid != '' || item.moduleid != ''){ | ||
227 | - if(item.moduleid == defaultModuleid){ | ||
228 | - isselectd = "layui-this"; | ||
229 | - }else{ | ||
230 | - isselectd = ""; | ||
231 | - } | ||
232 | - }else { | ||
233 | - if(!defaultModuleid || defaultModuleid == ''){ | ||
234 | - if(index = 0){ | ||
235 | - isselectd = "layui-this"; | ||
236 | - } | ||
237 | - }else{ | ||
238 | - isselectd = ""; | ||
239 | - } | ||
240 | - } | ||
241 | - var hasChildren = typeof item.subMenus === 'object' && item.subMenus && item.subMenus.length > 0 | ||
242 | - ,classSelected = function(){ | ||
243 | - var match = path[0] == item.moduleid || (index == 0 && !path[0]) || (item.path && pathURL == | ||
244 | - layui.admin.correctRouter(item.path)) || item.spread; | ||
245 | - if(match){ | ||
246 | - return hasChildren ? 'layui-nav-itemed' : 'layui-nav-itemed'; | ||
247 | - } | ||
248 | - return ''; | ||
249 | - } | ||
250 | - ,url = (item.path && typeof item.path === 'string') ? item.path : item.moduleid; | ||
251 | - var closeMenuEvent = ''; | ||
252 | - if(item.moduleid == 'biz' || item.moduleid == 'res'){ closeMenuEvent = 'closeMenu'} | ||
253 | - }} | ||
254 | - | ||
255 | - <li data-name="{{ item.moduleid || '' }}" data-jump="{{ item.path || '' }}" | ||
256 | - class="layui-nav-item {{ menuIsopen == 'true' ? 'layui-nav-itemed' : '' }} {{isselectd}}"> | ||
257 | - | ||
258 | - {{# if(item.moduleid == 'cmdbsys' || item.moduleid == 'sxview' || item.moduleid == 'dpsys'){ }} | ||
259 | - <a href="javascript:;" layadmin-event="{{item.moduleid}}" lay-tips="{{ item.name | ||
260 | - }}" lay-direction="2" lay-href-type="menu"> | ||
261 | - <i class="layui-icon {{ item.css }}"></i> | ||
262 | - <cite>{{ item.name }}</cite> | ||
263 | - </a> | ||
264 | - {{# } }} | ||
265 | - {{# if(item.moduleid != 'cmdbsys' && item.moduleid != 'sxview' && item.moduleid != 'dpsys'){ }} | ||
266 | - <a href="javascript:;" {{ hasChildren ? '' : 'lay-href="'+ url +'"' }} | ||
267 | - layadmin-event="{{closeMenuEvent}}" lay-tips="{{ item.name | ||
268 | - }}" lay-direction="2"> | ||
269 | - <i class="layui-icon {{ item.css }}"></i> | ||
270 | - <cite>{{ item.name }}</cite> | ||
271 | - </a> | ||
272 | - | ||
273 | - {{# } }} | ||
274 | - | ||
275 | - | ||
276 | - {{# if(hasChildren){ }} | ||
277 | - <dl class="layui-nav-child"> | ||
278 | - {{# layui.each(item.subMenus, function(index2, item2){ | ||
279 | - if(item2.moduleid && item2.moduleid == defaultModuleid){ | ||
280 | - isselectd = "layui-this"; | ||
281 | - }else{ | ||
282 | - isselectd = ""; | ||
283 | - } | ||
284 | - var hasChildren2 = typeof item2.subMenus == 'object' && item2.subMenus && | ||
285 | - item2.subMenus.length > 0 | ||
286 | - ,classSelected2 = function(){ | ||
287 | - var match = (path[0] == item.moduleid && path[1] == item2.moduleid) || (item2.path && | ||
288 | - pathURL == layui.admin.correctRouter(item2.path)) || item2.spread; | ||
289 | - return ''; | ||
290 | - } | ||
291 | - ,url2 = (item2.path && typeof item2.path === 'string') | ||
292 | - ? item2.path | ||
293 | - : [item.moduleid, item2.moduleid, ''].join('/'); | ||
294 | - }} | ||
295 | - <dd data-name="{{ item2.moduleid || '' }}" data-jump="{{ item2.path || '' }}" | ||
296 | - class="layui-nav-item {{ classSelected2() }} {{isselectd}}" | ||
297 | - > | ||
298 | - {{# if(item2.menuDesc.indexOf('第三方') == '-1') {}} | ||
299 | - <a href="javascript:;" {{ hasChildren2 ? '' : 'lay-href="'+ url2 +'"' }} | ||
300 | - lay-href-type="menu">{{ item2.name }}</a> | ||
301 | - {{# }else{ }} | ||
302 | - <a href="javascript:;" {{ hasChildren2 ? '' : 'data-url="'+ url2 +'" | ||
303 | - layadmin-event="IntegratedEntrance"' }} data-moduleid="{{item2.moduleid}}" | ||
304 | - lay-href-type="menu">{{ item2.name }}</a> | ||
305 | - {{# } }} | ||
306 | - {{# if(hasChildren2){ }} | ||
307 | - <dl class="layui-nav-child {{}}"> | ||
308 | - {{# layui.each(item2.subMenus, function(index3, item3){ | ||
309 | - var match = (path[0] == item.moduleid && path[1] == item2.moduleid && path[2] == | ||
310 | - item3.moduleid) | ||
311 | - || (item3.path && pathURL == layui.admin.correctRouter(item3.path)) | ||
312 | - ,url3 = (item3.path && typeof item3.path === 'string') | ||
313 | - ? item3.path | ||
314 | - : [item.moduleid, item2.moduleid, item3.moduleid].join('/') | ||
315 | - }} | ||
316 | - <dd data-name="{{ item3.moduleid || '' }}" data-jump="{{ item3.path || '' }}"> | ||
317 | - {{# if(item2.menuDesc.indexOf('第三方') == '-1') {}} | ||
318 | - <a href="javascript:;" lay-href="{{ url3 }}" {{ item3.iframe ? | ||
319 | - 'lay-iframe="true"' : ''}} lay-href-type="menu">{{ item3.name }}</a> | ||
320 | - {{# }else{ }} | ||
321 | - <a href="javascript:;" data-url="{{ url3 }}" layadmin-event="IntegratedEntrance" | ||
322 | - data-moduleid="{{item3.moduleid}}" lay-href-type="menu">{{ item3.name }}</a> | ||
323 | - {{# } }} | ||
324 | - </dd> | ||
325 | - {{# }); }} | ||
326 | - </dl> | ||
327 | - {{# } }} | ||
328 | - </dd> | ||
329 | - {{# }); }} | ||
330 | - </dl> | ||
331 | - {{# } }} | ||
332 | - </li> | ||
333 | - {{# }); }} | ||
334 | - </ul> | ||
335 | - </script> | ||
336 | - </div> | ||
337 | - <div class="right-bottom-tips"></div> | ||
338 | - </div> | ||
339 | - | ||
340 | - <!-- 页面标签 --> | ||
341 | - <script lay-done="layui.element.render('nav', 'layadmin-pagetabs-nav')" | ||
342 | - lay-url="{{sessionStorage.getItem('domainName')}}/api-user/menus/findSettingDefaultMenus" | ||
343 | - template | ||
344 | - type="text/html"> | ||
345 | - <div class="layadmin-pagetabs" id="LAY_app_tabs"> | ||
346 | - <div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div> | ||
347 | - <div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div> | ||
348 | - <div class="layui-icon layadmin-tabs-control layui-icon-down"> | ||
349 | - | ||
350 | - <ul class="layui-nav layadmin-tabs-select" lay-filter="layadmin-pagetabs-nav"> | ||
351 | - <li class="layui-nav-item" lay-unselect> | ||
352 | - <a href="javascript:;"></a> | ||
353 | - <dl class="layui-nav-child layui-anim-fadein"> | ||
354 | - <dd layadmin-event="closeThisTabs"><a href="javascript:;">关闭当前标签页</a></dd> | ||
355 | - <dd layadmin-event="closeOtherTabs"><a href="javascript:;">关闭其它标签页</a></dd> | ||
356 | - <dd layadmin-event="closeAllTabs"><a href="javascript:;">关闭全部标签页</a></dd> | ||
357 | - </dl> | ||
358 | - </li> | ||
359 | - </ul> | ||
360 | - </div> | ||
361 | - <!-- <script type="text/html" template lay-url="{{sessionStorage.getItem('domainName')}}/api-user/users/getUserByToken">--> | ||
362 | - | ||
363 | - <!-- <div id="toYTHView_div" style="padding:0 10px;float: left;">--> | ||
364 | - <!-- <dd layadmin-event="toYTHViewScreen" title="一体化控制台"><a><img src="/src/style/img/icon-yitihuadaping.png" style="width: 16px;height: 16px"></a></dd>--> | ||
365 | - <!-- </div>--> | ||
366 | - | ||
367 | - <div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs"> | ||
368 | - | ||
369 | - <ul class="layui-tab-title" id="LAY_app_tabsheader"> | ||
370 | - | ||
371 | - {{# if(d.data.length >= 1 ){ }} | ||
372 | - {{# if(d.data[0].moduleid == 'index'){ }} | ||
373 | - <li lay-id="/"><i class="layui-icon layui-icon-home"></i></li> | ||
374 | - {{# } }} | ||
375 | - {{# if(d.data[0].moduleid != 'index'){ }} | ||
376 | - <li lay-id="/{{d.data[0].moduleid}}/" lay-attr="/{{d.data[0].moduleid}}/"><i | ||
377 | - class="layui-icon layui-icon-home"></i></li> | ||
378 | - {{# } }} | ||
379 | - {{# } }} | ||
380 | - {{# if(d.data.length == 0){ }} | ||
381 | - <li lay-id="/"><i class="layui-icon layui-icon-home"></i></li> | ||
382 | - {{# } }} | ||
383 | - </ul> | ||
384 | - | ||
385 | - | ||
386 | - </div> | ||
387 | - </div> | ||
388 | - </script> | ||
389 | - | ||
390 | - | ||
391 | - <!-- 主体内容 --> | ||
392 | - <div class="layui-body" id="LAY_app_body"> | ||
393 | - <!-- 单页模式接入--> | ||
394 | - <div class="layadmin-tabsbody-item layui-show"></div> | ||
395 | - </div> | ||
396 | - | ||
397 | - <!-- 辅助元素,一般用于移动设备下遮罩 --> | ||
398 | - <div class="layadmin-body-shade" layadmin-event="shade"></div> | ||
399 | -</div> | ||
400 | - | ||
401 | -<!--告警操作记录--> | ||
402 | -<script id="warnViewWinTpl" type="text/html"> | ||
403 | - <div class="warn-win"> | ||
404 | - <div class="warn-win-item"> | ||
405 | - <h5>告警确认【{{d.confirm.length}}】</h5> | ||
406 | - {{# layui.each(d.confirm, function(index, item){ }} | ||
407 | - <div class="warn-win-item-con"> | ||
408 | - <span>{{layui.util.toDateString(item.confirmTime)}}</span> | ||
409 | - <ul> | ||
410 | - <li>备注:{{item.remark}}</li> | ||
411 | - <li>告警确认人:{{item.confirmUserId}}</li> | ||
412 | - <li>紧急程度:{{item.levelName}}</li> | ||
413 | - </ul> | ||
414 | - </div> | ||
415 | - {{# }); }} | ||
416 | - </div> | ||
417 | - <div class="warn-win-item"> | ||
418 | - <h5>告警关闭【{{d.close.length}}】</h5> | ||
419 | - {{# layui.each(d.close, function(index, item){ }} | ||
420 | - {{# var closeTypeStr = '告警'}} | ||
421 | - {{# if(item.closeType == 1){ closeTypeStr = '通知' } }} | ||
422 | - <div class="warn-win-item-con"> | ||
423 | - <span>备注:{{item.remark}}</span> | ||
424 | - <ul> | ||
425 | - <li>告警关闭时间:{{layui.util.toDateString(item.closeTime)}}</li> | ||
426 | - <li>告警关闭人:{{item.closeUserId}}</li> | ||
427 | - <li>关闭范围:{{closeTypeStr}}</li> | ||
428 | - <li>关闭时长:{{item.closeDuration}}小时</li> | ||
429 | - </ul> | ||
430 | - </div> | ||
431 | - {{# }); }} | ||
432 | - </div> | ||
433 | - <div class="warn-win-item"> | ||
434 | - <h5>告警恢复【{{d.resume.length}}】</h5> | ||
435 | - {{# layui.each(d.resume, function(index, item){ }} | ||
436 | - {{# var resumeTypeStr = '恢复关闭的活动告警'}} | ||
437 | - {{# if(item.resumeType == 1){resumeTypeStr = '恢复历史告警' } }} | ||
438 | - <div class="warn-win-item-con"> | ||
439 | - <span>备注:{{item.remark}}</span> | ||
440 | - <ul> | ||
441 | - <li>告警恢复时间:{{layui.util.toDateString(item.resumeTime)}}</li> | ||
442 | - <li>告警恢复人:{{item.resumeUserId}}</li> | ||
443 | - <li>恢复类型:{{resumeTypeStr}}</li> | ||
444 | - </ul> | ||
445 | - </div> | ||
446 | - {{# }); }} | ||
447 | - </div> | ||
448 | - </div> | ||
449 | -</script> | ||
450 | - | ||
451 | -<!--详细页左侧面板--> | ||
452 | -<script id="detailPageLeftPanel" type="text/html"> | ||
453 | - <div class="detail-left-panel"> | ||
454 | - <a class="detail-left-panel-btn" href="javascript:void(0)"><i class="layui-icon layui-icon-next"></i></a> | ||
455 | - <div class="detail-left-panel-node" style="display: none"> | ||
456 | - {{# layui.each(d.map, function(k, v){ }} | ||
457 | - <div class="left-panel-restype"> | ||
458 | - <div class="layui-title">{{v[0].reTypeName}}</div> | ||
459 | - <div class=""> | ||
460 | - {{# layui.each(v, function(i, e){ }} | ||
461 | - <div class="info-box link" | ||
462 | - data-resid="{{e.targetId}}" | ||
463 | - data-restype="{{e.resType}}" | ||
464 | - data-restypename="{{e.resTypeName}}" | ||
465 | - data-ip="{{e.ip}}" | ||
466 | - data-admin="{{e.admin}}" | ||
467 | - > | ||
468 | - {{e.targetName}} | ||
469 | - </div> | ||
470 | - {{# }); }} | ||
471 | - </div> | ||
472 | - </div> | ||
473 | - {{# }); }} | ||
474 | - {{# if(!Object.keys(d.map).length) { }} | ||
475 | - <div class="left-panel-restype"> | ||
476 | - <div class="desc-box"> | ||
477 | - 暂无关联关系 | ||
478 | - </div> | ||
479 | - </div> | ||
480 | - {{# } }} | ||
481 | - </div> | ||
482 | - </div> | ||
483 | -</script> | ||
484 | - | ||
485 | -<!--下探top30表格展示内容--> | ||
486 | -<script id="detailKpiTableTpl" type="text/html"> | ||
487 | - <table class="layui-table" lay-even="" lay-skin="row"> | ||
488 | - <colgroup> | ||
489 | - <col width="100"> | ||
490 | - <col width="150"> | ||
491 | - <col width="180"> | ||
492 | - <col width="180"> | ||
493 | - </colgroup> | ||
494 | - <thead> | ||
495 | - <tr> | ||
496 | - <th>序号</th> | ||
497 | - <th>进程号</th> | ||
498 | - <th>所属用户</th> | ||
499 | - {{# if(d.kpi == 'KPI7054BC34'){ }} | ||
500 | - <th>使用率</th> | ||
501 | - {{# } }} | ||
502 | - {{# if(d.kpi != 'KPI7054BC34'){ }} | ||
503 | - <th>使用量</th> | ||
504 | - {{# } }} | ||
505 | - </tr> | ||
506 | - </thead> | ||
507 | - <tbody> | ||
508 | - {{# layui.each(d.data, function(index, item){ }} | ||
509 | - <tr> | ||
510 | - <td>{{index + 1}}</td> | ||
511 | - <td>{{item.pid}}</td> | ||
512 | - <td>{{item.username}}</td> | ||
513 | - <td>{{item.usedPercent}}</td> | ||
514 | - <!--<td>{{item.info}}</td>--> | ||
515 | - </tr> | ||
516 | - {{# }); }} | ||
517 | - </tbody> | ||
518 | - </table> | ||
519 | -</script> | ||
520 | - | ||
521 | -<!--corn表达式--> | ||
522 | -<script id="cronHtml" type="text/html"> | ||
523 | - <div id="cronContent" style="color:#000000"> | ||
524 | - <p style="margin: 10px auto; padding: 0px;"> | ||
525 | - <strong style="margin: 0px; padding: 0px;"><span | ||
526 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(255, 0, 0);">常用表达式例子</span></strong> | ||
527 | - </p> | ||
528 | - <p style="margin: 10px auto; padding: 0px;"> | ||
529 | - <span style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(255, 0, 0);"><span | ||
530 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);"><span | ||
531 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 0);">(1)</span></span><strong | ||
532 | - style="margin: 0px; padding: 0px;"><span | ||
533 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0/2 * * * * ?</span></strong> </span> 表示每2秒 | ||
534 | - 执行任务 | ||
535 | - </p> | ||
536 | - <p style="margin: 10px auto; padding: 0px;"> | ||
537 | - <span style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(255, 0, 0);"><span | ||
538 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);"><span | ||
539 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 0);">(1)</span></span><strong | ||
540 | - style="margin: 0px; padding: 0px;"><span | ||
541 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0/2 * * * ? </span></strong> </span> 表示每2分钟 | ||
542 | - 执行任务 | ||
543 | - </p> | ||
544 | - | ||
545 | - <p style="margin: 10px auto; padding: 0px;"> | ||
546 | - <span style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(255, 0, 0);"><span | ||
547 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);"><span | ||
548 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 0);">(1)</span></span><strong | ||
549 | - style="margin: 0px; padding: 0px;"><span | ||
550 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0 2 1 * ?</span></strong> </span> 表示在每月的1日的凌晨2点调整任务 | ||
551 | - </p> | ||
552 | - <p style="margin: 10px auto; padding: 0px;"> | ||
553 | - <span style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);"><span | ||
554 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 0);">(2)</span></span><strong | ||
555 | - style="margin: 0px; padding: 0px;"><span | ||
556 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 ? * MON-FRI</span> </strong> | ||
557 | - 表示周一到周五每天上午10:15执行作业 | ||
558 | - </p> | ||
559 | - <p style="margin: 10px auto; padding: 0px;"> | ||
560 | - (3)<strong style="margin: 0px; padding: 0px;"><span | ||
561 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 ? 6L 2002-2006</span></strong> | ||
562 | - 表示2002-2006年的每个月的最后一个星期五上午10:15执行作 | ||
563 | - </p> | ||
564 | - <p style="margin: 10px auto; padding: 0px;"> | ||
565 | - (4)<strong style="margin: 0px; padding: 0px;"><span | ||
566 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0 10,14,16 * * ?</span></strong> 每天上午10点,下午2点,4点 | ||
567 | - </p> | ||
568 | - <p style="margin: 10px auto; padding: 0px;"> | ||
569 | - (5)<strong style="margin: 0px; padding: 0px;"><span | ||
570 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0/30 9-17 * * ?</span></strong> | ||
571 | - 朝九晚五工作时间内每半小时 | ||
572 | - </p> | ||
573 | - <p style="margin: 10px auto; padding: 0px;"> | ||
574 | - (6)<strong style="margin: 0px; padding: 0px;"><span | ||
575 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0 12 ? * WED</span></strong> | ||
576 | - 表示每个星期三中午12点 | ||
577 | - </p> | ||
578 | - <p style="margin: 10px auto; padding: 0px;"> | ||
579 | - (7)<strong style="margin: 0px; padding: 0px;"><span | ||
580 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0 12 * * ?</span></strong> 每天中午12点触发 | ||
581 | - </p> | ||
582 | - <p style="margin: 10px auto; padding: 0px;"> | ||
583 | - (8)<strong style="margin: 0px; padding: 0px;"><span | ||
584 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 ? * * </span></strong> 每天上午10:15触发 | ||
585 | - </p> | ||
586 | - <p style="margin: 10px auto; padding: 0px;"> | ||
587 | - (9)<strong style="margin: 0px; padding: 0px;"><span | ||
588 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 * * ?</span></strong> | ||
589 | - 每天上午10:15触发 | ||
590 | - </p> | ||
591 | - <p style="margin: 10px auto; padding: 0px;"> | ||
592 | - (10)<strong style="margin: 0px; padding: 0px;"><span | ||
593 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 * * ?</span> </strong> | ||
594 | - 每天上午10:15触发 | ||
595 | - </p> | ||
596 | - <p style="margin: 10px auto; padding: 0px;"> | ||
597 | - (11)<strong style="margin: 0px; padding: 0px;"><span | ||
598 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 * * ? 2005</span></strong> | ||
599 | - 2005年的每天上午10:15触发 | ||
600 | - </p> | ||
601 | - <p style="margin: 10px auto; padding: 0px;"> | ||
602 | - (12)<strong style="margin: 0px; padding: 0px;"><span | ||
603 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 * 14 * * ?</span></strong> | ||
604 | - 在每天下午2点到下午2:59期间的每1分钟触发 | ||
605 | - </p> | ||
606 | - <p style="margin: 10px auto; padding: 0px;"> | ||
607 | - (13)<strong style="margin: 0px; padding: 0px;"><span | ||
608 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0/5 14 * * ?</span></strong> | ||
609 | - 在每天下午2点到下午2:55期间的每5分钟触发 | ||
610 | - </p> | ||
611 | - <p style="margin: 10px auto; padding: 0px;"> | ||
612 | - (14)<strong style="margin: 0px; padding: 0px;"><span | ||
613 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0/5 14,18 * * ?</span></strong> | ||
614 | - 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 | ||
615 | - </p> | ||
616 | - <p style="margin: 10px auto; padding: 0px;"> | ||
617 | - (15)<strong style="margin: 0px; padding: 0px;"><span | ||
618 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 0-5 14 * * ?</span> </strong> | ||
619 | - 在每天下午2点到下午2:05期间的每1分钟触发 | ||
620 | - </p> | ||
621 | - <p style="margin: 10px auto; padding: 0px;"> | ||
622 | - (16)<strong style="margin: 0px; padding: 0px;"><span | ||
623 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 10,44 14 ? 3 WED</span></strong> | ||
624 | - 每年三月的星期三的下午2:10和2:44触发 | ||
625 | - </p> | ||
626 | - <p style="margin: 10px auto; padding: 0px;"> | ||
627 | - (17)<strong style="margin: 0px; padding: 0px;"><span | ||
628 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 ? * MON-FRI</span> </strong> | ||
629 | - 周一至周五的上午10:15触发 | ||
630 | - </p> | ||
631 | - <p style="margin: 10px auto; padding: 0px;"> | ||
632 | - (18)<strong style="margin: 0px; padding: 0px;"><span | ||
633 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 15 * ?</span> </strong> | ||
634 | - 每月15日上午10:15触发 | ||
635 | - </p> | ||
636 | - <p style="margin: 10px auto; padding: 0px;"> | ||
637 | - (19)<strong style="margin: 0px; padding: 0px;"><span | ||
638 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 L * ?</span> </strong> | ||
639 | - 每月最后一日的上午10:15触发 | ||
640 | - </p> | ||
641 | - <p style="margin: 10px auto; padding: 0px;"> | ||
642 | - (20)<strong style="margin: 0px; padding: 0px;"><span | ||
643 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 ? * 6L</span> </strong> | ||
644 | - 每月的最后一个星期五上午10:15触发 | ||
645 | - </p> | ||
646 | - <p style="margin: 10px auto; padding: 0px;"> | ||
647 | - (21)<strong style="margin: 0px; padding: 0px;"><span | ||
648 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 ? * 6L 2002-2005</span></strong> | ||
649 | - 2002年至2005年的每月的最后一个星期五上午10:15触发 | ||
650 | - </p> | ||
651 | - <p style="margin: 10px auto; padding: 0px;"> | ||
652 | - (22)<strong style="margin: 0px; padding: 0px;"><span | ||
653 | - style="margin: 0px; padding: 0px; line-height: 18px; color: rgb(0, 0, 255);">0 15 10 ? * 6#3</span></strong> | ||
654 | - 每月的第三个星期五上午10:15触发 | ||
655 | - </p> | ||
656 | - <p style="margin: 10px auto; padding: 0px;"> | ||
657 | - | ||
658 | - </p> | ||
659 | - </div> | ||
660 | -</script> | ||
661 | - | ||
662 | -<!--资源名称--> | ||
663 | -<script id="resindex_resName" type="text/html"> | ||
664 | - <!-- 更改单元格溢出时的tip跑到左上角 LSQ 2022/1/6--> | ||
665 | - <div id="res-div"> | ||
666 | - {{# var urlLast=window.location.hash; | ||
667 | - var w=$(".layui-table thead th[data-field='resName']").data('minwidth'); | ||
668 | - if(urlLast=="#/res/index"){ | ||
669 | - w=$("[lay-id='resListTable'] table thead th[data-field='resName'").data('minwidth'); | ||
670 | - | ||
671 | - }else if(urlLast=="#/biz/index"){ | ||
672 | - w=$("[lay-id='bizListTable'] table thead th[data-field='resName'").data('minwidth'); | ||
673 | - } | ||
674 | - var maxW=(w-45)+'px'; | ||
675 | - var styleW="float: left;max-width: "+maxW+";overflow: hidden; text-overflow: ellipsis; white-space: | ||
676 | - nowrap;display: inline-block;"; | ||
677 | - }} | ||
678 | - <span lay-tips="{{ d.resName }}" style="{{styleW}}" data-zymc="{{ d.resId }}" data-restype="{{d.resType}}" | ||
679 | - data-name="{{d.resName}}" data-childrennum="{{d.childrenNum}}" data-ip="{{ d.ip }}" | ||
680 | - data-resTypeName="{{ d.resTypeName }}" data-admin="{{ d.admin }}" data-adminname="{{ d.adminName }}" | ||
681 | - data-pingenable="{{d.pingEnable}}" data-manageIp="{{d.manageIp}}" data-collProtocol="{{d.collProtocol}}" | ||
682 | - data-provider="{{d.provider}}" data-state="{{d.state}}" class="layui-table-link">{{ d.resName }}</span> | ||
683 | - {{# if (d.favId == null) { }} | ||
684 | - <a class="layui-icon layui-icon-rate hide" data-favid="{{d.favId}}" data-id="{{d.resId}}" lay-tips="加入收藏夹" | ||
685 | - style="font-size: 14px"></a> | ||
686 | - {{# } else { }} | ||
687 | - <a class="layui-icon layui-icon-rate-solid" data-favid="{{d.favId}}" | ||
688 | - style="color: #FEB61E; font-size: 14px; margin-left: 1px;" data-id="{{d.resId}}" lay-tips="移出收藏夹"></a> | ||
689 | - {{# } }} | ||
690 | - <a class="layui-icon reslist-view-topo hide" data-resid="{{d.resId}}" | ||
691 | - style="color: #FEB61E; font-size: 14px; margin-left: 1px;" lay-tips="查看资源拓扑"></a> | ||
692 | - <!--{{# if (d.resCategory == 'share' && d.hardwareFlag && d.hardwareFlag.endsWith("Y")) { }} | ||
693 | - <a class="layui-icon reslist-assets-details hide" data-resid="{{d.resId}}" data-restype="{{d.resType}}" data-name="{{d.resName}}" data-ip="{{ d.ip }}" style="color: #FEB61E; font-size: 14px; margin-left: 10px;" lay-tips="资产配置信息"><i class="iconfont"></i></a> | ||
694 | - {{# } }}--> | ||
695 | - </div> | ||
696 | -</script> | ||
697 | - | ||
698 | -<!--最大文件系统使用率--> | ||
699 | -<script id="fileUseRateTpl" type="text/html"> | ||
700 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI449F5365" data-flag="fs" | ||
701 | - data-name="{{d.os=='windows'?'磁盘使用情况':'文件系统使用情况'}}" data-showtype="bar" | ||
702 | - data-barkpiid="{{d.os=='windows'?'KPI29D42042,KPI1988842F':'KPIA91F44E7,KPI98306224'}}" | ||
703 | - data-barxaxis="{{d.os=='windows'?'KPI9D22EAB6':'KPI7AC1664E'}}" | ||
704 | - data-warning="0" data-ident="1" data-trend="0"> | ||
705 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
706 | - <div style="position:absolute; z-index:1;width: 100%" id="{{d.resId}}_bizfileName" | ||
707 | - lay-tips="{{d.fileSysUseName}}" | ||
708 | - data-id="{{d.resId}}_bizfileName" data-message="{{d.fileSysUseName}}"><span style="color: #000000;">{{d.fileSysUseName}}</span> | ||
709 | - </div> | ||
710 | - <div class="layui-progress-bar layui-bg-green {{ d.fileSysUseRate >= 98 ? 'layui-bg-red' : (d.fileSysUseRate >= 95 ? 'layui-bg-orange' : (d.fileSysUseRate >= 90 ? 'layui-bg-blue':'')) }}" | ||
711 | - lay-percent="{{ d.fileSysUseRate }}%" | ||
712 | - style="width: {{ d.fileSysUseRate }}%;"> | ||
713 | - </div> | ||
714 | - </div> | ||
715 | - <span class="layui-progress-text">{{ (d.fileSysUseRate == null || d.fileSysUseRate == '' || d.fileSysUseRate === '未知' || d.fileSysUseRate === '无' )? '0%' : d.fileSysUseRate +'%' }}</span> | ||
716 | - </div> | ||
717 | -</script> | ||
718 | -<!--CPU使用率--> | ||
719 | -<script id="cpuRateTpl" type="text/html"> | ||
720 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI7054BC34" data-flag="cpu" | ||
721 | - data-name="CPU使用率" | ||
722 | - data-warning="0" data-ident="1" data-trend="1"> | ||
723 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
724 | - <div class="layui-progress-bar layui-bg-green {{ d.cpuRate >= 95 ? 'layui-bg-red' : (d.cpuRate >= 90 ? 'layui-bg-orange' : (d.cpuRate >= 80 ? 'layui-bg-blue':''))}}" | ||
725 | - lay-percent="{{ d.cpuRate }}%" | ||
726 | - style="width: {{ d.cpuRate }}%;"> | ||
727 | - </div> | ||
728 | - </div> | ||
729 | - <span class="layui-progress-text">{{ (d.cpuRate == null || d.cpuRate == '' || d.cpuRate === '未知' || d.cpuRate === '无' )? '0%' : d.cpuRate +'%' }}</span> | ||
730 | - </div> | ||
731 | -</script> | ||
732 | -<!--内存使用率--> | ||
733 | -<script id="memoryRateTpl" type="text/html"> | ||
734 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI31CB8D97" data-flag="mem" | ||
735 | - data-name="内存使用率" | ||
736 | - data-warning="1" data-ident="1" data-trend="1"> | ||
737 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
738 | - <div class="layui-progress-bar layui-bg-green {{ d.memoryRate >= 95 ? 'layui-bg-red' : (d.memoryRate >= 90 ? 'layui-bg-orange' : (d.memoryRate >= 80 ? 'layui-bg-blue':''))}}" | ||
739 | - lay-percent="{{ d.memoryRate }}%" | ||
740 | - style="width: {{ d.memoryRate }}%;"> | ||
741 | - </div> | ||
742 | - </div> | ||
743 | - <span class="layui-progress-text">{{ (d.memoryRate == null || d.memoryRate == '' || d.memoryRate === '未知' || d.memoryRate === '无' )? '0%' : d.memoryRate +'%' }}</span> | ||
744 | - </div> | ||
745 | -</script> | ||
746 | -<!--虚拟内存使用率--> | ||
747 | -<script id="vmmemoryRateTpl" type="text/html"> | ||
748 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI20352505" data-flag="vmem" | ||
749 | - data-name="虚拟内存使用率" | ||
750 | - data-warning="1" data-ident="1" data-trend="1"> | ||
751 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
752 | - <div class="layui-progress-bar layui-bg-green {{ d.vmmemoryUseRate >= 95 ? 'layui-bg-red' : (d.vmmemoryUseRate >= 90 ? 'layui-bg-orange' : (d.vmmemoryUseRate >= 80 ? 'layui-bg-blue':''))}}" | ||
753 | - lay-percent="{{ d.vmmemoryUseRate }}%" | ||
754 | - style="width: {{ d.vmmemoryUseRate }}%;"> | ||
755 | - </div> | ||
756 | - </div> | ||
757 | - <span class="layui-progress-text">{{ (d.vmmemoryUseRate == null || d.vmmemoryUseRate == '' || d.vmmemoryUseRate === '未知' || d.vmmemoryUseRate === '无' )? '0%' : d.vmmemoryUseRate +'%' }}</span> | ||
758 | - </div> | ||
759 | -</script> | ||
760 | -<!--会话百分比--> | ||
761 | -<script id="sessionRateTpl" type="text/html"> | ||
762 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI18F18278" data-name="活动会话百分比" | ||
763 | - data-flag="session" | ||
764 | - data-warning="0" data-ident="1" data-trend="0"> | ||
765 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
766 | - <div class="layui-progress-bar layui-bg-green {{ d.sessionRate >= 80 ? 'layui-bg-red' : (d.sessionRate <= 50 ? '' : 'layui-bg-orange') }}" | ||
767 | - lay-percent="{{ d.sessionRate }}%" | ||
768 | - style="width: {{ d.sessionRate }}%;"> | ||
769 | - </div> | ||
770 | - </div> | ||
771 | - <span class="layui-progress-text">{{ (d.sessionRate == null || d.sessionRate == '' || d.sessionRate === '未知' || d.sessionRate === '无' )? '0%' : d.sessionRate +'%' }}</span> | ||
772 | - </div> | ||
773 | -</script> | ||
774 | -<!--CPU分配率--> | ||
775 | -<script id="cpuSetRateTpl" type="text/html"> | ||
776 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPIBFA3F5CD" data-name="CPU分配率" | ||
777 | - data-flag="cpu" | ||
778 | - data-warning="0" data-ident="1" data-trend="0"> | ||
779 | - {{# | ||
780 | - d.cpuSetRate = parseFloat(d.cpuSetRate).toFixed(2); | ||
781 | - }} | ||
782 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
783 | - <div class="layui-progress-bar layui-bg-green {{ d.cpuSetRate >= 80 ? 'layui-bg-red' : (d.cpuSetRate <= 50 ? '' : 'layui-bg-orange') }}" | ||
784 | - lay-percent="{{ d.cpuSetRate }}%" | ||
785 | - style="width: {{ d.cpuSetRate }}%;"> | ||
786 | - </div> | ||
787 | - </div> | ||
788 | - <span class="layui-progress-text">{{ (d.cpuSetRate == null || d.cpuSetRate == '' || d.cpuSetRate === '未知' || d.cpuSetRate === '无' )? '0%' : d.cpuSetRate +'%' }}</span> | ||
789 | - </div> | ||
790 | -</script> | ||
791 | -<!--内存分配率--> | ||
792 | -<script id="memorySetRateTpl" type="text/html"> | ||
793 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPIC40A80AC" data-name="内存分配率" | ||
794 | - data-flag="mem" | ||
795 | - data-warning="0" data-ident="1" data-trend="0"> | ||
796 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
797 | - <div class="layui-progress-bar layui-bg-green {{ d.memorySetRate >= 80 ? 'layui-bg-red' : (d.memorySetRate <= 50 ? '' : 'layui-bg-orange') }}" | ||
798 | - lay-percent="{{ d.memorySetRate }}%" | ||
799 | - style="width: {{ d.memorySetRate }}%;"> | ||
800 | - </div> | ||
801 | - </div> | ||
802 | - <span class="layui-progress-text">{{ (d.memorySetRate == null || d.memorySetRate == '' || d.memorySetRate === '未知' || d.memorySetRate === '无' )? '0%' : d.memorySetRate +'%' }}</span> | ||
803 | - </div> | ||
804 | -</script> | ||
805 | -<!--存储分配率--> | ||
806 | -<script id="storageSetRateTpl" type="text/html"> | ||
807 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI46BAA9BE" data-name="存储分配率" | ||
808 | - data-flag="storage" | ||
809 | - data-warning="0" data-ident="1" data-trend="0"> | ||
810 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
811 | - <div class="layui-progress-bar layui-bg-green {{ d.storageSetRate >= 80 ? 'layui-bg-red' : (d.storageSetRate <= 50 ? '' : 'layui-bg-orange') }}" | ||
812 | - lay-percent="{{ d.storageSetRate }}%" | ||
813 | - style="width: {{ d.storageSetRate }}%;"> | ||
814 | - </div> | ||
815 | - </div> | ||
816 | - <span class="layui-progress-text">{{ (d.storageSetRate == null || d.storageSetRate == '' || d.storageSetRate === '未知' || d.storageSetRate === '无' )? '0%' : d.storageSetRate +'%' }}</span> | ||
817 | - </div> | ||
818 | -</script> | ||
819 | -<!--连接状态--> | ||
820 | -<script id="linkStateTpl" type="text/html"> | ||
821 | - {{# | ||
822 | - var linkStateHtml = ''; | ||
823 | - var linkStateTips = '无连接信息'; | ||
824 | - if(d.linkStateList && d.linkStateList.length >=0 ) { | ||
825 | - linkStateTips = ''; | ||
826 | - if(d.linkStateList.length == 1) { | ||
827 | - var linkState = d.linkStateList[0]; | ||
828 | - linkStateTips = `${linkState.protocol}: ${linkState.state}`; | ||
829 | - if(linkState.state.indexOf('成功') !== -1) { | ||
830 | - linkStateHtml = ' | ||
831 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15 cant-click">成功</button>'; | ||
832 | - } else { | ||
833 | - linkStateHtml = ` | ||
834 | - <button type="button" | ||
835 | - id="${d.resId}_bizdanger" | ||
836 | - data-message="${d.message}" | ||
837 | - data-state="${d.state}" | ||
838 | - data-id="${d.resId}_bizdanger" | ||
839 | - class="layui-btn layui-btn-danger layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
840 | - 失败 | ||
841 | - </button>`; | ||
842 | - } | ||
843 | - } else { | ||
844 | - if(d.linkStateList.length == 0){ | ||
845 | - if(d.hostState == 'active' || d.hostState == 'connected' || d.hostState == '正常' ){ | ||
846 | - linkStateHtml = ' | ||
847 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15 cant-click">成功</button>'; | ||
848 | - linkStateTips += ` | ||
849 | - <li class='li-link-state-tips-red'>自动发现: 连接成功</li>`; | ||
850 | - }else{ | ||
851 | - linkStateHtml = ` | ||
852 | - <button type="button" | ||
853 | - id="${d.resId}_bizdanger" | ||
854 | - data-message="${d.message}" | ||
855 | - data-state="${d.state}" | ||
856 | - data-id="${d.resId}_bizdanger" | ||
857 | - class="layui-btn layui-btn-danger layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
858 | - 失败 | ||
859 | - </button>`; | ||
860 | - if(d.hostState!=''){ | ||
861 | - linkStateTips += ` | ||
862 | - <li class='li-link-state-tips-red'>自动发现: 连接失败</li>`; | ||
863 | - }else{ | ||
864 | - linkStateTips += ` | ||
865 | - <li class='li-link-state-tips-red'>ssh: 连接失败</li>`; | ||
866 | - } | ||
867 | - } | ||
868 | - }else{ | ||
869 | - linkStateTips += ` | ||
870 | - <ul class='ul-link-state-tips'>`; | ||
871 | - layui.each(d.linkStateList, function(index, value) { | ||
872 | - if(value.state.indexOf('成功') !== -1) { | ||
873 | - linkStateTips += ` | ||
874 | - <li class='li-link-state-tips-green'>${value.protocol}: ${value.state}</li> | ||
875 | - `; | ||
876 | - linkStateHtml += '<span class="layui-badge-dot layui-bg-green"></span>'; | ||
877 | - } else { | ||
878 | - linkStateTips += ` | ||
879 | - <li class='li-link-state-tips-red'>${value.protocol}: ${value.state}</li> | ||
880 | - `; | ||
881 | - linkStateHtml += '<span class="layui-badge-dot layui-bg-red"></span>'; | ||
882 | - } | ||
883 | - }); | ||
884 | - linkStateTips += ' | ||
885 | - </ul>'; | ||
886 | - } | ||
887 | - } | ||
888 | - } | ||
889 | - }} | ||
890 | - <div class="div-link-state-list" lay-tips="{{linkStateTips}}"> | ||
891 | - {{linkStateHtml}} | ||
892 | - </div> | ||
893 | -</script> | ||
894 | -<!--详情页面连接状态--> | ||
895 | -<script id="linkStateDetailTpl" type="text/html"> | ||
896 | - {{# | ||
897 | - var linkStateHtml = ''; | ||
898 | - var linkStateTips = '无连接信息'; | ||
899 | - if(d.linkStateList && d.linkStateList.length) { | ||
900 | - linkStateTips = ''; | ||
901 | - if(d.linkStateList.length == 1) { | ||
902 | - var linkState = d.linkStateList[0]; | ||
903 | - linkStateTips = `${linkState.protocol}: ${linkState.state}`; | ||
904 | - if(linkState.state.indexOf('成功') !== -1) { | ||
905 | - linkStateHtml = `<span class="span-green">${linkState.state}</span>`; | ||
906 | - } else { | ||
907 | - linkStateHtml = `<span class="span-red">${linkState.state}</span>`; | ||
908 | - } | ||
909 | - } else { | ||
910 | - linkStateTips += ` | ||
911 | - <ul class='ul-link-state-tips'>`; | ||
912 | - layui.each(d.linkStateList, function(index, value) { | ||
913 | - if(value.state.indexOf('成功') !== -1) { | ||
914 | - linkStateTips += ` | ||
915 | - <li class='li-link-state-tips-green'>${value.protocol}: ${value.state}</li> | ||
916 | - `; | ||
917 | - linkStateHtml += ' | ||
918 | - <div class="layui-badge-dot layui-bg-green"></div> | ||
919 | - '; | ||
920 | - } else { | ||
921 | - linkStateTips += ` | ||
922 | - <li class='li-link-state-tips-red'>${value.protocol}: ${value.state}</li> | ||
923 | - `; | ||
924 | - linkStateHtml += ' | ||
925 | - <div class="layui-badge-dot layui-bg-red"></div> | ||
926 | - '; | ||
927 | - } | ||
928 | - }); | ||
929 | - linkStateTips += ' | ||
930 | - </ul>'; | ||
931 | - } | ||
932 | - } | ||
933 | - }} | ||
934 | - <div class="div-link-state-list" lay-tips="{{linkStateTips}}"> | ||
935 | - {{linkStateHtml}} | ||
936 | - </div> | ||
937 | -</script> | ||
938 | -<!--电源状态--> | ||
939 | -<script id="powerStateTpl" type="text/html"> | ||
940 | - {{# if(d.powerState != null && d.powerState == 'poweredOn'){ }} | ||
941 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15 cant-click"> | ||
942 | - 开机 | ||
943 | - </button> | ||
944 | - {{# }else if(d.powerState != null && d.powerState == 'poweredOff'){ }} | ||
945 | - <button type="button" class="layui-btn layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
946 | - 关机 | ||
947 | - </button> | ||
948 | - {{# }else if(d.powerState != null && d.powerState == 'standBy'){ }} | ||
949 | - <button type="button" class="layui-btn layui-bg-orange layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
950 | - 待机 | ||
951 | - </button> | ||
952 | - {{# }else if(d.powerState != null && d.powerState == 'unknown'){ }} | ||
953 | - <button type="button" class="layui-btn layui-bg-gray layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
954 | - 未知 | ||
955 | - </button> | ||
956 | - {{# }else{ }} | ||
957 | - <button type="button" | ||
958 | - class="layui-btn layui-btn-radius layui-bg-gray layui-btn-xs p-0-15 cant-click">{{ | ||
959 | - '未监控'}} | ||
960 | - </button> | ||
961 | - {{# }}} | ||
962 | -</script> | ||
963 | -<!--健康状态--> | ||
964 | -<script id="healthTpl" type="text/html"> | ||
965 | - {{# if(d.state != 'new'){ }} | ||
966 | - {{# if(d.health === '1'){ }} | ||
967 | - <button type="button" | ||
968 | - class="layui-btn layui-btn-danger layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click">中 | ||
969 | - </button> | ||
970 | - {{# } }} | ||
971 | - {{# if(d.health === '2'){ }} | ||
972 | - <button type="button" | ||
973 | - class="layui-btn layui-btn-warm layui-bg-orange layui-btn-radius layui-btn-xs p-0-15 cant-click">良 | ||
974 | - </button> | ||
975 | - {{# } }} | ||
976 | - {{# if(d.health === '3'){ }} | ||
977 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15 cant-click">优</button> | ||
978 | - {{# } }} | ||
979 | - {{# } }} | ||
980 | -</script> | ||
981 | -<!--主机状态--> | ||
982 | -<script id="hostStateTpl" type="text/html"> | ||
983 | - {{# if(d.hostState != null && d.hostState == 'connected'){ }} | ||
984 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-green layui-btn-xs p-0-15 cant-click"> | ||
985 | - 已连接 | ||
986 | - </button> | ||
987 | - {{# }else if(d.hostState != null && d.hostState == 'notResponding'){ }} | ||
988 | - <button type="button" class="layui-btn layui-bg-orange layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
989 | - 未响应 | ||
990 | - </button> | ||
991 | - {{# }else if(d.hostState != null && d.hostState == 'disconnected'){ }} | ||
992 | - <button type="button" class="layui-btn layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
993 | - 断开连接 | ||
994 | - </button> | ||
995 | - {{# }else if(d.hostState != null && d.hostState == '正常'){ }} | ||
996 | - <button type="button" class="layui-btn layui-bg-green layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
997 | - 正常 | ||
998 | - </button> | ||
999 | - {{# }else{ }} | ||
1000 | - <button type="button" | ||
1001 | - class="layui-btn layui-btn-radius layui-bg-gray layui-btn-xs p-0-15 cant-click">{{ | ||
1002 | - '未监控'}} | ||
1003 | - </button> | ||
1004 | - {{# }}} | ||
1005 | -</script> | ||
1006 | -<!--ping状态--> | ||
1007 | -<script id="pingStatusTpl" type="text/html"> | ||
1008 | - {{# if(d.pingStatus === '正常'){ }} | ||
1009 | - <button type="button" class="layui-btn layui-btn-danger layui-bg-green layui-btn-radius layui-btn-xs p-0-15">正常 | ||
1010 | - </button> | ||
1011 | - {{# }else{ }} | ||
1012 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-red layui-btn-xs p-0-15">异常</button> | ||
1013 | - {{# } }} | ||
1014 | -</script> | ||
1015 | -<!--资源状态--> | ||
1016 | -<script id="resStateTpl" type="text/html"> | ||
1017 | - {{# | ||
1018 | - switch (d.state) { | ||
1019 | - case "new" : | ||
1020 | - }} | ||
1021 | - <button type="button" | ||
1022 | - class="layui-btn layui-btn-warm layui-bg-blue layui-btn-radius layui-btn-xs p-0-15 cant-click">未监控 | ||
1023 | - </button> {{# | ||
1024 | - break; | ||
1025 | - case "monitor" : | ||
1026 | - }} | ||
1027 | - <button type="button" | ||
1028 | - class="layui-btn layui-btn-warm layui-bg-green layui-btn-radius layui-btn-xs p-0-15 cant-click">监控中 | ||
1029 | - </button> {{# | ||
1030 | - break; | ||
1031 | - case "stop" : | ||
1032 | - }} | ||
1033 | - <button type="button" class="layui-btn layui-btn-warm layui-bg-red layui-btn-radius layui-btn-xs p-0-15 cant-click"> | ||
1034 | - 暂停监控 | ||
1035 | - </button> {{# | ||
1036 | - break; | ||
1037 | - case "alarmIgnore" : | ||
1038 | - }} | ||
1039 | - <button type="button" | ||
1040 | - class="layui-btn layui-btn-warm layui-bg-orange layui-btn-radius layui-btn-xs p-0-15 cant-click">告警压制中 | ||
1041 | - </button> {{# | ||
1042 | - break; | ||
1043 | - } | ||
1044 | - }} | ||
1045 | -</script> | ||
1046 | -<!--判断树结构有无子节点--> | ||
1047 | -<script id="bizResNameTpl" type="text/html"> | ||
1048 | - <div> | ||
1049 | - {{# if(d.resType == 'MIDDLEWARE_WEBLOGIC' && (d.parentId == null || d.parentId == '') ){ }} | ||
1050 | - <span data-childrennum="{{d.childrenNum}}">{{d.resName}}</span> | ||
1051 | - {{# }else{ }} | ||
1052 | - <span data-zymc="{{d.resId}}" data-restype="{{d.resType}}" data-name="{{d.resName}}" data-ip="{{d.ip}}" | ||
1053 | - data-childrennum="{{d.childrenNum}}" data-resTypeName="{{d.resTypeName}}" data-admin="{{d.admin}}" | ||
1054 | - data-pingenable="{{d.pingEnable}}" class="layui-table-link">{{d.resName}}</span> | ||
1055 | - {{# } }} | ||
1056 | - {{# if (d.favId == null) { }} | ||
1057 | - <a class="layui-icon layui-icon-rate hide" data-favid="{{d.favId}}" data-id="{{d.resId}}" lay-tips="加入收藏夹" | ||
1058 | - style="font-size: 14px"></a> | ||
1059 | - {{# } else { }} | ||
1060 | - <a class="layui-icon layui-icon-rate-solid" data-favid="{{d.favId}}" | ||
1061 | - style="color: #FEB61E; font-size: 14px; margin-left: 10px;" data-id="{{d.resId}}" lay-tips="移出收藏夹"></a> | ||
1062 | - {{# } }} | ||
1063 | - <a class="layui-icon reslist-view-topo hide" data-resid="{{d.resId}}" | ||
1064 | - style="color: #FEB61E; font-size: 14px; margin-left: 10px;" lay-tips="查看资源拓扑"><i | ||
1065 | - class="iconfont"></i></a> | ||
1066 | - </div> | ||
1067 | -</script> | ||
1068 | -<!--表空间使用率(最大)--> | ||
1069 | -<script id="tableSpaceUseRateTpl" type="text/html"> | ||
1070 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI64B1610A" data-name="表空间使用率" | ||
1071 | - data-showtype="bar" data-barkpiid="KPI2EC3F15A,KPI6AD9EBD6" data-barxaxis="KPI4332BAC8" | ||
1072 | - data-warning="0" data-ident="1" data-trend="0" data-flag="tps"> | ||
1073 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
1074 | - <div style="position:absolute; z-index:1;width: 100%" id="{{d.resId}}_bizTableSpaceUseRate" | ||
1075 | - class="showTipsName" data-id="{{d.resId}}_bizTableSpaceUseRate" data-message="{{d.tableSpaceUseName}}"> | ||
1076 | - <span style="color: #000000;">{{d.tableSpaceUseName}}</span></div> | ||
1077 | - <div class="layui-progress-bar layui-bg-green {{ d.tableSpaceUseRate >= 80 ? 'layui-bg-red' : (d.tableSpaceUseRate <= 50 ? '' : 'layui-bg-orange') }}" | ||
1078 | - lay-percent="{{ d.tableSpaceUseRate }}%" | ||
1079 | - style="width: {{ d.tableSpaceUseRate }}%;"> | ||
1080 | - </div> | ||
1081 | - </div> | ||
1082 | - <span class="layui-progress-text">{{ (d.tableSpaceUseRate == null || d.tableSpaceUseRate == '' || d.tableSpaceUseRate === '未知' || d.tableSpaceUseRate === '无' )? '0%' : d.tableSpaceUseRate +'%' }}</span> | ||
1083 | - </div> | ||
1084 | -</script> | ||
1085 | -<!--ASM磁盘空间使用率--> | ||
1086 | -<script id="asmDiskUsedRateTpl" type="text/html"> | ||
1087 | - <div class="layui-progress-wrap kpiSubDiv" data-resid={{d.resId}} data-kpiid="KPI922F8FF7" data-name="ASM磁盘空间使用率" | ||
1088 | - data-showtype="bar" data-barkpiid="KPI4D710FDA,KPI811E751E" data-barxaxis="KPI50267025" | ||
1089 | - data-warning="0" data-ident="1" data-trend="0" data-flag="asm"> | ||
1090 | - <div class="layui-progress layui-progress-big" lay-showpercent="true"> | ||
1091 | - <div style="position:absolute; z-index:1;width: 100%" id="{{d.resId}}_asmDiskUsedRate" class="showTipsName" | ||
1092 | - data-id="{{d.resId}}_asmDiskUsedRate" data-message="{{d.asmDiskUsedRate}}"><span | ||
1093 | - style="color: #000000;">{{d.asmDiskUsedRateName}}</span></div> | ||
1094 | - <div class="layui-progress-bar layui-bg-green {{ d.asmDiskUsedRate >= 80 ? 'layui-bg-red' : (d.asmDiskUsedRate <= 50 ? '' : 'layui-bg-orange') }}" | ||
1095 | - lay-percent="{{ d.asmDiskUsedRate }}%" | ||
1096 | - style="width: {{ d.asmDiskUsedRate }}%;"> | ||
1097 | - </div> | ||
1098 | - </div> | ||
1099 | - <span class="layui-progress-text">{{ (d.asmDiskUsedRate == null || d.asmDiskUsedRate == '' || d.asmDiskUsedRate === '未知' || d.asmDiskUsedRate === '无' )? '0%' : d.asmDiskUsedRate +'%' }}</span> | ||
1100 | - </div> | ||
1101 | -</script> | ||
1102 | -<!--weblogic定制表头--> | ||
1103 | -<script id="webLogicResNameTpl" type="text/html"> | ||
1104 | - <div> | ||
1105 | - {{# if(d.resType == 'MIDDLEWARE_WEBLOGIC' && (d.parentId == null || d.parentId == '') ){ }} | ||
1106 | - <span data-childrennum="{{d.childrenNum}}">{{d.resName}}</span> | ||
1107 | - {{# }else{ }} | ||
1108 | - <span data-zymc="{{ d.resId }}" data-restype="{{d.resType}}" data-name="{{d.resName}}" | ||
1109 | - data-childrennum="{{d.childrenNum}}" data-ip="{{ d.ip }}" data-resTypeName="{{ d.resTypeName }}" | ||
1110 | - data-admin="{{ d.admin }}" data-pingenable="{{d.pingEnable}}" | ||
1111 | - class="layui-table-link">{{ d.resName }}</span> | ||
1112 | - {{# } }} | ||
1113 | - {{# if (d.favId == null) { }} | ||
1114 | - <a class="layui-icon layui-icon-rate hide" data-favid="{{d.favId}}" data-id="{{d.resId}}" lay-tips="加入收藏夹" | ||
1115 | - style="font-size: 14px"></a> | ||
1116 | - {{# } else { }} | ||
1117 | - <a class="layui-icon layui-icon-rate-solid" data-favid="{{d.favId}}" | ||
1118 | - style="color: #FEB61E; font-size: 14px; margin-left: 10px;" data-id="{{d.resId}}" lay-tips="移出收藏夹"></a> | ||
1119 | - {{# } }} | ||
1120 | - <a class="layui-icon reslist-view-topo hide" data-resid="{{d.resId}}" | ||
1121 | - style="color: #FEB61E; font-size: 14px; margin-left: 10px;" lay-tips="查看资源拓扑"><i | ||
1122 | - class="iconfont"></i></a> | ||
1123 | - </div> | ||
1124 | -</script> | ||
1125 | -<!--资源池状态--> | ||
1126 | -<script id="clusterStateTpl" type="text/html"> | ||
1127 | - {{# if(d.clusterState === '正常'){ }} | ||
1128 | - <button type="button" class="layui-btn layui-btn-danger layui-bg-green layui-btn-radius layui-btn-xs p-0-15">正常 | ||
1129 | - </button> | ||
1130 | - {{# }else{ }} | ||
1131 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-red layui-btn-xs p-0-15">异常</button> | ||
1132 | - {{# } }} | ||
1133 | -</script> | ||
1134 | -<!--运行状态--> | ||
1135 | -<script id="runStateTpl" type="text/html"> | ||
1136 | - {{# if(d.runState === '正常'){ }} | ||
1137 | - <button type="button" class="layui-btn layui-btn-danger layui-bg-green layui-btn-radius layui-btn-xs p-0-15">正常 | ||
1138 | - </button> | ||
1139 | - {{# }else{ if(d.runState === '运行中'){ }} | ||
1140 | - <button type="button" class="layui-btn layui-btn-danger layui-bg-green layui-btn-radius layui-btn-xs p-0-15">运行中 | ||
1141 | - </button> | ||
1142 | - {{# }else{ }} | ||
1143 | - <button type="button" class="layui-btn layui-btn-radius layui-bg-red layui-btn-xs p-0-15">异常</button> | ||
1144 | - {{# } }} | ||
1145 | - {{# } }} | ||
1146 | -</script> | ||
1147 | -<script id="weblogicIpTpl" type="text/html"> | ||
1148 | - <div>{{d.ip?d.ip:""}}</div> | ||
1149 | -</script> | ||
1150 | -<script id="weblogicListenAddrTpl" type="text/html"> | ||
1151 | - <div>{{d.listenAddr?d.listenAddr:""}}</div> | ||
1152 | -</script> | ||
1153 | -<!--cup核心数--> | ||
1154 | -<script id="cpuCoresTpl" type="text/html"> | ||
1155 | - <div>{{d.cpuCores?(d.cpuCores+"核"):""}}</div> | ||
1156 | -</script> | ||
1157 | -<!--cup个数--> | ||
1158 | -<script id="cpuNumTpl" type="text/html"> | ||
1159 | - <div>{{d.cpuNum?(d.cpuNum+"个"):""}}</div> | ||
1160 | -</script> |
hg-monitor-web-nx/src/main/resources/static/src/views/template/user/accountSet.html
deleted
100644 → 0
1 | -<div class="layadmin-user-login layadmin-user-display-show setting"> | ||
2 | - <div class="layadmin-user-login-main"> | ||
3 | - <div class="layadmin-user-login-box layadmin-user-login-body layui-form"> | ||
4 | - <div class="layui-form-item hide"> | ||
5 | - <label class="layadmin-user-login-icon layui-icon layui-icon-password"></label> | ||
6 | - <input class="layui-input" lay-verify="required" name="username" placeholder="监控账号" type="text"> | ||
7 | - </div> | ||
8 | - <div class="layui-form-item"> | ||
9 | - <div class=""> | ||
10 | - <select class="layui-select layui-input" id="refSystem" lay-filter="refSystem" lay-verify="required" | ||
11 | - name="refSystem"></select> | ||
12 | - </div> | ||
13 | - </div> | ||
14 | - <div class="layui-form-item"> | ||
15 | - <label class="layadmin-user-login-icon"></label> | ||
16 | - <input class="layui-input" lay-verify="required" name="account" placeholder="系统账号" type="text"> | ||
17 | - </div> | ||
18 | - <div class="layui-form-item"> | ||
19 | - <label class="layadmin-user-login-icon"></label> | ||
20 | - <input class="layui-input" lay-verify="required" name="password" placeholder="系统密码" type="password"> | ||
21 | - </div> | ||
22 | - <div class="layui-form-item"> | ||
23 | - <div class="setting-btn"> | ||
24 | - <button class="layui-btn" id="setCommit" lay-filter="setAccount" lay-submit>保存</button> | ||
25 | - <button class="layui-btn layui-btn-primary" id="setClose">取消</button> | ||
26 | - </div> | ||
27 | - </div> | ||
28 | - </div> | ||
29 | - </div> | ||
30 | -</div> | ||
31 | - | ||
32 | -<script> | ||
33 | - layui.use(['admin', 'form', 'common', 'sessions'], function () { | ||
34 | - var $ = layui.$; | ||
35 | - var admin = layui.admin; | ||
36 | - var form = layui.form; | ||
37 | - var common = layui.common; | ||
38 | - var sessions = layui.sessions; | ||
39 | - var accessToken = sessions.getToken().access_token; | ||
40 | - form.render(); | ||
41 | - | ||
42 | - //填充用户监控账号 | ||
43 | - var username = localStorage.getItem("lgn"); | ||
44 | - $('input[name="username"]').val(username); | ||
45 | - | ||
46 | - //第三方系统下拉框切换事件监听 | ||
47 | - form.on('select(refSystem)', function (data) { | ||
48 | - if (data.value != '') { | ||
49 | - getOldAccountAndPwd(username, data.value); | ||
50 | - } | ||
51 | - }); | ||
52 | - | ||
53 | - //第三方系统下拉框数据填充 | ||
54 | - common.ddicSelect('refSystem', 'systems', function (datalist) { | ||
55 | - if (datalist.length == 1) { | ||
56 | - $('#refSystem').val(datalist[0].ddicCode); | ||
57 | - getOldAccountAndPwd(username, datalist[0].ddicCode); | ||
58 | - } | ||
59 | - form.render('select'); | ||
60 | - }); | ||
61 | - | ||
62 | - $('#setClose').on('click', function () { | ||
63 | - layer.closeAll(); | ||
64 | - }); | ||
65 | - | ||
66 | - //保存点击事件 | ||
67 | - form.on('submit(setAccount)', function (obj) { | ||
68 | - var userRefSystem = {}; | ||
69 | - //修改密码 | ||
70 | - userRefSystem.username = $('input[name="username"]').val(); | ||
71 | - userRefSystem.refSystem = $('#refSystem').val(); | ||
72 | - userRefSystem.account = $('input[name="account"]').val(); | ||
73 | - userRefSystem.password = $('input[name="password"]').val(); | ||
74 | - saveOrUpdate(userRefSystem); | ||
75 | - }); | ||
76 | - | ||
77 | - //增加或更细第三方账号关联信息 | ||
78 | - function saveOrUpdate(data) { | ||
79 | - admin.req({ | ||
80 | - url: common.domainName + '/api-web/userRefSystem/saveOrUpdate?access_token=' + accessToken, | ||
81 | - type: "POST", | ||
82 | - dataType: "json", | ||
83 | - contentType: 'application/json; charset=utf-8', | ||
84 | - data: JSON.stringify(data), | ||
85 | - success: function (res) { | ||
86 | - if (res) { | ||
87 | - var icon = 7; | ||
88 | - if (res.success) { | ||
89 | - icon = 1; | ||
90 | - } | ||
91 | - layer.msg(res.msg, {offset: '15px', icon: icon, time: 1000}, function () { | ||
92 | - if (res.success) { | ||
93 | - layer.closeAll(); | ||
94 | - } | ||
95 | - }); | ||
96 | - } | ||
97 | - | ||
98 | - } | ||
99 | - }) | ||
100 | - } | ||
101 | - | ||
102 | - //根据监控账号及第三方系统,查找关联信息 | ||
103 | - function getOldAccountAndPwd(username, refSystem) { | ||
104 | - admin.req({ | ||
105 | - url: common.domainName + '/api-web/userRefSystem/getByUsernameAndSystem', | ||
106 | - type: "GET", | ||
107 | - dataType: "json", | ||
108 | - data: { | ||
109 | - username: username, | ||
110 | - refSystem: refSystem | ||
111 | - }, | ||
112 | - success: function (res) { | ||
113 | - if (res && res.success) { | ||
114 | - if (res.object) { //如果有绑定 | ||
115 | - $('#resSystem').val(res.object.refSystem); | ||
116 | - $('input[name="account"]').val(res.object.account); | ||
117 | - $('input[name="password"]').val(common.Base64.decode(res.object.password)); | ||
118 | - } else { //如果未绑定 | ||
119 | - $('input[name="account"]').val(localStorage.getItem("lgn")); | ||
120 | - } | ||
121 | - } | ||
122 | - form.render(); | ||
123 | - }, | ||
124 | - error: function () { | ||
125 | - layer.msg('获取第三方账号异常', {offset: '15px', icon: 1, time: 1000}, function () { | ||
126 | - }); | ||
127 | - } | ||
128 | - }) | ||
129 | - } | ||
130 | - }); | ||
131 | -</script> |
-
Please register or login to post a comment