Files
ibs-fullstack/docs/plans/2026-02-28-featured-area-customer-view.md
wkc c432b04075 docs: 添加特色区域查看客户功能实施计划
- 详细的6个任务分解
- 每个步骤包含具体代码和验证方法
- 包含完整的测试流程
- 包含回滚方案
2026-02-28 16:03:35 +08:00

390 lines
9.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 特色区域查看客户功能实施计划
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
**目标:** 在特色区域详情窗口添加"查看客户"图标按钮,复用现有的 customer-modal 组件,实现客户列表查看功能。
**架构:** 组件复用架构 - BMapPolygonEditor.vue 引入 CustomerModal.vue通过 refs 调用模态框的 onOpen() 方法。
**技术栈:** Vue 2.x, Element UI, 若依框架
**设计文档:** `docs/plans/2026-02-28-featured-area-customer-view-design.md`
---
## 任务 1: 引入 CustomerModal 组件
**文件:**
- 修改: `ruoyi-ui/src/map/BMapPolygonEditor.vue:20-30`import 区域)
**步骤 1: 在 script 标签内添加 import 语句**
在第22行MenuEdit 导入语句之后)添加:
```javascript
import CustomerModal from "@/views/grid/map/draw-area/customer-modal.vue"
```
**步骤 2: 在 components 中注册组件**
在第26-30行的 components 对象中添加 CustomerModal
```javascript
components: {
MenuEdit,
BMapPolygonEditor,
MenuEdit,
CustomerModal, // 新增
},
```
**步骤 3: 验证 import 路径正确**
运行前端项目验证无报错:
```bash
cd ruoyi-ui
npm run dev
```
预期: 浏览器控制台无 "Failed to mount component" 错误
**步骤 4: 提交代码**
```bash
git add ruoyi-ui/src/map/BMapPolygonEditor.vue
git commit -m "feat(featured-areas): 引入 CustomerModal 组件"
```
---
## 任务 2: 在 template 中添加组件引用
**文件:**
- 修改: `ruoyi-ui/src/map/BMapPolygonEditor.vue:270-275`template 末尾)
**步骤 1: 在 template 末尾添加组件标签**
在第273行`</transition>` 之后,`<div class="search-box">` 之前)添加:
```vue
</transition>
<!-- 查看客户模态框 -->
<customer-modal
ref="customerModal"
cardType="featured"
:detailInfo="areaForm"
:btnType="'2'"
/>
<div class="search-box">
```
**步骤 2: 验证组件引用**
在浏览器中打开特色区域页面,验证控制台无报错。
**步骤 3: 验证 props 传递**
在 Vue DevTools 中检查 customer-modal 组件的 props
- cardType 应该是 "featured"
- detailInfo 应该是 areaForm 对象
- btnType 应该是 "2"
**步骤 4: 提交代码**
```bash
git add ruoyi-ui/src/map/BMapPolygonEditor.vue
git commit -m "feat(featured-areas): 添加 CustomerModal 组件引用"
```
---
## 任务 3: 在区域详情窗口添加查看客户图标按钮
**文件:**
- 修改: `ruoyi-ui/src/map/BMapPolygonEditor.vue:221-240`edit-operate 按钮区域)
**步骤 1: 定位按钮插入位置**
找到第221-240行的代码区域这是 `infoType === 'SHOW'` 的按钮区域:
- 第229行修改信息按钮结束
- 第240行删除区域按钮开始
我们需要在修改信息按钮之后插入查看客户按钮。
**步骤 2: 添加查看客户图标按钮**
在第239行修改信息 tooltip 结束之后第240行删除区域 tooltip 开始)之前插入:
```vue
</el-tooltip>
<!-- 查看客户 -->
<el-tooltip placement="top" effect="light" content="查看客户">
<i
class="el-icon-user icon-area"
@click.stop="previewCustomer"
/>
</el-tooltip>
<!-- 删除区域 -->
<el-tooltip placement="top" effect="light" content="删除区域">
```
**步骤 3: 验证图标样式**
在浏览器中:
1. 打开特色区域页面
2. 点击一个已绘制的区域
3. 查看区域详情窗口底部的图标按钮区域
4. 验证新添加的"用户图标"样式与其他图标一致
**步骤 4: 验证 tooltip 显示**
1. 鼠标悬停在新添加的用户图标上
2. 验证 tooltip 显示"查看客户"
3. 验证 tooltip 样式与其他 tooltip 一致
**步骤 5: 提交代码**
```bash
git add ruoyi-ui/src/map/BMapPolygonEditor.vue
git commit -m "feat(featured-areas): 添加查看客户图标按钮"
```
---
## 任务 4: 实现 previewCustomer 方法
**文件:**
- 修改: `ruoyi-ui/src/map/BMapPolygonEditor.vue:900-1000`methods 区域)
**步骤 1: 定位 methods 区域**
找到 methods 对象的最后,准备添加新方法。建议添加在 `updateAreaShape()` 方法之后。
**步骤 2: 添加 previewCustomer 方法**
在 methods 对象中添加:
```javascript
/**
* 调整边界
*/
updateAreaShape() {
// ... 现有代码
},
/**
* 查看客户
*/
previewCustomer() {
this.$refs.customerModal.onOpen()
}
```
**步骤 3: 验证方法调用**
在浏览器控制台中测试:
1. 打开特色区域页面
2. 点击一个区域,打开区域详情窗口
3. 打开 Vue DevTools
4. 找到 BMapPolygonEditor 组件
5. 在控制台执行:`$vm0.previewCustomer()`
6. 验证 customer-modal 模态框成功打开
**步骤 4: 提交代码**
```bash
git add ruoyi-ui/src/map/BMapPolygonEditor.vue
git commit -m "feat(featured-areas): 实现 previewCustomer 方法"
```
---
## 任务 5: 功能测试
**文件:**
- 无需修改文件
**步骤 1: 启动前端项目**
```bash
cd ruoyi-ui
npm run dev
```
预期: 项目成功启动在 http://localhost:80
**步骤 2: 登录系统**
1. 访问 http://localhost:80
2. 使用测试账号登录:
- 用户名: admin
- 密码: admin123
**步骤 3: 进入特色区域页面**
1. 导航到"网格管理" > "区域绘制"
2. 点击"特色区域"标签btnType=2
3. 等待地图加载完成
**步骤 4: 测试查看客户按钮**
1. 在左侧菜单中选择一个特色区域图层
2. 在地图上点击一个已绘制的特色区域
3. 验证右上角弹出区域详情窗口
4. 查看窗口底部的图标按钮区域
5. 验证显示"用户图标"(查看客户按钮)
**步骤 5: 测试点击功能**
1. 点击"查看客户"图标
2. 验证:
- customer-modal 对话框成功打开
- 对话框标题显示"查看客户"
- 顶部显示区域名称和规模信息
- 客户列表成功加载
- 显示三种客户类型标签(企业/个人/商户)
**步骤 6: 测试客户类型切换**
1. 点击"个人"标签
2. 验证客户列表刷新,显示个人客户
3. 点击"商户"标签
4. 验证客户列表刷新,显示商户客户
5. 点击"企业"标签
6. 验证客户列表刷新,显示企业客户
**步骤 7: 测试分页功能**
1. 如果客户数量超过10条验证分页器显示
2. 点击下一页
3. 验证客户列表刷新,显示第二页数据
4. 修改每页显示条数
5. 验证列表重新加载
**步骤 8: 测试客户详情跳转**
1. 点击表格中的客户名称el-button
2. 验证路由跳转到客户详情页面
3. 验证详情页面显示正确的客户信息
**步骤 9: 测试现有功能兼容性**
1. 关闭客户模态框
2. 依次点击其他4个图标按钮
- 重新申请
- 修改信息
- 删除区域
- 调整边界
3. 验证这些按钮功能正常,无报错
**步骤 10: 测试行政区域兼容性**
1. 切换到"行政区域"标签btnType=1
2. 点击一个行政区域
3. 验证行政区域的"查看客户"按钮功能正常
4. 验证两个区域类型的查看客户功能互不影响
**步骤 11: 检查浏览器控制台**
1. 打开浏览器开发者工具
2. 切换到 Console 标签
3. 执行所有测试步骤
4. 验证控制台无 JavaScript 报错
5. 验证控制台无 Vue 警告
**步骤 12: 最终提交**
如果所有测试通过:
```bash
git status
```
预期: 无未提交的文件
---
## 任务 6: 更新文档(可选)
**文件:**
- 修改: `docs/plans/2026-02-28-featured-area-customer-view-design.md`
**步骤 1: 更新验收标准**
在验收标准的各项前打勾:
```markdown
### 6.1 功能验收
- [x] 区域详情窗口中显示"查看客户"图标按钮
- [x] 点击按钮后成功打开客户查看模态框
- [x] 模态框顶部显示正确的区域名称和规模
- [x] 客户列表正确加载(企业/个人/商户三种类型)
- [x] 客户类型切换功能正常
- [x] 分页功能正常
- [x] 点击客户名称可跳转到客户详情页
### 6.2 UI验收
- [x] 图标样式与现有图标按钮一致
- [x] 图标大小、颜色、间距合理
- [x] Tooltip 正确显示"查看客户"
- [x] 图标位置合理,不拥挤
### 6.3 性能验收
- [x] 页面加载速度无明显变化
- [x] 模态框打开速度正常(<1秒
- [x] 客户列表加载速度正常(<2秒
### 6.4 兼容性验收
- [x] 现有4个图标按钮功能正常
- [x] 行政区域的查看客户功能正常
- [x] 浏览器控制台无报错
```
**步骤 2: 提交文档更新**
```bash
git add docs/plans/2026-02-28-featured-area-customer-view-design.md
git commit -m "docs: 更新特色区域查看客户功能验收状态"
```
---
## 完成检查清单
实施完成后,验证以下内容:
- [ ] 所有6个任务已完成
- [ ] 所有 git commits 已提交
- [ ] 前端项目无编译错误
- [ ] 浏览器控制台无 JavaScript 错误
- [ ] 功能测试全部通过
- [ ] 代码已推送到远程仓库(如需要)
## 回滚方案
如果实施过程中遇到问题,可以回滚:
```bash
# 查看提交历史
git log --oneline
# 回滚到指定提交(替换 <commit-hash> 为实际的 commit hash
git reset --hard <commit-hash>
# 或者回滚所有提交(回到初始状态)
git reset --hard HEAD~4
```
## 相关资源
- **设计文档**: `docs/plans/2026-02-28-featured-area-customer-view-design.md`
- **修改文件**: `ruoyi-ui/src/map/BMapPolygonEditor.vue`
- **复用组件**: `ruoyi-ui/src/views/grid/map/draw-area/customer-modal.vue`
- **参考实现**: `ruoyi-ui/src/views/grid/map/draw-area/components/menulist-modal.vue:413-416`
- **Element UI 文档**: https://element.eleme.cn/#/zh-CN/component/tooltip
- **Vue 2.x 文档**: https://v2.cn.vuejs.org/