|
|
@@ -49,6 +49,10 @@ const UserMaintainPage = () => { |
|
|
const [userGroupData, setUserGroupData] = useState([]); |
|
|
const [userGroupData, setUserGroupData] = useState([]); |
|
|
const [userAuthData, setUserAuthData] = useState([]); |
|
|
const [userAuthData, setUserAuthData] = useState([]); |
|
|
const saveInProgressRef = useRef(false); |
|
|
const saveInProgressRef = useRef(false); |
|
|
|
|
|
const userAuthDataRef = useRef([]); |
|
|
|
|
|
const deletedAuthListRef = useRef([]); |
|
|
|
|
|
const groupMemberRef = useRef([]); |
|
|
|
|
|
const deletedUserListRef = useRef([]); |
|
|
const [groupMember, setGroupMember] = useState([]); |
|
|
const [groupMember, setGroupMember] = useState([]); |
|
|
const [isNewRecord, setIsNewRecord] = useState(false); |
|
|
const [isNewRecord, setIsNewRecord] = useState(false); |
|
|
const [deletedUserList, setDeletedUserList] = useState([]); |
|
|
const [deletedUserList, setDeletedUserList] = useState([]); |
|
|
@@ -84,13 +88,21 @@ const UserMaintainPage = () => { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function updateGroupMember(groupMember) { |
|
|
function updateGroupMember(groupMember) { |
|
|
setGroupMember(groupMember.currentList); |
|
|
|
|
|
setDeletedUserList(groupMember.deletedList); |
|
|
|
|
|
|
|
|
const currentList = groupMember.currentList || []; |
|
|
|
|
|
const deletedList = groupMember.deletedList || []; |
|
|
|
|
|
groupMemberRef.current = currentList; |
|
|
|
|
|
deletedUserListRef.current = deletedList; |
|
|
|
|
|
setGroupMember(currentList); |
|
|
|
|
|
setDeletedUserList(deletedList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function updateUserAuthList(userAuthData) { |
|
|
function updateUserAuthList(userAuthData) { |
|
|
setUserAuthData(userAuthData.currentList); |
|
|
|
|
|
setDeletedAuthList(userAuthData.deletedList); |
|
|
|
|
|
|
|
|
const currentList = userAuthData.currentList || []; |
|
|
|
|
|
const deletedList = userAuthData.deletedList || []; |
|
|
|
|
|
userAuthDataRef.current = currentList; |
|
|
|
|
|
deletedAuthListRef.current = deletedList; |
|
|
|
|
|
setUserAuthData(currentList); |
|
|
|
|
|
setDeletedAuthList(deletedList); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const submitData = async () => { |
|
|
const submitData = async () => { |
|
|
@@ -106,19 +118,38 @@ const UserMaintainPage = () => { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
const latestGroupFormData = getLatestGroupFormData(); |
|
|
const latestGroupFormData = getLatestGroupFormData(); |
|
|
const finalDeletedUserList = getDeletedRecordWithRefList(deletedUserList, getIdList(groupMember)); |
|
|
|
|
|
|
|
|
const latestGroupMember = groupMemberRef.current; |
|
|
|
|
|
const latestAuthIds = userAuthDataRef.current; |
|
|
|
|
|
const latestDeletedAuthIds = deletedAuthListRef.current; |
|
|
|
|
|
const finalDeletedUserList = getDeletedRecordWithRefList( |
|
|
|
|
|
deletedUserListRef.current, |
|
|
|
|
|
getIdList(latestGroupMember) |
|
|
|
|
|
); |
|
|
const response = await axios.post(POST_AND_UPDATE_USER_GROUP, { |
|
|
const response = await axios.post(POST_AND_UPDATE_USER_GROUP, { |
|
|
id: parseInt(params.id) !== -1 ? parseInt(params.id) : null, |
|
|
id: parseInt(params.id) !== -1 ? parseInt(params.id) : null, |
|
|
name: latestGroupFormData.userGroupName, |
|
|
name: latestGroupFormData.userGroupName, |
|
|
description: latestGroupFormData.description, |
|
|
description: latestGroupFormData.description, |
|
|
addUserIds: getIdList(groupMember), |
|
|
|
|
|
|
|
|
addUserIds: getIdList(latestGroupMember), |
|
|
removeUserIds: finalDeletedUserList, |
|
|
removeUserIds: finalDeletedUserList, |
|
|
addAuthIds: userAuthData, |
|
|
|
|
|
removeAuthIds: deletedAuthList, |
|
|
|
|
|
|
|
|
addAuthIds: latestAuthIds, |
|
|
|
|
|
removeAuthIds: latestDeletedAuthIds, |
|
|
}); |
|
|
}); |
|
|
if (response.status === 200) { |
|
|
if (response.status === 200) { |
|
|
navigate('/usergroupSearchview'); |
|
|
|
|
|
notifySaveSuccess(); |
|
|
notifySaveSuccess(); |
|
|
|
|
|
const savedId = response.data?.id; |
|
|
|
|
|
const currentId = parseInt(params.id); |
|
|
|
|
|
if ((currentId === -1 || Number.isNaN(currentId)) && savedId) { |
|
|
|
|
|
navigate(`/userGroup/${savedId}`, { replace: true }); |
|
|
|
|
|
await loadGroupData(savedId); |
|
|
|
|
|
} else { |
|
|
|
|
|
await loadGroupData(currentId); |
|
|
|
|
|
} |
|
|
|
|
|
setIsNewRecord(false); |
|
|
|
|
|
setEditMode(false); |
|
|
|
|
|
deletedUserListRef.current = []; |
|
|
|
|
|
deletedAuthListRef.current = []; |
|
|
|
|
|
setDeletedUserList([]); |
|
|
|
|
|
setDeletedAuthList([]); |
|
|
} |
|
|
} |
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
console.log(error); |
|
|
console.log(error); |
|
|
@@ -177,14 +208,20 @@ const UserMaintainPage = () => { |
|
|
return true; |
|
|
return true; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
const loadGroupData = async (groupId) => { |
|
|
|
|
|
const response = await axios.get(`${GET_GROUP_LIST_PATH}/${groupId}`); |
|
|
|
|
|
if (response.status === 200) { |
|
|
|
|
|
setUserGroupData(response.data); |
|
|
|
|
|
const loadedAuthIds = response.data?.authIds || []; |
|
|
|
|
|
userAuthDataRef.current = loadedAuthIds; |
|
|
|
|
|
setUserAuthData(loadedAuthIds); |
|
|
|
|
|
} |
|
|
|
|
|
return response; |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
useEffect(() => { |
|
|
if (params.id > 0) { |
|
|
if (params.id > 0) { |
|
|
axios.get(`${GET_GROUP_LIST_PATH}/${params.id}`) |
|
|
|
|
|
.then((response) => { |
|
|
|
|
|
if (response.status === 200) { |
|
|
|
|
|
setUserGroupData(response.data); |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
loadGroupData(params.id) |
|
|
.catch(error => { |
|
|
.catch(error => { |
|
|
console.log(error); |
|
|
console.log(error); |
|
|
return false; |
|
|
return false; |
|
|
|