Kaynağa Gözat

feat: 我的任务 我的工单页面

ZhaoJun 1 yıl önce
ebeveyn
işleme
b222d947d8

+ 2 - 2
.umirc.ts

@@ -26,8 +26,8 @@ export default defineConfig({
   ],
   proxy: {
     '/api': {
-      target: 'http://47.96.12.136:8888/',
-      // target: 'http://47.96.12.136:8788/',
+      // target: 'http://47.96.12.136:8888/',
+      target: 'http://47.96.12.136:8788/',
       // target: 'http://120.55.44.4:8903/',
       // target: 'https://work.greentech.com.cn/',
       changeOrigin: true,

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

@@ -33,6 +33,7 @@ const TaskList: React.FC<IPropsType> = (props) => {
   const queryParams = new URLSearchParams(location.search);
   const project_id = Number(queryParams.get('project_id'));
   const mandateType = Number(queryParams.get('mandateType'));
+  const userID = queryParams.get('user_id');
 
   const navigate = useNavigate();
 
@@ -44,6 +45,7 @@ const TaskList: React.FC<IPropsType> = (props) => {
     mandate_type: mandateType,
     pageSize: 20,
     currentPage: 1,
+    responsible_people: userID !== null ? Number(userID) : '',
   });
   const [pagination, setPagination] = useState({
     current: 1,
@@ -126,6 +128,11 @@ const TaskList: React.FC<IPropsType> = (props) => {
       pageSize: 20,
       currentPage: 1,
     };
+
+    if (userID !== null) {
+      params.responsible_people = Number(userID);
+    }
+
     for (let i = 0; i < value.length; i++) {
       if (value[i] !== null && topFiltersConfig[i] !== undefined) {
         params[topFiltersConfig[i].key] = value[i];

+ 79 - 48
src/pages/TaskManage/Detail/WorkOrderList/WorkOrderList.js

@@ -1,6 +1,6 @@
 import PageContent from '@/components/PageContent';
 import PageTitle from '@/components/PageTitle';
-import {
+import getUserWorkOrderList, {
   getCraftRecordList,
   getMaintainRecordList,
   getRepairRecordList,
@@ -20,6 +20,7 @@ const WorkOrderList = (props) => {
   const queryParams = new URLSearchParams(location.search);
   const project_id = Number(queryParams.get('project_id'));
   const order_type = Number(queryParams.get('order_type'));
+  const userID = queryParams.get('user_id');
 
   const navigate = useNavigate();
 
@@ -86,59 +87,89 @@ const WorkOrderList = (props) => {
 
   const { run: getWorkOrderList } = useRequest(
     (status) => {
-      switch (order_type) {
-        case 1:
-        case 4:
-        case 5:
-        case 6:
-        case 7:
-          return getCraftRecordList({
-            project_id,
-            status: status || 0,
-          });
-        case 2:
-          return getRepairRecordList({
-            project_id,
-            acceptanceStatus: status || 0,
-          });
-        case 3:
-          return getMaintainRecordList({ project_id, status: status || 0 });
+      if (userID !== null) {
+        return getUserWorkOrderList({
+          project_id,
+          work_type: order_type,
+          status: status || 0,
+          user_id: Number(userID),
+        });
+      } else {
+        switch (order_type) {
+          case 1:
+          case 4:
+          case 5:
+          case 6:
+          case 7:
+            return getCraftRecordList({
+              project_id,
+              status: status || 0,
+            });
+          case 2:
+            return getRepairRecordList({
+              project_id,
+              acceptanceStatus: status || 0,
+            });
+          case 3:
+            return getMaintainRecordList({ project_id, status: status || 0 });
+        }
       }
     },
     {
       throwOnError: true,
       formatResult: (result) => {
-        if (result?.data?.list) {
-          const temp = result.data.list.map((item) => {
-            return {
-              ...item,
-              CreateTime: dayjs(item.start_time).format('YYYY-MM-DD HH:mm'),
-              Repairman: userList.find((user) => {
-                let temp = -1;
-                if (order_type === 2) {
-                  temp = item.Repairman;
-                } else if (order_type === 3) {
-                  temp = item.MaintenancePerson;
-                } else {
-                  temp = item.checker_id;
-                }
-                return temp === user.ID;
-              }),
-              OrderStatus: OrderStatus.find((status) => {
-                let temp = -1;
-                if (order_type === 2) {
-                  temp = item.AcceptanceStatus;
-                } else if (order_type === 3) {
-                  temp = item.Status;
-                } else {
-                  temp = item.status;
-                }
-                return status.value === temp;
-              }),
-            };
-          });
-          renderTabPannal(temp);
+        if (userID !== null) {
+          if (result) {
+            const temp = result.map((item) => {
+              return {
+                ...item,
+                CreateTime: item.CreateTime
+                  ? dayjs(item.CreateTime).format('YYYY-MM-DD HH:mm')
+                  : '-',
+                Repairman: userList.find(
+                  (user) => item.Responsible === user.ID,
+                ),
+                OrderStatus: OrderStatus.find(
+                  (status) => status.value === item.Status,
+                ),
+              };
+            });
+            renderTabPannal(temp);
+          }
+        } else {
+          if (result?.data?.list) {
+            const temp = result.data.list.map((item) => {
+              return {
+                ...item,
+                CreateTime: dayjs(item.start_time).format('YYYY-MM-DD HH:mm'),
+                Repairman: userList.find((user) => {
+                  let temp = -1;
+                  if (order_type === 2) {
+                    temp = item.Repairman;
+                  } else if (order_type === 3) {
+                    temp = item.MaintenancePerson;
+                  } else {
+                    temp = item.checker_id;
+                  }
+                  return temp === user.ID;
+                }),
+                OrderStatus: OrderStatus.find((status) => {
+                  let temp = -1;
+                  if (order_type === 2) {
+                    temp = item.AcceptanceStatus;
+                  } else if (order_type === 3) {
+                    temp = item.Status;
+                  } else {
+                    temp = item.status;
+                  }
+                  return status.value === temp;
+                }),
+              };
+            });
+            renderTabPannal(temp);
+          }
         }
+
         if (result?.data?.pagination) {
           setPagination({
             pageSize: result.data.pagination.PageSize,

+ 8 - 1
src/pages/TaskManage/components/MandateDetail.js

@@ -171,6 +171,11 @@ const MandateDetail = (props) => {
     }
   };
 
+  const openWorkOrderModal = () => {
+    // 打开工单弹窗
+    console.log('open work order modal');
+  };
+
   useEffect(() => {
     getMandateInfo({ mandate_id: mandateID });
   }, []);
@@ -234,7 +239,9 @@ const MandateDetail = (props) => {
               </Row>
             </div>
             <Divider type="vertical" style={{ height: '40px' }} />
-            <div className={styles.rightButton}>查看工单</div>
+            <div className={styles.rightButton} onClick={openWorkOrderModal}>
+              查看工单
+            </div>
           </div>
         );
       })}

+ 12 - 4
src/pages/TaskManage/index.tsx

@@ -3,7 +3,7 @@ import TabsContent from '@/components/TabsContent';
 import styles from '@/pages/TaskManage/index.less';
 import { getMandateList } from '@/services/TaskManage';
 import { RightOutlined } from '@ant-design/icons';
-import { useParams } from '@umijs/max';
+import { useLocation, useParams } from '@umijs/max';
 import { List, Spin } from 'antd';
 import { BaseOptionType } from 'rc-select/es/Select';
 import { useEffect, useState } from 'react';
@@ -13,6 +13,11 @@ import { MandateType, OrderType } from './constent';
 const TaskManage = () => {
   const { projectID } = useParams();
   const project_id = Number(projectID === '' ? '0' : projectID);
+
+  const location = useLocation();
+  const queryParams = new URLSearchParams(location.search);
+  const userID = queryParams.get('user_id');
+
   const navigate = useNavigate();
 
   const [mandateCount, setMandateCount] = useState<number[]>([0, 0, 0]);
@@ -28,6 +33,7 @@ const TaskManage = () => {
           pageSize: 1,
           currentPage: 1,
           mandate_type: i + 1,
+          responsible_people: userID !== null ? Number(userID) : '',
         }),
       );
     }
@@ -71,16 +77,18 @@ const TaskManage = () => {
         <List.Item.Meta
           title={<span className={styles.fontS28}>{item.label}</span>}
         />
+
         <div className={styles.itemCount}>
           <div className={styles.countNumber}>{mandateCount[index]}</div>
           <div className={styles.fontS22}>任务数量</div>
         </div>
+
         <RightOutlined />
       </List.Item>
     );
   };
 
-  const makeWorkOrderList = (item: BaseOptionType, index: number) => {
+  const makeWorkOrderList = (item: BaseOptionType) => {
     return (
       <List.Item
         className={styles.listItem}
@@ -112,7 +120,7 @@ const TaskManage = () => {
         onChange={onTabChange}
         items={[
           {
-            label: `任务管理`,
+            label: `${userID === null ? '任务管理' : '我的任务'}`,
             key: '1',
             children: (
               <Spin spinning={loading}>
@@ -128,7 +136,7 @@ const TaskManage = () => {
             ),
           },
           {
-            label: `工单管理`,
+            label: `${userID === null ? '工单管理' : '我的工单'}`,
             key: '2',
             children: (
               <Spin spinning={loading}>

+ 27 - 10
src/services/TaskManage.js

@@ -9,6 +9,10 @@ const baseURL = '/api';
  * @returns {Promise<*>}
  */
 export async function getMandateList(data) {
+  if (data.responsible_people === '') {
+    delete data.responsible_people;
+  }
+  console.log(data);
   return request(`${baseURL}/v1/mandate/list?${stringify(data)}`);
 }
 
@@ -43,17 +47,14 @@ export async function setTaskAutomation(params, mandate) {
     method: 'POST',
     data: params,
   });
-  if (res.code === 200) {
-    if (mandate.MandateClass === 2) {
-      res = await SetVarValues(mandate.MandateChild[0].Payload);
-      if (res) {
-        return res;
-      } else {
-        return false;
-      }
+
+  if (mandate.MandateClass === 2) {
+    res = await SetVarValues(mandate.MandateChild[0].Payload);
+    if (res) {
+      return res;
+    } else {
+      return false;
     }
-  } else {
-    return false;
   }
 }
 
@@ -163,3 +164,19 @@ export async function SetVarValues(params) {
   }
   return res;
 }
+
+/**
+ *
+ * @param {Object} params
+ * @param {number} params.project_id 项目id
+ * @param {number} params.work_type 0-全部 1-工艺 2-维修 3-保养
+ * @param {number} params.status -1-全部状态 0-未处理
+ * @param {string} params.stime 开始时间
+ * @param {string} params.etime 结束时间
+ * @param {number} params.user_id 用户id
+ * @returns {Promise<*>}
+ */
+export default async function getUserWorkOrderList(params) {
+  const res = await request(`/api/v1/user-mandate/list?${stringify(params)}`);
+  return res.data;
+}