zpj 10 miesięcy temu
rodzic
commit
9fa605a7be
53 zmienionych plików z 1846 dodań i 725 usunięć
  1. 280 34
      package-lock.json
  2. 1 0
      package.json
  3. 0 8
      src/api/admin/adminApi.js
  4. 0 10
      src/api/admin/banner.js
  5. 0 6
      src/api/admin/common.js
  6. 0 12
      src/api/admin/config.js
  7. 0 12
      src/api/admin/grant.js
  8. 0 10
      src/api/admin/message.js
  9. 0 12
      src/api/admin/news.js
  10. 0 12
      src/api/admin/rural-notice.js
  11. 0 7
      src/api/admin/txMap.js
  12. 0 14
      src/api/admin/user.js
  13. 0 13
      src/api/api/index.js
  14. 0 7
      src/api/api/member.js
  15. 1 1
      src/api/common.js
  16. 8 0
      src/api/goods.js
  17. 15 0
      src/api/member.js
  18. 10 0
      src/api/money.js
  19. 14 0
      src/api/news.js
  20. 8 0
      src/api/order.js
  21. 12 0
      src/api/withdraw.js
  22. 8 1
      src/assets/css/common.css
  23. BIN
      src/assets/img/me/me.png
  24. BIN
      src/assets/img/me/msg.png
  25. 6 7
      src/components/Forestage/Navigation.vue
  26. 1 1
      src/components/Forestage/PageFoot.vue
  27. 1 1
      src/components/Forestage/message.vue
  28. 22 0
      src/locales/en.json
  29. 170 2
      src/locales/zh-CN.json
  30. 6 6
      src/mixins/forestage/home.js
  31. 1 1
      src/mixins/forestage/homeMsg.js
  32. 1 1
      src/mixins/forestage/homeNews.js
  33. 6 6
      src/store/modules/user.js
  34. 1 1
      src/utils/request.js
  35. 1 0
      src/utils/routerEach.js
  36. 202 126
      src/views/Forestage/Draw/index.vue
  37. 31 31
      src/views/Forestage/Home/index.vue
  38. 18 10
      src/views/Forestage/Me/index.vue
  39. 15 2
      src/views/Forestage/Me/mod/about-us.vue
  40. 184 0
      src/views/Forestage/Me/mod/msg.vue
  41. 94 51
      src/views/Forestage/Me/mod/my-money.vue
  42. 37 18
      src/views/Forestage/Me/mod/my-order.vue
  43. 41 31
      src/views/Forestage/Me/mod/notice.vue
  44. 170 8
      src/views/Forestage/Me/mod/secure.vue
  45. 180 131
      src/views/Forestage/Recharge/index.vue
  46. 34 17
      src/views/Forestage/Team/index.vue
  47. 141 79
      src/views/Forestage/Tourism/index.vue
  48. 7 7
      src/views/Forestage/login/forget-password.vue
  49. 7 5
      src/views/Forestage/login/login.vue
  50. 13 12
      src/views/Forestage/login/module/getCheckCode.vue
  51. 10 10
      src/views/Forestage/login/register.vue
  52. 1 1
      vue.config.js
  53. 88 1
      yarn.lock

+ 280 - 34
package-lock.json

@@ -22,6 +22,7 @@
         "lodash": "^4.17.21",
         "node-polyfill-webpack-plugin": "^2.0.1",
         "postcss-plugin-px2rem": "0.8.1",
+        "qrcode": "^1.5.4",
         "stream-browserify": "^3.0.0",
         "util": "^0.12.4",
         "vue": "^2.6.14",
@@ -3452,7 +3453,6 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -5189,6 +5189,14 @@
         }
       }
     },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/deep-is": {
       "version": "0.1.4",
       "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
@@ -5467,6 +5475,11 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
     "node_modules/dir-glob": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -5672,8 +5685,7 @@
     "node_modules/emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
     },
     "node_modules/emojis-list": {
       "version": "3.0.0",
@@ -7030,7 +7042,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
       "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
       "dependencies": {
         "locate-path": "^5.0.0",
         "path-exists": "^4.0.0"
@@ -7272,7 +7283,6 @@
       "version": "2.0.5",
       "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
       "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true,
       "engines": {
         "node": "6.* || 8.* || >= 10.*"
       }
@@ -8137,7 +8147,6 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -8686,7 +8695,6 @@
       "version": "5.0.0",
       "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
       "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
       "dependencies": {
         "p-locate": "^4.1.0"
       },
@@ -9884,7 +9892,6 @@
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
       "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
       "dependencies": {
         "p-try": "^2.0.0"
       },
@@ -9899,7 +9906,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
       "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
       "dependencies": {
         "p-limit": "^2.2.0"
       },
@@ -9924,7 +9930,6 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
       "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true,
       "engines": {
         "node": ">=6"
       }
@@ -10067,7 +10072,6 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -10167,6 +10171,14 @@
       "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz",
       "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
     },
+    "node_modules/pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
     "node_modules/portfinder": {
       "version": "1.0.32",
       "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz",
@@ -10982,6 +10994,121 @@
         "node": ">=6"
       }
     },
+    "node_modules/qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "dependencies": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "bin": {
+        "qrcode": "bin/qrcode"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/qrcode/node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/qrcode/node_modules/camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/qrcode/node_modules/cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "node_modules/qrcode/node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/qrcode/node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
+    "node_modules/qrcode/node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/qrcode/node_modules/y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "node_modules/qrcode/node_modules/yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "dependencies": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/qrcode/node_modules/yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "dependencies": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/qs": {
       "version": "6.10.3",
       "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz",
@@ -11277,7 +11404,6 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
       "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
-      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -11291,6 +11417,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
     "node_modules/requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
@@ -11671,6 +11802,11 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
     "node_modules/setimmediate": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@@ -12060,7 +12196,6 @@
       "version": "4.2.3",
       "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
       "dependencies": {
         "emoji-regex": "^8.0.0",
         "is-fullwidth-code-point": "^3.0.0",
@@ -12100,7 +12235,6 @@
       "version": "6.0.1",
       "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
       "dependencies": {
         "ansi-regex": "^5.0.1"
       },
@@ -13622,6 +13756,11 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
+    "node_modules/which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
     "node_modules/which-typed-array": {
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
@@ -16476,8 +16615,7 @@
     "ansi-regex": {
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
     },
     "ansi-styles": {
       "version": "3.2.1",
@@ -17778,6 +17916,11 @@
         "ms": "2.1.2"
       }
     },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+    },
     "deep-is": {
       "version": "0.1.4",
       "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
@@ -17986,6 +18129,11 @@
         }
       }
     },
+    "dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
     "dir-glob": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -18151,8 +18299,7 @@
     "emoji-regex": {
       "version": "8.0.0",
       "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
-      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-      "dev": true
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
     },
     "emojis-list": {
       "version": "3.0.0",
@@ -19185,7 +19332,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
       "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "dev": true,
       "requires": {
         "locate-path": "^5.0.0",
         "path-exists": "^4.0.0"
@@ -19363,8 +19509,7 @@
     "get-caller-file": {
       "version": "2.0.5",
       "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
-      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-      "dev": true
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
     },
     "get-intrinsic": {
       "version": "1.1.2",
@@ -19984,8 +20129,7 @@
     "is-fullwidth-code-point": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
     },
     "is-generator-function": {
       "version": "1.0.10",
@@ -20389,7 +20533,6 @@
       "version": "5.0.0",
       "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
       "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "dev": true,
       "requires": {
         "p-locate": "^4.1.0"
       }
@@ -21286,7 +21429,6 @@
       "version": "2.3.0",
       "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
       "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "dev": true,
       "requires": {
         "p-try": "^2.0.0"
       }
@@ -21295,7 +21437,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
       "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "dev": true,
       "requires": {
         "p-limit": "^2.2.0"
       }
@@ -21313,8 +21454,7 @@
     "p-try": {
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "dev": true
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
     },
     "pac-proxy-agent": {
       "version": "5.0.0",
@@ -21437,8 +21577,7 @@
     "path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "dev": true
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
     },
     "path-is-absolute": {
       "version": "1.0.1",
@@ -21514,6 +21653,11 @@
       "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz",
       "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
     },
+    "pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+    },
     "portfinder": {
       "version": "1.0.32",
       "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz",
@@ -22080,6 +22224,96 @@
       "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
       "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
     },
+    "qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+        },
+        "cliui": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+          "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+          "requires": {
+            "string-width": "^4.2.0",
+            "strip-ansi": "^6.0.0",
+            "wrap-ansi": "^6.2.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "wrap-ansi": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+          "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "y18n": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+          "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+        },
+        "yargs": {
+          "version": "15.4.1",
+          "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+          "requires": {
+            "cliui": "^6.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^4.1.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^4.2.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^18.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "18.1.3",
+          "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
     "qs": {
       "version": "6.10.3",
       "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz",
@@ -22299,8 +22533,7 @@
     "require-directory": {
       "version": "2.1.1",
       "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
-      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
-      "dev": true
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
     },
     "require-from-string": {
       "version": "2.0.2",
@@ -22308,6 +22541,11 @@
       "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
       "dev": true
     },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
     "requires-port": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
@@ -22593,6 +22831,11 @@
         "send": "0.18.0"
       }
     },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
     "setimmediate": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@@ -22908,7 +23151,6 @@
       "version": "4.2.3",
       "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
       "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-      "dev": true,
       "requires": {
         "emoji-regex": "^8.0.0",
         "is-fullwidth-code-point": "^3.0.0",
@@ -22939,7 +23181,6 @@
       "version": "6.0.1",
       "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
       "requires": {
         "ansi-regex": "^5.0.1"
       }
@@ -24083,6 +24324,11 @@
         "is-symbol": "^1.0.3"
       }
     },
+    "which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
     "which-typed-array": {
       "version": "1.1.8",
       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",

+ 1 - 0
package.json

@@ -25,6 +25,7 @@
     "lodash": "^4.17.21",
     "node-polyfill-webpack-plugin": "^2.0.1",
     "postcss-plugin-px2rem": "0.8.1",
+    "qrcode": "^1.5.4",
     "stream-browserify": "^3.0.0",
     "util": "^0.12.4",
     "vue": "^2.6.14",

+ 0 - 8
src/api/admin/adminApi.js

@@ -1,8 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/'
-
-// 登录
-export const adminApiLogin = (data) => request(url + 'login', 'post', data, true)
-// 退出登录
-export const adminApiLogout = (data) => request(url + 'logout', 'post', data, true)

+ 0 - 10
src/api/admin/banner.js

@@ -1,10 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/banner/'
-
-// 轮播列表
-export const bannerList = (data) => request(url + 'list', 'post', data, true)
-// 轮播删除
-export const bannerDestroys = (data) => request(url + 'destroys', 'post', data, true)
-// 轮播新增&编辑
-export const bannerSave = (data) => request(url + 'save', 'post', data, true)

+ 0 - 6
src/api/admin/common.js

@@ -1,6 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/common/'
-
-//获取阿里sts
-export const GetSts = (data) => request(url + 'sts', 'post', data, true)

+ 0 - 12
src/api/admin/config.js

@@ -1,12 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/config/'
-
-//获取基本信息
-export const getInfo = (data) => request(url + 'info', 'get', data, true)
-// 提交基本信息
-export const postInfo = (data) => request(url + 'info', 'post', data, true)
-
-// 留言短信通知手机号(get获取post提交)
-export const getSmsPhone = (data) => request(url + 'set_sms', 'get', data, true)
-export const postSmsPhone = (data) => request(url + 'set_sms', 'post', data, true)

+ 0 - 12
src/api/admin/grant.js

@@ -1,12 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/'
-
-// 活动列表
-export const grantList = (data) => request(url + 'grant/list', 'post', data, true)
-// 活动详情
-export const grantInfo = (data) => request(url + 'grant/info', 'post', data, true)
-// 添加活动
-export const grantSave = (data) => request(url + 'grant/save', 'post', data, true)
-// 删除活动
-export const grantDestroys = (data) => request(url + 'grant/destroys', 'post', data, true)

+ 0 - 10
src/api/admin/message.js

@@ -1,10 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/message/'
-
-// 留言列表
-export const messageList = (data) => request(url + 'list', 'post', data, true)
-// 留言删除
-export const messageDestroys = (data) => request(url + 'destroys', 'post', data, true)
-// 留言详情
-export const messageInfo = (data) => request(url + 'info', 'post', data, true)

+ 0 - 12
src/api/admin/news.js

@@ -1,12 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/news/'
-
-// 列表
-export const newsList = (data) => request(url + 'list', 'post', data, true)
-// 删除
-export const newsDestroys = (data) => request(url + 'destroys', 'post', data, true)
-// 详情
-export const newsInfo = (data) => request(url + 'info', 'post', data, true)
-// 新增 编辑
-export const newsSave = (data) => request(url + 'save', 'post', data, true)

+ 0 - 12
src/api/admin/rural-notice.js

@@ -1,12 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/'
-
-// 公告列表
-export const noticeList = (data) => request(url + 'notice/list', 'post', data, true)
-// 公告保存
-export const noticeSave = (data) => request(url + 'notice/save', 'post', data, true)
-// 公告信息
-export const noticeInfo = (data) => request(url + 'notice/info', 'post', data, true)
-// 公告删除
-export const noticeDestroys = (data) => request(url + 'notice/destroys', 'post', data, true)

+ 0 - 7
src/api/admin/txMap.js

@@ -1,7 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/txMap/'
-
-export const txRim = (data) => request(url + 'ws/geocoder/v1/', 'get', data)
-
-export const txSuggestion = (data) => request(url + 'ws/place/v1/suggestion', 'get', data)

+ 0 - 14
src/api/admin/user.js

@@ -1,14 +0,0 @@
-import request from '@/utils/request'
-
-const url = '/adminApi/user/'
-
-// 管理员列表
-export const userList = (data) => request(url + 'list', 'post', data, true)
-// 管理员状态更新
-export const userSet_status = (data) => request(url + 'set_status', 'post', data, true)
-// 管理员重置密码
-export const userReset = (data) => request(url + 'reset', 'post', data, true)
-// 管理员删除
-export const userDestroys = (data) => request(url + 'destroys', 'post', data, true)
-// 管理员新增&编辑
-export const userSave = (data) => request(url + 'save', 'post', data, true)

+ 0 - 13
src/api/api/index.js

@@ -1,13 +0,0 @@
-import request from '@/utils/request'
-
-
-//获取公司信息
-export const getCompanyInfo = (data) => request('api/index/website', 'post', data)
-//轮播图
-export const getSwiperList = (data) => request('api/index/banner', 'post', data)
-//提交留言
-export const submitMessage = (data) => request('api/message/submit', 'post', data)
-//获取新闻列表
-export const getNewsList = (data) => request('api/news/list', 'post', data)
-//获取新闻详情
-export const getNewsDetail = (data) => request('api/news/info', 'post', data)

+ 0 - 7
src/api/api/member.js

@@ -1,7 +0,0 @@
-import request from '@/utils/request'
-
-
-//获取公司信息
-export const register = (data) => request('api/member/register', 'post', data)
-export const login = (data) => request('api/member/login', 'post', data)
-export const retrievePass = (data) => request('api/member/retrieve', 'post', data)

+ 1 - 1
src/api/api/common.js → src/api/common.js

@@ -1,5 +1,5 @@
 import request from '@/utils/request'
 
 
-//获取公司信息
+//邮箱验证码发送
 export const sendEmail = (data) => request('api/common/send_email', 'post', data)

+ 8 - 0
src/api/goods.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+let url = 'api/goods/'
+
+// 获取商品分类
+export const getClass = (data) => request(url + 'class', 'post', data)
+// 获取商品
+export const getList = (data) => request(url + 'list', 'post', data)

+ 15 - 0
src/api/member.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+
+//注册
+export const register = (data) => request('api/member/register', 'post', data)
+// 登录
+export const login = (data) => request('api/member/login', 'post', data)
+// 忘记密码
+export const retrievePass = (data) => request('api/member/retrieve', 'post', data)
+// 修改支付密码
+export const payPass = (data) => request('api/member/pay_pass', 'post', data)
+// 修改登录密码
+export const setPass = (data) => request('api/member/set-pass', 'post', data)
+// 获取用户基本信息
+export const userInfo = (data) => request('api/member/info', 'post', data)

+ 10 - 0
src/api/money.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+let url = 'api/money/'
+
+// 获取充值记录
+export const getchargelist = (data) => request(url + 'charge-list', 'post', data)
+// 获取资金流水类型
+export const getwatertype = (data) => request(url + 'water-type', 'post', data)
+// 获取资金流水
+export const getwaterlist = (data) => request(url + 'water-list', 'post', data)

+ 14 - 0
src/api/news.js

@@ -0,0 +1,14 @@
+import request from '@/utils/request'
+
+let url = 'api/news/'
+
+// 获取公告列表
+export const getList = (data) => request(url + 'notices', 'post', data)
+// 获取公告详情
+export const getInfo = (data) => request(url + 'notice', 'post', data)
+// 获取消息列表
+export const getListMsg = (data) => request(url + 'list-msg', 'post', data)
+// add-msg
+export const getAddMsg = (data) => request(url + 'add-msg', 'post', data)
+// 获取关于我们
+export const getAboutUs = (data) => request(url + 'about_us', 'post', data)

+ 8 - 0
src/api/order.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+let url = 'api/order/'
+
+// 创建订单
+export const ordercreat = (data) => request(url + 'creat', 'post', data)
+// 订单列表
+export const orderlist = (data) => request(url + 'list', 'post', data)

+ 12 - 0
src/api/withdraw.js

@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+
+let url = 'api/withdraw/'
+
+// 获取提现配置
+export const getconfig = (data) => request(url + 'config', 'post', data)
+// 申请提现
+export const withdrawWithdraw = (data) => request(url + 'withdraw', 'post', data)
+// 获取提现记录列表
+export const getwithdrawList = (data) => request(url + 'list', 'post', data)
+// 充值配置
+export const getrecharge = (data) => request(url + 'recharge', 'post', data)

+ 8 - 1
src/assets/css/common.css

@@ -41,7 +41,7 @@
 	text-align: right;
 }
 .fc-f{
-	color: #fff;
+	color: #fff !important;
 }
 .fc-12{
 	color: #121212 !important;
@@ -163,6 +163,9 @@
 .mr-10{
 	margin-right: 10px;
 }
+.mr-15{
+	margin-right: 15px;
+}
 .mt-100{
 	margin-top: 100px;
 }
@@ -276,4 +279,8 @@
 	word-wrap: break-word; 
 	word-break: normal;
 
+}
+
+.ml-auto{
+	margin-left: auto;
 }

BIN
src/assets/img/me/me.png


BIN
src/assets/img/me/msg.png


+ 6 - 7
src/components/Forestage/Navigation.vue

@@ -10,10 +10,10 @@
       <div class="align-items-center">
         <div @click="navClick(1)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 1}">{{$t('Home')}}</div>
         <div @click="navClick(2)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 2}">{{$t('Tourism')}}</div>
-        <div @click="navClick(3)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 3}">团队</div>
-        <div @click="navClick(4)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 4}">充值</div>
-        <div @click="navClick(5)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 5}">提款</div>
-        <div @click="navClick(6)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 6}">我的账户</div>
+        <div @click="navClick(3)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 3}">{{$t('Team')}}</div>
+        <div @click="navClick(4)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 4}">{{$t('Recharge')}}</div>
+        <div @click="navClick(5)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 5}">{{$t('Draw Money')}}</div>
+        <div @click="navClick(6)" class="fs-16 mr-38 fc-f hand-cursor" :class="{active:navActive === 6}">{{$t('My Account')}}</div>
 
         <div class="align-items-center mr-38 lang-pop-f hand-cursor" v-click-outside="clickOutside">
           <div class="fs-16 fc-f " @click="open()">{{langText}}</div>
@@ -26,7 +26,7 @@
           </div>
         </div>
 
-        <div v-if="userToken" class="out-buttom fs-16 fw-500 hand-cursor" @click="outLogin()">登出</div>
+        <div v-if="userToken" class="out-buttom fs-16 fw-500 hand-cursor" @click="outLogin()">{{$t('Log out')}}</div>
       </div>
     </div>
   </transition>
@@ -123,8 +123,7 @@ export default {
     },
 	outLogin(){
 	  this.$router.push("/login");
-	  localStorage.clear();
-	  
+	  localStorage.removeItem('userToken');
 	},
   }
 }

+ 1 - 1
src/components/Forestage/PageFoot.vue

@@ -29,7 +29,7 @@ export default {
       }
     })
 
-    await this.$store.dispatch('user/getCompanyInfo')
+    // await this.$store.dispatch('user/getCompanyInfo')
   },
   methods: {
 

+ 1 - 1
src/components/Forestage/message.vue

@@ -52,7 +52,7 @@
 
 <script>
 import mixinsHomeMsg from '@/mixins/forestage/homeMsg.js'
-import { submitMessage } from '@/api/api/index'
+// import { submitMessage } from '@/api/api/index'
 export default {
   components: {},
   mixins: [mixinsHomeMsg],

+ 22 - 0
src/locales/en.json

@@ -1,3 +1,25 @@
 {	
+	"Home":"Home",
+	"Tourism":"Tourism",
+	"Team":"Team",
+	"Recharge":"Recharge",
+	"Draw Money":"Draw Money",
+	"My Account":"My Account",
+	"Log out":"Log out",
 	
+	"confirm":"confirm",
+	
+	"LoginIndex":{
+		  "userLogin":"Account login",
+		  "inputId":"Enter email account or ID",
+		  "inputPassword":"Input password",
+		  "noUser":"Don't have an account yet?",
+		  "register":"Free registration",
+		  "forgetPassword":"Forgot password",
+		  "login":"Login",
+		  "syyxhm":"Enter email number",
+		  "syyxyzm":"Enter email verification code",
+		  "sdxmm":"Set a new password",
+		  "zcsrxmm":"Enter the new password again"
+	}
 }

+ 170 - 2
src/locales/zh-CN.json

@@ -1,6 +1,21 @@
 { 
-  "Home":"首",
+  "Home":"首",
   "Tourism":"旅游",
+  "Team":"團隊",
+  "Recharge":"充值",
+  "Draw Money":"提款",
+  "My Account":"我的帳戶",
+  "Log out":"登出",
+  "qbdz":"錢包地址",
+  "wxts":"溫馨提示",
+  "yddyy":"已到第一頁",
+  "mygdsj":"沒有更多數據",
+  "syy":"上一頁",
+  "xyy":"下一頁",
+  "zwsj":"暫無數據",
+  "confirm":"確認",
+  "getCode":"獲取驗證碼",
+  
   "LoginIndex":{
 	  "userLogin":"帳號登入",
 	  "inputId":"輸入郵箱帳戶或ID",
@@ -8,7 +23,160 @@
 	  "noUser":"還沒有帳號?",
 	  "register":"免費註冊",
 	  "forgetPassword":"忘記密碼",
-	  "login":"登入"
+	  "login":"登入",
+	  "syyxhm":"輸入郵箱號碼",
+	  "syyxyzm":"輸入郵箱驗證碼",
+	  "sdxmm":"設定新密碼",
+	  "zcsrxmm":"再次輸入新密碼",
+	  "yhzc":"用戶註冊",
+	  "dlmm":"登入密碼",
+	  "sryqm":"輸入邀請碼",
+	  "yyzh":"已有帳號",
+	  "qdl":"去登入",
+	  "zc":"注册"
+  },
+  
+  "home":{
+	  "text1":"全球商戶中心互聯網平臺",
+	  "text2":"預訂門票和瀏覽全球熱門旅行景點",
+	  "text3":"我們提供的服務",
+	  "text4":"我們提供的這個平臺讓全球景點商家和個人用戶直接合作,景點商家將在這裡展示和推廣來自全球不同國家熱門和受歡迎的景點。 個人用戶可以參與廣告推廣來賺取收益,通過在此平臺上線上訂票的管道來分享和推廣全球景點,新增景點在全球範圍內的知名度,用戶們可以從每次訂票中得到收益。 個人用戶還可以通過組建團隊來啟動互聯網創業並實現團隊盈利。 我們與全球加密貨幣公司合作,為所有用戶提供了新的、簡單和安全的支付和提款管道!",
+	  "text5":"互聯網合作模式",
+	  "text6":"我們為商家和用戶之間的合作提供了一個便捷有效的平臺,讓來自全世界的人們實現互聯網時代領先的合作。",
+	  "text7":"線上訂票收益",
+	  "text8":"用戶可以每天通過實时訂票景點門票的管道為商家做推廣,根據每個不同景點門票得到不同的個人收益,該收益可以被提款。",
+	  "text9":"開啟生意團隊",
+	  "text10":"通過邀請碼邀請新用戶加入GMC開始生意團隊,實現得到團隊自動化收益。",
+	  "text11":"加密貨幣支付方式",
+	  "text12":"解决全球用户的付款和提款困难问题,我们提供了新的、快速的、便捷的、安全的存款和提款方式。",
+	  "text13":"全球非常受歡迎的熱門旅行國家",
+	  "text14":"美國",
+	  "text15":"中國",
+	  "text16":"日本",
+	  "text17":"泰國",
+	  "text18":"歐洲",
+	  "text19":"關於我們的工作模式",
+	  "text20":"全球商戶中心擁有非常重要的橋樑作用,為人們提供了一個有效而便捷的創業和推廣業務平臺,我們實現了讓互聯網經濟快速增長。",
+	  "text21":"我們的平臺由全球許多商家共同監督經營,總投資資產超過100億美元,其中包含企業保證金和用戶可以得到的收益資金,資金由全球商家提供並用於景點廣告推廣。 我們做到了互聯網經濟體系的雙贏局面,促進旅遊行業的發展和國家旅行經濟體系的發展,互聯網模式將越來越好,為人們帶來便捷和有效的工作方式!",
+	  "text22":"我們將全球受歡迎的景點添加到GMC旅行計畫中,選擇你最喜歡的景點去支持他們。 用戶每天可以訂票5次,根據訂票不同景點門票會獲得不同收益,這取決於不同商家投放廣告資金的規則。 用戶訂票成功後,商家會立即返還票價金額和百分比收益。",
+	  "text23":"互聯網團隊生意模式",
+	  "text24":"通過你的邀請碼加入GMC的用戶將自動成為你的團隊成員,你最多可以得到5個層級的團隊成員,當你的團隊成員得到收益時,你能從他們的收益中再次得到一部分額外的團隊收益。",
+	  "text25":"通过你的邀请码注册的用户将成为你的A级团队成员,当你的A级团队成员得到收益时,你将获得额外团队收益,它会是你的A级团队成员收益的50%。",
+	  "text26":"通過A團隊成員的邀請碼注册的用戶將成為你的B級團隊成員,當他們得到收益時,你將獲得額外團隊收益,它會是你的B級團隊成員收益的40%。",
+	  "text27":"通過B團隊成員的邀請碼注册的用戶將成為你的C級團隊成員,當他們得到收益時,你將獲得額外團隊收益,它會是你的C級團隊成員收益的30%。",
+	  "text28":"通過C團隊成員的邀請碼注册的用戶將成為你的D級團隊成員,當他們得到收益時,你將獲得額外團隊收益,它會是你的D級團隊成員收益的20%。",
+	  "text29":"通過D團隊成員的邀請碼注册的用戶將成為你的E級團隊成員,當他們得到收益時,你將獲得額外團隊收益,它會是你的E級團隊成員收益的10%。"
+  },
+  
+  "home2":{
+	  "text1":"旅行計畫"
+  },
+  "home3":{
+  	  "text1":"開啟互聯網模式生意團隊,實現居家創業和自動化收益",
+	  "text2":"邀請新用戶加入你的團隊",
+	  "text3":"邀請碼",
+	  "text4":"複製",
+	  "text5":"如何工作",
+	  "text6":"我們的團隊商業模式支持五個級別的盈利模式。 您可以通過邀請新用戶使用您的邀請碼註冊帳號來加入您的團隊,即可獲得您的小團隊。 一旦您組建了一個小團隊,此模式將自動為您壯大您的團隊,因為您的團隊成員將邀請更多新用戶組建他們的團隊。 如果我們將1-5級用戶命名為ABCDE,那麼你邀請的團隊成員就是A,BCDE就會是他們幫你組建的大團隊成員,因為此時A也可以成為團隊負責人,他們就會有他們的團隊成員是ABCED和1-5級用戶。 當ABCDE團隊成員在平臺上盈利時,您可以從團隊中獲得額外50%-10%的額外巨額被動收入。 任何人都可以組建自己的團隊,這就是互聯網自動化團隊效應。",
+	  "text7":"您的A級團隊成員",
+	  "text8":"通過您的邀請碼注册的用戶將成為您的A級團隊成員,你將獲得A級團隊成員每日訂票收益的50%作為額外的團隊被動收入,這是你的第一級團隊收益。 例如,假設用戶A參與日常預訂並獲得1000 USDT的收益。 那麼您將自動獲得額外的團隊利潤500 USDT。",
+	  "text9":"您的B級團隊成員",
+	  "text10":"通過您團隊的A級成員邀請碼注册的用戶將成為您的B級團隊成員。 當他們通過訂票獲得收益時,您將獲得額外的團隊收益。 第二級團隊收益為B團隊成員每天訂票收益的40%。 例如,用戶B參與日常預訂,獲得1000 USDT的收益。 那麼您將自動獲得額外的團隊利潤400 USDT。",
+	  "text11":"您的C級團隊成員",
+	  "text12":"通過您團隊的B級成員邀請碼注册的用戶將成為您的C級團隊成員。 當他們通過訂票獲得收益時,您將獲得額外的團隊收益。 第三級團隊收益為B團隊成員每天訂票收益的30%。 例如,用戶C參與日常預訂,獲得1000 USDT的收益。 那麼您將自動獲得額外的團隊利潤300 USDT。",
+	  "text13":"您的D級團隊成員",
+	  "text14":"通過您團隊的C級成員邀請碼注册的用戶將成為您的D級團隊成員。 當他們通過訂票獲得收益時,您將獲得額外的團隊收益。 第四級團隊收益為B團隊成員每天訂票收益的20%。 例如,用戶D參與日常預訂,獲得1000 USDT的收益。 那麼您將自動獲得額外的團隊利潤200 USDT。",
+	  "text15":"您的E級團隊成員",
+	  "text16":"通過您團隊的D級成員邀請碼注册的用戶將成為您的E級團隊成員。 當他們通過訂票獲得收益時,您將獲得額外的團隊收益。 第五級團隊收益為B團隊成員每天訂票收益的10%。 例如,用戶E參與日常預訂,獲得1000 USDT的收益。 那麼您將自動獲得額外的團隊利潤100 USDT。"
+  },
+  
+  "home4":{
+  	  "text1":"如何存入USDT",
+  	  "text2":"购买USDT",
+  	  "text3":"用戶可以使用法定貨幣在加密貨幣平臺上購買Tether(USDT)",
+	  "text4":"確認錢包地址",
+	  "text5":"從您的GMC平臺帳戶中獲取你的個人錢包地址",
+	  "text6":"發送到GMC帳戶資產",
+	  "text7":"從您的加密貨幣平臺中發送USDT至您的GMC帳戶資產",
+  	  "text8":"USDT收到了",
+	  "text9":"系統通過網絡確認後,您的GMC帳戶成功收到了USDT",
+	  "text10":"請確認你將使用TRC20或ERC20網絡進行充值,若充值資訊不一致將造成充值資金損失且無法找回。"
+  },
+  "home5":{
+  	  "text1":"如何提款USDT",
+	  "text2":"確認您的提款錢包地址和密碼",
+	  "text3":"請選擇與該錢包地址符合的網絡和確認提款密碼",
+	  "text4":"提款稽核中",
+	  "text5":"等待區塊網絡稽核和確認你的提款",
+	  "text6":"提款成功",
+	  "text7":"通過區塊網絡確認後,您的資產將提款成功",
+	  "text8":"提款錢包地址",
+	  "text9":"請輸入或粘貼提款錢包地址",
+	  "text10":"所屬網絡",
+	  "text11":"提款數量",
+	  "text12":"最低提款數量",
+	  "text13":"手續費",
+	  "text14":"到賬數量",
+	  "text15":"提款密碼",
+	  "text16":"請輸入提款密碼",
+	  "text17":"設置密碼",
+	  "text18":"提交",
+	  "text19":"請確認接收USDT的錢包地址網絡與提現網絡是否一致,若提款資訊不一致將造成充值資金損失且無法找回。 為保證網絡通道暢通,避免網絡擁堵,平臺提款採用D+1模式,任何提款的資金將於第二天稽核通過和完成提款。"
+  },
+  
+  "home6":{
+	"nav0":"我的帳戶",
+	"nav1":"我的資產",
+	"nav2":"我的訂單",
+	"nav3":"聯繫我們",
+	"nav4":"安全中心",
+	"nav5":"活動公告",
+	"nav6":"關於我們",
+	
+	"index1":{
+		"text1":"我的餘額",
+		"text2":"今日訂票收益",
+		"text3":"今日團隊收益",
+		"text4":"訂票總收益",
+		"text5":"團隊總收益",
+		"text6":"充值記錄",
+		"text7":"提現記錄",
+		"text8":"地址",
+		"text9":"數量",
+		"text10":"操作時間",
+		"text11":"狀態"
+	},
+	"index2":{
+		"text1":"我的訂單",
+		"text2":"訂單名稱",
+		"text3":"訂單單號",
+		"text4":"訂單金額",
+		"text5":"訂單收益",
+		"text6":"創建時間"
+	},
+	"index3":{
+		"text1":"發送"
+	},
+	
+	"index5":{
+		"text1":"活動公告",
+		"text2":"查看",
+		"text3":"公告詳情"
+	},
+	
+	"index4":{
+		"text1":"登入密碼",
+		"text2":"提款密碼",
+		"text3":"修改密碼",
+		"text4":"確定",
+		"text5":"輸入原密碼",
+		"text6":"設定新密碼",
+		"text7":"確認新密碼",
+		"text8":"郵箱帳號",
+		"text9":"郵箱驗證碼",
+		"text10":"設定提款密碼",
+		"text11":"再次輸入提款密碼"
+	}
   }
 	
 }

+ 6 - 6
src/mixins/forestage/home.js

@@ -1,4 +1,4 @@
-import { getSwiperList } from '@/api/api/index'
+// import { getSwiperList } from '@/api/api/index'
 export default {
   data() {
     return {
@@ -14,10 +14,10 @@ export default {
     })
   },
   methods: {
-    getSwiperList() {
-      getSwiperList().then(res => {
-        this.swiperData = res.data
-      })
-    }
+    // getSwiperList() {
+    //   getSwiperList().then(res => {
+    //     this.swiperData = res.data
+    //   })
+    // }
   },
 }

+ 1 - 1
src/mixins/forestage/homeMsg.js

@@ -1,4 +1,4 @@
-import { submitMessage } from '@/api/api/index'
+// import { submitMessage } from '@/api/api/index'
 export default {
   data() {
     return {

+ 1 - 1
src/mixins/forestage/homeNews.js

@@ -1,4 +1,4 @@
-import { getNewsList } from '@/api/api/index.js'
+// import { getNewsList } from '@/api/api/index.js'
 export default {
   data() {
     return {

+ 6 - 6
src/store/modules/user.js

@@ -1,4 +1,4 @@
-import { getCompanyInfo } from '@/api/api/index.js'
+// import { getCompanyInfo } from '@/api/api/index.js'
 import Cookies from 'js-cookie'
 const getDefaultState = () => {
   return {
@@ -20,11 +20,11 @@ const mutations = {
   },
 }
 const actions = {
-  getCompanyInfo({ commit }) {
-    getCompanyInfo().then(res => {
-      commit('setCompanyInfo', res.data)
-    })
-  }
+  // getCompanyInfo({ commit }) {
+  //   getCompanyInfo().then(res => {
+  //     commit('setCompanyInfo', res.data)
+  //   })
+  // }
 }
 export default {
   namespaced: true,

+ 1 - 1
src/utils/request.js

@@ -13,7 +13,7 @@ service.interceptors.request.use(
     //   startLoading()
     // }
     if (localStorage.getItem('userToken')) {
-      config.headers.ApiToken = localStorage.getItem('userToken')
+      config.headers.Authorization = localStorage.getItem('userToken')
     }
     return config
   },

+ 1 - 0
src/utils/routerEach.js

@@ -7,6 +7,7 @@ router.beforeEach((to, from, next) => {
   let userToken = window.localStorage.getItem('userToken')
   if (userToken) {
     let active = routeList.findIndex((item) => item === to.path)
+	
     if (active > -1) {
       active++
     }

+ 202 - 126
src/views/Forestage/Draw/index.vue

@@ -1,137 +1,213 @@
 <template>
-  <!-- 提款 -->
-  <div class="recharge-index">
-    <div class="work-index-bg box-sizing-border-box">
-      <div class="fs-34 fc-f mb-32">如何存入USDT</div>
+	<!-- 提款 -->
+	<div class="recharge-index">
+		<div class="work-index-bg box-sizing-border-box">
+			<div class="fs-34 fc-f mb-32">{{$t('home5.text1')}}</div>
 
-      <div class="align-items-center justify-content-space-between">
-        <div class="">
-          <div class="align-items-center mb-16">
-            <div class="num-box">1</div>
-            <div class="num-xian"></div>
-          </div>
-          <div class="fs-18 fc-f w-210 mb-5">购买USDT</div>
-          <div class="fs-14 fc-f w-210 lh-20">用户可以使用法定货币在加密货币平台上购买Tether(USDT)</div>
-        </div>
-        <div class="">
-          <div class="align-items-center mb-16">
-            <div class="num-box">2</div>
-            <div class="num-xian"></div>
-          </div>
-          <div class="fs-18 fc-f w-210 mb-5">确认钱包地址</div>
-          <div class="fs-14 fc-f w-210 lh-20">从您的GMC平台账户中获取你的个人钱包地址</div>
-        </div>
-        <div class="">
-          <div class="align-items-center mb-16">
-            <div class="num-box">3</div>
-          </div>
-          <div class="fs-18 fc-f w-210 mb-5">发送到GMC账户资产</div>
-          <div class="fs-14 fc-f w-210 lh-20">从您的加密货币平台中发送USDT至您的GMC账户资产</div>
-        </div>
-      </div>
-    </div>
+			<div class=" justify-content-space-between">
+				<div class="">
+					<div class="align-items-center mb-16">
+						<div class="num-box">1</div>
+						<div class="num-xian"></div>
+					</div>
+					<div class="fs-18 fc-f w-210 mb-5">{{$t('home5.text2')}}</div>
+					<div class="fs-14 fc-f w-210 lh-20">{{$t('home5.text3')}}</div>
+				</div>
+				<div class="">
+					<div class="align-items-center mb-16">
+						<div class="num-box">2</div>
+						<div class="num-xian"></div>
+					</div>
+					<div class="fs-18 fc-f w-210 mb-5">{{$t('home5.text4')}}</div>
+					<div class="fs-14 fc-f w-210 lh-20">{{$t('home5.text5')}}</div>
+				</div>
+				<div class="">
+					<div class="align-items-center mb-16">
+						<div class="num-box">3</div>
+					</div>
+					<div class="fs-18 fc-f w-210 mb-5">{{$t('home5.text6')}}</div>
+					<div class="fs-14 fc-f w-210 lh-20">{{$t('home5.text7')}}</div>
+				</div>
+			</div>
+		</div>
 
-    <div class="box-card box-sizing-border-box">
-      <div class="fs-36 fw-b mb-40 text-align-center">提款</div>
-      <div class=" mb-40">
-          <div class="card-1 mb-18">
-            <div class="fs-16 fw-400 mb-10">提款钱包地址</div>
-            <input class="card-input fs-12 " type="text" placeholder="请输入或粘贴提款钱包地址">
-          </div>
-          <div class="card-1 mb-18">
-            <div class="fs-16 fw-400 mb-10">所属网络</div>
-            <input class="card-input fs-12 " type="text" placeholder="请输入所属网络">
-          </div>
-          <div class="card-1 mb-18">
-            <div class="fs-16 fw-400 mb-10">提款数量</div>
-            <input class="card-input fs-12 mb-10" type="text" placeholder="请输入提款数量">
-            <div class="justify-content-space-between">
-              <div class="fs-12 fc-12">手续费:1 USDT</div>
-              <div class="fs-12 fc-12">到账数量:0</div>
-            </div>
-          </div>
-          <div class="card-1 mb-18 ">
-            <div class="fs-16 fw-400 mb-10">提款密码</div>
-            <input class="card-input only-box fs-12 " type="text" placeholder="请输入提款密码">
-            <div class="fs-12 fc-c7ab7b set-box">设置密码</div>
-          </div>
-      </div>
-      <div class="align-items-center mb-10">
-          <img class="error-icon mr-5" src="@/assets/img/error.png" alt="">
-          <div class="fs-14 fc-ED2121FF">温馨提示</div>
-      </div>
-      <div class="fs-14 fw-400 lh-20">
-        请确认接收USDT的钱包地址网络与提现网络是否一致,若提款信息不一致将造成充值资金损失且无法找回。为保证网络通道畅通,避免网络拥堵,平台提款采用D+1模式,任何提款的资金将于第二天审核通过和完成提款。
-      </div>
-    </div>
-  </div>
+		<div class="box-card box-sizing-border-box">
+			<div class="fs-36 fw-b mb-40 text-align-center">{{$t('Draw Money')}}</div>
+			<div class=" mb-40">
+				<div class="card-1 mb-18">
+					<div class="fs-16 fw-400 mb-10">{{$t('home5.text8')}}</div>
+					<input v-model="fromData.toAddress" class="card-input fs-12 " type="text" :placeholder="$t('home5.text9')">
+				</div>
+				<div class="card-1 mb-18">
+					<div class="fs-16 fw-400 mb-10">{{$t('home5.text10')}}</div>
+					<select class="card-input fs-12" placeholder="请选择所属网络" name="" v-model="fromData.iconId">
+						<option v-for="(item,i) in list" :key="i" :value="item.iconId">{{item.name}}</option>
+					</select>
+				</div>
+				<div class="card-1 mb-18">
+					<div class="fs-16 fw-400 mb-10">{{$t('home5.text11')}}</div>
+					<input v-model="fromData.money" class="card-input fs-12 mb-10" type="number" :placeholder="$t('home5.text12')+(info.mix_money||'1')">
+					<div class="justify-content-space-between">
+						<div class="fs-12 fc-12">{{$t('home5.text13')}}:{{info.proportion||'0'}} USDT</div>
+						<div class="fs-12 fc-12">{{$t('home5.text14')}}:{{fromData.money?((fromData.money*1)-(info.proportion*1)).toFixed(6):0}}</div>
+					</div>
+				</div>
+				<div class="card-1 mb-18 ">
+					<div class="fs-16 fw-400 mb-10">{{$t('home5.text15')}}</div>
+					<input v-model="fromData.pay_pass" class="card-input only-box fs-12 " type="password" :placeholder="$t('home5.text16')">
+					<div class="fs-12 fc-c7ab7b set-box hand-cursor" @click="setPass()">{{$t('home5.text17')}}</div>
+				</div>
+				
+				<div class="card-1">
+					<div class="hand-cursor b-buttom" @click="saveInfo()">{{$t('home5.text18')}}</div>
+				</div>
+				
+			</div>
+			<div class="align-items-center mb-10">
+				<img class="error-icon mr-5" src="@/assets/img/error.png" alt="">
+				<div class="fs-14 fc-ED2121FF">{{$t('wxts')}}</div>
+			</div>
+			<div class="fs-14 fw-400 lh-20">
+				{{$t('home5.text19')}}
+			</div>
+		</div>
+	</div>
 </template>
 
 <script>
-  export default {
-
-  }
+	
+	import tools from '@/utils/tools';
+	import {
+		getconfig,withdrawWithdraw
+	} from '@/api/withdraw.js'
+	export default {
+		data(){
+			return{
+				isAJAX:false,
+				info:{},
+				list:[
+					{iconId:'1',name:'USDT(ERC20)'},
+					{iconId:'2',name:'USDT(TRC20)'},
+				],
+				fromData:{
+					pay_pass:'',
+					iconId:'1',
+					toAddress:'',
+					money:'',
+				},
+			}
+		},
+		mounted() {
+			this.getconfig();
+		},
+		methods:{
+			getconfig(){
+				getconfig().then((res)=>{
+					if(res.code == 1){
+						this.info = res.data
+					}
+				})
+			},
+			setPass(){
+				this.$router.push({path:'/me',query:{index:4}})
+			},
+			saveInfo(){
+				if(this.isAJAX){
+					return
+				}
+				this.isAJAX = true;
+				withdrawWithdraw(this.fromData).then((res)=>{
+					if(res.code == 1){
+						tools.success(res.msg)
+						this.isAJAX = false;
+					}else{
+						tools.error(res.msg)
+						this.isAJAX = false;
+					}
+				})
+			}
+		},
+	}
 </script>
 
 <style scoped lang="scss">
-  .recharge-index{
-    padding-top: 70px;
-    min-height: 100vh;
-    .work-index-bg{
-      padding: 70px 220px 0 220px;
-      width: 100vw;
-      height: 358px;
-      background: url('@/assets/img/team/team-r.png') no-repeat;
-      background-size: 100% 100%;
-    }
-    .num-box{
-      width: 48px;
-      height: 48px;
-      box-sizing: border-box;
-      border: 1px solid #fff;
-      font-size: 20px;
-      font-weight: 900;
-      color: #fff;
-      text-align: center;
-      line-height: 48px;
-    }
-    .num-xian{
-      width: 315px;
-      border: 1px solid #fff;
-      margin: 0 24px;
-    }
+	.b-buttom{
+		width: 424px;
+		height: 48px;
+		line-height: 48px;
+		text-align: center;
+		font-size: 16px;
+		font-weight: 500;
+		opacity: 1;
+		border-radius: 4px;
+		background: #C7AB7B;
+		
+	}
+	.recharge-index {
+		padding-top: 70px;
+		min-height: 100vh;
+
+		.work-index-bg {
+			padding: 70px 220px 0 220px;
+			width: 100vw;
+			height: 358px;
+			background: url('@/assets/img/team/team-r.png') no-repeat;
+			background-size: 100% 100%;
+		}
+
+		.num-box {
+			width: 48px;
+			height: 48px;
+			box-sizing: border-box;
+			border: 1px solid #fff;
+			font-size: 20px;
+			font-weight: 900;
+			color: #fff;
+			text-align: center;
+			line-height: 48px;
+		}
+
+		.num-xian {
+			width: 315px;
+			border: 1px solid #fff;
+			margin: 0 24px;
+		}
+
+		.box-card {
+			padding: 70px 325px;
+
+			.only-box {}
+
+			.card-1 {
+				padding: 0 182px;
+				position: relative;
+
+				.set-box {
+					position: absolute;
+					right: 190px;
+					top: 42px;
+				}
+
+				.only-box {
+					padding-right: 65px !important;
+				}
 
-    .box-card{
-      padding: 70px 325px;
-      .only-box{
+				.card-input {
+					border: none;
+					width: 100%;
+					box-sizing: border-box;
+					padding: 0 16px;
+					height: 40px;
+					opacity: 1;
+					border-radius: 4px;
+					background: #e8e8e8ff;
+				}
+			}
+		}
 
-      }
-      .card-1{
-        padding: 0 182px;
-        position: relative;
-        .set-box{
-          position: absolute;
-          right: 190px;
-          top: 42px;
-        }
-        .only-box{
-          padding-right: 65px !important;
-        }
-        .card-input{
-          border: none;
-          width: 100%;
-          box-sizing: border-box;
-          padding: 0 16px;
-          height: 40px;
-          opacity: 1;
-          border-radius: 4px;
-          background: #e8e8e8ff;
-        }
-      }
-    }
-    .error-icon{
-      width: 15.34px;
-      height: 13.5px;
-    }
-  }
-</style>
+		.error-icon {
+			width: 15.34px;
+			height: 13.5px;
+		}
+	}
+</style>

+ 31 - 31
src/views/Forestage/Home/index.vue

@@ -3,93 +3,93 @@
   <div class="home-index">
     <div class="index-bg-1">
         <div v-if="!userToken" class="info-1 text-align-center box-sizing-border-box pt-100">
-            <div class="fs-34 fc-f fw-500 mb-12">全球商户中心互联网平台</div>
-            <div class="fs-14 fc-f fw-400 mb-40">预订门票和浏览全球热门旅行景点</div>
-            <div class="box-1 text-align-center fs-16 mb-12 hand-cursor" @click="toLogin()">登录</div>
-            <div class="box-2 text-align-center fs-16 hand-cursor" @click="register()">注册</div>
+            <div class="fs-34 fc-f fw-500 mb-12">{{$t('home.text1')}}</div>
+            <div class="fs-14 fc-f fw-400 mb-40">{{$t('home.text2')}}</div>
+            <div class="box-1 text-align-center fs-16 mb-12 hand-cursor" @click="toLogin()">{{$t('LoginIndex.login')}}</div>
+            <div class="box-2 text-align-center fs-16 hand-cursor" @click="register()">{{$t('LoginIndex.zc')}}</div>
         </div>
     </div>
 
     <div class="index-bg-2  box-sizing-border-box pt-60">
-      <div class="fs-30 mb-18 text-align-center">我們提供的服務</div>
+      <div class="fs-30 mb-18 text-align-center">{{$t('home.text3')}}</div>
       <div class="fs-14 mb-60 box-sizing-border-box plr-220 lh-20">
-        我们提供的这个平台让全球景点商家和个人用户直接合作,景点商家将在这里展示和推广来自全球不同国家热门和受欢迎的景点。个人用户可以参与广告推广来赚取收益,通过在此平台上在线订票的方式来分享和推广全球景点,增加景点在全球范围内的知名度,用户们可以从每次订票中得到收益。个人用户还可以通过组建团队来启动互联网创业并实现团队盈利。我们与全球加密货币公司合作,为所有用户提供了新的、简单和安全的支付和提款方式!
+        {{$t('home.text4')}}
       </div>
       <div class="box-sizing-border-box plr-220 justify-content-space-between">
         <div class="home-1">
           <img class="home-1-img" src="@/assets/img/home/home-1-1.png" alt="">
-          <div class="fs-14 mb-5">互联网合作模式</div>
-          <div class="fs-12 lh-17">我们为商家和用户之间的合作提供了一个便捷有效的平台,让来自全世界的人们实现互联网时代领先的合作。</div>
+          <div class="fs-14 mb-5">{{$t('home.text5')}}</div>
+          <div class="fs-12 lh-17">{{$t('home.text6')}}</div>
         </div>
         <div class="home-1">
           <img class="home-1-img" src="@/assets/img/home/home-1-2.png" alt="">
-          <div class="fs-14 mb-5">线上订票收益</div>
-          <div class="fs-12 lh-17">用户可以每天通过实时订票景点门票的方式为商家做推广,根据每个不同景点门票得到不同的个人收益,该收益可以被提款。</div>
+          <div class="fs-14 mb-5">{{$t('home.text7')}}</div>
+          <div class="fs-12 lh-17">{{$t('home.text8')}}</div>
         </div>
         <div class="home-1">
           <img class="home-1-img" src="@/assets/img/home/home-1-3.png" alt="">
-          <div class="fs-14 mb-5">开启生意团队</div>
-          <div class="fs-12 lh-17">通过邀请码邀请新用户加入GMC开始生意团队,实现得到团队自动化收益。</div>
+          <div class="fs-14 mb-5">{{$t('home.text9')}}</div>
+          <div class="fs-12 lh-17">{{$t('home.text10')}}</div>
         </div>
         <div class="home-1">
           <img class="home-1-img" src="@/assets/img/home/home-1-4.png" alt="">
-          <div class="fs-14 mb-5">加密货币支付方式</div>
-          <div class="fs-12 lh-17">解决全球用户的付款和提款困难问题,我们提供了新的、快速的、便捷的、安全的存款和提款方式。</div>
+          <div class="fs-14 mb-5">{{$t('home.text11')}}</div>
+          <div class="fs-12 lh-17">{{$t('home.text12')}}</div>
         </div>
       </div>
     </div>
 
     <div class="index-bg-3 box-sizing-border-box pt-60 ">
-      <div class="fs-30 mb-18 text-align-center mb-60">全球非常受欢迎的热门旅行国家</div>
+      <div class="fs-30 mb-18 text-align-center mb-60">{{$t('home.text13')}}</div>
       <div class="justify-content-space-between plr-220 box-sizing-border-box mb-18">
         <div class="box-sizing-border-box p-15-20 bg-c-f w-490">
           <img class="home-2-img mb-12" src="@/assets/img/home/2-1.png" alt="">
-          <div class="fs-18 text-align-center">美國</div>
+          <div class="fs-18 text-align-center">{{$t('home.text14')}}</div>
         </div>
         <div class="box-sizing-border-box p-15-20 bg-c-f w-490">
           <img class="home-2-img mb-12" src="@/assets/img/home/2-2.png" alt="">
-          <div class="fs-18 text-align-center">中國</div>
+          <div class="fs-18 text-align-center">{{$t('home.text15')}}</div>
         </div>
       </div>
       <div class="justify-content-space-between plr-220 box-sizing-border-box">
         <div class="box-sizing-border-box p-15-20 bg-c-f w-320">
           <img class="home-2-img mb-12" src="@/assets/img/home/2-3.png" alt="">
-          <div class="fs-18 text-align-center">日本</div>
+          <div class="fs-18 text-align-center">{{$t('home.text16')}}</div>
         </div>
         <div class="box-sizing-border-box p-15-20 bg-c-f w-320">
           <img class="home-2-img mb-12" src="@/assets/img/home/2-4.png" alt="">
-          <div class="fs-18 text-align-center">泰國</div>
+          <div class="fs-18 text-align-center">{{$t('home.text17')}}</div>
         </div>
         <div class="box-sizing-border-box p-15-20 bg-c-f w-320">
           <img class="home-2-img mb-12" src="@/assets/img/home/2-5.png" alt="">
-          <div class="fs-18 text-align-center">歐洲</div>
+          <div class="fs-18 text-align-center">{{$t('home.text18')}}</div>
         </div>
       </div>
     </div>
 
     <div class="index-bg-4 box-sizing-border-box pt-60">
-      <div class="fs-30 mb-18 text-align-center mb-12">关于我们的工作模式</div>
-      <div class="fs-14 mb-18 text-align-center mb-12 mb-60">全球商户中心拥有非常重要的桥梁作用,为人们提供了一个有效而便捷的创业和推广业务平台,我们实现了让互联网经济快速增长。</div>
+      <div class="fs-30 mb-18 text-align-center mb-12">{{$t('home.text19')}}</div>
+      <div class="fs-14 mb-18 text-align-center mb-12 mb-60">{{$t('home.text20')}}</div>
 
       <div class="justify-content-space-between box-sizing-border-box plr-220">
         <div class="img-3">
             <img class="img-3 mb-32" src="@/assets/img/home/3-1.png" alt="">
             <div class="fs-16 lh-20">
-              我们的平台由全球许多商家共同监督经营,总投资资产超过100亿美元,其中包含企业保证金和用户可以得到的收益资金,资金由全球商家提供并用于景点广告推广。我们做到了互联网经济体系的双赢局面,促进旅游行业的发展和国家旅行经济体系的发展,互联网模式将越来越好,为人们带来便捷和有效的工作方式!
+             {{$t('home.text21')}}
             </div>
         </div>
         <div class="img-3">
             <img class="img-3 mb-32" src="@/assets/img/home/3-2.png" alt="">
             <div class="fs-16 lh-20">
-              我们将全球受欢迎的景点添加到GMC旅行计划中,选择你最喜欢的景点去支持他们。用户每天可以订票5次,根据订票不同景点门票会获得不同收益,这取决于不同商家投放广告资金的规则。用户订票成功后,商家会立即返还票价金额和百分比收益。
+              {{$t('home.text22')}}
             </div>
         </div>
       </div>
     </div>
 
     <div class="index-bg-5 box-sizing-border-box pt-60">
-      <div class="fs-30 mb-18 text-align-center mb-12">互联网团队生意模式</div>
-      <div class="fs-14 mb-18 text-align-center mb-12 mb-60 plr-314 lh-20">通过你的邀请码加入GMC的用户将自动成为你的团队成员,你最多可以得到5个层级的团队成员,当你的团队成员得到收益时,你能从他们的收益中再次得到一部分额外的团队收益。</div>
+      <div class="fs-30 mb-18 text-align-center mb-12">{{$t('home.text23')}}</div>
+      <div class="fs-14 mb-18 text-align-center mb-12 mb-60 plr-314 lh-20">{{$t('home.text24')}}</div>
 
 
       <div class=" align-items-center box-sizing-border-box plr-220 mb-5">
@@ -120,11 +120,11 @@
       </div>
 
       <div class=" align-items-center box-sizing-border-box plr-220">
-        <div class="text-1">通过你的邀请码注册的用户将成为你的A级团队成员,当你的A级团队成员得到收益时,你将获得额外团队收益,它会是你的A级团队成员收益的50%。</div>
-        <div class="text-1">通过你的邀请码注册的用户将成为你的A级团队成员,当你的A级团队成员得到收益时,你将获得额外团队收益,它会是你的A级团队成员收益的50%。</div>
-        <div class="text-1">通过你的邀请码注册的用户将成为你的A级团队成员,当你的A级团队成员得到收益时,你将获得额外团队收益,它会是你的A级团队成员收益的50%。</div>
-        <div class="text-1">通过你的邀请码注册的用户将成为你的A级团队成员,当你的A级团队成员得到收益时,你将获得额外团队收益,它会是你的A级团队成员收益的50%。</div>
-        <div class="text-1">通过你的邀请码注册的用户将成为你的A级团队成员,当你的A级团队成员得到收益时,你将获得额外团队收益,它会是你的A级团队成员收益的50%。</div>
+        <div class="text-1">{{$t('home.text25')}}</div>
+        <div class="text-1">{{$t('home.text26')}}</div>
+        <div class="text-1">{{$t('home.text27')}}</div>
+        <div class="text-1">{{$t('home.text28')}}</div>
+        <div class="text-1">{{$t('home.text29')}}</div>
       </div>
     </div>
   </div>

+ 18 - 10
src/views/Forestage/Me/index.vue

@@ -4,17 +4,18 @@
 	<div class="info-box justify-content-space-between box-sizing-border-box">
 		<!-- 左边导航 -->
 		<div class="left-box mr-7">
-			<div class="box-1 fs-18 fc-f fw-700">我的账户</div>
-			<div class="box-2 fs-18 hand-cursor " :class="navType==1?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(1)">我的资产</div>
-			<div class="box-2 fs-18 hand-cursor " :class="navType==2?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(2)">我的订单</div>
-			<div class="box-2 fs-18 hand-cursor " :class="navType==3?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(3)">联系我们</div>
-			<div class="box-2 fs-18 hand-cursor " :class="navType==4?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(4)">安全中心</div>
-			<div class="box-2 fs-18 hand-cursor " :class="navType==5?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(5)">活动公告</div>
-			<div class="box-2 fs-18 hand-cursor " :class="navType==6?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(6)">关于我们</div>
+			<div class="box-1 fs-18 fc-f fw-700">{{$t('home6.nav0')}}</div>
+			<div class="box-2 fs-18 hand-cursor " :class="navType==1?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(1)">{{$t('home6.nav1')}}</div>
+			<div class="box-2 fs-18 hand-cursor " :class="navType==2?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(2)">{{$t('home6.nav2')}}</div>
+			<div class="box-2 fs-18 hand-cursor " :class="navType==3?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(3)">{{$t('home6.nav3')}}</div>
+			<div class="box-2 fs-18 hand-cursor " :class="navType==4?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(4)">{{$t('home6.nav4')}}</div>
+			<div class="box-2 fs-18 hand-cursor " :class="navType==5?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(5)">{{$t('home6.nav5')}}</div>
+			<div class="box-2 fs-18 hand-cursor " :class="navType==6?'fc-755C82 bg-c-f fw-700':'fc-f fw-400'" @click="selectType(6)">{{$t('home6.nav6')}}</div>
 		</div>
 		<div class="flex-1">
 			<MyMoney v-if="navType == 1" ref="myMoney"></MyMoney>
 			<MyOrder v-else-if="navType == 2" ref="myOrder"></MyOrder>
+			<Msg v-else-if="navType == 3" ref="msg"></Msg>
 			<Secure v-else-if="navType == 4" ref="secure"></Secure>
 			<Notice v-else-if="navType == 5" ref="notice"></Notice>
 			<AboutUs v-else-if="navType == 6" ref="aboutUs"></AboutUs>
@@ -24,22 +25,29 @@
 </template>
 
 <script>
+	import store from '@/store'
   import MyMoney from './mod/my-money.vue';
   import MyOrder from './mod/my-order.vue';
   import Notice from './mod/notice.vue';
   import AboutUs from './mod/about-us.vue';
   import Secure from './mod/secure.vue';
-  
+  import Msg from './mod/msg.vue';
 	
   export default {
-		components:{MyMoney,MyOrder,AboutUs,Notice,Secure,},
+		components:{MyMoney,MyOrder,AboutUs,Notice,Secure,Msg},
 		data(){
 			return{
 				navType:1,
 			}
 		},
 		mounted() {
-			
+			let index = this.$route.query.index
+			if(index){
+				store.commit('user/setNavActive', 6)
+				this.navType = index;
+			}else{
+				this.navType = 1;
+			}
 		},
 		methods:{
 			selectType(type){

+ 15 - 2
src/views/Forestage/Me/mod/about-us.vue

@@ -2,15 +2,28 @@
 	<!-- 关于我们 -->
 	<div class="about-as bgc-755C82">
 		<div class="box-6 align-items-center hand-cursor">
-			<div class="fs-16 fw-500">关于我们</div>
+			<div class="fs-16 fw-500">{{$t('home6.nav6')}}</div>
 		</div>
-		<div class="box-about fs-14 box-sizing-border-box">111</div>
+		<div class="box-about fs-14 box-sizing-border-box" v-html="info"></div>
 	</div>
 </template>
 
 <script>
+	import {getAboutUs} from '@/api/news.js';
 	export default {
 		name:"about-as",
+		data(){
+			return{
+				info:'',
+			}
+		},
+		mounted() {
+			getAboutUs().then((res)=>{
+				if(res.code == 1){
+					this.info = res.data.info
+				}
+			})
+		},
 	}
 </script>
 

+ 184 - 0
src/views/Forestage/Me/mod/msg.vue

@@ -0,0 +1,184 @@
+<template>
+	<div class="msg-box bgc-755C82">
+		<div class="box-1 align-items-center box-sizing-border-box">
+		  <img class="logo-box mr-10" src="@/assets/img/logo.png" alt="">
+		  <div class="fs-16 fw-700 fc-f">GIobal Merchant Center</div>
+		</div>
+		<div ref="scrollBox" class="box-2 box-sizing-border-box">
+			<div class="mb-32" v-for="(item,i) in list" :key="i">
+				<!-- you1 -->
+				<div class="dis-flex" v-if="item.is_reply == 1">
+					<div class="img-1 mr-10">
+						<img class="" src="@/assets/img/me/msg.png" alt="" />
+					</div>
+					<div class="box-sizing-border-box info-1 fs-16 lh-20">
+						{{item.content}}
+					</div>
+				</div>
+				<!-- me0 -->
+				<div class="dis-flex justify-right" v-if="item.is_reply == 0">
+					<div class="box-sizing-border-box info-1 info-2 fs-16 lh-20 mr-10">
+						{{item.content}}
+					</div>
+					<div class="img-1 img-2">
+						<img class="" src="@/assets/img/me/me.png" alt="" />
+					</div>
+					
+				</div>
+			</div>
+		</div>
+		<div class="box-3 box-sizing-border-box">
+			<textarea v-model="content" class="text-box bgc-755C82 fc-f" name="" id="" cols="30" rows="10"></textarea>
+			<div class="hand-cursor b-buttom fs-16 fw-400" @click="saveMsg()">{{$t('home6.index3.text1')}}</div>
+		</div>
+	</div>          
+</template>
+
+<script>
+	import tools from '@/utils/tools.js';
+	import {getListMsg,getAddMsg} from '@/api/news.js';
+	
+	export default {
+		name:"msg",
+		data(){
+			return{
+				list:[],
+				content:'',
+				isAJAX:false,
+			}
+		},
+		mounted() {
+			this.getList();
+		},
+		methods:{
+			getList(){
+				getListMsg().then((res)=>{
+					if(res.code == 1){
+						this.list = res.data.items;
+						this.$nextTick(()=>{
+							let dom = this.$refs.scrollBox;
+							dom.scrollTop = dom.scrollHeight;
+						})
+					}
+				})
+			},
+			saveMsg(){
+				if(this.isAJAX){
+					return
+				}
+				this.isAJAX = true;
+				getAddMsg({content:this.content}).then((res)=>{
+					if(res.code == 1){
+						this.isAJAX = false;
+						let obj = {
+							content:this.content,
+							is_reply:0,
+						}
+						this.list.push(obj)
+						this.content = '';
+						this.$nextTick(()=>{
+							let dom = this.$refs.scrollBox;
+							dom.scrollTop = dom.scrollHeight;
+						})
+						tools.success(res.msg)
+					}else{
+						this.isAJAX = fasle;
+						tools.error(res.msg)
+					}
+				})
+			},
+		},
+	}
+</script>
+
+<style scoped lang="scss">
+	div{
+		color: #121212;
+	}
+	.msg-box{
+		width: 100%;
+		min-height: 683px;
+		.box-1{
+			width: 100%;
+			height: 54px;
+			padding-left: 40px;
+			border-bottom: 1px solid #C1B5C5;
+			.logo-box{
+				width: 32px;
+				height: 32px;
+				background-color: #fff;
+				border-radius: 50%;
+			}
+		}
+		.box-3{
+			padding: 20px 40px;
+			.text-box{
+				width: 100%;
+				height: 100px;
+				font-size: 16px;
+				line-height: 20px;
+				box-sizing: border-box;
+				border-color: #755C82;
+				margin-bottom: 10px;
+			}
+			textarea:focus{
+				outline: none;
+			}
+			.b-buttom{
+				width: 72px;
+				height: 36px;
+				opacity: 1;
+				border-radius: 2px;
+				background: #C7AB7B;
+				text-align: center;
+				line-height: 36px;
+				margin-left: auto;
+			}
+		}
+		.box-2{
+			width: 100%;
+			height: 419px;
+			border-bottom: 1px solid #C1B5C5;
+			overflow-y: scroll;
+			scrollbar-width: none; /* Firefox */
+			padding: 40px;
+			&::-webkit-scrollbar {
+				width: 0 !important;
+			}
+		}
+		.img-1{
+			width: 40px;
+			height: 40px;
+			opacity: 1;
+			border-radius: 100px;
+			background: linear-gradient(180deg, #D9BE8F 0%, #91784D 100%);
+			text-align: center;
+			
+			img{
+				width: 18px;
+				height: 17.2px;
+				margin-top: 12px;
+			}
+			
+		}
+		.img-2{
+			background: #FFFFFF !important;
+			img{
+				width: 22px !important;
+				height: 27.5px !important;
+				margin-top: 14px !important;
+			}
+		}
+		.info-1{
+			padding: 10px 15px;
+			border-radius: 4px;
+			background: #F4F4F4;
+			word-wrap: break-word;
+			word-break: normal;
+			max-width: 500px;
+		}
+		.info-2{
+			background: #C7AB7B !important;
+		}
+	}
+</style>

+ 94 - 51
src/views/Forestage/Me/mod/my-money.vue

@@ -3,58 +3,58 @@
 	<div class="my-money-box">
 		<div class="" v-if="indexType == 0">
 			<div class="box-1 bgc-755C82 align-items-center box-sizing-border-box mb-7">
-				<img src="@/assets/img/home/2-3.png" alt="" />
+				<img v-if="userInfo.head_img" :src="userInfo.head_img" alt="" />
 				<div class="">
-					<div class="fs-20 mb-7 fw-500 ">点防护</div>
-					<div class="fs-14 mb-7 fw-400 ">5826396@qq.com</div>
-					<div class="fs-14  fw-400 ">ID:123456</div>
+					<div class="fs-20 mb-7 fw-500 ">{{userInfo.nickname||''}}</div>
+					<div class="fs-14 mb-7 fw-400 ">{{userInfo.email|''}}</div>
+					<div class="fs-14  fw-400 ">ID:{{userInfo.id||''}}</div>
 				</div>
 			</div>
-			<div class="box-2 bgc-755C82 box-sizing-border-box fw-500 fs-16">我的资产</div>
+			<div class="box-2 bgc-755C82 box-sizing-border-box fw-500 fs-16">{{$t('home6.nav1')}}</div>
 			<div class="box-3 bgc-755C82 box-sizing-border-box">
-				<div class="fs-16 fw-400 mb-16">我的余额(USDT)</div>
-				<div class="fs-20 fw-700">50000.0000</div>
+				<div class="fs-16 fw-400 mb-16">{{$t('home6.index1.text1')}}(USDT)</div>
+				<div class="fs-20 fw-700">{{userInfo.money||""}}</div>
 			</div>
 			<div class="justify-content-space-between">
 				<div class="box-4 justify-content-space-between align-items-center right-border box-sizing-border-box bgc-755C82">
 					<div class="align-items-center">
 						<img class="img-1" src="@/assets/img/me/money.png" alt="" />
-						<div class="fs-16 fw-400">今日订票收益(USDT)</div>
+						<div class="fs-16 fw-400">{{$t('home6.index1.text2')}}(USDT)</div>
 					</div>
-					<div class="fs-14 fw-700">200.0000</div>
+					<div class="fs-14 fw-700">{{userInfo.day_yield||''}}</div>
 				</div>
 				<div class="box-4 justify-content-space-between align-items-center bgc-755C82 box-sizing-border-box">
 					<div class="align-items-center">
 						<img class="img-2" src="@/assets/img/me/user.png" alt="" />
-						<div class="fs-16 fw-400">今日团队收益(USDT)</div>
+						<div class="fs-16 fw-400">{{$t('home6.index1.text3')}}(USDT)</div>
 					</div>
-					<div class="fs-14 fw-700">200.0000</div>
+					<div class="fs-14 fw-700">{{userInfo.day_team}}</div>
 				</div>
 			</div>
 			<div class="justify-content-space-between">
 				<div class="box-4 justify-content-space-between align-items-center right-border box-sizing-border-box bgc-755C82">
 					<div class="align-items-center">
 						<img class="img-1" src="@/assets/img/me/money.png" alt="" />
-						<div class="fs-16 fw-400">订票总收益(USDT)</div>
+						<div class="fs-16 fw-400">{{$t('home6.index1.text4')}}(USDT)</div>
 					</div>
-					<div class="fs-14 fw-700">200.0000</div>
+					<div class="fs-14 fw-700">{{userInfo.order_yield}}</div>
 				</div>
 				<div class="box-4 justify-content-space-between align-items-center bgc-755C82 box-sizing-border-box">
 					<div class="align-items-center">
 						<img class="img-2" src="@/assets/img/me/user.png" alt="" />
-						<div class="fs-16 fw-400">团队总收益(USDT)</div>
+						<div class="fs-16 fw-400">{{$t('home6.index1.text5')}}(USDT)</div>
 					</div>
-					<div class="fs-14 fw-700">200.0000</div>
+					<div class="fs-14 fw-700">{{userInfo.order_team}}</div>
 				</div>
 			</div>
 			<div class="justify-content-space-between">
 				<div class="box-5 align-items-center justify-content box-sizing-border-box bgc-755C82 right-border hand-cursor" @click="toIndex(1)">
 					<img class="img-3" src="@/assets/img/me/congzhi.png" alt="" />
-					<div class="fs-16 fw-500">充值记录</div>
+					<div class="fs-16 fw-500">{{$t('home6.index1.text6')}}</div>
 				</div>
 				<div class="box-5 align-items-center justify-content box-sizing-border-box bgc-755C82 hand-cursor" @click="toIndex(2)">
 					<img class="img-3" src="@/assets/img/me/tixian.png" alt="" />
-					<div class="fs-16 fw-500">提现记录</div>
+					<div class="fs-16 fw-500">{{$t('home6.index1.text7')}}</div>
 				</div>
 			</div>
 		</div>
@@ -62,47 +62,50 @@
 		<div v-if="indexType == 1" class="index-card bgc-755C82">
 			<div class="box-6 align-items-center hand-cursor" @click="toIndex(0)">
 				<img src="@/assets/img/lang-icon.png" alt="" />
-				<div class="fs-16 fw-500">充值记录</div>
+				<div class="fs-16 fw-500">{{$t('home6.index1.text6')}}</div>
 			</div>
-			<div class="box-7 box-sizing-border-box">
+			<div class="fs-14 text-align-center box-sizing-border-box p-60" v-if="list.length == 0">{{$t('zwsj')}}</div>
+			<div v-else class="box-7 box-sizing-border-box">
 				 <div class="justify-content-space-between box-8 align-items-center">
-				 	<div class="fs-12 fw-400 w280">地址</div>
-					<div class="fs-12 fw-400 w10020 text-align-center">数量</div>
-					<div class="fs-12 fw-400 w10040 text-align-right">操作时间</div>
+				 	<div class="fs-12 fw-400 w280">{{$t('home6.index1.text8')}}</div>
+					<div class="fs-12 fw-400 w10020 text-align-center">{{$t('home6.index1.text9')}}</div>
+					<div class="fs-12 fw-400 w10040 text-align-right">{{$t('home6.index1.text10')}}</div>
 				 </div>
-				 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in 10" :key="i">
-				 	<div class="fs-12 fw-400 w280">NaunqEtsewazD5dSQEacgM7hxxwFoWCy6i</div>
-				 	<div class="fs-12 fw-400 w10020 text-align-center">200</div>
-				 	<div class="fs-12 fw-400 w10040 text-align-right">2025.01.01 15:02:25</div>
+				 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in list" :key="i">
+				 	<div class="fs-12 fw-400 w280">{{item.hash}}</div>
+				 	<div class="fs-12 fw-400 w10020 text-align-center">{{item.money}}</div>
+				 	<div class="fs-12 fw-400 w10040 text-align-right">{{item.created_at}}</div>
 				 </div>
 				 <div class="justify-right mt-16">
-				 	<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">上一页</div>
-					<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">下一页</div>
+				 	<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">{{$t('syy')}}</div>
+					<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">{{$t('xyy')}}</div>
 				 </div>
 			</div>
+			
 		</div>
 		
 		<div v-if="indexType == 2" class="index-card bgc-755C82">
 			<div class="box-6 align-items-center hand-cursor" @click="toIndex(0)">
 				<img src="@/assets/img/lang-icon.png" alt="" />
-				<div class="fs-16 fw-500">提现记录</div>
+				<div class="fs-16 fw-500">{{$t('home6.index1.text7')}}</div>
 			</div>
-			<div class="box-7 box-sizing-border-box">
+			<div class="fs-14 text-align-center box-sizing-border-box p-60" v-if="list.length == 0">{{$t('zwsj')}}</div>
+			<div v-else class="box-7 box-sizing-border-box">
 				 <div class="justify-content-space-between box-8 align-items-center">
-				 	<div class="fs-12 fw-400 w280">地址</div>
-					<div class="fs-12 fw-400 w10020 text-align-center">数量</div>
-					<div class="fs-12 fw-400 w10020 text-align-center">状态</div>
-					<div class="fs-12 fw-400 w10030 text-align-right">操作时间</div>
+				 	<div class="fs-12 fw-400 w280">{{$t('home6.index1.text8')}}</div>
+					<div class="fs-12 fw-400 w10020 text-align-center">{{$t('home6.index1.text9')}}</div>
+					<div class="fs-12 fw-400 w10020 text-align-center">{{$t('home6.index1.text11')}}</div>
+					<div class="fs-12 fw-400 w10030 text-align-right">{{$t('home6.index1.text10')}}</div>
 				 </div>
-				 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in 20" :key="i">
-				 	<div class="fs-12 fw-400 w280">NaunqEtsewazD5dSQEacgNaunqEtsewazD5dSQEacNaunqEtsewazD5dSQEacgNaunqEtsewazD5dSQEacEtsewazD5dSQEacg1231M7Nag1231M7NaunqE13213132123312321tsewazD5dSQEacgM7hxxwFoWCy6ihxxwFoWCy6iM7hxxwFoWCy6iEtsewazD5dSQEacg1231M7Nag1231M7NaunqE13213132123312321tsewazD5dSQEacgM7hxxwFoWCy6ihxxwFoWCy6iM7hxxwFoWCy6i</div>
+				 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in list" :key="i">
+				 	<div class="fs-12 fw-400 w280">111111</div>
 				 	<div class="fs-12 fw-400 w10020 text-align-center">200</div>
-					<div class="fs-12 fw-400 w10020 text-align-center">状态</div>
+					<div class="fs-12 fw-400 w10020 text-align-center">111</div>
 				 	<div class="fs-12 fw-400 w10030 text-align-right">2025.01.01 15:02:25</div>
 				 </div>
 				 <div class="justify-right mt-16">
-				 	<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">上一页</div>
-					<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">下一页</div>
+				 	<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">{{$t('syy')}}</div>
+					<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">{{$t('xyy')}}</div>
 				 </div>
 			</div>
 		</div>
@@ -111,6 +114,11 @@
 </template>
 
 <script>
+	import {getchargelist} from '@/api/money.js';
+	import {getwithdrawList} from '@/api/withdraw.js';
+	
+	import {userInfo} from '@/api/member.js';
+	
 	import tools from '@/utils/tools.js';
 	export default {
 		name:"my-money",
@@ -120,35 +128,70 @@
 				page:1,
 				list:[],
 				total:0,
+				userInfo:{},
 			}
 		},
-		mounted() {
-			
+		mounted() {	
+			this.getInfo();
 		},
 		methods:{
 			getInfo(){
-				
+				userInfo().then((res)=>{
+					if(res.code == 1){
+						this.userInfo = res.data;
+					}
+				})
 			},
-			getList(){
-				
+			getchargelist(){
+				getchargelist({page:this.page}).then((res)=>{
+					if(res.code == 1){
+						this.list = res.data.items;
+						this.total = res.data.toatl;
+					}
+				})
+			},
+			getwithdrawList(){
+				getwithdrawList({page:this.page}).then((res)=>{
+					if(res.code == 1){
+						this.list = res.data.items;
+						this.total = res.data.toatl;
+					}
+				})
 			},
 			toIndex(type){
 				this.indexType = type;
-				if(type == 0){
-					this.page = 1;
-					this.list = [];
-					this.total = 0;
+				this.page = 1;
+				this.list = [];
+				this.total = 0;
+				if(type == 1){
+					this.getchargelist();
+				}else if(type == 2){
+					this.getwithdrawList();
 				}
 			},
 			upPage(){
 				if(this.page == 1){
-					return tools.error('已到第一页')
+					return tools.error(this.$t('yddyy'))
+				}else{
+					this.page -= 1;
+					if(this.indexType == 1){
+						this.getchargelist();
+					}else if(type == 2){
+						this.getwithdrawList();
+					}
 				}
 			},
 			downPage(){
-				let flag = (this.page*1)*10 < (this.total * 1);
+				let flag = (this.page*1)*20 < (this.total * 1);
 				if(!flag){
-					return tools.error('没有更多数据')
+					return tools.error(this.$t('mygdsj'))
+				}else{
+					this.page += 1;
+					if(this.indexType == 1){
+						this.getchargelist();
+					}else if(type == 2){
+						this.getwithdrawList();
+					}
 				}
 			},
 		},

+ 37 - 18
src/views/Forestage/Me/mod/my-order.vue

@@ -2,32 +2,34 @@
 	<!-- 我的订单 -->
 	<div class="list-box bgc-755C82">
 		<div class="box-6 align-items-center hand-cursor">
-			<div class="fs-16 fw-500">我的订单</div>
+			<div class="fs-16 fw-500">{{$t('home6.index2.text1')}}</div>
 		</div>
-		<div class="box-7 box-sizing-border-box">
+		<div class="fs-14 text-align-center box-sizing-border-box p-60" v-if="list.length == 0">{{$t('zwsj')}}</div>
+		<div v-else class="box-7 box-sizing-border-box">
 			 <div class="justify-content-space-between box-8 align-items-center">
-			 	<div class="fs-12 fw-400 w150">订单名称</div>
-				<div class="fs-12 fw-400 w150 ">订单单号</div>
-				<div class="fs-12 fw-400 w150 ">订单金额</div>
-				<div class="fs-12 fw-400 w150 ">订单收益</div>
-				<div class="fs-12 fw-400 w150 text-align-right">创建时间</div>
+			 	<div class="fs-12 fw-400 w150">{{$t('home6.index2.text2')}}</div>
+				<div class="fs-12 fw-400 w150 ">{{$t('home6.index2.text3')}}</div>
+				<div class="fs-12 fw-400 w150 ">{{$t('home6.index2.text4')}}</div>
+				<div class="fs-12 fw-400 w150 ">{{$t('home6.index2.text5')}}</div>
+				<div class="fs-12 fw-400 w150 text-align-right">{{$t('home6.index2.text6')}}</div>
 			 </div>
-			 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in 20" :key="i">
-			 	<div class="fs-12 fw-400 w150">订单名称订单名称订单名称订单名称订单名称订单名称订单名称订单名称</div>
-			 	<div class="fs-12 fw-400 w150 ">202002002002002002002002002002002002002002002002002000</div>
-				<div class="fs-12 fw-400 w150 ">202002002002002002002002002002002002002002002002002000</div>
-				<div class="fs-12 fw-400 w150 ">202002002002002002002002002002002002002002002002002000</div>
-			 	<div class="fs-12 fw-400 w150 text-align-right">2025.01.01 15:02:25</div>
+			 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in list" :key="i">
+			 	<div class="fs-12 fw-400 w150">{{item.goods_name}}</div>
+			 	<div class="fs-12 fw-400 w150 ">{{item.order_sn}}</div>
+				<div class="fs-12 fw-400 w150 ">{{item.price}}</div>
+				<div class="fs-12 fw-400 w150 ">{{item.yield_money}}</div>
+			 	<div class="fs-12 fw-400 w150 text-align-right">{{item.created_at}}5</div>
 			 </div>
 			 <div class="justify-right mt-16">
-			 	<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">上一页</div>
-				<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">下一页</div>
+			 	<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">{{$t('syy')}}</div>
+				<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">{{$t('xyy')}}</div>
 			 </div>
 		</div>
 	</div>
 </template>
 
 <script>
+	import {orderlist} from '@/api/order.js';
 	import tools from '@/utils/tools.js';
 	export default {
 		name:"my-odder",
@@ -38,16 +40,33 @@
 				total:0,
 			}
 		},
+		mounted() {
+			this.getList();
+		},
 		methods:{
+			getList(){
+				orderlist({page:this.page}).then((res)=>{
+					if(res.code == 1){
+						this.list = res.data.list;
+						this.total = res.data.total
+					}
+				})
+			},
 			upPage(){
 				if(this.page == 1){
-					return tools.error('已到第一页')
+					return tools.error(this.$t('yddyy'))
+				}else{
+					this.page -= 1;
+					this.getList();
 				}
 			},
 			downPage(){
-				let flag = (this.page*1)*10 < (this.total * 1);
+				let flag = (this.page*1)*20 < (this.total * 1);
 				if(!flag){
-					return tools.error('没有更多数据')
+					return tools.error(this.$t('mygdsj'))
+				}else{
+					this.page += 1;
+					this.getList();
 				}
 			},
 		},

+ 41 - 31
src/views/Forestage/Me/mod/notice.vue

@@ -3,32 +3,30 @@
 	<div class="notice bgc-755C82">
 		<div v-if="!isflag">
 			<div class="box-6 align-items-center hand-cursor">
-				<div class="fs-16 fw-500">活动公告</div>
+				<div class="fs-16 fw-500">{{$t('home6.index5.text1')}}</div>
 			</div>
-			
+			<div class="fs-14 text-align-center box-sizing-border-box p-60" v-if="list.length == 0">{{$t('zwsj')}}</div>
 			<div class="box-7 box-sizing-border-box">
-				 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in 20" :key="i">
+				 <div class="justify-content-space-between box-8 align-items-center" v-for="(item,i) in list" :key="i">
 				 	<div class="">
-				 		<div class="fs-16 fw-400 mb-10">活动名称</div>
-						<div class="fs-12 fw-400">31/01/2024 15:02</div>
+				 		<div class="fs-16 fw-400 mb-10">{{item.title}}</div>
+						<div class="fs-12 fw-400">{{item.created_at}}</div>
 				 	</div>
-					<div class="fs-12 fw-400 fc-c7ab7b hand-cursor" @click="look(item)">查看</div>
+					<div class="fs-12 fw-400 fc-c7ab7b hand-cursor" @click="look(item)">{{$t('home6.index5.text2')}}</div>
 				 </div>
-				 <div class="justify-right mt-16">
+				 <!-- <div class="justify-right mt-16">
 				 	<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="upPage()">上一页</div>
 					<div class="box-page fs-12 fw-400 fc-12 hand-cursor" @click="downPage()">下一页</div>
-				 </div>
+				 </div> -->
 			</div>
 		</div>
 		
 		<div v-else class="">
 			<div class="box-6 align-items-center hand-cursor" @click="toIndex()">
 				<img src="@/assets/img/lang-icon.png" alt="" />
-				<div class="fs-16 fw-500">公告详情</div>
-			</div>
-			<div class="p-40 box-sizing-border-box">
-				111
+				<div class="fs-16 fw-500">{{$t('home6.index5.text3')}}</div>
 			</div>
+			<div class="p-40 box-sizing-border-box" v-html="info.content"></div>
 		</div>
 		
 		
@@ -36,40 +34,52 @@
 </template>
 
 <script>
+	import {getList,getInfo} from '@/api/news.js';
 	import tools from '@/utils/tools.js';
 	export default {
 		name:'notice',
 		data(){
 			return{
 				isflag:false,
-				
-				page:1,
 				list:[],
-				total:0,
+				info:{},
 			}
 		},
+		mounted() {
+			this.getList();
+		},
 		methods:{
-			upPage(){
-				if(this.page == 1){
-					return tools.error('已到第一页')
-				}
-			},
-			downPage(){
-				let flag = (this.page*1)*10 < (this.total * 1);
-				if(!flag){
-					return tools.error('没有更多数据')
-				}
+			getList(){
+				getList().then((res)=>{
+					if(res.code == 1){
+						this.list = res.data;
+					}
+				})
 			},
+			// upPage(){
+			// 	if(this.page == 1){
+			// 		return tools.error('已到第一页')
+			// 	}
+			// },
+			// downPage(){
+			// 	let flag = (this.page*1)*10 < (this.total * 1);
+			// 	if(!flag){
+			// 		return tools.error('没有更多数据')
+			// 	}
+			// },
 			toIndex(){
 				this.isflag = false;
-				if(!this.isflag){
-					this.page = 1;
-					this.list = [];
-					this.total = 0;
-				}
 			},
 			look(item){
-				this.isflag = true;
+				getInfo({id:item.id}).then((res)=>{
+					if(res.code == 1){
+						this.isflag = true;
+						this.info = res.data;
+					}else{
+						tools.error(res.msg)
+					}
+				})
+				
 			},
 		},
 	}

+ 170 - 8
src/views/Forestage/Me/mod/secure.vue

@@ -3,22 +3,22 @@
 	<div class="secure-box bgc-755C82">
 		<div class="" v-if="setType == 0">
 			<div class="box-6 align-items-center hand-cursor">
-				<div class="fs-16 fw-500">安全中心</div>
+				<div class="fs-16 fw-500">{{$t('home6.nav4')}}</div>
 			</div>
 			<div class="box-7 box-sizing-border-box">
 				 <div class="justify-content-space-between box-8 align-items-center">
 				 	<div class="align-items-center">
 						<img class="img-1" src="@/assets/img/me/denglu.png" alt="" />
-				 		<div class="fs-16 fw-400">登录密码</div>
+				 		<div class="fs-16 fw-400">{{$t('home6.index4.text1')}}</div>
 				 	</div>
-				 	<div class="fs-12 fw-400 fc-c7ab7b hand-cursor" @click="setPassword(1)">修改密码</div>
+				 	<div class="fs-12 fw-400 fc-c7ab7b hand-cursor" @click="setPassword(1)">{{$t('home6.index4.text3')}}</div>
 				 </div>
 				 <div class="justify-content-space-between box-8 align-items-center">
 				 	<div class="align-items-center">
 						<img class="img-1" src="@/assets/img/me/tikuan.png" alt="" />
-				 		<div class="fs-16 fw-400">提款密码</div>
+				 		<div class="fs-16 fw-400">{{$t('home6.index4.text2')}}</div>
 				 	</div>
-				 	<div class="fs-12 fw-400 fc-c7ab7b hand-cursor" @click="setPassword(2)">修改密码</div>
+				 	<div class="fs-12 fw-400 fc-c7ab7b hand-cursor" @click="setPassword(2)">{{$t('home6.index4.text3')}}</div>
 				 </div>
 			</div>
 		</div>
@@ -26,32 +26,140 @@
 		<div v-if="setType == 1" class="">
 			<div class="box-6 align-items-center hand-cursor" @click="setPassword(0)">
 				<img src="@/assets/img/lang-icon.png" alt="" />
-				<div class="fs-16 fw-500">登录密码</div>
+				<div class="fs-16 fw-500">{{$t('home6.index4.text1')}}</div>
+			</div>
+			<div class="box-input-1 box-sizing-border-box">
+				<div class="only-box">
+					<input v-model="email" class="input " type="text" disabled />
+				</div>
+				<div class="justify-content-space-between align-items-center mb-16">
+					<div class="fs-14 fw-400 ">{{$t('home6.index4.text5')}}</div>
+					<input v-model="loginData.old_password" class="input " type="password"  />
+				</div>
+				<div class="justify-content-space-between align-items-center mb-16">
+					<div class="fs-14 fw-400 ">{{$t('home6.index4.text6')}}</div>
+					<input v-model="loginData.password" class="input " type="password"  />
+				</div>
+				<div class="justify-content-space-between align-items-center mb-40">
+					<div class="fs-14 fw-400 ">{{$t('home6.index4.text7')}}</div>
+					<input v-model="loginData.pass_two" class="input " type="password"  />
+				</div>
+				<div class="b-buttom hand-cursor" @click="save(1)">{{$t('home6.index4.text4')}}</div>
 			</div>
 		</div>
 		
 		<div v-if="setType == 2" class="">
 			<div class="box-6 align-items-center hand-cursor" @click="setPassword(0)">
 				<img src="@/assets/img/lang-icon.png" alt="" />
-				<div class="fs-16 fw-500">提款密码</div>
+				<div class="fs-16 fw-500">{{$t('home6.index4.text2')}}</div>
+			</div>
+			<div class="box-input box-sizing-border-box">
+				<div class="justify-content-space-between align-items-center mb-16">
+					<div class="w83 fs-14 fw-400  text-align-right">{{$t('home6.index4.text8')}}</div>
+					<input v-model="payData.pay_pass" class="input " type="text"  />
+				</div>
+				<div class="justify-content-space-between align-items-center mb-16 getCheckCode-f">
+					<div class="w83 fs-14 fw-400  text-align-right">{{$t('home6.index4.text9')}}</div>
+					<input v-model="payData.code" class="input input-1" type="text"  />
+					<getCheckCode v-model="payData.pay_pass" class="getCheckCode" :isColor='true' :type="'register'"></getCheckCode>
+				</div>
+				<div class="justify-content-space-between align-items-center mb-16">
+					<div class="w83 fs-14 fw-400  text-align-right">{{$t('home6.index4.text10')}}</div>
+					<input v-model="payData.password" class="input " type="password"  />
+				</div>
+				<div class="justify-content-space-between align-items-center mb-40">
+					<div class="w83 fs-14 fw-400  text-align-right">{{$t('home6.index4.text11')}}</div>
+					<input v-model="payData.pass_two" class="input " type="password"  />
+				</div>
+				<div class="b-buttom hand-cursor" @click="save(2)">{{$t('home6.index4.text4')}}</div>
 			</div>
 		</div>
 	</div>
 </template>
 
 <script>
+	import {userInfo,payPass,setPass} from '@/api/member.js';
+	import getCheckCode from '@/views/Forestage/login/module/getCheckCode.vue'
 	import tools from '@/utils/tools.js';
 	export default {
 		name:"secure",
+		components: {
+		  getCheckCode
+		},
 		data(){
 			return{
+				isAJAX:false,
 				setType:0,
+				email:"",
+				loginData:{
+					old_password:'',
+					password:'',
+					pass_two:'',
+				},
+				payData:{
+					pay_pass:'',
+					password:'',
+					pass_two:'',
+					code:'',
+				},
 			}
 		},
+		mounted() {
+			this.getInfo();
+		},
 		methods:{
+			getInfo(){
+				userInfo().then((res)=>{
+					if(res.code == 1){
+						this.email = res.data.email;
+					}
+				})
+			},
 			setPassword(type){
 				this.setType = type;
-			}
+			},
+			save(type){
+				if(this.isAJAX){
+					return
+				}
+				this.isAJAX = true;
+				if(type == 1){
+					// 登录
+					setPass(this.loginData).then((res)=>{
+						if(res.code == 1){
+							this.isAJAX = false;
+							tools.success(res.msg)
+							this.loginData = {
+								old_password:'',
+								password:'',
+								pass_two:'',
+							},
+							this.setType = 0;
+						}else{
+							this.isAJAX = false;
+							tools.error(res.msg)
+						}
+					})
+				}else{
+					// 提现
+					payPass(this.payData).then((res)=>{
+						if(res.code == 1){
+							this.isAJAX = false;
+							tools.success(res.msg)
+							this.payData = {
+								pay_pass:'',
+								password:'',
+								pass_two:'',
+								code:'',
+							},
+							this.setType = 0;
+						}else{
+							this.isAJAX = false;
+							tools.error(res.msg)
+						}
+					})
+				}
+			},
 		},
 	}
 </script>
@@ -60,6 +168,10 @@
 	div{
 		color: #fff;
 	}
+	input:focus{
+		
+		outline: none;
+	}
 	.secure-box{
 		width: 100%;
 		min-height: 683px;
@@ -89,5 +201,55 @@
 			height: 20px;
 			margin-right: 13px;
 		}
+		.box-input{
+			padding: 117px 320px 0 183px;
+		}
+		.box-input-1{
+			padding: 117px 320px 0 225px;
+		}
+		.input{
+			width: 400px;
+			height: 48px;
+			opacity: 1;
+			border-radius: 6px;
+			background: rgba(117, 92, 130, 1);
+			border: 1px solid rgba(211, 212, 216, 1);
+			box-sizing: border-box;
+			padding: 0 15px;
+			color: #fff;
+		}
+		.input-1{
+			padding: 0 100px 0 15px !important;
+		}
+		.b-buttom{
+			width: 400px;
+			height: 48px;
+			opacity: 1;
+			line-height: 48px;
+			font-size: 15px;	
+			font-weight: 400;
+			text-align: center;
+			border-radius: 6px;
+			background: rgba(199, 171, 123, 1);
+			margin-left: auto;
+			color: #121212 !important;
+		}
+		.only-box{
+			width: 400px;
+			margin: 0 0 16px auto;
+		}
+		.w83{
+			width: 112px;
+			
+		}
+		.getCheckCode-f{
+			position: relative;
+			.getCheckCode{
+				position: absolute;
+				right: 15px;
+				color: rgba(199, 171, 123, 1);
+				font-size: 14px
+			}
+		}
 	}
 </style>

+ 180 - 131
src/views/Forestage/Recharge/index.vue

@@ -1,141 +1,190 @@
 <template>
-  <!-- 充值 -->
-  <div class="recharge-index">
-    <div class="work-index-bg box-sizing-border-box">
-      <div class="fs-34 fc-f mb-32">如何存入USDT</div>
+	<!-- 充值 -->
+	<div class="recharge-index">
+		<div class="work-index-bg box-sizing-border-box">
+			<div class="fs-34 fc-f mb-32">{{$t('home4.text1')}}</div>
 
-      <div class="align-items-center">
-        <div class="">
-          <div class="align-items-center mb-16">
-            <div class="num-box">1</div>
-            <div class="num-xian"></div>
-          </div>
-          <div class="fs-18 fc-f w-210 mb-5">购买USDT</div>
-          <div class="fs-14 fc-f w-210 lh-20">用户可以使用法定货币在加密货币平台上购买Tether(USDT)</div>
-        </div>
-        <div class="">
-          <div class="align-items-center mb-16">
-            <div class="num-box">2</div>
-            <div class="num-xian"></div>
-          </div>
-          <div class="fs-18 fc-f w-210 mb-5">确认钱包地址</div>
-          <div class="fs-14 fc-f w-210 lh-20">从您的GMC平台账户中获取你的个人钱包地址</div>
-        </div>
-        <div class="">
-          <div class="align-items-center mb-16">
-            <div class="num-box">3</div>
-            <div class="num-xian"></div>
-          </div>
-          <div class="fs-18 fc-f w-210 mb-5">发送到GMC账户资产</div>
-          <div class="fs-14 fc-f w-210 lh-20">从您的加密货币平台中发送USDT至您的GMC账户资产</div>
-        </div>
-        <div class="">
-          <div class="align-items-center mb-16">
-            <div class="num-box">4</div>
-          </div>
-          <div class="fs-18 fc-f w-210 mb-5">USDT收到了</div>
-          <div class="fs-14 fc-f w-210 lh-20">系统通过网络确认后,您的GMC账户成功收到了USDT</div>
-        </div>
-      </div>
-    </div>
+			<div class="align-items-center">
+				<div class="">
+					<div class="align-items-center mb-16">
+						<div class="num-box">1</div>
+						<div class="num-xian"></div>
+					</div>
+					<div class="fs-18 fc-f w-210 mb-5">{{$t('home4.text2')}}</div>
+					<div class="fs-14 fc-f w-210 lh-20">{{$t('home4.text3')}}</div>
+				</div>
+				<div class="">
+					<div class="align-items-center mb-16">
+						<div class="num-box">2</div>
+						<div class="num-xian"></div>
+					</div>
+					<div class="fs-18 fc-f w-210 mb-5">{{$t('home4.text4')}}</div>
+					<div class="fs-14 fc-f w-210 lh-20">{{$t('home4.text5')}}</div>
+				</div>
+				<div class="">
+					<div class="align-items-center mb-16">
+						<div class="num-box">3</div>
+						<div class="num-xian"></div>
+					</div>
+					<div class="fs-18 fc-f w-210 mb-5">{{$t('home4.text6')}}</div>
+					<div class="fs-14 fc-f w-210 lh-20">{{$t('home4.text7')}}</div>
+				</div>
+				<div class="">
+					<div class="align-items-center mb-16">
+						<div class="num-box">4</div>
+					</div>
+					<div class="fs-18 fc-f w-210 mb-5">{{$t('home4.text8')}}</div>
+					<div class="fs-14 fc-f w-210 lh-20">{{$t('home4.text9')}}</div>
+				</div>
+			</div>
+		</div>
 
-    <div class="box-card box-sizing-border-box">
-      <div class="fs-36 fw-b mb-40 text-align-center">充值</div>
-      <div class="justify-content-space-between mb-40">
-        <div class="card-1">
-          <div class="fs-16 mb-16 fw-500 text-align-center">USDT-TRC20錢包地址</div>
-          <img src="@/assets/img/team/team-s.png" alt="">
-          <div class="b-text justify-content-space-between align-items-center">
-            <div class="fs-12">NaunqEtsewazD5dSQEacgM7hxxwFoWCy6iNaunqEtsewazD5dSQEacgM7hxxwFoWCy6i</div>
-            <img src="@/assets/img/copy.png" alt="">
-          </div>
-        </div>
-        <div class="card-1">
-          <div class="fs-16 mb-16 fw-500 text-align-center">USDT-ERC20錢包地址</div>
-          <img src="@/assets/img/team/team-s.png" alt="">
-          <div class="b-text justify-content-space-between align-items-center">
-            <div class="fs-12">NaunqEtsewazD5dSQEacgM7hxxwFoWCy6iNaunqEtsewazD5dSQEacgM7hxxwFoWCy6i</div>
-            <img src="@/assets/img/copy.png" alt="">
-          </div>
-        </div>
-      </div>
-      <div class="align-items-center mb-10">
-          <img class="error-icon mr-5" src="@/assets/img/error.png" alt="">
-          <div class="fs-14 fc-ED2121FF">温馨提示</div>
-      </div>
-      <div class="fs-14 fw-400">
-        请确认你将使用TRC20或ERC20网络进行充值,若充值信息不一致将造成充值资金损失且无法找回。
-      </div>
-    </div>
-  </div>
+		<div class="box-card box-sizing-border-box">
+			<div class="fs-36 fw-b mb-40 text-align-center">{{$t('Recharge')}}</div>
+			<div class="justify-content-space-between mb-40">
+				<div class="card-1">
+					<div class="fs-16 mb-16 fw-500 text-align-center">USDT-TRC20{{$t('qbdz')}}</div>
+					<img :src="TRCurl" alt="">
+					<div class="b-text justify-content-space-between align-items-center">
+						<div class="fs-12">{{trx_address}}</div>
+						<img src="@/assets/img/copy.png" alt="">
+					</div>
+				</div>
+				<div class="card-1">
+					<div class="fs-16 mb-16 fw-500 text-align-center">USDT-ERC20{{$t('qbdz')}}</div>
+					<img :src="ERCurl" alt="">
+					<div class="b-text justify-content-space-between align-items-center">
+						<div class="fs-12">{{eth_address}}</div>
+						<img src="@/assets/img/copy.png" alt="">
+					</div>
+				</div>
+			</div>
+			<div class="align-items-center mb-10">
+				<img class="error-icon mr-5" src="@/assets/img/error.png" alt="">
+				<div class="fs-14 fc-ED2121FF">{{$t('wxts')}}</div>
+			</div>
+			<div class="fs-14 fw-400">
+				{{$t('home4.text10')}}
+			</div>
+		</div>
+	</div>
 </template>
 
 <script>
-  export default {
-
-  }
+	import {
+		getrecharge
+	} from '@/api/withdraw.js'
+	const QRCode = require('qrcode');
+	export default {
+		data(){
+			return{
+				eth_address:'',
+				trx_address:'',
+				ERCurl:'',
+				TRCurl:'',
+			}
+		},
+		mounted() {
+			this.getInfo();
+		},
+		methods: {
+			getInfo() {
+				getrecharge().then((res) => {
+					if(res.code == 1){
+						this.eth_address = res.data.eth_address;
+						this.trx_address = res.data.trx_address;
+						this.setImgE();
+						this.setImgT();
+					}
+				})
+			},
+			setImgE(){
+				let that = this
+				QRCode.toDataURL(this.eth_address, function (err, url) {
+				    if (err) throw err;
+				    that.ERCurl = url
+				});
+			},
+			setImgT(){
+				let that = this
+				QRCode.toDataURL(this.trx_address, function (err, url) {
+				    if (err) throw err;
+				    that.TRCurl = url
+				});
+			},
+		},
+	}
 </script>
 
 <style scoped lang="scss">
-  .recharge-index{
-    padding-top: 70px;
-    min-height: 100vh;
-    .work-index-bg{
-      padding: 70px 0 0 220px;
-      width: 100vw;
-      height: 358px;
-      background: url('@/assets/img/team/team-s.png') no-repeat;
-      background-size: 100% 100%;
-    }
-    .num-box{
-      width: 48px;
-      height: 48px;
-      box-sizing: border-box;
-      border: 1px solid #fff;
-      font-size: 20px;
-      font-weight: 900;
-      color: #fff;
-      text-align: center;
-      line-height: 48px;
-    }
-    .num-xian{
-      width: 148px;
-      border: 1px solid #fff;
-      margin: 0 24px;
-    }
+	.recharge-index {
+		padding-top: 70px;
+		min-height: 100vh;
+
+		.work-index-bg {
+			padding: 70px 0 0 220px;
+			width: 100vw;
+			height: 358px;
+			background: url('@/assets/img/team/team-s.png') no-repeat;
+			background-size: 100% 100%;
+		}
+
+		.num-box {
+			width: 48px;
+			height: 48px;
+			box-sizing: border-box;
+			border: 1px solid #fff;
+			font-size: 20px;
+			font-weight: 900;
+			color: #fff;
+			text-align: center;
+			line-height: 48px;
+		}
+
+		.num-xian {
+			width: 148px;
+			border: 1px solid #fff;
+			margin: 0 24px;
+		}
+
+		.box-card {
+			padding: 70px 325px;
+
+			.card-1 {
+				width: 289px;
+				text-align: center;
+
+				img {
+					width: 220px;
+					height: 220px;
+					margin: 0 auto 20px auto;
+				}
+
+				.b-text {
+					width: 100%;
+					height: 40px;
+					opacity: 1;
+					background: #e8e8e8ff;
+					box-sizing: border-box;
+					padding: 0 10px;
+
+					div {
+						width: 243px;
+						overflow: hidden;
+					}
+
+					img {
+						width: 14px;
+						height: 16px;
+						margin-top: 18px;
+					}
+				}
+			}
+		}
 
-    .box-card{
-      padding: 70px 325px;
-      .card-1{
-        width: 289px;
-        text-align: center;
-        img{
-          width: 220px;
-          height: 220px;
-          margin: 0 auto 20px auto;
-        }
-        .b-text{
-          width: 100%;
-          height: 40px;
-          opacity: 1;
-          background: #e8e8e8ff;
-          box-sizing: border-box;
-          padding: 0 10px;
-          div{
-            width: 243px;
-            overflow: hidden;
-          }
-          img{
-            width: 14px;
-            height: 16px;
-            margin-top: 18px;
-          }
-        }
-      }
-    }
-    .error-icon{
-      width: 15.34px;
-      height: 13.5px;
-    }
-  }
-</style>
+		.error-icon {
+			width: 15.34px;
+			height: 13.5px;
+		}
+	}
+</style>

+ 34 - 17
src/views/Forestage/Team/index.vue

@@ -2,23 +2,23 @@
   <!-- 团队 -->
   <div class="work-index">
     <div class="work-index-bg box-sizing-border-box pt-100">
-      <div class="fc-f fs-34 fw-400 text-align-center mb-44">开启互联网模式生意团队,实现居家创业和自动化收益</div>
+      <div class="fc-f fs-34 fw-400 text-align-center mb-44">{{$t('home3.text1')}}</div>
       <div class="align-items-center justify-content mb-18">
         <img class="d-icon" src="@/assets/img/team/d-icon.png" alt="">
-        <div class="fs-14 fc-f">邀请新用户加入你的团队</div>
+        <div class="fs-14 fc-f">{{$t('home3.text2')}}</div>
         <img class="d-icon" src="@/assets/img/team/d-icon.png" alt="">
       </div>
       <div class="align-items-center justify-content">
-        <div class="b-1 fs-12 text-align-center mr-10">邀請碼:168668</div>
-        <div class="b-2 fs-12 text-align-center hand-cursor">复制</div>
+        <div class="b-1 fs-12 text-align-center mr-10">{{$t('home3.text3')}}:{{code}}</div>
+        <div class="b-2 fs-12 text-align-center hand-cursor">{{$t('home3.text4')}}</div>
       </div>
     </div>
 
     <div class="box-sizing-border-box box-card">
       <div class="mb-96">
-        <div class="fs-36 mb-16 fw-500">如何工作</div>
+        <div class="fs-36 mb-16 fw-500">{{$t('home3.text5')}}</div>
         <div class="fs-22 lh-36 fw-400">
-          我们的团队商业模式支持五个级别的盈利模式。您可以通过邀请新用户使用您的邀请码注册账号来加入您的团队,即可获得您的小团队。一旦您组建了一个小团队,此模式将自动为您壮大您的团队,因为您的团队成员将邀请更多新用户组建他们的团队。如果我们将1-5级用户命名为ABCDE,那么你邀请的团队成员就是A,BCDE就会是他们帮你组建的大团队成员,因为此时A也可以成为团队负责人,他们就会有他们的团队成员是 ABCED 和 1-5 级用户。当ABCDE团队成员在平台上盈利时,您可以从团队中获得额外50%-10%的额外巨额被动收入。任何人都可以组建自己的团队,这就是互联网自动化团队效应。
+          {{$t('home3.text6')}}
         </div>
       </div>
 
@@ -26,9 +26,9 @@
           <img class="left-img" src="@/assets/img/team/1.png" alt="">
           <div class="flex-1 pt-24 box-sizing-border-box">
             <div class="num-box mb-16">1</div>
-            <div class="fs-16 fw-500 mb-16">您的A级团队成员</div>
+            <div class="fs-16 fw-500 mb-16">{{$t('home3.text7')}}</div>
             <div class="fs-12 fw-400 lh-17">
-              通过您的邀请码注册的用户将成为您的A级团队成员,你将获得A级团队成员每日订票收益的50%作为额外的团队被动收入,这是你的第一级团队收益。例如,假设用户A参与日常预订并获得1,000 USDT的收益。那么您将自动获得额外的团队利润500 USDT。
+              {{$t('home3.text8')}}
             </div>
           </div>
       </div>
@@ -36,9 +36,9 @@
           <img class="left-img" src="@/assets/img/team/2.png" alt="">
           <div class="flex-1 pt-24 box-sizing-border-box">
             <div class="num-box mb-16">2</div>
-            <div class="fs-16 fw-500 mb-16">您的B级团队成员</div>
+            <div class="fs-16 fw-500 mb-16">{{$t('home3.text9')}}</div>
             <div class="fs-12 fw-400 lh-17">
-              通过您团队的A级成员邀请码注册的用户将成为您的B级团队成员。当他们通过订票获得收益时,您将获得额外的团队收益。第二级团队收益为B团队成员每天订票收益的40%。例如,用户B参与日常预订,获得1,000 USDT的收益。那么您将自动获得额外的团队利润400 USDT。
+              {{$t('home3.text10')}}
             </div>
           </div>
       </div>
@@ -46,9 +46,9 @@
           <img class="left-img" src="@/assets/img/team/3.png" alt="">
           <div class="flex-1 pt-24 box-sizing-border-box">
             <div class="num-box mb-16">3</div>
-            <div class="fs-16 fw-500 mb-16">您的C级团队成员</div>
+            <div class="fs-16 fw-500 mb-16">{{$t('home3.text11')}}</div>
             <div class="fs-12 fw-400 lh-17">
-              通过您团队的B级成员邀请码注册的用户将成为您的C级团队成员。当他们通过订票获得收益时,您将获得额外的团队收益。第三级团队收益为B团队成员每天订票收益的30%。例如,用户C参与日常预订,获得1,000 USDT的收益。那么您将自动获得额外的团队利润300 USDT。
+              {{$t('home3.text12')}}
             </div>
           </div>
       </div>
@@ -56,9 +56,9 @@
           <img class="left-img" src="@/assets/img/team/4.png" alt="">
           <div class="flex-1 pt-24 box-sizing-border-box">
             <div class="num-box mb-16">4</div>
-            <div class="fs-16 fw-500 mb-16">您的D级团队成员</div>
+            <div class="fs-16 fw-500 mb-16">{{$t('home3.text13')}}</div>
             <div class="fs-12 fw-400 lh-17">
-              通过您团队的C级成员邀请码注册的用户将成为您的D级团队成员。当他们通过订票获得收益时,您将获得额外的团队收益。第四级团队收益为B团队成员每天订票收益的20%。例如,用户D参与日常预订,获得1,000 USDT的收益。那么您将自动获得额外的团队利润200 USDT。
+              {{$t('home3.text14')}}
             </div>
           </div>
       </div>
@@ -66,9 +66,9 @@
           <img class="left-img" src="@/assets/img/team/5.png" alt="">
           <div class="flex-1 pt-24 box-sizing-border-box">
             <div class="num-box mb-16">5</div>
-            <div class="fs-16 fw-500 mb-16">您的E级团队成员</div>
+            <div class="fs-16 fw-500 mb-16">{{$t('home3.text15')}}</div>
             <div class="fs-12 fw-400 lh-17">
-              通过您团队的D级成员邀请码注册的用户将成为您的E级团队成员。当他们通过订票获得收益时,您将获得额外的团队收益。第五级团队收益为B团队成员每天订票收益的10%。例如,用户E参与日常预订,获得1,000 USDT的收益。那么您将自动获得额外的团队利润100 USDT。
+              {{$t('home3.text16')}}
             </div>
           </div>
       </div>
@@ -78,8 +78,25 @@
 </template>
 
 <script>
+	import {userInfo} from '@/api/member.js';
   export default {
-
+	  data(){
+		  return{
+			  code:"",
+		  }
+	  },
+	mounted() {
+		this.getInfo();
+	},
+	methods:{
+		getInfo(){
+			userInfo().then((res)=>{
+				if(res.code == 1){
+					this.code = res.data.invite_code;
+				}
+			})
+		},
+	}
   }
 </script>
 

+ 141 - 79
src/views/Forestage/Tourism/index.vue

@@ -1,89 +1,151 @@
 <template>
-  <!-- 旅游 -->
-  <div class="tourism-box">
-    <div class="fs-42 fw-400 text-align-center mt-30 mb-18">旅行计划</div>
-    <div class="justify-content box-sizing-border-box plr-220  row-wrap">
-      <div class="class-item text-align-center fs-14 fw-500 box-sizing-border-box hand-cursor "
-      v-for="(item,i) in 17" :key="i" :class="classType==i?'s-class-item':''" @click="selectType(item,i)">中国</div>
-    </div>
+	<!-- 旅游 -->
+	<div class="tourism-box">
+		<div class="fs-42 fw-400 text-align-center mt-30 mb-18">{{$t('home2.text1')}}</div>
+		<div class="justify-content box-sizing-border-box plr-220  row-wrap">
+			<div class="class-item text-align-center fs-14 fw-500 box-sizing-border-box hand-cursor "
+				v-for="(item,i) in classList" :key="i" :class="id==item.id?'s-class-item':''"
+				@click="selectType(item,i)">{{item.class_name}}</div>
+		</div>
 
-    <div class="box-sizing-border-box plr-220">
-      <div class="justify-content-space-between goods-box box-sizing-border-box mt-16" v-for="(item,i) in 11" :key="i">
-        <img class="item-img" src="@/assets/img/home/2-2.png" alt="">
-        <div class="flex-1 box-sizing-border-box ptb-8">
-          <div class="fs-24 fw-400 mb-10">郑王庙+泰服租聘</div>
-          <div class="fs-18 fw-400 lh-26 mb-12">郑王庙,始建于大城王朝,当时名皇冠寺,后改称昌寺。黎明寺位于泰国湄南河西岸的双子都市吞武里城,是泰国著名的寺庙,也是泰国王泰国湄南河西岸的双子都市吞武里城,是泰国著名的寺庙,也是泰国王家寺庙之一</div>
-          <div class="align-items-center">
-            <div class="b-buttom hand-cursor">$18</div>
-            <div class="b-buttom hand-cursor">Book ticket</div>
-          </div>
-        </div>
-      </div>
-    </div>
+		<div class="box-sizing-border-box plr-220">
+			<div class="justify-content-space-between goods-box box-sizing-border-box mt-16"
+				v-for="(item,i) in goodsList" :key="i">
+				<img class="item-img" :src="item.cover_img" alt="">
+				<div class="flex-1 box-sizing-border-box ptb-8">
+					<div class="fs-24 fw-400 mb-10">{{item.goods_name}}</div>
+					<div class="fs-18 fw-400 lh-26 mb-12">
+						{{lang == 'cn'?item.contents:item.contents_en}}
+					</div>
+					<div class="align-items-center">
+						<div class="b-buttom hand-cursor">${{item.price}}</div>
+						<div class="b-buttom hand-cursor" @click="pay(item)">Book ticket</div>
+					</div>
+				</div>
+			</div>
+		</div>
 
-  </div>
+	</div>
 </template>
 
 <script>
-  export default {
-    data(){
-      return{
-        backgroundImg:require('@/assets/img/home/2-2.png'),
-        classType:1,
-      }
-    },
-    methods:{
-      selectType(item,i){
-        if(this.classType!=i){
-          this.classType = i
-        }
-      },
-    },
-  }
+	import tools from '@/utils/tools';
+	import {
+		ordercreat
+	} from '@/api/order.js';
+	import {
+		getClass,
+		getList
+	} from '@/api/goods.js';
+	export default {
+		data() {
+			return {
+				// backgroundImg: require('@/assets/img/home/2-2.png'),
+				id: 1,
+				classList: [],
+				goodsList: [],
+				isAJAX: false,
+				lang:'',
+			}
+		},
+		created() {
+			const lang = localStorage.getItem('lang') || 'cn'
+		},
+		mounted() {
+			this.getClass();
+		},
+		methods: {
+			getClass() {
+				getClass().then((res) => {
+					if (res.code == 1) {
+						this.classList = res.data;
+						this.id = this.classList[0].id;
+						this.getlist();
+					}
+				})
+			},
+			getlist() {
+				getList({
+					class_id: this.id
+				}).then((res) => {
+					if (res.code == 1) {
+						this.goodsList = res.data.list;
+					}
+				})
+			},
+			selectType(item, i) {
+				if (this.id != item.id) {
+					this.id = item.id
+					this.getlist();
+				}
+			},
+			pay(item) {
+				if(this.isAJAX){
+					return
+				}
+				this.isAJAX = true;
+				ordercreat({
+					goods_id: item.id
+				}).then((res) => {
+					if(res.code == 1){
+						this.isAJAX = false;
+						tools.success(res.msg)
+					}else{
+						this.isAJAX = false;
+						tools.error(res.msg)
+					}
+				})
+			},
+		},
+	}
 </script>
 
 <style scoped lang="scss">
-  .tourism-box{
-    padding-top: 70px;
-    min-height: 100vh;
-    background: url('@/assets/img/login-bg.png');
+	.tourism-box {
+		padding-top: 70px;
+		min-height: 100vh;
+		background: url('@/assets/img/login-bg.png');
 
-    .class-item{
-      width: 68px;
-      height: 36px;
-      line-height: 38px;
-      opacity: 1;
-      border-radius: 2px;
-      border: 1px solid rgba(255, 255, 255, 1);
-      margin: 0 20px 18px 20px;
-      color: #fff;
-    }
-    .s-class-item{
-      background: rgba(199, 171, 123, 1) !important;
-      border: 1px solid rgba(199, 171, 123, 1) !important;
-      color: #121212;
-    }
-    .goods-box{
-      width: 100%;
-      min-height: 184px;
-      background: #E4F7F0FF;
-      padding: 12px 15px;
-    }
-    .item-img{
-      width: 220px;
-      height: 160px;
-      margin-right: 20px;
-    }
-    .b-buttom{
-      padding: 0 16px;
-      height: 34px;
-      opacity: 1;
-      border-radius: 2px;
-      background: #C7AB7BFF;
-      line-height: 36px;
-      color: #121212;
-      text-align: center;
-      margin-right: 10px;
-    }
-  }
-</style>
+		.class-item {
+			width: 68px;
+			height: 36px;
+			line-height: 38px;
+			opacity: 1;
+			border-radius: 2px;
+			border: 1px solid rgba(255, 255, 255, 1);
+			margin: 0 20px 18px 20px;
+			color: #fff;
+		}
+
+		.s-class-item {
+			background: rgba(199, 171, 123, 1) !important;
+			border: 1px solid rgba(199, 171, 123, 1) !important;
+			color: #121212;
+		}
+
+		.goods-box {
+			width: 100%;
+			min-height: 184px;
+			background: #E4F7F0FF;
+			padding: 12px 15px;
+		}
+
+		.item-img {
+			width: 220px;
+			height: 160px;
+			margin-right: 20px;
+		}
+
+		.b-buttom {
+			padding: 0 16px;
+			height: 34px;
+			opacity: 1;
+			border-radius: 2px;
+			background: #C7AB7BFF;
+			line-height: 36px;
+			color: #121212;
+			text-align: center;
+			margin-right: 10px;
+		}
+	}
+</style>

+ 7 - 7
src/views/Forestage/login/forget-password.vue

@@ -4,18 +4,18 @@
       <div class="login-input box-sizing-border-box plr-50">
           <div class="align-items-center justify-content login-box ">
               <img class="logo-img mr-10" src="@/assets/img/logo.png" alt="">
-              <div class="fw-400 fs-18">忘记密码</div>
+              <div class="fw-400 fs-18">{{$t('LoginIndex.forgetPassword')}}</div>
           </div>
-          <input type="text" placeholder="输入邮箱号码" v-model="fromData.email">
+          <input type="text" :placeholder="$t('LoginIndex.syyxhm')" v-model="fromData.email">
           <div class="p-f">
-            <input type="text" placeholder="输入邮箱验证码" v-model="fromData.code">
+            <input type="text" :placeholder="$t('LoginIndex.syyxyzm')" v-model="fromData.code">
             <getCheckCode class="getCheckCode" :type="'retrieve'"></getCheckCode>
           </div>
 
-          <input type="password" placeholder="设置新密码" v-model="fromData.pass">
-          <input type="password" placeholder="再次输入新密码" v-model="fromData.pass_two">
+          <input type="password" :placeholder="$t('LoginIndex.sdxmm')" v-model="fromData.pass">
+          <input type="password" :placeholder="$t('LoginIndex.zcsrxmm')" v-model="fromData.pass_two">
 
-          <div class="mt-30 button-login fs-14 fc-12 text-align-center hand-cursor" @click="confirm()">确认</div>
+          <div class="mt-30 button-login fs-14 fc-12 text-align-center hand-cursor" @click="confirm()">{{$t('confirm')}}</div>
       </div>
   </div>
 </template>
@@ -23,7 +23,7 @@
 <script>
   import getCheckCode from './module/getCheckCode.vue'
   import tools from "@/utils/tools";
-  import { retrievePass } from '@/api/api/member'
+  import { retrievePass } from '@/api/member'
 
   export default {
     components: {

+ 7 - 5
src/views/Forestage/login/login.vue

@@ -22,7 +22,7 @@
 
 <script>
   import tools from "@/utils/tools";
-  import { login } from '@/api/api/member'
+  import { login } from '@/api/member'
 
   export default {
     data() {
@@ -43,15 +43,17 @@
       },
 
       toLogin() {
-         // localStorage.setItem('userToken','123456')
-         // this.$router.push('/')
-
-
+		if(this.isAJAX){
+			return
+		}
+		this.isAJAX = true
         login(this.fromData).then((res) => {
           if (res.code === 1) {
+			  this.isAJAX = false
             localStorage.setItem('userToken',res.data.token)
             this.$router.push('/')
           } else {
+			  this.isAJAX = false
             tools.error(res.msg)
           }
         })

+ 13 - 12
src/views/Forestage/login/module/getCheckCode.vue

@@ -2,47 +2,44 @@
   <!-- 获取验证码 -->
   <div>
     <div class="getCheckCode" @click="getCode()" v-if="time<=0"  >
-      <span class="gain" >获取验证码</span>
+      <span :class="isColor?'gain-1':'gain'" >{{$t('getCode')}}</span>
     </div>
     <div class="getCheckCode disabledBox"  v-else  >
-      <span class="gain" >{{text}}</span>
+      <span :class="isColor?'gain-1':'gain'" >{{text}}</span>
     </div>
   </div>
 
 </template>
 
 <script>
-// import {commonSend} from '@/api/conmmon.js'
-  import { sendEmail } from '@/api/api/common'
+  import { sendEmail } from '@/api/common'
 import tools from '@/utils/tools'
 
 export default {
-    props:['value','type'],
+    props:['value','type','isColor'],
     data(){
       return{
           text:"",
           time:0,
-          phone:"",
           formData:{
-            phone:'',
-            send_type:'', //login 登录  reset重置
+            email:'',
+            type:'', //login 登录  reset重置
           }
       }
     },
     mounted() {
-      this.formData.send_type = this.type
+      this.formData.type = this.type
     },
     watch:{
       type(val){
-        this.formData.send_type = val
+        this.formData.type = val
       },
       value(val){
-        this.formData.phone = val
+        this.formData.email = val
       },
     },
     methods:{
       getCode(){
-        console.log(this.formData)
         sendEmail(this.formData).then((res)=>{
           if(res.code === 1){
             tools.success(res.msg)
@@ -68,6 +65,10 @@ export default {
     pointer-events: none;
   }
   .getCheckCode{
+	  .gain-1 {
+	    font-size: 14px;
+	    color: #C7AB7B;
+	  }
     .gain {
       font-size: 14px;
       color: #2A82E4;

+ 10 - 10
src/views/Forestage/login/register.vue

@@ -4,22 +4,22 @@
       <div class="login-input box-sizing-border-box plr-50">
           <div class="align-items-center justify-content login-box ">
               <img class="logo-img mr-10" src="@/assets/img/logo.png" alt="">
-              <div class="fw-400 fs-18">用户注册</div>
+              <div class="fw-400 fs-18">{{$t('LoginIndex.yhzc')}}</div>
           </div>
-          <input type="text" placeholder="输入邮箱号码" v-model="fromData.email">
+          <input type="text" :placeholder="$t('LoginIndex.syyxhm')" v-model="fromData.email">
           <div class="p-f">
-            <input type="text" placeholder="输入验证码" v-model="fromData.code">
-            <getCheckCode class="getCheckCode" :type="'register'"></getCheckCode>
+            <input type="text" :placeholder="$t('LoginIndex.syyxyzm')" v-model="fromData.code">
+            <getCheckCode v-model="fromData.email" class="getCheckCode" :type="'register'"></getCheckCode>
           </div>
-        <input type="password" placeholder="登录密码" v-model="fromData.pass">
-          <input type="text" placeholder="输入邀请码" v-model="fromData.inviteCode">
+        <input type="password" :placeholder="$t('LoginIndex.dlmm')" v-model="fromData.pass">
+          <input type="text" :placeholder="$t('LoginIndex.sryqm')" v-model="fromData.inviteCode">
           <div class="align-items-center justify-content-space-between mb-36">
             <div class="align-items-center hand-cursor" @click="toLogin()">
-              <div class="fs-14 fc-70">已有账号, </div>
-              <div class="fs-14 fc-12">去登录</div>
+              <div class="fs-14 fc-70">{{$t('LoginIndex.yyzh')}}, </div>
+              <div class="fs-14 fc-12">{{$t('LoginIndex.qdl')}}</div>
             </div>
           </div>
-          <div class="button-login fs-14 fc-12 text-align-center hand-cursor" @click="toRegister()">注册</div>
+          <div class="button-login fs-14 fc-12 text-align-center hand-cursor" @click="toRegister()">{{$t('LoginIndex.zc')}}</div>
       </div>
   </div>
 </template>
@@ -27,7 +27,7 @@
 <script>
   import getCheckCode from './module/getCheckCode.vue'
   import tools from "@/utils/tools";
-  import { register } from '@/api/api/member'
+  import { register } from '@/api/member'
 
   export default {
     components: {

+ 1 - 1
vue.config.js

@@ -19,7 +19,7 @@ module.exports = defineConfig({
         }
       },
       '/adminApi': {
-        target: 'http://adminapi.xibohong.cn/adminApi/',
+        target: 'http://api.xibohong.cn/api/',
         changeOrigin: true,
         pathRewrite: {
           '^/adminApi': ''

+ 88 - 1
yarn.lock

@@ -2571,6 +2571,15 @@
     "execa" "^1.0.0"
     "is-wsl" "^2.1.1"
 
+"cliui@^6.0.0":
+  "integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="
+  "resolved" "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz"
+  "version" "6.0.0"
+  dependencies:
+    "string-width" "^4.2.0"
+    "strip-ansi" "^6.0.0"
+    "wrap-ansi" "^6.2.0"
+
 "cliui@^7.0.2", "cliui@^7.0.4":
   "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="
   "resolved" "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz"
@@ -3061,6 +3070,11 @@
   dependencies:
     "ms" "2.0.0"
 
+"decamelize@^1.2.0":
+  "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+  "resolved" "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz"
+  "version" "1.2.0"
+
 "deep-is@^0.1.3", "deep-is@~0.1.3":
   "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
   "resolved" "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz"
@@ -3164,6 +3178,11 @@
   dependencies:
     "utility" "0.1.11"
 
+"dijkstrajs@^1.0.1":
+  "integrity" "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+  "resolved" "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz"
+  "version" "1.0.3"
+
 "dir-glob@^3.0.1":
   "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="
   "resolved" "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz"
@@ -4049,7 +4068,7 @@
   "resolved" "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
   "version" "1.0.0-beta.2"
 
-"get-caller-file@^2.0.5":
+"get-caller-file@^2.0.1", "get-caller-file@^2.0.5":
   "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
   "resolved" "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz"
   "version" "2.0.5"
@@ -5848,6 +5867,11 @@
   "resolved" "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz"
   "version" "1.3.6"
 
+"pngjs@^5.0.0":
+  "integrity" "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+  "resolved" "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz"
+  "version" "5.0.0"
+
 "portfinder@^1.0.26":
   "integrity" "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg=="
   "resolved" "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz"
@@ -6252,6 +6276,15 @@
   "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
   "version" "1.3.2"
 
+"qrcode@^1.5.4":
+  "integrity" "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg=="
+  "resolved" "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz"
+  "version" "1.5.4"
+  dependencies:
+    "dijkstrajs" "^1.0.1"
+    "pngjs" "^5.0.0"
+    "yargs" "^15.3.1"
+
 "qs@^6.4.0", "qs@6.10.3":
   "integrity" "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ=="
   "resolved" "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz"
@@ -6475,6 +6508,11 @@
   "resolved" "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz"
   "version" "2.0.2"
 
+"require-main-filename@^2.0.0":
+  "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+  "resolved" "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz"
+  "version" "2.0.0"
+
 "requires-port@^1.0.0":
   "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
   "resolved" "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz"
@@ -6757,6 +6795,11 @@
     "parseurl" "~1.3.3"
     "send" "0.18.0"
 
+"set-blocking@^2.0.0":
+  "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+  "resolved" "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz"
+  "version" "2.0.0"
+
 "setimmediate@^1.0.4":
   "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
   "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
@@ -7833,6 +7876,11 @@
     "is-string" "^1.0.5"
     "is-symbol" "^1.0.3"
 
+"which-module@^2.0.0":
+  "integrity" "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+  "resolved" "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz"
+  "version" "2.0.1"
+
 "which-typed-array@^1.1.2":
   "integrity" "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw=="
   "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz"
@@ -7891,6 +7939,15 @@
     "string-width" "^2.1.1"
     "strip-ansi" "^4.0.0"
 
+"wrap-ansi@^6.2.0":
+  "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="
+  "resolved" "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
+  "version" "6.2.0"
+  dependencies:
+    "ansi-styles" "^4.0.0"
+    "string-width" "^4.1.0"
+    "strip-ansi" "^6.0.0"
+
 "wrap-ansi@^7.0.0":
   "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
   "resolved" "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
@@ -7938,6 +7995,11 @@
   "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
   "version" "4.0.2"
 
+"y18n@^4.0.0":
+  "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+  "resolved" "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz"
+  "version" "4.0.3"
+
 "y18n@^5.0.5":
   "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
   "resolved" "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz"
@@ -7963,11 +8025,36 @@
   "resolved" "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz"
   "version" "1.10.2"
 
+"yargs-parser@^18.1.2":
+  "integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="
+  "resolved" "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz"
+  "version" "18.1.3"
+  dependencies:
+    "camelcase" "^5.0.0"
+    "decamelize" "^1.2.0"
+
 "yargs-parser@^20.2.2":
   "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
   "resolved" "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz"
   "version" "20.2.9"
 
+"yargs@^15.3.1":
+  "integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="
+  "resolved" "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz"
+  "version" "15.4.1"
+  dependencies:
+    "cliui" "^6.0.0"
+    "decamelize" "^1.2.0"
+    "find-up" "^4.1.0"
+    "get-caller-file" "^2.0.1"
+    "require-directory" "^2.1.1"
+    "require-main-filename" "^2.0.0"
+    "set-blocking" "^2.0.0"
+    "string-width" "^4.2.0"
+    "which-module" "^2.0.0"
+    "y18n" "^4.0.0"
+    "yargs-parser" "^18.1.2"
+
 "yargs@^16.0.0":
   "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="
   "resolved" "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz"