|
@@ -34,15 +34,35 @@
|
|
|
<span v-else>{{ item.status ? props.statusList.find(i => i.value === item.status)?.label : '' }}</span>
|
|
|
</template>
|
|
|
<template #actions="{ item }">
|
|
|
- <v-btn v-if="tab === 0" color="primary" variant="text" @click="handlePreviewResume(item)">查看附件</v-btn>
|
|
|
- <v-btn color="primary" variant="text" @click="handleDownloadAttachment(item)">下载附件</v-btn>
|
|
|
- <v-btn v-if="tab === 0" :color="item.jobClosed ? 'grey' : 'primary'" variant="text" @click="handleInterviewInvite(item)">邀请面试<v-tooltip v-if="item.jobClosed" activator="parent" location="top">职位已关闭</v-tooltip></v-btn>
|
|
|
+ <v-btn color="primary" variant="text" @click="handlePreviewResume(item)">查看附件</v-btn>
|
|
|
+ <!-- <v-btn v-if="tab === 0" :color="item.jobClosed ? 'grey' : 'primary'" variant="text" @click="handleInterviewInvite(item)">邀请面试<v-tooltip v-if="item.jobClosed" activator="parent" location="top">职位已关闭</v-tooltip></v-btn>
|
|
|
<v-btn v-if="tab === 0" :color="item.jobClosed ? 'grey' : 'primary'" variant="text" @click="handleToCommunicate(item)">立即沟通<v-tooltip v-if="item.jobClosed" activator="parent" location="top">职位已关闭</v-tooltip></v-btn>
|
|
|
+ <v-btn color="primary" variant="text" @click="handleDownloadAttachment(item)">下载附件</v-btn>
|
|
|
<v-btn v-if="tab === 0 || tab === 1" color="primary" variant="text" @click="handleEliminate(item)">不合适</v-btn>
|
|
|
<v-btn v-if="!item.inTalentPool" color="primary" variant="text" @click="handleJoinToTalentPool(item)">加入储备</v-btn>
|
|
|
<v-btn v-if="tab === 1 && ['3', '4'].includes(item.status)" color="primary" variant="text" @click="handleEnterByEnterprise(item)">入职</v-btn>
|
|
|
<v-btn v-if="tab === 4" color="primary" variant="text" @click="handleCancelEliminate(item)">取消不合适</v-btn>
|
|
|
- <v-btn v-if="tab === 2 && item?.job?.hire" color="primary" variant="text" @click="handleSettlement(item)">结算</v-btn>
|
|
|
+ <v-btn v-if="tab === 2 && item?.job?.hire" color="primary" variant="text" @click="handleSettlement(item)">结算</v-btn> -->
|
|
|
+
|
|
|
+ <v-menu v-if="actionItems(item).length">
|
|
|
+ <template v-slot:activator="{ props }">
|
|
|
+ <v-icon v-bind="props" class="mx-3" size="20" color="primary">mdi-dots-horizontal</v-icon>
|
|
|
+ </template>
|
|
|
+ <v-list>
|
|
|
+ <v-list-item
|
|
|
+ v-for="(k, index) in actionItems(item)"
|
|
|
+ :key="index"
|
|
|
+ :value="index"
|
|
|
+ color="primary"
|
|
|
+ @click="k.click(item)"
|
|
|
+ >
|
|
|
+ <v-list-item-title>
|
|
|
+ <span :class="{'disabledItem': tab === 0 && ['邀请面试', '立即沟通'].includes(k.title) && item.jobClosed}">{{ k.title }}</span>
|
|
|
+ <v-tooltip v-if="tab === 0 && ['邀请面试', '立即沟通'].includes(k.title) && item.jobClosed" activator="parent" location="top">职位已关闭</v-tooltip>
|
|
|
+ </v-list-item-title>
|
|
|
+ </v-list-item>
|
|
|
+ </v-list>
|
|
|
+ </v-menu>
|
|
|
</template>
|
|
|
</CtTable>
|
|
|
|
|
@@ -96,11 +116,10 @@ const inviteRef = ref()
|
|
|
const showInvite = ref(false)
|
|
|
const headers = ref([
|
|
|
{ title: '姓名', value: 'name', sortable: false },
|
|
|
- { title: '应聘职位', value: 'job.name', sortable: false },
|
|
|
{ title: '求职状态', key: 'person.jobStatusName', sortable: false },
|
|
|
{ title: '工作经验', key: 'person.expName', sortable: false },
|
|
|
{ title: '最高学历', key: 'person.eduName', sortable: false },
|
|
|
- { title: '岗位薪资', key: 'job', value: item => item.job.payFrom && item.job.payTo ? `${item.job.payFrom ? item.job.payFrom + '-' : ''}${item.job.payTo}${item.job.payName ? '/' + item.job.payName : ''}` : '面议', sortable: false },
|
|
|
+ { title: '应聘职位', value: 'job.name', sortable: false },
|
|
|
{ title: '投递简历时间', key: 'createTime', sortable: false },
|
|
|
{ title: '状态', key: 'status', sortable: false },
|
|
|
{ title: '操作', value: 'actions', sortable: false }
|
|
@@ -186,10 +205,8 @@ const handlePreviewResume = async ({ url, id }) => {
|
|
|
|
|
|
// 邀请面试
|
|
|
const itemData = ref({})
|
|
|
-// const inviteType = ref(false)
|
|
|
const handleInterviewInvite = (item) => {
|
|
|
if (item?.jobClosed) return // 职位已关闭
|
|
|
- // if (item?.job?.hire) inviteType.value = true
|
|
|
itemData.value = item
|
|
|
showInvite.value = true
|
|
|
}
|
|
@@ -197,16 +214,13 @@ const handleInterviewInvite = (item) => {
|
|
|
const handleToCommunicate = async (item) => {
|
|
|
if (item?.jobClosed) return // 职位已关闭
|
|
|
const userId = item.userId
|
|
|
- // const textObj = { text: defaultTextEnt }
|
|
|
await talkToUser({userId, text: defaultTextEnt})
|
|
|
let url = `/recruit/enterprise/chatTools?id=${userId}`
|
|
|
-
|
|
|
router.push(url)
|
|
|
}
|
|
|
|
|
|
const handleEditClose = () => {
|
|
|
showInvite.value = false
|
|
|
- // inviteType.value = false
|
|
|
itemData.value = {}
|
|
|
}
|
|
|
|
|
@@ -244,6 +258,17 @@ const handleDownloadAttachment = (k) => {
|
|
|
saveAs(blob, k.title)
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+const actionItems = (item) => {
|
|
|
+ const arr = []
|
|
|
+ if (props.tab === 0) arr.push({ title: '邀请面试', click: handleInterviewInvite }, { title: '立即沟通', click: handleToCommunicate })
|
|
|
+ if (props.tab === 1 && ['3', '4'].includes(item.status)) arr.push({ title: '入职', click: handleEnterByEnterprise })
|
|
|
+ if (!item.inTalentPool) arr.push({ title: '加入储备', click: handleJoinToTalentPool })
|
|
|
+ if ([0, 1].includes(props.tab)) arr.push({ title: '不合适', click: handleEliminate })
|
|
|
+ if (props.tab === 4) arr.push({ title: '取消不合适', click: handleCancelEliminate })
|
|
|
+ if (props.tab === 2 && item?.job?.hire) arr.push({ title: '结算', click: handleSettlement })
|
|
|
+ return [{ title: '下载附件', click: handleDownloadAttachment }, ...arr]
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
@@ -253,4 +278,8 @@ const handleDownloadAttachment = (k) => {
|
|
|
:deep(.v-selection-control__input) {
|
|
|
color: var(--v-primary-base) !important;
|
|
|
}
|
|
|
+.disabledItem {
|
|
|
+ cursor: auto;
|
|
|
+ opacity: .5;
|
|
|
+}
|
|
|
</style>
|