作者 王勇

修改前的push

@@ -92,6 +92,12 @@ @@ -92,6 +92,12 @@
92 "printj": "~1.1.0" 92 "printj": "~1.1.0"
93 } 93 }
94 }, 94 },
  95 + "after": {
  96 + "version": "0.8.2",
  97 + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
  98 + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=",
  99 + "dev": true
  100 + },
95 "ajv": { 101 "ajv": {
96 "version": "6.10.2", 102 "version": "6.10.2",
97 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", 103 "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
@@ -520,6 +526,12 @@ @@ -520,6 +526,12 @@
520 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 526 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
521 "dev": true 527 "dev": true
522 }, 528 },
  529 + "arraybuffer.slice": {
  530 + "version": "0.0.7",
  531 + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
  532 + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==",
  533 + "dev": true
  534 + },
523 "asn1": { 535 "asn1": {
524 "version": "0.2.4", 536 "version": "0.2.4",
525 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 537 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -1538,6 +1550,12 @@ @@ -1538,6 +1550,12 @@
1538 "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 1550 "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
1539 "dev": true 1551 "dev": true
1540 }, 1552 },
  1553 + "backo2": {
  1554 + "version": "1.0.2",
  1555 + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
  1556 + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
  1557 + "dev": true
  1558 + },
1541 "balanced-match": { 1559 "balanced-match": {
1542 "version": "1.0.0", 1560 "version": "1.0.0",
1543 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1561 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@@ -1610,6 +1628,12 @@ @@ -1610,6 +1628,12 @@
1610 } 1628 }
1611 } 1629 }
1612 }, 1630 },
  1631 + "base64-arraybuffer": {
  1632 + "version": "0.1.5",
  1633 + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
  1634 + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=",
  1635 + "dev": true
  1636 + },
1613 "base64-js": { 1637 "base64-js": {
1614 "version": "1.3.1", 1638 "version": "1.3.1",
1615 "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 1639 "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
@@ -1625,6 +1649,15 @@ @@ -1625,6 +1649,15 @@
1625 "tweetnacl": "^0.14.3" 1649 "tweetnacl": "^0.14.3"
1626 } 1650 }
1627 }, 1651 },
  1652 + "better-assert": {
  1653 + "version": "1.0.2",
  1654 + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz",
  1655 + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=",
  1656 + "dev": true,
  1657 + "requires": {
  1658 + "callsite": "1.0.0"
  1659 + }
  1660 + },
1628 "bfj": { 1661 "bfj": {
1629 "version": "6.1.2", 1662 "version": "6.1.2",
1630 "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", 1663 "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz",
@@ -1649,6 +1682,12 @@ @@ -1649,6 +1682,12 @@
1649 "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", 1682 "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
1650 "dev": true 1683 "dev": true
1651 }, 1684 },
  1685 + "blob": {
  1686 + "version": "0.0.5",
  1687 + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
  1688 + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==",
  1689 + "dev": true
  1690 + },
1652 "block-stream": { 1691 "block-stream": {
1653 "version": "0.0.9", 1692 "version": "0.0.9",
1654 "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", 1693 "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
@@ -1900,6 +1939,12 @@ @@ -1900,6 +1939,12 @@
1900 } 1939 }
1901 } 1940 }
1902 }, 1941 },
  1942 + "callsite": {
  1943 + "version": "1.0.0",
  1944 + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz",
  1945 + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=",
  1946 + "dev": true
  1947 + },
1903 "callsites": { 1948 "callsites": {
1904 "version": "3.1.0", 1949 "version": "3.1.0",
1905 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1950 "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -2434,12 +2479,24 @@ @@ -2434,12 +2479,24 @@
2434 "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 2479 "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
2435 "dev": true 2480 "dev": true
2436 }, 2481 },
  2482 + "component-bind": {
  2483 + "version": "1.0.0",
  2484 + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
  2485 + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=",
  2486 + "dev": true
  2487 + },
2437 "component-emitter": { 2488 "component-emitter": {
2438 "version": "1.3.0", 2489 "version": "1.3.0",
2439 "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 2490 "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
2440 "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 2491 "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
2441 "dev": true 2492 "dev": true
2442 }, 2493 },
  2494 + "component-inherit": {
  2495 + "version": "0.0.3",
  2496 + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
  2497 + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
  2498 + "dev": true
  2499 + },
2443 "concat-map": { 2500 "concat-map": {
2444 "version": "0.0.1", 2501 "version": "0.0.1",
2445 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2502 "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -3295,6 +3352,64 @@ @@ -3295,6 +3352,64 @@
3295 "once": "^1.4.0" 3352 "once": "^1.4.0"
3296 } 3353 }
3297 }, 3354 },
  3355 + "engine.io-client": {
  3356 + "version": "3.4.2",
  3357 + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.2.tgz",
  3358 + "integrity": "sha512-AWjc1Xg06a6UPFOBAzJf48W1UR/qKYmv/ubgSCumo9GXgvL/xGIvo05dXoBL+2NTLMipDI7in8xK61C17L25xg==",
  3359 + "dev": true,
  3360 + "requires": {
  3361 + "component-emitter": "~1.3.0",
  3362 + "component-inherit": "0.0.3",
  3363 + "debug": "~4.1.0",
  3364 + "engine.io-parser": "~2.2.0",
  3365 + "has-cors": "1.1.0",
  3366 + "indexof": "0.0.1",
  3367 + "parseqs": "0.0.5",
  3368 + "parseuri": "0.0.5",
  3369 + "ws": "~6.1.0",
  3370 + "xmlhttprequest-ssl": "~1.5.4",
  3371 + "yeast": "0.1.2"
  3372 + },
  3373 + "dependencies": {
  3374 + "debug": {
  3375 + "version": "4.1.1",
  3376 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
  3377 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
  3378 + "dev": true,
  3379 + "requires": {
  3380 + "ms": "^2.1.1"
  3381 + }
  3382 + },
  3383 + "ms": {
  3384 + "version": "2.1.2",
  3385 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
  3386 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
  3387 + "dev": true
  3388 + },
  3389 + "ws": {
  3390 + "version": "6.1.4",
  3391 + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz",
  3392 + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==",
  3393 + "dev": true,
  3394 + "requires": {
  3395 + "async-limiter": "~1.0.0"
  3396 + }
  3397 + }
  3398 + }
  3399 + },
  3400 + "engine.io-parser": {
  3401 + "version": "2.2.0",
  3402 + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz",
  3403 + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==",
  3404 + "dev": true,
  3405 + "requires": {
  3406 + "after": "0.8.2",
  3407 + "arraybuffer.slice": "~0.0.7",
  3408 + "base64-arraybuffer": "0.1.5",
  3409 + "blob": "0.0.5",
  3410 + "has-binary2": "~1.0.2"
  3411 + }
  3412 + },
3298 "enhanced-resolve": { 3413 "enhanced-resolve": {
3299 "version": "3.4.1", 3414 "version": "3.4.1",
3300 "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", 3415 "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
@@ -4840,6 +4955,29 @@ @@ -4840,6 +4955,29 @@
4840 } 4955 }
4841 } 4956 }
4842 }, 4957 },
  4958 + "has-binary2": {
  4959 + "version": "1.0.3",
  4960 + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
  4961 + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
  4962 + "dev": true,
  4963 + "requires": {
  4964 + "isarray": "2.0.1"
  4965 + },
  4966 + "dependencies": {
  4967 + "isarray": {
  4968 + "version": "2.0.1",
  4969 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
  4970 + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
  4971 + "dev": true
  4972 + }
  4973 + }
  4974 + },
  4975 + "has-cors": {
  4976 + "version": "1.1.0",
  4977 + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
  4978 + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
  4979 + "dev": true
  4980 + },
4843 "has-flag": { 4981 "has-flag": {
4844 "version": "3.0.0", 4982 "version": "3.0.0",
4845 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 4983 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -5182,6 +5320,12 @@ @@ -5182,6 +5320,12 @@
5182 "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", 5320 "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
5183 "dev": true 5321 "dev": true
5184 }, 5322 },
  5323 + "indexof": {
  5324 + "version": "0.0.1",
  5325 + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
  5326 + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
  5327 + "dev": true
  5328 + },
5185 "inflight": { 5329 "inflight": {
5186 "version": "1.0.6", 5330 "version": "1.0.6",
5187 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 5331 "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -9411,6 +9555,12 @@ @@ -9411,6 +9555,12 @@
9411 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 9555 "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
9412 "dev": true 9556 "dev": true
9413 }, 9557 },
  9558 + "object-component": {
  9559 + "version": "0.0.3",
  9560 + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz",
  9561 + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=",
  9562 + "dev": true
  9563 + },
9414 "object-copy": { 9564 "object-copy": {
9415 "version": "0.1.0", 9565 "version": "0.1.0",
9416 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 9566 "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
@@ -9719,6 +9869,24 @@ @@ -9719,6 +9869,24 @@
9719 "error-ex": "^1.2.0" 9869 "error-ex": "^1.2.0"
9720 } 9870 }
9721 }, 9871 },
  9872 + "parseqs": {
  9873 + "version": "0.0.5",
  9874 + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz",
  9875 + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=",
  9876 + "dev": true,
  9877 + "requires": {
  9878 + "better-assert": "~1.0.0"
  9879 + }
  9880 + },
  9881 + "parseuri": {
  9882 + "version": "0.0.5",
  9883 + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz",
  9884 + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=",
  9885 + "dev": true,
  9886 + "requires": {
  9887 + "better-assert": "~1.0.0"
  9888 + }
  9889 + },
9722 "parseurl": { 9890 "parseurl": {
9723 "version": "1.3.3", 9891 "version": "1.3.3",
9724 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 9892 "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -11675,6 +11843,85 @@ @@ -11675,6 +11843,85 @@
11675 "kind-of": "^3.2.0" 11843 "kind-of": "^3.2.0"
11676 } 11844 }
11677 }, 11845 },
  11846 + "socket.io-client": {
  11847 + "version": "2.3.0",
  11848 + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz",
  11849 + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==",
  11850 + "dev": true,
  11851 + "requires": {
  11852 + "backo2": "1.0.2",
  11853 + "base64-arraybuffer": "0.1.5",
  11854 + "component-bind": "1.0.0",
  11855 + "component-emitter": "1.2.1",
  11856 + "debug": "~4.1.0",
  11857 + "engine.io-client": "~3.4.0",
  11858 + "has-binary2": "~1.0.2",
  11859 + "has-cors": "1.1.0",
  11860 + "indexof": "0.0.1",
  11861 + "object-component": "0.0.3",
  11862 + "parseqs": "0.0.5",
  11863 + "parseuri": "0.0.5",
  11864 + "socket.io-parser": "~3.3.0",
  11865 + "to-array": "0.1.4"
  11866 + },
  11867 + "dependencies": {
  11868 + "component-emitter": {
  11869 + "version": "1.2.1",
  11870 + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
  11871 + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
  11872 + "dev": true
  11873 + },
  11874 + "debug": {
  11875 + "version": "4.1.1",
  11876 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
  11877 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
  11878 + "dev": true,
  11879 + "requires": {
  11880 + "ms": "^2.1.1"
  11881 + }
  11882 + },
  11883 + "ms": {
  11884 + "version": "2.1.2",
  11885 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
  11886 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
  11887 + "dev": true
  11888 + }
  11889 + }
  11890 + },
  11891 + "socket.io-parser": {
  11892 + "version": "3.3.0",
  11893 + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz",
  11894 + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==",
  11895 + "dev": true,
  11896 + "requires": {
  11897 + "component-emitter": "1.2.1",
  11898 + "debug": "~3.1.0",
  11899 + "isarray": "2.0.1"
  11900 + },
  11901 + "dependencies": {
  11902 + "component-emitter": {
  11903 + "version": "1.2.1",
  11904 + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
  11905 + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
  11906 + "dev": true
  11907 + },
  11908 + "debug": {
  11909 + "version": "3.1.0",
  11910 + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
  11911 + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
  11912 + "dev": true,
  11913 + "requires": {
  11914 + "ms": "2.0.0"
  11915 + }
  11916 + },
  11917 + "isarray": {
  11918 + "version": "2.0.1",
  11919 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
  11920 + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=",
  11921 + "dev": true
  11922 + }
  11923 + }
  11924 + },
11678 "sort-keys": { 11925 "sort-keys": {
11679 "version": "1.1.2", 11926 "version": "1.1.2",
11680 "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", 11927 "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -12104,6 +12351,12 @@ @@ -12104,6 +12351,12 @@
12104 "os-tmpdir": "~1.0.2" 12351 "os-tmpdir": "~1.0.2"
12105 } 12352 }
12106 }, 12353 },
  12354 + "to-array": {
  12355 + "version": "0.1.4",
  12356 + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
  12357 + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=",
  12358 + "dev": true
  12359 + },
12107 "to-arraybuffer": { 12360 "to-arraybuffer": {
12108 "version": "1.0.1", 12361 "version": "1.0.1",
12109 "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 12362 "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
@@ -12655,6 +12908,15 @@ @@ -12655,6 +12908,15 @@
12655 "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-2.8.1.tgz", 12908 "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-2.8.1.tgz",
12656 "integrity": "sha512-MC4jacHBhTPKtmcfzvaj2N7g6jgJ/Z/eIjZdt+yUaUOM1iKC0OUIlO/xCtz6OZFFTNUJs/1YNro2GN/lE+nOXA==" 12909 "integrity": "sha512-MC4jacHBhTPKtmcfzvaj2N7g6jgJ/Z/eIjZdt+yUaUOM1iKC0OUIlO/xCtz6OZFFTNUJs/1YNro2GN/lE+nOXA=="
12657 }, 12910 },
  12911 + "vue-socket.io": {
  12912 + "version": "3.0.9",
  12913 + "resolved": "https://registry.npmjs.org/vue-socket.io/-/vue-socket.io-3.0.9.tgz",
  12914 + "integrity": "sha512-imgrZL+UuyMhEyOOD6Cl11eDtEaVn606e3mCD/2s/oUAB511Ckqon4U7y97t6dwQgLCKW+tfA8aFhF5d3Eogdw==",
  12915 + "dev": true,
  12916 + "requires": {
  12917 + "socket.io-client": "^2.1.1"
  12918 + }
  12919 + },
12658 "vue-style-loader": { 12920 "vue-style-loader": {
12659 "version": "2.0.5", 12921 "version": "2.0.5",
12660 "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-2.0.5.tgz", 12922 "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-2.0.5.tgz",
@@ -13201,6 +13463,12 @@ @@ -13201,6 +13463,12 @@
13201 "wmf": "~1.0.1" 13463 "wmf": "~1.0.1"
13202 } 13464 }
13203 }, 13465 },
  13466 + "xmlhttprequest-ssl": {
  13467 + "version": "1.5.5",
  13468 + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
  13469 + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=",
  13470 + "dev": true
  13471 + },
13204 "xtend": { 13472 "xtend": {
13205 "version": "4.0.2", 13473 "version": "4.0.2",
13206 "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 13474 "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
@@ -13306,6 +13574,12 @@ @@ -13306,6 +13574,12 @@
13306 } 13574 }
13307 } 13575 }
13308 }, 13576 },
  13577 + "yeast": {
  13578 + "version": "0.1.2",
  13579 + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
  13580 + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
  13581 + "dev": true
  13582 + },
13309 "zrender": { 13583 "zrender": {
13310 "version": "3.7.4", 13584 "version": "3.7.4",
13311 "resolved": "https://registry.npmjs.org/zrender/-/zrender-3.7.4.tgz", 13585 "resolved": "https://registry.npmjs.org/zrender/-/zrender-3.7.4.tgz",
@@ -68,6 +68,7 @@ @@ -68,6 +68,7 @@
68 "shelljs": "^0.7.6", 68 "shelljs": "^0.7.6",
69 "url-loader": "^0.5.8", 69 "url-loader": "^0.5.8",
70 "vue-loader": "^11.1.4", 70 "vue-loader": "^11.1.4",
  71 + "vue-socket.io": "^3.0.9",
71 "vue-style-loader": "^2.0.0", 72 "vue-style-loader": "^2.0.0",
72 "vue-template-compiler": "^2.2.4", 73 "vue-template-compiler": "^2.2.4",
73 "webpack": "^2.2.1", 74 "webpack": "^2.2.1",
  1 +import http from './http.js'
  2 +
  3 +let baseUrl = 'cgonms-provide'
  4 +// let baseUrl = 'http://127.0.0.1:9999/dispatch'
  5 +/*用户端,管理员端调度记录,查询车辆调度记录*/
  6 +
  7 +export const getExitDataAnalysis = params =>{return http.get(`${baseUrl}/cgoNms/getInfo`, params);};
  8 +
  9 +export const downExcel = params => { return http.post(`${baseUrl}/exit/excel`,params)};
  1 +import watcher from "element-ui/packages/table/src/store/watcher";
1 2
2 var websock = null; 3 var websock = null;
3 var global_callback = null; 4 var global_callback = null;
4 -var serverPort = '10003'; //webSocket连接端口 5 +var serverPort = '9001'; //webSocket连接端口
  6 +var sid = sessionStorage.getItem('token');
  7 +var socketMessage;
  8 +var socketStatus;
  9 +var socketDataList;
  10 +var msgJson;
5 11
6 -  
7 -function getWebIP(){ 12 +function getWebIP() {
8 var curIP = window.location.hostname; 13 var curIP = window.location.hostname;
9 return curIP; 14 return curIP;
10 } 15 }
11 16
12 -function initWebSocket(){ //初始化weosocket 17 +//初始化weosocket
  18 +function initWebSocket() {
  19 + var sid = sessionStorage.getItem('token');
13 //ws地址 20 //ws地址
14 - var wsuri = "ws://" +getWebIP()+ ":" + serverPort+"/log"; 21 + var wsuri = "ws://" + getWebIP() + ":" + serverPort + "/websocket/" + sid;
15 websock = new WebSocket(wsuri); 22 websock = new WebSocket(wsuri);
16 - websock.onmessage = function(e){ 23 + websock.onmessage = function (e) {
17 websocketonmessage(e); 24 websocketonmessage(e);
18 } 25 }
19 - websock.onclose = function(e){ 26 + websock.onclose = function (e) {
20 websocketclose(e); 27 websocketclose(e);
21 } 28 }
22 - websock.onopen = function () {  
23 - websocketOpen(); 29 + websock.onopen = function (e) {
  30 + websocketOpen(e);
24 } 31 }
25 32
26 //连接发生错误的回调方法 33 //连接发生错误的回调方法
27 - websock.onerror = function () { 34 + websock.onerror = function (e) {
28 console.log("WebSocket连接发生错误"); 35 console.log("WebSocket连接发生错误");
29 } 36 }
30 } 37 }
31 38
32 // 实际调用的方法 39 // 实际调用的方法
33 -function sendSock(agentData,callback){ 40 +function sendSock(agentData, callback) {
34 global_callback = callback; 41 global_callback = callback;
35 if (websock.readyState === websock.OPEN) { 42 if (websock.readyState === websock.OPEN) {
36 //若是ws开启状态 43 //若是ws开启状态
37 websocketsend(agentData) 44 websocketsend(agentData)
38 - }else if (websock.readyState === websock.CONNECTING) { 45 + } else if (websock.readyState === websock.CONNECTING) {
39 // 若是 正在开启状态,则等待1s后重新调用 46 // 若是 正在开启状态,则等待1s后重新调用
40 setTimeout(function () { 47 setTimeout(function () {
41 - sendSock(agentData,callback); 48 + sendSock(agentData, callback);
42 }, 1000); 49 }, 1000);
43 - }else { 50 + } else {
44 // 若未开启 ,则等待1s后重新调用 51 // 若未开启 ,则等待1s后重新调用
45 setTimeout(function () { 52 setTimeout(function () {
46 - sendSock(agentData,callback); 53 + sendSock(agentData, callback);
47 }, 1000); 54 }, 1000);
48 } 55 }
49 } 56 }
50 57
51 //数据接收 58 //数据接收
52 -function websocketonmessage(e){  
53 - global_callback(JSON.parse(e.data)); 59 +function websocketonmessage(e) {
  60 +
  61 + // console.log("------>"+e.data);
  62 + msgJson = JSON.parse(e.data);
  63 + socketMessage = msgJson.message;
  64 + console.log(socketMessage)
  65 + socketStatus = msgJson.status;
  66 + socketDataList = msgJson.data;
  67 + console.log(msgJson);
  68 + // global_callback(JSON.parse(e.data));
  69 +
54 } 70 }
55 71
56 //数据发送 72 //数据发送
57 -function websocketsend(agentData){ 73 +function websocketsend(agentData) {
58 websock.send(JSON.stringify(agentData)); 74 websock.send(JSON.stringify(agentData));
59 } 75 }
60 76
61 //关闭 77 //关闭
62 -function websocketclose(e){  
63 - console.log("connection closed (" + e.code + ")"); 78 +function websocketclose(e) {
  79 + console.log("connection closed");
64 } 80 }
65 81
66 -function websocketOpen(e){  
67 - console.log("连接成功"); 82 +function websocketOpen(e) {
  83 + console.log("连接成功" + sid);
68 } 84 }
69 85
70 -// initWebSocket();  
71 -  
72 -export{sendSock}  
73 - 86 +export { initWebSocket,websocketclose,socketMessage, socketStatus, socketDataList,msgJson}
  1 +import Vue from 'vue'
  2 +import VueSocketIO from 'vue-socket.io'
  3 +
  4 +
  5 +var a;
  6 +var wesocket = {
  7 + sid: sessionStorage.getItem('token'),
  8 + serverIp: getWebIP(),
  9 + serverPort: '9001',
  10 + debug: true,
  11 + connection: "ws://" + this.serverIp + ":" + this.serverPort + "/websocket/" + this.sid,
  12 + vuex: {}
  13 +}
  14 +function getWebIP() {
  15 + var curIP = window.location.hostname;
  16 + return curIP;
  17 +}
  18 +if (wesocket.connection != "") {
  19 + Vue.use(new VueSocketIO(wesocket))
  20 +
  21 +}
  22 +export default a;
1 -  
2 import Vue from 'vue' 1 import Vue from 'vue'
3 import App from './App' 2 import App from './App'
4 import ElementUI from 'element-ui' 3 import ElementUI from 'element-ui'
@@ -11,22 +10,18 @@ import axios from 'axios' @@ -11,22 +10,18 @@ import axios from 'axios'
11 import rout from './routes' 10 import rout from './routes'
12 import Mock from './mock' 11 import Mock from './mock'
13 import i18n from './lang' 12 import i18n from './lang'
  13 +import VueSocketIO from './lib/websocket/socket'
14 import 'font-awesome/css/font-awesome.min.css' 14 import 'font-awesome/css/font-awesome.min.css'
15 -  
16 -import * as socketApi from './api/socket'  
17 import '@/styles/index.scss' 15 import '@/styles/index.scss'
18 16
19 17
20 //定义一个全局过滤器实现日期格式化 18 //定义一个全局过滤器实现日期格式化
21 -Vue.filter('datefmt',function(input,fmtstring){ 19 +Vue.filter('datefmt', function (input, fmtstring) {
22 20
23 return moment(input).format(fmtstring) 21 return moment(input).format(fmtstring)
24 22
25 }); 23 });
26 24
27 -// 注册websocket组件到VUE  
28 -Vue.prototype.socketApi = socketApi  
29 -  
30 Vue.config.productionTip = false 25 Vue.config.productionTip = false
31 Mock.bootstrap(); 26 Mock.bootstrap();
32 Vue.use(ElementUI) 27 Vue.use(ElementUI)
@@ -38,9 +33,9 @@ Vue.prototype.$axios = axios; @@ -38,9 +33,9 @@ Vue.prototype.$axios = axios;
38 // console.log("mainjs:"); 33 // console.log("mainjs:");
39 // console.log(rout.routes); 34 // console.log(rout.routes);
40 const router = new VueRouter({ 35 const router = new VueRouter({
41 - routes:rout.routes 36 + routes: rout.routes
42 }); 37 });
43 -Vue.prototype.$rout =router; 38 +Vue.prototype.$rout = router;
44 39
45 //本地存储系统初始化的router路由,用来处理用户退出后,把路由数据初始化 40 //本地存储系统初始化的router路由,用来处理用户退出后,把路由数据初始化
46 sessionStorage.setItem('sysMenu', JSON.stringify(rout.routes)); 41 sessionStorage.setItem('sysMenu', JSON.stringify(rout.routes));
@@ -53,11 +48,11 @@ router.beforeEach((to, from, next) => { @@ -53,11 +48,11 @@ router.beforeEach((to, from, next) => {
53 sessionStorage.removeItem('token'); 48 sessionStorage.removeItem('token');
54 } 49 }
55 let user = JSON.parse(sessionStorage.getItem('user')); 50 let user = JSON.parse(sessionStorage.getItem('user'));
56 - if(sessionStorage.getItem('token')){ 51 + if (sessionStorage.getItem('token')) {
57 axios.defaults.headers.common['Authorization'] = sessionStorage.getItem('token'); 52 axios.defaults.headers.common['Authorization'] = sessionStorage.getItem('token');
58 } 53 }
59 if (!user && to.path != '/login' && !sessionStorage.getItem('menu') && !sessionStorage.getItem('token')) { 54 if (!user && to.path != '/login' && !sessionStorage.getItem('menu') && !sessionStorage.getItem('token')) {
60 - next({ path: '/login' }) 55 + next({path: '/login'})
61 } else { 56 } else {
62 next() 57 next()
63 } 58 }
@@ -69,7 +64,7 @@ axios.defaults.timeout = 120000; @@ -69,7 +64,7 @@ axios.defaults.timeout = 120000;
69 axios.interceptors.response.use( 64 axios.interceptors.response.use(
70 res => { 65 res => {
71 //对响应数据做些事 66 //对响应数据做些事
72 - if (res.data && res.status!==200) { 67 + if (res.data && res.status !== 200) {
73 message({ 68 message({
74 // 饿了么的消息弹窗组件,类似toast 69 // 饿了么的消息弹窗组件,类似toast
75 showClose: true, 70 showClose: true,
@@ -148,12 +143,13 @@ axios.interceptors.response.use( @@ -148,12 +143,13 @@ axios.interceptors.response.use(
148 //}); 143 //});
149 144
150 let vue = new Vue({ 145 let vue = new Vue({
151 - //el: '#app',  
152 - //template: '<App/>', 146 + el: '#app',
  147 + template: '<App/>',
  148 + VueSocketIO,
153 router, 149 router,
154 store, 150 store,
155 i18n, 151 i18n,
156 - //components: { App } 152 + components: { App },
157 render: h => h(App) 153 render: h => h(App)
158 }).$mount('#app') 154 }).$mount('#app')
159 155
@@ -50,6 +50,7 @@ import WaterStationsPatrol from './views/water/water_stations_patrol.vue' @@ -50,6 +50,7 @@ import WaterStationsPatrol from './views/water/water_stations_patrol.vue'
50 import Location from './views/empt/Location.vue' 50 import Location from './views/empt/Location.vue'
51 import AgentExcelExport from './views/excel/exportExcel-agent' 51 import AgentExcelExport from './views/excel/exportExcel-agent'
52 import NMMSExcelExport from './views/excel/exportExcel-NMMS' 52 import NMMSExcelExport from './views/excel/exportExcel-NMMS'
  53 +import ExitAnalysis from './views/dataAnalysis/ExitAnalysis'
53 54
54 let routes = [ 55 let routes = [
55 { 56 {
@@ -81,13 +82,22 @@ let routes = [ @@ -81,13 +82,22 @@ let routes = [
81 name: '系统设置', 82 name: '系统设置',
82 iconCls: 'el-icon-setting',//图标样式class 83 iconCls: 'el-icon-setting',//图标样式class
83 children: [ 84 children: [
84 - { path: '/user', component: User, name: '用户管理' },  
85 - { path: '/role', component: Role, name: '组织机构' },  
86 - { path: '/perm', component: Perm, name: '权限管理' },  
87 - { path: '/log', component: LOG, name: '系统日志' },  
88 - { path: '/department', component: Department, name: '部门管理' },  
89 - { path: '/company', component: Company, name: '公司管理'},  
90 - { path: '/group', component: Group, name: '集团管理'} 85 + {path: '/user', component: User, name: '用户管理'},
  86 + {path: '/role', component: Role, name: '组织机构'},
  87 + {path: '/perm', component: Perm, name: '权限管理'},
  88 + {path: '/log', component: LOG, name: '系统日志'},
  89 + {path: '/department', component: Department, name: '部门管理'},
  90 + {path: '/company', component: Company, name: '公司管理'},
  91 + {path: '/group', component: Group, name: '集团管理'}
  92 + ]
  93 + },
  94 + {
  95 + path: '/cgonms-provide',
  96 + component: Home,
  97 + name: '业务统计',
  98 + iconCls: 'fa fa-id-card-o',
  99 + children: [
  100 + {path: '/exitAnalysis', component: ExitAnalysis, name: '出港业务统计'},
91 ] 101 ]
92 }, 102 },
93 { 103 {
@@ -96,8 +106,8 @@ let routes = [ @@ -96,8 +106,8 @@ let routes = [
96 name: '客服系统', 106 name: '客服系统',
97 iconCls: 'fa fa-id-card-o', 107 iconCls: 'fa fa-id-card-o',
98 children: [ 108 children: [
99 - { path: '/process', component: Process, name: '工单管理' },  
100 - { path: '/job', component: Job, name: '任务管理' }, 109 + {path: '/process', component: Process, name: '工单管理'},
  110 + {path: '/job', component: Job, name: '任务管理'},
101 {path: '/pre1', component: PreManifest, name: '预配'}, 111 {path: '/pre1', component: PreManifest, name: '预配'},
102 ] 112 ]
103 }, 113 },
@@ -107,8 +117,8 @@ let routes = [ @@ -107,8 +117,8 @@ let routes = [
107 name: '统计分析', 117 name: '统计分析',
108 iconCls: 'fa fa-id-card-o', 118 iconCls: 'fa fa-id-card-o',
109 children: [ 119 children: [
110 - { path: '/agentexport', component: AgentExcelExport, name: '出港统计' },  
111 - { path: '/nmmsexport', component: NMMSExcelExport, name: '进港统计' }, 120 + {path: '/agentexport', component: AgentExcelExport, name: '出港统计'},
  121 + {path: '/nmmsexport', component: NMMSExcelExport, name: '进港统计'},
112 ] 122 ]
113 }, 123 },
114 { 124 {
@@ -132,25 +142,25 @@ let routes = [ @@ -132,25 +142,25 @@ let routes = [
132 name: '进港业务申报', 142 name: '进港业务申报',
133 iconCls: 'fa fa-id-card-o', 143 iconCls: 'fa fa-id-card-o',
134 children: [ 144 children: [
135 - { path: '/orig', component: OrigFlightList, name: '进港航班申报' },  
136 - {path:'/waybill',component:Waybill,name:'进港运单申报'},  
137 - {path:'/allocateSearch',component:AllocateSearch,name:'运单分拨申报'},  
138 - { path: '/enter', component: EnterFlightInfo, name: '原始舱单'},  
139 - { path:'/origmaster',component:OrigMaster,name:'进港原始舱单'},  
140 - {path:'/entertall',component:EnterTally,name:'进港理货'},  
141 - {path:'/tallymaster',component:TallyMster,name:'进港理货舱单'},  
142 - {path:'/importallocation',component:Importallocation,name:'进港分拨'},  
143 - {path:'/allocatearrive',component:Allocatearrive,name:'分拨运抵'}, 145 + {path: '/orig', component: OrigFlightList, name: '进港航班申报'},
  146 + {path: '/waybill', component: Waybill, name: '进港运单申报'},
  147 + {path: '/allocateSearch', component: AllocateSearch, name: '运单分拨申报'},
  148 + {path: '/enter', component: EnterFlightInfo, name: '原始舱单'},
  149 + {path: '/origmaster', component: OrigMaster, name: '进港原始舱单'},
  150 + {path: '/entertall', component: EnterTally, name: '进港理货'},
  151 + {path: '/tallymaster', component: TallyMster, name: '进港理货舱单'},
  152 + {path: '/importallocation', component: Importallocation, name: '进港分拨'},
  153 + {path: '/allocatearrive', component: Allocatearrive, name: '分拨运抵'},
144 ] 154 ]
145 }, 155 },
146 { 156 {
147 path: '/lost', 157 path: '/lost',
148 component: Home, 158 component: Home,
149 name: '落装改配申报', 159 name: '落装改配申报',
150 - iconCls:'el-icon-goods',  
151 - children:[  
152 - {path:'/lostLoad',component:LostLoad,name:'落装业务申报'},  
153 - {path:'/lostLoadChange',component:LostLoadChange,name:'改配业务申报'} 160 + iconCls: 'el-icon-goods',
  161 + children: [
  162 + {path: '/lostLoad', component: LostLoad, name: '落装业务申报'},
  163 + {path: '/lostLoadChange', component: LostLoadChange, name: '改配业务申报'}
154 164
155 ] 165 ]
156 }, 166 },
@@ -160,7 +170,7 @@ let routes = [ @@ -160,7 +170,7 @@ let routes = [
160 name: '能源管理', 170 name: '能源管理',
161 iconCls: 'fa fa-id-card-o', 171 iconCls: 'fa fa-id-card-o',
162 children: [ 172 children: [
163 - { path: '/location', component: Location, name: '能源缴费' }, 173 + {path: '/location', component: Location, name: '能源缴费'},
164 ] 174 ]
165 }, 175 },
166 { 176 {
@@ -169,11 +179,11 @@ let routes = [ @@ -169,11 +179,11 @@ let routes = [
169 name: '生活保障部门', 179 name: '生活保障部门',
170 iconCls: 'fa fa-id-card-o', 180 iconCls: 'fa fa-id-card-o',
171 children: [ 181 children: [
172 - { path: '/security_inspection', component: SecrityInspection, name: '职工公寓安全巡视管理' },  
173 - { path: '/key', component: Key, name: '职工公寓备用钥匙使用登记管理' },  
174 - { path: '/maintain', component: Maintain, name: '职工公寓设施设备维修记录管理' },  
175 - { path: '/come_car', component: ComeCar, name: '职工公寓外来人员车辆登记管理' },  
176 - { path: '/on_duty', component: OnDuty, name: '职工公寓值班巡视记录管理' }, 182 + {path: '/security_inspection', component: SecrityInspection, name: '职工公寓安全巡视管理'},
  183 + {path: '/key', component: Key, name: '职工公寓备用钥匙使用登记管理'},
  184 + {path: '/maintain', component: Maintain, name: '职工公寓设施设备维修记录管理'},
  185 + {path: '/come_car', component: ComeCar, name: '职工公寓外来人员车辆登记管理'},
  186 + {path: '/on_duty', component: OnDuty, name: '职工公寓值班巡视记录管理'},
177 ] 187 ]
178 }, 188 },
179 { 189 {
@@ -183,7 +193,7 @@ let routes = [ @@ -183,7 +193,7 @@ let routes = [
183 iconCls: 'fa fa-address-card', 193 iconCls: 'fa fa-address-card',
184 // leaf: true,//只有一个节点 194 // leaf: true,//只有一个节点
185 children: [ 195 children: [
186 - { path: '/water_stations_patrol', component: WaterStationsPatrol, name: '二水厂-水站巡视记录单管理' }, 196 + {path: '/water_stations_patrol', component: WaterStationsPatrol, name: '二水厂-水站巡视记录单管理'},
187 // { path: '/page6', component: Page6, name: '水质量检测' }, 197 // { path: '/page6', component: Page6, name: '水质量检测' },
188 // { path: '/page6', component: Page6, name: '污水站' }, 198 // { path: '/page6', component: Page6, name: '污水站' },
189 // { path: '/page6', component: Page6, name: '一水厂' }, 199 // { path: '/page6', component: Page6, name: '一水厂' },
  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="5">
  9 + <el-input v-model="queryInfo.flightNo" prefix-icon="el-icon-search"
  10 + placeholder="请输入航班号" clearable style="width:220px">
  11 + </el-input>
  12 + </el-col>
  13 + <el-col :span="5">
  14 + <el-date-picker v-model="queryInfo.flightDate" type="date" value-format="yyyy-MM-dd"
  15 + placeholder="请选择航班日期"
  16 + style="width: 220px">
  17 + </el-date-picker>
  18 + </el-col>
  19 + <el-col :span="10">
  20 + <el-button type="primary" @click="getExitInfoList">
  21 + 查询调度记录
  22 + </el-button>
  23 + <el-button :loading="downloadLoading" type="success" icon="el-icon-s-home"
  24 + :disabled="resultStatus!=='200'"
  25 + @click="downExcelExit">导出 Excel
  26 + </el-button>
  27 + </el-col>
  28 + </el-row>
  29 + <el-input v-model="message" style="width: 460px;margin-top: 20px"
  30 + placeholder="获取数据进度" readonly>
  31 + </el-input>
  32 + </div>
  33 + <div>
  34 + 状态 :{{this.socketApi.socketStatus}}
  35 + </div>
  36 + <div>
  37 + 消息 :{{this.socketApi.socketMessage}}
  38 + </div>
  39 + <!-- 列表显示区域 -->
  40 + <!--
  41 + <div style="margin-top: 20px;">
  42 + <el-table :data="exitInfoList" border stripe highlight-current-row
  43 + v-loading="listLoading"
  44 + max-height="300"
  45 + :element-loading-text="this.message">
  46 + <el-table-column type="index" align="center"></el-table-column>
  47 + <el-table-column label="航班号" prop="flightNo" align="center" width="130"></el-table-column>
  48 + <el-table-column label="航班日期" prop="flightDate" align="center" width="130"></el-table-column>
  49 + <el-table-column label="航班时间" prop="flightTime" align="center" width="200"></el-table-column>
  50 + <el-table-column label="运单号" prop="waybillNoMaster" align="center"
  51 + width="130"></el-table-column>
  52 + <el-table-column label="航段" prop="segment" align="center" width="130"></el-table-column>
  53 + <el-table-column label="起始站" prop="originatingStation" align="center"
  54 + width="130"></el-table-column>
  55 + <el-table-column label="目的站" prop="destinationStation" align="center"
  56 + width="130"></el-table-column>
  57 + <el-table-column label="理货件数" prop="tallyTotalPiece" align="center"
  58 + width="130"></el-table-column>
  59 + <el-table-column label="理货重量" prop="tallyTotalWeight" align="center"
  60 + width="130"></el-table-column>
  61 + <el-table-column label="承运人二字码" prop="carrier" align="center" width="130"></el-table-column>
  62 + <el-table-column label="发货人名称" prop="shipperName" align="center" width="130"></el-table-column>
  63 + <el-table-column label="收货人名称" prop="consigneeName" align="center"
  64 + width="130"></el-table-column>
  65 + <el-table-column label="货物目的站" prop="aimStation" align="center" width="130"></el-table-column>
  66 + <el-table-column label="国家代码" prop="country" align="center" width="130"></el-table-column>
  67 + <el-table-column label="所属洲" prop="areaDescChn" align="center" width="130"></el-table-column>
  68 + <el-table-column label="订舱代理人" prop="orderName" align="center" width="130"></el-table-column>
  69 + <el-table-column label="结算代理人" prop="countName" align="center"
  70 + width="130"></el-table-column>
  71 + <el-table-column label="品名" prop="sdCargoName" align="center" width="130"></el-table-column>
  72 + <el-table-column label="二级类名" prop="twoTypeName" align="center" width="130"></el-table-column>
  73 + <el-table-column label="一级类名" prop="typeName" align="center" width="130"></el-table-column>
  74 + <el-table-column label="航空公司" prop="airCompany" align="center" width="130"></el-table-column>
  75 + <el-table-column label="机型" prop="cfTp" align="center" width="130"></el-table-column>
  76 + <el-table-column label="机号" prop="cfNo" align="center" width="130"></el-table-column>
  77 + <el-table-column label="航班计划日期" prop="flightPlanDate" align="center"
  78 + width="130"></el-table-column>
  79 + <el-table-column label="航班计划时间" prop="flightPlanTime" align="center"
  80 + width="200"></el-table-column>
  81 + <el-table-column label="计费重量" prop="totalGrossWeightMeasure" align="center"
  82 + width="130"></el-table-column>
  83 + <el-table-column label="体积" prop="volumeMeasure" align="center" width="130"></el-table-column>
  84 + </el-table>
  85 + </div>
  86 + -->
  87 + </el-card>
  88 + </el-main>
  89 + </el-container>
  90 +</template>
  91 +
  92 +<script>
  93 +
  94 + import {downExcel, getExitDataAnalysis} from "../../api/exit_data_analysis";
  95 + import FilenameOption from '../excel/components/FilenameOption'
  96 + import AutoWidthOption from '../excel/components/AutoWidthOption'
  97 + import BookTypeOption from '../excel/components/BookTypeOption'
  98 +
  99 + export default {
  100 + name: "ExitAnalysis",
  101 + components: {FilenameOption, AutoWidthOption, BookTypeOption},
  102 + data() {
  103 + return {
  104 + /**
  105 + * 出港业务统计列表
  106 + */
  107 + exitInfoList: [],
  108 +
  109 + /**
  110 + * 查询列表
  111 + */
  112 + queryInfo: {
  113 + //航班号
  114 + flightNo: 'SL965',
  115 + //航班日期
  116 + flightDate: '2019-04-12',
  117 + },
  118 +
  119 + /* 列表加载 */
  120 + listLoading: false,
  121 + downloadLoading: false,
  122 + }
  123 + },
  124 + sockets: {
  125 + connect() {
  126 + this.$socket.emit("sendMessageToServer", "0025520"); //监听connect事件
  127 + },
  128 + servermessage(data) {
  129 + // 监听message事件,方法是后台定义和提供的
  130 + console.log(data);
  131 + }
  132 + },
  133 + methods: {
  134 + /**
  135 + * 获取出港信息列表
  136 + */
  137 + getExitInfoList(onfulfilled) {
  138 + let _this = this;
  139 + _this.$message.success('开始获取统计数据');
  140 + getExitDataAnalysis(_this.queryInfo)
  141 + .then(
  142 + (response) => {
  143 + // _this.message = socketMessage;
  144 + // _this.status = socketStatus;
  145 + // if (_this.status === '200') {
  146 + // _this.exitInfoList = socketDataList;
  147 + // }
  148 + })
  149 + .catch(error => {
  150 + _this.$message.error(error.toString());
  151 + });
  152 + },
  153 + /**
  154 + * 导出excel到本地,功能
  155 + */
  156 + downExcelExit() {
  157 + downExcel(this.exitInfoList).then((response) => {
  158 + this.$message.success("导出Excel成功,请您重命名")
  159 + }).catch(error => {
  160 + this.$message.error(error.toString());
  161 + });
  162 + },
  163 + },
  164 + created() {
  165 + },
  166 + destroyed() {
  167 + },
  168 + watch: {
  169 + },
  170 + }
  171 +</script>
  172 +
  173 +<style scoped>
  174 +
  175 +</style>