浏览代码

add import OS timesheets function

tags/Baseline_30082024_FRONTEND_UAT
cyril.tsui 1年前
父节点
当前提交
c05a5f6ec0
共有 2 个文件被更改,包括 44 次插入10 次删除
  1. +12
    -0
      src/app/api/timesheets/actions.ts
  2. +32
    -10
      src/components/ExcelFileImport/ExcelFileImport.tsx

+ 12
- 0
src/app/api/timesheets/actions.ts 查看文件

@@ -159,6 +159,18 @@ export const importTimesheets = async (data: FormData) => {
return importTimesheets; return importTimesheets;
}; };


export const importOSTimesheets = async (data: FormData) => {
const importTimesheets = await serverFetchString<string>(
`${BASE_API_URL}/timesheets/import-OS`,
{
method: "POST",
body: data,
},
);

return importTimesheets;
};

export const importLeaves = async (data: FormData) => { export const importLeaves = async (data: FormData) => {
const importLeaves = await serverFetchString<string>( const importLeaves = await serverFetchString<string>(
`${BASE_API_URL}/timesheets/import-leave`, `${BASE_API_URL}/timesheets/import-leave`,


+ 32
- 10
src/components/ExcelFileImport/ExcelFileImport.tsx 查看文件

@@ -6,7 +6,7 @@ import { Button, Grid, Stack } from "@mui/material";
import React, { ChangeEvent, useCallback } from "react"; import React, { ChangeEvent, useCallback } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { errorDialogWithContent, submitDialog, successDialog, successDialogWithContent } from "../Swal/CustomAlerts"; import { errorDialogWithContent, submitDialog, successDialog, successDialogWithContent } from "../Swal/CustomAlerts";
import { importLeaves, importTimesheets, rearrangeTimesheets } from "@/app/api/timesheets/actions";
import { importLeaves, importOSTimesheets, importTimesheets, rearrangeTimesheets } from "@/app/api/timesheets/actions";


interface Props { interface Props {
} }
@@ -34,6 +34,9 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
case "importTimesheet": case "importTimesheet":
response = await importTimesheets(formData) response = await importTimesheets(formData)
break; break;
case "importOSTimesheet":
response = await importOSTimesheets(formData)
break;
case "importLeave": case "importLeave":
response = await importLeaves(formData) response = await importLeaves(formData)
break; break;
@@ -67,23 +70,23 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
response = await rearrangeTimesheets() response = await rearrangeTimesheets()
break; break;
} }
if (response.includes("Rearrange success")) { if (response.includes("Rearrange success")) {
successDialogWithContent(t("Rearrange Success"), t(`${response}`), t) successDialogWithContent(t("Rearrange Success"), t(`${response}`), t)
} else { } else {
errorDialogWithContent(t("Rearrange Fail"), t(`${response}`), t) errorDialogWithContent(t("Rearrange Fail"), t(`${response}`), t)
} }
}, t, }, t,
{
title: "Do you want to rearrange?",
confirmButtonText: "Rearrange"
})
{
title: "Do you want to rearrange?",
confirmButtonText: "Rearrange"
})


} catch (err) { } catch (err) {
console.log(err) console.log(err)
return false return false
} }
}, []) }, [])


return ( return (
@@ -99,7 +102,7 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
<input <input
id='importProject' id='importProject'
type='file' type='file'
accept='.xlsx, .csv'
accept='.xlsx'
hidden hidden
onChange={(event) => { onChange={(event) => {
handleExcelFileImportClick(event) handleExcelFileImportClick(event)
@@ -118,7 +121,7 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
<input <input
id='importTimesheet' id='importTimesheet'
type='file' type='file'
accept='.xlsx, .csv'
accept='.xlsx'
hidden hidden
onChange={(event) => { onChange={(event) => {
handleExcelFileImportClick(event) handleExcelFileImportClick(event)
@@ -127,6 +130,25 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
{t("Import Timesheet")} {t("Import Timesheet")}
</Button> </Button>
</Grid> </Grid>
<Grid container>
<Button
variant="contained"
color="info"
startIcon={<FileUpload />}
component="label"
>
<input
id='importOSTimesheet'
type='file'
accept='.xlsx'
hidden
onChange={(event) => {
handleExcelFileImportClick(event)
}}
/>
{t("Import OS Timesheet")}
</Button>
</Grid>
<Grid container> <Grid container>
<Button <Button
id="rearrangeTimesheet" id="rearrangeTimesheet"
@@ -149,7 +171,7 @@ const ExcelFileImport: React.FC<Props> = async ({ }) => {
<input <input
id='importLeave' id='importLeave'
type='file' type='file'
accept='.xlsx, .csv'
accept='.xlsx'
hidden hidden
onChange={(event) => { onChange={(event) => {
handleExcelFileImportClick(event) handleExcelFileImportClick(event)


正在加载...
取消
保存