You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

619 lines
35 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 统计报表
> 模块编码statistics
> 端侧Web专属仅医院账号
> 关联文档01-模块划分 §4.5 / 02-功能清单-医院 §5 / 03-业务流转逻辑-医院 §5 / 05-接口规范 §9.2
> 强制规范遵循 `07-前端界面开发规范.md`
## 功能概览
| 项目 | 说明 |
|------|------|
| 菜单名称 | 统计报表 |
| 子菜单 | 报修统计、巡检统计、保洁统计、评价统计、合同统计、招标统计、综合看板、自定义报表 |
| 功能编号 | HO-ST-01 ~ HO-ST-08 |
| 权限编码前缀 | statistics:repair:* / statistics:inspection:* / statistics:cleaning:* / statistics:evaluation:* / statistics:contract:* / statistics:bidding:* / statistics:dashboard:* / statistics:custom:* |
---
## 页面1报修统计页只读
**页面编号**HO-ST-01-P01
**端侧归属**Web专属
**页面路径**/statistics/repair
### 统计指标
| 指标 | 说明 | 数据来源 |
|------|------|----------|
| 总工单数 | 统计时间段内工单总数 | 物业报修数据(只读) |
| 各状态分布 | 待分配/处理中/已完成/已关闭 | 物业报修数据 |
| 完成率 | 已完成/总数 | 物业报修数据 |
| 平均处理时长 | 从分配到完工的平均时间 | 物业报修数据 |
| 紧急工单占比 | 紧急工单/总数 | 物业报修数据 |
| 各班组工单量 | 按班组统计工单数 | 物业报修数据 |
### 操作权限
| 操作 | 权限 | 说明 |
|------|------|------|
| 查看 | statistics:repair:view | 仅查看,不可导出 |
| 导出 | ❌ 不支持 | 业务数据报表仅查看来源03-医院 §5 |
### 交互流程要求
1. **页面加载流程**:进入页面 → 默认加载本月数据 → 调用报修统计API → 渲染统计卡片 + 图表
2. **查询/筛选交互流程**:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表;支持按物业公司筛选
3. **表单填写与提交流程**:不适用(只读页面,不支持导出)
4. **弹窗/抽屉交互流程**:不适用
5. **行内操作流程**图表支持交互饼图hover显示各状态数量柱状图hover显示各班组工单量折线图hover显示趋势数据
6. **异常与错误处理**API请求失败显示el-message错误提示无数据时图表显示"暂无数据"
7. **联动/级联交互**:时间范围/物业公司筛选后所有统计卡片和图表同步刷新
8. **权限控制交互表现**:仅查看权限,无导出按钮;无查看权限时隐藏整个页面内容
### 前端硬性约束
> 以下为本页面必须遵守的前端交互与体验硬性约束H=Hard Constraint
| 编号 | 约束项 | 级别 | 本页要求 |
|------|--------|------|----------|
| **H1** | 防重复提交 | **强制** | 切换时间范围/物业公司筛选加载数据期间显示loading状态(skeleton)并禁用筛选控件;防止重复请求 |
| **H2** | 请求超时 | **强制** | GET统计请求设置**30s超时**统计报表类接口数据量大使用30s档位 |
| **H3** | 操作确认 | 强制(不适用) | 本页为只读统计页面,无删除/停用等危险操作,不涉及 |
| **H4** | 脏数据保护 | 强制(不适用) | 本页无编辑表单,不涉及脏数据检测 |
| **H5** | 权限隔离表现 | 建议 | 无`statistics:repair:view`权限时隐藏整个页面或展示无权提示;物业公司筛选下拉仅展示有权限的数据范围 |
| **H6** | 批量操作限制 | 建议(不适用) | 本页为只读统计页面,无批量操作,不涉及 |
| **H7** | 文件上传约束 | 建议(不适用) | 本页不支持导出且无文件上传功能,不涉及 |
| **H8** | 反馈规范 | 建议 | 数据加载成功后silent刷新图表和卡片API失败时在对应区域展示错误状态而非全局toast网络异常时展示重试按钮 |
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 时间选择 | el-radio-group | 本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 | el-date-picker | type="daterange"v-if="自定义" |
| 物业公司筛选 | el-select | placeholder="请选择物业公司"clearablefilterable |
| 统计卡片区 | el-row + el-col | :gutter=20v-for遍历6个指标每个el-card shadow="hover" |
| 各状态分布图 | echarts | 饼图,:data=各状态数量tooltiplegendcolor预设配色 |
| 各班组工单量图 | echarts | 柱状图,:xAxis=班组,:yAxis=工单数tooltip |
| 完成率/紧急占比 | echarts | 仪表盘图/环形图tooltip |
| 平均处理时长 | echarts | 折线图(时间趋势),:xAxis=时间,:yAxis=小时 |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 自定义日期范围 | 结束日期≥开始日期 | 结束日期不能早于开始日期 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 统计卡片3×2网格图表区2列布局饼图+柱状图并排),下方折线图全宽 |
| 1024-1279pxPad横屏 | 统计卡片3×2网格图表区上下排列ECharts图表宽度100% |
| 768-1023pxPad竖屏 | 统计卡片2×3网格所有图表纵向堆叠ECharts图表宽度100%高度250px支持手势缩放 |
---
## 页面2巡检统计页只读
**页面编号**HO-ST-02-P01
**端侧归属**Web专属
**页面路径**/statistics/inspection
### 统计指标
| 指标 | 说明 |
|------|------|
| 总巡检任务数 | — |
| 完成率 | — |
| 异常率 | — |
| 蓝牙打卡率 | — |
| 补录率 | — |
### 交互流程要求
1. **页面加载流程**:进入页面 → 默认加载本月数据 → 调用巡检统计API → 渲染统计卡片 + 图表
2. **查询/筛选交互流程**:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表
3. **表单填写与提交流程**:不适用(只读页面,不支持导出)
4. **弹窗/抽屉交互流程**:不适用
5. **行内操作流程**图表支持交互饼图hover显示完成/异常分布柱状图hover显示各区域巡检量
6. **异常与错误处理**API请求失败显示el-message错误提示无数据时图表显示"暂无数据"
7. **联动/级联交互**:时间范围筛选后所有统计卡片和图表同步刷新
8. **权限控制交互表现**:仅查看权限,无导出按钮
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 时间选择 | el-radio-group | 本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 | el-date-picker | type="daterange"v-if="自定义" |
| 统计卡片区 | el-row + el-col | :gutter=20v-for遍历5个指标 |
| 完成率/异常率图 | echarts | 饼图/环形图,:data=完成/异常分布 |
| 蓝牙打卡率/补录率图 | echarts | 柱状图,:xAxis=时间段,:yAxis=百分比 |
| 巡检趋势图 | echarts | 折线图,:xAxis=时间,:yAxis=任务数 |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 自定义日期范围 | 结束日期≥开始日期 | 结束日期不能早于开始日期 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 统计卡片横排5列图表区2列布局 |
| 1024-1279pxPad横屏 | 统计卡片3+2排列图表区上下排列 |
| 768-1023pxPad竖屏 | 统计卡片2×3网格所有图表纵向堆叠ECharts图表宽度100%高度250px支持手势缩放 |
---
## 页面3保洁统计页只读
**页面编号**HO-ST-03-P01
**端侧归属**Web专属
**页面路径**/statistics/cleaning
### 统计指标
| 指标 | 说明 |
|------|------|
| 总保洁任务数 | — |
| 完成率 | — |
| 超时率 | — |
| 抽查合格率 | — |
### 交互流程要求
1. **页面加载流程**:进入页面 → 默认加载本月数据 → 调用保洁统计API → 渲染统计卡片 + 图表
2. **查询/筛选交互流程**:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表
3. **表单填写与提交流程**:不适用(只读页面,不支持导出)
4. **弹窗/抽屉交互流程**:不适用
5. **行内操作流程**图表支持交互柱状图hover显示各区域保洁完成量折线图hover显示超时率趋势
6. **异常与错误处理**API请求失败显示el-message错误提示无数据时图表显示"暂无数据"
7. **联动/级联交互**:时间范围筛选后所有统计卡片和图表同步刷新
8. **权限控制交互表现**:仅查看权限,无导出按钮
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 时间选择 | el-radio-group | 本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 | el-date-picker | type="daterange"v-if="自定义" |
| 统计卡片区 | el-row + el-col | :gutter=20v-for遍历4个指标 |
| 完成率/超时率图 | echarts | 饼图/环形图,:data=完成/超时分布 |
| 抽查合格率图 | echarts | 仪表盘图,:min=0:max=100 |
| 各区域保洁量图 | echarts | 柱状图,:xAxis=区域,:yAxis=任务数 |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 自定义日期范围 | 结束日期≥开始日期 | 结束日期不能早于开始日期 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 统计卡片横排4列图表区2列布局 |
| 1024-1279pxPad横屏 | 统计卡片2×2排列图表区上下排列 |
| 768-1023pxPad竖屏 | 统计卡片2×2网格所有图表纵向堆叠ECharts图表宽度100%高度250px支持手势缩放 |
---
## 页面4评价统计页只读
**页面编号**HO-ST-04-P01
**端侧归属**Web专属
**页面路径**/statistics/evaluation
### 统计指标
| 指标 | 说明 |
|------|------|
| 总评价数 | 本医院发起的评价 |
| 平均评分 | — |
| 各物业公司评分对比 | — |
| 低评分占比 | — |
| 物业回复率 | — |
### 交互流程要求
1. **页面加载流程**:进入页面 → 默认加载本月数据 → 调用评价统计API → 渲染统计卡片 + 图表
2. **查询/筛选交互流程**:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表;支持按物业公司筛选
3. **表单填写与提交流程**:不适用(只读页面,不支持导出)
4. **弹窗/抽屉交互流程**:不适用
5. **行内操作流程**图表支持交互柱状图hover显示各物业公司评分饼图hover显示星级分布折线图hover显示评分趋势
6. **异常与错误处理**API请求失败显示el-message错误提示无数据时图表显示"暂无数据"
7. **联动/级联交互**:时间范围/物业公司筛选后所有统计卡片和图表同步刷新
8. **权限控制交互表现**:仅查看权限,无导出按钮
### 前端硬性约束
> 以下为本页面必须遵守的前端交互与体验硬性约束H=Hard Constraint
| 编号 | 约束项 | 级别 | 本页要求 |
|------|--------|------|----------|
| **H1** | 防重复提交 | **强制** | 切换时间范围/物业公司筛选加载数据期间显示loading状态(skeleton)并禁用筛选控件;防止重复请求 |
| **H2** | 请求超时 | **强制** | GET统计请求设置**30s超时**统计报表类接口数据量大使用30s档位 |
| **H3** | 操作确认 | 强制(不适用) | 本页为只读统计页面,无删除/停用等危险操作,不涉及 |
| **H4** | 脏数据保护 | 强制(不适用) | 本页无编辑表单,不涉及脏数据检测 |
| **H5** | 权限隔离表现 | 建议 | 无`statistics:evaluation:view`权限时隐藏整个页面或展示无权提示;物业公司筛选仅展示有权限范围 |
| **H6** | 批量操作限制 | 建议(不适用) | 本页为只读统计页面,无批量操作,不涉及 |
| **H7** | 文件上传约束 | 建议(不适用) | 本页不支持导出且无文件上传功能,不涉及 |
| **H8** | 反馈规范 | 建议 | 数据加载成功后silent刷新图表和卡片API失败时在对应区域展示错误状态网络异常时展示重试按钮 |
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 时间选择 | el-radio-group | 本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 | el-date-picker | type="daterange"v-if="自定义" |
| 物业公司筛选 | el-select | placeholder="请选择物业公司"clearablefilterable |
| 统计卡片区 | el-row + el-col | :gutter=20v-for遍历5个指标 |
| 各物业公司评分对比图 | echarts | 柱状图,:xAxis=物业公司,:yAxis=评分color预设配色 |
| 星级分布图 | echarts | 饼图,:data=各星级占比tooltiplegend |
| 评分趋势图 | echarts | 折线图,:xAxis=时间,:yAxis=平均分dataZoom |
| 低评分占比图 | echarts | 环形图,:data=低评分/正常占比 |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 自定义日期范围 | 结束日期≥开始日期 | 结束日期不能早于开始日期 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 统计卡片横排5列柱状图与饼图左右并排折线图全宽 |
| 1024-1279pxPad横屏 | 统计卡片3+2排列所有图表上下排列 |
| 768-1023pxPad竖屏 | 统计卡片2×3网格所有图表纵向堆叠ECharts图表宽度100%高度250px支持手势缩放 |
---
## 页面5合同统计页可导出
**页面编号**HO-ST-05-P01
**端侧归属**Web专属
**页面路径**/statistics/contract
### 统计指标
| 指标 | 说明 | 数据来源 |
|------|------|----------|
| 合同总数 | — | 本系统合同数据 |
| 合同总金额 | — | 本系统合同数据 |
| 履约率 | 已完成付款/合同金额 | 本系统合同数据 |
| 各物业合同分布 | 按物业公司统计 | 本系统合同数据 |
| 付款完成率 | 已付款节点/总节点 | 本系统合同数据 |
| 即将到期合同 | 30天内到期的合同 | 本系统合同数据 |
### 操作权限
| 操作 | 权限 | 说明 |
|------|------|------|
| 查看 | statistics:contract:view | — |
| 导出 | statistics:contract:export | 合同统计可导出来源03-医院 §5 |
### 交互流程要求
1. **页面加载流程**:进入页面 → 默认加载本月数据 → 调用合同统计API → 渲染统计卡片 + 图表
2. **查询/筛选交互流程**:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表;支持按物业公司筛选
3. **表单填写与提交流程**:不适用(只读查看,但支持导出)
4. **弹窗/抽屉交互流程**:点击"导出" → 选择导出格式Excel/PDF→ 调用导出API → 下载文件
5. **行内操作流程**:图表支持交互;点击"导出"按钮下载报表
6. **异常与错误处理**API请求失败显示el-message错误提示导出失败提示"导出失败,请重试";无数据时图表显示"暂无数据"
7. **联动/级联交互**:时间范围/物业公司筛选后所有统计卡片和图表同步刷新
8. **权限控制交互表现**:有导出权限显示"导出"按钮;无导出权限隐藏
### 前端硬性约束
> 以下为本页面必须遵守的前端交互与体验硬性约束H=Hard Constraint
| 编号 | 约束项 | 级别 | 本页要求 |
|------|--------|------|----------|
| **H1** | 防重复提交 | **强制** | 切换时间范围/物业公司筛选加载数据期间显示loading状态(skeleton)并禁用筛选控件;**导出期间显示loading并禁用"导出"按钮**,防止重复点击重复下载 |
| **H2** | 请求超时 | **强制** | GET统计请求设置**30s超时**(统计报表类接口数据量大);**POST导出请求设置60s超时**(导出文件可能较大) |
| **H3** | 操作确认 | 强制(不适用) | 本页为只读统计+导出页面,无删除/停用等危险操作,不涉及 |
| **H4** | 脏数据保护 | 强制(不适用) | 本页无编辑表单,不涉及脏数据检测 |
| **H5** | 权限隔离表现 | 建议 | 无`statistics:contract:view`权限时隐藏整个页面或展示无权提示;有`statistics:contract:export`权限才显示"导出"按钮及格式选择下拉 |
| **H6** | 批量操作限制 | 建议(不适用) | 本页为只读统计页面,无批量操作,不涉及 |
| **H7** | 文件上传约束 | 建议(不适用) | 本页为下载导出场景,无文件上传功能,不涉及 |
| **H8** | 反馈规范 | 建议 | 数据加载成功后silent刷新图表和卡片**导出成功后显示success提示(2s)并触发浏览器下载**导出失败显示error提示(duration=0)含重试选项;网络异常时展示重试按钮 |
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 时间选择 | el-radio-group | 本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 | el-date-picker | type="daterange"v-if="自定义" |
| 物业公司筛选 | el-select | placeholder="请选择物业公司"clearablefilterable |
| 统计卡片区 | el-row + el-col | :gutter=20v-for遍历6个指标 |
| 各物业合同分布图 | echarts | 柱状图,:xAxis=物业公司,:yAxis=合同数/金额tooltip |
| 合同金额趋势图 | echarts | 折线图,:xAxis=时间,:yAxis=金额dataZoom |
| 付款完成率图 | echarts | 环形图/仪表盘图 |
| 到期预警列表 | el-table | stripeborder:data=即将到期合同 |
| 导出按钮 | el-button | type="success"icon="Download"@click导出 |
| 导出格式选择 | el-dropdown | 触发导出,:options="[{label: 'Excel'}, {label: 'PDF'}]" |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 自定义日期范围 | 结束日期≥开始日期 | 结束日期不能早于开始日期 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 统计卡片3×2网格柱状图与折线图左右并排到期预警列表全宽 |
| 1024-1279pxPad横屏 | 统计卡片3×2网格图表上下排列到期预警列表全宽 |
| 768-1023pxPad竖屏 | 统计卡片2×3网格所有图表纵向堆叠到期预警列表隐藏次要列ECharts图表宽度100%高度250px支持手势缩放 |
---
## 页面6招标统计页可导出
**页面编号**HO-ST-06-P01
**端侧归属**Web专属
**页面路径**/statistics/bidding
### 统计指标
| 指标 | 说明 |
|------|------|
| 招标项目数 | — |
| 中标率 | — |
| 平均招标周期 | 从发布到定标的天数 |
| 成本对比 | 预算 vs 中标金额 |
| 各标段中标情况 | — |
### 操作权限
| 操作 | 权限 | 说明 |
|------|------|------|
| 查看 | statistics:bidding:view | — |
| 导出 | statistics:bidding:export | 招标统计可导出 |
### 交互流程要求
1. **页面加载流程**:进入页面 → 默认加载本月数据 → 调用招标统计API → 渲染统计卡片 + 图表
2. **查询/筛选交互流程**:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表
3. **表单填写与提交流程**:不适用(只读查看,但支持导出)
4. **弹窗/抽屉交互流程**:点击"导出" → 选择导出格式Excel/PDF→ 调用导出API → 下载文件
5. **行内操作流程**图表支持交互成本对比图hover显示预算vs中标金额详情
6. **异常与错误处理**API请求失败显示el-message错误提示导出失败提示"导出失败,请重试";无数据时图表显示"暂无数据"
7. **联动/级联交互**:时间范围筛选后所有统计卡片和图表同步刷新
8. **权限控制交互表现**:有导出权限显示"导出"按钮;无导出权限隐藏
### 前端硬性约束
> 以下为本页面必须遵守的前端交互与体验硬性约束H=Hard Constraint
| 编号 | 约束项 | 级别 | 本页要求 |
|------|--------|------|----------|
| **H1** | 防重复提交 | **强制** | 切换时间范围加载数据期间显示loading状态(skeleton)并禁用时间选择控件;**导出期间显示loading并禁用"导出"按钮**,防止重复点击重复下载 |
| **H2** | 请求超时 | **强制** | GET统计请求设置**30s超时**(统计报表类接口数据量大);**POST导出请求设置60s超时**(导出文件可能较大) |
| **H3** | 操作确认 | 强制(不适用) | 本页为只读统计+导出页面,无删除/停用等危险操作,不涉及 |
| **H4** | 脏数据保护 | 强制(不适用) | 本页无编辑表单,不涉及脏数据检测 |
| **H5** | 权限隔离表现 | 建议 | 无`statistics:bidding:view`权限时隐藏整个页面或展示无权提示;有`statistics:bidding:export`权限才显示"导出"按钮及格式选择下拉 |
| **H6** | 批量操作限制 | 建议(不适用) | 本页为只读统计页面,无批量操作,不涉及 |
| **H7** | 文件上传约束 | 建议(不适用) | 本页为下载导出场景,无文件上传功能,不涉及 |
| **H8** | 反馈规范 | 建议 | 数据加载成功后silent刷新图表和卡片**导出成功后显示success提示(2s)并触发浏览器下载**导出失败显示error提示(duration=0)含重试选项;网络异常时展示重试按钮 |
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 时间选择 | el-radio-group | 本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 | el-date-picker | type="daterange"v-if="自定义" |
| 统计卡片区 | el-row + el-col | :gutter=20v-for遍历5个指标 |
| 成本对比图 | echarts | 柱状图(分组),:xAxis=标段,两组数据:预算/中标金额tooltip |
| 各标段中标情况图 | echarts | 饼图/柱状图,:data=各标段中标状态 |
| 招标周期趋势图 | echarts | 折线图,:xAxis=项目,:yAxis=天数tooltip |
| 导出按钮 | el-button | type="success"icon="Download"@click导出 |
| 导出格式选择 | el-dropdown | 触发导出,:options="[{label: 'Excel'}, {label: 'PDF'}]" |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 自定义日期范围 | 结束日期≥开始日期 | 结束日期不能早于开始日期 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 统计卡片横排5列成本对比图与中标情况图左右并排周期趋势图全宽 |
| 1024-1279pxPad横屏 | 统计卡片3+2排列所有图表上下排列 |
| 768-1023pxPad竖屏 | 统计卡片2×3网格所有图表纵向堆叠ECharts图表宽度100%高度250px支持手势缩放 |
---
## 页面7综合看板页
**页面编号**HO-ST-07-P01
**端侧归属**Web专属
**页面路径**/statistics/dashboard
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 统计报表 > 综合看板 │
├──────────────────────────────────────────────────────────────────┤
│ [时间选择] 今天 / 本周 / 本月 / 自定义 │
├──────────────────────────────────────────────────────────────────┤
│ ┌───────────────── 服务数据(只读) ──────────────────┐ │
│ │ 报修完成率 巡检完成率 保洁完成率 评价均分 │ │
│ │ 69% 92% 85% 4.2 │ │
│ └────────────────────────────────────────────────────┘ │
│ ┌───────────────── 合同/招标数据 ──────────────────┐ │
│ │ 活跃合同 付款完成率 招标项目 即将到期合同 │ │
│ │ 12 78% 3 2 │ │
│ └────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
```
### 数据来源
- 服务数据:物业公司业务数据(只读)
- 合同/招标数据:本系统数据
### 交互流程要求
1. **页面加载流程**:进入页面 → 默认加载"今天"数据 → 并行调用各模块统计API → 渲染统计卡片
2. **查询/筛选交互流程**:选择时间范围(今天/本周/本月/自定义)→ 刷新所有看板数据
3. **表单填写与提交流程**:不适用(只读看板)
4. **弹窗/抽屉交互流程**:不适用
5. **行内操作流程**:点击各统计卡片可跳转对应统计详情页(如点击"报修完成率"跳转报修统计页)
6. **异常与错误处理**部分模块API失败时仅该模块显示"数据加载失败",其他模块正常展示;全部失败显示"看板数据加载失败"
7. **联动/级联交互**:时间范围切换后所有模块数据同步刷新
8. **权限控制交互表现**:无查看权限的模块对应卡片灰显或隐藏
### 前端硬性约束
> 以下为本页面必须遵守的前端交互与体验硬性约束H=Hard Constraint
| 编号 | 约束项 | 级别 | 本页要求 |
|------|--------|------|----------|
| **H1** | 防重复提交 | **强制** | 切换时间范围刷新数据期间显示loading状态(skeleton)并禁用时间选择控件;各模块并行加载时防止重复请求;卡片点击跳转防抖处理 |
| **H2** | 请求超时 | **强制** | 各模块GET统计请求均设置**30s超时**综合看板涉及多模块并行调用使用30s档位 |
| **H3** | 操作确认 | 强制(不适用) | 本页为只读综合看板页面,无删除/停用等危险操作,不涉及 |
| **H4** | 脏数据保护 | 强制(不适用) | 本页无编辑表单,不涉及脏数据检测 |
| **H5** | 权限隔离表现 | 建议 | 各统计卡片根据用户权限动态显隐或灰显;无某模块权限时该区域展示"暂无数据访问权";整体无看板权限时隐藏页面内容 |
| **H6** | 批量操作限制 | 建议(不适用) | 本页为只读看板页面,无批量操作,不涉及 |
| **H7** | 文件上传约束 | 建议(不适用) | 本页无文件上传功能,不涉及 |
| **H8** | 反馈规范 | 建议 | 各模块独立加载反馈成功则silent渲染**部分模块失败仅在该卡片区域展示错误状态,不影响其他正常模块**;全部失败时展示全局错误提示+重试按钮 |
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 时间选择 | el-radio-group | 今天/本周/本月/自定义,@change刷新数据 |
| 自定义日期 | el-date-picker | type="daterange"v-if="自定义" |
| 服务数据卡片组 | el-card | shadow="hover":gutter=204个指标报修完成率/巡检完成率/保洁完成率/评价均分),@click跳转详情 |
| 合同/招标数据卡片组 | el-card | shadow="hover":gutter=204个指标活跃合同/付款完成率/招标项目/即将到期合同),@click跳转详情 |
| 数值展示 | el-statistic | :precision=1均分/ 0其他prefix/suffix图标 |
| 加载状态 | el-skeleton | :loading=数据加载中animated |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 自定义日期范围 | 结束日期≥开始日期 | 结束日期不能早于开始日期 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 两组卡片各横排4列整体2行布局 |
| 1024-1279pxPad横屏 | 两组卡片各2×2网格整体2行布局 |
| 768-1023pxPad竖屏 | 所有卡片纵向堆叠8行1列支持手势下拉刷新卡片宽度100%,高度自适应 |
---
## 页面8自定义报表页
**页面编号**HO-ST-08-P01
**端侧归属**Web专属
**页面路径**/statistics/custom
### 配置选项
| 配置项 | 说明 |
|--------|------|
| 数据源 | 报修/巡检/保洁/评价(只读) + 合同/招标(可导出) |
| 维度 | 时间/物业公司/区域/类型 |
| 指标 | 数量/完成率/金额/评分... |
| 时间范围 | 自定义 |
### 操作权限
| 操作 | 权限 | 说明 |
|------|------|------|
| 生成报表 | statistics:custom:view | — |
| 导出 | statistics:custom:export | 合同/招标相关数据可导出,业务数据仅查看 |
### 交互流程要求
1. **页面加载流程**:进入页面 → 渲染报表配置表单(数据源/维度/指标/时间范围选择)
2. **查询/筛选交互流程**:选择数据源 → 联动加载可选维度和指标 → 选择维度和指标 → 选择时间范围
3. **表单填写与提交流程**:配置报表参数 → 点击"生成报表" → 调用自定义报表API → 渲染图表/表格 → (合同/招标数据)点击"导出"下载报表
4. **弹窗/抽屉交互流程**:不适用
5. **行内操作流程**报表结果支持图表交互hover查看数据点表格数据支持排序
6. **异常与错误处理**:未选择数据源时"生成报表"按钮禁用生成失败显示el-message错误提示业务数据导出时提示"业务数据仅查看,不支持导出"
7. **联动/级联交互**:数据源选择→联动可选维度和指标;选择"报修/巡检/保洁/评价"数据源时隐藏导出按钮;选择"合同/招标"数据源时显示导出按钮
8. **权限控制交互表现**:有导出权限且选择合同/招标数据源时显示"导出"按钮;业务数据源始终不显示导出
### 前端硬性约束
> 以下为本页面必须遵守的前端交互与体验硬性约束H=Hard Constraint
| 编号 | 约束项 | 级别 | 本页要求 |
|------|--------|------|----------|
| **H1** | 防重复提交 | **强制** | "生成报表"期间显示loading状态并禁用"生成报表"按钮;切换数据源/维度/指标联动加载期间禁用相关控件;**导出期间显示loading并禁用"导出"按钮** |
| **H2** | 请求超时 | **强制** | GET加载维度/指标选项15s超时GET/POST生成报表请求**30s超时****POST导出请求设置60s超时** |
| **H3** | 操作确认 | 强制(不适用) | 本页为报表配置+查看页面,无删除/停用等危险操作,不涉及 |
| **H4** | 脏数据保护 | **强制** | 用户配置了报表参数但未点"生成报表"即离开页面时若已有已生成的报表结果则标记isDirty=true触发beforeunload离开拦截确认 |
| **H5** | 权限隔离表现 | 建议 | 无`statistics:custom:view`权限时隐藏整个配置表单区;有`statistics:custom:export`权限且选择合同/招标数据源才显示导出按钮;业务数据源始终不显示导出入口 |
| **H6** | 批量操作限制 | 建议(不适用) | 本页为单次报表生成页面,无批量操作,不涉及 |
| **H7** | 文件上传约束 | 建议(不适用) | 本页为报表生成+导出下载场景,无文件上传功能,不涉及 |
| **H8** | 反馈规范 | 建议 | 生成报表成功后silent渲染图表/表格;**业务数据源尝试导出时显示warning提示"业务数据仅查看,不支持导出"(duration=0)**;合同/招标导出成功显示success(2s)并触发下载失败显示error(duration=0)+重试 |
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 数据源选择 | el-select | placeholder="请选择数据源"@change联动维度/指标options: 报修/巡检/保洁/评价/合同/招标 |
| 维度选择 | el-checkbox-group | v-for遍历可选维度@change联动指标 |
| 指标选择 | el-checkbox-group | v-for遍历可选指标 |
| 时间范围 | el-date-picker | type="daterange"start-placeholder="开始日期"end-placeholder="结束日期" |
| 生成报表按钮 | el-button | type="primary"icon="DataAnalysis":disabled="未选择数据源" |
| 导出按钮 | el-button | type="success"icon="Download"v-if="数据源=合同/招标" |
| 报表图表区 | echarts | 根据配置动态渲染,:resize自适应容器 |
| 报表表格区 | el-table | :data=报表数据stripebordersortable |
| 空状态 | el-empty | description="请选择数据源和指标后生成报表" |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 数据源 | required | 请选择数据源 |
| 维度 | required至少选1项 | 请至少选择一个维度 |
| 指标 | required至少选1项 | 请至少选择一个指标 |
| 时间范围 | required | 请选择时间范围 |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 配置区左侧报表结果区右侧宽度比3:7 |
| 1024-1279pxPad横屏 | 配置区上方,报表结果区下方,全宽展示 |
| 768-1023pxPad竖屏 | 配置区上方折叠为el-collapse报表结果区下方全宽ECharts图表宽度100%高度250px表格横向滚动 |
---
## 需求追溯
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| HO-ST-01 | 报修统计 | 02-医院 §5 / 03-医院 §5 | — | 物业报修统计(数据来源) |
| HO-ST-02 | 巡检统计 | 02-医院 §5 / 03-医院 §5 | — | 物业巡检统计(数据来源) |
| HO-ST-03 | 保洁统计 | 02-医院 §5 / 03-医院 §5 | — | 物业保洁统计(数据来源) |
| HO-ST-04 | 评价统计 | 02-医院 §5 / 03-医院 §5 | — | 物业评价统计(数据来源) |
| HO-ST-05 | 合同统计 | 02-医院 §5 / 03-医院 §5 | — | 合同管理(数据来源) |
| HO-ST-06 | 招标统计 | 02-医院 §5 / 03-医院 §5 | — | 招标管理(数据来源) |
| HO-ST-07 | 综合看板 | 02-医院 §5 | — | 全部模块(数据来源) |
| HO-ST-08 | 自定义报表 | 02-医院 §5 | — | 全部模块(数据来源) |
## 业务规则
1. **业务数据报表只读**:报修/巡检/保洁/评价统计仅查看不支持导出来源03-医院 §5
2. **合同/招标报表可导出**合同和招标统计支持导出Excel/PDF来源03-医院 §5
3. **数据来源**:业务数据来源于物业公司日常数据(只读),合同/招标数据来源于本系统来源03-医院 §5
4. **数据范围**仅查看为本医院服务的物业公司的数据来源01 §1.3
5. **时间维度**:支持天/周/月/年/自定义时间段来源02-医院 §5