1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
  | import React, { useState, useRef, useEffect, useMemo } from "react"; 
 |  import { 
 |      Box, 
 |      AppBar, 
 |      Card, 
 |      Toolbar, 
 |      CircularProgress, 
 |      Typography, 
 |      Tabs, 
 |      Tab, 
 |      useTheme, 
 |      useMediaQuery, 
 |  } from '@mui/material'; 
 |  import { 
 |      useTranslate, 
 |      useLogin, 
 |      useNotify, 
 |  } from 'react-admin'; 
 |  import { LOGIN_BACKGROUND } from '@/config/setting'; 
 |  import { getSystemInfo, tenants } from '@/api/auth'; 
 |  import Login from "./Login"; 
 |  import Register from "./Register"; 
 |    
 |  const Index = () => { 
 |      const translate = useTranslate(); 
 |      const theme = useTheme(); 
 |      const isSmallScreen = useMediaQuery(theme.breakpoints.down('md')); 
 |    
 |      const [tab, setTab] = useState(0) 
 |      const [systemInfo, setSystemInfo] = useState({}); 
 |      const [tenantList, setTenantList] = useState([]); 
 |    
 |      const formPosition = isSmallScreen ? 'middle' : 'right' 
 |    
 |      useEffect(() => { 
 |          getSystemInfo().then(data => { 
 |              setSystemInfo(data); 
 |          }) 
 |          tenants().then(data => { 
 |              setTenantList(data); 
 |          }) 
 |      }, []); 
 |    
 |    
 |      return ( 
 |          <Box 
 |              sx={{ 
 |                  display: 'flex', 
 |                  flexDirection: 'column', 
 |                  minHeight: '100vh', 
 |                  alignItems: formPosition === 'middle' ? 'center' : 'flex-end', 
 |                  paddingRight: formPosition === 'middle' ? 0 : '6em', 
 |                  justifyContent: formPosition === 'middle' ? 'flex-start' : 'center', 
 |                  background: `url(/login_bg.jpg)`, // https://unsplash.com/ 
 |                  backgroundRepeat: 'no-repeat', 
 |                  backgroundSize: 'cover', 
 |              }} 
 |          > 
 |              {/* <video 
 |                  autoPlay 
 |                  loop 
 |                  muted 
 |                  style={{ 
 |                      position: 'fixed', 
 |                      top: 0, 
 |                      left: 0, 
 |                      width: '100%', 
 |                      height: '100%', 
 |                      // objectFit: 'cover', 
 |                      // objectFit: 'contain', 
 |                      objectFit: 'fill', 
 |                      // objectFit: 'scale-down', 
 |                      zIndex: 0, 
 |                  }} 
 |              > 
 |                  {LOGIN_BACKGROUND === 'media' && ( 
 |                      <source src="/login_bg.mp4" type="video/mp4" /> 
 |                  )} 
 |              </video> */} 
 |    
 |              <Card sx={{ 
 |                  width: 400, 
 |                  marginTop: formPosition === 'middle' ? '6em' : 0, 
 |                  zIndex: 1 
 |              }}> 
 |                  <div> 
 |                      <AppBar position="static" sx={{ backgroundColor: '#3D4BA7' }}> 
 |                          <Toolbar> 
 |                              <Typography variant="h6" color="inherit">{translate("page.login.title")}</Typography> 
 |                          </Toolbar> 
 |                      </AppBar> 
 |                  </div> 
 |    
 |                  {systemInfo.mode === 'ONLINE' ? ( 
 |                      <> 
 |                          <Tabs 
 |                              value={tab} 
 |                              onChange={(event, value) => { 
 |                                  setTab(value); 
 |                              }} 
 |                              indicatorColor="primary" 
 |                              textColor="primary" 
 |                              variant="fullWidth" 
 |                          > 
 |                              <Tab label={translate('page.login.tab.login')} sx={{ fontSize: '.8em' }} /> 
 |                              <Tab label={translate('page.login.tab.register')} sx={{ fontSize: '.8em' }} /> 
 |                          </Tabs> 
 |    
 |                          {tab === 0 && <Login systemInfo={systemInfo} tenantList={tenantList} />} 
 |                          {tab === 1 && <Register systemInfo={systemInfo} tenantList={tenantList} />} 
 |                      </> 
 |                  ) : ( 
 |                      <Login systemInfo={systemInfo} tenantList={tenantList} /> 
 |                  )} 
 |    
 |                  {/* <Box mb={1} sx={{ textAlign: 'center' }}> 
 |                      <Typography variant="caption" align="center">{translate("page.login.footer")}</Typography> 
 |                  </Box> */} 
 |              </Card> 
 |          </Box > 
 |      ); 
 |  }; 
 |    
 |  export default Index; 
 |  
  |