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.

25 KiB

服务评价

模块编码evaluation 端侧Web + 小程序(双端) 关联文档01-模块划分 §3.6 / 02-功能清单-物业公司 §6 / 03-业务流转逻辑-物业公司 §6 / 05-接口规范 §9.2 强制规范遵循 07-前端界面开发规范.md

功能概览

项目 说明
菜单名称 服务评价
子菜单 评价汇总看板、评价列表、评价回复、绩效报表、评价配置
功能编号 PR-E-01 ~ PR-E-05
权限编码前缀 evaluation:list:* / evaluation:summary:* / evaluation:config:*

页面1评价汇总看板页

页面编号PR-E-01-P01 端侧归属Web专属 页面路径/evaluation/dashboard

界面布局

┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 服务评价 > 评价汇总看板                                    │
├──────────────────────────────────────────────────────────────────┤
│ [时间选择]  今日 / 本周 / 本月 / 自定义 [起始]~[结束]              │
├──────────────────────────────────────────────────────────────────┤
│ [统计卡片区]                                                       │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐             │
│ │ 平均评分  │ │ 评价总数  │ │ 待回复数  │ │ 低评分数  │             │
│ │   4.2    │ │   156    │ │    3     │ │    5     │             │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘             │
├──────────────────────────────────────────────────────────────────┤
│ [图表区]                                                          │
│ ┌────────────────────────┐ ┌────────────────────────┐           │
│ │ 各模块平均评分(柱状图)│ │ 评分趋势(折线图)       │           │
│ │ 报修:4.3 巡检:4.1      │ │ ← 按月展示趋势         │           │
│ │ 保洁:4.0 综合:4.2      │ │                        │           │
│ └────────────────────────┘ └────────────────────────┘           │
│ ┌────────────────────────┐                                       │
│ │ 星级分布(饼图)         │                                       │
│ │ 5星:45% 4星:30% 3星:15%│                                       │
│ │ 2星:7%  1星:3%         │                                       │
│ └────────────────────────┘                                       │
└──────────────────────────────────────────────────────────────────┘

操作按钮

按钮 权限编码 位置 显示条件 说明
导出 evaluation:summary:view 页面右上 始终 导出汇总数据

API端点

页面操作 API路径 方法 说明
汇总数据 /api/v1/evaluations/summary GET 含统计卡片+图表数据

交互流程要求

  1. 页面加载流程:进入页面 → 默认查询"本月"时间范围 → 调用汇总数据API GET /api/v1/evaluations/summary → 依次渲染统计卡片区(平均评分/评价总数/待回复数/低评分数)→ 图表区(柱状图+折线图+饼图),加载中显示骨架屏
  2. 查询/筛选交互流程:点击快捷时间按钮(今日/本周/本月/自定义)→ 立即切换并重新请求汇总数据;选择自定义日期范围 → 确认后触发查询
  3. 表单填写与提交流程:本页面无表单提交;点击[导出] → 导出汇总数据Excel
  4. 弹窗/抽屉交互流程:点击低评分数卡片 → 弹出低评分评价列表弹窗宽度700px点击待回复数卡片 → 跳转评价列表页(自动筛选未回复)
  5. 行内操作流程:点击图表数据点 → 弹出该数据点的详细评价列表
  6. 异常与错误处理:汇总数据加载失败时各区域显示"加载失败,点击重试";无评价数据时统计卡片显示"—",图表区显示空状态插图;导出失败提示"导出失败,请重试"
  7. 联动/级联交互:时间范围变更后统计卡片、图表区全区域联动刷新;各模块评分柱状图点击可下钻到该模块的评价列表
  8. 权限控制交互表现:无 evaluation:summary:view 权限时页面显示403提示导出按钮需对应权限
  9. H1 防重复请求(强制)快捷时间按钮切换时立即disabled并loading导出按钮点击后disabled+loading态直到下载完成或失败时间范围/筛选条件变更触发查询时abort前一次未完成请求
  10. H2 超时配置(强制)汇总数据GET请求设置30s超时统计档导出操作GET请求设置60s超时上传导出档任何请求耗时>3s时展示全局ElLoading
  11. H8 反馈规范(建议)数据加载完成后各区域正常渲染无需额外成功提示导出成功后ElMessage.success("导出成功")2秒自动消失加载失败区域显示"点击重试"按钮;网络异常提供重试

组件规范

元素 组件 配置参数
时间快捷按钮 el-radio-group + el-radio-button v-model="timeRange"
自定义日期范围 el-date-picker type="daterange", value-format="YYYY-MM-DD", range-separator="至"
统计卡片 el-card shadow="hover", body-style="{padding:'20px'}"
平均评分 自定义评分展示 大字号数字 + el-rate(disabled)
各模块平均评分图 echarts (柱状图) tooltip.trigger="axis", series.type="bar"
评分趋势图 echarts (折线图) smooth=true, tooltip.trigger="axis"
星级分布图 echarts (饼图) tooltip.trigger="item", radius=["40%","70%"]
导出按钮 el-button type="success", icon="Download"
低评卡片点击 el-link type="danger", @click="showLowScoreList"
待回复卡片点击 el-link type="warning", @click="goUnrepliedList"
低评分列表弹窗 el-dialog title="低评分评价列表", width="700px"

校验规则

字段 规则 错误提示
自定义日期范围-起始日期 必须早于或等于结束日期 "开始日期不能晚于结束日期"
自定义日期范围-跨度 时间跨度不超过1年 "查询时间范围不能超过1年"

响应式布局

断点 布局调整
≥1280px桌面端 统计卡片4列横排图表区2列布局柱状图+折线图下方饼图居中弹窗宽度700px
1024-1279pxPad横屏 统计卡片2列×2行排列图表区单列堆叠ECharts图表宽度100%高度最小350px弹窗宽度650px
768-1023pxPad竖屏 统计卡片2列×2行排列图表区单列堆叠ECharts图表宽度100%高度最小300px饼图改为环形图节省空间弹窗宽度95vw

页面2评价列表页

页面编号PR-E-02-P01 端侧归属Web专属 页面路径/evaluation/list

查询条件

字段名 控件类型 必填 默认值 说明
评价类型 下拉单选 全部 报修服务/巡检服务/保洁服务/综合评价
评分 下拉单选 全部 1分/2分/3分/4分/5分
回复状态 下拉单选 全部 已回复/未回复
日期范围 日期范围

列表字段

序号 字段名 列宽 支持排序 说明
1 评价类型 90px 标签样式
2 关联服务 150px 工单号/巡检任务/保洁任务
3 评分 80px 星级展示,低分红色标记
4 评价人 80px
5 评价内容 200px
6 评价时间 140px 默认倒序
7 回复状态 80px 已回复(绿)/未回复(红)
8 操作 100px 查看详情/回复

操作按钮

按钮 权限编码 位置 显示条件 说明
查看详情 evaluation:list:view 行操作 始终 弹窗
回复 evaluation:list:update 行操作 未回复或低分 弹窗填写回复

角色差异化视图

角色 可见按钮 数据范围 备注
物业管理员 查看、回复 本公司全部评价
主管 查看、回复 本班组相关评价

通知触发

触发操作 通知对象 通知方式 消息模板 文档来源
低评分评价(≤2分) 物业主管 小程序推送 低评分评价通知 01 §7.1 / 05 §5.2 (LOW_SCORE_EVALUATION)
回复完成 评价人(医院) 评价已回复 03-物业公司 §6

低评分评价处理规则

评分 含义 物业端触发动作 文档来源
5分 非常满意 03-物业公司 §6
4分 满意 03-物业公司 §6
3分 一般 主管关注 03-物业公司 §6
2分 不满意 自动通知主管,要求回复 03-物业公司 §6
1分 非常不满意 通知主管+管理员24h内必须回复 03-物业公司 §6

API端点

页面操作 API路径 方法 说明
列表查询 /api/v1/evaluations GET 分页查询
回复 /api/v1/evaluations/{id}/reply POST

交互流程要求

  1. 页面加载流程:进入页面 → 调用评价列表API GET /api/v1/evaluations → 渲染表格默认按评价时间倒序排列每页20条同时加载评价类型、评分等级等下拉选项
  2. 查询/筛选交互流程:选择评价类型/选择评分/选择回复状态/选择日期范围 → 点击[查询] → 重新加载数据 → 点击[重置]清空条件
  3. 表单填写与提交流程:点击[回复](未回复或低分评价时显示)→ 弹出回复弹窗 → 填写回复内容 → 前端校验通过 → 调用回复API → 成功后关闭弹窗并刷新该行回复状态
  4. 弹窗/抽屉交互流程:点击[查看详情] → 弹窗展示评价详情评分、评价内容、图片、回复记录宽度600px回复弹窗宽度500px展示评价信息+回复输入框
  5. 行内操作流程:点击[查看详情] → 弹窗展示完整评价信息;点击[回复] → 弹窗填写回复内容 → 提交 → 刷新该行回复状态为"已回复"低分评价≤2分行红色背景高亮
  6. 异常与错误处理:重复回复提示"该评价已回复"API请求失败显示ElMessage.error列表无数据时显示ElEmpty"暂无评价数据"
  7. 联动/级联交互评分列使用星级展示低分≤2分红色标记回复状态标签已回复=绿色/未回复=红色;低评分评价自动通知主管
  8. 权限控制交互表现:无 evaluation:list:view 权限时[查看详情]按钮隐藏;无 evaluation:list:update 权限时[回复]按钮隐藏;主管仅看本班组相关评价
  9. H1 防重复请求(强制)"查询"按钮点击后disabled+loading态行内[查看详情][回复]按钮点击后整行禁用+半透明遮罩分页切换时abort前一次未完成请求
  10. H2 超时配置(强制)列表查询GET请求15s超时回复POST请求30s超时>3s展示全局ElLoading
  11. H3 操作确认(强制)"回复"操作为不可逆操作提交前弹出ElMessageBox.confirm二次确认type="info",提示"确定提交该回复?提交后将不可修改"
  12. H6 批量限制(建议)当前页面暂无批量操作若后续扩展批量回复功能单次批量回复上限100条记录
  13. H8 反馈规范(建议)回复成功ElMessage.success 2秒自动消失+silent刷新该行状态重复回复提示需手动关闭网络异常提供重试

组件规范

元素 组件 配置参数
评价类型筛选 el-select clearable, placeholder="全部类型"
评分筛选 el-select clearable, placeholder="全部评分"
回复状态筛选 el-select clearable, placeholder="全部状态"
日期范围 el-date-picker type="daterange", value-format="YYYY-MM-DD", range-separator="至"
列表 el-table stripe, border, :data="tableData", :row-class-name="lowScoreRowClass"
分页 el-pagination layout="total, sizes, prev, pager, next", :page-sizes="[10,20,50]"
评分展示 el-rate disabled, :colors="['#99A9BF','#F7BA2A','#FF9900']"
评价类型标签 el-tag 报修服务=primary / 巡检服务=success / 保洁服务=warning / 综合评价=info
回复状态标签 el-tag 已回复=success / 未回复=danger
低分标记 el-tag type="danger", size="small", v-if="score<=2"
查看详情按钮 el-button type="primary", link
回复按钮 el-button type="success", link, v-if="!row.replied || row.score<=2"
详情弹窗 el-dialog title="评价详情", width="600px"
评价详情展示 el-descriptions :column="2", border
评价图片 el-image :preview-src-list="photoList", fit="cover"
回复弹窗 el-dialog title="回复评价", width="500px", :close-on-click-modal="false"
回复内容 el-input type="textarea", :rows="4", maxlength=500, show-word-limit, placeholder="请输入回复内容"
提交回复按钮 el-button type="primary", :loading="replying"

校验规则

字段 规则 错误提示
回复内容 必填maxlength=500 "请输入回复内容"
日期范围 结束日期≥开始日期 "结束日期不能早于开始日期"

响应式布局

断点 布局调整
≥1280px桌面端 查询条件区水平排列表格完整展示全部8列弹窗宽度500px/600px
1024-1279pxPad横屏 查询条件区换行排列,表格隐藏"评价内容"列弹窗宽度460px/560px
768-1023pxPad竖屏 查询条件区垂直堆叠表格仅显示评价类型、评分、评价人、回复状态、操作列弹窗宽度95vw

页面3绩效报表页

页面编号PR-E-04-P01 端侧归属Web专属 页面路径/evaluation/performance

查询条件

字段名 控件类型 必填 默认值 说明
时间维度 下拉单选 本月 天/周/月/年/自定义
班组 下拉单选 全部

列表字段

序号 字段名 列宽 支持排序 说明
1 班组 120px
2 人员 80px
3 评价数 80px
4 平均评分 80px
5 5星占比 80px
6 低分(≤2)数 80px 红色标记
7 回复率 80px

操作按钮

按钮 权限编码 位置 显示条件 说明
导出Excel evaluation:summary:view 操作栏 始终

API端点

页面操作 API路径 方法 说明
绩效数据 /api/v1/evaluations/performance GET
导出 /api/v1/evaluations/performance/export GET

交互流程要求

  1. 页面加载流程:进入页面 → 默认时间维度为"本月" → 调用绩效数据API GET /api/v1/evaluations/performance → 渲染绩效表格,加载中显示骨架屏
  2. 查询/筛选交互流程:选择时间维度(天/周/月/年/自定义)→ 重新请求;选择班组 → 过滤该班组绩效数据;维度变更后自动刷新
  3. 表单填写与提交流程:本页无表单提交;点击[导出Excel] → 弹出确认弹窗 → 确认后触发下载
  4. 弹窗/抽屉交互流程导出确认弹窗宽度400px点击遮罩层可关闭
  5. 行内操作流程:点击人员行 → 展开该人员的评价详情(评价数、平均分、低分数等);低分数列红色标记
  6. 异常与错误处理数据加载失败显示ElMessage.error"数据加载失败,请稍后重试"无数据时表格显示ElEmpty导出失败提示"导出失败,请重试"
  7. 联动/级联交互:时间维度变更后表格和导出按钮联动刷新;班组筛选联动数据过滤
  8. 权限控制交互表现:无 evaluation:summary:view 权限时导出按钮隐藏;主管仅看本班组数据
  9. H1 防重复请求(强制):时间维度/班组筛选变更时立即disabled+loading导出按钮点击后disabled+loading态直到下载完成翻页/排序时abort前一次未完成请求
  10. H2 超时配置(强制)绩效数据GET请求30s超时统计档导出GET请求60s超时上传导出档>3s展示全局ElLoading
  11. H6 批量限制(建议)导出操作单次最多导出500条记录超出时提示"导出数据量过大(>500条请缩小筛选范围后再试"
  12. H8 反馈规范(建议)数据加载完成正常渲染无额外提示导出成功ElMessage.success 2秒自动消失导出失败手动关闭错误提示网络异常提供重试

组件规范

元素 组件 配置参数
时间维度 el-select v-model="query.dimension", placeholder="请选择时间维度"
自定义日期 el-date-picker type="daterange", v-if="query.dimension==='custom'"
班组筛选 el-select clearable, filterable, placeholder="全部班组"
列表 el-table stripe, border, :data="performanceData"
导出按钮 el-button type="success", icon="Download", :loading="exportLoading"
低分标记 el-tag type="danger", v-if="row.lowScoreCount>0"
5星占比 el-progress :percentage="row.fiveStarRate", :stroke-width="10"
导出确认弹窗 el-dialog title="确认导出", width="400px"

校验规则

字段 规则 错误提示
时间维度 必选 "请选择时间维度"
自定义日期范围 维度=自定义时必填,结束日期≥开始日期 "请选择日期范围" / "结束日期不能早于开始日期"

响应式布局

断点 布局调整
≥1280px桌面端 查询条件区水平排列表格完整展示全部7列
1024-1279pxPad横屏 查询条件区换行排列,表格隐藏"5星占比"列
768-1023pxPad竖屏 查询条件区垂直堆叠,表格仅显示班组、人员、评价数、平均评分、低分数列,启用横向滚动

页面4评价配置页

页面编号PR-E-05-P01 端侧归属Web专属 页面路径/evaluation/config

表单字段

字段名 控件类型 必填 默认值 数据来源 校验规则
工单完成后自动触发评价 开关
巡检完成后自动触发评价 开关
保洁完成后自动触发评价 开关
低评分阈值 数字输入 2 ≤此分数触发通知
低评分必须回复时限(小时) 数字输入 24 仅1分评价

操作按钮

按钮 权限编码 位置 显示条件 说明
保存 evaluation:config:update 底部 始终

API端点

页面操作 API路径 方法 说明
查询配置 /api/v1/evaluation-configs GET
保存 /api/v1/evaluation-configs PUT

交互流程要求

  1. 页面加载流程:进入页面 → 调用查询配置API GET /api/v1/evaluation-configs → 回填配置表单数据
  2. 查询/筛选交互流程:本页无筛选功能,直接展示配置表单
  3. 表单填写与提交流程:修改开关/阈值 → 点击[保存] → 前端校验通过 → 调用保存API PUT /api/v1/evaluation-configs → 成功后显示ElMessage.success"配置保存成功"
  4. 弹窗/抽屉交互流程:本页无弹窗交互
  5. 行内操作流程:无行内操作,表单为页面级
  6. 异常与错误处理低评分阈值必须1-5之间否则提示"低评分阈值必须在1-5之间";回复时限必须>0否则提示"回复时限必须大于0"保存失败显示ElMessage.error
  7. 联动/级联交互:开启"工单完成后自动触发评价"后,工单验收通过时系统自动发送评价邀请;低评分阈值变更后影响通知触发规则
  8. 权限控制交互表现:无 evaluation:config:update 权限时[保存]按钮隐藏,表单字段全部禁用(只读模式)
  9. H1 防重复请求(强制)"保存"按钮点击后立即disabled+loading态防重复提交
  10. H2 超时配置(强制)查询配置GET请求15s超时保存PUT请求30s超时>3s展示全局ElLoading
  11. H3 操作确认(强制)保存配置为影响全局的操作低评分阈值变更将影响通知触发规则、时限变更将影响24h强回复规则提交前弹出ElMessageBox.confirm二次确认type="warning",提示"确定保存配置?变更将立即生效并影响相关业务规则"
  12. H4 脏数据检测(强制)进入页面加载配置数据时进行deepClone快照作为原始值监听表单变更计算isDirty状态当用户尝试路由离开且isDirty为true时通过beforeRouteLeave守卫弹出确认框提示"配置尚未保存,确定要离开吗?"
  13. H8 反馈规范(建议)保存成功ElMessage.success("配置保存成功")2秒自动消失校验失败/保存失败提示需手动关闭;网络异常提供重试按钮

组件规范

元素 组件 配置参数
配置表单 el-form :model="configForm", label-width="240px", label-position="right"
工单完成后自动触发评价 el-switch v-model="configForm.orderTrigger"
巡检完成后自动触发评价 el-switch v-model="configForm.inspectionTrigger"
保洁完成后自动触发评价 el-switch v-model="configForm.cleaningTrigger"
低评分阈值 el-input-number v-model="configForm.lowScoreThreshold", :min=1, :max=5, :step=1
低评分必须回复时限 el-input-number v-model="configForm.replyDeadline", :min=1, :max=168, :step=1, suffix="小时"
保存按钮 el-button type="primary", :loading="saving"

校验规则

字段 规则 错误提示
低评分阈值 必填1-5整数 "低评分阈值必须在1-5之间"
低评分必须回复时限 必填,>0单位小时 "回复时限必须大于0"

响应式布局

断点 布局调整
≥1280px桌面端 表单label-width=240px表单区域最大宽度800px居中展示
1024-1279pxPad横屏 表单label-width=200px表单区域最大宽度700px
768-1023pxPad竖屏 表单label-position改为top表单区域宽度95%保存按钮full-width

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
PR-E-01 评价汇总看板 02-物业公司 §6 / 03-物业公司 §6 统计报表→评价统计
PR-E-02 评价列表 02-物业公司 §6 / 03-物业公司 §6 低分→通知主管 通知机制
PR-E-03 评价回复 02-物业公司 §6 / 03-物业公司 §6 回复→通知评价人 医院端评价查看(HO-EV-03)
PR-E-04 绩效报表 02-物业公司 §6 统计报表→评价统计
PR-E-05 评价配置 02-物业公司 §6 配置→自动触发评价规则 在线报修(ORDER_COMPLETED事件)

业务规则

  1. 评价发起方医院账号发起评价物业公司查看和回复来源01 §6.1 / 03-物业公司 §6
  2. 评价触发工单完成后自动触发评价ORDER_COMPLETED事件可配置其他模块是否触发来源05 §5.2 / 03-物业公司 §6
  3. 低评分处理2分自动通知主管要求回复1分通知主管+管理员且24h内必须回复来源03-物业公司 §6
  4. 评分等级五分制1=非常不满意5=非常满意来源03-物业公司 §6
  5. 数据权限主管仅看本班组相关评价来源01 §1.3