tuonina 4 years ago
parent
commit
2b8e1d63fb

+ 2 - 1
package.json

@@ -84,7 +84,8 @@
     "webpack": "4.19.1",
     "webpack-dev-server": ">=3.1.11",
     "webpack-manifest-plugin": "2.0.4",
-    "workbox-webpack-plugin": "3.6.2"
+    "workbox-webpack-plugin": "3.6.2",
+    "qs": "latest"
   },
   "scripts": {
     "start": "node scripts/start.js",

+ 1 - 1
src/App.test.js

@@ -1,6 +1,6 @@
 import React from 'react';
 import ReactDOM from 'react-dom';
-import App from './App';
+import App from './Layout/App';
 
 it('renders without crashing', () => {
     const div = document.createElement('div');

+ 5 - 8
src/App.js → src/Layout/App.js

@@ -1,12 +1,11 @@
 import React, { Component } from 'react';
-import Routes from './routes';
+import Routes from '../routes';
 import DocumentTitle from 'react-document-title';
-import SiderCustom from './components/SiderCustom';
-import HeaderCustom from './components/HeaderCustom';
-import { Layout, notification, Icon } from 'antd';
-import { ThemePicker } from './components/widget';
+import SiderCustom from '../components/SiderCustom';
+import HeaderCustom from '../components/HeaderCustom';
+import { Icon, Layout, notification } from 'antd';
+import { ThemePicker } from '../components/widget';
 import { connectAlita } from 'redux-alita';
-import { browser, browserType } from './utils/BrowserUtils';
 
 const { Content, Footer } = Layout;
 
@@ -18,7 +17,6 @@ class App extends Component {
 
     constructor(props) {
         super(props);
-        console.log('browser type=> ', browserType());
     }
 
     componentWillMount() {
@@ -30,7 +28,6 @@ class App extends Component {
         // fetchData({funcName: 'admin', stateName: 'auth'});
         this.getClientWidth();
         window.onresize = () => {
-            console.log('屏幕变化了');
             this.getClientWidth();
         };
     }

+ 35 - 0
src/Layout/SysAdmin.jsx

@@ -0,0 +1,35 @@
+/**
+ * @Classname SysAdmin
+ * @Description 授权认证系统的管理后端布局
+ * @Date 2019/9/11 12:57
+ * @Created by Administrator
+ */
+
+import React from 'react';
+import * as PropTypes from 'prop-types';
+import {Tag} from 'antd'
+
+class SysAdmin extends React.Component {
+
+    static propTypes = {};
+
+    static defaultProps = {};
+
+    constructor(props) {
+        super(props);
+        this.state = {};
+    }
+
+    componentDidMount() {
+
+    }
+
+    render() {
+        return (<Tag>xx</Tag>)
+    }
+
+
+}
+
+
+export default SysAdmin;

+ 3 - 1
src/Page.js

@@ -2,13 +2,15 @@ import React from 'react';
 import { HashRouter as Router, Redirect, Route, Switch } from 'react-router-dom';
 import NotFound from './components/pages/NotFound';
 import Login from './components/pages/Login';
-import App from './App';
+import App from './Layout/App';
+import SysAdmin from './Layout/SysAdmin';
 
 export default () => (
     <Router>
         <Switch>
             <Route exact path="/" render={() => <Redirect to="/app/dashboard/index" push/>}/>
             <Route path="/app" component={(props) => <App {...props} />}/>
+            <Route path="/sys" component={SysAdmin}/>
             <Route path="/404" component={NotFound}/>
             <Route path="/login" component={(props) => <Login {...props}/>}/>
             <Route component={NotFound}/>

+ 0 - 37
src/api/config.js

@@ -1,37 +0,0 @@
-/*配置中心的API*/
-import { del, get, post, put } from '../axios/tools';
-
-
-/**
- * 查询配置
- * @param params
- * @param headers
- * @returns {Promise<unknown>}
- */
-export const configQueryConfigList = ({ params, headers = {} }) => get({ url: 'config/v1/property/config', params, headers });
-
-/**
- * 添加属性配置
- * @param data
- * @returns {Promise<unknown>}
- */
-export const configAddConfig = (data) => post({ url: 'config/v1/property/config', data });
-
-/**
- * 编辑配置项
- * @param id
- * @param data
- * @returns {Promise<AxiosResponse<any>|never>}
- */
-export function configEditConfig({ id, data }) {
-    return put({ url: `config/v1/property/config/${id}`, data });
-}
-
-/**
- * 删除配置项
- * @param id
- * @returns {Promise<unknown>}
- */
-export function configDelConfig(id) {
-    return del({ url: `config/v1/property/config/${id}` });
-}

+ 73 - 0
src/api/config/index.js

@@ -0,0 +1,73 @@
+/*配置中心的接口*/
+
+
+import { del, get, post, put } from 'src/axios/tools';
+
+
+/**
+ * 根据条件查询配置信息
+ * @param params
+ * @param headers
+ * @returns {Promise<any | never>}
+ */
+export const queryConfig = (params, headers = {}) => get({ url: '/config/v1/property/config', headers, params });
+
+/**
+ * 查询标签信息
+ * @param params
+ */
+export const findPLabel = (params) => get({ url: '/config/v1/property/label', params });
+
+export const labelAdd = (params) => post({ url: '/config/v1/property/label', data: params });
+
+export const labelEdit = (params) => put({ url: '/config/v1/property/label', data: params });
+export const pLabelDelete = (id) => del({ url: `/config/v1/property/label/${id}` });
+
+/**
+ * 如果没有关键词,则不查询网络
+ * @param keywords
+ * @returns {{records: Array}|Promise<any | never>}
+ */
+export const searchLabel = ({ keywords }) => {
+    if (keywords === '') return { records: [] };
+    return get({ url: '/config/v1/property/label', params: { keywords } });
+};
+
+
+/**
+ * 查询配置
+ * @param params
+ * @param headers
+ * @returns {Promise<unknown>}
+ */
+export const configQueryConfigList = ({ params, headers = {} }) => get({
+    url: 'config/v1/property/config',
+    params,
+    headers,
+});
+
+/**
+ * 添加属性配置
+ * @param data
+ * @returns {Promise<unknown>}
+ */
+export const configAddConfig = (data) => post({ url: 'config/v1/property/config', data });
+
+/**
+ * 编辑配置项
+ * @param id
+ * @param data
+ * @returns {Promise<AxiosResponse<any>|never>}
+ */
+export function configEditConfig({ id, data }) {
+    return put({ url: `config/v1/property/config/${id}`, data });
+}
+
+/**
+ * 删除配置项
+ * @param id
+ * @returns {Promise<unknown>}
+ */
+export function configDelConfig(id) {
+    return del({ url: `config/v1/property/config/${id}` });
+}

+ 3 - 1
src/api/index.js

@@ -4,9 +4,11 @@
 
 import * as configAPI from './config';
 import * as qywxAPI from './qywx';
+import * as sysAPI from './sys';
+import * as testAPI from './test';
 
 
-const apis = { ...configAPI, ...qywxAPI };
+const apis = { ...configAPI, ...qywxAPI, ...sysAPI, ...testAPI };
 
 
 export default apis;

+ 34 - 0
src/api/sys/index.js

@@ -0,0 +1,34 @@
+/**
+ * 授权认证系统的相关接口
+ */
+import { request } from '../../axios';
+import qs from 'qs';
+import CFG from '../../const';
+
+export function getPersonInfo() {
+    return request({
+        url:'/v1/person/info',
+        method: 'get',
+    }).then(resp=>resp.data)
+}
+
+
+/**
+ * 授权认证
+ * @param data.username
+ * @param data.password
+ * @return Promise
+ */
+export function authLogin(data) {
+    return request({
+        url: '/oauth/token',
+        method: 'post',
+        headers: { 'content-type': 'application/x-www-form-urlencoded' },
+        data: qs.stringify({
+            response_type: 'password',
+            clientId: CFG.CLIENT_ID,
+            clientSecret: CFG.CLIENT_SECRET,
+            ...data,
+        }),
+    }).then(resp => resp.data);
+}

+ 48 - 0
src/api/test.js

@@ -0,0 +1,48 @@
+/**
+ * Created by hao.cheng on 2017/4/16.
+ */
+import axios from 'axios';
+import { get, post } from 'src/axios/tools';
+import * as config from './config';
+
+
+export const getBbcNews = () => get({ url: config.NEWS_BBC });
+
+export const npmDependencies = () =>
+    axios
+        .get('./npm.json')
+        .then(res => res.data)
+        .catch(err => console.log(err));
+
+export const weibo = () =>
+    axios
+        .get('./weibo.json')
+        .then(res => res.data)
+        .catch(err => console.log(err));
+
+export const gitOauthLogin = () =>
+    get({
+        url: `${
+            config.GIT_OAUTH
+        }/authorize?client_id=792cdcd244e98dcd2dee&redirect_uri=http://localhost:3006/&scope=user&state=reactAdmin`,
+    });
+export const gitOauthToken = code =>
+    post({
+        url: `https://cors-anywhere.herokuapp.com/${config.GIT_OAUTH}/access_token`,
+        data: {
+            client_id: '792cdcd244e98dcd2dee',
+            client_secret: '81c4ff9df390d482b7c8b214a55cf24bf1f53059',
+            redirect_uri: 'http://localhost:3006/',
+            state: 'reactAdmin',
+            code,
+        },
+    });
+// {headers: {Accept: 'application/json'}}
+export const gitOauthInfo = access_token =>
+    get({ url: `${config.GIT_USER}access_token=${access_token}` });
+
+// easy-mock数据交互
+// 管理员权限获取
+export const admin = () => get({ url: config.MOCK_AUTH_ADMIN });
+// 访问权限获取
+export const guest = () => get({ url: config.MOCK_AUTH_VISITOR });

+ 2 - 57
src/axios/index.js

@@ -1,68 +1,13 @@
-/**
- * Created by hao.cheng on 2017/4/16.
- */
 import axios from 'axios';
-import { get, post } from './tools';
-import * as config from './config';
-import { findPLabel, labelAdd, labelEdit, pLabelDelete, searchLabel } from './property/label';
-import { queryConfig } from './property/config';
-import CONST from '../const'
+import CONST from '../const';
 
 
 export const request = axios.create({
     baseURL:CONST.BASE_API,
-    timeout:500000,
+    timeout:5000,
     withCredentials:true,
     maxRedirects:0,
     transformRequest:axios.defaults.transformRequest,
     transformResponse:axios.defaults.transformResponse
 });
 
-/*配置中心*/
-export {
-    findPLabel, searchLabel, labelAdd, labelEdit, pLabelDelete, queryConfig,
-};
-
-
-export const getBbcNews = () => get({ url: config.NEWS_BBC });
-
-export const npmDependencies = () =>
-    axios
-        .get('./npm.json')
-        .then(res => res.data)
-        .catch(err => console.log(err));
-
-export const weibo = () =>
-    axios
-        .get('./weibo.json')
-        .then(res => res.data)
-        .catch(err => console.log(err));
-
-export const gitOauthLogin = () =>
-    get({
-        url: `${
-            config.GIT_OAUTH
-            }/authorize?client_id=792cdcd244e98dcd2dee&redirect_uri=http://localhost:3006/&scope=user&state=reactAdmin`,
-    });
-export const gitOauthToken = code =>
-    post({
-        url: `https://cors-anywhere.herokuapp.com/${config.GIT_OAUTH}/access_token`,
-        data: {
-            client_id: '792cdcd244e98dcd2dee',
-            client_secret: '81c4ff9df390d482b7c8b214a55cf24bf1f53059',
-            redirect_uri: 'http://localhost:3006/',
-            state: 'reactAdmin',
-            code,
-        },
-    });
-// {headers: {Accept: 'application/json'}}
-export const gitOauthInfo = access_token =>
-    get({ url: `${config.GIT_USER}access_token=${access_token}` });
-
-// easy-mock数据交互
-// 管理员权限获取
-export const admin = () => get({ url: config.MOCK_AUTH_ADMIN });
-// 访问权限获取
-export const guest = () => get({ url: config.MOCK_AUTH_VISITOR });
-
-

+ 0 - 11
src/axios/property/config.js

@@ -1,11 +0,0 @@
-
-import {get,post,put,del} from '../tools'
-
-
-/**
- * 根据条件查询配置信息
- * @param params
- * @param headers
- * @returns {Promise<any | never>}
- */
-export const queryConfig=(params,headers={})=>get({url:'/config/v1/property/config',headers,params});

+ 0 - 21
src/axios/property/label.js

@@ -1,21 +0,0 @@
-import {get,post,put,del} from '../tools'
-/**
- * 查询标签信息
- * @param params
- */
-export const findPLabel=(params)=>get({url:'/config/v1/property/label',params});
-
-export const labelAdd=(params)=>post({url:'/config/v1/property/label',data:params});
-
-export const labelEdit=(params)=>put({url:'/config/v1/property/label',data:params});
-export const pLabelDelete=(id)=>del({url:`/config/v1/property/label/${id}`});
-
-/**
- * 如果没有关键词,则不查询网络
- * @param keywords
- * @returns {{records: Array}|Promise<any | never>}
- */
-export const searchLabel=({keywords})=>{
-    if (keywords === '') return {records:[]};
-    return get({url:'/config/v1/property/label',params:{keywords}})
-};

+ 5 - 4
src/components/pages/Login.jsx

@@ -6,6 +6,7 @@ import { Button, Checkbox, Form, Icon, Input } from 'antd';
 import { PwaInstaller } from '../widget';
 import { connectAlita } from 'redux-alita';
 import { qyWxOauthUrl } from '../../const';
+import CFG from 'src/const';
 
 const FormItem = Form.Item;
 
@@ -51,7 +52,7 @@ class Login extends React.Component {
             <div className="login">
                 <div className="login-form">
                     <div className="login-logo">
-                        <span>React Admin</span>
+                        <span>{CFG.PT_NAME}</span>
                         <PwaInstaller/>
                     </div>
                     <Form onSubmit={this.handleSubmit} style={{ maxWidth: '300px' }}>
@@ -60,7 +61,7 @@ class Login extends React.Component {
                                 rules: [{ required: true, message: '请输入用户名!' }],
                             })(
                                 <Input prefix={<Icon type="user" style={{ fontSize: 13 }}/>}
-                                       placeholder="管理员输入admin, 游客输入guest"/>,
+                                       placeholder="请输入账号"/>,
                             )}
                         </FormItem>
                         <FormItem>
@@ -68,7 +69,7 @@ class Login extends React.Component {
                                 rules: [{ required: true, message: '请输入密码!' }],
                             })(
                                 <Input prefix={<Icon type="lock" style={{ fontSize: 13 }}/>} type="password"
-                                       placeholder="管理员输入admin, 游客输入guest"/>,
+                                       placeholder="请输入您的密码"/>,
                             )}
                         </FormItem>
                         <FormItem>
@@ -85,7 +86,7 @@ class Login extends React.Component {
                             </Button>
                             <p style={{ display: 'flex', justifyContent: 'space-between' }}>
                                 <span>或 现在就去注册!</span>
-                                <span onClick={this.qyWx}><Icon type="github"/>(企业微信)</span>
+                                <span onClick={this.qyWx}>企业微信</span>
                             </p>
                         </FormItem>
                     </Form>

+ 8 - 5
src/const/index.js

@@ -9,7 +9,10 @@ console.log('当前环境: ', NODE_ENV);
  * @type {{BASE_API: string}}
  */
 const BASE_CONF = {
-    BASE_API: 'http://api.tonyandmoney.cn/',
+    BASE_API: 'http://127.0.0.1:11001',
+    PT_NAME: '管理平台',
+    CLIENT_ID: 'sys',
+    CLIENT_SECRET: 'dafadghfgfdghghdwe',
     WX_OAUTH_STATE: 'wx_oauth_',
 };
 
@@ -47,10 +50,10 @@ export const qyWxQrCodeUri = (uri) => {
 };
 
 export const getStateUri = (state) => {
-    if (!!state){
-        return  state.replace(CONF.WX_OAUTH_STATE, '');
-    }else {
-        return ''
+    if (!!state) {
+        return state.replace(CONF.WX_OAUTH_STATE, '');
+    } else {
+        return '';
     }
 };
 

+ 15 - 15
src/index.js

@@ -2,11 +2,11 @@ import React from 'react';
 import ReactDOM from 'react-dom';
 import * as serviceWorker from './serviceWorker';
 import Page from './Page';
-import * as apis from './axios';
 import nApis from './api';
 import ConstData from './data/ConstData';
-// import { AppContainer } from 'react-hot-loader';
+import { AppContainer } from 'react-hot-loader';
 import { AlitaProvider, setConfig } from 'redux-alita';
+import {Provider} from 'react-redux'
 import './style/lib/animate.css';
 import './style/antd/index.less';
 import './style/index.less';
@@ -14,18 +14,18 @@ import { LocaleProvider } from 'antd';
 import zh_CN from 'antd/lib/locale-provider/zh_CN';
 
 
-setConfig({ ...apis, ...nApis });
-// const render = Component => { // 增加react-hot-loader保持状态刷新操作,如果不需要可去掉并把下面注释的打开
-//     ReactDOM.render(
-//         <AppContainer>
-//             <Provider store={store}>
-//                 <Component store={store} />
-//             </Provider>
-//         </AppContainer>
-//         ,
-//         document.getElementById('root')
-//     );
-// };
+setConfig(nApis);
+const render = Component => { // 增加react-hot-loader保持状态刷新操作,如果不需要可去掉并把下面注释的打开
+    ReactDOM.render(
+        <AppContainer>
+            <Provider store={store}>
+                <Component store={store} />
+            </Provider>
+        </AppContainer>
+        ,
+        document.getElementById('root')
+    );
+};
 
 // render(Page);
 
@@ -53,7 +53,7 @@ ReactDOM.render(
     <AlitaProvider>
         <LocaleProvider locale={zh_CN}>
             <ConstData>
-                <Page />
+                <Page/>
             </ConstData>
         </LocaleProvider>
     </AlitaProvider>,

+ 3 - 0
src/package.json

@@ -0,0 +1,3 @@
+{
+  "name": "src"
+}

+ 2 - 2
src/routes/index.js

@@ -58,8 +58,8 @@ export default class CRouter extends Component {
         const { auth } = this.props;
         const { user } = auth.data;
         if (!user) {
-            // return <Redirect to={'/login'}/>;
-            return this.requireWxOauth(component, permission, info);
+            return <Redirect to={'/login'}/>;
+            // return this.requireWxOauth(component, permission, info);
         }
         return (!permission && permission === 'none') ? component : this.requireAuth(permission, component);
     };

+ 3 - 1
src/style/login.less

@@ -4,6 +4,8 @@
   align-items: center;
   height: 100%;
   background: #f3f3f3;
+  box-sizing: border-box;
+  padding-bottom: 10px;
   .login-form{
     width: 320px;
     height: 340px;
@@ -43,4 +45,4 @@
   position: absolute;
   background: url('./imgs/installer.png') no-repeat;
   background-size: cover;
-}
+}