正在显示
15 个修改的文件
包含
941 行增加
和
29 行删除
| @@ -83,6 +83,15 @@ | @@ -83,6 +83,15 @@ | ||
| 83 | "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", | 83 | "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", |
| 84 | "dev": true | 84 | "dev": true |
| 85 | }, | 85 | }, |
| 86 | + "adler-32": { | ||
| 87 | + "version": "1.2.0", | ||
| 88 | + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", | ||
| 89 | + "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", | ||
| 90 | + "requires": { | ||
| 91 | + "exit-on-epipe": "~1.0.1", | ||
| 92 | + "printj": "~1.1.0" | ||
| 93 | + } | ||
| 94 | + }, | ||
| 86 | "ajv": { | 95 | "ajv": { |
| 87 | "version": "6.10.2", | 96 | "version": "6.10.2", |
| 88 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", | 97 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", |
| @@ -1947,6 +1956,17 @@ | @@ -1947,6 +1956,17 @@ | ||
| 1947 | "lazy-cache": "^1.0.3" | 1956 | "lazy-cache": "^1.0.3" |
| 1948 | } | 1957 | } |
| 1949 | }, | 1958 | }, |
| 1959 | + "cfb": { | ||
| 1960 | + "version": "1.1.3", | ||
| 1961 | + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.3.tgz", | ||
| 1962 | + "integrity": "sha512-joXBW0nMuwV9no7UTMiyVJnQL6XIU3ThXVjFUDHgl9MpILPOomyfaGqC290VELZ48bbQKZXnQ81UT5HouTxHsw==", | ||
| 1963 | + "requires": { | ||
| 1964 | + "adler-32": "~1.2.0", | ||
| 1965 | + "commander": "^2.16.0", | ||
| 1966 | + "crc-32": "~1.2.0", | ||
| 1967 | + "printj": "~1.1.2" | ||
| 1968 | + } | ||
| 1969 | + }, | ||
| 1950 | "chalk": { | 1970 | "chalk": { |
| 1951 | "version": "1.1.3", | 1971 | "version": "1.1.3", |
| 1952 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", | 1972 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", |
| @@ -2303,6 +2323,22 @@ | @@ -2303,6 +2323,22 @@ | ||
| 2303 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", | 2323 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", |
| 2304 | "dev": true | 2324 | "dev": true |
| 2305 | }, | 2325 | }, |
| 2326 | + "codepage": { | ||
| 2327 | + "version": "1.14.0", | ||
| 2328 | + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", | ||
| 2329 | + "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", | ||
| 2330 | + "requires": { | ||
| 2331 | + "commander": "~2.14.1", | ||
| 2332 | + "exit-on-epipe": "~1.0.1" | ||
| 2333 | + }, | ||
| 2334 | + "dependencies": { | ||
| 2335 | + "commander": { | ||
| 2336 | + "version": "2.14.1", | ||
| 2337 | + "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.1.tgz", | ||
| 2338 | + "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw==" | ||
| 2339 | + } | ||
| 2340 | + } | ||
| 2341 | + }, | ||
| 2306 | "collection-visit": { | 2342 | "collection-visit": { |
| 2307 | "version": "1.0.0", | 2343 | "version": "1.0.0", |
| 2308 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", | 2344 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", |
| @@ -2375,8 +2411,7 @@ | @@ -2375,8 +2411,7 @@ | ||
| 2375 | "commander": { | 2411 | "commander": { |
| 2376 | "version": "2.17.1", | 2412 | "version": "2.17.1", |
| 2377 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", | 2413 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", |
| 2378 | - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", | ||
| 2379 | - "dev": true | 2414 | + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" |
| 2380 | }, | 2415 | }, |
| 2381 | "commondir": { | 2416 | "commondir": { |
| 2382 | "version": "1.0.1", | 2417 | "version": "1.0.1", |
| @@ -2596,8 +2631,7 @@ | @@ -2596,8 +2631,7 @@ | ||
| 2596 | "core-util-is": { | 2631 | "core-util-is": { |
| 2597 | "version": "1.0.2", | 2632 | "version": "1.0.2", |
| 2598 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | 2633 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", |
| 2599 | - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", | ||
| 2600 | - "dev": true | 2634 | + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" |
| 2601 | }, | 2635 | }, |
| 2602 | "cosmiconfig": { | 2636 | "cosmiconfig": { |
| 2603 | "version": "2.2.2", | 2637 | "version": "2.2.2", |
| @@ -2622,6 +2656,15 @@ | @@ -2622,6 +2656,15 @@ | ||
| 2622 | } | 2656 | } |
| 2623 | } | 2657 | } |
| 2624 | }, | 2658 | }, |
| 2659 | + "crc-32": { | ||
| 2660 | + "version": "1.2.0", | ||
| 2661 | + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", | ||
| 2662 | + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", | ||
| 2663 | + "requires": { | ||
| 2664 | + "exit-on-epipe": "~1.0.1", | ||
| 2665 | + "printj": "~1.1.0" | ||
| 2666 | + } | ||
| 2667 | + }, | ||
| 2625 | "create-ecdh": { | 2668 | "create-ecdh": { |
| 2626 | "version": "4.0.3", | 2669 | "version": "4.0.3", |
| 2627 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", | 2670 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", |
| @@ -3456,6 +3499,11 @@ | @@ -3456,6 +3499,11 @@ | ||
| 3456 | "safe-buffer": "^5.1.1" | 3499 | "safe-buffer": "^5.1.1" |
| 3457 | } | 3500 | } |
| 3458 | }, | 3501 | }, |
| 3502 | + "exit-on-epipe": { | ||
| 3503 | + "version": "1.0.1", | ||
| 3504 | + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", | ||
| 3505 | + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" | ||
| 3506 | + }, | ||
| 3459 | "expand-brackets": { | 3507 | "expand-brackets": { |
| 3460 | "version": "2.1.4", | 3508 | "version": "2.1.4", |
| 3461 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", | 3509 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", |
| @@ -3769,6 +3817,11 @@ | @@ -3769,6 +3817,11 @@ | ||
| 3769 | } | 3817 | } |
| 3770 | } | 3818 | } |
| 3771 | }, | 3819 | }, |
| 3820 | + "file-saver": { | ||
| 3821 | + "version": "2.0.2", | ||
| 3822 | + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", | ||
| 3823 | + "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" | ||
| 3824 | + }, | ||
| 3772 | "filesize": { | 3825 | "filesize": { |
| 3773 | "version": "3.6.1", | 3826 | "version": "3.6.1", |
| 3774 | "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", | 3827 | "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", |
| @@ -3917,6 +3970,11 @@ | @@ -3917,6 +3970,11 @@ | ||
| 3917 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", | 3970 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", |
| 3918 | "dev": true | 3971 | "dev": true |
| 3919 | }, | 3972 | }, |
| 3973 | + "frac": { | ||
| 3974 | + "version": "1.1.2", | ||
| 3975 | + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", | ||
| 3976 | + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" | ||
| 3977 | + }, | ||
| 3920 | "fragment-cache": { | 3978 | "fragment-cache": { |
| 3921 | "version": "0.2.1", | 3979 | "version": "0.2.1", |
| 3922 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", | 3980 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", |
| @@ -5067,6 +5125,11 @@ | @@ -5067,6 +5125,11 @@ | ||
| 5067 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", | 5125 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", |
| 5068 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" | 5126 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" |
| 5069 | }, | 5127 | }, |
| 5128 | + "immediate": { | ||
| 5129 | + "version": "3.0.6", | ||
| 5130 | + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", | ||
| 5131 | + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" | ||
| 5132 | + }, | ||
| 5070 | "import-fresh": { | 5133 | "import-fresh": { |
| 5071 | "version": "3.1.0", | 5134 | "version": "3.1.0", |
| 5072 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", | 5135 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", |
| @@ -5366,8 +5429,7 @@ | @@ -5366,8 +5429,7 @@ | ||
| 5366 | "isarray": { | 5429 | "isarray": { |
| 5367 | "version": "1.0.0", | 5430 | "version": "1.0.0", |
| 5368 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | 5431 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", |
| 5369 | - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", | ||
| 5370 | - "dev": true | 5432 | + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" |
| 5371 | }, | 5433 | }, |
| 5372 | "isexe": { | 5434 | "isexe": { |
| 5373 | "version": "2.0.0", | 5435 | "version": "2.0.0", |
| @@ -5509,6 +5571,17 @@ | @@ -5509,6 +5571,17 @@ | ||
| 5509 | "verror": "1.10.0" | 5571 | "verror": "1.10.0" |
| 5510 | } | 5572 | } |
| 5511 | }, | 5573 | }, |
| 5574 | + "jszip": { | ||
| 5575 | + "version": "3.2.2", | ||
| 5576 | + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", | ||
| 5577 | + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", | ||
| 5578 | + "requires": { | ||
| 5579 | + "lie": "~3.3.0", | ||
| 5580 | + "pako": "~1.0.2", | ||
| 5581 | + "readable-stream": "~2.3.6", | ||
| 5582 | + "set-immediate-shim": "~1.0.1" | ||
| 5583 | + } | ||
| 5584 | + }, | ||
| 5512 | "kind-of": { | 5585 | "kind-of": { |
| 5513 | "version": "3.2.2", | 5586 | "version": "3.2.2", |
| 5514 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", | 5587 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", |
| @@ -5542,6 +5615,14 @@ | @@ -5542,6 +5615,14 @@ | ||
| 5542 | "type-check": "~0.3.2" | 5615 | "type-check": "~0.3.2" |
| 5543 | } | 5616 | } |
| 5544 | }, | 5617 | }, |
| 5618 | + "lie": { | ||
| 5619 | + "version": "3.3.0", | ||
| 5620 | + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", | ||
| 5621 | + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", | ||
| 5622 | + "requires": { | ||
| 5623 | + "immediate": "~3.0.5" | ||
| 5624 | + } | ||
| 5625 | + }, | ||
| 5545 | "load-json-file": { | 5626 | "load-json-file": { |
| 5546 | "version": "1.1.0", | 5627 | "version": "1.1.0", |
| 5547 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", | 5628 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", |
| @@ -9563,8 +9644,7 @@ | @@ -9563,8 +9644,7 @@ | ||
| 9563 | "pako": { | 9644 | "pako": { |
| 9564 | "version": "1.0.10", | 9645 | "version": "1.0.10", |
| 9565 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", | 9646 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", |
| 9566 | - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", | ||
| 9567 | - "dev": true | 9647 | + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" |
| 9568 | }, | 9648 | }, |
| 9569 | "parallel-transform": { | 9649 | "parallel-transform": { |
| 9570 | "version": "1.1.0", | 9650 | "version": "1.1.0", |
| @@ -10265,6 +10345,11 @@ | @@ -10265,6 +10345,11 @@ | ||
| 10265 | "utila": "~0.4" | 10345 | "utila": "~0.4" |
| 10266 | } | 10346 | } |
| 10267 | }, | 10347 | }, |
| 10348 | + "printj": { | ||
| 10349 | + "version": "1.1.2", | ||
| 10350 | + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", | ||
| 10351 | + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" | ||
| 10352 | + }, | ||
| 10268 | "private": { | 10353 | "private": { |
| 10269 | "version": "0.1.8", | 10354 | "version": "0.1.8", |
| 10270 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", | 10355 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", |
| @@ -10280,8 +10365,7 @@ | @@ -10280,8 +10365,7 @@ | ||
| 10280 | "process-nextick-args": { | 10365 | "process-nextick-args": { |
| 10281 | "version": "2.0.1", | 10366 | "version": "2.0.1", |
| 10282 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | 10367 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", |
| 10283 | - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", | ||
| 10284 | - "dev": true | 10368 | + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" |
| 10285 | }, | 10369 | }, |
| 10286 | "progress": { | 10370 | "progress": { |
| 10287 | "version": "2.0.3", | 10371 | "version": "2.0.3", |
| @@ -10439,6 +10523,11 @@ | @@ -10439,6 +10523,11 @@ | ||
| 10439 | "unpipe": "1.0.0" | 10523 | "unpipe": "1.0.0" |
| 10440 | } | 10524 | } |
| 10441 | }, | 10525 | }, |
| 10526 | + "raw-loader": { | ||
| 10527 | + "version": "0.5.1", | ||
| 10528 | + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", | ||
| 10529 | + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" | ||
| 10530 | + }, | ||
| 10442 | "read-pkg": { | 10531 | "read-pkg": { |
| 10443 | "version": "1.1.0", | 10532 | "version": "1.1.0", |
| 10444 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", | 10533 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", |
| @@ -10483,7 +10572,6 @@ | @@ -10483,7 +10572,6 @@ | ||
| 10483 | "version": "2.3.6", | 10572 | "version": "2.3.6", |
| 10484 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | 10573 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", |
| 10485 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | 10574 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", |
| 10486 | - "dev": true, | ||
| 10487 | "requires": { | 10575 | "requires": { |
| 10488 | "core-util-is": "~1.0.0", | 10576 | "core-util-is": "~1.0.0", |
| 10489 | "inherits": "~2.0.3", | 10577 | "inherits": "~2.0.3", |
| @@ -11120,8 +11208,7 @@ | @@ -11120,8 +11208,7 @@ | ||
| 11120 | "safe-buffer": { | 11208 | "safe-buffer": { |
| 11121 | "version": "5.1.2", | 11209 | "version": "5.1.2", |
| 11122 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | 11210 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", |
| 11123 | - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", | ||
| 11124 | - "dev": true | 11211 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" |
| 11125 | }, | 11212 | }, |
| 11126 | "safe-regex": { | 11213 | "safe-regex": { |
| 11127 | "version": "1.1.0", | 11214 | "version": "1.1.0", |
| @@ -11237,6 +11324,14 @@ | @@ -11237,6 +11324,14 @@ | ||
| 11237 | } | 11324 | } |
| 11238 | } | 11325 | } |
| 11239 | }, | 11326 | }, |
| 11327 | + "script-loader": { | ||
| 11328 | + "version": "0.7.2", | ||
| 11329 | + "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz", | ||
| 11330 | + "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==", | ||
| 11331 | + "requires": { | ||
| 11332 | + "raw-loader": "~0.5.1" | ||
| 11333 | + } | ||
| 11334 | + }, | ||
| 11240 | "scss-tokenizer": { | 11335 | "scss-tokenizer": { |
| 11241 | "version": "0.2.3", | 11336 | "version": "0.2.3", |
| 11242 | "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", | 11337 | "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", |
| @@ -11316,6 +11411,11 @@ | @@ -11316,6 +11411,11 @@ | ||
| 11316 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", | 11411 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", |
| 11317 | "dev": true | 11412 | "dev": true |
| 11318 | }, | 11413 | }, |
| 11414 | + "set-immediate-shim": { | ||
| 11415 | + "version": "1.0.1", | ||
| 11416 | + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", | ||
| 11417 | + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" | ||
| 11418 | + }, | ||
| 11319 | "set-value": { | 11419 | "set-value": { |
| 11320 | "version": "2.0.1", | 11420 | "version": "2.0.1", |
| 11321 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", | 11421 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", |
| @@ -11641,6 +11741,14 @@ | @@ -11641,6 +11741,14 @@ | ||
| 11641 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", | 11741 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", |
| 11642 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" | 11742 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" |
| 11643 | }, | 11743 | }, |
| 11744 | + "ssf": { | ||
| 11745 | + "version": "0.10.2", | ||
| 11746 | + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.2.tgz", | ||
| 11747 | + "integrity": "sha512-rDhAPm9WyIsY8eZEKyE8Qsotb3j/wBdvMWBUsOhJdfhKGLfQidRjiBUV0y/MkyCLiXQ38FG6LWW/VYUtqlIDZQ==", | ||
| 11748 | + "requires": { | ||
| 11749 | + "frac": "~1.1.2" | ||
| 11750 | + } | ||
| 11751 | + }, | ||
| 11644 | "sshpk": { | 11752 | "sshpk": { |
| 11645 | "version": "1.16.1", | 11753 | "version": "1.16.1", |
| 11646 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", | 11754 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", |
| @@ -11778,7 +11886,6 @@ | @@ -11778,7 +11886,6 @@ | ||
| 11778 | "version": "1.1.1", | 11886 | "version": "1.1.1", |
| 11779 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | 11887 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", |
| 11780 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | 11888 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", |
| 11781 | - "dev": true, | ||
| 11782 | "requires": { | 11889 | "requires": { |
| 11783 | "safe-buffer": "~5.1.0" | 11890 | "safe-buffer": "~5.1.0" |
| 11784 | } | 11891 | } |
| @@ -12385,8 +12492,7 @@ | @@ -12385,8 +12492,7 @@ | ||
| 12385 | "util-deprecate": { | 12492 | "util-deprecate": { |
| 12386 | "version": "1.0.2", | 12493 | "version": "1.0.2", |
| 12387 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | 12494 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", |
| 12388 | - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", | ||
| 12389 | - "dev": true | 12495 | + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" |
| 12390 | }, | 12496 | }, |
| 12391 | "utila": { | 12497 | "utila": { |
| 12392 | "version": "0.4.0", | 12498 | "version": "0.4.0", |
| @@ -13046,6 +13152,20 @@ | @@ -13046,6 +13152,20 @@ | ||
| 13046 | "async-limiter": "~1.0.0" | 13152 | "async-limiter": "~1.0.0" |
| 13047 | } | 13153 | } |
| 13048 | }, | 13154 | }, |
| 13155 | + "xlsx": { | ||
| 13156 | + "version": "0.15.1", | ||
| 13157 | + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.15.1.tgz", | ||
| 13158 | + "integrity": "sha512-z+o4+QPMc32EPboLCzJAz94o0Zyy+8jrmWTsVpfzwknFln9qDO6/HN1KrGGVC4//sGA7dh4R3HA4fhbGIKCDOA==", | ||
| 13159 | + "requires": { | ||
| 13160 | + "adler-32": "~1.2.0", | ||
| 13161 | + "cfb": "^1.1.3", | ||
| 13162 | + "codepage": "~1.14.0", | ||
| 13163 | + "commander": "~2.17.1", | ||
| 13164 | + "crc-32": "~1.2.0", | ||
| 13165 | + "exit-on-epipe": "~1.0.1", | ||
| 13166 | + "ssf": "~0.10.2" | ||
| 13167 | + } | ||
| 13168 | + }, | ||
| 13049 | "xtend": { | 13169 | "xtend": { |
| 13050 | "version": "4.0.2", | 13170 | "version": "4.0.2", |
| 13051 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", | 13171 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", |
| @@ -14,16 +14,20 @@ | @@ -14,16 +14,20 @@ | ||
| 14 | "echarts": "^3.3.2", | 14 | "echarts": "^3.3.2", |
| 15 | "element-ui": "^1.2.8", | 15 | "element-ui": "^1.2.8", |
| 16 | "eslint": "^5.14.1", | 16 | "eslint": "^5.14.1", |
| 17 | + "file-saver": "^2.0.2", | ||
| 17 | "font-awesome": "^4.7.0", | 18 | "font-awesome": "^4.7.0", |
| 18 | "install": "^0.12.2", | 19 | "install": "^0.12.2", |
| 19 | "js-cookie": "^2.2.1", | 20 | "js-cookie": "^2.2.1", |
| 21 | + "jszip": "^3.2.2", | ||
| 20 | "moment": "^2.24.0", | 22 | "moment": "^2.24.0", |
| 21 | "npm": "^6.8.0", | 23 | "npm": "^6.8.0", |
| 22 | "nprogress": "^0.2.0", | 24 | "nprogress": "^0.2.0", |
| 25 | + "script-loader": "^0.7.2", | ||
| 23 | "vue": "^2.2.2", | 26 | "vue": "^2.2.2", |
| 24 | "vue-i18n": "^8.14.0", | 27 | "vue-i18n": "^8.14.0", |
| 25 | "vue-router": "^2.3.0", | 28 | "vue-router": "^2.3.0", |
| 26 | - "vuex": "^2.0.0-rc.6" | 29 | + "vuex": "^2.0.0-rc.6", |
| 30 | + "xlsx": "^0.15.1" | ||
| 27 | }, | 31 | }, |
| 28 | "devDependencies": { | 32 | "devDependencies": { |
| 29 | "autoprefixer": "^6.7.2", | 33 | "autoprefixer": "^6.7.2", |
src/api/article.js
0 → 100755
| 1 | +import request from '@/utils/request' | ||
| 2 | + | ||
| 3 | +export function fetchList(query) { | ||
| 4 | + return request({ | ||
| 5 | + url: '/article/list', | ||
| 6 | + method: 'get', | ||
| 7 | + params: query | ||
| 8 | + }) | ||
| 9 | +} | ||
| 10 | + | ||
| 11 | +export function fetchArticle(id) { | ||
| 12 | + return request({ | ||
| 13 | + url: '/article/detail', | ||
| 14 | + method: 'get', | ||
| 15 | + params: { id } | ||
| 16 | + }) | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +export function fetchPv(pv) { | ||
| 20 | + return request({ | ||
| 21 | + url: '/article/pv', | ||
| 22 | + method: 'get', | ||
| 23 | + params: { pv } | ||
| 24 | + }) | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +export function createArticle(data) { | ||
| 28 | + return request({ | ||
| 29 | + url: '/article/create', | ||
| 30 | + method: 'post', | ||
| 31 | + data | ||
| 32 | + }) | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +export function updateArticle(data) { | ||
| 36 | + return request({ | ||
| 37 | + url: '/article/update', | ||
| 38 | + method: 'post', | ||
| 39 | + data | ||
| 40 | + }) | ||
| 41 | +} |
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | Auth: Lei.j1ang | 32 | Auth: Lei.j1ang |
| 33 | Created: 2018/1/19-13:59 | 33 | Created: 2018/1/19-13:59 |
| 34 | */ | 34 | */ |
| 35 | -import treeToArray from './eval' | 35 | +import treeToArray from './eval.js' |
| 36 | export default { | 36 | export default { |
| 37 | name: 'TreeTable', | 37 | name: 'TreeTable', |
| 38 | props: { | 38 | props: { |
| @@ -68,8 +68,11 @@ export default { | @@ -68,8 +68,11 @@ export default { | ||
| 68 | }, | 68 | }, |
| 69 | methods: { | 69 | methods: { |
| 70 | showRow: function(row) { | 70 | showRow: function(row) { |
| 71 | - const show = (row.row.parent ? (row.row.parent._expanded && row.row.parent._show) : true) | ||
| 72 | - row.row._show = show | 71 | + this.data |
| 72 | + const show = (row.parent ? (row.parent._expanded && row.parent._show) : true) | ||
| 73 | +// const show = (row.row.parent ? (row.row.parent._expanded && row.row.parent._show) : true) | ||
| 74 | +// row.row._show = show | ||
| 75 | + row._show = show | ||
| 73 | return show ? 'animation:treeTableShow 1s;-webkit-animation:treeTableShow 1s;' : 'display:none;' | 76 | return show ? 'animation:treeTableShow 1s;-webkit-animation:treeTableShow 1s;' : 'display:none;' |
| 74 | }, | 77 | }, |
| 75 | // 切换下级是否展开 | 78 | // 切换下级是否展开 |
src/store/getters.js
0 → 100755
| 1 | +const getters = { | ||
| 2 | + sidebar: state => state.app.sidebar, | ||
| 3 | + language: state => state.app.language, | ||
| 4 | + size: state => state.app.size, | ||
| 5 | + device: state => state.app.device, | ||
| 6 | + visitedViews: state => state.tagsView.visitedViews, | ||
| 7 | + cachedViews: state => state.tagsView.cachedViews, | ||
| 8 | + token: state => state.user.token, | ||
| 9 | + avatar: state => state.user.avatar, | ||
| 10 | + name: state => state.user.name, | ||
| 11 | + introduction: state => state.user.introduction, | ||
| 12 | + status: state => state.user.status, | ||
| 13 | + roles: state => state.user.roles, | ||
| 14 | + setting: state => state.user.setting, | ||
| 15 | + permission_routers: state => state.permission.routers, | ||
| 16 | + addRouters: state => state.permission.addRouters, | ||
| 17 | + errorLogs: state => state.errorLog.logs | ||
| 18 | +} | ||
| 19 | +export default getters |
src/store/index.js
0 → 100755
| 1 | +import Vue from 'vue' | ||
| 2 | +import Vuex from 'vuex' | ||
| 3 | +import app from './modules/app' | ||
| 4 | +import errorLog from './modules/errorLog' | ||
| 5 | +import permission from './modules/permission' | ||
| 6 | +import tagsView from './modules/tagsView' | ||
| 7 | +import user from './modules/user' | ||
| 8 | +import getters from './getters' | ||
| 9 | + | ||
| 10 | +Vue.use(Vuex) | ||
| 11 | + | ||
| 12 | +const store = new Vuex.Store({ | ||
| 13 | + modules: { | ||
| 14 | + app, | ||
| 15 | + errorLog, | ||
| 16 | + permission, | ||
| 17 | + tagsView, | ||
| 18 | + user | ||
| 19 | + }, | ||
| 20 | + getters | ||
| 21 | +}) | ||
| 22 | + | ||
| 23 | +export default store |
src/store/modules/app.js
0 → 100755
| 1 | +import Cookies from 'js-cookie' | ||
| 2 | + | ||
| 3 | +const app = { | ||
| 4 | + state: { | ||
| 5 | + sidebar: { | ||
| 6 | + opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true, | ||
| 7 | + withoutAnimation: false | ||
| 8 | + }, | ||
| 9 | + device: 'desktop', | ||
| 10 | + language: Cookies.get('language') || 'en', | ||
| 11 | + size: Cookies.get('size') || 'medium' | ||
| 12 | + }, | ||
| 13 | + mutations: { | ||
| 14 | + TOGGLE_SIDEBAR: state => { | ||
| 15 | + state.sidebar.opened = !state.sidebar.opened | ||
| 16 | + state.sidebar.withoutAnimation = false | ||
| 17 | + if (state.sidebar.opened) { | ||
| 18 | + Cookies.set('sidebarStatus', 1) | ||
| 19 | + } else { | ||
| 20 | + Cookies.set('sidebarStatus', 0) | ||
| 21 | + } | ||
| 22 | + }, | ||
| 23 | + CLOSE_SIDEBAR: (state, withoutAnimation) => { | ||
| 24 | + Cookies.set('sidebarStatus', 0) | ||
| 25 | + state.sidebar.opened = false | ||
| 26 | + state.sidebar.withoutAnimation = withoutAnimation | ||
| 27 | + }, | ||
| 28 | + TOGGLE_DEVICE: (state, device) => { | ||
| 29 | + state.device = device | ||
| 30 | + }, | ||
| 31 | + SET_LANGUAGE: (state, language) => { | ||
| 32 | + state.language = language | ||
| 33 | + Cookies.set('language', language) | ||
| 34 | + }, | ||
| 35 | + SET_SIZE: (state, size) => { | ||
| 36 | + state.size = size | ||
| 37 | + Cookies.set('size', size) | ||
| 38 | + } | ||
| 39 | + }, | ||
| 40 | + actions: { | ||
| 41 | + toggleSideBar({ commit }) { | ||
| 42 | + commit('TOGGLE_SIDEBAR') | ||
| 43 | + }, | ||
| 44 | + closeSideBar({ commit }, { withoutAnimation }) { | ||
| 45 | + commit('CLOSE_SIDEBAR', withoutAnimation) | ||
| 46 | + }, | ||
| 47 | + toggleDevice({ commit }, device) { | ||
| 48 | + commit('TOGGLE_DEVICE', device) | ||
| 49 | + }, | ||
| 50 | + setLanguage({ commit }, language) { | ||
| 51 | + commit('SET_LANGUAGE', language) | ||
| 52 | + }, | ||
| 53 | + setSize({ commit }, size) { | ||
| 54 | + commit('SET_SIZE', size) | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | +} | ||
| 58 | + | ||
| 59 | +export default app |
src/store/modules/errorLog.js
0 → 100755
src/store/modules/permission.js
0 → 100755
| 1 | +import { asyncRouterMap, constantRouterMap } from '@/router' | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * 通过meta.role判断是否与当前用户权限匹配 | ||
| 5 | + * @param roles | ||
| 6 | + * @param route | ||
| 7 | + */ | ||
| 8 | +function hasPermission(roles, route) { | ||
| 9 | + if (route.meta && route.meta.roles) { | ||
| 10 | + return roles.some(role => route.meta.roles.includes(role)) | ||
| 11 | + } else { | ||
| 12 | + return true | ||
| 13 | + } | ||
| 14 | +} | ||
| 15 | + | ||
| 16 | +/** | ||
| 17 | + * 递归过滤异步路由表,返回符合用户角色权限的路由表 | ||
| 18 | + * @param routes asyncRouterMap | ||
| 19 | + * @param roles | ||
| 20 | + */ | ||
| 21 | +function filterAsyncRouter(routes, roles) { | ||
| 22 | + const res = [] | ||
| 23 | + | ||
| 24 | + routes.forEach(route => { | ||
| 25 | + const tmp = { ...route } | ||
| 26 | + if (hasPermission(roles, tmp)) { | ||
| 27 | + if (tmp.children) { | ||
| 28 | + tmp.children = filterAsyncRouter(tmp.children, roles) | ||
| 29 | + } | ||
| 30 | + res.push(tmp) | ||
| 31 | + } | ||
| 32 | + }) | ||
| 33 | + | ||
| 34 | + return res | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +const permission = { | ||
| 38 | + state: { | ||
| 39 | + routers: [], | ||
| 40 | + addRouters: [] | ||
| 41 | + }, | ||
| 42 | + mutations: { | ||
| 43 | + SET_ROUTERS: (state, routers) => { | ||
| 44 | + state.addRouters = routers | ||
| 45 | + state.routers = constantRouterMap.concat(routers) | ||
| 46 | + } | ||
| 47 | + }, | ||
| 48 | + actions: { | ||
| 49 | + GenerateRoutes({ commit }, data) { | ||
| 50 | + return new Promise(resolve => { | ||
| 51 | + const { roles } = data | ||
| 52 | + let accessedRouters | ||
| 53 | + if (roles.includes('admin')) { | ||
| 54 | + accessedRouters = asyncRouterMap | ||
| 55 | + } else { | ||
| 56 | + accessedRouters = filterAsyncRouter(asyncRouterMap, roles) | ||
| 57 | + } | ||
| 58 | + commit('SET_ROUTERS', accessedRouters) | ||
| 59 | + resolve() | ||
| 60 | + }) | ||
| 61 | + } | ||
| 62 | + } | ||
| 63 | +} | ||
| 64 | + | ||
| 65 | +export default permission |
src/store/modules/tagsView.js
0 → 100755
| 1 | +const tagsView = { | ||
| 2 | + state: { | ||
| 3 | + visitedViews: [], | ||
| 4 | + cachedViews: [] | ||
| 5 | + }, | ||
| 6 | + mutations: { | ||
| 7 | + ADD_VISITED_VIEW: (state, view) => { | ||
| 8 | + if (state.visitedViews.some(v => v.path === view.path)) return | ||
| 9 | + state.visitedViews.push( | ||
| 10 | + Object.assign({}, view, { | ||
| 11 | + title: view.meta.title || 'no-name' | ||
| 12 | + }) | ||
| 13 | + ) | ||
| 14 | + }, | ||
| 15 | + ADD_CACHED_VIEW: (state, view) => { | ||
| 16 | + if (state.cachedViews.includes(view.name)) return | ||
| 17 | + if (!view.meta.noCache) { | ||
| 18 | + state.cachedViews.push(view.name) | ||
| 19 | + } | ||
| 20 | + }, | ||
| 21 | + | ||
| 22 | + DEL_VISITED_VIEW: (state, view) => { | ||
| 23 | + for (const [i, v] of state.visitedViews.entries()) { | ||
| 24 | + if (v.path === view.path) { | ||
| 25 | + state.visitedViews.splice(i, 1) | ||
| 26 | + break | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | + }, | ||
| 30 | + DEL_CACHED_VIEW: (state, view) => { | ||
| 31 | + for (const i of state.cachedViews) { | ||
| 32 | + if (i === view.name) { | ||
| 33 | + const index = state.cachedViews.indexOf(i) | ||
| 34 | + state.cachedViews.splice(index, 1) | ||
| 35 | + break | ||
| 36 | + } | ||
| 37 | + } | ||
| 38 | + }, | ||
| 39 | + | ||
| 40 | + DEL_OTHERS_VISITED_VIEWS: (state, view) => { | ||
| 41 | + state.visitedViews = state.visitedViews.filter(v => { | ||
| 42 | + return v.meta.affix || v.path === view.path | ||
| 43 | + }) | ||
| 44 | + }, | ||
| 45 | + DEL_OTHERS_CACHED_VIEWS: (state, view) => { | ||
| 46 | + for (const i of state.cachedViews) { | ||
| 47 | + if (i === view.name) { | ||
| 48 | + const index = state.cachedViews.indexOf(i) | ||
| 49 | + state.cachedViews = state.cachedViews.slice(index, index + 1) | ||
| 50 | + break | ||
| 51 | + } | ||
| 52 | + } | ||
| 53 | + }, | ||
| 54 | + | ||
| 55 | + DEL_ALL_VISITED_VIEWS: state => { | ||
| 56 | + // keep affix tags | ||
| 57 | + const affixTags = state.visitedViews.filter(tag => tag.meta.affix) | ||
| 58 | + state.visitedViews = affixTags | ||
| 59 | + }, | ||
| 60 | + DEL_ALL_CACHED_VIEWS: state => { | ||
| 61 | + state.cachedViews = [] | ||
| 62 | + }, | ||
| 63 | + | ||
| 64 | + UPDATE_VISITED_VIEW: (state, view) => { | ||
| 65 | + for (let v of state.visitedViews) { | ||
| 66 | + if (v.path === view.path) { | ||
| 67 | + v = Object.assign(v, view) | ||
| 68 | + break | ||
| 69 | + } | ||
| 70 | + } | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + }, | ||
| 74 | + actions: { | ||
| 75 | + addView({ dispatch }, view) { | ||
| 76 | + dispatch('addVisitedView', view) | ||
| 77 | + dispatch('addCachedView', view) | ||
| 78 | + }, | ||
| 79 | + addVisitedView({ commit }, view) { | ||
| 80 | + commit('ADD_VISITED_VIEW', view) | ||
| 81 | + }, | ||
| 82 | + addCachedView({ commit }, view) { | ||
| 83 | + commit('ADD_CACHED_VIEW', view) | ||
| 84 | + }, | ||
| 85 | + | ||
| 86 | + delView({ dispatch, state }, view) { | ||
| 87 | + return new Promise(resolve => { | ||
| 88 | + dispatch('delVisitedView', view) | ||
| 89 | + dispatch('delCachedView', view) | ||
| 90 | + resolve({ | ||
| 91 | + visitedViews: [...state.visitedViews], | ||
| 92 | + cachedViews: [...state.cachedViews] | ||
| 93 | + }) | ||
| 94 | + }) | ||
| 95 | + }, | ||
| 96 | + delVisitedView({ commit, state }, view) { | ||
| 97 | + return new Promise(resolve => { | ||
| 98 | + commit('DEL_VISITED_VIEW', view) | ||
| 99 | + resolve([...state.visitedViews]) | ||
| 100 | + }) | ||
| 101 | + }, | ||
| 102 | + delCachedView({ commit, state }, view) { | ||
| 103 | + return new Promise(resolve => { | ||
| 104 | + commit('DEL_CACHED_VIEW', view) | ||
| 105 | + resolve([...state.cachedViews]) | ||
| 106 | + }) | ||
| 107 | + }, | ||
| 108 | + | ||
| 109 | + delOthersViews({ dispatch, state }, view) { | ||
| 110 | + return new Promise(resolve => { | ||
| 111 | + dispatch('delOthersVisitedViews', view) | ||
| 112 | + dispatch('delOthersCachedViews', view) | ||
| 113 | + resolve({ | ||
| 114 | + visitedViews: [...state.visitedViews], | ||
| 115 | + cachedViews: [...state.cachedViews] | ||
| 116 | + }) | ||
| 117 | + }) | ||
| 118 | + }, | ||
| 119 | + delOthersVisitedViews({ commit, state }, view) { | ||
| 120 | + return new Promise(resolve => { | ||
| 121 | + commit('DEL_OTHERS_VISITED_VIEWS', view) | ||
| 122 | + resolve([...state.visitedViews]) | ||
| 123 | + }) | ||
| 124 | + }, | ||
| 125 | + delOthersCachedViews({ commit, state }, view) { | ||
| 126 | + return new Promise(resolve => { | ||
| 127 | + commit('DEL_OTHERS_CACHED_VIEWS', view) | ||
| 128 | + resolve([...state.cachedViews]) | ||
| 129 | + }) | ||
| 130 | + }, | ||
| 131 | + | ||
| 132 | + delAllViews({ dispatch, state }, view) { | ||
| 133 | + return new Promise(resolve => { | ||
| 134 | + dispatch('delAllVisitedViews', view) | ||
| 135 | + dispatch('delAllCachedViews', view) | ||
| 136 | + resolve({ | ||
| 137 | + visitedViews: [...state.visitedViews], | ||
| 138 | + cachedViews: [...state.cachedViews] | ||
| 139 | + }) | ||
| 140 | + }) | ||
| 141 | + }, | ||
| 142 | + delAllVisitedViews({ commit, state }) { | ||
| 143 | + return new Promise(resolve => { | ||
| 144 | + commit('DEL_ALL_VISITED_VIEWS') | ||
| 145 | + resolve([...state.visitedViews]) | ||
| 146 | + }) | ||
| 147 | + }, | ||
| 148 | + delAllCachedViews({ commit, state }) { | ||
| 149 | + return new Promise(resolve => { | ||
| 150 | + commit('DEL_ALL_CACHED_VIEWS') | ||
| 151 | + resolve([...state.cachedViews]) | ||
| 152 | + }) | ||
| 153 | + }, | ||
| 154 | + | ||
| 155 | + updateVisitedView({ commit }, view) { | ||
| 156 | + commit('UPDATE_VISITED_VIEW', view) | ||
| 157 | + } | ||
| 158 | + } | ||
| 159 | +} | ||
| 160 | + | ||
| 161 | +export default tagsView |
src/store/modules/user.js
0 → 100755
| 1 | +import { loginByUsername, logout, getUserInfo } from '@/api/login' | ||
| 2 | +import { getToken, setToken, removeToken } from '@/utils/auth' | ||
| 3 | + | ||
| 4 | +const user = { | ||
| 5 | + state: { | ||
| 6 | + user: '', | ||
| 7 | + status: '', | ||
| 8 | + code: '', | ||
| 9 | + token: getToken(), | ||
| 10 | + name: '', | ||
| 11 | + avatar: '', | ||
| 12 | + introduction: '', | ||
| 13 | + roles: [], | ||
| 14 | + setting: { | ||
| 15 | + articlePlatform: [] | ||
| 16 | + } | ||
| 17 | + }, | ||
| 18 | + | ||
| 19 | + mutations: { | ||
| 20 | + SET_CODE: (state, code) => { | ||
| 21 | + state.code = code | ||
| 22 | + }, | ||
| 23 | + SET_TOKEN: (state, token) => { | ||
| 24 | + state.token = token | ||
| 25 | + }, | ||
| 26 | + SET_INTRODUCTION: (state, introduction) => { | ||
| 27 | + state.introduction = introduction | ||
| 28 | + }, | ||
| 29 | + SET_SETTING: (state, setting) => { | ||
| 30 | + state.setting = setting | ||
| 31 | + }, | ||
| 32 | + SET_STATUS: (state, status) => { | ||
| 33 | + state.status = status | ||
| 34 | + }, | ||
| 35 | + SET_NAME: (state, name) => { | ||
| 36 | + state.name = name | ||
| 37 | + }, | ||
| 38 | + SET_AVATAR: (state, avatar) => { | ||
| 39 | + state.avatar = avatar | ||
| 40 | + }, | ||
| 41 | + SET_ROLES: (state, roles) => { | ||
| 42 | + state.roles = roles | ||
| 43 | + } | ||
| 44 | + }, | ||
| 45 | + | ||
| 46 | + actions: { | ||
| 47 | + // 用户名登录 | ||
| 48 | + LoginByUsername({ commit }, userInfo) { | ||
| 49 | + const username = userInfo.username.trim() | ||
| 50 | + return new Promise((resolve, reject) => { | ||
| 51 | + loginByUsername(username, userInfo.password).then(response => { | ||
| 52 | + const data = response.data | ||
| 53 | + commit('SET_TOKEN', data.token) | ||
| 54 | + setToken(response.data.token) | ||
| 55 | + resolve() | ||
| 56 | + }).catch(error => { | ||
| 57 | + reject(error) | ||
| 58 | + }) | ||
| 59 | + }) | ||
| 60 | + }, | ||
| 61 | + | ||
| 62 | + // 获取用户信息 | ||
| 63 | + GetUserInfo({ commit, state }) { | ||
| 64 | + return new Promise((resolve, reject) => { | ||
| 65 | + getUserInfo(state.token).then(response => { | ||
| 66 | + // 由于mockjs 不支持自定义状态码只能这样hack | ||
| 67 | + if (!response.data) { | ||
| 68 | + reject('Verification failed, please login again.') | ||
| 69 | + } | ||
| 70 | + const data = response.data | ||
| 71 | + | ||
| 72 | + if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组 | ||
| 73 | + commit('SET_ROLES', data.roles) | ||
| 74 | + } else { | ||
| 75 | + reject('getInfo: roles must be a non-null array!') | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + commit('SET_NAME', data.name) | ||
| 79 | + commit('SET_AVATAR', data.avatar) | ||
| 80 | + commit('SET_INTRODUCTION', data.introduction) | ||
| 81 | + resolve(response) | ||
| 82 | + }).catch(error => { | ||
| 83 | + reject(error) | ||
| 84 | + }) | ||
| 85 | + }) | ||
| 86 | + }, | ||
| 87 | + | ||
| 88 | + // 第三方验证登录 | ||
| 89 | + // LoginByThirdparty({ commit, state }, code) { | ||
| 90 | + // return new Promise((resolve, reject) => { | ||
| 91 | + // commit('SET_CODE', code) | ||
| 92 | + // loginByThirdparty(state.status, state.email, state.code).then(response => { | ||
| 93 | + // commit('SET_TOKEN', response.data.token) | ||
| 94 | + // setToken(response.data.token) | ||
| 95 | + // resolve() | ||
| 96 | + // }).catch(error => { | ||
| 97 | + // reject(error) | ||
| 98 | + // }) | ||
| 99 | + // }) | ||
| 100 | + // }, | ||
| 101 | + | ||
| 102 | + // 登出 | ||
| 103 | + LogOut({ commit, state }) { | ||
| 104 | + return new Promise((resolve, reject) => { | ||
| 105 | + logout(state.token).then(() => { | ||
| 106 | + commit('SET_TOKEN', '') | ||
| 107 | + commit('SET_ROLES', []) | ||
| 108 | + removeToken() | ||
| 109 | + resolve() | ||
| 110 | + }).catch(error => { | ||
| 111 | + reject(error) | ||
| 112 | + }) | ||
| 113 | + }) | ||
| 114 | + }, | ||
| 115 | + | ||
| 116 | + // 前端 登出 | ||
| 117 | + FedLogOut({ commit }) { | ||
| 118 | + return new Promise(resolve => { | ||
| 119 | + commit('SET_TOKEN', '') | ||
| 120 | + removeToken() | ||
| 121 | + resolve() | ||
| 122 | + }) | ||
| 123 | + }, | ||
| 124 | + | ||
| 125 | + // 动态修改权限 | ||
| 126 | + ChangeRoles({ commit, dispatch }, role) { | ||
| 127 | + return new Promise(resolve => { | ||
| 128 | + commit('SET_TOKEN', role) | ||
| 129 | + setToken(role) | ||
| 130 | + getUserInfo(role).then(response => { | ||
| 131 | + const data = response.data | ||
| 132 | + commit('SET_ROLES', data.roles) | ||
| 133 | + commit('SET_NAME', data.name) | ||
| 134 | + commit('SET_AVATAR', data.avatar) | ||
| 135 | + commit('SET_INTRODUCTION', data.introduction) | ||
| 136 | + dispatch('GenerateRoutes', data) // 动态修改权限后 重绘侧边菜单 | ||
| 137 | + resolve() | ||
| 138 | + }) | ||
| 139 | + }) | ||
| 140 | + } | ||
| 141 | + } | ||
| 142 | +} | ||
| 143 | + | ||
| 144 | +export default user |
| 1 | import axios from 'axios' | 1 | import axios from 'axios' |
| 2 | import { Message } from 'element-ui' | 2 | import { Message } from 'element-ui' |
| 3 | -import store from '@/store' | ||
| 4 | -import { getToken } from '@/utils/auth' | ||
| 5 | 3 | ||
| 6 | // create an axios instance | 4 | // create an axios instance |
| 7 | const service = axios.create({ | 5 | const service = axios.create({ |
| @@ -15,7 +13,7 @@ service.interceptors.request.use( | @@ -15,7 +13,7 @@ service.interceptors.request.use( | ||
| 15 | // Do something before request is sent | 13 | // Do something before request is sent |
| 16 | if (store.getters.token) { | 14 | if (store.getters.token) { |
| 17 | // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 | 15 | // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 |
| 18 | - config.headers['X-Token'] = getToken() | 16 | + // config.headers['X-Token'] = getToken() |
| 19 | } | 17 | } |
| 20 | return config | 18 | return config |
| 21 | }, | 19 | }, |
src/vendor/Export2Excel.js
0 → 100755
| 1 | +/* eslint-disable */ | ||
| 2 | +require('script-loader!file-saver'); | ||
| 3 | +import XLSX from 'xlsx' | ||
| 4 | + | ||
| 5 | +function generateArray(table) { | ||
| 6 | + var out = []; | ||
| 7 | + var rows = table.querySelectorAll('tr'); | ||
| 8 | + var ranges = []; | ||
| 9 | + for (var R = 0; R < rows.length; ++R) { | ||
| 10 | + var outRow = []; | ||
| 11 | + var row = rows[R]; | ||
| 12 | + var columns = row.querySelectorAll('td'); | ||
| 13 | + for (var C = 0; C < columns.length; ++C) { | ||
| 14 | + var cell = columns[C]; | ||
| 15 | + var colspan = cell.getAttribute('colspan'); | ||
| 16 | + var rowspan = cell.getAttribute('rowspan'); | ||
| 17 | + var cellValue = cell.innerText; | ||
| 18 | + if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue; | ||
| 19 | + | ||
| 20 | + //Skip ranges | ||
| 21 | + ranges.forEach(function (range) { | ||
| 22 | + if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) { | ||
| 23 | + for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null); | ||
| 24 | + } | ||
| 25 | + }); | ||
| 26 | + | ||
| 27 | + //Handle Row Span | ||
| 28 | + if (rowspan || colspan) { | ||
| 29 | + rowspan = rowspan || 1; | ||
| 30 | + colspan = colspan || 1; | ||
| 31 | + ranges.push({ | ||
| 32 | + s: { | ||
| 33 | + r: R, | ||
| 34 | + c: outRow.length | ||
| 35 | + }, | ||
| 36 | + e: { | ||
| 37 | + r: R + rowspan - 1, | ||
| 38 | + c: outRow.length + colspan - 1 | ||
| 39 | + } | ||
| 40 | + }); | ||
| 41 | + }; | ||
| 42 | + | ||
| 43 | + //Handle Value | ||
| 44 | + outRow.push(cellValue !== "" ? cellValue : null); | ||
| 45 | + | ||
| 46 | + //Handle Colspan | ||
| 47 | + if (colspan) | ||
| 48 | + for (var k = 0; k < colspan - 1; ++k) outRow.push(null); | ||
| 49 | + } | ||
| 50 | + out.push(outRow); | ||
| 51 | + } | ||
| 52 | + return [out, ranges]; | ||
| 53 | +}; | ||
| 54 | + | ||
| 55 | +function datenum(v, date1904) { | ||
| 56 | + if (date1904) v += 1462; | ||
| 57 | + var epoch = Date.parse(v); | ||
| 58 | + return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); | ||
| 59 | +} | ||
| 60 | + | ||
| 61 | +function sheet_from_array_of_arrays(data, opts) { | ||
| 62 | + var ws = {}; | ||
| 63 | + var range = { | ||
| 64 | + s: { | ||
| 65 | + c: 10000000, | ||
| 66 | + r: 10000000 | ||
| 67 | + }, | ||
| 68 | + e: { | ||
| 69 | + c: 0, | ||
| 70 | + r: 0 | ||
| 71 | + } | ||
| 72 | + }; | ||
| 73 | + for (var R = 0; R != data.length; ++R) { | ||
| 74 | + for (var C = 0; C != data[R].length; ++C) { | ||
| 75 | + if (range.s.r > R) range.s.r = R; | ||
| 76 | + if (range.s.c > C) range.s.c = C; | ||
| 77 | + if (range.e.r < R) range.e.r = R; | ||
| 78 | + if (range.e.c < C) range.e.c = C; | ||
| 79 | + var cell = { | ||
| 80 | + v: data[R][C] | ||
| 81 | + }; | ||
| 82 | + if (cell.v == null) continue; | ||
| 83 | + var cell_ref = XLSX.utils.encode_cell({ | ||
| 84 | + c: C, | ||
| 85 | + r: R | ||
| 86 | + }); | ||
| 87 | + | ||
| 88 | + if (typeof cell.v === 'number') cell.t = 'n'; | ||
| 89 | + else if (typeof cell.v === 'boolean') cell.t = 'b'; | ||
| 90 | + else if (cell.v instanceof Date) { | ||
| 91 | + cell.t = 'n'; | ||
| 92 | + cell.z = XLSX.SSF._table[14]; | ||
| 93 | + cell.v = datenum(cell.v); | ||
| 94 | + } else cell.t = 's'; | ||
| 95 | + | ||
| 96 | + ws[cell_ref] = cell; | ||
| 97 | + } | ||
| 98 | + } | ||
| 99 | + if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); | ||
| 100 | + return ws; | ||
| 101 | +} | ||
| 102 | + | ||
| 103 | +function Workbook() { | ||
| 104 | + if (!(this instanceof Workbook)) return new Workbook(); | ||
| 105 | + this.SheetNames = []; | ||
| 106 | + this.Sheets = {}; | ||
| 107 | +} | ||
| 108 | + | ||
| 109 | +function s2ab(s) { | ||
| 110 | + var buf = new ArrayBuffer(s.length); | ||
| 111 | + var view = new Uint8Array(buf); | ||
| 112 | + for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; | ||
| 113 | + return buf; | ||
| 114 | +} | ||
| 115 | + | ||
| 116 | +export function export_table_to_excel(id) { | ||
| 117 | + var theTable = document.getElementById(id); | ||
| 118 | + var oo = generateArray(theTable); | ||
| 119 | + var ranges = oo[1]; | ||
| 120 | + | ||
| 121 | + /* original data */ | ||
| 122 | + var data = oo[0]; | ||
| 123 | + var ws_name = "SheetJS"; | ||
| 124 | + | ||
| 125 | + var wb = new Workbook(), | ||
| 126 | + ws = sheet_from_array_of_arrays(data); | ||
| 127 | + | ||
| 128 | + /* add ranges to worksheet */ | ||
| 129 | + // ws['!cols'] = ['apple', 'banan']; | ||
| 130 | + ws['!merges'] = ranges; | ||
| 131 | + | ||
| 132 | + /* add worksheet to workbook */ | ||
| 133 | + wb.SheetNames.push(ws_name); | ||
| 134 | + wb.Sheets[ws_name] = ws; | ||
| 135 | + | ||
| 136 | + var wbout = XLSX.write(wb, { | ||
| 137 | + bookType: 'xlsx', | ||
| 138 | + bookSST: false, | ||
| 139 | + type: 'binary' | ||
| 140 | + }); | ||
| 141 | + | ||
| 142 | + saveAs(new Blob([s2ab(wbout)], { | ||
| 143 | + type: "application/octet-stream" | ||
| 144 | + }), "test.xlsx") | ||
| 145 | +} | ||
| 146 | + | ||
| 147 | +export function export_json_to_excel({ | ||
| 148 | + header, | ||
| 149 | + data, | ||
| 150 | + filename, | ||
| 151 | + autoWidth = true, | ||
| 152 | + bookType= 'xlsx' | ||
| 153 | +} = {}) { | ||
| 154 | + /* original data */ | ||
| 155 | + filename = filename || 'excel-list' | ||
| 156 | + data = [...data] | ||
| 157 | + data.unshift(header); | ||
| 158 | + var ws_name = "SheetJS"; | ||
| 159 | + var wb = new Workbook(), | ||
| 160 | + ws = sheet_from_array_of_arrays(data); | ||
| 161 | + | ||
| 162 | + if (autoWidth) { | ||
| 163 | + /*设置worksheet每列的最大宽度*/ | ||
| 164 | + const colWidth = data.map(row => row.map(val => { | ||
| 165 | + /*先判断是否为null/undefined*/ | ||
| 166 | + if (val == null) { | ||
| 167 | + return { | ||
| 168 | + 'wch': 10 | ||
| 169 | + }; | ||
| 170 | + } | ||
| 171 | + /*再判断是否为中文*/ | ||
| 172 | + else if (val.toString().charCodeAt(0) > 255) { | ||
| 173 | + return { | ||
| 174 | + 'wch': val.toString().length * 2 | ||
| 175 | + }; | ||
| 176 | + } else { | ||
| 177 | + return { | ||
| 178 | + 'wch': val.toString().length | ||
| 179 | + }; | ||
| 180 | + } | ||
| 181 | + })) | ||
| 182 | + /*以第一行为初始值*/ | ||
| 183 | + let result = colWidth[0]; | ||
| 184 | + for (let i = 1; i < colWidth.length; i++) { | ||
| 185 | + for (let j = 0; j < colWidth[i].length; j++) { | ||
| 186 | + if (result[j]['wch'] < colWidth[i][j]['wch']) { | ||
| 187 | + result[j]['wch'] = colWidth[i][j]['wch']; | ||
| 188 | + } | ||
| 189 | + } | ||
| 190 | + } | ||
| 191 | + ws['!cols'] = result; | ||
| 192 | + } | ||
| 193 | + | ||
| 194 | + /* add worksheet to workbook */ | ||
| 195 | + wb.SheetNames.push(ws_name); | ||
| 196 | + wb.Sheets[ws_name] = ws; | ||
| 197 | + | ||
| 198 | + var wbout = XLSX.write(wb, { | ||
| 199 | + bookType: bookType, | ||
| 200 | + bookSST: false, | ||
| 201 | + type: 'binary' | ||
| 202 | + }); | ||
| 203 | + saveAs(new Blob([s2ab(wbout)], { | ||
| 204 | + type: "application/octet-stream" | ||
| 205 | + }), `${filename}.${bookType}`); | ||
| 206 | +} |
src/vendor/Export2Zip.js
0 → 100755
| 1 | +/* eslint-disable */ | ||
| 2 | +require('script-loader!file-saver'); | ||
| 3 | +import JSZip from 'jszip' | ||
| 4 | + | ||
| 5 | +export function export_txt_to_zip(th, jsonData, txtName, zipName) { | ||
| 6 | + const zip = new JSZip() | ||
| 7 | + const txt_name = txtName || 'file' | ||
| 8 | + const zip_name = zipName || 'file' | ||
| 9 | + const data = jsonData | ||
| 10 | + let txtData = `${th}\r\n` | ||
| 11 | + data.forEach((row) => { | ||
| 12 | + let tempStr = '' | ||
| 13 | + tempStr = row.toString() | ||
| 14 | + txtData += `${tempStr}\r\n` | ||
| 15 | + }) | ||
| 16 | + zip.file(`${txt_name}.txt`, txtData) | ||
| 17 | + zip.generateAsync({ | ||
| 18 | + type: "blob" | ||
| 19 | + }).then((blob) => { | ||
| 20 | + saveAs(blob, `${zip_name}.zip`) | ||
| 21 | + }, (err) => { | ||
| 22 | + alert('导出失败') | ||
| 23 | + }) | ||
| 24 | +} |
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | <el-button v-waves :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download" @click="handleDownload">{{ $t('table.export') }}</el-button> | 9 | <el-button v-waves :loading="downloadLoading" class="filter-item" type="primary" icon="el-icon-download" @click="handleDownload">{{ $t('table.export') }}</el-button> |
| 10 | <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-message" @click="handleCreate">批量发送</el-button> | 10 | <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-message" @click="handleCreate">批量发送</el-button> |
| 11 | </div> | 11 | </div> |
| 12 | - <tree-table :data="data" :eval-func="func" :eval-args="args" :expand-all="expandAll" stripe="true" style="font-size: 13px" border @selection-change="handleSelectionChange"> | 12 | + <tree-table :data="data" :eval-func="func" :eval-args="args" :expand-all="expandAll" stripe style="font-size: 13px" border @selection-change="handleSelectionChange"> |
| 13 | <el-table-column prop="waybillNo" label="主单号" width="110px" align="center" sortable> | 13 | <el-table-column prop="waybillNo" label="主单号" width="110px" align="center" sortable> |
| 14 | <template slot-scope="scope"> | 14 | <template slot-scope="scope"> |
| 15 | <span>{{ scope.row.waybillNo }}</span> | 15 | <span>{{ scope.row.waybillNo }}</span> |
| @@ -80,7 +80,7 @@ | @@ -80,7 +80,7 @@ | ||
| 80 | <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> | 80 | <pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" /> |
| 81 | 81 | ||
| 82 | <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" fullscreen="true"> | 82 | <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" fullscreen="true"> |
| 83 | - <el-form ref="" :inline="true" :label-position="left" :rules="rules" :model="temp" label-width="100px" style="font-size: 13px"> | 83 | + <el-form ref="" :inline="true" label-position="left" :rules="rules" :model="temp" label-width="100px" style="font-size: 13px"> |
| 84 | <div> | 84 | <div> |
| 85 | <el-tag type="info" effect="plain"> | 85 | <el-tag type="info" effect="plain"> |
| 86 | 航班信息 | 86 | 航班信息 |
| @@ -350,7 +350,7 @@ | @@ -350,7 +350,7 @@ | ||
| 350 | Auth: Lei.j1ang | 350 | Auth: Lei.j1ang |
| 351 | Created: 2018/1/19-14:54 | 351 | Created: 2018/1/19-14:54 |
| 352 | */ | 352 | */ |
| 353 | - | 353 | +import { fetchList } from '@/api/article' |
| 354 | import treeTable from '@/components/TreeTable' | 354 | import treeTable from '@/components/TreeTable' |
| 355 | import treeToArray from './customEval' | 355 | import treeToArray from './customEval' |
| 356 | import Pagination from '@/components/Pagination' | 356 | import Pagination from '@/components/Pagination' |
| @@ -359,7 +359,8 @@ import country from '@/utils/country.js' | @@ -359,7 +359,8 @@ import country from '@/utils/country.js' | ||
| 359 | import companyType from '@/utils/companyType.js' | 359 | import companyType from '@/utils/companyType.js' |
| 360 | import dangerGoods from '@/utils/dangerGoods.js' | 360 | import dangerGoods from '@/utils/dangerGoods.js' |
| 361 | import goodsPackage from '@/utils/goodsPackage.js' | 361 | import goodsPackage from '@/utils/goodsPackage.js' |
| 362 | - | 362 | +import excel from '@/vendor/Export2Excel' |
| 363 | +import { parseTime } from '@/utils' | ||
| 363 | const calendarTypeOptions = [ | 364 | const calendarTypeOptions = [ |
| 364 | { key: 'CN', display_name: 'China' }, | 365 | { key: 'CN', display_name: 'China' }, |
| 365 | { key: 'US', display_name: 'USA' }, | 366 | { key: 'US', display_name: 'USA' }, |
| @@ -404,7 +405,9 @@ export default { | @@ -404,7 +405,9 @@ export default { | ||
| 404 | expandAll: true, | 405 | expandAll: true, |
| 405 | total: 1, | 406 | total: 1, |
| 406 | resend: true, | 407 | resend: true, |
| 407 | - listLoading: true, | 408 | + listLoading: false, |
| 409 | + downloadLoading: false, | ||
| 410 | + loading: false, | ||
| 408 | multipleSelection: [], | 411 | multipleSelection: [], |
| 409 | dialogFormVisible: false, | 412 | dialogFormVisible: false, |
| 410 | dialogStatus: '', | 413 | dialogStatus: '', |
| @@ -517,7 +520,7 @@ export default { | @@ -517,7 +520,7 @@ export default { | ||
| 517 | ] | 520 | ] |
| 518 | }, | 521 | }, |
| 519 | { | 522 | { |
| 520 | - id: 4, | 523 | + id: 5, |
| 521 | waybillNo: '580-20728391', | 524 | waybillNo: '580-20728391', |
| 522 | houseWaybillNo: '', | 525 | houseWaybillNo: '', |
| 523 | custom: '4604', | 526 | custom: '4604', |
| @@ -605,6 +608,10 @@ export default { | @@ -605,6 +608,10 @@ export default { | ||
| 605 | this.$refs[''].clearValidate() | 608 | this.$refs[''].clearValidate() |
| 606 | }) | 609 | }) |
| 607 | }, | 610 | }, |
| 611 | + handleFilter() { | ||
| 612 | + this.listQuery.page = 1 | ||
| 613 | + this.getList() | ||
| 614 | + }, | ||
| 608 | handleModifyStatus(row, status) { | 615 | handleModifyStatus(row, status) { |
| 609 | this.$message({ | 616 | this.$message({ |
| 610 | message: '操作成功', | 617 | message: '操作成功', |
| @@ -613,7 +620,16 @@ export default { | @@ -613,7 +620,16 @@ export default { | ||
| 613 | row.status = status | 620 | row.status = status |
| 614 | }, | 621 | }, |
| 615 | getList() { | 622 | getList() { |
| 623 | + this.listLoading = true | ||
| 624 | + fetchList(this.listQuery).then(response => { | ||
| 625 | + this.list = response.data.items | ||
| 626 | + this.total = response.data.total | ||
| 616 | 627 | ||
| 628 | + // Just to simulate the time of the request | ||
| 629 | + setTimeout(() => { | ||
| 630 | + this.listLoading = false | ||
| 631 | + }, 1.5 * 1000) | ||
| 632 | + }) | ||
| 617 | }, | 633 | }, |
| 618 | handleSelectionChange(val) { | 634 | handleSelectionChange(val) { |
| 619 | this.multipleSelection = val | 635 | this.multipleSelection = val |
| @@ -640,6 +656,18 @@ export default { | @@ -640,6 +656,18 @@ export default { | ||
| 640 | this.$refs[''].clearValidate() | 656 | this.$refs[''].clearValidate() |
| 641 | }) | 657 | }) |
| 642 | }, | 658 | }, |
| 659 | + handleDownload() { | ||
| 660 | + this.downloadLoading = true | ||
| 661 | + const tHeader = ['timestamp', 'title', 'type', 'importance', 'status'] | ||
| 662 | + const filterVal = ['timestamp', 'title', 'type', 'importance', 'status'] | ||
| 663 | + const data = this.formatJson(filterVal, this.list) | ||
| 664 | + excel.export_json_to_excel({ | ||
| 665 | + header: tHeader, | ||
| 666 | + data, | ||
| 667 | + filename: 'table-list' | ||
| 668 | + }) | ||
| 669 | + this.downloadLoading = false | ||
| 670 | + }, | ||
| 643 | remoteMethod(query) { | 671 | remoteMethod(query) { |
| 644 | if (query !== '') { | 672 | if (query !== '') { |
| 645 | this.loading = true | 673 | this.loading = true |
-
请 注册 或 登录 后发表评论