tachybase_todo/packages/plugins/@hera/plugin-rental/src/client/hooks/usePdfPath.tsx
2024-03-13 21:29:43 +08:00

52 lines
1.8 KiB
TypeScript

import { useRecord } from '@nocobase/client';
import React, { createContext, useContext, useState } from 'react';
import { SettlementStyleContext } from '../schema-initializer/SettlementStyleSwitchActionInitializer';
export const PdfIsDoubleContext = createContext({
isDouble: null,
setIsDouble: null,
});
export const PdfIsLoadContext = createContext({
settingType: null,
setSettingLoad: null,
});
export const PdfMargingTopContext = createContext({
margingTop: 0,
setMargingTop: null,
});
export const PdfIsDoubleProvider = (props) => {
const [isDouble, setIsDouble] = useState(false);
const [settingType, setSettingLoad] = useState(false);
const [margingTop, setMargingTop] = useState(0);
return (
<PdfMargingTopContext.Provider value={{ margingTop, setMargingTop }}>
<PdfIsDoubleContext.Provider value={{ isDouble, setIsDouble }}>
<PdfIsLoadContext.Provider value={{ settingType, setSettingLoad }}>{props.children}</PdfIsLoadContext.Provider>
</PdfIsDoubleContext.Provider>
</PdfMargingTopContext.Provider>
);
};
export const useRecordPdfPath = () => {
const record = useRecord();
const { isDouble } = useContext(PdfIsDoubleContext);
const { settingType } = useContext(PdfIsLoadContext);
const { margingTop } = useContext(PdfMargingTopContext);
return `/records:pdf?recordId=${record.id}&isDouble=${isDouble}&settingType=${settingType}&margingTop=${margingTop}`;
};
export const useWaybillPdfPath = () => {
const record = useRecord();
const recordId = record.__collectionName === 'records' ? record.waybill?.id : record.id;
return `/waybills:pdf?recordId=${recordId}`;
};
export const useSettlementPdfPath = () => {
const record = useRecord();
const { style } = useContext(SettlementStyleContext);
return `/settlements:pdf?settlementsId=${record.id}&type=${style}`;
};