# 员工亲属资产维护前端实施计划

> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.

**Goal:** 在员工亲属关系维护页面中增加亲属资产的可视化维护、详情展示和资产导入交互能力。

**Architecture:** 保持 `ccdiStaffFmyRelation` 为唯一页面入口，在现有新增、编辑、详情弹窗中扩展亲属资产子表，并新增独立的亲属资产导入状态、弹窗和失败记录视图。资产归属字段不在前端暴露，提交时仅上传资产业务字段列表。

**Tech Stack:** Vue 2, Element UI, 若依前端脚手架, Axios request 封装

---

### Task 1: 扩展前端 API 封装资产导入与聚合保存字段

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\api\ccdiStaffFmyRelation.js`
- Create: `D:\ccdi\ccdi\ruoyi-ui\src\api\ccdiAssetInfo.js`

**Step 1: 保持亲属关系 API 支持传递 `assetInfoList`**

- `addRelation`
- `updateRelation`
- `getRelation`

**Step 2: 新增资产导入 API 文件**

- 下载模板
- 提交导入
- 查询状态
- 查询失败记录

**Step 3: 自查接口路径**

- 使用 `/ccdi/assetInfo/*`
- 与现有 `staffFmyRelation` API 区分清楚

**Step 4: 运行构建检查**

Run: `npm run build:prod`
Expected: API 引用路径无语法错误

**Step 5: 提交**

```bash
git add ruoyi-ui/src/api/ccdiStaffFmyRelation.js ruoyi-ui/src/api/ccdiAssetInfo.js
git commit -m "新增亲属资产前端接口封装"
```

### Task 2: 扩展亲属关系表单模型与重置逻辑

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`

**Step 1: 为 `form` 增加 `assetInfoList`**

- 默认值设为空数组
- 重置时同步清空

**Step 2: 处理详情与编辑回显**

- `getRelation` 返回后回填 `assetInfoList`
- 保证空值时回退为 `[]`

**Step 3: 在提交前过滤空资产行**

- 仅保留有实际内容的资产
- 不在前端传 `familyId`、`personId`

**Step 4: 本地验证**

Run: `npm run build:prod`
Expected: 页面脚本编译通过

**Step 5: 提交**

```bash
git add ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue
git commit -m "扩展亲属关系表单资产模型"
```

### Task 3: 在新增/编辑弹窗中加入亲属资产子表

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`

**Step 1: 新增“亲属资产信息”分区**

- 放在基本信息下方
- 右侧增加“新增资产”按钮

**Step 2: 渲染可编辑子表**

- 字段包含资产大类、资产小类、资产名称、产权占比、购买/评估日期、资产原值、当前估值、估值截止日期、资产状态、备注、操作

**Step 3: 支持资产行增删**

- 新增空白行
- 删除当前行

**Step 4: 对新增资产按钮加前置限制**

- 新增模式下未填写 `relationCertType` 或 `relationCertNo` 时禁用
- 提示“请先填写关系人证件信息”

**Step 5: 构建验证**

Run: `npm run build:prod`
Expected: 模板与脚本通过编译

**Step 6: 提交**

```bash
git add ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue
git commit -m "新增亲属资产编辑子表"
```

### Task 4: 锁定编辑场景下的亲属证件字段

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`

**Step 1: 将 `relationCertType` 在编辑场景下置灰**

- `:disabled="!isAdd"`

**Step 2: 将 `relationCertNo` 在编辑场景下置灰**

- `:disabled="!isAdd"`

**Step 3: 核对员工身份证号选择器**

- 保持当前新增可选、编辑禁改逻辑

**Step 4: 构建验证**

Run: `npm run build:prod`
Expected: 字段禁用逻辑无模板错误

**Step 5: 提交**

```bash
git add ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue
git commit -m "锁定亲属证件字段编辑能力"
```

### Task 5: 在详情弹窗展示亲属资产信息

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`

**Step 1: 增加详情分区**

- 标题为“亲属资产信息”

**Step 2: 使用只读表格展示资产**

- 展示关键资产字段
- 不展示归属键和主键

**Step 3: 增加空状态**

- 无资产时显示“暂无亲属资产信息”

**Step 4: 构建验证**

Run: `npm run build:prod`
Expected: 详情模板渲染通过

**Step 5: 提交**

```bash
git add ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue
git commit -m "新增亲属资产详情展示"
```

### Task 6: 新增亲属资产导入入口与状态管理

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`

**Step 1: 在按钮区新增入口**

- “导入亲属资产信息”
- “查看亲属资产导入失败记录”

**Step 2: 新增独立上传弹窗状态**

- `assetUpload`
- `assetImportPollingTimer`
- `assetCurrentTaskId`

**Step 3: 新增独立 localStorage key**

- 例如 `staff_fmy_asset_import_last_task`

**Step 4: 新增资产导入失败记录弹窗与分页状态**

- 与现有亲属关系导入分开维护

**Step 5: 构建验证**

Run: `npm run build:prod`
Expected: 导入状态变量与模板绑定正常

**Step 6: 提交**

```bash
git add ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue
git commit -m "新增亲属资产导入交互状态"
```

### Task 7: 接通资产导入上传、轮询与失败记录查询

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`
- Check: `D:\ccdi\ccdi\ruoyi-ui\src\api\ccdiAssetInfo.js`

**Step 1: 实现模板下载**

- 调用资产导入模板接口

**Step 2: 实现上传成功回调**

- 校验返回的 `taskId`
- 保存任务状态
- 启动轮询

**Step 3: 实现轮询完成处理**

- 根据成功/失败数展示通知
- 刷新页面列表
- 控制失败记录按钮显示

**Step 4: 实现失败记录查询**

- 独立调用资产失败记录接口
- 处理记录过期和网络错误提示

**Step 5: 构建验证**

Run: `npm run build:prod`
Expected: 资产导入流程相关方法通过编译

**Step 6: 提交**

```bash
git add ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue
git commit -m "接通亲属资产导入轮询与失败记录"
```

### Task 8: 调整样式与交互可读性

**Files:**
- Modify: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`

**Step 1: 为资产分区补样式**

- 表格区间距
- 空状态样式
- 分区标题样式

**Step 2: 检查弹窗宽度**

- 保证新增/编辑/详情在资产表加入后仍可读

**Step 3: 检查移动端/窄屏降级**

- 避免列宽完全挤压

**Step 4: 构建验证**

Run: `npm run build:prod`
Expected: 样式变更不影响构建

**Step 5: 提交**

```bash
git add ruoyi-ui/src/views/ccdiStaffFmyRelation/index.vue
git commit -m "优化亲属资产页面样式与布局"
```

### Task 9: 执行前端联调验证

**Files:**
- Check: `D:\ccdi\ccdi\ruoyi-ui\src\views\ccdiStaffFmyRelation\index.vue`

**Step 1: 运行生产构建**

Run: `cd ruoyi-ui && npm run build:prod`
Expected: 构建成功

**Step 2: 启动前端开发环境**

Run: `cd ruoyi-ui && npm run dev`
Expected: 本地页面可访问

**Step 3: 手工验证页面场景**

- 新增亲属关系并添加资产
- 编辑亲属关系并维护资产
- 验证证件类型、证件号码禁改
- 查看详情资产区
- 触发亲属资产导入和失败记录查看

**Step 4: 整理验证结果**

- 记录已验证场景和遗留问题

**Step 5: 提交**

```bash
git add .
git commit -m "完成亲属资产前端联调验证"
```
