|
@@ -1,28 +1,38 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<div v-if="props.items.length" class="d-flex align-center mb-1">
|
|
|
- <v-checkbox v-if="tab === 1" v-model="selectAll" :label="!selectAll ? $t('common.selectAll') : `已选中${selectList.length}条`" hide-details color="primary" @update:model-value="handleChangeSelectAll"></v-checkbox>
|
|
|
+ <v-checkbox
|
|
|
+ v-if="tab === 1"
|
|
|
+ v-model="selectAll"
|
|
|
+ :label="!selectAll ? $t('common.selectAll') : `已选中${selectList.length}条`"
|
|
|
+ hide-details
|
|
|
+ color="primary"
|
|
|
+ @update:model-value="handleChangeSelectAll"
|
|
|
+ ></v-checkbox>
|
|
|
<div v-if="tab === 1" class="ml-8">
|
|
|
<v-btn :disabled="!selectAll" color="primary" variant="tonal" size="small" @click="handleAction(2, 'batch', {})">一键刷新</v-btn>
|
|
|
<v-btn class="mx-3" :disabled="!selectAll" color="primary" variant="tonal" size="small" @click="handleAction(3, 'top', {})">{{ $t('common.topping') }}</v-btn>
|
|
|
- <!-- <v-btn class="mr-3" :disabled="!selectAll" color="primary" variant="tonal" size="small" @click="handleAction(4, 'top', {})">取消置顶</v-btn> -->
|
|
|
<v-btn :disabled="!selectAll" color="primary" variant="tonal" size="small" @click="handleAction(0, 'close', {})">{{ $t('common.close') }}</v-btn>
|
|
|
</div>
|
|
|
- <!-- <v-btn v-if="tab === 2" class="ml-8" :disabled="!selectAll" color="primary" variant="tonal" size="small" @click="handleAction(1, 'activation', {})">一键激活</v-btn> -->
|
|
|
</div>
|
|
|
- <div v-for="val in items" :key="val.id" class="itemBox mb-3" style="height: 134px;">
|
|
|
+ <div v-for="val in items" :key="val.id" class="itemBox mb-3" :style="{'height': val.jobFairName ? '160px' : '134px'}">
|
|
|
<div v-if="val.top && tab === 1" style="position: absolute;">
|
|
|
<svg-icon name="top" size="50"></svg-icon>
|
|
|
</div>
|
|
|
<div class="d-flex justify-space-between" style="padding: 10px 20px;">
|
|
|
<div class="position" :style="{'max-width': (val.status-0) === 99 && tab === 0 ? '70%' : '85%'}">
|
|
|
- <div class="item-select ml-5" v-if="tab === 1">
|
|
|
+ <div class="item-select ml-5" v-if="tab === 1 && !val.jobFairName">
|
|
|
<v-checkbox v-model="val.select" hide-details color="primary" @update:model-value="handleChangeSelect"></v-checkbox>
|
|
|
</div>
|
|
|
- <div class="d-flex align-center" :class="{'cursor-pointer': tab === 1, 'ml-15': tab === 1}" @click="handleDetail(val)">
|
|
|
+ <div
|
|
|
+ class="d-flex align-center"
|
|
|
+ :class="{'cursor-pointer': tab === 1, 'ml-15': tab === 1 && !val.jobFairName}"
|
|
|
+ @click="handleDetail(val)"
|
|
|
+ >
|
|
|
+ <svg-icon v-if="val.jobFairName" name="jobFair" size="20"></svg-icon>
|
|
|
<span class="position-name" v-ellipse-tooltip>{{ formatName(val.name) }}</span>
|
|
|
</div>
|
|
|
- <div :class="['mt-3', 'other-info', 'ellipsis', {'ml-10': tab === 1}]">
|
|
|
+ <div :class="['mt-3', 'other-info', 'ellipsis', {'ml-10': tab === 1 && !val.jobFairName}]">
|
|
|
<span>{{ !val.areaId ? '全国' : val.area?.str }}</span>
|
|
|
<span class="lines" v-if="val.eduName"></span>
|
|
|
<span>{{ val.eduName }}</span>
|
|
@@ -34,6 +44,12 @@
|
|
|
<span class="lines" v-if="val.positionName"></span>
|
|
|
<span>{{ val.positionName }}</span>
|
|
|
</div>
|
|
|
+ <div
|
|
|
+ v-if="val.jobFairName"
|
|
|
+ class="color-primary font-size-15 mt-3"
|
|
|
+ >
|
|
|
+ 招聘会:{{ val.jobFairName }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div v-if="tab !== 0" class="text-center color-primary d-flex flex-column justify-center cursor-pointer" @click="handleToResume(val)">
|
|
|
<div class="font-weight-bold font-size-18">{{ val.count || 0 }}</div>
|
|
@@ -56,24 +72,78 @@
|
|
|
<div class="d-flex bottom-item justify-end">
|
|
|
<div class="ml-10 d-flex">
|
|
|
<div v-if="tab === 1">
|
|
|
- <span class="cursor-pointer actions" @click="handleAction(val.top ? 4 : 3, '', val)">{{ val.top ? '取消置顶' : $t('common.topping') }}</span>
|
|
|
+ <span>
|
|
|
+ <span
|
|
|
+ class="cursor-pointer"
|
|
|
+ :class="{'actions': !val.jobFairName}"
|
|
|
+ :style="{'color': !val.jobFairName ? '#333' : '#999'}"
|
|
|
+ @click="handleAction(val.top ? 4 : 3, '', val)"
|
|
|
+ >
|
|
|
+ {{ val.top ? '取消置顶' : $t('common.topping') }}
|
|
|
+ </span>
|
|
|
+ <v-tooltip v-if="val.jobFairName" activator="parent" location="top">该职位属于招聘会职位,无法置顶</v-tooltip>
|
|
|
+ </span>
|
|
|
<span class="lines"></span>
|
|
|
- <span class="cursor-pointer actions" @click="handleAction(0, '', val)">{{ $t('common.close') }}</span>
|
|
|
+ <span>
|
|
|
+ <span
|
|
|
+ class="cursor-pointer"
|
|
|
+ :class="{'actions': !val.jobFairName}"
|
|
|
+ :style="{'color': !val.jobFairName ? '#333' : '#999'}"
|
|
|
+ @click="handleAction(0, '', val)"
|
|
|
+ >
|
|
|
+ {{ $t('common.close') }}
|
|
|
+ </span>
|
|
|
+ <v-tooltip v-if="val.jobFairName" activator="parent" location="top">该职位属于招聘会职位,请前往招聘会中进行关闭</v-tooltip>
|
|
|
+ </span>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 待发布的职位有额度时可使用额度发布职位 -->
|
|
|
<span v-if="jobNum && +jobNum > 0 && (val.status-0) === 99 && tab === 0">
|
|
|
<span class="cursor-pointer color-primary" @click="handleRelease(val)">使用额度发布</span>
|
|
|
<span class="lines"></span>
|
|
|
</span>
|
|
|
- <span v-if="(val.status-0) === 99 && tab === 0" class="cursor-pointer color-primary" @click="toPay(val)">支付发布</span>
|
|
|
- <span class="lines" v-if="tab !== 2 && tab !== 3"></span>
|
|
|
- <span v-if="tab === 2" class="cursor-pointer actions" @click="handleAction(1, '', val, val)">激活</span>
|
|
|
+
|
|
|
+ <span
|
|
|
+ v-if="(val.status-0) === 99 && tab === 0"
|
|
|
+ class="cursor-pointer color-primary"
|
|
|
+ @click="toPay(val)"
|
|
|
+ >
|
|
|
+ 支付发布
|
|
|
+ </span>
|
|
|
+
|
|
|
+ <span class="lines" v-if="tab !== 2"></span>
|
|
|
+ <span>
|
|
|
+ <span
|
|
|
+ v-if="tab === 2"
|
|
|
+ class="cursor-pointer"
|
|
|
+ :class="{'actions': !val.jobFairName}"
|
|
|
+ :style="{'color': !val.jobFairName ? '#333' : '#999'}"
|
|
|
+ @click="handleAction(1, '', val, val)"
|
|
|
+ >
|
|
|
+ 激活
|
|
|
+ </span>
|
|
|
+ <v-tooltip v-if="val.jobFairName" activator="parent" location="top">该职位属于招聘会职位,请前往招聘会中进行激活</v-tooltip>
|
|
|
+ </span>
|
|
|
+
|
|
|
<span class="lines" v-if="tab === 2"></span>
|
|
|
- <span class="cursor-pointer actions" @click="handleDetail(val)">详情</span>
|
|
|
- <div v-if="tab !== 3">
|
|
|
+ <span class="cursor-pointer actions" @click="handleDetail(val)">详情</span>
|
|
|
+
|
|
|
+ <!-- 编辑(招聘会职位只可在招聘会中进行操作) -->
|
|
|
+ <div>
|
|
|
<span class="lines"></span>
|
|
|
- <span class="cursor-pointer" :class="{'actions': val.edit}" :style="{'color': val.edit ? '#333' : '#999'}" @click="handleEdit(val)">{{ $t('common.edit') }}</span>
|
|
|
+ <span
|
|
|
+ class="cursor-pointer"
|
|
|
+ :class="{'actions': val.edit && !val.jobFairName}"
|
|
|
+ :style="{'color': val.edit && !val.jobFairName ? '#333' : '#999'}"
|
|
|
+ @click="handleEdit(val)"
|
|
|
+ >
|
|
|
+ {{ $t('common.edit') }}
|
|
|
+ </span>
|
|
|
<v-tooltip v-if="!val.edit" activator="parent" location="top">职位发布时间超过24小时的不支持编辑</v-tooltip>
|
|
|
+ <v-tooltip v-if="val.jobFairName" activator="parent" location="top">该职位属于招聘会职位,请前往招聘会中进行编辑</v-tooltip>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 待发布职位删除 -->
|
|
|
<span v-if="(val.status-0) === 99 && tab === 0">
|
|
|
<span class="lines"></span>
|
|
|
<span class="cursor-pointer actions color-error" @click="handleDelete(val)">删除</span>
|
|
@@ -137,7 +207,7 @@ const dealSelect = () => {
|
|
|
// 全选
|
|
|
const handleChangeSelectAll = () => {
|
|
|
props.items.map(k => {
|
|
|
- k.select = selectAll.value
|
|
|
+ k.select = k.jobFairName ? false : selectAll.value
|
|
|
return k
|
|
|
})
|
|
|
dealSelect()
|
|
@@ -228,7 +298,8 @@ const paySuccess = async () => {
|
|
|
|
|
|
const apiList = [closeJobAdvertised, enableJobAdvertised, refreshJobAdvertised, topJobAdvertised, topJobAdvertisedCancel]
|
|
|
// 职位关闭、激活、刷新、置顶
|
|
|
-const handleAction = async (index, type, { id }, item) => {
|
|
|
+const handleAction = async (index, type, { id, jobFairName }, item) => {
|
|
|
+ if (jobFairName) return // 招聘会职位不可在职位管理中进行操作,只可查看详情
|
|
|
const ids = type ? props.items.filter(e => e.select).map(k => k.id) : [id]
|
|
|
if (!ids.length && !index) return
|
|
|
|
|
@@ -272,7 +343,7 @@ const handleAction = async (index, type, { id }, item) => {
|
|
|
const router = useRouter()
|
|
|
// 职位编辑
|
|
|
const handleEdit = async (val) => {
|
|
|
- if (!val.id || !val.edit) return
|
|
|
+ if (!val.id || val.jobFairName || !val.edit) return
|
|
|
const data = await getEnterprisePubJobTypePermission()
|
|
|
if (!data || !data.length) return Snackbar.warning('没有该操作权限,请联系平台管理员升级后再试')
|
|
|
router.push(`/recruit/enterprise/position/edit?id=${val.id}`)
|
|
@@ -281,7 +352,9 @@ const handleEdit = async (val) => {
|
|
|
// 职位详情
|
|
|
const handleDetail = async (val) => {
|
|
|
if (!val.id) return
|
|
|
- window.open(`/recruit/enterprise/position/details?id=${val.id}`)
|
|
|
+ let path = `/recruit/enterprise/position/details?id=${val.id}`
|
|
|
+ if (val.jobFairId) path += `&jobFairId=${val.jobFairId}`
|
|
|
+ window.open(path)
|
|
|
}
|
|
|
|
|
|
// 查看职位投递简历
|