|
@@ -11,7 +11,7 @@ import {
|
|
|
import { queryConditionSnapshot } from '@/services/SmartOps';
|
|
|
import { UnityAction } from '@/utils/utils';
|
|
|
import { useParams, useRequest } from '@umijs/max';
|
|
|
-import { Empty, Spin, Table } from 'antd';
|
|
|
+import { Empty, Select, Spin, Table } from 'antd';
|
|
|
import dayjs from 'dayjs';
|
|
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
import SubTitle from '../SmartOps/components/SubTitle';
|
|
@@ -19,46 +19,22 @@ import { getValue } from './index';
|
|
|
import styles from './index.less';
|
|
|
|
|
|
function Quality() {
|
|
|
- const { projectId } = useParams();
|
|
|
- const { data } = useRequest(queryConditionSnapshot, {
|
|
|
- defaultParams: [{ project_id: projectId }],
|
|
|
- pollingInterval: 10 * 1000,
|
|
|
- });
|
|
|
- const status = useMemo(() => {
|
|
|
- switch (data?.water_quality_status) {
|
|
|
- case 1:
|
|
|
- return '当前水质良好';
|
|
|
- case 2:
|
|
|
- return '当前水质较好';
|
|
|
- }
|
|
|
- }, [data?.water_quality_status]);
|
|
|
return (
|
|
|
<PageContent closeable={false}>
|
|
|
<PageTitle onReturn={() => UnityAction.sendMsg('menuItem', '首页')}>
|
|
|
水质监测
|
|
|
</PageTitle>
|
|
|
- <div className={styles.pageTip}>{status}</div>
|
|
|
- <ul className={styles.pageTop}>
|
|
|
- <li>
|
|
|
- <div className={styles.pageTopValue}>{getValue(data?.dtds)}</div>
|
|
|
- <div>外供水电导率(µs/cm)</div>
|
|
|
- </li>
|
|
|
- <li>
|
|
|
- <div className={styles.pageTopValue}>{getValue(data?.dph)}</div>
|
|
|
- <div>外供水(PH)</div>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- <WaterQuality />
|
|
|
+ <WaterQuality showTip />
|
|
|
</PageContent>
|
|
|
);
|
|
|
}
|
|
|
|
|
|
export default Quality;
|
|
|
|
|
|
-export const WaterQuality = () => {
|
|
|
+export const WaterQuality = ({ showTip = false }) => {
|
|
|
const { projectId } = useParams();
|
|
|
const [currentCode, setCode] = useState(null);
|
|
|
- // const [processId, setProcessId] = useState(null);
|
|
|
+ const [processList, setProcessList] = useState([]);
|
|
|
|
|
|
const timerRef = useRef({
|
|
|
s_time: dayjs().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss'),
|
|
@@ -78,10 +54,12 @@ export const WaterQuality = () => {
|
|
|
useRequest(queryProcessSection, {
|
|
|
defaultParams: [projectId],
|
|
|
onSuccess(res) {
|
|
|
- // setProcessId(res.data[0].id);
|
|
|
+ setProcessList(res);
|
|
|
queryCodeList(res[0].id, 2, projectId * 1);
|
|
|
+ return res;
|
|
|
},
|
|
|
});
|
|
|
+
|
|
|
const mainRes = useRequest(
|
|
|
() => {
|
|
|
return queryChartListByCode(
|
|
@@ -98,6 +76,21 @@ export const WaterQuality = () => {
|
|
|
manual: true,
|
|
|
},
|
|
|
);
|
|
|
+
|
|
|
+ const { data: snapshot } = useRequest(queryConditionSnapshot, {
|
|
|
+ defaultParams: [{ project_id: projectId }],
|
|
|
+ pollingInterval: 10 * 1000,
|
|
|
+ });
|
|
|
+
|
|
|
+ const status = useMemo(() => {
|
|
|
+ switch (snapshot?.water_quality_status) {
|
|
|
+ case 1:
|
|
|
+ return '当前水质良好';
|
|
|
+ case 2:
|
|
|
+ return '当前水质较好';
|
|
|
+ }
|
|
|
+ }, [snapshot?.water_quality_status]);
|
|
|
+
|
|
|
const column = useMemo(() => {
|
|
|
if (!currentCode) return [];
|
|
|
return [
|
|
@@ -141,42 +134,76 @@ export const WaterQuality = () => {
|
|
|
const code = codeList.find((item) => item.metric == name);
|
|
|
if (code) setCode(code);
|
|
|
};
|
|
|
+
|
|
|
+ const handleProcessChange = (val) => {
|
|
|
+ queryCodeList(val, 2, projectId);
|
|
|
+ };
|
|
|
+
|
|
|
return (
|
|
|
- <div
|
|
|
- className="card-box"
|
|
|
- style={{ padding: '0.2rem', marginTop: '0.1rem' }}
|
|
|
- >
|
|
|
- <div className="tabs" style={{ marginBottom: '0.2rem' }}>
|
|
|
- {codeList?.map((item) => (
|
|
|
- <div
|
|
|
- key={item.metric_code}
|
|
|
- onClick={() => {
|
|
|
- setCode(item);
|
|
|
- }}
|
|
|
- className={`tabs-item ${item == currentCode ? 'active' : ''}`}
|
|
|
- >
|
|
|
- {item.metric}
|
|
|
- </div>
|
|
|
- ))}
|
|
|
+ <div style={{ marginTop: '0.1rem', position: 'relative' }}>
|
|
|
+ {showTip && <div className={styles.pageTip}>{status}</div>}
|
|
|
+ <div className="card-box">
|
|
|
+ <ul className={styles.pageTop}>
|
|
|
+ <li>
|
|
|
+ <div className={styles.pageTopValue}>
|
|
|
+ {getValue(snapshot?.dtds)}
|
|
|
+ </div>
|
|
|
+ <div>外供水电导率(µs/cm)</div>
|
|
|
+ </li>
|
|
|
+ <li>
|
|
|
+ <div className={styles.pageTopValue}>{getValue(snapshot?.dph)}</div>
|
|
|
+ <div>外供水(PH)</div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
</div>
|
|
|
- <SubTitle title="数据曲线" />
|
|
|
- <Spin spinning={mainRes.loading}>
|
|
|
- <div style={{ height: '5rem', marginTop: '0.2rem' }}>
|
|
|
- {mainRes?.data ? (
|
|
|
- <ChartModule {...chartProps} onChange={onChange} />
|
|
|
- ) : (
|
|
|
- <Empty />
|
|
|
- )}
|
|
|
+ <div className="card-box" style={{ padding: '0.2rem' }}>
|
|
|
+ <div style={{ padding: '0.2rem 0' }}>
|
|
|
+ <Select
|
|
|
+ style={{ width: '2rem' }}
|
|
|
+ defaultValue="全厂概览"
|
|
|
+ options={processList?.map((item) => {
|
|
|
+ return {
|
|
|
+ value: item.id,
|
|
|
+ label: item.name,
|
|
|
+ };
|
|
|
+ })}
|
|
|
+ onChange={handleProcessChange}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ {codeList?.length > 0 && (
|
|
|
+ <div className="tabs" style={{ marginBottom: '0.2rem' }}>
|
|
|
+ {codeList?.map((item) => (
|
|
|
+ <div
|
|
|
+ key={item.metric_code}
|
|
|
+ onClick={() => {
|
|
|
+ setCode(item);
|
|
|
+ }}
|
|
|
+ className={`tabs-item ${item === currentCode ? 'active' : ''}`}
|
|
|
+ >
|
|
|
+ {item.metric}
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ <SubTitle title="数据曲线" />
|
|
|
+ <Spin spinning={mainRes.loading}>
|
|
|
+ <div style={{ height: '5rem', marginTop: '0.2rem' }}>
|
|
|
+ {mainRes?.data ? (
|
|
|
+ <ChartModule {...chartProps} onChange={onChange} />
|
|
|
+ ) : (
|
|
|
+ <Empty />
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ </Spin>
|
|
|
+ <div style={{ marginTop: '0.3rem' }}>
|
|
|
+ <SubTitle title="数据列表" />
|
|
|
+ <Table
|
|
|
+ columns={column}
|
|
|
+ style={{ marginTop: '0.2rem' }}
|
|
|
+ dataSource={mainRes?.data}
|
|
|
+ pagination={false}
|
|
|
+ />
|
|
|
</div>
|
|
|
- </Spin>
|
|
|
- <div style={{ marginTop: '0.3rem' }}>
|
|
|
- <SubTitle title="数据列表" />
|
|
|
- <Table
|
|
|
- columns={column}
|
|
|
- style={{ marginTop: '0.2rem' }}
|
|
|
- dataSource={mainRes?.data}
|
|
|
- pagination={false}
|
|
|
- />
|
|
|
</div>
|
|
|
</div>
|
|
|
);
|