Kaynağa Gözat

Merge branch 'develop' of http://120.55.44.4:10080/xujunjie/gt_client_pad into develop

Renxy 1 yıl önce
ebeveyn
işleme
e61895ec4d

+ 1 - 0
.umirc.ts

@@ -1,6 +1,7 @@
 import { defineConfig } from '@umijs/max';
 
 export default defineConfig({
+  hash: true,
   antd: {},
   access: {},
   model: {},

+ 3 - 3
src/pages/EqSelfInspection/List/models/patrolRecord.js

@@ -102,11 +102,11 @@ export default {
       // }
     },
     *queryProcessSection({ payload }, { call, put }) {
-      const list = yield call(queryProcessSection, payload);
-      if (list) {
+      const res = yield call(queryProcessSection, payload);
+      if (res) {
         yield put({
           type: 'save',
-          payload: { processList: list },
+          payload: { processList: res.data },
         });
       }
     },

+ 1 - 1
src/pages/EqSelfInspection/index.js

@@ -122,7 +122,7 @@ const EqSelfInspection = (props) => {
                 style={{ cursor: 'pointer', marginRight: 20 }}
                 onClick={() => {
                   history.push(
-                    `/elf-ins-statistics/patrol-route/${projectId}/1/reocrd?JWT-TOKEN=${GetTokenFromUrl()}&isNew=${1}`,
+                    `/self-inspection/list/${projectId}`,
                   );
                 }}
               />

+ 3 - 1
src/pages/Menu/index.js

@@ -1,6 +1,7 @@
 import { useParams } from '@umijs/max';
 import { useState } from 'react';
 import styles from './index.less';
+import { UnityAction } from '@/utils/utils';
 
 const menuList = [
   {
@@ -21,7 +22,7 @@ const menuList = [
   },
   {
     name: '安全管理',
-    path: (projectId) => ``,
+    path: (projectId) => `/safety/${projectId}`,
   },
   {
     name: '任务管理',
@@ -44,6 +45,7 @@ function Menu() {
     const path = item?.path(projectId);
     // history.push(path);
     console.log(path);
+    UnityAction.sendMsg("menuItem", item.name)
   };
 
   return (

+ 6 - 5
src/pages/TaskManage/Detail/TaskDetail/TaskDetail.tsx

@@ -86,9 +86,9 @@ function TaskDetail(props: IPropsType) {
     }
   }, []);
 
-  const goTaskOrder = (orderID: number) => {
+  const goTaskOrder = (orderID: number, orderType:number) => {
     navigate(
-      `/task-manage/list/order-detail?project_id=${project_id}&order_id=${orderID}`,
+      `/task-manage/list/order-detail?project_id=${project_id}&order_id=${orderID}&order_type=${orderType}`,
     );
   };
 
@@ -116,11 +116,12 @@ function TaskDetail(props: IPropsType) {
           <Row>
             <Col span={4}>任务内容</Col>
             <Col span={20}>
-              <Table />
+              <Col>{mandateDetail?.Detail}</Col>
+              {/*<Table />*/}
             </Col>
           </Row>
         </div>
-        <div>
+        <div className={styles.relatedOrder}>
           <h3 style={{ marginLeft: '15px' }}>关联工单</h3>
           {handledWorkOrder.map((order) => {
             return (
@@ -147,7 +148,7 @@ function TaskDetail(props: IPropsType) {
                     type="text"
                     ghost
                     onClick={() => {
-                      goTaskOrder(order.Id);
+                      goTaskOrder(order.Id, order.RecordType?.value);
                     }}
                   >
                     查看工单

+ 5 - 0
src/pages/TaskManage/Detail/TaskDetail/taskDetail.less

@@ -15,6 +15,11 @@
 
   .detailInfo{
     padding: 15px 15px;
+    border-bottom: 1px solid gray;
+  }
+
+  .relatedOrder{
+    margin-top: 15px;
   }
 
   .workOrderCard {

+ 7 - 4
src/pages/TaskManage/Detail/TaskList/TaskList.tsx

@@ -89,7 +89,7 @@ const TaskList: React.FC<IPropsType> = (props) => {
       });
     }
   }, []);
-  
+
   // 获取列表
   useEffect(() => {
     setMandateListShow(
@@ -138,9 +138,12 @@ const TaskList: React.FC<IPropsType> = (props) => {
     );
   };
 
-  const goTaskOrder = (orderID: number) => {
+  const goTaskOrder = (orderID: number, orderType: number | undefined) => {
+    if (orderType === undefined) {
+      return;
+    }
     navigate(
-      `/task-manage/list/order-detail?project_id=${project_id}&order_id=${orderID}`,
+      `/task-manage/list/order-detail?project_id=${project_id}&order_id=${orderID}&order_type=${orderType}`,
     );
   };
 
@@ -197,7 +200,7 @@ const TaskList: React.FC<IPropsType> = (props) => {
                   type="text"
                   ghost
                   onClick={() => {
-                    goTaskOrder(order.Id);
+                    goTaskOrder(order.Id, order.RecordType?.value);
                   }}
                 >
                   查看工单

+ 173 - 52
src/pages/TaskManage/Detail/TaskOrder/TaskOrder.tsx

@@ -1,10 +1,124 @@
 import PageContent from '@/components/PageContent';
 import PageTitle from '@/components/PageTitle';
+import { IUserType } from '@/pages/TaskManage/Detail/TaskList/taskList.types';
 import SubTitle from '@/pages/TaskManage/components/SubTitle';
-import { Col, Row, Steps, Table } from "antd";
+import { CraftOrderStatus, MaintainOrderStatus, RepairOrderStatus } from "@/pages/TaskManage/constent";
+import {
+  getCraftRecordList,
+  getMaintainRecordList,
+  getRepairRecordList,
+} from '@/services/TaskManage';
+import { useLocation } from '@@/exports';
+import { connect, useRequest } from '@umijs/max';
+import { Col, Row } from 'antd';
+import { BaseOptionType } from 'rc-select/es/Select';
+import React, { useEffect, useState } from 'react';
 import styles from './taskOrder.less';
 
-function TaskOrder() {
+interface IPropsType {
+  userList: IUserType[];
+  dispatch: (args: { type: string; payload: object }) => {};
+}
+
+interface IOrderInfo {
+  CreateTime: string;
+  PlanTime: string;
+  RepairTime: string;
+  Reason: string;
+  Repairman: string | IUserType;
+  OrderStatus: string | BaseOptionType;
+}
+
+const TaskOrder: React.FC<IPropsType> = (props) => {
+  const { userList, dispatch } = props;
+
+  const location = useLocation();
+  const queryParams = new URLSearchParams(location.search);
+  const project_id = Number(queryParams.get('project_id'));
+  const order_id = Number(queryParams.get('order_id'));
+  const order_type = Number(queryParams.get('order_type'));
+
+  const [orderInfo, setOrderInfo] = useState<IOrderInfo>();
+
+  // 根据type请求详情
+  const { run: getMaintainDetail } = useRequest(getMaintainRecordList, {
+    manual: true,
+    formatResult: (result) => {
+      const temp = result.data.list[0];
+      const tempDetail = {
+        CreateTime: temp.CreateTime,
+        PlanTime: temp.PlanTime,
+        RepairTime: '-',
+        Reason: temp.Note,
+        Repairman: userList.find((item) => item.ID === temp.MaintenancePerson) || '-',
+        OrderStatus:
+          MaintainOrderStatus.find((item) => item.value === temp.Status) || '-',
+      }
+      setOrderInfo(tempDetail);
+    },
+  });
+
+  // 根据type请求详情
+  const { run: getRepairDetail } = useRequest(getRepairRecordList, {
+    manual: true,
+    formatResult: (result: any) => {
+
+      const temp = result.data.list[0];
+      const tempDetail: IOrderInfo = {
+        CreateTime: temp.CreateTime,
+        PlanTime: temp.PlanTime,
+        RepairTime: temp.RepairTime,
+        Reason: temp.Reason,
+        Repairman: userList.find((item) => item.ID === temp.Repairman) || '-',
+        OrderStatus:
+          RepairOrderStatus.find((item) => item.value === temp.AcceptanceStatus) || '-',
+      };
+      setOrderInfo(tempDetail);
+    },
+  });
+
+  // 根据type请求详情
+  const { run: getCraftDetail } = useRequest(getCraftRecordList, {
+    manual: true,
+    formatResult: (result) => {
+      console.log(result.data.list[0]);
+      const temp = result.data.list[0];
+      const tempDetail = {
+        CreateTime: temp.start_time,
+        PlanTime: temp.plan_end_time,
+        RepairTime: temp.actual_end_time || '-',
+        Reason: temp.detail,
+        Repairman: userList.find((item) => item.ID === temp.operator_id) || '-',
+        OrderStatus:
+          CraftOrderStatus.find((item) => item.value === temp.status) || '-',
+      }
+      setOrderInfo(tempDetail);
+    },
+  });
+
+  useEffect(() => {
+    if (userList.length === 0) {
+      dispatch({
+        type: 'taskUser/fetchUserList',
+        payload: { project_id },
+      });
+    }
+    switch (order_type) {
+      // 工艺
+      case 1:
+        getCraftDetail({ project_id, work_id: order_id });
+        break;
+      // 维修
+      case 2:
+        getRepairDetail({ project_id, id: order_id });
+        break;
+      // 保养
+      case 3:
+        getMaintainDetail({ project_id, id: order_id });
+        break;
+    }
+  }, []);
+
   return (
     <PageContent>
       <PageTitle returnable>工单详情</PageTitle>
@@ -13,72 +127,79 @@ function TaskOrder() {
           <SubTitle title="工单信息" statusStr="已完成" radius />
           <div style={{ padding: '15px' }}>
             <Row className={styles.rowMargin}>
-              <Col span={16}>时间:{}</Col>
-              <Col span={8}>工单负责人:{}</Col>
+              <Col span={16}>时间:{'-'}</Col>
+              <Col span={8}>
+                工单负责人:{orderInfo?.Repairman?.CName || '-'}
+              </Col>
             </Row>
             <Row className={styles.rowMargin}>
-              <Col span={16}>工单状态:{}</Col>
-              <Col span={8}>派单人员:{}</Col>
+              <Col span={16}>工单状态:{orderInfo?.OrderStatus?.label}</Col>
+              <Col span={8}>派单人员:{'-'}</Col>
             </Row>
             <Row className={styles.rowMargin}>
-              <Col>派单时间:{}</Col>
+              <Col>派单时间:{orderInfo?.CreateTime || '-'}</Col>
             </Row>
             <Row className={styles.rowMargin}>
-              <Col>计划完成时间:{}</Col>
+              <Col>计划完成时间:{orderInfo?.PlanTime || '-'}</Col>
             </Row>
             <Row className={styles.rowMargin}>
-              <Col>实际完成时间:{}</Col>
+              <Col>实际完成时间:{orderInfo?.RepairTime || '-'}</Col>
             </Row>
             <Row>
-              <Col span={4}>工单详情:{}</Col>
+              <Col span={4}>工单详情:</Col>
               <Col span={20}>
-                <Table />
+                {orderInfo?.Reason}
+                {/*<Table />*/}
               </Col>
             </Row>
           </div>
         </div>
-        <div>
-          <SubTitle title="维修内容" />
-          <div style={{ padding: '15px' }}>
-            <Row className={styles.rowMargin}>
-              <Col>是否润滑加油:否</Col>
-            </Row>
-            <Row>
-              <Col>是否清洁:否</Col>
-            </Row>
-          </div>
-        </div>
-        <div>
-          <SubTitle title="工单流程" />
-          <div style={{padding: '15px'}}>
-            <Steps
-              direction="vertical"
-              style={{fontSize: '14px'}}
-              current={1}
-              items={[
-                {
-                  title: '工单已派遣至值班人员张**',
-                  description:'2023-08-02 13:23',
-                },
-                {
-                  title: '张**接收工单',
-                  description:'2023-08-02 13:23',
-                },
-                {
-                  title: '张**提交处理结果',
-                  description:'2023-08-02 13:23',
-                },{
-                  title: '工单审批通过',
-                  description:'2023-08-02 13:23',
-                },
-
-              ]}
-            />
-          </div>
-        </div>
+        {/*<div>*/}
+        {/*  <SubTitle title="维修内容" />*/}
+        {/*  <div style={{ padding: '15px' }}>*/}
+        {/*    <Row className={styles.rowMargin}>*/}
+        {/*      <Col>是否润滑加油:否</Col>*/}
+        {/*    </Row>*/}
+        {/*    <Row>*/}
+        {/*      <Col>是否清洁:否</Col>*/}
+        {/*    </Row>*/}
+        {/*  </div>*/}
+        {/*</div>*/}
+        {/*<div>*/}
+        {/*  <SubTitle title="工单流程" />*/}
+        {/*  <div style={{ padding: '15px' }}>*/}
+        {/*    <Steps*/}
+        {/*      direction="vertical"*/}
+        {/*      style={{ fontSize: '14px' }}*/}
+        {/*      current={1}*/}
+        {/*      items={[*/}
+        {/*        {*/}
+        {/*          title: '工单已派遣至值班人员张**',*/}
+        {/*          description: '2023-08-02 13:23',*/}
+        {/*        },*/}
+        {/*        {*/}
+        {/*          title: '张**接收工单',*/}
+        {/*          description: '2023-08-02 13:23',*/}
+        {/*        },*/}
+        {/*        {*/}
+        {/*          title: '张**提交处理结果',*/}
+        {/*          description: '2023-08-02 13:23',*/}
+        {/*        },*/}
+        {/*        {*/}
+        {/*          title: '工单审批通过',*/}
+        {/*          description: '2023-08-02 13:23',*/}
+        {/*        },*/}
+        {/*      ]}*/}
+        {/*    />*/}
+        {/*  </div>*/}
+        {/*</div>*/}
       </div>
     </PageContent>
   );
-}
+};
 
-export default TaskOrder;
+export default connect(({ taskUser }: any): { userList: IUserType[] } => {
+  return {
+    userList: taskUser.userList,
+  };
+})(TaskOrder);

+ 42 - 0
src/pages/TaskManage/constent.ts

@@ -152,3 +152,45 @@ export const OrderStatus = [
     label: '已拒绝',
   },
 ];
+
+export const RepairOrderStatus =[
+  {
+    value: 0,
+    label: '维修中',
+  },
+  {
+    value: 1,
+    label: '已提交',
+  },
+  {
+    value: 2,
+    label: '已维修',
+  },
+]
+
+export const MaintainOrderStatus =[
+
+  {
+    value: 1,
+    label: '已提交',
+  },
+  {
+    value: 2,
+    label: '已保养',
+  },
+]
+
+export const CraftOrderStatus =[
+  {
+    value: 0,
+    label: '进行中',
+  },
+  {
+    value: 1,
+    label: '已提交',
+  },
+  {
+    value: 2,
+    label: '已通过',
+  },
+]

+ 45 - 6
src/services/TaskManage.js

@@ -1,7 +1,7 @@
-import {request} from "umi";
 import { stringify } from 'qs';
+import { request } from 'umi';
 
-const baseURL='/api'
+const baseURL = '/api';
 
 /**
  * 获取任务列表
@@ -41,7 +41,7 @@ export async function getMandateDetail(params) {
 export async function setTaskAutomation(params) {
   return request(`${baseURL}/v1/mandate/automation`, {
     method: 'POST',
-    body: params
+    body: params,
   });
 }
 
@@ -53,11 +53,11 @@ export async function setTaskAutomation(params) {
  * @returns {Promise<*>}
  */
 export async function ignoreTask(params) {
-  const encodeParams = new URLSearchParams(params).toString()
+  const encodeParams = new URLSearchParams(params).toString();
   return request(`${baseURL}/v1/mandate/edit`, {
     method: 'POST',
     headers: { ContentType: 'application/x-www-form-urlencoded' },
-    body: encodeParams
+    body: encodeParams,
   });
 }
 
@@ -74,6 +74,45 @@ export async function ignoreTask(params) {
 export async function dispatchOrder(params) {
   return request(`${baseURL}/v1/work_order/save`, {
     method: 'POST',
-    body: params
+    body: params,
   });
 }
+
+/**
+ * 获取保养工单列表
+ * @param data.project_id
+ * @param data.id 工单id
+ * @returns {Promise<*>}
+ */
+export async function getMaintainRecordList(data) {
+  return request(
+    `${baseURL}/v1/maintain-record/list/${data.project_id}?${stringify(data)}`,
+    'GET',
+  );
+}
+
+/**
+ * 获取维修工单列表
+ * @param data.project_id
+ * @param data.id 工单id
+ * @returns {Promise<*>}
+ */
+export async function getRepairRecordList(data) {
+  return request(
+    `${baseURL}/v1/repair-record/list/${data.project_id}?${stringify(data)}`,
+    'GET',
+  );
+}
+
+/**
+ * 获取工艺工单列表
+ * @param data.project_id
+ * @param data.work_id 工单id
+ * @returns {Promise<*>}
+ */
+export async function getCraftRecordList(data) {
+  return request(
+    `${baseURL}/v1/work_order/section/list?${stringify(data)}`,
+    'GET',
+  );
+}