Browse Source

人才招聘》简历和面试》职位已关闭提示

lifanagju_citu 7 months ago
parent
commit
5af4fdb240

+ 15 - 8
src/views/recruit/enterprise/interviewManagement/components/item.vue

@@ -31,20 +31,25 @@
       <!-- 面试状态: '待接受'/'已取消' -->
       <div :style="{ 'color': colorData[item.status] }">
         <v-icon v-if="statusList.find(e => e.value === item.status)?.label" size="30">mdi mdi-circle-small</v-icon>
-        <span>{{ statusList.find(e => e.value === item.status)?.label }}</span>
+        <span>
+          {{ statusList.find(e => e.value === item.status)?.label }}
+          <span v-if="item?.job?.status === '1'" style="font-size: 13px; color: grey;">[职位已关闭]</span>
+        </span>
       </div>
       <div>
-        <span v-if="editStatus.indexOf(item.status) !== -1" class="font-size-15 color-primary" @click="handleActionClick('edit', item)">修改面试</span>
-        <span v-if="againStatus.indexOf(item.status) !== -1" class="font-size-15 color-primary" @click="handleActionClick('edit', item)">重新邀约</span>
+        <template v-if="item.job?.status !== '1'" >
+          <span v-if="editStatus.indexOf(item.status) !== -1" class="font-size-15 color-primary" @click="handleActionClick('edit', item)">修改面试</span>
+          <span v-if="againStatus.indexOf(item.status) !== -1" class="font-size-15 color-primary" @click="handleActionClick('edit', item)">重新邀约</span>
+        </template>
         <span v-if="item.status === '1'" class="font-size-15 color-primary" @click="handleActionClick('completed', item)">完成面试</span>
         <span v-if="item.status === '3'" class="font-size-15 color-primary" @click="handleActionClick('feedback', item)">填写反馈</span>
-        <v-menu v-if="actionItems(item.status).length">
+        <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.status)"
+              v-for="(k, index) in actionItems(item)"
               :key="index"
               :value="index"
               color="primary"
@@ -143,10 +148,12 @@ const obj = {
   '1': [4, 1, 3],
   '2': [3]
 }
-const actionItems = (status) => {
-  const type = obj[status]
+const actionItems = (item) => {
+  const status = item?.status
+  const jobClosed = item.job?.status === '1'
+  const type = jobClosed && obj[status] ? obj[status].filter(i => i !== 4) : obj[status]
   if (!type || !type.length) return []
-  const data = type.map(e => actions.value[e])
+  let data = type.map(e => actions.value[e])
   return data
 }
 

+ 4 - 2
src/views/recruit/enterprise/resume/components/table.vue

@@ -31,8 +31,8 @@
       </template>
       <template v-slot:[`item.actions`]="{ item }">
         <v-btn v-if="tab === 0" color="primary" variant="text" @click="handlePreviewResume(item)">查看附件</v-btn>
-        <v-btn v-if="tab === 0" color="primary" variant="text" @click="handleInterviewInvite(item)">邀请面试</v-btn>
-        <v-btn v-if="tab === 0" color="primary" variant="text" @click="handleToCommunicate(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 v-if="tab === 0 || tab === 1" color="primary" variant="text" @click="handleEliminate(item)">不合适</v-btn>
         <v-btn v-if="!item.inTalentPool && (tab === 1 || tab === 2 || tab === 3)" color="primary" variant="text" @click="handleJoinToTalentPool(item)">加入储备</v-btn>
         <v-btn v-if="tab === 1 && (item.status === '3' || item.status === '4')" color="primary" variant="text" @click="handleEnterByEnterprise(item)">入职</v-btn>
@@ -171,12 +171,14 @@ 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
 }
 
 const handleToCommunicate = async (item) => {
+  if (item?.jobClosed) return // 职位已关闭
   const userId = item.userId
   // const textObj = { text: defaultTextEnt }
   await talkToUser({userId, text: defaultTextEnt})

+ 1 - 0
src/views/recruit/enterprise/resume/index.vue

@@ -84,6 +84,7 @@ const getList = async () => {
   total.value = number
   items.value = list.map(e => {
     let obj = e
+    obj.jobClosed = e?.job?.status === '1' || false // 职位已关闭
     obj.person = Object.assign(e.person, dealDictObjData({}, e.person))
     obj.job = Object.assign(e.job, dealDictObjData({}, e.job))
     return obj