import consts from '@/consts' import { queryClientWithTelephone } from '@/services/customer' import { useDebounceFn } from 'ahooks' import { Input, Alert, Popover } from 'antd' import { useState } from 'react' import { validateEnum } from '@/pages/Customer/Company/components/AddCompany/CompanyFormItem' import { useModal } from '@/components/ModalStore' const TelephoneFormItem = ({ value, onChange, validateFn }) => { const dispatchModal = useModal() const [state, setState] = useState({ inputVal: value, visible: false, list: null }) const triggerChange = changedValue => { onChange?.(changedValue) } const queryList = async search => { if (!search) return const { code = -1, data } = await queryClientWithTelephone({ current: 1, pageSize: 20, search }) if (code === consts.RET_CODE.SUCCESS) { const { client = [] } = data setState({ ...state, list: client, visible: !!client?.length }) if (client?.length) { validateFn(validateEnum.Warning) } else { validateFn(validateEnum.Success) } } } const { run: handleQueryList, cancel: cancelQuerying } = useDebounceFn(queryList, { wait: 600 }) const handleOnInputChange = async e => { const val = e.target.value || '' if (!val) { cancelQuerying() setState({ ...state, inputVal: val, list: null, visible: false }) validateFn(validateEnum.Error) } else { setState({ ...state, inputVal: val }) if (val?.length > 10) { validateFn(validateEnum.Validating) handleQueryList(val) } } triggerChange(val) } const { visible, list, inputVal } = state return ( setState({ ...state, visible: e })} title={ } trigger="click" content={ } > ) } export default TelephoneFormItem