li.shaoyi 2 years ago
parent
commit
12ca0eba49

+ 92 - 80
package-lock.json

@@ -16,7 +16,7 @@
         "crypto-js": "^4.1.1",
         "default-passive-events": "^2.0.0",
         "echarts": "^5.3.2",
-        "element-plus": "^2.3.7",
+        "element-plus": "^2.3.8",
         "html5-qrcode": "^2.2.5",
         "long": "^5.2.0",
         "moment": "^2.29.3",
@@ -1696,17 +1696,17 @@
       }
     },
     "node_modules/@ctrl/tinycolor": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
-      "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==",
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
+      "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==",
       "engines": {
         "node": ">=10"
       }
     },
     "node_modules/@element-plus/icons-vue": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.0.6.tgz",
-      "integrity": "sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
       "peerDependencies": {
         "vue": "^3.2.0"
       }
@@ -1768,18 +1768,27 @@
       }
     },
     "node_modules/@floating-ui/core": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.3.1.tgz",
-      "integrity": "sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g=="
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.4.1.tgz",
+      "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==",
+      "dependencies": {
+        "@floating-ui/utils": "^0.1.1"
+      }
     },
     "node_modules/@floating-ui/dom": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.4.4.tgz",
-      "integrity": "sha512-21hhDEPOiWkGp0Ys4Wi6Neriah7HweToKra626CIK712B5m9qkdz54OP9gVldUg+URnBTpv/j/bi/skmGdstXQ==",
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.5.1.tgz",
+      "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==",
       "dependencies": {
-        "@floating-ui/core": "^1.3.1"
+        "@floating-ui/core": "^1.4.1",
+        "@floating-ui/utils": "^0.1.1"
       }
     },
+    "node_modules/@floating-ui/utils": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.1.1.tgz",
+      "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw=="
+    },
     "node_modules/@hapi/hoek": {
       "version": "9.2.1",
       "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz",
@@ -1964,6 +1973,12 @@
       "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
       "dev": true
     },
+    "node_modules/@popperjs/core": {
+      "name": "@sxzz/popperjs-es",
+      "version": "2.11.7",
+      "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+    },
     "node_modules/@sideway/address": {
       "version": "4.1.4",
       "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -2211,14 +2226,14 @@
       "dev": true
     },
     "node_modules/@types/lodash": {
-      "version": "4.14.182",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz",
-      "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q=="
+      "version": "4.14.196",
+      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.196.tgz",
+      "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ=="
     },
     "node_modules/@types/lodash-es": {
-      "version": "4.17.6",
-      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.6.tgz",
-      "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
+      "version": "4.17.8",
+      "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.8.tgz",
+      "integrity": "sha512-euY3XQcZmIzSy7YH5+Unb3b2X12Wtk54YWINBvvGQ5SmMvwb11JQskGsfkH/5HXK77Kr8GF0wkVDIxzAisWtog==",
       "dependencies": {
         "@types/lodash": "*"
       }
@@ -4442,7 +4457,7 @@
     },
     "node_modules/async-validator": {
       "version": "4.2.5",
-      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
       "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
     },
     "node_modules/at-least-node": {
@@ -6310,9 +6325,9 @@
       "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
     },
     "node_modules/dayjs": {
-      "version": "1.11.3",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz",
-      "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A=="
+      "version": "1.11.9",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz",
+      "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA=="
     },
     "node_modules/debug": {
       "version": "4.3.4",
@@ -6727,9 +6742,9 @@
       "dev": true
     },
     "node_modules/element-plus": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.7.tgz",
-      "integrity": "sha512-h6TxclbaLUJxg/Bv5j/ZKsK+K5yadQliw5+R30HWyE69pXlqXTX24oYx+yw3pA4Dy+lqEDi5501FQ0CORk3OSA==",
+      "version": "2.3.8",
+      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.8.tgz",
+      "integrity": "sha512-yHQR0/tG2LvPkpGUt7Te/hPmP2XW/BytBNUbx+EFO54VnGCOE3upmQcVffNp1PLgwg9sthYDXontUWpnpmLPJw==",
       "dependencies": {
         "@ctrl/tinycolor": "^3.4.1",
         "@element-plus/icons-vue": "^2.0.6",
@@ -6751,16 +6766,6 @@
         "vue": "^3.2.0"
       }
     },
-    "node_modules/element-plus/node_modules/@popperjs/core": {
-      "name": "@sxzz/popperjs-es",
-      "version": "2.11.7",
-      "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
-      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/popperjs"
-      }
-    },
     "node_modules/emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -9066,13 +9071,13 @@
     },
     "node_modules/lodash-es": {
       "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
       "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
     },
     "node_modules/lodash-unified": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.2.tgz",
-      "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
       "peerDependencies": {
         "@types/lodash-es": "*",
         "lodash": "*",
@@ -9407,7 +9412,7 @@
     },
     "node_modules/memoize-one": {
       "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
       "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
     },
     "node_modules/merge-descriptors": {
@@ -14525,14 +14530,14 @@
       }
     },
     "@ctrl/tinycolor": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
-      "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
+      "version": "3.6.0",
+      "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz",
+      "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ=="
     },
     "@element-plus/icons-vue": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.0.6.tgz",
-      "integrity": "sha512-lPpG8hYkjL/Z97DH5Ei6w6o22Z4YdNglWCNYOPcB33JCF2A4wye6HFgSI7hEt9zdLyxlSpiqtgf9XcYU+m5mew==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
       "requires": {}
     },
     "@eslint/eslintrc": {
@@ -14576,18 +14581,27 @@
       }
     },
     "@floating-ui/core": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.3.1.tgz",
-      "integrity": "sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g=="
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.4.1.tgz",
+      "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==",
+      "requires": {
+        "@floating-ui/utils": "^0.1.1"
+      }
     },
     "@floating-ui/dom": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.4.4.tgz",
-      "integrity": "sha512-21hhDEPOiWkGp0Ys4Wi6Neriah7HweToKra626CIK712B5m9qkdz54OP9gVldUg+URnBTpv/j/bi/skmGdstXQ==",
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.5.1.tgz",
+      "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==",
       "requires": {
-        "@floating-ui/core": "^1.3.1"
+        "@floating-ui/core": "^1.4.1",
+        "@floating-ui/utils": "^0.1.1"
       }
     },
+    "@floating-ui/utils": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.1.1.tgz",
+      "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw=="
+    },
     "@hapi/hoek": {
       "version": "9.2.1",
       "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz",
@@ -14738,6 +14752,11 @@
       "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
       "dev": true
     },
+    "@popperjs/core": {
+      "version": "npm:@sxzz/popperjs-es@2.11.7",
+      "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+    },
     "@sideway/address": {
       "version": "4.1.4",
       "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz",
@@ -14957,14 +14976,14 @@
       "dev": true
     },
     "@types/lodash": {
-      "version": "4.14.182",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz",
-      "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q=="
+      "version": "4.14.196",
+      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.196.tgz",
+      "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ=="
     },
     "@types/lodash-es": {
-      "version": "4.17.6",
-      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.6.tgz",
-      "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
+      "version": "4.17.8",
+      "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.8.tgz",
+      "integrity": "sha512-euY3XQcZmIzSy7YH5+Unb3b2X12Wtk54YWINBvvGQ5SmMvwb11JQskGsfkH/5HXK77Kr8GF0wkVDIxzAisWtog==",
       "requires": {
         "@types/lodash": "*"
       }
@@ -16604,7 +16623,7 @@
     },
     "async-validator": {
       "version": "4.2.5",
-      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
       "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
     },
     "at-least-node": {
@@ -17942,9 +17961,9 @@
       "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
     },
     "dayjs": {
-      "version": "1.11.3",
-      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz",
-      "integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A=="
+      "version": "1.11.9",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz",
+      "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA=="
     },
     "debug": {
       "version": "4.3.4",
@@ -18262,9 +18281,9 @@
       "dev": true
     },
     "element-plus": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.7.tgz",
-      "integrity": "sha512-h6TxclbaLUJxg/Bv5j/ZKsK+K5yadQliw5+R30HWyE69pXlqXTX24oYx+yw3pA4Dy+lqEDi5501FQ0CORk3OSA==",
+      "version": "2.3.8",
+      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.3.8.tgz",
+      "integrity": "sha512-yHQR0/tG2LvPkpGUt7Te/hPmP2XW/BytBNUbx+EFO54VnGCOE3upmQcVffNp1PLgwg9sthYDXontUWpnpmLPJw==",
       "requires": {
         "@ctrl/tinycolor": "^3.4.1",
         "@element-plus/icons-vue": "^2.0.6",
@@ -18281,13 +18300,6 @@
         "lodash-unified": "^1.0.2",
         "memoize-one": "^6.0.0",
         "normalize-wheel-es": "^1.2.0"
-      },
-      "dependencies": {
-        "@popperjs/core": {
-          "version": "npm:@sxzz/popperjs-es@2.11.7",
-          "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
-          "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
-        }
       }
     },
     "emoji-regex": {
@@ -19997,13 +20009,13 @@
     },
     "lodash-es": {
       "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
       "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
     },
     "lodash-unified": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.2.tgz",
-      "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==",
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
       "requires": {}
     },
     "lodash.debounce": {
@@ -20266,7 +20278,7 @@
     },
     "memoize-one": {
       "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
       "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
     },
     "merge-descriptors": {

+ 1 - 1
package.json

@@ -22,7 +22,7 @@
     "crypto-js": "^4.1.1",
     "default-passive-events": "^2.0.0",
     "echarts": "^5.3.2",
-    "element-plus": "^2.3.7",
+    "element-plus": "^2.3.8",
     "html5-qrcode": "^2.2.5",
     "long": "^5.2.0",
     "moment": "^2.29.3",

+ 2 - 5
src/packages/pc/App.vue

@@ -1,8 +1,6 @@
 <template>
-  <el-config-provider :locale="zhCn">
-    <!-- 一级路由 -->
-    <router-view />
-  </el-config-provider>
+  <!-- 一级路由 -->
+  <router-view />
 </template>
 
 <!--<script lang="ts">
@@ -15,7 +13,6 @@ export default {
 import { useRouter } from 'vue-router'
 import { ElMessageBox } from 'element-plus'
 import { useLogin } from '@/business/login'
-import zhCn from 'element-plus/lib/locale/lang/zh-cn'
 import eventBus from '@/services/bus'
 
 const { userLogout } = useLogin()

+ 49 - 0
src/packages/pc/assets/themes/default/default.less

@@ -397,4 +397,53 @@
             }
         }
     }
+}
+
+.g-qty-group {
+    flex: 1;
+
+    .el-input-number {
+        width: 100%;
+    }
+
+    .el-radio-group {
+        flex-wrap: nowrap;
+        width: 100%;
+        margin-top: 5px;
+    }
+
+    .el-radio {
+        --el-color-primary: #0D96FF;
+        --el-border: 1px solid #22292c;
+        --el-border-radius-base: 0;
+
+        flex: 1;
+        justify-content: center;
+        height: 20px;
+        color: #7a8a94;
+        border-radius: 0;
+        padding: 0;
+        margin: 0;
+
+        &:not(:last-child) {
+            border-right: 0;
+        }
+
+        &.is-bordered.is-checked {
+            background-color: #0D283F;
+            border-color: #013B6D;
+
+            +.el-radio {
+                border-left-color: #013B6D;
+            }
+        }
+
+        &__input {
+            display: none;
+        }
+
+        &__label {
+            padding: 0;
+        }
+    }
 }

+ 1 - 49
src/packages/pc/components/modules/listing/index.less

@@ -5,7 +5,7 @@
 
     &__forex {
         width: 200px;
-        padding: 10px;
+        padding: 5px 10px;
 
         .app-quote-forex {
             height: 100%;
@@ -30,53 +30,5 @@
             display: flex;
             justify-content: center;
         }
-
-        .qty-group {
-            flex: 1;
-
-            .el-input-number {
-                width: 100%;
-            }
-
-            .el-radio-group {
-                flex-wrap: nowrap;
-                width: 100%;
-                margin-top: 5px;
-            }
-
-            .el-radio {
-                --el-color-primary: #0D96FF;
-                --el-border: 1px solid #22292c;
-
-                flex: 1;
-                justify-content: center;
-                height: 20px;
-                color: #7a8a94;
-                border-radius: 0;
-                padding: 0;
-                margin: 0;
-
-                &:not(:last-child) {
-                    border-right: 0;
-                }
-
-                &.is-bordered.is-checked {
-                    background-color: #0D283F;
-                    border-color: #013B6D;
-
-                    +.el-radio {
-                        border-left-color: #013B6D;
-                    }
-                }
-
-                &__input {
-                    display: none;
-                }
-
-                &__label {
-                    padding: 0;
-                }
-            }
-        }
     }
 }

+ 6 - 50
src/packages/pc/components/modules/listing/index.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="app-listing">
         <div class="app-listing__forex">
-            <Forex v-bind="{ goodsCode: goodsStore.goodsCode }" @buyclick="onBuyClick" @sellclick="onSellClick" />
+            <Forex v-bind="{ goodsCode: goodsStore.goodsCode }" @buy-click="onBuyClick" @sell-click="onSellClick" />
         </div>
         <div class="app-listing__form">
             <h4 class="header-title">订单挂牌</h4>
@@ -26,7 +26,7 @@
                 </el-form-item>
                 <el-form-item prop="OrderQty" label="数量">
                     <div class="el-form-item--col">
-                        <div class="qty-group">
+                        <div class="g-qty-group">
                             <el-input-number placeholder="请输入" :min="agreeunit" :step="qtyStep" v-model="orderQty" />
                             <el-radio-group size="small" v-model="qtyStep" @change="onRadioChange"
                                 v-if="qtyStepList.length">
@@ -165,56 +165,12 @@ const onRadioChange = (value: number) => {
     orderQty.value = value
 }
 
-const onBuyClick = (index: number) => {
-    const { bid = 0, bid2 = 0, bid3 = 0, bid4 = 0, bid5 = 0 } = quote.value ?? {}
-    switch (index) {
-        case 1: {
-            formData.OrderPrice = bid
-            break
-        }
-        case 2: {
-            formData.OrderPrice = bid2 || bid
-            break
-        }
-        case 3: {
-            formData.OrderPrice = bid3 || bid
-            break
-        }
-        case 4: {
-            formData.OrderPrice = bid4 || bid
-            break
-        }
-        case 5: {
-            formData.OrderPrice = bid5 || bid
-            break
-        }
-    }
+const onBuyClick = (price: number) => {
+    formData.OrderPrice = price
 }
 
-const onSellClick = (index: number) => {
-    const { ask = 0, ask2 = 0, ask3 = 0, ask4 = 0, ask5 = 0 } = quote.value ?? {}
-    switch (index) {
-        case 1: {
-            formData.OrderPrice = ask
-            break
-        }
-        case 2: {
-            formData.OrderPrice = ask2 || ask
-            break
-        }
-        case 3: {
-            formData.OrderPrice = ask3 || ask
-            break
-        }
-        case 4: {
-            formData.OrderPrice = ask4 || ask
-            break
-        }
-        case 5: {
-            formData.OrderPrice = ask5 || ask
-            break
-        }
-    }
+const onSellClick = (price: number) => {
+    formData.OrderPrice = price
 }
 
 // 提交挂牌

+ 17 - 6
src/packages/pc/components/modules/quote/forex/index.less

@@ -7,7 +7,6 @@
         flex: 1;
         display: flex;
         flex-direction: column;
-        padding: 5px;
 
         +ul {
             border-top: 1px solid #333;
@@ -17,7 +16,11 @@
             display: flex;
             font-size: 12px;
             text-align: center;
-            padding: 3px 0;
+            padding: 5px;
+
+            &.is-active {
+                background-color: #262d33;
+            }
 
             span {
                 flex: 1;
@@ -32,12 +35,20 @@
             }
         }
 
-        &.top li {
-            margin-top: auto;
+        &.top {
+            padding: 5px 0;
+
+            li {
+                margin-top: auto;
+            }
         }
 
-        &.bottom li {
-            margin-bottom: auto;
+        &.bottom {
+            padding: 5px 0;
+
+            li {
+                margin-bottom: auto;
+            }
         }
     }
 }

+ 113 - 55
src/packages/pc/components/modules/quote/forex/index.vue

@@ -1,64 +1,28 @@
 <template>
     <div class="app-quote-forex">
-        <ul class="top" v-if="quote">
-            <li @click="onSellClick(5)" v-if="quote.quotegear > 4">
-                <span>卖五</span>
-                <span :class="quote.ask5Color">{{ handleNumberValue(quote.ask5.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.askvolume5) }}</span>
-            </li>
-            <li @click="onSellClick(4)" v-if="quote.quotegear > 3">
-                <span>卖四</span>
-                <span :class="quote.ask4Color">{{ handleNumberValue(quote.ask4.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.askvolume4) }}</span>
-            </li>
-            <li @click="onSellClick(3)" v-if="quote.quotegear > 2">
-                <span>卖三</span>
-                <span :class="quote.ask3Color">{{ handleNumberValue(quote.ask3.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.askvolume3) }}</span>
-            </li>
-            <li @click="onSellClick(2)" v-if="quote.quotegear > 1">
-                <span>卖二</span>
-                <span :class="quote.ask2Color">{{ handleNumberValue(quote.ask2.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.askvolume2) }}</span>
-            </li>
-            <li @click="onSellClick(1)">
-                <span>卖一</span>
-                <span :class="quote.askColor">{{ handleNumberValue(quote.ask.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.askvolume) }}</span>
-            </li>
+        <ul class="top">
+            <template v-for="(item, index) in sellList" :key="index">
+                <li :class="active === 'sell_' + index ? 'is-active' : ''" @click="onSellClick(index)">
+                    <span>{{ item.label }}</span>
+                    <span :class="item.color">{{ handleNumberValue(item.price.toFixed(quote?.decimalplace)) }}</span>
+                    <span>{{ handleNumberValue(item.qty) }}</span>
+                </li>
+            </template>
         </ul>
         <ul class="bottom" v-if="quote">
-            <li @click="onBuyClick(1)">
-                <span>买一</span>
-                <span :class="quote.bidColor">{{ handleNumberValue(quote.bid.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.bidvolume) }}</span>
-            </li>
-            <li @click="onBuyClick(2)" v-if="quote.quotegear > 1">
-                <span>买二</span>
-                <span :class="quote.bid2Color">{{ handleNumberValue(quote.bid2.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.bidvolume2) }}</span>
-            </li>
-            <li @click="onBuyClick(3)" v-if="quote.quotegear > 2">
-                <span>买三</span>
-                <span :class="quote.bid3Color">{{ handleNumberValue(quote.bid3.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.bidvolume3) }}</span>
-            </li>
-            <li @click="onBuyClick(4)" v-if="quote.quotegear > 3">
-                <span>买四</span>
-                <span :class="quote.bid4Color">{{ handleNumberValue(quote.bid4.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.bidvolume4) }}</span>
-            </li>
-            <li @click="onBuyClick(5)" v-if="quote.quotegear > 4">
-                <span>买五</span>
-                <span :class="quote.bid5Color">{{ handleNumberValue(quote.bid5.toFixed(quote.decimalplace)) }}</span>
-                <span>{{ handleNumberValue(quote.bidvolume5) }}</span>
-            </li>
+            <template v-for="(item, index) in buyList" :key="index">
+                <li :class="active === 'buy_' + index ? 'is-active' : ''" @click="onBuyClick(index)">
+                    <span>{{ item.label }}</span>
+                    <span :class="item.color">{{ handleNumberValue(item.price.toFixed(quote?.decimalplace)) }}</span>
+                    <span>{{ handleNumberValue(item.qty) }}</span>
+                </li>
+            </template>
         </ul>
     </div>
 </template>
 
 <script lang="ts" setup>
-import { computed } from 'vue'
+import { shallowRef, computed, watch, useAttrs } from 'vue'
 import { handleNumberValue } from '@/filters'
 import { useFuturesStore } from '@/stores'
 
@@ -69,17 +33,111 @@ const props = defineProps({
     },
 })
 
-const emit = defineEmits(['sellclick', 'buyclick'])
+const emit = defineEmits<{ (event: string, ...args: unknown[]): void }>()
+const attrs = useAttrs()
 const futuresStore = useFuturesStore()
 const quote = computed(() => futuresStore.getQuoteInfo(props.goodsCode).value)
+const active = shallowRef('')
+
+const buyList = computed(() => {
+    const item = quote.value
+    if (item) {
+        const result = [
+            {
+                label: '买一',
+                price: item.bid,
+                qty: item.bidvolume,
+                color: item.askColor,
+            },
+            {
+                label: '买二',
+                price: item.bid2,
+                qty: item.bidvolume2,
+                color: item.ask2Color,
+            },
+            {
+                label: '买三',
+                price: item.bid3,
+                qty: item.bidvolume3,
+                color: item.ask3Color,
+            },
+            {
+                label: '买四',
+                price: item.bid4,
+                qty: item.bidvolume4,
+                color: item.ask4Color,
+            },
+            {
+                label: '买五',
+                price: item.bid5,
+                qty: item.bidvolume5,
+                color: item.ask5Color,
+            }
+        ]
+        return result.slice(0, item.quotegear || 1)
+    }
+    return []
+})
+
+const sellList = computed(() => {
+    const item = quote.value
+    if (item) {
+        const result = [
+            {
+                label: '卖一',
+                price: item.ask,
+                qty: item.askvolume,
+                color: item.askColor,
+            },
+            {
+                label: '卖二',
+                price: item.ask2,
+                qty: item.askvolume2,
+                color: item.ask2Color,
+            },
+            {
+                label: '卖三',
+                price: item.ask3,
+                qty: item.askvolume3,
+                color: item.ask3Color,
+            },
+            {
+                label: '卖四',
+                price: item.ask4,
+                qty: item.askvolume4,
+                color: item.ask4Color,
+            },
+            {
+                label: '卖五',
+                price: item.ask5,
+                qty: item.askvolume5,
+                color: item.ask5Color,
+            }
+        ]
+        return result.slice(0, item.quotegear || 1).reverse()
+    }
+    return []
+})
 
 const onBuyClick = (index: number) => {
-    emit('buyclick', index)
+    if (attrs.onBuyClick) {
+        const item = buyList.value[index]
+        active.value = 'buy_' + index
+        emit('buyClick', item.price || quote.value?.bid)
+    }
 }
 
 const onSellClick = (index: number) => {
-    emit('sellclick', index)
+    if (attrs.onSellClick) {
+        const item = sellList.value[index]
+        active.value = 'sell_' + index
+        emit('sellClick', item.price || quote.value?.ask)
+    }
 }
+
+watch(() => props.goodsCode, () => {
+    active.value = ''
+})
 </script>
 
 <style lang="less">

+ 4 - 1
src/packages/pc/main.ts

@@ -4,6 +4,7 @@ import router from './router'
 import directives from '@/directives' // 自定义指令集
 import layouts from "./components/layouts" // 布局组件
 import ElementPlus from 'element-plus'
+import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
 import * as ElementIcons from '@element-plus/icons-vue'
 import 'element-plus/dist/index.css'
 import './assets/themes/style.less' // 主题样式
@@ -13,7 +14,9 @@ import { useGlobalStore } from '@/stores'
 const app = createApp(App)
 app.use(router)
 app.use(directives)
-app.use(ElementPlus)
+app.use(ElementPlus, {
+    locale: zhCn,
+})
 app.use(layouts)
 app.mount('#app')
 

+ 3 - 12
src/packages/pc/views/footer/capital/summary/index.vue

@@ -22,14 +22,6 @@
         <template #freezeMargin>
             {{ freezeMargin.toFixed(2) }}
         </template>
-        <!-- 今日入金 -->
-        <template #inamount="{ value }">
-            {{ value.toFixed(2) }}
-        </template>
-        <!-- 今日出金 -->
-        <template #outamount="{ value }">
-            {{ value.toFixed(2) }}
-        </template>
         <!-- 状态 -->
         <template #tradestatus="{ value }">
             {{ getTradeStatusName(value) }}
@@ -64,9 +56,8 @@ const componentMap = new Map<string, unknown>([
 const { componentRef, componentId, openComponent, closeComponent } = useComponent()
 
 const accountStore = useAccountStore()
-const { accountList } = accountStore.$toRefs()
+const { accountList, accountInfo, freezeMargin, avaiableMoney } = accountStore.$toRefs()
 const { selectedRow, rowKey, expandKeys, rowClick } = useComposeTable<Model.TaAccountsRsp>({ rowKey: 'accountid' })
-const { accountInfo, freezeMargin, avaiableMoney } = accountStore.$toRefs()
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
     { prop: 'accountid', label: '资金账号' },
@@ -75,8 +66,8 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
     { prop: 'avaiableMoney', label: '可用资金' },
     { prop: 'oriusedmargin', label: '占用资金' },
     { prop: 'freezeMargin', label: '冻结资金' },
-    { prop: 'inamount', label: '今日入金' },
-    { prop: 'outamount', label: '今日出金' },
+    { prop: 'inamount', label: '今日入金', decimal: 2 },
+    { prop: 'outamount', label: '今日出金', decimal: 2 },
     { prop: 'tradestatus', label: '状态' },
 ])
 </script>

+ 9 - 4
src/packages/pc/views/market/trade/goods/detail/components/order/delisting/index.vue

@@ -12,10 +12,15 @@
                 <span>{{ selectedRow.orderqty }}{{ getGoodsUnitName(quote?.goodunitid) }}</span>
             </el-form-item>
             <el-form-item prop="OrderQty" label="摘牌数量">
-                <el-input-number placeholder="请输入" :min="agreeunit" :step="qtyStep" v-model="orderQty" />
-                <el-radio-group v-model="qtyStep" @change="onRadioChange">
-                    <el-radio-button v-for="(value, index) in qtyStepList" :key="index" :label="value" />
-                </el-radio-group>
+                <div class="el-form-item--col">
+                    <div class="g-qty-group">
+                        <el-input-number placeholder="请输入" :min="agreeunit" :step="qtyStep" v-model="orderQty" />
+                        <el-radio-group size="small" v-model="qtyStep" @change="onRadioChange" v-if="qtyStepList.length">
+                            <el-radio v-for="(value, index) in qtyStepList" :key="index" :label="value" border />
+                        </el-radio-group>
+                    </div>
+                    <span>{{ getGoodsUnitName(quote?.goodunitid) }}</span>
+                </div>
             </el-form-item>
         </el-form>
         <template #footer>

+ 3 - 1
src/shims-vue.d.ts

@@ -15,4 +15,6 @@ declare module 'worker-loader!*' {
   // Uncomment this if you set the `esModule` option to `false`
   // export = WebpackWorker;
   export default WebpackWorker;
-}
+}
+
+declare module 'element-plus/dist/locale/zh-cn.mjs'