verou
2025-03-29 1b07a3f11fd14d1a3c4b755021a28737ff4cdc75
fix:通知单新增字段
7个文件已修改
366 ■■■■■ 已修改文件
rsf-admin/src/i18n/zh.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrder/AsnOrderList.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/waitPakin/WaitPakinPanel.jsx 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/waitPakinItemLog/WaitPakinItemLogList.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/waitPakinLog/WaitPakinLogList.jsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/waitPakinLog/WaitPakinLogPanel.jsx 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js
@@ -150,10 +150,10 @@
        fieldsItem: '扩展字段明细',
        warehouseAreasItem: '库区库存信息',
        deviceSite: '站点管理',
        waitPakin: '组托信息',
        waitPakinItem: '组托信息明细',
        waitPakinLog: '组托历史',
        waitPakinItemLog: '组托历史明细',
        waitPakin: '组拖通知档',
        waitPakinItem: '组拖档明细',
        waitPakinLog: '组拖历史档',
        waitPakinItemLog: '组拖历史档明细',
    },
    table: {
        field: {
rsf-admin/src/page/asnOrder/AsnOrderList.jsx
@@ -147,8 +147,8 @@
          <TextField source="code" label="table.field.asnOrder.code" />
          <TextField source="poCode" label="table.field.asnOrder.poCode" />
          <NumberField source="poId" label="table.field.asnOrder.poId" />
          <TextField source="type" label="table.field.asnOrder.type" />
          <TextField source="wkType" label="table.field.asnOrder.wkType" />
          <TextField source="type$" label="table.field.asnOrder.type" />
          <TextField source="wkType$" label="table.field.asnOrder.wkType" />
          <NumberField source="anfme" label="table.field.asnOrder.anfme" />
          <NumberField source="qty" label="table.field.asnOrder.qty" />
          <TextField source="logisNo" label="table.field.asnOrder.logisNo" />
rsf-admin/src/page/asnOrderLog/AsnOrderLogPanel.jsx
@@ -81,6 +81,10 @@
            headerName: translate('table.field.asnOrderItemLog.qty')
        },
        {
            field: 'splrBatch',
            headerName: translate('table.field.asnOrderItem.splrBatch')
        },
        {
            field: 'splrCode',
            headerName: translate('table.field.asnOrderItemLog.splrCode')
        },
@@ -93,6 +97,10 @@
            headerName: translate('table.field.asnOrderItemLog.barcode')
        },
        {
            field: 'prodTime',
            headerName: translate('table.field.asnOrderItem.prodTime')
        },
        {
            field: 'packName',
            headerName: translate('table.field.asnOrderItemLog.packName')
        },
rsf-admin/src/page/waitPakin/WaitPakinPanel.jsx
@@ -1,86 +1,117 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
import { Box, Card, CardContent, Grid, Typography, Tooltip } 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,
    useNotify,
    useRefresh,
    useListContext,
} from 'react-admin';
import PanelTypography from "../components/PanelTypography";
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 WaitPakinPanel = () => {
    const record = useRecordContext();
    if (!record) return null;
    const translate = useTranslate();
    return (
        <>
            <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
                <CardContent>
                    <Grid container spacing={2}>
                        <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
                            <Typography variant="h6" gutterBottom align="left" sx={{
                                maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
                                whiteSpace: 'nowrap',
                                overflow: 'hidden',
                                textOverflow: 'ellipsis',
                            }}>
                                {Common.camelToPascalWithSpaces(translate('table.field.waitPakin.id'))}: {record.id}
                            </Typography>
                            {/*  inherit, primary, secondary, textPrimary, textSecondary, error */}
                            <Typography variant="h6" gutterBottom align="right" >
                                ID: {record.id}
                            </Typography>
                        </Grid>
                    </Grid>
                    <Grid container spacing={2}>
                        <Grid item xs={12} container alignContent="flex-end">
                            <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
                                {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
                            </Typography>
                        </Grid>
                    </Grid>
                    <Box height={20}>&nbsp;</Box>
                    <Grid container spacing={2}>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakin.code"
                                property={record.code}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakin.ansId"
                                property={record.ansId}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakin.asnCode"
                                property={record.asnCode}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakin.barcode"
                                property={record.barcode}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakin.anfme"
                                property={record.anfme}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakin.ioStatus"
                                property={record.ioStatus$}
                            />
                        </Grid>
    const notify = useNotify();
    const [rows, setRows] = useState([]);
    const [maktx, setMaktx] = useState('');
    const pakinId = record.id;
                    </Grid>
                </CardContent>
            </Card >
        </>
    useEffect(() => {
        debouncedHttp({ maktx });
    }, [pakinId, maktx]);
    const http = async (parmas) => {
        const res = await request.post('/waitPakinItem/page', { ...parmas, pakinId });
        if (res?.data?.code === 200) {
            setRows(res.data.data.records)
        } else {
            notify(res.data.msg);
        }
    }
    const debouncedHttp = useMemo(() => debounce(http, 300), []);
    const columns = [
        {
            field: 'pakinId',
            headerName: translate('table.field.waitPakinItem.pakinId')
        },
        {
            field: 'maktx',
            headerName: translate('table.field.waitPakinItem.maktx'),
            width: 300
        },
        {
            field: 'matnrId',
            headerName: translate('table.field.waitPakinItem.matnrId')
        },
        {
            field: 'matnrCode',
            headerName: translate('table.field.waitPakinItem.matnrCode')
        },
        {
            field: 'anfme',
            headerName: translate('table.field.waitPakinItem.anfme')
        },
        {
            field: 'workQty',
            headerName: translate('table.field.waitPakinItem.workQty')
        },
        {
            field: 'unit',
            headerName: translate('table.field.waitPakinItem.unit')
        },
        {
            field: 'fieldsIndex',
            headerName: translate('table.field.waitPakinItem.fieldsIndex')
        },
        {
            field: 'qty',
            headerName: translate('table.field.waitPakinItem.qty')
        },
        {
            field: 'batch',
            headerName: translate('table.field.waitPakinItem.batch')
        },
    ]
    const maktxChange = (value) => {
        setMaktx(value)
    }
    return (
        <Box sx={{
            position: 'relative',
            padding: '5px 10px'
        }}>
            <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' }} />
                <div style={{ display: 'flex', gap: '10px' }}>
                </div>
            </div>
            <DataGrid
                size="small"
                rows={rows}
                columns={columns}
                disableRowSelectionOnClick
                disableColumnMenu={true}
                disableColumnSorting
                disableMultipleColumnsSorting
            />
        </Box >
    );
};
rsf-admin/src/page/waitPakinItemLog/WaitPakinItemLogList.jsx
@@ -60,8 +60,6 @@
const filters = [
    <SearchInput source="condition" alwaysOn />,
    <DateInput label='common.time.after' source="timeStart" alwaysOn />,
    <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
    <ReferenceInput source="pakinId" label="table.field.waitPakinItemLog.pakinId" reference="waitPakin">
        <AutocompleteInput label="table.field.waitPakinItemLog.pakinId" optionText="id" filterToQuery={(val) => ({ id: val })} />
@@ -110,7 +108,7 @@
                        theme.transitions.create(['all'], {
                            duration: theme.transitions.duration.enteringScreen,
                        }),
                    marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                    marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                }}
                title={"menu.waitPakinItemLog"}
                empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
@@ -130,8 +128,6 @@
                    preferenceKey='waitPakinItemLog'
                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                    rowClick={(id, resource, record) => false}
                    expand={() => <WaitPakinItemLogPanel />}
                    expandSingle={true}
                    omit={['id', 'createTime', 'createBy', 'memo']}
                >
                    <NumberField source="id" />
rsf-admin/src/page/waitPakinLog/WaitPakinLogList.jsx
@@ -60,8 +60,6 @@
const filters = [
    <SearchInput source="condition" alwaysOn />,
    <DateInput label='common.time.after' source="timeStart" alwaysOn />,
    <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
    <NumberInput source="pakinId" label="table.field.waitPakinLog.pakinId" />,
    <TextInput source="code" label="table.field.waitPakinLog.code" />,
@@ -70,7 +68,7 @@
    <SelectInput source="ioStatus" label="table.field.waitPakinLog.ioStatus"
        choices={[
            { id: 0, name: '待入库' },
            { id:  1, name: ' 入库中' },
            { id: 1, name: ' 入库中' },
        ]}
    />,
@@ -101,7 +99,7 @@
                        theme.transitions.create(['all'], {
                            duration: theme.transitions.duration.enteringScreen,
                        }),
                    marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                    marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
                }}
                title={"menu.waitPakinLog"}
                empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
@@ -110,7 +108,7 @@
                actions={(
                    <TopToolbar>
                        <FilterButton />
                        <MyCreateButton onClick={() => { setCreateDialog(true) }} />
                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
                        <SelectColumnsButton preferenceKey='waitPakinLog' />
                        <MyExportButton />
                    </TopToolbar>
@@ -143,7 +141,7 @@
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                    <TextField source="memo" label="common.field.memo" sortable={false} />
                    <WrapperField cellClassName="opt" label="common.field.opt">
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        {/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */}
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                    </WrapperField>
                </StyledDatagrid>
rsf-admin/src/page/waitPakinLog/WaitPakinLogPanel.jsx
@@ -1,80 +1,111 @@
import React, { useState, useRef, useEffect, useMemo } from "react";
import { Box, Card, CardContent, Grid, Typography, Tooltip } 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,
    useNotify,
    useRefresh,
    useListContext,
} from 'react-admin';
import PanelTypography from "../components/PanelTypography";
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 WaitPakinLogPanel = () => {
    const record = useRecordContext();
    if (!record) return null;
    const translate = useTranslate();
    return (
        <>
            <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
                <CardContent>
                    <Grid container spacing={2}>
                        <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
                            <Typography variant="h6" gutterBottom align="left" sx={{
                                maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
                                whiteSpace: 'nowrap',
                                overflow: 'hidden',
                                textOverflow: 'ellipsis',
                            }}>
                                {Common.camelToPascalWithSpaces(translate('table.field.waitPakinLog.id'))}: {record.id}
                            </Typography>
                            {/*  inherit, primary, secondary, textPrimary, textSecondary, error */}
                            <Typography variant="h6" gutterBottom align="right" >
                                ID: {record.id}
                            </Typography>
                        </Grid>
                    </Grid>
                    <Grid container spacing={2}>
                        <Grid item xs={12} container alignContent="flex-end">
                            <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
                                {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
                            </Typography>
                        </Grid>
                    </Grid>
                    <Box height={20}>&nbsp;</Box>
                    <Grid container spacing={2}>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakinLog.pakinId"
                                property={record.pakinId}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakinLog.code"
                                property={record.code}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakinLog.barcode"
                                property={record.barcode}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakinLog.anfme"
                                property={record.anfme}
                            />
                        </Grid>
                        <Grid item xs={6}>
                            <PanelTypography
                                title="table.field.waitPakinLog.ioStatus"
                                property={record.ioStatus$}
                            />
                        </Grid>
    const notify = useNotify();
    const [rows, setRows] = useState([]);
    const [maktx, setMaktx] = useState('');
    const pakinId = record.id;
                    </Grid>
                </CardContent>
            </Card >
        </>
    const http = async (parmas) => {
        const res = await request.post('/WaitPakinLog/page', { ...parmas, pakinId });
        if (res?.data?.code === 200) {
            setRows(res.data.data.records)
        } else {
            notify(res.data.msg);
        }
    }
    const debouncedHttp = useMemo(() => debounce(http, 300), []);
    const columns = [
        {
            field: 'pakinId',
            headerName: translate('table.field.waitPakinItem.pakinId')
        },
        {
            field: 'maktx',
            headerName: translate('table.field.waitPakinItem.maktx'),
            width: 300
        },
        {
            field: 'matnrId',
            headerName: translate('table.field.waitPakinItem.matnrId')
        },
        {
            field: 'matnrCode',
            headerName: translate('table.field.waitPakinItem.matnrCode')
        },
        {
            field: 'anfme',
            headerName: translate('table.field.waitPakinItem.anfme')
        },
        {
            field: 'workQty',
            headerName: translate('table.field.waitPakinItem.workQty')
        },
        {
            field: 'unit',
            headerName: translate('table.field.waitPakinItem.unit')
        },
        {
            field: 'fieldsIndex',
            headerName: translate('table.field.waitPakinItem.fieldsIndex')
        },
        {
            field: 'qty',
            headerName: translate('table.field.waitPakinItem.qty')
        },
        {
            field: 'batch',
            headerName: translate('table.field.waitPakinItem.batch')
        },
    ]
    const maktxChange = (value) => {
        setMaktx(value)
    }
    return (
        <Box sx={{
            position: 'relative',
            padding: '5px 10px'
        }}>
            <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' }} />
                <div style={{ display: 'flex', gap: '10px' }}>
                </div>
            </div>
            <DataGrid
                size="small"
                rows={rows}
                columns={columns}
                disableRowSelectionOnClick
                disableColumnMenu={true}
                disableColumnSorting
                disableMultipleColumnsSorting
            />
        </Box >
    );
};