diff --git a/docs/superpowers/plans/2026-03-25-admin-pagination.md b/docs/superpowers/plans/2026-03-25-admin-pagination.md new file mode 100644 index 0000000..79fa0e6 --- /dev/null +++ b/docs/superpowers/plans/2026-03-25-admin-pagination.md @@ -0,0 +1,701 @@ +# 管理后台分页功能实现计划 + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 为管理后台的所有表格页面(职位管理、投递管理、组织架构、用户管理)添加统一的分页功能。 + +**Architecture:** +- 后端已支持分页(DRF 的 `PageNumberPagination`,每页 20 条) +- 前端 API 层:修改各模块的 fetch 函数,接受 `page` 参数 +- 前端组件层:添加分页状态管理、分页事件处理、UI 控件,共 4 个页面 +- 每个组件遵循相同的模式,便于维护和扩展 + +**Tech Stack:** Vue 3 Composition API、Element Plus (el-pagination)、DRF pagination + +--- + +## 文件结构 + +### 前端 API 层(4 个文件修改) +- `offer_frontend/src/api/organizations.js` - 修改 `manageOrganizations(page=1)` +- `offer_frontend/src/api/jobs.js` - 修改 `manageJobs(page=1)` +- `offer_frontend/src/api/applications.js` - 修改 `getManageApplications(page=1)` +- `offer_frontend/src/api/client.js` 或页面内 - 用户管理 API 调用 + +### 前端组件层(4 个页面修改) +- `offer_frontend/src/views/admin/OrganizationManageView.vue` +- `offer_frontend/src/views/admin/JobManageView.vue` +- `offer_frontend/src/views/admin/ApplicationManageView.vue` +- `offer_frontend/src/views/admin/UserManageView.vue` + +--- + +## 实现任务 + +### Task 1: 修改 organizations.js - 支持分页参数 + +**Files:** +- Modify: `offer_frontend/src/api/organizations.js` + +- [ ] **Step 1: 修改 manageOrganizations 函数** + +编辑 `offer_frontend/src/api/organizations.js`,将 `manageOrganizations` 函数改为(使用 params 对象方式保持与其他 API 的一致性): + +```javascript +export const manageOrganizations = (page = 1) => + client.get('/organizations/manage/', { params: { page } }) +``` + +> 注:这个改动方式与 jobs.js 和 applications.js 中已有的 `{ params: { ... } }` 方式保持一致 + +- [ ] **Step 2: 验证其他导出函数不受影响** + +检查文件中的其他函数(`getOrganizations`, `createOrganization` 等)保持不变。 + +- [ ] **Step 3: Commit** + +```bash +git add offer_frontend/src/api/organizations.js +git commit -m "feat(api): 为 manageOrganizations 添加分页参数" +``` + +--- + +### Task 2: 修改 jobs.js - 支持分页参数 + +**Files:** +- Modify: `offer_frontend/src/api/jobs.js` + +- [ ] **Step 1: 修改 manageJobs 函数** + +编辑 `offer_frontend/src/api/jobs.js`,找到 `manageJobs` 函数(通常已有 params 参数),改为支持分页: + +```javascript +export const manageJobs = (page = 1, params = {}) => + client.get('/jobs/manage/', { params: { page, ...params } }) +``` + +> 如果现有函数签名已经是 `(params = {})` 的形式,则改为: +> ```javascript +> export const manageJobs = (params = {}) => +> client.get('/jobs/manage/', { params: { page: params.page || 1, ...params } }) +> ``` + +- [ ] **Step 2: 验证其他导出函数** + +检查 `getJobs`, `createJob`, `updateJob`, `deleteJob` 等函数保持不变。 + +- [ ] **Step 3: Commit** + +```bash +git add offer_frontend/src/api/jobs.js +git commit -m "feat(api): 为 manageJobs 添加分页参数" +``` + +--- + +### Task 3: 修改 applications.js - 支持分页参数 + +**Files:** +- Modify: `offer_frontend/src/api/applications.js` + +- [ ] **Step 1: 修改 getManageApplications 函数** + +编辑 `offer_frontend/src/api/applications.js`,找到 `getManageApplications` 函数,改为(支持分页 + 保留其他参数): + +```javascript +export const getManageApplications = (params = {}) => + client.get('/applications/manage/', { params: { page: params.page || 1, ...params } }) +``` + +> 调用时改为:`getManageApplications({ page: currentPage.value })` + +- [ ] **Step 2: 验证其他函数** + +确保 `applyJob`, `myApplications`, `updateApplicationStatus` 等函数不变。 + +- [ ] **Step 3: Commit** + +```bash +git add offer_frontend/src/api/applications.js +git commit -m "feat(api): 为 getManageApplications 添加分页参数" +``` + +--- + +### Task 4: 修改 OrganizationManageView.vue - 添加分页 + +**Files:** +- Modify: `offer_frontend/src/views/admin/OrganizationManageView.vue` + +**Step 4.1: 导入所需函数** + +- [ ] 在 `