1414 v-model =" userRegistrationForm.nickname"
1515 :placeholderText =" '회원의 아이디를 입력해주세요'"
1616 :isEdit =" true"
17+ :is-invalidate =" isInvalidate"
1718 :labelName =" '아이디'" />
1819 <div class =" flex w-full gap-2" >
1920 <RequestTaskInput
2829 :is-edit =" true"
2930 :is-not-required =" false" />
3031 </div >
32+ <DepartmentDropDown
33+ v-model =" userRegistrationForm.departmentId"
34+ :is-invalidate =" isInvalidate" />
3135 <RequestTaskDropdown
3236 v-model =" userRegistrationForm.role"
3337 :options =" RoleKeys"
3438 :label-name =" '역할'"
39+ :is-invalidate =" isInvalidate"
3540 :placeholderText =" '회원의 역할을 선택해주세요'" />
3641 <FormCheckbox
3742 v-if =" isManager"
4045 :checkButtonName =" '허용'"
4146 :isDisabled =" !isManager"
4247 :isChecked =" userRegistrationForm.isReviewer" />
43- <DepartmentDropDown v-model =" userRegistrationForm.departmentId" />
4448 <RequestTaskInput
4549 v-model =" userRegistrationForm.departmentRole"
4650 :placeholderText =" '회원의 직무를 입력해주세요'"
@@ -67,19 +71,22 @@ import { computed, onMounted, ref, watch } from 'vue'
6771import { useRoute , useRouter } from ' vue-router'
6872import FormButtonContainer from ' ../common/FormButtonContainer.vue'
6973import FormCheckbox from ' ../common/FormCheckbox.vue'
74+ import ModalView from ' ../common/ModalView.vue'
7075import RequestTaskDropdown from ' ../request-task/RequestTaskDropdown.vue'
7176import RequestTaskInput from ' ../request-task/RequestTaskInput.vue'
7277import DepartmentDropDown from ' ./DepartmentDropDown.vue'
73- import ModalView from ' ../common/ModalView.vue'
7478
7579const route = useRoute ()
7680const router = useRouter ()
7781
7882const userRegistrationForm = ref (INITIAL_USER_REGISTRATION )
79- const isManager = computed (() => userRegistrationForm . value . role === ' 담당자 ' )
83+ const isInvalidate = ref ( ' ' )
8084const userId = ref (route .query .id )
8185const userData = ref <UserRegistrationProps | null >(null )
8286const isModalVisible = ref (false )
87+ const isError = ref (false )
88+
89+ const isManager = computed (() => userRegistrationForm .value .role === ' 담당자' )
8390
8491watch (
8592 () => router .currentRoute .value .query .id ,
@@ -108,16 +115,26 @@ const handleCancel = async () => {
108115}
109116
110117const handleSubmit = async () => {
111- if (typeof userId .value === ' string' ) {
112- const userData = {
113- role: RoleTypeMapping [userRegistrationForm .value .role ],
114- name: userRegistrationForm .value .name ,
115- isReviewer: isManager .value ? userRegistrationForm .value .isReviewer : false ,
116- departmentId: userRegistrationForm .value .departmentId ,
117- departmentRole: userRegistrationForm .value .departmentRole
118+ try {
119+ if (typeof userId .value === ' string' ) {
120+ const userData = {
121+ role: RoleTypeMapping [userRegistrationForm .value .role ],
122+ name: userRegistrationForm .value .name ,
123+ isReviewer: isManager .value ? userRegistrationForm .value .isReviewer : false ,
124+ departmentId: userRegistrationForm .value .departmentId ,
125+ departmentRole: userRegistrationForm .value .departmentRole
126+ }
127+ await updateMemberAdmin (userId .value , userData )
128+ isModalVisible .value = true
129+ }
130+ } catch (error ) {
131+ if (error instanceof Error && error .message === ' MEMBER_DUPLICATED' ) {
132+ isInvalidate .value = ' duplicate'
133+ } else if (error instanceof Error && error .message === ' MEMBER_REVIEWER' ) {
134+ isInvalidate .value = ' reviewer'
135+ } else {
136+ isError .value = true
118137 }
119- await updateMemberAdmin (userId .value , userData )
120- isModalVisible .value = true
121138 }
122139}
123140 </script >
0 commit comments