After Width: | Height: | Size: 165 KiB |
After Width: | Height: | Size: 116 KiB |
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 137 KiB |
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 233 KiB |
@ -1,49 +1,70 @@ |
|||||
import React, { useEffect } from 'react'; |
import React, { useEffect } from 'react'; |
||||
import { connect } from 'react-redux'; |
import { connect } from 'react-redux'; |
||||
import { Spin, Card } from '@douyinfe/semi-ui'; |
import { Button } from '@douyinfe/semi-ui'; |
||||
import '../style.less' |
|
||||
const { Meta } = Card; |
|
||||
|
|
||||
const Console = (props) => { |
const Grafana = (props) => { |
||||
const { dispatch, actions, user, loading, socket } = props |
const { dispatch, actions, user, loading, socket, pomsNotebook, clientHeight } = 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={{ width: 'calc(100% + 16px)', position: "relative",top: -12, left: -8,}} /> |
|
||||
</div> |
|
||||
</> |
|
||||
) |
|
||||
} |
|
||||
|
|
||||
|
useEffect(() => { |
||||
|
|
||||
|
}, []) |
||||
|
|
||||
|
|
||||
|
return ( |
||||
|
<div style={{ height: clientHeight - 56, width: 'calc(100% + 16px)', margin: "-12px -8px", }}> |
||||
|
<div style={{ width: '100%', height: 40, display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}> |
||||
|
<a target='_blank' href={pomsNotebook} |
||||
|
style={{ marginRight: 10 }} |
||||
|
><Button theme='light' type='secondary'>进入网页</Button></a> |
||||
|
</div> |
||||
|
<div style={{ |
||||
|
height: 'calc(100% - 40px)', width: '100%', |
||||
|
// backgroundImage: "url('/assets/images/background/General.png')", |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// position: 'relative', |
||||
|
// top: -12, left: -8, |
||||
|
}}> |
||||
|
<iframe |
||||
|
frameBorder="0" |
||||
|
allowFullScreen='true' |
||||
|
id='pomsNotebook' |
||||
|
src={pomsNotebook} |
||||
|
width={'100%'} |
||||
|
height={'100%'} |
||||
|
// wmode="transparent" |
||||
|
// style={{ pointerEvents: 'none' }} |
||||
|
/> |
||||
|
{/* // <div style={{ position: 'absolute', top: 'calc(50%)', left: 'calc(10%)', }}> |
||||
|
// <div style={{ |
||||
|
// width: 184, height: 48, fontWeight: 400, color: '#FFFFFF', lineHeight: '48px', backgroundImage: "url('/assets/images/background/B.png')", textAlign: 'center', |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// }}> |
||||
|
// <a target='_blank' href={pomsMonitor} |
||||
|
// style={{ width: '100%', height: '100%', display: 'block' }} |
||||
|
// > 进入Grafana</a> |
||||
|
// </div> |
||||
|
// <div style={{ width: 679, height: 40, fontSize: 28, fontWeight: 400, color: '#146AD7', lineHeight: '40px', marginTop: 40 }}> |
||||
|
// 点击可跳转服务器监控网站Grafana</div> |
||||
|
// </div> */} |
||||
|
</div> |
||||
|
{/* <iframe frameBorder="0" src={pomsMonitor} style={{height: 'calc(100vh - 80px)', width: 'calc(100%)'}} /> */} |
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
function mapStateToProps (state) { |
function mapStateToProps (state) { |
||||
const { auth, global, members, webSocket } = state; |
const { auth, global, members, webSocket } = state; |
||||
return { |
return { |
||||
// loading: members.isRequesting, |
// loading: members.isRequesting, |
||||
// user: auth.user, |
// user: auth.user, |
||||
// actions: global.actions, |
// actions: global.actions, |
||||
// members: members.data, |
// members: members.data, |
||||
// socket: webSocket.socket |
clientHeight: global.clientHeight, |
||||
}; |
pomsNotebook: global.pomsNotebook, |
||||
|
}; |
||||
} |
} |
||||
|
|
||||
export default connect(mapStateToProps)(Console); |
export default connect(mapStateToProps)(Grafana); |
||||
|
@ -0,0 +1,52 @@ |
|||||
|
import React, { useEffect } from 'react'; |
||||
|
import { connect } from 'react-redux'; |
||||
|
import { Button } from '@douyinfe/semi-ui'; |
||||
|
|
||||
|
|
||||
|
|
||||
|
const Ambari = (props) => { |
||||
|
const { dispatch, actions, pomsAmbari, clientHeight } = props |
||||
|
|
||||
|
useEffect(() => { |
||||
|
|
||||
|
}, []) |
||||
|
|
||||
|
|
||||
|
return ( |
||||
|
<div style={{ height: clientHeight - 56, width: 'calc(100% + 16px)',margin:"-12px -8px" }}> |
||||
|
<div style={{ |
||||
|
height: '100%', width: '100%', |
||||
|
// backgroundImage: "url('/assets/images/background/General.png')", |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// position: 'relative', |
||||
|
// top: -12, left: -8, |
||||
|
}}> |
||||
|
{/* <iframe |
||||
|
frameBorder="0" |
||||
|
allowFullScreen='true' |
||||
|
id={'pomsAmbari'} |
||||
|
src={pomsAmbari} |
||||
|
width={'100%'} |
||||
|
height={'100%'} |
||||
|
// wmode="transparent" |
||||
|
// style={{ pointerEvents: 'none' }} |
||||
|
/> */} |
||||
|
|
||||
|
<a target='_blank' href={pomsAmbari} |
||||
|
style={{ marginRight: 10 }} |
||||
|
><Button theme='solid' type='secondary'>进入网页</Button></a> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
|
function mapStateToProps (state) { |
||||
|
const { auth, global, members, webSocket } = state; |
||||
|
return { |
||||
|
clientHeight: global.clientHeight, |
||||
|
pomsAmbari: global.pomsAmbari, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default connect(mapStateToProps)(Ambari); |
@ -0,0 +1,55 @@ |
|||||
|
import React, { useEffect } from 'react'; |
||||
|
import { connect } from 'react-redux'; |
||||
|
import { IconReply } from '@douyinfe/semi-icons'; |
||||
|
import { Button } from '@douyinfe/semi-ui'; |
||||
|
|
||||
|
|
||||
|
|
||||
|
const Es = (props) => { |
||||
|
const { dispatch, actions, pomsEs, clientHeight ,history} = props |
||||
|
|
||||
|
useEffect(() => { |
||||
|
|
||||
|
}, []) |
||||
|
|
||||
|
return ( |
||||
|
<div style={{ height: clientHeight - 56, width: 'calc(100% + 16px)', margin: "-12px -8px", position: 'relative' }}> |
||||
|
<div style={{ width: 'calc(100%)', height: 40, padding:'0 10px',display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}> |
||||
|
<Button theme='light' type='secondary' onClick={() => { |
||||
|
history.push({ pathname: '/facility/other/other1', }) |
||||
|
}}>返回</Button> |
||||
|
<a target='_blank' href={pomsEs} |
||||
|
><Button theme='light' type='secondary'>进入网页</Button></a> |
||||
|
</div> |
||||
|
<div style={{ |
||||
|
height: 'calc(100% - 40px)', width: '100%', |
||||
|
// backgroundImage: "url('/assets/images/background/General.png')", |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// position: 'relative', |
||||
|
// top: -12, left: -8, |
||||
|
}}> |
||||
|
<iframe |
||||
|
frameBorder="0" |
||||
|
allowFullScreen='true' |
||||
|
id={'pomsEs'} |
||||
|
src={pomsEs} |
||||
|
width={'100%'} |
||||
|
height={'100%'} |
||||
|
// wmode="transparent" |
||||
|
// style={{ pointerEvents: 'none' }} |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
|
function mapStateToProps (state) { |
||||
|
const { auth, global, members, webSocket } = state; |
||||
|
return { |
||||
|
clientHeight: global.clientHeight, |
||||
|
pomsEs: global.pomsEs, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default connect(mapStateToProps)(Es); |
@ -0,0 +1,67 @@ |
|||||
|
import React, { useEffect } from 'react'; |
||||
|
import { connect } from 'react-redux'; |
||||
|
import { Button } from '@douyinfe/semi-ui'; |
||||
|
|
||||
|
|
||||
|
const Grafana = (props) => { |
||||
|
const { dispatch, actions, user, loading, socket, pomsMonitor, clientHeight,history } = props |
||||
|
|
||||
|
useEffect(() => { |
||||
|
|
||||
|
}, []) |
||||
|
|
||||
|
|
||||
|
return ( |
||||
|
<div style={{ height: clientHeight - 56, width: 'calc(100% + 16px)', margin: "-12px -8px", position: 'relative' }}> |
||||
|
<div style={{ width: 'calc(100%)', height: 40, padding:'0 10px',display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}> |
||||
|
<Button theme='light' type='secondary' onClick={() => { |
||||
|
history.push({ pathname: '/facility/serverInformation/monitor', }) |
||||
|
}}>返回</Button> |
||||
|
<a target='_blank' href={pomsMonitor} |
||||
|
><Button theme='light' type='secondary'>进入网页</Button></a> |
||||
|
</div> |
||||
|
<div style={{ |
||||
|
height: 'calc(100% - 40px)', width: '100%', |
||||
|
// backgroundImage: "url('/assets/images/background/General.png')", |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// position: 'relative', |
||||
|
// top: -12, left: -8, |
||||
|
}}> |
||||
|
<iframe |
||||
|
frameBorder="0" |
||||
|
allowFullScreen='true' |
||||
|
id='monitor' |
||||
|
src={pomsMonitor} |
||||
|
width={'100%'} |
||||
|
height={'100%'} |
||||
|
// wmode="transparent" |
||||
|
// style={{ pointerEvents: 'none' }} |
||||
|
/> |
||||
|
{/* // <div style={{ position: 'absolute', top: 'calc(50%)', left: 'calc(10%)', }}> |
||||
|
// <div style={{ |
||||
|
// width: 184, height: 48, fontWeight: 400, color: '#FFFFFF', lineHeight: '48px', backgroundImage: "url('/assets/images/background/B.png')", textAlign: 'center', |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// }}> |
||||
|
// <a target='_blank' href={pomsMonitor} |
||||
|
// style={{ width: '100%', height: '100%', display: 'block' }} |
||||
|
// > 进入Grafana</a> |
||||
|
// </div> |
||||
|
// <div style={{ width: 679, height: 40, fontSize: 28, fontWeight: 400, color: '#146AD7', lineHeight: '40px', marginTop: 40 }}> |
||||
|
// 点击可跳转服务器监控网站Grafana</div> |
||||
|
// </div> */} |
||||
|
</div> |
||||
|
{/* <iframe frameBorder="0" src={pomsMonitor} style={{height: 'calc(100vh - 80px)', width: 'calc(100%)'}} /> */} |
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
|
function mapStateToProps (state) { |
||||
|
const { auth, global, members, webSocket } = state; |
||||
|
return { |
||||
|
clientHeight: global.clientHeight, |
||||
|
pomsMonitor: global.pomsMonitor, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default connect(mapStateToProps)(Grafana); |
@ -1,6 +1,12 @@ |
|||||
'use strict'; |
'use strict'; |
||||
|
|
||||
import Other from './other'; |
|
||||
import Monitor from './monitor'; |
import Monitor from './monitor'; |
||||
|
import Other from './other'; |
||||
|
import Grafana from './grafana'; |
||||
|
import Kubesphere from './kubesphere'; |
||||
|
import Ambari from './ambari'; |
||||
|
import Es from './es'; |
||||
|
import Pghero from './pghero'; |
||||
|
import Kowl from './kowl'; |
||||
import MaintenanceRecords from './maintenanceRecords'; |
import MaintenanceRecords from './maintenanceRecords'; |
||||
export { MaintenanceRecords,Monitor,Other}; |
export { MaintenanceRecords,Monitor, Grafana, Other, Kubesphere, Ambari, Es, Pghero, Kowl }; |
@ -0,0 +1,54 @@ |
|||||
|
import React, { useEffect } from 'react'; |
||||
|
import { connect } from 'react-redux'; |
||||
|
import { Button } from '@douyinfe/semi-ui'; |
||||
|
import { IconReply } from '@douyinfe/semi-icons'; |
||||
|
|
||||
|
const Kowl = (props) => { |
||||
|
const { dispatch, actions, pomsKowl, clientHeight ,history} = props |
||||
|
|
||||
|
useEffect(() => { |
||||
|
|
||||
|
}, []) |
||||
|
|
||||
|
|
||||
|
return ( |
||||
|
<div style={{ height: clientHeight - 56, width: 'calc(100% + 16px)',margin:"-12px -8px",position: 'relative', }}> |
||||
|
<div style={{ width: 'calc(100%)', height: 40, padding:'0 10px',display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}> |
||||
|
<Button theme='light' type='secondary' onClick={() => { |
||||
|
history.push({ pathname: '/facility/other/other1', }) |
||||
|
}}>返回</Button> |
||||
|
<a target='_blank' href={pomsKowl} |
||||
|
><Button theme='light' type='secondary'>进入网页</Button></a> |
||||
|
</div> |
||||
|
<div style={{ |
||||
|
height: 'calc(100% - 40px)', width: '100%', |
||||
|
// backgroundImage: "url('/assets/images/background/General.png')", |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// position: 'relative', |
||||
|
// top: -12, left: -8, |
||||
|
}}> |
||||
|
<iframe |
||||
|
frameBorder="0" |
||||
|
allowFullScreen='true' |
||||
|
id={'pomsKowl'} |
||||
|
src={pomsKowl} |
||||
|
width={'100%'} |
||||
|
height={'100%'} |
||||
|
// wmode="transparent" |
||||
|
// style={{ pointerEvents: 'none' }} |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
|
function mapStateToProps (state) { |
||||
|
const { auth, global, members, webSocket } = state; |
||||
|
return { |
||||
|
clientHeight: global.clientHeight, |
||||
|
pomsKowl: global.pomsKowl, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default connect(mapStateToProps)(Kowl); |
@ -0,0 +1,54 @@ |
|||||
|
import React, { useEffect } from 'react'; |
||||
|
import { connect } from 'react-redux'; |
||||
|
import { Button } from '@douyinfe/semi-ui'; |
||||
|
|
||||
|
|
||||
|
const Kubesphere = (props) => { |
||||
|
const { dispatch, actions, pomsKubesphere, clientHeight,history } = props |
||||
|
|
||||
|
useEffect(() => { |
||||
|
|
||||
|
}, []) |
||||
|
|
||||
|
|
||||
|
return ( |
||||
|
<div style={{ height: clientHeight - 56, width: 'calc(100% + 16px)',margin:"-12px -8px" }}> |
||||
|
<div style={{ width: 'calc(100%)', height: 40, padding:'0 10px',display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}> |
||||
|
<Button theme='light' type='secondary' onClick={() => { |
||||
|
history.push({ pathname: '/facility/serverInformation/monitor', }) |
||||
|
}}>返回</Button> |
||||
|
<a target='_blank' href={pomsKubesphere} |
||||
|
><Button theme='light' type='secondary'>进入网页</Button></a> |
||||
|
</div> |
||||
|
<div style={{ |
||||
|
height: 'calc(100% - 40px)', width: '100%', |
||||
|
// backgroundImage: "url('/assets/images/background/General.png')", |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// position: 'relative', |
||||
|
// top: -12, left: -8, |
||||
|
}}> |
||||
|
<iframe |
||||
|
frameBorder="0" |
||||
|
allowFullScreen='true' |
||||
|
id={'pomsKubesphere'} |
||||
|
src={pomsKubesphere} |
||||
|
width={'100%'} |
||||
|
height={'100%'} |
||||
|
// wmode="transparent" |
||||
|
// style={{ pointerEvents: 'none' }} |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
|
function mapStateToProps (state) { |
||||
|
const { auth, global, members, webSocket } = state; |
||||
|
return { |
||||
|
clientHeight: global.clientHeight, |
||||
|
pomsKubesphere: global.pomsKubesphere, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default connect(mapStateToProps)(Kubesphere); |
@ -0,0 +1,55 @@ |
|||||
|
import React, { useEffect } from 'react'; |
||||
|
import { connect } from 'react-redux'; |
||||
|
import { IconReply } from '@douyinfe/semi-icons'; |
||||
|
import { Button } from '@douyinfe/semi-ui'; |
||||
|
|
||||
|
|
||||
|
const Pghero = (props) => { |
||||
|
const { dispatch, actions, pomsPghero, clientHeight,history } = props |
||||
|
|
||||
|
useEffect(() => { |
||||
|
|
||||
|
}, []) |
||||
|
|
||||
|
|
||||
|
return ( |
||||
|
<div style={{ height: clientHeight - 56, width: 'calc(100% + 16px)',margin:"-12px -8px",position: 'relative' }}> |
||||
|
<div style={{ width: 'calc(100%)', height: 40, padding:'0 10px',display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}> |
||||
|
<Button theme='light' type='secondary' onClick={() => { |
||||
|
history.push({ pathname: '/facility/other/other1', }) |
||||
|
}}>返回</Button> |
||||
|
<a target='_blank' href={pomsPghero} |
||||
|
><Button theme='light' type='secondary'>进入网页</Button></a> |
||||
|
</div> |
||||
|
<div style={{ |
||||
|
height: 'calc(100% - 40px)', width: '100%', |
||||
|
// backgroundImage: "url('/assets/images/background/General.png')", |
||||
|
// backgroundSize: 'cover', |
||||
|
// backgroundRepeat: 'no-repeat', |
||||
|
// position: 'relative', |
||||
|
// top: -12, left: -8, |
||||
|
}}> |
||||
|
<iframe |
||||
|
frameBorder="0" |
||||
|
allowFullScreen='true' |
||||
|
id={'pomsPghero'} |
||||
|
src={pomsPghero} |
||||
|
width={'100%'} |
||||
|
height={'100%'} |
||||
|
// wmode="transparent" |
||||
|
// style={{ pointerEvents: 'none' }} |
||||
|
/> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
) |
||||
|
} |
||||
|
function mapStateToProps (state) { |
||||
|
const { auth, global, members, webSocket } = state; |
||||
|
return { |
||||
|
clientHeight: global.clientHeight, |
||||
|
pomsPghero: global.pomsPghero, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export default connect(mapStateToProps)(Pghero); |
@ -1,47 +1,77 @@ |
|||||
import { MaintenanceRecords, Monitor, Other } from './containers'; |
import { MaintenanceRecords, Grafana, Monitor,Other, Kubesphere, Ambari, Es, Kowl, Pghero } from './containers'; |
||||
|
|
||||
export default [{ |
export default [{ |
||||
type: 'inner', |
type: 'inner', |
||||
route: { |
route: { |
||||
path: '/facility', |
path: '/facility', |
||||
key: 'facility', |
key: 'facility', |
||||
breadcrumb: '设备', |
breadcrumb: '设备', |
||||
// 不设置 component 则面包屑禁止跳转
|
// 不设置 component 则面包屑禁止跳转
|
||||
childRoutes: [{ |
childRoutes: [{ |
||||
path: '/deviceQuery', |
path: '/deviceQuery', |
||||
key: 'deviceQuery', |
key: 'deviceQuery', |
||||
breadcrumb: '设备查询', |
breadcrumb: '设备查询', |
||||
childRoutes: [{ |
childRoutes: [{ |
||||
path: '/maintenanceRecords1', |
path: '/maintenanceRecords1', |
||||
key: 'maintenanceRecords1', |
key: 'maintenanceRecords1', |
||||
component: MaintenanceRecords, |
component: MaintenanceRecords, |
||||
breadcrumb: '维护记录', |
breadcrumb: '维护记录', |
||||
}] |
}] |
||||
}, { |
}, { |
||||
path: '/serverInformation', |
path: '/serverInformation', |
||||
key: 'serverInformation', |
key: 'serverInformation', |
||||
breadcrumb: '服务器信息', |
breadcrumb: '服务器信息', |
||||
childRoutes: [{ |
childRoutes: [{ |
||||
path: '/monitor', |
path: '/monitor', |
||||
key: 'monitor', |
key: 'monitor', |
||||
component: Monitor, |
component: Monitor, |
||||
breadcrumb: '运维监控', |
breadcrumb: 'Monitor', |
||||
}, { |
},{ |
||||
path: '/maintenanceRecords', |
path: '/grafana', |
||||
key: 'maintenanceRecords', |
key: 'grafana', |
||||
component: MaintenanceRecords, |
component: Grafana, |
||||
breadcrumb: '维护记录', |
breadcrumb: 'Grafana', |
||||
},] |
}, { |
||||
}, { |
path: '/kubesphere', |
||||
path: '/other', |
key: 'kubesphere', |
||||
key: 'other', |
component: Kubesphere, |
||||
|
breadcrumb: 'Kubesphere', |
||||
|
}, { |
||||
|
path: '/ambari', |
||||
|
key: 'ambari', |
||||
|
component: Ambari, |
||||
|
breadcrumb: 'Ambari', |
||||
|
}, { |
||||
|
path: '/maintenanceRecords', |
||||
|
key: 'maintenanceRecords', |
||||
|
component: MaintenanceRecords, |
||||
|
breadcrumb: '维护记录', |
||||
|
},] |
||||
|
}, { |
||||
|
path: '/other', |
||||
|
key: 'other', |
||||
|
breadcrumb: '其他', |
||||
|
childRoutes: [{ |
||||
|
path: '/other1', |
||||
|
key: 'other1', |
||||
|
component: Other, |
||||
breadcrumb: '其他', |
breadcrumb: '其他', |
||||
childRoutes: [{ |
}, { |
||||
path: '/other1', |
path: '/kowl', |
||||
key: 'other1', |
key: 'kowl', |
||||
component: Other, |
component: Kowl, |
||||
breadcrumb: '其他', |
breadcrumb: 'Kowl', |
||||
}] |
}, { |
||||
}] |
path: '/pghero', |
||||
} |
key: 'pghero', |
||||
|
component: Pghero, |
||||
|
breadcrumb: 'Pghero', |
||||
|
}, { |
||||
|
path: '/es', |
||||
|
key: 'es', |
||||
|
component: Es, |
||||
|
breadcrumb: 'Es', |
||||
|
}] |
||||
|
}] |
||||
|
} |
||||
}]; |
}]; |