许静 5 vuotta sitten
vanhempi
commit
16a7b5dee0

+ 5
- 5
config/config.js Näytä tiedosto

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

+ 1
- 0
package.json Näytä tiedosto

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

+ 8
- 0
src/app.js Näytä tiedosto

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

BIN
src/assets/bg.jpg Näytä tiedosto


+ 1
- 0
src/layouts/BlankLayout.jsx Näytä tiedosto

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

+ 1
- 0
src/layouts/SecurityLayout.jsx Näytä tiedosto

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

+ 1
- 14
src/layouts/UserLayout.jsx Näytä tiedosto

4
 import React from 'react';
4
 import React from 'react';
5
 import { connect } from 'dva';
5
 import { connect } from 'dva';
6
 import { formatMessage } from 'umi-plugin-react/locale';
6
 import { formatMessage } from 'umi-plugin-react/locale';
7
-import SelectLang from '@/components/SelectLang';
8
 import logo from '../assets/logo.svg';
7
 import logo from '../assets/logo.svg';
9
 import styles from './UserLayout.less';
8
 import styles from './UserLayout.less';
10
 
9
 
32
       })}
31
       })}
33
     >
32
     >
34
       <div className={styles.container}>
33
       <div className={styles.container}>
35
-        <div className={styles.lang}>
36
-          <SelectLang />
37
-        </div>
38
         <div className={styles.content}>
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
           {children}
35
           {children}
49
         </div>
36
         </div>
50
-        <DefaultFooter />
37
+        {/* <DefaultFooter /> */}
51
       </div>
38
       </div>
52
     </DocumentTitle>
39
     </DocumentTitle>
53
   );
40
   );

+ 3
- 3
src/layouts/UserLayout.less Näytä tiedosto

25
 
25
 
26
 @media (min-width: @screen-md-min) {
26
 @media (min-width: @screen-md-min) {
27
   .container {
27
   .container {
28
-    background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg');
28
+    background-image: url('../assets/bg.jpg');
29
     background-repeat: no-repeat;
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
   .content {
34
   .content {

+ 2
- 2
src/locales/pt-BR/settings.js Näytä tiedosto

24
   'app.settings.security.strong': 'Forte',
24
   'app.settings.security.strong': 'Forte',
25
   'app.settings.security.medium': 'Média',
25
   'app.settings.security.medium': 'Média',
26
   'app.settings.security.weak': 'Fraca',
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
   'app.settings.security.phone': 'Telefone de Seguraça',
29
   'app.settings.security.phone': 'Telefone de Seguraça',
30
   'app.settings.security.phone-description': 'Telefone vinculado',
30
   'app.settings.security.phone-description': 'Telefone vinculado',
31
   'app.settings.security.question': 'Pergunta de Segurança',
31
   'app.settings.security.question': 'Pergunta de Segurança',

+ 11
- 10
src/models/user.js Näytä tiedosto

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

+ 4
- 24
src/pages/user/login/components/Login/index.jsx Näytä tiedosto

4
 import LoginContext from './LoginContext';
4
 import LoginContext from './LoginContext';
5
 import LoginItem from './LoginItem';
5
 import LoginItem from './LoginItem';
6
 import LoginSubmit from './LoginSubmit';
6
 import LoginSubmit from './LoginSubmit';
7
-import LoginTab from './LoginTab';
8
 import styles from './index.less';
7
 import styles from './index.less';
9
 
8
 
10
 class Login extends Component {
9
 class Login extends Component {
11
-  static Tab = LoginTab;
10
+
12
   static Submit = LoginSubmit;
11
   static Submit = LoginSubmit;
13
   static defaultProps = {
12
   static defaultProps = {
14
     className: '',
13
     className: '',
15
     defaultActiveKey: '',
14
     defaultActiveKey: '',
16
-    onTabChange: () => {},
17
-    onSubmit: () => {},
15
+    onTabChange: () => { },
16
+    onSubmit: () => { },
18
   };
17
   };
19
 
18
 
20
   constructor(props) {
19
   constructor(props) {
111
         return;
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
     return (
114
     return (
121
       <LoginContext.Provider value={this.getContext()}>
115
       <LoginContext.Provider value={this.getContext()}>
122
         <div className={classNames(className, styles.login)}>
116
         <div className={classNames(className, styles.login)}>
123
           <Form onSubmit={this.handleSubmit}>
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
           </Form>
119
           </Form>
140
         </div>
120
         </div>
141
       </LoginContext.Provider>
121
       </LoginContext.Provider>

+ 0
- 30
src/pages/user/login/components/Login/map.jsx Näytä tiedosto

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 Näytä tiedosto

6
 import LoginComponents from './components/Login';
6
 import LoginComponents from './components/Login';
7
 import styles from './style.less';
7
 import styles from './style.less';
8
 const { Tab, UserName, Password, Mobile, Captcha, Submit } = LoginComponents;
8
 const { Tab, UserName, Password, Mobile, Captcha, Submit } = LoginComponents;
9
+import md5 from "md5";
9
 
10
 
10
 @connect(({ login, loading }) => ({
11
 @connect(({ login, loading }) => ({
11
   userLogin: login,
12
   userLogin: login,
14
 class Login extends Component {
15
 class Login extends Component {
15
   loginForm = undefined;
16
   loginForm = undefined;
16
   state = {
17
   state = {
17
-    type: 'account',
18
+    // type: 'account',
18
     autoLogin: true,
19
     autoLogin: true,
19
   };
20
   };
20
   changeAutoLogin = e => {
21
   changeAutoLogin = e => {
29
       const { dispatch } = this.props;
30
       const { dispatch } = this.props;
30
       dispatch({
31
       dispatch({
31
         type: 'login/login',
32
         type: 'login/login',
32
-        payload: { ...values, type },
33
+        payload: { ...values, loginPassword: md5(values.loginPassword) },
33
       });
34
       });
34
     }
35
     }
35
   };
36
   };
87
             this.loginForm = form;
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
           <Submit loading={submitting}>
126
           <Submit loading={submitting}>
211
             <FormattedMessage id="user-login.login.login" />
127
             <FormattedMessage id="user-login.login.login" />
212
           </Submit>
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
         </LoginComponents>
129
         </LoginComponents>
223
       </div>
130
       </div>
224
     );
131
     );

+ 14
- 0
src/services/apis.js Näytä tiedosto

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 Näytä tiedosto

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