deliveryJob.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <el-table v-loading="loading" :data="tableData" :stripe="true" class="m-t-20px">
  3. <el-table-column label="职位名称" align="center" prop="job.name" />
  4. <el-table-column label="发布企业" align="center" prop="enterprise.anotherName">
  5. <template #default="scope">{{ scope.row.enterprise.anotherName || scope.row.enterprise.name}}</template>
  6. </el-table-column>
  7. <el-table-column label="地区" align="center" prop="job.areaName">
  8. <template #default="scope">{{ !scope.row.job.areaId ? '全国' : scope.row.job.areaName }}</template>
  9. </el-table-column>
  10. <el-table-column label="薪资" align="center" prop="job.payFrom">
  11. <template #default="scope">
  12. <span v-if="scope.row.job.payFrom && scope.row.job.payTo">
  13. {{ scope.row.job.payFrom }} - {{ scope.row.job.payTo }}/{{ payUnit.find(e => e.value === Number(scope.row.job.payUnit))?.label }}
  14. </span>
  15. <span v-else>面议</span>
  16. </template>
  17. </el-table-column>
  18. <el-table-column label="投递附件名称" align="center" prop="cvRel.title" />
  19. <el-table-column label="投递时间" align="center" prop="cvRel.createTime" :formatter="dateFormatter" width="180px" />
  20. <el-table-column label="投递状态" align="center">
  21. <template #default="scope">
  22. {{ scope.row.cvRel.status === '0' ? '未查看' : '已查看'}}
  23. </template>
  24. </el-table-column>
  25. <el-table-column label="操作" align="center">
  26. <template #default="scope">
  27. <el-button link type="primary" @click="openDetail(scope.row)" class="m-r-10px">详情</el-button>
  28. <el-link type="primary" download :href="scope.row.cvRel.url" :underline="false" target="_blank">附件下载</el-link>
  29. </template>
  30. </el-table-column>
  31. </el-table>
  32. <Pagination
  33. :total="total"
  34. v-model:page="queryParams.pageNo"
  35. v-model:limit="queryParams.pageSize"
  36. @pagination="getList"
  37. />
  38. <Dialog title="职位详情" v-model="dialogVisible">
  39. <el-descriptions :column="1" border>
  40. <el-descriptions-item label="职位名称">{{ itemData.name }}</el-descriptions-item>
  41. <el-descriptions-item label="发布企业">{{ itemData.enterpriseName }}</el-descriptions-item>
  42. <el-descriptions-item label="职位类型">{{ itemData.positionName }}</el-descriptions-item>
  43. <el-descriptions-item label="工作城市">{{ !itemData.areaId ? '全国' : itemData.areaName }}</el-descriptions-item>
  44. <el-descriptions-item label="详细地址">{{ itemData.address }}</el-descriptions-item>
  45. <el-descriptions-item label="薪资">
  46. <span v-if="itemData.payFrom && itemData.payTo">
  47. {{ itemData.payFrom }} - {{ itemData.payTo }}/{{ payUnit.find(e => e.value === Number(itemData.payUnit))?.label }}
  48. </span>
  49. <span v-else>面议</span>
  50. </el-descriptions-item>
  51. <el-descriptions-item label="投递附件名称">
  52. <el-link type="primary" download :href="itemData.title" :underline="false" target="_blank">{{ itemData.title }}</el-link>
  53. </el-descriptions-item>
  54. <el-descriptions-item label="投递时间">
  55. {{ itemData.time ? timesTampChange(itemData.time, 'Y-M-D h:m:s') : '' }}
  56. </el-descriptions-item>
  57. <el-descriptions-item label="投递状态">
  58. {{ itemData.cvStatus === '0' ? '未查看' : '已查看' }}
  59. </el-descriptions-item>
  60. <el-descriptions-item label="学历要求">
  61. <dict-tag :type="DICT_TYPE.MENDUNER_EDUCATION_TYPE" :value="itemData.eduType" />
  62. </el-descriptions-item>
  63. <el-descriptions-item label="工作经验">
  64. <dict-tag :type="DICT_TYPE.MENDUNER_EXP_TYPE" :value="itemData.expType" />
  65. </el-descriptions-item>
  66. <el-descriptions-item label="刷新时间">{{ timesTampChange(itemData.updateTime, 'Y-M-D h:m') }}</el-descriptions-item>
  67. <el-descriptions-item label="到期时间">
  68. {{ itemData.expireTime ? timesTampChange(itemData.expireTime, 'Y-M-D') : '长期有效' }}
  69. </el-descriptions-item>
  70. <el-descriptions-item label="职位关键字">
  71. <el-tag type="primary" v-for="k in itemData.tagList" :key="k" class="m-r-5px m-b-5px">{{ k }}</el-tag>
  72. </el-descriptions-item>
  73. </el-descriptions>
  74. <template #footer>
  75. <el-button @click="dialogVisible = false; itemData = {}">取 消</el-button>
  76. </template>
  77. </Dialog>
  78. </template>
  79. <script setup>
  80. defineOptions({ name: 'PersonEduList'})
  81. import { PersonInfoApi } from '@/api/menduner/system/person'
  82. import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
  83. import { dateFormatter } from '@/utils/formatTime'
  84. import { timesTampChange } from '@/utils/transform/date'
  85. import { dealDictObjData } from '@/utils/transform/position'
  86. const props = defineProps({
  87. userId: String
  88. })
  89. const loading = ref(false)
  90. const tableData = ref([])
  91. const total = ref(0)
  92. const payUnit = getIntDictOptions(DICT_TYPE.MENDUNER_PAY_UNIT)
  93. const queryParams = reactive({
  94. pageNo: 1,
  95. pageSize: 10,
  96. userId: props.userId
  97. })
  98. const getList = async () => {
  99. loading.value = true
  100. try {
  101. const data = await PersonInfoApi.getPersonJobDeliveryList(queryParams)
  102. tableData.value = data.list.map(e => {
  103. e.job = dealDictObjData({}, e.job)
  104. return e
  105. })
  106. total.value = data.total
  107. } finally {
  108. loading.value = false
  109. }
  110. }
  111. getList()
  112. // 职位详情
  113. const itemData = ref({})
  114. const dialogVisible = ref(false)
  115. const openDetail = (item) => {
  116. itemData.value = {
  117. ...item.job,
  118. enterpriseName: item.enterprise.anotherName || item.enterprise.name,
  119. url: item.cvRel.url,
  120. title: item.cvRel.title,
  121. time: item.cvRel.createTime,
  122. cvStatus: item.cvRel.status
  123. }
  124. console.log(itemData.value, '===========')
  125. dialogVisible.value = true
  126. }
  127. </script>