<template>
|
<div class="verification-code-login-form-wrapper">
|
<nut-form class="verification-code-login-form" ref="formRef" :model-value="form" :rules="rules">
|
<nut-form-item label="" class="bole-form-item" prop="userName" required>
|
<nut-input
|
v-model.trim="form.userName"
|
class="bole-input-text"
|
placeholder="请输入账号/手机号/邮箱"
|
type="text"
|
/>
|
</nut-form-item>
|
<nut-form-item label="" class="bole-form-item" prop="userPassword" required>
|
<nut-input
|
v-model.trim="form.userPassword"
|
class="bole-input-text"
|
placeholder="请输入密码"
|
:type="isShowPassword ? 'text' : 'password'"
|
:key="isShowPassword ? 'text' : 'password'"
|
>
|
<template #right>
|
<div class="password-icon-wrapper" @click="isShowPassword = !isShowPassword">
|
<Eye v-if="isShowPassword"></Eye>
|
<Marshalling v-else></Marshalling>
|
</div>
|
</template>
|
</nut-input>
|
</nut-form-item>
|
</nut-form>
|
<LargeButton class="login-btn" @click="handleLogin" :loading="form.loading">登录</LargeButton>
|
<div class="go-register-btn" @click="goRegister">立即注册</div>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { Message } from '@/utils';
|
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
|
import { useLoginedJump } from '@/hooks';
|
import { useUserStore } from '@/stores/modules/user';
|
import { Eye, Marshalling } from '@nutui/icons-vue-taro';
|
import Taro from '@tarojs/taro';
|
|
defineOptions({
|
name: 'AccountLoginForm',
|
});
|
|
type Props = {
|
policyChecked?: boolean;
|
};
|
|
const props = withDefaults(defineProps<Props>(), {});
|
|
const userStore = useUserStore();
|
|
const { jump } = useLoginedJump();
|
|
const isShowPassword = ref(false);
|
|
const formRef = ref(null);
|
|
const form = reactive({
|
loading: false,
|
userName: '',
|
userPassword: '',
|
});
|
|
const rules = reactive<FormRules>({
|
userName: [{ required: true, message: '请输入账号/手机号/邮箱' }],
|
userPassword: [{ required: true, message: '请输入密码' }],
|
});
|
|
async function handleLogin() {
|
try {
|
if (props.policyChecked) {
|
const { valid } = await formRef.value.validate();
|
if (valid) {
|
form.loading = true;
|
await userStore.loginByPassword({
|
userName: form.userName,
|
userPassword: form.userPassword,
|
});
|
jump();
|
}
|
} else {
|
noAccess();
|
}
|
} catch (error) {
|
} finally {
|
form.loading = false;
|
}
|
}
|
|
function noAccess() {
|
Message.warning('请先阅读并勾选协议');
|
}
|
|
function goRegister() {
|
console.log('RouterPath.registerForm: ', RouterPath.registerForm);
|
RouteHelper.navigateTo({
|
url: RouterPath.registerForm,
|
});
|
}
|
</script>
|
|
<style lang="scss">
|
@import '@/styles/common.scss';
|
|
.verification-code-login-form-wrapper {
|
.password-icon-wrapper {
|
padding: 0 10px;
|
display: inline-flex;
|
|
.nutui-iconfont {
|
font-size: 28px;
|
}
|
}
|
}
|
</style>
|