mock平台

index.js 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. /**
  2. * Created by gxl.gao on 2017/10/25.
  3. */
  4. import React, { Component } from 'react';
  5. import { connect } from 'react-redux';
  6. import axios from 'axios';
  7. import PropTypes from 'prop-types';
  8. import './index.scss';
  9. // import { withRouter } from 'react-router-dom';
  10. import { Row, Col, Tooltip, Icon } from 'antd';
  11. import { setBreadcrumb } from 'client/reducer/modules/user';
  12. import StatisChart from './StatisChart';
  13. import StatisTable from './StatisTable';
  14. const CountOverview = props => (
  15. <Row type="flex" justify="space-start" className="m-row">
  16. <Col className="gutter-row" span={6}>
  17. <span>
  18. 分组总数
  19. <Tooltip placement="rightTop" title="统计yapi中一共开启了多少可见的公共分组">
  20. <Icon className="m-help" type="question-circle" />
  21. </Tooltip>
  22. </span>
  23. <h2 className="gutter-box">{props.date.groupCount}</h2>
  24. </Col>
  25. <Col className="gutter-row" span={6}>
  26. <span>
  27. 项目总数
  28. <Tooltip placement="rightTop" title="统计yapi中建立的所有项目总数">
  29. <Icon className="m-help" type="question-circle" />
  30. </Tooltip>
  31. </span>
  32. <h2 className="gutter-box">{props.date.projectCount}</h2>
  33. </Col>
  34. <Col className="gutter-row" span={6}>
  35. <span>
  36. 接口总数
  37. <Tooltip placement="rightTop" title="统计yapi所有项目中的所有接口总数">
  38. {/*<a href="javascript:void(0)" className="m-a-help">?</a>*/}
  39. <Icon className="m-help" type="question-circle" />
  40. </Tooltip>
  41. </span>
  42. <h2 className="gutter-box">{props.date.interfaceCount}</h2>
  43. </Col>
  44. <Col className="gutter-row" span={6}>
  45. <span>
  46. 测试接口总数
  47. <Tooltip placement="rightTop" title="统计yapi所有项目中的所有测试接口总数">
  48. {/*<a href="javascript:void(0)" className="m-a-help">?</a>*/}
  49. <Icon className="m-help" type="question-circle" />
  50. </Tooltip>
  51. </span>
  52. <h2 className="gutter-box">{props.date.interfaceCaseCount}</h2>
  53. </Col>
  54. </Row>
  55. );
  56. CountOverview.propTypes = {
  57. date: PropTypes.object
  58. };
  59. const StatusOverview = props => (
  60. <Row type="flex" justify="space-start" className="m-row">
  61. <Col className="gutter-row" span={6}>
  62. <span>
  63. 操作系统类型
  64. <Tooltip
  65. placement="rightTop"
  66. title="操作系统类型,返回值有'darwin', 'freebsd', 'linux', 'sunos' , 'win32'"
  67. >
  68. <Icon className="m-help" type="question-circle" />
  69. </Tooltip>
  70. </span>
  71. <h2 className="gutter-box">{props.data.systemName}</h2>
  72. </Col>
  73. <Col className="gutter-row" span={6}>
  74. <span>
  75. cpu负载
  76. <Tooltip placement="rightTop" title="cpu的总负载情况">
  77. <Icon className="m-help" type="question-circle" />
  78. </Tooltip>
  79. </span>
  80. <h2 className="gutter-box">{props.data.load} %</h2>
  81. </Col>
  82. <Col className="gutter-row" span={6}>
  83. <span>
  84. 系统空闲内存总量 / 内存总量
  85. <Tooltip placement="rightTop" title="系统空闲内存总量 / 内存总量">
  86. <Icon className="m-help" type="question-circle" />
  87. </Tooltip>
  88. </span>
  89. <h2 className="gutter-box">
  90. {props.data.freemem} G / {props.data.totalmem} G{' '}
  91. </h2>
  92. </Col>
  93. <Col className="gutter-row" span={6}>
  94. <span>
  95. 邮箱状态
  96. <Tooltip placement="rightTop" title="检测配置文件中配置邮箱的状态">
  97. <Icon className="m-help" type="question-circle" />
  98. </Tooltip>
  99. </span>
  100. <h2 className="gutter-box">{props.data.mail}</h2>
  101. </Col>
  102. </Row>
  103. );
  104. StatusOverview.propTypes = {
  105. data: PropTypes.object
  106. };
  107. @connect(
  108. null,
  109. {
  110. setBreadcrumb
  111. }
  112. )
  113. class statisticsPage extends Component {
  114. static propTypes = {
  115. setBreadcrumb: PropTypes.func
  116. };
  117. constructor(props) {
  118. super(props);
  119. this.state = {
  120. count: {
  121. groupCount: 0,
  122. projectCount: 0,
  123. interfaceCount: 0,
  124. interfactCaseCount: 0
  125. },
  126. status: {
  127. mail: '',
  128. systemName: '',
  129. totalmem: '',
  130. freemem: '',
  131. uptime: ''
  132. },
  133. dataTotal: []
  134. };
  135. }
  136. async componentWillMount() {
  137. this.props.setBreadcrumb([{ name: '系统信息' }]);
  138. this.getStatisData();
  139. this.getSystemStatusData();
  140. this.getGroupData();
  141. }
  142. // 获取统计数据
  143. async getStatisData() {
  144. let result = await axios.get('/api/plugin/statismock/count');
  145. if (result.data.errcode === 0) {
  146. let statisData = result.data.data;
  147. this.setState({
  148. count: { ...statisData }
  149. });
  150. }
  151. }
  152. // 获取系统信息
  153. async getSystemStatusData() {
  154. let result = await axios.get('/api/plugin/statismock/get_system_status');
  155. if (result.data.errcode === 0) {
  156. let statusData = result.data.data;
  157. this.setState({
  158. status: { ...statusData }
  159. });
  160. }
  161. }
  162. // 获取分组详细信息
  163. async getGroupData() {
  164. let result = await axios.get('/api/plugin/statismock/group_data_statis');
  165. if (result.data.errcode === 0) {
  166. let statusData = result.data.data;
  167. statusData.map(item => {
  168. return (item['key'] = item.name);
  169. });
  170. this.setState({
  171. dataTotal: statusData
  172. });
  173. }
  174. }
  175. render() {
  176. const { count, status, dataTotal } = this.state;
  177. return (
  178. <div className="g-statistic">
  179. <div className="content">
  180. <h2 className="title">系统状况</h2>
  181. <div className="system-content">
  182. <StatusOverview data={status} />
  183. </div>
  184. <h2 className="title">数据统计</h2>
  185. <div>
  186. <CountOverview date={count} />
  187. <StatisTable dataSource={dataTotal} />
  188. <StatisChart />
  189. </div>
  190. </div>
  191. </div>
  192. );
  193. }
  194. }
  195. export default statisticsPage;