@@ -130,7 +130,7 @@ export const SetupAxiosInterceptors = () => { | |||
return response; | |||
}, | |||
async (error) => { | |||
// ** const { config, response: { status } } = error | |||
// const { config, response: { status } } = error | |||
if (error.response.status === 401 && error.config.url !== apiPath + REFRESH_TOKEN) { | |||
// Make a request to refresh the access token | |||
const refreshToken = localStorage.getItem('refreshToken'); | |||
@@ -170,25 +170,27 @@ export const SetupAxiosInterceptors = () => { | |||
} | |||
// ** if (status === 401) { | |||
if (response.status === 401) { | |||
if (localStorage.getItem("expiredAlertShown") === null) { | |||
localStorage.setItem("expiredAlertShown", true) | |||
alert("登入驗證已過期,請重新登入。") | |||
} | |||
} | |||
// if (response.status === 401) { | |||
// if (localStorage.getItem("expiredAlertShown") === null) { | |||
// localStorage.setItem("expiredAlertShown", true) | |||
// alert("登入驗證已過期,請重新登入。") | |||
// } | |||
// } | |||
if (response && response.status === 401) { | |||
if (localStorage.getItem("expiredAlertShown") === null) { | |||
localStorage.setItem("expiredAlertShown", true) | |||
alert("登入驗證已過期,請重新登入。") | |||
} | |||
} | |||
// if (response && response.status === 401) { | |||
// if (localStorage.getItem("expiredAlertShown") === null) { | |||
// localStorage.setItem("expiredAlertShown", true) | |||
// alert("登入驗證已過期,請重新登入。") | |||
// } | |||
// } | |||
if (localStorage.getItem("expiredAlertShown")) { | |||
await dispatch(handleLogoutFunction()); | |||
await navigate('/login'); | |||
await window.location.reload(); | |||
} | |||
// console.log(error) | |||
} else { | |||
if (error.response.status === 401) { | |||
await dispatch(handleLogoutFunction()); | |||
@@ -196,8 +198,8 @@ export const SetupAxiosInterceptors = () => { | |||
// await window.location.reload(); | |||
} | |||
} | |||
} | |||
} | |||
return Promise.reject(error) | |||
} | |||
@@ -75,6 +75,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
}; | |||
function resetForm() { | |||
setStatus(ComboData.paymentStatus[0]); | |||
setMinDate(DateUtils.dateValue(new Date().setDate(new Date().getDate()-14))) | |||
setMaxDate(DateUtils.dateValue(new Date())) | |||
reset(); | |||
@@ -222,7 +222,7 @@ export default function SubmittedTab({ setCount, url }) { | |||
<FormattedMessage id={utils.getPaymentMethod(params.row.paymentMethod)} /><br /> | |||
<div> | |||
{dateStr(params.row.closingDateOff)} | |||
{params.row.paymentMethod=="online" ? " 2pm" | |||
{params.row.paymentMethod=="online" ? " 2:00pm" | |||
:params.row.paymentMethod=="demandNote" ? " 12:00pm" | |||
: " 12:30pm"} | |||
</div> | |||
@@ -16,7 +16,7 @@ const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingCo | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const UserAuthorityCard = ({ isCollectData, updateUserAuthList, userData, isNewRecord, editMode}) => { | |||
const UserAuthorityCard = ({ isCollectData, updateUserAuthList, userData, isNewRecord, editMode, createMode}) => { | |||
const [currentAuthData, setCurrentAuthData] = React.useState({}); | |||
const [onReady, setOnReady] = useState(false); | |||
const [selectedRow, setSelectedRow] = useState([]); | |||
@@ -59,7 +59,7 @@ const UserAuthorityCard = ({ isCollectData, updateUserAuthList, userData, isNewR | |||
userAuth={userData.authIds} | |||
setSelectedRow={setSelectedRow} | |||
isNewRecord={isNewRecord} | |||
editMode={editMode} | |||
editMode={createMode?true:editMode} | |||
/> | |||
<br/> | |||
</MainCard> | |||
@@ -15,7 +15,7 @@ const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingCo | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const UserGroupCard = ({isCollectData, updateUserGroupList,userData,isNewRecord,editMode}) => { | |||
const UserGroupCard = ({isCollectData, updateUserGroupList,userData,isNewRecord,editMode,createMode}) => { | |||
const [currentUserData, setCurrentUserData] = React.useState({}); | |||
const [onReady, setOnReady] = useState(false); | |||
const [selectedRow, setSelectedRow] = useState([]); | |||
@@ -58,7 +58,7 @@ const UserGroupCard = ({isCollectData, updateUserGroupList,userData,isNewRecord, | |||
userGroup={userData.groupIds} | |||
setSelectedRow={setSelectedRow} | |||
isNewRecord={isNewRecord} | |||
editMode={editMode} | |||
editMode={createMode?true:editMode} | |||
/> | |||
<br/> | |||
</MainCard> | |||
@@ -22,7 +22,7 @@ import VisibilityOff from '@mui/icons-material/VisibilityOff'; | |||
import { useIntl } from "react-intl"; | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const UserInformationCard = ({ isCollectData, updateUserObject, userData, isNewRecord, editMode}) => { | |||
const UserInformationCard = ({ isCollectData, updateUserObject, userData, isNewRecord, editMode, createMode}) => { | |||
//const params = useParams(); | |||
const [currentUserData, setCurrentUserData] = React.useState({}); | |||
const [locked, setLocked] = useState(false); | |||
@@ -205,7 +205,7 @@ const UserInformationCard = ({ isCollectData, updateUserObject, userData, isNewR | |||
value: currentUserData.enName, | |||
})} | |||
id='enName' | |||
disabled={!editMode} | |||
disabled={createMode?false:!editMode} | |||
/> | |||
</FormControl> | |||
</Grid> | |||
@@ -229,7 +229,7 @@ const UserInformationCard = ({ isCollectData, updateUserObject, userData, isNewR | |||
value: currentUserData.post, | |||
})} | |||
id='post' | |||
disabled={!editMode} | |||
disabled={createMode?false:!editMode} | |||
/> | |||
</FormControl> | |||
</Grid> | |||
@@ -253,7 +253,7 @@ const UserInformationCard = ({ isCollectData, updateUserObject, userData, isNewR | |||
value: currentUserData.emailAddress, | |||
})} | |||
id='emailAddress' | |||
disabled={!editMode} | |||
disabled={createMode?false:!editMode} | |||
/> | |||
</FormControl> | |||
</Grid> | |||
@@ -55,6 +55,7 @@ const UserMaintainPage = () => { | |||
const [isNewRecord, setIsNewRecord] = useState(false); | |||
const [refUserData, setRefUserData] = useState({}); | |||
const [editMode, setEditMode] = useState(false); | |||
const [createMode, setCreateMode] = useState(false); | |||
function updateUserObject(userData) { | |||
setEditedCustomerData(userData); | |||
@@ -120,6 +121,7 @@ const UserMaintainPage = () => { | |||
} | |||
); | |||
setIsNewRecord(true); | |||
setCreateMode(true) | |||
} | |||
}, []); | |||
@@ -203,11 +205,14 @@ const UserMaintainPage = () => { | |||
navigate('/userSearchview'); | |||
} | |||
}) | |||
.catch(error => { | |||
console.log(error); | |||
return false; | |||
}); | |||
} | |||
.catch(function (error){ | |||
// console.log(error.response.data) | |||
if(error.response.data.error == "USERNAME_NOT_AVAILABLE"){ | |||
alert("Username is already used.") | |||
} | |||
return false; | |||
}); | |||
} | |||
} | |||
setUserConfirm(false); | |||
}, [editedCustomerData, userGroupData, userAuthData]); | |||
@@ -257,65 +262,84 @@ const UserMaintainPage = () => { | |||
isGrantedAny(["MAINTAIN_USER"]) ? | |||
<Grid item s={12} md={12} lg={12} sx={{ mt: 2, mb: 2 }} alignItems={"start"} justifyContent="center"> | |||
<Grid container maxWidth justifyContent="flex-start"> | |||
{editMode ? | |||
<ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
variant="contained" | |||
onClick={loadData} | |||
color="cancel" | |||
> | |||
Reset & Back | |||
</Button> | |||
</Grid> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
size="large" | |||
variant="contained" | |||
type="submit" | |||
sx={{ | |||
textTransform: 'capitalize', | |||
alignItems: 'end' | |||
}} | |||
onClick={submitData} | |||
> | |||
Save | |||
</Button> | |||
</Grid> | |||
</ThemeProvider> : | |||
<ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
variant="contained" | |||
onClick={onEditClick} | |||
> | |||
Edit | |||
</Button> | |||
</Grid> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
size="large" | |||
variant="contained" | |||
sx={{ | |||
textTransform: 'capitalize', | |||
alignItems: 'end' | |||
}} | |||
disabled={isNewRecord} | |||
onClick={handleDeleteClick} | |||
color='error' | |||
> | |||
Delete User | |||
</Button> | |||
<GeneralConfirmWindow | |||
isWindowOpen={isWindowOpen} | |||
title={"Attention"} | |||
content={`Confirm to delete User "${userData.data.username}" ?`} | |||
onNormalClose={handleClose} | |||
onConfirmClose={deleteData} | |||
/> | |||
</Grid> | |||
</ThemeProvider> | |||
{ | |||
createMode? | |||
<ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
size="large" | |||
variant="contained" | |||
type="submit" | |||
sx={{ | |||
textTransform: 'capitalize', | |||
alignItems: 'end' | |||
}} | |||
onClick={submitData} | |||
> | |||
Create User | |||
</Button> | |||
</Grid> | |||
</ThemeProvider> | |||
: | |||
editMode ? | |||
<ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
variant="contained" | |||
onClick={loadData} | |||
color="cancel" | |||
> | |||
Reset & Back | |||
</Button> | |||
</Grid> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
size="large" | |||
variant="contained" | |||
type="submit" | |||
sx={{ | |||
textTransform: 'capitalize', | |||
alignItems: 'end' | |||
}} | |||
onClick={submitData} | |||
> | |||
Save | |||
</Button> | |||
</Grid> | |||
</ThemeProvider> | |||
: | |||
<ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
variant="contained" | |||
onClick={onEditClick} | |||
> | |||
Edit | |||
</Button> | |||
</Grid> | |||
<Grid item sx={{ ml: 3, mr: 3 }}> | |||
<Button | |||
size="large" | |||
variant="contained" | |||
sx={{ | |||
textTransform: 'capitalize', | |||
alignItems: 'end' | |||
}} | |||
disabled={isNewRecord} | |||
onClick={handleDeleteClick} | |||
color='error' | |||
> | |||
Delete User | |||
</Button> | |||
<GeneralConfirmWindow | |||
isWindowOpen={isWindowOpen} | |||
title={"Attention"} | |||
content={`Confirm to delete User "${userData.data.username}" ?`} | |||
onNormalClose={handleClose} | |||
onConfirmClose={deleteData} | |||
/> | |||
</Grid> | |||
</ThemeProvider> | |||
} | |||
</Grid> | |||
</Grid> | |||
@@ -332,6 +356,7 @@ const UserMaintainPage = () => { | |||
isCollectData={isCollectData} | |||
isNewRecord={isNewRecord} | |||
editMode={editMode} | |||
createMode={createMode} | |||
/> | |||
</Box> | |||
</Grid> | |||
@@ -344,6 +369,7 @@ const UserMaintainPage = () => { | |||
isCollectData={isCollectData} | |||
isNewRecord={isNewRecord} | |||
editMode={editMode} | |||
createMode={createMode} | |||
/> | |||
</Box> | |||
</Grid> | |||
@@ -358,6 +384,7 @@ const UserMaintainPage = () => { | |||
isCollectData={isCollectData} | |||
isNewRecord={isNewRecord} | |||
editMode={editMode} | |||
createMode={createMode} | |||
/> | |||
</Box> | |||
</Grid> | |||