handleDeliveryCom.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <!-- 选择简历 -->
  2. <template>
  3. <selectResumeDialog v-model="showResume" :list="resumeList" @submit="handleSubmit" @close="handleClose"></selectResumeDialog>
  4. <CtDialog
  5. :visible="showUploadFile"
  6. :widthType="2"
  7. titleClass="text-h6"
  8. title="简历投递"
  9. @close="showQuickResumeDialog = false"
  10. @submit="null"
  11. >
  12. <DeliveryForm ref="deliveryForm"></DeliveryForm>
  13. </CtDialog>
  14. </template>
  15. <script setup>
  16. defineOptions({name: 'shareJob-handleDeliveryCom'})
  17. import { ref } from 'vue'
  18. import selectResumeDialog from '@/views/recruit/personal/position/components/jobDetails/selectResumeDialog'
  19. import Snackbar from '@/plugins/snackbar'
  20. import { useI18n } from '@/hooks/web/useI18n'; const { t } = useI18n()
  21. import { jobCvRelCheckSend, jobCvRelSend } from '@/api/position'
  22. import { hireJobCvDelivery } from '@/api/recruit/personal/shareJob'
  23. import DeliveryForm from './deliveryForm.vue'
  24. import { getPersonResumeCv } from '@/api/resume'
  25. const props = defineProps({
  26. jobId: {
  27. type: String,
  28. default: ''
  29. },
  30. hire: {
  31. type: Boolean,
  32. default: false
  33. },
  34. userId: {
  35. type: String,
  36. default: ''
  37. }
  38. })
  39. const showResume = ref(false)
  40. const showUploadFile = ref(false)
  41. const resumeList = ref([])
  42. const inspectionProcess = async () => {
  43. try {
  44. // 已登录情况下: 1.是否投递过简历 2.是否有上传简历 3.已登录但未上传过简历->快速投递
  45. const res = await jobCvRelCheckSend({ jobId: props.jobId }) //是否投递过简历
  46. if (res) return Snackbar.warning(t('resume.alreadyResume'))
  47. //
  48. const data = await getPersonResumeCv()// 简历列表
  49. resumeList.value = data
  50. //
  51. if (data?.length) showResume.value = true // 简历选择
  52. else showUploadFile.value = true // 已登录但未上传简历
  53. } catch (error) {
  54. console.error('error', error)
  55. }
  56. }
  57. inspectionProcess()
  58. // 简历投递
  59. const selectResume = ref()
  60. const handleClose = () => {
  61. showResume.value = false
  62. selectResume.value = null
  63. }
  64. const handleSubmit = async (val) =>{
  65. selectResume.value = val
  66. if (!selectResume.value) return Snackbar.warning(t('resume.selectResumeToSubmit'))
  67. const obj = resumeList.value.find(e => e.id === selectResume.value)
  68. if (!obj) return Snackbar.warning(t('resume.selectedResumeNotExist'))
  69. // 区分普通职位跟众聘职位投递
  70. if (props.hire) await hireJobCvDelivery({ jobId: props.jobId, recommendUserId: props.userId, url: obj.url })
  71. else await jobCvRelSend({ jobId: props.jobId, title: obj.title, url: obj.url })
  72. setTimeout(() => {
  73. Snackbar.success(t('resume.deliverySuccess'))
  74. }, 3000)
  75. handleClose()
  76. }
  77. </script>
  78. <style lang="scss" scoped>
  79. </style>