| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- <template>
- <el-form
- ref="formRef"
- :show-label="false"
- :show-require-mark="false"
- size="large"
- :model="formInline"
- :rules="rules"
- >
- <el-form-item prop="username">
- <el-input v-model="formInline.username" placeholder="请输入用户名">
- <template #prefix>
- <el-icon class="el-input__icon" size="18" color="#808695">
- <PersonOutline />
- </el-icon>
- </template>
- </el-input>
- </el-form-item>
- <el-form-item prop="mobile">
- <div class="flex w-full">
- <el-input class="order-first" v-model="formInline.mobile" placeholder="请输入手机号码">
- <template #prefix>
- <el-icon class="el-input__icon" size="18" color="#808695">
- <MobileOutlined />
- </el-icon>
- </template>
- </el-input>
- <el-button class="order-last ml-3" :disabled="isGetCode" @click="getCode"
- >{{ codeMsg }}<span v-if="isGetCode">s</span>
- </el-button>
- </div>
- </el-form-item>
- <el-form-item prop="code">
- <el-input v-model="formInline.code" placeholder="请输入验证码">
- <template #prefix>
- <el-icon class="el-input__icon" size="18" color="#808695">
- <SafetyOutlined />
- </el-icon>
- </template>
- </el-input>
- </el-form-item>
- <el-form-item prop="password">
- <el-input
- v-model="formInline.password"
- type="password"
- show-password
- placeholder="请输入密码"
- >
- <template #prefix>
- <el-icon class="el-input__icon" size="18" color="#808695">
- <LockClosedOutline />
- </el-icon>
- </template>
- </el-input>
- </el-form-item>
- <el-form-item prop="retPassword">
- <el-input
- v-model="formInline.retPassword"
- type="password"
- show-password
- placeholder="请再次输入密码"
- @keyup.enter="handleSubmit"
- >
- <template #prefix>
- <el-icon class="el-input__icon" size="18" color="#808695">
- <LockClosedOutline />
- </el-icon>
- </template>
- </el-input>
- </el-form-item>
- <el-form-item class="default-color" prop="agreement">
- <div class="flex justify-between">
- <div class="flex-initial">
- <el-checkbox v-model="formInline.agreement">我同意隐私协议</el-checkbox>
- </div>
- </div>
- </el-form-item>
- <el-form-item :show-label="false">
- <el-button
- class="w-full"
- type="primary"
- @click="handleSubmit"
- size="large"
- :loading="loading"
- >
- 注册
- </el-button>
- </el-form-item>
- <el-form-item :show-label="false">
- <el-button class="w-full" size="large" block @click="backLogin">返回</el-button>
- </el-form-item>
- </el-form>
- </template>
- <script lang="ts" setup>
- import { reactive, ref } from 'vue';
- import { ElMessage } from 'element-plus';
- import { PersonOutline, LockClosedOutline } from '@vicons/ionicons5';
- import { MobileOutlined, SafetyOutlined } from '@vicons/antd';
- const formRef = ref();
- const loading = ref(false);
- const codeMsg: any = ref('获取验证码');
- const isGetCode = ref(false);
- const emit = defineEmits(['backLogin']);
- const formInline = reactive({
- username: '',
- password: '',
- retPassword: '',
- mobile: '',
- code: '',
- agreement: false,
- });
- const rules = {
- username: { required: true, message: '请输入用户名', trigger: 'blur' },
- mobile: { required: true, message: '请输入手机号码', trigger: 'blur' },
- code: { required: true, message: '请输入短信验证码', trigger: 'blur' },
- password: { required: true, message: '请输入密码', trigger: 'blur' },
- retPassword: { required: true, message: '请输入确认密码', trigger: 'blur' },
- agreement: {
- required: true,
- type: 'boolean',
- trigger: 'change',
- message: '请先勾选协议',
- validator: (_, value) => value === true,
- },
- };
- const handleSubmit = () => {
- loading.value = true;
- formRef.value.validate(async (valid) => {
- if (valid) {
- ElMessage.success('注册准备就绪');
- loading.value = false;
- } else {
- loading.value = false;
- ElMessage({
- message: '请填写完整信息',
- type: 'error',
- });
- }
- });
- };
- const backLogin = () => {
- emit('backLogin');
- };
- function getCode() {
- codeMsg.value = 60;
- isGetCode.value = true;
- let time = setInterval(() => {
- codeMsg.value--;
- if (codeMsg.value <= 0) {
- clearInterval(time);
- codeMsg.value = '获取验证码';
- isGetCode.value = false;
- }
- }, 1000);
- }
- </script>
|