import { ModalForm, ProForm, ProFormDependency, // ProFormDigit, ProFormText, } from '@ant-design/pro-components'; import { ColorPicker, Form, Space } from 'antd'; import { useMemo } from 'react'; import MyTag from '@/components/MyTag'; import useUserInfo from '@/hooks/useUserInfo'; import { getRoleDetail } from '@/services/api'; import { $t } from '@/utils/i18n'; // import { preventScientificNotation } from '@/utils'; import useCardList from './cardList'; import PermissionCheckboxGroup from './components/PermissionCheckboxGroup'; function flattenAllIds(nodes: API.MenuListItem[]): (string | number)[] { const ids: (string | number)[] = []; const walk = (items: API.MenuListItem[]) => { items.forEach((item) => { ids.push(item.id); if (item.children?.length) walk(item.children); }); }; walk(nodes); return ids; } type RolesListItem = Partial; export default (props: { action: EX.Action; visible: boolean; formValues: Partial; onSubmit: (values: RolesListItem) => void; onDone: () => void; menuTree?: API.MenuListItem[]; }) => { const { visible, formValues, onSubmit, onDone, action, menuTree: propMenuTree, } = props; const { userInfo } = useUserInfo(); // const { isGlobalCompany } = useAccess(); // const userRoleInfo = userInfo?.roleList?.[0]; // const level = userRoleInfo?.level || (isGlobalCompany ? 100 : 80); const { getMenuMetaByPermissions } = useCardList(); const menuTree = useMemo(() => { const source = propMenuTree?.length ? propMenuTree : getMenuMetaByPermissions(userInfo?.menuList || []); return source as API.MenuListItem[]; }, [propMenuTree, userInfo?.menuList]); const actionMap = { add: $t('table.action.add'), view: $t('table.action.view'), edit: $t('table.action.edit'), }; return ( { values.menuIds = (values.menuIds || []).join(',') || ''; return onSubmit(values); }} modalProps={{ maskClosable: action === 'view', onCancel: () => onDone(), destroyOnHidden: true, }} request={async () => { if (formValues?.id) { const { data: { data }, } = await getRoleDetail({ id: formValues.id, }); const allSelectedIds = flattenAllIds(data?.menuList || []); return { ...formValues, menuIds: allSelectedIds, }; } return formValues || {}; }} > {/* */} any }) => typeof color === 'string' ? color : color.toHexString() } > {({ color, name }) => ( {$t('form.role.preview')}: {name || 'Example'} )} ); };