EvaluationReport.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import { Table, Tooltip } from 'antd';
  2. import { useMemo } from 'react';
  3. import { current, indicators } from './mock';
  4. import styles from '../OptimizationTasks.less';
  5. // import styles from './WorkConditionAssessment.less';
  6. /**
  7. * 评估报告组件
  8. * @param {boolean} isAbnormal - 是否存在异常情况
  9. * @param {object} compareData - 同比环比数据
  10. * @param {number} compareData.lastPeriod - 上期同比数据(百分比)
  11. * @param {number} compareData.lastYear - 去年同期同比数据(百分比)
  12. * @param {string} optimizationSuggestions - 优化建议
  13. */
  14. const EvaluationReport = (props) => {
  15. const { dataKey } = props;
  16. const dataSource = useMemo(() => {
  17. let data = current[dataKey];
  18. let dataSource = indicators[dataKey]
  19. .filter((item) => item.delta !== false)
  20. .map((item) => {
  21. let key = item.value;
  22. let realTimeData = data['realTimeData'][key];
  23. let forecastData = data['forecastData'][key];
  24. return {
  25. indicator: item.label,
  26. delta1: (
  27. ((forecastData - realTimeData) / forecastData) *
  28. 100
  29. ).toFixed(2),
  30. };
  31. });
  32. let error = { color: '#f5222d' },
  33. success = { color: '#7cb305' };
  34. if (dataKey == 'allProject') {
  35. dataSource.push({
  36. indicator: '总结',
  37. delta1: (
  38. <div>
  39. 【2024年1月】 <span style={error}>异常</span>
  40. <br />
  41. (1)生产安全评估: <span style={success}>正常</span>
  42. <br />
  43. 达标率、产水量实时工况与仿真、最优和标准工况对比皆在偏差范围内,正常
  44. <br />
  45. <br />
  46. (2)经济评估:<span style={error}>异常</span>
  47. <br />
  48. 电耗实时工况与仿真工况对比,偏差为1.89,预计比仿真多消耗21269kWh,系统判断预计下一阶段会持续增加
  49. </div>
  50. ),
  51. });
  52. dataSource.push({
  53. indicator: '优化建议',
  54. delta1: <div>根据上述结论,为减少电耗,建议检查膜车间工艺段</div>,
  55. });
  56. } else {
  57. dataSource.push({
  58. indicator: '总结',
  59. delta1: (
  60. <div>
  61. (1)生产安全评估: <span style={error}>异常</span>
  62. <br />
  63. 膜阻力、TMP实时工况与标准工况对比偏差偏大;与最优工况对比膜阻力有偏离;与预测工况对比,膜阻力、TMP会持续增加
  64. <br />
  65. <br />
  66. (2)经济评估:<span style={success}>正常</span>
  67. <br />
  68. 处理水量此时为正常,系统判断下一阶段随着膜阻力、TMP增加会影响产水量
  69. </div>
  70. ),
  71. });
  72. dataSource.push({
  73. indicator: '优化建议',
  74. delta1: (
  75. <div>
  76. 根据上述结论,为保证产水量,需要增加膜的反冲洗频次和清洗强度。
  77. </div>
  78. ),
  79. });
  80. }
  81. return dataSource;
  82. }, []);
  83. const columns = [
  84. {
  85. title: '指标',
  86. dataIndex: 'indicator',
  87. key: 'indicator',
  88. width: 200,
  89. },
  90. {
  91. title: (
  92. <Tooltip
  93. title="(预测 - 实际) / 预测 * 100"
  94. // overlayClassName={styles.toolTip}
  95. >
  96. Δ1
  97. {/* <Icon type="info-circle" /> */}
  98. </Tooltip>
  99. ),
  100. dataIndex: 'delta1',
  101. key: 'delta1',
  102. render: (text, row, index) => {
  103. if (index < dataSource.length - 2) {
  104. return text;
  105. }
  106. return {
  107. children: text,
  108. props: {
  109. colSpan: 3,
  110. },
  111. };
  112. },
  113. },
  114. ];
  115. // return null
  116. return (
  117. <div className={styles.pageCard}>
  118. <h3 className={styles.title} style={{ justifyContent: 'space-between' }}>
  119. <div>
  120. <i />
  121. 评估报告
  122. </div>
  123. </h3>
  124. <div style={{ fontSize: 18, color: '#fff' }}>
  125. <Table columns={columns} dataSource={dataSource} pagination={false} />
  126. </div>
  127. </div>
  128. );
  129. };
  130. export default EvaluationReport;