rsf-admin/src/i18n/en.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
rsf-admin/src/i18n/zh.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
rsf-admin/src/page/orders/outStock/OutOrderList.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
rsf-admin/src/page/orders/outStock/OutStockPublic.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
rsf-admin/src/i18n/en.js
@@ -1168,7 +1168,7 @@ recover: "recover", createWave: "Create Wave", order: 'Orders', modiftySite: 'Modify SiteNo', }, request: { error: { rsf-admin/src/i18n/zh.js
@@ -1171,6 +1171,7 @@ publicWorking: '下发执行', createWave: "生成波次", recover: "继续收货", modiftySite: '修改库口', }, request: { error: { rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -298,6 +298,6 @@ } return ( record.exceStatus == 10 ? <ConfirmButton label={"toolbar.publicWorking"} startIcon={<AddTaskIcon />} onConfirm={taskEvent} size={"small"} /> : <></> record.workQty < record.anfme ? <ConfirmButton label={"toolbar.publicWorking"} startIcon={<AddTaskIcon />} onConfirm={taskEvent} size={"small"} /> : <></> ) } rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -1,4 +1,4 @@ import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText, Tooltip, IconButton } from "@mui/material"; import { Box, Card, Grid, LinearProgress, Select, MenuItem, ListItemText } from "@mui/material"; import React, { useState, useRef, useEffect, useMemo } from "react"; import { List, @@ -46,6 +46,7 @@ import CloseSharpIcon from '@mui/icons-material/CloseSharp'; import ConfirmButton from '../../components/ConfirmButton'; import { Delete, Edit, Add } from '@mui/icons-material'; import OutStockSiteDialog from "./OutStockSiteDialog"; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -70,9 +71,31 @@ const [formData, setFormData] = useState({ orderId: record?.id }); const [dialog, setDialog] = useState(false); const [selectedValue, setSelectedValue] = useState({}); const handleClickOpen = () => { setDialog(true); }; const handleClose = (value) => { setDialog(false); setSelectedValue(value); console.log(rows); console.log(value); const newRows = rows.map(item => { return { ...item, siteNo: value?.site } }) setRows(newRows); }; useEffect(() => { getWaveRule() }, [formData, open]) const getWaveRule = async () => { if (formData.waveId == null && formData.waveId == undefined) { @@ -157,21 +180,36 @@ <Grid item xl={6.3} gap={2}> <Card> <Box sx={{ height: 500, width: '100%' }}> <PreviewTable rows={rows} gridRef={gridRef} setRows={setRows} record={record}/> <PreviewTable rows={rows} gridRef={gridRef} setRows={setRows} record={record} selectedIds={selectedIds} setDialog={setDialog} setSelectedIds={setSelectedIds} /> </Box> <Box sx={{ textAlign: 'center' }}> <CloseButton setOpen={setOpen} /> <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} gridRef={gridRef} record={record}/> <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} gridRef={gridRef} record={record} /> </Box> </Card> </Grid> </Grid> <Grid> <OutStockSiteDialog selectedValue={selectedValue} open={dialog} onClose={handleClose} /> </Grid> </Box> </> ); } const PreviewTable = ({ rows, gridRef, setRows, record }) => { const PreviewTable = ({ rows, gridRef, setRows, record, selectedIds, setSelectedIds, setDialog }) => { gridRef.current = useGridApiRef(); const columns = [ @@ -214,8 +252,8 @@ * @param {*} params */ const handleDelete = (params, rows, setRows) => { const outRows = rows.filter(row => { return row.id !== params.id const outRows = rows.filter(row => { return row.id !== params.id }) setRows(outRows) } @@ -233,6 +271,28 @@ </Box> ); }); const CustomToolBar = () => { const selectSiteNo = () => { setDialog(true) } return ( selectedIds.length > 0 ? <Box sx={{ p: 1, display: 'flex', justifyContent: 'flex-end', borderTop: '1px solid rgba(224, 224, 224, 1)' }}> <Button onClick={selectSiteNo} variant="outlined" label="toolbar.modiftySite" size="medium" sx={{ mr: 1 }} /> </Box> : <></> ); } const OutStockSite = (params) => { const { id, field, siteNo, row: { staNos } } = params; @@ -288,6 +348,7 @@ <DataGrid rows={rows} columns={columns} slots={{ toolbar: CustomToolBar }} apiRef={gridRef} initialState={{ pagination: { @@ -305,6 +366,8 @@ ) } //提交按钮 const SubmitButton = ({ selectedIds, setSelectedIds, gridRef, record }) => { const notify = useNotify(); rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
@@ -271,5 +271,14 @@ return outStockService.genOutStockTask(taskParams, getLoginUserId(), Long.parseLong(params.get("outId").toString())); } /** * 获取出库站点 * @return */ @GetMapping("/outStock/tasks/sites") @ApiOperation("获取出库库口") @PreAuthorize("hasAuthority('manager:outStock:list')") public R getSiteNos() { return outStockService.getSiteNos(); } } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java
@@ -24,4 +24,6 @@ R getOrderOutTaskItem(OrderOutTaskParam param); R genOutStockTask(List<OutStockToTaskParams> params, Long loginUserId, Long outId); R getSiteNos(); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -510,6 +510,20 @@ return R.ok(); } /** * 获取出库站点 * @return */ @Override public R getSiteNos() { List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_MERGE_OUT.type, TaskType.TASK_TYPE_OUT.type, TaskType.TASK_TYPE_MERGE_OUT.type, TaskType.TASK_TYPE_PICK_AGAIN_OUT.type); List<DeviceSite> sites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>().in(DeviceSite::getType, list).groupBy(DeviceSite::getSite)); return R.ok(sites); } private List<LocItem> getEfficiencyFirstItemList(AsnOrderItem asnOrderItem) { LambdaQueryWrapper<LocItem> locItemQueryWrapper = new LambdaQueryWrapper<>();