123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import { ref, computed, unref, Ref } from 'vue'
- import { useI18n } from '@/hooks/web/useI18n'
- export enum LoginStateEnum {
- LOGIN,
- REGISTER,
- RESET_PASSWORD,
- MOBILE,
- QR_CODE
- }
- const currentState = ref(LoginStateEnum.LOGIN)
- export function useLoginState() {
- function setLoginState(state: LoginStateEnum) {
- currentState.value = state
- }
- const getLoginState = computed(() => currentState.value)
- function handleBackLogin() {
- setLoginState(LoginStateEnum.LOGIN)
- }
- return {
- setLoginState,
- getLoginState,
- handleBackLogin
- }
- }
- export function useFormValid<T extends Object = any>(formRef: Ref<any>) {
- async function validForm() {
- const form = unref(formRef)
- if (!form) return
- const data = await form.validate()
- return data as T
- }
- return {
- validForm
- }
- }
- const getFormRules = computed(
- (): {
- [k: string]: ValidationRule | ValidationRule[]
- } => {
- const accountFormRule = unref(getAccountFormRule)
- const passwordFormRule = unref(getPasswordFormRule)
- const smsFormRule = unref(getSmsFormRule)
- const mobileFormRule = unref(getMobileFormRule)
- const mobileRule = {
- sms: smsFormRule,
- mobile: mobileFormRule
- }
- switch (unref(currentState)) {
- // register form rules
- case LoginStateEnum.REGISTER:
- return {
- account: accountFormRule,
- password: passwordFormRule,
- confirmPassword: [
- {
- validator: validateConfirmPassword(formData?.password),
- trigger: 'change'
- }
- ],
- policy: [
- {
- validator: validatePolicy,
- trigger: 'change'
- }
- ],
- ...mobileRule
- }
- // reset password form rules
- case LoginStateEnum.RESET_PASSWORD:
- return {
- account: accountFormRule,
- ...mobileRule
- }
- // mobile form rules
- case LoginStateEnum.MOBILE:
- return mobileRule
- // login form rules
- default:
- return {
- account: accountFormRule,
- password: passwordFormRule
- }
- }
- }
- )
- return {
- getFormRules
- }
- }
- function createRule(message: string) {
- return [
- {
- required: true,
- message,
- trigger: 'change'
- }
- ]
- }
|