TaskOrder.tsx 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. import PageContent from '@/components/PageContent';
  2. import PageTitle from '@/components/PageTitle';
  3. import { IUserType } from '@/pages/TaskManage/Detail/TaskList/taskList.types';
  4. import SubTitle from '@/pages/TaskManage/components/SubTitle';
  5. import { OrderStatus } from '@/pages/TaskManage/constent';
  6. import {
  7. getCraftRecordList,
  8. getMaintainRecordList,
  9. getRepairRecordList,
  10. } from '@/services/TaskManage';
  11. import { useLocation } from '@@/exports';
  12. import { connect, useRequest } from '@umijs/max';
  13. import { Col, Row } from 'antd';
  14. import { DefaultOptionType } from 'rc-select/es/Select';
  15. import React, { useEffect, useState } from 'react';
  16. import styles from './taskOrder.less';
  17. interface IPropsType {
  18. userList: IUserType[];
  19. dispatch: (args: { type: string; payload: object }) => {};
  20. }
  21. interface IOrderInfo {
  22. CreateTime: string;
  23. PlanTime: string;
  24. RepairTime: string;
  25. Reason: string;
  26. Repairman: string | IUserType;
  27. OrderStatus: string | DefaultOptionType;
  28. }
  29. const TaskOrder: React.FC<IPropsType> = (props) => {
  30. const { userList, dispatch } = props;
  31. const location = useLocation();
  32. const queryParams = new URLSearchParams(location.search);
  33. const project_id = Number(queryParams.get('project_id'));
  34. const order_id = Number(queryParams.get('order_id'));
  35. const order_type = Number(queryParams.get('order_type'));
  36. const [orderInfo, setOrderInfo] = useState<IOrderInfo>();
  37. // 根据type请求详情
  38. const { run: getMaintainDetail } = useRequest(getMaintainRecordList, {
  39. manual: true,
  40. formatResult: (result) => {
  41. const temp = result.data.list[0];
  42. const tempDetail = {
  43. CreateTime: temp.CreateTime,
  44. PlanTime: temp.PlanTime,
  45. RepairTime: '-',
  46. Reason: temp.Note,
  47. Repairman:
  48. userList.find((item) => item.ID === temp.MaintenancePerson) || '-',
  49. OrderStatus:
  50. OrderStatus.find((item) => item.value === temp.Status) || '-',
  51. };
  52. setOrderInfo(tempDetail);
  53. },
  54. });
  55. // 根据type请求详情
  56. const { run: getRepairDetail } = useRequest(getRepairRecordList, {
  57. manual: true,
  58. formatResult: (result: any) => {
  59. const temp = result.data.list[0];
  60. const tempDetail: IOrderInfo = {
  61. CreateTime: temp.CreateTime,
  62. PlanTime: temp.PlanTime,
  63. RepairTime: temp.RepairTime,
  64. Reason: temp.Reason,
  65. Repairman: userList.find((item) => item.ID === temp.Repairman) || '-',
  66. OrderStatus:
  67. OrderStatus.find((item) => item.value === temp.AcceptanceStatus) ||
  68. '-',
  69. };
  70. setOrderInfo(tempDetail);
  71. },
  72. });
  73. // 根据type请求详情
  74. const { run: getCraftDetail } = useRequest(getCraftRecordList, {
  75. manual: true,
  76. formatResult: (result) => {
  77. const temp = result.data.list[0];
  78. const tempDetail = {
  79. CreateTime: temp.start_time,
  80. PlanTime: temp.plan_end_time,
  81. RepairTime: temp.actual_end_time || '-',
  82. Reason: temp.detail,
  83. Repairman: userList.find((item) => item.ID === temp.operator_id) || '-',
  84. OrderStatus:
  85. OrderStatus.find((item) => item.value === temp.status) || '-',
  86. };
  87. setOrderInfo(tempDetail);
  88. },
  89. });
  90. useEffect(() => {
  91. if (userList.length === 0) {
  92. dispatch({
  93. type: 'taskUser/fetchUserList',
  94. payload: { project_id },
  95. });
  96. }
  97. switch (order_type) {
  98. // 工艺
  99. case 1:
  100. getCraftDetail({ project_id, work_id: order_id });
  101. break;
  102. // 维修
  103. case 2:
  104. getRepairDetail({ project_id, id: order_id });
  105. break;
  106. // 保养
  107. case 3:
  108. getMaintainDetail({ project_id, id: order_id });
  109. break;
  110. }
  111. }, []);
  112. return (
  113. <PageContent>
  114. <PageTitle returnable>工单详情</PageTitle>
  115. <div className={styles.selfCardBox}>
  116. <div className={styles.orderInfo}>
  117. <SubTitle
  118. title="工单信息"
  119. // @ts-ignore
  120. showStatus={orderInfo?.OrderStatus.value === 2}
  121. radius
  122. />
  123. <div style={{ padding: '15px' }}>
  124. <Row className={styles.rowMargin}>
  125. <Col className={styles.fontS18} span={16}>
  126. 时间:{'-'}
  127. </Col>
  128. <Col className={styles.fontS18} span={8}>
  129. {/*// @ts-ignore*/}
  130. 工单负责人:{orderInfo?.Repairman?.CName || '-'}
  131. </Col>
  132. </Row>
  133. <Row className={styles.rowMargin}>
  134. <Col className={styles.fontS18} span={16}>
  135. {/*// @ts-ignore*/}
  136. 工单状态:{orderInfo?.OrderStatus?.label}
  137. </Col>
  138. <Col className={styles.fontS18} span={8}>
  139. 派单人员:{'-'}
  140. </Col>
  141. </Row>
  142. <Row className={styles.rowMargin}>
  143. <Col className={styles.fontS18}>
  144. 派单时间:{orderInfo?.CreateTime || '-'}
  145. </Col>
  146. </Row>
  147. <Row className={styles.rowMargin}>
  148. <Col className={styles.fontS18}>
  149. 计划完成时间:{orderInfo?.PlanTime || '-'}
  150. </Col>
  151. </Row>
  152. <Row className={styles.rowMargin}>
  153. <Col className={styles.fontS18}>
  154. 实际完成时间:{orderInfo?.RepairTime || '-'}
  155. </Col>
  156. </Row>
  157. <Row>
  158. <Col className={styles.fontS18}>工单详情:</Col>
  159. <Col className={styles.fontS18} span={20}>
  160. {orderInfo?.Reason}
  161. {/*<Table />*/}
  162. </Col>
  163. </Row>
  164. </div>
  165. </div>
  166. {/*<div>*/}
  167. {/* <SubTitle title="维修内容" />*/}
  168. {/* <div style={{ padding: '15px' }}>*/}
  169. {/* <Row className={styles.rowMargin}>*/}
  170. {/* <Col className={styles.fontS18}>是否润滑加油:否</Col>*/}
  171. {/* </Row>*/}
  172. {/* <Row>*/}
  173. {/* <Col className={styles.fontS18} >是否清洁:否</Col>*/}
  174. {/* </Row>*/}
  175. {/* </div>*/}
  176. {/*</div>*/}
  177. {/*<div>*/}
  178. {/* <SubTitle title="工单流程" />*/}
  179. {/* <div style={{ padding: '15px' }}>*/}
  180. {/* <Steps*/}
  181. {/* direction="vertical"*/}
  182. {/* style={{ fontSize: '14px' }}*/}
  183. {/* current={1}*/}
  184. {/* items={[*/}
  185. {/* {*/}
  186. {/* title: '工单已派遣至值班人员张**',*/}
  187. {/* description: '2023-08-02 13:23',*/}
  188. {/* },*/}
  189. {/* {*/}
  190. {/* title: '张**接收工单',*/}
  191. {/* description: '2023-08-02 13:23',*/}
  192. {/* },*/}
  193. {/* {*/}
  194. {/* title: '张**提交处理结果',*/}
  195. {/* description: '2023-08-02 13:23',*/}
  196. {/* },*/}
  197. {/* {*/}
  198. {/* title: '工单审批通过',*/}
  199. {/* description: '2023-08-02 13:23',*/}
  200. {/* },*/}
  201. {/* ]}*/}
  202. {/* />*/}
  203. {/* </div>*/}
  204. {/*</div>*/}
  205. </div>
  206. </PageContent>
  207. );
  208. };
  209. export default connect(({ taskUser }: any): { userList: IUserType[] } => {
  210. return {
  211. userList: taskUser.userList,
  212. };
  213. })(TaskOrder);