|
|
@@ -31,7 +31,7 @@ |
|
|
|
</el-tooltip> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-form-item prop="email"> |
|
|
|
<el-form-item prop="username"> |
|
|
|
<div class="text-white"> |
|
|
|
<svg-icon icon-class="user" /> |
|
|
|
</div> |
|
|
@@ -39,8 +39,8 @@ |
|
|
|
class="flex-1" |
|
|
|
ref="email" |
|
|
|
size="large" |
|
|
|
v-model="loginData.email" |
|
|
|
:placeholder="$t('login.email')" |
|
|
|
v-model="loginData.username" |
|
|
|
:placeholder="$t('login.username')" |
|
|
|
name="email" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
@@ -67,14 +67,14 @@ |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<!-- 验证码 --> |
|
|
|
<el-form-item prop="verifyCode"> |
|
|
|
<el-form-item prop="captcha"> |
|
|
|
<span class="text-white"> |
|
|
|
<svg-icon icon-class="verify_code" /> |
|
|
|
</span> |
|
|
|
<el-input |
|
|
|
v-model="loginData.verifyCode" |
|
|
|
v-model="loginData.captcha" |
|
|
|
auto-complete="off" |
|
|
|
:placeholder="$t('login.verifyCode')" |
|
|
|
:placeholder="$t('login.captcha')" |
|
|
|
class="flex-1" |
|
|
|
@keyup.enter="handleLogin" |
|
|
|
/> |
|
|
@@ -111,9 +111,6 @@ |
|
|
|
</el-button> |
|
|
|
|
|
|
|
<div :class="currentLan == 'zh-cn' ? 'bottomBtnCN' : 'bottomBtnEN'"> |
|
|
|
<div style="margin-bottom: 5px" @click="loginFlag(2)"> |
|
|
|
<span class="join">{{ $t("login.signUp") }}</span> |
|
|
|
</div> |
|
|
|
<div style="margin-bottom: 5px"> |
|
|
|
<span class="join" @click="loginFlag(7)">{{ |
|
|
|
$t("login.SMSLogin") |
|
|
@@ -126,188 +123,8 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-form> |
|
|
|
<!-- 注册账户 isLogin == 2--> |
|
|
|
<el-form |
|
|
|
v-if="isLogin == 2" |
|
|
|
ref="loginFormRef" |
|
|
|
:model="loginData2" |
|
|
|
:rules="loginRules" |
|
|
|
class="login-form" |
|
|
|
> |
|
|
|
<div class="flex text-white items-center"> |
|
|
|
<span class="flex-1 text-center">{{ |
|
|
|
$t("login.title") + " " + $t("login.register") |
|
|
|
}}</span> |
|
|
|
<el-tooltip |
|
|
|
class="box-item" |
|
|
|
effect="dark" |
|
|
|
:content="$t('navbar.LanguageChange')" |
|
|
|
placement="top-start" |
|
|
|
> |
|
|
|
<lang-select class="navItem" style="color: #ffffff" /> |
|
|
|
</el-tooltip> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-form-item prop="email"> |
|
|
|
<div class="text-white"> |
|
|
|
<svg-icon icon-class="user" /> |
|
|
|
</div> |
|
|
|
<el-input |
|
|
|
class="flex-1" |
|
|
|
ref="email" |
|
|
|
size="large" |
|
|
|
v-model="loginData2.email" |
|
|
|
:placeholder="$t('login.email')" |
|
|
|
name="email" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item prop="password"> |
|
|
|
<span class="text-white"> |
|
|
|
<svg-icon icon-class="password" /> |
|
|
|
</span> |
|
|
|
<el-input |
|
|
|
class="flex-1" |
|
|
|
v-model="loginData2.password" |
|
|
|
:placeholder="$t('login.password')" |
|
|
|
:type="passwordVisible === false ? 'password' : 'input'" |
|
|
|
size="large" |
|
|
|
name="password" |
|
|
|
/> |
|
|
|
<span class="mr-2" @click="passwordVisible = !passwordVisible"> |
|
|
|
<svg-icon |
|
|
|
:icon-class="passwordVisible === false ? 'eye' : 'eye-open'" |
|
|
|
class="text-white cursor-pointer" |
|
|
|
/> |
|
|
|
</span> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item prop="confirmPassword"> |
|
|
|
<span class="text-white"> |
|
|
|
<svg-icon icon-class="password" /> |
|
|
|
</span> |
|
|
|
<el-input |
|
|
|
class="flex-1" |
|
|
|
v-model="loginData2.confirmPassword" |
|
|
|
:placeholder="$t('login.confirmPassword')" |
|
|
|
:type="passwordVisible === false ? 'password' : 'input'" |
|
|
|
size="large" |
|
|
|
name="confirmPassword" |
|
|
|
@keyup.enter="handleRegister" |
|
|
|
/> |
|
|
|
<span class="mr-2" @click="passwordVisible = !passwordVisible"> |
|
|
|
<svg-icon |
|
|
|
:icon-class="passwordVisible === false ? 'eye' : 'eye-open'" |
|
|
|
class="text-white cursor-pointer" |
|
|
|
/> |
|
|
|
</span> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-button |
|
|
|
size="default" |
|
|
|
:loading="loading" |
|
|
|
type="primary" |
|
|
|
class="loginBtn" |
|
|
|
@click.prevent="handleRegister" |
|
|
|
> |
|
|
|
<el-icon |
|
|
|
v-if="isRegistering" |
|
|
|
style="margin-right: 10px" |
|
|
|
class="is-loading" |
|
|
|
> |
|
|
|
<svg |
|
|
|
viewBox="0 0 1024 1024" |
|
|
|
xmlns="http://www.w3.org/2000/svg" |
|
|
|
data-v-ea893728="" |
|
|
|
> |
|
|
|
<path |
|
|
|
fill="currentColor" |
|
|
|
d="M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z" |
|
|
|
></path> |
|
|
|
</svg> |
|
|
|
</el-icon> |
|
|
|
{{ $t("login.registerBtn") }} |
|
|
|
</el-button> |
|
|
|
|
|
|
|
<div :class="currentLan == 'zh-cn' ? 'bottomBtnCN' : 'bottomBtnEN'"> |
|
|
|
<div style="margin-bottom: 5px" @click="loginFlag(1)"> |
|
|
|
<span class="join">{{ $t("login.signIn") }}</span> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<span class="join" @click="loginFlag(3)">{{ |
|
|
|
$t("login.forgetPwd") |
|
|
|
}}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-form> |
|
|
|
<!-- 注册账户之后输入短信验证码 isLogin == 6--> |
|
|
|
<el-form |
|
|
|
v-if="isLogin == 6" |
|
|
|
ref="loginFormRef" |
|
|
|
:model="loginData6" |
|
|
|
:rules="loginRules" |
|
|
|
class="login-form" |
|
|
|
> |
|
|
|
<div class="flex text-white items-center"> |
|
|
|
<span class="flex-1 text-center">{{ |
|
|
|
$t("login.title") + " " + $t("login.register") |
|
|
|
}}</span> |
|
|
|
<el-tooltip |
|
|
|
class="box-item" |
|
|
|
effect="dark" |
|
|
|
:content="$t('navbar.LanguageChange')" |
|
|
|
placement="top-start" |
|
|
|
> |
|
|
|
<lang-select class="navItem" style="color: #ffffff" /> |
|
|
|
</el-tooltip> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-form-item prop="SMSCode"> |
|
|
|
<div class="text-white"> |
|
|
|
<svg-icon icon-class="user" /> |
|
|
|
</div> |
|
|
|
<el-input |
|
|
|
class="flex-1" |
|
|
|
ref="email" |
|
|
|
size="large" |
|
|
|
v-model="loginData6.SMSCode" |
|
|
|
:placeholder="$t('login.SMSCode')" |
|
|
|
name="email" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-button |
|
|
|
size="default" |
|
|
|
:loading="loading" |
|
|
|
type="primary" |
|
|
|
class="loginBtn" |
|
|
|
@click.prevent="handleRegister" |
|
|
|
> |
|
|
|
<el-icon |
|
|
|
v-if="isRegistering" |
|
|
|
style="margin-right: 10px" |
|
|
|
class="is-loading" |
|
|
|
> |
|
|
|
<svg |
|
|
|
viewBox="0 0 1024 1024" |
|
|
|
xmlns="http://www.w3.org/2000/svg" |
|
|
|
data-v-ea893728="" |
|
|
|
> |
|
|
|
<path |
|
|
|
fill="currentColor" |
|
|
|
d="M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z" |
|
|
|
></path> |
|
|
|
</svg> |
|
|
|
</el-icon> |
|
|
|
{{ $t("login.registerBtn") }} |
|
|
|
</el-button> |
|
|
|
|
|
|
|
<div :class="currentLan == 'zh-cn' ? 'bottomBtnCN' : 'bottomBtnEN'"> |
|
|
|
<div style="margin-bottom: 5px" @click="loginFlag(1)"> |
|
|
|
<span class="join">{{ $t("login.signIn") }}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-form> |
|
|
|
<!-- 忘记密码 isLogin == 3--> |
|
|
|
<el-form |
|
|
|
v-if="isLogin == 3" |
|
|
@@ -691,9 +508,6 @@ |
|
|
|
</el-button> |
|
|
|
|
|
|
|
<div :class="currentLan == 'zh-cn' ? 'bottomBtnCN' : 'bottomBtnEN'"> |
|
|
|
<div style="margin-bottom: 5px" @click="loginFlag(2)"> |
|
|
|
<span class="join">{{ $t("login.signUp") }}</span> |
|
|
|
</div> |
|
|
|
<div style="margin-bottom: 5px"> |
|
|
|
<span class="join" @click="loginFlag(1)">{{ |
|
|
|
$t("login.pwsLogin") |
|
|
@@ -786,8 +600,7 @@ |
|
|
|
import LangSelect from "@/components/LangSelect/index.vue"; |
|
|
|
import SvgIcon from "@/components/SvgIcon/index.vue"; |
|
|
|
import { |
|
|
|
register, |
|
|
|
login, |
|
|
|
loginApi, |
|
|
|
sendRegisterEmail, |
|
|
|
getCodeImgUrl, |
|
|
|
sendUpdPwdEmailApi, |
|
|
@@ -848,9 +661,9 @@ const isLogining = ref(false); |
|
|
|
const isRegistering = ref(false); |
|
|
|
|
|
|
|
const loginData = ref({ |
|
|
|
email: "", |
|
|
|
username: "", |
|
|
|
password: "", |
|
|
|
verifyCode: "", |
|
|
|
captcha: "", |
|
|
|
}); |
|
|
|
|
|
|
|
const loginData2 = ref({ |
|
|
@@ -882,6 +695,13 @@ const loginData8 = ref({ |
|
|
|
invitatioCode: "", |
|
|
|
}); |
|
|
|
const loginRules = ref({ |
|
|
|
username: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
trigger: "blur", |
|
|
|
validator: passwordValidator, |
|
|
|
}, |
|
|
|
], |
|
|
|
email: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
@@ -894,13 +714,13 @@ const loginRules = ref({ |
|
|
|
confirmPassword: [ |
|
|
|
{ required: true, trigger: "blur", validator: confirmPasswordValidator }, |
|
|
|
], |
|
|
|
verifyCode: [ |
|
|
|
captcha: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
trigger: "blur", |
|
|
|
message: |
|
|
|
currentLan.value == "zh-cn" |
|
|
|
? "请输入验证码" |
|
|
|
? "请输入验证码2" |
|
|
|
: "Please input verifyCode", |
|
|
|
}, |
|
|
|
], |
|
|
@@ -928,8 +748,8 @@ const loginRules = ref({ |
|
|
|
|
|
|
|
watch(currentLan, (newValue, oldValue) => { |
|
|
|
const loginRule = loginRules.value; |
|
|
|
loginRule.verifyCode[0].message = |
|
|
|
newValue == "zh-cn" ? "请输入验证码" : "Please input verifyCode"; |
|
|
|
loginRule.captcha[0].message = |
|
|
|
newValue == "zh-cn" ? "请输入验证码1" : "Please input verifyCode"; |
|
|
|
setTimeout(() => { |
|
|
|
loginFormRef.value.resetFields(); |
|
|
|
getInfo(); |
|
|
@@ -973,7 +793,7 @@ function getInfo() { |
|
|
|
const deCodeUserInfo = decodeURI(data as any); |
|
|
|
const userInfo = JSON.parse(deCodeUserInfo); |
|
|
|
if (userInfo) { |
|
|
|
loginData.value.email = userInfo.email ? userInfo.email : ""; |
|
|
|
loginData.value.username = userInfo.email ? userInfo.email : ""; |
|
|
|
loginData.value.password = userInfo.password ? userInfo.password : ""; |
|
|
|
} |
|
|
|
} |
|
|
@@ -1096,9 +916,9 @@ function handleLogin() { |
|
|
|
loginFormRef.value.validate((val: any) => { |
|
|
|
if (val) { |
|
|
|
const data = { |
|
|
|
phone: loginData.value.email, |
|
|
|
username: loginData.value.username, |
|
|
|
password: loginData.value.password, |
|
|
|
code: loginData.value.verifyCode, |
|
|
|
captcha: loginData.value.captcha, |
|
|
|
}; |
|
|
|
isLogining.value = true; |
|
|
|
doLogin(data); |
|
|
@@ -1114,25 +934,6 @@ function handleLogin() { |
|
|
|
} |
|
|
|
|
|
|
|
// 注册行为 |
|
|
|
function handleRegister() { |
|
|
|
loginFormRef.value.validate((val: any) => { |
|
|
|
if (val) { |
|
|
|
const data = { |
|
|
|
phone: loginData2.value.email, |
|
|
|
password: loginData2.value.password, |
|
|
|
}; |
|
|
|
isRegistering.value = true; |
|
|
|
doRegister(data); |
|
|
|
} else { |
|
|
|
const msg = |
|
|
|
currentLan.value == "zh-cn" |
|
|
|
? "请检查信息格式!" |
|
|
|
: "Please check the format !"; |
|
|
|
ElMessage.error(msg); |
|
|
|
return; |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
//#region 忘记密码 表单3 |
|
|
|
function sendEmailforgetPwd() { |
|
|
@@ -1376,33 +1177,6 @@ function getCode() { |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description:注册 |
|
|
|
* @param {Object} data |
|
|
|
* @return: data |
|
|
|
*/ |
|
|
|
async function doRegister(data: object) { |
|
|
|
const msg = |
|
|
|
currentLan.value == "zh-cn" ? "注册成功!" : "Registered successfully"; |
|
|
|
await register(data) |
|
|
|
.then((res) => { |
|
|
|
console.log(res, "res"); |
|
|
|
isRegistering.value = false; |
|
|
|
ElMessage.success(msg); |
|
|
|
isLogin.value = 1; |
|
|
|
// 注册成功将账号密码保存到本地 |
|
|
|
saveInfo(data); |
|
|
|
router.go(0); |
|
|
|
}) |
|
|
|
.catch((err) => { |
|
|
|
// 注册失败刷新验证码 |
|
|
|
getCode(); |
|
|
|
isRegistering.value = false; |
|
|
|
console.log(err, "err"); |
|
|
|
ElMessage.error(err.message); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @description:登录 |
|
|
|
* @param {Object} data |
|
|
@@ -1411,7 +1185,7 @@ async function doRegister(data: object) { |
|
|
|
async function doLogin(data: any) { |
|
|
|
const msg = |
|
|
|
currentLan.value == "zh-cn" ? "登录成功!" : "Welcome to Metavatar!"; |
|
|
|
await login(data) |
|
|
|
await loginApi(data) |
|
|
|
.then(async (res) => { |
|
|
|
console.log(res, "res"); |
|
|
|
localStorage.setItem("AccessToken", res.data.token); |
|
|
|