import ProForm from '@ant-design/pro-form'; import { Modal, Typography, message } from 'antd'; import { isNil } from 'lodash'; import { useEffect, useState } from 'react'; import { useDispatch, useIntl, useSelector } from 'umi'; import CustomDay from '../CustomDatePicker/CustomDay'; import SelectRole from '../SelectRole'; import { requestRenewal } from './api'; const { Text } = Typography; const RenewalModel = ({ appId, openObj, setOpenObj, params }) => { const { formatMessage } = useIntl(); const dispatch = useDispatch(); const [value, setValue] = useState(); const [roleData, setRoleData] = useState(); const [renewalParams, setRenewalParams] = useState(); useEffect(() => { if (openObj?.open) { dispatch({ type: 'public/fetchAppDetail', payload: appId, }); } }, [appId, openObj?.open, dispatch]); const { appDetail } = useSelector<{ public: API.StoreState }, API.StoreState>( (state: any) => state.public, ); useEffect(() => { setRenewalParams(params); setRoleData((r) => { return { ...r, isRole: params?.optionList?.length > 0 ? true : false, expired: appDetail.defaultExpirationTime, }; }); }, [params, appDetail.defaultExpirationTime]); return ( { setOpenObj({ open: false, reload: false }); setRoleData({}); setValue(undefined); }} onOk={() => { if (isNil(roleData?.expired) || roleData?.expired === '') { message.warning(formatMessage({ id: 'base.renewal.time' })); return; } if (appDetail?.roleApprovalForData === 2 && roleData?.isRole && !roleData?.roleIdForData) { // 有数据权限时role是必选项 // 必须选角色 但是没选角色时 message.warning(formatMessage({ id: 'component.ApplyDetail.role.permission.require' })); } else { requestRenewal(renewalParams, appId, formatMessage, roleData); setOpenObj({ open: false, reload: true }); setRoleData({}); setValue(undefined); } }} > { setRoleData({ ...roleData, expired: val * 86400 }); }} /> {appDetail?.roleApprovalForData === 2 && roleData?.isRole ? ( { setValue(val); setRoleData({ ...roleData, roleIdForData: val.id }); }} /> ) : null} {formatMessage({ id: 'base.renewal.tips' })} ); }; export default RenewalModel;