import PageContent from '@/components/PageContent';
import PageTitle from '@/components/PageTitle';
import {
MandateClass,
MandateStatus,
MandateType,
OrderStatus,
OrderType,
} from '@/pages/TaskManage/constent';
import { getDiagnosticDetail, getMandateDetail } from '@/services/TaskManage';
import { useLocation } from '@@/exports';
import { CaretDownFilled } from '@ant-design/icons';
import { connect, useRequest } from '@umijs/max';
import { Col, Collapse, Divider, Row, Table } from 'antd';
import dayjs from 'dayjs';
import { useEffect, useState } from 'react';
// @ts-ignore
import ReactZmage from 'react-zmage';
import { useNavigate } from 'umi';
import styles from './taskDetail.less';
function TaskDetail(props) {
const { userList, dispatch } = props;
const location = useLocation();
const queryParams = new URLSearchParams(location.search);
const project_id = Number(queryParams.get('project_id'));
const mandate_id = Number(queryParams.get('mandate_id'));
const navigate = useNavigate();
const [mandateDetail, setMandateDetail] = useState();
const [mandateChild, setMandateChild] = useState([]);
const [handledWorkOrder, setHandledWorkOrder] = useState([]);
const [mandateTable, setMandateTable] = useState([]);
const columnDef = [
{
title: '详情',
dataIndex: 'detail',
key: 'key',
render: (value, record) => {
return (
);
},
},
];
const base64ToImageUrl = (base64String) => {
const byteCharacters = atob(base64String);
const byteArrays = [];
for (let i = 0; i < byteCharacters.length; i++) {
byteArrays.push(byteCharacters.charCodeAt(i));
}
const byteArray = new Uint8Array(byteArrays);
const blob = new Blob([byteArray], { type: 'image/png' });
return URL.createObjectURL(blob);
};
const { refresh: refreshDetail } = useRequest(getMandateDetail, {
defaultParams: [
{
mandate_id,
project_id,
},
],
formatResult: async (result) => {
const tempMandate = {
...result.data,
Status: MandateStatus.find((item) => item.value === result.data.Status),
MandateClass: MandateClass.find(
(item) => item.value === result.data.MandateClass,
),
MandateType: MandateType.find(
(item) => item.value === result.data.MandateType,
),
ResponsiblePeople: userList.find(
(item) => item.ID === result.data.ResponsiblePeople,
),
CreateTime: dayjs(result.data.CreateTime).format('YYYY-MM-DD HH:mm'),
};
const workOrder = result.data.Records.map((item) => {
return {
...item,
CreateTime: dayjs(item.CreateTime).format('YYYY-MM-DD HH:mm'),
Status: OrderStatus.find((status) => status.value === item.Status),
RecordType: OrderType.find((type) => type.value === item.RecordType),
Responsible: userList.find((user) => user.ID === item.Responsible),
};
});
const children = result.data.MandateChild;
const tempOrder = [
{
key: '1',
label: (
关联工单({workOrder.length})
),
children: workOrder.map((record) => {
return (
<>
工单类型:
{record.RecordType?.label?.replace('工单', '')}
>
时间:{record.CreateTime || '-'}
工单状态:
{typeof record.Status === 'number'
? '-'
: record.Status?.label}
工单负责人:
{typeof record.Responsible === 'number'
? '-'
: record.Responsible?.CName}
{
if (typeof record.RecordType === 'number') {
return;
}
// @ts-ignore
goMyWorkOrder(
record.Id,
record.RecordType?.value,
tempMandate?.MandateClass.value,
);
}}
>
查看
{/*
{
if (typeof record.RecordType === 'number') {
return;
}
// @ts-ignore
goTaskOrder(
record.Id,
record.RecordType?.value,
tempMandate?.MandateClass.value,
);
}}
>
关闭工单
*/}
);
}),
},
];
if (
tempMandate.MandateClass &&
tempMandate.ExtendId &&
/* @ts-ignore */
tempMandate.MandateClass.value === 7
) {
const image = await getDiagnosticDetail(tempMandate.ExtendId);
tempMandate.img = image.path;
}
setMandateDetail(tempMandate);
setHandledWorkOrder(tempOrder);
if (children && children.length) {
setMandateChild(children);
}
},
});
useEffect(() => {
if (userList.length === 0) {
dispatch({
type: 'taskUser/fetchUserList',
payload: { project_id },
});
}
}, []);
useEffect(() => {
if (!mandateChild.length) {
return;
}
if (mandateDetail?.MandateClass?.value === 2) {
const dataSource = [];
dataSource.push({
detail: {
text: mandateChild[0].Title,
key: 'title',
},
});
dataSource.push(
...Object.entries(JSON.parse(mandateChild[0].Payload)).map((item) => {
const [key, value] = item;
return {
detail: {
text:
value['item_alias'] +
' 现有数值:' +
value['old_value'] +
' 建议调整数值' +
value['new_value'],
key: key,
},
};
}),
);
setMandateTable(dataSource);
return;
}
const dataSource = mandateChild.map((item, index) => {
if (item.MandateClass === 2) {
}
return {
detail: {
text: item.Title + item.Content,
key: item.Title + index + item.Content,
},
};
});
setMandateTable(dataSource);
}, [mandateChild]);
const goMyWorkOrder = (orderID, orderType, mandateClass) => {
if (orderType === undefined) {
return;
}
navigate(
`/center/my-task/work-order-detail?project_id=${project_id}&order_id=${orderID}&order_type=${orderType}&mandate_class=${mandateClass}`,
);
};
return (
任务详情
时间:{mandateDetail?.CreateTime}
{/*// @ts-ignore*/}
{/*//@ts-ignore*/}
任务类别:{mandateDetail?.MandateClass?.label}
{/*//@ts-ignore*/}
任务状态:{mandateDetail?.Status?.label}
{/*// @ts-ignore*/}
任务负责人:{mandateDetail?.ResponsiblePeople?.CName}
任务总结
{mandateDetail?.Summary ||
'根据水质相关数据.建议您调节以下参数,水厂运行可达较优状态'}
{mandateDetail?.img && (
预警图片
)}
{mandateDetail?.Files.length > 0 && (
截图
{
if (item) {
return {
src: item.url,
};
}
return {};
})}
/>
)}
任务内容
{/*{mandateDetail?.Detail}*/}
(
)}
items={handledWorkOrder}
/>
);
}
export default connect(({ taskUser }) => {
return {
userList: taskUser.userList,
};
})(TaskDetail);