|  |  |  | 
|---|
|  |  |  | validate: { | 
|---|
|  |  |  | pwdMisMatch: 'The password confirmation is not the same as the password.' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | settings: { | 
|---|
|  |  |  | base: 'Base', | 
|---|
|  |  |  | security: 'Security', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | create: { | 
|---|
|  |  |  | title: 'Create' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | validate: { | 
|---|
|  |  |  | pwdMisMatch: '密码不一致' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | settings: { | 
|---|
|  |  |  | base: '基本设置', | 
|---|
|  |  |  | security: '安全设置', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | create: { | 
|---|
|  |  |  | title: '添加' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | NumberField, | 
|---|
|  |  |  | required, | 
|---|
|  |  |  | useRecordContext, | 
|---|
|  |  |  | DeleteButton, | 
|---|
|  |  |  | useTheme, | 
|---|
|  |  |  | } from 'react-admin'; | 
|---|
|  |  |  | import { useWatch, useFormContext } from "react-hook-form"; | 
|---|
|  |  |  | import { Stack, Grid, Box, Typography, Card, CardContent } from '@mui/material'; | 
|---|
|  |  |  | import { Stack, Grid, Box, Typography, Card, CardContent, Tabs, Tab } from '@mui/material'; | 
|---|
|  |  |  | import * as Common from '@/utils/common'; | 
|---|
|  |  |  | import { } from '@/config/setting'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function TabPanel(props) { | 
|---|
|  |  |  | const { children, value, index, ...other } = props; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <div | 
|---|
|  |  |  | role="tabpanel" | 
|---|
|  |  |  | hidden={value !== index} | 
|---|
|  |  |  | id={`vertical-tabpanel-${index}`} | 
|---|
|  |  |  | aria-labelledby={`vertical-tab-${index}`} | 
|---|
|  |  |  | {...other} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | {value === index && ( | 
|---|
|  |  |  | <Box sx={{ p: 3 }}> | 
|---|
|  |  |  | <Typography>{children}</Typography> | 
|---|
|  |  |  | </Box> | 
|---|
|  |  |  | )} | 
|---|
|  |  |  | </div> | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function a11yProps(index) { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | id: `vertical-tab-${index}`, | 
|---|
|  |  |  | 'aria-controls': `vertical-tabpanel-${index}`, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const Settings = () => { | 
|---|
|  |  |  | const translate = useTranslate(); | 
|---|
|  |  |  | const theme = useTheme(); | 
|---|
|  |  |  | const [value, setValue] = React.useState(0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | <> | 
|---|
|  |  |  | <Card> | 
|---|
|  |  |  | <CardContent> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <Card sx={{ backgroundColor: 'initial' }}> | 
|---|
|  |  |  | <CardContent > | 
|---|
|  |  |  | <Box | 
|---|
|  |  |  | mt={2} | 
|---|
|  |  |  | sx={{ | 
|---|
|  |  |  | flexGrow: 1, | 
|---|
|  |  |  | bgcolor: 'background.paper', | 
|---|
|  |  |  | display: 'flex', | 
|---|
|  |  |  | height: 224, | 
|---|
|  |  |  | border: `1px solid #${theme[0] === 'light' ? 'ddd' : '333'}`, | 
|---|
|  |  |  | borderRadius: 2 | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <Tabs | 
|---|
|  |  |  | orientation="vertical" | 
|---|
|  |  |  | variant="scrollable" | 
|---|
|  |  |  | value={value} | 
|---|
|  |  |  | onChange={(event, newValue) => { | 
|---|
|  |  |  | setValue(newValue); | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | indicatorColor="secondary" | 
|---|
|  |  |  | textColor="inherit" | 
|---|
|  |  |  | sx={{ | 
|---|
|  |  |  | borderRight: 1, | 
|---|
|  |  |  | borderColor: 'divider', | 
|---|
|  |  |  | width: 150 | 
|---|
|  |  |  | }} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <Tab label={translate('settings.base')} {...a11yProps(0)} /> | 
|---|
|  |  |  | <Tab label={translate('settings.security')} {...a11yProps(1)} /> | 
|---|
|  |  |  | </Tabs> | 
|---|
|  |  |  | <TabPanel value={value} index={0}> | 
|---|
|  |  |  | {translate('settings.base')} | 
|---|
|  |  |  | </TabPanel> | 
|---|
|  |  |  | <TabPanel value={value} index={1}> | 
|---|
|  |  |  | {translate('settings.security')} | 
|---|
|  |  |  | </TabPanel> | 
|---|
|  |  |  | </Box> | 
|---|
|  |  |  | </CardContent> | 
|---|
|  |  |  | </Card> | 
|---|
|  |  |  | </> | 
|---|
|  |  |  | 
|---|
|  |  |  | primary: { | 
|---|
|  |  |  | main: '#2F68AC', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // secondary: { | 
|---|
|  |  |  | //     light: '#5f5fc4', | 
|---|
|  |  |  | //     main: '#283593', | 
|---|
|  |  |  | //     dark: '#001064', | 
|---|
|  |  |  | //     contrastText: '#fff', | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | secondary: { | 
|---|
|  |  |  | light: '#5f5fc4', | 
|---|
|  |  |  | main: '#2F68AC', | 
|---|
|  |  |  | dark: '#001064', | 
|---|
|  |  |  | contrastText: '#fff', | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | background: { | 
|---|
|  |  |  | default: '#fafafb', | 
|---|
|  |  |  | }, | 
|---|