From f574055ed80a64cbccd601b200afc437a87b52eb Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期六, 07 二月 2026 16:03:39 +0800
Subject: [PATCH] RCS入库流程优化

---
 rsf-admin/src/page/task/TaskList.jsx |   87 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 76 insertions(+), 11 deletions(-)

diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index 55d5af7..85ec42e 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -25,6 +25,8 @@
     SelectInput,
     NumberInput,
     Button,
+    useListContext,
+    useRedirect,
     EditButton,
 } from 'react-admin';
 import { Box, Typography, Card, Stack, Drawer } from '@mui/material';
@@ -35,13 +37,11 @@
 import CancelIcon from '@mui/icons-material/Cancel';
 import PageDrawer from "../components/PageDrawer";
 import TaskPanel from "./TaskPanel";
-import MyField from "../components/MyField";
+import PublicIcon from '@mui/icons-material/Public';
 import ConfirmButton from "../components/ConfirmButton";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, AUTO_RUN_CHECK_ORDERS } from '@/config/setting';
 import PlayArrowOutlinedIcon from '@mui/icons-material/PlayArrowOutlined';
 import PauseIcon from '@mui/icons-material/Pause';
-import PauseCircleOutlineIcon from '@mui/icons-material/PauseCircleOutline';
-import * as Common from '@/utils/common';
 import ColorizeOutlinedIcon from '@mui/icons-material/ColorizeOutlined';
 import GradingOutlinedIcon from '@mui/icons-material/GradingOutlined';
 
@@ -58,9 +58,9 @@
         width: 248
     },
     '& .MuiTableCell-root': {
-    whiteSpace: 'nowrap',
-    overflow: 'visible',
-    textOverflow: 'unset'
+        whiteSpace: 'nowrap',
+        overflow: 'visible',
+        textOverflow: 'unset'
     }
 
 }));
@@ -71,6 +71,7 @@
     const refresh = useRefresh();
     const [drawerVal, setDrawerVal] = useState(false);
     const [autoExce, setAutoExce] = useState(false);
+    const [menuPubExce, setMenuPubExce] = useState(false);
     const dict = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_warehouse_type')) || [];
 
     useEffect(() => {
@@ -142,7 +143,7 @@
                 sort={{ field: "sort", order: "desc" }}
                 actions={(
                     <TopToolbar>
-                        <BulkAutoStartButton autoExce={autoExce} setAutoExce={setAutoExce}/>
+                        <BulkAutoStartButton autoExce={autoExce} setAutoExce={setAutoExce} />
                         <BulkAutoPauseButton autoExce={autoExce} setAutoExce={setAutoExce} />
                         <FilterButton />
                         <SelectColumnsButton preferenceKey='task' />
@@ -152,11 +153,11 @@
             >
                 <StyledDatagrid
                     preferenceKey='task'
-                    bulkActionButtons={false}
+                    bulkActionButtons={<PublicTaskButton menuPubExce={menuPubExce} setMenuPubExce={setMenuPubExce}  />}
                     rowClick={false}
                     expand={<TaskPanel />}
                     expandSingle={true}
-                    omit={['id', 'createTime', 'createBy$', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status','warehType$']}
+                    omit={['id', 'createTime', 'createBy$', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status', 'warehType$']}
                 >
                     <NumberField source="id" />
                     <TextField source="taskCode" label="table.field.task.taskCode" />
@@ -181,6 +182,7 @@
                     <WrapperField cellClassName="opt" label="common.field.opt" onClick={(e) => e.stopPropagation()} >
                         <EditButton label="toolbar.detail" />
                         <DoneButton sx={{ padding: '1px', fontSize: '.75rem' }} ></DoneButton>
+                        <FullOutStockCompleteButton />
                         <CancelButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                         <CheckButton />
                         <PickButton />
@@ -199,6 +201,32 @@
 }
 
 export default TaskList;
+
+
+const PublicTaskButton = ({ menuPubExce, setMenuPubExce }) => {
+    const record = useRecordContext();
+    const { selectedIds, onUnselectItems } = useListContext();
+    const notify = useNotify();
+    const redirect = useRedirect();
+    const pubClick = async () => {
+        onUnselectItems();
+        const { data: { code, data, msg } } = await request.post(`task/menual/exce/` + selectedIds);
+        if (code === 200) {
+            notify(msg);
+            refresh();
+        } else {
+            notify(msg);
+        }
+    }       
+
+    return (
+        <Button
+            onClick={pubClick}
+            label={"toolbar.publicWorking"}
+            startIcon={<PublicIcon />}
+        />
+    );
+}
 
 /**
  * 鐩樼偣
@@ -221,6 +249,7 @@
 
     return (record?.taskStatus == 199 && record?.taskType == 107 ? <ConfirmButton label={"toolbar.check"} startIcon={<GradingOutlinedIcon />} onConfirm={checkClick} /> : <></>)
 }
+
 
 /**鑷姩涓嬪彂浠诲姟**/
 const BulkAutoStartButton = ({ autoExce, setAutoExce }) => {
@@ -251,7 +280,7 @@
         }
     }
     return (
-        autoExce ? <Button label="toolbar.pause" onClick={pauseClick} startIcon={<PauseIcon />} /> : <></>
+        autoExce ? <Button label="toolbar.pausePub" onClick={pauseClick} startIcon={<PauseIcon />} /> : <></>
     )
 }
 
@@ -308,6 +337,42 @@
 }
 
 /**
+ * 鍏ㄧ増鍑哄簱瀹岀粨鎸夐挳锛�199鐘舵�侊級
+ * @returns 
+ */
+const FullOutStockCompleteButton = () => {
+    const record = useRecordContext();
+    const notify = useNotify();
+    const refresh = useRefresh();
+    
+    const clickComplete = () => {
+        completeFullOutStock(record)
+    };
+    
+    //鍏ㄧ増鍑哄簱瀹岀粨
+    const completeFullOutStock = async (row) => {
+        const { data: { code, data, msg } } = await request.post(`/task/complete/fullOutStock/` + row.id);
+        if (code === 200) {
+            notify(msg);
+            refresh();
+        } else {
+            notify(msg);
+        }
+    }
+    
+    return (
+        record?.taskStatus == 199 && record?.taskType == 101 ? 
+            <ConfirmButton 
+                label={"toolbar.complete"} 
+                color="primary" 
+                startIcon={<TaskAltIcon />} 
+                onConfirm={clickComplete} 
+            /> 
+            : <></>
+    )
+}
+
+/**
  * 鍙栨秷鎸夐挳
  * @returns 
  */
@@ -329,7 +394,7 @@
         }
     }
     return (
-        (record.taskStatus == 1 || record.taskStatus == 101) && (record.taskType == 1 || record.taskType == 101 || record.taskType == 10 || record.taskType == 107 || record.taskType == 103 || record.taskType == 11) ?
+        (record.taskStatus == 1 || record.taskStatus == 101 || record.taskStatus == 199) && (record.taskType == 1 || record.taskType == 101 || record.taskType == 10 || record.taskType == 107 || record.taskType == 103 || record.taskType == 11) ?
             <ConfirmButton
                 onConfirm={clickCancel}
                 startIcon={<CancelIcon />}

--
Gitblit v1.9.1