import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; 
 | 
import { useNavigate } from 'react-router-dom'; 
 | 
import { 
 | 
    List, 
 | 
    DatagridConfigurable, 
 | 
    SearchInput, 
 | 
    TopToolbar, 
 | 
    SelectColumnsButton, 
 | 
    EditButton, 
 | 
    FilterButton, 
 | 
    CreateButton, 
 | 
    ExportButton, 
 | 
    BulkDeleteButton, 
 | 
    WrapperField, 
 | 
    useRecordContext, 
 | 
    useTranslate, 
 | 
    useNotify, 
 | 
    useListContext, 
 | 
    FunctionField, 
 | 
    TextField, 
 | 
    NumberField, 
 | 
    DateField, 
 | 
    useRefresh, 
 | 
    BooleanField, 
 | 
    ReferenceField, 
 | 
    TextInput, 
 | 
    Button, 
 | 
    DateTimeInput, 
 | 
    DateInput, 
 | 
    SelectInput, 
 | 
    NumberInput, 
 | 
    ReferenceInput, 
 | 
    ReferenceArrayInput, 
 | 
    AutocompleteInput, 
 | 
    DeleteButton, 
 | 
    useRedirect, 
 | 
} from 'react-admin'; 
 | 
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting.js'; 
 | 
import MyCreateButton from "../../components/MyCreateButton.jsx"; 
 | 
import MyExportButton from '../../components/MyExportButton.jsx'; 
 | 
import BillStatusField from '../../components/BillStatusField'; 
 | 
import { Box, Typography, Card, Stack, } from '@mui/material'; 
 | 
import PageEditDrawer from "../../components/PageEditDrawer"; 
 | 
import ConfirmButton from '../../components/ConfirmButton'; 
 | 
import AddTaskIcon from '@mui/icons-material/AddTask'; 
 | 
import TransferOrders from "./TransferOrders.jsx"; 
 | 
import ManualCreate from "./ManualCreate.jsx"; 
 | 
import { styled } from '@mui/material/styles'; 
 | 
import * as Common from '@/utils/common.js'; 
 | 
import request from '@/utils/request'; 
 | 
  
 | 
  
 | 
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ 
 | 
    '& .css-1vooibu-MuiSvgIcon-root': { 
 | 
        height: '.9em' 
 | 
    }, 
 | 
    '& .RaDatagrid-row': { 
 | 
        cursor: 'auto' 
 | 
    }, 
 | 
    '& .column-name': { 
 | 
    }, 
 | 
    '& .opt': { 
 | 
        width: 200 
 | 
    }, 
 | 
})); 
 | 
  
 | 
const filters = [ 
 | 
    <SearchInput source="condition" alwaysOn />, 
 | 
    <DateInput label='common.time.after' source="timeStart" alwaysOn />, 
 | 
    <DateInput label='common.time.before' source="timeEnd" alwaysOn />, 
 | 
    <TextInput source="code" label="table.field.transfer.code" />, 
 | 
    <NumberInput source="type" label="table.field.transfer.type" />, 
 | 
    <SelectInput source="source" label="table.field.transfer.source" 
 | 
        choices={[ 
 | 
            { id: 1, name: 'ERP系统' }, 
 | 
            { id: 2, name: 'WMS系统生成' }, 
 | 
            { id: 3, name: 'EXCEL导入 ' }, 
 | 
            { id: 4, name: 'QMS系统' }, 
 | 
        ]} 
 | 
    />, 
 | 
    <SelectInput source="exceStatus" label="table.field.transfer.exceStatus" 
 | 
        choices={[ 
 | 
            { id: 0, name: '未执行' }, 
 | 
            { id: 1, name: '执行中' }, 
 | 
            { id: 2, name: '执行完成' }, 
 | 
        ]} 
 | 
    />, 
 | 
    <NumberInput source="orgWareId" label="table.field.transfer.orgWareId" />, 
 | 
    <TextInput source="orgWareName" label="table.field.transfer.orgWareName" />, 
 | 
    <NumberInput source="tarWareId" label="table.field.transfer.tarWareId" />, 
 | 
    <TextInput source="tarWareName" label="table.field.transfer.tarWareName" />, 
 | 
    <NumberInput source="orgAreaId" label="table.field.transfer.orgAreaId" />, 
 | 
    <TextInput source="orgAreaName" label="table.field.transfer.orgAreaName" />, 
 | 
    <NumberInput source="tarAreaId" label="table.field.transfer.tarAreaId" />, 
 | 
    <TextInput source="tarAreaName" label="table.field.transfer.tarAreaName" />, 
 | 
    <TextInput label="common.field.memo" source="memo" />, 
 | 
    <SelectInput 
 | 
        label="common.field.status" 
 | 
        source="status" 
 | 
        choices={[ 
 | 
            { id: '1', name: 'common.enums.statusTrue' }, 
 | 
            { id: '0', name: 'common.enums.statusFalse' }, 
 | 
        ]} 
 | 
        resettable 
 | 
    />, 
 | 
] 
 | 
  
 | 
const TransferList = () => { 
 | 
    const translate = useTranslate(); 
 | 
    const [createDialog, setCreateDialog] = useState(false); 
 | 
    const [drawerVal, setDrawerVal] = useState(false); 
 | 
    const [select, setSelect] = useState({}); 
 | 
  
 | 
    return ( 
 | 
        <Box display="flex"> 
 | 
            <List 
 | 
                sx={{ 
 | 
                    flexGrow: 1, 
 | 
                    transition: (theme) => 
 | 
                        theme.transitions.create(['all'], { 
 | 
                            duration: theme.transitions.duration.enteringScreen, 
 | 
                        }), 
 | 
                    marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, 
 | 
                }} 
 | 
                title={"menu.transfer"} 
 | 
                empty={false} 
 | 
                filters={filters} 
 | 
                sort={{ field: "create_time", order: "desc" }} 
 | 
                actions={( 
 | 
                    <TopToolbar> 
 | 
                        <FilterButton /> 
 | 
                        <MyCreateButton onClick={() => { setCreateDialog(true) }} /> 
 | 
                        <SelectColumnsButton preferenceKey='transfer' /> 
 | 
                        <MyExportButton /> 
 | 
                    </TopToolbar> 
 | 
                )} 
 | 
                perPage={DEFAULT_PAGE_SIZE} 
 | 
            > 
 | 
                <StyledDatagrid 
 | 
                    preferenceKey='transfer' 
 | 
                    bulkActionButtons={false} 
 | 
                    rowClick={(id, resource, record) => false} 
 | 
                    expand={() => <TransferOrders />} 
 | 
                    expandSingle={true} 
 | 
                    omit={['id', 'createTime', 'createBy$', 'memo', 'orgWareId', 'tarWareId', 'orgAreaId', 'tarAreaId']} 
 | 
                > 
 | 
                    <NumberField source="id" /> 
 | 
                    <TextField source="code" label="table.field.transfer.code" /> 
 | 
                    <NumberField source="type$" label="table.field.transfer.type" /> 
 | 
                    <TextField source="source$" label="table.field.transfer.source" sortable={false} /> 
 | 
                    <NumberField source="orgWareId" label="table.field.transfer.orgWareId" /> 
 | 
                    <TextField source="orgWareName" label="table.field.transfer.orgWareName" /> 
 | 
                    <NumberField source="tarWareId" label="table.field.transfer.tarWareId" /> 
 | 
                    <TextField source="tarWareName" label="table.field.transfer.tarWareName" /> 
 | 
                    <NumberField source="orgAreaId" label="table.field.transfer.orgAreaId" /> 
 | 
                    <TextField source="orgAreaName" label="table.field.transfer.orgAreaName" /> 
 | 
                    <NumberField source="tarAreaId" label="table.field.transfer.tarAreaId" /> 
 | 
                    <TextField source="tarAreaName" label="table.field.transfer.tarAreaName" /> 
 | 
                    <BillStatusField source="exceStatus$" cellClassName="status" label="table.field.transfer.exceStatus" sortable={false} /> 
 | 
                    <TextField source="updateBy$" label="common.field.updateBy" /> 
 | 
                    <DateField source="updateTime" label="common.field.updateTime" showTime /> 
 | 
                    <TextField source="createBy$" label="common.field.createBy" /> 
 | 
                    <DateField source="createTime" label="common.field.createTime" showTime /> 
 | 
                    <TextField source="memo" label="common.field.memo" sortable={false} /> 
 | 
                    <WrapperField cellClassName="opt" label="common.field.opt"> 
 | 
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} label="toolbar.detail"/> 
 | 
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> 
 | 
                        <PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} setSelect={setSelect} /> 
 | 
                    </WrapperField> 
 | 
                </StyledDatagrid> 
 | 
            </List> 
 | 
            <PageEditDrawer 
 | 
                title={"toolbar.createTransfer"} 
 | 
                drawerVal={createDialog} 
 | 
                setDrawerVal={setCreateDialog} 
 | 
            > 
 | 
                <ManualCreate setOpen={setCreateDialog} /> 
 | 
            </PageEditDrawer> 
 | 
        </Box> 
 | 
    ) 
 | 
} 
 | 
  
 | 
export default TransferList; 
 | 
  
 | 
//下发执行 
 | 
const PublicButton = ({ setDrawerVal, setSelect }) => { 
 | 
    const record = useRecordContext(); 
 | 
    const refresh = useRefresh(); 
 | 
    const redirct = useRedirect(); 
 | 
    const taskEvent = async () => { 
 | 
        const { data: { code, data, msg } } = await request.post(`/transfer/pub/outStock`, record); 
 | 
        if (code === 200) { 
 | 
            notify(msg); 
 | 
            redirct("/outStock"); 
 | 
            refresh() 
 | 
        } else { 
 | 
            notify(msg); 
 | 
        } 
 | 
        refresh(); 
 | 
    } 
 | 
  
 | 
    return ( 
 | 
        record?.exceStatus == 0 ? <ConfirmButton label={"toolbar.publicWorking"} startIcon={<AddTaskIcon />} onConfirm={taskEvent} size={"small"} /> : <></> 
 | 
    ) 
 | 
} 
 |