Xiao_123 6 months ago
parent
commit
f60e7d5abc
1 changed files with 40 additions and 11 deletions
  1. 40 11
      src/views/recruit/enterprise/resume/components/table.vue

+ 40 - 11
src/views/recruit/enterprise/resume/components/table.vue

@@ -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>