张延森 4 jaren geleden
bovenliggende
commit
22eb81caa4

+ 2
- 4
src/components/GlobalHeader/AvatarDropdown.jsx Bestand weergeven

@@ -2,6 +2,7 @@ import { LogoutOutlined } from '@ant-design/icons';
2 2
 import { Avatar, Menu, Spin } from 'antd';
3 3
 import React from 'react';
4 4
 import { history, connect } from 'umi';
5
+import { defaultAvatar } from '@/utils/utils';
5 6
 import HeaderDropdown from '../HeaderDropdown';
6 7
 import styles from './index.less';
7 8
 
@@ -45,10 +46,7 @@ class AvatarDropdown extends React.Component {
45 46
           <Avatar
46 47
             size="small"
47 48
             className={styles.avatar}
48
-            src={
49
-              currentUser.avatar ||
50
-              'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png'
51
-            }
49
+            src={ currentUser.avatar || defaultAvatar }
52 50
             alt="avatar"
53 51
           />
54 52
           <span className={`${styles.name} anticon`}>{currentUser.userName}</span>

+ 0
- 8
src/pages/Welcome.less Bestand weergeven

@@ -1,8 +0,0 @@
1
-@import '~antd/lib/style/themes/default.less';
2
-
3
-.pre {
4
-  margin: 12px 0;
5
-  padding: 12px 20px;
6
-  background: @input-bg;
7
-  box-shadow: @card-shadow;
8
-}

+ 31
- 0
src/pages/Welcome/components/HeaderContent.jsx Bestand weergeven

@@ -0,0 +1,31 @@
1
+import React from 'react'
2
+import { Image, Statistic, Row, Col, Badge, Divider } from 'antd'
3
+import { connect } from 'umi'
4
+import { defaultAvatar } from '@/utils/utils';
5
+import Styles from '../style.less'
6
+
7
+const HeaderContent = (props) => {
8
+  return (
9
+    <div className={Styles['header-content']}>
10
+      <div className={Styles['ctt-header']}>
11
+        <Image width="100%" src={props.user.avatar || defaultAvatar} />
12
+      </div>
13
+      <div className={Styles['ctt-body']}>
14
+        <h3>{`你好, ${props.user.userName}, 祝你开心每一天!`}</h3>
15
+        <p>
16
+          <span className={Styles['sub-title']}>{`登录名: ${props.user.loginName}`}</span>
17
+          <span className={Styles['sub-title']}>状态: 正常 <Badge status="success" /></span>
18
+        </p>
19
+      </div>
20
+      <div className={Styles['ctt-footer']}>
21
+        <div className={Styles['st-wrapper']}>
22
+          <div className={Styles['st-item']}><Statistic title="科普数量" value={112893} /></div>
23
+          <div className={Styles['st-item']}><Statistic title="浏览总数" value={112893} /></div>
24
+          <div className={Styles['st-item']}><Statistic title="学生总数" value={112893} /></div>
25
+        </div>
26
+      </div>
27
+    </div>
28
+  )
29
+}
30
+
31
+export default connect((s) => ({ user: s.user.currentUser }))(HeaderContent)

src/pages/Welcome.jsx → src/pages/Welcome/index.jsx Bestand weergeven

@@ -2,20 +2,18 @@ import React from 'react';
2 2
 import { PageContainer } from '@ant-design/pro-layout';
3 3
 import { Card, Alert, Typography } from 'antd';
4 4
 // import { useIntl, FormattedMessage } from 'umi';
5
-import styles from './Welcome.less';
6
-
7
-const CodePreview = ({ children }) => (
8
-  <pre className={styles.pre}>
9
-    <code>
10
-      <Typography.Text copyable>{children}</Typography.Text>
11
-    </code>
12
-  </pre>
13
-);
5
+import HeaderContent from './components/HeaderContent';
6
+import styles from './style.less';
14 7
 
15 8
 export default () => {
16 9
   // const intl = useIntl();
17 10
   return (
18
-    <PageContainer>
11
+    <PageContainer
12
+      header={{
13
+        title: '工作台'
14
+      }}
15
+      content={<HeaderContent />}
16
+    >
19 17
       <Card>
20 18
         <Alert
21 19
           // message={intl.formatMessage({
@@ -43,7 +41,7 @@ export default () => {
43 41
             欢迎使用
44 42
           </a>
45 43
         </Typography.Text>
46
-        <CodePreview>yarn add @ant-design/pro-table</CodePreview>
44
+    
47 45
         <Typography.Text
48 46
           strong
49 47
           style={{
@@ -61,7 +59,7 @@ export default () => {
61 59
             欢迎使用
62 60
           </a>
63 61
         </Typography.Text>
64
-        <CodePreview>yarn add @ant-design/pro-layout</CodePreview>
62
+
65 63
       </Card>
66 64
     </PageContainer>
67 65
   );

+ 55
- 0
src/pages/Welcome/style.less Bestand weergeven

@@ -0,0 +1,55 @@
1
+@import '~antd/lib/style/themes/default.less';
2
+
3
+.header-content {
4
+  display: flex;
5
+  
6
+  .ctt-header {
7
+    flex: none;
8
+    width: 72px;
9
+    height: 72px;
10
+    
11
+    img {
12
+      border-radius: 50%;
13
+      overflow: hidden;
14
+    }
15
+  }
16
+
17
+  .ctt-body {
18
+    flex: auto;
19
+    margin: 0 2em;
20
+
21
+    .sub-title {
22
+      display: inline-block;
23
+      size: 1em;
24
+      color: #666;
25
+      margin-right: 2em;
26
+    }
27
+  }
28
+
29
+  .ctt-footer {
30
+    flex: none;
31
+  }
32
+
33
+  .st-wrapper {
34
+    display: flex;
35
+
36
+    .st-item {
37
+      flex: none;
38
+      position: relative;
39
+
40
+      & + .st-item {
41
+        margin-left: 1em;
42
+        padding-left: 1em;
43
+
44
+        &::before {
45
+          position: absolute;
46
+          content: '';
47
+          border-left: 1px solid rgba(0, 0, 0, .2);
48
+          height: 60%;
49
+          top: 20%;
50
+          left: 0;
51
+        }
52
+      }
53
+    }
54
+  }
55
+}

+ 2
- 0
src/utils/utils.js Bestand weergeven

@@ -43,3 +43,5 @@ export function getCurrentRoute(pathname) {
43 43
 
44 44
   return routeArr.filter((x) => x.path === pathname)[0];
45 45
 }
46
+
47
+export const defaultAvatar = 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png'