store.ts 1.99 KB
import useInitail from '@/hooks/useInitail';
import usePagination from '@/hooks/usePagination';
import * as api from './api';
import { useState, useEffect } from 'react';
import { getStoragePage } from '@/pages/pms/storage/StorageManage/api';

let bodyEl = document.body;
let top = 0;
// 当蒙层出现,固定body,不让其跟着蒙层滚动,蒙层消失,恢复其原来的位置
function stopBodyScroll(isFixed: boolean) {
  if (isFixed) {
    top = window.scrollY;
    bodyEl.style.position = 'fixed';
    bodyEl.style.top = -top + 'px';
  } else {
    bodyEl.style.position = '';
    bodyEl.style.top = '';
    window.scrollTo(0, top);
  }
}

export default function useStore() {
  const pagination = usePagination<PmsStoragePartShop.Item>(api.getPartShopPageApi, { orderBy: 18, isAsc: false });
  const { list: storages } = usePagination<PartStorageSpace.PageVO>(getStoragePage, {pageSize: 1000});
  const { data: shops } = useInitail<PmsStoragePartShop.Option[], {}>(api.getShopApi, [], {});
  const [visible, setVisible] = useState(false);
  const [confirmLoading, setConfirmLoading] = useState(false);
  const [importVisible, setImportVisible] = useState(false);
  const [releaseVisible, setReleaseVisible] = useState(false);
  const [override, setOverride] = useState(false);
  const [item, setItem] = useState<PmsStoragePartShop.Item>({});
  const [fw] = useState(location.href.includes('fw'));
  const [fwS] = useState(location.href.includes('fwStock'));
  const [isprice, setIsprice] = useState<boolean>(false);
  const [isadd, setIsadd] = useState<boolean>(false);

  useEffect(() => {
    if (visible) stopBodyScroll(true);
    else stopBodyScroll(false);
  }, [visible]);

  return {
    ...pagination,
    shops,
    visible,
    setVisible,
    releaseVisible,
    setReleaseVisible,
    confirmLoading,
    setConfirmLoading,
    item,
    setItem,
    importVisible,
    setImportVisible,
    storages,
    override,
    setOverride,
    fw,
    fwS,
    isprice,
    setIsprice,
    isadd,
    setIsadd
  };
}