chen.lin
1 天以前 66790f8fb83be8783427308c2d3db7eb98951d50
站点初始化,复制改为当前
2个文件已修改
97 ■■■■ 已修改文件
rsf-admin/src/page/basicInfo/basStation/BasStationInitModal.jsx 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/basStation/BasStationInitModal.jsx
@@ -30,7 +30,7 @@
const defaultPair = () => ({ stationName: '', stationId: '' });
const BasStationInitModal = ({ open, setOpen }) => {
const BasStationInitModal = ({ open, setOpen, initialData = null, onClose }) => {
  const translate = useTranslate();
  const notify = useNotify();
  const refresh = useRefresh();
@@ -81,19 +81,48 @@
    request.post('/dictData/page', { dictTypeCode: 'sys_container_type', current: 1, pageSize: 100 })
      .then((res) => {
        if (res?.data?.code === 200 && res?.data?.data?.records) {
          setContainerTypeOptions(res.data.data.records.map((item) => ({
          const options = res.data.data.records.map((item) => ({
            id: item.id,
            value: item.value,
            label: item.label ?? item.value ?? item.id,
          })));
          }));
          setContainerTypeOptions(options);
          if (initialData?.common?.containerTypes?.length) {
            const list = initialData.common.containerTypes;
            const mapped = list.map((item) => {
              const byId = options.find((o) => Number(o.id) === Number(item) || String(o.id) === String(item));
              if (byId) return String(byId.value);
              const byVal = options.find((o) => String(o.value) === String(item) || o.value == item);
              if (byVal) return String(byVal.value);
              return item;
            });
            setCommon((prev) => ({ ...prev, containerTypes: mapped }));
          }
        }
      })
      .catch(() => {});
  }, [open]);
  useEffect(() => {
    if (!open) return;
    if (initialData?.pairs?.length) {
      setPairs(initialData.pairs);
    }
    if (initialData?.common) {
      setCommon({
        type: initialData.common.type ?? 0,
        useStatus: initialData.common.useStatus ?? '',
        areaIds: Array.isArray(initialData.common.areaIds) ? [...initialData.common.areaIds] : [],
        containerTypes: Array.isArray(initialData.common.containerTypes) ? [...initialData.common.containerTypes] : [],
        inAble: initialData.common.inAble ?? 0,
        outAble: initialData.common.outAble ?? 0,
      });
    }
  }, [open, initialData]);
  const handleClose = (event, reason) => {
    if (reason !== "backdropClick") {
      setOpen(false);
      setPairs([defaultPair()]);
      if (typeof onClose === 'function') onClose();
    }
  };
@@ -299,7 +328,7 @@
                onChange={(e) => setCommon((c) => ({ ...c, containerTypes: e.target.value }))}
                renderValue={(selected) =>
                  (selected || [])
                    .map((val) => containerTypeOptions.find((c) => c.value === val)?.label ?? val)
                    .map((val) => containerTypeOptions.find((c) => String(c.value) === String(val))?.label ?? val)
                    .join(', ')
                }
              >
rsf-admin/src/page/basicInfo/basStation/BasStationList.jsx
@@ -96,28 +96,37 @@
        resettable
    />,
]
const CopyButton = ({ setCopyRecord, setCreateDialog }) => {
    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 { id, createTime, updateTime, createBy, updateBy, createBy$, updateBy$, ...rest } = record;
                const copied = { ...rest };
                if (record.areaIds) copied.areaIds = [...(Array.isArray(record.areaIds) ? record.areaIds : [])];
                if (record.containerTypes) copied.containerTypes = [...(Array.isArray(record.containerTypes) ? record.containerTypes : [])];
                setCopyRecord(copied);
                setCreateDialog(true);
            }}
        >
            {translate('toolbar.copy')}
        </Button>
    );
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();
@@ -128,6 +137,7 @@
    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
@@ -238,7 +248,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">
                        <CopyButton setCopyRecord={setCopyRecord} setCreateDialog={setCreateDialog} />
                        <CopyButton setInitCopyData={setInitCopyData} setInitDialogOpen={setInitDialogOpen} />
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                    </WrapperField>
@@ -254,6 +264,8 @@
            <BasStationInitModal
              open={initDialogOpen}
              setOpen={setInitDialogOpen}
              initialData={initCopyData}
              onClose={() => setInitCopyData(null)}
            />
            <PageDrawer
                title='BasStation Detail'