Explorar o código

Merge branch 'master' of http://47.101.159.18:3000/Muchinfo/MTP20_WEB_GLOBAL

zhou.xiaoning %!s(int64=2) %!d(string=hai) anos
pai
achega
36d06e5843
Modificáronse 59 ficheiros con 615 adicións e 419 borrados
  1. 92 80
      package-lock.json
  2. 1 1
      package.json
  3. 15 10
      src/business/bank/index.ts
  4. 4 4
      src/business/performance/index.ts
  5. 9 9
      src/business/trade/index.ts
  6. 1 1
      src/business/user/account.ts
  7. 1 1
      src/packages/gstj/views/goods/detail/components/listing/Index.vue
  8. 2 2
      src/packages/gstj/views/goods/trade/components/delisting/index.vue
  9. 5 5
      src/packages/gstj/views/mine/Index.vue
  10. 1 1
      src/packages/gstj/views/spot/add/components/sell/index.vue
  11. 1 1
      src/packages/gstj/views/spot/detail/components/delisting/index.vue
  12. 1 1
      src/packages/gstj/views/spot/detail/components/listing/index.vue
  13. 1 1
      src/packages/mobile/views/ballot/detail/components/delisting/index.vue
  14. 1 1
      src/packages/mobile/views/goods/detail/components/listing/Index.vue
  15. 2 2
      src/packages/mobile/views/goods/trade/components/delisting/index.vue
  16. 5 5
      src/packages/mobile/views/mine/Index.vue
  17. 1 1
      src/packages/mobile/views/order/position/components/transfer/delivery/trade/Index.vue
  18. 1 1
      src/packages/mobile/views/presale/detail/components/delisting/index.vue
  19. 1 1
      src/packages/mobile/views/spot/add/components/sell/index.vue
  20. 1 1
      src/packages/mobile/views/spot/detail/components/delisting/index.vue
  21. 1 1
      src/packages/mobile/views/spot/detail/components/listing/index.vue
  22. 2 2
      src/packages/mobile/views/swap/detail/components/delisting/Index.vue
  23. 2 2
      src/packages/mobile/views/swap/detail/components/listing/Index.vue
  24. 2 5
      src/packages/pc/App.vue
  25. 49 0
      src/packages/pc/assets/themes/default/default.less
  26. 8 8
      src/packages/pc/components/layouts/footer/index.vue
  27. 1 49
      src/packages/pc/components/modules/listing/index.less
  28. 6 50
      src/packages/pc/components/modules/listing/index.vue
  29. 17 6
      src/packages/pc/components/modules/quote/forex/index.less
  30. 113 55
      src/packages/pc/components/modules/quote/forex/index.vue
  31. 4 1
      src/packages/pc/main.ts
  32. 87 0
      src/packages/pc/views/account/address/components/new/index.vue
  33. 2 1
      src/packages/pc/views/account/address/index.vue
  34. 75 0
      src/packages/pc/views/account/receipt/components/new/index.vue
  35. 2 1
      src/packages/pc/views/account/receipt/index.vue
  36. 1 1
      src/packages/pc/views/account/sign/components/cancel/index.vue
  37. 2 2
      src/packages/pc/views/account/sign/index.vue
  38. 11 42
      src/packages/pc/views/footer/capital/summary/index.vue
  39. 6 6
      src/packages/pc/views/footer/capital/summary/withdraw/index.vue
  40. 3 3
      src/packages/pc/views/footer/goods/position/components/delivery/index.vue
  41. 9 4
      src/packages/pc/views/market/trade/goods/detail/components/order/delisting/index.vue
  42. 0 1
      src/packages/pc/views/market/trade/goods/index.vue
  43. 1 1
      src/packages/pc/views/market/trade/spot/listing/index.vue
  44. 1 1
      src/packages/pc/views/market/trade/spot/order/delisting/index.vue
  45. 1 1
      src/packages/pc/views/market/trade/spot/order/listing/index.vue
  46. 1 1
      src/packages/pc/views/query/capital/history/index.vue
  47. 1 0
      src/packages/pc/views/query/order/goods/history/index.vue
  48. 1 0
      src/packages/pc/views/query/order/spot/history/index.vue
  49. 1 0
      src/packages/pc/views/query/trade/goods/history/index.vue
  50. 1 0
      src/packages/pc/views/query/trade/spot/history/index.vue
  51. 5 5
      src/packages/sbyj/views/mine/index.vue
  52. 2 2
      src/services/api/bank/index.ts
  53. 7 7
      src/services/api/order/index.ts
  54. 1 1
      src/services/api/performance/index.ts
  55. 7 7
      src/services/api/trade/index.ts
  56. 1 1
      src/services/api/transfer/index.ts
  57. 2 2
      src/services/http/index.ts
  58. 3 1
      src/shims-vue.d.ts
  59. 30 20
      src/stores/modules/account.ts

+ 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",

+ 15 - 10
src/business/bank/index.ts

@@ -1,11 +1,12 @@
 import { reactive, shallowRef, computed } from 'vue'
-import { useAccountStore, useUserStore } from '@/stores'
+import { useAccountStore, useUserStore, useLoginStore } from '@/stores'
 import { t2bBankWithdraw, queryBankAccountSign, t2bBankDeposit, queryCusBankSignBank, t2bBankSign, t2bBankCancelSign, accountFundInfoReq } from '@/services/api/bank'
 import { SignStatus } from '@/constants/bank'
 import { decryptAES } from '@/services/websocket/package/crypto'
 import moment from "moment"
 
 const accountStore = useAccountStore()
+const loginStore = useLoginStore()
 
 // 提现请求
 export function useDoWithdraw() {
@@ -160,10 +161,10 @@ export function useDoBankSign() {
         AccountType: 1,
         IsForce: 0,
         AgentCertType: 0,
-        BankCardType: 0, 
+        BankCardType: 0,
         BankAccountType: 1,
         extend_info: JSON.stringify({ "sex": 1 }),
-        AccountCode: accountStore.accountId.toString(),
+        AccountCode: accountStore.currentAccountId.toString(),
         CertID: decryptAES(userInfo?.cardnum ?? ''),
         CertType: userInfo?.cardtypeid.toString(),
         BankAccountName: userInfo?.customername,
@@ -210,18 +211,23 @@ export function useDoCancelBankSign() {
     /// 获取当前是否已签约
     const sign = shallowRef<Model.BankAccountSignRsp[]>([])
 
-    const formRefresh = () => {
-        queryBankAccountSign().then((res) => {
+    const request = queryBankAccountSign({
+        data: {
+            userid: loginStore.userId
+        }
+    }).then((res) => {
+        if (res.data.length) {
             bankInfo.value = res.data[0];
             ({
                 currency: formData.Currency,
                 cusbankid: formData.CusBankID,
                 accountcode: formData.AccountCode,
             } = bankInfo.value ?? {})
-        })
-    }
+        }
+    })
 
     const cancelSubmit = async () => {
+        await request
         // await request
         loading.value = true
         /// 发起请求
@@ -240,8 +246,7 @@ export function useDoCancelBankSign() {
         cancelSubmit,
         formData,
         sign,
-        bankInfo,
-        formRefresh
+        bankInfo
     }
 }
 
@@ -255,7 +260,7 @@ export function useAccountFundInfo() {
         data: {
             QueryBitMask: 2,
             OrderId: new Date().getTime(),
-            AccountId: accountStore.accountId,
+            AccountId: accountStore.currentAccountId,
         }
     }).then((res) => {
         fund.value = res

+ 4 - 4
src/business/performance/index.ts

@@ -15,7 +15,7 @@ export function usePerformanceContractedApply(buyaccountid: number) {
     const loading = shallowRef(false)
 
     const formData = ref<Partial<Proto.PerformanceContractedApplyReq>>({
-        BreachType: buyaccountid === accountStore.accountId ? 2 : 1
+        BreachType: buyaccountid === accountStore.currentAccountId ? 2 : 1
     })
 
     const formSubmit = async () => {
@@ -44,7 +44,7 @@ export function usePerformanceManualConfirm(buyaccountid: number) {
 
     const confirmFormData = ref<Partial<Proto.PerformanceManualConfirmReq>>({
         /// 执行方
-        PerformanceExecuteSide: buyaccountid === accountStore.accountId ? 1 : 2
+        PerformanceExecuteSide: buyaccountid === accountStore.currentAccountId ? 1 : 2
     })
 
     const confirmSubmit = async () => {
@@ -71,8 +71,8 @@ export function usePerformanceManualConfirm(buyaccountid: number) {
 export function usePerformanceModifyContact() {
     const loading = shallowRef(false)
 
-    const formData = ref<Partial<Proto.PerformanceModifyContactReq>>({ 
-        AccountID: accountStore.accountId
+    const formData = ref<Partial<Proto.PerformanceModifyContactReq>>({
+        AccountID: accountStore.currentAccountId
     })
 
     const formSubmit = async () => {

+ 9 - 9
src/business/trade/index.ts

@@ -35,7 +35,7 @@ export function usePurchaseOrderDesting() {
 
     const formData = ref<Partial<Proto.SpotPresaleDestingOrderReq>>({
         UserID: loginStore.userId, // 用户ID,必填
-        AccountID: accountStore.accountId, // 资金账号,必填
+        AccountID: accountStore.currentAccountId, // 资金账号,必填
         ClientType: ClientType.Web, // 终端类型
         UpdatorID: loginStore.loginId, // 操作人,必填
     })
@@ -213,7 +213,7 @@ export function useSpotPresaleTransferDesting() {
 
     const formData = reactive<Proto.SpotPresaleTransferDestingReq>({
         UserID: loginStore.userId,
-        AccountID: accountStore.accountId,
+        AccountID: accountStore.currentAccountId,
         TransferID: Long.fromNumber(0),
         ClientType: ClientType.Web // 终端类型
     })
@@ -246,7 +246,7 @@ export function useWrListingCancelOrder() {
     /// 接口请求
     const formData = reactive<Proto.WRListingCancelOrderReq>({
         UserID: loginStore.userId,
-        AccountID: accountStore.accountId,
+        AccountID: accountStore.currentAccountId,
         OperatorID: loginStore.loginId,
         OrderSrc: OrderSrc.ORDERSRC_CLIENT,
         ClientOrderTime: formatDate(new Date().toISOString()),
@@ -282,7 +282,7 @@ export function useWrOutInApply(holdlb: Model.HoldLBRsp) {
     const formData = reactive<Partial<Proto.WROutApplyReq>>({
         AppointmentRemark: '',
         UserID: loginStore.userId,             // 用户ID,必填
-        AccountID: accountStore.accountId,  // 申请人账户ID
+        AccountID: accountStore.currentAccountId,  // 申请人账户ID
         CreatorID: loginStore.loginId,         // 创建人ID
         WRStandardID: holdlb.wrstandardid,
         WarehouseID: holdlb.warehouseid,
@@ -331,7 +331,7 @@ export function useHdWROrder() {
         FixedPrice: 1,
         OrderQty: 1,
         UserID: loginStore.userId,
-        AccountID: accountStore.accountId,
+        AccountID: accountStore.currentAccountId,
         OperatorID: loginStore.loginId,
         ClientType: ClientType.Web,
         BuyOrSell: BuyOrSell.Sell,
@@ -379,7 +379,7 @@ export function useHdWRDealOrder() {
 
     const formData = reactive<Proto.HdWRDealOrderReq>({
         UserID: loginStore.userId, // 用户ID
-        AccountID: accountStore.accountId, // 资金账号
+        AccountID: accountStore.currentAccountId, // 资金账号
         RelatedWRTradeOrderID: '0', // 关联委托单号(摘牌委托关联挂牌委托单ID)
         WRTransferUserID: loginStore.userId, // 仓单受让用户
         OrderQty: 0, // 委托数量
@@ -491,7 +491,7 @@ export function useCancelOrder() {
     const formData = reactive<Partial<Proto.CancelOrderReq>>({
         OperatorID: loginStore.loginId,
         OrderSrc: OrderSrc.ORDERSRC_CLIENT,
-        AccountID: accountStore.accountId,
+        AccountID: accountStore.currentAccountId,
         ClientType: ClientType.Web,
         OperateType: EOperateType.OPERATETYPE_ORDERCANCEL,
     })
@@ -527,7 +527,7 @@ export function useHolderClose() {
         ClientOrderTime: formatDate(new Date().toISOString()),
         ClientType: ClientType.Web,
         LoginID: loginStore.loginId,
-        AccountID: accountStore.accountId,
+        AccountID: accountStore.currentAccountId,
         OrderSrc: OrderSrc.ORDERSRC_CLIENT,
         OperatorID: loginStore.loginId,
     })
@@ -559,7 +559,7 @@ export function useOrder() {
     const formData = reactive<Partial<Proto.OrderReq>>({
         ClientType: ClientType.Web,
         LoginID: loginStore.loginId,
-        AccountID: accountStore.accountId,
+        AccountID: accountStore.currentAccountId,
         BuyOrSell: BuyOrSell.Buy,
         OperateType: EOrderOperateType.ORDEROPERATETYPE_NORMAL,
         OrderSrc: OrderSrc.ORDERSRC_CLIENT,

+ 1 - 1
src/business/user/account.ts

@@ -46,7 +46,7 @@ export function useAccountPassword(ModifyPwdType: 0 | 1 | 2) {
 
     const formData = reactive<Proto.ModifyPwdReq>({
         ModifyPwdType, // 修改密码类型1:登陆密码2:资金账户密码
-        ModifyPwdID: ModifyPwdType === 1 ? loginStore.userId : accountStore.accountId, // 被修改的ID(ModifyType=1:LoginIDModifyType=2:AccountID)
+        ModifyPwdID: ModifyPwdType === 1 ? loginStore.userId : accountStore.currentAccountId, // 被修改的ID(ModifyType=1:LoginIDModifyType=2:AccountID)
         OldPwd: '', // 旧资金密码
         NewPwd: '' // 新资金密码
     })

+ 1 - 1
src/packages/gstj/views/goods/detail/components/listing/Index.vue

@@ -30,7 +30,7 @@
                     </Field>
                     <Field label="可用资金">
                         <template #input>
-                            <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                            <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                         </template>
                     </Field>
                 </CellGroup>

+ 2 - 2
src/packages/gstj/views/goods/trade/components/delisting/index.vue

@@ -8,7 +8,7 @@
                 <CellGroup inset>
                     <Field label="交易账户">
                         <template #input>
-                            <span>{{ accountStore.accountId }}</span>
+                            <span>{{ accountStore.currentAccountId }}</span>
                         </template>
                     </Field>
                     <Field label="挂牌方">
@@ -45,7 +45,7 @@
                     </Field>
                     <Field label="可用资金">
                         <template #input>
-                            <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                            <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                         </template>
                     </Field>
                 </CellGroup>

+ 5 - 5
src/packages/gstj/views/mine/Index.vue

@@ -21,21 +21,21 @@
                     </div>
                     <div class="profile-account">
                         <span>正常</span>
-                        <span>{{ accountInfo.accountid ?? 0 }}</span>
+                        <span>{{ currentAccount.accountid ?? 0 }}</span>
                     </div>
                 </div>
                 <div class="bank">
                     <div class="bank-item">
                         <span>余额</span>
-                        <span>{{ accountInfo.currentbalance?.toFixed(2) ?? '0.00' }}</span>
+                        <span>{{ currentAccount.currentbalance?.toFixed(2) ?? '0.00' }}</span>
                     </div>
                     <div class="bank-item">
                         <span>冻结</span>
-                        <span>{{ freezeMargin.toFixed(2) }}</span>
+                        <span>{{ currentAccount.freezeMargin?.toFixed(2) }}</span>
                     </div>
                     <div class="bank-item">
                         <span>可用</span>
-                        <span>{{ avaiableMoney.toFixed(2) }}</span>
+                        <span>{{ currentAccount.avaiableMoney?.toFixed(2) }}</span>
                     </div>
                     <div class="bank-item">
                         <span>
@@ -133,7 +133,7 @@ const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
 const accountStore = useAccountStore()
-const { accountInfo, freezeMargin, avaiableMoney } = accountStore.$toRefs()
+const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
 const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态

+ 1 - 1
src/packages/gstj/views/spot/add/components/sell/index.vue

@@ -42,7 +42,7 @@
                 </Field>
                 <Field label="可用资金">
                     <template #input>
-                        <span>{{ accountStore.avaiableMoney.toFixed(2) }}元</span>
+                        <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}元</span>
                     </template>
                 </Field>
             </CellGroup>

+ 1 - 1
src/packages/gstj/views/spot/detail/components/delisting/index.vue

@@ -41,7 +41,7 @@
             </Field>
             <Field label="可用资金" v-if="buyorsell === BuyOrSell.Buy">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 1 - 1
src/packages/gstj/views/spot/detail/components/listing/index.vue

@@ -32,7 +32,7 @@
             </Field>
             <Field label="可用资金" v-if="buyorsell === BuyOrSell.Buy">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 1 - 1
src/packages/mobile/views/ballot/detail/components/delisting/index.vue

@@ -19,7 +19,7 @@
             </Field>
             <Field label="可用资金">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 1 - 1
src/packages/mobile/views/goods/detail/components/listing/Index.vue

@@ -30,7 +30,7 @@
                     </Field>
                     <Field label="可用资金">
                         <template #input>
-                            <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                            <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                         </template>
                     </Field>
                 </CellGroup>

+ 2 - 2
src/packages/mobile/views/goods/trade/components/delisting/index.vue

@@ -8,7 +8,7 @@
                 <CellGroup inset>
                     <Field label="交易账户">
                         <template #input>
-                            <span>{{ accountStore.accountId }}</span>
+                            <span>{{ accountStore.currentAccountId }}</span>
                         </template>
                     </Field>
                     <Field label="挂牌方">
@@ -45,7 +45,7 @@
                     </Field>
                     <Field label="可用资金">
                         <template #input>
-                            <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                            <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                         </template>
                     </Field>
                 </CellGroup>

+ 5 - 5
src/packages/mobile/views/mine/Index.vue

@@ -21,21 +21,21 @@
                     </div>
                     <div class="profile-account">
                         <span>正常</span>
-                        <span>{{ accountInfo.accountid ?? 0 }}</span>
+                        <span>{{ currentAccount.accountid ?? 0 }}</span>
                     </div>
                 </div>
                 <div class="bank">
                     <div class="bank-item">
                         <span>余额</span>
-                        <span>{{ accountInfo.currentbalance?.toFixed(2) ?? '0.00' }}</span>
+                        <span>{{ currentAccount.currentbalance?.toFixed(2) ?? '0.00' }}</span>
                     </div>
                     <div class="bank-item">
                         <span>冻结</span>
-                        <span>{{ freezeMargin.toFixed(2) }}</span>
+                        <span>{{ currentAccount.freezeMargin?.toFixed(2) }}</span>
                     </div>
                     <div class="bank-item">
                         <span>可用</span>
-                        <span>{{ avaiableMoney.toFixed(2) }}</span>
+                        <span>{{ currentAccount.avaiableMoney?.toFixed(2) }}</span>
                     </div>
                     <div class="bank-item">
                         <span>
@@ -133,7 +133,7 @@ const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
 const accountStore = useAccountStore()
-const { accountInfo, freezeMargin, avaiableMoney } = accountStore.$toRefs()
+const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
 const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态

+ 1 - 1
src/packages/mobile/views/order/position/components/transfer/delivery/trade/Index.vue

@@ -59,7 +59,7 @@ const showModal = shallowRef(true)
 
 const formData = reactive<Partial<Proto.DeliveryOrderReq>>({
     ClientType: ClientType.Web,
-    AccountID: accountStore.accountId,
+    AccountID: accountStore.currentAccountId,
     XGoodsID: props.detail.goodsid,
     DeliveryGoodsID: props.detail.deliverygoodsid,
 })

+ 1 - 1
src/packages/mobile/views/presale/detail/components/delisting/index.vue

@@ -25,7 +25,7 @@
             </Field>
             <Field label="可用资金">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 1 - 1
src/packages/mobile/views/spot/add/components/sell/index.vue

@@ -42,7 +42,7 @@
                 </Field>
                 <Field label="可用资金">
                     <template #input>
-                        <span>{{ accountStore.avaiableMoney.toFixed(2) }}元</span>
+                        <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}元</span>
                     </template>
                 </Field>
             </CellGroup>

+ 1 - 1
src/packages/mobile/views/spot/detail/components/delisting/index.vue

@@ -41,7 +41,7 @@
             </Field>
             <Field label="可用资金" v-if="buyorsell === BuyOrSell.Buy">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 1 - 1
src/packages/mobile/views/spot/detail/components/listing/index.vue

@@ -32,7 +32,7 @@
             </Field>
             <Field label="可用资金" v-if="buyorsell === BuyOrSell.Buy">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 2 - 2
src/packages/mobile/views/swap/detail/components/delisting/Index.vue

@@ -3,7 +3,7 @@
         <Form class="swap-delisting__form" ref="formRef" @submit="onSubmit" v-if="props">
             <Field label="交易账户">
                 <template #input>
-                    <span>{{ accountStore.accountId }}</span>
+                    <span>{{ accountStore.currentAccountId }}</span>
                 </template>
             </Field>
             <Field label="挂牌方">
@@ -57,7 +57,7 @@
             </Field>
             <Field label="可用资金">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 2 - 2
src/packages/mobile/views/swap/detail/components/listing/Index.vue

@@ -7,7 +7,7 @@
             </Tabs>
             <Field label="交易账户">
                 <template #input>
-                    <span>{{ accountStore.accountId }}</span>
+                    <span>{{ accountStore.currentAccountId }}</span>
                 </template>
             </Field>
             <Field label="价格类型">
@@ -62,7 +62,7 @@
             </Field>
             <Field label="可用资金">
                 <template #input>
-                    <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                    <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
                 </template>
             </Field>
         </Form>

+ 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;
+        }
+    }
 }

+ 8 - 8
src/packages/pc/components/layouts/footer/index.vue

@@ -1,7 +1,7 @@
 <template>
-    <div class="app-footer" v-if="accountList.length">
+    <div class="app-footer" v-if="accountComputedList.length">
         <div class="app-footer__left" v-if="false">
-            <div>{{ accountInfo.accountid }}</div>
+            <div>{{ currentAccount.accountid }}</div>
             <table>
                 <colgroup>
                     <col width="64px" />
@@ -14,7 +14,7 @@
                     </tr>
                     <tr>
                         <td>余额</td>
-                        <td>{{ accountInfo.currentbalance }}</td>
+                        <td>{{ currentAccount.currentbalance }}</td>
                     </tr>
                     <tr>
                         <td>可用</td>
@@ -22,11 +22,11 @@
                     </tr>
                     <tr>
                         <td>占用</td>
-                        <td>{{ accountInfo.usedmargin }}</td>
+                        <td>{{ currentAccount.usedmargin }}</td>
                     </tr>
                     <!-- <tr>
                         <td>浮盈</td>
-                        <td :class="handlePriceColor(accountInfo.totalProfitLoss, 0)">{{ accountInfo.totalProfitLoss }}
+                        <td :class="handlePriceColor(currentAccount.totalProfitLoss, 0)">{{ currentAccount.totalProfitLoss }}
                         </td>
                     </tr> -->
                 </tbody>
@@ -34,9 +34,9 @@
         </div>
         <div class="app-footer__center">
             <app-auth-component code="bottom">
-                <el-select placeholder="请选择资金账户" :disabled="loading" v-model="accountId" @change="onAccountChange"
+                <el-select placeholder="请选择资金账户" :disabled="loading" v-model="currentAccountId" @change="onAccountChange"
                     v-if="false">
-                    <el-option :label="item.accountid" :value="item.accountid" v-for="(item, index) in accountList"
+                    <el-option :label="item.accountid" :value="item.accountid" v-for="(item, index) in accountComputedList"
                         :key="index" />
                 </el-select>
             </app-auth-component>
@@ -52,7 +52,7 @@ import { useAccountStore } from '@/stores'
 import AppAuthComponent from '@pc/components/modules/auth-component/index.vue'
 import AppListing from '@pc/components/modules/listing/index.vue'
 
-const { accountList, accountInfo, accountId, loading, getAccountPositionList } = useAccountStore()
+const { accountComputedList, currentAccount, currentAccountId, loading, getAccountPositionList } = useAccountStore()
 
 // 切换资金账户
 const onAccountChange = () => {

+ 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')
 

+ 87 - 0
src/packages/pc/views/account/address/components/new/index.vue

@@ -0,0 +1,87 @@
+<!-- 账户管理-收货地址管理-编辑 -->
+<template>
+    <app-drawer title='新增地址' :width="880" v-model:show="show" :loading="loading"
+        :refresh="refresh">
+        <el-form ref="formRef" class="el-form--horizontal" label-width="100px" :model="formData" :rules="formRules">
+            <el-form-item label="收货人" prop="ReceiverName">
+                <el-input placeholder="请输入" v-model="formData.ReceiverName" />
+            </el-form-item>
+            <el-form-item label="证件类型" prop="CardTypeID">
+                <el-select v-model="formData.CardTypeID">
+                    <el-option :label="item.label" :value="item.value" v-for="(item, index) in certificateTypeList"
+                        :key="index" />
+                </el-select>
+            </el-form-item>
+            <el-form-item label="联系电话" prop="PhoneNum">
+                <el-input placeholder="请输入" v-model="formData.PhoneNum" />
+            </el-form-item>
+            <el-form-item label="证件号码" prop="CardNum">
+                <el-input placeholder="请输入" v-model="formData.CardNum" />
+            </el-form-item>
+            <el-form-item class="el-form-item--row" label="收货地址" prop="area">
+                <app-region class="el-form-item--col" v-model:province="formData.ProvinceID"
+                    v-model:city="formData.CityID" v-model:district="formData.DistrictID" />
+            </el-form-item>
+            <el-form-item class="el-form-item--row" prop="Address">
+                <el-input placeholder="请输入" v-model="formData.Address" />
+            </el-form-item>
+        </el-form>
+        <template #footer>
+            <el-button type="info" @click="onCancel(false)">取消</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage } from 'element-plus'
+import type { FormInstance, FormRules } from 'element-plus'
+import { useAddressForm } from '@/business/user/address'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+import AppRegion from '@pc/components/base/region/index.vue'
+
+const { loading, formData, certificateTypeList, addOrUpdate } = useAddressForm()
+const show = ref(true)
+const refresh = ref(false)
+const formRef = ref<FormInstance>()
+
+const formRules: FormRules = {
+    ReceiverName: [{ required: true, message: '请输入收货人', trigger: 'blur' }],
+    CardTypeID: [{ required: true, message: '请选择证件类型' }],
+    PhoneNum: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
+    CardNum: [{ required: true, message: '请输入证件号码', trigger: 'blur' }],
+    Address: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
+    area: [
+        {
+            required: true,
+            validator: (rule, value, callback) => {
+                const ids = [10, 18, 34] // 香港、台湾、澳门没有市区选择
+                if ((formData.ProvinceID && formData.CityID && formData.DistrictID) || ids.includes(formData.ProvinceID ?? 0)) {
+                    callback()
+                } else {
+                    callback(new Error('请选择收货地区'))
+                }
+            }
+        }
+    ],
+}
+
+const onCancel = (isRefresh = false) => {
+    show.value = false
+    refresh.value = isRefresh
+}
+
+const onSubmit = () => {
+    formRef.value?.validate((valid) => {
+        if (valid) {
+            addOrUpdate().then(() => {
+                ElMessage.success('提交成功')
+                onCancel(true)
+            }).catch((err) => {
+                ElMessage.error('提交失败:' + err)
+            })
+        }
+    })
+}
+</script>

+ 2 - 1
src/packages/pc/views/account/address/index.vue

@@ -45,6 +45,7 @@ const componentMap = new Map<string, unknown>([
     ['edit', defineAsyncComponent(() => import('./components/edit/index.vue'))],
     ['default', defineAsyncComponent(() => import('./components/default/index.vue'))],
     ['delete', defineAsyncComponent(() => import('./components/delete/index.vue'))],
+    ['new', defineAsyncComponent(() => import('./components/new/index.vue'))],
 ])
 
 const { rowKey, expandKeys, selectedRow, rowClick } = useComposeTable<Model.UserReceiveInfoRsp>({ rowKey: 'autoid' })
@@ -65,6 +66,6 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
 ])
 
 filterOptons.buttonList = [
-    { lable: '新增地址', className: 'el-button--primary', onClick: () => openComponent('edit') },
+    { lable: '新增地址', className: 'el-button--primary', onClick: () => openComponent('new') },
 ]
 </script>

+ 75 - 0
src/packages/pc/views/account/receipt/components/new/index.vue

@@ -0,0 +1,75 @@
+<!-- 账户管理-发票信息管理-编辑 -->
+<template>
+    <app-drawer title='新增发票' :width="460" v-model:show="show" :loading="loading"
+        :refresh="refresh">
+        <el-form ref="formRef" class="el-form--vertical" label-width="100px" :model="formData" :rules="formRules">
+            <el-form-item label="发票类型" prop="ReceiptType">
+                <el-radio-group v-model="formData.ReceiptType">
+                    <el-radio :label="1">个人</el-radio>
+                    <el-radio :label="2">企业</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item label="发票抬头" prop="UserName">
+                <el-input placeholder="请输入" v-model="formData.UserName" />
+            </el-form-item>
+            <template v-if="formData.ReceiptType === 2">
+                <el-form-item label="税号" prop="TaxpayerID">
+                    <el-input placeholder="请输入" v-model="formData.TaxpayerID" />
+                </el-form-item>
+                <el-form-item label="开户银行" prop="ReceiptBank">
+                    <el-input placeholder="请输入" v-model="formData.ReceiptBank" />
+                </el-form-item>
+                <el-form-item label="银行账号" prop="ReceiptAccount">
+                    <el-input placeholder="请输入" v-model="formData.ReceiptAccount" />
+                </el-form-item>
+                <el-form-item label="企业地址" prop="Address">
+                    <el-input placeholder="请输入" v-model="formData.Address" />
+                </el-form-item>
+                <el-form-item label="企业电话" prop="ContactInfo">
+                    <el-input placeholder="请输入" v-model="formData.ContactInfo" />
+                </el-form-item>
+            </template>
+        </el-form>
+        <template #footer>
+            <el-button type="info" @click="onCancel(false)">取消</el-button>
+            <el-button type="primary" @click="onSubmit">提交</el-button>
+        </template>
+    </app-drawer>
+</template>
+
+<script lang="ts" setup>
+import { ref } from 'vue'
+import { ElMessage } from 'element-plus'
+import type { FormInstance, FormRules } from 'element-plus'
+import { useInvoiceForm } from '@/business/user/invoice'
+import AppDrawer from '@pc/components/base/drawer/index.vue'
+
+const { loading, formData, addOrUpdate } = useInvoiceForm()
+const show = ref(true)
+const refresh = ref(false)
+const formRef = ref<FormInstance>()
+
+const formRules: FormRules = {
+    ReceiptType: [{ required: true, message: '请选择发票类型' }],
+    UserName: [{ required: true, message: '请输入发票抬头', trigger: 'blur' }],
+    TaxpayerID: [{ required: true, message: '请输入税号', trigger: 'blur' }],
+}
+
+const onCancel = (isRefresh = false) => {
+    show.value = false
+    refresh.value = isRefresh
+}
+
+const onSubmit = () => {
+    formRef.value?.validate((valid) => {
+        if (valid) {
+            addOrUpdate().then(() => {
+                ElMessage.success('提交成功')
+                onCancel(true)
+            }).catch((err) => {
+                ElMessage.error('提交失败:' + err)
+            })
+        }
+    })
+}
+</script>

+ 2 - 1
src/packages/pc/views/account/receipt/index.vue

@@ -34,6 +34,7 @@ import AppFilter from '@pc/components/base/table-filter/index.vue'
 
 const componentMap = new Map<string, unknown>([
     ['edit', defineAsyncComponent(() => import('./components/edit/index.vue'))],
+    ['new', defineAsyncComponent(() => import('./components/new/index.vue'))],
     ['delete', defineAsyncComponent(() => import('./components/delete/index.vue'))],
 ])
 
@@ -56,6 +57,6 @@ const tableColumns = shallowRef<Model.TableColumn[]>([
 ])
 
 filterOptons.buttonList = [
-    { lable: '新增发票', className: 'el-button--primary', onClick: () => openComponent('edit') },
+    { lable: '新增发票', className: 'el-button--primary', onClick: () => openComponent('new') },
 ]
 </script>

+ 1 - 1
src/packages/pc/views/account/sign/components/cancel/index.vue

@@ -3,8 +3,8 @@
     <app-drawer title="提示" v-model:show="show" :loading="loading" :refresh="refresh">
         <div>确认要解约吗?</div>
         <template #footer>
-            <el-button type="primary" @click="onCancelSumit()">提交</el-button>
             <el-button @click="onCancel(false)" plain>取消</el-button>
+            <el-button type="primary" @click="onCancelSumit()">提交</el-button>
         </template>
     </app-drawer>
 </template>

+ 2 - 2
src/packages/pc/views/account/sign/index.vue

@@ -7,7 +7,7 @@
         </template>
         <!-- 证件类型 -->
         <template #cardtype="{ value }">
-            {{ getCertificateTypeCodeName(value) }}
+            {{ getCertificateTypeCodeName(Number(value)) }}
         </template>
         <!-- 状态 -->
         <template #signstatus="{ value }">
@@ -19,7 +19,7 @@
                 <el-button v-if="row.signstatus === SignStatus.Signed" type="danger" size="small"
                     @click="showComponent('cancel', row)">解约</el-button>
                 <el-button v-if="[SignStatus.Unsigned, SignStatus.Refuse, SignStatus.Signed].includes(row.signstatus)"
-                    type="danger" size="small" @click="showComponent('sign', row)">修改</el-button>
+                    type="primary" size="small" @click="showComponent('sign', row)">修改</el-button>
             </div>
         </template>
     </app-table>

+ 11 - 42
src/packages/pc/views/footer/capital/summary/index.vue

@@ -1,35 +1,7 @@
 <!-- 资金信息-资金汇总 -->
 <template>
-    <app-table :data="accountList" v-model:columns="tableColumns" :row-key="rowKey" :expand-row-keys="expandKeys"
-        @row-click="rowClick">
-        <!-- 余额 -->
-        <template #currentbalance>
-            {{ accountInfo.currentbalance?.toFixed(2) }}
-        </template>
-        <!-- 净值 -->
-        <template #balance>
-            {{ accountInfo.balance?.toFixed(2) }}
-        </template>
-        <!-- 占用资金 -->
-        <template #oriusedmargin>
-            {{ accountInfo.oriusedmargin?.toFixed(2) }}
-        </template>
-        <!-- 可用资金 -->
-        <template #avaiableMoney>
-            {{ avaiableMoney.toFixed(2) }}
-        </template>
-        <!-- 冻结资金 -->
-        <template #freezeMargin>
-            {{ freezeMargin.toFixed(2) }}
-        </template>
-        <!-- 今日入金 -->
-        <template #inamount="{ value }">
-            {{ value.toFixed(2) }}
-        </template>
-        <!-- 今日出金 -->
-        <template #outamount="{ value }">
-            {{ value.toFixed(2) }}
-        </template>
+    <app-table :data="accountStore.accountComputedList" v-model:columns="tableColumns" :row-key="rowKey"
+        :expand-row-keys="expandKeys" @row-click="rowClick">
         <!-- 状态 -->
         <template #tradestatus="{ value }">
             {{ getTradeStatusName(value) }}
@@ -61,22 +33,19 @@ const componentMap = new Map<string, unknown>([
     ['withdraw', defineAsyncComponent(() => import('./withdraw/index.vue'))], // 提现
 ])
 
-const { componentRef, componentId, openComponent, closeComponent } = useComponent()
-
 const accountStore = useAccountStore()
-const { accountList } = accountStore.$toRefs()
 const { selectedRow, rowKey, expandKeys, rowClick } = useComposeTable<Model.TaAccountsRsp>({ rowKey: 'accountid' })
-const { accountInfo, freezeMargin, avaiableMoney } = accountStore.$toRefs()
+const { componentRef, componentId, openComponent, closeComponent } = useComponent()
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
-    { prop: 'accountid', label: '资金账号' },
-    { prop: 'balance', label: '期初余额' },
-    { prop: 'currentbalance', label: '期末余额' },
-    { prop: 'avaiableMoney', label: '可用资金' },
-    { prop: 'oriusedmargin', label: '占用资金' },
-    { prop: 'freezeMargin', label: '冻结资金' },
-    { prop: 'inamount', label: '今日入金' },
-    { prop: 'outamount', label: '今日出金' },
+    { prop: 'accountid', label: '资金账号', decimal: 2 },
+    { prop: 'balance', label: '期初余额', decimal: 2 },
+    { prop: 'currentbalance', label: '期末余额', decimal: 2 },
+    { prop: 'avaiableMoney', label: '可用资金', decimal: 2 },
+    { prop: 'oriusedmargin', label: '占用资金', decimal: 2 },
+    { prop: 'freezeMargin', label: '冻结资金', decimal: 2 },
+    { prop: 'inamount', label: '今日入金', decimal: 2 },
+    { prop: 'outamount', label: '今日出金', decimal: 2 },
     { prop: 'tradestatus', label: '状态' },
 ])
 </script>

+ 6 - 6
src/packages/pc/views/footer/capital/summary/withdraw/index.vue

@@ -3,10 +3,10 @@
     <app-drawer title="提现申请" :width="800" v-model:show="show" :loading="loading" :refresh="refresh">
         <el-form ref="formRef" class="el-form--horizontal" label-width="100px" :model="formData" :rules="formRules">
             <el-form-item label="资金账号">
-                <span>{{ accountStore.accountId }}</span>
+                <span>{{ accountStore.currentAccountId }}</span>
             </el-form-item>
             <el-form-item label="账户余额">
-                <span>{{ accountStore.accountInfo.currentbalance?.toFixed(2) }}</span>
+                <span>{{ accountStore.currentAccount.currentbalance?.toFixed(2) }}</span>
             </el-form-item>
             <el-form-item label="出金金额" prop="Amount">
                 <el-input type="number" placeholder="请输入" v-model="formData.Amount" />
@@ -39,11 +39,11 @@ const show = ref(true)
 const refresh = ref(false)
 
 const formRules: FormRules = {
-    Amount: [{ 
-        required: true, 
-        message: '请输入金额', 
+    Amount: [{
+        required: true,
+        message: '请输入金额',
         validator: (rule, value, callback) => {
-            if (value<=(accountStore.accountInfo.currentbalance ?? 0.0)) {
+            if (value <= (accountStore.currentAccount.currentbalance ?? 0.0)) {
                 callback()
             } else {
                 callback(new Error('超出可出金额'))

+ 3 - 3
src/packages/pc/views/footer/goods/position/components/delivery/index.vue

@@ -28,14 +28,14 @@
             </el-form-item>
             <el-form-item label="参考损益">
                 <template #value>
-                    <span :class="closepl ? 'g-price-up' : 'g-price-down'">{{ formatDecimal(closepl) }}</span>
+                    <span :class="closepl ? 'g-price-up' : 'g-price-down'">{{ handleNumberValue(closepl) }}</span>
                 </template>
             </el-form-item>
             <el-form-item prop="DeliveryLot" label="交收数量">
                 <el-input-number placeholder="请输入数量" v-model="formData.DeliveryLot" :max="selectedRow.enableqty" :min="0" />
             </el-form-item>
             <el-form-item prop="DeliveryInfo" label="交收信息">
-                <el-input placeholder="请输入交收信息" v-model="formData.DeliveryInfo" />
+                <el-input type="textarea" placeholder="请输入交收信息" v-model="formData.DeliveryInfo" />
             </el-form-item>
         </el-form>
         <template #footer>
@@ -51,7 +51,7 @@ import { ElMessage, FormInstance, FormRules } from 'element-plus'
 import { useOfflineDelivery } from '@/business/trade'
 import { useFuturesStore } from '@/stores'
 import { getBuyOrSellName, BuyOrSell } from '@/constants/order'
-import { formatDecimal } from '@/filters'
+import { formatDecimal, handleNumberValue } from '@/filters'
 import AppDrawer from '@pc/components/base/drawer/index.vue'
 
 const props = defineProps({

+ 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>

+ 0 - 1
src/packages/pc/views/market/trade/goods/index.vue

@@ -61,7 +61,6 @@ const tableList = computed(() => {
     return quoteGoodsList.value.map((item) => {
         const quote = futuresStore.getQuoteInfo(item.goodscode)
         const { bid, bidColor, bidvolume, ask, askColor, askvolume, limitdown, limitup, lastColor, openedColor, lowestColor, highestColor, last, presettle, rise, change, amplitude, highest, lowest, opened, decimalplace } = quote.value ?? {}
-        // console.log(item.goodscode, last)
         return {
             ...item,
             lastColor,

+ 1 - 1
src/packages/pc/views/market/trade/spot/listing/index.vue

@@ -33,7 +33,7 @@
                 <span>{{ amount }}</span>
             </el-form-item>
             <el-form-item label="可用资金">
-                <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
             </el-form-item>
         </el-form>
         <template #footer>

+ 1 - 1
src/packages/pc/views/market/trade/spot/order/delisting/index.vue

@@ -24,7 +24,7 @@
                 <span>{{ amount }}</span>
             </el-form-item>
             <el-form-item label="可用资金">
-                <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
             </el-form-item>
         </el-form>
         <template #footer>

+ 1 - 1
src/packages/pc/views/market/trade/spot/order/listing/index.vue

@@ -18,7 +18,7 @@
                 <span>{{ amount }}</span>
             </el-form-item>
             <el-form-item label="可用资金">
-                <span>{{ accountStore.avaiableMoney.toFixed(2) }}</span>
+                <span>{{ accountStore.currentAccount.avaiableMoney?.toFixed(2) }}</span>
             </el-form-item>
         </el-form>
         <template #footer>

+ 1 - 1
src/packages/pc/views/query/capital/history/index.vue

@@ -28,7 +28,7 @@ import AppFilter from '@pc/components/base/table-filter/index.vue'
 const { filterOptons, getQueryParams } = useDataFilter<Model.HisTradeOrderDetailReq>()
 const filterDate = shallowRef<string[]>([])
 
-const { loading, dataList, run } = useRequest(queryHisAmountLog, {})
+const { loading, dataList, run } = useRequest(queryHisAmountLog, { manual: true })
 
 const tableColumns = shallowRef<Model.TableColumn[]>([
     { prop: 'accountid', label: '资金账号' },

+ 1 - 0
src/packages/pc/views/query/order/goods/history/index.vue

@@ -41,6 +41,7 @@ const { loading, dataList, run } = useRequest(queryHisTradeOrderDetail, {
     params: {
         tradeMode: '50'
     },
+    manual: true
 })
 
 const tableColumns = shallowRef<Model.TableColumn[]>([

+ 1 - 0
src/packages/pc/views/query/order/spot/history/index.vue

@@ -51,6 +51,7 @@ const { loading, dataList, run } = useRequest(queryWrOrderDetail, {
     params: {
         ...formData
     },
+    manual: true
 })
 
 const tableColumns = shallowRef<Model.TableColumn[]>([

+ 1 - 0
src/packages/pc/views/query/trade/goods/history/index.vue

@@ -41,6 +41,7 @@ const { loading, dataList, run } = useRequest(queryHisTradeDetail, {
     params: {
         tradeMode: '50'
     },
+    manual: true
 })
 
 const tableColumns = shallowRef<Model.TableColumn[]>([

+ 1 - 0
src/packages/pc/views/query/trade/spot/history/index.vue

@@ -42,6 +42,7 @@ const { loading, dataList, run } = useRequest(queryWrTradeDetail, {
     params: {
         ...formData
     },
+    manual: true
 })
 
 const tableColumns = shallowRef<Model.TableColumn[]>([

+ 5 - 5
src/packages/sbyj/views/mine/index.vue

@@ -21,21 +21,21 @@
                     </div>
                     <div class="profile-account">
                         <span>正常</span>
-                        <span>{{ accountInfo.accountid ?? 0 }}</span>
+                        <span>{{ currentAccount.accountid ?? 0 }}</span>
                     </div>
                 </div>
                 <div class="bank">
                     <div class="bank-item">
                         <span>余额</span>
-                        <span>{{ accountInfo.currentbalance?.toFixed(2) ?? '0.00' }}</span>
+                        <span>{{ currentAccount.currentbalance?.toFixed(2) ?? '0.00' }}</span>
                     </div>
                     <div class="bank-item">
                         <span>冻结</span>
-                        <span>{{ freezeMargin.toFixed(2) }}</span>
+                        <span>{{ currentAccount.freezeMargin?.toFixed(2) }}</span>
                     </div>
                     <div class="bank-item">
                         <span>可用</span>
-                        <span>{{ avaiableMoney.toFixed(2) }}</span>
+                        <span>{{ currentAccount.avaiableMoney?.toFixed(2) }}</span>
                     </div>
                     <div class="bank-item">
                         <span>
@@ -127,7 +127,7 @@ const { router, routerTo } = useNavigation()
 const loginStore = useLoginStore()
 const userStore = useUserStore()
 const accountStore = useAccountStore()
-const { accountInfo, freezeMargin, avaiableMoney } = accountStore.$toRefs()
+const { currentAccount } = accountStore.$toRefs()
 
 const headerRef = shallowRef<HTMLDivElement>()
 const authStatus = shallowRef(AuthStatus.Uncertified) // 实名认证状态

+ 2 - 2
src/services/api/bank/index.ts

@@ -110,7 +110,7 @@ export function queryHisAmountLog(config: RequestConfig<Model.HisAmountLogReq> =
     return http.commonRequest<Model.HisAmountLogRsp[]>({
         url: '/TaAccount/QueryHisAmountLog',
         params: {
-            accountID: accountStore.accountId.toString(),
+            accountID: accountStore.currentAccountId.toString(),
             pageflag: 1,
             ...config.data
         },
@@ -124,7 +124,7 @@ export function queryAmountLog(config: RequestConfig<Model.AmountLogReq> = {}) {
     return http.commonRequest<Model.AmountLogRsp[]>({
         url: '/TaAccount/QueryAmountLog',
         params: {
-            accountID: accountStore.accountId.toString(),
+            accountID: accountStore.currentAccountId.toString(),
             pageflag: 1,
             ...config.data
         },

+ 7 - 7
src/services/api/order/index.ts

@@ -51,7 +51,7 @@ export function queryHoldLB(config: RequestConfig<Model.HoldLBReq> = {}) {
     return http.commonRequest<Model.HoldLBRsp[]>({
         url: '/WrTrade2/QueryHoldLB',
         params: {
-            accountid: accountStore.accountId,
+            accountid: accountStore.currentAccountId,
             ...config.data
         },
     })
@@ -126,7 +126,7 @@ export function queryHisTradeDetail(config: RequestConfig<Model.HisTradeDetailRe
     return http.commonRequest<Model.HisTradeDetailRsp[]>({
         url: '/Order/QueryHisTradeDetail',
         params: {
-            accountID: accountStore.accountId,
+            accountID: accountStore.currentAccountId,
             ...config.data
         },
     })
@@ -139,7 +139,7 @@ export function queryHisTradeOrderDetail(config: RequestConfig<Model.HisTradeOrd
     return http.commonRequest<Model.HisTradeOrderDetailRsp[]>({
         url: '/Order/QueryHisTradeOrderDetail',
         params: {
-            accountID: accountStore.accountId,
+            accountID: accountStore.currentAccountId,
             ...config.data
         },
     })
@@ -152,7 +152,7 @@ export function queryTradeDetail(config: RequestConfig<Model.TradeDetailReq> = {
     return http.commonRequest<Model.TradeDetailRsp[]>({
         url: '/Order/QueryTradeDetail',
         params: {
-            accountID: accountStore.accountId,
+            accountID: accountStore.currentAccountId,
             ...config.data
         },
     })
@@ -166,7 +166,7 @@ export function queryTradeHolderDetail(config: RequestConfig<Model.TradeHolderDe
         url: '/Order/QueryTradeHolderDetail',
         params: {
             userid: loginStore.userId,
-            accids: accountStore.accountId.toString(),
+            accids: accountStore.currentAccountId.toString(),
             ...config.data
         },
     })
@@ -179,7 +179,7 @@ export function queryTradeOrderDetail(config: RequestConfig<Model.TradeOrderDeta
     return http.commonRequest<Model.TradeOrderDetailRsp[]>({
         url: '/Order/QueryTradeOrderDetail',
         params: {
-            accountID: accountStore.accountId,
+            accountID: accountStore.currentAccountId,
             ...config.data
         },
     })
@@ -192,7 +192,7 @@ export function queryTradePosition(config: RequestConfig<Model.TradePositionReq>
     return http.commonRequest<Model.TradePositionRsp[]>({
         url: '/Order/QueryTradePosition',
         params: {
-            accountID: accountStore.accountId,
+            accountID: accountStore.currentAccountId,
             ...config.data
         },
     })

+ 1 - 1
src/services/api/performance/index.ts

@@ -97,7 +97,7 @@ export function performanceManualConfirm(config: RequestConfig<Partial<Proto.Per
 export function performanceModifyContact(config: RequestConfig<Partial<Proto.PerformanceModifyContactReq>>) {
     return http.mqRequest<Proto.PerformanceModifyContactRsp>({
         data: {
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ...config.data
         },
         requestCode: 'PerformanceModifyContactReq',

+ 7 - 7
src/services/api/trade/index.ts

@@ -225,7 +225,7 @@ export function makeUpDeposit(config: RequestConfig<Partial<Proto.MakeUpDepositR
     return http.mqRequest<Proto.MakeUpDepositRsp>({
         data: {
             UserID: loginStore.userId,
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ClientSerialNo: v4(),
             ClientType: ClientType.Web,
             ...config.data
@@ -241,7 +241,7 @@ export function makeUpDeposit(config: RequestConfig<Partial<Proto.MakeUpDepositR
 export function holdAppendDeposit(config: RequestConfig<Partial<Proto.HoldAppendDepositReq>>) {
     return http.mqRequest<Proto.HoldAppendDepositRsp>({
         data: {
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ClientSerialNo: v4(),
             ClientType: ClientType.Web,
             ...config.data
@@ -258,7 +258,7 @@ export function holdAppendDeposit(config: RequestConfig<Partial<Proto.HoldAppend
 export function offlineDelivery(config: RequestConfig<Partial<Proto.OfflineDeliveryReq>>) {
     return http.mqRequest<Proto.OfflineDeliveryRsp>({
         data: {
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ClientTicket: v4(),
             UserID: loginStore.userId,
             ...config.data
@@ -275,7 +275,7 @@ export function offlineDelivery(config: RequestConfig<Partial<Proto.OfflineDeliv
 export function supplementDeposit(config: RequestConfig<Partial<Proto.SupplementDepositReq>>) {
     return http.mqRequest<Proto.SupplementDepositRsp>({
         data: {
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ClientSerialNo: v4(),
             UserID: loginStore.userId,
             ...config.data
@@ -292,7 +292,7 @@ export function supplementDeposit(config: RequestConfig<Partial<Proto.Supplement
 export function refundedDeposit(config: RequestConfig<Partial<Proto.RefundedDepositReq>>) {
     return http.mqRequest<Proto.RefundedDepositRsp>({
         data: {
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ClientSerialNo: v4(),
             UserID: loginStore.userId,
             ...config.data
@@ -309,7 +309,7 @@ export function refundedDeposit(config: RequestConfig<Partial<Proto.RefundedDepo
 export function marketOrderDeliveryApply(config: RequestConfig<Partial<Proto.MarketOrderDeliveryApplyReq>>) {
     return http.mqRequest<Proto.MarketOrderDeliveryApplyRsp>({
         data: {
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ClientSerialNo: v4(),
             UserID: loginStore.userId,
             ...config.data
@@ -326,7 +326,7 @@ export function marketOrderDeliveryApply(config: RequestConfig<Partial<Proto.Mar
 export function deliveryClientOperator(config: RequestConfig<Partial<Proto.DeliveryClientOperatorReq>>) {
     return http.mqRequest<Proto.DeliveryClientOperatorRsp>({
         data: {
-            AccountID: accountStore.accountId,
+            AccountID: accountStore.currentAccountId,
             ClientSerialNo: v4(),
             UserID: loginStore.userId,
             ClientType: ClientType.Web,

+ 1 - 1
src/services/api/transfer/index.ts

@@ -61,7 +61,7 @@ export function queryWrDeliveryAvalidHoldLB(config: RequestConfig<Model.WrDelive
     return http.commonRequest<Model.WrDeliveryAvalidHoldLBRsp[]>({
         url: '/WrTrade2/QueryWrDeliveryAvalidHoldLB',
         params: {
-            accountid: accountStore.accountId,
+            accountid: accountStore.currentAccountId,
             ...config.data
         },
     })

+ 2 - 2
src/services/http/index.ts

@@ -186,7 +186,7 @@ export default new (class {
 
         if (data) {
             data.Header = {
-                AccountID: accountStore.accountId,
+                AccountID: accountStore.currentAccountId,
                 FunCode: requestId,
                 UUID: v4(),
                 UserID: loginStore.userId,
@@ -243,7 +243,7 @@ export default new (class {
                     return Promise.resolve(res as T)
                 }
                 const { getErrorInfoByCode } = useErrorInfoStore()
-                const msg = getErrorInfoByCode(res.Status)
+                const msg = getErrorInfoByCode(res.RetCode)
                 const error = String(res.RetDesc || res.RetCode || res.Status)
                 return Promise.reject(msg ?? error)
             }

+ 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'

+ 30 - 20
src/stores/modules/account.ts

@@ -14,26 +14,37 @@ export const useAccountStore = defineStore(() => {
     const state = reactive({
         loading: false,
         accountList: <Model.TaAccountsRsp[]>[],
-        accountId: 0,
+        currentAccountId: 0,
     })
 
-    // 当前资金账户信息
-    const accountInfo = computed(() => {
-        return {
-            ...state.accountList.find((e) => e.accountid === state.accountId)
-        }
-    })
+    // 资金账户计算列表
+    const accountComputedList = computed(() => {
+        const result: (Model.TaAccountsRsp & {
+            freezeMargin: number; // 冻结资金
+            avaiableMoney: number; // 可用资金
+        })[] = []
+
+        state.accountList.forEach((item) => {
+            // 计算冻结资金
+            const freezeMargin = item.freezecharge + item.freezemargin + item.otherfreezemargin + item.outamountfreeze
+            // 计算可用资金
+            const avaiableMoney = item.currentbalance - freezeMargin
 
-    // 冻结资金
-    const freezeMargin = computed(() => {
-        const { freezecharge = 0, freezemargin = 0, otherfreezemargin = 0, outamountfreeze = 0 } = accountInfo.value
-        return freezecharge + freezemargin + otherfreezemargin + outamountfreeze
+            result.push({
+                ...item,
+                freezeMargin,
+                avaiableMoney
+            })
+        })
+
+        return result
     })
 
-    // 可用资金
-    const avaiableMoney = computed(() => {
-        const { currentbalance = 0 } = accountInfo.value
-        return currentbalance - freezeMargin.value
+    // 当前资金账户信息
+    const currentAccount = computed(() => {
+        return {
+            ...accountComputedList.value.find((e) => e.accountid === state.currentAccountId)
+        }
     })
 
     // 获取资金账户列表
@@ -49,8 +60,8 @@ export const useAccountStore = defineStore(() => {
             state.accountList = data
 
             // 查找当前选中的资金账户
-            if (!data.every((e) => e.accountid === state.accountId)) {
-                state.accountId = data[0]?.accountid ?? 0
+            if (!data.every((e) => e.accountid === state.currentAccountId)) {
+                state.currentAccountId = data[0]?.accountid ?? 0
             }
         } finally {
             state.loading = false
@@ -67,9 +78,8 @@ export const useAccountStore = defineStore(() => {
 
     return {
         ...toRefs(state),
-        accountInfo,
-        freezeMargin,
-        avaiableMoney,
+        accountComputedList,
+        currentAccount,
         moneyChangedNotify,
         getAccountList,
         getAccountPositionList,