chen.lin
3 天以前 66790f8fb83be8783427308c2d3db7eb98951d50
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
@@ -33,9 +33,12 @@
    DeleteButton,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { Box, Typography, Card, Stack, Button } from '@mui/material';
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
import PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';
import { styled } from '@mui/material/styles';
import BasStationCreate from "./BasStationCreate";
import BasStationInitModal from "./BasStationInitModal";
import BasStationPanel from "./BasStationPanel";
import EmptyData from "../../components/EmptyData";
import MyCreateButton from "../../components/MyCreateButton";
@@ -47,6 +50,7 @@
import WarehouseAreaField from "./WarehouseAreaField";
import CrossZoneAreaField from "./CrossZoneAreaField";
import ContainerTypesField from "./ContainerTypesField";
import ChipArrayField from '@/page/components/ChipArrayField';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
    '& .css-1vooibu-MuiSvgIcon-root': {
@@ -58,7 +62,7 @@
    '& .column-name': {
    },
    '& .opt': {
        width: 200
        width: 220
    },
}));
@@ -68,6 +72,7 @@
    <DateInput label='common.time.before' source="timeEnd" />,
    <TextInput source="stationName" label="table.field.basStation.stationName" alwaysOn />,
    <TextInput source="stationId" label="table.field.basStation.stationId" alwaysOn />,
    <NumberInput source="inAble" label="table.field.basStation.inAble" />,
    <NumberInput source="outAble" label="table.field.basStation.outAble" />,
    <TextInput source="useStatus" label="table.field.basStation.useStatus" />,
@@ -91,7 +96,38 @@
        resettable
    />,
]
const CopyButton = ({ setInitCopyData, setInitDialogOpen }) => {
  const record = useRecordContext();
  const translate = useTranslate();
  if (!record) return null;
  return (
    <Button
      size="small"
      startIcon={<ContentCopyIcon fontSize="small" />}
      sx={{ padding: '1px', fontSize: '.75rem', minWidth: 'auto' }}
      onClick={(e) => {
        e.stopPropagation();
        const pairs = [{ stationName: record.stationName ?? '', stationId: record.stationId ?? '' }];
        const areaIds = Array.isArray(record.areaIds) ? [...record.areaIds] : [];
        const containerTypes = Array.isArray(record.containerTypes) ? [...record.containerTypes] : [];
        setInitCopyData({
          pairs,
          common: {
            type: record.type ?? 0,
            useStatus: record.useStatus ?? '',
            areaIds,
            containerTypes,
            inAble: record.inAble ?? 0,
            outAble: record.outAble ?? 0,
          },
        });
        setInitDialogOpen(true);
      }}
    >
      {translate('toolbar.copy')}
    </Button>
  );
};
const BasStationList = () => {
    const translate = useTranslate();
@@ -99,6 +135,9 @@
    const [drawerVal, setDrawerVal] = useState(false);
    const [areaFieldDialog, setAreaFieldDialog] = useState(false);
    const [areaFieldDialog2, setAreaFieldDialog2] = useState(false);
    const [copyRecord, setCopyRecord] = useState(null);
    const [initDialogOpen, setInitDialogOpen] = useState(false);
    const [initCopyData, setInitCopyData] = useState(null);
    return (
        <Box display="flex">
            <List
@@ -118,6 +157,16 @@
                    <TopToolbar>
                        <FilterButton />
                        <MyCreateButton onClick={() => { setCreateDialog(true) }} />
                        <Button
                          variant="text"
                          color="primary"
                          size="small"
                          startIcon={<PlaylistAddIcon />}
                          onClick={() => setInitDialogOpen(true)}
                          sx={{ ml: 1 }}
                        >
                          {translate('toolbar.siteInit')}
                        </Button>
                        <SelectColumnsButton preferenceKey='basStation' />
                        <MyExportButton />
                    </TopToolbar>
@@ -129,12 +178,28 @@
                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                    rowClick={(id, resource, record) => false}
                    expandSingle={true}
                    omit={['id', 'createTime', 'createBy', 'memo', 'updateBy', 'autoTransfer']}
                    omit={['id', 'createTime', 'createBy', 'createBy$', 'memo', 'updateBy$', 'updateTime', 'autoTransfer', 'isCrossZone', 'isWcs', 'area$', 'memo']}
                >
                    <NumberField source="id" />
                    <TextField source="type$" label="table.field.basStation.type" />
                    {/* <TextField source="type$" label="table.field.basStation.type" /> */}
                    <TextField source="stationName" label="table.field.basStation.stationName" />
                    <TextField source="stationId" label="table.field.basStation.stationId" />
                    <FunctionField
                        source="type"
                        label="table.field.basStation.type"
                        render={record => record.type === 1 ? '普通站点' : '智能站点'}
                    />
                    <TextField source="useStatus$" label="table.field.basStation.useStatus" />
                    <WrapperField cellClassName="containerType" label="table.field.basStation.containerType">
                        <ChipArrayField
                            source="containerTypes$"
                            apiEndpoint="/dictData/many/{ids}"
                            labelField="label"
                            dialogTitle={translate('table.field.basStation.containerType')}
                            initialDisplayCount={1}
                            placeholderText="{count} 个区域"
                        />
                    </WrapperField>
                    <TextField source="barcode" label="table.field.basStation.barcode" />
                    <FunctionField
                        source="inAble"
@@ -144,7 +209,7 @@
                    <FunctionField
                        source="outAble"
                        label="table.field.basStation.outAble"
                        render={record => record.inAble === 1 ? '是' : '否'}
                        render={record => record.outAble === 1 ? '是' : '否'}
                    />
                    <NumberField source="area$" label="table.field.basStation.area" />
                    <FunctionField
@@ -153,9 +218,17 @@
                        render={record => record.inAble === 1 ? '是' : '否'}
                    />
                    <WrapperField cellClassName="crossZoneArea" label="table.field.basStation.crossZoneArea">
                        <CrossZoneAreaField
                        {/* <CrossZoneAreaField
                            open={areaFieldDialog}
                            setOpen={setAreaFieldDialog}
                        /> */}
                        <ChipArrayField
                            source="areaIds"
                            apiEndpoint="/warehouseAreas/many/{ids}"
                            labelField="name"
                            dialogTitle={translate('table.field.basStation.crossZoneArea')}
                            initialDisplayCount={1}
                            placeholderText="{count} 个区域"
                        />
                    </WrapperField>
                    <FunctionField
@@ -163,12 +236,6 @@
                        label="table.field.basStation.isWcs"
                        render={record => record.inAble === 1 ? '是' : '否'}
                    />
                    <WrapperField cellClassName="containerType" label="table.field.basStation.containerType">
                        <ContainerTypesField
                            open={areaFieldDialog2}
                            setOpen={setAreaFieldDialog2}
                        />
                    </WrapperField>
                    <FunctionField
                        source="autoTransfer"
                        label="table.field.basStation.autoTransfer"
@@ -178,9 +245,10 @@
                    <DateField source="updateTime" label="common.field.updateTime" showTime />
                    <TextField source="createBy$" label="common.field.createBy" />
                    <DateField source="createTime" label="common.field.createTime" showTime />
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                    {/* <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">
                        <CopyButton setInitCopyData={setInitCopyData} setInitDialogOpen={setInitDialogOpen} />
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                    </WrapperField>
@@ -190,8 +258,15 @@
            <BasStationCreate
                open={createDialog}
                setOpen={setCreateDialog}
                copyRecord={copyRecord}
                onClose={() => setCopyRecord(null)}
            />
            <BasStationInitModal
              open={initDialogOpen}
              setOpen={setInitDialogOpen}
              initialData={initCopyData}
              onClose={() => setInitCopyData(null)}
            />
            <PageDrawer
                title='BasStation Detail'
                drawerVal={drawerVal}