From c02e7a8fe42de2a5796e95e573f9e6b6735e4d0d Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期二, 25 三月 2025 17:06:43 +0800 Subject: [PATCH] fix: 四期需求 --- apps/h5/src/utils/validator.ts | 148 +++++++++---------------------------------------- 1 files changed, 27 insertions(+), 121 deletions(-) diff --git a/apps/h5/src/utils/validator.ts b/apps/h5/src/utils/validator.ts index b017819..970a9c8 100644 --- a/apps/h5/src/utils/validator.ts +++ b/apps/h5/src/utils/validator.ts @@ -1,140 +1,46 @@ +import { EditorType } from '@/constants'; import _ from 'lodash'; -import { FormItemRuleWithoutValidator } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; export class FormValidator { /** * 楠岃瘉琛ㄥ崟input-number 涓嶄负0 */ - static validatorNumberNotNull(value: any, ruleCfg: FormItemRuleWithoutValidator) { - console.log('value: ', value, typeof value); + static validatorNumberNotNull(rule: any, value: any, callback: any) { // eslint-disable-next-line eqeqeq if (!value) { - return Promise.reject(ruleCfg.message); + return callback(new Error(rule.message)); } - return Promise.resolve(true); + callback(); } - // static validatorRichEditor(value: any, ruleCfg: FormItemRuleWithoutValidator) { - // // eslint-disable-next-line eqeqeq - // const textEditorItem = value.filter((x) => x.type === EditorType.Text); - // if (textEditorItem.some((x) => !x.content)) { - // return Promise.reject(ruleCfg.message); - // } - // return Promise.resolve(true); - // } - static validatorWeMap(value: any, ruleCfg: FormItemRuleWithoutValidator) { + static validatorRichEditor(rule: any, value: API.IntroInfo[], callback: any) { + // eslint-disable-next-line eqeqeq + const textEditorItem = value.filter((x) => x.type === EditorType.Text); + if (textEditorItem.some((x) => !x.content)) { + return callback(new Error(rule.message)); + } + callback(); + } + static validatorWeMap(rule: any, value: WeMapModel, callback: any) { // eslint-disable-next-line eqeqeq if (_.isEmpty(value) || Object.values(value).some((x) => !x)) { - return Promise.reject(ruleCfg.message); + return callback(new Error(rule.message)); } - return Promise.resolve(true); - } - static validatorArray(value: any, ruleCfg: FormItemRuleWithoutValidator) { - if (!_.isArray(value) || !value?.length) { - return Promise.reject(ruleCfg.message); - } - return Promise.resolve(true); - } - - static validatorPriceVersion( - value: API.PriceVersionInfoItem[], - ruleCfg: FormItemRuleWithoutValidator - ) { - if (value.some((x) => !x.chargeWay || !x.name || !x.price)) { - return Promise.reject(ruleCfg.message); - } - return Promise.resolve(true); - } - - static validatorUrl(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (BoleRegExp.RegUrl.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); - } - static validatorUrlWithRarameter(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (BoleRegExp.RegUrlWithParameter.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); - } - static validatorSocietyCreditCode(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (!ruleCfg.required && !value) return Promise.resolve(true); - if (/^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); - } - static validatorPhoneNumber(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (BoleRegExp.RegPhoneNumber.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); - } - static validatorTelNumber(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (BoleRegExp.RegTelNumber.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); - } - static validatorIDCard(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (BoleRegExp.RegIDCard.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); - } - static validatorNumber(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (BoleRegExp.RegNumber.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); - } - - static validatorEmail(value: string, ruleCfg: FormItemRuleWithoutValidator) { - if (!ruleCfg.required && !value) return Promise.resolve(true); - if (BoleRegExp.RegEmail.test(value)) { - return Promise.resolve(true); - } - return Promise.reject(ruleCfg.message); + callback(); } } -export class BoleRegExp { - static RegIDCard = - /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; +export async function validateFormList(refs: any) { + try { + const validateList = Object.values(refs).map((x) => { + const ref = x as any; + if (Array.isArray(ref)) { + return ref[0].validate(); + } + return ref.validate(); + }); - // static RegEmail = - // /^(([^<>()\\[\]\\.,;:\s@"]+(\.[^<>()\\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/; - static RegEmail = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; - - /**鍙湁鎵嬫満 */ - static RegPhoneNumber = /^1[3-9]\d{9}$/; - - /**搴ф満 + 鎵嬫満*/ - static RegTelNumber = - /(^(0[0-9]{2,3})?[-\s]?([2-9][0-9]{6,7})+([0-9]{1,4})?$)|(^((\(\d{3}\))|(\d{3}[-\s]))?(1[3-9]\d{9})$)|(^(400)[-\s](\d{3})[-\s](\d{4})(.)(\d{1,4})$)|(^(400)(\d{3})(\d{4}$))/; - - /**鍙湁搴ф満 */ - static RegOnlyTelNumber = - /(^(0[0-9]{2,3})?[-\s]?([2-9][0-9]{6,7})+([0-9]{1,4})?$)|(^(400)[-\s](\d{3})[-\s](\d{4})(.)(\d{1,4})$)|(^(400)(\d{3})(\d{4}$))/; - - static RegSocietyCreditCode = /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g; - - static RegNumber = /^\d+$/; - - static RegFileName = /(.*\/)*([^.]+).*/gi; - - static RegCanPreview = /png|jpg|jpeg|doc|docx|txt|ppsx|xlsx|xls|pdf/gi; - - static RegDecimalNumber = /^\d+(\.\d{0,2}){0,1}$/; - - static RegBankCard = /^\d{16,30}$/; - - static RegUrl = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/\w+)*\/?$/; - - static RegUrlWithParameter = - /^((http|ftp|https):\/\/)?[\w\-_]+(\.[\w\-_]+)+([\w\-\\.,@?^=%&:/~\\+#]*[\w\-\\@?^=%&/~\\+#])?$/; - - static RegUrlWithParameterExact = - /^((http|ftp|https):\/\/)[\w\-_]+(\.[\w\-_]+)+([\w\-\\.,@?^=%&:/~\\+#]*[\w\-\\@?^=%&/~\\+#])?$/; + let res = await Promise.allSettled(validateList); + return res.every((x) => x.status === 'fulfilled'); + } catch (error) {} } -- Gitblit v1.9.1