# 拓客驾驶舱需求文档 ## 📋 文档说明 - **创建日期**: 2025-01-XX - **版本**: v1.3 - **状态**: 业务规则已确认,待开发 - **目标**: 基于现有拓客报表页面(`lqTkjlb/report`),设计并实现一个功能完整的拓客驾驶舱 ### ✅ 已确认的业务规则 1. **大单标准**: 开单金额(`sfyj` 实付业绩)> 10000 元(不含等于) 2. **到店定义**: 使用耗卡记录(`lq_xh_hyhk`)判断,存在有效耗卡记录即视为到店 3. **团队显示**: 仅当活动类型为"全员拓客"(EventType=3)时显示团队相关字段和统计,日常拓客(EventType=1)无团队概念 4. **时间范围**: 选择拓客活动后,时间范围自动填充为该活动的开始和结束时间 5. **门店筛选**: 不提供门店筛选功能,数据按活动范围统计所有门店 --- ## 一、现有功能梳理 ### 1.1 现有报表页面统计内容(参考 `lqTkjlb/report`) #### 📊 团队数据报表 - 参与门店数 - 参与战队数 - 参与人员数 - 总拓客数 #### 🏆 门店排行榜 - 目标张数 - 完成张数(总张数) - 完成率 - 排名 #### 👥 个人排行榜 - 员工姓名 - 所属门店 - 所属团队 - 个人目标 - 完成数量 - 完成率 #### ❌ 未拓客人员 - 姓名 - 门店 - 团队 - 个人目标 - 完成数量(0) - 完成率 - 最后拓客时间 #### 📈 到店情况(漏斗数据) - **拓客数量**: 拓客总人数 - **邀约数量**: 邀约总人数 - **预约数量**: 预约总人数 - **开单数量**: 开单总人数 - **耗卡数量**: 耗卡总人数 - **耗卡金额**: 耗卡总金额 - **开单金额**: 开单总金额 - **到店率**: 耗卡数量 / 拓客数量 × 100% - **成交率**: 开单数量 / 耗卡数量 × 100% - **预约转化率**: 预约数量 / 拓客数量 × 100% - **耗卡转化率**: 耗卡数量 / 预约数量 × 100% #### 👤 员工统计 - 员工姓名 - 部门名称 - 岗位 - 拓客人数 - 到店人数 - 开单人数 - 开单金额 - 到店率: 到店人数 / 拓客人数 × 100% - 开单率: 开单人数 / 到店人数 × 100% --- ## 二、新增需求 ### 2.1 大单统计(核心新增功能) #### 2.1.1 大单定义 - **标准**: 开单金额(`lq_kd_kdjlb.sfyj` 实付业绩)> 10000 元(不含等于) - **判断条件**: `sfyj > 10000` - **统计维度**: - 按拓客活动统计 - 按门店统计 - 按拓客人员统计 - 按时间范围统计 #### 2.1.2 大单统计指标 - **大单数量**: 开单金额 > 10000 的订单数量 - **大单金额**: 大单订单总金额 - **大单平均金额**: 大单金额 / 大单数量 - **大单占比**: 大单数量 / 总开单数量 × 100% - **大单金额占比**: 大单金额 / 总开单金额 × 100% - **大单转化率**: 大单数量 / 拓客人数 × 100% - **大单到店转化率**: 大单数量 / 到店人数 × 100% #### 2.1.3 大单明细列表 - 顾客姓名 - 顾客手机号 - 拓客人员姓名 - 拓客时间 - 开单时间 - 开单金额 - 开单门店 - 项目明细(可选) ### 2.2 拓客人员参与统计(核心新增功能) #### 2.2.1 统计内容 - **参与拓客人员列表**: - 员工姓名 - 部门名称 - 岗位 - 所属门店 - 所属团队(**仅在活动类型为"全员拓客"时显示**,日常拓客无团队概念) - 拓客人数(该人员拓客的顾客总数,去重) - 拓客张数(该人员拓客的购买张数总和) - 到店人数(该人员拓客的顾客中,到店人数) - 到店率(到店人数 / 拓客人数 × 100%) - 开单人数(该人员拓客的顾客中,开单人数) - 开单金额(该人员拓客的顾客中,开单总金额) - 开单转化率(开单人数 / 拓客人数 × 100%) - 大单数量(该人员拓客的顾客中,大单数量) - 大单金额(该人员拓客的顾客中,大单总金额) #### 2.2.2 数据来源 - **拓客记录表**: `lq_tkjlb` - `F_ExpansionUserId`: 拓客人员ID - `F_MemberId`: 会员ID - `F_BuyNumber`: 购买张数 - **开单记录表**: `lq_kd_kdjlb` - `kdhy`: 开单会员ID(关联 `lq_tkjlb.F_MemberId`) - `sfyj`: 实付业绩(用于判断大单) - **耗卡记录表**: `lq_xh_hyhk` - `hyzh`: 会员账号(关联 `lq_tkjlb.F_MemberId`) - **预约记录表**: `lq_yyjl` - `gk`: 顾客ID(关联 `lq_tkjlb.F_MemberId`) ### 2.3 到店转化分析(增强现有功能) #### 2.3.1 到店定义(已确认) - **定义**: 有耗卡记录即视为到店 - **判断条件**: 在 `lq_xh_hyhk` 表中存在记录,且 `F_IsEffective = 1` - **关联字段**: `lq_tkjlb.F_MemberId = lq_xh_hyhk.hyzh` - **说明**: 耗卡记录代表客户实际到店并进行了消费,是最准确的到店判断标准 #### 2.3.2 到店率计算(基于耗卡记录) - **到店人数定义**: 在指定时间范围内,有耗卡记录的拓客客户数(按 `F_MemberId` 去重) - **整体到店率**: 到店人数 / 拓客人数 × 100% - **门店到店率**: 各门店的到店率(该门店拓客的客户中,有耗卡记录的比例) - **人员到店率**: 各拓客人员的到店率(该人员拓客的客户中,有耗卡记录的比例) - **时间维度到店率**: 按时间段的到店率趋势 #### 2.3.3 到店时间分析(基于耗卡记录) - **首次到店时间**: 客户首次耗卡的时间(`lq_xh_hyhk.hksj` 最小值) - **拓客到首次到店间隔**: 拓客时间到首次耗卡时间的间隔(天数) - **拓客到首次到店间隔分布**: - 1天内 - 3天内 - 7天内 - 15天内 - 30天内 - 超过30天 - **平均到店间隔天数**: 所有有耗卡记录的客户的平均间隔天数 **注意**: 如果拓客时间晚于首次耗卡时间(异常情况),间隔天数记为0或负数,需要特别处理 --- ## 三、可扩展统计维度(建议) ### 3.1 时间维度分析 #### 3.1.1 拓客时间趋势 - 按日期统计拓客人数 - 按周统计拓客人数 - 按月统计拓客人数 - 拓客高峰时段分析 #### 3.1.2 转化周期分析 - 拓客到预约的平均时间 - 拓客到到店的平均时间 - 拓客到开单的平均时间 - 到店到开单的平均时间 - 不同转化周期的转化率对比 ### 3.2 客户画像分析 #### 3.2.1 新老客户分析 - 新客户拓客数量 - 老客户拓客数量 - 新老客户到店率对比 - 新老客户开单率对比 - 新老客户大单率对比 #### 3.2.2 客户来源分析 - 不同拓客活动来源的客户数量 - 不同来源客户的到店率 - 不同来源客户的开单率 - 不同来源客户的平均开单金额 ### 3.3 门店对比分析 #### 3.3.1 门店效能对比 - 门店拓客效率排名 - 门店到店率排名 - 门店开单率排名 - 门店大单率排名 - 门店平均开单金额排名 #### 3.3.2 门店转化漏斗 - 各门店的完整转化漏斗(拓客→邀约→预约→到店→开单) - 各门店的转化瓶颈分析 ### 3.4 项目分析 #### 3.4.1 大单项目分析 - 大单订单中的项目分布 - 高价值项目列表 - 项目与开单金额的关联度 #### 3.4.2 项目转化分析 - 不同项目的开单率 - 不同项目的平均金额 - 项目组合分析 ### 3.5 团队效能分析(仅全员拓客活动) #### 3.5.1 团队对比 - **适用范围**: 仅当活动类型为"全员拓客"(EventType=3)时显示 - 各团队的拓客数量 - 各团队的到店率 - 各团队的开单率 - 各团队的大单率 - 团队排名和对比 #### 3.5.2 团队协作分析 - 团队内成员的拓客贡献度 - 团队拓客协作效果 - 团队目标完成情况 **注意**: 日常拓客(EventType=1)无团队概念,不显示团队相关统计 ### 3.6 流失分析 #### 3.6.1 流失节点分析 - 拓客未邀约数量及占比 - 邀约未预约数量及占比 - 预约未到店数量及占比 - 到店未开单数量及占比 #### 3.6.2 流失原因分析 - 各流失节点的可能原因 - 流失客户特征分析 ### 3.7 支付方式分析 #### 3.7.1 支付方式分布 - 不同支付方式的开单数量 - 不同支付方式的开单金额 - 支付方式与客户类型的关系 ### 3.8 复购分析 #### 3.8.1 拓客客户复购统计 - 拓客客户首次开单后的复购率 - 拓客客户复购时间间隔 - 拓客客户累计消费金额 ### 3.9 业绩贡献分析 #### 3.9.1 拓客业绩贡献 - 拓客活动产生的总业绩 - 拓客活动业绩占总业绩的比例 - 拓客活动业绩趋势 #### 3.9.2 ROI分析 - 拓客活动成本(如果有) - 拓客活动投入产出比 ### 3.10 购买张数分析 #### 3.10.1 购买张数分布 - 不同购买张数的客户数量分布(1张、2张、3-5张、6-10张、10张以上) - 购买张数与到店率的关系 - 购买张数与开单率的关系 - 购买张数与平均开单金额的关系 #### 3.10.2 购买张数效能 - 平均购买张数 - 高购买张数客户的转化率 - 购买张数TOP人员排名 ### 3.11 加微信转化分析 #### 3.11.1 微信添加统计 - 加微信客户数量及占比(`F_IsAddWeChat` = "是") - 加微信与未加微信客户的到店率对比 - 加微信与未加微信客户的开单率对比 - 加微信转化率(加微信客户数 / 拓客人数) #### 3.11.2 微信添加效能 - 加微信客户的平均到店间隔 - 加微信客户的复购率 - 各人员加微信转化率排名 ### 3.12 支付方式分析 #### 3.12.1 拓客支付方式分布 - 不同支付方式的拓客数量(现金、微信、支付宝、银行卡等,基于 `F_PaymentMethod`) - 不同支付方式的客户到店率 - 不同支付方式的客户开单率 - 不同支付方式的客户平均开单金额 ### 3.13 客户类型分析 #### 3.13.1 新老客户对比 - 新客户(首次拓客)数量 - 老客户(再次拓客)数量 - 新老客户到店率对比 - 新老客户开单率对比 - 新老客户大单率对比 - 二次拓客转化率 #### 3.13.2 客户质量分析 - 高价值客户识别(拓客后多次到店或高额开单) - 低质量客户识别(拓客后长期未到店) ### 3.14 部门/岗位效能分析 #### 3.14.1 部门对比 - 各部门的拓客人数 - 各部门的到店率 - 各部门的开单率 - 各部门的平均开单金额 - 各部门的大单率 #### 3.14.2 岗位对比 - 不同岗位的拓客效能 - 岗位与拓客转化率的关系 - 岗位排名分析 ### 3.15 时段分析 #### 3.15.1 拓客时段分布 - 按小时统计拓客数量(识别拓客高峰时段) - 按星期统计拓客数量(识别拓客高峰日期) - 不同时段的拓客转化率 - 时段与到店率的关系 #### 3.15.2 转化周期时段分析 - 不同时段的拓客到店间隔 - 不同时段的拓客开单间隔 ### 3.16 金三角分析(如有关联) #### 3.16.1 金三角效能 - 各金三角的拓客数量 - 各金三角的到店率 - 各金三角的开单率 - 金三角与拓客转化的关联度 ### 3.17 推荐人分析(如有关联) #### 3.17.1 推荐人效能 - 推荐人拓客数量 - 推荐人拓客的转化率 - 推荐人贡献度排名 ### 3.18 拓客渠道分析 #### 3.18.1 渠道效能对比 - 不同拓客渠道的客户数量 - 不同渠道的到店率 - 不同渠道的开单率 - 不同渠道的平均开单金额 - 最优渠道识别 ### 3.19 项目偏好分析(基于开单项目) #### 3.19.1 拓客客户项目偏好 - 拓客客户最常购买的项目TOP10 - 大单客户的项目偏好 - 高转化率项目识别 - 项目与客户类型的匹配度 ### 3.20 地域/门店分布分析 #### 3.20.1 门店效能对比(增强版) - 门店拓客人数排名 - 门店到店率排名 - 门店开单率排名 - 门店大单率排名 - 门店平均开单金额排名 - 门店拓客成本效益分析 #### 3.20.2 门店类型分析 - 不同类型门店的拓客效能(如新店vs老店) - 门店规模与拓客转化率的关系 --- ## 四、数据表结构 ### 4.1 核心数据表 #### `lq_tkjlb` - 拓客记录表 - `F_Id`: 拓客编号 - `F_ExpansionTime`: 拓客时间 - `F_ExpansionUserId`: 拓客人员ID - `F_CustomerName`: 顾客姓名 - `F_CustomerPhone`: 顾客电话号码 - `F_BuyNumber`: 购买张数 - `F_EventId`: 拓客活动ID - `F_StoreId`: 所属门店ID - `F_TeamName`: 所属战队(**仅在活动类型为"全员拓客"时有值**) - `F_MemberId`: 会员ID #### `lq_kd_kdjlb` - 开单记录表 - `F_Id`: 开单编号 - `kdhy`: 开单会员ID(关联 `lq_tkjlb.F_MemberId`) - `kdhyc`: 开单会员名称 - `kdrq`: 开单日期 - `zdyj`: 整单业绩 - `sfyj`: 实付业绩(用于判断大单,> 10000) - `djmd`: 单据门店 - `F_IsEffective`: 是否有效 #### `lq_xh_hyhk` - 耗卡记录表 - `F_Id`: 耗卡编号 - `hyzh`: 会员账号(关联 `lq_tkjlb.F_MemberId`) - `hksj`: 耗卡时间 - `xfje`: 消费金额 - `md`: 门店ID - `F_IsEffective`: 是否有效 #### `lq_yyjl` - 预约记录表 - `F_Id`: 预约编号 - `gk`: 顾客ID(关联 `lq_tkjlb.F_MemberId`) - `yysj`: 预约时间 - `F_Status`: 预约状态("已确认"表示已到店) #### `lq_yaoyjl` - 邀约记录表 - `F_Id`: 邀约编号 - `yykh`: 邀约客户(关联 `lq_tkjlb.F_MemberId`) - `yysj`: 邀约时间 ### 4.2 关联数据表 #### `BASE_USER` - 用户表 - `F_Id`: 用户ID(关联 `lq_tkjlb.F_ExpansionUserId`) - `F_REALNAME`: 真实姓名(拓客人员姓名) - `F_MDID`: 门店ID - `F_ZW`: 职位 - `OrganizeId`: 部门ID #### `lq_mdxx` - 门店信息表 - `F_Id`: 门店ID - `dm`: 门店名称 #### `lq_event` - 拓客活动表 - `F_Id`: 活动ID - `F_EventName`: 活动名称 - `F_EventType`: 活动类型(1=日常拓客,3=全员拓客) - `F_StartTime`: 活动开始时间 - `F_EndTime`: 活动结束时间 #### `lq_eventuser` - 拓客活动用户表 - `F_EventId`: 拓客活动ID - `F_UserId`: 用户ID - `F_DepId`: 部门ID - `F_TeamName`: 战队名称(**仅在活动类型为"全员拓客"时有值**) - `F_StoreId`: 门店ID - `F_EventTarget`: 拓客目标数量 --- ## 五、接口设计 ### 5.1 拓客驾驶舱统计接口 #### 5.1.1 获取驾驶舱概览数据 ``` GET /api/Extend/LqTkDashboard/GetOverview ``` **请求参数**: ```json { "eventId": "活动ID(必填)", "startTime": "2025-01-01", // 当选择活动时,自动填充活动的开始时间 "endTime": "2025-01-31" // 当选择活动时,自动填充活动的结束时间 } ``` **说明**: - `eventId`: 必填,选择拓客活动后,时间范围会自动填充为该活动的开始和结束时间 - `startTime` / `endTime`: 根据选择的活动自动填充,用户可手动调整 - **不提供门店筛选功能**,数据按活动范围统计所有门店 **返回数据**: ```json { "code": 200, "data": { "totalExpansionCount": 1000, // 总拓客人数 "totalVisitCount": 600, // 总到店人数 "totalBillingCount": 400, // 总开单人数 "totalBillingAmount": 5000000, // 总开单金额 "bigOrderCount": 50, // 大单数量 "bigOrderAmount": 800000, // 大单金额 "bigOrderAvgAmount": 16000, // 大单平均金额 "visitRate": 60.0, // 整体到店率 "billingRate": 66.67, // 整体开单率 "bigOrderRate": 5.0, // 大单转化率 "bigOrderAmountRate": 16.0, // 大单金额占比 "participantCount": 50, // 参与拓客人员数 "storeCount": 10 // 参与门店数 } } ``` #### 5.1.2 获取大单统计 ``` GET /api/Extend/LqTkDashboard/GetBigOrderStatistics ``` **请求参数**: ```json { "eventId": "活动ID(必填)", "startTime": "2025-01-01", // 自动填充活动开始时间 "endTime": "2025-01-31" // 自动填充活动结束时间 } ``` **返回数据**: ```json { "code": 200, "data": { "summary": { "bigOrderCount": 50, "bigOrderAmount": 800000, "bigOrderAvgAmount": 16000, "bigOrderRate": 5.0, "bigOrderAmountRate": 16.0, "bigOrderConversionRate": 5.0, "bigOrderVisitConversionRate": 8.33 }, "byStore": [ { "storeId": "门店ID", "storeName": "门店名称", "bigOrderCount": 10, "bigOrderAmount": 150000, "bigOrderRate": 5.0 } ], "byEmployee": [ { "employeeId": "员工ID", "employeeName": "员工姓名", "bigOrderCount": 5, "bigOrderAmount": 80000, "bigOrderRate": 10.0 } ], "details": [ { "customerName": "顾客姓名", "customerPhone": "手机号", "expansionUserName": "拓客人员", "expansionTime": "2025-01-01", "billingTime": "2025-01-05", "billingAmount": 15000, "storeName": "门店名称", "items": ["项目1", "项目2"] } ] } } ``` #### 5.1.3 获取拓客人员参与统计 ``` GET /api/Extend/LqTkDashboard/GetEmployeeParticipationStatistics ``` **请求参数**: ```json { "eventId": "活动ID(必填)", "startTime": "2025-01-01", // 自动填充活动开始时间 "endTime": "2025-01-31" // 自动填充活动结束时间 } ``` **返回数据**: ```json { "code": 200, "data": [ { "employeeId": "员工ID", "employeeName": "员工姓名", "departmentName": "部门名称", "position": "岗位", "storeId": "门店ID", "storeName": "门店名称", "teamName": "团队名称", // 仅当活动类型为"全员拓客"时有值,日常拓客为null或空字符串 "expansionCount": 100, // 拓客人数 "expansionCardCount": 150, // 拓客张数 "visitCount": 60, // 到店人数 "visitRate": 60.0, // 到店率 "billingCount": 40, // 开单人数 "billingAmount": 500000, // 开单金额 "billingConversionRate": 40.0, // 开单转化率 "bigOrderCount": 5, // 大单数量 "bigOrderAmount": 80000 // 大单金额 } ] } ``` #### 5.1.4 获取到店转化分析 ``` GET /api/Extend/LqTkDashboard/GetVisitConversionAnalysis ``` **请求参数**: ```json { "eventId": "活动ID(必填)", "startTime": "2025-01-01", // 自动填充活动开始时间 "endTime": "2025-01-31" // 自动填充活动结束时间 } ``` **返回数据**: ```json { "code": 200, "data": { "overallVisitRate": 60.0, "averageVisitInterval": 7.5, // 平均到店间隔(天) "visitIntervalDistribution": { "within1Day": 100, "within3Days": 200, "within7Days": 150, "within15Days": 100, "within30Days": 40, "over30Days": 10 }, "byStore": [ { "storeId": "门店ID", "storeName": "门店名称", "visitRate": 65.0, "averageVisitInterval": 6.5 } ], "byEmployee": [ { "employeeId": "员工ID", "employeeName": "员工姓名", "visitRate": 70.0, "averageVisitInterval": 5.0 } ] } } ``` ### 5.2 数据导出接口 #### 5.2.1 导出大单明细 ``` GET /api/Extend/LqTkDashboard/ExportBigOrderDetails ``` #### 5.2.2 导出拓客人员统计 ``` GET /api/Extend/LqTkDashboard/ExportEmployeeStatistics ``` --- ## 六、前端页面设计 ### 6.1 页面结构(不使用Tab切换) ``` 拓客驾驶舱 ├── 筛选条件区域(固定在顶部) │ ├── 拓客活动选择(必填,下拉选择) │ ├── 时间范围选择(自动填充活动开始/结束时间,可手动调整) │ └── 查询按钮 │ ├── 概览统计卡片区域(第一屏) │ ├── 总拓客人数 │ ├── 总到店人数 │ ├── 总开单人数 │ ├── 总开单金额 │ ├── 大单数量 │ ├── 大单金额 │ ├── 整体到店率 │ └── 整体开单率 │ ├── 大单统计区域(第二屏) │ ├── 区域标题:"大单统计" │ ├── 大单概览卡片(5个指标) │ │ ├── 大单数量 │ │ ├── 大单金额 │ │ ├── 大单平均金额 │ │ ├── 大单转化率 │ │ └── 大单金额占比 │ ├── 大单分布图表(可选,横排显示) │ │ ├── 按门店分布饼图 │ │ ├── 按人员分布柱状图 │ │ └── 大单金额分布柱状图 │ └── 大单明细列表 │ ├── 表格展示大单明细 │ ├── 支持按门店、人员、金额排序 │ └── 支持导出Excel │ ├── 拓客人员统计区域(第三屏) │ ├── 区域标题:"拓客人员统计" │ ├── 人员统计列表 │ │ ├── 表格展示所有参与拓客的人员及其统计数据 │ │ ├── 支持按拓客人数、到店率、开单率、大单数量排序 │ │ └── 支持导出Excel │ └── 人员排名卡片(可选,横向展示) │ ├── 拓客人数TOP10 │ ├── 到店率TOP10 │ ├── 开单率TOP10 │ └── 大单数量TOP10 │ ├── 到店转化分析区域(第四屏) │ ├── 区域标题:"到店转化分析" │ ├── 到店率统计卡片 │ │ ├── 整体到店率 │ │ ├── 各门店到店率对比(表格或图表) │ │ └── 各人员到店率对比(表格或图表) │ └── 到店时间分析 │ ├── 到店间隔分布图 │ ├── 平均到店间隔 │ └── 到店时间趋势图 │ └── 其他统计区域(可选,按需展示) ├── 门店对比分析(可选) ├── 时间趋势分析(可选) ├── 流失分析(可选) └── 其他维度统计(可选) ``` **页面布局说明**: - **不使用Tab切换**,所有统计区域垂直排列,用户通过滚动查看不同区域 - 每个统计区域使用清晰的标题分隔 - 各区域之间使用适当的间距和分割线区分 - 支持页面内锚点导航(可选),用户可快速跳转到指定区域 - 筛选条件区域固定在顶部,方便用户随时修改筛选条件 ### 6.2 大单统计区域 #### 6.2.1 大单概览卡片 - 大单数量 - 大单金额 - 大单平均金额 - 大单转化率 - 大单金额占比 #### 6.2.2 大单分布图表(可选) - 按门店分布饼图 - 按人员分布柱状图 - 大单金额分布柱状图 **布局建议**:图表横向排列,每个图表占据1/3宽度 #### 6.2.3 大单明细列表 - 表格展示大单明细 - 支持按门店、人员、金额排序 - 支持导出Excel ### 6.3 拓客人员统计区域 #### 6.3.1 人员统计列表 - 表格展示所有参与拓客的人员及其统计数据 - 支持按拓客人数、到店率、开单率、大单数量排序 - 支持导出Excel #### 6.3.2 人员排名卡片(可选) - 拓客人数TOP10 - 到店率TOP10 - 开单率TOP10 - 大单数量TOP10 **布局建议**:排名卡片横向排列,每个卡片显示TOP10列表 ### 6.4 到店转化分析区域 #### 6.4.1 到店率统计 - 整体到店率(卡片形式展示) - 各门店到店率对比(表格或柱状图) - 各人员到店率对比(表格或柱状图) #### 6.4.2 到店时间分析 - 到店间隔分布图(柱状图) - 平均到店间隔(卡片形式展示) - 到店时间趋势图(折线图) **布局建议**:图表采用两列布局,左侧展示分布图,右侧展示趋势图,平均间隔显示在顶部 --- ## 七、技术实现要点 ### 7.1 大单判断逻辑(已确认) ```csharp // 大单定义:开单金额(实付业绩)> 10000(不含等于) var bigOrderThreshold = 10000m; var isBigOrder = kd.Sfyj > bigOrderThreshold; // 严格大于,不含等于 // SQL查询示例 WHERE kd.sfyj > 10000 AND kd.F_IsEffective = 1 ``` ### 7.2 数据去重逻辑(已确认) - **拓客人数**: 按 `lq_tkjlb.F_MemberId` 去重 - **到店人数**: 按 `lq_tkjlb.F_MemberId` 去重,且关联的 `lq_xh_hyhk.hyzh` 存在记录且 `F_IsEffective = 1` - **开单人数**: 按 `lq_tkjlb.F_MemberId` 去重,且关联的 `lq_kd_kdjlb.kdhy` 存在记录且 `sfyj > 0` 且 `F_IsEffective = 1` - **大单数量**: 按开单记录统计(`sfyj > 10000` 且 `F_IsEffective = 1`),不去重(一个客户可能有多个大单) ### 7.3 关联查询逻辑(已确认) ```sql -- 拓客到开单关联(用于统计开单人数、开单金额、大单) lq_tkjlb.F_MemberId = lq_kd_kdjlb.kdhy WHERE lq_kd_kdjlb.F_IsEffective = 1 -- 拓客到耗卡关联(用于判断到店,已确认使用此方式) lq_tkjlb.F_MemberId = lq_xh_hyhk.hyzh WHERE lq_xh_hyhk.F_IsEffective = 1 -- 拓客到预约关联(可选,用于预约转化率统计) lq_tkjlb.F_MemberId = lq_yyjl.gk WHERE lq_yyjl.F_Status = '已确认' -- 拓客人员信息关联 lq_tkjlb.F_ExpansionUserId = BASE_USER.F_Id -- 大单判断(已确认标准) lq_kd_kdjlb.sfyj > 10000 -- 严格大于,不含等于 ``` ### 7.4 团队字段显示逻辑(已确认) ```csharp // 判断活动类型 var eventType = event.EventType; // 1=日常拓客, 3=全员拓客 // 仅在全员拓客时显示团队字段 if (eventType == 3) // 全员拓客 { // 显示团队相关字段和统计 // 从 lq_eventuser.F_TeamName 或 lq_tkjlb.F_TeamName 获取 } else // 日常拓客 { // 不显示团队字段,团队相关统计隐藏 } ``` ### 7.5 时间范围自动填充逻辑 ```javascript // 前端:选择活动后自动填充时间 onEventChange(eventId) { const event = eventList.find(e => e.id === eventId); if (event) { this.queryParams.startTime = event.startTime; this.queryParams.endTime = event.endTime; } } ``` ```csharp // 后端:根据活动ID获取活动时间范围 var event = await _db.Queryable() .Where(e => e.Id == eventId) .FirstAsync(); var startTime = event?.StartTime; var endTime = event?.EndTime; ``` ### 7.6 性能优化建议 - 使用索引优化查询(`F_MemberId`, `F_ExpansionUserId`, `F_EventId`, `kdhy`, `hyzh`, `F_EventType`) - 使用聚合查询减少数据库访问 - 大数据量时考虑分页或缓存 - 使用视图预计算常用统计数据 - 根据活动类型动态构建查询(团队相关查询仅在全员拓客时执行) --- ## 八、开发优先级 ### 8.1 第一优先级(必须实现) 1. ✅ **大单统计功能** - 大单概览统计 - 大单明细列表 - 大单导出功能 2. ✅ **拓客人员参与统计** - 人员统计列表 - 人员数据导出 3. ✅ **到店转化分析增强** - 到店率计算优化 - 到店时间分析 ### 8.2 第二优先级(建议实现) 1. 时间维度分析 2. 门店对比分析 3. 客户画像分析 ### 8.3 第三优先级(可选实现) 1. 流失分析 2. 复购分析 3. ROI分析 --- ## 九、待讨论问题 ### 9.1 业务规则确认(已确认) 1. ✅ **大单标准**: 已确认使用 **> 10000 元**作为大单标准(不含等于) 2. ✅ **到店定义**: 已确认使用 **耗卡记录**(`lq_xh_hyhk`)来判断到店 3. ✅ **团队显示**: 已确认仅当活动类型为"全员拓客"(EventType=3)时显示团队相关字段和统计,日常拓客(EventType=1)无团队概念 4. ✅ **时间范围**: 已确认选择拓客活动后,时间范围自动填充为该活动的开始和结束时间,用户可手动调整 5. ✅ **门店筛选**: 已确认不提供门店筛选功能,数据按活动范围统计所有门店 6. **权限控制**: 是否需要按门店权限过滤数据? ### 9.2 数据展示确认 1. **大单明细**: 是否需要显示项目明细?如果需要,如何获取? 2. **人员统计**: 是否需要支持按部门、岗位筛选? 3. **导出格式**: Excel导出需要哪些字段?是否需要自定义格式? ### 9.3 功能扩展确认 1. **图表展示**: 是否需要可视化图表(如折线图、柱状图、饼图)? 2. **对比分析**: 是否需要支持多活动对比、多门店对比? 3. **实时更新**: 数据是否需要实时更新,还是定时刷新? --- ## 十、参考资料 ### 10.1 现有代码参考 - **前端页面**: `antis-ncc-admin/src/views/lqTkjlb/Report.vue` - **后端服务**: `netcore/src/Modularity/Extend/NCC.Extend/LqTkjlbService.cs` - **实体类**: `netcore/src/Modularity/Extend/NCC.Extend.Entitys/Entity/lq_tkjlb/LqTkjlbEntity.cs` ### 10.2 数据库表 - `lq_tkjlb`: 拓客记录表 - `lq_kd_kdjlb`: 开单记录表 - `lq_xh_hyhk`: 耗卡记录表 - `lq_yyjl`: 预约记录表 - `lq_yaoyjl`: 邀约记录表 --- ## 📝 修改记录 | 日期 | 版本 | 修改内容 | 修改人 | |------|------|----------|--------| | 2025-01-XX | v1.0 | 初始版本创建 | - | | 2025-01-XX | v1.1 | 确认大单标准(>10000)和到店定义(耗卡记录) | - | | 2025-01-XX | v1.2 | 确认团队显示规则(仅全员拓客)、时间自动填充、移除门店筛选,新增多维度统计建议 | - | | 2025-01-XX | v1.3 | 修改页面结构,不使用Tab切换,改为垂直滚动布局 | - | --- **文档状态**: ✅ 业务规则已确认,待开发实施