HistoryRecord.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. import PageContent from '@/components/PageContent';
  2. import { getHistoryRecord } from '@/services/SmartOps';
  3. import { GetTokenFromUrl } from '@/utils/utils';
  4. import { useNavigate, useParams, useRequest } from '@umijs/max';
  5. import { Button, DatePicker, Select, Spin, Table } from 'antd';
  6. import dayjs from 'dayjs';
  7. import { useEffect, useState } from 'react';
  8. import styles from './index.less';
  9. const { RangePicker } = DatePicker;
  10. const { Option } = Select;
  11. const HistoryRecord = (props) => {
  12. const { projectId } = useParams();
  13. const navigate = useNavigate();
  14. const convertObject2FormData = (params) => {
  15. const formData = new FormData();
  16. Object.entries(params).forEach(([key, value]) => {
  17. if (value !== null && value !== undefined && value !== NaN) {
  18. formData.append(key, value);
  19. }
  20. });
  21. return formData;
  22. };
  23. const defaultParams = {
  24. project_id: Number(projectId),
  25. start_time: '',
  26. end_time: '',
  27. page: 1,
  28. page_size: 10,
  29. };
  30. const [queryParams, setQueryParams] = useState(defaultParams);
  31. const [formData, setFormData] = useState(
  32. convertObject2FormData(defaultParams),
  33. );
  34. const {
  35. data,
  36. run: getList,
  37. loading,
  38. } = useRequest((params = formData) => getHistoryRecord(params), {
  39. formatResult: (res) => {
  40. return res?.data;
  41. },
  42. });
  43. const columns = [
  44. {
  45. title: '时间',
  46. dataIndex: 'CTime',
  47. key: 'CTime',
  48. render: (text) => {
  49. return dayjs(text).format('YYYY-MM-DD HH:mm') || '--';
  50. },
  51. },
  52. {
  53. title: '工况分析',
  54. dataIndex: 'Num1',
  55. key: 'Num1',
  56. render: (text) => {
  57. if (text === undefined || text === null) {
  58. return '--';
  59. }
  60. return text;
  61. },
  62. },
  63. {
  64. title: '工艺分析',
  65. dataIndex: 'Num2',
  66. key: 'Num2',
  67. render: (text) => {
  68. if (text === undefined || text === null) {
  69. return '--';
  70. }
  71. if (String(text).includes(',')) {
  72. return text.split(',').length;
  73. }
  74. return text;
  75. },
  76. },
  77. {
  78. title: '感知分析',
  79. dataIndex: 'Num3',
  80. key: 'Num3',
  81. render: (text) => {
  82. if (text === undefined || text === null) {
  83. return '--';
  84. }
  85. return text;
  86. },
  87. },
  88. {
  89. title: '操作',
  90. render: (record) => (
  91. <a
  92. onClick={() => {
  93. navigate(
  94. `/smart-ops/${projectId}?time=${record.CTime}&idList=${
  95. record.Num2
  96. }&JWT-TOKEN=${GetTokenFromUrl()}`,
  97. );
  98. }}
  99. >
  100. 详情
  101. </a>
  102. ),
  103. },
  104. ];
  105. const handleParamsChange = (key, value) => {
  106. const tempParams = {
  107. project_id: Number(projectId),
  108. start_time: queryParams.start_time || '',
  109. end_time: queryParams.end_time || '',
  110. page: queryParams.page || 1,
  111. page_size: queryParams.page_size || 10,
  112. };
  113. switch (key) {
  114. case 'date':
  115. if (value.length === 2) {
  116. tempParams.start_time = dayjs(value[0]).format('YYYY-MM-DD 00:00:00');
  117. tempParams.end_time = dayjs(value[1]).format('YYYY-MM-DD 23:59:59');
  118. console.log(
  119. '----------------',
  120. dayjs(value[0]).format('YYYY-MM-DD 00:00:00'),
  121. dayjs(value[1]).format('YYYY-MM-DD 00:00:00'),
  122. );
  123. } else {
  124. tempParams.start_time = '';
  125. tempParams.end_time = '';
  126. }
  127. break;
  128. case 'page':
  129. tempParams.page = value;
  130. handleSearch(convertObject2FormData(tempParams));
  131. break;
  132. default:
  133. break;
  134. }
  135. console.log('-------------------', tempParams);
  136. setQueryParams(tempParams);
  137. };
  138. const handleSearch = (params) => {
  139. if (params !== undefined) {
  140. getList(params);
  141. return;
  142. }
  143. getList(formData);
  144. };
  145. useEffect(() => {
  146. const tempFormData = convertObject2FormData(queryParams);
  147. // page变更自动请求接口
  148. setFormData(tempFormData);
  149. }, [queryParams]);
  150. return (
  151. <PageContent>
  152. <Spin spinning={loading}>
  153. <div className={styles.searchContent}>
  154. <Button
  155. className={[styles.marginBottom, styles.marginRight].join(' ')}
  156. type="primary"
  157. onClick={() => navigate(-1)}
  158. >
  159. 返回
  160. </Button>
  161. <div className={styles.searchContent}>
  162. 日期:
  163. <RangePicker
  164. className={styles.timePicker}
  165. onChange={(value) => handleParamsChange('date', value)}
  166. />
  167. <Button
  168. className={styles.marginLeft}
  169. type="primary"
  170. onClick={() => handleSearch()}
  171. >
  172. 查询
  173. </Button>
  174. </div>
  175. </div>
  176. <Table
  177. dataSource={data?.list}
  178. columns={columns}
  179. pagination={data?.pagenation}
  180. onChange={({ current }) => handleParamsChange('page', current)}
  181. />
  182. </Spin>
  183. </PageContent>
  184. );
  185. };
  186. export default HistoryRecord;