银行端口添加客户拜访功能

This commit is contained in:
2025-12-25 14:26:07 +08:00
parent 6bb0e00d69
commit 5312cfcb2e
16 changed files with 2541 additions and 12 deletions

View File

@@ -0,0 +1,21 @@
# Change: 添加银行端客户拜访计划功能
## Why
银行端客户经理需要记录和管理客户拜访活动,以便跟踪客户关系、记录营销产品推广情况,并保存现场拜访照片作为凭证。当前系统缺少拜访计划管理功能,无法满足客户关系管理的业务需求。
## What Changes
- 在银行端添加客户拜访计划创建页面
- 支持设置拜访日期、选择客户、定位位置、选择营销产品、填写拜访主题和备注
- 支持上传拜访场景照片(拍照或从相册选择)
- 添加拜访计划保存功能
- 添加拜访计划列表和详情查看功能
## Impact
- Affected specs: `bank-visit-plan` (新能力)
- Affected code:
- `src/pagesBank/` - 新增拜访计划相关页面
- `src/pagesBank/api/` - 新增拜访计划 API 接口
- `src/typings/bank.ts` - 新增拜访计划类型定义

View File

@@ -0,0 +1,72 @@
## ADDED Requirements
### Requirement: 创建拜访计划
银行端用户 SHALL 能够创建客户拜访计划,记录拜访的详细信息。
#### Scenario: 成功创建拜访计划
- **WHEN** 用户填写完整的拜访计划信息(日期、客户、位置、拜访主题、照片)
- **THEN** 系统 SHALL 保存拜访计划并返回成功提示
#### Scenario: 创建拜访计划时验证必填字段
- **WHEN** 用户提交拜访计划时缺少必填字段(日期、客户、位置、拜访主题、照片)
- **THEN** 系统 SHALL 显示相应的错误提示,阻止提交
#### Scenario: 选择营销产品
- **WHEN** 用户点击营销产品选择器
- **THEN** 系统 SHALL 显示可选产品列表,支持多选
#### Scenario: 上传拜访场景图
- **WHEN** 用户点击上传按钮
- **THEN** 系统 SHALL 提供拍照和从相册选择两种方式
### Requirement: 拜访计划列表
银行端用户 SHALL 能够查看拜访计划列表,支持筛选和搜索。
#### Scenario: 查看拜访计划列表
- **WHEN** 用户进入拜访计划列表页面
- **THEN** 系统 SHALL 显示所有拜访计划,按日期倒序排列
#### Scenario: 按状态筛选拜访计划
- **WHEN** 用户选择状态筛选条件(待拜访、已完成、已取消)
- **THEN** 系统 SHALL 显示对应状态的拜访计划
#### Scenario: 搜索拜访计划
- **WHEN** 用户输入关键词搜索
- **THEN** 系统 SHALL 显示匹配的拜访计划(按客户名称或拜访主题)
### Requirement: 拜访计划详情
银行端用户 SHALL 能够查看拜访计划的详细信息。
#### Scenario: 查看拜访计划详情
- **WHEN** 用户点击拜访计划列表项
- **THEN** 系统 SHALL 显示拜访计划的完整信息(日期、客户、位置、营销产品、拜访主题、备注、照片)
#### Scenario: 更新拜访状态
- **WHEN** 用户在详情页更新拜访状态
- **THEN** 系统 SHALL 保存状态变更并刷新页面
#### Scenario: 编辑拜访计划
- **WHEN** 用户点击编辑按钮
- **THEN** 系统 SHALL 进入编辑模式,允许修改拜访计划信息
### Requirement: 客户选择器
系统 SHALL 提供客户选择器,支持从客户列表中选择目标客户。
#### Scenario: 打开客户选择器
- **WHEN** 用户点击客户选择字段
- **THEN** 系统 SHALL 弹出客户列表页面
#### Scenario: 选择客户
- **WHEN** 用户从列表中选择一个客户
- **THEN** 系统 SHALL 返回并显示选中的客户信息
### Requirement: 位置定位
系统 SHALL 支持获取当前位置或手动输入地址。
#### Scenario: 自动定位
- **WHEN** 用户点击定位按钮
- **THEN** 系统 SHALL 获取当前位置并显示地址信息
#### Scenario: 手动输入地址
- **WHEN** 用户手动输入地址
- **THEN** 系统 SHALL 保存用户输入的地址信息

View File

@@ -0,0 +1,42 @@
# Implementation Tasks
## 1. 类型定义和 API 接口
- [ ] 1.1 在 `src/typings/bank.ts` 中添加拜访计划相关类型定义
- [ ] 1.2 在 `src/pagesBank/api/index.ts` 中添加拜访计划 API 接口
- [ ] 1.3 在 `src/pagesBank/mock/index.ts` 中添加拜访计划 Mock 数据
## 2. 拜访计划创建页面
- [ ] 2.1 创建 `src/pagesBank/visit/create.vue` 拜访计划创建页面
- [ ] 2.2 实现日期选择器组件
- [ ] 2.3 实现客户选择器(弹出客户列表)
- [ ] 2.4 实现位置定位功能(地图定位/文本输入)
- [ ] 2.5 实现营销产品多选功能
- [ ] 2.6 实现拜访主题和备注输入
- [ ] 2.7 实现图片上传功能(拍照/相册选择)
- [ ] 2.8 实现表单验证和提交功能
## 3. 拜访计划列表页面
- [ ] 3.1 创建 `src/pagesBank/visit/list.vue` 拜访计划列表页面
- [ ] 3.2 实现拜访计划列表展示
- [ ] 3.3 实现状态筛选(待拜访、已完成、已取消)
- [ ] 3.4 实现搜索功能
## 4. 拜访计划详情页面
- [ ] 4.1 创建 `src/pagesBank/visit/detail.vue` 拜访计划详情页面
- [ ] 4.2 实现拜访计划详情展示
- [ ] 4.3 实现拜访状态更新功能
- [ ] 4.4 实现拜访记录编辑功能
## 5. 路由配置
- [ ] 5.1 在 `src/pages.json` 中添加拜访计划相关路由配置
## 6. 导航入口
- [ ] 6.1 在银行端首页或客户详情页添加"创建拜访计划"入口
- [ ] 6.2 在客户详情页添加"拜访记录"入口
## 7. 测试和验证
- [ ] 7.1 测试拜访计划创建流程
- [ ] 7.2 测试拜访计划列表展示和筛选
- [ ] 7.3 测试拜访计划详情查看和编辑
- [ ] 7.4 测试图片上传功能
- [ ] 7.5 测试表单验证

View File

@@ -0,0 +1,29 @@
# Change: 修改银行端客户拜访计划功能
## Why
当前拜访计划功能在创建时要求填写位置和上传拜访场景图,但在实际业务场景中,这些信息应该在拜访完成时才需要填写。创建拜访计划时只需要记录基本的拜访安排(日期、客户、主题等),而在标记拜访完成时才需要补充位置信息和上传现场照片。这样的流程更符合实际业务需求。
## What Changes
- **创建拜访计划页面** (`/pagesBank/visit/create`) 修改:
- 移除位置输入和定位功能
- 移除上传拜访场景图功能
- 保留日期、客户选择、营销产品、拜访主题、备注字段
- 更新表单验证逻辑,不再验证位置和照片
- **拜访计划详情页面** (`/pagesBank/visit/detail?id={}`) 修改:
- 在标记完成时,要求填写位置信息(模拟从地图获取地址,默认使用"广东省茂名市"
- 在标记完成时,要求上传拜访场景图
- 添加位置和照片的必填验证
- 更新状态更新流程,先验证位置和照片后再更新状态
## Impact
- Affected specs: `bank-visit-plan` (修改)
- Affected code:
- `src/pagesBank/visit/create.vue` - 移除位置和照片相关代码
- `src/pagesBank/visit/detail.vue` - 添加完成时的位置和照片填写功能
- `src/pagesBank/api/index.ts` - 更新 `updateVisitStatus` API 支持位置和照片参数
- `src/typings/bank.ts` - 更新 `CreateVisitPlanParams` 类型定义
- `openspec/specs/bank-visit-plan/spec.md` - 更新需求规格说明

View File

@@ -0,0 +1,91 @@
## MODIFIED Requirements
### Requirement: 创建拜访计划
银行端用户 SHALL 能够创建客户拜访计划,记录拜访的基本信息。
#### Scenario: 成功创建拜访计划
- **WHEN** 用户填写完整的拜访计划信息(日期、客户、拜访主题)
- **THEN** 系统 SHALL 保存拜访计划并返回成功提示
#### Scenario: 创建拜访计划时验证必填字段
- **WHEN** 用户提交拜访计划时缺少必填字段(日期、客户、拜访主题)
- **THEN** 系统 SHALL 显示相应的错误提示,阻止提交
#### Scenario: 选择营销产品
- **WHEN** 用户点击营销产品选择器
- **THEN** 系统 SHALL 显示可选产品列表,支持多选
### Requirement: 拜访计划列表
银行端用户 SHALL 能够查看拜访计划列表,支持筛选和搜索。
#### Scenario: 查看拜访计划列表
- **WHEN** 用户进入拜访计划列表页面
- **THEN** 系统 SHALL 显示所有拜访计划,按日期倒序排列
#### Scenario: 按状态筛选拜访计划
- **WHEN** 用户选择状态筛选条件(待拜访、已完成、已取消)
- **THEN** 系统 SHALL 显示对应状态的拜访计划
#### Scenario: 搜索拜访计划
- **WHEN** 用户输入关键词搜索
- **THEN** 系统 SHALL 显示匹配的拜访计划(按客户名称或拜访主题)
### Requirement: 拜访计划详情
银行端用户 SHALL 能够查看拜访计划的详细信息。
#### Scenario: 查看拜访计划详情
- **WHEN** 用户点击拜访计划列表项
- **THEN** 系统 SHALL 显示拜访计划的完整信息(日期、客户、营销产品、拜访主题、备注)
#### Scenario: 标记拜访完成
- **WHEN** 用户点击"标记完成"按钮
- **THEN** 系统 SHALL 弹出填写位置和上传照片的表单
- **AND** 用户填写位置信息(支持自动定位或手动输入,默认地址为"广东省茂名市"
- **AND** 用户上传至少一张拜访场景图
- **AND** 系统 SHALL 验证位置和照片必填
- **AND** 验证通过后更新拜访状态为"已完成"
#### Scenario: 标记完成时验证必填字段
- **WHEN** 用户提交完成标记时缺少位置信息或照片
- **THEN** 系统 SHALL 显示相应的错误提示,阻止状态更新
#### Scenario: 编辑拜访计划
- **WHEN** 用户点击编辑按钮
- **THEN** 系统 SHALL 进入编辑模式,允许修改拜访计划信息(日期、主题、备注)
### Requirement: 客户选择器
系统 SHALL 提供客户选择器,支持从客户列表中选择目标客户。
#### Scenario: 打开客户选择器
- **WHEN** 用户点击客户选择字段
- **THEN** 系统 SHALL 弹出客户列表页面
#### Scenario: 选择客户
- **WHEN** 用户从列表中选择一个客户
- **THEN** 系统 SHALL 返回并显示选中的客户信息
### Requirement: 位置定位
系统 SHALL 支持获取当前位置或手动输入地址。
#### Scenario: 自动定位
- **WHEN** 用户点击定位按钮
- **THEN** 系统 SHALL 获取当前位置并显示地址信息
#### Scenario: 手动输入地址
- **WHEN** 用户手动输入地址
- **THEN** 系统 SHALL 保存用户输入的地址信息
#### Scenario: 使用默认地址
- **WHEN** 用户未填写位置信息
- **THEN** 系统 SHALL 使用默认地址"广东省茂名市"
### Requirement: 上传拜访场景图
系统 SHALL 支持上传拜访场景照片。
#### Scenario: 上传拜访场景图
- **WHEN** 用户点击上传按钮
- **THEN** 系统 SHALL 提供拍照和从相册选择两种方式
#### Scenario: 验证照片数量
- **WHEN** 用户标记拜访完成时
- **THEN** 系统 SHALL 要求至少上传一张拜访场景图

View File

@@ -0,0 +1,67 @@
# Tasks: 修改银行端客户拜访计划功能
## 任务列表
### 1. 修改类型定义
- [x] 更新 `src/typings/bank.ts` 中的 `CreateVisitPlanParams` 接口
- 移除 `location``latitude``longitude``photos` 字段
- 这些字段将在标记完成时通过 `updateVisitStatus` API 提供
- 新增 `CompleteVisitPlanParams` 接口用于标记完成时的参数
### 2. 修改创建拜访计划页面
- [x] 修改 `src/pagesBank/visit/create.vue`
- 移除位置输入和定位功能
- 移除上传拜访场景图功能
- 更新表单验证逻辑
- 移除位置验证
- 移除照片验证
- 更新提交表单逻辑
- 移除位置和照片参数
### 3. 修改拜访计划详情页面
- [x] 修改 `src/pagesBank/visit/detail.vue`
- 添加标记完成时的表单状态管理
- 添加位置输入和定位功能
- 添加上传拜访场景图功能
- 修改 `handleUpdateStatus` 函数
- 点击"标记完成"时弹出填写位置和上传照片的表单
- 验证位置和照片必填
- 验证通过后调用更新状态 API
- 更新模板部分,添加位置和照片填写表单
### 4. 修改 API 接口
- [x] 修改 `src/pagesBank/api/index.ts`
- 更新 `createVisitPlan` 函数
- 移除位置和照片参数处理
- 创建时位置和照片为空
- 更新 `updateVisitStatus` 函数
- 添加 `location``latitude``longitude``photos` 参数
- 更新拜访计划时保存位置和照片信息
- 更新 `updateVisitPlan` 函数
- 移除位置和照片相关字段的处理
### 5. 更新 Mock 数据
- [x] 修改 `src/pagesBank/mock/index.ts`
- 更新 `mockVisitPlans` 数据结构
- 确保待拜访的拜访计划位置和照片为空
- 已完成的拜访计划包含位置和照片信息
### 6. 更新规格说明文档
- [x] 更新 `openspec/specs/bank-visit-plan/spec.md`
- 应用修改提案中的规格变更
- 更新创建拜访计划的需求
- 更新拜访计划详情的需求
- 添加标记完成时的场景
### 7. 测试验证
- [x] 测试创建拜访计划功能
- 验证不填写位置和照片可以成功创建
- 验证必填字段验证正常工作
- [x] 测试标记拜访完成功能
- 验证必须填写位置和上传照片才能标记完成
- 验证自动定位功能正常
- 验证默认地址"广东省茂名市"正常使用
- 验证照片上传功能正常
- [x] 测试拜访计划详情页面
- 验证位置和照片信息正确显示
- 验证编辑功能正常工作

View File

@@ -0,0 +1,95 @@
# bank-visit-plan Specification
## Purpose
TBD - created by archiving change add-bank-visit-plan. Update Purpose after archive.
## Requirements
### Requirement: 创建拜访计划
银行端用户 SHALL 能够创建客户拜访计划,记录拜访的基本信息。
#### Scenario: 成功创建拜访计划
- **WHEN** 用户填写完整的拜访计划信息(日期、客户、拜访主题)
- **THEN** 系统 SHALL 保存拜访计划并返回成功提示
#### Scenario: 创建拜访计划时验证必填字段
- **WHEN** 用户提交拜访计划时缺少必填字段(日期、客户、拜访主题)
- **THEN** 系统 SHALL 显示相应的错误提示,阻止提交
#### Scenario: 选择营销产品
- **WHEN** 用户点击营销产品选择器
- **THEN** 系统 SHALL 显示可选产品列表,支持多选
### Requirement: 拜访计划列表
银行端用户 SHALL 能够查看拜访计划列表,支持筛选和搜索。
#### Scenario: 查看拜访计划列表
- **WHEN** 用户进入拜访计划列表页面
- **THEN** 系统 SHALL 显示所有拜访计划,按日期倒序排列
#### Scenario: 按状态筛选拜访计划
- **WHEN** 用户选择状态筛选条件(待拜访、已完成、已取消)
- **THEN** 系统 SHALL 显示对应状态的拜访计划
#### Scenario: 搜索拜访计划
- **WHEN** 用户输入关键词搜索
- **THEN** 系统 SHALL 显示匹配的拜访计划(按客户名称或拜访主题)
### Requirement: 拜访计划详情
银行端用户 SHALL 能够查看拜访计划的详细信息。
#### Scenario: 查看拜访计划详情
- **WHEN** 用户点击拜访计划列表项
- **THEN** 系统 SHALL 显示拜访计划的完整信息(日期、客户、营销产品、拜访主题、备注)
#### Scenario: 标记拜访完成
- **WHEN** 用户点击"标记完成"按钮
- **THEN** 系统 SHALL 弹出填写位置和上传照片的表单
- **AND** 用户填写位置信息(支持自动定位或手动输入,默认地址为"广东省茂名市"
- **AND** 用户上传至少一张拜访场景图
- **AND** 系统 SHALL 验证位置和照片必填
- **AND** 验证通过后更新拜访状态为"已完成"
#### Scenario: 标记完成时验证必填字段
- **WHEN** 用户提交完成标记时缺少位置信息或照片
- **THEN** 系统 SHALL 显示相应的错误提示,阻止状态更新
#### Scenario: 编辑拜访计划
- **WHEN** 用户点击编辑按钮
- **THEN** 系统 SHALL 进入编辑模式,允许修改拜访计划信息(日期、主题、备注)
### Requirement: 客户选择器
系统 SHALL 提供客户选择器,支持从客户列表中选择目标客户。
#### Scenario: 打开客户选择器
- **WHEN** 用户点击客户选择字段
- **THEN** 系统 SHALL 弹出客户列表页面
#### Scenario: 选择客户
- **WHEN** 用户从列表中选择一个客户
- **THEN** 系统 SHALL 返回并显示选中的客户信息
### Requirement: 位置定位
系统 SHALL 支持获取当前位置或手动输入地址。
#### Scenario: 自动定位
- **WHEN** 用户点击定位按钮
- **THEN** 系统 SHALL 获取当前位置并显示地址信息
#### Scenario: 手动输入地址
- **WHEN** 用户手动输入地址
- **THEN** 系统 SHALL 保存用户输入的地址信息
#### Scenario: 使用默认地址
- **WHEN** 用户未填写位置信息
- **THEN** 系统 SHALL 使用默认地址"广东省茂名市"
### Requirement: 上传拜访场景图
系统 SHALL 支持上传拜访场景照片。
#### Scenario: 上传拜访场景图
- **WHEN** 用户点击上传按钮
- **THEN** 系统 SHALL 提供拍照和从相册选择两种方式
#### Scenario: 验证照片数量
- **WHEN** 用户标记拜访完成时
- **THEN** 系统 SHALL 要求至少上传一张拜访场景图