Sfoglia il codice sorgente

自检增加跳转任务

xujunjie 1 anno fa
parent
commit
ee7840da11

+ 26 - 0
src/models/useMandate.js

@@ -0,0 +1,26 @@
+import { getMandateIDs } from '@/services/eqSelfInspection';
+import { useRequest } from '@umijs/max';
+import { useState } from 'react';
+
+const useMandate = () => {
+  const [mandate, setMandate] = useState([]);
+  const { run } = useRequest(getMandateIDs, {
+    manual: true,
+    formatResult(res) {
+      setMandate(res);
+    },
+    initialData: [],
+  });
+
+  const getMandateId = (id) => {
+    return mandate.find((item) => item.relation_id == id)?.mandate_id;
+  };
+
+  return {
+    mandate,
+    queryMandate: run,
+    getMandateId,
+  };
+};
+
+export default useMandate;

+ 11 - 27
src/pages/EqSelfInspection/components/Detail.js

@@ -1,12 +1,13 @@
 import ModuleTitle from '@/components/ManagementPage/moduleTitle';
-import { getDumuDetail, getMandateIDs } from '@/services/eqSelfInspection';
-import { connect, useParams, useRequest } from '@umijs/max';
+import { getDumuDetail } from '@/services/eqSelfInspection';
+import { connect, useModel, useParams, useRequest } from '@umijs/max';
 import { Checkbox, Col, Row, Spin, Table } from 'antd';
 import { useEffect, useMemo, useState } from 'react';
 import styles from './PatrolReportDetail.less';
 import DosingFlowCom from './Table/DosingFlowCom';
 import Empty from './Table/Empty';
 import LiquidLevelCom from './Table/LiquidLevelCom';
+import MandateBtn from './Table/MandateBtn';
 import PressureGaugeCom from './Table/PressureGaugeCom';
 import ReportCom from './Table/ReportCom';
 import ReportDumCom from './Table/ReportDumCom';
@@ -16,22 +17,11 @@ import WaterQualityCom from './Table/WaterQualityCom';
 function Detail(props) {
   const { data, userList, projectId, dispatch, loading = false } = props;
   const { routeId } = useParams();
+  const { queryMandate } = useModel('useMandate');
 
   const [select, setSelect] = useState();
   const [statusCheck, setStatusCheck] = useState([0, 1, 2]);
 
-  const { data: mandate } = useRequest(getMandateIDs, {
-    defaultParams: [
-      {
-        project_id: projectId,
-        id: routeId,
-      },
-    ],
-    formatResult(res) {
-      return res;
-    },
-  });
-
   const sendMessageToUnity = (select, data) => {
     setSelect(select);
     if (window.HightlightEquipment) {
@@ -93,6 +83,10 @@ function Detail(props) {
   }, [data]);
 
   useEffect(() => {
+    queryMandate({
+      project_id: projectId,
+      id: routeId,
+    });
     dispatch({
       type: 'eqSelfInspection/fetchUserList',
       payload: {
@@ -154,7 +148,6 @@ function Detail(props) {
         {/* 设备自检报告 */}
         <DeviceReport
           sendMessageToUnity={sendMessageToUnity}
-          mandate={mandate}
           select={select}
           data={data}
           userList={userList}
@@ -165,7 +158,6 @@ function Detail(props) {
 
         <AalysisTable
           onClickItem={sendMessageToUnity}
-          mandate={mandate}
           select={select}
           data={data}
           statusCheck={statusCheck}
@@ -173,7 +165,6 @@ function Detail(props) {
         {/* 安全自检报告 */}
         <SecureReport
           sendMessageToUnity={sendMessageToUnity}
-          mandate={mandate}
           select={select}
           data={data}
           userList={userList}
@@ -336,7 +327,7 @@ function SecureReport(props) {
 }
 
 function AalysisTable(props) {
-  const { data = {}, statusCheck, mandate } = props;
+  const { data = {}, statusCheck } = props;
   const { FaultAnalysis } = data;
   const errorCount = data?.FaultAnalysis?.length || 0;
   const columns = [
@@ -357,15 +348,14 @@ function AalysisTable(props) {
     },
     {
       title: '解决方案',
-      width: '52%',
       render: (record) => {
         if (record.fix_plan instanceof Array) {
           return (
             <div>
               {record.fix_plan.map((item) => (
-                <div>
+                <div style={{lineHeight: 1.8}}>
                   {item.content}
-                  <br />
+                  <MandateBtn relationId={record.id} />
                 </div>
               ))}
             </div>
@@ -375,12 +365,6 @@ function AalysisTable(props) {
         }
       },
     },
-    {
-      title: '关联任务',
-      render: (record) => (
-        <a>{mandate?.find((item) => item.source == record.Id)?.id}</a>
-      ),
-    },
   ];
 
   if (statusCheck.length != 3) {

+ 7 - 5
src/pages/EqSelfInspection/components/Table/DosingFlowCom.js

@@ -5,13 +5,14 @@ import dayjs from 'dayjs';
 import { useEffect, useMemo, useState } from 'react';
 import styles from '../PatrolReportDetail.less';
 import Empty from './Empty';
+import { useModel } from '@umijs/max';
+import MandateBtn from './MandateBtn';
 
 export default function DosingFlowCom(props) {
   const {
     sendMessageToUnity,
     select,
     allData = [],
-    title,
     statusCheck,
     changeStatus,
   } = props;
@@ -24,9 +25,9 @@ export default function DosingFlowCom(props) {
   const { errorTableData, normalData } = useMemo(() => {
     let data = { errorTableData: [], normalData: [] };
     allData?.forEach((item) => {
-      if (item.status == 1 && statusCheck.includes(1)) {
+      if (!item.history && item.status == 1 && statusCheck.includes(1)) {
         data.errorTableData.push(item);
-      } else if (item.status == 0 && statusCheck.includes(0)) {
+      } else if (item.history && item.status == 0 && statusCheck.includes(0)) {
         data.normalData.push(item);
       }
     });
@@ -106,6 +107,7 @@ export default function DosingFlowCom(props) {
 }
 function DosingFlowTable(props) {
   const { items } = props;
+  const { getMandateId } = useModel('useMandate');
   const columns = [
     {
       title: '设备名称',
@@ -156,8 +158,7 @@ function DosingFlowTable(props) {
     {
       title: '状态',
       dataIndex: 'status',
-      width: '20%',
-      render: (status) => {
+      render: (status, record) => {
         switch (status) {
           case -1:
           case 0:
@@ -178,6 +179,7 @@ function DosingFlowTable(props) {
                   style={{ background: '#FF8600' }}
                 />
                 异常
+                <MandateBtn relationId={record.id} />
               </div>
             );
           case 2:

+ 6 - 14
src/pages/EqSelfInspection/components/Table/LiquidLevelCom.js

@@ -5,6 +5,7 @@ import dayjs from 'dayjs';
 import { useEffect, useMemo, useState } from 'react';
 import styles from '../PatrolReportDetail.less';
 import Empty from './Empty';
+import MandateBtn from './MandateBtn';
 
 export default function LiquidLevelCom(props) {
   const {
@@ -14,7 +15,6 @@ export default function LiquidLevelCom(props) {
     type,
     statusCheck,
     changeStatus,
-    mandate,
   } = props;
   const [activeKey, setActiveKey] = useState('1');
 
@@ -25,9 +25,9 @@ export default function LiquidLevelCom(props) {
   const { errorTableData, normalData } = useMemo(() => {
     let data = { errorTableData: [], normalData: [] };
     allData?.forEach((item) => {
-      if (item.status == 1 && statusCheck.includes(1)) {
+      if (!item.history && item.status == 1 && statusCheck.includes(1)) {
         data.errorTableData.push(item);
-      } else if (item.status == 0 && statusCheck.includes(0)) {
+      } else if (item.history && item.status == 0 && statusCheck.includes(0)) {
         data.normalData.push(item);
       }
     });
@@ -95,7 +95,6 @@ export default function LiquidLevelCom(props) {
           items={errorTableData}
           key={type}
           type={type}
-          mandate={mandate}
         />
       )}
       {activeKey === '0' && (
@@ -105,7 +104,6 @@ export default function LiquidLevelCom(props) {
           items={normalData}
           key={type}
           type={type}
-          mandate={mandate}
         />
       )}
     </div>
@@ -113,7 +111,7 @@ export default function LiquidLevelCom(props) {
 }
 
 function LiquidTable(props) {
-  const { items, mandate } = props;
+  const { items } = props;
 
   const columns = [
     {
@@ -160,8 +158,7 @@ function LiquidTable(props) {
     {
       title: '状态',
       dataIndex: 'status',
-      width: '1.25rem',
-      render: (status) => {
+      render: (status, record) => {
         switch (status) {
           case -1:
           case 0:
@@ -182,6 +179,7 @@ function LiquidTable(props) {
                   style={{ background: '#FFE26D' }}
                 ></i>
                 异常
+                <MandateBtn relationId={record.id} />
               </div>
             );
           case 2:
@@ -197,12 +195,6 @@ function LiquidTable(props) {
         }
       },
     },
-    {
-      title: '关联任务',
-      render: (record) => (
-        <a>{mandate?.find((item) => item.source == record.id)?.id}</a>
-      ),
-    },
   ];
 
   return (

+ 22 - 0
src/pages/EqSelfInspection/components/Table/MandateBtn.js

@@ -0,0 +1,22 @@
+import { UnityAction } from '@/utils/utils';
+import { useModel } from '@umijs/max';
+import { useMemo } from 'react';
+
+export default function ({ relationId }) {
+  const { getMandateId } = useModel('useMandate');
+  let mandateId = useMemo(() => {
+    return getMandateId(relationId);
+  }, [relationId, getMandateId]);
+  if (!mandateId) return null;
+  return (
+    <a
+      style={{ marginLeft: 20 }}
+      onClick={() =>
+        // task
+        UnityAction.sendMsg('OpenTaskModal', `mandate_id=${mandateId}`)
+      }
+    >
+      查看
+    </a>
+  );
+}

+ 4 - 3
src/pages/EqSelfInspection/components/Table/PressureGaugeCom.js

@@ -4,6 +4,7 @@ import dayjs from 'dayjs';
 import { useEffect, useMemo, useState } from 'react';
 import styles from '../PatrolReportDetail.less';
 import Empty from './Empty';
+import MandateBtn from './MandateBtn';
 
 function PressureGaugeTable(props) {
   const { items } = props;
@@ -59,7 +60,6 @@ function PressureGaugeTable(props) {
     {
       title: '状态',
       dataIndex: 'status',
-      width: '1.25rem',
       render: (status) => {
         switch (status) {
           case -1:
@@ -81,6 +81,7 @@ function PressureGaugeTable(props) {
                   style={{ background: '#FF8600' }}
                 />
                 异常
+                <MandateBtn relationId={record.id} />
               </div>
             );
           case 2:
@@ -138,9 +139,9 @@ export default function PressureGaugeCom(props) {
   const { errorTableData, normalData } = useMemo(() => {
     let data = { errorTableData: [], normalData: [] };
     allData?.forEach((item) => {
-      if (item.status == 1 && statusCheck.includes(1)) {
+      if (!item.history && item.status == 1 && statusCheck.includes(1)) {
         data.errorTableData.push(item);
-      } else if (item.status == 0 && statusCheck.includes(0)) {
+      } else if (item.history && item.status == 0 && statusCheck.includes(0)) {
         data.normalData.push(item);
       }
     });

+ 0 - 4
src/pages/EqSelfInspection/components/Table/ReportCom.js

@@ -15,7 +15,6 @@ export default function ReportCom(props) {
     data,
     statusCheck,
     changeStatus,
-    mandate
   } = props;
   const [activeKey, setActiveKey] = useState('1');
   const handleTabsChange = (activeKey) => {
@@ -94,7 +93,6 @@ export default function ReportCom(props) {
           key={type}
           data={data}
           type={type}
-          mandate={mandate}
           userList={userList}
         />
       )}
@@ -106,7 +104,6 @@ export default function ReportCom(props) {
           key={type}
           data={data}
           type={type}
-          mandate={mandate}
           userList={userList}
         />
       )}
@@ -118,7 +115,6 @@ export default function ReportCom(props) {
           data={data}
           key={type}
           type={type}
-          mandate={mandate}
           userList={userList}
         />
       )}

+ 6 - 0
src/pages/EqSelfInspection/components/Table/ReportDumCom.js

@@ -4,6 +4,7 @@ import { useEffect, useMemo } from 'react';
 import ReactZmage from 'react-zmage';
 import styles from '../PatrolReportDetail.less';
 import Empty from './Empty';
+import MandateBtn from './MandateBtn';
 
 export default function ReportDumCom(props) {
   const { data = [], title, statusCheck, changeStatus } = props;
@@ -47,6 +48,11 @@ export default function ReportDumCom(props) {
         />
       ),
     },
+    {
+      title: '关联任务',
+      dataIndex: 'id',
+      render: (id) => <MandateBtn relationId={id} />,
+    },
   ];
 
   const show = useMemo(() => {

+ 4 - 7
src/pages/EqSelfInspection/components/Table/WarningTable.js

@@ -6,9 +6,10 @@ import { useState } from 'react';
 import styles from '../PatrolReportDetail.less';
 import Empty from './Empty';
 import ErrorHandleModal from './ErrorHandleModal';
+import MandateBtn from './MandateBtn';
 
 export default function WarningTable(props) {
-  const { data, userList, items, mandate = [] } = props;
+  const { data, userList, items } = props;
   const [loading, setLoading] = useState(false);
   const [visible, setVisible] = useState(false);
   const [errVisible, setErrVisible] = useState(false);
@@ -50,8 +51,7 @@ export default function WarningTable(props) {
     {
       title: '状态',
       dataIndex: 'Status',
-      width: '1.25rem',
-      render: (Status) => {
+      render: (Status, record) => {
         switch (Status) {
           case -1:
           case 0:
@@ -72,6 +72,7 @@ export default function WarningTable(props) {
                   style={{ background: '#FE5850' }}
                 ></i>
                 异常
+                <MandateBtn relationId={record.Id} />
               </div>
             );
           case 2:
@@ -87,10 +88,6 @@ export default function WarningTable(props) {
         }
       },
     },
-    {
-      title: '关联任务',
-      render: (record) => <a>{mandate?.find(item => item.source == record.Id)?.id}</a>,
-    },
   ];
 
   return (

+ 7 - 4
src/pages/EqSelfInspection/components/Table/WaterInCom.js

@@ -5,13 +5,13 @@ import dayjs from 'dayjs';
 import { useEffect, useMemo, useState } from 'react';
 import styles from '../PatrolReportDetail.less';
 import Empty from './Empty';
+import MandateBtn from './MandateBtn';
 
 export default function WaterInCom(props) {
   const {
     sendMessageToUnity,
     select,
     allData = [],
-    title,
     statusCheck,
     changeStatus,
   } = props;
@@ -24,9 +24,9 @@ export default function WaterInCom(props) {
   const { errorTableData, normalData } = useMemo(() => {
     let data = { errorTableData: [], normalData: [] };
     allData?.forEach((item) => {
-      if (item.status == 1 && statusCheck.includes(1)) {
+      if (!item.history && item.status == 1 && statusCheck.includes(1)) {
         data.errorTableData.push(item);
-      } else if (item.status == 0 && statusCheck.includes(0)) {
+      } else if (item.history && item.status == 0 && statusCheck.includes(0)) {
         data.normalData.push(item);
       }
     });
@@ -145,7 +145,6 @@ function WaterInTable(props) {
     {
       title: '状态',
       dataIndex: 'status',
-      width: '1.25rem',
       render: (status) => {
         switch (status) {
           case -1:
@@ -167,6 +166,10 @@ function WaterInTable(props) {
                   style={{ background: '#FF8600' }}
                 />
                 异常
+                <a style={{ marginLeft: 20 }}>
+                  关联任务
+                  <MandateBtn relationId={record.id} />
+                </a>
               </div>
             );
           case 2:

+ 3 - 2
src/pages/EqSelfInspection/components/Table/WaterQualityCom.js

@@ -2,8 +2,9 @@ import TabsContent from '@/components/TabsContent';
 import { Table } from 'antd';
 import dayjs from 'dayjs';
 import { useEffect, useMemo, useState } from 'react';
-import Empty from './Empty';
 import styles from '../PatrolReportDetail.less';
+import Empty from './Empty';
+import MandateBtn from './MandateBtn';
 
 function WaterQualityTable(props) {
   const { items } = props;
@@ -59,7 +60,6 @@ function WaterQualityTable(props) {
     {
       title: '状态',
       dataIndex: 'status',
-      width: '1.25rem',
       render: (status) => {
         switch (status) {
           case -1:
@@ -81,6 +81,7 @@ function WaterQualityTable(props) {
                   style={{ background: '#FF8600' }}
                 />
                 异常
+                <MandateBtn relationId={record.id} />
               </div>
             );
           case 2: