作者 王勇

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

@@ -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
@@ -14,4 +14,4 @@ @@ -14,4 +14,4 @@
14 <!-- built files will be auto injected --> 14 <!-- built files will be auto injected -->
15 </body> 15 </body>
16 16
17 -</html>  
  17 +</html>
@@ -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"
13514 } 13535 }
13515 }, 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"
  13553 + }
  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);};
@@ -50,7 +50,7 @@ function sendSock(agentData,callback){ @@ -50,7 +50,7 @@ function sendSock(agentData,callback){
50 50
51 //数据接收 51 //数据接收
52 function websocketonmessage(e){ 52 function websocketonmessage(e){
53 - 53 +
54 console.log("------>"+e.data); 54 console.log("------>"+e.data);
55 global_callback(JSON.parse(e.data)); 55 global_callback(JSON.parse(e.data));
56 } 56 }
@@ -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;
@@ -474,4 +474,4 @@ @@ -474,4 +474,4 @@
474 } 474 }
475 } 475 }
476 } 476 }
477 -</style>  
  477 +</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="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 //编辑界面是否显示
@@ -377,4 +377,4 @@ @@ -377,4 +377,4 @@
377 377
378 <style scoped> 378 <style scoped>
379 379
380 -</style>  
  380 +</style>
@@ -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) => {
@@ -563,4 +563,4 @@ @@ -563,4 +563,4 @@
563 563
564 <style scoped> 564 <style scoped>
565 565
566 -</style>  
  566 +</style>
1 <template> 1 <template>
2 - <section>  
3 - <!--工具条-->  
4 - <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">  
5 - <el-form :inline="true" :model="filters">  
6 - <el-form-item>  
7 - <el-input v-model="filters.realName" placeholder="姓名"></el-input>  
8 - </el-form-item>  
9 - <el-form-item>  
10 - <el-input v-model="filters.userName" placeholder="账号"></el-input>  
11 - </el-form-item>  
12 - <el-form-item>  
13 - <el-button type="primary" v-on:click="getUsers">查询</el-button>  
14 - </el-form-item>  
15 - <el-form-item>  
16 - <el-button type="primary" @click="handleAdd">新增</el-button>  
17 - </el-form-item>  
18 - </el-form>  
19 - </el-col> 2 + <section>
  3 + <!--工具条-->
  4 + <el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
  5 + <el-form :inline="true" :model="filters">
  6 + <el-form-item>
  7 + <el-input v-model="filters.realName" placeholder="姓名"></el-input>
  8 + </el-form-item>
  9 + <el-form-item>
  10 + <el-input v-model="filters.userName" placeholder="账号"></el-input>
  11 + </el-form-item>
  12 + <el-form-item>
  13 + <el-button type="primary" v-on:click="getUsers">查询</el-button>
  14 + </el-form-item>
  15 + <el-form-item>
  16 + <el-button type="primary" @click="handleAdd">新增</el-button>
  17 + </el-form-item>
  18 + </el-form>
  19 + </el-col>
20 20
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">  
24 - </el-table-column>  
25 - <!--<el-table-column type="index" width="60">-->  
26 - <!--</el-table-column>-->  
27 - <el-table-column prop="userId" label="ID" width="100" sortable>  
28 - </el-table-column>  
29 - <el-table-column prop="username" label="账号" width="120" sortable>  
30 - </el-table-column>  
31 - <el-table-column prop="realname" label="姓名" width="120" sortable>  
32 - </el-table-column>  
33 - <el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>  
34 - </el-table-column>  
35 - <el-table-column prop="mobilephone" label="电话" width="125">  
36 - </el-table-column>  
37 - <el-table-column prop="creattime" label="创建时间" width="170" sortable>  
38 - </el-table-column>  
39 - <el-table-column prop="updatetime" label="更新时间" width="170" sortable>  
40 - </el-table-column>  
41 - <el-table-column prop="address" label="地址" min-width="180">  
42 - </el-table-column>  
43 - <el-table-column prop="email" label="Email" min-width="180">  
44 - </el-table-column>  
45 - <el-table-column prop="state" label="启用" width="100" :formatter="formatState" sortable>  
46 - </el-table-column>  
47 - <el-table-column label="操作" width="250">  
48 - <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>  
52 - </template>  
53 - </el-table-column>  
54 - </el-table> 21 + <!--列表-->
  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">
  25 + </el-table-column>
  26 + <!--<el-table-column type="index" width="60">-->
  27 + <!--</el-table-column>-->
  28 + <el-table-column prop="userId" label="ID" width="100" align="center" sortable>
  29 + </el-table-column>
  30 + <el-table-column prop="username" label="账号" width="120" align="center" sortable>
  31 + </el-table-column>
  32 + <el-table-column prop="realname" label="姓名" width="120" align="center" sortable>
  33 + </el-table-column>
  34 + <el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" align="center" sortable>
  35 + </el-table-column>
  36 + <el-table-column prop="mobilephone" label="电话" width="130" align="center">
  37 + </el-table-column>
  38 + <el-table-column prop="creattime" label="创建时间" width="175" align="center" sortable>
  39 + </el-table-column>
  40 + <el-table-column prop="updatetime" label="更新时间" width="175" align="center" sortable>
  41 + </el-table-column>
  42 + <el-table-column prop="address" label="地址" min-width="180" align="center">
  43 + </el-table-column>
  44 + <el-table-column prop="email" label="Email" min-width="180" align="center">
  45 + </el-table-column>
  46 + <el-table-column prop="state" label="启用" width="100" :formatter="formatState" align="center" sortable>
  47 + </el-table-column>
  48 + <el-table-column label="操作" width="300px" fixed="right" align="center">
  49 + <template slot-scope="scope">
  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>
  53 + </template>
  54 + </el-table-column>
  55 + </el-table>
55 56
56 - <!--工具条-->  
57 - <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;">  
60 - </el-pagination>  
61 - </el-col> 57 + <!--工具条-->
  58 + <el-col :span="24" class="toolbar">
  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;">
  62 + </el-pagination>
  63 + </el-col>
62 64
63 - <!--编辑界面-->  
64 - <el-dialog title="编辑" :visible.sync="editFormVisible" :close-on-click-modal="false">  
65 - <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">  
66 - <el-form-item label="ID">  
67 - <span>{{editForm.userId}}</span>  
68 - </el-form-item>  
69 - <el-form-item label="账号">  
70 - <span>{{editForm.username}}</span>  
71 - </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>  
75 - <el-form-item label="姓名" prop="realname">  
76 - <el-input v-model="editForm.realname" auto-complete="off"></el-input>  
77 - </el-form-item>  
78 - <el-form-item label="电话" prop="mobilephone">  
79 - <el-input v-model="editForm.mobilephone" auto-complete="off"></el-input>  
80 - </el-form-item>  
81 - <el-form-item label="Email" prop="email">  
82 - <el-input v-model="editForm.email" auto-complete="off"></el-input>  
83 - </el-form-item>  
84 - <el-form-item label="性别">  
85 - <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-group>  
89 - </el-form-item>  
90 - <el-form-item label="年龄">  
91 - <el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>  
92 - </el-form-item>  
93 - <!--<el-form-item label="创建日期">-->  
94 - <!--<el-date-picker type="date" placeholder="创建日期" v-model="editForm.creattime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->  
95 - <!--</el-form-item>-->  
96 - <el-form-item label="地址">  
97 - <el-input type="textarea" v-model="editForm.address"></el-input>  
98 - </el-form-item>  
99 - <el-form-item label="启用">  
100 - <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-group>  
104 - </el-form-item>  
105 - <el-form-item lable="头像">  
106 - <el-upload  
107 - class="avatar-uploader"  
108 - action="http://127.0.0.1:7003/upload"  
109 - :show-file-list="true"  
110 - accept="image/jpeg,image/jpg,image/png"  
111 - :on-success="handleAvatarSuccess"  
112 - :before-upload="beforeAvatarUpload"  
113 - >  
114 - <img v-if="faceImageUrl" :src="faceImageUrl" class="avatar">  
115 - <i v-else class="el-icon-plus avatar-uploader-icon"></i>  
116 - </el-upload>  
117 - </el-form-item>  
118 - </el-form>  
119 - <div slot="footer" class="dialog-footer">  
120 - <el-button @click.native="editFormVisible = false">取消</el-button>  
121 - <el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>  
122 - </div>  
123 - </el-dialog> 65 + <!--编辑界面-->
  66 + <el-dialog title="编辑" :visible.sync="editFormVisible" :close-on-click-modal="false">
  67 + <el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
  68 + <el-form-item label="ID">
  69 + <span>{{editForm.userId}}</span>
  70 + </el-form-item>
  71 + <el-form-item label="账号">
  72 + <span>{{editForm.username}}</span>
  73 + </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>-->
  77 + <el-form-item label="姓名" prop="realname">
  78 + <el-input v-model="editForm.realname" auto-complete="off"></el-input>
  79 + </el-form-item>
  80 + <el-form-item label="电话" prop="mobilephone">
  81 + <el-input v-model="editForm.mobilephone" auto-complete="off"></el-input>
  82 + </el-form-item>
  83 + <el-form-item label="Email" prop="email">
  84 + <el-input v-model="editForm.email" auto-complete="off"></el-input>
  85 + </el-form-item>
  86 + <el-form-item label="性别">
  87 + <el-radio-group v-model="editForm.sex">
  88 + <el-radio class="radio" label="1">男</el-radio>
  89 + <el-radio class="radio" label="0">女</el-radio>
  90 + </el-radio-group>
  91 + </el-form-item>
  92 + <el-form-item label="年龄">
  93 + <el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
  94 + </el-form-item>
  95 + <!--<el-form-item label="创建日期">-->
  96 + <!--<el-date-picker type="date" placeholder="创建日期" v-model="editForm.creattime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
  97 + <!--</el-form-item>-->
  98 + <el-form-item label="地址">
  99 + <el-input type="textarea" v-model="editForm.address"></el-input>
  100 + </el-form-item>
  101 + <el-form-item label="启用">
  102 + <el-radio-group v-model="editForm.state">
  103 + <el-radio class="radio" label="true">是</el-radio>
  104 + <el-radio class="radio" label="false">否</el-radio>
  105 + </el-radio-group>
  106 + </el-form-item>
  107 + <el-form-item lable="头像">
  108 + <el-upload
  109 + class="avatar-uploader"
  110 + action="http://127.0.0.1:7003/upload"
  111 + :show-file-list="true"
  112 + accept="image/jpeg,image/jpg,image/png"
  113 + :on-success="handleAvatarSuccess"
  114 + :before-upload="beforeAvatarUpload"
  115 + >
  116 + <img v-if="faceImageUrl" :src="faceImageUrl" class="avatar">
  117 + <i v-else class="el-icon-plus avatar-uploader-icon"></i>
  118 + </el-upload>
  119 + </el-form-item>
  120 + </el-form>
  121 + <div slot="footer" class="dialog-footer">
  122 + <el-button @click.native="editFormVisible = false">取消</el-button>
  123 + <el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
  124 + </div>
  125 + </el-dialog>
124 126
125 - <!--新增界面-->  
126 - <el-dialog title="新增" :visible.sync="addFormVisible" :close-on-click-modal="false">  
127 - <el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">  
128 - <el-form-item label="账号" prop="username">  
129 - <el-input v-model="addForm.username" aria-placeholder="用户名长度在5-11位,支持英文和数字"></el-input>  
130 - </el-form-item>  
131 - <el-form-item label="密码" prop="password">  
132 - <el-input v-model="addForm.password" type="password"></el-input>  
133 - </el-form-item>  
134 - <el-form-item label="姓名" prop="realname">  
135 - <el-input v-model="addForm.realname"></el-input>  
136 - </el-form-item>  
137 - <el-form-item label="电话" prop="mobilephone">  
138 - <el-input v-model="addForm.mobilephone"></el-input>  
139 - </el-form-item>  
140 - <el-form-item label="Email" prop="email">  
141 - <el-input v-model="addForm.email"></el-input>  
142 - </el-form-item>  
143 - <el-form-item label="性别">  
144 - <el-radio-group v-model="addForm.sex">  
145 - <el-radio class="radio" label="1">男</el-radio>  
146 - <el-radio class="radio" label="0">女</el-radio>  
147 - </el-radio-group>  
148 - </el-form-item>  
149 - <el-form-item label="年龄" prop="age">  
150 - <el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>  
151 - </el-form-item>  
152 - <el-form-item label="地址">  
153 - <el-input type="textarea" v-model="addForm.address"></el-input>  
154 - </el-form-item>  
155 - </el-form>  
156 - <div slot="footer" class="dialog-footer">  
157 - <el-button @click.native="addFormVisible = false">取消</el-button>  
158 - <el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>  
159 - </div>  
160 - </el-dialog> 127 + <!--新增界面-->
  128 + <el-dialog title="新增" :visible.sync="addFormVisible" :close-on-click-modal="false">
  129 + <el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
  130 + <el-form-item label="账号" prop="username">
  131 + <el-input v-model="addForm.username" aria-placeholder="用户名长度在5-11位,支持英文和数字"></el-input>
  132 + </el-form-item>
  133 + <el-form-item label="密码" prop="password">
  134 + <el-input v-model="addForm.password" type="password"></el-input>
  135 + </el-form-item>
  136 + <el-form-item label="姓名" prop="realname">
  137 + <el-input v-model="addForm.realname"></el-input>
  138 + </el-form-item>
  139 + <el-form-item label="电话" prop="mobilephone">
  140 + <el-input v-model="addForm.mobilephone"></el-input>
  141 + </el-form-item>
  142 + <el-form-item label="Email" prop="email">
  143 + <el-input v-model="addForm.email"></el-input>
  144 + </el-form-item>
  145 + <el-form-item label="性别">
  146 + <el-radio-group v-model="addForm.sex">
  147 + <el-radio class="radio" label="1">男</el-radio>
  148 + <el-radio class="radio" label="0">女</el-radio>
  149 + </el-radio-group>
  150 + </el-form-item>
  151 + <el-form-item label="年龄" prop="age">
  152 + <el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
  153 + </el-form-item>
  154 + <el-form-item label="地址">
  155 + <el-input type="textarea" v-model="addForm.address"></el-input>
  156 + </el-form-item>
  157 + </el-form>
  158 + <div slot="footer" class="dialog-footer">
  159 + <el-button @click.native="addFormVisible = false">取消</el-button>
  160 + <el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
  161 + </div>
  162 + </el-dialog>
161 163
162 - <!--权限设置-->  
163 - <el-dialog title="权限设置" :visible.sync="roleFormVisible" :close-on-click-modal="false">  
164 - <el-form :model="roleEditForm" label-width="80px" ref="roleEditForm" >  
165 - <el-form-item label="ID">  
166 - <span>{{roleEditForm.userId}}</span>  
167 - </el-form-item>  
168 - <el-form-item label="账号">  
169 - <span>{{roleEditForm.username}}</span>  
170 - </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">  
172 - </el-tree>  
173 - </el-form> 164 + <!--权限设置-->
  165 + <el-dialog title="权限设置" :visible.sync="roleFormVisible" :close-on-click-modal="false">
  166 + <el-form :model="roleEditForm" label-width="80px" ref="roleEditForm">
  167 + <el-form-item label="ID">
  168 + <span>{{roleEditForm.userId}}</span>
  169 + </el-form-item>
  170 + <el-form-item label="账号">
  171 + <span>{{roleEditForm.username}}</span>
  172 + </el-form-item>
  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">
  175 + </el-tree>
  176 + </el-form>
174 177
175 - <div slot="footer" class="dialog-footer">  
176 - <el-button @click.native="roleFormVisible = false">取消</el-button>  
177 - <el-button type="primary" @click.native="roleEditSubmit" :loading="addLoading">提交</el-button>  
178 - </div>  
179 - </el-dialog>  
180 - </section> 178 + <div slot="footer" class="dialog-footer">
  179 + <el-button @click.native="roleFormVisible = false">取消</el-button>
  180 + <el-button type="primary" @click.native="roleEditSubmit" :loading="addLoading">提交</el-button>
  181 + </div>
  182 + </el-dialog>
  183 + </section>
181 </template> 184 </template>
182 185
183 <script> 186 <script>
184 - import util from '../../common/js/util'  
185 - import NProgress from 'nprogress'  
186 - import { getUserList, removeUser, batchRemoveUser, editUser, addUser, setUserRole } from '../../api/user';  
187 - import { getList} from '../../api/role_api'; 187 + import util from '../../common/js/util'
  188 + import NProgress from 'nprogress'
  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'
189 - export default {  
190 - data() {  
191 - return {  
192 - filters: { 192 +
  193 + export default {
  194 + data() {
  195 + return {
  196 + filters: {
193 userName: '', 197 userName: '',
194 - realName: ''  
195 - },  
196 - treeDefaultProps: { 198 + realName: ''
  199 + },
  200 + treeDefaultProps: {
197 children: 'children', 201 children: 'children',
198 label: 'roleName', 202 label: 'roleName',
199 }, 203 },
200 - users: [],  
201 - total: 0, 204 + users: [],
  205 + total: 0,
202 pageNum: 1, 206 pageNum: 1,
203 pageSize: 10, 207 pageSize: 10,
204 faceImageUrl: '', 208 faceImageUrl: '',
205 - listLoading: false,  
206 - sels: [],//列表选中列  
207 - //编辑界面是否显示  
208 - editFormVisible: false,  
209 - editLoading: false,  
210 - editFormRules: {  
211 - name: [  
212 - { required: true, message: '请输入姓名', trigger: 'blur' }  
213 - ]  
214 - },  
215 - //编辑界面数据  
216 - editForm: { 209 + listLoading: false,
  210 + sels: [],//列表选中列
  211 + //编辑界面是否显示
  212 + editFormVisible: false,
  213 + editLoading: false,
  214 + editFormRules: {
  215 + name: [
  216 + {required: true, message: '请输入姓名', trigger: 'blur'}
  217 + ],
  218 + mobilephone: [
  219 + {required: true, message: '请输入手机号码', trigger: ['blur', 'change']}
  220 + ]
  221 + },
  222 + //编辑界面数据
  223 + editForm: {
217 userId: 1, 224 userId: 1,
218 username: '', 225 username: '',
219 - password: '',  
220 - sex: 1,  
221 - creattime: '', 226 + password: '',
  227 + sex: '1',
  228 + creattime: undefined,
222 address: '', 229 address: '',
223 - realname: '',  
224 - email: '',  
225 - mobilephone: '',  
226 - state: 'true'  
227 - }, 230 + realname: '',
  231 + email: '',
  232 + mobilephone: '',
  233 + state: true
  234 + },
228 235
229 - addFormVisible: false,//新增界面是否显示  
230 - addLoading: false,  
231 - addFormRules: { 236 + addFormVisible: false,//新增界面是否显示
  237 + addLoading: false,
  238 + addFormRules: {
232 username: [ 239 username: [
233 - { required: true, message: '请输入姓名,用户名长度在5-11位,支持英文和数字', trigger: 'blur' },  
234 - ],  
235 - password: [  
236 - { required: true, message: '请输入密码,用户名长度在6-18位,支持英文和数字和非空字符', trigger: 'blur'}  
237 - ]  
238 - },  
239 - //用户角色配置 240 + {required: true, message: '请输入姓名,用户名长度在5-11位,支持英文和数字', trigger: 'blur'},
  241 + ],
  242 + password: [
  243 + {required: true, message: '请输入密码,用户名长度在6-18位,支持英文和数字和非空字符', trigger: 'blur'}
  244 + ],
  245 + mobilephone: [
  246 + {required: true, message: '请输入手机号码', trigger: ['blur', 'change']},
  247 + ],
  248 + },
  249 + //用户角色配置
240 roleFormVisible: false, 250 roleFormVisible: false,
241 - //新增界面数据  
242 - addForm: { 251 + //新增界面数据
  252 + addForm: {
243 username: '', 253 username: '',
244 password: '', 254 password: '',
245 sex: 1, 255 sex: 1,
246 address: '', 256 address: '',
247 realname: '', 257 realname: '',
248 - email: '', 258 + email: '',
249 mobilephone: '', 259 mobilephone: '',
250 - age: 1  
251 - }, 260 + age: 1
  261 + },
252 roleEditForm: { 262 roleEditForm: {
253 userId: 1, 263 userId: 1,
254 - username: "",  
255 - roles: []  
256 - },  
257 - roles: [], 264 + username: "",
  265 + roles: []
  266 + },
  267 + roles: [],
258 roleIds: [] 268 roleIds: []
259 269
260 - }  
261 - },  
262 - methods: {  
263 - //性别显示转换  
264 - formatSex: function (row, column) {  
265 - return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';  
266 - }, 270 + }
  271 + },
  272 + methods: {
  273 + //性别显示转换
  274 + formatSex: function (row, column) {
  275 + return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
  276 + },
267 formatState: function (row, column) { 277 formatState: function (row, column) {
268 return row.state == true ? '是' : row.state == false ? '否' : '未知'; 278 return row.state == true ? '是' : row.state == false ? '否' : '未知';
269 }, 279 },
270 - handleCurrentChange(val) {  
271 - this.pageNum = val;  
272 - this.getUsers();  
273 - },  
274 - //获取用户列表  
275 - getUsers:function() {  
276 - let para = { 280 + handleCurrentChange(val) {
  281 + this.pageNum = val;
  282 + this.getUsers();
  283 + },
  284 + //获取用户列表
  285 + getUsers: function () {
  286 + let para = {
277 pageNum: this.pageNum, 287 pageNum: this.pageNum,
278 pageSize: this.pageSize, 288 pageSize: this.pageSize,
279 userName: this.filters.userName, 289 userName: this.filters.userName,
280 realName: this.filters.realName 290 realName: this.filters.realName
281 - };  
282 - this.listLoading = true; 291 + };
  292 + this.listLoading = true;
283 getUserList(para).then((res) => { 293 getUserList(para).then((res) => {
284 let response = res.data.data; 294 let response = res.data.data;
285 - this.total = response.total;  
286 - this.users = response.list;  
287 - this.listLoading = false;  
288 - //NProgress.done();  
289 - }).catch((error) => { 295 + this.total = response.total;
  296 + this.users = response.list;
  297 + this.listLoading = false;
  298 + //NProgress.done();
  299 + }).catch((error) => {
290 this.listLoading = false; 300 this.listLoading = false;
291 this.$message.error(error.toString()); 301 this.$message.error(error.toString());
292 - }); 302 + });
293 303
294 - },  
295 - //删除  
296 - handleDel: function (index, row) {  
297 - this.$confirm('确认删除该记录吗?', '提示', {  
298 - type: 'warning'  
299 - }).then(() => {  
300 - this.listLoading = true;  
301 - //NProgress.start();  
302 - let para = { userId: row.userId };  
303 - removeUser(para).then((res) => {  
304 - this.listLoading = false;  
305 - //NProgress.done();  
306 - this.$message({  
307 - message: '删除成功',  
308 - type: 'success'  
309 - });  
310 - this.getUsers();  
311 - }).catch((error) => { 304 + },
  305 + //删除
  306 + handleDel: function (index, row) {
  307 + this.$confirm('确认删除该记录吗?', '提示', {
  308 + type: 'warning'
  309 + }).then(() => {
  310 + this.listLoading = true;
  311 + //NProgress.start();
  312 + let para = {userId: row.userId};
  313 + removeUser(para).then((res) => {
  314 + this.listLoading = false;
  315 + //NProgress.done();
  316 + this.$message({
  317 + message: '删除成功',
  318 + type: 'success'
  319 + });
  320 + this.getUsers();
  321 + }).catch((error) => {
312 this.listLoading = false; 322 this.listLoading = false;
313 alert(error); 323 alert(error);
314 - });  
315 - }).catch();  
316 - }, 324 + });
  325 + }).catch();
  326 + },
317 /** 327 /**
318 - * 显示编辑界面 328 + * 显示编辑界面
319 * @param index 329 * @param index
320 * @param row 为这行的数据对象 330 * @param row 为这行的数据对象
321 */ 331 */
322 - handleEdit: function (index, row) {  
323 - this.editFormVisible = true;  
324 - this.editForm = Object.assign({}, row);  
325 - }, 332 + handleEdit: function (index, row) {
  333 + this.editFormVisible = true;
  334 + this.editForm = Object.assign({}, row);
  335 + },
326 roleEdit: function (index, row) { 336 roleEdit: function (index, row) {
327 this.roleFormVisible = true; 337 this.roleFormVisible = true;
328 this.getRoles(); 338 this.getRoles();
@@ -331,13 +341,13 @@ @@ -331,13 +341,13 @@
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 }
339 }); 349 });
340 - } 350 + }
341 this.$nextTick(() => { 351 this.$nextTick(() => {
342 //反向适配 352 //反向适配
343 this.$refs.tree.setCheckedKeys(this.roleIds); 353 this.$refs.tree.setCheckedKeys(this.roleIds);
@@ -353,43 +363,43 @@ @@ -353,43 +363,43 @@
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 });
364 374
365 375
366 }, 376 },
367 - //显示新增界面,每次点开初始化数据  
368 - handleAdd: function () {  
369 - this.addFormVisible = true;  
370 - this.addForm = { 377 + //显示新增界面,每次点开初始化数据
  378 + handleAdd: function () {
  379 + this.addFormVisible = true;
  380 + this.addForm = {
371 username: '', 381 username: '',
372 password: '', 382 password: '',
373 sex: 1, 383 sex: 1,
374 address: '', 384 address: '',
375 realname: '', 385 realname: '',
376 - email: '', 386 + email: '',
377 mobilephone: '', 387 mobilephone: '',
378 age: 1 388 age: 1
379 - };  
380 - },  
381 - //编辑  
382 - editSubmit: function () {  
383 - this.$refs.editForm.validate((valid) => {  
384 - if (valid) {  
385 - this.$confirm('确认提交吗?', '提示', {}).then(() => {  
386 - this.editLoading = true;  
387 - //NProgress.start();  
388 - let para = Object.assign({}, this.editForm);  
389 - //不需要提交的 去掉,后端不好接收  
390 - para.authorities = null;  
391 - para.permissions = null;  
392 - para.roles = null; 389 + };
  390 + },
  391 + //编辑
  392 + editSubmit: function () {
  393 + this.$refs.editForm.validate((valid) => {
  394 + if (valid) {
  395 + this.$confirm('确认提交吗?', '提示', {}).then(() => {
  396 + this.editLoading = true;
  397 + //NProgress.start();
  398 + // let para = Object.assign({}, this.editForm);
  399 + //不需要提交的 去掉,后端不好接收
  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中日期发生变化;
@@ -397,127 +407,127 @@ @@ -397,127 +407,127 @@
397 所以使用 moment 日期格式化插件将时间转换成 [ Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) ] 格 407 所以使用 moment 日期格式化插件将时间转换成 [ Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) ] 格
398 式; 408 式;
399 */ 409 */
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();  
406 - this.$message({  
407 - message: '提交成功',  
408 - type: 'success'  
409 - });  
410 - this.$refs['editForm'].resetFields();  
411 - this.editFormVisible = false;  
412 - this.getUsers();  
413 - }).catch(error => alert(error));  
414 - });  
415 - }  
416 - });  
417 - },  
418 - //新增  
419 - addSubmit: function () {  
420 - this.$refs.addForm.validate((valid) => {  
421 - if (valid) {  
422 - this.$confirm('确认提交吗?', '提示', {}).then(() => {  
423 - this.addLoading = true;  
424 - let para = Object.assign({}, this.addForm); 415 + //NProgress.done();
  416 + this.$message({
  417 + message: '提交成功',
  418 + type: 'success'
  419 + });
  420 + this.$refs['editForm'].resetFields();
  421 + this.editFormVisible = false;
  422 + this.getUsers();
  423 + }).catch(error => alert(error));
  424 + });
  425 + }
  426 + });
  427 + },
  428 + //新增
  429 + addSubmit: function () {
  430 + this.$refs.addForm.validate((valid) => {
  431 + if (valid) {
  432 + this.$confirm('确认提交吗?', '提示', {}).then(() => {
  433 + this.addLoading = true;
  434 + let para = Object.assign({}, this.addForm);
425 // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd'); 435 // para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
426 - addUser(para).then((res) => {  
427 - this.addLoading = false;  
428 - //NProgress.done();  
429 - this.$message({  
430 - message: '提交成功',  
431 - type: 'success'  
432 - });  
433 - this.$refs['addForm'].resetFields();  
434 - this.addFormVisible = false;  
435 - this.getUsers();  
436 - }).catch(error => { 436 + addUser(para).then((res) => {
  437 + this.addLoading = false;
  438 + //NProgress.done();
  439 + this.$message({
  440 + message: '提交成功',
  441 + type: 'success'
  442 + });
  443 + this.$refs['addForm'].resetFields();
  444 + this.addFormVisible = false;
  445 + this.getUsers();
  446 + }).catch(error => {
437 this.addLoading = false; 447 this.addLoading = false;
438 - this.$message({  
439 - message: error.message,  
440 - type: 'error'  
441 - });  
442 - });  
443 - });  
444 - }  
445 - });  
446 - },  
447 - selsChange: function (sels) {  
448 - this.sels = sels;  
449 - },  
450 - //批量删除  
451 - batchRemove: function () {  
452 - var ids = this.sels.map(item => item.userId).toString();  
453 - this.$confirm('确认删除选中记录吗?', '提示', {  
454 - type: 'warning'  
455 - }).then(() => {  
456 - this.listLoading = true;  
457 - //NProgress.start();  
458 - let para = { ids: ids };  
459 - batchRemoveUser(para).then((res) => {  
460 - this.listLoading = false;  
461 - //NProgress.done();  
462 - this.$message({  
463 - message: '删除成功',  
464 - type: 'success'  
465 - });  
466 - this.getUsers();  
467 - });  
468 - }).catch(() => { 448 + this.$message({
  449 + message: error.message,
  450 + type: 'error'
  451 + });
  452 + });
  453 + });
  454 + }
  455 + });
  456 + },
  457 + selsChange: function (sels) {
  458 + this.sels = sels;
  459 + },
  460 + //批量删除
  461 + batchRemove: function () {
  462 + var ids = this.sels.map(item => item.userId).toString();
  463 + this.$confirm('确认删除选中记录吗?', '提示', {
  464 + type: 'warning'
  465 + }).then(() => {
  466 + this.listLoading = true;
  467 + //NProgress.start();
  468 + let para = {ids: ids};
  469 + batchRemoveUser(para).then((res) => {
  470 + this.listLoading = false;
  471 + //NProgress.done();
  472 + this.$message({
  473 + message: '删除成功',
  474 + type: 'success'
  475 + });
  476 + this.getUsers();
  477 + });
  478 + }).catch(() => {
469 479
470 - });  
471 - }, 480 + });
  481 + },
472 roleEditSubmit: function () { 482 roleEditSubmit: function () {
473 this.$confirm('确认提交吗?', '提示', {}).then(() => { 483 this.$confirm('确认提交吗?', '提示', {}).then(() => {
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'
483 }); 493 });
484 - }  
485 - this.getUsers(); 494 + }
  495 + this.getUsers();
486 this.roleFormVisible = false; 496 this.roleFormVisible = false;
487 }).catch(err => { 497 }).catch(err => {
488 alert(err); 498 alert(err);
489 - }); 499 + });
490 console.log(para); 500 console.log(para);
491 - }); 501 + });
  502 + },
  503 + handleAvatarSuccess: function (response) {
  504 + this.faceImageUrl = 'http://127.0.0.1:7003/' + response.data;
492 }, 505 },
493 - handleAvatarSuccess: function(response){  
494 - this.faceImageUrl = 'http://127.0.0.1:7003/'+response.data;  
495 - },  
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);  
504 - } 512 + } else {
  513 + this.roleIds.splice(this.roleIds.contains(data.roleId), 1);
  514 + }
505 // console.log(data, checked, indeterminate); 515 // console.log(data, checked, indeterminate);
506 console.log(this.roleIds); 516 console.log(this.roleIds);
507 } 517 }
508 - },  
509 - mounted() {  
510 - this.getUsers();  
511 - },  
512 - computed: { 518 + },
  519 + mounted() {
  520 + this.getUsers();
  521 + },
  522 + computed: {
513 hideShow() {//当图片多于一张的时候,就隐藏上传框 523 hideShow() {//当图片多于一张的时候,就隐藏上传框
514 return this.file === '' ? false : true 524 return this.file === '' ? false : true
515 } 525 }
516 }, 526 },
517 - } 527 + }
518 528
519 </script> 529 </script>
520 530
521 <style scoped> 531 <style scoped>
522 532
523 -</style>  
  533 +</style>