From 952f6d21370d9d142f6ecbe11c179865d482f08f Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 09 六月 2025 14:04:25 +0800 Subject: [PATCH] 下发执行功能优化 --- rsf-admin/src/page/orders/outStock/OutStockPublic.jsx | 162 +++++++++++++++++++++++++++++++++++++++++++----------- rsf-admin/src/page/orders/outStock/OutOrderList.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java | 4 + 3 files changed, 133 insertions(+), 35 deletions(-) diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx index 45c89df..fb818a2 100644 --- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx +++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx @@ -197,7 +197,7 @@ drawerVal={drawerVal} setDrawerVal={setDrawerVal} > - <OutStockPublic record={select} open={drawerVal}/> + <OutStockPublic record={select} open={drawerVal} setOpen={setDrawerVal}/> </PageEditDrawer> </Box > ) diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx index fac542a..9db27fa 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 } from "@mui/material"; +import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText, Tooltip } from "@mui/material"; import React, { useState, useRef, useEffect, useMemo } from "react"; import { List, @@ -39,11 +39,11 @@ } 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 } from '@mui/x-data-grid'; +import { DataGrid, useGridApiContext } from '@mui/x-data-grid'; import request from '@/utils/request'; -import DictSelect from "../../components/DictSelect"; import ConfirmationNumberOutlinedIcon from '@mui/icons-material/ConfirmationNumberOutlined'; import CloseSharpIcon from '@mui/icons-material/CloseSharp'; +import ConfirmButton from '../../components/ConfirmButton'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -59,9 +59,12 @@ const OutStockPublic = (props) => { - const { record, open } = props; + const { record, open, setOpen } = props; + const dataGridRef = useRef(null); const notify = useNotify(); + const [rows, setRows] = useState({}); const translate = useTranslate(); + const [selectedIds, setSelectedIds] = React.useState([]); const [formData, setFormData] = useState({ orderId: record?.id }); @@ -73,11 +76,12 @@ if (formData.waveId == null && formData.waveId == undefined) { return } - const res = await request.post('/outStock/order/getOutTaskItems', { ...formData }); - if (res?.data?.code === 200) { - setRows(res.data.data.records) + const { data: { code, data, msg } } = await request.post('/outStock/order/getOutTaskItems', { ...formData }); + + if (code === 200) { + setRows(data) } else { - notify(res.data.msg); + notify(msg); } } @@ -87,7 +91,6 @@ [name]: value })); }; - return ( <> <Box> @@ -107,13 +110,6 @@ /> </ReferenceInput> </Form> - {/* <DictSelect - label={translate("table.field.waveRule.type")} - onChange={(e) => handleChange(e.target.value, 'type')} - value={formData.type} - dictTypeCode="sys_wave_rule_code" - required - /> */} <List resource="outStockItem" storeKey='outStockItem' @@ -169,13 +165,17 @@ }, }, }} + ref={dataGridRef} + checkboxSelection + onRowSelectionModelChange={(ids) => { + setSelectedIds(ids) + }} pageSizeOptions={[15, 25, 35, 45]} - disableRowSelectionOnClick /> </Box> <Box sx={{ textAlign: 'center' }}> - <Button label="toolbar.close" variant="outlined" size="medium" startIcon={<CloseSharpIcon />} sx={{ margin: '3.5em' }} /> - <Button label="toolbar.confirm" variant="contained" size="medium" startIcon={<ConfirmationNumberOutlinedIcon />} /> + <CloseButton setOpen={setOpen} /> + <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} /> </Box> </Card> </Grid> @@ -186,29 +186,125 @@ } +//鎻愪氦鎸夐挳 +const SubmitButton = ({ selectedIds, setSelectedIds }) => { + const submit = () => { + if (selectedIds.length < 1) {return} + console.log(selectedIds); + } -const rows = [ - { id: 1, locCode: '03-02-1-2-1', container: 'Snow', batch: 'Jon', curQty: 14 }, - { id: 2, locCode: '03-02-1-2-1', container: 'Lannister', batch: 'Cersei', curQty: 31 }, - { id: 3, locCode: '03-02-1-2-1', container: 'Lannister', batch: 'Jaime', curQty: 31 }, - { id: 4, locCode: '03-02-1-2-1', container: 'Stark', batch: 'Arya', curQty: 11 }, - { id: 5, locCode: '03-02-1-2-1', container: 'Targaryen', batch: 'Daenerys', curQty: null }, - { id: 6, locCode: '03-02-1-2-1', container: 'Melisandre', batch: null, curQty: 150 }, - { id: 7, locCode: '03-02-1-2-1', container: 'Clifford', batch: 'Ferrara', curQty: 44 }, - { id: 8, locCode: '03-02-1-2-1', container: 'Frances', batch: 'Rossini', curQty: 36 }, - { id: 9, locCode: '03-02-1-2-1', container: 'Roxie', batch: 'Harvey', curQty: 65 }, -] + return ( + <ConfirmButton + label="toolbar.confirm" + variant="contained" + size="medium" + onConfirm={submit} + startIcon={<ConfirmationNumberOutlinedIcon />} + /> + ) +} + +//鍏抽棴鎸夐挳 +const CloseButton = ({ setOpen }) => { + const close = () => { + setOpen(false) + } + return ( + <Button + label="toolbar.close" + variant="outlined" + size="medium" + onClick={close} + startIcon={<CloseSharpIcon />} + sx={{ margin: '3.5em' }} /> + ) +} + const columns = [ { field: 'id', headerName: 'ID', width: 40 }, { field: 'locCode', headerName: '搴撲綅', width: 110 }, - { field: 'container', headerName: '瀹瑰櫒', width: 120 }, + { field: 'barcode', headerName: '瀹瑰櫒', width: 120 }, { field: 'batch', headerName: '鎵规', width: 90 }, { field: 'unit', headerName: '鍗曚綅', width: 90 }, - { field: 'curQty', headerName: '鏈鍑哄簱鏁伴噺', width: 110 }, - { field: 'siteNo', headerName: '鍑哄簱鍙�', width: 90 }, `` + { field: 'workQty', headerName: '鏈鍑哄簱鏁伴噺', width: 110 }, + { + field: 'staNo', + headerName: '鍑哄簱鍙�', + width: 90, + type: 'singleSelect', + editable: true, + renderCell: (params) => ( + <OutStockSiteNo value={params.value} /> + ), + renderEditCell: (params) => ( + <OutStockSite {...params} /> + ), + }, ] +const OutStockSiteNo = React.memo(function OutStockSiteNo(props) { + const { value } = props; + if (!value) { + return null; + } + return ( + <Box + sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }} + > + <span>{value}</span> + </Box> + ); +}); + + +const OutStockSite = (params) => { + const { id, field, siteNo, row: { staNos } } = params; + const apiRef = useGridApiContext(); + const handleChange = async (event) => { + await apiRef.current.setEditCellValue( + { id, field, value: event.target.value }, + event, + ); + apiRef.current.stopCellEditMode({ id, field }); + }; + + const handleClose = (event, reason) => { + if (reason === 'backdropClick') { + apiRef.current.stopCellEditMode({ id, field }); + } + }; + + return ( + <Select + value={siteNo} + onChange={handleChange} + MenuProps={{ + onClose: handleClose, + }} + sx={{ + height: '100%', + '& .MuiSelect-select': { + display: 'flex', + alignItems: 'center', + pl: 1, + }, + }} + autoFocus + fullWidth + open + > + {staNos.map((option) => { + return ( + <MenuItem key={option} value={option.staNo}> + <ListItemText sx={{ overflow: 'hidden' }} primary={option.staNo} /> + </MenuItem> + ); + })} + </Select > + ) +} + export default OutStockPublic; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java index 372204d..1bc5980 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/dto/OrderOutItemDto.java @@ -2,6 +2,7 @@ import com.vincent.rsf.server.manager.entity.LocItem; import com.vincent.rsf.server.manager.utils.Synchro; +import io.swagger.annotations.ApiOperation; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Delegate; @@ -12,6 +13,8 @@ @Data public class OrderOutItemDto { + + @Delegate(excludes = Synchro.class) private LocItem locItem; private List<staListDto> staNos; @@ -21,7 +24,6 @@ private String staNo; private String staName; } - public void sync(Object source) { Synchro.Copy(source, this); -- Gitblit v1.9.1