skyouc
2025-03-28 d1890e154f4b8c3ea215189321c55cb3ad060c69
Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
3个文件已修改
178 ■■■■ 已修改文件
rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx 168 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx
@@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
import { Box, Card, CardContent, Grid, Typography, Tooltip, Paper, TableContainer, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';
import { Box, Card, CardContent, Grid, Typography, Button, TextField, Tooltip, Paper, TableContainer, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';
import {
    useTranslate,
    useRecordContext,
@@ -9,20 +9,24 @@
import * as Common from '@/utils/common'
import { styled } from "@mui/material/styles";
import request from '@/utils/request';
import debounce from 'lodash/debounce';
import { DataGrid } from '@mui/x-data-grid';
const AsnOrderPanel = () => {
    const record = useRecordContext();
    if (!record) return null;
    const translate = useTranslate();
    const notify = useNotify();
    const [rows, setRows] = useState([]);
    const [maktx, setMaktx] = useState('');
    const asnId = record.id;
    useEffect(() => {
        http();
    }, [asnId]);
        debouncedHttp({ maktx });
    }, [asnId, maktx]);
    const http = async () => {
        const res = await request.post('/asnOrderItem/page', { asnId });
    const http = async (parmas) => {
        const res = await request.post('/asnOrderItem/page', { ...parmas, asnId });
        if (res?.data?.code === 200) {
            setRows(res.data.data.records)
        } else {
@@ -30,6 +34,7 @@
        }
    }
    const debouncedHttp = useMemo(() => debounce(http, 300), []);
    const StyledTableRow = styled(TableRow)(({ theme }) => ({
        "& .MuiButtonBase-root.": {
@@ -49,130 +54,113 @@
    const columns = [
        {
            id: 'asnId',
            label: 'table.field.asnOrderItem.asnId',
            minWidth: 100,
            field: 'asnId',
            headerName: translate('table.field.asnOrderItem.asnId')
        },
        {
            id: 'asnCode',
            label: 'table.field.asnOrderItem.asnCode',
            minWidth: 100,
            field: 'asnCode',
            headerName: translate('table.field.asnOrderItem.asnCode')
        },
        {
            id: 'poDetlId',
            label: 'table.field.asnOrderItem.poDetlId',
            minWidth: 100,
            field: 'poDetlId',
            headerName: translate('table.field.asnOrderItem.poDetlId')
        },
        {
            id: 'poDetlCode',
            label: 'table.field.asnOrderItem.poDetlCode',
            minWidth: 100,
            field: 'poDetlCode',
            headerName: translate('table.field.asnOrderItem.poDetlCode')
        },
        {
            id: 'matnrId',
            label: 'table.field.asnOrderItem.matnrId',
            minWidth: 100,
            field: 'matnrId',
            headerName: translate('table.field.asnOrderItem.matnrId')
        },
        {
            id: 'maktx',
            label: 'table.field.asnOrderItem.maktx',
            minWidth: 100,
            field: 'maktx',
            headerName: translate('table.field.asnOrderItem.maktx')
        },
        {
            id: 'anfme',
            label: 'table.field.asnOrderItem.anfme',
            minWidth: 100,
            field: 'anfme',
            headerName: translate('table.field.asnOrderItem.anfme')
        },
        {
            id: 'stockUnit',
            label: 'table.field.asnOrderItem.stockUnit',
            minWidth: 100,
            field: 'stockUnit',
            headerName: translate('table.field.asnOrderItem.stockUnit')
        },
        {
            id: 'purQty',
            label: 'table.field.asnOrderItem.purQty',
            minWidth: 100,
            field: 'purQty',
            headerName: translate('table.field.asnOrderItem.purQty')
        },
        {
            id: 'purUnit',
            label: 'table.field.asnOrderItem.purUnit',
            minWidth: 100,
            field: 'purUnit',
            headerName: translate('table.field.asnOrderItem.purUnit')
        },
        {
            id: 'qty',
            label: 'table.field.asnOrderItem.qty',
            minWidth: 100,
            field: 'qty',
            headerName: translate('table.field.asnOrderItem.qty')
        },
        {
            id: 'splrCode',
            label: 'table.field.asnOrderItem.splrCode',
            minWidth: 100,
            field: 'splrCode',
            headerName: translate('table.field.asnOrderItem.splrCode')
        },
        {
            id: 'splrName',
            label: 'table.field.asnOrderItem.splrName',
            minWidth: 100,
            field: 'splrName',
            headerName: translate('table.field.asnOrderItem.splrName')
        },
        {
            id: 'qrcode',
            label: 'table.field.asnOrderItem.qrcode',
            minWidth: 100,
            field: 'barcode',
            headerName: translate('table.field.asnOrderItem.barcode')
        },
        {
            id: 'barcode',
            label: 'table.field.asnOrderItem.barcode',
            minWidth: 100,
        },
        {
            id: 'packName',
            label: 'table.field.asnOrderItem.packName',
            minWidth: 100,
            field: 'packName',
            headerName: translate('table.field.asnOrderItem.packName')
        }]
    const [selectedRows, setSelectedRows] = useState([]);
    const handleSelectionChange = (ids) => {
        setSelectedRows(ids)
    };
    const maktxChange = (value) => {
        setMaktx(value)
    }
    const wakbarcode = () => {
    }
    const wakprint = () => {
    }
    return (
        <Box sx={{
            position: 'relative',
            padding: '5px 10px'
        }}>
            <TableContainer component={Paper} >
                <Table size="small" >
                    <TableHead>
                        <StyledTableRow key={'head'}>
                            {columns.map((column, idx) => {
                                const value = column.label;
                                return (
                                    <>
                                        <StyledTableCell
                                            key={column.id}
                                            align={column.align || "left"}
                                        // style={{ paddingLeft: idx === 0 && (depth * 16 + 16) }}
                                        >
                                            {column.format ? column.format(value) : translate(value)}
                                        </StyledTableCell>
                                    </>
                                );
                            })}
                        </StyledTableRow>
                    </TableHead>
            <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '4px', alignItems: 'center' }}>
                <TextField value={maktx} onChange={(e) => maktxChange(e.target.value)} label="搜索物料" variant="outlined" sx={{ width: '300px' }} />
                    <TableBody>
                        {rows.map((row) => (
                            <StyledTableRow key={row.id + Math.random()}>
                                {columns.map((column) => (
                                    <StyledTableCell key={column.id} >
                                        {row[column.id]}
                                    </StyledTableCell>
                                ))}
                            </StyledTableRow>
                        ))}
                <div style={{ display: 'flex', gap: '10px' }}>
                    <Button variant="contained" onClick={wakbarcode}>生成条码</Button>
                    <Button variant="contained" onClick={wakprint}>打印</Button>
                </div>
            </div>
                    </TableBody>
                </Table>
            </TableContainer>
        </Box>
            <DataGrid
                size="small"
                rows={rows}
                columns={columns}
                checkboxSelection
                onRowSelectionModelChange={handleSelectionChange}
                selectionModel={selectedRows}
                disableColumnMenu={true}
                disableColumnSorting
                disableMultipleColumnsSorting
            />
        </Box >
    );
};
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
@@ -77,7 +77,6 @@
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItem:update')")
    @OperationLog("Update ASN单据")
    @PostMapping("/asnOrderItem/update")
@@ -135,7 +134,12 @@
        return asnOrderItemService.generateBarcode(orders);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItem:list')")
    @ApiOperation("获取订单物料明细")
    @GetMapping("/asnOrderItem/trackCode/{code}")
    public R getItemByTrackCode(@PathVariable String code) {
        return R.ok(asnOrderItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code)));
    }
    /**
     * ASN单据明细导入
     * @param file
rsf-server/src/main/resources/mapper/manager/PurchaseMapper.xml
@@ -6,7 +6,7 @@
        SELECT
            id,
            purchase_id,
            erp_item_id,
            plat_item_id,
            matnr_code,
            matnr_name,
            unit,