From fcb00a66b4053550b473a29d7299c7a4737eea75 Mon Sep 17 00:00:00 2001
From: lxf <1371462558@qq.com>
Date: Wed, 16 Jul 2025 14:41:04 +0800
Subject: [PATCH] 翻译
---
src/page/login/index.vue | 542 ++++++++++++++++++++++++++++--------------------------
1 files changed, 282 insertions(+), 260 deletions(-)
diff --git a/src/page/login/index.vue b/src/page/login/index.vue
index f689614..82a749d 100644
--- a/src/page/login/index.vue
+++ b/src/page/login/index.vue
@@ -1,280 +1,302 @@
<template>
- <div class="login">
- <div class="top" @click="$router.push('/home')"><img
- :src="require(`../../assets/theme/${theme}/image/Union.png`)" alt="" /></div>
- <div class="title textColor">{{ $t('登录') }}</div>
- <div class="flex login-tab">
- <!-- <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ $t('账号') }}</div>-->
- <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">{{ $t('邮箱') }}
- </div>
- <!-- <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{ $t('手机号') }}
+ <div class="login">
+ <div class="top" @click="$router.push('/home')">
+ <img
+ :src="require(`../../assets/theme/${theme}/image/Union.png`)"
+ alt=""
+ />
+ </div>
+ <div class="title textColor">{{ $t("登录") }}</div>
+ <div class="flex login-tab">
+ <!-- <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{ $t('账号') }}</div>-->
+ <div
+ class="textColor1"
+ :class="activeIndex == 1 ? 'active' : ''"
+ @click="changeIndex(1)"
+ >
+ {{ $t("邮箱") }}
+ </div>
+ <!-- <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{ $t('手机号') }}
</div> -->
- </div>
- <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)"
- v-model="username" :dialCode="dialCode" @selectArea="onSelectArea" :area="isArea" :icon="icon" />
- <ExInput style="padding-bottom:0!important;" :label="$t('密码')" :placeholderText="$t('请输入您的密码')"
- v-model="password" typeText="password" />
- <div class="forget colorMain" @click="$router.push('/forget')">{{ $t('忘记密码?') }}</div>
- <div class="btn btnMain" @click="verifyLogin">{{ $t('登录') }}</div>
- <!-- <div class="btn btnMain" @click="loginButton">{{ $t('登录') }}</div> -->
- <div class="noTips textColor">{{ $t('还没有账号') }}<span class="colorMain" @click="$router.push('/register')">
- {{ $t('去注册') }}</span>
- </div>
- <nationality-list ref='controlChild' :title="$t('选择区域码')" @getName="getName(arguments)"></nationality-list>
- </div>
+ </div>
+ <ExInput
+ :label="getRegType(activeIndex, true)"
+ :placeholderText="getRegType(activeIndex, false)"
+ v-model="username"
+ :dialCode="dialCode"
+ @selectArea="onSelectArea"
+ :area="isArea"
+ :icon="icon"
+ />
+ <ExInput
+ style="padding-bottom: 0 !important"
+ :label="$t('密码')"
+ :placeholderText="$t('请输入您的密码')"
+ v-model="password"
+ typeText="password"
+ />
+ <div class="forget colorMain" @click="$router.push('/forget')">
+ {{ $t("忘记密码?") }}
+ </div>
+ <div class="btn" @click="verifyLogin">{{ $t("登录") }}</div>
+ <!-- <div class="btn btnMain" @click="loginButton">{{ $t('登录') }}</div> -->
+ <div class="noTips textColor">
+ {{ $t("还没有账号")
+ }}<span class="colorMain" @click="$router.push('/register')">
+ {{ $t("去注册") }}</span
+ >
+ </div>
+ <nationality-list
+ ref="controlChild"
+ :title="$t('选择区域码')"
+ @getName="getName(arguments)"
+ ></nationality-list>
+ </div>
</template>
<script>
- import ExInput from "@/components/ex-input";
- import Axios from "@/API/login.js";
- import {
- mapActions,
- mapGetters
- } from 'vuex';
- import {
- GET_USERINFO,
- SET_CONFIG,
- SET_KEFU
- } from '@/store/const.store';
- import nationalityList from '../authentication/components/nationalityList.vue';
- import {
- ethers
- } from 'ethers';
- export default {
- props: {
+import ExInput from "@/components/ex-input";
+import Axios from "@/API/login.js";
+import { mapActions, mapGetters } from "vuex";
+import { GET_USERINFO, SET_CONFIG, SET_KEFU } from "@/store/const.store";
+import nationalityList from "../authentication/components/nationalityList.vue";
+import { ethers } from "ethers";
+export default {
+ props: {},
+ components: {
+ ExInput,
+ nationalityList,
+ },
+ data() {
+ return {
+ username: "",
+ password: "",
+ activeIndex: 1,
+ isArea: false,
+ typeText: "password",
+ dialCode: 0, //电话号前缀
+ icon: "",
+ };
+ },
+ computed: {
+ ...mapGetters({
+ theme: "home/theme",
+ }),
+ },
+ mounted() {
+ // this.loginButton()
+ },
+ methods: {
+ ...mapActions("user", [GET_USERINFO, SET_CONFIG]),
+ async loginButton() {
+ // 检查钱包是否存在
+ if (typeof window.ethereum !== "undefined") {
+ try {
+ // 请求用户授权
+ const accounts = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ });
+ const userAddress = accounts[0];
+ console.log("accounts,accountsaccounts", accounts);
+ // 签名消息
+ const message = "请确认您的身份。";
+ const signature = await window.ethereum.request({
+ method: "personal_sign",
+ params: [message, userAddress],
+ });
+ // const email = prompt("请输入您的邮箱地址:");
+ // if (!email) {
+ // alert("邮箱地址是必填项!");
+ // return;
+ // }
+ // 发送用户地址和签名到后端
+ await this.registerOrLoginUser(userAddress, signature, message);
+ } catch (error) {
+ console.error("连接钱包时出错:", error);
+ }
+ } else {
+ alert("Please install Little Fox Wallet!");
+ // this.$router.go(-1)
+ this.$router.replace("/home");
+ }
+ },
+ async registerOrLoginUser(userAddress, signature, message) {
+ console.log(userAddress);
+ console.log(signature);
+ console.log(message);
- },
- components: {
- ExInput,
- nationalityList
- },
- data() {
- return {
- username: '',
- password: "",
- activeIndex: 1,
- isArea: false,
- typeText: "password",
- dialCode: 0, //电话号前缀
- icon: '',
- }
- },
- computed: {
- ...mapGetters({
- theme: 'home/theme'
- }),
- },
- mounted() {
- // this.loginButton()
- },
- methods: {
- ...mapActions('user', [GET_USERINFO, SET_CONFIG]),
- async loginButton() {
- // 检查钱包是否存在
- if (typeof window.ethereum !== 'undefined') {
- try {
- // 请求用户授权
- const accounts = await window.ethereum.request({
- method: 'eth_requestAccounts'
- });
- const userAddress = accounts[0];
- console.log("accounts,accountsaccounts", accounts);
- // 签名消息
- const message = "请确认您的身份。";
- const signature = await window.ethereum.request({
- method: 'personal_sign',
- params: [message, userAddress],
- });
- // const email = prompt("请输入您的邮箱地址:");
- // if (!email) {
- // alert("邮箱地址是必填项!");
- // return;
- // }
- // 发送用户地址和签名到后端
- await this.registerOrLoginUser(userAddress, signature, message);
- } catch (error) {
- console.error('连接钱包时出错:', error);
- }
- } else {
- alert('Please install Little Fox Wallet!');
- // this.$router.go(-1)
- this.$router.replace('/home')
- }
- },
- async registerOrLoginUser(userAddress, signature, message) {
- console.log(userAddress, );
- console.log(signature);
- console.log(message);
-
+ // const response = await fetch('https://your-api-endpoint/register-or-login', {
+ // method: 'POST',
+ // headers: {
+ // 'Content-Type': 'application/json',
+ // },
+ // body: JSON.stringify({ address: userAddress, signature, message }),
+ // });
-
- // const response = await fetch('https://your-api-endpoint/register-or-login', {
- // method: 'POST',
- // headers: {
- // 'Content-Type': 'application/json',
- // },
- // body: JSON.stringify({ address: userAddress, signature, message }),
- // });
-
- // const data = await response.json();
- // if (data.success) {
- // // 保存用户信息和 token
- // localStorage.setItem('userToken', data.token);
- // localStorage.setItem('userAddress', userAddress);
- // // 导航到主界面或显示成功信息
- // } else {
- // console.error(data.message);
- // }
- },
- getRegType(activeIndex, bFlag) {
- switch (activeIndex) {
- case 0:
- return bFlag ? this.$t('账号') : this.$t('请输入账号');
- case 1:
- return bFlag ? this.$t('邮箱') : this.$t('请输入您的邮箱');
- case 2:
- return bFlag ? this.$t('手机号') : this.$t('请输入手机号');
- }
- },
- onSelectArea() {
- this.openBtn();
- },
- //打开国家列表底部弹窗
- openBtn() {
- this.$refs.controlChild.open();
- },
- //获取到当前选中国家的code值
- getName(params) {
- this.icon = params[1];
- this.dialCode = params[2];
- },
- changeIndex(index) {
- this.activeIndex = index;
- switch (index) {
- case 0:
- case 1: {
- this.isArea = false;
- break;
- }
- case 2: {
- this.isArea = true;
- break;
- }
- }
- },
- verifyLogin() {
- if (this.username == '') {
- switch (this.activeIndex) {
- case 0: {
- this.$toast(this.$t('请输入账号'));
- break;
- }
- case 1: {
- this.$toast(this.$t('请输入邮箱'));
- break;
- }
- case 2: {
- this.$toast(this.$t('请输入手机号'));
- break;
- }
- }
- return false
- }
- if (this.password == '') {
- this.$toast(this.$t('请输入密码'));
- return false
- }
- this.login()
- },
- async login() {
- Axios.loginUser({
- username: (this.activeIndex == 0 || this.activeIndex == 1) ? this.username :
- `${this.username}`,
- password: this.password,
- re_password: this.repassword,
- type: this.type,
- usercode: this.invitCode,
- }).then((res) => {
- this.GET_USERINFO(res.data)
- this.SET_CONFIG() //获取判断是否乘以杠杆字段
- this.$router.push('/home')
- }).catch((error) => {
- if (error.code === 'ECONNABORTED') {
- this.$toast(this.$t('网络超时!'));
- } else if (error.msg !== undefined) {
- this.$toast(this.$t(error.msg));
- }
- });
- }
- }
- }
+ // const data = await response.json();
+ // if (data.success) {
+ // // 保存用户信息和 token
+ // localStorage.setItem('userToken', data.token);
+ // localStorage.setItem('userAddress', userAddress);
+ // // 导航到主界面或显示成功信息
+ // } else {
+ // console.error(data.message);
+ // }
+ },
+ getRegType(activeIndex, bFlag) {
+ switch (activeIndex) {
+ case 0:
+ return bFlag ? this.$t("账号") : this.$t("请输入账号");
+ case 1:
+ return bFlag ? this.$t("邮箱") : this.$t("请输入您的邮箱");
+ case 2:
+ return bFlag ? this.$t("手机号") : this.$t("请输入手机号");
+ }
+ },
+ onSelectArea() {
+ this.openBtn();
+ },
+ //打开国家列表底部弹窗
+ openBtn() {
+ this.$refs.controlChild.open();
+ },
+ //获取到当前选中国家的code值
+ getName(params) {
+ this.icon = params[1];
+ this.dialCode = params[2];
+ },
+ changeIndex(index) {
+ this.activeIndex = index;
+ switch (index) {
+ case 0:
+ case 1: {
+ this.isArea = false;
+ break;
+ }
+ case 2: {
+ this.isArea = true;
+ break;
+ }
+ }
+ },
+ verifyLogin() {
+ if (this.username == "") {
+ switch (this.activeIndex) {
+ case 0: {
+ this.$toast(this.$t("请输入账号"));
+ break;
+ }
+ case 1: {
+ this.$toast(this.$t("请输入邮箱"));
+ break;
+ }
+ case 2: {
+ this.$toast(this.$t("请输入手机号"));
+ break;
+ }
+ }
+ return false;
+ }
+ if (this.password == "") {
+ this.$toast(this.$t("请输入密码"));
+ return false;
+ }
+ this.login();
+ },
+ async login() {
+ Axios.loginUser({
+ username:
+ this.activeIndex == 0 || this.activeIndex == 1
+ ? this.username
+ : `${this.username}`,
+ password: this.password,
+ re_password: this.repassword,
+ type: this.type,
+ usercode: this.invitCode,
+ })
+ .then((res) => {
+ this.GET_USERINFO(res.data);
+ this.SET_CONFIG(); //获取判断是否乘以杠杆字段
+ this.$router.push("/home");
+ })
+ .catch((error) => {
+ if (error.code === "ECONNABORTED") {
+ this.$toast(this.$t("网络超时!"));
+ } else if (error.msg !== undefined) {
+ this.$toast(this.$t(error.msg));
+ }
+ });
+ },
+ },
+};
</script>
<style lang="scss" scoped>
- .login {
- width: 100%;
- padding: 30px;
- font-size: 26px;
- box-sizing: border-box;
- }
+.login {
+ width: 100%;
+ padding: 30px;
+ font-size: 26px;
+ box-sizing: border-box;
+}
- .top {
- padding-left: 18px;
- padding-top: 18px;
+.top {
+ padding-left: 18px;
+ padding-top: 18px;
- img {
- width: 37px;
- height: 37px;
- }
- }
+ img {
+ width: 37px;
+ height: 37px;
+ }
+}
- .title {
- font-weight: 700;
- font-size: 52px;
- margin-top: 54px;
- margin-bottom: 66px;
- }
+.title {
+ font-weight: 700;
+ font-size: 52px;
+ margin-top: 54px;
+ margin-bottom: 66px;
+}
- .login-tab {
- margin-bottom: 40px;
+.login-tab {
+ margin-bottom: 40px;
- div {
- padding: 0 40px;
- height: 68px;
- line-height: 68px;
- text-align: center;
- border-radius: 8px;
- margin-right: 20px;
- }
+ div {
+ padding: 0 40px;
+ height: 68px;
+ line-height: 68px;
+ text-align: center;
+ border-radius: 8px;
+ margin-right: 20px;
+ }
- .active {
- @include themify() {
- background: themed("tab_background");
- }
+ .active {
+ @include themify() {
+ background: themed("tab_background");
+ }
- @include themify() {
- color: themed("text_color");
- }
- }
- }
+ @include themify() {
+ color: themed("text_color");
+ }
+ }
+}
- .forget {
- font-size: 24px;
- line-height: 28px;
- margin-top: 18px;
- }
+.forget {
+ font-size: 24px;
+ line-height: 28px;
+ margin-top: 18px;
+}
- .btn {
- color: #fff;
- height: 88px;
- line-height: 88px;
- text-align: center;
- font-size: 35px;
- margin-top: 36px;
- border-radius: 10px;
- }
+.btn {
+ color: #fff;
+ height: 88px;
+ line-height: 88px;
+ text-align: center;
+ font-size: 35px;
+ margin-top: 36px;
+ border-radius: 10px;
+ background: #f7b328;
+}
- .noTips {
- margin-top: 44px;
- }
-</style>
\ No newline at end of file
+.noTips {
+ margin-top: 44px;
+}
+</style>
--
Gitblit v1.9.3