| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <template>
- <view class=" w-[80vw]">
- <cl-form-item prop="username" required :pt="{
- className: '!mb-4'
- }" :rules="[
- {
- required: true,
- message: '手机号不能为空'
- }
- ] as ClFormRule[]
- ">
- <cl-input clearable class="" :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" v-model="form.username"
- placeholder="请输入手机号(必填)"></cl-input>
- </cl-form-item>
- <cl-form-item prop="password" required :pt="{
- className: '!mb-4'
- }" :rules="[
- {
- required: true,
- message: '密码不能为空'
- }, {
- min: 6,
- max: 12,
- message: '密码长度必须在6到16位之间'
- }
- ] as ClFormRule[]
- ">
- <cl-input :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" clearable v-model="form.password" password
- placeholder="请输入密码(必填)">
- </cl-input>
- </cl-form-item>
- <cl-form-item prop="confirmPassword" required :pt="{
- className: '!mb-4'
- }" :rules="[
- {
- required: true,
- message: '确认密码不能为空'
- }, {
- validator: (val: string) => val === form.password,
- message: '两次密码输入不一致'
- }
- ] as ClFormRule[]
- ">
- <cl-input :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" clearable v-model="form.confirmPassword"
- password placeholder="请确认密码(必填)">
- </cl-input>
- </cl-form-item>
- <cl-form-item prop="code" required :pt="{
- className: '!mb-4'
- }" :rules="[
- {
- required: true,
- message: '验证码不能为空'
- }
- ] as ClFormRule[]
- ">
- <cl-input :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" v-model="form.code" :clearable="false"
- type="number" placeholder="请输入验证码(必填)">
- </cl-input>
- <view class="absolute right-0">
- <sms-btn :ref="refs.set('smsBtn')" :phone="form.username"></sms-btn>
- </view>
- </cl-form-item>
- <cl-form-item :pt="{
- className: '!mb-4'
- }" prop="nickName">
- <cl-input clearable :pt="{ className: '!h-[40px] !rounded-xxl !px-4 !w-[80vw]' }" v-model="form.nickName"
- placeholder="请输入昵称(可选)"></cl-input>
- </cl-form-item>
- </view>
- </template>
- <script setup lang="ts">
- import { type PropType } from "vue";
- import type { LoginForm } from "./types";
- import { useRefs, } from "@/.cool";
- import SmsBtn from "./sms-btn.uvue";
- const props = defineProps({
- form: {
- type: Object as PropType<LoginForm>,
- default: () => ({})
- }
- });
- const emit = defineEmits(["success"]);
- const refs = useRefs();
- </script>
|