oura.a 709db0d2ec Merged PR 187: 画面実装(カードライセンス発行PU)
## 概要
[Task1991: 画面実装(カードライセンス発行PU)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/1991)

カードライセンス発行ポップアップを新規作成。
上記ポップアップを起動するボタンを第1~4階層用のライセンスページに仮配置。

## レビューポイント
特筆するものはなし。
ライセンスページのポップアップ起動ボタンは仮配置なので、レビュー対象外でお願いします。

## UIの変更
https://ndstokyo.sharepoint.com/:i:/r/sites/Piranha/Shared%20Documents/General/OMDS/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88/Task1991/%E3%82%AB%E3%83%BC%E3%83%89%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E7%99%BA%E8%A1%8CPU.PNG?csf=1&web=1&e=NtuRgu

## 動作確認状況
ローカルで動作確認済み

## 補足
・csvファイルダウンロード確認のポップアップは、現在は表示しないつくりになっています。PBIの受け入れ条件には表示するように記載があるのですが、月曜日のDSで奥澤さんに確認予定です。
・ライセンス数入力のテキストボックスで「.」「-」「+」が入力できてしまう事象がありました。こちらですがライセンス注文ポップアップでも同様の仕様となっているため、本PBI内の別タスクで纏めての修正とさせてください。
2023-07-03 05:35:19 +00:00

54 lines
1.6 KiB
TypeScript

import { PayloadAction, createSlice } from "@reduxjs/toolkit";
import { LicenseCardIssuesState } from "./state";
import { createCardLicenseAsync } from "./operations";
const initialState: LicenseCardIssuesState = {
apps: {
numberOfCreateLicenses: 0,
},
};
export const licenseCardSlice = createSlice({
name: "licenseCard",
initialState,
reducers: {
changeNumberOfCreateLicenses: (
state,
action: PayloadAction<{ numberOfCreateLicenses: number }>
) => {
const { numberOfCreateLicenses } = action.payload;
state.apps.numberOfCreateLicenses = numberOfCreateLicenses;
},
cleanupApps: (state) => {
state.apps = initialState.apps;
},
},
extraReducers: (builder) => {
builder.addCase(createCardLicenseAsync.fulfilled, (state, action) => {
// csvファイルダウンロード処理
// ファイル名は「{発行日時}_licenseCard.csv」とする
const currentDate = new Date();
const currentDateString = currentDate
.toISOString()
.replace(/[^0-9]/g, "")
.slice(0, -3);
const filename = `${currentDateString}_licenseCard.csv`;
const blob = new Blob([action.payload.cardLicenseKeys.toString()], {
type: "mime",
});
const blobURL = window.URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = blobURL;
a.download = filename;
document.body.appendChild(a);
a.click();
a.parentNode?.removeChild(a);
});
},
});
export const { changeNumberOfCreateLicenses, cleanupApps } =
licenseCardSlice.actions;
export default licenseCardSlice.reducer;