统计报表
模块编码: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) |
交互流程要求
- 页面加载流程:进入页面 → 默认加载本月数据 → 调用报修统计API → 渲染统计卡片 + 图表
- 查询/筛选交互流程:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表;支持按物业公司筛选
- 表单填写与提交流程:不适用(只读页面,不支持导出)
- 弹窗/抽屉交互流程:不适用
- 行内操作流程:图表支持交互(饼图hover显示各状态数量,柱状图hover显示各班组工单量,折线图hover显示趋势数据)
- 异常与错误处理:API请求失败显示el-message错误提示;无数据时图表显示"暂无数据"
- 联动/级联交互:时间范围/物业公司筛选后所有统计卡片和图表同步刷新
- 权限控制交互表现:仅查看权限,无导出按钮;无查看权限时隐藏整个页面内容
前端硬性约束
以下为本页面必须遵守的前端交互与体验硬性约束(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="请选择物业公司",clearable,filterable |
| 统计卡片区 |
el-row + el-col |
:gutter=20,v-for遍历6个指标,每个el-card shadow="hover" |
| 各状态分布图 |
echarts |
饼图,:data=各状态数量,tooltip,legend,color预设配色 |
| 各班组工单量图 |
echarts |
柱状图,:xAxis=班组,:yAxis=工单数,tooltip |
| 完成率/紧急占比 |
echarts |
仪表盘图/环形图,tooltip |
| 平均处理时长 |
echarts |
折线图(时间趋势),:xAxis=时间,:yAxis=小时 |
校验规则
| 字段 |
规则 |
错误提示 |
| 自定义日期范围 |
结束日期≥开始日期 |
结束日期不能早于开始日期 |
响应式布局
| 断点 |
布局调整 |
| ≥1280px(桌面端) |
统计卡片3×2网格,图表区2列布局(饼图+柱状图并排),下方折线图全宽 |
| 1024-1279px(Pad横屏) |
统计卡片3×2网格,图表区上下排列,ECharts图表宽度100% |
| 768-1023px(Pad竖屏) |
统计卡片2×3网格,所有图表纵向堆叠,ECharts图表宽度100%,高度250px,支持手势缩放 |
页面2:巡检统计页(只读)
页面编号:HO-ST-02-P01
端侧归属:Web专属
页面路径:/statistics/inspection
统计指标
| 指标 |
说明 |
| 总巡检任务数 |
— |
| 完成率 |
— |
| 异常率 |
— |
| 蓝牙打卡率 |
— |
| 补录率 |
— |
交互流程要求
- 页面加载流程:进入页面 → 默认加载本月数据 → 调用巡检统计API → 渲染统计卡片 + 图表
- 查询/筛选交互流程:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表
- 表单填写与提交流程:不适用(只读页面,不支持导出)
- 弹窗/抽屉交互流程:不适用
- 行内操作流程:图表支持交互(饼图hover显示完成/异常分布,柱状图hover显示各区域巡检量)
- 异常与错误处理:API请求失败显示el-message错误提示;无数据时图表显示"暂无数据"
- 联动/级联交互:时间范围筛选后所有统计卡片和图表同步刷新
- 权限控制交互表现:仅查看权限,无导出按钮
组件规范
| 元素 |
组件 |
配置参数 |
| 时间选择 |
el-radio-group |
本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 |
el-date-picker |
type="daterange",v-if="自定义" |
| 统计卡片区 |
el-row + el-col |
:gutter=20,v-for遍历5个指标 |
| 完成率/异常率图 |
echarts |
饼图/环形图,:data=完成/异常分布 |
| 蓝牙打卡率/补录率图 |
echarts |
柱状图,:xAxis=时间段,:yAxis=百分比 |
| 巡检趋势图 |
echarts |
折线图,:xAxis=时间,:yAxis=任务数 |
校验规则
| 字段 |
规则 |
错误提示 |
| 自定义日期范围 |
结束日期≥开始日期 |
结束日期不能早于开始日期 |
响应式布局
| 断点 |
布局调整 |
| ≥1280px(桌面端) |
统计卡片横排5列,图表区2列布局 |
| 1024-1279px(Pad横屏) |
统计卡片3+2排列,图表区上下排列 |
| 768-1023px(Pad竖屏) |
统计卡片2×3网格,所有图表纵向堆叠,ECharts图表宽度100%,高度250px,支持手势缩放 |
页面3:保洁统计页(只读)
页面编号:HO-ST-03-P01
端侧归属:Web专属
页面路径:/statistics/cleaning
统计指标
| 指标 |
说明 |
| 总保洁任务数 |
— |
| 完成率 |
— |
| 超时率 |
— |
| 抽查合格率 |
— |
交互流程要求
- 页面加载流程:进入页面 → 默认加载本月数据 → 调用保洁统计API → 渲染统计卡片 + 图表
- 查询/筛选交互流程:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表
- 表单填写与提交流程:不适用(只读页面,不支持导出)
- 弹窗/抽屉交互流程:不适用
- 行内操作流程:图表支持交互(柱状图hover显示各区域保洁完成量,折线图hover显示超时率趋势)
- 异常与错误处理:API请求失败显示el-message错误提示;无数据时图表显示"暂无数据"
- 联动/级联交互:时间范围筛选后所有统计卡片和图表同步刷新
- 权限控制交互表现:仅查看权限,无导出按钮
组件规范
| 元素 |
组件 |
配置参数 |
| 时间选择 |
el-radio-group |
本月/本季度/本年/自定义,@change刷新数据 |
| 自定义日期 |
el-date-picker |
type="daterange",v-if="自定义" |
| 统计卡片区 |
el-row + el-col |
:gutter=20,v-for遍历4个指标 |
| 完成率/超时率图 |
echarts |
饼图/环形图,:data=完成/超时分布 |
| 抽查合格率图 |
echarts |
仪表盘图,:min=0,:max=100 |
| 各区域保洁量图 |
echarts |
柱状图,:xAxis=区域,:yAxis=任务数 |
校验规则
| 字段 |
规则 |
错误提示 |
| 自定义日期范围 |
结束日期≥开始日期 |
结束日期不能早于开始日期 |
响应式布局
| 断点 |
布局调整 |
| ≥1280px(桌面端) |
统计卡片横排4列,图表区2列布局 |
| 1024-1279px(Pad横屏) |
统计卡片2×2排列,图表区上下排列 |
| 768-1023px(Pad竖屏) |
统计卡片2×2网格,所有图表纵向堆叠,ECharts图表宽度100%,高度250px,支持手势缩放 |
页面4:评价统计页(只读)
页面编号:HO-ST-04-P01
端侧归属:Web专属
页面路径:/statistics/evaluation
统计指标
| 指标 |
说明 |
| 总评价数 |
本医院发起的评价 |
| 平均评分 |
— |
| 各物业公司评分对比 |
— |
| 低评分占比 |
— |
| 物业回复率 |
— |
交互流程要求
- 页面加载流程:进入页面 → 默认加载本月数据 → 调用评价统计API → 渲染统计卡片 + 图表
- 查询/筛选交互流程:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表;支持按物业公司筛选
- 表单填写与提交流程:不适用(只读页面,不支持导出)
- 弹窗/抽屉交互流程:不适用
- 行内操作流程:图表支持交互(柱状图hover显示各物业公司评分,饼图hover显示星级分布,折线图hover显示评分趋势)
- 异常与错误处理:API请求失败显示el-message错误提示;无数据时图表显示"暂无数据"
- 联动/级联交互:时间范围/物业公司筛选后所有统计卡片和图表同步刷新
- 权限控制交互表现:仅查看权限,无导出按钮
前端硬性约束
以下为本页面必须遵守的前端交互与体验硬性约束(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="请选择物业公司",clearable,filterable |
| 统计卡片区 |
el-row + el-col |
:gutter=20,v-for遍历5个指标 |
| 各物业公司评分对比图 |
echarts |
柱状图,:xAxis=物业公司,:yAxis=评分,color预设配色 |
| 星级分布图 |
echarts |
饼图,:data=各星级占比,tooltip,legend |
| 评分趋势图 |
echarts |
折线图,:xAxis=时间,:yAxis=平均分,dataZoom |
| 低评分占比图 |
echarts |
环形图,:data=低评分/正常占比 |
校验规则
| 字段 |
规则 |
错误提示 |
| 自定义日期范围 |
结束日期≥开始日期 |
结束日期不能早于开始日期 |
响应式布局
| 断点 |
布局调整 |
| ≥1280px(桌面端) |
统计卡片横排5列,柱状图与饼图左右并排,折线图全宽 |
| 1024-1279px(Pad横屏) |
统计卡片3+2排列,所有图表上下排列 |
| 768-1023px(Pad竖屏) |
统计卡片2×3网格,所有图表纵向堆叠,ECharts图表宽度100%,高度250px,支持手势缩放 |
页面5:合同统计页(可导出)
页面编号:HO-ST-05-P01
端侧归属:Web专属
页面路径:/statistics/contract
统计指标
| 指标 |
说明 |
数据来源 |
| 合同总数 |
— |
本系统合同数据 |
| 合同总金额 |
— |
本系统合同数据 |
| 履约率 |
已完成付款/合同金额 |
本系统合同数据 |
| 各物业合同分布 |
按物业公司统计 |
本系统合同数据 |
| 付款完成率 |
已付款节点/总节点 |
本系统合同数据 |
| 即将到期合同 |
30天内到期的合同 |
本系统合同数据 |
操作权限
| 操作 |
权限 |
说明 |
| 查看 |
statistics:contract:view |
— |
| 导出 |
statistics:contract:export |
合同统计可导出(来源:03-医院 §5) |
交互流程要求
- 页面加载流程:进入页面 → 默认加载本月数据 → 调用合同统计API → 渲染统计卡片 + 图表
- 查询/筛选交互流程:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表;支持按物业公司筛选
- 表单填写与提交流程:不适用(只读查看,但支持导出)
- 弹窗/抽屉交互流程:点击"导出" → 选择导出格式(Excel/PDF)→ 调用导出API → 下载文件
- 行内操作流程:图表支持交互;点击"导出"按钮下载报表
- 异常与错误处理:API请求失败显示el-message错误提示;导出失败提示"导出失败,请重试";无数据时图表显示"暂无数据"
- 联动/级联交互:时间范围/物业公司筛选后所有统计卡片和图表同步刷新
- 权限控制交互表现:有导出权限显示"导出"按钮;无导出权限隐藏
前端硬性约束
以下为本页面必须遵守的前端交互与体验硬性约束(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="请选择物业公司",clearable,filterable |
| 统计卡片区 |
el-row + el-col |
:gutter=20,v-for遍历6个指标 |
| 各物业合同分布图 |
echarts |
柱状图,:xAxis=物业公司,:yAxis=合同数/金额,tooltip |
| 合同金额趋势图 |
echarts |
折线图,:xAxis=时间,:yAxis=金额,dataZoom |
| 付款完成率图 |
echarts |
环形图/仪表盘图 |
| 到期预警列表 |
el-table |
stripe,border,:data=即将到期合同 |
| 导出按钮 |
el-button |
type="success",icon="Download",@click导出 |
| 导出格式选择 |
el-dropdown |
触发导出,:options="[{label: 'Excel'}, {label: 'PDF'}]" |
校验规则
| 字段 |
规则 |
错误提示 |
| 自定义日期范围 |
结束日期≥开始日期 |
结束日期不能早于开始日期 |
响应式布局
| 断点 |
布局调整 |
| ≥1280px(桌面端) |
统计卡片3×2网格,柱状图与折线图左右并排,到期预警列表全宽 |
| 1024-1279px(Pad横屏) |
统计卡片3×2网格,图表上下排列,到期预警列表全宽 |
| 768-1023px(Pad竖屏) |
统计卡片2×3网格,所有图表纵向堆叠,到期预警列表隐藏次要列,ECharts图表宽度100%,高度250px,支持手势缩放 |
页面6:招标统计页(可导出)
页面编号:HO-ST-06-P01
端侧归属:Web专属
页面路径:/statistics/bidding
统计指标
| 指标 |
说明 |
| 招标项目数 |
— |
| 中标率 |
— |
| 平均招标周期 |
从发布到定标的天数 |
| 成本对比 |
预算 vs 中标金额 |
| 各标段中标情况 |
— |
操作权限
| 操作 |
权限 |
说明 |
| 查看 |
statistics:bidding:view |
— |
| 导出 |
statistics:bidding:export |
招标统计可导出 |
交互流程要求
- 页面加载流程:进入页面 → 默认加载本月数据 → 调用招标统计API → 渲染统计卡片 + 图表
- 查询/筛选交互流程:选择时间范围(本月/本季度/本年/自定义)→ 刷新统计数据和图表
- 表单填写与提交流程:不适用(只读查看,但支持导出)
- 弹窗/抽屉交互流程:点击"导出" → 选择导出格式(Excel/PDF)→ 调用导出API → 下载文件
- 行内操作流程:图表支持交互;成本对比图hover显示预算vs中标金额详情
- 异常与错误处理:API请求失败显示el-message错误提示;导出失败提示"导出失败,请重试";无数据时图表显示"暂无数据"
- 联动/级联交互:时间范围筛选后所有统计卡片和图表同步刷新
- 权限控制交互表现:有导出权限显示"导出"按钮;无导出权限隐藏
前端硬性约束
以下为本页面必须遵守的前端交互与体验硬性约束(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=20,v-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-1279px(Pad横屏) |
统计卡片3+2排列,所有图表上下排列 |
| 768-1023px(Pad竖屏) |
统计卡片2×3网格,所有图表纵向堆叠,ECharts图表宽度100%,高度250px,支持手势缩放 |
页面7:综合看板页
页面编号:HO-ST-07-P01
端侧归属:Web专属
页面路径:/statistics/dashboard
界面布局
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 统计报表 > 综合看板 │
├──────────────────────────────────────────────────────────────────┤
│ [时间选择] 今天 / 本周 / 本月 / 自定义 │
├──────────────────────────────────────────────────────────────────┤
│ ┌───────────────── 服务数据(只读) ──────────────────┐ │
│ │ 报修完成率 巡检完成率 保洁完成率 评价均分 │ │
│ │ 69% 92% 85% 4.2 │ │
│ └────────────────────────────────────────────────────┘ │
│ ┌───────────────── 合同/招标数据 ──────────────────┐ │
│ │ 活跃合同 付款完成率 招标项目 即将到期合同 │ │
│ │ 12 78% 3 2 │ │
│ └────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
数据来源
- 服务数据:物业公司业务数据(只读)
- 合同/招标数据:本系统数据
交互流程要求
- 页面加载流程:进入页面 → 默认加载"今天"数据 → 并行调用各模块统计API → 渲染统计卡片
- 查询/筛选交互流程:选择时间范围(今天/本周/本月/自定义)→ 刷新所有看板数据
- 表单填写与提交流程:不适用(只读看板)
- 弹窗/抽屉交互流程:不适用
- 行内操作流程:点击各统计卡片可跳转对应统计详情页(如点击"报修完成率"跳转报修统计页)
- 异常与错误处理:部分模块API失败时仅该模块显示"数据加载失败",其他模块正常展示;全部失败显示"看板数据加载失败"
- 联动/级联交互:时间范围切换后所有模块数据同步刷新
- 权限控制交互表现:无查看权限的模块对应卡片灰显或隐藏
前端硬性约束
以下为本页面必须遵守的前端交互与体验硬性约束(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=20,4个指标(报修完成率/巡检完成率/保洁完成率/评价均分),@click跳转详情 |
| 合同/招标数据卡片组 |
el-card |
shadow="hover",:gutter=20,4个指标(活跃合同/付款完成率/招标项目/即将到期合同),@click跳转详情 |
| 数值展示 |
el-statistic |
:precision=1(均分)/ 0(其他),prefix/suffix图标 |
| 加载状态 |
el-skeleton |
:loading=数据加载中,animated |
校验规则
| 字段 |
规则 |
错误提示 |
| 自定义日期范围 |
结束日期≥开始日期 |
结束日期不能早于开始日期 |
响应式布局
| 断点 |
布局调整 |
| ≥1280px(桌面端) |
两组卡片各横排4列,整体2行布局 |
| 1024-1279px(Pad横屏) |
两组卡片各2×2网格,整体2行布局 |
| 768-1023px(Pad竖屏) |
所有卡片纵向堆叠(8行1列),支持手势下拉刷新,卡片宽度100%,高度自适应 |
页面8:自定义报表页
页面编号:HO-ST-08-P01
端侧归属:Web专属
页面路径:/statistics/custom
配置选项
| 配置项 |
说明 |
| 数据源 |
报修/巡检/保洁/评价(只读) + 合同/招标(可导出) |
| 维度 |
时间/物业公司/区域/类型 |
| 指标 |
数量/完成率/金额/评分... |
| 时间范围 |
自定义 |
操作权限
| 操作 |
权限 |
说明 |
| 生成报表 |
statistics:custom:view |
— |
| 导出 |
statistics:custom:export |
合同/招标相关数据可导出,业务数据仅查看 |
交互流程要求
- 页面加载流程:进入页面 → 渲染报表配置表单(数据源/维度/指标/时间范围选择)
- 查询/筛选交互流程:选择数据源 → 联动加载可选维度和指标 → 选择维度和指标 → 选择时间范围
- 表单填写与提交流程:配置报表参数 → 点击"生成报表" → 调用自定义报表API → 渲染图表/表格 → (合同/招标数据)点击"导出"下载报表
- 弹窗/抽屉交互流程:不适用
- 行内操作流程:报表结果支持图表交互(hover查看数据点);表格数据支持排序
- 异常与错误处理:未选择数据源时"生成报表"按钮禁用;生成失败显示el-message错误提示;业务数据导出时提示"业务数据仅查看,不支持导出"
- 联动/级联交互:数据源选择→联动可选维度和指标;选择"报修/巡检/保洁/评价"数据源时隐藏导出按钮;选择"合同/招标"数据源时显示导出按钮
- 权限控制交互表现:有导出权限且选择合同/招标数据源时显示"导出"按钮;业务数据源始终不显示导出
前端硬性约束
以下为本页面必须遵守的前端交互与体验硬性约束(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=报表数据,stripe,border,sortable |
| 空状态 |
el-empty |
description="请选择数据源和指标后生成报表" |
校验规则
| 字段 |
规则 |
错误提示 |
| 数据源 |
required |
请选择数据源 |
| 维度 |
required,至少选1项 |
请至少选择一个维度 |
| 指标 |
required,至少选1项 |
请至少选择一个指标 |
| 时间范围 |
required |
请选择时间范围 |
响应式布局
| 断点 |
布局调整 |
| ≥1280px(桌面端) |
配置区左侧,报表结果区右侧,宽度比3:7 |
| 1024-1279px(Pad横屏) |
配置区上方,报表结果区下方,全宽展示 |
| 768-1023px(Pad竖屏) |
配置区上方折叠为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 |
— |
全部模块(数据来源) |
业务规则
- 业务数据报表只读:报修/巡检/保洁/评价统计仅查看,不支持导出(来源:03-医院 §5)
- 合同/招标报表可导出:合同和招标统计支持导出Excel/PDF(来源:03-医院 §5)
- 数据来源:业务数据来源于物业公司日常数据(只读),合同/招标数据来源于本系统(来源:03-医院 §5)
- 数据范围:仅查看为本医院服务的物业公司的数据(来源:01 §1.3)
- 时间维度:支持天/周/月/年/自定义时间段(来源:02-医院 §5)