details.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <!-- 人才库 - 人才详情 -->
  2. <template>
  3. <div class="d-flex justify-center mb-8">
  4. <div v-if="Object.keys(cvData).length" style="width: 940px;background: #fff;" class="px-8 pb-12 pt-3 my-n3 mr-3">
  5. <!-- 基本信息 -->
  6. <baseInfo class="mt-5" :data="cvData.person"></baseInfo>
  7. <!-- 个人优势 -->
  8. <div class="d-flex mt-8" v-if="cvData?.person?.advantage">
  9. <span class="mr-6">{{ $t('resume.personalAdvantages') }}</span>
  10. <div style="flex: 1; white-space: pre-line; font-size: 15px;" v-if="cvData?.person?.advantage" v-html="cvData.person.advantage"></div>
  11. </div>
  12. <!-- 职业技能 -->
  13. <div class="d-flex mt-8" v-if="cvData?.skillList?.length">
  14. <span class="mr-6">{{ $t('resume.vocationalSkills') }}</span>
  15. <vocationalSkills style="flex: 1;" :data="cvData.skillList"></vocationalSkills>
  16. </div>
  17. <!-- 求职意向 -->
  18. <div class="d-flex mt-8" v-if="cvData?.interestedList?.length">
  19. <span class="mr-6">{{ $t('resume.jobIntention') }}</span>
  20. <jobIntention style="flex: 1;" :data="cvData.interestedList"></jobIntention>
  21. </div>
  22. <!-- 工作经历 -->
  23. <div class="d-flex mt-8" v-if="cvData?.workList?.length">
  24. <span class="mr-6">{{ $t('resume.workExperience') }}</span>
  25. <workExperience style="flex: 1;" :data="cvData.workList"></workExperience>
  26. </div>
  27. <!-- 项目经历 -->
  28. <div class="d-flex mt-8" v-if="cvData?.projectList?.length">
  29. <span class="mr-6">{{ $t('resume.projectExperience') }}</span>
  30. <projectExperience style="flex: 1;" :data="cvData.projectList"></projectExperience>
  31. </div>
  32. <!-- 培训经历 -->
  33. <div class="d-flex mt-8" v-if="cvData?.trainList?.length">
  34. <span class="mr-6">{{ $t('resume.trainingExperience') }}</span>
  35. <trainingExperience style="flex: 1;" :data="cvData.trainList"></trainingExperience>
  36. </div>
  37. <!-- 教育经历 -->
  38. <div class="d-flex mt-8" v-if="cvData?.eduList?.length">
  39. <span class="mr-6">{{ $t('resume.educationExp') }}</span>
  40. <educationExp style="flex: 1;" :data="cvData.eduList"></educationExp>
  41. </div>
  42. </div>
  43. </div>
  44. </template>
  45. <script setup>
  46. defineOptions({name: 'enterprise-talentPool-details'})
  47. import baseInfo from './details/baseInfo.vue'
  48. import vocationalSkills from '@/views/recruit/enterprise/talentPool/components/details/vocationalSkills.vue'
  49. import jobIntention from '@/views/recruit/enterprise/talentPool/components/details/jobIntention.vue'
  50. import workExperience from '@/views/recruit/enterprise/talentPool/components/details/workExperience.vue'
  51. import projectExperience from '@/views/recruit/enterprise/talentPool/components/details/projectExperience.vue'
  52. import trainingExperience from '@/views/recruit/enterprise/talentPool/components/details/trainingExperience.vue'
  53. import educationExp from '@/views/recruit/enterprise/talentPool/components/details/educationExp.vue'
  54. import { getPersonCvDetail } from '@/api/enterprise'
  55. import { ref } from 'vue'
  56. import { useRouter, useRoute } from 'vue-router'
  57. const route = useRoute()
  58. const router = useRouter()
  59. // 获取人才详情
  60. const cvData = ref({})
  61. const getCvDetail = async () => {
  62. const { id } = route.query
  63. const { id: userId } = router.currentRoute.value.params
  64. if (!id || !userId) return
  65. const data = await getPersonCvDetail(userId, id)
  66. cvData.value = data
  67. }
  68. getCvDetail()
  69. </script>
  70. <style lang="scss" scoped>
  71. .operate {
  72. width: 240px;
  73. height: 500px; // 272px
  74. position: sticky;
  75. top: 60px;
  76. }
  77. </style>