Просмотр исходного кода

領収証発行依頼一覧 検索項目ステータスをプルダウン化

SATE_RECEIPT-21 領収証発行依頼一覧
develop
sosuke.iwabuchi 2 лет назад
Родитель
Сommit
0d85662879
1 измененных файлов: 60 добавлений и 6 удалений
  1. +60
    -6
      src/pages/dashboard/receipt-issuing-order/custom/hello-techno/list.tsx

+ 60
- 6
src/pages/dashboard/receipt-issuing-order/custom/hello-techno/list.tsx Просмотреть файл

@@ -25,10 +25,22 @@ import {
ReceiptIssuingOrderHTCustom, ReceiptIssuingOrderHTCustom,
getReceiptIssuingOrders, getReceiptIssuingOrders,
} from "api/custom/hello-techno/receipt-issuing-order"; } from "api/custom/hello-techno/receipt-issuing-order";
import { receiptIssuingOrderStatusNames } from "api/receipt-issuing-order";
import { getFullUrl } from "api/url"; import { getFullUrl } from "api/url";
import { PageID, TabID } from "codes/page"; import { PageID, TabID } from "codes/page";
import { FormProvider, RHFCheckbox, RHFTextField } from "components/hook-form";
import {
FormProvider,
RHFCheckbox,
RHFSelect,
RHFTextField,
} from "components/hook-form";
import RHFAutoComplete, {
AutoCompleteOption,
AutoCompleteOptionType,
getValue,
} from "components/hook-form/RHFAutoComplete";
import RHFDatePicker from "components/hook-form/RHFDatePicker"; import RHFDatePicker from "components/hook-form/RHFDatePicker";
import { SelectOptionProps } from "components/hook-form/RHFSelect";
import { TableHeadCustom } from "components/table"; import { TableHeadCustom } from "components/table";
import { HeadLabelProps } from "components/table/TableHeadCustom"; import { HeadLabelProps } from "components/table/TableHeadCustom";
import { SearchConditionContextProvider } from "contexts/SearchConditionContext"; import { SearchConditionContextProvider } from "contexts/SearchConditionContext";
@@ -39,6 +51,7 @@ import useDashboard from "hooks/useDashBoard";
import useNavigateCustom from "hooks/useNavigateCustom"; import useNavigateCustom from "hooks/useNavigateCustom";
import useSearchConditionContext from "hooks/useSearchConditionContext"; import useSearchConditionContext from "hooks/useSearchConditionContext";
import useTable, { UseTableReturn } from "hooks/useTable"; import useTable, { UseTableReturn } from "hooks/useTable";
import { isEqual } from "lodash";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import { getPath } from "routes/path"; import { getPath } from "routes/path";
@@ -114,6 +127,17 @@ function SearchBox({ table }: CommonProps) {


const [openDateDialog, setOpenDateDialog] = useState(false); const [openDateDialog, setOpenDateDialog] = useState(false);


const [lastSendSearchCondition, setLastSendSearchCondition] =
useState<object>({});

const [statusNames, setStatusNames] = useState<string[]>([]);
const statusNameOptions: SelectOptionProps[] = useMemo(() => {
return [
{ value: "", label: "-" },
...statusNames.map((ele) => ({ value: ele })),
];
}, [statusNames]);

const form = useForm<FormProps>({ const form = useForm<FormProps>({
defaultValues: { defaultValues: {
customer_name: "", customer_name: "",
@@ -128,10 +152,21 @@ function SearchBox({ table }: CommonProps) {
}, },
}); });


const {
callAPI: callReceiptIssuingOrderStatusNames,
sending: sendingReceiptIssuingOrderStatusNames,
} = useAPICall({
apiMethod: receiptIssuingOrderStatusNames,

onSuccess: (res) => {
setStatusNames(res.data);
},
});

const { const {
callAPI: callGetReceiptIssuingOrders, callAPI: callGetReceiptIssuingOrders,
makeSendData, makeSendData,
sending,
sending: sendingGetReceiptIssuingOrders,
} = useAPICall({ } = useAPICall({
apiMethod: getReceiptIssuingOrders, apiMethod: getReceiptIssuingOrders,
form, form,
@@ -143,6 +178,7 @@ function SearchBox({ table }: CommonProps) {
const includeDone = form.watch("include_done"); const includeDone = form.watch("include_done");
const orderDateFrom = form.watch("order_date_from"); const orderDateFrom = form.watch("order_date_from");
const orderDateTo = form.watch("order_date_to"); const orderDateTo = form.watch("order_date_to");
const statusName = form.watch("status");


const isSetOrderDateConditions = useMemo(() => { const isSetOrderDateConditions = useMemo(() => {
return !!orderDateFrom || !!orderDateTo; return !!orderDateFrom || !!orderDateTo;
@@ -199,7 +235,11 @@ function SearchBox({ table }: CommonProps) {
// 完了を含む場合は、条件設定しない。含まない場合は未完了のみとする // 完了を含む場合は、条件設定しない。含まない場合は未完了のみとする
done: data.include_done === "1" ? "" : "0", done: data.include_done === "1" ? "" : "0",
}); });
callGetReceiptIssuingOrders(sendData);

if (!isEqual(sendData, lastSendSearchCondition)) {
setLastSendSearchCondition(sendData);
callGetReceiptIssuingOrders(sendData);
}
}; };


// 初期値設定 // 初期値設定
@@ -226,12 +266,21 @@ function SearchBox({ table }: CommonProps) {


// バックドロップ // バックドロップ
useEffect(() => { useEffect(() => {
const sending =
sendingReceiptIssuingOrderStatusNames || sendingGetReceiptIssuingOrders;
setShowBackDrop(sending); setShowBackDrop(sending);
}, [sending]);
}, [sendingGetReceiptIssuingOrders, sendingReceiptIssuingOrderStatusNames]);


useEffect(() => { useEffect(() => {
addCondition(form.getValues()); addCondition(form.getValues());
}, [includeDone, orderDateFrom, orderDateTo]);
}, [includeDone, orderDateFrom, orderDateTo, statusName]);

// ステータス名選択肢の取得
useEffect(() => {
if (initialized) {
callReceiptIssuingOrderStatusNames({});
}
}, [initialized]);


return ( return (
<FormProvider methods={form} onSubmit={form.handleSubmit(handleSubmit)}> <FormProvider methods={form} onSubmit={form.handleSubmit(handleSubmit)}>
@@ -259,7 +308,12 @@ function SearchBox({ table }: CommonProps) {
<Grid item xs={3} lg={2}> <Grid item xs={3} lg={2}>
<Stack> <Stack>
<Typography>ステータス</Typography> <Typography>ステータス</Typography>
<RHFTextField name={SearchParam.STATUS} onBlur={handleBlur} />
{/* <RHFTextField name={SearchParam.STATUS} onBlur={handleBlur} /> */}
<RHFSelect
name={SearchParam.STATUS}
options={statusNameOptions}
size="small"
/>
</Stack> </Stack>
</Grid> </Grid>
<Grid item> <Grid item>


Загрузка…
Отмена
Сохранить