Explorar o código

人才详情-面试邀约记录

Xiao_123 hai 5 meses
pai
achega
58d63a4d14

+ 5 - 0
src/api/menduner/system/person/index.ts

@@ -141,5 +141,10 @@ export const PersonInfoApi = {
   // 获取投递职位列表
   getPersonJobDeliveryList: async (params: any) => {
     return await request.get({ url: `/menduner/system/job-cv-rel/page`, params })
+  },
+
+  // 面试邀约分页
+  getInterviewInvitePage: async (params: any) => {
+    return await request.get({ url: `/menduner/system/interview-invite/page`, params })
   }
 }

+ 1 - 0
src/utils/dict.ts

@@ -244,4 +244,5 @@ export enum DICT_TYPE {
   MENDUNER_PAY_UNIT= 'menduner_pay_unit', // 薪资单位
   MENDUNER_POINT_RULE_CONFIG_TRIGGER_TYPE= 'menduner_point_rule_config_trigger_type', // 积分规则触发类型
   MENDUNER_JOB_SEEK_STATUS = 'menduner_job_seek_status', // 求职状态
+  MENDUNER_INTERVIEW_INVITE_STATUS = 'menduner_interview_invite_status', // 面试邀约状态
 }

+ 3 - 3
src/views/menduner/system/analysis/statisticAnalysis/index.vue

@@ -430,7 +430,7 @@ const dealTableData = async () => {
     const areaList = await getDictOptions('areaList')
     tableData.value = tableData.value.map(item => {
       item.salaryDisplay = item.payFrom && item.payTo ? `${item.payFrom}-${item.payTo}/${getDictLabel(DICT_TYPE.MENDUNER_PAY_UNIT, item.payUnit)}` : '面议'
-      item.areaName = getText(item.areaId, areaList)
+      item.areaName = !item.areaId ? '全国' : getText(item.areaId, areaList)
       item.expName = getDictLabel(DICT_TYPE.MENDUNER_EXP_TYPE, item.expType)
       item.eduName = getDictLabel(DICT_TYPE.MENDUNER_EDUCATION_TYPE, item.eduType)
       return item
@@ -441,7 +441,7 @@ const dealTableData = async () => {
     const areaList = await getDictOptions('areaList')
     const positionData = await getDictOptions('positionData')
     tableData.value = tableData.value.map(item => {
-      item.areaName = getText(item.areaId, areaList)
+      item.areaName = !item.areaId ? '全国' : getText(item.areaId, areaList)
       item.positionName = getText(item.positionId, positionData, 'nameCn', 'id')
       item.salaryDisplay = item.payFrom && item.payTo ? `${item.payFrom}-${item.payTo}/${getDictLabel(DICT_TYPE.MENDUNER_PAY_UNIT, item.payUnit)}` : '面议'
       item.jobStatus = getDictLabel(DICT_TYPE.MENDUNER_JOB_SEEK_STATUS, item.jobStatus)
@@ -455,7 +455,7 @@ const dealTableData = async () => {
   if (currentItem.value.name === 'resumeReceived') {
     const areaList = await getDictOptions('areaList')
     tableData.value = tableData.value.map(item => {
-      item.areaName = getText(item.job.areaId, areaList)
+      item.areaName = !item.job.areaId ? '全国' : getText(item.job.areaId, areaList)
       item.salaryDisplay = item.job?.payFrom && item.job.payTo ? `${item.job.payFrom}-${item.job.payTo}/${getDictLabel(DICT_TYPE.MENDUNER_PAY_UNIT, item.job.payUnit)}` : '面议'
       item.jobStatus = getDictLabel(DICT_TYPE.MENDUNER_JOB_SEEK_STATUS, item.person.jobStatus)
       item.expName = getDictLabel(DICT_TYPE.MENDUNER_EXP_TYPE, item.job.expType)

+ 6 - 2
src/views/menduner/system/enterprise/message/details/components/job.vue

@@ -2,7 +2,11 @@
   <el-table v-loading="loading" :data="tableData" :stripe="true" class="m-t-20px">
     <el-table-column label="职位名称" align="center" prop="name" />
     <el-table-column label="职位类型" align="center" prop="positionName" />
-    <el-table-column label="地区" align="center" prop="areaName" />
+    <el-table-column label="地区" align="center" prop="areaName">
+      <template #default="scope">
+        {{ !scope.row.areaId ? '全国' : scope.row.areaName }}
+      </template>
+    </el-table-column>
     <el-table-column label="薪资" align="center" prop="payFrom">
       <template #default="scope">
         <span v-if="scope.row.payFrom && scope.row.payTo">
@@ -63,7 +67,7 @@
     <el-descriptions :column="1" border>
       <el-descriptions-item label="职位名称">{{ itemData.name }}</el-descriptions-item>
       <el-descriptions-item label="职位类型">{{ itemData.positionName }}</el-descriptions-item>
-      <el-descriptions-item label="工作城市">{{ itemData.areaName }}</el-descriptions-item>
+      <el-descriptions-item label="工作城市">{{ !itemData.areaId ? '全国' : itemData.areaName }}</el-descriptions-item>
       <el-descriptions-item label="详细地址">{{ itemData.address }}</el-descriptions-item>
       <el-descriptions-item label="薪资">
         <span v-if="itemData.payFrom && itemData.payTo">

+ 8 - 5
src/views/menduner/system/job/index.vue

@@ -114,7 +114,9 @@
     <el-table v-loading="loading" :data="list" :stripe="true">
       <el-table-column label="职位名称" align="center" prop="name" />
       <el-table-column label="职位类型" align="center" prop="positionName" />
-      <el-table-column label="工作地区" align="center" prop="areaName" />
+      <el-table-column label="工作地区" align="center" prop="areaName">
+        <template #default="scope">{{ !scope.row.areaId ? '全国' : scope.row.areaName }}</template>
+      </el-table-column>
       <el-table-column label="招聘类型" align="center" prop="type">
         <template #default="scope">
           <dict-tag :type="DICT_TYPE.MENDUNER_JOB_TYPE" :value="scope.row.type" />
@@ -154,10 +156,10 @@
       />
       <el-table-column label="操作" align="center">
         <template #default="scope">
-          <el-button v-if="scope.row.status === '0'" link type="primary" @click="openForm('update', scope.row.id)">编辑</el-button>
+          <!-- <el-button v-if="scope.row.status === '0'" link type="primary" @click="openForm('update', scope.row.id)">编辑</el-button> -->
           <el-button link type="danger" @click="handleDelete(scope.row.id)">删除</el-button>
-          <el-button v-if="scope.row.status === '0'" link type="primary" @click="handleAction(0, scope.row.id)">关闭</el-button>
-          <el-button v-if="scope.row.status === '1'" link type="primary" @click="handleAction(1, scope.row.id)">激活</el-button>
+          <el-button v-if="scope.row.status === '0'" link type="warning" @click="handleAction(0, scope.row.id)">关闭</el-button>
+          <el-button v-if="scope.row.status === '1'" link type="success" @click="handleAction(1, scope.row.id)">激活</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -215,12 +217,13 @@ const positionTreeData = ref([])
 const getDictData = async () => {
   const { data } = await getDict('areaTreeData', {}, 'areaTreeData')
   const obj = data.find(e => e.name === '中国')
-  areaTreeData.value = obj?.children ? obj.children.map(e =>{
+  const list = obj?.children ? obj.children.map(e =>{
     // 市辖区直接显示区
     const municipality = e.children && e.children.length && e.children[0].name === '市辖区'
     if (municipality && e.children[0].children?.length) e.children = e.children[0].children
     return e
   }) : []
+  areaTreeData.value = list.length ? [{ name: '全国', id: -1 }, ...list] : []
 
   const { data: position } = await getDict('positionTreeData', {}, 'positionTreeData')
   positionTreeData.value = position && position.length ? position : []

+ 4 - 2
src/views/menduner/system/person/details/components/deliveryJob.vue

@@ -4,7 +4,9 @@
     <el-table-column label="发布企业" align="center" prop="enterprise.anotherName">
       <template #default="scope">{{ scope.row.enterprise.anotherName || scope.row.enterprise.name}}</template>
     </el-table-column>
-    <el-table-column label="地区" align="center" prop="job.areaName" />
+    <el-table-column label="地区" align="center" prop="job.areaName">
+      <template #default="scope">{{ !scope.row.job.areaId ? '全国' : scope.row.job.areaName }}</template>
+    </el-table-column>
     <el-table-column label="薪资" align="center" prop="job.payFrom">
       <template #default="scope">
         <span v-if="scope.row.job.payFrom && scope.row.job.payTo">
@@ -40,7 +42,7 @@
       <el-descriptions-item label="职位名称">{{ itemData.name }}</el-descriptions-item>
       <el-descriptions-item label="发布企业">{{ itemData.enterpriseName }}</el-descriptions-item>
       <el-descriptions-item label="职位类型">{{ itemData.positionName }}</el-descriptions-item>
-      <el-descriptions-item label="工作城市">{{ itemData.areaName }}</el-descriptions-item>
+      <el-descriptions-item label="工作城市">{{ !itemData.areaId ? '全国' : itemData.areaName }}</el-descriptions-item>
       <el-descriptions-item label="详细地址">{{ itemData.address }}</el-descriptions-item>
       <el-descriptions-item label="薪资">
         <span v-if="itemData.payFrom && itemData.payTo">

+ 2 - 14
src/views/menduner/system/person/details/components/edu.vue

@@ -12,20 +12,8 @@
         <dict-tag :type="DICT_TYPE.MENDUNER_EDUCATION_SYSTEM_TYPE" :value="scope.row.educationSystemType" />
       </template>
     </el-table-column>
-    <el-table-column
-      label="在校开始日期"
-      align="center"
-      prop="startTime"
-      :formatter="dateFormatter2"
-      width="180px"
-    />
-    <el-table-column
-      label="在校结束日期"
-      align="center"
-      prop="endTime"
-      :formatter="dateFormatter2"
-      width="180px"
-    />
+    <el-table-column label="在校开始日期" align="center" prop="startTime" :formatter="dateFormatter2" width="180px" />
+    <el-table-column label="在校结束日期" align="center" prop="endTime" :formatter="dateFormatter2" width="180px" />
     <el-table-column label="在校经历" align="center" prop="content" :show-overflow-tooltip="true" />
   </el-table>
 

+ 1 - 1
src/views/menduner/system/person/details/components/info.vue

@@ -26,7 +26,7 @@
         <dict-tag :type="DICT_TYPE.MENDUNER_JOB_TYPE" :value="info.jobType" />
       </el-descriptions-item>
       <el-descriptions-item label="求职状态">
-        <dict-tag :type="DICT_TYPE.MENDUNER_JOB_STATUS" :value="info.jobStatus" />
+        <dict-tag :type="DICT_TYPE.MENDUNER_JOB_SEEK_STATUS" :value="info.jobStatus" />
       </el-descriptions-item>
       <el-descriptions-item label="账号状态">
         <dict-tag :type="DICT_TYPE.MENDUNER_STATUS" :value="user.status" />

+ 70 - 0
src/views/menduner/system/person/details/components/interviewInvite.vue

@@ -0,0 +1,70 @@
+<template>
+  <ContentWrap>
+    <el-table v-loading="loading" :data="list" :stripe="true">
+      <el-table-column label="投递岗位" align="center" prop="job.name" />
+      <el-table-column label="岗位薪资" align="center" prop="job.payFrom">
+        <template #default="{ row }">
+          {{ !row.job.payFrom && !row.job.payTo ? '面议' : `${row.job.payFrom}-${row.job.payTo}/${payUnit.find(e => e.value === Number(row.job.payUnit))?.label}` }}
+        </template>
+      </el-table-column>
+      <el-table-column label="发布企业" align="center" prop="enterprise.name">
+        <template #default="{ row }">{{ row.enterprise.anotherName || row.enterprise.name }}</template>
+      </el-table-column>
+      <el-table-column label="面试时间" align="center" prop="time">
+        <template #default="{ row }">{{ timesTampChange(row.time, 'Y-M-D h:m') }}</template>
+      </el-table-column>
+      <el-table-column label="面试地点" align="center" prop="address" />
+      <el-table-column label="联系人" align="center" prop="contact.name" />
+      <el-table-column label="联系电话" align="center" prop="phone" />
+      <el-table-column label="状态" align="center" prop="status">
+        <template #default="{ row }">
+          <dict-tag :type="DICT_TYPE.MENDUNER_INTERVIEW_INVITE_STATUS" :value="row.status" />
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页 -->
+    <Pagination
+      :total="total"
+      v-model:page="queryParams.pageNo"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </ContentWrap>
+</template>
+
+<script lang="ts" setup>
+import { timesTampChange } from '@/utils/transform/date'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
+import { PersonInfoApi } from '@/api/menduner/system/person'
+defineOptions({ name: 'PersonInterviewInvite' })
+
+const props = defineProps({
+  userId: String
+})
+
+const loading = ref(true) // 列表的加载中
+const total = ref(0) // 列表的总页数
+const queryParams = reactive({
+  pageNo: 1,
+  pageSize: 10,
+  userId: props.userId
+})
+
+const payUnit = getIntDictOptions(DICT_TYPE.MENDUNER_PAY_UNIT)
+const list = ref([]) // 列表的数据
+const getList = async () => {
+  loading.value = true
+  try {
+    const data = await PersonInfoApi.getInterviewInvitePage(queryParams)
+    list.value = data.list
+    total.value = data.total
+  } finally {
+    loading.value = false
+  }
+}
+
+/** 初始化 **/
+onMounted(() => {
+  getList()
+})
+</script>

+ 4 - 0
src/views/menduner/system/person/details/index.vue

@@ -40,6 +40,9 @@
             <el-tab-pane label="职位投递记录">
               <DeliveryJob :user-id="userId" />
             </el-tab-pane>
+            <el-tab-pane label="面试邀约记录">
+              <InterviewInvite :user-id="userId" />
+            </el-tab-pane>
             <el-tab-pane v-hasPermi="['menduner:system:edu-exp:query']" label="教育经历">
               <Edu :user-id="userId" />
             </el-tab-pane>
@@ -80,6 +83,7 @@ import Collect from './components/collect.vue'
 import Attachment from './components/attachment.vue'
 import DeliveryJob from './components/deliveryJob.vue'
 import BalanceDetails from './components/balanceDetails.vue'
+import InterviewInvite from './components/interviewInvite.vue'
 
 /** 初始化 */
 const { currentRoute } = useRouter() // 路由