index.tsx 1.82 KB
import React, { useState } from 'react';
import { PlusOutlined } from '@ant-design/icons';
import { Card, Button } from 'antd';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import usePagination from '@/hooks/usePagination';
import List from './components/List';
import { getAreaStorageList } from './api';
import CreatModal from './components/CreateModal';
import * as api from '../StorageManage/api';

function AreaStorageSetting() {
  const { list: storageList } = usePagination<any>(api.getStoragePage);
  
  const { list, loading, setLoading, paginationConfig, setParams } = usePagination<AreaStorageSettingSpace.item>(getAreaStorageList, { current: 1, pageSize: 10 });
  const [current, setCurrent] = useState<{ visible: boolean, row: AreaStorageSettingSpace.item }>({ visible: false, row: {} });
  // 已经被选了的库房ID
  const selecteds = (list.map(it => it.storageIds)).flat();
  
  const modalSwitch = (row: AreaStorageSettingSpace.item={}) => {
    setCurrent({
      row,
      visible: !current.visible
    });
  };
  return (
    <PageHeaderWrapper title="区域库设置">
      <Card
        extra={
          <Button icon={<PlusOutlined />} type="primary" onClick={() => modalSwitch()}>
            新增
          </Button>
        }
      >
        <List
          list={list}
          loading={loading}
          pagination={paginationConfig}
          setParams={setParams}
          onRefreshing={() => setLoading(true)}
          onEdit={(row) => modalSwitch(row)}
        />
        <CreatModal
          visible={current.visible}
          shops={storageList}
          selecteds={selecteds}
          itemData={current.row}
          onCancel={() => modalSwitch()}
          onRefreshing={() => setLoading(true)}
        />
      </Card>
    </PageHeaderWrapper>
  );
}

export default () => <AreaStorageSetting />;