jobNotiModal.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <template>
  2. <v-dialog v-model="isNotiPop" persistent width="32.81rem">
  3. <div class="v-common-dialog-wrapper custom-dialog">
  4. <div class="modal-tit">
  5. <strong>공지</strong>
  6. <button class="btn-close" @click="fnClose()"></button>
  7. </div>
  8. <div class="v-common-dialog-content pa-0">
  9. <div class="notice-img">
  10. <div class="notice-info">
  11. <strong>{{ jobNotiObj.title }}</strong>
  12. <p>{{ $dayjs(jobNotiObj.stDatetime).format('YYYY-MM-DD HH:mm:ss') }} ~ {{ $dayjs(jobNotiObj.edDatetime).format('YYYY-MM-DD HH:mm:ss') }}</p>
  13. </div>
  14. </div>
  15. <div class="notice-txt">
  16. <pre>
  17. {{ jobNotiObj.content }}
  18. </pre>
  19. </div>
  20. </div>
  21. <div class="btn-wrap">
  22. <v-btn class="custom-btn btn-blue mini" @click="fnTest()"> <i class="ico"></i>다시보지않기</v-btn>
  23. <v-btn class="custom-btn btn-blue mini" @click="fnClose()"> <i class="ico"></i>확인</v-btn>
  24. </div>
  25. </div>
  26. </v-dialog>
  27. </template>
  28. <script setup>
  29. import useApi from "@/composables/useApi";
  30. import useAxios from "@/composables/useAxios";
  31. import useErrorHandler from "@/composables/useErrorHandler";
  32. import useUtil from '@/composables/useUtil';
  33. import { useI18n } from "vue-i18n";
  34. /***********************
  35. * plugins inject
  36. ************************/
  37. const { $toast, $log, $dayjs, $eventBus } = useNuxtApp();
  38. const i18n = useI18n();
  39. // 참조가능 데이터 설정
  40. onMounted(() => {
  41. fnInit()
  42. })
  43. /***********************
  44. * data & created
  45. ************************/
  46. const pageId = "homeJobNoti"
  47. const jobNotiObj = ref({})
  48. const isNotiPop = ref(false)
  49. let doNotShowNoti = ref(true)
  50. /***********************
  51. * Methods
  52. ************************/
  53. function fnInit(){
  54. // 긴급공지 조회
  55. fnJobNotiCheck()
  56. }
  57. /**
  58. * @API
  59. * 최종 로그인 전 긴급공지에 대한 정보를 가져온다.
  60. */
  61. function fnJobNotiCheck() {
  62. useAxios().get(useApi.getNotice).then((res) => {
  63. $log.debug("[login][fnJobNotiCheck][success]")
  64. let data = res.data.data
  65. let isNotiYn = data.useYN === 'Y' ? true : false
  66. jobNotiObj.value = data
  67. doNotShowNoti.value = useUtil.isNull(localStorage.getItem('jobNotiYN'))
  68. if(doNotShowNoti.value) {
  69. if(isNotiYn) {
  70. isNotiPop.value = true
  71. } else {
  72. isNotiPop.value = false
  73. }
  74. } else {
  75. isNotiPop.value = false
  76. }
  77. }).catch((error)=>{
  78. $log.debug("[login][fnJobNotiCheck][error]")
  79. useErrorHandler().fnSetCommErrorHandle(error)
  80. }).finally(()=>{
  81. $log.debug("[login][fnJobNotiCheck][finished]")
  82. })
  83. }
  84. function fnClose() {
  85. isNotiPop.value = false
  86. }
  87. function fnTest() {
  88. isNotiPop.value = false
  89. localStorage.setItem('jobNotiYN', false)
  90. }
  91. </script>