From d7bb8c43b17253b46c6a466cff5545e8b4bcaad3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 10 六月 2025 11:10:46 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop

---
 rsf-admin/src/page/orders/outStock/OutStockPublic.jsx |   73 ++++++++++++++++++++++++++----------
 1 files changed, 53 insertions(+), 20 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
index 5b60940..b3b7062 100644
--- a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -1,4 +1,4 @@
-import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText, Tooltip } from "@mui/material";
+import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText, Tooltip, IconButton } from "@mui/material";
 import React, { useState, useRef, useEffect, useMemo } from "react";
 import {
     List,
@@ -13,7 +13,6 @@
     ExportButton,
     BulkDeleteButton,
     WrapperField,
-    Toolbar,
     useRecordContext,
     useTranslate,
     useNotify,
@@ -36,14 +35,17 @@
     SimpleForm,
     required,
     Form,
+    useRefresh,
+    useRedirect,
 } from 'react-admin';
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
 import { styled } from '@mui/material/styles';
-import { DataGrid, useGridApiContext } from '@mui/x-data-grid';
+import { DataGrid, useGridApiContext, GridActionsCellItem, useGridApiRef } from '@mui/x-data-grid';
 import request from '@/utils/request';
 import ConfirmationNumberOutlinedIcon from '@mui/icons-material/ConfirmationNumberOutlined';
 import CloseSharpIcon from '@mui/icons-material/CloseSharp';
 import ConfirmButton from '../../components/ConfirmButton';
+import { Delete, Edit, Add } from '@mui/icons-material';
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
@@ -60,8 +62,8 @@
 
 const OutStockPublic = (props) => {
     const { record, open, setOpen } = props;
-    const dataGridRef = useRef(null);
     const notify = useNotify();
+    const gridRef = useGridApiRef();
     const [rows, setRows] = useState({});
     const translate = useTranslate();
     const [selectedIds, setSelectedIds] = React.useState([]);
@@ -91,11 +93,14 @@
             [name]: value
         }));
     };
+
+    gridRef.current = useGridApiRef();
+
     return (
         <>
             <Box>
                 <Grid sx={{ display: "flex" }} container rowSpacing={2} columnSpacing={2}>
-                    <Grid item xl={6} gap={2} >
+                    <Grid item xl={5.7} gap={2} >
                         <Card>
                             <Form>
                                 <ReferenceInput
@@ -124,9 +129,7 @@
                                 empty={false}
                                 filter={{ asnId: record?.id, deleted: 0 }}
                                 sort={{ field: "create_time", order: "desc" }}
-                                actions={(
-                                    <SelectColumnsButton preferenceKey='outStock' />
-                                )}
+                                actions={false}
                                 perPage={DEFAULT_ITEM_PAGE_SIZE}
                             >
                                 <LinearProgress
@@ -152,12 +155,13 @@
                             </List>
                         </Card>
                     </Grid>
-                    <Grid item xl={6} gap={2}>
+                    <Grid item xl={6.3} gap={2}>
                         <Card>
-                            <Box>
+                            <Box sx={{ height: 500, width: '100%' }}>
                                 <DataGrid
                                     rows={rows}
                                     columns={columns}
+                                    apiRef={gridRef}
                                     initialState={{
                                         pagination: {
                                             paginationModel: {
@@ -165,17 +169,16 @@
                                             },
                                         },
                                     }}
-                                    ref={dataGridRef}
                                     checkboxSelection
+                                    pageSizeOptions={[15, 25, 35, 45]}
                                     onRowSelectionModelChange={(ids) => {
                                         setSelectedIds(ids)
                                     }}
-                                    pageSizeOptions={[15, 25, 35, 45]}
                                 />
                             </Box>
                             <Box sx={{ textAlign: 'center' }}>
                                 <CloseButton setOpen={setOpen} />
-                                <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} />
+                                <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} gridRef={gridRef} />
                             </Box>
                         </Card>
                     </Grid>
@@ -187,12 +190,20 @@
 
 
 //鎻愪氦鎸夐挳
-const SubmitButton = ({ selectedIds, setSelectedIds }) => {
-    const submit = () => {
-        if (selectedIds.length < 1) { return }
-        console.log(selectedIds);
+const SubmitButton = ({ selectedIds, setSelectedIds, gridRef }) => {
+    const notify = useNotify();
+    const refresh = useRefresh();
+    const redirect = useRedirect();    
+    const submit = async () => {
+        const items = gridRef.current?.getSortedRows();
+        const { data: { code, data, msg } } = await request.post('/outStock/generate/tasks', { items });
+        if (code == 200) {
+            refresh();
+            redirect("/task")
+        } else {
+            notify(msg);
+        }
     }
-
     return (
         <ConfirmButton
             label="toolbar.confirm"
@@ -220,14 +231,13 @@
     )
 }
 
-
 const columns = [
     { field: 'id', headerName: 'ID', width: 40 },
     { field: 'locCode', headerName: '搴撲綅', width: 110 },
     { field: 'barcode', headerName: '瀹瑰櫒', width: 120 },
     { field: 'batch', headerName: '鎵规', width: 90 },
     { field: 'unit', headerName: '鍗曚綅', width: 90 },
-    { field: 'workQty', headerName: '鏈鍑哄簱鏁伴噺', width: 110 },
+    { field: 'outQty', headerName: '鏈鍑哄簱鏁伴噺', width: 110 },
     {
         field: 'siteNo',
         headerName: '鍑哄簱鍙�',
@@ -241,8 +251,31 @@
             <OutStockSite {...params} />
         ),
     },
+    {
+        field: 'actions',
+        type: 'actions',
+        headerName: '鎿嶄綔',
+        with: 120,
+        getActions: (params) => [
+            <GridActionsCellItem
+                icon={<Delete />}
+                label="Delete"
+                onClick={() => handleDelete(params.row.id)}
+            />,
+        ]
+    },
 ]
 
+/**
+ * 鍒犻櫎浜嬩欢
+ * @param {*} params 
+ */
+const handleDelete = (params) => {
+    console.log(params);
+
+}
+
+
 const OutStockSiteNo = React.memo(function OutStockSiteNo(props) {
     const { value } = props;
     if (!value) {

--
Gitblit v1.9.1