import BasicField from '../Basic' import IdentifyAddressField from '@/components/ui/IdentifyAddress' import { FormControl } from '../../form' import type { IBasicIdentifyAddressProps, BasicIdentifyAddressFieldValueType } from '@/types' class BasicIdentifyAddress extends BasicField { props: IBasicIdentifyAddressProps isComposite = true constructor(props: IBasicIdentifyAddressProps, form: FormControl) { super(props, form) this.props = props this.rules = this.getRules(props.componentConfig) } getRules(config: IBasicIdentifyAddressProps['componentConfig']) { const rules = [] if (config.required) { rules.push({ required: true, validator: (_: any, value: BasicIdentifyAddressFieldValueType) => { const types: (keyof BasicIdentifyAddressFieldValueType)[] = [ 'receiverName', 'receiverMobile', 'detail', 'address' ] const isEmpty = !value || types.some(type => { if (type === 'address') { return !value[type].length } return !value[type] }) if (isEmpty) { return Promise.reject(new Error(`请选择输入完整信息`)) } return Promise.resolve() } }) } rules.push({ validator: (_: any, value: BasicIdentifyAddressFieldValueType) => { const phoneReg = /^1\d{10}$/ if (value?.receiverMobile) { if (!phoneReg.test(value.receiverMobile)) { return Promise.reject(new Error(`请填写正确的格式`)) } } return Promise.resolve() } }) return rules } render() { return } } export default BasicIdentifyAddress