فهرست منبع

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

lifanagju_citu 6 ماه پیش
والد
کامیت
aa473c2408

+ 3 - 3
src/api/recruit/enterprise/jobFair.js

@@ -53,7 +53,7 @@ export const getResumeList = async (data) => {
   })
 }
 
-// 拒绝实习申请
+// 企业拒绝实习申请
 export const resumeCancel = async (data) => {
   return await request.post({
     url: '/app-api/flames/pracice/submit/record/enterprise/cancel',
@@ -61,10 +61,10 @@ export const resumeCancel = async (data) => {
   })
 }
 
-// 企业拒绝实习申请
+// 企业同意实习申请
 export const resumeAccept = async (data) => {
   return await request.post({
-    url: '/app-api/flames/pracice/submit/record/enterprise/cancel',
+    url: '/app-api/flames/pracice/submit/record/enterprise/accept',
     data
   })
 }

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

@@ -337,7 +337,7 @@ const enterprise = [
     path: '/recruit/enterprise/jobFair',
     component: Layout,
     name: 'jobFair',
-    show: true, // 暂时隐藏
+    // show: true, // 暂时隐藏
     meta: {
       title: '双选会',
       enName: 'Job Fair',

+ 85 - 17
src/views/recruit/enterprise/jobFair/components/resume.vue

@@ -45,7 +45,7 @@
             <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 && [15,4].includes(item.status)" color="primary" variant="text" @click="handleEnterByEnterprise(item)">入职</v-btn>
+            <v-btn v-if="tab === 1" color="primary" variant="text" @click="handleEnterByEnterprise(item)">入职</v-btn>
           </template>
         </CtTable>
       </v-tabs-window-item>
@@ -64,6 +64,18 @@
       <CtForm ref="CtFormInviteRef" :items="formItems" style="height: 500px;"></CtForm>
     </CtDialog>
 
+    <!-- 邀请面试 -->
+    <CtDialog
+      :visible="showAccess"
+      :widthType="4"
+      titleClass="text-h6"
+      title="面试信息"
+      @close="showAccess = false"
+      @submit="handleAccess"
+    >
+      <CtForm ref="CtFormAccessRef" :items="AccessItems" style="height: 500px;"></CtForm>
+    </CtDialog>
+
     <CtDialog
       :visible="showReject"
       :widthType="4"
@@ -74,20 +86,6 @@
     >
       <CtForm ref="CtFormRejectRef" :items="rejectItems"></CtForm>
     </CtDialog>
-
-    <TipDialog
-      :visible="showTip"
-      icon="mdi-check-circle-outline"
-      message="面试邀请发送成功"
-      @close="showTip = false"
-    >
-      <div
-        class="color-primary text-decoration-underline cursor-pointer"
-        @click="handleToInterviewManagement"
-      >
-        点击到面试中查看。
-      </div>
-    </TipDialog>
   </div>
 </template>
 
@@ -97,7 +95,7 @@ import { ref } from 'vue'
 import { useRouter, useRoute } from 'vue-router'
 import { useI18n } from '@/hooks/web/useI18n'
 import Snackbar from '@/plugins/snackbar'
-import { getResumeList, resumeAccept, resumeInterview } from '@/api/recruit/enterprise/jobFair'
+import { getResumeList, resumeCancel, resumeAccept, resumeInterview } from '@/api/recruit/enterprise/jobFair'
 import { useUserStore } from '@/store/user'
 import { getDict } from '@/hooks/web/useDictionaries'
 import { previewFile } from '@/utils'
@@ -137,6 +135,7 @@ const headers = ref([
 
 const CtFormInviteRef = ref()
 const CtFormRejectRef = ref()
+const CtFormAccessRef = ref()
 
 const formItems = ref({
   options: [
@@ -182,6 +181,39 @@ const rejectItems = ref({
   ]
 })
 
+const AccessItems = ref({
+  options: [
+    {
+      type: 'datePicker',
+      mode: 'datetime',
+      labelWidth: 78,
+      value: '',
+      key: 'jobJoinDate',
+      label: '入职时间 *',
+      format: "YYYY/MM/DD HH:mm",
+      flexStyle: 'mb-7',
+      disabledDate: true,
+      rules: [v => !!v || '请选择入职时间']
+    },
+    {
+      type: 'text',
+      key: 'name',
+      value: '',
+      noParam: true,
+      disabled: true,
+      label: '入职人员'
+    },
+    {
+      type: 'text',
+      key: 'position',
+      value: '',
+      noParam: true,
+      disabled: true,
+      label: '入职岗位'
+    }
+  ]
+})
+
 const items = ref([])
 const loading = ref(false)
 const total = ref(0)
@@ -195,6 +227,8 @@ const showInvite = ref(false)
 
 const showReject = ref(false)
 
+const showAccess = ref(false)
+
 // 状态字典
 const statusList = ref([])
 
@@ -269,13 +303,47 @@ const handleReject = async () => {
     practiceSubmitRecordId: itemData.value.practiceSubmitRecordId,
     enterpriseId: itemData.value.enterpriseId
   })
-  await resumeAccept(query)
+  await resumeCancel(query)
   
   Snackbar.success(t('common.operationSuccessful'))
   showReject.value = false
   getList()
 }
 
+// 入职
+const handleEnterByEnterprise = async (item) => {
+  AccessItems.value.options.forEach(e => {
+    if (e.key === 'name') {
+      e.value = item.student?.studentName
+    }
+    if (e.key === 'position') {
+      e.value = item.enterpriseRecruit.enterpriseRecruitJobName
+    }
+  })
+  itemData.value = item
+  showAccess.value = true
+  
+}
+const handleAccess = async () => {
+
+  const { valid } = await CtFormAccessRef.value.formRef.validate()
+  if (!valid) return
+  const query = AccessItems.value.options.reduce((acc, cur) => {
+    if (cur.noParam) {
+      return acc
+    }
+    acc[cur.key] = cur.value
+    return acc
+  }, {
+    practiceSubmitRecordId: itemData.value.practiceSubmitRecordId,
+    studentId: itemData.value.studentId
+  })
+  await resumeAccept(query)
+  Snackbar.success(t('common.operationSuccessful'))
+  showAccess.value = false
+  getList()
+}
+
 
 
 const getList = async () => {

+ 1 - 1
src/views/recruit/enterprise/jobFair/index.vue

@@ -1,7 +1,7 @@
 <template>
   <v-card class="card-box pa-5 ">
     <v-card v-for="(k, i) in list" :key="i" class="elevation-3">
-      <img :src="k.url" style="width: 100%; height: 300px;">
+      <img :src="k.pcHeadImg" style="width: 100%; height: 300px;">
       <div class="pa-5">
         <div class="color-primary font-weight-bold font-size-18 mb-1">{{ k.title }}</div>
         <div class="color-666">{{ k.desc }}</div>