오디션 지원 취소기능 적용

This commit is contained in:
Yu Sung 2025-01-08 15:25:31 +09:00
parent 13958733a7
commit 6edd6c1558
2 changed files with 83 additions and 1 deletions

View File

@ -48,7 +48,12 @@ async function getAuditionApplicantList(id, page) {
return Vue.axios.get("/admin/audition/role/" + id + "/applicant?page=" + (page - 1) + "&size=20"); return Vue.axios.get("/admin/audition/role/" + id + "/applicant?page=" + (page - 1) + "&size=20");
} }
async function deleteAuditionApplicant(id) {
return Vue.axios.delete("/admin/audition/applicant/" + id);
}
export { export {
getAuditionList, createAudition, updateAudition, getAuditionDetail, getAuditionList, createAudition, updateAudition, getAuditionDetail,
createAuditionRole, updateAuditionRole, getAuditionRoleDetail, getAuditionApplicantList createAuditionRole, updateAuditionRole, getAuditionRoleDetail, getAuditionApplicantList,
deleteAuditionApplicant
} }

View File

@ -63,6 +63,9 @@
<th class="text-center"> <th class="text-center">
추천수 추천수
</th> </th>
<th class="text-center">
관리
</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -95,6 +98,14 @@
/> />
</td> </td>
<td>{{ item.voteCount }}</td> <td>{{ item.voteCount }}</td>
<td>
<v-btn
:disabled="is_loading"
@click="deleteConfirm(item)"
>
삭제
</v-btn>
</td>
</tr> </tr>
</tbody> </tbody>
</template> </template>
@ -114,6 +125,36 @@
</v-col> </v-col>
</v-row> </v-row>
</v-container> </v-container>
<v-dialog
v-model="show_delete_confirm_dialog"
max-width="400px"
persistent
>
<v-card>
<v-card-text />
<v-card-text>
"{{ selected_audition_role_applicant.nickname }}"님의 오디션지원을 취소하시겠습니까?
</v-card-text>
<v-card-actions v-show="!is_loading">
<v-spacer />
<v-btn
color="blue darken-1"
text
@click="deleteCancel"
>
취소
</v-btn>
<v-btn
color="blue darken-1"
text
@click="deleteAuditionApplicant"
>
확인
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</div> </div>
</template> </template>
@ -138,6 +179,9 @@ export default {
audition_role_detail: {}, audition_role_detail: {},
audition_role_applicant_list: [], audition_role_applicant_list: [],
selected_audition_role_applicant: {},
show_delete_confirm_dialog: false,
page: 1, page: 1,
total_page: 0, total_page: 0,
} }
@ -164,6 +208,16 @@ export default {
this.$dialog.notify.success(message) this.$dialog.notify.success(message)
}, },
deleteConfirm(item) {
this.selected_audition_role_applicant = item
this.show_delete_confirm_dialog = true
},
deleteCancel() {
this.selected_audition_role_applicant = {}
this.show_delete_confirm_dialog = false
},
isValidUrl(string) { isValidUrl(string) {
try { try {
new URL(string); // URL URL new URL(string); // URL URL
@ -236,6 +290,29 @@ export default {
async next() { async next() {
await this.getAuditionRoleApplicant() await this.getAuditionRoleApplicant()
}, },
async deleteAuditionApplicant() {
if (this.is_loading) return;
this.is_loading = true
try {
const res = await api.deleteAuditionApplicant(this.selected_audition_role_applicant.applicantId)
if (res.status === 200 && res.data.success === true) {
this.show_delete_confirm_dialog = false
this.notifySuccess(res.data.message || '오디션 지원이 취소 되었습니다.')
this.audition_role_applicant_list = []
this.page = 1
await this.getAuditionRoleApplicant()
} else {
this.notifyError(res.data.message || '알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.')
}
} catch (e) {
this.notifyError('알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.')
} finally {
this.is_loading = false
}
},
} }
} }
</script> </script>