diff --git a/src/api/index.ts b/src/api/index.ts
index 9e11965..a5c2b18 100644
--- a/src/api/index.ts
+++ b/src/api/index.ts
@@ -21,6 +21,7 @@ export const ApiId = {
SEASON_TICKET_CONTRACTS: id++,
PAYMENT_PLANS: id++,
SEASON_TICKET_CONTRACT_STICKER_RE_ORDER: id++,
+ SEASON_TICKET_CONTRACT_PARKING_USE_TYPE_CHANGE_ORDER: id++,
SEASON_TICKET_CONTRACT_SEASON_TICKET_RE_ORDER: id++,
SEASON_TICKET_CONTRACT_PARKING_CERTIFICATE_ORDER: id++,
SEASON_TICKET_CONTRACT_TERMINATE_ORDER: id++,
diff --git a/src/api/season-ticket-contract.ts b/src/api/season-ticket-contract.ts
index de25ab5..e718652 100644
--- a/src/api/season-ticket-contract.ts
+++ b/src/api/season-ticket-contract.ts
@@ -28,6 +28,7 @@ export type SeasonTicketContract = {
can_change_plan_apply: boolean | null;
can_parking_certificate_apply: boolean | null;
is_terminated: boolean | null;
+ is_ic_season_ticket: boolean | null;
revision: number;
};
@@ -84,6 +85,24 @@ export const reOrderSticker = async (data: StickerReOrderRequest) => {
});
return res;
};
+// -------駐車場利用方法変更依頼------------------
+type ParkingUseTypeChangeOrderRequest = {
+ season_ticket_contract_record_no: string;
+ parking_name: string;
+ parking_use_type: string;
+ memo?: string;
+};
+export const parkingUseTypeChangeOrder = async (
+ data: ParkingUseTypeChangeOrderRequest
+) => {
+ const res = await request({
+ url: getUrl(ApiId.SEASON_TICKET_CONTRACT_PARKING_USE_TYPE_CHANGE_ORDER),
+ method: HttpMethod.POST,
+ data: makeParam(data),
+ });
+ return res;
+};
+
// -------定期券再発行依頼------------------
type SeasonTicketReOrderRequest = {
season_ticket_contract_record_no: string;
diff --git a/src/api/url.ts b/src/api/url.ts
index be48b2d..29cd681 100644
--- a/src/api/url.ts
+++ b/src/api/url.ts
@@ -14,6 +14,8 @@ const urls = {
"season-ticket-contract/season-ticket-re-order",
[A.SEASON_TICKET_CONTRACT_STICKER_RE_ORDER]:
"season-ticket-contract/sticker-re-order",
+ [A.SEASON_TICKET_CONTRACT_PARKING_USE_TYPE_CHANGE_ORDER]:
+ "season-ticket-contract/parking-use-type-change-order",
[A.SEASON_TICKET_CONTRACT_PARKING_CERTIFICATE_ORDER]:
"season-ticket-contract/parking-certificate-order",
[A.SEASON_TICKET_CONTRACT_TERMINATE_ORDER]:
diff --git a/src/pages/dashboard/contract/detail.tsx b/src/pages/dashboard/contract/detail.tsx
index f266a5d..a03520f 100644
--- a/src/pages/dashboard/contract/detail.tsx
+++ b/src/pages/dashboard/contract/detail.tsx
@@ -143,6 +143,22 @@ export default function ContractDetail() {
)}
+ {seasonTicketContract.is_ic_season_ticket && (
+
+
+
+ )}
{seasonTicketContract.has_season_ticket && (
+ );
+}
+
+type FormProps = {
+ parking_use_type: string;
+ memo: string;
+};
+
+export default function ParkingUseTypeChangeOrder() {
+ const { setHeaderTitle, setTabs } = useDashboard(
+ PageID.DASHBOARD_SEASON_TICKET_CONTRACT_PARKING_USE_TYPE_CHANGE_ORDER,
+ TabID.NONE
+ );
+
+ const form = useForm({
+ defaultValues: {
+ parking_use_type: "",
+ memo: "",
+ },
+ resolver: yupResolver(
+ object().shape({
+ parking_use_type: string().required("入力してください"),
+ })
+ ),
+ });
+
+ const { navigateWhenChanged } = useNavigateCustom();
+
+ const { error } = useSnackbarCustom();
+
+ const { selectedseasonTicketContract, backToDetailHome } =
+ useSeasonTicketContractContext();
+
+ const [mode, setMode] = useState<"input" | "confirm" | "done">("input");
+
+ const { callAPI: callParkingUseTypeChangeOrder, errorMode } = useAPICall({
+ apiMethod: parkingUseTypeChangeOrder,
+ backDrop: true,
+ form,
+ onSuccess: () => {
+ setMode("done");
+ },
+ onFailed: () => {
+ error("依頼失敗しました");
+ setMode("input");
+ },
+ });
+
+ const handleSubmit = () => {
+ setMode("confirm");
+ };
+
+ const send = () => {
+ if (selectedseasonTicketContract === null) return;
+ callParkingUseTypeChangeOrder({
+ season_ticket_contract_record_no:
+ selectedseasonTicketContract.season_ticekt_contract_record_no ?? "",
+ parking_name: selectedseasonTicketContract.parking_name ?? "",
+ ...form.getValues(),
+ });
+ };
+
+ const options: SelectOptionProps[] = [
+ { value: "貸与ICカード", label: "貸与ICカード" },
+ { value: "個人所有Felica", label: "個人所有Felica" },
+ { value: "QRコード", label: "QRコード" },
+ ];
+
+ useEffect(() => {
+ setHeaderTitle("駐車場利用方法変更依頼");
+ setTabs(null);
+ }, [setHeaderTitle, setTabs]);
+
+ useEffect(() => {
+ if (selectedseasonTicketContract === null) {
+ navigateWhenChanged(
+ getPath(PageID.DASHBOARD_SEASON_TICKET_CONTRACT_LIST)
+ );
+ }
+ }, [selectedseasonTicketContract]);
+
+ if (selectedseasonTicketContract === null) {
+ return null;
+ }
+ if (mode === "done") {
+ return (
+
+
+ 依頼しました
+
+
+
+
+
+ );
+ }
+
+ if (mode === "confirm") {
+ return (
+
+
+
+ 下記内容で申請を行います。
+
+
+
+
+
+ 駐車場利用方法
+
+
+
+
+
+ 備考
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/pages/index.ts b/src/pages/index.ts
index 041176b..a70487d 100644
--- a/src/pages/index.ts
+++ b/src/pages/index.ts
@@ -14,6 +14,7 @@ export const PageID = {
DASHBOARD_SEASON_TICKET_CONTRACT_LIST: id++,
DASHBOARD_SEASON_TICKET_CONTRACT_DETAIL: id++,
DASHBOARD_SEASON_TICKET_CONTRACT_STICKER_RE_ORDER: id++,
+ DASHBOARD_SEASON_TICKET_CONTRACT_PARKING_USE_TYPE_CHANGE_ORDER: id++,
DASHBOARD_SEASON_TICKET_CONTRACT_SEASON_TICKET_RE_ORDER: id++,
DASHBOARD_SEASON_TICKET_CONTRACT_PARKING_CERTIFICATE_ORDER: id++,
DASHBOARD_SEASON_TICKET_CONTRACT_TERMINATE_ORDER: id++,
diff --git a/src/routes/path.ts b/src/routes/path.ts
index c22d987..cb7dc40 100644
--- a/src/routes/path.ts
+++ b/src/routes/path.ts
@@ -39,6 +39,9 @@ const PATHS_DASHBOARD = {
"/dashboard/contract/detail/:id",
[makePathKey(PageID.DASHBOARD_SEASON_TICKET_CONTRACT_STICKER_RE_ORDER)]:
"/dashboard/contract/sticker-re-order",
+ [makePathKey(
+ PageID.DASHBOARD_SEASON_TICKET_CONTRACT_PARKING_USE_TYPE_CHANGE_ORDER
+ )]: "/dashboard/contract/parking-use-type-change-order",
[makePathKey(PageID.DASHBOARD_SEASON_TICKET_CONTRACT_SEASON_TICKET_RE_ORDER)]:
"/dashboard/contract/season-ticket-re-order",
[makePathKey(
diff --git a/src/routes/sub/dashboard.tsx b/src/routes/sub/dashboard.tsx
index 22bcd3b..07027d2 100644
--- a/src/routes/sub/dashboard.tsx
+++ b/src/routes/sub/dashboard.tsx
@@ -86,6 +86,11 @@ export default function DashboardRoutes(): RouteObject[] {
const SeasonTicketReOrder = Loadable(
lazy(() => import("pages/dashboard/contract/season-ticket-re-order"))
);
+ const ParkingUseTypeChangeOrder = Loadable(
+ lazy(
+ () => import("pages/dashboard/contract/parking-use-type-change-order")
+ )
+ );
const TerminateOrder = Loadable(
lazy(() => import("pages/dashboard/contract/terminate-order"))
);
@@ -124,6 +129,11 @@ export default function DashboardRoutes(): RouteObject[] {
pageId: PageID.DASHBOARD_SEASON_TICKET_CONTRACT_SEASON_TICKET_RE_ORDER,
element: ,
},
+ {
+ pageId:
+ PageID.DASHBOARD_SEASON_TICKET_CONTRACT_PARKING_USE_TYPE_CHANGE_ORDER,
+ element: ,
+ },
{
pageId: PageID.DASHBOARD_SEASON_TICKET_CONTRACT_TERMINATE_ORDER,
element: ,