正在显示
16 个修改的文件
包含
3622 行增加
和
671 行删除
| @@ -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 | } | 
src/api/message_bus.js
0 → 100644
| 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> | 
src/views/bus/Exchange.vue
0 → 100644
| 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> | 
src/views/bus/MessageNote.vue
0 → 100644
| 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> | 
src/views/bus/Queue.vue
0 → 100644
| 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> | 
src/views/bus/RoutingKey.vue
0 → 100644
| 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> | 
src/views/bus/Server.vue
0 → 100644
| 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> | 
src/views/bus/UserMessageBinding.vue
0 → 100644
| 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> | 
src/views/bus/VirtualHost.vue
0 → 100644
| 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> | 
- 
请 注册 或 登录 后发表评论
