浏览代码

人才详情-投递职位记录

Xiao_123 6 月之前
父节点
当前提交
510549b0c3

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

@@ -136,5 +136,10 @@ export const PersonInfoApi = {
   // 人才附件简历
   getPersonAttachmentList: async (params: any) => {
     return await request.get({ url: `/menduner/system/cv-attachment/page`, params })
+  },
+
+  // 获取投递职位列表
+  getPersonJobDeliveryList: async (params: any) => {
+    return await request.get({ url: `/menduner/system/job-cv-rel/page`, params })
   }
 }

+ 151 - 0
src/views/menduner/system/person/details/components/deliveryJob.vue

@@ -0,0 +1,151 @@
+<template>
+  <el-table v-loading="loading" :data="tableData" :stripe="true" class="m-t-20px">
+    <el-table-column label="职位名称" align="center" prop="job.name" />
+    <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.positionName" /> -->
+    <el-table-column label="地区" align="center" prop="job.areaName" />
+    <el-table-column label="薪资" align="center" prop="job.payFrom">
+      <template #default="scope">
+        <span v-if="scope.row.job.payFrom && scope.row.job.payTo">
+          {{ scope.row.job.payFrom }} - {{ scope.row.job.payTo }}/{{ payUnit.find(e => e.value === Number(scope.row.job.payUnit))?.label }}
+        </span>
+        <span v-else>面议</span>
+      </template>
+    </el-table-column>
+    <el-table-column label="投递附件名称" align="center" prop="cvRel.title" />
+    <el-table-column label="投递时间" align="center" prop="cvRel.createTime" :formatter="dateFormatter" width="180px" />
+    <!-- <el-table-column label="要求学历" align="center" prop="job.eduType">
+      <template #default="scope">
+        <dict-tag :type="DICT_TYPE.MENDUNER_EDUCATION_TYPE" :value="scope.row.job.eduType" />
+      </template>
+    </el-table-column>
+    <el-table-column label="工作经验" align="center" prop="job.expType">
+      <template #default="scope">
+        <dict-tag :type="DICT_TYPE.MENDUNER_EXP_TYPE" :value="scope.row.job.expType" />
+      </template>
+    </el-table-column>
+    <el-table-column label="职位状态" align="center" prop="job.status">
+        <template #default="scope">
+          <dict-tag :type="DICT_TYPE.MENDUNER_STATUS" :value="scope.row.job.status" />
+        </template>
+      </el-table-column> -->
+    <!-- <el-table-column label="刷新时间" align="center" prop="job.updateTime" width="180px">
+      <template #default="scope">
+        {{ timesTampChange(scope.row.job.updateTime, 'Y-M-D h:m') }}
+      </template>
+    </el-table-column> -->
+    <!-- <el-table-column label="到期时间" align="center" prop="job.expireTime" width="180px">
+      <template #default="scope">
+        {{ scope.row.job.expireTime ? timesTampChange(scope.row.job.expireTime, 'Y-M-D') : '长期有效' }}
+      </template>
+    </el-table-column> -->
+    <el-table-column label="操作" align="center">
+      <template #default="scope">
+        <el-button link type="primary" @click="openDetail(scope.row)" class="m-r-10px">详情</el-button>
+        <el-link type="primary" download :href="scope.row.cvRel.url" :underline="false" target="_blank">附件下载</el-link>
+      </template>
+    </el-table-column>
+  </el-table>
+
+  <Pagination
+    :total="total"
+    v-model:page="queryParams.pageNo"
+    v-model:limit="queryParams.pageSize"
+    @pagination="getList"
+  />
+
+  <Dialog title="职位详情" v-model="dialogVisible">
+    <el-descriptions :column="1" border>
+      <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.address }}</el-descriptions-item>
+      <el-descriptions-item label="薪资">
+        <span v-if="itemData.payFrom && itemData.payTo">
+          {{ itemData.payFrom }} - {{ itemData.payTo }}/{{ payUnit.find(e => e.value === Number(itemData.payUnit))?.label }}
+        </span>
+        <span v-else>面议</span>
+      </el-descriptions-item>
+      <el-descriptions-item label="投递附件名称">
+        <el-link type="primary" download :href="itemData.title" :underline="false" target="_blank">{{ itemData.title }}</el-link>
+      </el-descriptions-item>
+      <el-descriptions-item label="投递时间">
+        {{ itemData.time ? timesTampChange(itemData.time, 'Y-M-D h:m:s') : '' }}
+      </el-descriptions-item>
+      <el-descriptions-item label="招聘类型">
+        <dict-tag :type="DICT_TYPE.MENDUNER_JOB_TYPE" :value="itemData.type" />
+      </el-descriptions-item>
+      <el-descriptions-item label="学历要求">
+        <dict-tag :type="DICT_TYPE.MENDUNER_EDUCATION_TYPE" :value="itemData.eduType" />
+      </el-descriptions-item>
+      <el-descriptions-item label="工作经验">
+        <dict-tag :type="DICT_TYPE.MENDUNER_EXP_TYPE" :value="itemData.expType" />
+      </el-descriptions-item>
+      <el-descriptions-item label="刷新时间">{{ timesTampChange(itemData.updateTime, 'Y-M-D h:m') }}</el-descriptions-item>
+      <el-descriptions-item label="到期时间">
+        {{ itemData.expireTime ? timesTampChange(itemData.expireTime, 'Y-M-D') : '长期有效' }}
+      </el-descriptions-item>
+      <el-descriptions-item label="职位关键字">
+        <el-tag type="primary" v-for="k in itemData.tagList" :key="k" class="m-r-5px">{{ k }}</el-tag>
+      </el-descriptions-item>
+    </el-descriptions>
+    <template #footer>
+      <el-button @click="dialogVisible = false; itemData = {}">取 消</el-button>
+    </template>
+  </Dialog>
+</template>
+
+<script setup>
+defineOptions({ name: 'PersonEduList'})
+import { PersonInfoApi } from '@/api/menduner/system/person'
+import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
+import { dateFormatter } from '@/utils/formatTime'
+import { timesTampChange } from '@/utils/transform/date'
+import { dealDictObjData } from '@/utils/transform/position'
+
+const props = defineProps({
+  userId: String
+})
+
+const loading = ref(false)
+const tableData = ref([])
+const total = ref(0)
+const payUnit = getIntDictOptions(DICT_TYPE.MENDUNER_PAY_UNIT)
+const queryParams = reactive({
+  pageNo: 1,
+  pageSize: 10,
+  userId: props.userId
+})
+
+const getList = async () => {
+  loading.value = true
+  try {
+    const data = await PersonInfoApi.getPersonJobDeliveryList(queryParams)
+    tableData.value = data.list.map(e => {
+      e.job = dealDictObjData({}, e.job)
+      return e
+    })
+    total.value = data.total
+  } finally {
+    loading.value = false
+  }
+}
+getList()
+
+// 职位详情
+const itemData = ref({})
+const dialogVisible = ref(false)
+const openDetail = (item) => {
+  itemData.value = { 
+    ...item.job, 
+    enterpriseName: item.enterprise.anotherName || item.enterprise.name, 
+    url: item.cvRel.url, 
+    title: item.cvRel.title, 
+    time: item.cvRel.createTime
+  }
+  dialogVisible.value = true
+}
+</script>

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

@@ -73,7 +73,6 @@ const user = ref({})
 const getUserDetails = async () => {
   const data = await PersonInfoApi.getUserDetails(props.userId)
   user.value = data
-  console.log(packageList.value, data.vipFlag)
 }
 getUserDetails()
 </script>

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

@@ -43,9 +43,6 @@
             <el-tab-pane v-hasPermi="['menduner:system:work-exp:query']" label="工作经历">
               <Exp :user-id="userId" />
             </el-tab-pane>
-            <!-- <el-tab-pane v-hasPermi="['menduner:system:project-exp:query']" label="项目经历">
-              <Project :user-id="userId" />
-            </el-tab-pane> -->
             <el-tab-pane v-hasPermi="['menduner:system:job-interested:query']" label="求职意向">
               <JobIntention :user-id="userId" />
             </el-tab-pane>
@@ -55,6 +52,9 @@
             <el-tab-pane v-hasPermi="['menduner:system:user-account-record:query']" label="积分变动记录">
               <PointsChange :user-id="userId" />
             </el-tab-pane>
+            <el-tab-pane label="职位投递记录">
+              <DeliveryJob :user-id="userId" />
+            </el-tab-pane>
           </el-tabs>
         </el-card>
       </el-col>
@@ -70,12 +70,12 @@ import Info from './components/info.vue'
 import Account from './components/account.vue'
 import Edu from './components/edu.vue'
 import Exp from './components/exp.vue'
-// import Project from './components/project.vue'
 import JobIntention from './components/jobIntention.vue'
 import RechargeOrder from './components/rechargeOrder.vue'
 import PointsChange from './components/pointsChange.vue'
 import Collect from './components/collect.vue'
 import Attachment from './components/attachment.vue'
+import DeliveryJob from './components/deliveryJob.vue'
 
 /** 初始化 */
 const { currentRoute } = useRouter() // 路由