Commit 7cf532f1 authored by liangjingpeng's avatar liangjingpeng

注册

parent d6aa804e
<template>
<!-- <div v-if="getShow">-->
<Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef">
<FormItem name="account" class="enter-x">
<Input
class="fix-auto-fill"
size="large"
v-model:value="formData.account"
placeholder="请输入用户名"
:placeholder="t('sys.login.userName')"
/>
</FormItem>
<FormItem name="mobile" class="enter-x">
<Input
size="large"
v-model:value="formData.mobile"
:placeholder="t('sys.login.mobile')"
class="fix-auto-fill"
/>
</FormItem>
<FormItem name="sms" class="enter-x">
<CountdownInput
size="large"
class="fix-auto-fill"
v-model:value="formData.sms"
:placeholder="t('sys.login.smsCode')"
/>
</FormItem>
<FormItem name="password" class="enter-x">
<InputPassword
size="large"
v-model:value="formData.password"
placeholder="请输入密码"
:placeholder="t('sys.login.password')"
/>
</FormItem>
<FormItem name="confirmPassword" class="enter-x">
<InputPassword
size="large"
visibilityToggle
v-model:value="formData.confirmPassword"
placeholder="请输入重复密码"
:placeholder="t('sys.login.confirmPassword')"
/>
</FormItem>
<FormItem class="enter-x" name="policy">
<!-- No logic, you need to deal with it yourself -->
<Checkbox v-model:checked="formData.policy" size="small">
{{ t('sys.login.policy') }}
</Checkbox>
</FormItem>
<Button
type="primary"
class="enter-x"
size="large"
block
@click="handleRegister"
:loading="loading"
>
{{ t('sys.login.registerButton') }}
</Button>
<!-- <Button size="large" block class="mt-4 enter-x" @click="handleBackLogin">-->
<!-- {{ t('sys.login.backSignIn') }}-->
<!-- </Button>-->
</Form>
<!-- </div>-->
</template>
<script lang="ts" setup>
import { reactive, ref, unref, computed } from 'vue';
import { Form, Input, Button, Checkbox } from 'ant-design-vue';
import { StrengthMeter } from '@/components/StrengthMeter';
import { CountdownInput } from '@/components/CountDown';
import { useI18n } from '@/hooks/web/useI18n';
import { useLoginState, useFormRules, useFormValid, LoginStateEnum } from '../Login/useLogin';
const FormItem = Form.Item;
const InputPassword = Input.Password;
const { t } = useI18n();
const { handleBackLogin, getLoginState } = useLoginState();
const formRef = ref();
const loading = ref(false);
const formData = reactive({
account: '',
password: '',
confirmPassword: '',
mobile: '',
sms: '',
policy: false,
});
const { getFormRules } = useFormRules(formData);
const { validForm } = useFormValid(formRef);
const getShow = computed(() => unref(getLoginState) === LoginStateEnum.REGISTER);
async function handleRegister() {
const data = await validForm();
if (!data) return;
console.log(data);
}
</script>
<template> <template>
<div id="login"> <div id="register">
<el-container> <el-container>
<el-header class="header"> <el-header class="header">
<div @click="handleTitle" class="official-title"> 数据要素交易服务平台 </div> <div @click="handleTitle" class="official-title"> 数据要素交易服务平台 </div>
<div class="分割线"></div> <div class="分割线"></div>
<div class="title-right">注册</div> <div class="title-right">注册</div>
</el-header> </el-header>
<div class="login-box"> <div class="register-box">
<div class="login-win"> <div class="register-win">
<div class="login-title"> <div class="win-box">
<span class="login-title-text">用户登录</span> <div class="register-title">
<span class="register-title-text">欢迎注册</span>
</div>
<RegisterForm/>
</div> </div>
<LoginForm/>
</div> </div>
</div> </div>
</el-container> </el-container>
...@@ -20,11 +22,11 @@ ...@@ -20,11 +22,11 @@
<script> <script>
import Icon from '@/components/Icon/Icon.vue'; import Icon from '@/components/Icon/Icon.vue';
import LoginForm from '.././Login/LoginForm.vue'; import RegisterForm from "./RegisterForm.vue";
export default { export default {
name: 'register', name: 'register',
components: { LoginForm, Icon }, components: {RegisterForm, Icon },
data() { data() {
return {}; return {};
}, },
...@@ -42,7 +44,7 @@ export default { ...@@ -42,7 +44,7 @@ export default {
body { body {
margin: 0; margin: 0;
} }
#login { #register {
min-width: 1366px; min-width: 1366px;
width: auto; width: auto;
position: relative; position: relative;
...@@ -92,34 +94,40 @@ body { ...@@ -92,34 +94,40 @@ body {
background-color: #dce7fb; background-color: #dce7fb;
} }
.login-box { .register-box {
width: 100%; width: 100%;
aspect-ratio: 1920 / 863; /* 或者其他的宽高比 */ aspect-ratio: 1920 / 863; /* 或者其他的宽高比 */
position: relative; position: relative;
.login-win { .register-win {
width: 427px; width: 75%;
height: 479px; height: 75%;
background: #fdfdfd; background: #fdfdfd;
outline: 10px solid rgba(255, 255, 255, 0.25);
border-radius: 8px; border-radius: 8px;
position: absolute; position: absolute;
left: 60%; left: 50%;
top: 50%; top: 50%;
transform: translateY(-50%); transform: translate(-50%, -50%);
.login-title {
margin: 50px 0 30px 16px;
.win-box{
width: 30%;
margin: 0 auto;
.login-title-text{ .register-title {
width: 128px; margin: 50px 0 30px 16px;
height: 48px;
color: #3f3f3f;
font-size: 32px; .register-title-text{
font-weight: 700; width: 128px;
height: 48px;
color: #3f3f3f;
font-size: 32px;
font-weight: 700;
}
} }
} }
} }
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment