28 changed files with 653 additions and 50 deletions
			
			
		| 
		 After Width: | Height: | Size: 51 KiB  | 
| 
		 After Width: | Height: | Size: 1.8 MiB  | 
@ -0,0 +1,14 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import { ApiTable ,basicAction} from '$utils' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// export function getMembers (orgId) {
 | 
				
			||||
 | 
					//     return dispatch => basicAction({
 | 
				
			||||
 | 
					//         type: 'get',
 | 
				
			||||
 | 
					//         dispatch: dispatch,
 | 
				
			||||
 | 
					//         actionType: 'GET_MEMBERS',
 | 
				
			||||
 | 
					//         url: `${ApiTable.getEnterprisesMembers.replace('{enterpriseId}', orgId)}`,
 | 
				
			||||
 | 
					//         msg: { error: '获取用户列表失败' },
 | 
				
			||||
 | 
					//         reducer: { name: 'members' }
 | 
				
			||||
 | 
					//     });
 | 
				
			||||
 | 
					// }
 | 
				
			||||
@ -0,0 +1,7 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import * as console from './console' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					    ...console | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import ProblemData from './problemData'; | 
				
			||||
 | 
					import OperationData from './operationData'; | 
				
			||||
 | 
					import WorkorderData from './workorderData'; | 
				
			||||
 | 
					export { ProblemData,OperationData ,WorkorderData}; | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					import React, { useEffect } from 'react'; | 
				
			||||
 | 
					import { connect } from 'react-redux'; | 
				
			||||
 | 
					import { Spin, Card } from '@douyinfe/semi-ui'; | 
				
			||||
 | 
					import '../style.less' | 
				
			||||
 | 
					const { Meta } = Card; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const Console = (props) => { | 
				
			||||
 | 
					    const { dispatch, actions, user, loading, socket } = props | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    useEffect(() => { | 
				
			||||
 | 
					        // ACTION 示例 | 
				
			||||
 | 
					        //   dispatch(actions.example.getMembers(user.orgId)) | 
				
			||||
 | 
					    }, []) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // websocket 使用测试 | 
				
			||||
 | 
					    //    useEffect(() => { | 
				
			||||
 | 
					    //       console.log(socket) | 
				
			||||
 | 
					    //       if (socket) { | 
				
			||||
 | 
					    //          socket.on('TEST', function (msg) { | 
				
			||||
 | 
					    //             console.info(msg); | 
				
			||||
 | 
					    //          }); | 
				
			||||
 | 
					    //          return () => { | 
				
			||||
 | 
					    //             socket.off("TEST"); | 
				
			||||
 | 
					    //          } | 
				
			||||
 | 
					    //       } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //    }, [socket]) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        <> | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					                <img src="/assets/images/install/watting.png" alt="" style={{ height: '100%', width: '100%', }} /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </> | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function mapStateToProps (state) { | 
				
			||||
 | 
					    const { auth, global, members, webSocket } = state; | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					        //   loading: members.isRequesting, | 
				
			||||
 | 
					        //   user: auth.user, | 
				
			||||
 | 
					        //   actions: global.actions, | 
				
			||||
 | 
					        //   members: members.data, | 
				
			||||
 | 
					        //   socket: webSocket.socket | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default connect(mapStateToProps)(Console); | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					import React, { useEffect } from 'react'; | 
				
			||||
 | 
					import { connect } from 'react-redux'; | 
				
			||||
 | 
					import { Spin, Card } from '@douyinfe/semi-ui'; | 
				
			||||
 | 
					import '../style.less' | 
				
			||||
 | 
					const { Meta } = Card; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const Console = (props) => { | 
				
			||||
 | 
					    const { dispatch, actions, user, loading, socket } = props | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    useEffect(() => { | 
				
			||||
 | 
					        // ACTION 示例 | 
				
			||||
 | 
					        //   dispatch(actions.example.getMembers(user.orgId)) | 
				
			||||
 | 
					    }, []) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // websocket 使用测试 | 
				
			||||
 | 
					    //    useEffect(() => { | 
				
			||||
 | 
					    //       console.log(socket) | 
				
			||||
 | 
					    //       if (socket) { | 
				
			||||
 | 
					    //          socket.on('TEST', function (msg) { | 
				
			||||
 | 
					    //             console.info(msg); | 
				
			||||
 | 
					    //          }); | 
				
			||||
 | 
					    //          return () => { | 
				
			||||
 | 
					    //             socket.off("TEST"); | 
				
			||||
 | 
					    //          } | 
				
			||||
 | 
					    //       } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //    }, [socket]) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        <> | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					                <img src="/assets/images/install/watting.png" alt="" style={{ height: '100%', width: '100%', }} /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </> | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function mapStateToProps (state) { | 
				
			||||
 | 
					    const { auth, global, members, webSocket } = state; | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					        //   loading: members.isRequesting, | 
				
			||||
 | 
					        //   user: auth.user, | 
				
			||||
 | 
					        //   actions: global.actions, | 
				
			||||
 | 
					        //   members: members.data, | 
				
			||||
 | 
					        //   socket: webSocket.socket | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default connect(mapStateToProps)(Console); | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					import React, { useEffect } from 'react'; | 
				
			||||
 | 
					import { connect } from 'react-redux'; | 
				
			||||
 | 
					import { Spin, Card } from '@douyinfe/semi-ui'; | 
				
			||||
 | 
					import '../style.less' | 
				
			||||
 | 
					const { Meta } = Card; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const Console = (props) => { | 
				
			||||
 | 
					    const { dispatch, actions, user, loading, socket } = props | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    useEffect(() => { | 
				
			||||
 | 
					        // ACTION 示例 | 
				
			||||
 | 
					        //   dispatch(actions.example.getMembers(user.orgId)) | 
				
			||||
 | 
					    }, []) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // websocket 使用测试 | 
				
			||||
 | 
					    //    useEffect(() => { | 
				
			||||
 | 
					    //       console.log(socket) | 
				
			||||
 | 
					    //       if (socket) { | 
				
			||||
 | 
					    //          socket.on('TEST', function (msg) { | 
				
			||||
 | 
					    //             console.info(msg); | 
				
			||||
 | 
					    //          }); | 
				
			||||
 | 
					    //          return () => { | 
				
			||||
 | 
					    //             socket.off("TEST"); | 
				
			||||
 | 
					    //          } | 
				
			||||
 | 
					    //       } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //    }, [socket]) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        <> | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					                <img src="/assets/images/install/watting.png" alt="" style={{ height: '100%', width: '100%', }} /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </> | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function mapStateToProps (state) { | 
				
			||||
 | 
					    const { auth, global, members, webSocket } = state; | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					        //   loading: members.isRequesting, | 
				
			||||
 | 
					        //   user: auth.user, | 
				
			||||
 | 
					        //   actions: global.actions, | 
				
			||||
 | 
					        //   members: members.data, | 
				
			||||
 | 
					        //   socket: webSocket.socket | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default connect(mapStateToProps)(Console); | 
				
			||||
@ -0,0 +1,15 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import reducers from './reducers'; | 
				
			||||
 | 
					import routes from './routes'; | 
				
			||||
 | 
					import actions from './actions'; | 
				
			||||
 | 
					import { getNavItem } from './nav-item'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					    key: 'analysis', | 
				
			||||
 | 
					    name: '分析', | 
				
			||||
 | 
					    reducers: reducers, | 
				
			||||
 | 
					    routes: routes, | 
				
			||||
 | 
					    actions: actions, | 
				
			||||
 | 
					    getNavItem: getNavItem | 
				
			||||
 | 
					}; | 
				
			||||
@ -0,0 +1,41 @@ | 
				
			|||||
 | 
					import React from 'react'; | 
				
			||||
 | 
					import { IconCode } from '@douyinfe/semi-icons'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export function getNavItem (user, dispatch) { | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        [ | 
				
			||||
 | 
					            { | 
				
			||||
 | 
					                itemKey: 'analysis', | 
				
			||||
 | 
					                text: '分析', | 
				
			||||
 | 
					                icon: <IconCode />, | 
				
			||||
 | 
					                items: [ | 
				
			||||
 | 
					                    { | 
				
			||||
 | 
					                        itemKey: 'problemAnalysis', | 
				
			||||
 | 
					                        text: '问题分析', | 
				
			||||
 | 
					                        icon: <iconpark-icon style={{ width: 20, height: 20 }} name="jq"></iconpark-icon>, | 
				
			||||
 | 
					                        to: '/analysis/problemAnalysis/problemData', | 
				
			||||
 | 
					                        items: [{ | 
				
			||||
 | 
					                            itemKey: 'problemData', to: '/analysis/problemAnalysis/problemData', text: '问题数据' | 
				
			||||
 | 
					                        }] | 
				
			||||
 | 
					                    }, { | 
				
			||||
 | 
					                        itemKey: 'operationAnalysis', | 
				
			||||
 | 
					                        text: '运维分析', | 
				
			||||
 | 
					                        icon: <iconpark-icon style={{ width: 20, height: 20 }} name="ys"></iconpark-icon>, | 
				
			||||
 | 
					                        to: '/analysis/operationAnalysis/operationData', | 
				
			||||
 | 
					                        items: [{ | 
				
			||||
 | 
					                            itemKey: 'operationData', to: '/analysis/operationAnalysis/operationData', text: '运维数据' | 
				
			||||
 | 
					                        }] | 
				
			||||
 | 
					                    },{ | 
				
			||||
 | 
					                        itemKey: 'workorderAnalysis', | 
				
			||||
 | 
					                        text: '工单分析', | 
				
			||||
 | 
					                        icon: <iconpark-icon style={{ width: 20, height: 20 }} name="ys"></iconpark-icon>, | 
				
			||||
 | 
					                        to: '/analysis/workorderAnalysis/workorderData', | 
				
			||||
 | 
					                        items: [{ | 
				
			||||
 | 
					                            itemKey: 'workorderData', to: '/analysis/workorderAnalysis/workorderData', text: '工单数据' | 
				
			||||
 | 
					                        }] | 
				
			||||
 | 
					                    }, | 
				
			||||
 | 
					                ] | 
				
			||||
 | 
					            }, | 
				
			||||
 | 
					        ] | 
				
			||||
 | 
					    ); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,5 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,42 @@ | 
				
			|||||
 | 
					import { ProblemData, OperationData, WorkorderData } from './containers'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default [{ | 
				
			||||
 | 
					    type: 'inner', | 
				
			||||
 | 
					    route: { | 
				
			||||
 | 
					        path: '/analysis', | 
				
			||||
 | 
					        key: 'analysis', | 
				
			||||
 | 
					        breadcrumb: '分析', | 
				
			||||
 | 
					        // 不设置 component 则面包屑禁止跳转
 | 
				
			||||
 | 
					        childRoutes: [{ | 
				
			||||
 | 
					            path: '/problemAnalysis', | 
				
			||||
 | 
					            key: 'problemAnalysis', | 
				
			||||
 | 
					            breadcrumb: '问题分析', | 
				
			||||
 | 
					            childRoutes: [{ | 
				
			||||
 | 
					                path: '/problemData', | 
				
			||||
 | 
					                key: 'problemData', | 
				
			||||
 | 
					                component: ProblemData, | 
				
			||||
 | 
					                breadcrumb: '分析数据', | 
				
			||||
 | 
					            }] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					            path: '/operationAnalysis', | 
				
			||||
 | 
					            key: 'operationAnalysis', | 
				
			||||
 | 
					            breadcrumb: '运维分析', | 
				
			||||
 | 
					            childRoutes: [{ | 
				
			||||
 | 
					                path: '/operationData', | 
				
			||||
 | 
					                key: 'operationData', | 
				
			||||
 | 
					                component: OperationData, | 
				
			||||
 | 
					                breadcrumb: '运维数据', | 
				
			||||
 | 
					            }] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					            path: '/workorderAnalysis', | 
				
			||||
 | 
					            key: 'workorderAnalysis', | 
				
			||||
 | 
					            breadcrumb: '工单分析', | 
				
			||||
 | 
					            childRoutes: [{ | 
				
			||||
 | 
					                path: '/workorderData', | 
				
			||||
 | 
					                key: 'workorderData', | 
				
			||||
 | 
					                component: WorkorderData, | 
				
			||||
 | 
					                breadcrumb: '工单数据', | 
				
			||||
 | 
					            }] | 
				
			||||
 | 
					        }] | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					}]; | 
				
			||||
@ -0,0 +1,7 @@ | 
				
			|||||
 | 
					#example { | 
				
			||||
 | 
					    box-shadow: 3px 3px 2px black; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#example:hover { | 
				
			||||
 | 
					    color: yellowgreen; | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,14 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import { ApiTable ,basicAction} from '$utils' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// export function getMembers (orgId) {
 | 
				
			||||
 | 
					//     return dispatch => basicAction({
 | 
				
			||||
 | 
					//         type: 'get',
 | 
				
			||||
 | 
					//         dispatch: dispatch,
 | 
				
			||||
 | 
					//         actionType: 'GET_MEMBERS',
 | 
				
			||||
 | 
					//         url: `${ApiTable.getEnterprisesMembers.replace('{enterpriseId}', orgId)}`,
 | 
				
			||||
 | 
					//         msg: { error: '获取用户列表失败' },
 | 
				
			||||
 | 
					//         reducer: { name: 'members' }
 | 
				
			||||
 | 
					//     });
 | 
				
			||||
 | 
					// }
 | 
				
			||||
@ -0,0 +1,7 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import * as console from './console' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					    ...console | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					import React, { useEffect } from 'react'; | 
				
			||||
 | 
					import { connect } from 'react-redux'; | 
				
			||||
 | 
					import { Spin, Card } from '@douyinfe/semi-ui'; | 
				
			||||
 | 
					import '../style.less' | 
				
			||||
 | 
					const { Meta } = Card; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const Console = (props) => { | 
				
			||||
 | 
					    const { dispatch, actions, user, loading, socket } = props | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    useEffect(() => { | 
				
			||||
 | 
					        // ACTION 示例 | 
				
			||||
 | 
					        //   dispatch(actions.example.getMembers(user.orgId)) | 
				
			||||
 | 
					    }, []) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // websocket 使用测试 | 
				
			||||
 | 
					    //    useEffect(() => { | 
				
			||||
 | 
					    //       console.log(socket) | 
				
			||||
 | 
					    //       if (socket) { | 
				
			||||
 | 
					    //          socket.on('TEST', function (msg) { | 
				
			||||
 | 
					    //             console.info(msg); | 
				
			||||
 | 
					    //          }); | 
				
			||||
 | 
					    //          return () => { | 
				
			||||
 | 
					    //             socket.off("TEST"); | 
				
			||||
 | 
					    //          } | 
				
			||||
 | 
					    //       } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //    }, [socket]) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        <> | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					                <img src="/assets/images/install/watting.png" alt="" style={{ height: '100%', width: '100%', }} /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </> | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function mapStateToProps (state) { | 
				
			||||
 | 
					    const { auth, global, members, webSocket } = state; | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					        //   loading: members.isRequesting, | 
				
			||||
 | 
					        //   user: auth.user, | 
				
			||||
 | 
					        //   actions: global.actions, | 
				
			||||
 | 
					        //   members: members.data, | 
				
			||||
 | 
					        //   socket: webSocket.socket | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default connect(mapStateToProps)(Console); | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					import React, { useEffect } from 'react'; | 
				
			||||
 | 
					import { connect } from 'react-redux'; | 
				
			||||
 | 
					import { Spin, Card } from '@douyinfe/semi-ui'; | 
				
			||||
 | 
					import '../style.less' | 
				
			||||
 | 
					const { Meta } = Card; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const Console = (props) => { | 
				
			||||
 | 
					    const { dispatch, actions, user, loading, socket } = props | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    useEffect(() => { | 
				
			||||
 | 
					        // ACTION 示例 | 
				
			||||
 | 
					        //   dispatch(actions.example.getMembers(user.orgId)) | 
				
			||||
 | 
					    }, []) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // websocket 使用测试 | 
				
			||||
 | 
					    //    useEffect(() => { | 
				
			||||
 | 
					    //       console.log(socket) | 
				
			||||
 | 
					    //       if (socket) { | 
				
			||||
 | 
					    //          socket.on('TEST', function (msg) { | 
				
			||||
 | 
					    //             console.info(msg); | 
				
			||||
 | 
					    //          }); | 
				
			||||
 | 
					    //          return () => { | 
				
			||||
 | 
					    //             socket.off("TEST"); | 
				
			||||
 | 
					    //          } | 
				
			||||
 | 
					    //       } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //    }, [socket]) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        <> | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					                <img src="/assets/images/install/watting.png" alt="" style={{ height: '100%', width: '100%', }} /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </> | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function mapStateToProps (state) { | 
				
			||||
 | 
					    const { auth, global, members, webSocket } = state; | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					        //   loading: members.isRequesting, | 
				
			||||
 | 
					        //   user: auth.user, | 
				
			||||
 | 
					        //   actions: global.actions, | 
				
			||||
 | 
					        //   members: members.data, | 
				
			||||
 | 
					        //   socket: webSocket.socket | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default connect(mapStateToProps)(Console); | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					import React, { useEffect } from 'react'; | 
				
			||||
 | 
					import { connect } from 'react-redux'; | 
				
			||||
 | 
					import { Spin, Card } from '@douyinfe/semi-ui'; | 
				
			||||
 | 
					import '../style.less' | 
				
			||||
 | 
					const { Meta } = Card; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const Console = (props) => { | 
				
			||||
 | 
					    const { dispatch, actions, user, loading, socket } = props | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    useEffect(() => { | 
				
			||||
 | 
					        // ACTION 示例 | 
				
			||||
 | 
					        //   dispatch(actions.example.getMembers(user.orgId)) | 
				
			||||
 | 
					    }, []) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // websocket 使用测试 | 
				
			||||
 | 
					    //    useEffect(() => { | 
				
			||||
 | 
					    //       console.log(socket) | 
				
			||||
 | 
					    //       if (socket) { | 
				
			||||
 | 
					    //          socket.on('TEST', function (msg) { | 
				
			||||
 | 
					    //             console.info(msg); | 
				
			||||
 | 
					    //          }); | 
				
			||||
 | 
					    //          return () => { | 
				
			||||
 | 
					    //             socket.off("TEST"); | 
				
			||||
 | 
					    //          } | 
				
			||||
 | 
					    //       } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //    }, [socket]) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        <> | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					                <img src="/assets/images/install/watting.png" alt="" style={{ height: '100%', width: '100%', }} /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </> | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function mapStateToProps (state) { | 
				
			||||
 | 
					    const { auth, global, members, webSocket } = state; | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					        //   loading: members.isRequesting, | 
				
			||||
 | 
					        //   user: auth.user, | 
				
			||||
 | 
					        //   actions: global.actions, | 
				
			||||
 | 
					        //   members: members.data, | 
				
			||||
 | 
					        //   socket: webSocket.socket | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default connect(mapStateToProps)(Console); | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					import DataQuery from './dataQuery'; | 
				
			||||
 | 
					import DataComparison from './dataComparison'; | 
				
			||||
 | 
					import DataAssociation from './dataAssociation'; | 
				
			||||
 | 
					import Notebook from './notebook'; | 
				
			||||
 | 
					export { DataQuery, DataComparison, DataAssociation,Notebook}; | 
				
			||||
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					import React, { useEffect } from 'react'; | 
				
			||||
 | 
					import { connect } from 'react-redux'; | 
				
			||||
 | 
					import { Spin, Card } from '@douyinfe/semi-ui'; | 
				
			||||
 | 
					import '../style.less' | 
				
			||||
 | 
					const { Meta } = Card; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const Console = (props) => { | 
				
			||||
 | 
					    const { dispatch, actions, user, loading, socket } = props | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    useEffect(() => { | 
				
			||||
 | 
					        // ACTION 示例 | 
				
			||||
 | 
					        //   dispatch(actions.example.getMembers(user.orgId)) | 
				
			||||
 | 
					    }, []) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // websocket 使用测试 | 
				
			||||
 | 
					    //    useEffect(() => { | 
				
			||||
 | 
					    //       console.log(socket) | 
				
			||||
 | 
					    //       if (socket) { | 
				
			||||
 | 
					    //          socket.on('TEST', function (msg) { | 
				
			||||
 | 
					    //             console.info(msg); | 
				
			||||
 | 
					    //          }); | 
				
			||||
 | 
					    //          return () => { | 
				
			||||
 | 
					    //             socket.off("TEST"); | 
				
			||||
 | 
					    //          } | 
				
			||||
 | 
					    //       } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    //    }, [socket]) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        <> | 
				
			||||
 | 
					            <div> | 
				
			||||
 | 
					                <img src="/assets/images/install/watting.png" alt="" style={{ height: '100%', width: '100%', }} /> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </> | 
				
			||||
 | 
					    ) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function mapStateToProps (state) { | 
				
			||||
 | 
					    const { auth, global, members, webSocket } = state; | 
				
			||||
 | 
					    return { | 
				
			||||
 | 
					        //   loading: members.isRequesting, | 
				
			||||
 | 
					        //   user: auth.user, | 
				
			||||
 | 
					        //   actions: global.actions, | 
				
			||||
 | 
					        //   members: members.data, | 
				
			||||
 | 
					        //   socket: webSocket.socket | 
				
			||||
 | 
					    }; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default connect(mapStateToProps)(Console); | 
				
			||||
@ -0,0 +1,15 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import reducers from './reducers'; | 
				
			||||
 | 
					import routes from './routes'; | 
				
			||||
 | 
					import actions from './actions'; | 
				
			||||
 | 
					import { getNavItem } from './nav-item'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					    key: 'data', | 
				
			||||
 | 
					    name: '数据', | 
				
			||||
 | 
					    reducers: reducers, | 
				
			||||
 | 
					    routes: routes, | 
				
			||||
 | 
					    actions: actions, | 
				
			||||
 | 
					    getNavItem: getNavItem | 
				
			||||
 | 
					}; | 
				
			||||
@ -0,0 +1,37 @@ | 
				
			|||||
 | 
					import React from 'react'; | 
				
			||||
 | 
					import { IconCode } from '@douyinfe/semi-icons'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export function getNavItem (user, dispatch) { | 
				
			||||
 | 
					    return ( | 
				
			||||
 | 
					        [ | 
				
			||||
 | 
					            { | 
				
			||||
 | 
					                itemKey: 'data', | 
				
			||||
 | 
					                text: '数据', | 
				
			||||
 | 
					                icon: <IconCode />, | 
				
			||||
 | 
					                items: [ | 
				
			||||
 | 
					                    { | 
				
			||||
 | 
					                        itemKey: 'dataMonitoring', | 
				
			||||
 | 
					                        text: '数据监控', | 
				
			||||
 | 
					                        icon: <iconpark-icon style={{ width: 20, height: 20 }} name="jq"></iconpark-icon>, | 
				
			||||
 | 
					                        to: '/data/dataMonitoring/dataQuery', | 
				
			||||
 | 
					                        items: [{ | 
				
			||||
 | 
					                            itemKey: 'dataQuery', to: '/data/dataMonitoring/dataQuery', text: '数据查询' | 
				
			||||
 | 
					                        }] | 
				
			||||
 | 
					                    }, { | 
				
			||||
 | 
					                        itemKey: 'dataAnalysis', | 
				
			||||
 | 
					                        text: '数据分析', | 
				
			||||
 | 
					                        icon: <iconpark-icon style={{ width: 20, height: 20 }} name="ys"></iconpark-icon>, | 
				
			||||
 | 
					                        to: '/data/dataAnalysis/dataComparison', | 
				
			||||
 | 
					                        items: [{ | 
				
			||||
 | 
					                            itemKey: 'dataComparison', to: '/data/dataAnalysis/dataComparison', text: '数据对比' | 
				
			||||
 | 
					                        },{ | 
				
			||||
 | 
					                            itemKey: 'dataAssociation', to: '/data/dataAnalysis/dataAssociation', text: '数据关联' | 
				
			||||
 | 
					                        },{ | 
				
			||||
 | 
					                            itemKey: 'notebook', to: '/data/dataAnalysis/notebook', text: 'notebook' | 
				
			||||
 | 
					                        }] | 
				
			||||
 | 
					                    }, | 
				
			||||
 | 
					                ] | 
				
			||||
 | 
					            }, | 
				
			||||
 | 
					        ] | 
				
			||||
 | 
					    ); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,5 @@ | 
				
			|||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,42 @@ | 
				
			|||||
 | 
					import { DataQuery, DataComparison, DataAssociation,Notebook } from './containers'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default [{ | 
				
			||||
 | 
					    type: 'inner', | 
				
			||||
 | 
					    route: { | 
				
			||||
 | 
					        path: '/data', | 
				
			||||
 | 
					        key: 'data', | 
				
			||||
 | 
					        breadcrumb: '数据', | 
				
			||||
 | 
					        // 不设置 component 则面包屑禁止跳转
 | 
				
			||||
 | 
					        childRoutes: [{ | 
				
			||||
 | 
					            path: '/dataMonitoring', | 
				
			||||
 | 
					            key: 'dataMonitoring', | 
				
			||||
 | 
					            breadcrumb: '数据监控', | 
				
			||||
 | 
					            childRoutes: [{ | 
				
			||||
 | 
					                path: '/dataQuery', | 
				
			||||
 | 
					                key: 'dataQuery', | 
				
			||||
 | 
					                component: DataQuery, | 
				
			||||
 | 
					                breadcrumb: '数据查询', | 
				
			||||
 | 
					            }] | 
				
			||||
 | 
					        }, { | 
				
			||||
 | 
					            path: '/dataAnalysis', | 
				
			||||
 | 
					            key: 'dataAnalysis', | 
				
			||||
 | 
					            breadcrumb: '数据分析', | 
				
			||||
 | 
					            childRoutes: [{ | 
				
			||||
 | 
					                path: '/dataComparison', | 
				
			||||
 | 
					                key: 'dataComparison', | 
				
			||||
 | 
					                component: DataComparison, | 
				
			||||
 | 
					                breadcrumb: '数据对比', | 
				
			||||
 | 
					            },{ | 
				
			||||
 | 
					                path: '/dataAssociation', | 
				
			||||
 | 
					                key: 'dataAssociation', | 
				
			||||
 | 
					                component: DataAssociation, | 
				
			||||
 | 
					                breadcrumb: '数据关联', | 
				
			||||
 | 
					            },{ | 
				
			||||
 | 
					                path: '/notebook', | 
				
			||||
 | 
					                key: 'notebook', | 
				
			||||
 | 
					                component: Notebook, | 
				
			||||
 | 
					                breadcrumb: 'notebook', | 
				
			||||
 | 
					            }] | 
				
			||||
 | 
					        }] | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					}]; | 
				
			||||
@ -0,0 +1,7 @@ | 
				
			|||||
 | 
					#example { | 
				
			||||
 | 
					    box-shadow: 3px 3px 2px black; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#example:hover { | 
				
			||||
 | 
					    color: yellowgreen; | 
				
			||||
 | 
					} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue