diff --git a/dictation_client/src/features/license/licenseOrderHistory/licenseOrderHistorySlice.ts b/dictation_client/src/features/license/licenseOrderHistory/licenseOrderHistorySlice.ts index 60eca5f..5e1f0f6 100644 --- a/dictation_client/src/features/license/licenseOrderHistory/licenseOrderHistorySlice.ts +++ b/dictation_client/src/features/license/licenseOrderHistory/licenseOrderHistorySlice.ts @@ -11,7 +11,6 @@ const initialState: LicenseOrderHistoryState = { apps: { limit: LIMIT_ORDER_HISORY_NUM, offset: 0, - accountId: 0, isLoading: false, LicenseOrder: undefined, }, diff --git a/dictation_client/src/features/license/licenseOrderHistory/operations.ts b/dictation_client/src/features/license/licenseOrderHistory/operations.ts index e6f9864..307662c 100644 --- a/dictation_client/src/features/license/licenseOrderHistory/operations.ts +++ b/dictation_client/src/features/license/licenseOrderHistory/operations.ts @@ -13,7 +13,6 @@ export const getLicenseOrderHistoriesAsync = createAsyncThunk< // パラメータ limit: number; offset: number; - accountId: number; }, { // rejectした時の返却値の型 @@ -22,7 +21,7 @@ export const getLicenseOrderHistoriesAsync = createAsyncThunk< }; } >("licenses/licenseOrderHisotyAsync", async (args, thunkApi) => { - const { limit, offset, accountId } = args; + const { limit, offset } = args; // apiのConfigurationを取得する const { getState } = thunkApi; const state = getState() as RootState; @@ -31,6 +30,19 @@ export const getLicenseOrderHistoriesAsync = createAsyncThunk< const accountsApi = new AccountsApi(config); try { + const { selectedRow } = state.partnerLicense.apps; + let accountId = 0; + // 他の画面から指定されていない場合はログインアカウントのidを取得する + if (!selectedRow) { + const getMyAccountResponse = await accountsApi.getMyAccount({ + headers: { authorization: `Bearer ${accessToken}` }, + }); + // accountIDを返す + accountId = getMyAccountResponse.data.account.accountId; + } else { + accountId = selectedRow.accountId; + } + const res = await accountsApi.getOrderHistories( { limit, diff --git a/dictation_client/src/features/license/licenseOrderHistory/selectors.ts b/dictation_client/src/features/license/licenseOrderHistory/selectors.ts index e2e6914..7edf09a 100644 --- a/dictation_client/src/features/license/licenseOrderHistory/selectors.ts +++ b/dictation_client/src/features/license/licenseOrderHistory/selectors.ts @@ -13,9 +13,6 @@ export const seletctLimit = (state: RootState) => export const selectOffset = (state: RootState) => state.licenseOrderHistory.apps.offset; -export const selectAccountId = (state: RootState) => - state.licenseOrderHistory.apps.accountId; - export const selectTotalPage = (state: RootState) => { const { limit } = state.licenseOrderHistory.apps; const { total } = state.licenseOrderHistory.domain; diff --git a/dictation_client/src/features/license/licenseOrderHistory/state.ts b/dictation_client/src/features/license/licenseOrderHistory/state.ts index d2d3798..6713e4a 100644 --- a/dictation_client/src/features/license/licenseOrderHistory/state.ts +++ b/dictation_client/src/features/license/licenseOrderHistory/state.ts @@ -13,7 +13,6 @@ export interface Domain { export interface Apps { limit: number; offset: number; - accountId: number; LicenseOrder?: LicenseOrder; isLoading: boolean; } diff --git a/dictation_client/src/features/license/partnerLicense/partnerLicenseSlice.ts b/dictation_client/src/features/license/partnerLicense/partnerLicenseSlice.ts index f31d96a..1b584b7 100644 --- a/dictation_client/src/features/license/partnerLicense/partnerLicenseSlice.ts +++ b/dictation_client/src/features/license/partnerLicense/partnerLicenseSlice.ts @@ -1,4 +1,5 @@ import { PayloadAction, createSlice } from "@reduxjs/toolkit"; +import { PartnerLicenseInfo } from "api"; import { PartnerLicensesState, HierarchicalElement } from "./state"; import { getMyAccountAsync, getPartnerLicenseAsync } from "./operations"; import { ACCOUNTS_VIEW_LIMIT } from "./constants"; @@ -25,6 +26,7 @@ const initialState: PartnerLicensesState = { currentPage: 0, hierarchicalElements: [], isLoading: true, + selectedRow: undefined, }, }; @@ -53,6 +55,13 @@ export const partnerLicenseSlice = createSlice({ const { deleteCount } = action.payload; state.apps.hierarchicalElements.splice(-deleteCount); }, + changeSelectedRow: ( + state, + action: PayloadAction<{ value?: PartnerLicenseInfo }> + ) => { + const { value } = action.payload; + state.apps.selectedRow = value; + }, savePageInfo: ( state, action: PayloadAction<{ @@ -95,6 +104,7 @@ export const { pushHierarchicalElement, popHierarchicalElement, spliceHierarchicalElement, + changeSelectedRow, savePageInfo, } = partnerLicenseSlice.actions; diff --git a/dictation_client/src/features/license/partnerLicense/selectors.ts b/dictation_client/src/features/license/partnerLicense/selectors.ts index 28b9f5b..b2fad43 100644 --- a/dictation_client/src/features/license/partnerLicense/selectors.ts +++ b/dictation_client/src/features/license/partnerLicense/selectors.ts @@ -28,3 +28,5 @@ export const selectCurrentPage = (state: RootState) => { const page = floor(offset / limit) + 1; return page; }; +export const selectSelectedRow = (state: RootState) => + state.partnerLicense.apps.selectedRow; diff --git a/dictation_client/src/features/license/partnerLicense/state.ts b/dictation_client/src/features/license/partnerLicense/state.ts index e08066f..110a128 100644 --- a/dictation_client/src/features/license/partnerLicense/state.ts +++ b/dictation_client/src/features/license/partnerLicense/state.ts @@ -19,6 +19,7 @@ export interface Apps { currentPage: number; hierarchicalElements: HierarchicalElement[]; isLoading: boolean; + selectedRow?: PartnerLicenseInfo; } export interface HierarchicalElement { diff --git a/dictation_client/src/pages/LicenseOrderHistoryPage/index.tsx b/dictation_client/src/pages/LicenseOrderHistoryPage/index.tsx deleted file mode 100644 index 271f6e2..0000000 --- a/dictation_client/src/pages/LicenseOrderHistoryPage/index.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useCallback } from "react"; -import Footer from "components/footer"; -import Header from "components/header"; -import styles from "styles/app.module.scss"; -import { UpdateTokenTimer } from "components/auth/updateTokenTimer"; - -interface LicenseOrderHistoryProps { - onClose: () => void; -} -export const LicenseOrderHistory: React.FC = ( - props -): JSX.Element => { - const { onClose } = props; - - // ポップアップを閉じる処理 - const closeScreen = useCallback(() => { - onClose(); - }, [onClose]); - - // 表示確認用の仮画面 - return ( -
-
- -
-
-
-

Order History

-
-
-
    -
  • - -
  • -
-
-
-
- ); -}; - -export default LicenseOrderHistory; diff --git a/dictation_client/src/pages/LicensePage/licenseOrderHistory.tsx b/dictation_client/src/pages/LicensePage/licenseOrderHistory.tsx index d1e9275..7cfda4f 100644 --- a/dictation_client/src/pages/LicensePage/licenseOrderHistory.tsx +++ b/dictation_client/src/pages/LicensePage/licenseOrderHistory.tsx @@ -12,13 +12,13 @@ import { LIMIT_ORDER_HISORY_NUM, STATUS, getLicenseOrderHistoriesAsync, - selectAccountId, selectCurrentPage, selectIsLoading, selectOrderHisory, selectTotal, selectTotalPage, } from "features/license/licenseOrderHistory"; +import { selectSelectedRow } from "features/license/partnerLicense"; import undo from "../../assets/images/undo.svg"; import history from "../../assets/images/history.svg"; import progress_activit from "../../assets/images/progress_activit.svg"; @@ -35,8 +35,8 @@ export const LicenseOrderHistory: React.FC = ( const total = useSelector(selectTotal); const totalPage = useSelector(selectTotalPage); const currentPage = useSelector(selectCurrentPage); - const accountId = useSelector(selectAccountId); const isLoading = useSelector(selectIsLoading); + const selectedRow = useSelector(selectSelectedRow); // Return押下時の処理 const returnGui = useCallback(() => { @@ -52,10 +52,9 @@ export const LicenseOrderHistory: React.FC = ( getLicenseOrderHistoriesAsync({ limit: LIMIT_ORDER_HISORY_NUM, offset: 0, - accountId, }) ); - }, [dispatch, accountId]); + }, [dispatch]); const getLastPage = useCallback(() => { const lastPageOffset = (totalPage - 1) * LIMIT_ORDER_HISORY_NUM; @@ -63,10 +62,9 @@ export const LicenseOrderHistory: React.FC = ( getLicenseOrderHistoriesAsync({ limit: LIMIT_ORDER_HISORY_NUM, offset: lastPageOffset, - accountId, }) ); - }, [dispatch, totalPage, accountId]); + }, [dispatch, totalPage]); const getPrevPage = useCallback(() => { const prevPageOffset = (currentPage - 2) * LIMIT_ORDER_HISORY_NUM; @@ -74,10 +72,9 @@ export const LicenseOrderHistory: React.FC = ( getLicenseOrderHistoriesAsync({ limit: LIMIT_ORDER_HISORY_NUM, offset: prevPageOffset, - accountId, }) ); - }, [dispatch, currentPage, accountId]); + }, [dispatch, currentPage]); const getNextPage = useCallback(() => { const nextPageOffset = currentPage * LIMIT_ORDER_HISORY_NUM; @@ -85,10 +82,9 @@ export const LicenseOrderHistory: React.FC = ( getLicenseOrderHistoriesAsync({ limit: LIMIT_ORDER_HISORY_NUM, offset: nextPageOffset, - accountId, }) ); - }, [dispatch, currentPage, accountId]); + }, [dispatch, currentPage]); // apiからの値取得関係 const licenseOrderHistory = useSelector(selectOrderHisory); @@ -98,10 +94,9 @@ export const LicenseOrderHistory: React.FC = ( getLicenseOrderHistoriesAsync({ limit: LIMIT_ORDER_HISORY_NUM, offset: 0, - accountId, }) ); - }, [dispatch, accountId]); + }, [dispatch]); return (
@@ -176,7 +171,6 @@ export const LicenseOrderHistory: React.FC = ( {x.poNumber} {(() => { - // eslint-disable-next-line default-case switch (x.status) { case STATUS.ISSUE_REQESTING: return t( @@ -196,26 +190,69 @@ export const LicenseOrderHistory: React.FC = ( "orderHistoriesPage.label.orderCanceled" ) ); + default: + return ""; } })()} - +
  • + + {t( + getTranslationID( + "orderHistoriesPage.label.orderCancel" + ) + )} + +
  • + + )} + {selectedRow !== undefined && + x.status === STATUS.ISSUE_REQESTING && ( + + )} + {selectedRow !== undefined && + x.status === STATUS.ISSUED && ( + + )} ))} diff --git a/dictation_client/src/pages/LicensePage/partnerLicense.tsx b/dictation_client/src/pages/LicensePage/partnerLicense.tsx index c0904cb..0965e20 100644 --- a/dictation_client/src/pages/LicensePage/partnerLicense.tsx +++ b/dictation_client/src/pages/LicensePage/partnerLicense.tsx @@ -31,10 +31,10 @@ import { spliceHierarchicalElement, savePageInfo, getMyAccountAsync, + changeSelectedRow, } from "../../features/license/partnerLicense"; import { LicenseOrderPopup } from "./licenseOrderPopup"; -import LicenseSummary from "./licenseSummary"; -import { LicenseOrderHistory } from "../LicenseOrderHistoryPage"; +import { LicenseOrderHistory } from "./licenseOrderHistory"; import progress_activit from "../../assets/images/progress_activit.svg"; const PartnerLicense: React.FC = (): JSX.Element => { @@ -130,13 +130,21 @@ const PartnerLicense: React.FC = (): JSX.Element => { // licenseDetailsボタン押下時 // TODO 本PIBでは対象外のため、遷移先の内容の正しさは対象外 - const onClickViewDetails = () => ; + const onClickViewDetails = useCallback( + (value?: PartnerLicenseInfo) => { + dispatch(changeSelectedRow({ value })); + }, + [dispatch] + ); // orderHistoryボタン押下時 - // TODO 本PIBでは画面遷移までで、遷移先の内容の正しさは対象外 - const onClickOrderHistory = useCallback(() => { - setIslicenseOrderHistoryOpen(true); - }, [setIslicenseOrderHistoryOpen]); + const onClickOrderHistory = useCallback( + (value?: PartnerLicenseInfo) => { + dispatch(changeSelectedRow({ value })); + setIslicenseOrderHistoryOpen(true); + }, + [dispatch, setIslicenseOrderHistoryOpen] + ); // マウント時のみ実行 useEffect(() => { @@ -226,7 +234,7 @@ const PartnerLicense: React.FC = (): JSX.Element => { )} {islicenseOrderHistoryOpen && ( { + onReturn={() => { setIslicenseOrderHistoryOpen(false); }} /> @@ -287,7 +295,9 @@ const PartnerLicense: React.FC = (): JSX.Element => { // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions { + onClickOrderHistory(); + }} > {t( @@ -421,9 +431,9 @@ const PartnerLicense: React.FC = (): JSX.Element => { }`} onClick={() => { if (ownPartnerLicenseInfo.tier === 4) { - onClickViewDetails(); + onClickViewDetails(value); } else { - onClickOrderHistory(); + onClickOrderHistory(value); } }} >