|
|
@@ -20,6 +20,9 @@ import {
|
|
|
pregnancyStatusOptions,
|
|
|
} from '@/domain/patient/pregnancyStatus';
|
|
|
import { getGenderOptions } from '@/domain/patient/genderOptions';
|
|
|
+import { IdcardOutlined } from '@ant-design/icons';
|
|
|
+import IDCardRecognitionModal from '@/components/IDCardRecognitionModal';
|
|
|
+
|
|
|
interface BasicInfoFormProps {
|
|
|
style?: React.CSSProperties;
|
|
|
form?: FormInstance;
|
|
|
@@ -43,6 +46,7 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({
|
|
|
const dispatch = useDispatch();
|
|
|
const [pregnancyStatusFieldVisible, setPregnancyStatusFieldVisible] =
|
|
|
useState(false);
|
|
|
+ const [idCardModalVisible, setIdCardModalVisible] = useState(false);
|
|
|
|
|
|
const intl = useIntl();
|
|
|
|
|
|
@@ -103,6 +107,11 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({
|
|
|
const newDob = calculateDobFromAge(patient_age);
|
|
|
form.setFieldsValue({ patient_dob: newDob });
|
|
|
console.log('年龄变化,更新出生日期:', newDob.format('YYYY-MM-DD'));
|
|
|
+ const updateFormValues = {
|
|
|
+ ...form.getFieldsValue(),
|
|
|
+ patient_dob: newDob,
|
|
|
+ };
|
|
|
+ dispatch(setFormData(updateFormValues));
|
|
|
}
|
|
|
}, [patient_age, form]);
|
|
|
|
|
|
@@ -120,355 +129,398 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({
|
|
|
const newAge = calculateAgeFromDob(patient_dob);
|
|
|
form.setFieldsValue({ patient_age: newAge });
|
|
|
console.log('出生日期变化,更新年龄:', newAge);
|
|
|
+ const updateFormValues = {
|
|
|
+ ...form.getFieldsValue(),
|
|
|
+ patient_age: newAge,
|
|
|
+ };
|
|
|
+ dispatch(setFormData(updateFormValues));
|
|
|
}
|
|
|
}, [patient_dob, form]);
|
|
|
+
|
|
|
+ // 处理身份证识别成功
|
|
|
+ const handleIDCardRecognitionSuccess = async (
|
|
|
+ data: Record<string, string>
|
|
|
+ ) => {
|
|
|
+ console.log('身份证识别成功:', data);
|
|
|
+
|
|
|
+ const formValues: any = {};
|
|
|
+
|
|
|
+ formValues.patient_name = data.name;
|
|
|
+ formValues.patient_sex = data.gender;
|
|
|
+ formValues.patient_dob = data.birthdate ? dayjs(data.birthdate) : dayjs();
|
|
|
+
|
|
|
+ // 更新表单
|
|
|
+ if (form && Object.keys(formValues).length > 0) {
|
|
|
+ const updateFormValues = {
|
|
|
+ ...form.getFieldsValue(),
|
|
|
+ ...formValues,
|
|
|
+ };
|
|
|
+ form.setFieldsValue(formValues);
|
|
|
+ dispatch(setFormData(updateFormValues));
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
return (
|
|
|
- <Form
|
|
|
- form={form}
|
|
|
- layout="vertical"
|
|
|
- style={style}
|
|
|
- className="px-2"
|
|
|
- initialValues={
|
|
|
- {
|
|
|
- // patient_dob: dayjs(),
|
|
|
+ <>
|
|
|
+ <Form
|
|
|
+ form={form}
|
|
|
+ layout="vertical"
|
|
|
+ style={style}
|
|
|
+ className="px-2"
|
|
|
+ initialValues={
|
|
|
+ {
|
|
|
+ // patient_dob: dayjs(),
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- onValuesChange={onValuesChange}
|
|
|
- >
|
|
|
- {/** 宠物专用 */}
|
|
|
- {productName === 'VETDROS' && (
|
|
|
+ onValuesChange={onValuesChange}
|
|
|
+ >
|
|
|
+ {/** 宠物专用 */}
|
|
|
+ {productName === 'VETDROS' && (
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.owner_name"
|
|
|
+ defaultMessage="register.owner_name"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="owner_name"
|
|
|
+ required={registerFormFields.owner_name.required}
|
|
|
+ validateTrigger={registerFormFields.owner_name.trigger}
|
|
|
+ rules={registerFormFields.owner_name.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.owner_name.placeholder',
|
|
|
+ defaultMessage: 'register.owner_name.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ )}
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.owner_name"
|
|
|
- defaultMessage="register.owner_name"
|
|
|
+ id={
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientName'
|
|
|
+ : 'register.patientName'
|
|
|
+ }
|
|
|
+ defaultMessage={
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientName'
|
|
|
+ : 'register.patientName'
|
|
|
+ }
|
|
|
/>
|
|
|
}
|
|
|
- name="owner_name"
|
|
|
- required={registerFormFields.owner_name.required}
|
|
|
- validateTrigger={registerFormFields.owner_name.trigger}
|
|
|
- rules={registerFormFields.owner_name.validation}
|
|
|
+ name="patient_name"
|
|
|
+ required={registerFormFields.patient_name.required}
|
|
|
+ validateTrigger={registerFormFields.patient_name.trigger}
|
|
|
+ rules={registerFormFields.patient_name.validation}
|
|
|
>
|
|
|
<Input
|
|
|
placeholder={intl.formatMessage({
|
|
|
- id: 'register.owner_name.placeholder',
|
|
|
- defaultMessage: 'register.owner_name.placeholder',
|
|
|
+ id:
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientName.placeholder'
|
|
|
+ : 'register.patientName.placeholder',
|
|
|
+ defaultMessage:
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientName.placeholder'
|
|
|
+ : 'register.patientName.placeholder',
|
|
|
})}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- )}
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id={
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientName'
|
|
|
- : 'register.patientName'
|
|
|
- }
|
|
|
- defaultMessage={
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientName'
|
|
|
- : 'register.patientName'
|
|
|
- }
|
|
|
- />
|
|
|
- }
|
|
|
- name="patient_name"
|
|
|
- required={registerFormFields.patient_name.required}
|
|
|
- validateTrigger={registerFormFields.patient_name.trigger}
|
|
|
- rules={registerFormFields.patient_name.validation}
|
|
|
- >
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id:
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientName.placeholder'
|
|
|
- : 'register.patientName.placeholder',
|
|
|
- defaultMessage:
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientName.placeholder'
|
|
|
- : 'register.patientName.placeholder',
|
|
|
- })}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.accessionNumber"
|
|
|
- defaultMessage="register.accessionNumber"
|
|
|
- />
|
|
|
- }
|
|
|
- name="accession_number"
|
|
|
- required={registerFormFields.accession_number.required}
|
|
|
- validateTrigger={registerFormFields.accession_number.trigger}
|
|
|
- rules={registerFormFields.accession_number.validation}
|
|
|
- >
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id: 'register.accessionNumber.placeholder',
|
|
|
- defaultMessage: 'register.accessionNumber.placeholder',
|
|
|
- })}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id={
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientId'
|
|
|
- : 'register.patientId'
|
|
|
- }
|
|
|
- defaultMessage={
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientId'
|
|
|
- : 'register.patientId'
|
|
|
+ suffix={
|
|
|
+ <IdcardOutlined
|
|
|
+ onClick={() => setIdCardModalVisible(true)}
|
|
|
+ style={{ cursor: 'pointer' }}
|
|
|
+ title="身份证识别"
|
|
|
+ />
|
|
|
}
|
|
|
/>
|
|
|
- }
|
|
|
- name="patient_id"
|
|
|
- required={registerFormFields.patient_id.required}
|
|
|
- validateTrigger={registerFormFields.patient_id.trigger}
|
|
|
- rules={registerFormFields.patient_id.validation}
|
|
|
- >
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id:
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientId.placeholder'
|
|
|
- : 'register.patientId.placeholder',
|
|
|
- defaultMessage:
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientId.placeholder'
|
|
|
- : 'register.patientId.placeholder',
|
|
|
- })}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
-
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id={
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientSize'
|
|
|
- : 'register.patientSize'
|
|
|
- }
|
|
|
- defaultMessage={
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientSize'
|
|
|
- : 'register.patientSize'
|
|
|
- }
|
|
|
- />
|
|
|
- }
|
|
|
- name="patient_size"
|
|
|
- required={registerFormFields.patient_size.required}
|
|
|
- validateTrigger={registerFormFields.patient_size.trigger}
|
|
|
- rules={registerFormFields.patient_size.validation}
|
|
|
- initialValue="Medium"
|
|
|
- >
|
|
|
- <Select
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id:
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientSize.placeholder'
|
|
|
- : 'register.patientSize.placeholder',
|
|
|
- defaultMessage:
|
|
|
- productName === 'VETDROS'
|
|
|
- ? 'animal.register.patientSize.placeholder'
|
|
|
- : 'register.patientSize.placeholder',
|
|
|
- })}
|
|
|
- defaultValue="Medium"
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.accessionNumber"
|
|
|
+ defaultMessage="register.accessionNumber"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="accession_number"
|
|
|
+ required={registerFormFields.accession_number.required}
|
|
|
+ validateTrigger={registerFormFields.accession_number.trigger}
|
|
|
+ rules={registerFormFields.accession_number.validation}
|
|
|
>
|
|
|
- <Select.Option value="Large">
|
|
|
- {intl.formatMessage({ id: 'Large', defaultMessage: 'Large' })}
|
|
|
- </Select.Option>
|
|
|
- <Select.Option value="Medium">
|
|
|
- {intl.formatMessage({ id: 'Medium', defaultMessage: 'Medium' })}
|
|
|
- </Select.Option>
|
|
|
- <Select.Option value="Small">
|
|
|
- {intl.formatMessage({ id: 'Small', defaultMessage: 'Small' })}
|
|
|
- </Select.Option>
|
|
|
- </Select>
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage id="register.age" defaultMessage="register.age" />
|
|
|
- }
|
|
|
- name="patient_age"
|
|
|
- required={registerFormFields.patient_age.required}
|
|
|
- validateTrigger={registerFormFields.patient_age.trigger}
|
|
|
- rules={registerFormFields.patient_age.validation}
|
|
|
- initialValue={{ number: 0, unit: 'Y' }}
|
|
|
- >
|
|
|
- <NumberWithUnit
|
|
|
- align="baseline"
|
|
|
- defaultUnit="Y"
|
|
|
- defaultNumber={0}
|
|
|
- unitClassName="w-full"
|
|
|
- numberClassName="w-full"
|
|
|
- className="w-full"
|
|
|
- options={[
|
|
|
- { label: '天', value: 'D' },
|
|
|
- { label: '月', value: 'M' },
|
|
|
- { label: '年', value: 'Y' },
|
|
|
- ]}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.dateOfBirth"
|
|
|
- defaultMessage="register.dateOfBirth"
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.accessionNumber.placeholder',
|
|
|
+ defaultMessage: 'register.accessionNumber.placeholder',
|
|
|
+ })}
|
|
|
/>
|
|
|
- }
|
|
|
- name="patient_dob"
|
|
|
- required={registerFormFields.patient_dob.required}
|
|
|
- validateTrigger={registerFormFields.patient_dob.trigger}
|
|
|
- rules={registerFormFields.patient_dob.validation}
|
|
|
- initialValue={dayjs()}
|
|
|
- >
|
|
|
- <DatePicker
|
|
|
- format="YYYY-MM-DD"
|
|
|
- style={{ width: '100%' }}
|
|
|
- defaultValue={dayjs()}
|
|
|
- disabledDate={(current) => current && current > dayjs().endOf('day')}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.gender"
|
|
|
- defaultMessage="register.gender"
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id={
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientId'
|
|
|
+ : 'register.patientId'
|
|
|
+ }
|
|
|
+ defaultMessage={
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientId'
|
|
|
+ : 'register.patientId'
|
|
|
+ }
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="patient_id"
|
|
|
+ required={registerFormFields.patient_id.required}
|
|
|
+ validateTrigger={registerFormFields.patient_id.trigger}
|
|
|
+ rules={registerFormFields.patient_id.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id:
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientId.placeholder'
|
|
|
+ : 'register.patientId.placeholder',
|
|
|
+ defaultMessage:
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientId.placeholder'
|
|
|
+ : 'register.patientId.placeholder',
|
|
|
+ })}
|
|
|
/>
|
|
|
- }
|
|
|
- name="patient_sex"
|
|
|
- required={registerFormFields.patient_sex.required}
|
|
|
- validateTrigger={registerFormFields.patient_sex.trigger}
|
|
|
- rules={registerFormFields.patient_sex.validation}
|
|
|
- >
|
|
|
- <Select
|
|
|
- options={genderOptions}
|
|
|
- onChange={(e) => {
|
|
|
- const _PregnancyStatusFieldVisible = e === 'M';
|
|
|
- setPregnancyStatusFieldVisible(_PregnancyStatusFieldVisible);
|
|
|
- if (_PregnancyStatusFieldVisible) {
|
|
|
- // 更新表单
|
|
|
- form?.setFieldValue('pregnancy_status', PregnancyStatus.UNKNOWN);
|
|
|
+ </Form.Item>
|
|
|
|
|
|
- // 手动同步更新 Redux store
|
|
|
- const currentValues = form?.getFieldsValue();
|
|
|
- dispatch(
|
|
|
- setFormData({
|
|
|
- ...currentValues,
|
|
|
- pregnancy_status: PregnancyStatus.UNKNOWN,
|
|
|
- })
|
|
|
- );
|
|
|
- }
|
|
|
- }}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- {/** 宠物专用 */}
|
|
|
- {productName === 'VETDROS' && (
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.sexNeutered"
|
|
|
- defaultMessage="register.sexNeutered"
|
|
|
+ id={
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientSize'
|
|
|
+ : 'register.patientSize'
|
|
|
+ }
|
|
|
+ defaultMessage={
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientSize'
|
|
|
+ : 'register.patientSize'
|
|
|
+ }
|
|
|
/>
|
|
|
}
|
|
|
- name="sex_neutered"
|
|
|
- required={registerFormFields.sex_neutered.required}
|
|
|
- validateTrigger={registerFormFields.sex_neutered.trigger}
|
|
|
- rules={registerFormFields.sex_neutered.validation}
|
|
|
+ name="patient_size"
|
|
|
+ required={registerFormFields.patient_size.required}
|
|
|
+ validateTrigger={registerFormFields.patient_size.trigger}
|
|
|
+ rules={registerFormFields.patient_size.validation}
|
|
|
+ initialValue="Medium"
|
|
|
>
|
|
|
<Select
|
|
|
- defaultValue={'UNALTERED'}
|
|
|
placeholder={intl.formatMessage({
|
|
|
- id: 'register.sexNeutered.placeholder',
|
|
|
- defaultMessage: 'register.sexNeutered.placeholder',
|
|
|
+ id:
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientSize.placeholder'
|
|
|
+ : 'register.patientSize.placeholder',
|
|
|
+ defaultMessage:
|
|
|
+ productName === 'VETDROS'
|
|
|
+ ? 'animal.register.patientSize.placeholder'
|
|
|
+ : 'register.patientSize.placeholder',
|
|
|
})}
|
|
|
+ defaultValue="Medium"
|
|
|
>
|
|
|
- <Select.Option value="ALTERED">
|
|
|
- {intl.formatMessage({
|
|
|
- id: 'register.sexNeutered.altered',
|
|
|
- defaultMessage: 'ALTERED',
|
|
|
- })}
|
|
|
+ <Select.Option value="Large">
|
|
|
+ {intl.formatMessage({ id: 'Large', defaultMessage: 'Large' })}
|
|
|
</Select.Option>
|
|
|
- <Select.Option value="UNALTERED">
|
|
|
- {intl.formatMessage({
|
|
|
- id: 'register.sexNeutered.unaltered',
|
|
|
- defaultMessage: 'UNALTERED',
|
|
|
- })}
|
|
|
+ <Select.Option value="Medium">
|
|
|
+ {intl.formatMessage({ id: 'Medium', defaultMessage: 'Medium' })}
|
|
|
+ </Select.Option>
|
|
|
+ <Select.Option value="Small">
|
|
|
+ {intl.formatMessage({ id: 'Small', defaultMessage: 'Small' })}
|
|
|
</Select.Option>
|
|
|
</Select>
|
|
|
</Form.Item>
|
|
|
- )}
|
|
|
- {/** 人类专用 */}
|
|
|
- {productName === 'DROS' && form?.getFieldValue('patient_sex') && (
|
|
|
<Form.Item
|
|
|
- hidden={pregnancyStatusFieldVisible}
|
|
|
label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.pregnancyStatus"
|
|
|
- defaultMessage="register.pregnancyStatus"
|
|
|
- />
|
|
|
+ <FormattedMessage id="register.age" defaultMessage="register.age" />
|
|
|
}
|
|
|
- name="pregnancy_status"
|
|
|
- required={registerFormFields.pregnancy_status.required}
|
|
|
- validateTrigger={registerFormFields.pregnancy_status.trigger}
|
|
|
- rules={registerFormFields.pregnancy_status.validation}
|
|
|
- initialValue={PregnancyStatus.UNKNOWN}
|
|
|
+ name="patient_age"
|
|
|
+ required={registerFormFields.patient_age.required}
|
|
|
+ validateTrigger={registerFormFields.patient_age.trigger}
|
|
|
+ rules={registerFormFields.patient_age.validation}
|
|
|
+ initialValue={{ number: 0, unit: 'Y' }}
|
|
|
>
|
|
|
- <Radio.Group
|
|
|
- options={pregnancyStatusOptions}
|
|
|
- optionType="button"
|
|
|
- buttonStyle="solid"
|
|
|
+ <NumberWithUnit
|
|
|
+ align="baseline"
|
|
|
+ defaultUnit="Y"
|
|
|
+ defaultNumber={0}
|
|
|
+ unitClassName="w-full"
|
|
|
+ numberClassName="w-full"
|
|
|
+ className="w-full"
|
|
|
+ options={[
|
|
|
+ { label: '天', value: 'D' },
|
|
|
+ { label: '月', value: 'M' },
|
|
|
+ { label: '年', value: 'Y' },
|
|
|
+ ]}
|
|
|
/>
|
|
|
</Form.Item>
|
|
|
- )}
|
|
|
- {/** 宠物专用 */}
|
|
|
- {productName === 'VETDROS' && (
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.chipNumber"
|
|
|
- defaultMessage="register.chipNumber"
|
|
|
+ id="register.dateOfBirth"
|
|
|
+ defaultMessage="register.dateOfBirth"
|
|
|
/>
|
|
|
}
|
|
|
- name="chip_number"
|
|
|
- required={registerFormFields.chip_number.required}
|
|
|
- validateTrigger={registerFormFields.chip_number.trigger}
|
|
|
- rules={registerFormFields.chip_number.validation}
|
|
|
+ name="patient_dob"
|
|
|
+ required={registerFormFields.patient_dob.required}
|
|
|
+ validateTrigger={registerFormFields.patient_dob.trigger}
|
|
|
+ rules={registerFormFields.patient_dob.validation}
|
|
|
+ initialValue={dayjs()}
|
|
|
>
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id: 'register.chipNumber.placeholder',
|
|
|
- defaultMessage: 'register.chipNumber.placeholder',
|
|
|
- })}
|
|
|
+ <DatePicker
|
|
|
+ format="YYYY-MM-DD"
|
|
|
+ style={{ width: '100%' }}
|
|
|
+ disabledDate={(current) =>
|
|
|
+ current && current > dayjs().endOf('day')
|
|
|
+ }
|
|
|
/>
|
|
|
</Form.Item>
|
|
|
- )}
|
|
|
- {/** 宠物专用 */}
|
|
|
- {productName === 'VETDROS' && (
|
|
|
<Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
- id="register.variety"
|
|
|
- defaultMessage="register.variety"
|
|
|
+ id="register.gender"
|
|
|
+ defaultMessage="register.gender"
|
|
|
/>
|
|
|
}
|
|
|
- name="variety"
|
|
|
- required={registerFormFields.variety.required}
|
|
|
- validateTrigger={registerFormFields.variety.trigger}
|
|
|
- rules={registerFormFields.variety.validation}
|
|
|
+ name="patient_sex"
|
|
|
+ required={registerFormFields.patient_sex.required}
|
|
|
+ validateTrigger={registerFormFields.patient_sex.trigger}
|
|
|
+ rules={registerFormFields.patient_sex.validation}
|
|
|
>
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id: 'register.variety.placeholder',
|
|
|
- defaultMessage: 'register.variety.placeholder',
|
|
|
- })}
|
|
|
+ <Select
|
|
|
+ options={genderOptions}
|
|
|
+ onChange={(e) => {
|
|
|
+ const _PregnancyStatusFieldVisible = e === 'M';
|
|
|
+ setPregnancyStatusFieldVisible(_PregnancyStatusFieldVisible);
|
|
|
+ if (_PregnancyStatusFieldVisible) {
|
|
|
+ // 更新表单
|
|
|
+ form?.setFieldValue(
|
|
|
+ 'pregnancy_status',
|
|
|
+ PregnancyStatus.UNKNOWN
|
|
|
+ );
|
|
|
+
|
|
|
+ // 手动同步更新 Redux store
|
|
|
+ const currentValues = form?.getFieldsValue();
|
|
|
+ dispatch(
|
|
|
+ setFormData({
|
|
|
+ ...currentValues,
|
|
|
+ pregnancy_status: PregnancyStatus.UNKNOWN,
|
|
|
+ })
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }}
|
|
|
/>
|
|
|
</Form.Item>
|
|
|
- )}
|
|
|
- {/* <Form.Item
|
|
|
+ {/** 宠物专用 */}
|
|
|
+ {productName === 'VETDROS' && (
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.sexNeutered"
|
|
|
+ defaultMessage="register.sexNeutered"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="sex_neutered"
|
|
|
+ required={registerFormFields.sex_neutered.required}
|
|
|
+ validateTrigger={registerFormFields.sex_neutered.trigger}
|
|
|
+ rules={registerFormFields.sex_neutered.validation}
|
|
|
+ >
|
|
|
+ <Select
|
|
|
+ defaultValue={'UNALTERED'}
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.sexNeutered.placeholder',
|
|
|
+ defaultMessage: 'register.sexNeutered.placeholder',
|
|
|
+ })}
|
|
|
+ >
|
|
|
+ <Select.Option value="ALTERED">
|
|
|
+ {intl.formatMessage({
|
|
|
+ id: 'register.sexNeutered.altered',
|
|
|
+ defaultMessage: 'ALTERED',
|
|
|
+ })}
|
|
|
+ </Select.Option>
|
|
|
+ <Select.Option value="UNALTERED">
|
|
|
+ {intl.formatMessage({
|
|
|
+ id: 'register.sexNeutered.unaltered',
|
|
|
+ defaultMessage: 'UNALTERED',
|
|
|
+ })}
|
|
|
+ </Select.Option>
|
|
|
+ </Select>
|
|
|
+ </Form.Item>
|
|
|
+ )}
|
|
|
+ {/** 人类专用 */}
|
|
|
+ {productName === 'DROS' &&
|
|
|
+ form?.getFieldValue('patient_sex') &&
|
|
|
+ form?.getFieldValue('patient_sex') !== 'M' && (
|
|
|
+ <Form.Item
|
|
|
+ hidden={pregnancyStatusFieldVisible}
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.pregnancyStatus"
|
|
|
+ defaultMessage="register.pregnancyStatus"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="pregnancy_status"
|
|
|
+ required={registerFormFields.pregnancy_status.required}
|
|
|
+ validateTrigger={registerFormFields.pregnancy_status.trigger}
|
|
|
+ rules={registerFormFields.pregnancy_status.validation}
|
|
|
+ initialValue={PregnancyStatus.UNKNOWN}
|
|
|
+ >
|
|
|
+ <Radio.Group
|
|
|
+ options={pregnancyStatusOptions}
|
|
|
+ optionType="button"
|
|
|
+ buttonStyle="solid"
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ )}
|
|
|
+ {/** 宠物专用 */}
|
|
|
+ {productName === 'VETDROS' && (
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.chipNumber"
|
|
|
+ defaultMessage="register.chipNumber"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="chip_number"
|
|
|
+ required={registerFormFields.chip_number.required}
|
|
|
+ validateTrigger={registerFormFields.chip_number.trigger}
|
|
|
+ rules={registerFormFields.chip_number.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.chipNumber.placeholder',
|
|
|
+ defaultMessage: 'register.chipNumber.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ )}
|
|
|
+ {/** 宠物专用 */}
|
|
|
+ {productName === 'VETDROS' && (
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.variety"
|
|
|
+ defaultMessage="register.variety"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="variety"
|
|
|
+ required={registerFormFields.variety.required}
|
|
|
+ validateTrigger={registerFormFields.variety.trigger}
|
|
|
+ rules={registerFormFields.variety.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.variety.placeholder',
|
|
|
+ defaultMessage: 'register.variety.placeholder',
|
|
|
+ })}
|
|
|
+ />
|
|
|
+ </Form.Item>
|
|
|
+ )}
|
|
|
+ {/* <Form.Item
|
|
|
label={
|
|
|
<FormattedMessage
|
|
|
id="register.patientType"
|
|
|
@@ -487,106 +539,113 @@ const BasicInfoForm: React.FC<BasicInfoFormProps> = ({
|
|
|
})}
|
|
|
/>
|
|
|
</Form.Item> */}
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.referringPhysician"
|
|
|
- defaultMessage="register.referringPhysician"
|
|
|
- />
|
|
|
- }
|
|
|
- name="ref_physician"
|
|
|
- required={registerFormFields.ref_physician.required}
|
|
|
- validateTrigger={registerFormFields.ref_physician.trigger}
|
|
|
- rules={registerFormFields.ref_physician.validation}
|
|
|
- >
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id: 'register.referringPhysician.placeholder',
|
|
|
- defaultMessage: 'register.referringPhysician.placeholder',
|
|
|
- })}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.operatorId"
|
|
|
- defaultMessage="register.operatorId"
|
|
|
- />
|
|
|
- }
|
|
|
- name="operator_id"
|
|
|
- required={registerFormFields.operator_id.required}
|
|
|
- validateTrigger={registerFormFields.operator_id.trigger}
|
|
|
- rules={registerFormFields.operator_id.validation}
|
|
|
- >
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id: 'register.operatorId.placeholder',
|
|
|
- defaultMessage: 'register.operatorId.placeholder',
|
|
|
- })}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.weight"
|
|
|
- defaultMessage="register.weight"
|
|
|
- />
|
|
|
- }
|
|
|
- name="weight"
|
|
|
- required={registerFormFields.weight.required}
|
|
|
- validateTrigger={registerFormFields.weight.trigger}
|
|
|
- rules={registerFormFields.weight.validation}
|
|
|
- >
|
|
|
- <InputNumber min={0} addonAfter="kg" style={{ width: '100%' }} />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.thickness"
|
|
|
- defaultMessage="register.thickness"
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.referringPhysician"
|
|
|
+ defaultMessage="register.referringPhysician"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="ref_physician"
|
|
|
+ required={registerFormFields.ref_physician.required}
|
|
|
+ validateTrigger={registerFormFields.ref_physician.trigger}
|
|
|
+ rules={registerFormFields.ref_physician.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.referringPhysician.placeholder',
|
|
|
+ defaultMessage: 'register.referringPhysician.placeholder',
|
|
|
+ })}
|
|
|
/>
|
|
|
- }
|
|
|
- name="thickness"
|
|
|
- required={registerFormFields.thickness.required}
|
|
|
- validateTrigger={registerFormFields.thickness.trigger}
|
|
|
- rules={registerFormFields.thickness.validation}
|
|
|
- >
|
|
|
- <InputNumber min={0} addonAfter="cm" style={{ width: '100%' }} />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.height"
|
|
|
- defaultMessage="register.height"
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.operatorId"
|
|
|
+ defaultMessage="register.operatorId"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="operator_id"
|
|
|
+ required={registerFormFields.operator_id.required}
|
|
|
+ validateTrigger={registerFormFields.operator_id.trigger}
|
|
|
+ rules={registerFormFields.operator_id.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.operatorId.placeholder',
|
|
|
+ defaultMessage: 'register.operatorId.placeholder',
|
|
|
+ })}
|
|
|
/>
|
|
|
- }
|
|
|
- name="length"
|
|
|
- required={registerFormFields.length.required}
|
|
|
- validateTrigger={registerFormFields.length.trigger}
|
|
|
- rules={registerFormFields.length.validation}
|
|
|
- >
|
|
|
- <InputNumber min={0} addonAfter="cm" style={{ width: '100%' }} />
|
|
|
- </Form.Item>
|
|
|
- <Form.Item
|
|
|
- label={
|
|
|
- <FormattedMessage
|
|
|
- id="register.comment"
|
|
|
- defaultMessage="register.comment"
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.weight"
|
|
|
+ defaultMessage="register.weight"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="weight"
|
|
|
+ required={registerFormFields.weight.required}
|
|
|
+ validateTrigger={registerFormFields.weight.trigger}
|
|
|
+ rules={registerFormFields.weight.validation}
|
|
|
+ >
|
|
|
+ <InputNumber min={0} addonAfter="kg" style={{ width: '100%' }} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.thickness"
|
|
|
+ defaultMessage="register.thickness"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="thickness"
|
|
|
+ required={registerFormFields.thickness.required}
|
|
|
+ validateTrigger={registerFormFields.thickness.trigger}
|
|
|
+ rules={registerFormFields.thickness.validation}
|
|
|
+ >
|
|
|
+ <InputNumber min={0} addonAfter="cm" style={{ width: '100%' }} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.height"
|
|
|
+ defaultMessage="register.height"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="length"
|
|
|
+ required={registerFormFields.length.required}
|
|
|
+ validateTrigger={registerFormFields.length.trigger}
|
|
|
+ rules={registerFormFields.length.validation}
|
|
|
+ >
|
|
|
+ <InputNumber min={0} addonAfter="cm" style={{ width: '100%' }} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item
|
|
|
+ label={
|
|
|
+ <FormattedMessage
|
|
|
+ id="register.comment"
|
|
|
+ defaultMessage="register.comment"
|
|
|
+ />
|
|
|
+ }
|
|
|
+ name="comment"
|
|
|
+ required={registerFormFields.comment.required}
|
|
|
+ validateTrigger={registerFormFields.comment.trigger}
|
|
|
+ rules={registerFormFields.comment.validation}
|
|
|
+ >
|
|
|
+ <Input
|
|
|
+ placeholder={intl.formatMessage({
|
|
|
+ id: 'register.comment.placeholder',
|
|
|
+ defaultMessage: 'register.comment.placeholder',
|
|
|
+ })}
|
|
|
/>
|
|
|
- }
|
|
|
- name="comment"
|
|
|
- required={registerFormFields.comment.required}
|
|
|
- validateTrigger={registerFormFields.comment.trigger}
|
|
|
- rules={registerFormFields.comment.validation}
|
|
|
- >
|
|
|
- <Input
|
|
|
- placeholder={intl.formatMessage({
|
|
|
- id: 'register.comment.placeholder',
|
|
|
- defaultMessage: 'register.comment.placeholder',
|
|
|
- })}
|
|
|
- />
|
|
|
- </Form.Item>
|
|
|
- </Form>
|
|
|
+ </Form.Item>
|
|
|
+ </Form>
|
|
|
+
|
|
|
+ <IDCardRecognitionModal
|
|
|
+ visible={idCardModalVisible}
|
|
|
+ onClose={() => setIdCardModalVisible(false)}
|
|
|
+ onRecognitionSuccess={handleIDCardRecognitionSuccess}
|
|
|
+ />
|
|
|
+ </>
|
|
|
);
|
|
|
};
|
|
|
|