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.

29 KiB

保洁相关功能

模块编码cleaning 端侧:微信小程序 关联文档01-模块划分.mdv4.0、02-功能清单-小程序端.md§4、03-业务流转逻辑-小程序端.md§4、05-接口规范.md§9、06-项目技术要求.md 强制规范遵循 07-前端界面开发规范.md

功能概览

项目 说明
菜单名称 保洁管理
子菜单 今日保洁任务 / 保洁执行 / 保洁历史
功能编号 MP-CL-01 ~ MP-CL-07
权限编码 cleaning:task:、cleaning:spot-check:、cleaning:supplement:*

页面清单

页面1今日保洁任务

  • 页面路径/pages/cleaning/today
  • 适用角色:保洁人员
  • 页面元素
    • 日期显示(当天日期)
    • 任务统计卡片(待执行/进行中/已完成)
    • 任务列表
  • 查询条件:无(自动按当天+本人过滤)
  • 列表字段
字段 类型 说明
任务名称 文本 保洁区域+任务类型
保洁区域 标签 关联区域名称
计划时间 时间 预计开始时间
状态 标签 待执行/进行中/已完成/超时
蓝牙状态 图标 是否需蓝牙打卡
  • 界面布局
    • 顶部:日期 + 统计数字横向排列
    • 中部:任务卡片列表,每张卡片显示区域、时间、状态
    • 底部:无操作栏
  • 操作按钮
    • 「开始执行」→ 进入保洁执行页权限cleaning:task:update
    • 「查看详情」→ 查看任务详情

交互流程要求

  1. 页面加载流程:页面加载时获取当日保洁任务列表→显示骨架屏→渲染统计卡片和任务列表
  2. 查询/筛选交互流程:无手动筛选,自动按当天+本人过滤;支持下拉刷新
  3. 表单填写与提交流程:无表单提交操作
  4. 弹窗/弹层交互流程:无弹窗
  5. 行内操作流程:点击「开始执行」→校验蓝牙打卡状态→跳转保洁执行页;点击「查看详情」→查看任务详情
  6. 异常与错误处理:任务加载失败显示重试;无任务显示空状态插图和文案
  7. 联动/级联交互:统计卡片数字与列表数据联动更新
  8. 权限控制交互表现无cleaning:task:update权限时隐藏「开始执行」按钮
  9. H1 防重复提交:「开始执行」「查看详情」按钮点击时须设置 :loading + :disabled 双重锁定;下拉刷新期间禁止重复触发;使用 pending Promise 去重
  10. H2 超时控制:获取保洁任务列表 GET 请求超时 15s页面加载 >3s 时须调用 wx.showLoading({title:'加载中...', mask:true});请求超时时提示"网络请求超时,请下拉刷新重试"
  11. H3 操作确认:点击「开始执行」前若存在进行中任务,须通过 wx.showModal 二次确认,内容含后果说明
  12. H8 反馈规范:任务加载成功使用静默渲染;加载失败使用 wx.showToast({icon:'none', title:'加载失败,请重试'});网络异常通过 wx.getNetworkType 判断后提供重试入口

组件规范

元素 组件 配置参数
统计卡片 uni-card mode="center",三列等宽布局
任务列表 uni-list + uni-list-item clickable=trueshowArrow=true
状态标签 uni-tag type: success(已完成)/warning(进行中)/error(超时)/default(待执行)
蓝牙状态图标 uni-icons type="bluetooth"size="22"
下拉刷新 uni-refresher @onRefresh回调threshold=45px
空状态 uni-section 插槽自定义空状态插图与文案

校验规则

字段 规则 错误提示
任务列表 加载失败时允许重试 "加载失败,请下拉刷新重试"
统计数据 数据为空时显示0

响应式布局

  • 适配机型iPhone SE375px~ iPad mini768px卡片宽度自适应padding 16px
  • 横竖屏适配策略:竖屏单列卡片;横屏统计卡片横向平铺,任务列表双列卡片
  • 手势交互规范任务项可点击区域≥44px下拉刷新触发区域≥50px
  • 安全区域:底部适配底部安全区

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
MP-CL-01 今日保洁任务 02-小程序端 §4 蓝牙打卡确认 保洁执行

页面2蓝牙强制打卡确认

  • 页面路径/pages/cleaning/check-in(从今日任务页面跳转)
  • 适用角色:保洁人员
  • 页面元素
    • 蓝牙扫描状态指示器(扫描中/已连接/未检测到)
    • 当前打卡点名称
    • 蓝牙信号强度显示
    • 重试按钮
    • 补录入口(蓝牙未连接时显示)
  • 查询条件:无
  • 列表字段:无
  • 界面布局
    • 顶部:打卡点名称 + 蓝牙状态大图标
    • 中部:蓝牙连接动画(扫描→连接→成功)
    • 底部:操作按钮区
  • 操作按钮
    • 「重新扫描」→ 重新搜索蓝牙Beacon
    • 「进入补录模式」→ 跳转补录申请页(蓝牙策略=REQUIRED且扫描失败时显示
    • 「确认打卡」→ 记录蓝牙打卡成功check_type=BLUETOOTH

蓝牙策略判断逻辑

  • 调用 GET /system/bluetooth-policy → cleaning_check_in
  • 策略=REQUIRED必须蓝牙连接后才能打卡
  • 策略=OPTIONAL可选蓝牙或手动打卡

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
MP-CL-02 蓝牙强制打卡确认 02-小程序端 §4 保洁执行 保洁补录、系统蓝牙配置

交互流程要求

  1. 页面加载流程:页面加载时查询蓝牙策略→策略=REQUIRED自动启动蓝牙扫描→显示扫描动画策略=OPTIONAL显示打卡方式选择
  2. 查询/筛选交互流程:无筛选操作
  3. 表单填写与提交流程自动扫描蓝牙Beacon→检测到→连接→打卡成功check_type=BLUETOOTH扫描失败→重试/进入补录模式
  4. 弹窗/弹层交互流程:打卡成功弹出成功提示;扫描超时弹出重试提示
  5. 行内操作流程:点击重新扫描→重新搜索蓝牙;点击进入补录模式→跳转补录申请页;点击确认打卡→记录蓝牙打卡
  6. 异常与错误处理:蓝牙未开启提示"请开启手机蓝牙"扫描超时3次显示补录入口连接失败提示重试
  7. 联动/级联交互:蓝牙策略与扫描行为联动
  8. 权限控制交互表现:所有保洁人员可访问
  9. H1 防重复提交:「重新扫描」「确认打卡」「进入补录模式」按钮点击时均须设置 :loading + :disabled 双重锁定;扫描期间使用 pending 标志位防止重复发起蓝牙扫描
  10. H2 超时控制:蓝牙策略查询 GET 请求超时 15s蓝牙扫描超时 3s>3s 时须显示 wx.showLoading({title:'正在扫描...', mask:true});超时或连接失败均提示并提供重试/补录选项
  11. H3 操作确认:点击「进入补录模式」前须通过 wx.showModal 确认,内容说明"进入补录后将记录为手动打卡,是否继续?";点击「确认打卡」前提示"确认在此位置打卡?"
  12. H4 脏数据检测:本页面以自动操作为主,若用户手动修改过任何信息则标记 isDirtyonUnload 中检测到 isDirty 且未完成打卡时弹出 wx.showModal({content:"未完成的打卡将丢失,确定离开?"})
  13. H7 上传约束:本页面无上传功能,此项不适用
  14. H8 反馈规范:打卡成功使用 wx.showToast({icon:'success', title:'打卡成功'});扫描失败使用 wx.showToast({icon:'none', title:'未检测到蓝牙信号'});网络异常提供重试入口

组件规范

元素 组件 配置参数
扫描动画 view + CSS动画 旋转动画size=80px
蓝牙状态图标 uni-icons type="bluetooth"size=40
打卡点名称 text font-size="18px"font-weight="bold"
信号强度 text font-size="14px"动态显示RSSI
重新扫描 button type="default":loading="scanning"
进入补录模式 button type="warn"
确认打卡 button type="primary"
打卡结果 uni-popup type="dialog"

校验规则

字段 规则 错误提示
蓝牙状态 必须开启蓝牙 "请开启手机蓝牙"
Beacon信号 RSSI > -70dBm "蓝牙信号弱,请靠近打卡点"
扫描超时 3秒超时最多重试3次 "蓝牙扫描超时"

响应式布局

  • 适配机型iPhone SE375px~ iPad mini768px扫描动画居中
  • 横竖屏适配策略:竖屏垂直布局;横屏动画与信息并排展示
  • 手势交互规范按钮可点击区域≥44px
  • 安全区域:底部按钮适配底部安全区

页面3保洁执行

  • 页面路径/pages/cleaning/execute
  • 适用角色:保洁人员
  • 页面元素
    • 任务信息卡片(区域、类型、时间)
    • 保洁清单(逐项检查列表)
    • 每项操作按钮(完成/标记异常)
    • 完成后照片上传区≤9张含水印时间定位
    • 蓝牙拍照提示(策略=REQUIRED时显示
  • 查询条件:无
  • 列表字段
字段 类型 说明
检查项名称 文本 保洁清单项目
状态 标签 待完成/已完成/异常
备注 文本 异常时填写说明
  • 界面布局
    • 顶部:任务信息摘要卡片
    • 中部:保洁清单列表(逐项勾选)
    • 底部:照片上传区 + 提交按钮
  • 操作按钮
    • 「完成该项」→ 标记该项完成
    • 「标记异常」→ 跳转异常反馈页
    • 「拍照」→ 调用相机拍照(蓝牙策略=REQUIRED时须在蓝牙连接状态下进行
    • 「提交完成」→ 提交整个保洁任务

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
MP-CL-03 保洁执行 02-小程序端 §4 主管抽查 保洁异常反馈

交互流程要求

  1. 页面加载流程:页面加载时获取保洁任务详情和清单→渲染任务信息和检查项列表;查询蓝牙拍照策略
  2. 查询/筛选交互流程:无筛选操作
  3. 表单填写与提交流程:逐项点击「完成该项」→标记异常项点击「标记异常」→跳转异常反馈页→完成后拍照上传→点击「提交完成」→确认弹窗→提交成功
  4. 弹窗/弹层交互流程:点击拍照弹出选择(拍照/相册);提交前弹出确认弹窗
  5. 行内操作流程:点击完成该项→该项标记完成;点击标记异常→跳转异常反馈页;点击拍照→调起相机(蓝牙策略=REQUIRED须蓝牙连接下拍照
  6. 异常与错误处理:蓝牙断连时拍照提示"请连接蓝牙后拍照";提交失败显示重试
  7. 联动/级联交互:检查项完成进度与任务状态联动
  8. 权限控制交互表现无cleaning:task:update权限时按钮置灰
  9. H1 防重复提交:「完成该项」「标记异常」「提交完成」按钮点击时均须设置 :loading + :disabled 双重锁定;提交期间禁止重复操作;拍照调用同样需要防抖处理
  10. H2 超时控制:获取任务详情和清单 GET 请求超时 15s提交完成 POST 请求超时 30s照片上传超时 60s>3s 时须 wx.showLoading({mask:true});超时后提示具体原因及重试选项
  11. H3 操作确认:点击「提交完成」前须通过 wx.showModal 二次确认,内容包括已完成项数、异常项数及"确认提交后将进入待抽查状态"的后果说明
  12. H4 脏数据检测:页面加载时对初始清单数据进行快照(深拷贝);每次点击完成/标记异常或上传照片时对比快照检测 isDirtyonUnload 中检测到 isDirty 且未提交时弹出 wx.showModal({content:"保洁数据尚未保存,确定离开?"})
  13. H7 上传约束:完成照片上传单个文件 ≤10MB最多 ≤9 张;使用 uni-file-picker@progress 回调实时展示上传进度百分比;蓝牙策略=REQUIRED 时拍照前校验蓝牙连接状态
  14. H8 反馈规范:提交成功使用 wx.showToast({icon:'success', title:'保洁任务已提交'});校验失败使用 wx.showToast({icon:'none', title:'请完成所有保洁项目'}) 多文字提示;网络异常判断并提供重试

组件规范

元素 组件 配置参数
任务信息卡片 uni-card mode="basic",只读展示
保洁清单列表 uni-list + uni-list-item :showArrow="false",可勾选
完成该项 button type="default"size="mini"@click="completeItem"
标记异常 button type="warn"size="mini"@click="reportAbnormal"
照片上传 uni-file-picker limit="9"file-mediatype="image"
提交完成 button type="primary":loading="submitting"
确认弹窗 uni-popup type="dialog"

校验规则

字段 规则 错误提示
保洁清单 必须逐项完成或标记异常 "请完成所有保洁项目"
完成照片 至少1张 "请上传完成照片"
蓝牙状态 策略=REQUIRED拍照时须蓝牙连接 "请连接蓝牙后拍照"

响应式布局

  • 适配机型iPhone SE375px~ iPad mini768px列表宽度自适应
  • 横竖屏适配策略:竖屏垂直列表;横屏清单与照片区并排
  • 手势交互规范列表项可点击区域≥44px按钮≥44px
  • 安全区域:底部提交按钮适配底部安全区

页面4异常反馈

  • 页面路径/pages/cleaning/abnormal
  • 适用角色:保洁人员
  • 页面元素
    • 异常描述输入框(多行文本)
    • 拍照上传区≤9张含水印时间定位
    • 严重程度选择(一般/严重/紧急)
    • 提交按钮
  • 查询条件:无
  • 列表字段:无
  • 界面布局
    • 顶部:异常类型提示
    • 中部:照片上传 + 描述填写
    • 底部:提交按钮
  • 操作按钮
    • 「拍照」→ 调用相机
    • 「提交反馈」→ 提交异常反馈

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
MP-CL-04 异常反馈 02-小程序端 §4 通知主管 保洁管理Web端

交互流程要求

  1. 页面加载流程:页面加载时初始化表单
  2. 查询/筛选交互流程:无筛选操作
  3. 表单填写与提交流程:输入异常描述→选择严重程度→拍照上传→点击提交反馈→确认弹窗→提交成功通知主管
  4. 弹窗/弹层交互流程:点击拍照弹出选择(拍照/相册);提交前弹出确认弹窗
  5. 行内操作流程:输入描述→选择严重程度→上传照片→提交
  6. 异常与错误处理:图片上传失败提示重传;提交失败显示重试
  7. 联动/级联交互:无强联动
  8. 权限控制交互表现:所有保洁人员可操作

组件规范

元素 组件 配置参数
异常描述 uni-easyinput type="textarea"maxlength="500":showWordLimit="true"
严重程度 uni-data-select :localdata="[{value:'minor',text:'一般'},{value:'major',text:'严重'},{value:'critical',text:'紧急'}]"
照片上传 uni-file-picker limit="9"file-mediatype="image":auto-upload="true"
提交按钮 button type="primary":loading="submitting"
确认弹窗 uni-popup type="dialog"

校验规则

字段 规则 错误提示
异常描述 必填最多500字 "请填写异常描述" / "描述不能超过500字"
严重程度 必选 "请选择严重程度"
照片 最多9张含水印 "照片最多上传9张"

响应式布局

  • 适配机型iPhone SE375px~ iPad mini768px表单宽度自适应
  • 横竖屏适配策略竖屏垂直布局横屏照片区3~4列网格
  • 手势交互规范选择器≥44px提交按钮≥44px上传区域≥44px
  • 安全区域:底部提交按钮适配底部安全区

页面5保洁抽查

  • 页面路径/pages/cleaning/spot-check
  • 适用角色:主管
  • 页面元素
    • 待抽查任务列表
    • 任务详情查看
    • 抽查结果标记(合格/不合格)
    • 不合格原因输入框
    • 不合格照片上传
  • 查询条件
    • 日期筛选
    • 区域筛选
    • 状态筛选(待抽查/合格/不合格)
  • 列表字段
字段 类型 说明
区域 文本 保洁区域名称
执行人 文本 保洁人员姓名
完成时间 时间 实际完成时间
抽查状态 标签 待抽查/合格/不合格
  • 界面布局
    • 顶部:筛选条件横向滑动
    • 中部:任务卡片列表
    • 弹窗:抽查结果标记弹窗
  • 操作按钮
    • 「合格」→ 确认完成权限cleaning:spot-check:approve
    • 「不合格」→ 填写原因后重新生成任务

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
MP-CL-05 保洁抽查 02-小程序端 §4 不合格时重新生成任务 保洁管理Web端

交互流程要求

  1. 页面加载流程:页面加载时获取待抽查任务列表→显示骨架屏→渲染筛选条件和任务列表
  2. 查询/筛选交互流程:日期/区域/状态筛选条件→切换筛选重新加载列表;下拉刷新
  3. 表单填写与提交流程:点击任务→弹出抽查结果标记弹窗→选择合格/不合格→不合格时填写原因+上传照片→确认提交
  4. 弹窗/弹层交互流程:点击抽查→弹出抽查标记弹窗(合格/不合格选择+原因输入)
  5. 行内操作流程:点击合格→确认完成;点击不合格→填写原因→确认→系统自动重新生成任务
  6. 异常与错误处理:列表加载失败显示重试;抽查操作失败显示重试
  7. 联动/级联交互:不合格标记与任务重新生成联动
  8. 权限控制交互表现仅主管可操作无cleaning:spot-check:approve权限时按钮置灰

组件规范

元素 组件 配置参数
筛选条件 uni-data-select 日期/区域/状态三个选择器
任务列表 uni-list + uni-list-item clickable=true
抽查标记弹窗 uni-popup type="bottom",弹出抽查操作面板
合格按钮 button type="primary"@click="markQualified"
不合格按钮 button type="warn"@click="markUnqualified"
不合格原因 uni-easyinput type="textarea"maxlength="200"
不合格照片 uni-file-picker limit="9"file-mediatype="image"
下拉刷新 uni-refresher @onRefresh回调

校验规则

字段 规则 错误提示
抽查结果 必选(合格/不合格) "请选择抽查结果"
不合格原因 不合格时必填 "请填写不合格原因"
不合格照片 不合格时至少1张 "请上传不合格照片"

响应式布局

  • 适配机型iPhone SE375px~ iPad mini768px列表宽度自适应
  • 横竖屏适配策略:竖屏单列卡片;横屏双列卡片+底部弹窗更宽
  • 手势交互规范任务项可点击区域≥44px按钮≥44px
  • 安全区域:底部弹窗适配底部安全区

页面6保洁历史

  • 页面路径/pages/cleaning/history
  • 适用角色:保洁人员
  • 页面元素
    • 月份选择器
    • 历史任务列表
    • 任务详情查看
  • 查询条件
    • 月份筛选
    • 状态筛选(全部/正常/异常/补录)
  • 列表字段
字段 类型 说明
日期 日期 执行日期
区域 文本 保洁区域
状态 标签 正常/异常/补录
打卡方式 标签 蓝牙/手动/补录
  • 界面布局
    • 顶部:月份选择器 + 统计数字
    • 中部:按日期分组的任务列表
    • 底部:无操作栏
  • 操作按钮
    • 「查看详情」→ 查看历史任务详情

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
MP-CL-06 保洁历史 02-小程序端 §4 保洁执行

交互流程要求

  1. 页面加载流程:页面加载时默认加载当月保洁记录→显示骨架屏→渲染月份选择器和记录列表
  2. 查询/筛选交互流程:切换月份→重新加载;状态筛选(全部/正常/异常/补录)→过滤记录;下拉刷新
  3. 表单填写与提交流程:无表单提交操作
  4. 弹窗/弹层交互流程:无弹窗
  5. 行内操作流程:点击查看详情→查看历史任务详情
  6. 异常与错误处理:记录加载失败显示重试;无记录显示空状态
  7. 联动/级联交互:月份和状态筛选与列表数据联动
  8. 权限控制交互表现:仅保洁人员可访问本人数据
  9. H1 防重复提交:「查看详情」按钮设置防重复标记;下拉刷新期间禁止重复触发;切换月份/状态筛选时 abort 未完成的上一次请求
  10. H2 超时控制:获取历史记录 GET 请求超时 15s切换月份加载 >3s 时须 wx.showLoading({mask:true});超时提示"加载超时,请重试"
  11. H3 操作确认:本页面主要为列表查看,无需操作确认
  12. H8 反馈规范:记录加载成功静默渲染;加载失败使用 wx.showToast({icon:'none', title:'记录加载失败,请重试'});空数据显示空状态插图;网络异常提供重试

组件规范

元素 组件 配置参数
月份选择器 uni-datetime-picker type="date"fields="month"
状态筛选 uni-segmented-control :values="['全部','正常','异常','补录']"
记录列表 uni-list + uni-list-item clickable=trueshowArrow=true
状态标签 uni-tag type: success(正常)/error(异常)/primary(补录)
下拉刷新 uni-refresher @onRefresh回调
空状态 uni-section 插槽自定义空状态插图与文案

校验规则

字段 规则 错误提示
记录列表 加载失败允许重试 "加载失败,请下拉刷新重试"

响应式布局

  • 适配机型iPhone SE375px~ iPad mini768px卡片宽度自适应
  • 横竖屏适配策略:竖屏单列卡片;横屏双列卡片展示
  • 手势交互规范记录项可点击区域≥44px支持下拉刷新
  • 安全区域:底部适配底部安全区

页面7异常数据补录

  • 页面路径/pages/cleaning/supplement
  • 适用角色:保洁人员(蓝牙失灵/定位失败时)
  • 页面元素
    • 补录原因选择(蓝牙故障/手机异常/系统异常/其他)
    • 补录说明输入框
    • 手动填写保洁记录
    • 照片上传区(补录证据)
    • 提交按钮
  • 查询条件:无
  • 列表字段:无
  • 界面布局
    • 顶部:补录模式提示(红色警示条)
    • 中部:原因选择 + 说明填写 + 保洁记录
    • 底部:提交按钮
  • 操作按钮
    • 「提交补录」→ 提交补录申请(需主管审核)

补录数据标记

  • 所有补录数据标记 is_supplement=true
  • supplement_reason:补录原因
  • check_type=MANUAL

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
MP-CL-07 异常数据补录 02-小程序端 §4 主管审核补录 操作日志、考勤补录审核

交互流程要求

  1. 页面加载流程:页面加载时显示补录模式提示(红色警示条)→获取保洁区域和检查项数据
  2. 查询/筛选交互流程:无筛选操作
  3. 表单填写与提交流程:选择补录原因→填写补录说明→上传证明材料→手动填写保洁记录(时间/区域/检查项)→点击提交补录→确认弹窗→提交成功等待审核
  4. 弹窗/弹层交互流程:点击上传弹出选择(拍照/相册);提交前弹出确认弹窗
  5. 行内操作流程:选择原因→填写说明→上传照片→填写保洁记录→提交
  6. 异常与错误处理:图片上传失败提示重传;提交失败显示重试;离线暂存本地
  7. 联动/级联交互:补录原因与表单无强联动
  8. 权限控制交互表现仅保洁人员可操作补录数据标记is_supplement=true
  9. H1 防重复提交:「提交补录」按钮点击时须设置 :loading="submitting" + :disabled 双重锁定;提交期间禁止重复点击
  10. H2 超时控制:获取区域和检查项 GET 请求超时 15s提交补录 POST 请求超时 30s证明材料上传超时 60s>3s 时须 wx.showLoading({mask:true});超时后提示并提供重试
  11. H3 操作确认:点击「提交补录」前须通过 wx.showModal 二次确认,内容包括补录原因摘要及"提交后需等待主管审核"的后果说明
  12. H4 脏数据检测:页面初始化时保存空白表单快照;选择原因、填写说明、上传材料、填写记录等任一操作触发 isDirty=trueonUnload 中检测 isDirty 时弹出 wx.showModal({content:"补录信息尚未提交,确定离开?"})
  13. H7 上传约束:证明材料上传单个文件 ≤10MB最多 ≤3 张(业务限制);使用 uni-file-picker@progress 回调显示上传进度;超出限制时前端拦截并提示
  14. H8 反馈规范:提交成功使用 wx.showToast({icon:'success', title:'补录申请已提交,待审核'});校验失败使用 wx.showToast({icon:'none', title:'具体错误信息'});离线暂存本地时提示"已暂存至本地"

组件规范

元素 组件 配置参数
补录原因 uni-data-select :localdata="[{value:'bluetooth',text:'蓝牙故障'},{value:'phone',text:'手机异常'},{value:'system',text:'系统异常'},{value:'other',text:'其他'}]"
补录说明 uni-easyinput type="textarea"maxlength="200":showWordLimit="true"
证明材料上传 uni-file-picker limit="3"file-mediatype="image"
保洁时间 uni-datetime-picker type="datetime"
保洁区域 uni-data-select v-model="areaId":localdata="areaList"
检查项结果 uni-data-checkbox 逐项渲染
提交按钮 button type="primary":loading="submitting"
确认弹窗 uni-popup type="dialog"

校验规则

字段 规则 错误提示
补录原因 必选 "请选择补录原因"
补录说明 必填最多200字 "请填写补录说明"
证明材料 最多3张 "证明材料最多上传3张"
保洁时间 必选 "请选择保洁时间"
保洁区域 必选 "请选择保洁区域"

响应式布局

  • 适配机型iPhone SE375px~ iPad mini768px表单宽度自适应
  • 横竖屏适配策略:竖屏垂直布局;横屏表单水平分组
  • 手势交互规范选择器≥44px提交按钮≥44px
  • 安全区域:底部提交按钮适配底部安全区

业务规则

  1. 蓝牙策略:保洁打卡和拍照均受蓝牙策略控制(GET /system/bluetooth-policy → cleaning_check_in / cleaning_photo
  2. 蓝牙强制打卡:策略=REQUIRED时必须连接蓝牙Beacon后才可确认完成拍照也须在蓝牙连接状态下进行
  3. 非强制蓝牙:策略=OPTIONAL时可选蓝牙打卡check_type=BLUETOOTH或手动打卡check_type=MANUAL
  4. 补录审核所有蓝牙失灵的补录数据需主管在Web端或小程序端审核
  5. 补录标记:补录数据必须标记 is_supplement=true,并在操作日志中记录
  6. 照片水印:所有照片自动添加时间+位置水印,蓝牙场景标记 bluetooth_connected
  7. 抽查不合格:主管标记不合格后,系统自动重新生成保洁任务
  8. 照片数量单次上传最多9张照片

状态流转

保洁任务状态

待执行 → 进行中 → 待抽查 → 已完成
                  ↓
               异常反馈 → 待处理
                  ↓
         主管抽查 → 合格 → 已完成
                  → 不合格 → 重新生成任务

补录流程

蓝牙失灵/定位失败
      │
  进入补录模式
      │
  选择补录原因 + 手动填写记录
      │
  提交补录申请is_supplement=true
      │
  主管审核Web/小程序均可)
      │
  ┌─审核通过─┐  ┌─审核驳回─┐
  补录生效       通知员工
  记录审核日志   记录审核日志