feat(admin): 投递管理和职位管理添加分页及职位名称跳转链接

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
TianyangZhang 2026-03-26 13:23:32 +08:00
parent 0d7576dc85
commit 5074377ace
4 changed files with 45 additions and 10 deletions

View File

@ -2,5 +2,5 @@ import client from './client'
export const applyJob = (jobId) => client.post('/applications/apply/', { job: jobId })
export const getMyApplications = () => client.get('/applications/mine/')
export const getManageApplications = (params = {}) => client.get('/applications/manage/', { params: { page: params.page || 1, ...params } })
export const getManageApplications = (page = 1) => client.get('/applications/manage/', { params: { page } })
export const updateApplicationStatus = (id, data) => client.patch(`/applications/manage/${id}/status/`, data)

View File

@ -2,7 +2,7 @@ import client from './client'
export const getJobs = (params) => client.get('/jobs/public/', { params })
export const getJob = (id) => client.get(`/jobs/public/${id}/`)
export const manageJobs = (params = {}) => client.get('/jobs/manage/', { params: { page: params.page || 1, ...params } })
export const manageJobs = (page = 1) => client.get('/jobs/manage/', { params: { page } })
export const createJob = (data) => client.post('/jobs/manage/', data)
export const updateJob = (id, data) => client.patch(`/jobs/manage/${id}/`, data)
export const deleteJob = (id) => client.delete(`/jobs/manage/${id}/`)

View File

@ -1,8 +1,14 @@
<template>
<div>
<h2>投递管理</h2>
<el-table :data="applications" v-loading="loading" border>
<el-table-column prop="job_title" label="职位" />
<el-table :data="applications" v-loading="loading" border style="width:100%">
<el-table-column label="职位">
<template #default="{ row }">
<el-button type="primary" link @click="$router.push({ name: 'JobDetail', params: { id: row.job } })">
{{ row.job_title }}
</el-button>
</template>
</el-table-column>
<el-table-column label="求职者">
<template #default="{ row }">{{ row.resume_snapshot?.name }}</template>
</el-table-column>
@ -24,6 +30,15 @@
</template>
</el-table-column>
</el-table>
<div style="margin-top: 16px; text-align: right;">
<el-pagination
v-model:current-page="currentPage"
:page-size="pageSize"
:total="total"
@current-change="handlePageChange"
layout="total, prev, pager, next, jumper"
/>
</div>
<el-dialog v-model="resumeVisible" title="简历详情" width="700px">
<div v-if="currentResume" class="resume-detail">
@ -104,6 +119,9 @@ const applications = ref([])
const loading = ref(false)
const resumeVisible = ref(false)
const currentResume = ref(null)
const currentPage = ref(1)
const pageSize = ref(20)
const total = ref(0)
const genderMap = {
'male': '男',
@ -112,12 +130,23 @@ const genderMap = {
'': '-'
}
onMounted(async () => {
const fetchApplications = async (page = 1) => {
loading.value = true
const { data } = await getManageApplications()
applications.value = data.results
loading.value = false
})
try {
const { data } = await getManageApplications(page)
applications.value = data.results
total.value = data.count
currentPage.value = page
} finally {
loading.value = false
}
}
function handlePageChange(newPage) {
fetchApplications(newPage)
}
onMounted(() => fetchApplications())
async function updateStatus(row) {
try {

View File

@ -5,7 +5,13 @@
<el-button type="primary" @click="openDialog()">发布职位</el-button>
</div>
<el-table :data="jobs" v-loading="loading" border>
<el-table-column prop="title" label="职位名称" />
<el-table-column label="职位名称">
<template #default="{ row }">
<el-button type="primary" link @click="$router.push({ name: 'JobDetail', params: { id: row.id } })">
{{ row.title }}
</el-button>
</template>
</el-table-column>
<el-table-column prop="organization_name" label="所属公司" />
<el-table-column prop="location" label="地点" />
<el-table-column prop="salary" label="薪资" />