作者 王勇

消息平台控制中心,初次提交

@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 3
4 <head> 4 <head>
5 <meta charset="utf-8"> 5 <meta charset="utf-8">
6 - <title>易通快速通关申报管理系统</title> 6 + <title>消息控制中心</title>
7 <link rel="shortcut icon" type="image/x-icon" href="favicon.ico"> 7 <link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
8 </head> 8 </head>
9 9
@@ -2276,49 +2276,57 @@ @@ -2276,49 +2276,57 @@
2276 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" 2276 "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
2277 }, 2277 },
2278 "cliui": { 2278 "cliui": {
2279 - "version": "3.2.0",  
2280 - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",  
2281 - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", 2279 + "version": "5.0.0",
  2280 + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
  2281 + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
2282 "dev": true, 2282 "dev": true,
2283 "requires": { 2283 "requires": {
2284 - "string-width": "^1.0.1",  
2285 - "strip-ansi": "^3.0.1",  
2286 - "wrap-ansi": "^2.0.0" 2284 + "string-width": "^3.1.0",
  2285 + "strip-ansi": "^5.2.0",
  2286 + "wrap-ansi": "^5.1.0"
2287 }, 2287 },
2288 "dependencies": { 2288 "dependencies": {
2289 - "ansi-regex": {  
2290 - "version": "2.1.1",  
2291 - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",  
2292 - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 2289 + "emoji-regex": {
  2290 + "version": "7.0.3",
  2291 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
  2292 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
2293 "dev": true 2293 "dev": true
2294 }, 2294 },
2295 "is-fullwidth-code-point": { 2295 "is-fullwidth-code-point": {
2296 - "version": "1.0.0",  
2297 - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",  
2298 - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 2296 + "version": "2.0.0",
  2297 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
  2298 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
  2299 + "dev": true
  2300 + },
  2301 + "string-width": {
  2302 + "version": "3.1.0",
  2303 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
  2304 + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
2299 "dev": true, 2305 "dev": true,
2300 "requires": { 2306 "requires": {
2301 - "number-is-nan": "^1.0.0" 2307 + "emoji-regex": "^7.0.1",
  2308 + "is-fullwidth-code-point": "^2.0.0",
  2309 + "strip-ansi": "^5.1.0"
2302 } 2310 }
2303 }, 2311 },
2304 - "string-width": {  
2305 - "version": "1.0.2",  
2306 - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",  
2307 - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 2312 + "strip-ansi": {
  2313 + "version": "5.2.0",
  2314 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
  2315 + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
2308 "dev": true, 2316 "dev": true,
2309 "requires": { 2317 "requires": {
2310 - "code-point-at": "^1.0.0",  
2311 - "is-fullwidth-code-point": "^1.0.0",  
2312 - "strip-ansi": "^3.0.0" 2318 + "ansi-regex": "^4.1.0"
2313 } 2319 }
2314 }, 2320 },
2315 - "strip-ansi": {  
2316 - "version": "3.0.1",  
2317 - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",  
2318 - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2321 + "wrap-ansi": {
  2322 + "version": "5.1.0",
  2323 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
  2324 + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
2319 "dev": true, 2325 "dev": true,
2320 "requires": { 2326 "requires": {
2321 - "ansi-regex": "^2.0.0" 2327 + "ansi-styles": "^3.2.0",
  2328 + "string-width": "^3.0.0",
  2329 + "strip-ansi": "^5.0.0"
2322 } 2330 }
2323 } 2331 }
2324 } 2332 }
@@ -4846,9 +4854,9 @@ @@ -4846,9 +4854,9 @@
4846 } 4854 }
4847 }, 4855 },
4848 "globule": { 4856 "globule": {
4849 - "version": "1.2.1",  
4850 - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",  
4851 - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", 4857 + "version": "1.3.2",
  4858 + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
  4859 + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==",
4852 "dev": true, 4860 "dev": true,
4853 "requires": { 4861 "requires": {
4854 "glob": "~7.1.1", 4862 "glob": "~7.1.1",
@@ -5249,9 +5257,9 @@ @@ -5249,9 +5257,9 @@
5249 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 5257 "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
5250 }, 5258 },
5251 "in-publish": { 5259 "in-publish": {
5252 - "version": "2.0.0",  
5253 - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",  
5254 - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", 5260 + "version": "2.0.1",
  5261 + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
  5262 + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
5255 "dev": true 5263 "dev": true
5256 }, 5264 },
5257 "indent-string": { 5265 "indent-string": {
@@ -6023,9 +6031,9 @@ @@ -6023,9 +6031,9 @@
6023 }, 6031 },
6024 "dependencies": { 6032 "dependencies": {
6025 "minimist": { 6033 "minimist": {
6026 - "version": "1.2.0",  
6027 - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",  
6028 - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 6034 + "version": "1.2.5",
  6035 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
  6036 + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
6029 "dev": true 6037 "dev": true
6030 } 6038 }
6031 } 6039 }
@@ -6377,9 +6385,9 @@ @@ -6377,9 +6385,9 @@
6377 } 6385 }
6378 }, 6386 },
6379 "node-sass": { 6387 "node-sass": {
6380 - "version": "4.12.0",  
6381 - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz",  
6382 - "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", 6388 + "version": "4.14.1",
  6389 + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz",
  6390 + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
6383 "dev": true, 6391 "dev": true,
6384 "requires": { 6392 "requires": {
6385 "async-foreach": "^0.1.3", 6393 "async-foreach": "^0.1.3",
@@ -6389,14 +6397,14 @@ @@ -6389,14 +6397,14 @@
6389 "get-stdin": "^4.0.1", 6397 "get-stdin": "^4.0.1",
6390 "glob": "^7.0.3", 6398 "glob": "^7.0.3",
6391 "in-publish": "^2.0.0", 6399 "in-publish": "^2.0.0",
6392 - "lodash": "^4.17.11", 6400 + "lodash": "^4.17.15",
6393 "meow": "^3.7.0", 6401 "meow": "^3.7.0",
6394 "mkdirp": "^0.5.1", 6402 "mkdirp": "^0.5.1",
6395 "nan": "^2.13.2", 6403 "nan": "^2.13.2",
6396 "node-gyp": "^3.8.0", 6404 "node-gyp": "^3.8.0",
6397 "npmlog": "^4.0.0", 6405 "npmlog": "^4.0.0",
6398 "request": "^2.88.0", 6406 "request": "^2.88.0",
6399 - "sass-graph": "^2.2.4", 6407 + "sass-graph": "2.2.5",
6400 "stdout-stream": "^1.4.0", 6408 "stdout-stream": "^1.4.0",
6401 "true-case-path": "^1.0.2" 6409 "true-case-path": "^1.0.2"
6402 }, 6410 },
@@ -11461,15 +11469,15 @@ @@ -11461,15 +11469,15 @@
11461 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 11469 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
11462 }, 11470 },
11463 "sass-graph": { 11471 "sass-graph": {
11464 - "version": "2.2.4",  
11465 - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",  
11466 - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", 11472 + "version": "2.2.5",
  11473 + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz",
  11474 + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
11467 "dev": true, 11475 "dev": true,
11468 "requires": { 11476 "requires": {
11469 "glob": "^7.0.0", 11477 "glob": "^7.0.0",
11470 "lodash": "^4.0.0", 11478 "lodash": "^4.0.0",
11471 "scss-tokenizer": "^0.2.3", 11479 "scss-tokenizer": "^0.2.3",
11472 - "yargs": "^7.0.0" 11480 + "yargs": "^13.3.2"
11473 } 11481 }
11474 }, 11482 },
11475 "sass-loader": { 11483 "sass-loader": {
@@ -13472,88 +13480,138 @@ @@ -13472,88 +13480,138 @@
13472 "dev": true 13480 "dev": true
13473 }, 13481 },
13474 "yargs": { 13482 "yargs": {
13475 - "version": "7.1.0",  
13476 - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",  
13477 - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", 13483 + "version": "13.3.2",
  13484 + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
  13485 + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
13478 "dev": true, 13486 "dev": true,
13479 "requires": { 13487 "requires": {
13480 - "camelcase": "^3.0.0",  
13481 - "cliui": "^3.2.0",  
13482 - "decamelize": "^1.1.1",  
13483 - "get-caller-file": "^1.0.1",  
13484 - "os-locale": "^1.4.0",  
13485 - "read-pkg-up": "^1.0.1", 13488 + "cliui": "^5.0.0",
  13489 + "find-up": "^3.0.0",
  13490 + "get-caller-file": "^2.0.1",
13486 "require-directory": "^2.1.1", 13491 "require-directory": "^2.1.1",
13487 - "require-main-filename": "^1.0.1", 13492 + "require-main-filename": "^2.0.0",
13488 "set-blocking": "^2.0.0", 13493 "set-blocking": "^2.0.0",
13489 - "string-width": "^1.0.2",  
13490 - "which-module": "^1.0.0",  
13491 - "y18n": "^3.2.1",  
13492 - "yargs-parser": "^5.0.0" 13494 + "string-width": "^3.0.0",
  13495 + "which-module": "^2.0.0",
  13496 + "y18n": "^4.0.0",
  13497 + "yargs-parser": "^13.1.2"
13493 }, 13498 },
13494 "dependencies": { 13499 "dependencies": {
13495 - "ansi-regex": {  
13496 - "version": "2.1.1",  
13497 - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",  
13498 - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 13500 + "emoji-regex": {
  13501 + "version": "7.0.3",
  13502 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
  13503 + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
13499 "dev": true 13504 "dev": true
13500 }, 13505 },
13501 - "camelcase": { 13506 + "find-up": {
13502 "version": "3.0.0", 13507 "version": "3.0.0",
13503 - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",  
13504 - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", 13508 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
  13509 + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
  13510 + "dev": true,
  13511 + "requires": {
  13512 + "locate-path": "^3.0.0"
  13513 + }
  13514 + },
  13515 + "get-caller-file": {
  13516 + "version": "2.0.5",
  13517 + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
  13518 + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
13505 "dev": true 13519 "dev": true
13506 }, 13520 },
13507 "is-fullwidth-code-point": { 13521 "is-fullwidth-code-point": {
13508 - "version": "1.0.0",  
13509 - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",  
13510 - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 13522 + "version": "2.0.0",
  13523 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
  13524 + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
  13525 + "dev": true
  13526 + },
  13527 + "locate-path": {
  13528 + "version": "3.0.0",
  13529 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
  13530 + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
13511 "dev": true, 13531 "dev": true,
13512 "requires": { 13532 "requires": {
13513 - "number-is-nan": "^1.0.0" 13533 + "p-locate": "^3.0.0",
  13534 + "path-exists": "^3.0.0"
  13535 + }
  13536 + },
  13537 + "p-limit": {
  13538 + "version": "2.3.0",
  13539 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
  13540 + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
  13541 + "dev": true,
  13542 + "requires": {
  13543 + "p-try": "^2.0.0"
  13544 + }
  13545 + },
  13546 + "p-locate": {
  13547 + "version": "3.0.0",
  13548 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
  13549 + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
  13550 + "dev": true,
  13551 + "requires": {
  13552 + "p-limit": "^2.0.0"
13514 } 13553 }
13515 }, 13554 },
  13555 + "p-try": {
  13556 + "version": "2.2.0",
  13557 + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
  13558 + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
  13559 + "dev": true
  13560 + },
  13561 + "path-exists": {
  13562 + "version": "3.0.0",
  13563 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
  13564 + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
  13565 + "dev": true
  13566 + },
  13567 + "require-main-filename": {
  13568 + "version": "2.0.0",
  13569 + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
  13570 + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
  13571 + "dev": true
  13572 + },
13516 "string-width": { 13573 "string-width": {
13517 - "version": "1.0.2",  
13518 - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",  
13519 - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 13574 + "version": "3.1.0",
  13575 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
  13576 + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
13520 "dev": true, 13577 "dev": true,
13521 "requires": { 13578 "requires": {
13522 - "code-point-at": "^1.0.0",  
13523 - "is-fullwidth-code-point": "^1.0.0",  
13524 - "strip-ansi": "^3.0.0" 13579 + "emoji-regex": "^7.0.1",
  13580 + "is-fullwidth-code-point": "^2.0.0",
  13581 + "strip-ansi": "^5.1.0"
13525 } 13582 }
13526 }, 13583 },
13527 "strip-ansi": { 13584 "strip-ansi": {
13528 - "version": "3.0.1",  
13529 - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",  
13530 - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 13585 + "version": "5.2.0",
  13586 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
  13587 + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
13531 "dev": true, 13588 "dev": true,
13532 "requires": { 13589 "requires": {
13533 - "ansi-regex": "^2.0.0" 13590 + "ansi-regex": "^4.1.0"
13534 } 13591 }
13535 }, 13592 },
13536 - "y18n": {  
13537 - "version": "3.2.1",  
13538 - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",  
13539 - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", 13593 + "which-module": {
  13594 + "version": "2.0.0",
  13595 + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
  13596 + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
13540 "dev": true 13597 "dev": true
13541 } 13598 }
13542 } 13599 }
13543 }, 13600 },
13544 "yargs-parser": { 13601 "yargs-parser": {
13545 - "version": "5.0.0",  
13546 - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",  
13547 - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", 13602 + "version": "13.1.2",
  13603 + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
  13604 + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
13548 "dev": true, 13605 "dev": true,
13549 "requires": { 13606 "requires": {
13550 - "camelcase": "^3.0.0" 13607 + "camelcase": "^5.0.0",
  13608 + "decamelize": "^1.2.0"
13551 }, 13609 },
13552 "dependencies": { 13610 "dependencies": {
13553 "camelcase": { 13611 "camelcase": {
13554 - "version": "3.0.0",  
13555 - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",  
13556 - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", 13612 + "version": "5.3.1",
  13613 + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
  13614 + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
13557 "dev": true 13615 "dev": true
13558 } 13616 }
13559 } 13617 }
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'message-bus-service/bus'
  4 +// let baseUrl = 'http://127.0.0.1:9030/bus'
  5 +
  6 +// MQ服务器,分页查询列表
  7 +export const selectBusServerList = params =>{return http.get(`${baseUrl}/server/list`, params);};
  8 +// MQ服务器,新增
  9 +export const insertBusServer = params =>{return http.post(`${baseUrl}/server/insert`, params);};
  10 +// MQ服务器,编辑
  11 +export const updateBusServer = params =>{return http.put(`${baseUrl}/server/update`, params);};
  12 +// MQ服务器,删除
  13 +export const deleteBusServer = params =>{return http.del(`${baseUrl}/server/delete`, params);};
  14 +// MQ服务器,批量删除
  15 +export const batchRemoveBusServer = params =>{return http.get(`${baseUrl}/server/batchRemove`, params);};
  16 +
  17 +
  18 +// MQ虚拟主机,分页查询列表
  19 +export const selectVirtualHostList = params =>{return http.get(`${baseUrl}/host/list`, params);};
  20 +// MQ虚拟主机,新增
  21 +export const insertVirtualHost = params =>{return http.post(`${baseUrl}/host/insert`, params);};
  22 +// MQ虚拟主机,编辑
  23 +export const updateVirtualHost = params =>{return http.put(`${baseUrl}/host/update`, params);};
  24 +// MQ虚拟主机,删除
  25 +export const deleteVirtualHost = params =>{return http.del(`${baseUrl}/host/delete`, params);};
  26 +// MQ虚拟主机,批量删除
  27 +export const batchRemoveVirtualHost = params =>{return http.get(`${baseUrl}/host/batchRemove`, params);};
  28 +
  29 +
  30 +// MQ交换机,分页查询列表
  31 +export const selectBusExchangeList = params =>{return http.get(`${baseUrl}/exchange/list`, params);};
  32 +// MQ交换机,新增
  33 +export const insertBusExchange = params =>{return http.post(`${baseUrl}/exchange/insert`, params);};
  34 +// MQ交换机,编辑
  35 +export const updateBusExchange = params =>{return http.put(`${baseUrl}/exchange/update`, params);};
  36 +// MQ交换机,删除
  37 +export const deleteBusExchange = params =>{return http.del(`${baseUrl}/exchange/delete`, params);};
  38 +// MQ交换机,批量删除
  39 +export const batchRemoveBusExchange = params =>{return http.get(`${baseUrl}/exchange/batchRemove`, params);};
  40 +
  41 +
  42 +// MQ路由键,分页查询列表
  43 +export const selectRoutingKeyList = params =>{return http.get(`${baseUrl}/routing/list`, params);};
  44 +// MQ路由键,新增
  45 +export const insertRoutingKey = params =>{return http.post(`${baseUrl}/routing/insert`, params);};
  46 +// MQ路由键,编辑
  47 +export const updateRoutingKey = params =>{return http.put(`${baseUrl}/routing/update`, params);};
  48 +// MQ路由键,删除
  49 +export const deleteRoutingKey = params =>{return http.del(`${baseUrl}/routing/delete`, params);};
  50 +// MQ路由键,批量删除
  51 +export const batchRemoveRoutingKey = params =>{return http.get(`${baseUrl}/routing/batchRemove`, params);};
  52 +
  53 +
  54 +// MQ消息队列,分页查询列表
  55 +export const selectBusQueueList = params =>{return http.get(`${baseUrl}/queue/list`, params);};
  56 +// MQ消息队列,新增
  57 +export const insertBusQueue = params =>{return http.post(`${baseUrl}/queue/insert`, params);};
  58 +// MQ消息队列,编辑
  59 +export const updateBusQueue = params =>{return http.put(`${baseUrl}/queue/update`, params);};
  60 +// MQ消息队列,删除
  61 +export const deleteBusQueue = params =>{return http.del(`${baseUrl}/queue/delete`, params);};
  62 +// MQ消息队列,批量删除
  63 +export const batchRemoveBusQueue = params =>{return http.get(`${baseUrl}/queue/batchRemove`, params);};
  64 +
  65 +
  66 +
  67 +// MQ消息收发记录,分页查询列表
  68 +export const selectMessageNoteList = params =>{return http.get(`${baseUrl}/note/list`, params);};
  69 +// MQ消息收发记录,新增
  70 +export const insertMessageNote = params =>{return http.post(`${baseUrl}/note/insert`, params);};
  71 +// MQ消息收发记录,编辑
  72 +export const updateMessageNote = params =>{return http.put(`${baseUrl}/note/update`, params);};
  73 +// MQ消息收发记录,删除
  74 +export const deleteMessageNote = params =>{return http.del(`${baseUrl}/note/delete`, params);};
  75 +// MQ消息收发记录,批量删除
  76 +export const batchRemoveMessageNote = params =>{return http.get(`${baseUrl}/note/batchRemove`, params);};
  77 +
  78 +
  79 +// MQ账户消息绑定配置,分页查询列表
  80 +export const selectUserMessageBindingList = params =>{return http.get(`${baseUrl}/umb/list`, params);};
  81 +// MQ账户消息绑定配置,新增
  82 +export const insertUserMessageBinding = params =>{return http.post(`${baseUrl}/umb/insert`, params);};
  83 +// MQ账户消息绑定配置,编辑
  84 +export const updateUserMessageBinding = params =>{return http.put(`${baseUrl}/umb/update`, params);};
  85 +// MQ账户消息绑定配置,删除
  86 +export const deleteUserMessageBinding = params =>{return http.del(`${baseUrl}/umb/delete`, params);};
  87 +// MQ账户消息绑定配置,批量删除
  88 +export const batchRemoveUserMessageBinding = params =>{return http.get(`${baseUrl}/umb/batchRemove`, params);};
  89 +
  90 +// 级联查询
  91 +export const getServerList = params =>{return http.get(`${baseUrl}/cascade/server`, params);};
  92 +export const getHostList = params =>{return http.get(`${baseUrl}/cascade/host`, params);};
  93 +export const getServerAndHostList = params =>{return http.get(`${baseUrl}/cascade/server_host`, params);};
  94 +export const getServerAndHostAndExchangeList = params =>{return http.get(`${baseUrl}/cascade/server_host_exchange`, params);};
@@ -69,7 +69,7 @@ function websocketOpen(e){ @@ -69,7 +69,7 @@ function websocketOpen(e){
69 console.log("连接成功"); 69 console.log("连接成功");
70 } 70 }
71 71
72 -initWebSocket();  
73 -  
74 -export{sendSock} 72 +// initWebSocket();
  73 +//
  74 +// export{sendSock}
75 75
@@ -75,6 +75,14 @@ import queryDeparture from './views/airtransport/queryDeparture.vue' @@ -75,6 +75,14 @@ import queryDeparture from './views/airtransport/queryDeparture.vue'
75 import queryDeclare from './views/airtransport/queryDeclare.vue' 75 import queryDeclare from './views/airtransport/queryDeclare.vue'
76 import outConfigure from './views/airtransport/outConfigure.vue' 76 import outConfigure from './views/airtransport/outConfigure.vue'
77 import queryFlightConfigure from './views/airtransport/queryFlightConfigure.vue' 77 import queryFlightConfigure from './views/airtransport/queryFlightConfigure.vue'
  78 +// 消息控制中心
  79 +import Server from './views/bus/Server.vue'
  80 +import VirtualHost from './views/bus/VirtualHost.vue'
  81 +import Exchange from './views/bus/Exchange.vue'
  82 +import RoutingKey from './views/bus/RoutingKey.vue'
  83 +import Queue from './views/bus/Queue.vue'
  84 +import MessageNote from './views/bus/MessageNote.vue'
  85 +import UserMessageBinding from './views/bus/UserMessageBinding.vue'
78 86
79 87
80 88
@@ -108,162 +116,180 @@ let routes = [ @@ -108,162 +116,180 @@ let routes = [
108 name: '系统设置', 116 name: '系统设置',
109 iconCls: 'el-icon-setting',//图标样式class 117 iconCls: 'el-icon-setting',//图标样式class
110 children: [ 118 children: [
111 - { path: '/user', component: User, name: '用户管理' },  
112 - { path: '/role', component: Role, name: '组织机构' },  
113 - { path: '/perm', component: Perm, name: '权限管理' },  
114 - { path: '/log', component: LOG, name: '系统日志' },  
115 - { path: '/department', component: Department, name: '部门管理' },  
116 - { path: '/company', component: Company, name: '公司管理'},  
117 - { path: '/group', component: Group, name: '集团管理'}  
118 - ]  
119 - },  
120 - {  
121 - path: '/guestService',  
122 - component: Home,  
123 - name: '客服系统',  
124 - iconCls: 'fa fa-id-card-o',  
125 - children: [  
126 - { path: '/process', component: Process, name: '工单管理' },  
127 - { path: '/job', component: Job, name: '任务管理' },  
128 - {path: '/pre1', component: PreManifest, name: '预配'},  
129 - ]  
130 - },  
131 - {  
132 - path: '/output',  
133 - component: Home,  
134 - name: '出港业务申报',  
135 - iconCls: 'el-icon-collection',  
136 - children: [  
137 - {path: '/flight', component: ExitFlight, name: '出港航班申报'},  
138 - {path: '/manifest', component: ExitManifest, name: '出港运单申报'},  
139 - {path: '/pre', component: ExitPre, name: '出港预配舱单'},  
140 - {path: '/arrive', component: ExitArrive, name: '出港运抵'},  
141 - {path: '/loadingView', component: ExitFlightDesc, name: '出港航班信息'},  
142 - {path: '/loading', component: ExitLoading, name: '出港装载'},  
143 - {path: '/tidy', component: ExitTidy, name: '出港理货'} 119 + {path: '/user', component: User, name: '用户管理'},
  120 + {path: '/role', component: Role, name: '组织机构'},
  121 + {path: '/perm', component: Perm, name: '权限管理'},
  122 + {path: '/log', component: LOG, name: '系统日志'},
  123 + {path: '/department', component: Department, name: '部门管理'},
  124 + {path: '/company', component: Company, name: '公司管理'},
  125 + {path: '/group', component: Group, name: '集团管理'}
144 ] 126 ]
145 }, 127 },
  128 +
146 { 129 {
147 - path: '/nmms2', 130 + path: '/bus',
148 component: Home, 131 component: Home,
149 - name: '进港业务申报',  
150 - iconCls: 'fa fa-id-card-o', 132 + name: '消息控制中心',
  133 + iconCls: 'el-icon-message',
151 children: [ 134 children: [
152 - { path: '/orig', component: OrigFlightList, name: '进港航班申报' },  
153 - {path:'/waybill',component:Waybill,name:'进港运单申报'},  
154 - {path:'/allocateSearch',component:AllocateSearch,name:'运单分拨申报'},  
155 - { path: '/enter', component: EnterFlightInfo, name: '原始舱单'},  
156 - { path:'/origmaster',component:OrigMaster,name:'进港原始舱单'},  
157 - {path:'/entertall',component:EnterTally,name:'进港理货'},  
158 - {path:'/tallymaster',component:TallyMster,name:'进港理货舱单'},  
159 - {path:'/importallocation',component:Importallocation,name:'进港分拨'},  
160 - {path:'/allocatearrive',component:Allocatearrive,name:'分拨运抵'}, 135 + {path: '/server', component: Server, name: '服务器管理'},
  136 + {path: '/host', component: VirtualHost, name: '虚拟主机管理'},
  137 + {path: '/exchange', component: Exchange, name: '交换机管理'},
  138 + {path: '/queue', component: Queue, name: '队列管理'},
  139 + {path: '/routing', component: RoutingKey, name: '路由键管理'},
  140 + {path: '/umb', component: UserMessageBinding, name: '配置管理'},
  141 + {path: '/note', component: MessageNote, name: '消息记录管理'},
161 ] 142 ]
162 }, 143 },
163 - {  
164 - path: '/lost',  
165 - component: Home,  
166 - name: '落装改配申报',  
167 - iconCls:'el-icon-goods',  
168 - children:[  
169 - {path:'/lostLoad',component:LostLoad,name:'落装业务申报'},  
170 - {path:'/lostLoadChange',component:LostLoadChange,name:'改配业务申报'}  
171 144
172 - ]  
173 - },  
174 - {  
175 - path: '/airtransport',  
176 - component: Home,  
177 - name: '通用业务申报',  
178 - iconCls:'el-icon-goods',  
179 - children:[  
180 - {path:'/route',component:Route,name:'航线申报'},  
181 - {path:'/bill',component:Bill,name:'单据申报'},  
182 - {path:'/flights',component:Flight,name:'航班申报'},  
183 - {path:'/flightplan',component:Flightplan,name:'当日飞行计划'},  
184 - {path:'/aircraft',component:Aircraft,name:'通用航空器申报'},  
185 - {path:'/routeaircraft',component:Routeaircraft,name:'航线航空器申报'},  
186 - ]  
187 - },  
188 - {  
189 - path: '/querytransport',  
190 - component: Home,  
191 - name: '通用业务查询',  
192 - iconCls:'el-icon-goods',  
193 - children:[  
194 - {path:'/queryRoute',component:queryRoute,name:'航线查询'},  
195 - {path:'/queryBill',component:queryBill,name:'单据查询'},  
196 - {path:'/queryFlights',component:queryFlight,name:'航班查询'},  
197 - {path:'/queryFlightplan',component:queryFlightplan,name:'当日飞行计划查询'},  
198 - {path:'/queryAircraft',component:queryAircraft,name:'通用航空器查询'},  
199 - {path:'/queryRouteaircraft',component:queryRouteaircraft,name:'航线航空器查询'},  
200 - ]  
201 - },  
202 - {  
203 - path: '/input',  
204 - component: Home,  
205 - name: '进港航班申报',  
206 - iconCls:'el-icon-goods',  
207 - children:[  
208 - {path:'/arrival',component:arrival,name:'进港预报申报'},  
209 - {path:'/confirmatory',component:confirmatory,name:'进港确报申报'},  
210 - {path:'/queryArrival',component:queryArrival,name:'进港预报查询'},  
211 - {path:'/queryConfirmatory',component:queryConfirmatory,name:'进港确报查询'},  
212 - {path:'/configure',component:configure,name:'进港航班配置'},  
213 - {path:'/queryConfigure',component:queryConfigure,name:'航班配置查询'},  
214 - ]  
215 - },  
216 - {  
217 - path: '/out',  
218 - component: Home,  
219 - name: '出港航班申报',  
220 - iconCls:'el-icon-goods',  
221 - children:[  
222 - {path:'/departure',component:departure,name:'出港预报申报'},  
223 - {path:'/declare',component:declare,name:'出港确报申报'},  
224 - {path:'/queryDeparture',component:queryDeparture,name:'出港预报查询'},  
225 - {path:'/queryDeclare',component:queryDeclare,name:'出港确报查询'},  
226 - {path:'/outConfigure',component:outConfigure,name:'出港航班配置'},  
227 - {path:'/queryFlightConfigure',component:queryFlightConfigure,name:'航班配置查询'},  
228 - ]  
229 - },  
230 145
231 - {  
232 - path: '/empt',  
233 - component: Home,  
234 - name: '能源管理',  
235 - iconCls: 'fa fa-id-card-o',  
236 - children: [  
237 - { path: '/location', component: Location, name: '能源缴费' },  
238 - ]  
239 - },  
240 - {  
241 - path: '/satff',  
242 - component: Home,  
243 - name: '生活保障部门',  
244 - iconCls: 'fa fa-id-card-o',  
245 - children: [  
246 - { path: '/security_inspection', component: SecrityInspection, name: '职工公寓安全巡视管理' },  
247 - { path: '/key', component: Key, name: '职工公寓备用钥匙使用登记管理' },  
248 - { path: '/maintain', component: Maintain, name: '职工公寓设施设备维修记录管理' },  
249 - { path: '/come_car', component: ComeCar, name: '职工公寓外来人员车辆登记管理' },  
250 - { path: '/on_duty', component: OnDuty, name: '职工公寓值班巡视记录管理' },  
251 - ]  
252 - },  
253 - {  
254 - path: '/water_heating_chamber',  
255 - component: Home,  
256 - name: '水暖室',  
257 - iconCls: 'fa fa-address-card',  
258 - // leaf: true,//只有一个节点  
259 - children: [  
260 - { path: '/water_stations_patrol', component: WaterStationsPatrol, name: '二水厂-水站巡视记录单管理' },  
261 - // { path: '/page6', component: Page6, name: '水质量检测' },  
262 - // { path: '/page6', component: Page6, name: '污水站' },  
263 - // { path: '/page6', component: Page6, name: '一水厂' },  
264 - // { path: '/page6', component: Page6, name: '综合楼空调站' },  
265 - ]  
266 - }, 146 + // {
  147 + // path: '/guestService',
  148 + // component: Home,
  149 + // name: '客服系统',
  150 + // iconCls: 'fa fa-id-card-o',
  151 + // children: [
  152 + // { path: '/process', component: Process, name: '工单管理' },
  153 + // { path: '/job', component: Job, name: '任务管理' },
  154 + // {path: '/pre1', component: PreManifest, name: '预配'},
  155 + // ]
  156 + // },
  157 + // {
  158 + // path: '/output',
  159 + // component: Home,
  160 + // name: '出港业务申报',
  161 + // iconCls: 'el-icon-collection',
  162 + // children: [
  163 + // {path: '/flight', component: ExitFlight, name: '出港航班申报'},
  164 + // {path: '/manifest', component: ExitManifest, name: '出港运单申报'},
  165 + // {path: '/pre', component: ExitPre, name: '出港预配舱单'},
  166 + // {path: '/arrive', component: ExitArrive, name: '出港运抵'},
  167 + // {path: '/loadingView', component: ExitFlightDesc, name: '出港航班信息'},
  168 + // {path: '/loading', component: ExitLoading, name: '出港装载'},
  169 + // {path: '/tidy', component: ExitTidy, name: '出港理货'}
  170 + // ]
  171 + // },
  172 + // {
  173 + // path: '/nmms2',
  174 + // component: Home,
  175 + // name: '进港业务申报',
  176 + // iconCls: 'fa fa-id-card-o',
  177 + // children: [
  178 + // { path: '/orig', component: OrigFlightList, name: '进港航班申报' },
  179 + // {path:'/waybill',component:Waybill,name:'进港运单申报'},
  180 + // {path:'/allocateSearch',component:AllocateSearch,name:'运单分拨申报'},
  181 + // { path: '/enter', component: EnterFlightInfo, name: '原始舱单'},
  182 + // { path:'/origmaster',component:OrigMaster,name:'进港原始舱单'},
  183 + // {path:'/entertall',component:EnterTally,name:'进港理货'},
  184 + // {path:'/tallymaster',component:TallyMster,name:'进港理货舱单'},
  185 + // {path:'/importallocation',component:Importallocation,name:'进港分拨'},
  186 + // {path:'/allocatearrive',component:Allocatearrive,name:'分拨运抵'},
  187 + // ]
  188 + // },
  189 + // {
  190 + // path: '/lost',
  191 + // component: Home,
  192 + // name: '落装改配申报',
  193 + // iconCls:'el-icon-goods',
  194 + // children:[
  195 + // {path:'/lostLoad',component:LostLoad,name:'落装业务申报'},
  196 + // {path:'/lostLoadChange',component:LostLoadChange,name:'改配业务申报'}
  197 + //
  198 + // ]
  199 + // },
  200 + // {
  201 + // path: '/airtransport',
  202 + // component: Home,
  203 + // name: '通用业务申报',
  204 + // iconCls:'el-icon-goods',
  205 + // children:[
  206 + // {path:'/route',component:Route,name:'航线申报'},
  207 + // {path:'/bill',component:Bill,name:'单据申报'},
  208 + // {path:'/flights',component:Flight,name:'航班申报'},
  209 + // {path:'/flightplan',component:Flightplan,name:'当日飞行计划'},
  210 + // {path:'/aircraft',component:Aircraft,name:'通用航空器申报'},
  211 + // {path:'/routeaircraft',component:Routeaircraft,name:'航线航空器申报'},
  212 + // ]
  213 + // },
  214 + // {
  215 + // path: '/querytransport',
  216 + // component: Home,
  217 + // name: '通用业务查询',
  218 + // iconCls:'el-icon-goods',
  219 + // children:[
  220 + // {path:'/queryRoute',component:queryRoute,name:'航线查询'},
  221 + // {path:'/queryBill',component:queryBill,name:'单据查询'},
  222 + // {path:'/queryFlights',component:queryFlight,name:'航班查询'},
  223 + // {path:'/queryFlightplan',component:queryFlightplan,name:'当日飞行计划查询'},
  224 + // {path:'/queryAircraft',component:queryAircraft,name:'通用航空器查询'},
  225 + // {path:'/queryRouteaircraft',component:queryRouteaircraft,name:'航线航空器查询'},
  226 + // ]
  227 + // },
  228 + // {
  229 + // path: '/input',
  230 + // component: Home,
  231 + // name: '进港航班申报',
  232 + // iconCls:'el-icon-goods',
  233 + // children:[
  234 + // {path:'/arrival',component:arrival,name:'进港预报申报'},
  235 + // {path:'/confirmatory',component:confirmatory,name:'进港确报申报'},
  236 + // {path:'/queryArrival',component:queryArrival,name:'进港预报查询'},
  237 + // {path:'/queryConfirmatory',component:queryConfirmatory,name:'进港确报查询'},
  238 + // {path:'/configure',component:configure,name:'进港航班配置'},
  239 + // {path:'/queryConfigure',component:queryConfigure,name:'航班配置查询'},
  240 + // ]
  241 + // },
  242 + // {
  243 + // path: '/out',
  244 + // component: Home,
  245 + // name: '出港航班申报',
  246 + // iconCls:'el-icon-goods',
  247 + // children:[
  248 + // {path:'/departure',component:departure,name:'出港预报申报'},
  249 + // {path:'/declare',component:declare,name:'出港确报申报'},
  250 + // {path:'/queryDeparture',component:queryDeparture,name:'出港预报查询'},
  251 + // {path:'/queryDeclare',component:queryDeclare,name:'出港确报查询'},
  252 + // {path:'/outConfigure',component:outConfigure,name:'出港航班配置'},
  253 + // {path:'/queryFlightConfigure',component:queryFlightConfigure,name:'航班配置查询'},
  254 + // ]
  255 + // },
  256 + //
  257 + // {
  258 + // path: '/empt',
  259 + // component: Home,
  260 + // name: '能源管理',
  261 + // iconCls: 'fa fa-id-card-o',
  262 + // children: [
  263 + // { path: '/location', component: Location, name: '能源缴费' },
  264 + // ]
  265 + // },
  266 + // {
  267 + // path: '/satff',
  268 + // component: Home,
  269 + // name: '生活保障部门',
  270 + // iconCls: 'fa fa-id-card-o',
  271 + // children: [
  272 + // { path: '/security_inspection', component: SecrityInspection, name: '职工公寓安全巡视管理' },
  273 + // { path: '/key', component: Key, name: '职工公寓备用钥匙使用登记管理' },
  274 + // { path: '/maintain', component: Maintain, name: '职工公寓设施设备维修记录管理' },
  275 + // { path: '/come_car', component: ComeCar, name: '职工公寓外来人员车辆登记管理' },
  276 + // { path: '/on_duty', component: OnDuty, name: '职工公寓值班巡视记录管理' },
  277 + // ]
  278 + // },
  279 + // {
  280 + // path: '/water_heating_chamber',
  281 + // component: Home,
  282 + // name: '水暖室',
  283 + // iconCls: 'fa fa-address-card',
  284 + // // leaf: true,//只有一个节点
  285 + // children: [
  286 + // { path: '/water_stations_patrol', component: WaterStationsPatrol, name: '二水厂-水站巡视记录单管理' },
  287 + // // { path: '/page6', component: Page6, name: '水质量检测' },
  288 + // // { path: '/page6', component: Page6, name: '污水站' },
  289 + // // { path: '/page6', component: Page6, name: '一水厂' },
  290 + // // { path: '/page6', component: Page6, name: '综合楼空调站' },
  291 + // ]
  292 + // },
267 { 293 {
268 path: '/', 294 path: '/',
269 component: Home, 295 component: Home,
@@ -146,7 +146,7 @@ @@ -146,7 +146,7 @@
146 } 146 }
147 }; 147 };
148 return { 148 return {
149 - sysName:'易通快速通关申报管理系统', 149 + sysName:'消息控制中心',
150 collapsed:false, 150 collapsed:false,
151 sysUserName: '', 151 sysUserName: '',
152 sysUserId:'', 152 sysUserId:'',
@@ -371,7 +371,7 @@ @@ -371,7 +371,7 @@
371 aside { 371 aside {
372 flex:0 0 230px; 372 flex:0 0 230px;
373 width: 230px; 373 width: 230px;
374 - overflow-y: scroll; 374 + /*overflow-y: scroll;*/
375 background: #606060; 375 background: #606060;
376 // position: absolute; 376 // position: absolute;
377 // top: 0px; 377 // top: 0px;
  1 +<template>
  2 + <el-container>
  3 + <el-main>
  4 + <el-card style="background-color: #F5F7FA">
  5 + <!-- 搜素区域 -->
  6 + <div>
  7 + <el-row :gutter="24">
  8 + <el-col :span="4">
  9 + <el-input v-model="exchange_queryInfo.exchangeName" prefix-icon="el-icon-search"
  10 + size="medium"
  11 + placeholder="交换机名称" clearable style="width:180px"></el-input>
  12 + </el-col>
  13 + <el-col :span="4">
  14 + <el-cascader
  15 + style="width:180px" size="medium"
  16 + v-model="exchange_queryInfo.virtualHostId"
  17 + :options="exchange_config.cascade.server_hostList"
  18 + :show-all-levels="false"
  19 + :change-on-select="false"
  20 + clearable
  21 + @change="cascadeQueryChange"
  22 + :props="exchange_config.cascade.defaultParams"
  23 + placeholder="请选择所属虚拟主机"></el-cascader>
  24 + </el-col>
  25 + <el-col :span="8">
  26 + <el-button type="success" style="width:150px" size="medium" @click="exchange_getList">
  27 + 查询交换机
  28 + </el-button>
  29 + <el-button type="primary" style="width:150px" size="medium" @click="exchange_toAddDialog">
  30 + 添加交换机
  31 + </el-button>
  32 + </el-col>
  33 + </el-row>
  34 + </div>
  35 + <!-- 列表区域 -->
  36 + <div style="margin-top: 20px;">
  37 + <el-table :data="exchange_page.exchangeList" border v-loading="exchange_loading.listLoading"
  38 + @selection-change="exchange_selectChange"
  39 + element-loading-text="获取交换机列表,拼命加载中">
  40 + <el-table-column type="selection" width="55" align="center"></el-table-column>
  41 + <el-table-column type="index" align="center"></el-table-column>
  42 + <el-table-column label="交换机名称" prop="exchangeName" align="center"
  43 + width="190"></el-table-column>
  44 + <el-table-column label="所属虚拟主机" prop="virtualHost.virtualHostName" align="center" width="190">
  45 + </el-table-column>
  46 + <el-table-column label="交换机类型" prop="exchangeType" align="center" width="160">
  47 + </el-table-column>
  48 + <el-table-column label="是否持久化" prop="durability" align="center" width="145">
  49 + <template slot-scope="scope">
  50 + <span v-if="scope.row.durability ===false">否</span>
  51 + <span v-if="scope.row.durability ===true">是</span>
  52 + </template>
  53 + </el-table-column>
  54 + <el-table-column label="是否自动删除" prop="autoDelete" align="center" width="145">
  55 + <template slot-scope="scope">
  56 + <span v-if="scope.row.autoDelete ===false">否</span>
  57 + <span v-if="scope.row.autoDelete ===true">是</span>
  58 + </template>
  59 + </el-table-column>
  60 + <el-table-column label="是否仅内部使用" prop="internal" align="center" width="145">
  61 + <template slot-scope="scope">
  62 + <span v-if="scope.row.internal ===false">否</span>
  63 + <span v-if="scope.row.internal ===true">是</span>
  64 + </template>
  65 + </el-table-column>
  66 + <el-table-column label="扩展参数" prop="arguments" align="center" width="200">
  67 + </el-table-column>
  68 + <el-table-column label="相关描述" prop="description" align="center" width="300"></el-table-column>
  69 + <el-table-column label="操作" width="280px" align="center" fixed="right">
  70 + <template slot-scope="scope">
  71 + <!-- 路由键 style="width:50px;margin-left: 1px;"-->
  72 + <el-tooltip effect="dark" content="路由键" placement="top-start" :enterable="false">
  73 + <el-button type="warning" icon="el-icon-link" size="small"
  74 + @click="toRoutingKey(scope.$index,scope.row)">路由键
  75 + </el-button>
  76 + </el-tooltip>
  77 + <!-- 编辑按钮 style="width:50px;margin-left: 1px;"-->
  78 + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false">
  79 + <el-button type="primary" icon="el-icon-edit" size="small"
  80 + @click="exchange_toEditDialog(scope.$index,scope.row)">编辑
  81 + </el-button>
  82 + </el-tooltip>
  83 + <!-- 删除按钮 style="width:50px;margin-left: 1px;"-->
  84 + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false">
  85 + <el-button type="danger" icon="el-icon-delete" size="small"
  86 + :loading="exchange_loading.delLoading"
  87 + @click="exchange_remove(scope.$index,scope.row)">删除
  88 + </el-button>
  89 + </el-tooltip>
  90 + </template>
  91 + </el-table-column>
  92 + </el-table>
  93 + </div>
  94 +
  95 +
  96 + <!--分页区域-->
  97 + <div style="margin-top: 10px">
  98 + <el-row :gutter="24">
  99 + <el-col :span="5">
  100 + <el-button type="danger" icon="el-icon-delete"
  101 + :loading="exchange_loading.batchDelLoading"
  102 + :disabled="this.exchange_page.selectList.length===0"
  103 + @click="exchange_batchRemove">批量删除
  104 + </el-button>
  105 + </el-col>
  106 + <el-col :span="10" style="margin-top: 5px">
  107 + <el-pagination
  108 + @size-change="exchange_handleSizeChange"
  109 + @current-change="exchange_handleCurrentChange"
  110 + :current-page="exchange_queryInfo.pageNum"
  111 + :page-sizes="[10,20,30,50]"
  112 + :page-size="exchange_queryInfo.pageSize"
  113 + layout="total, sizes, prev, pager, next, jumper"
  114 + :total="exchange_page.total">
  115 + </el-pagination>
  116 + </el-col>
  117 + </el-row>
  118 + </div>
  119 + </el-card>
  120 + <!-- 增加,对话框区域 -->
  121 + <div>
  122 + <el-dialog title="添加交换机"
  123 + :visible.sync="exchange_dialog.addDialog"
  124 + style="margin-top: -50px"
  125 + width="62%" text-align="center" @close="exchange_addDialogClosed">
  126 + <el-form :inline="true" label-width="145px" status-icon style="margin-top: -10px"
  127 + :model="exchange_addForm" :rules="exchange_addFormRules" ref="exchange_addFormRef">
  128 + <el-form-item label="交换机名称:" prop="exchangeName">
  129 + <el-input v-model="exchange_addForm.exchangeName" style="width:240px" size="small" clearable
  130 + placeholder="请输入交换机名称">
  131 + </el-input>
  132 + </el-form-item>
  133 + <el-form-item label="所属虚拟主机:" prop="virtualHostId">
  134 + <el-cascader
  135 + clearable style="width: 240px" size="small"
  136 + v-model="exchange_addForm.virtualHostId"
  137 + @change="cascadeAddChange"
  138 + :options="exchange_config.cascade.server_hostList"
  139 + :show-all-levels="false"
  140 + :change-on-select="false"
  141 + :props="exchange_config.cascade.defaultParams"
  142 + placeholder="请选择所属虚拟主机"></el-cascader>
  143 + </el-form-item>
  144 + <el-form-item label="交换机类型:" prop="exchangeType">
  145 + <el-select v-model="exchange_addForm.exchangeType" style="width: 240px" clearable
  146 + size="small"
  147 + placeholder="请选择交换机类型">
  148 + <el-option
  149 + v-for="item in exchangeTypeList"
  150 + :key="item.value"
  151 + :label="item.label"
  152 + :value="item.value">
  153 + </el-option>
  154 + </el-select>
  155 + </el-form-item>
  156 + <el-form-item label="是否持久化:" prop="durability">
  157 + <el-select v-model="exchange_addForm.durability" style="width: 240px" clearable size="small"
  158 + placeholder="请选择是否持久化">
  159 + <el-option
  160 + v-for="item in booleanList"
  161 + :key="item.value"
  162 + :label="item.label"
  163 + :value="item.value">
  164 + </el-option>
  165 + </el-select>
  166 + </el-form-item>
  167 + <el-form-item label="是否自动删除:" prop="autoDelete">
  168 + <el-select v-model="exchange_addForm.autoDelete" style="width: 240px" clearable size="small"
  169 + placeholder="请选择是否自动删除">
  170 + <el-option
  171 + v-for="item in booleanList"
  172 + :key="item.value"
  173 + :label="item.label"
  174 + :value="item.value">
  175 + </el-option>
  176 + </el-select>
  177 + </el-form-item>
  178 + <el-form-item label="是否仅内部使用:" prop="internal">
  179 + <el-select v-model="exchange_addForm.internal" style="width: 240px" clearable size="small"
  180 + placeholder="是否仅内部使用">
  181 + <el-option
  182 + v-for="item in booleanList"
  183 + :key="item.value"
  184 + :label="item.label"
  185 + :value="item.value">
  186 + </el-option>
  187 + </el-select>
  188 + </el-form-item>
  189 + <el-form-item label="扩展参数:" prop="arguments">
  190 + <el-input v-model="exchange_addForm.arguments" style="width:240px" clearable size="small"
  191 + placeholder="扩展参数(JSON格式)">
  192 + </el-input>
  193 + </el-form-item>
  194 + <el-form-item label="相关描述:" prop="description">
  195 + <el-input v-model="exchange_addForm.description" style="width:240px" clearable size="small"
  196 + placeholder="相关描述">
  197 + </el-input>
  198 + </el-form-item>
  199 + </el-form>
  200 + <div slot="footer" class="dialog-footer" style="text-align: center;margin-top: -20px">
  201 + <el-button type="info" @click="exchange_dialog.addDialog = false" size="medium"
  202 + style="width: 100px">取消
  203 + </el-button>
  204 + <el-button type="primary" @click="exchange_add" :loading="exchange_loading.addLoading"
  205 + size="medium" style="width: 100px">添加
  206 + </el-button>
  207 + </div>
  208 + </el-dialog>
  209 + </div>
  210 + <!-- 编辑,对话框区域 -->
  211 + <div>
  212 + <el-dialog title="编辑交换机"
  213 + :visible.sync="exchange_dialog.editDialog"
  214 + style="margin-top: -50px"
  215 + width="62%" text-align="center" @close="exchange_editDialogClosed">
  216 + <el-form :inline="true" label-width="145px" status-icon style="margin-top: -10px"
  217 + :model="exchange_editForm" :rules="exchange_editFormRules" ref="exchange_editFormRef">
  218 + <el-form-item label="交换机名称:" prop="exchangeName">
  219 + <el-input v-model="exchange_editForm.exchangeName" style="width:240px" size="small"
  220 + clearable
  221 + placeholder="请输入交换机名称">
  222 + </el-input>
  223 + </el-form-item>
  224 + <el-form-item label="所属虚拟主机:" prop="virtualHostId">
  225 + <el-cascader
  226 + clearable style="width: 240px" size="small"
  227 + v-model="exchange_editForm.virtualHostId"
  228 + @change="cascadeEditChange"
  229 + :options="exchange_config.cascade.server_hostList"
  230 + :show-all-levels="false"
  231 + :change-on-select="false"
  232 + :props="exchange_config.cascade.defaultParams"
  233 + placeholder="请选择所属虚拟主机"></el-cascader>
  234 + </el-form-item>
  235 + <el-form-item label="交换机类型:" prop="exchangeType">
  236 + <el-select v-model="exchange_editForm.exchangeType" style="width: 240px" clearable
  237 + size="small"
  238 + placeholder="请选择交换机类型">
  239 + <el-option
  240 + v-for="item in exchangeTypeList"
  241 + :key="item.value"
  242 + :label="item.label"
  243 + :value="item.value">
  244 + </el-option>
  245 + </el-select>
  246 + </el-form-item>
  247 + <el-form-item label="是否持久化:" prop="durability">
  248 + <el-select v-model="exchange_editForm.durability" style="width: 240px" clearable
  249 + size="small"
  250 + placeholder="请选择是否持久化">
  251 + <el-option
  252 + v-for="item in booleanList"
  253 + :key="item.value"
  254 + :label="item.label"
  255 + :value="item.value">
  256 + </el-option>
  257 + </el-select>
  258 + </el-form-item>
  259 + <el-form-item label="是否自动删除:" prop="autoDelete">
  260 + <el-select v-model="exchange_editForm.autoDelete" style="width: 240px" clearable
  261 + size="small"
  262 + placeholder="请选择是否自动删除">
  263 + <el-option
  264 + v-for="item in booleanList"
  265 + :key="item.value"
  266 + :label="item.label"
  267 + :value="item.value">
  268 + </el-option>
  269 + </el-select>
  270 + </el-form-item>
  271 + <el-form-item label="是否仅内部使用:" prop="internal">
  272 + <el-select v-model="exchange_editForm.internal" style="width: 240px" clearable size="small"
  273 + placeholder="是否仅内部使用">
  274 + <el-option
  275 + v-for="item in booleanList"
  276 + :key="item.value"
  277 + :label="item.label"
  278 + :value="item.value">
  279 + </el-option>
  280 + </el-select>
  281 + </el-form-item>
  282 + <el-form-item label="扩展参数:" prop="arguments">
  283 + <el-input v-model="exchange_editForm.arguments" style="width:240px" clearable size="small"
  284 + placeholder="扩展参数(JSON格式)">
  285 + </el-input>
  286 + </el-form-item>
  287 + <el-form-item label="相关描述:" prop="description">
  288 + <el-input v-model="exchange_editForm.description" style="width:240px" clearable size="small"
  289 + placeholder="相关描述">
  290 + </el-input>
  291 + </el-form-item>
  292 + </el-form>
  293 +
  294 + <div slot="footer" class="dialog-footer" style="text-align: center">
  295 + <el-button type="info" @click="exchange_dialog.editDialog = false" size="medium"
  296 + style="width: 100px">取消
  297 + </el-button>
  298 + <el-button type="primary" @click="exchange_edit" :loading="exchange_loading.addLoading"
  299 + size="medium"
  300 + style="width: 100px">
  301 + 编辑
  302 + </el-button>
  303 + </div>
  304 + </el-dialog>
  305 + </div>
  306 + </el-main>
  307 + </el-container>
  308 +</template>
  309 +
  310 +<script>
  311 + import {
  312 + selectBusExchangeList,
  313 + insertBusExchange,
  314 + updateBusExchange,
  315 + deleteBusExchange,
  316 + batchRemoveBusExchange, getServerAndHostList, getHostList, getServerList,
  317 + } from "../../api/message_bus";
  318 +
  319 + export default {
  320 + name: "Exchange",
  321 +
  322 + data() {
  323 + return {
  324 + /**
  325 + * exchange,配置与参数
  326 + */
  327 + exchange_config: {
  328 + // 所属虚拟主机名称
  329 + virtualHostName: '',
  330 + // 所有虚拟主机的基本信息
  331 + virtualHostList: [],
  332 + // 级联显示
  333 + cascade: {
  334 + // 服务器及虚拟主机列表
  335 + server_hostList: [],
  336 + defaultParams: {
  337 + label: 'aliasName',
  338 + value: 'id',
  339 + children: 'aliasList'
  340 + }
  341 + },
  342 + },
  343 + /**
  344 + * exchange,搜索参数
  345 + */
  346 + exchange_queryInfo: {
  347 + // 所属虚拟主机Id
  348 + virtualHostId: '',
  349 + // 交换机名称
  350 + exchangeName: '',
  351 + // 当前页数
  352 + pageNum: 1,
  353 + // 每页条数
  354 + pageSize: 10
  355 + },
  356 + /**
  357 + * exchange,分页
  358 + */
  359 + exchange_page: {
  360 + // 列表
  361 + exchangeList: [],
  362 + // 总条数
  363 + total: 0,
  364 + // 删除选中列表
  365 + selectList: [],
  366 + },
  367 + /**
  368 + * exchange,新增表单
  369 + */
  370 + exchange_addForm: {
  371 + // 交换机名称
  372 + exchangeName: '',
  373 + //所属虚拟主机ID
  374 + virtualHostId: '',
  375 + // 交换机类型,默认 direct;direct(路由-订阅)、topic(动态路由-订阅)、fanout(广播)
  376 + exchangeType: 'direct',
  377 + // 是否持久化,默认 true
  378 + durability: true,
  379 + // 是否自动删除,默认 false
  380 + autoDelete: false,
  381 + //是否是RabbitMQ内部使用,默认 false
  382 + internal: false,
  383 + // 扩展参数,以JSON格式存储
  384 + arguments: '',
  385 + // 交换机相关描述
  386 + description: '',
  387 + },
  388 + /**
  389 + * exchange,编辑表单
  390 + */
  391 + exchange_editForm: {}
  392 + ,
  393 + /**
  394 + * exchange,加载
  395 + */
  396 + exchange_loading: {
  397 + // 列表加载
  398 + listLoading: false,
  399 + // 添加加载
  400 + addLoading: false,
  401 + // 编辑加载
  402 + editLoading: false,
  403 + // 删除加载
  404 + delLoading: false,
  405 + // 批量删除加载
  406 + batchDelLoading: false,
  407 + },
  408 + /**
  409 + * exchange,对话框管理
  410 + */
  411 + exchange_dialog: {
  412 + // 添加对话框
  413 + addDialog: false,
  414 + // 编辑对话框
  415 + editDialog: false,
  416 + },
  417 +
  418 + /**
  419 + * exchange,添加表单,验证规则
  420 + */
  421 + exchange_addFormRules: {
  422 + exchangeName: [
  423 + {required: true, message: '请输入交换机名称', trigger: ['blur', 'change']},
  424 + ],
  425 + virtualHostId: [
  426 + {required: true, message: '请选择虚拟主机', trigger: ['blur', 'change']},
  427 + ],
  428 + exchangeType: [
  429 + {required: true, message: '请选择交换机类型', trigger: ['blur', 'change']},
  430 + ],
  431 + durability: [
  432 + {required: true, message: '请选择是否持久化', trigger: ['blur', 'change']},
  433 + ],
  434 + autoDelete: [
  435 + {required: true, message: '请选择是否自动删除', trigger: ['blur', 'change']},
  436 + ],
  437 + internal: [
  438 + {required: true, message: '请选择是否仅内部使用', trigger: ['blur', 'change']},
  439 + ],
  440 + // 扩展参数,以JSON格式存储
  441 + arguments: '',
  442 + // 交换机相关描述
  443 + description: '',
  444 +
  445 + },
  446 + /**
  447 + * exchange,编辑表单,验证规则
  448 + */
  449 + exchange_editFormRules: {
  450 + exchangeName: [
  451 + {required: true, message: '请输入交换机名称', trigger: ['blur', 'change']},
  452 + ],
  453 + virtualHostId: [
  454 + {required: true, message: '请选择虚拟主机', trigger: ['blur', 'change']},
  455 + ],
  456 + exchangeType: [
  457 + {required: true, message: '请选择交换机类型', trigger: ['blur', 'change']},
  458 + ],
  459 + durability: [
  460 + {required: true, message: '请选择是否持久化', trigger: ['blur', 'change']},
  461 + ],
  462 + autoDelete: [
  463 + {required: true, message: '请选择是否自动删除', trigger: ['blur', 'change']},
  464 + ],
  465 + internal: [
  466 + {required: true, message: '请选择是否仅内部使用', trigger: ['blur', 'change']},
  467 + ],
  468 + // 扩展参数,以JSON格式存储
  469 + arguments: '',
  470 + // 交换机相关描述
  471 + description: '',
  472 + },
  473 +
  474 + /**
  475 + * Boolean属性,选择列表
  476 + */
  477 + booleanList: [
  478 + {
  479 + value: true,
  480 + label: '是'
  481 + },
  482 + {
  483 + value: false,
  484 + label: '否'
  485 + },
  486 + ],
  487 + /**
  488 + * 交换机类型,选择列表
  489 + */
  490 + exchangeTypeList: [
  491 + {
  492 + value: 'direct',
  493 + label: 'direct'
  494 + },
  495 + {
  496 + value: 'topic',
  497 + label: 'topic'
  498 + },
  499 + {
  500 + value: 'fanout',
  501 + label: 'fanout'
  502 + },
  503 + {
  504 + value: 'headers',
  505 + label: 'headers'
  506 + },
  507 + ],
  508 + }
  509 + },
  510 + methods: {
  511 + /**
  512 + * 分页查询,监听 pageSize 改变的事件
  513 + */
  514 + exchange_handleSizeChange(newSize) {
  515 + this.exchange_queryInfo.pageSize = newSize;
  516 + //刷新列表
  517 + this.exchange_getList();
  518 + },
  519 + /**
  520 + * 分页查询,监听 pageNum 改变的事件
  521 + */
  522 + exchange_handleCurrentChange(newPage) {
  523 + this.exchange_queryInfo.pageNum = newPage;
  524 + //刷新列表
  525 + this.exchange_getList();
  526 + },
  527 + /**
  528 + * exchange,分页查询
  529 + */
  530 + exchange_getList() {
  531 + // 开启加载
  532 + this.exchange_loading.listLoading = true;
  533 + selectBusExchangeList(this.exchange_queryInfo).then((response) => {
  534 + let res = response.data;
  535 + if (res.code !== '200') {
  536 + // 关闭加载
  537 + this.exchange_loading.listLoading = false;
  538 + return this.$message.error('获取交换机列表,失败!');
  539 + }
  540 + // 获取列表数据
  541 + this.exchange_page.exchangeList = res.data.list;
  542 + // 获取列表的总记录数
  543 + this.exchange_page.total = res.data.total;
  544 + // 关闭加载
  545 + this.exchange_loading.listLoading = false;
  546 + this.$message.success('获取交换机列表,成功!');
  547 + }).catch(error => {
  548 + // 关闭加载
  549 + this.exchange_loading.listLoading = false;
  550 + this.$message.error(error.toString());
  551 + });
  552 + },
  553 + /**
  554 + * exchange,添加对话框,打开事件
  555 + */
  556 + exchange_toAddDialog() {
  557 + this.exchange_dialog.addDialog = true;
  558 + },
  559 + /**
  560 + * exchange,添加对话框,关闭事件
  561 + */
  562 + exchange_addDialogClosed() {
  563 + // 重置对话框
  564 + this.$refs.exchange_addFormRef.resetFields();
  565 + },
  566 + /**
  567 + * exchange,添加功能
  568 + */
  569 + exchange_add() {
  570 + // 进行表单的预验证
  571 + this.$refs.exchange_addFormRef.validate(valid => {
  572 + // 未通过,表单预校验
  573 + if (!valid) return;
  574 + // 通过,表单预检验
  575 + this.exchange_loading.addLoading = true;
  576 + insertBusExchange(this.exchange_addForm).then((response) => {
  577 + let res = response.data;
  578 + // 添加失败
  579 + if (res.code !== '200') {
  580 + if (res.code === '400') {
  581 + // 关闭加载
  582 + this.exchange_loading.addLoading = false;
  583 + return this.$message.error('该交换机,已存在');
  584 + }
  585 + if (res.code === '999') {
  586 + // 关闭加载
  587 + this.exchange_loading.addLoading = false;
  588 + return this.$message.error('未知异常,添加交换机,失败');
  589 + }
  590 + // 关闭加载
  591 + this.exchange_loading.addLoading = false;
  592 + return this.$message.error('添加交换机,失败');
  593 + }
  594 + // 添加,成功
  595 + this.$message.success('添加交换机,成功');
  596 + // 关闭加载
  597 + this.exchange_loading.addLoading = false;
  598 + // 隐藏对话框
  599 + this.exchange_dialog.addDialog = false;
  600 + // 刷新列表
  601 + this.exchange_getList();
  602 + }).catch(error => {
  603 + // 关闭加载
  604 + this.exchange_loading.addLoading = false;
  605 + this.$message.error(error.toString());
  606 + });
  607 + })
  608 + },
  609 +
  610 + /**
  611 + * exchange,编辑对话框,打开事件
  612 + */
  613 + exchange_toEditDialog(index, row) {
  614 + this.exchange_editForm = Object.assign({}, row);
  615 + this.exchange_dialog.editDialog = true;
  616 + },
  617 +
  618 + /**
  619 + * exchange,编辑对话框,关闭事件
  620 + */
  621 + exchange_editDialogClosed() {
  622 + //重置对话框
  623 + this.$refs.exchange_editFormRef.resetFields();
  624 + },
  625 + /**
  626 + * exchange,编辑功能
  627 + */
  628 + exchange_edit() {
  629 + //进行表单的预验证
  630 + this.$refs.exchange_editFormRef.validate(valid => {
  631 + // 未通过,表单预校验
  632 + if (!valid) return;
  633 + // 通过,表单预检验
  634 + this.exchange_loading.editLoading = true;
  635 + updateBusExchange(this.exchange_editForm).then((response) => {
  636 + let res = response.data;
  637 + if (res.code !== '200') {
  638 + if (res.code === '400') {
  639 + // 关闭加载
  640 + this.exchange_loading.editLoading = false;
  641 + return this.$message.error('该交换机,已存在');
  642 + }
  643 + if (res.code === '999') {
  644 + // 关闭加载
  645 + this.exchange_loading.editLoading = false;
  646 + return this.$message.error('未知异常,编辑交换机信息,失败');
  647 + }
  648 + //关闭加载
  649 + this.exchange_loading.editLoading = false;
  650 + return this.$message.error('编辑交换机信息,失败');
  651 + }
  652 + // 关闭加载
  653 + this.exchange_loading.editLoading = false;
  654 + this.$message.success('编辑交换机信息,成功!');
  655 + // 隐藏对话框
  656 + this.exchange_dialog.editDialog = false;
  657 + // 刷新列表
  658 + this.exchange_getList();
  659 + }).catch(error => {
  660 + this.exchange_loading.editLoading = false;
  661 + this.$message.error(error.toString());
  662 + });
  663 + })
  664 + },
  665 + /**
  666 + * exchange,删除功能
  667 + */
  668 + exchange_remove(index, row) {
  669 + // 弹框询问是否删除?
  670 + this.$confirm('此操作永久删除该交换机信息, 是否继续?', '警告', {
  671 + confirmButtonText: '确定删除',
  672 + cancelButtonText: '取消',
  673 + type: 'warning'
  674 + }
  675 + ).then(() => {
  676 + // 开启加载
  677 + this.exchange_loading.delLoading = true;
  678 + deleteBusExchange(row).then((response) => {
  679 + let res = response.data;
  680 + if (res.code !== '200') {
  681 + // 关闭加载
  682 + this.exchange_loading.delLoading = false;
  683 + return this.$message.error('删除交换机信息,失败');
  684 + }
  685 + // 关闭加载
  686 + this.exchange_loading.delLoading = false;
  687 + this.$message.success('删除交换机信息,成功!');
  688 + // 刷新列表
  689 + this.exchange_getList();
  690 + }).catch(error => {
  691 + this.exchange_loading.delLoading = false;
  692 + this.$message.error(error.toString());
  693 + });
  694 + }).catch(() => {
  695 + });
  696 + },
  697 + /**
  698 + * 批量删除---选中
  699 + */
  700 + exchange_selectChange: function (selectList) {
  701 + this.exchange_page.selectList = selectList;
  702 + },
  703 + /**
  704 + * exchange,批量删除功能
  705 + */
  706 + exchange_batchRemove() {
  707 + const ids = this.exchange_page.selectList.map(item => item.id).toString();
  708 + this.$confirm('此操作将永久删除选中的交换机信息, 是否继续?', '警告', {
  709 + confirmButtonText: '确定删除',
  710 + cancelButtonText: '取消',
  711 + type: 'warning'
  712 + }
  713 + ).then(() => {
  714 + // 开启加载
  715 + this.exchange_loading.batchDelLoading = true;
  716 + let params = {ids: ids};
  717 + batchRemoveBusExchange(params).then(response => {
  718 + let res = response.data;
  719 + if (res.code !== '200') {
  720 + // 关闭加载
  721 + this.exchange_loading.batchDelLoading = false;
  722 + return this.$message.error('批量删除交换机信息,失败');
  723 + }
  724 + this.$message.success('批量删除交换机信息,成功!');
  725 + // 关闭加载
  726 + this.exchange_loading.batchDelLoading = false;
  727 + // 刷新列表
  728 + this.exchange_getList();
  729 + }).catch(error => {
  730 + // 关闭加载
  731 + this.exchange_loading.batchDelLoading = false;
  732 + this.$message.error(error.toString());
  733 + });
  734 + }).catch(() => {
  735 + });
  736 + },
  737 +
  738 + /**
  739 + * exchange,获取全部虚拟主机
  740 + */
  741 + selectHostList() {
  742 + getHostList().then((response) => {
  743 + let res = response.data;
  744 + if (res.code !== '200') {
  745 + return this.$message.error('获取虚拟主机列表,失败!');
  746 + }
  747 + // 获取列表数据
  748 + this.exchange_config.virtualHostList = res.data;
  749 + // this.$message.success('获取虚拟主机列表,成功!');
  750 + }).catch(error => {
  751 + this.$message.error(error.toString());
  752 + });
  753 + },
  754 +
  755 + /**
  756 + * 服务器与虚拟主机 1:n
  757 + * 获取列表
  758 + */
  759 + selectServerAndHostList() {
  760 + getServerAndHostList().then((response) => {
  761 + let res = response.data;
  762 + if (res.code !== '200') {
  763 + return this.$message.error('获取服务器与虚拟主机信息,失败!');
  764 + }
  765 + // 获取列表数据
  766 + this.exchange_config.cascade.server_hostList = res.data;
  767 + // this.$message.success('获取虚拟主机列表,成功!');
  768 + }).catch(error => {
  769 + this.$message.error(error.toString());
  770 + });
  771 + },
  772 + /**
  773 + * 查询,级联。值改变激发的方法
  774 + * @param value 改变后的值
  775 + */
  776 + cascadeQueryChange(value) {
  777 + let ids = value.join().split(",");
  778 + this.exchange_queryInfo.virtualHostId = ids[ids.length - 1];
  779 + },
  780 + /**
  781 + * 添加,级联。值改变激发的方法
  782 + * @param value 改变后的值
  783 + */
  784 + cascadeAddChange(value) {
  785 + let ids = value.join().split(",");
  786 + this.exchange_addForm.virtualHostId = ids[ids.length - 1];
  787 + },
  788 + cascadeEditChange(value) {
  789 + let ids = value.join().split(",");
  790 + this.exchange_editForm.virtualHostId = ids[ids.length - 1];
  791 + },
  792 + /**
  793 + * 携带参数,跳转至路由键界面
  794 + */
  795 + toRoutingKey(index, row) {
  796 + this.$confirm('查看该交换机下的路由键, 是否继续?', '提示', {
  797 + confirmButtonText: '查看',
  798 + cancelButtonText: '取消',
  799 + type: 'warning'
  800 + }
  801 + ).then(() => {
  802 + this.$router.push({name: "路由键管理", params: {exchange_scopeRow: row}})
  803 + }).catch(() => {
  804 + });
  805 + },
  806 + },
  807 + created() {
  808 + if (this.$route.params.virtualHost_scopeRow !== undefined) {
  809 + // 参数,虚拟主机id
  810 + this.exchange_queryInfo.virtualHostId = this.$route.params.virtualHost_scopeRow.id;
  811 + // 刷新列表
  812 + this.exchange_getList();
  813 + // 参数,虚拟主机名称
  814 + //this.exchange_config.virtualHostName = this.$route.params.virtualHost_scopeRow.virtualHostName;
  815 + } else {
  816 + // 刷新列表
  817 + this.exchange_getList();
  818 + }
  819 + },
  820 + mounted() {
  821 + // this.selectHostList();
  822 + this.selectServerAndHostList();
  823 + },
  824 + computed: {},
  825 + }
  826 +</script>
  827 +
  828 +<style scoped>
  829 +
  830 +</style>
  1 +<template>
  2 + <div>消息记录</div>
  3 +</template>
  4 +
  5 +<script>
  6 + export default {
  7 + name: "MessageNote",
  8 +
  9 + data() {
  10 + return {
  11 +
  12 + }
  13 + },
  14 + methods: {
  15 +
  16 + },
  17 + created() {
  18 +
  19 + },
  20 + mounted() {
  21 +
  22 + },
  23 + computed: {
  24 +
  25 + },
  26 + }
  27 +</script>
  28 +
  29 +<style scoped>
  30 +
  31 +</style>
  1 +<template>
  2 + <div>消息队列</div>
  3 +</template>
  4 +
  5 +<script>
  6 + import {
  7 + selectBusQueueList,
  8 + insertBusQueue,
  9 + updateBusQueue,
  10 + deleteBusQueue,
  11 + batchRemoveBusQueue,
  12 + getServerAndHostAndExchangeList,
  13 + } from "../../api/message_bus";
  14 +
  15 + export default {
  16 + name: "Queue",
  17 +
  18 + data() {
  19 + return {
  20 + /**
  21 + * queue,配置与参数
  22 + */
  23 + queue_config: {
  24 + // 级联显示
  25 + cascade: {
  26 + // 服务器及虚拟主机列表
  27 + server_host_exchangeList: [],
  28 + defaultParams: {
  29 + label: 'aliasName',
  30 + value: 'id',
  31 + children: 'aliasList'
  32 + }
  33 + },
  34 + },
  35 + /**
  36 + * queue,搜索参数
  37 + */
  38 + queue_queryInfo: {
  39 + // 队列名称
  40 + queueName: '',
  41 + // 所属交换机id
  42 + exchangeId: '',
  43 + // 当前页数
  44 + pageNum: 1,
  45 + // 每页条数
  46 + pageSize: 10
  47 + },
  48 + }
  49 + },
  50 + methods: {},
  51 + created() {
  52 +
  53 + },
  54 + mounted() {
  55 +
  56 + },
  57 + computed: {},
  58 + }
  59 +</script>
  60 +
  61 +<style scoped>
  62 +
  63 +</style>
  1 +<template>
  2 + <el-container>
  3 + <el-main>
  4 + <el-card style="background-color: #F5F7FA">
  5 + <!-- 搜素区域 -->
  6 + <div>
  7 + <el-row :gutter="24">
  8 + <el-col :span="4">
  9 + <el-input v-model="routingKey_queryInfo.routingKeyName" placeholder="路由键名称"
  10 + prefix-icon="el-icon-search" size="medium" clearable style="width:180px">
  11 + </el-input>
  12 + </el-col>
  13 +
  14 + <el-col :span="4">
  15 + <el-cascader
  16 + style="width:180px" size="medium"
  17 + v-model="routingKey_queryInfo.exchangeId"
  18 + :options="routingKey_config.cascade.server_host_exchangeList"
  19 + :show-all-levels="false"
  20 + :change-on-select="false"
  21 + clearable
  22 + @change="cascadeQueryChange"
  23 + :props="routingKey_config.cascade.defaultParams"
  24 + placeholder="请选择所属交换机"></el-cascader>
  25 + </el-col>
  26 + <el-col :span="8">
  27 + <el-button type="success" style="width:150px" size="medium" @click="routingKey_getList">
  28 + 查询路由键
  29 + </el-button>
  30 + <el-button type="primary" style="width:150px" size="medium" @click="routingKey_toAddDialog">
  31 + 添加路由键
  32 + </el-button>
  33 + </el-col>
  34 + </el-row>
  35 + </div>
  36 + <!-- 列表区域 -->
  37 + <div style="margin-top: 20px;">
  38 + <el-table :data="routingKey_page.routingKeyList" border v-loading="routingKey_loading.listLoading"
  39 + @selection-change="routingKey_selectChange"
  40 + element-loading-text="获取路由键列表,拼命加载中">
  41 + <el-table-column type="selection" width="55" align="center"></el-table-column>
  42 + <el-table-column type="index" align="center"></el-table-column>
  43 + <el-table-column label="路由键名称" prop="routingKeyName" align="center"
  44 + width="220"></el-table-column>
  45 + <el-table-column label="所属交换机" prop="busExchange.exchangeName" align="center"
  46 + width="220"></el-table-column>
  47 + <el-table-column label="相关描述" prop="description" align="center" width="280"></el-table-column>
  48 + <!-- fixed="right" -->
  49 + <el-table-column label="操作" width="232px" align="center">
  50 + <template slot-scope="scope">
  51 + <!-- 编辑按钮-->
  52 + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false">
  53 + <el-button type="primary" icon="el-icon-edit" size="mini"
  54 + @click="routingKey_toEditDialog(scope.$index,scope.row)">编辑
  55 + </el-button>
  56 + </el-tooltip>
  57 +
  58 + <!-- 删除按钮-->
  59 + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false">
  60 + <el-button type="danger" icon="el-icon-delete" size="mini"
  61 + :loading="routingKey_loading.delLoading"
  62 + @click="routingKey_remove(scope.$index,scope.row)">删除
  63 + </el-button>
  64 + </el-tooltip>
  65 + </template>
  66 + </el-table-column>
  67 + </el-table>
  68 + </div>
  69 +
  70 + <!--分页区域-->
  71 + <div style="margin-top: 10px">
  72 + <el-row :gutter="24">
  73 + <el-col :span="5">
  74 + <el-button type="danger" icon="el-icon-delete"
  75 + :loading="routingKey_loading.batchDelLoading"
  76 + :disabled="this.routingKey_page.selectList.length===0"
  77 + @click="routingKey_batchRemove">批量删除
  78 + </el-button>
  79 + </el-col>
  80 + <el-col :span="10" style="margin-top: 5px">
  81 + <el-pagination
  82 + @size-change="routingKey_handleSizeChange"
  83 + @current-change="routingKey_handleCurrentChange"
  84 + :current-page="routingKey_queryInfo.pageNum"
  85 + :page-sizes="[10,20,30,50]"
  86 + :page-size="routingKey_queryInfo.pageSize"
  87 + layout="total, sizes, prev, pager, next, jumper"
  88 + :total="routingKey_page.total">
  89 + </el-pagination>
  90 + </el-col>
  91 + </el-row>
  92 + </div>
  93 + </el-card>
  94 + <!-- 增加,对话框区域 -->
  95 + <div>
  96 + <el-dialog title="添加路由键"
  97 + :visible.sync="routingKey_dialog.addDialog"
  98 + style="margin-top: -50px" text-align="center" width="50%"
  99 + @close="routingKey_addDialogClosed">
  100 +
  101 + <el-form :inline="true" label-width="120px" status-icon style="margin-top: -10px" align="center"
  102 + :model="routingKey_addForm" :rules="routingKey_addFormRules" ref="routingKey_addFormRef">
  103 + <el-form-item label="路由键名称:" prop="routingKeyName">
  104 + <el-input v-model="routingKey_addForm.routingKeyName" placeholder="请输入路由键名称"
  105 + style="width:240px" size="small" clearable>
  106 + </el-input>
  107 + </el-form-item>
  108 + <el-form-item label="所属交换机:" prop="exchangeId">
  109 + <el-cascader
  110 + style="width:240px" size="small" clearable
  111 + v-model="routingKey_addForm.exchangeId"
  112 + :options="routingKey_config.cascade.server_host_exchangeList"
  113 + :show-all-levels="false"
  114 + :change-on-select="false"
  115 + @change="cascadeAddChange"
  116 + :props="routingKey_config.cascade.defaultParams"
  117 + placeholder="请选择所属交换机"></el-cascader>
  118 + </el-form-item>
  119 + <el-form-item label="相关描述:" prop="description">
  120 + <el-input v-model="routingKey_addForm.description" style="width:240px" clearable
  121 + size="small"
  122 + placeholder="相关描述">
  123 + </el-input>
  124 + </el-form-item>
  125 + </el-form>
  126 + <div slot="footer" class="dialog-footer" style="text-align: center;margin-top: -20px">
  127 + <el-button type="info" @click="routingKey_dialog.addDialog = false" size="medium"
  128 + style="width: 100px">取消
  129 + </el-button>
  130 + <el-button type="primary" @click="routingKey_add" :loading="routingKey_loading.addLoading"
  131 + size="medium" style="width: 100px">添加
  132 + </el-button>
  133 + </div>
  134 + </el-dialog>
  135 + </div>
  136 + <!-- 编辑,对话框区域 -->
  137 + <div>
  138 + <el-dialog title="编辑交换机"
  139 + :visible.sync="routingKey_dialog.editDialog"
  140 + style="margin-top: -50px" text-align="center" width="50%"
  141 + @close="routingKey_editDialogClosed">
  142 + <el-form :inline="true" label-width="120px" status-icon style="margin-top: -10px" align="center"
  143 + :model="routingKey_editForm" :rules="routingKey_editFormRules" ref="routingKey_editFormRef">
  144 + <el-form-item label="路由键名称:" prop="routingKeyName">
  145 + <el-input v-model="routingKey_editForm.routingKeyName" placeholder="请输入路由键名称"
  146 + style="width:240px" size="small" clearable>
  147 + </el-input>
  148 + </el-form-item>
  149 + <el-form-item label="所属交换机:" prop="exchangeId">
  150 + <el-cascader
  151 + style="width:240px" size="small" clearable
  152 + v-model="routingKey_editForm.exchangeId"
  153 + :options="routingKey_config.cascade.server_host_exchangeList"
  154 + :show-all-levels="false"
  155 + :change-on-select="false"
  156 + @change="cascadeEditChange"
  157 + :props="routingKey_config.cascade.defaultParams"
  158 + placeholder="请选择所属交换机"></el-cascader>
  159 + </el-form-item>
  160 + <el-form-item label="相关描述:" prop="description">
  161 + <el-input v-model="routingKey_editForm.description" style="width:240px" clearable
  162 + size="small"
  163 + placeholder="相关描述">
  164 + </el-input>
  165 + </el-form-item>
  166 + </el-form>
  167 +
  168 + <div slot="footer" class="dialog-footer" style="text-align: center">
  169 + <el-button type="info" @click="routingKey_dialog.editDialog = false" size="medium"
  170 + style="width: 100px">取消
  171 + </el-button>
  172 + <el-button type="primary" @click="routingKey_edit" :loading="routingKey_loading.addLoading"
  173 + size="medium"
  174 + style="width: 100px">
  175 + 编辑
  176 + </el-button>
  177 + </div>
  178 + </el-dialog>
  179 + </div>
  180 +
  181 + </el-main>
  182 + </el-container>
  183 +</template>
  184 +
  185 +<script>
  186 + import {
  187 + selectRoutingKeyList,
  188 + insertRoutingKey,
  189 + updateRoutingKey,
  190 + deleteRoutingKey,
  191 + batchRemoveRoutingKey,
  192 + getServerAndHostAndExchangeList,
  193 + } from "../../api/message_bus";
  194 +
  195 + export default {
  196 + name: "RoutingKey",
  197 +
  198 + data() {
  199 + return {
  200 + /**
  201 + * routingKey,配置与参数
  202 + */
  203 + routingKey_config: {
  204 + // 级联显示
  205 + cascade: {
  206 + // 服务器及虚拟主机列表
  207 + server_host_exchangeList: [],
  208 + defaultParams: {
  209 + label: 'aliasName',
  210 + value: 'id',
  211 + children: 'aliasList'
  212 + }
  213 + },
  214 + },
  215 + /**
  216 + * routingKey,搜索参数
  217 + */
  218 + routingKey_queryInfo: {
  219 + // 路由键名称
  220 + routingKeyName: '',
  221 + // 所属交换机id
  222 + exchangeId: '',
  223 + // 当前页数
  224 + pageNum: 1,
  225 + // 每页条数
  226 + pageSize: 10
  227 + },
  228 + /**
  229 + * routingKey,分页
  230 + */
  231 + routingKey_page: {
  232 + // 路由键列表
  233 + routingKeyList: [],
  234 + // 总条数
  235 + total: 0,
  236 + // 批量删除,选中列表
  237 + selectList: [],
  238 + },
  239 + /**
  240 + * routingKey,新增表单
  241 + */
  242 + routingKey_addForm: {
  243 + // 路由键名称
  244 + routingKeyName: '',
  245 + // 所属交换机id
  246 + exchangeId: '',
  247 + // 相关描述
  248 + description: '',
  249 + },
  250 + /**
  251 + * routingKey,编辑表单
  252 + */
  253 + routingKey_editForm: {}
  254 + ,
  255 + /**
  256 + * routingKey,加载
  257 + */
  258 + routingKey_loading: {
  259 + // 列表加载
  260 + listLoading: false,
  261 + // 添加加载
  262 + addLoading: false,
  263 + // 编辑加载
  264 + editLoading: false,
  265 + // 删除加载
  266 + delLoading: false,
  267 + // 批量删除加载
  268 + batchDelLoading: false,
  269 + },
  270 + /**
  271 + * routingKey,对话框管理
  272 + */
  273 + routingKey_dialog: {
  274 + // 添加对话框
  275 + addDialog: false,
  276 + // 编辑对话框
  277 + editDialog: false,
  278 + },
  279 +
  280 + /**
  281 + * routingKey,添加表单,验证规则
  282 + */
  283 + routingKey_addFormRules: {
  284 + // 路由键名称
  285 + routingKeyName: [
  286 + {required: true, message: '请输入路由键名称', trigger: ['blur', 'change']},
  287 + ],
  288 + // 所属交换机id
  289 + exchangeId: [
  290 + {required: true, message: '请选择所属交换机', trigger: ['blur', 'change']},
  291 + ],
  292 + // 相关描述
  293 + description: [
  294 + {required: true, message: '请输入相关描述', trigger: ['blur', 'change']},
  295 + ],
  296 + },
  297 +
  298 + /**
  299 + * routingKey,编辑表单,验证规则
  300 + */
  301 + routingKey_editFormRules: {
  302 + // 路由键名称
  303 + routingKeyName: [
  304 + {required: true, message: '请输入路由键名称', trigger: ['blur', 'change']},
  305 + ],
  306 + // 所属交换机id
  307 + exchangeId: [
  308 + {required: true, message: '请选择所属交换机', trigger: ['blur', 'change']},
  309 + ],
  310 + // 相关描述
  311 + description: [
  312 + {required: true, message: '请输入相关描述', trigger: ['blur', 'change']},
  313 + ],
  314 + },
  315 +
  316 + /**
  317 + * Boolean属性,选择列表
  318 + */
  319 + booleanList: [
  320 + {
  321 + value: true,
  322 + label: '是'
  323 + },
  324 + {
  325 + value: false,
  326 + label: '否'
  327 + },
  328 + ],
  329 + }
  330 + },
  331 + methods: {
  332 + /**
  333 + * 分页查询,监听 pageSize 改变的事件
  334 + */
  335 + routingKey_handleSizeChange(newSize) {
  336 + this.routingKey_queryInfo.pageSize = newSize;
  337 + //刷新列表
  338 + this.routingKey_getList();
  339 + },
  340 + /**
  341 + * 分页查询,监听 pageNum 改变的事件
  342 + */
  343 + routingKey_handleCurrentChange(newPage) {
  344 + this.routingKey_queryInfo.pageNum = newPage;
  345 + //刷新列表
  346 + this.routingKey_getList();
  347 + },
  348 + /**
  349 + * routingKey,分页查询
  350 + */
  351 + routingKey_getList() {
  352 + // 开启加载
  353 + this.routingKey_loading.listLoading = true;
  354 + selectRoutingKeyList(this.routingKey_queryInfo).then((response) => {
  355 + let res = response.data;
  356 + if (res.code !== '200') {
  357 + // 关闭加载
  358 + this.routingKey_loading.listLoading = false;
  359 + return this.$message.error('获取路由键列表,失败!');
  360 + }
  361 + // 获取列表数据
  362 + this.routingKey_page.routingKeyList = res.data.list;
  363 + // 获取列表的总记录数
  364 + this.routingKey_page.total = res.data.total;
  365 + // 关闭加载
  366 + this.routingKey_loading.listLoading = false;
  367 + this.$message.success('获取路由键列表,成功!');
  368 + }).catch(error => {
  369 + // 关闭加载
  370 + this.routingKey_loading.listLoading = false;
  371 + this.$message.error(error.toString());
  372 + });
  373 + },
  374 +
  375 + /**
  376 + * routingKey,添加对话框,打开事件
  377 + */
  378 + routingKey_toAddDialog() {
  379 + this.routingKey_dialog.addDialog = true;
  380 + },
  381 + /**
  382 + * routingKey,添加对话框,关闭事件
  383 + */
  384 + routingKey_addDialogClosed() {
  385 + // 重置对话框
  386 + this.$refs.routingKey_addFormRef.resetFields();
  387 + },
  388 + /**
  389 + * routingKey,添加功能
  390 + */
  391 + routingKey_add() {
  392 + // 进行表单的预验证
  393 + this.$refs.routingKey_addFormRef.validate(valid => {
  394 + // 未通过,表单预校验
  395 + if (!valid) return;
  396 + // 通过,表单预检验
  397 + this.routingKey_loading.addLoading = true;
  398 + insertRoutingKey(this.routingKey_addForm).then((response) => {
  399 + let res = response.data;
  400 + // 添加失败
  401 + if (res.code !== '200') {
  402 + if (res.code === '400') {
  403 + // 关闭加载
  404 + this.routingKey_loading.addLoading = false;
  405 + return this.$message.error('该路由键,已存在');
  406 + }
  407 + if (res.code === '999') {
  408 + // 关闭加载
  409 + this.routingKey_loading.addLoading = false;
  410 + return this.$message.error('未知异常,添加路由键,失败');
  411 + }
  412 + // 关闭加载
  413 + this.routingKey_loading.addLoading = false;
  414 + return this.$message.error('添加路由键,失败');
  415 + }
  416 + // 添加,成功
  417 + this.$message.success('添加路由键,成功');
  418 + // 关闭加载
  419 + this.routingKey_loading.addLoading = false;
  420 + // 隐藏对话框
  421 + this.routingKey_dialog.addDialog = false;
  422 + // 刷新列表
  423 + this.routingKey_getList();
  424 + }).catch(error => {
  425 + // 关闭加载
  426 + this.routingKey_loading.addLoading = false;
  427 + this.$message.error(error.toString());
  428 + });
  429 + })
  430 + },
  431 +
  432 + /**
  433 + * routingKey,编辑对话框,打开事件
  434 + */
  435 + routingKey_toEditDialog(index, row) {
  436 + this.routingKey_editForm = Object.assign({}, row);
  437 + this.routingKey_dialog.editDialog = true;
  438 + },
  439 + /**
  440 + * routingKey,编辑对话框,关闭事件
  441 + */
  442 + routingKey_editDialogClosed() {
  443 + //重置对话框
  444 + this.$refs.routingKey_editFormRef.resetFields();
  445 + },
  446 + /**
  447 + * routingKey,编辑功能
  448 + */
  449 + routingKey_edit() {
  450 + //进行表单的预验证
  451 + this.$refs.routingKey_editFormRef.validate(valid => {
  452 + // 未通过,表单预校验
  453 + if (!valid) return;
  454 + // 通过,表单预检验
  455 + this.routingKey_loading.editLoading = true;
  456 + updateRoutingKey(this.routingKey_editForm).then((response) => {
  457 + let res = response.data;
  458 + if (res.code !== '200') {
  459 + if (res.code === '400') {
  460 + // 关闭加载
  461 + this.routingKey_loading.editLoading = false;
  462 + return this.$message.error('该路由键,已存在');
  463 + }
  464 + if (res.code === '999') {
  465 + // 关闭加载
  466 + this.routingKey_loading.editLoading = false;
  467 + return this.$message.error('未知异常,编辑路由键信息,失败');
  468 + }
  469 + //关闭加载
  470 + this.routingKey_loading.editLoading = false;
  471 + return this.$message.error('编辑路由键信息,失败');
  472 + }
  473 + // 关闭加载
  474 + this.routingKey_loading.editLoading = false;
  475 + this.$message.success('编辑路由键信息,成功!');
  476 + // 隐藏对话框
  477 + this.routingKey_dialog.editDialog = false;
  478 + // 刷新列表
  479 + this.routingKey_getList();
  480 + }).catch(error => {
  481 + // 关闭加载
  482 + this.routingKey_loading.editLoading = false;
  483 + this.$message.error(error.toString());
  484 + });
  485 + })
  486 + },
  487 +
  488 + /**
  489 + * routingKey,删除功能
  490 + */
  491 + routingKey_remove(index, row) {
  492 + // 弹框询问是否删除?
  493 + this.$confirm('此操作永久删除该路由键信息, 是否继续?', '警告', {
  494 + confirmButtonText: '确定删除',
  495 + cancelButtonText: '取消',
  496 + type: 'warning'
  497 + }
  498 + ).then(() => {
  499 + // 开启加载
  500 + this.routingKey_loading.delLoading = true;
  501 + deleteRoutingKey(row).then((response) => {
  502 + let res = response.data;
  503 + if (res.code !== '200') {
  504 + // 关闭加载
  505 + this.routingKey_loading.delLoading = false;
  506 + return this.$message.error('删除路由键信息,失败');
  507 + }
  508 + // 关闭加载
  509 + this.routingKey_loading.delLoading = false;
  510 + this.$message.success('删除路由键信息,成功!');
  511 + // 刷新列表
  512 + this.routingKey_getList();
  513 + }).catch(error => {
  514 + // 关闭加载
  515 + this.routingKey_loading.delLoading = false;
  516 + this.$message.error(error.toString());
  517 + });
  518 + }).catch(() => {
  519 + });
  520 + },
  521 +
  522 + /**
  523 + * 批量删除---选中
  524 + */
  525 + routingKey_selectChange: function (selectList) {
  526 + this.routingKey_page.selectList = selectList;
  527 + },
  528 + /**
  529 + * routingKey,批量删除功能
  530 + */
  531 + routingKey_batchRemove() {
  532 + const ids = this.routingKey_page.selectList.map(item => item.id).toString();
  533 + this.$confirm('此操作将永久删除选中的路由键信息, 是否继续?', '警告', {
  534 + confirmButtonText: '确定删除',
  535 + cancelButtonText: '取消',
  536 + type: 'warning'
  537 + }
  538 + ).then(() => {
  539 + // 开启加载
  540 + this.routingKey_loading.batchDelLoading = true;
  541 + let params = {ids: ids};
  542 + batchRemoveRoutingKey(params).then(response => {
  543 + let res = response.data;
  544 + if (res.code !== '200') {
  545 + // 关闭加载
  546 + this.routingKey_loading.batchDelLoading = false;
  547 + return this.$message.error('批量删除路由键信息,失败');
  548 + }
  549 + this.$message.success('批量删除路由键信息,成功!');
  550 + // 关闭加载
  551 + this.routingKey_loading.batchDelLoading = false;
  552 + // 刷新列表
  553 + this.routingKey_getList();
  554 + }).catch(error => {
  555 + // 关闭加载
  556 + this.routingKey_loading.batchDelLoading = false;
  557 + this.$message.error(error.toString());
  558 + });
  559 + }).catch(() => {
  560 + });
  561 + },
  562 + /**
  563 + * 服务器与虚拟主机 1:n
  564 + * 虚拟主机与交换机 1: n
  565 + * 获取列表
  566 + */
  567 + selectServerAndHostAndExchangeList() {
  568 + getServerAndHostAndExchangeList().then((response) => {
  569 + let res = response.data;
  570 + if (res.code !== '200') {
  571 + return this.$message.error('获取服务器与虚拟主机与交换机信息,失败!');
  572 + }
  573 + // 获取列表数据
  574 + this.routingKey_config.cascade.server_host_exchangeList = res.data;
  575 + // this.$message.success('获取虚拟主机列表,成功!');
  576 + }).catch(error => {
  577 + this.$message.error(error.toString());
  578 + });
  579 + },
  580 +
  581 + /**
  582 + * 查询,级联。值改变激发的方法
  583 + * @param value 改变后的值
  584 + */
  585 + cascadeQueryChange(value) {
  586 + let ids = value.join().split(",");
  587 + this.routingKey_queryInfo.exchangeId = ids[ids.length - 1];
  588 + },
  589 + /**
  590 + * 添加,级联。值改变激发的方法
  591 + * @param value 改变后的值
  592 + */
  593 + cascadeAddChange(value) {
  594 + let ids = value.join().split(",");
  595 + this.routingKey_addForm.exchangeId = ids[ids.length - 1];
  596 + },
  597 + cascadeEditChange(value) {
  598 + let ids = value.join().split(",");
  599 + this.routingKey_editForm.exchangeId = ids[ids.length - 1];
  600 + },
  601 + },
  602 + created() {
  603 + if (this.$route.params.exchange_scopeRow !== undefined) {
  604 + // 参数,交换机id
  605 + this.routingKey_queryInfo.exchangeId = this.$route.params.exchange_scopeRow.id;
  606 + // 刷新列表
  607 + this.routingKey_getList();
  608 + } else {
  609 + // 刷新列表
  610 + this.routingKey_getList();
  611 + }
  612 + },
  613 + mounted() {
  614 + // 获取,服务器、虚拟主机、交换机的级联列表
  615 + this.selectServerAndHostAndExchangeList();
  616 + },
  617 + computed: {},
  618 + }
  619 +</script>
  620 +
  621 +<style scoped>
  622 +
  623 +</style>
  1 +<template>
  2 + <el-container>
  3 + <el-main>
  4 + <el-card style="background-color: #F5F7FA">
  5 + <!-- 搜素区域 -->
  6 + <div>
  7 + <el-row :gutter="24">
  8 + <el-col :span="4">
  9 + <el-input v-model="queryInfo.serverName" prefix-icon="el-icon-search" size="medium"
  10 + placeholder="服务器名称" clearable style="width:180px"></el-input>
  11 + </el-col>
  12 + <el-col :span="15">
  13 + <el-button type="success" style="width:150px" size="medium" @click="getServerList">
  14 + 查询服务器信息
  15 + </el-button>
  16 + <el-button type="primary" style="width:150px" size="medium" @click="toAddDialog">
  17 + 添加服务器信息
  18 + </el-button>
  19 + </el-col>
  20 + </el-row>
  21 + </div>
  22 + <!--服务器信息列表区域-->
  23 + <div style="margin-top: 20px;">
  24 + <el-table :data="serverList" border v-loading="server_loading.listLoading"
  25 + @selection-change="selectChange"
  26 + element-loading-text="获取服务器列表,拼命加载中">
  27 + <el-table-column type="selection" width="55" align="center"></el-table-column>
  28 + <el-table-column type="index" align="center"></el-table-column>
  29 + <el-table-column label="服务器名称" prop="serverName" align="center" width="150"></el-table-column>
  30 + <el-table-column label="服务器地址" prop="serverIp" align="center" width="150"></el-table-column>
  31 + <el-table-column label="服务器端口号" prop="serverPort" align="center" width="150"></el-table-column>
  32 + <el-table-column label="相关描述" prop="description" align="center" width="200"></el-table-column>
  33 + <el-table-column label="操作" width="300px" align="center" fixed="right">
  34 + <template slot-scope="scope">
  35 + <!-- 虚拟主机 -->
  36 + <el-tooltip effect="dark" content="虚拟主机" placement="top-start" :enterable="false">
  37 + <el-button type="warning" icon="el-icon-link" size="mini"
  38 + @click="toVirtualHost(scope.$index,scope.row)">虚拟主机
  39 + </el-button>
  40 + </el-tooltip>
  41 +
  42 + <!-- 编辑按钮 -->
  43 + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false">
  44 + <el-button type="primary" icon="el-icon-edit" size="mini"
  45 + @click="toEditDialog(scope.$index,scope.row)">编辑
  46 + </el-button>
  47 + </el-tooltip>
  48 + <!-- 删除按钮 -->
  49 + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false">
  50 + <el-button type="danger" icon="el-icon-delete" size="mini"
  51 + :loading="server_loading.delLoading"
  52 + @click="removeServerInfo(scope.$index,scope.row)">删除
  53 + </el-button>
  54 + </el-tooltip>
  55 + </template>
  56 + </el-table-column>
  57 + </el-table>
  58 + <!--分页区域-->
  59 + <div style="margin-top: 10px">
  60 + <el-row :gutter="24">
  61 + <el-col :span="5">
  62 + <el-button type="danger" icon="el-icon-delete"
  63 + :disabled="this.selectList.length===0"
  64 + @click="batchRemoveServer">批量删除
  65 + </el-button>
  66 + </el-col>
  67 + <el-col :span="10" style="margin-top: 5px">
  68 + <el-pagination
  69 + @size-change="handleSizeChange"
  70 + @current-change="handleCurrentChange"
  71 + :current-page="queryInfo.pageNum"
  72 + :page-sizes="[10,20,30,50]"
  73 + :page-size="queryInfo.pageSize"
  74 + layout="total, sizes, prev, pager, next, jumper"
  75 + :total="total">
  76 + </el-pagination>
  77 + </el-col>
  78 + </el-row>
  79 + </div>
  80 + </div>
  81 + </el-card>
  82 + <!-- 对话框 —> 添加服务器信息 -->
  83 + <div>
  84 + <el-dialog title="添加服务器信息"
  85 + :visible.sync="serverDialog.addDialog"
  86 + style="margin-top: -50px"
  87 + width="50%" text-align="center" @close="serverAddDialogClosed">
  88 + <el-form :inline="true" :model="addServerForm" label-width="120px" status-icon
  89 + :rules="addServerFormRules" ref="addServerFormRef"
  90 + align="center">
  91 + <el-form-item label="服务器名称:" prop="serverName">
  92 + <el-input v-model="addServerForm.serverName" style="width:270px" clearable
  93 + placeholder="请输入服务器名称"></el-input>
  94 + </el-form-item>
  95 + <el-form-item label="IP地址:" prop="serverIp">
  96 + <el-input v-model="addServerForm.serverIp" style="width:270px" clearable
  97 + placeholder="请输入服务器IP地址"></el-input>
  98 + </el-form-item>
  99 + <el-form-item label="端口号:" prop="serverPort">
  100 + <el-input v-model="addServerForm.serverPort" style="width:270px" clearable
  101 + placeholder="请输入服务器端口号"></el-input>
  102 + </el-form-item>
  103 + <el-form-item label="相关描述:" prop="description">
  104 + <el-input v-model="addServerForm.description" style="width:270px" clearable
  105 + placeholder="请输入相关描述"></el-input>
  106 + </el-form-item>
  107 + </el-form>
  108 +
  109 + <div slot="footer" class="dialog-footer" style="text-align: center">
  110 + <el-button type="info" @click="serverDialog.addDialog = false" size="medium"
  111 + style="width: 100px">取消
  112 + </el-button>
  113 + <el-button type="primary" @click="addServerInfo" :loading="server_loading.addLoading"
  114 + size="medium"
  115 + style="width: 100px">
  116 + 添加
  117 + </el-button>
  118 + </div>
  119 + </el-dialog>
  120 + </div>
  121 + <!-- 对话框 —> 编辑服务器信息 -->
  122 + <div>
  123 + <el-dialog title="编辑服务器信息"
  124 + :visible.sync="serverDialog.editDialog"
  125 + style="margin-top: -50px"
  126 + width="50%" text-align="center" @close="serverEditDialogClosed">
  127 + <el-form :inline="true" :model="editServerForm" label-width="120px" status-icon
  128 + :rules="editServerFormRules" ref="editServerFormRef"
  129 + align="center">
  130 + <el-form-item label="服务器名称:" prop="serverName">
  131 + <el-input v-model="editServerForm.serverName" style="width:270px" clearable
  132 + placeholder="请输入服务器名称"></el-input>
  133 + </el-form-item>
  134 + <el-form-item label="IP地址:" prop="serverIp">
  135 + <el-input v-model="editServerForm.serverIp" style="width:270px" clearable
  136 + placeholder="请输入服务器IP地址"></el-input>
  137 + </el-form-item>
  138 + <el-form-item label="端口号:" prop="serverPort">
  139 + <el-input v-model="editServerForm.serverPort" style="width:270px" clearable
  140 + placeholder="请输入服务器端口号"></el-input>
  141 + </el-form-item>
  142 + <el-form-item label="相关描述:" prop="description">
  143 + <el-input v-model="editServerForm.description" style="width:270px" clearable
  144 + placeholder="请输入相关描述"></el-input>
  145 + </el-form-item>
  146 + </el-form>
  147 +
  148 + <div slot="footer" class="dialog-footer" style="text-align: center">
  149 + <el-button type="info" @click="serverDialog.editDialog = false" size="medium" style="width: 100px">取消
  150 + </el-button>
  151 + <el-button type="primary" @click="editServerInfo" :loading="server_loading.addLoading"
  152 + size="medium"
  153 + style="width: 100px">
  154 + 编辑
  155 + </el-button>
  156 + </div>
  157 + </el-dialog>
  158 + </div>
  159 + </el-main>
  160 + </el-container>
  161 +</template>
  162 +
  163 +<script>
  164 + import {
  165 + selectBusServerList,
  166 + insertBusServer,
  167 + updateBusServer,
  168 + deleteBusServer,
  169 + batchRemoveBusServer
  170 + } from "../../api/message_bus";
  171 +
  172 + export default {
  173 + name: "Server",
  174 +
  175 + data() {
  176 + // 验证IP地址的自定义规则
  177 + const serverIpValid = (rule, value, callback) => {
  178 + // 验证IP地址的正则表达式
  179 + const regMobile = /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/;
  180 + if (regMobile.test(value)) {
  181 + // 合法的IP地址
  182 + return callback();
  183 + }
  184 + callback(new Error('请输入合法的IP地址'));
  185 + };
  186 + return {
  187 + /**
  188 + * 搜索参数
  189 + */
  190 + queryInfo: {
  191 + // 服务器名称
  192 + serverName: '',
  193 + // 当前页数
  194 + pageNum: 1,
  195 + // 每页条数
  196 + pageSize: 10
  197 + },
  198 +
  199 + /**
  200 + * 添加服务器信息的表单
  201 + */
  202 + addServerForm: {
  203 + // 服务器名称
  204 + serverName: '',
  205 + // 服务器IP
  206 + serverIp: '',
  207 + // 服务器端口号
  208 + serverPort: '',
  209 + // 相关描述
  210 + description: '',
  211 + },
  212 +
  213 + /**
  214 + * 列表记录的总条数
  215 + */
  216 + total: 0,
  217 +
  218 + /**
  219 + * 服务器列表
  220 + */
  221 + serverList: [],
  222 +
  223 + /**
  224 + * 编辑服务器,表单
  225 + */
  226 + editServerForm: {},
  227 +
  228 + /**
  229 + * 批量删除的选中列表
  230 + */
  231 + selectList: [],
  232 +
  233 + /**
  234 + * Server,对话框管理
  235 + */
  236 + serverDialog: {
  237 + // 添加对话框
  238 + addDialog: false,
  239 + // 编辑对话框
  240 + editDialog: false,
  241 + },
  242 +
  243 + /**
  244 + * 加载
  245 + */
  246 + server_loading: {
  247 + // 列表加载
  248 + listLoading: false,
  249 + // 添加加载
  250 + addLoading: false,
  251 + // 编辑加载
  252 + editLoading: false,
  253 + // 删除加载
  254 + delLoading: false,
  255 + // 批量删除加载
  256 + batchDelLoading: false,
  257 + },
  258 +
  259 + /**
  260 + * 添加服务器,表单的验证规则对象
  261 + */
  262 + addServerFormRules: {
  263 + serverName: [
  264 + {required: true, message: '请输入服务器名称', trigger: ['blur', 'change']},
  265 + ],
  266 + serverIp: [
  267 + {required: true, message: '请输入服务器IP地址', trigger: ['blur', 'change']},
  268 + {validator: serverIpValid, trigger: 'blur'}
  269 + ],
  270 + serverPort: [
  271 + {required: true, message: '请输入服务器端口号', trigger: ['blur', 'change']},
  272 + ],
  273 + description: [
  274 + {required: true, message: '请输入服务器相关描述', trigger: ['blur', 'change']},
  275 + ],
  276 + },
  277 + /**
  278 + * 编辑服务器,表单的验证规则对象
  279 + */
  280 + editServerFormRules: {
  281 + serverName: [
  282 + {required: true, message: '请输入服务器名称', trigger: ['blur', 'change']},
  283 + ],
  284 + serverIp: [
  285 + {required: true, message: '请输入服务器IP地址', trigger: ['blur', 'change']},
  286 + {validator: serverIpValid, trigger: 'blur'}
  287 + ],
  288 + serverPort: [
  289 + {required: true, message: '请输入服务器端口号', trigger: ['blur', 'change']},
  290 + ],
  291 + description: [
  292 + {required: true, message: '请输入服务器相关描述', trigger: ['blur', 'change']},
  293 + ],
  294 + },
  295 + }
  296 + },
  297 + methods: {
  298 + /**
  299 + * 分页查询,监听 pageSize 改变的事件
  300 + */
  301 + handleSizeChange(newSize) {
  302 + this.queryInfo.pageSize = newSize;
  303 + // 刷新列表
  304 + this.getServerList();
  305 + },
  306 + /**
  307 + * 分页查询,监听 pageNum 改变的事件
  308 + */
  309 + handleCurrentChange(newPage) {
  310 + this.queryInfo.pageNum = newPage;
  311 + // 刷新列表
  312 + this.getServerList();
  313 + },
  314 + /**
  315 + * 查询,服务器列表
  316 + */
  317 + getServerList() {
  318 + // 开启加载
  319 + this.server_loading.listLoading = true;
  320 + selectBusServerList(this.queryInfo).then((response) => {
  321 + let res = response.data;
  322 + if (res.code !== '200') {
  323 + // 关闭加载
  324 + this.server_loading.listLoading = false;
  325 + return this.$message.error('获取服务器列表,失败!');
  326 + }
  327 + // 获取服务器列表数据
  328 + this.serverList = res.data.list;
  329 + // 获取列表的总记录数
  330 + this.total = res.data.total;
  331 + // 关闭加载
  332 + this.server_loading.listLoading = false;
  333 + this.$message.success('获取服务器列表,成功!');
  334 +
  335 + if (this.queryInfo.serverId !== undefined && this.queryInfo.serverId !== '') {
  336 + // 重置所属服务器id
  337 + this.queryInfo.serverId = undefined;
  338 + }
  339 + }).catch(error => {
  340 + // 关闭加载
  341 + this.server_loading.listLoading = false;
  342 + this.$message.error(error.toString());
  343 + });
  344 + },
  345 +
  346 + /**
  347 + * 打开 添加服务器信息 对话框
  348 + */
  349 + toAddDialog() {
  350 + this.serverDialog.addDialog = true;
  351 + },
  352 + /**
  353 + * 服务器信息,添加对话框,关闭事件
  354 + */
  355 + serverAddDialogClosed() {
  356 + //重置对话框
  357 + this.$refs.addServerFormRef.resetFields();
  358 + },
  359 + /**
  360 + * 服务器信息,添加功能
  361 + */
  362 + addServerInfo() {
  363 + // 进行表单的预验证
  364 + this.$refs.addServerFormRef.validate(valid => {
  365 + // 未通过,表单预校验
  366 + if (!valid) return;
  367 + // 通过,表单预检验
  368 + this.server_loading.addLoading = true;
  369 + insertBusServer(this.addServerForm).then((response) => {
  370 + let res = response.data;
  371 + // 添加失败
  372 + if (res.code !== '200') {
  373 + if (res.code === '402') {
  374 + // 关闭加载
  375 + this.server_loading.addLoading = false;
  376 + return this.$message.error('服务器名称,已存在');
  377 + }
  378 + if (res.code === '400') {
  379 + // 关闭加载
  380 + this.server_loading.addLoading = false;
  381 + return this.$message.error('该服务器信息,已存在');
  382 + }
  383 + if (res.code === '999') {
  384 + // 关闭加载
  385 + this.server_loading.addLoading = false;
  386 + return this.$message.error('未知异常,添加服务器信息,失败');
  387 + }
  388 + // 关闭加载
  389 + this.server_loading.addLoading = false;
  390 + return this.$message.error('添加服务器信息,失败');
  391 + }
  392 + // 添加,成功
  393 + this.$message.success('添加服务器信息,成功');
  394 + // 关闭加载
  395 + this.server_loading.addLoading = false;
  396 + // 隐藏对话框
  397 + this.serverDialog.addDialog = false;
  398 + // 刷新列表
  399 + this.getServerList();
  400 + }).catch(error => {
  401 + this.server_loading.addLoading = false;
  402 + this.$message.error(error.toString());
  403 + });
  404 + })
  405 + },
  406 +
  407 + /**
  408 + * 打开编辑服务器信息对话框
  409 + */
  410 + toEditDialog(index, row) {
  411 + this.editServerForm = Object.assign({}, row);
  412 + this.serverDialog.editDialog = true;
  413 + },
  414 +
  415 + /**
  416 + * 服务器信息,编辑对话框,关闭事件
  417 + */
  418 + serverEditDialogClosed() {
  419 + //重置对话框
  420 + this.$refs.editServerFormRef.resetFields();
  421 + },
  422 +
  423 + /**
  424 + * 编辑服务器信息,编辑功能
  425 + */
  426 + editServerInfo() {
  427 + //进行表单的预验证
  428 + this.$refs.editServerFormRef.validate(valid => {
  429 + // 未通过,表单预校验
  430 + if (!valid) return;
  431 + // 通过,表单预检验
  432 + this.server_loading.editLoading = true;
  433 + updateBusServer(this.editServerForm).then((response) => {
  434 + let res = response.data;
  435 + if (res.code !== '200') {
  436 +
  437 + if (res.code === '402') {
  438 + // 关闭加载
  439 + this.server_loading.editLoading = false;
  440 + return this.$message.error('服务器名称,已存在');
  441 + }
  442 + if (res.code === '400') {
  443 + // 关闭加载
  444 + this.server_loading.editLoading = false;
  445 + return this.$message.error('该服务器信息,已存在');
  446 + }
  447 + if (res.code === '999') {
  448 + // 关闭加载
  449 + this.server_loading.editLoading = false;
  450 + return this.$message.error('未知异常,编辑服务器信息,失败');
  451 + }
  452 + //关闭加载
  453 + this.server_loading.editLoading = false;
  454 + return this.$message.error('编辑服务器信息,失败');
  455 + }
  456 + // 关闭加载
  457 + this.server_loading.editLoading = false;
  458 + this.$message.success('编辑服务器信息,成功!');
  459 + // 隐藏对话框
  460 + this.serverDialog.editDialog = false;
  461 + // 刷新列表
  462 + this.getServerList();
  463 + }).catch(error => {
  464 + this.server_loading.editLoading = false;
  465 + this.$message.error(error.toString());
  466 + });
  467 + })
  468 + },
  469 +
  470 + /**
  471 + * 删除服务器信息
  472 + */
  473 + removeServerInfo(index, row) {
  474 + //弹框询问是否删除服务器信息
  475 + this.$confirm('此操作永久删除该服务器信息, 是否继续?', '警告', {
  476 + confirmButtonText: '确定删除',
  477 + cancelButtonText: '取消',
  478 + type: 'warning'
  479 + }
  480 + ).then(() => {
  481 + //开启加载
  482 + this.server_loading.delLoading = true;
  483 + deleteBusServer(row).then((response) => {
  484 + let res = response.data;
  485 + if (res.code !== '200') {
  486 + //关闭加载
  487 + this.server_loading.delLoading = false;
  488 + return this.$message.error('删除服务器信息,失败');
  489 + }
  490 + //关闭加载
  491 + this.server_loading.delLoading = false;
  492 + this.$message.success('删除服务器信息,成功!');
  493 + //刷新列表
  494 + this.getServerList();
  495 + }).catch(error => {
  496 + this.server_loading.delLoading = false;
  497 + this.$message.error(error.toString());
  498 + });
  499 + }).catch(() => {
  500 + });
  501 + },
  502 +
  503 + /**
  504 + * 批量删除,之前的选中
  505 + */
  506 + selectChange: function (selectList) {
  507 + this.selectList = selectList;
  508 + },
  509 + /**
  510 + * 批量删除-服务器信息
  511 + */
  512 + batchRemoveServer() {
  513 + const ids = this.selectList.map(item => item.id).toString();
  514 + // console.log(ids);
  515 + this.$confirm('此操作将永久删除选中的服务器信息, 是否继续?', '警告', {
  516 + confirmButtonText: '确定删除',
  517 + cancelButtonText: '取消',
  518 + type: 'warning'
  519 + }
  520 + ).then(() => {
  521 + // 开启加载
  522 + this.server_loading.batchDelLoading = true;
  523 + let params = {ids: ids};
  524 + batchRemoveBusServer(params).then(response => {
  525 + let res = response.data;
  526 + if (res.code !== '200') {
  527 + this.server_loading.batchDelLoading = false;
  528 + return this.$message.error('批量删除服务器信息,失败');
  529 + }
  530 + this.$message.success('批量删除服务器信息,成功!');
  531 + this.server_loading.batchDelLoading = false;
  532 + // 刷新列表
  533 + this.getServerList();
  534 + }).catch(error => {
  535 + this.server_loading.batchDelLoading = false;
  536 + this.$message.error(error.toString());
  537 + });
  538 + }).catch(() => {
  539 + });
  540 + },
  541 + /**
  542 + * 携带参数,跳转至虚拟主机界面
  543 + */
  544 + toVirtualHost(index, row) {
  545 + this.$confirm('查看该服务器下的虚拟主机, 是否继续?', '提示', {
  546 + confirmButtonText: '查看',
  547 + cancelButtonText: '取消',
  548 + type: 'warning'
  549 + }
  550 + ).then(() => {
  551 + this.$router.push({name: "虚拟主机管理", params: {server_scopeRow: row}})
  552 + }).catch(() => {
  553 + });
  554 + }
  555 + },
  556 + created() {
  557 + this.getServerList();
  558 + },
  559 + mounted() {
  560 +
  561 + },
  562 + computed: {}
  563 + }
  564 +</script>
  565 +
  566 +<style scoped>
  567 +
  568 +</style>
  1 +<template>
  2 + <div>用户消息绑定配置</div>
  3 +</template>
  4 +
  5 +<script>
  6 + export default {
  7 + name: "UserMessageBinding",
  8 +
  9 + data() {
  10 + return {
  11 +
  12 + }
  13 + },
  14 + methods: {
  15 +
  16 + },
  17 + created() {
  18 +
  19 + },
  20 + mounted() {
  21 +
  22 + },
  23 + computed: {
  24 +
  25 + },
  26 + }
  27 +</script>
  28 +
  29 +<style scoped>
  30 +
  31 +</style>
  1 +<template>
  2 + <el-container>
  3 + <el-main>
  4 + <el-card style="background-color: #F5F7FA">
  5 + <!-- 搜素区域 -->
  6 + <div>
  7 + <el-row :gutter="24">
  8 + <el-col :span="4">
  9 + <el-input v-model="queryInfo.virtualHostName" prefix-icon="el-icon-search" size="medium"
  10 + placeholder="虚拟主机名称" clearable style="width:180px"></el-input>
  11 + </el-col>
  12 + <el-col :span="4">
  13 + <el-select v-model="queryInfo.serverId" prefix-icon="el-icon-search" clearable size="medium"
  14 + style="width:180px"
  15 + placeholder="请选择服务器名称">
  16 + <el-option
  17 + v-for="item in (virtualHost_config.serverList)"
  18 + :key="item.id"
  19 + :label="item.serverName"
  20 + :value="item.id">
  21 + </el-option>
  22 + </el-select>
  23 + </el-col>
  24 +
  25 + <el-col :span="10">
  26 + <el-button type="success" style="width:150px" size="medium" @click="getVirtualHostList">
  27 + 查询虚拟主机
  28 + </el-button>
  29 + <el-button type="primary" style="width:150px" size="medium" @click="toAddDialog">
  30 + 添加虚拟主机
  31 + </el-button>
  32 + </el-col>
  33 + </el-row>
  34 + </div>
  35 + <div style="margin-top: 20px;">
  36 + <el-table :data="virtualHostList" border v-loading="virtualHost_loading.listLoading"
  37 + @selection-change="selectChange"
  38 + element-loading-text="获取虚拟主机列表,拼命加载中">
  39 + <el-table-column type="selection" width="55" align="center"></el-table-column>
  40 + <el-table-column type="index" align="center"></el-table-column>
  41 + <el-table-column label="虚拟主机名称" prop="virtualHostName" align="center"
  42 + width="220"></el-table-column>
  43 + <el-table-column label="所属服务器" prop="busServer.serverName" align="center" width="220">
  44 + </el-table-column>
  45 + <el-table-column label="相关描述" prop="description" align="center" width="260"></el-table-column>
  46 + <el-table-column label="操作" width="250px" align="center" fixed="right">
  47 + <template slot-scope="scope">
  48 + <!-- 交换机-->
  49 + <el-tooltip effect="dark" content="交换机" placement="top-start" :enterable="false">
  50 + <el-button type="warning" icon="el-icon-link" size="small"
  51 + style="width:97px;margin-left: 1px;"
  52 + @click="toExchange(scope.$index,scope.row)">交换机
  53 + </el-button>
  54 + </el-tooltip>
  55 +
  56 + <!-- 编辑按钮-->
  57 + <el-tooltip effect="dark" content="编辑" placement="top-start" :enterable="false">
  58 + <el-button type="primary" icon="el-icon-edit" size="small"
  59 + style="width:97px;margin-left: 1px;"
  60 + @click="toEditDialog(scope.$index,scope.row)">编辑
  61 + </el-button>
  62 + </el-tooltip>
  63 + <!-- 队列-->
  64 + <el-tooltip effect="dark" content="队列" placement="top-start" :enterable="false">
  65 + <el-button type="warning" icon="el-icon-link" size="small"
  66 + style="width:97px;margin-left: 1px;margin-top: 3px;"
  67 + @click="toQueue(scope.$index,scope.row)">队列
  68 + </el-button>
  69 + </el-tooltip>
  70 + <!-- 删除按钮-->
  71 + <el-tooltip effect="dark" content="删除" placement="top-start" :enterable="false">
  72 + <el-button type="danger" icon="el-icon-delete" size="small"
  73 + style="width:97px;margin-left: 1px;"
  74 + :loading="virtualHost_loading.delLoading"
  75 + @click="removeVirtualHostInfo(scope.$index,scope.row)">删除
  76 + </el-button>
  77 + </el-tooltip>
  78 + </template>
  79 + </el-table-column>
  80 + </el-table>
  81 + <!--分页区域-->
  82 + <div style="margin-top: 10px">
  83 + <el-row :gutter="24">
  84 + <el-col :span="5">
  85 + <el-button type="danger" icon="el-icon-delete"
  86 + :disabled="this.selectList.length===0"
  87 + @click="batchDeleteVirtualHost">批量删除
  88 + </el-button>
  89 + </el-col>
  90 + <el-col :span="10" style="margin-top: 5px">
  91 + <el-pagination
  92 + @size-change="handleSizeChange"
  93 + @current-change="handleCurrentChange"
  94 + :current-page="queryInfo.pageNum"
  95 + :page-sizes="[10,20,30,50]"
  96 + :page-size="queryInfo.pageSize"
  97 + layout="total, sizes, prev, pager, next, jumper"
  98 + :total="total">
  99 + </el-pagination>
  100 + </el-col>
  101 + </el-row>
  102 + </div>
  103 + </div>
  104 + </el-card>
  105 +
  106 + <!-- 对话框 —> 添加虚拟主机信息 -->
  107 + <div>
  108 + <el-dialog title="添加虚拟主机信息"
  109 + :visible.sync="virtualHostDialog.addDialog"
  110 + style="margin-top: -50px"
  111 + width="50%" text-align="center" @close="virtualHostAddDialogClosed">
  112 + <el-form :inline="true" :model="addVirtualHostForm" label-width="120px" status-icon
  113 + :rules="addVirtualHostFormRules" ref="addVirtualHostRef"
  114 + align="center">
  115 + <el-form-item label="虚拟主机名称:" prop="virtualHostName">
  116 + <el-input v-model="addVirtualHostForm.virtualHostName" style="width:270px" clearable
  117 + placeholder="请输入虚拟主机名称"></el-input>
  118 + </el-form-item>
  119 + <el-form-item label="所属服务器:" prop="serverId">
  120 + <el-select v-model="addVirtualHostForm.serverId" clearable style="width:270px"
  121 + placeholder="请选择服务器名称">
  122 + <el-option
  123 + v-for="item in (virtualHost_config.serverList)"
  124 + :key="item.id"
  125 + :label="item.serverName"
  126 + :value="item.id">
  127 + </el-option>
  128 + </el-select>
  129 + </el-form-item>
  130 +
  131 + <el-form-item label="相关描述:" prop="description">
  132 + <el-input v-model="addVirtualHostForm.description" style="width:270px" clearable
  133 + placeholder="请输入相关描述"></el-input>
  134 + </el-form-item>
  135 + </el-form>
  136 +
  137 + <div slot="footer" class="dialog-footer" style="text-align: center">
  138 + <el-button type="info" @click="virtualHostDialog.addDialog = false" size="medium"
  139 + style="width: 100px">取消
  140 + </el-button>
  141 + <el-button type="primary" @click="addVirtualHostInfo" :loading="virtualHost_loading.addLoading"
  142 + size="medium"
  143 + style="width: 100px">
  144 + 添加
  145 + </el-button>
  146 + </div>
  147 + </el-dialog>
  148 + </div>
  149 + <!-- 对话框 —> 编辑虚拟主机信息 -->
  150 + <div>
  151 + <el-dialog title="编辑虚拟主机"
  152 + :visible.sync="virtualHostDialog.editDialog"
  153 + style="margin-top: -50px"
  154 + width="50%" text-align="center" @close="virtualHostEditDialogClosed">
  155 + <el-form :inline="true" :model="editVirtualHostForm" label-width="120px" status-icon
  156 + :rules="editVirtualHostFormRules" ref="editVirtualHostRef"
  157 + align="center">
  158 + <el-form-item label="虚拟主机名称:" prop="virtualHostName">
  159 + <el-input v-model="editVirtualHostForm.virtualHostName" style="width:270px" clearable
  160 + placeholder="请输入虚拟主机名称"></el-input>
  161 + </el-form-item>
  162 + <el-form-item label="所属服务器:" prop="serverId">
  163 + <el-select v-model="editVirtualHostForm.serverId" clearable style="width:270px"
  164 + placeholder="请选择服务器名称">
  165 + <el-option
  166 + v-for="item in (virtualHost_config.serverList)"
  167 + :key="item.id"
  168 + :label="item.serverName"
  169 + :value="item.id">
  170 + </el-option>
  171 + </el-select>
  172 + </el-form-item>
  173 +
  174 + <el-form-item label="相关描述:" prop="description">
  175 + <el-input v-model="editVirtualHostForm.description" style="width:270px" clearable
  176 + placeholder="请输入相关描述"></el-input>
  177 + </el-form-item>
  178 + </el-form>
  179 +
  180 + <div slot="footer" class="dialog-footer" style="text-align: center">
  181 + <el-button type="info" @click="virtualHostDialog.editDialog = false" size="medium"
  182 + style="width: 100px">取消
  183 + </el-button>
  184 + <el-button type="primary" @click="editVirtualHostInfo" :loading="virtualHost_loading.addLoading"
  185 + size="medium"
  186 + style="width: 100px">
  187 + 编辑
  188 + </el-button>
  189 + </div>
  190 + </el-dialog>
  191 + </div>
  192 + </el-main>
  193 + </el-container>
  194 +</template>
  195 +
  196 +<script>
  197 + import {
  198 + selectVirtualHostList,
  199 + insertVirtualHost,
  200 + updateVirtualHost,
  201 + deleteVirtualHost,
  202 + batchRemoveVirtualHost,
  203 + getServerList,
  204 + } from "../../api/message_bus";
  205 +
  206 + export default {
  207 + name: "VirtualHost",
  208 +
  209 + data() {
  210 + return {
  211 + /**
  212 + * 搜索参数
  213 + */
  214 + queryInfo: {
  215 + // 所属服务器ID
  216 + serverId: '',
  217 + // 虚拟主机名称
  218 + virtualHostName: '',
  219 + // 当前页数
  220 + pageNum: 1,
  221 + // 每页条数
  222 + pageSize: 10
  223 + },
  224 + /**
  225 + * 虚拟机,配置参数
  226 + */
  227 + virtualHost_config: {
  228 + // 所属服务器的名称
  229 + serverName: '',
  230 + serverList: [],
  231 + },
  232 +
  233 + /**
  234 + * 添加虚拟主机的表单
  235 + */
  236 + addVirtualHostForm: {
  237 + // 虚拟主机名称
  238 + virtualHostName: '',
  239 + // 所属服务器ID
  240 + serverId: '',
  241 + // 相关描述
  242 + description: '',
  243 + },
  244 + /**
  245 + * 列表记录的总条数
  246 + */
  247 + total: 0,
  248 + /**
  249 + * 批量删除的选中列表
  250 + */
  251 + selectList: [],
  252 + /**
  253 + * 虚拟主机列表
  254 + */
  255 + virtualHostList: [],
  256 +
  257 + /**
  258 + * 编辑虚拟主机,表单
  259 + */
  260 + editVirtualHostForm: {},
  261 + /**
  262 + * virtualHost,对话框管理
  263 + */
  264 + virtualHostDialog: {
  265 + // 添加对话框
  266 + addDialog: false,
  267 + // 编辑对话框
  268 + editDialog: false,
  269 + },
  270 + /**
  271 + * virtualHost,加载
  272 + */
  273 + virtualHost_loading: {
  274 + // 列表加载
  275 + listLoading: false,
  276 + // 添加加载
  277 + addLoading: false,
  278 + // 编辑加载
  279 + editLoading: false,
  280 + // 删除加载
  281 + delLoading: false,
  282 + // 批量删除加载
  283 + batchDelLoading: false,
  284 + },
  285 + /**
  286 + * 添加虚拟主机,表单的验证规则对象
  287 + */
  288 + addVirtualHostFormRules: {
  289 + virtualHostName: [
  290 + {required: true, message: '请输入虚拟主机名称', trigger: ['blur', 'change']},
  291 + ],
  292 + serverId: [
  293 + {required: true, message: '请选择所属服务器', trigger: ['blur']},
  294 + ],
  295 + description: [
  296 + {required: true, message: '请输入虚拟主机相关描述', trigger: ['blur', 'change']},
  297 + ],
  298 + },
  299 + /**
  300 + * 编辑虚拟主机,表单的验证规则对象
  301 + */
  302 + editVirtualHostFormRules: {
  303 + virtualHostName: [
  304 + {required: true, message: '请输入虚拟主机名称', trigger: ['blur', 'change']},
  305 + ],
  306 + serverId: [
  307 + {required: true, message: '请选择所属服务器', trigger: ['blur', 'change']},
  308 + ],
  309 + description: [
  310 + {required: true, message: '请输入虚拟主机相关描述', trigger: ['blur', 'change']},
  311 + ],
  312 + },
  313 + }
  314 + },
  315 + methods: {
  316 + /**
  317 + * 分页查询,监听 pageSize 改变的事件
  318 + */
  319 + handleSizeChange(newSize) {
  320 + this.queryInfo.pageSize = newSize;
  321 + //刷新列表
  322 + this.getVirtualHostList();
  323 + },
  324 + /**
  325 + * 分页查询,监听 pageNum 改变的事件
  326 + */
  327 + handleCurrentChange(newPage) {
  328 + this.queryInfo.pageNum = newPage;
  329 + //刷新列表
  330 + this.getVirtualHostList();
  331 + },
  332 + /**
  333 + * 分页查询,虚拟主机
  334 + */
  335 + getVirtualHostList() {
  336 + if (this.virtualHost_config.serverName !== undefined) {
  337 + this.virtualHost_config.serverName = undefined;
  338 + }
  339 + // 开启加载
  340 + this.virtualHost_loading.listLoading = true;
  341 + selectVirtualHostList(this.queryInfo).then((response) => {
  342 + let res = response.data;
  343 + if (res.code !== '200') {
  344 + // 关闭加载
  345 + this.virtualHost_loading.listLoading = false;
  346 + return this.$message.error('获取虚拟主机列表,失败!');
  347 + }
  348 +
  349 + console.log(res.data.list);
  350 + // 获取列表数据
  351 + this.virtualHostList = res.data.list;
  352 + // 获取列表的总记录数
  353 + this.total = res.data.total;
  354 + // 关闭加载
  355 + this.virtualHost_loading.listLoading = false;
  356 + this.$message.success('获取虚拟主机列表,成功!');
  357 + }).catch(error => {
  358 + // 关闭加载
  359 + this.virtualHost_loading.listLoading = false;
  360 + this.$message.error(error.toString());
  361 + });
  362 + },
  363 + /**
  364 + * 虚拟主机信息,添加对话框,打开事件
  365 + */
  366 + toAddDialog() {
  367 + this.virtualHostDialog.addDialog = true;
  368 + },
  369 + /**
  370 + * 虚拟主机信息,添加对话框,关闭事件
  371 + */
  372 + virtualHostAddDialogClosed() {
  373 + //重置对话框
  374 + this.$refs.addVirtualHostRef.resetFields();
  375 + },
  376 + /**
  377 + * 虚拟主机信息,添加功能
  378 + */
  379 + addVirtualHostInfo() {
  380 + // 进行表单的预验证
  381 + this.$refs.addVirtualHostRef.validate(valid => {
  382 + // 未通过,表单预校验
  383 + if (!valid) return;
  384 + // 通过,表单预检验
  385 + this.virtualHost_loading.addLoading = true;
  386 + insertVirtualHost(this.addVirtualHostForm).then((response) => {
  387 + let res = response.data;
  388 + // 添加失败
  389 + if (res.code !== '200') {
  390 + if (res.code === '400') {
  391 + // 关闭加载
  392 + this.virtualHost_loading.addLoading = false;
  393 + return this.$message.error('该虚拟主机,已存在');
  394 + }
  395 + if (res.code === '999') {
  396 + // 关闭加载
  397 + this.virtualHost_loading.addLoading = false;
  398 + return this.$message.error('未知异常,添加虚拟主机,失败');
  399 + }
  400 + // 关闭加载
  401 + this.virtualHost_loading.addLoading = false;
  402 + return this.$message.error('添加虚拟主机,失败');
  403 + }
  404 + // 添加,成功
  405 + this.$message.success('添加虚拟主机,成功');
  406 + // 关闭加载
  407 + this.virtualHost_loading.addLoading = false;
  408 + // 隐藏对话框
  409 + this.virtualHostDialog.addDialog = false;
  410 + // 刷新列表
  411 + this.getVirtualHostList();
  412 + }).catch(error => {
  413 + this.virtualHost_loading.addLoading = false;
  414 + this.$message.error(error.toString());
  415 + });
  416 + })
  417 + },
  418 +
  419 + /**
  420 + * 虚拟主机信息,编辑对话框,打开事件
  421 + */
  422 + toEditDialog(index, row) {
  423 + this.editVirtualHostForm = Object.assign({}, row);
  424 + this.virtualHostDialog.editDialog = true;
  425 + },
  426 +
  427 + /**
  428 + * 虚拟主机信息,编辑对话框,关闭事件
  429 + */
  430 + virtualHostEditDialogClosed() {
  431 + //重置对话框
  432 + this.$refs.editVirtualHostRef.resetFields();
  433 + },
  434 + /**
  435 + * 虚拟主机信息,编辑功能
  436 + */
  437 + editVirtualHostInfo() {
  438 + //进行表单的预验证
  439 + this.$refs.editVirtualHostRef.validate(valid => {
  440 + // 未通过,表单预校验
  441 + if (!valid) return;
  442 + // 通过,表单预检验
  443 + this.virtualHost_loading.editLoading = true;
  444 + updateVirtualHost(this.editVirtualHostForm).then((response) => {
  445 + let res = response.data;
  446 + if (res.code !== '200') {
  447 + if (res.code === '400') {
  448 + // 关闭加载
  449 + this.virtualHost_loading.editLoading = false;
  450 + return this.$message.error('该虚拟主机,已存在');
  451 + }
  452 + if (res.code === '999') {
  453 + // 关闭加载
  454 + this.virtualHost_loading.editLoading = false;
  455 + return this.$message.error('未知异常,编辑虚拟主机信息,失败');
  456 + }
  457 + //关闭加载
  458 + this.virtualHost_loading.editLoading = false;
  459 + return this.$message.error('编辑虚拟主机信息,失败');
  460 + }
  461 + // 关闭加载
  462 + this.virtualHost_loading.editLoading = false;
  463 + this.$message.success('编辑虚拟主机信息,成功!');
  464 + // 隐藏对话框
  465 + this.virtualHostDialog.editDialog = false;
  466 + // 刷新列表
  467 + this.getVirtualHostList();
  468 + }).catch(error => {
  469 + this.virtualHost_loading.editLoading = false;
  470 + this.$message.error(error.toString());
  471 + });
  472 + })
  473 + },
  474 +
  475 +
  476 + /**
  477 + * 虚拟主机信息,删除
  478 + */
  479 + removeVirtualHostInfo(index, row) {
  480 + // 弹框询问是否删除?
  481 + this.$confirm('此操作永久删除该虚拟主机信息, 是否继续?', '警告', {
  482 + confirmButtonText: '确定删除',
  483 + cancelButtonText: '取消',
  484 + type: 'warning'
  485 + }
  486 + ).then(() => {
  487 + // 开启加载
  488 + this.virtualHost_loading.delLoading = true;
  489 + deleteVirtualHost(row).then((response) => {
  490 + let res = response.data;
  491 + if (res.code !== '200') {
  492 + //关闭加载
  493 + this.virtualHost_loading.delLoading = false;
  494 + return this.$message.error('删除虚拟主机信息,失败');
  495 + }
  496 + //关闭加载
  497 + this.virtualHost_loading.delLoading = false;
  498 + this.$message.success('删除虚拟主机信息,成功!');
  499 + //刷新列表
  500 + this.getVirtualHostList();
  501 + }).catch(error => {
  502 + this.virtualHost_loading.delLoading = false;
  503 + this.$message.error(error.toString());
  504 + });
  505 + }).catch(() => {
  506 + });
  507 + },
  508 + /**
  509 + * 批量删除,之前的选中
  510 + */
  511 + selectChange: function (selectList) {
  512 + this.selectList = selectList;
  513 + },
  514 + /**
  515 + * 批量删除-虚拟主机
  516 + */
  517 + batchDeleteVirtualHost() {
  518 + const ids = this.selectList.map(item => item.id).toString();
  519 + this.$confirm('此操作将永久删除选中的虚拟主机信息, 是否继续?', '警告', {
  520 + confirmButtonText: '确定删除',
  521 + cancelButtonText: '取消',
  522 + type: 'warning'
  523 + }
  524 + ).then(() => {
  525 + // 开启加载
  526 + this.virtualHost_loading.batchDelLoading = true;
  527 + let params = {ids: ids};
  528 + batchRemoveVirtualHost(params).then(response => {
  529 + let res = response.data;
  530 + if (res.code !== '200') {
  531 + // 关闭加载
  532 + this.virtualHost_loading.batchDelLoading = false;
  533 + return this.$message.error('批量删除服务器信息,失败');
  534 + }
  535 + this.$message.success('批量删除服务器信息,成功!');
  536 + // 关闭加载
  537 + this.virtualHost_loading.batchDelLoading = false;
  538 + // 刷新列表
  539 + this.getVirtualHostList();
  540 + }).catch(error => {
  541 + // 关闭加载
  542 + this.virtualHost_loading.batchDelLoading = false;
  543 + this.$message.error(error.toString());
  544 + });
  545 + }).catch(() => {
  546 + });
  547 + },
  548 +
  549 + /**
  550 + * 获取服务器列表
  551 + */
  552 + selectServerList() {
  553 + getServerList().then((response) => {
  554 + let res = response.data;
  555 + if (res.code !== '200') {
  556 + return this.$message.error('获取服务器列表,失败!');
  557 + }
  558 + // 获取服务器列表数据
  559 + this.virtualHost_config.serverList = res.data;
  560 + // this.$message.success('获取服务器列表,成功!');
  561 + }).catch(error => {
  562 + this.$message.error(error.toString());
  563 + });
  564 + },
  565 +
  566 + /**
  567 + * 携带参数,跳转至交换机界面
  568 + */
  569 + toExchange(index, row) {
  570 + this.$confirm('查看该虚拟主机下的交换机, 是否继续?', '提示', {
  571 + confirmButtonText: '查看',
  572 + cancelButtonText: '取消',
  573 + type: 'warning'
  574 + }
  575 + ).then(() => {
  576 + this.$router.push({name: "交换机管理", params: {virtualHost_scopeRow: row}})
  577 + }).catch(() => {
  578 + });
  579 + },
  580 + /**
  581 + * 携带参数,跳转至队列界面
  582 + */
  583 + toQueue(index, row) {
  584 + this.$confirm('查看该交换机下的队列, 是否继续?', '提示', {
  585 + confirmButtonText: '查看',
  586 + cancelButtonText: '取消',
  587 + type: 'warning'
  588 + }
  589 + ).then(() => {
  590 + this.$router.push({name: "队列管理", params: {virtualHost_scopeRow: row}})
  591 + }).catch(() => {
  592 + });
  593 + },
  594 + },
  595 + created() {
  596 + if (this.$route.params.server_scopeRow !== undefined) {
  597 + // 参数,服务器id
  598 + this.queryInfo.serverId = this.$route.params.server_scopeRow.id;
  599 + // 刷新列表
  600 + this.getVirtualHostList();
  601 + // 参数,服务器名称
  602 + this.virtualHost_config.serverName = this.$route.params.server_scopeRow.serverName;
  603 + } else {
  604 + // 刷新列表
  605 + this.getVirtualHostList();
  606 + }
  607 + },
  608 + mounted() {
  609 + this.selectServerList();
  610 + },
  611 + computed: {},
  612 + }
  613 +</script>
  614 +
  615 +<style scoped>
  616 +
  617 +</style>
@@ -21,31 +21,31 @@ @@ -21,31 +21,31 @@
21 border 21 border
22 :tree-props="{children: 'children', hasChildren: 'hasChildren'}" 22 :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
23 > 23 >
24 - <el-table-column type="selection" width="55"> 24 + <el-table-column type="selection" width="55" align="center">
25 </el-table-column> 25 </el-table-column>
26 <!--<el-table-column type="index" width="60">--> 26 <!--<el-table-column type="index" width="60">-->
27 <!--</el-table-column>--> 27 <!--</el-table-column>-->
28 - <el-table-column prop="permissionId" label="ID" width="130" sortable> 28 + <el-table-column prop="permissionId" label="ID" width="130" align="center" sortable>
29 </el-table-column> 29 </el-table-column>
30 - <el-table-column prop="name" label="权限名称" min-width="150" sortable> 30 + <el-table-column prop="name" label="权限名称" min-width="150" align="center" sortable>
31 </el-table-column> 31 </el-table-column>
32 - <el-table-column prop="description" label="描述" min-width="120" sortable> 32 + <el-table-column prop="description" label="描述" min-width="120" align="center" sortable>
33 </el-table-column> 33 </el-table-column>
34 - <el-table-column prop="ismenu" label="是否目录" width="100" :formatter="formatState" sortable> 34 + <el-table-column prop="ismenu" label="是否目录" width="120" :formatter="formatState" align="center" sortable>
35 </el-table-column> 35 </el-table-column>
36 - <el-table-column prop="url" label="访问路径" width="300" sortable> 36 + <el-table-column prop="url" label="访问路径" width="250" align="center" sortable>
37 </el-table-column> 37 </el-table-column>
38 - <el-table-column label="操作" min-width="100"> 38 + <el-table-column label="操作" min-width="150" align="center">
39 <template slot-scope="scope"> 39 <template slot-scope="scope">
40 - <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>  
41 - <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button> 40 + <el-button size="small" type="success" icon="el-icon-check" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
  41 + <el-button type="danger" icon="el-icon-delete" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
42 </template> 42 </template>
43 </el-table-column> 43 </el-table-column>
44 </el-table> 44 </el-table>
45 45
46 <!--工具条--> 46 <!--工具条-->
47 <el-col :span="24" class="toolbar"> 47 <el-col :span="24" class="toolbar">
48 - <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button> 48 + <el-button type="danger" icon="el-icon-delete" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
49 <el-pagination layout="total, prev, pager, next" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;"> 49 <el-pagination layout="total, prev, pager, next" @current-change="handleCurrentChange" :page-size="pageSize" :total="total" style="float:right;">
50 </el-pagination> 50 </el-pagination>
51 </el-col> 51 </el-col>
@@ -147,7 +147,7 @@ @@ -147,7 +147,7 @@
147 tableList: [], 147 tableList: [],
148 total: 0, 148 total: 0,
149 pageNum: 1, 149 pageNum: 1,
150 - pageSize: 100, 150 + pageSize: 10000,
151 listLoading: false, 151 listLoading: false,
152 sels: [],//列表选中列 152 sels: [],//列表选中列
153 //编辑界面是否显示 153 //编辑界面是否显示
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 <el-button type="primary" v-on:click="getRoles()">查询</el-button> 10 <el-button type="primary" v-on:click="getRoles()">查询</el-button>
11 </el-form-item> 11 </el-form-item>
12 <el-form-item> 12 <el-form-item>
13 - <el-button type="primary" @click="handleAdd">新增</el-button> 13 + <el-button type="success" @click="handleAdd">新增</el-button>
14 </el-form-item> 14 </el-form-item>
15 </el-form> 15 </el-form>
16 </el-col> 16 </el-col>
@@ -21,32 +21,32 @@ @@ -21,32 +21,32 @@
21 row-key="roleId" 21 row-key="roleId"
22 border 22 border
23 :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> 23 :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
24 - <el-table-column type="selection" width="55"> 24 + <el-table-column type="selection" width="60" align="center">
25 </el-table-column> 25 </el-table-column>
26 <!--<el-table-column type="index" width="60">--> 26 <!--<el-table-column type="index" width="60">-->
27 <!--</el-table-column>--> 27 <!--</el-table-column>-->
28 - <el-table-column prop="roleId" label="ID" width="120"> 28 + <el-table-column prop="roleId" label="ID" width="110" align="center">
29 </el-table-column> 29 </el-table-column>
30 - <el-table-column prop="roleName" label="岗位/角色名称" min-width="200" sortable> 30 + <el-table-column prop="roleName" label="岗位/角色名称" width="180" sortable align="center">
31 </el-table-column> 31 </el-table-column>
32 <!--<el-table-column prop="departmentName" label="部门名称" min-width="200" sortable>--> 32 <!--<el-table-column prop="departmentName" label="部门名称" min-width="200" sortable>-->
33 <!--</el-table-column>--> 33 <!--</el-table-column>-->
34 - <el-table-column prop="description" label="描述" min-width="160" > 34 + <el-table-column prop="description" label="描述" min-width="100" align="center" >
35 </el-table-column> 35 </el-table-column>
36 - <el-table-column prop="type" label="类型" min-width="80" sortable> 36 + <el-table-column prop="type" label="类型" min-width="100" sortable align="center">
37 </el-table-column> 37 </el-table-column>
38 - <el-table-column prop="businessLicense" label="工商代码" min-width="180" >  
39 - </el-table-column>  
40 - <el-table-column prop="customsRegCode" label="海关备案代码" min-width="150" >  
41 - </el-table-column>  
42 - <el-table-column prop="mqcode" label="海关通道编号" min-width="150" >  
43 - </el-table-column>  
44 - <el-table-column label="操作" min-width="260"> 38 +<!-- <el-table-column prop="businessLicense" label="工商代码" min-width="180" align="center">-->
  39 +<!-- </el-table-column>-->
  40 +<!-- <el-table-column prop="customsRegCode" label="海关备案代码" min-width="150" align="center" >-->
  41 +<!-- </el-table-column>-->
  42 +<!-- <el-table-column prop="mqcode" label="海关通道编号" min-width="150" align="center">-->
  43 +<!-- </el-table-column>-->
  44 + <el-table-column label="操作" width="230px" fixed="right" align="center">
45 <template slot-scope="scope"> 45 <template slot-scope="scope">
46 - <el-button type="primary" size="small" @click="handleAdd(scope.$index, scope.row)">新增下级</el-button>  
47 - <el-button size="small" @click="setPerm(scope.$index, scope.row)">设置权限</el-button>  
48 - <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>  
49 - <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button> 46 + <el-button type="success" size="small" @click="handleAdd(scope.$index, scope.row)" style="width:97px;margin-left: 1px;">新增下级</el-button>
  47 + <el-button type="warning" size="small" @click="setPerm(scope.$index, scope.row)" style="width:97px;margin-left: 1px;">设置权限</el-button>
  48 + <el-button type="primary" style="width:97px;margin-left: 1px;margin-top: 3px;" size="small" @click="handleEdit(scope.$index, scope.row)" >编辑</el-button>
  49 + <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)" style="width:97px;margin-left: 1px;">删除</el-button>
50 </template> 50 </template>
51 </el-table-column> 51 </el-table-column>
52 </el-table> 52 </el-table>
@@ -84,15 +84,15 @@ @@ -84,15 +84,15 @@
84 </el-option> 84 </el-option>
85 </el-select> 85 </el-select>
86 </el-form-item> 86 </el-form-item>
87 - <el-form-item label="工商企业代码" prop="businessLicense">  
88 - <el-input v-model="addForm.businessLicense" auto-complete="off" placeholder="社会信用代码或者组织机构代码"></el-input>  
89 - </el-form-item>  
90 - <el-form-item label="海关备案代码" prop="customsRegCode">  
91 - <el-input v-model="addForm.customsRegCode" auto-complete="off" placeholder="海关备案后返回的备案代码"></el-input>  
92 - </el-form-item>  
93 - <el-form-item label="海关通道编号" prop="mqcode">  
94 - <el-input v-model="addForm.mqcode" auto-complete="off" placeholder="海关通道编号"></el-input>  
95 - </el-form-item> 87 +<!-- <el-form-item label="工商企业代码" prop="businessLicense">-->
  88 +<!-- <el-input v-model="addForm.businessLicense" auto-complete="off" placeholder="社会信用代码或者组织机构代码"></el-input>-->
  89 +<!-- </el-form-item>-->
  90 +<!-- <el-form-item label="海关备案代码" prop="customsRegCode">-->
  91 +<!-- <el-input v-model="addForm.customsRegCode" auto-complete="off" placeholder="海关备案后返回的备案代码"></el-input>-->
  92 +<!-- </el-form-item>-->
  93 +<!-- <el-form-item label="海关通道编号" prop="mqcode">-->
  94 +<!-- <el-input v-model="addForm.mqcode" auto-complete="off" placeholder="海关通道编号"></el-input>-->
  95 +<!-- </el-form-item>-->
96 </el-form> 96 </el-form>
97 <div slot="footer" class="dialog-footer"> 97 <div slot="footer" class="dialog-footer">
98 <el-button @click.native="addFormVisible = false">取消</el-button> 98 <el-button @click.native="addFormVisible = false">取消</el-button>
@@ -264,7 +264,7 @@ @@ -264,7 +264,7 @@
264 getPermList() { 264 getPermList() {
265 let para = { 265 let para = {
266 pageNum: 1, 266 pageNum: 1,
267 - pageSize: 700 267 + pageSize: 2000
268 }; 268 };
269 NProgress.start(); 269 NProgress.start();
270 permList(para).then((res) => { 270 permList(para).then((res) => {
@@ -19,44 +19,46 @@ @@ -19,44 +19,46 @@
19 </el-col> 19 </el-col>
20 20
21 <!--列表--> 21 <!--列表-->
22 - <el-table :data="users" highlight-current-row border v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">  
23 - <el-table-column type="selection" width="55"> 22 + <el-table :data="users" highlight-current-row border v-loading="listLoading" @selection-change="selsChange"
  23 + style="width: 100%;">
  24 + <el-table-column type="selection" width="55" align="center">
24 </el-table-column> 25 </el-table-column>
25 <!--<el-table-column type="index" width="60">--> 26 <!--<el-table-column type="index" width="60">-->
26 <!--</el-table-column>--> 27 <!--</el-table-column>-->
27 - <el-table-column prop="userId" label="ID" width="100" sortable> 28 + <el-table-column prop="userId" label="ID" width="100" align="center" sortable>
28 </el-table-column> 29 </el-table-column>
29 - <el-table-column prop="username" label="账号" width="120" sortable> 30 + <el-table-column prop="username" label="账号" width="120" align="center" sortable>
30 </el-table-column> 31 </el-table-column>
31 - <el-table-column prop="realname" label="姓名" width="120" sortable> 32 + <el-table-column prop="realname" label="姓名" width="120" align="center" sortable>
32 </el-table-column> 33 </el-table-column>
33 - <el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable> 34 + <el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" align="center" sortable>
34 </el-table-column> 35 </el-table-column>
35 - <el-table-column prop="mobilephone" label="电话" width="125"> 36 + <el-table-column prop="mobilephone" label="电话" width="130" align="center">
36 </el-table-column> 37 </el-table-column>
37 - <el-table-column prop="creattime" label="创建时间" width="170" sortable> 38 + <el-table-column prop="creattime" label="创建时间" width="175" align="center" sortable>
38 </el-table-column> 39 </el-table-column>
39 - <el-table-column prop="updatetime" label="更新时间" width="170" sortable> 40 + <el-table-column prop="updatetime" label="更新时间" width="175" align="center" sortable>
40 </el-table-column> 41 </el-table-column>
41 - <el-table-column prop="address" label="地址" min-width="180"> 42 + <el-table-column prop="address" label="地址" min-width="180" align="center">
42 </el-table-column> 43 </el-table-column>
43 - <el-table-column prop="email" label="Email" min-width="180"> 44 + <el-table-column prop="email" label="Email" min-width="180" align="center">
44 </el-table-column> 45 </el-table-column>
45 - <el-table-column prop="state" label="启用" width="100" :formatter="formatState" sortable> 46 + <el-table-column prop="state" label="启用" width="100" :formatter="formatState" align="center" sortable>
46 </el-table-column> 47 </el-table-column>
47 - <el-table-column label="操作" width="250"> 48 + <el-table-column label="操作" width="300px" fixed="right" align="center">
48 <template slot-scope="scope"> 49 <template slot-scope="scope">
49 - <el-button size="small" @click="roleEdit(scope.$index, scope.row)">角色配置</el-button>  
50 - <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>  
51 - <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button> 50 + <el-button type="primary" icon="el-icon-setting" size="small" @click="roleEdit(scope.$index, scope.row)">角色配置</el-button>
  51 + <el-button size="small" type="success" icon="el-icon-check" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
  52 + <el-button type="danger" icon="el-icon-delete" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
52 </template> 53 </template>
53 </el-table-column> 54 </el-table-column>
54 </el-table> 55 </el-table>
55 56
56 <!--工具条--> 57 <!--工具条-->
57 <el-col :span="24" class="toolbar"> 58 <el-col :span="24" class="toolbar">
58 - <el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>  
59 - <el-pagination layout="total, prev, pager, next" @current-change="handleCurrentChange" :page-size="10" :total="total" style="float:right;"> 59 + <el-button type="danger" icon="el-icon-delete" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
  60 + <el-pagination layout="total, prev, pager, next" @current-change="handleCurrentChange" :page-size="10"
  61 + :total="total" style="float:right;">
60 </el-pagination> 62 </el-pagination>
61 </el-col> 63 </el-col>
62 64
@@ -69,9 +71,9 @@ @@ -69,9 +71,9 @@
69 <el-form-item label="账号"> 71 <el-form-item label="账号">
70 <span>{{editForm.username}}</span> 72 <span>{{editForm.username}}</span>
71 </el-form-item> 73 </el-form-item>
72 - <el-form-item label="密码" prop="password">  
73 - <el-input v-model="editForm.password" auto-complete="off" type="password" show-password></el-input>  
74 - </el-form-item> 74 +<!-- <el-form-item label="密码" prop="password">-->
  75 +<!-- <el-input v-model="editForm.password" auto-complete="off" type="password" show-password></el-input>-->
  76 +<!-- </el-form-item>-->
75 <el-form-item label="姓名" prop="realname"> 77 <el-form-item label="姓名" prop="realname">
76 <el-input v-model="editForm.realname" auto-complete="off"></el-input> 78 <el-input v-model="editForm.realname" auto-complete="off"></el-input>
77 </el-form-item> 79 </el-form-item>
@@ -83,8 +85,8 @@ @@ -83,8 +85,8 @@
83 </el-form-item> 85 </el-form-item>
84 <el-form-item label="性别"> 86 <el-form-item label="性别">
85 <el-radio-group v-model="editForm.sex"> 87 <el-radio-group v-model="editForm.sex">
86 - <el-radio class="radio" label="1" >男</el-radio>  
87 - <el-radio class="radio" label="0" >女</el-radio> 88 + <el-radio class="radio" label="1">男</el-radio>
  89 + <el-radio class="radio" label="0">女</el-radio>
88 </el-radio-group> 90 </el-radio-group>
89 </el-form-item> 91 </el-form-item>
90 <el-form-item label="年龄"> 92 <el-form-item label="年龄">
@@ -98,8 +100,8 @@ @@ -98,8 +100,8 @@
98 </el-form-item> 100 </el-form-item>
99 <el-form-item label="启用"> 101 <el-form-item label="启用">
100 <el-radio-group v-model="editForm.state"> 102 <el-radio-group v-model="editForm.state">
101 - <el-radio class="radio" label="true" >是</el-radio>  
102 - <el-radio class="radio" label="false" >否</el-radio> 103 + <el-radio class="radio" label="true">是</el-radio>
  104 + <el-radio class="radio" label="false">否</el-radio>
103 </el-radio-group> 105 </el-radio-group>
104 </el-form-item> 106 </el-form-item>
105 <el-form-item lable="头像"> 107 <el-form-item lable="头像">
@@ -161,14 +163,15 @@ @@ -161,14 +163,15 @@
161 163
162 <!--权限设置--> 164 <!--权限设置-->
163 <el-dialog title="权限设置" :visible.sync="roleFormVisible" :close-on-click-modal="false"> 165 <el-dialog title="权限设置" :visible.sync="roleFormVisible" :close-on-click-modal="false">
164 - <el-form :model="roleEditForm" label-width="80px" ref="roleEditForm" > 166 + <el-form :model="roleEditForm" label-width="80px" ref="roleEditForm">
165 <el-form-item label="ID"> 167 <el-form-item label="ID">
166 <span>{{roleEditForm.userId}}</span> 168 <span>{{roleEditForm.userId}}</span>
167 </el-form-item> 169 </el-form-item>
168 <el-form-item label="账号"> 170 <el-form-item label="账号">
169 <span>{{roleEditForm.username}}</span> 171 <span>{{roleEditForm.username}}</span>
170 </el-form-item> 172 </el-form-item>
171 - <el-tree :data="roles" :props="treeDefaultProps" default-expand-all show-checkbox highlight-current check-strictly node-key="roleId" ref="tree" @check-change="treeHandleCheckChange"> 173 + <el-tree :data="roles" :props="treeDefaultProps" default-expand-all show-checkbox highlight-current
  174 + check-strictly node-key="roleId" ref="tree" @check-change="treeHandleCheckChange">
172 </el-tree> 175 </el-tree>
173 </el-form> 176 </el-form>
174 177
@@ -183,9 +186,10 @@ @@ -183,9 +186,10 @@
183 <script> 186 <script>
184 import util from '../../common/js/util' 187 import util from '../../common/js/util'
185 import NProgress from 'nprogress' 188 import NProgress from 'nprogress'
186 - import { getUserList, removeUser, batchRemoveUser, editUser, addUser, setUserRole } from '../../api/user';  
187 - import { getList} from '../../api/role_api'; 189 + import {getUserList, removeUser, batchRemoveUser, editUser, addUser, setUserRole} from '../../api/user';
  190 + import {getList} from '../../api/role_api';
188 import moment from 'moment' 191 import moment from 'moment'
  192 +
189 export default { 193 export default {
190 data() { 194 data() {
191 return { 195 return {
@@ -209,7 +213,10 @@ @@ -209,7 +213,10 @@
209 editLoading: false, 213 editLoading: false,
210 editFormRules: { 214 editFormRules: {
211 name: [ 215 name: [
212 - { required: true, message: '请输入姓名', trigger: 'blur' } 216 + {required: true, message: '请输入姓名', trigger: 'blur'}
  217 + ],
  218 + mobilephone: [
  219 + {required: true, message: '请输入手机号码', trigger: ['blur', 'change']}
213 ] 220 ]
214 }, 221 },
215 //编辑界面数据 222 //编辑界面数据
@@ -217,24 +224,27 @@ @@ -217,24 +224,27 @@
217 userId: 1, 224 userId: 1,
218 username: '', 225 username: '',
219 password: '', 226 password: '',
220 - sex: 1,  
221 - creattime: '', 227 + sex: '1',
  228 + creattime: undefined,
222 address: '', 229 address: '',
223 realname: '', 230 realname: '',
224 email: '', 231 email: '',
225 mobilephone: '', 232 mobilephone: '',
226 - state: 'true' 233 + state: true
227 }, 234 },
228 235
229 addFormVisible: false,//新增界面是否显示 236 addFormVisible: false,//新增界面是否显示
230 addLoading: false, 237 addLoading: false,
231 addFormRules: { 238 addFormRules: {
232 username: [ 239 username: [
233 - { required: true, message: '请输入姓名,用户名长度在5-11位,支持英文和数字', trigger: 'blur' }, 240 + {required: true, message: '请输入姓名,用户名长度在5-11位,支持英文和数字', trigger: 'blur'},
234 ], 241 ],
235 password: [ 242 password: [
236 - { required: true, message: '请输入密码,用户名长度在6-18位,支持英文和数字和非空字符', trigger: 'blur'}  
237 - ] 243 + {required: true, message: '请输入密码,用户名长度在6-18位,支持英文和数字和非空字符', trigger: 'blur'}
  244 + ],
  245 + mobilephone: [
  246 + {required: true, message: '请输入手机号码', trigger: ['blur', 'change']},
  247 + ],
238 }, 248 },
239 //用户角色配置 249 //用户角色配置
240 roleFormVisible: false, 250 roleFormVisible: false,
@@ -272,7 +282,7 @@ @@ -272,7 +282,7 @@
272 this.getUsers(); 282 this.getUsers();
273 }, 283 },
274 //获取用户列表 284 //获取用户列表
275 - getUsers:function() { 285 + getUsers: function () {
276 let para = { 286 let para = {
277 pageNum: this.pageNum, 287 pageNum: this.pageNum,
278 pageSize: this.pageSize, 288 pageSize: this.pageSize,
@@ -299,7 +309,7 @@ @@ -299,7 +309,7 @@
299 }).then(() => { 309 }).then(() => {
300 this.listLoading = true; 310 this.listLoading = true;
301 //NProgress.start(); 311 //NProgress.start();
302 - let para = { userId: row.userId }; 312 + let para = {userId: row.userId};
303 removeUser(para).then((res) => { 313 removeUser(para).then((res) => {
304 this.listLoading = false; 314 this.listLoading = false;
305 //NProgress.done(); 315 //NProgress.done();
@@ -331,8 +341,8 @@ @@ -331,8 +341,8 @@
331 this.roleEditForm = Object.assign({}, row); 341 this.roleEditForm = Object.assign({}, row);
332 let roles = this.roleEditForm.roles; 342 let roles = this.roleEditForm.roles;
333 343
334 - if (util.checkNull(roles)){  
335 - roles.forEach(function (role,v_index,v_arr) { 344 + if (util.checkNull(roles)) {
  345 + roles.forEach(function (role, v_index, v_arr) {
336 if (util.checkNull(role)) { 346 if (util.checkNull(role)) {
337 _this.roleIds[v_index] = role.roleId; 347 _this.roleIds[v_index] = role.roleId;
338 } 348 }
@@ -353,11 +363,11 @@ @@ -353,11 +363,11 @@
353 this.roles = res.data.list; 363 this.roles = res.data.list;
354 NProgress.done(); 364 NProgress.done();
355 }).catch((error) => { 365 }).catch((error) => {
356 - if(null!= error.response && error.response!==undefined){  
357 - let status= error.response.status; 366 + if (null != error.response && error.response !== undefined) {
  367 + let status = error.response.status;
358 let msg = error.response.statusText; 368 let msg = error.response.statusText;
359 - alert(status+msg);  
360 - }else { 369 + alert(status + msg);
  370 + } else {
361 alert(error); 371 alert(error);
362 } 372 }
363 }); 373 });
@@ -385,11 +395,11 @@ @@ -385,11 +395,11 @@
385 this.$confirm('确认提交吗?', '提示', {}).then(() => { 395 this.$confirm('确认提交吗?', '提示', {}).then(() => {
386 this.editLoading = true; 396 this.editLoading = true;
387 //NProgress.start(); 397 //NProgress.start();
388 - let para = Object.assign({}, this.editForm); 398 + // let para = Object.assign({}, this.editForm);
389 //不需要提交的 去掉,后端不好接收 399 //不需要提交的 去掉,后端不好接收
390 - para.authorities = null;  
391 - para.permissions = null;  
392 - para.roles = null; 400 + this.editForm.authorities = null;
  401 + this.editForm.permissions = null;
  402 + this.editForm.roles = null;
393 // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd'); 403 // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
394 /* 404 /*
395 查询之后格式this.filters.column.create_start_date中日期发生变化; 405 查询之后格式this.filters.column.create_start_date中日期发生变化;
@@ -400,7 +410,7 @@ @@ -400,7 +410,7 @@
400 /*moment 安装 npm install moment --save*/ 410 /*moment 安装 npm install moment --save*/
401 // para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss'); 411 // para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
402 this.editLoading = false; 412 this.editLoading = false;
403 - editUser(para).then((res) => { 413 + editUser(this.editForm).then((res) => {
404 414
405 //NProgress.done(); 415 //NProgress.done();
406 this.$message({ 416 this.$message({
@@ -455,7 +465,7 @@ @@ -455,7 +465,7 @@
455 }).then(() => { 465 }).then(() => {
456 this.listLoading = true; 466 this.listLoading = true;
457 //NProgress.start(); 467 //NProgress.start();
458 - let para = { ids: ids }; 468 + let para = {ids: ids};
459 batchRemoveUser(para).then((res) => { 469 batchRemoveUser(para).then((res) => {
460 this.listLoading = false; 470 this.listLoading = false;
461 //NProgress.done(); 471 //NProgress.done();
@@ -474,9 +484,9 @@ @@ -474,9 +484,9 @@
474 // this.editLoading = true; 484 // this.editLoading = true;
475 let userId = this.roleEditForm.userId; 485 let userId = this.roleEditForm.userId;
476 let roleIds = this.$refs.tree.getCheckedKeys(); 486 let roleIds = this.$refs.tree.getCheckedKeys();
477 - let para = {userId,roleIds}; 487 + let para = {userId, roleIds};
478 setUserRole(para).then((res) => { 488 setUserRole(para).then((res) => {
479 - if (res.status ===200) { 489 + if (res.status === 200) {
480 this.$message({ 490 this.$message({
481 message: '岗位设置成功', 491 message: '岗位设置成功',
482 type: 'success' 492 type: 'success'
@@ -490,17 +500,17 @@ @@ -490,17 +500,17 @@
490 console.log(para); 500 console.log(para);
491 }); 501 });
492 }, 502 },
493 - handleAvatarSuccess: function(response){  
494 - this.faceImageUrl = 'http://127.0.0.1:7003/'+response.data; 503 + handleAvatarSuccess: function (response) {
  504 + this.faceImageUrl = 'http://127.0.0.1:7003/' + response.data;
495 }, 505 },
496 beforeAvatarUpload: function () { 506 beforeAvatarUpload: function () {
497 507
498 }, 508 },
499 treeHandleCheckChange: function (data, checked, indeterminate) { 509 treeHandleCheckChange: function (data, checked, indeterminate) {
500 - if(checked) { 510 + if (checked) {
501 this.roleIds.push(data.roleId); 511 this.roleIds.push(data.roleId);
502 - }else {  
503 - this.roleIds.splice(this.roleIds.contains(data.roleId),1); 512 + } else {
  513 + this.roleIds.splice(this.roleIds.contains(data.roleId), 1);
504 } 514 }
505 // console.log(data, checked, indeterminate); 515 // console.log(data, checked, indeterminate);
506 console.log(this.roleIds); 516 console.log(this.roleIds);