# 信贷客户家庭关系维护功能 - 前端实施计划 > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **目标:** 开发信贷客户家庭关系维护功能的完整前端实现,包括API接口、页面组件和交互功能 **架构:** 完全复用员工亲属关系维护功能的实现逻辑,创建独立页面组件 `ccdiCustFmyRelation` **技术栈:** Vue 2.6.12 + Element UI 2.15.14 + Vuex 3.6.0 + Axios 0.28.1 --- ## 前置条件 ### 环境要求 - Node.js 14+ - npm 6+ - 现代浏览器(Chrome/Edge/Firefox) ### 依赖服务 - 后端服务已启动并运行在 `http://localhost:8080` - 菜单权限SQL已执行,菜单已添加到系统 ### 参考模块 - `ruoyi-ui/src/api/ccdiStaffFmyRelation.js` - 员工亲属关系API(参考模板) - `ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue` - 员工亲属关系页面(参考模板) --- ## 任务列表 ### Task 10: 创建API接口文件 **Files:** - Create: `ruoyi-ui/src/api/ccdiCustFmyRelation.js` - Reference: `ruoyi-ui/src/api/ccdiStaffFmyRelation.js` **Step 1: 创建API文件** 创建 `ruoyi-ui/src/api/ccdiCustFmyRelation.js`: ```javascript import request from '@/utils/request' // 查询信贷客户家庭关系列表 export function listRelation(query) { return request({ url: '/ccdi/custFmyRelation/list', method: 'get', params: query }) } // 查询信贷客户家庭关系详细 export function getRelation(id) { return request({ url: '/ccdi/custFmyRelation/' + id, method: 'get' }) } // 新增信贷客户家庭关系 export function addRelation(data) { return request({ url: '/ccdi/custFmyRelation', method: 'post', data: data }) } // 修改信贷客户家庭关系 export function updateRelation(data) { return request({ url: '/ccdi/custFmyRelation', method: 'put', data: data }) } // 删除信贷客户家庭关系 export function delRelation(ids) { return request({ url: '/ccdi/custFmyRelation/' + ids, method: 'delete' }) } // 导出信贷客户家庭关系 export function exportRelation(query) { return request({ url: '/ccdi/custFmyRelation/export', method: 'post', params: query }) } // 下载导入模板 export function importTemplate() { return request({ url: '/ccdi/custFmyRelation/importTemplate', method: 'post' }) } // 导入信贷客户家庭关系 export function importData(file) { const formData = new FormData() formData.append('file', file) return request({ url: '/ccdi/custFmyRelation/importData', method: 'post', data: formData }) } // 查询导入状态 export function getImportStatus(taskId) { return request({ url: '/ccdi/custFmyRelation/importStatus/' + taskId, method: 'get' }) } // 查询导入失败记录 export function getImportFailures(taskId, pageNum, pageSize) { return request({ url: '/ccdi/custFmyRelation/importFailures/' + taskId, method: 'get', params: { pageNum, pageSize } }) } ``` **Step 2: Commit** ```bash git add ruoyi-ui/src/api/ccdiCustFmyRelation.js git commit -m "feat: 添加信贷客户家庭关系API接口" ``` --- ### Task 11: 创建主页面组件 **Files:** - Create: `ruoyi-ui/src/views/ccdiCustFmyRelation/index.vue` - Reference: `ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue` **Step 1: 创建页面组件** 复制 `ccdiStaffFmyRelation/index.vue`,进行以下关键修改: 1. **移除员工姓名相关功能** - 只保留信贷客户身份证号输入 2. **简化查询条件** - 移除状态下拉框 3. **修改表单** - personId改为普通输入框,不使用远程搜索 4. **修改权限标识** - 全部 `staffFmyRelation` → `custFmyRelation` 5. **修改localStorage键** - `cust_fmy_relation_import_last_task` 6. **修改字典类型引用** 完整代码结构: ```vue ``` **Step 2: Commit** ```bash git add ruoyi-ui/src/views/ccdiCustFmyRelation/index.vue git commit -m "feat: 添加信贷客户家庭关系页面组件" ``` --- ### Task 13: 配置字典数据 **前置条件:** - 已登录系统 - 具有系统管理权限 **Step 1: 确认字典类型存在** 1. 登录系统 2. 导航到: 系统管理 → 字典管理 3. 确认以下字典类型已存在: - `ccdi_relation_type`: 关系类型 - `ccdi_indiv_gender`: 性别 - `ccdi_certificate_type`: 证件类型 **Step 2: 添加字典数据(如不存在)** 如果字典类型不存在,参考以下数据添加: **关系类型 (ccdi_relation_type):** ``` 配偶 | 配偶 父亲 | 父亲 母亲 | 母亲 子女 | 子女 其他 | 其他 ``` **性别 (ccdi_indiv_gender):** ``` M | 男 F | 女 O | 其他 ``` **证件类型 (ccdi_certificate_type):** ``` 身份证 | 身份证 护照 | 护照 军官证 | 军官证 其他 | 其他 ``` --- ## 测试验证 ### Task 15: 前端功能测试 **前置条件:** - 后端服务已启动并运行正常 - 前端服务已启动 (`npm run dev`) - 菜单权限已配置 - 已登录系统(admin/admin123) **Step 1: 启动前端服务** ```bash cd ruoyi-ui npm run dev ``` **预期结果:** 服务启动成功,访问 http://localhost **Step 2: 登录系统** 用户名: `admin` 密码: `admin123` **Step 3: 导航到信贷客户家庭关系页面** 路径: 信息维护 → 信贷客户家庭关系 **预期结果:** 页面正常加载,显示查询条件和列表 **Step 4: 测试新增功能** 1. 点击"新增"按钮 2. 填写表单: - 信贷客户身份证号: `110101199001011234` - 关系类型: `配偶` - 关系人姓名: `张三` - 性别: `男` - 证件类型: `身份证` - 证件号码: `110101199001015678` - 手机号码1: `13800138000` 3. 点击"确定" **预期结果:** 新增成功,列表显示新记录,弹出成功提示 **Step 5: 测试查询功能** 1. 在查询条件中输入: - 信贷客户身份证号: `110101199001011234` 2. 点击"搜索" **预期结果:** 列表显示符合条件的记录 **Step 6: 测试编辑功能** 1. 点击记录的"编辑"按钮 2. 修改关系人姓名为 `张三丰` 3. 点击"确定" **预期结果:** 修改成功,列表显示更新后的数据 **Step 7: 测试删除功能** 1. 勾选一条记录 2. 点击"删除"按钮 3. 确认删除 **预期结果:** 删除成功,列表不再显示该记录 **Step 8: 测试导出功能** 1. 添加几条测试数据 2. 点击"导出"按钮 **预期结果:** 下载Excel文件,数据正确 **Step 9: 测试导入模板下载** 1. 点击"导入"按钮 2. 在导入对话框中点击"下载模板" **预期结果:** 下载Excel模板文件,包含所有必填字段 **Step 10: 测试导入功能** 1. 准备测试数据Excel文件 2. 点击"导入"按钮 3. 上传准备好的Excel文件 4. 等待异步导入完成 **预期结果:** - 显示导入任务已提交提示 - 导入完成后显示导入结果对话框 - 成功数据出现在列表中 - 失败数据显示在失败记录表格中 **Step 11: 测试字典显示** 验证以下字段正确显示字典标签: - 关系类型: 显示"配偶"、"父亲"等 - 性别: 显示"男"、"女"等 - 证件类型: 显示"身份证"、"护照"等 **预期结果:** 所有字典字段正确显示标签值 **Step 12: 测试权限控制** 1. 退出登录,使用没有权限的账号登录 2. 导航到信贷客户家庭关系页面 **预期结果:** 相应的操作按钮不显示或禁用 --- ### Task 16: 浏览器控制台测试 **Step 1: 打开浏览器开发者工具** 按 `F12` 打开开发者工具 **Step 2: 检查网络请求** 切换到 Network 标签,执行以下操作并检查请求: 1. **列表请求:** - Method: `GET` - URL: `/ccdi/custFmyRelation/list` - Status: `200` - Response: 包含 `rows` 和 `total` 2. **新增请求:** - Method: `POST` - URL: `/ccdi/custFmyRelation` - Status: `200` - Response: `{ "code": 200, "msg": "操作成功" }` 3. **修改请求:** - Method: `PUT` - URL: `/ccdi/custFmyRelation` - Status: `200` - Response: `{ "code": 200, "msg": "操作成功" }` 4. **删除请求:** - Method: `DELETE` - URL: `/ccdi/custFmyRelation/{ids}` - Status: `200` - Response: `{ "code": 200, "msg": "操作成功" }` **Step 3: 检查控制台错误** 切换到 Console 标签,确认没有JavaScript错误 **预期结果:** 控制台无红色错误信息 **Step 4: 检查页面性能** 1. 切换到 Performance 标签 2. 录制页面操作 3. 检查页面渲染性能 **预期结果:** 页面响应流畅,无明显卡顿 --- ## 完成检查清单 ### API接口 - [ ] API文件创建完成 - [ ] 所有接口方法定义正确 - [ ] 请求路径正确(`/ccdi/custFmyRelation`) - [ ] 请求方法正确(GET/POST/PUT/DELETE) ### 页面组件 - [ ] 页面组件创建完成 - [ ] 查询条件显示正确 - [ ] 列表数据显示正确 - [ ] 新增对话框正常 - [ ] 编辑对话框正常 - [ ] 表单验证规则正确 - [ ] 字典数据正确显示 - [ ] 权限标识正确 ### 导入导出 - [ ] 导出功能正常 - [ ] 导入模板下载正常 - [ ] 导入对话框正常 - [ ] 文件上传功能正常 - [ ] 异步导入状态轮询正常 - [ ] 导入结果显示正常 - [ ] 失败记录显示正常 ### 交互功能 - [ ] 分页功能正常 - [ ] 搜索功能正常 - [ ] 重置功能正常 - [ ] 多选功能正常 - [ ] 批量删除功能正常 - [ ] 单条删除功能正常 - [ ] 新增功能正常 - [ ] 编辑功能正常 - [ ] 表单验证正常 ### 权限控制 - [ ] 菜单权限已配置 - [ ] 按钮权限控制生效 - [ ] 无权限时按钮不显示 ### 用户体验 - [ ] 页面加载速度正常 - [ ] 操作响应及时 - [ ] 错误提示清晰 - [ ] 成功提示友好 - [ ] 控制台无错误 --- ## 预期结果 完成后,前端将提供以下功能: 1. **完整的CRUD界面** - 列表展示(分页) - 简化查询(身份证号、关系类型、关系人姓名) - 新增/编辑/删除/详情 2. **导入导出界面** - 一键导出Excel - 下载导入模板 - 文件拖拽上传 - 异步导入状态轮询 - 导入结果可视化展示 - 失败记录详细显示 3. **用户体验优化** - 响应式布局 - 字典下拉选择 - 表单验证提示 - 加载状态提示 - 操作结果反馈 4. **权限控制** - 菜单级权限 - 按钮级权限 - 操作前权限校验