Ryan
2025-04-02 cba29f2b769ae2010dd91ec5ed4e4199ead90ce6
rsf-admin/src/page/qlyInspect/QlyInspectList.jsx
@@ -31,6 +31,8 @@
    ReferenceArrayInput,
    AutocompleteInput,
    DeleteButton,
    Button,
    useRefresh,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
@@ -43,6 +45,13 @@
import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
import * as Common from '@/utils/common';
import ConstructionIcon from "@mui/icons-material/Construction";
import CloseIcon from "@mui/icons-material/Close";
import TaskIcon from '@mui/icons-material/Task';
import AddIcon from '@mui/icons-material/Add';
import request from '@/utils/request';
import AsnSelModal from "./AsnSelModal";
import InspectModal from "./InspectModal";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -60,16 +69,13 @@
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.qlyInspect.code" />,
    <TextInput source="name" label="table.field.qlyInspect.name" />,
    <TextInput source="barcode" label="table.field.qlyInspect.barcode" />,
    <NumberInput source="asnItemId" label="table.field.qlyInspect.asnItemId" />,
    <NumberInput source="poItemId" label="table.field.qlyInspect.poItemId" />,
    <TextInput source="wkType" label="table.field.qlyInspect.wkType" />,
    <NumberInput source="safeQty" label="table.field.qlyInspect.safeQty" />,
    <NumberInput source="disQty" label="table.field.qlyInspect.disQty" />,
    <NumberInput source="dlyQty" label="table.field.qlyInspect.dlyQty" />,
    <NumberInput source="rcptQty" label="table.field.qlyInspect.rcptQty" />,
    <NumberInput source="isptQty" label="table.field.qlyInspect.isptQty" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
@@ -98,7 +104,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.qlyInspect"}
                empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
@@ -106,8 +112,8 @@
                sort={{ field: "create_time", order: "desc" }}
                actions={(
                    <TopToolbar>
                        <AsnCreatButton />
                        <FilterButton />
                        <MyCreateButton onClick={() => { setCreateDialog(true) }} />
                        <SelectColumnsButton preferenceKey='qlyInspect' />
                        <MyExportButton />
                    </TopToolbar>
@@ -116,20 +122,22 @@
            >
                <StyledDatagrid
                    preferenceKey='qlyInspect'
                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                    bulkActionButtons={<BulkDeleteButton mutationMode={OPERATE_MODE} />}
                    rowClick={(id, resource, record) => false}
                    expand={() => <QlyInspectPanel />}
                    expandSingle={true}
                    omit={['id', 'createTime', 'createBy', 'memo']}
                    omit={['id', 'createTime', 'createBy', 'memo', 'asnId', 'statusBool']}
                >
                    <NumberField source="id" />
                    <TextField source="code" label="table.field.qlyInspect.code" />
                    <TextField source="name" label="table.field.qlyInspect.name" />
                    <TextField source="barcode" label="table.field.qlyInspect.barcode" />
                    <NumberField source="asnItemId" label="table.field.qlyInspect.asnItemId" />
                    <NumberField source="poItemId" label="table.field.qlyInspect.poItemId" />
                    <TextField source="isptStatus$" label="table.field.qlyInspect.isptStatus" />
                    <TextField source="wkType$" label="table.field.qlyInspect.wkType" />
                    <NumberField source="asnId" label="table.field.qlyInspect.asnId" />
                    <NumberField source="asnCode" label="table.field.qlyInspect.asnCode" />
                    <NumberField source="safeQty" label="table.field.qlyInspect.safeQty" />
                    <NumberField source="disQty" label="table.field.qlyInspect.disQty" />
                    <NumberField source="dlyQty" label="table.field.qlyInspect.dlyQty" />
                    <NumberField source="rcptQty" label="table.field.qlyInspect.rcptQty" />
                    <NumberField source="isptQty" label="table.field.qlyInspect.isptQty" />
                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                        <TextField source="nickname" />
@@ -142,8 +150,10 @@
                    <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' }} />
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                        {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */}
                        <InspectionButton />
                        <CompleteButton />
                        <CloseButton />
                    </WrapperField>
                </StyledDatagrid>
            </List>
@@ -157,8 +167,101 @@
                setDrawerVal={setDrawerVal}
            >
            </PageDrawer>
        </Box>
    )
}
export default QlyInspectList;
const InspectionButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const [createDialog, setCreateDialog] = useState(false);
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.quality"}>
                <ConstructionIcon />
            </Button>
            <InspectModal
                open={createDialog}
                setOpen={setCreateDialog}
                ispectId={record.id}
            />
        </>
    )
}
const CompleteButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const requestComplete = async () => {
        const { data: { code, data, msg } } = await request.post(`/qlyInspect/update`, { ...record, isptStatus: '1' });
        if (code === 200) {
            notify(msg);
            refresh()
        } else {
            notify(msg);
        }
    }
    return (
        <Button onClick={requestComplete} label={"toolbar.complete"}>
            <TaskIcon />
        </Button>
    )
}
const CloseButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const requestClose = async () => {
        const { data: { code, data, msg } } = await request.post(`/qlyInspect/update`, { ...record, isptStatus: '3' });
        if (code === 200) {
            notify(msg);
            refresh()
        } else {
            notify(msg);
        }
    }
    return (
        <Button onClick={requestClose} label={"toolbar.close"}>
            <CloseIcon />
        </Button>
    )
}
const AsnCreatButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const [createDialog, setCreateDialog] = useState(false);
    return (
        <>
            <Button onClick={() => setCreateDialog(true)} label={"toolbar.asnCreate"}>
                <AddIcon />
            </Button>
            <AsnSelModal
                open={createDialog}
                setOpen={setCreateDialog}
            />
        </>
    )
}