Browse Source

盘点优化(注意npm install, npm run dev)

LD 5 năm trước cách đây
mục cha
commit
c23c37f93d

+ 149 - 144
package-lock.json

@@ -3432,9 +3432,9 @@
             "dev": true
         },
         "elliptic": {
-            "version": "6.5.2",
-            "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.2.tgz",
-            "integrity": "sha1-BcVnjXFzwEnYykM1UiJKSV0ON2I=",
+            "version": "6.5.3",
+            "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
+            "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
             "dev": true,
             "requires": {
                 "bn.js": "^4.4.0",
@@ -3448,8 +3448,8 @@
             "dependencies": {
                 "bn.js": {
                     "version": "4.11.9",
-                    "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.9.tgz",
-                    "integrity": "sha1-JtVWgpRY+dHoH8SJUkk9C6NQeCg=",
+                    "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+                    "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
                     "dev": true
                 }
             }
@@ -3563,29 +3563,6 @@
                 "has-binary2": "~1.0.2"
             }
         },
-        "enhanced-resolve": {
-            "version": "4.1.1",
-            "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.1.tgz?cache=0&sync_timestamp=1590177916930&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.1.tgz",
-            "integrity": "sha1-KTfiuAZs0P584JkKmPDXGjUYn2Y=",
-            "dev": true,
-            "requires": {
-                "graceful-fs": "^4.1.2",
-                "memory-fs": "^0.5.0",
-                "tapable": "^1.0.0"
-            },
-            "dependencies": {
-                "memory-fs": {
-                    "version": "0.5.0",
-                    "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz?cache=0&sync_timestamp=1570537491040&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmemory-fs%2Fdownload%2Fmemory-fs-0.5.0.tgz",
-                    "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=",
-                    "dev": true,
-                    "requires": {
-                        "errno": "^0.1.3",
-                        "readable-stream": "^2.0.1"
-                    }
-                }
-            }
-        },
         "entities": {
             "version": "2.0.2",
             "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.2.tgz",
@@ -5868,9 +5845,9 @@
             }
         },
         "lodash": {
-            "version": "4.17.15",
-            "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz",
-            "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg="
+            "version": "4.17.20",
+            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+            "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
         },
         "lodash._baseassign": {
             "version": "3.2.0",
@@ -6210,8 +6187,7 @@
         },
         "minimist": {
             "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
-            "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+            "resolved": "",
             "dev": true
         },
         "mississippi": {
@@ -6259,6 +6235,11 @@
                 }
             }
         },
+        "moment": {
+            "version": "2.28.0",
+            "resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz",
+            "integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw=="
+        },
         "move-concurrently": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
@@ -8430,12 +8411,6 @@
                 }
             }
         },
-        "serialize-javascript": {
-            "version": "2.1.2",
-            "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-2.1.2.tgz",
-            "integrity": "sha1-7OxTsOAxe9yV73arcHS3OEeF+mE=",
-            "dev": true
-        },
         "serve-index": {
             "version": "1.9.1",
             "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
@@ -9344,16 +9319,16 @@
             }
         },
         "terser-webpack-plugin": {
-            "version": "1.4.3",
-            "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.3.tgz",
-            "integrity": "sha1-Xsry29xfuZdF/QZ5H0b8ndscmnw=",
+            "version": "1.4.5",
+            "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
+            "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
             "dev": true,
             "requires": {
                 "cacache": "^12.0.2",
                 "find-cache-dir": "^2.1.0",
                 "is-wsl": "^1.1.0",
                 "schema-utils": "^1.0.0",
-                "serialize-javascript": "^2.1.2",
+                "serialize-javascript": "^4.0.0",
                 "source-map": "^0.6.1",
                 "terser": "^4.1.2",
                 "webpack-sources": "^1.4.0",
@@ -9362,14 +9337,14 @@
             "dependencies": {
                 "commander": {
                     "version": "2.20.3",
-                    "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1587781596778&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz",
-                    "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=",
+                    "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+                    "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
                     "dev": true
                 },
                 "schema-utils": {
                     "version": "1.0.0",
-                    "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
-                    "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+                    "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+                    "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
                     "dev": true,
                     "requires": {
                         "ajv": "^6.1.0",
@@ -9377,16 +9352,25 @@
                         "ajv-keywords": "^3.1.0"
                     }
                 },
+                "serialize-javascript": {
+                    "version": "4.0.0",
+                    "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+                    "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+                    "dev": true,
+                    "requires": {
+                        "randombytes": "^2.1.0"
+                    }
+                },
                 "source-map": {
                     "version": "0.6.1",
-                    "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
-                    "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
                     "dev": true
                 },
                 "terser": {
-                    "version": "4.7.0",
-                    "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.7.0.tgz?cache=0&sync_timestamp=1589825699609&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser%2Fdownload%2Fterser-4.7.0.tgz",
-                    "integrity": "sha1-FYUs8aCOMlaoBCjoZaL6iT/7oAY=",
+                    "version": "4.8.0",
+                    "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+                    "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
                     "dev": true,
                     "requires": {
                         "commander": "^2.20.0",
@@ -9905,22 +9889,60 @@
             "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
             "dev": true
         },
-        "watchpack": {
-            "version": "1.7.2",
-            "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.7.2.tgz",
-            "integrity": "sha1-wC5NTUmRPD5+EiwzJTZa+dMx6ao=",
+        "watchpack-chokidar2": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.0.tgz",
+            "integrity": "sha1-mUihhmy71suCTeoTp+1pH2yN3/A=",
             "dev": true,
+            "optional": true,
             "requires": {
-                "chokidar": "^3.4.0",
-                "graceful-fs": "^4.1.2",
-                "neo-async": "^2.5.0",
-                "watchpack-chokidar2": "^2.0.0"
+                "chokidar": "^2.1.8"
+            }
+        },
+        "wbuf": {
+            "version": "1.7.3",
+            "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz",
+            "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=",
+            "dev": true,
+            "requires": {
+                "minimalistic-assert": "^1.0.0"
+            }
+        },
+        "webpack": {
+            "version": "4.44.2",
+            "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz",
+            "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==",
+            "dev": true,
+            "requires": {
+                "@webassemblyjs/ast": "1.9.0",
+                "@webassemblyjs/helper-module-context": "1.9.0",
+                "@webassemblyjs/wasm-edit": "1.9.0",
+                "@webassemblyjs/wasm-parser": "1.9.0",
+                "acorn": "^6.4.1",
+                "ajv": "^6.10.2",
+                "ajv-keywords": "^3.4.1",
+                "chrome-trace-event": "^1.0.2",
+                "enhanced-resolve": "^4.3.0",
+                "eslint-scope": "^4.0.3",
+                "json-parse-better-errors": "^1.0.2",
+                "loader-runner": "^2.4.0",
+                "loader-utils": "^1.2.3",
+                "memory-fs": "^0.4.1",
+                "micromatch": "^3.1.10",
+                "mkdirp": "^0.5.3",
+                "neo-async": "^2.6.1",
+                "node-libs-browser": "^2.2.1",
+                "schema-utils": "^1.0.0",
+                "tapable": "^1.1.3",
+                "terser-webpack-plugin": "^1.4.3",
+                "watchpack": "^1.7.4",
+                "webpack-sources": "^1.4.1"
             },
             "dependencies": {
                 "anymatch": {
                     "version": "3.1.1",
-                    "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz",
-                    "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=",
+                    "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+                    "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
                     "dev": true,
                     "optional": true,
                     "requires": {
@@ -9929,16 +9951,16 @@
                     }
                 },
                 "binary-extensions": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.0.0.tgz",
-                    "integrity": "sha1-I8DfFPaogHf1+YbA0WfsA8PVU3w=",
+                    "version": "2.1.0",
+                    "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+                    "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
                     "dev": true,
                     "optional": true
                 },
                 "braces": {
                     "version": "3.0.2",
-                    "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
-                    "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+                    "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+                    "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
                     "dev": true,
                     "optional": true,
                     "requires": {
@@ -9946,9 +9968,9 @@
                     }
                 },
                 "chokidar": {
-                    "version": "3.4.0",
-                    "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.4.0.tgz?cache=0&sync_timestamp=1587911196018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchokidar%2Fdownload%2Fchokidar-3.4.0.tgz",
-                    "integrity": "sha1-swYRQjzjdjV8dlubj5BLn7o8C+g=",
+                    "version": "3.4.2",
+                    "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
+                    "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
                     "dev": true,
                     "optional": true,
                     "requires": {
@@ -9962,10 +9984,33 @@
                         "readdirp": "~3.4.0"
                     }
                 },
+                "enhanced-resolve": {
+                    "version": "4.3.0",
+                    "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
+                    "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
+                    "dev": true,
+                    "requires": {
+                        "graceful-fs": "^4.1.2",
+                        "memory-fs": "^0.5.0",
+                        "tapable": "^1.0.0"
+                    },
+                    "dependencies": {
+                        "memory-fs": {
+                            "version": "0.5.0",
+                            "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+                            "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+                            "dev": true,
+                            "requires": {
+                                "errno": "^0.1.3",
+                                "readable-stream": "^2.0.1"
+                            }
+                        }
+                    }
+                },
                 "fill-range": {
                     "version": "7.0.1",
-                    "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
-                    "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+                    "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+                    "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
                     "dev": true,
                     "optional": true,
                     "requires": {
@@ -9974,15 +10019,15 @@
                 },
                 "fsevents": {
                     "version": "2.1.3",
-                    "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.3.tgz?cache=0&sync_timestamp=1588787369955&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.1.3.tgz",
-                    "integrity": "sha1-+3OHA66NL5/pAMM4Nt3r7ouX8j4=",
+                    "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+                    "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
                     "dev": true,
                     "optional": true
                 },
                 "glob-parent": {
                     "version": "5.1.1",
-                    "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz?cache=0&sync_timestamp=1584836110944&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.1.tgz",
-                    "integrity": "sha1-tsHvQXxOVmPqSY8cRa+saRa7wik=",
+                    "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+                    "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
                     "dev": true,
                     "optional": true,
                     "requires": {
@@ -9991,8 +10036,8 @@
                 },
                 "is-binary-path": {
                     "version": "2.1.0",
-                    "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz",
-                    "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
+                    "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+                    "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
                     "dev": true,
                     "optional": true,
                     "requires": {
@@ -10001,92 +10046,52 @@
                 },
                 "is-number": {
                     "version": "7.0.0",
-                    "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz",
-                    "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=",
+                    "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+                    "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
                     "dev": true,
                     "optional": true
                 },
                 "readdirp": {
                     "version": "3.4.0",
-                    "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.4.0.tgz",
-                    "integrity": "sha1-n9zN+ekVWAVEkiGsZF6DA6tbmto=",
+                    "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+                    "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
                     "dev": true,
                     "optional": true,
                     "requires": {
                         "picomatch": "^2.2.1"
                     }
                 },
+                "schema-utils": {
+                    "version": "1.0.0",
+                    "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+                    "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+                    "dev": true,
+                    "requires": {
+                        "ajv": "^6.1.0",
+                        "ajv-errors": "^1.0.0",
+                        "ajv-keywords": "^3.1.0"
+                    }
+                },
                 "to-regex-range": {
                     "version": "5.0.1",
-                    "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
-                    "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+                    "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+                    "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
                     "dev": true,
                     "optional": true,
                     "requires": {
                         "is-number": "^7.0.0"
                     }
-                }
-            }
-        },
-        "watchpack-chokidar2": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.0.tgz",
-            "integrity": "sha1-mUihhmy71suCTeoTp+1pH2yN3/A=",
-            "dev": true,
-            "optional": true,
-            "requires": {
-                "chokidar": "^2.1.8"
-            }
-        },
-        "wbuf": {
-            "version": "1.7.3",
-            "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz",
-            "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=",
-            "dev": true,
-            "requires": {
-                "minimalistic-assert": "^1.0.0"
-            }
-        },
-        "webpack": {
-            "version": "4.43.0",
-            "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.43.0.tgz",
-            "integrity": "sha1-xIVHsR1WMiTFYdrRFyyKoLimeOY=",
-            "dev": true,
-            "requires": {
-                "@webassemblyjs/ast": "1.9.0",
-                "@webassemblyjs/helper-module-context": "1.9.0",
-                "@webassemblyjs/wasm-edit": "1.9.0",
-                "@webassemblyjs/wasm-parser": "1.9.0",
-                "acorn": "^6.4.1",
-                "ajv": "^6.10.2",
-                "ajv-keywords": "^3.4.1",
-                "chrome-trace-event": "^1.0.2",
-                "enhanced-resolve": "^4.1.0",
-                "eslint-scope": "^4.0.3",
-                "json-parse-better-errors": "^1.0.2",
-                "loader-runner": "^2.4.0",
-                "loader-utils": "^1.2.3",
-                "memory-fs": "^0.4.1",
-                "micromatch": "^3.1.10",
-                "mkdirp": "^0.5.3",
-                "neo-async": "^2.6.1",
-                "node-libs-browser": "^2.2.1",
-                "schema-utils": "^1.0.0",
-                "tapable": "^1.1.3",
-                "terser-webpack-plugin": "^1.4.3",
-                "watchpack": "^1.6.1",
-                "webpack-sources": "^1.4.1"
-            },
-            "dependencies": {
-                "schema-utils": {
-                    "version": "1.0.0",
-                    "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz",
-                    "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+                },
+                "watchpack": {
+                    "version": "1.7.4",
+                    "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
+                    "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
                     "dev": true,
                     "requires": {
-                        "ajv": "^6.1.0",
-                        "ajv-errors": "^1.0.0",
-                        "ajv-keywords": "^3.1.0"
+                        "chokidar": "^3.4.1",
+                        "graceful-fs": "^4.1.2",
+                        "neo-async": "^2.5.0",
+                        "watchpack-chokidar2": "^2.0.0"
                     }
                 }
             }

+ 2 - 1
package.json

@@ -16,7 +16,7 @@
     "font-awesome": "^4.7.0",
     "jquery": "^3.5.1",
     "laravel-mix": "^4.1.4",
-    "lodash": "^4.17.15",
+    "lodash": "^4.17.20",
     "popper.js": "^1.16.1",
     "resolve-url-loader": "^2.3.1",
     "sass": "^1.26.7",
@@ -29,6 +29,7 @@
     "js-cookie": "^2.2.1",
     "laravel-echo": "^1.8.0",
     "laravel-echo-server": "^1.6.2",
+    "moment": "^2.28.0",
     "pusher-js": "^5.1.1",
     "socket.io-client": "^2.3.0"
   },

+ 12 - 1
public/t.php

@@ -1,3 +1,14 @@
-<?php
+<script>
 
 
+    let promise = new Promise(function (resolve, reject) {
+
+        resolve('xxx')
+    });
+    promise.then(function(ind){for (let i = 0; i < 9999999; i++) {
+        if (i % 5000 === 0) console.log('i')
+    }})
+    console.log('yes')
+    console.log('yes')
+    console.log('yes')
+</script>

+ 1 - 1
resources/js/bootstrap.js

@@ -12,7 +12,7 @@ try {
     window.$.cookie=require('js-cookie')
     require('bootstrap');
 } catch (e) {}
-
+window.moment = require('moment');
 /**
  * We'll load the axios HTTP library which allows us to easily issue requests
  * to our Laravel back-end. This library automatically handles sending the

+ 122 - 82
resources/views/inventory/stockInventory/inventoryMission.blade.php

@@ -18,7 +18,7 @@
                     <button class="btn btn-sm" @click="listMode?listMode=false:listMode=true" :class="listMode?'btn-dark':'btn-outline-dark'" v-if="!listMode">切换为列表</button>
                 @endcan
                 @can('库存管理-盘点')
-                    <button class="btn btn-sm" @click="listMode?listMode=false:listMode=true" :class="listMode?'btn-dark':'btn-outline-dark'" v-if="listMode&&inventory.status!='已完成'">切换为盘点</button>
+                    <button class="btn btn-sm" @click="listMode?listMode=false:listMode=true" :class="listMode?'btn-dark':'btn-outline-dark'" v-if="listMode&&inventory.status!=='已完成'">切换为盘点</button>
                 @endcan
             </span>
 
@@ -81,23 +81,22 @@
             <div class="mt-3 form-inline " v-if="!listMode" :class="inventory.status=='盘点中' ||inventory.status=='待盘点'?'row-cols-3':'row-cols-5'">
         <span class="form-group">
             <label for="location" class="text-secondary font-weight-bold">请输库位</label>
-            <input id="inventoryInput"  @keypress="locationPress($event)"
+            <input id="locationInput"  @keypress="locationPress($event)"
                    @change="locationChange($event)"
-                   v-bind:value="inputs.location"
                    name="location" type="text" class="form-control  input"  autocomplete="off" value="@if(old('location')){{old('location')}}@endif">
         </span>
                 <span class="form-group ml-4">
             <label for="barcode" class="text-secondary font-weight-bold">请输产品条码</label>
-                <input id="barcode" name="barcode"  @keypress="barcodePress($event)"
+                <input id="barcodeInput" name="barcode"  @keypress="barcodePress($event)"
                        @change="barcodeChange($event)"
-                       v-bind:value="inputs.barcode"
                        type="text" value="@if(old('barcode')){{old('barcode')}}@endif" class="form-control  input" autocomplete="off">
 
         </span>
 
                 <span class="form-group ml-4" v-if="dataExtraStatus.addingNew" id="countBlock">
                         <label for="count" class="text-secondary font-weight-bold">请输盘点数</label>
-                        <input type="text" id="count"  @keypress="amountPress($event)" v-model="inputs.amount"
+                        <input type="text" id="amountInput"  @keypress="amountPress($event)"
+                               @change="amountChange($event)"
                                name="count" class="form-control input" value="@if(old('count')){{old('count')}}@endif"  autocomplete="off">
                     </span>
 
@@ -140,7 +139,7 @@
                         <tr v-for="inventoryMission in 指定盘点记录列" class="selectingRow">
                             <td>
                                 <input type="text"  @keypress="selectingRow($event)"
-                                       name="amount" class="form-control-sm input"   autocomplete="off" :data_id="inventoryMission.id" @input="inputs.amount=$event.target.value">
+                                       name="amount" class="form-control-sm input"   autocomplete="off" :data_id="inventoryMission.id" @input="inputs().amount=$event.target.value">
                             </td>
                             <td>
                                 <span class="btn btn-sm btn-outline-primary" @click="盘点选中任务(inventoryMission.id,inventoryMission.produced_at,inventoryMission.valid_at,inventoryMission.batch_number)">选定盘点</span>
@@ -203,7 +202,7 @@
                                     <span  class="mr-3 text-nowrap"><span class="font-weight-bold">输入盘点数:</span>
                                 <span >
                                     <input type="text"  @keypress="selectingRow($event)"
-                                           name="amount" class="form-control-sm input"   autocomplete="off" :data_id="inventoryMission.id" @input="inputs.amount=$event.target.value">
+                                           name="amount" class="form-control-sm input"   autocomplete="off" :data_id="inventoryMission.id" @input="inputs().amount=$event.target.value">
                                 </span>
                                 </span>
                                     <span  class="mr-3 text-nowrap"><span class="font-weight-bold">操作:</span>
@@ -500,12 +499,16 @@
         window.onresize= hideHeaderTitle;
         window.onscroll=hideHeaderTitle;
 
+        let $barcodeInput=null;
+        let $locationInput=null;
+        let $amountInput=null;
+        let inputs={location:'',barcode:'',amount:''};//双向绑定在本页太慢,所以用外部变量
 
         let listVue = new Vue({
             el: "#list",
             data: {
                 selectingId:'',
-                inputs:{location:'',barcode:'',amount:''},
+                // inputs:{location:'',barcode:'',amount:''},
                 dataExtraStatus:{addingNew:false, displayingLastCounting:false},
                 inventory:{!! $inventoryAccount!!},
                 inventoryMissions : [
@@ -545,7 +548,6 @@
                 stockInventoryPersons:[],
                 inventoryAccountMissions:[],
                 listMode:false,
-                中:'3232lll',
                 分割位置id:null,
             },
             beforeMount: function () {
@@ -569,8 +571,9 @@
                 let _this=this;
                 $(".tooltipTarget").tooltip({'trigger': 'hover'});
                 $("#list").removeClass('d-none');
-
-
+                $barcodeInput=$('#barcodeInput');
+                $locationInput=$('#locationInput');
+                $amountInput=$('#amountInput');
                 this.放置焦点光标至正确位置();
                 (function 初始化列表模式(){
                     let listMode=getGetVal('listMode')
@@ -614,6 +617,9 @@
                 this.以库位建立记录索引();
             },
             methods:{
+                inputs() {
+                    return inputs;
+                },
                 //全选事件
                 checkAll(e) {
                     if (e.target.checked) {
@@ -628,51 +634,69 @@
                 },
                 barcodePress(e){
                     if(e.key==='Enter') {
-                        this.inputs.barcode=e.target.value;
-                        this.放置焦点光标至正确位置();
-                        this.提交库位和条码();
+                        this.barcodeChange(e);
                     }
                 },
                 barcodeChange(e){
-                    this.inputs.barcode=e.target.value;
+                    let _this=this;
+                    this.inputs().barcode=e.target.value;
                     this.放置焦点光标至正确位置();
-                    this.提交库位和条码();
+                    _this.显示盘点计数input_按情况();
+                    (new Promise(function(resolve,reject){resolve()})).then(function (){
+                        _this.提交库位和条码()
+                        setTimeout(function(){
+                            _this.显示盘点计数input_按情况();
+                        },20)
+                    })
                 },
                 amountPress(e){
-                    if(e.key==='Enter') this.提交新增并盘点();
+                    if(e.key==='Enter') this.amountChange(e);
+                },
+                amountChange(e){
+                    this.inputs().amount=e.target.value;
+                    this.提交新增并盘点();
                 },
                 locationPress(e){
                     if(e.key==='Enter'){
-                        this.inputs.location=e.target.value;
-                        this.放置焦点光标至正确位置();
-                        this.提交库位和条码();
+                        this.locationChange(e);
                     }
                 },
                 locationChange(e){
-                    this.inputs.location=e.target.value;
+                    let _this=this;
+                    this.inputs().location=e.target.value;
                     this.放置焦点光标至正确位置();
-                    this.提交库位和条码();
+                    _this.显示盘点计数input_按情况();
+                    (new Promise(function(resolve,reject){resolve()})).then(function (){
+                        _this.提交库位和条码();
+                        setTimeout(function(){
+                            _this.显示盘点计数input_按情况();
+                        },20)
+                    })
                 },
                 selectingRow(e){
+                    let _this=this;
                     let id = $(e.target).attr('data_id');
-                    this.selectingId=id;
+                    _this.selectingId=id;
                     if(e.key==='Enter'){
-                        this.放置焦点光标至正确位置();
-                        if(!this.提交新增并盘点()){
-                            this.提交盘点();
-                        }
+                        this.放置焦点光标至正确位置()
+                        let re=true;
+                        _this.提交新增并盘点().then(function(result){
+                            if(!result){
+                                _this.提交盘点();
+                            }
+                        })
                     }
                 },
-                提交库位和条码(){
+                提交库位和条码:_.throttle(async function(){
                     let _this=this;
                     this.清空指定盘点记录列();
-                    if (!_this.inputs.barcode) return;
-                    if(!this.is条码存在于WMS(_this.inputs.barcode)){
+                    if (!_this.inputs().barcode) return;
+                    if(!(await this.is条码存在于WMS(_this.inputs().barcode))){
                         tempTip.setDuration(2000);
                         tempTip.show('输入的商品条码没有对应的商品!');
                     }
-                    this.筛选出记录(_this.inputs.location,_this.inputs.barcode);
-                },
+                    this.筛选出记录(_this.inputs().location,_this.inputs().barcode);
+                },100,{ 'trailing': false }),
                 以条码建立记录索引(){
                     let _this=this;
                     _this.inventoryMissions.forEach(function (inventoryMission) {
@@ -692,15 +716,23 @@
                 清空指定盘点记录列(){
                     let _this=this;
                     _this.selectingId='';
-                    _this.指定盘点记录列=[];
+                    if(_this.指定盘点记录列&&_this.指定盘点记录列.length>0)
+                        _this.指定盘点记录列=[];
                 },
-                筛选出记录(库位, 条码){
+                显示盘点计数input_按情况(){
+                    if(this.指定盘点记录列&&this.指定盘点记录列.length>0){
+                        this.dataExtraStatus.addingNew=false;
+                    }else{
+                        this.dataExtraStatus.addingNew=true;
+                    }
+                },
+                async 筛选出记录(库位, 条码){
                     条码=条码.trim();
                     库位=库位.trim();
                     let _this=this;
                     if(!库位)return false;
                     if(!条码)return false;
-                    if (!_this.库位索引_记录[库位]||(!_this.条码索引_记录[条码]&&_this.is条码存在于WMS(条码))) _this.dataExtraStatus.addingNew=true;
+                    if (!_this.库位索引_记录[库位]||(!_this.条码索引_记录[条码]&&(await _this.is条码存在于WMS(条码)))) return;
                     _this.inventoryMissions.forEach(function (inventoryMission) {
                         inventoryMission.commodity_barcodes.forEach(function (barcode) {
                             if (inventoryMission.location===库位 && 条码===barcode.code){
@@ -711,21 +743,20 @@
                         })
                     });
                 },
-                放置焦点光标至正确位置(){
+                放置焦点光标至正确位置:_.throttle(function(){
                     let _this=this;
-                    let $inventoryInput = $('#inventoryInput');
-                    if (!$inventoryInput.val().trim()){
-                        $inventoryInput.focus();
+                    _this.显示盘点计数input_按情况();
+                    if (!$locationInput.val().trim()){
+                        $locationInput.focus();
                         return;
                     }
-                    let $barcode = $('#barcode');
-                    if (!$barcode.val().trim()){
-                        $barcode.focus();
+                    if (!$barcodeInput.val().trim()){
+                        $barcodeInput.focus();
                         return;
                     }
                     setTimeout(function(){
                         if(_this.dataExtraStatus.addingNew){
-                            let $count = $('#count');
+                            let $count = $('#amountInput');
                             if (!$count.val().trim()){
                                 $count.focus();
                                 return;
@@ -736,23 +767,29 @@
                             $('.selectingRow移动端').first().find('input').first().focus();
                         }
                     },10)
-                },
-                is条码存在于WMS(条码){
+                },100,{ 'trailing': false }),
+                async is条码存在于WMS(条码){
                     条码=条码.trim();
                     let _this=this;
-                    if(!条码)return false;
-                    if(!_this.条码索引_记录[条码])return false;
-                    if(_this.条码索引_记录[条码])return true;
-                    let url='{{url('inventory/stockInventory/searchCommodityByBarcode')}}';
-                    let is成功=false;
-                    axios.post(url,{barcode:条码,owner_code:_this.inventory.owner.code}).then(function (response) {
-                        if (response.data.success){
-                            is成功=true;
-                            _this.条码索引_记录[条码]={barcodeExsitingAtWMS:true};
+
+                    if (!条码) return false;
+                    if (_this.条码索引_记录[条码]) return true;
+                    if (_this.条码索引_记录[条码] === false) return false;
+                    let url = '{{url('inventory / stockInventory / searchCommodityByBarcode')}}';
+                    let is成功 = false;
+                    await axios.post(url, {
+                        barcode: 条码,
+                        owner_code: _this.inventory.owner.code
+                    }).then(function (response) {
+                        if (response.data.success) {
+                            is成功 = true;
+                            _this.条码索引_记录[条码] = {barcodeExsitingAtWMS: true};
+                        } else {
+                            _this.条码索引_记录[条码] = false;
                         }
                     }).catch(function (err) {
                         tempTip.setDuration(2000);
-                        tempTip.show('网络错误'+err);
+                        tempTip.show('网络错误' + err);
                     });
                     return is成功;
                 },
@@ -772,30 +809,30 @@
                     return !!_this.库位索引_记录[库位].id;
 
                 },
-                提交新增并盘点(){
+                提交新增并盘点:async function(){
                     let _this=this;
                     let inventoryId=_this.inventory.id;
-                    if(!_this.inputs.location.trim()|| !_this.inputs.barcode.trim() || !_this.inputs.amount.trim())return false;
-                    let 条码存在于当前记录 = _this.is条码存在于当前记录(_this.inputs.barcode);
-                    let 条码存在于WMS = _this.is条码存在于WMS(_this.inputs.barcode);
-                    let 库位存在于当前记录 = _this.is库位存在于当前记录(_this.inputs.location);
+                    if(!_this.inputs().location.trim()|| !_this.inputs().barcode.trim() || !_this.inputs().amount.trim())return false;
+                    let 条码存在于当前记录 = _this.is条码存在于当前记录(_this.inputs().barcode);
+                    let 条码存在于WMS = await _this.is条码存在于WMS(_this.inputs().barcode);
+                    let 库位存在于当前记录 = _this.is库位存在于当前记录(_this.inputs().location);
 
                     if(!条码存在于当前记录 && !条码存在于WMS)return false;
                     if(库位存在于当前记录 && 条码存在于当前记录)return false;
-                    if(!confirm('该'+_this.inputs.barcode+'条码和'+_this.inputs.location+'库位相加的条件于WAS系统盘点记录中不存在! 是否确定需要添加至系统盘点记录中?')){return};
+                    if(!confirm('该'+_this.inputs().barcode+'条码和'+_this.inputs().location+'库位相加的条件于WAS系统盘点记录中不存在! 是否确定需要添加至系统盘点记录中?')){return false};
                     let 新增字段标记='';
                     if(!库位存在于当前记录&&!条码存在于当前记录)新增字段标记='库位和商品新增';
                     if(!库位存在于当前记录)新增字段标记='库位新增';
                     if(!条码存在于当前记录)新增字段标记='商品新增';
 
-                    this.增加系统之外的盘点记录(_this.inputs.location,_this.inputs.barcode,_this.inputs.amount,inventoryId,_this.inventory.owner.code,新增字段标记);
+                    this.增加系统之外的盘点记录(_this.inputs().location,_this.inputs().barcode,_this.inputs().amount,inventoryId,_this.inventory.owner.code,新增字段标记);
                     return true;
                 },
-                提交盘点(){
+                提交盘点:_.throttle(function(){
                     let _this=this;
-                    let 条码=_this.inputs.barcode.trim();
-                    let 库位=_this.inputs.location.trim();
-                    let 盘点数=_this.inputs.amount.trim();
+                    let 条码=_this.inputs().barcode.trim();
+                    let 库位=_this.inputs().location.trim();
+                    let 盘点数=_this.inputs().amount.trim();
                     let 选定盘点记录id=_this.selectingId;
                     _this.指定盘点记录列.forEach(function (inventoryMission) {
                         inventoryMission.commodity_barcodes.forEach(function (barcode) {
@@ -810,7 +847,7 @@
                             }
                         })
                     });
-                },
+                },100,{ 'trailing': false }),
                 //结束初盘任务
                 stockInventoryEnd(id){
                     let _this=this;
@@ -959,11 +996,11 @@
                 },
                 分隔_基于分割位置(未盘列,分割位置id) {  // return [arr1,arr2]
                     let 分割位置=null;
-                        未盘列.forEach(function(行,下标){
-                            if(行.id===分割位置id){
-                                分割位置=下标;
-                            }
-                        });
+                    未盘列.forEach(function(行,下标){
+                        if(行.id===分割位置id){
+                            分割位置=下标;
+                        }
+                    });
                     let 未盘列1=未盘列.slice(0,分割位置);
                     let 未盘列2=未盘列.slice(分割位置,未盘列.length);
                     return [未盘列1,未盘列2];
@@ -1141,9 +1178,12 @@
                     })
                 },
                 清空inputs(){
-                    for(let key in this.inputs){
-                        this.inputs[key]='';
-                    }
+                    $locationInput.val('');
+                    $barcodeInput.val('');
+                    $amountInput.val('');
+                    // for(let key in this.inputs){
+                    //     this.inputs[key]='';
+                    // }
                 },
                 不覆盖(){
                     let _this=this;
@@ -1152,10 +1192,10 @@
                 },
                 覆盖(){
                     let _this=this;
-                    let location=_this.inputs.location.trim();
-                    let barcode=_this.inputs.barcode.trim();
+                    let location=_this.inputs().location.trim();
+                    let barcode=_this.inputs().barcode.trim();
                     let inventoryId=_this.inventory.id;
-                    let count=_this.inputs.amount.trim();
+                    let count=_this.inputs().amount.trim();
                     let id=_this.selectingId;
                     _this.清空指定盘点记录列();
                     this.盘点(id,location,barcode,inventoryId,count);
@@ -1163,10 +1203,10 @@
                 },
                 盘点选中任务(id,produced_at,valid_at,batch_number){
                     let _this=this;
-                    let location=_this.inputs.location.trim();
-                    let barcode=_this.inputs.barcode.trim();
+                    let location=_this.inputs().location.trim();
+                    let barcode=_this.inputs().barcode.trim();
                     let inventoryId=_this.inventory.id;
-                    let count=_this.inputs.amount.trim();
+                    let count=_this.inputs().amount.trim();
                     _this.清空指定盘点记录列();
                     let url='{{url('inventory/盘点选中任务')}}';
                     axios.post(url,{id:id,count:count,inventoryId:inventoryId,produced_at:produced_at,valid_at:valid_at,batch_number:batch_number})

+ 1 - 1
resources/views/layouts/app.blade.php

@@ -32,7 +32,7 @@
 <!-- Scripts -->
 @yield('script')
 {{-- 必须在app.js前边--}}
-<script src="{{ asset('js/app.js?202002111414') }}"></script>
+<script src="{{ asset('js/app200922.js') }}"></script>
 <script>
     let isActive=function (name,atSlashLevel) {
         let uriWithNoParam=location.href.split('?')[0];

+ 1 - 1
webpack.mix.js

@@ -11,7 +11,7 @@ const mix = require('laravel-mix');
  |
  */
 
-mix.js('resources/js/app.js', 'public/js')
+mix.js('resources/js/app.js', 'public/js/app200922.js')
     .sass('resources/sass/app.scss', 'public/css/app200901.css');
 mix.copy('resources/sass/fonts/','public/fonts');
 mix.copy('resources/icon','public/icon');