|
@@ -6,7 +6,7 @@
|
|
<h1>{{ formatName(info.name) }}</h1>
|
|
<h1>{{ formatName(info.name) }}</h1>
|
|
<svg-icon v-if="info?.hire" class="ml-5" name="pin" size="50"></svg-icon>
|
|
<svg-icon v-if="info?.hire" class="ml-5" name="pin" size="50"></svg-icon>
|
|
</div>
|
|
</div>
|
|
- <v-btn v-if="showContentRight" color="primary" variant="text" size="large" @click.stop="handleReturn" prepend-icon="mdi-chevron-triple-left">返回上一页</v-btn>
|
|
|
|
|
|
+ <v-btn v-if="showContentRight && !jobFairId" color="primary" variant="text" size="large" @click.stop="handleReturn" prepend-icon="mdi-chevron-triple-left">返回上一页</v-btn>
|
|
</div>
|
|
</div>
|
|
<div class="d-flex mt-1 justify-space-between align-center">
|
|
<div class="d-flex mt-1 justify-space-between align-center">
|
|
<div class="banner-tags">
|
|
<div class="banner-tags">
|
|
@@ -133,7 +133,7 @@
|
|
|
|
|
|
<Loading :visible="loading"></Loading>
|
|
<Loading :visible="loading"></Loading>
|
|
<div v-if="Object.keys(info).length && Object.keys(positionInfo).length" style="position: absolute; left: -9999px; bottom: 0">
|
|
<div v-if="Object.keys(info).length && Object.keys(positionInfo).length" style="position: absolute; left: -9999px; bottom: 0">
|
|
- <PosterPage :id="id" :info="info" :positionInfo="positionInfo" ref="share"></PosterPage>
|
|
|
|
|
|
+ <PosterPage :id="id" :jobFairId="jobFairId" :info="info" :positionInfo="positionInfo" ref="share"></PosterPage>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- 快速登录 -->
|
|
<!-- 快速登录 -->
|
|
@@ -144,7 +144,7 @@
|
|
<script setup>
|
|
<script setup>
|
|
defineOptions({ name: 'position-details' })
|
|
defineOptions({ name: 'position-details' })
|
|
import { ref, computed } from 'vue'
|
|
import { ref, computed } from 'vue'
|
|
-import { useRouter } from 'vue-router'
|
|
|
|
|
|
+import { useRouter, useRoute } from 'vue-router'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import Snackbar from '@/plugins/snackbar'
|
|
import html2canvas from 'html2canvas'
|
|
import html2canvas from 'html2canvas'
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
@@ -163,6 +163,7 @@ import {
|
|
jobCvRelCheckSend,
|
|
jobCvRelCheckSend,
|
|
jobCvRelSend
|
|
jobCvRelSend
|
|
} from '@/api/position'
|
|
} from '@/api/position'
|
|
|
|
+import { jobFairPositionDeliveryCheck } from '@/api/recruit/personal/jobFair'
|
|
import { getPersonResumeCv, savePersonResumeCv } from '@/api/recruit/personal/resume'
|
|
import { getPersonResumeCv, savePersonResumeCv } from '@/api/recruit/personal/resume'
|
|
|
|
|
|
import { DPR } from '@/utils'
|
|
import { DPR } from '@/utils'
|
|
@@ -200,7 +201,7 @@ const props = defineProps({
|
|
})
|
|
})
|
|
|
|
|
|
const { t } = useI18n()
|
|
const { t } = useI18n()
|
|
-const router = useRouter()
|
|
|
|
|
|
+const router = useRouter(); const route = useRoute()
|
|
let { id } = props.propJobId ? { id: props.propJobId } : router.currentRoute.value.params
|
|
let { id } = props.propJobId ? { id: props.propJobId } : router.currentRoute.value.params
|
|
if (id) id = id.toString()
|
|
if (id) id = id.toString()
|
|
const delivery = ref(false) // 是否已投递简历
|
|
const delivery = ref(false) // 是否已投递简历
|
|
@@ -234,6 +235,9 @@ const formItems = ref({
|
|
]
|
|
]
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+// 招聘会id
|
|
|
|
+const jobFairId = ref(route?.query?.jobFairId)
|
|
|
|
+
|
|
const nextFunc = ref(null) // 登录成功或强制填写个人信息成功后回调
|
|
const nextFunc = ref(null) // 登录成功或强制填写个人信息成功后回调
|
|
let loginCloseWarningWord = ''
|
|
let loginCloseWarningWord = ''
|
|
// 快速登录
|
|
// 快速登录
|
|
@@ -316,7 +320,11 @@ getPositionDetail()
|
|
|
|
|
|
// 效验是否有投递过简历
|
|
// 效验是否有投递过简历
|
|
const deliveryCheck = async () => {
|
|
const deliveryCheck = async () => {
|
|
- const data = await jobCvRelCheckSend({ jobId: id })
|
|
|
|
|
|
+ // 区分招聘会职位与普通职位
|
|
|
|
+ const api = jobFairId.value ? jobFairPositionDeliveryCheck : jobCvRelCheckSend
|
|
|
|
+ const params = jobFairId.value ? { jobFairId: jobFairId.value, jobId: id } : { jobId: id }
|
|
|
|
+
|
|
|
|
+ const data = await api(params)
|
|
if (data) delivery.value = true
|
|
if (data) delivery.value = true
|
|
}
|
|
}
|
|
if (getToken()) deliveryCheck()
|
|
if (getToken()) deliveryCheck()
|
|
@@ -400,7 +408,16 @@ const handleUploadSubmit = async () => {
|
|
if (!obj.title || !obj.url) return
|
|
if (!obj.title || !obj.url) return
|
|
loading.value = true
|
|
loading.value = true
|
|
await savePersonResumeCv(obj)
|
|
await savePersonResumeCv(obj)
|
|
- await jobCvRelSend({ jobId: id, title: obj.title, url: obj.url, type: info.value.hire ? 1 : 0 })
|
|
|
|
|
|
+
|
|
|
|
+ const params = {
|
|
|
|
+ jobId: id,
|
|
|
|
+ title: obj.title,
|
|
|
|
+ url: obj.url,
|
|
|
|
+ type: info.value.hire ? 1 : 0
|
|
|
|
+ }
|
|
|
|
+ // 如果是参与招聘会的职位,则传招聘会id
|
|
|
|
+ if (jobFairId.value) params.jobFairId = jobFairId.value
|
|
|
|
+ await jobCvRelSend(params)
|
|
showUploadDialog.value = false
|
|
showUploadDialog.value = false
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
Snackbar.success(t('resume.deliverySuccess'))
|
|
Snackbar.success(t('resume.deliverySuccess'))
|
|
@@ -453,7 +470,17 @@ const handleSubmit = async (val) =>{
|
|
if (!obj) return Snackbar.warning(t('resume.selectedResumeNotExist'))
|
|
if (!obj) return Snackbar.warning(t('resume.selectedResumeNotExist'))
|
|
handleClose()
|
|
handleClose()
|
|
loading.value = true
|
|
loading.value = true
|
|
- await jobCvRelSend({ jobId: id, title: obj.title, url: obj.url, type: info.value.hire ? 1 : 0 })
|
|
|
|
|
|
+
|
|
|
|
+ const params = {
|
|
|
|
+ jobId: id,
|
|
|
|
+ title: obj.title,
|
|
|
|
+ url: obj.url,
|
|
|
|
+ type: info.value.hire ? 1 : 0
|
|
|
|
+ }
|
|
|
|
+ // 如果是参与招聘会的职位,则传招聘会id
|
|
|
|
+ if (jobFairId.value) params.jobFairId = jobFairId.value
|
|
|
|
+ await jobCvRelSend(params)
|
|
|
|
+
|
|
setTimeout(async () => {
|
|
setTimeout(async () => {
|
|
Snackbar.success(t('resume.deliverySuccess'))
|
|
Snackbar.success(t('resume.deliverySuccess'))
|
|
await deliveryCheck()
|
|
await deliveryCheck()
|