|
@@ -1,6 +1,21 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<CtForm ref="formPageRef" :items="items" style="width: 650px;">
|
|
|
+ <template #bizId="{ item }">
|
|
|
+ <div>
|
|
|
+ <v-checkbox-btn
|
|
|
+ v-model="jobFairCheckbox"
|
|
|
+ color="primary"
|
|
|
+ label="设置为招聘会职位"
|
|
|
+ class="ml-2"
|
|
|
+ :disabled="false"
|
|
|
+ :style="`line-height: ${item.dense === 'default' ? 56 : item.dense === 'comfortable' ? 48 : 40 }px;`"
|
|
|
+ style="width: 174px;"
|
|
|
+ hide-details
|
|
|
+ @update:modelValue="v => jobFairCheckboxChange(v, item)"
|
|
|
+ ></v-checkbox-btn>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
<template #positionId="{ item }">
|
|
|
<v-menu :close-delay="1" :open-delay="0" v-bind="$attrs">
|
|
|
<template v-slot:activator="{ props }">
|
|
@@ -44,6 +59,7 @@ import { getRecruitPositionDetails } from '@/api/recruit/enterprise/position'
|
|
|
import Confirm from '@/plugins/confirm'
|
|
|
import Snackbar from '@/plugins/snackbar'
|
|
|
import { useI18n } from '@/hooks/web/useI18n';
|
|
|
+import { getJobFairList } from '@/api/recruit/enterprise/jobFair'
|
|
|
|
|
|
const { t } = useI18n()
|
|
|
const props = defineProps({
|
|
@@ -60,6 +76,17 @@ let query = reactive({})
|
|
|
|
|
|
const items = ref({
|
|
|
options: [
|
|
|
+ {
|
|
|
+ slotName: 'bizId',
|
|
|
+ type: 'autocomplete',
|
|
|
+ key: 'bizId',
|
|
|
+ value: null,
|
|
|
+ label: '招聘会',
|
|
|
+ itemText: 'title',
|
|
|
+ itemValue: 'id',
|
|
|
+ disabled: true,
|
|
|
+ items: [],
|
|
|
+ },
|
|
|
{
|
|
|
slotName: 'positionId',
|
|
|
key: 'positionId',
|
|
@@ -121,6 +148,8 @@ watch(
|
|
|
}
|
|
|
if (e.noParam) return
|
|
|
if (e.key === 'expireTime' && !val[e.key]) return handleSoFarChange(true, e)
|
|
|
+ if (e.key === 'bizId' && val.source === '2') jobFairCheckboxChange(true, e) // 招聘会回显
|
|
|
+ if (e.key === 'bizId' && val.source === '0') val[e.key] = null // 招聘会回显
|
|
|
e.value = val[e.key]
|
|
|
})
|
|
|
},
|
|
@@ -176,6 +205,24 @@ const handleSoFarChange = (bool, item) => {
|
|
|
item.label = bool ? '到期时间' : '到期时间 *'
|
|
|
}
|
|
|
|
|
|
+// 设置为招聘会职位
|
|
|
+const jobFairCheckbox = ref(false)
|
|
|
+const jobFairCheckboxChange = (bool, item) => {
|
|
|
+ jobFairCheckbox.value = bool
|
|
|
+ item.value = null
|
|
|
+ item.disabled = bool ? false : true
|
|
|
+ item.label = bool ? '招聘会 *' : '招聘会'
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+const getJobFairData = async () => {
|
|
|
+ const data = await getJobFairList()
|
|
|
+ const bizId = items.value.options.find(e => e.key === 'bizId')
|
|
|
+ if (!bizId) return
|
|
|
+ bizId.items = data
|
|
|
+}
|
|
|
+getJobFairData()
|
|
|
+
|
|
|
const getQuery = async () => {
|
|
|
const { valid } = await formPageRef.value.formRef.validate()
|
|
|
if (!valid) return
|
|
@@ -188,10 +235,17 @@ const getQuery = async () => {
|
|
|
if (e.noParam || e.value === null) return
|
|
|
else obj[e.key] = e.value
|
|
|
})
|
|
|
+
|
|
|
+ if (jobFairCheckbox.value && !obj.bizId) {
|
|
|
+ Snackbar.warning('请选择招聘会')
|
|
|
+ return 'failed'
|
|
|
+ }
|
|
|
+
|
|
|
if (!obj.content) {
|
|
|
Snackbar.warning('请填写岗位职责')
|
|
|
return 'failed'
|
|
|
}
|
|
|
+
|
|
|
if (!obj.requirement) {
|
|
|
Snackbar.warning('请填写岗位要求')
|
|
|
return 'failed'
|
|
@@ -202,9 +256,12 @@ const getQuery = async () => {
|
|
|
return 'failed'
|
|
|
}
|
|
|
|
|
|
- // query = Object.assign(query, obj)
|
|
|
- // query = {...obj, ...query}
|
|
|
+ obj.source = jobFairCheckbox.value ? '2' : '0' // 职位来源(0职位管理|1众聘职位|2招聘会)
|
|
|
+ if (obj.source === '0') obj.bizId = null
|
|
|
+
|
|
|
Object.assign(query, obj)
|
|
|
+ // console.log('obj:', obj)
|
|
|
+ console.log('query:', query)
|
|
|
return query
|
|
|
}
|
|
|
|