许静 5 年之前
父節點
當前提交
16a7b5dee0

+ 5
- 5
config/config.js 查看文件

@@ -273,13 +273,13 @@ export default {
273 273
     basePath: '/',
274 274
   },
275 275
   chainWebpack: webpackPlugin,
276
-  /*
276
+  
277 277
   proxy: {
278
-    '/server/api/': {
279
-      target: 'https://preview.pro.ant.design/',
278
+    '/api/': {
279
+      target: 'http://192.168.0.84:8080/',
280 280
       changeOrigin: true,
281
-      pathRewrite: { '^/server': '' },
281
+      // pathRewrite: { '^/server': '' },
282 282
     },
283 283
   },
284
-  */
284
+  
285 285
 };

+ 1
- 0
package.json 查看文件

@@ -47,6 +47,7 @@
47 47
     "classnames": "^2.2.6",
48 48
     "dva": "^2.4.1",
49 49
     "lodash": "^4.17.11",
50
+    "md5": "^2.2.1",
50 51
     "moment": "^2.24.0",
51 52
     "omit.js": "^1.0.2",
52 53
     "path-to-regexp": "^3.0.0",

+ 8
- 0
src/app.js 查看文件

@@ -0,0 +1,8 @@
1
+export const dva = {
2
+  config: {
3
+    onError(e) {
4
+      e.preventDefault();
5
+      console.error(e);
6
+    },
7
+  },
8
+};

二進制
src/assets/bg.jpg 查看文件


+ 1
- 0
src/layouts/BlankLayout.jsx 查看文件

@@ -9,6 +9,7 @@ const Layout = ({ children }) => (
9 9
         padding: '32PX 28px',
10 10
         boxShadow: '0px 0px 16px 2px rgba(0,0,0,0.12)',
11 11
         borderRadius: '12px',
12
+        minHeight:'60vh'
12 13
       }}
13 14
     >
14 15
       {children}

+ 1
- 0
src/layouts/SecurityLayout.jsx 查看文件

@@ -24,6 +24,7 @@ class SecurityLayout extends React.Component {
24 24
   render() {
25 25
     const { isReady } = this.state;
26 26
     const { children, loading, currentUser } = this.props;
27
+    console.log('------------>', loading, currentUser)
27 28
 
28 29
     if ((!currentUser.userid && loading) || !isReady) {
29 30
       return <PageLoading />;

+ 1
- 14
src/layouts/UserLayout.jsx 查看文件

@@ -4,7 +4,6 @@ import Link from 'umi/link';
4 4
 import React from 'react';
5 5
 import { connect } from 'dva';
6 6
 import { formatMessage } from 'umi-plugin-react/locale';
7
-import SelectLang from '@/components/SelectLang';
8 7
 import logo from '../assets/logo.svg';
9 8
 import styles from './UserLayout.less';
10 9
 
@@ -32,22 +31,10 @@ const UserLayout = props => {
32 31
       })}
33 32
     >
34 33
       <div className={styles.container}>
35
-        <div className={styles.lang}>
36
-          <SelectLang />
37
-        </div>
38 34
         <div className={styles.content}>
39
-          <div className={styles.top}>
40
-            <div className={styles.header}>
41
-              <Link to="/">
42
-                <img alt="logo" className={styles.logo} src={logo} />
43
-                <span className={styles.title}>Ant Design</span>
44
-              </Link>
45
-            </div>
46
-            <div className={styles.desc}>Ant Design 是西湖区最具影响力的 Web 设计规范</div>
47
-          </div>
48 35
           {children}
49 36
         </div>
50
-        <DefaultFooter />
37
+        {/* <DefaultFooter /> */}
51 38
       </div>
52 39
     </DocumentTitle>
53 40
   );

+ 3
- 3
src/layouts/UserLayout.less 查看文件

@@ -25,10 +25,10 @@
25 25
 
26 26
 @media (min-width: @screen-md-min) {
27 27
   .container {
28
-    background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg');
28
+    background-image: url('../assets/bg.jpg');
29 29
     background-repeat: no-repeat;
30
-    background-position: center 110px;
31
-    background-size: 100%;
30
+    background-position: center;
31
+    background-size: 100% 100%;
32 32
   }
33 33
 
34 34
   .content {

+ 2
- 2
src/locales/pt-BR/settings.js 查看文件

@@ -24,8 +24,8 @@ export default {
24 24
   'app.settings.security.strong': 'Forte',
25 25
   'app.settings.security.medium': 'Média',
26 26
   'app.settings.security.weak': 'Fraca',
27
-  'app.settings.security.password': 'Senha da Conta',
28
-  'app.settings.security.password-description': 'Força da senha',
27
+  'app.settings.security.loginPassword': 'Senha da Conta',
28
+  'app.settings.security.loginPassword-description': 'Força da senha',
29 29
   'app.settings.security.phone': 'Telefone de Seguraça',
30 30
   'app.settings.security.phone-description': 'Telefone vinculado',
31 31
   'app.settings.security.question': 'Pergunta de Segurança',

+ 11
- 10
src/models/user.js 查看文件

@@ -1,20 +1,22 @@
1
-import { queryCurrent, query as queryUsers } from '@/services/user';
1
+import request from '../utils/request';
2
+import apis from '../services/apis';
3
+
2 4
 const UserModel = {
3 5
   namespace: 'user',
4 6
   state: {
5 7
     currentUser: {},
6 8
   },
7 9
   effects: {
8
-    *fetch(_, { call, put }) {
9
-      const response = yield call(queryUsers);
10
-      yield put({
11
-        type: 'save',
12
-        payload: response,
13
-      });
14
-    },
10
+    // *fetch(_, { call, put }) {
11
+    //   const response = yield call(queryUsers);
12
+    //   yield put({
13
+    //     type: 'save',
14
+    //     payload: response,
15
+    //   });
16
+    // },
15 17
 
16 18
     *fetchCurrent(_, { call, put }) {
17
-      const response = yield call(queryCurrent);
19
+      const response = yield call(request, apis.user.current);
18 20
       yield put({
19 21
         type: 'saveCurrentUser',
20 22
         payload: response,
@@ -25,7 +27,6 @@ const UserModel = {
25 27
     saveCurrentUser(state, action) {
26 28
       return { ...state, currentUser: action.payload || {} };
27 29
     },
28
-
29 30
     changeNotifyCount(
30 31
       state = {
31 32
         currentUser: {},

+ 4
- 24
src/pages/user/login/components/Login/index.jsx 查看文件

@@ -4,17 +4,16 @@ import classNames from 'classnames';
4 4
 import LoginContext from './LoginContext';
5 5
 import LoginItem from './LoginItem';
6 6
 import LoginSubmit from './LoginSubmit';
7
-import LoginTab from './LoginTab';
8 7
 import styles from './index.less';
9 8
 
10 9
 class Login extends Component {
11
-  static Tab = LoginTab;
10
+
12 11
   static Submit = LoginSubmit;
13 12
   static defaultProps = {
14 13
     className: '',
15 14
     defaultActiveKey: '',
16
-    onTabChange: () => {},
17
-    onSubmit: () => {},
15
+    onTabChange: () => { },
16
+    onSubmit: () => { },
18 17
   };
19 18
 
20 19
   constructor(props) {
@@ -111,31 +110,12 @@ class Login extends Component {
111 110
         return;
112 111
       }
113 112
 
114
-      if (child.type.typeName === 'LoginTab') {
115
-        TabChildren.push(child);
116
-      } else {
117
-        otherChildren.push(child);
118
-      }
119 113
     });
120 114
     return (
121 115
       <LoginContext.Provider value={this.getContext()}>
122 116
         <div className={classNames(className, styles.login)}>
123 117
           <Form onSubmit={this.handleSubmit}>
124
-            {tabs.length ? (
125
-              <React.Fragment>
126
-                <Tabs
127
-                  animated={false}
128
-                  className={styles.tabs}
129
-                  activeKey={type}
130
-                  onChange={this.onSwitch}
131
-                >
132
-                  {TabChildren}
133
-                </Tabs>
134
-                {otherChildren}
135
-              </React.Fragment>
136
-            ) : (
137
-              children
138
-            )}
118
+            {children}
139 119
           </Form>
140 120
         </div>
141 121
       </LoginContext.Provider>

+ 0
- 30
src/pages/user/login/components/Login/map.jsx 查看文件

@@ -31,34 +31,4 @@ export default {
31 31
       },
32 32
     ],
33 33
   },
34
-  Mobile: {
35
-    props: {
36
-      size: 'large',
37
-      prefix: <Icon type="mobile" className={styles.prefixIcon} />,
38
-      placeholder: 'mobile number',
39
-    },
40
-    rules: [
41
-      {
42
-        required: true,
43
-        message: 'Please enter mobile number!',
44
-      },
45
-      {
46
-        pattern: /^1\d{10}$/,
47
-        message: 'Wrong mobile number format!',
48
-      },
49
-    ],
50
-  },
51
-  Captcha: {
52
-    props: {
53
-      size: 'large',
54
-      prefix: <Icon type="mail" className={styles.prefixIcon} />,
55
-      placeholder: 'captcha',
56
-    },
57
-    rules: [
58
-      {
59
-        required: true,
60
-        message: 'Please enter Captcha!',
61
-      },
62
-    ],
63
-  },
64 34
 };

+ 36
- 129
src/pages/user/login/index.jsx 查看文件

@@ -6,6 +6,7 @@ import { connect } from 'dva';
6 6
 import LoginComponents from './components/Login';
7 7
 import styles from './style.less';
8 8
 const { Tab, UserName, Password, Mobile, Captcha, Submit } = LoginComponents;
9
+import md5 from "md5";
9 10
 
10 11
 @connect(({ login, loading }) => ({
11 12
   userLogin: login,
@@ -14,7 +15,7 @@ const { Tab, UserName, Password, Mobile, Captcha, Submit } = LoginComponents;
14 15
 class Login extends Component {
15 16
   loginForm = undefined;
16 17
   state = {
17
-    type: 'account',
18
+    // type: 'account',
18 19
     autoLogin: true,
19 20
   };
20 21
   changeAutoLogin = e => {
@@ -29,7 +30,7 @@ class Login extends Component {
29 30
       const { dispatch } = this.props;
30 31
       dispatch({
31 32
         type: 'login/login',
32
-        payload: { ...values, type },
33
+        payload: { ...values, loginPassword: md5(values.loginPassword) },
33 34
       });
34 35
     }
35 36
   };
@@ -87,138 +88,44 @@ class Login extends Component {
87 88
             this.loginForm = form;
88 89
           }}
89 90
         >
90
-          <Tab
91
-            key="account"
92
-            tab={formatMessage({
93
-              id: 'user-login.login.tab-login-credentials',
94
-            })}
95
-          >
96
-            {status === 'error' &&
97
-              loginType === 'account' &&
98
-              !submitting &&
99
-              this.renderMessage(
100
-                formatMessage({
101
-                  id: 'user-login.login.message-invalid-credentials',
91
+          <UserName
92
+            name="loginName"
93
+            placeholder={`${formatMessage({
94
+              id: 'user-login.login.userName',
95
+            })}: admin or user`}
96
+            rules={[
97
+              {
98
+                required: true,
99
+                message: formatMessage({
100
+                  id: 'user-login.userName.required',
102 101
                 }),
103
-              )}
104
-            <UserName
105
-              name="userName"
106
-              placeholder={`${formatMessage({
107
-                id: 'user-login.login.userName',
108
-              })}: admin or user`}
109
-              rules={[
110
-                {
111
-                  required: true,
112
-                  message: formatMessage({
113
-                    id: 'user-login.userName.required',
114
-                  }),
115
-                },
116
-              ]}
117
-            />
118
-            <Password
119
-              name="password"
120
-              placeholder={`${formatMessage({
121
-                id: 'user-login.login.password',
122
-              })}: ant.design`}
123
-              rules={[
124
-                {
125
-                  required: true,
126
-                  message: formatMessage({
127
-                    id: 'user-login.password.required',
128
-                  }),
129
-                },
130
-              ]}
131
-              onPressEnter={e => {
132
-                e.preventDefault();
133
-
134
-                if (this.loginForm) {
135
-                  this.loginForm.validateFields(this.handleSubmit);
136
-                }
137
-              }}
138
-            />
139
-          </Tab>
140
-          <Tab
141
-            key="mobile"
142
-            tab={formatMessage({
143
-              id: 'user-login.login.tab-login-mobile',
144
-            })}
145
-          >
146
-            {status === 'error' &&
147
-              loginType === 'mobile' &&
148
-              !submitting &&
149
-              this.renderMessage(
150
-                formatMessage({
151
-                  id: 'user-login.login.message-invalid-verification-code',
102
+              },
103
+            ]}
104
+          />
105
+          <Password
106
+            name="loginPassword"
107
+            placeholder={`${formatMessage({
108
+              id: 'user-login.login.password',
109
+            })}: ant.design`}
110
+            rules={[
111
+              {
112
+                required: true,
113
+                message: formatMessage({
114
+                  id: 'user-login.password.required',
152 115
                 }),
153
-              )}
154
-            <Mobile
155
-              name="mobile"
156
-              placeholder={formatMessage({
157
-                id: 'user-login.phone-number.placeholder',
158
-              })}
159
-              rules={[
160
-                {
161
-                  required: true,
162
-                  message: formatMessage({
163
-                    id: 'user-login.phone-number.required',
164
-                  }),
165
-                },
166
-                {
167
-                  pattern: /^1\d{10}$/,
168
-                  message: formatMessage({
169
-                    id: 'user-login.phone-number.wrong-format',
170
-                  }),
171
-                },
172
-              ]}
173
-            />
174
-            <Captcha
175
-              name="captcha"
176
-              placeholder={formatMessage({
177
-                id: 'user-login.verification-code.placeholder',
178
-              })}
179
-              countDown={120}
180
-              onGetCaptcha={this.onGetCaptcha}
181
-              getCaptchaButtonText={formatMessage({
182
-                id: 'user-login.form.get-captcha',
183
-              })}
184
-              getCaptchaSecondText={formatMessage({
185
-                id: 'user-login.captcha.second',
186
-              })}
187
-              rules={[
188
-                {
189
-                  required: true,
190
-                  message: formatMessage({
191
-                    id: 'user-login.verification-code.required',
192
-                  }),
193
-                },
194
-              ]}
195
-            />
196
-          </Tab>
197
-          <div>
198
-            <Checkbox checked={autoLogin} onChange={this.changeAutoLogin}>
199
-              <FormattedMessage id="user-login.login.remember-me" />
200
-            </Checkbox>
201
-            <a
202
-              style={{
203
-                float: 'right',
204
-              }}
205
-              href=""
206
-            >
207
-              <FormattedMessage id="user-login.login.forgot-password" />
208
-            </a>
209
-          </div>
116
+              },
117
+            ]}
118
+            onPressEnter={e => {
119
+              e.preventDefault();
120
+
121
+              if (this.loginForm) {
122
+                this.loginForm.validateFields(this.handleSubmit);
123
+              }
124
+            }}
125
+          />
210 126
           <Submit loading={submitting}>
211 127
             <FormattedMessage id="user-login.login.login" />
212 128
           </Submit>
213
-          <div className={styles.other}>
214
-            <FormattedMessage id="user-login.login.sign-in-with" />
215
-            <Icon type="alipay-circle" className={styles.icon} theme="outlined" />
216
-            <Icon type="taobao-circle" className={styles.icon} theme="outlined" />
217
-            <Icon type="weibo-circle" className={styles.icon} theme="outlined" />
218
-            <Link className={styles.register} to="/user/register">
219
-              <FormattedMessage id="user-login.login.signup" />
220
-            </Link>
221
-          </div>
222 129
         </LoginComponents>
223 130
       </div>
224 131
     );

+ 14
- 0
src/services/apis.js 查看文件

@@ -0,0 +1,14 @@
1
+const prefix = '/api/admin'
2
+
3
+export default {
4
+  user: {
5
+    current: {
6
+      method: 'GET',
7
+      url: `${prefix}/taUser/current`,
8
+    },
9
+    signin: {
10
+      method: 'POST',
11
+      url: `${prefix}/taUser/signin`,
12
+    },
13
+  }
14
+}

+ 7
- 1
src/services/login.js 查看文件

@@ -1,9 +1,15 @@
1 1
 import request from 'umi-request';
2
+import { Redirect } from 'umi';
3
+
2 4
 export async function fakeAccountLogin(params) {
3
-  return request('/api/login/account', {
5
+  return request('/api/admin/taUser/signin', {
4 6
     method: 'POST',
5 7
     data: params,
8
+  }).then(res => {
9
+    return <Redirect to="/welcome"></Redirect>;
6 10
   });
11
+
12
+
7 13
 }
8 14
 export async function getFakeCaptcha(mobile) {
9 15
   return request(`/api/login/captcha?mobile=${mobile}`);