zhengnaiwen_citu 6 ماه پیش
والد
کامیت
6a6bee46d8

+ 7 - 0
src/api/recruit/enterprise/jobFair.js

@@ -7,6 +7,13 @@ export const getJobFairList = async () => {
   })
 }
 
+// 查找招聘会
+export const getJobFair = async () => {
+  return await request.get({
+    url: '/app-api/menduner/system/job-fair/get'
+  })
+}
+
 // 保存招聘职位扩展信息
 export const saveJobAdvertisedExtend = async (data) => {
   return await request.post({

+ 1 - 1
src/router/modules/components/recruit/enterprise.js

@@ -360,7 +360,7 @@ const enterprise = [
           title: '双选会详情',
           enName: 'Job Fair Details'
         },
-        // component: () => import('@/views/recruit/enterprise/jobFair/details.vue'),
+        component: () => import('@/views/recruit/enterprise/jobFair/detailsBox.vue'),
         children: [
           {
             path: '/recruit/enterprise/jobFair/details/:id',

+ 116 - 42
src/views/recruit/enterprise/jobFair/components/resume.vue

@@ -8,7 +8,7 @@
       <v-tabs-window-item v-for="k in tabList" :value="k.value" :key="k.value">
         <CtTable
           class="mt-3"
-          :items="items"
+          :items="k.items"
           :headers="headers"
           :loading="false"
           :elevation="0"
@@ -16,8 +16,8 @@
           :disableSort="true"
           :isTools="false"
           :showPage="true"
-          :total="total"
-          :page-info="pageInfo"
+          :total="k.total"
+          :page-info="k.pageInfo"
           itemKey="id"
           @pageHandleChange="handleChangePage"
         >
@@ -41,11 +41,19 @@
             {{ item.student?.majorName && item.student?.schoolDepartmentName ? ' - ' : '' }}
             {{ item.student?.schoolDepartmentName }}
           </template>
+          <template #status="{ item}">
+            {{ statusType[item.status] }}
+          </template>
           <template #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="[0, 1].includes(tab)" color="primary" variant="text" @click="handleEliminate(item)">不合适</v-btn>
-            <v-btn v-if="tab === 1" color="primary" variant="text" @click="handleEnterByEnterprise(item)">入职</v-btn>
+            <template v-if="tab === 0">
+              <v-btn color="primary" variant="text" @click="handlePreviewResume(item)">查看附件</v-btn>
+              <v-btn color="primary" variant="text" @click="handleInterviewInvite(item)">邀请面试</v-btn>
+            </template>
+            <template v-if="tab === 1">
+              <v-btn v-if="[21,22].includes(item.status)" color="primary " variant="text" @click="handleEliminate(item)">不合适</v-btn>
+              <v-btn v-if="item.status === 22" color="primary" variant="text" @click="handleEnterByEnterprise(item)">入职</v-btn>
+            </template>
+            
           </template>
         </CtTable>
       </v-tabs-window-item>
@@ -91,7 +99,7 @@
 
 <script setup>
 defineOptions({ name: 'jobFairResume'})
-import { ref } from 'vue'
+import { computed, ref } from 'vue'
 import { useRouter, useRoute } from 'vue-router'
 import { useI18n } from '@/hooks/web/useI18n'
 import Snackbar from '@/plugins/snackbar'
@@ -105,33 +113,97 @@ const router = useRouter()
 const route = useRoute()
 const { t } = useI18n()
 
+const statusType = {
+  0:'学生投递',
+  1:'企业邀请',
+  2:'同意入职',
+  3:'老师邀请',
+  4:'企业同意申请',
+  14:'取消申请',
+  15:'企业拒绝',
+  16:'学生拒绝老师邀请',
+  17:'学生实习结束',
+  20:'撤回投递',
+  21:'企业邀请面试',
+  22:'同意面试邀请',
+  23:'拒绝面试邀请'
+}
 const tab = ref(0)
 const tabList = ref([
-  { label: '投递简历', value: 0, status: 0 },
-  { label: '已邀约', value: 1, status: 21 },
-  { label: '已入职', value: 2, status: 4 },
-  { label: '不合适', value: 3, status: 15 },
+  {
+    label: '投递简历',
+    value: 0,
+    statuss: [0],
+    items: [],
+    total: 0,
+    pageInfo: {
+      pageNo: 1,
+      pageSize: 10
+    }
+  },
+  {
+    label: '面试邀约',
+    value: 1,
+    statuss: [21, 22, 23],
+    items: [],
+    total: 0,
+    pageInfo: {
+      pageNo: 1,
+      pageSize: 10
+    }
+  },
+  {
+    label: '已入职',
+    value: 2,
+    statuss: [4],
+    items: [],
+    total: 0,
+    pageInfo: {
+      pageNo: 1,
+      pageSize: 10
+    }
+  },
+  {
+    label: '不合适',
+    value: 3,
+    statuss: [15],
+    items: [],
+    total: 0,
+    pageInfo: {
+      pageNo: 1,
+      pageSize: 10
+    }
+  }
+  // { label: '面试邀约', value: 1, statuss: [21, 22, 23], items: [], total: 0 },
+  // { label: '已入职', value: 2, statuss: [4], items: [], total: 0 },
+  // { label: '不合适', value: 3, statuss: [15], items: [], total: 0 },
 ])
 
-const headers = ref([
-  { title: '姓名', value: 'studentId', sortable: false },
-  { title: '学校', value: 'student.schoolName', sortable: false },
-  { title: '专业', value: 'major', sortable: false },
-  { title: '应聘职位', value: 'enterpriseRecruit.enterpriseRecruitJobName', sortable: false },
-  { title: '岗位薪资',
-    key: 'pay',
-    value: ({ enterpriseRecruit }) => {
-      if (!enterpriseRecruit) {
-        return '面议'
-      }
-      const { payFrom, payTo, payUnit } = enterpriseRecruit
-      return `${payFrom}${payFrom && payTo ? '-' : ''}${payTo}${payUnit ? '/' : ''}${payUnit}`
+const headers = computed(() => {
+  const item = [
+    { title: '姓名', value: 'studentId', sortable: false },
+    { title: '学校', value: 'student.schoolName', sortable: false },
+    { title: '专业', value: 'major', sortable: false },
+    { title: '应聘职位', value: 'enterpriseRecruit.enterpriseRecruitJobName', sortable: false },
+    { title: '岗位薪资',
+      key: 'pay',
+      value: ({ enterpriseRecruit }) => {
+        if (!enterpriseRecruit) {
+          return '面议'
+        }
+        const { payFrom, payTo, payUnit } = enterpriseRecruit
+        return `${payFrom}${payFrom && payTo ? '-' : ''}${payTo}${payUnit ? '/' : ''}${payUnit}`
+      },
+      sortable: false
     },
-    sortable: false
-  },
-  { title: '联系电话', value: 'student.phone', sortable: false },
-  { title: '操作', value: 'actions', sortable: false }
-])
+    { title: '联系电话', value: 'student.phone', sortable: false }
+  ]
+  if (tab.value === 0 || tab.value === 1) {
+    item.push({ title: '状态', value: 'status', sortable: false },
+    { title: '操作', value: 'actions', sortable: false })
+  }
+  return item
+})
 
 const CtFormInviteRef = ref()
 const CtFormRejectRef = ref()
@@ -214,13 +286,13 @@ const AccessItems = ref({
   ]
 })
 
-const items = ref([])
+// const items = ref([])
 const loading = ref(false)
-const total = ref(0)
-const pageInfo = ref({
-  pageNo: 1,
-  pageSize: 10
-})
+
+// const pageInfo = ref({
+//   pageNo: 1,
+//   pageSize: 10
+// })
 
 const itemData = ref({})
 const showInvite = ref(false)
@@ -237,12 +309,12 @@ getDict('menduner_interview_invite_status').then(({data}) => {
 })
 
 const handleChangePage = (index) => {
-  pageInfo.value.pageNo = index
+  tabList.value[tab.value].pageInfo.pageNo = index
   getList()
 }
 
 const handleChange = () => {
-  pageInfo.value.pageNo = 1
+  tabList.value[tab.value].pageInfo.pageNo = 1
   getList()
 }
 
@@ -350,13 +422,15 @@ const getList = async () => {
   loading.value = true
   try {
     const res = await getResumeList({
-      ...pageInfo.value,
+      ...tabList.value[tab.value].pageInfo,
       jobFairId: route.params.id,
       enterpriseId: userStore.entBaseInfo.enterpriseId,
-      status: tabList.value[tab.value].status
+      statuss: tabList.value[tab.value].statuss
     })
-    total.value = res.total
-    items.value = res.records
+    // total.value = res.total
+    tabList.value[tab.value].items = res.records
+    tabList.value[tab.value].total = res.total
+    // items.value = res.records
   } finally {
     loading.value = false
   }

+ 11 - 0
src/views/recruit/enterprise/jobFair/detailsBox.vue

@@ -0,0 +1,11 @@
+<template>
+  <router-view></router-view>
+</template>
+
+<script setup>
+
+</script>
+
+<style lang="scss" scoped>
+
+</style>