30 KiB
通用功能
模块编码:common 端侧:小程序 关联文档:01-模块划分.md §5.2、02-功能清单-小程序端.md §1、03-业务流转逻辑-小程序端.md §1&10、05-接口规范.md §2、06-项目技术要求.md §4.1 强制规范遵循
07-前端界面开发规范.md
功能概览
| 项目 | 说明 |
|---|---|
| 菜单名称 | 通用功能 |
| 子菜单 | 快捷登录、个人信息、消息通知、数据补录申请、版本更新提示、通讯录 |
| 功能编号 | MP-C-01 ~ MP-C-06 |
| 权限编码 | —(通用功能,登录即可用) |
页面清单
页面1:登录页
- 页面路径:
/pages/login/index - 页面元素:
- 微信授权登录按钮(获取openid)
- 手机号绑定按钮(微信获取手机号组件)
- 用户协议与隐私政策链接
- 版本号展示
- 界面布局:
- 顶部:应用Logo + 系统名称
- 中部:微信一键登录按钮(大按钮,居中)
- 底部:版本号 + 协议链接
- 操作按钮:
按钮 权限 说明 微信一键登录 — 触发wx.login()获取code,后端换openid 获取手机号 — 微信获取手机号组件,绑定手机号
交互流程要求
- 页面加载流程:页面加载时检查本地token是否有效→有效则直接跳转工作台→无效则显示登录页;展示应用Logo和系统名称,显示骨架屏占位
- 查询/筛选交互流程:无筛选操作
- 表单填写与提交流程:点击「微信一键登录」→ 触发wx.login()获取code → 后端换取openid → 若未绑定手机号则显示获取手机号按钮 → 点击获取手机号调用微信获取手机号组件 → 绑定成功后跳转工作台
- 弹窗/弹层交互流程:首次使用弹出用户协议与隐私政策确认弹窗→用户点击同意后继续登录流程;匹配失败时弹出提示"未找到关联信息,请联系管理员"
- 行内操作流程:点击协议链接→跳转协议详情页
- 异常与错误处理:微信授权失败显示"授权失败,请重试";网络异常显示重试按钮;openid匹配失败提示联系管理员;离线状态下提示"网络不可用,请检查网络连接"
- 联动/级联交互:登录成功后自动加载权限集,根据权限渲染工作台功能入口
- 权限控制交互表现:登录前无法访问其他页面,所有页面跳转均需验证token有效性
组件规范
| 元素 | 组件 | 配置参数 |
|---|---|---|
| 应用Logo | image |
mode="aspectFit",宽度120px |
| 微信一键登录按钮 | button |
open-type="getPhoneNumber",type="primary",size="default" |
| 获取手机号按钮 | button |
open-type="getPhoneNumber",type="default" |
| 协议链接 | navigator |
url="/pages/agreement/index" |
| 版本号 | text |
font-size="12px",color="#999" |
| 确认弹窗 | uni-popup |
type="dialog",:mask-click="false" |
校验规则
| 字段 | 规则 | 错误提示 |
|---|---|---|
| 微信授权 | wx.login()必须返回有效code | "微信授权失败,请重试" |
| 手机号绑定 | 必须获取微信手机号组件返回的有效手机号 | "获取手机号失败,请重试" |
| 用户协议 | 首次登录必须同意协议 | "请先同意用户协议与隐私政策" |
| 人员匹配 | openid必须关联系统人员信息 | "未找到关联信息,请联系管理员" |
响应式布局
- 适配机型:iPhone SE(375px)~ iPad mini(768px),按钮宽度max-width=320px居中
- 横竖屏适配策略:竖屏为默认布局;横屏时Logo缩小,按钮宽度自适应
- 手势交互规范:登录按钮可点击区域≥44px;协议链接可点击区域≥44px
- 安全区域:底部按钮适配底部安全区,padding-bottom=env(safe-area-inset-bottom)
页面2:工作台首页
- 页面路径:
/pages/workbench/index - 页面元素:
- 用户头像 + 姓名 + 角色
- 功能入口网格(根据角色动态渲染)
- 消息通知红点提示
- 今日关键指标简卡
- 查询条件:无
- 列表字段:无
- 界面布局:
- 顶部:用户信息栏(头像 + 姓名 + 角色 + 消息入口)
- 中部:功能入口网格(2列×N行,按角色动态显示)
- 维修人员:我的工单、消息通知
- 巡检人员:今日巡检、异常上报
- 保洁人员:今日保洁、异常反馈
- 主管:工单分配、审批中心、统计概览
- 管理员:报修管理、巡检管理、保洁管理、考勤管理、评价管理、组织架构
- 底部:底部Tab栏(工作台、消息、我的)
- 操作按钮:
按钮 权限 说明 各功能入口 按角色 根据权限集动态显示/隐藏
交互流程要求
-
页面加载流程:页面加载时获取用户信息及权限集→根据权限动态渲染功能入口网格→显示骨架屏占位→数据返回后渲染用户信息栏和功能入口
-
查询/筛选交互流程:无手动筛选,功能入口根据角色权限自动过滤显示
-
表单填写与提交流程:无表单提交操作
-
弹窗/弹层交互流程:点击消息入口→跳转消息通知列表页;功能入口红点提示为系统推送自动标记
-
行内操作流程:点击功能入口→跳转对应功能页面;点击消息入口→跳转消息列表;底部Tab切换工作台/消息/我的
-
异常与错误处理:权限加载失败显示重试按钮;网络异常显示错误提示;离线时显示缓存的功能入口但提示"数据可能不是最新"
-
联动/级联交互:功能入口数量与权限集联动,角色变更后重新渲染入口网格
-
权限控制交互表现:无权限的功能入口不显示;不同角色看到不同的功能入口集合
-
H1 防重复请求(强制):功能入口点击后做轻量防抖(300ms),避免重复跳转;权限集加载请求pending期间不重复发;下拉刷新时abort前一次请求后重发
-
H2 超时配置(强制):获取用户信息及权限集GET请求超时15s;>3s显示wx.showLoading("加载中...");超时后提示"加载超时,请下拉刷新"+重试按钮
-
H8 反馈(建议):数据加载成功无额外toast(静默渲染);加载失败wx.showToast({icon:'none', title:'数据加载失败'}); 禺线模式wx.showToast({icon:'none', title:'数据可能不是最新'})
组件规范
| 元素 | 组件 | 配置参数 |
|---|---|---|
| 用户信息栏 | view + image + text |
flex布局,头像40px圆形 |
| 功能入口网格 | uni-grid |
:column="2",:showBorder="false" |
| 功能入口项 | uni-grid-item |
点击跳转对应页面 |
| 红点提示 | uni-badge |
:content="count",type="error" |
| 消息入口 | uni-icons |
type="notification",size="24" |
| 底部Tab栏 | uni-tabbar |
3个Tab:工作台/消息/我的 |
| 今日指标卡片 | uni-card |
mode="center",简洁数字展示 |
校验规则
| 字段 | 规则 | 错误提示 |
|---|---|---|
| 用户信息 | 必须返回有效的用户信息 | "获取用户信息失败,请下拉刷新" |
| 权限集 | 必须返回有效的权限数据 | "权限加载失败,请重新登录" |
| 功能入口 | 至少有一个可访问的功能入口 | "暂无可用功能,请联系管理员" |
响应式布局
- 适配机型:iPhone SE(375px)~ iPad mini(768px),功能入口网格宽度自适应
- 横竖屏适配策略:竖屏2列网格;横屏改为3~4列网格,用户信息栏水平展开
- 手势交互规范:功能入口可点击区域≥44px;底部Tab可点击区域≥48px;支持下拉刷新
- 安全区域:底部Tab栏适配底部安全区,padding-bottom=env(safe-area-inset-bottom)
页面3:个人信息页
- 页面路径:
/pages/profile/index - 页面元素:
- 头像(可点击查看大图)
- 姓名(只读)
- 手机号(脱敏显示,可修改)
- 所属物业公司(只读)
- 所属班组(只读)
- 角色信息(只读)
- 退出登录按钮
- 查询条件:无
- 列表字段:无
- 界面布局:
- 顶部:头像(居中,大尺寸)
- 中部:信息列表(Label + Value形式)
- 底部:退出登录按钮(红色文字)
- 操作按钮:
按钮 权限 说明 修改手机号 — 弹出微信获取手机号组件 退出登录 — 清除本地token,跳转登录页
交互流程要求
-
页面加载流程:页面加载时获取当前用户个人信息→渲染头像、姓名、手机号、所属公司/班组/角色
-
查询/筛选交互流程:无筛选操作
-
表单填写与提交流程:点击修改手机号→弹出微信获取手机号组件→获取新手机号→调用接口更新→更新成功提示"手机号修改成功"
-
弹窗/弹层交互流程:点击头像→弹出大图预览;退出登录→弹出确认弹窗"确定要退出登录吗?"
-
行内操作流程:点击修改手机号→调用微信手机号组件;点击退出登录→确认后清除token跳转登录页
-
异常与错误处理:信息加载失败显示重试;手机号修改失败提示错误信息;退出登录清除本地缓存失败则强制跳转
-
联动/级联交互:手机号修改成功后同步更新页面显示和本地缓存
-
权限控制交互表现:所有登录用户均可访问;部分信息只读不可编辑
-
H1 防重复请求(强制):修改手机号按钮点击后loading态+disabled;退出登录按钮点击后立即disabled防止重复触发;手机号更新请求pending期间禁止重复调用微信组件
-
H2 超时配置(强制):手机号更新接口POST请求超时30s;>3s显示wx.showLoading("正在更新...");超时后提示"请求超时,请重试"+重试按钮
-
H3 操作确认(强制):退出登录必须使用uni-popup(type="dialog")弹出确认弹窗"确定要退出登录吗?退出后需重新登录",含后果说明;用户确认后才执行清除token和跳转
-
H4 脏数据检测(强制):修改手机号操作前对当前用户信息做深拷贝快照(JSON.parse(JSON.stringify(userInfo)));页面卸载onUnload时检测isDirty,若有未保存的修改弹出提示
-
H7 文件上传(建议):本页面不涉及文件上传
-
H8 反馈(建议):手机号修改成功wx.showToast({icon:'success', title:'手机号修改成功'});修改失败wx.showToast({icon:'none', title:'修改失败原因'}); 退出登录成功无需toast静默跳转
组件规范
| 元素 | 组件 | 配置参数 |
|---|---|---|
| 头像 | image |
mode="aspectFill",80px圆形,@click预览大图 |
| 信息列表 | uni-list + uni-list-item |
:showArrow="false",右侧为值 |
| 修改手机号 | button |
open-type="getPhoneNumber",type="default" |
| 退出登录 | button |
type="warn",size="default" |
| 确认弹窗 | uni-popup |
type="dialog",确认退出/取消 |
| 大图预览 | uni-popup |
type="center",图片全屏预览 |
校验规则
| 字段 | 规则 | 错误提示 |
|---|---|---|
| 手机号 | 必须为11位有效手机号 | "手机号格式不正确" |
| 头像 | 点击预览需有效URL | — |
| 退出确认 | 必须用户二次确认 | — |
响应式布局
- 适配机型:iPhone SE(375px)~ iPad mini(768px),信息列表宽度自适应
- 横竖屏适配策略:竖屏垂直布局;横屏信息列表水平分组展示
- 手势交互规范:头像可点击区域≥44px;修改手机号按钮≥44px;退出登录按钮≥44px
- 安全区域:底部退出按钮适配底部安全区
页面4:消息通知列表
- 页面路径:
/pages/message/list - 页面元素:
- 消息分类Tab(全部 / 工单 / 审批 / 系统)
- 消息列表
- 未读标记红点
- 全部标记已读按钮
- 查询条件:
条件 类型 说明 分类 Tab切换 全部/工单/审批/系统 - 列表字段:
字段 说明 消息标题 通知标题 消息摘要 内容前30字 消息时间 相对时间(如"5分钟前") 已读标记 红点显示未读 消息类型图标 不同类型不同图标 - 界面布局:
- 顶部:分类Tab
- 中部:消息列表(左图标 + 中标题摘要 + 右时间 + 未读红点)
- 底部:全部标记已读按钮
- 操作按钮:
按钮 权限 说明 全部标记已读 — 将所有未读消息标为已读 点击消息 — 跳转到对应业务详情页
交互流程要求
-
页面加载流程:页面加载时请求消息列表→显示骨架屏→数据返回后渲染分类Tab和消息列表;默认显示"全部"分类
-
查询/筛选交互流程:点击分类Tab切换消息类别→重新加载对应分类的消息列表;支持滚动加载更多
-
表单填写与提交流程:无表单提交操作
-
弹窗/弹层交互流程:无弹窗
-
行内操作流程:点击消息→标记该消息已读→跳转对应业务详情页;点击「全部标记已读」→批量标记所有未读消息
-
异常与错误处理:消息加载失败显示重试;网络异常显示错误提示;离线时显示缓存消息并提示"离线模式"
-
联动/级联交互:Tab切换与列表数据联动;标记已读后红点数量实时更新
-
权限控制交互表现:所有登录用户均可访问;消息内容根据权限控制跳转详情页的可见性
-
H1 防重复请求(强制):「全部标记已读」按钮点击后loading态+disabled;Tab切换请求pending时不重复发;上拉加载更多时分页请求使用requestTask,新请求时abort前一次;下拉刷新时abort进行中的列表请求
-
H2 超时配置(强制):消息列表GET请求超时15s;标记已读POST请求超时30s;列表加载>3s保持骨架屏;超时后提示"请求超时,请下拉刷新"+重试按钮
-
H3 操作确认(强制):本页面无删除等危险操作,「全部标记已读」为低风险操作可不加确认
-
H6 批量限制(建议):「全部标记已读」为批量操作,操作前检查未读数量,>50条时提示"未读消息较多,确认全部标记?"再执行
-
H8 反馈(建议):标记已读成功wx.showToast({icon:'success', title:'已全部标记已读'});消息加载失败wx.showToast({icon:'none', title:'消息加载失败'}); 无未读消息时提示"暂无未读消息"
组件规范
| 元素 | 组件 | 配置参数 |
|---|---|---|
| 分类Tab | uni-segmented-control |
:current="currentTab",:values="['全部','工单','审批','系统']" |
| 消息列表 | uni-list + uni-list-item |
clickable=true,showArrow=true |
| 未读红点 | uni-badge |
:content="1",type="error",size="small" |
| 消息类型图标 | uni-icons |
type="notification/chat/settings",size="22" |
| 全部标记已读 | button |
type="default",size="mini" |
| 下拉刷新 | uni-refresher |
@onRefresh回调,threshold=45px |
| 上拉加载 | uni-load-more |
:status="loadingStatus" |
校验规则
| 字段 | 规则 | 错误提示 |
|---|---|---|
| 消息列表 | 加载失败时允许重试 | "消息加载失败,请下拉刷新重试" |
| 分类Tab | 切换时重新请求数据 | — |
| 全部标记已读 | 须有未读消息才可操作 | "暂无未读消息" |
响应式布局
- 适配机型:iPhone SE(375px)~ iPad mini(768px),消息列表宽度自适应
- 横竖屏适配策略:竖屏垂直列表;横屏可双列展示消息卡片
- 手势交互规范:消息项可点击区域≥44px;Tab切换区域≥44px;支持下拉刷新
- 安全区域:底部标记已读按钮适配底部安全区
页面5:数据补录申请页
- 页面路径:
/pages/supplement/apply - 页面元素:
- 补录模块选择(报修/巡检/保洁/考勤)
- 补录原因(下拉选择:蓝牙失灵/定位失败/系统异常/其他)
- 补录说明(多行文本,最多200字)
- 证明材料上传(照片,最多3张)
- 补录数据表单(根据选择的模块动态渲染)
- 查询条件:无
- 列表字段:无
- 界面布局:
- 顶部:补录模块选择(下拉选择器)
- 中部:补录原因 + 说明 + 上传证明
- 下部:补录数据表单(动态)
- 底部:提交按钮
- 操作按钮:
按钮 权限 说明 提交申请 — 提交补录申请,等待主管审核
交互流程要求
-
页面加载流程:页面加载时获取补录模块字典→渲染模块选择器
-
查询/筛选交互流程:无筛选操作
-
表单填写与提交流程:选择补录模块→渲染对应的动态表单→选择补录原因→填写补录说明→上传证明材料→点击提交申请→确认弹窗→提交成功提示"补录申请已提交,等待主管审核"
-
弹窗/弹层交互流程:提交前弹出确认弹窗"确认提交补录申请?";上传照片时可选择拍照或从相册选择
-
行内操作流程:选择补录模块→动态渲染对应表单字段;点击上传区域→调起相机/相册
-
异常与错误处理:网络异常提交失败提示"提交失败,请重试";图片上传失败提示重传;离线时数据暂存本地,联网后自动提交
-
联动/级联交互:补录模块选择与动态表单联动,不同模块显示不同字段
-
权限控制交互表现:所有登录用户均可提交补录申请;提交后状态为待审核,不可重复提交同一条
-
H1 防重复请求(强制):提交申请按钮点击后:loading="true"且disabled;表单提交请求pending期间禁用提交按钮和返回操作;使用requestTask管理提交请求
-
H2 超时配置(强制):补录模块字典GET请求超时15s;提交补录POST请求超时30s;图片上传超时60s;>3s wx.showLoading("正在提交..."); 超时后提示"请求超时,请重试"+重试按钮
-
H3 操作确认(强制):提交前必须弹出uni-popup确认弹窗"确认提交补录申请?提交后将等待主管审核",含后果说明
-
H4 脏数据检测(强制):页面进入时对表单初始值做深拷贝快照;离开页面onUnload/onHide时检测表单是否有填写内容(isDirty),若有已填写内容但未提交则弹出提示"有未提交的内容,确定离开吗?"
-
H6 批量限制(建议):证明材料最多3张(已在校验规则限制),超出时提示"证明材料最多上传3张"
-
H7 文件上传(建议):证明材料使用wx.chooseMedia选择图片,限制最多3张;单张≤10MB,格式白名单jpg/jpeg/png;上传时显示进度回调(uni-file-picker内置);上传失败提示具体错误原因
-
H8 反馈(建议):提交成功wx.showToast({icon:'success', title:'补录申请已提交,等待主管审核'}); 提交失败wx.showToast({icon:'none', title:'提交失败原因'}可显示多文字); 网络异常wx.getNetworkType检测后提示+重试按钮
组件规范
| 元素 | 组件 | 配置参数 |
|---|---|---|
| 补录模块选择 | uni-data-select |
v-model="module",:localdata="moduleList" |
| 补录原因选择 | uni-data-select |
v-model="reason",:localdata="reasonList" |
| 补录说明 | uni-easyinput |
type="textarea",maxlength="200",:showWordLimit="true" |
| 证明材料上传 | uni-file-picker |
limit="3",file-mediatype="image",:auto-upload="true" |
| 动态表单 | uni-forms |
:modelValue="formData",:rules="rules" |
| 提交按钮 | button |
type="primary",:loading="submitting" |
| 确认弹窗 | uni-popup |
type="dialog",确认提交/取消 |
校验规则
| 字段 | 规则 | 错误提示 |
|---|---|---|
| 补录模块 | 必选 | "请选择补录模块" |
| 补录原因 | 必选 | "请选择补录原因" |
| 补录说明 | 必填,最多200字 | "请填写补录说明" / "补录说明不能超过200字" |
| 证明材料 | 最多3张 | "证明材料最多上传3张" |
| 动态表单 | 根据模块动态校验 | 根据具体字段提示 |
响应式布局
- 适配机型:iPhone SE(375px)~ iPad mini(768px),表单宽度自适应
- 横竖屏适配策略:竖屏垂直布局;横屏表单水平分组展示
- 手势交互规范:选择器可点击区域≥44px;提交按钮≥44px;上传区域≥44px
- 安全区域:底部提交按钮适配底部安全区
页面6:通讯录页
- 页面路径:
/pages/contacts/index - 页面元素:
- 搜索框
- 按班组分组显示联系人
- 联系人信息卡片
- 查询条件:
条件 类型 说明 搜索关键词 输入框 按姓名/手机号搜索 - 列表字段:
字段 说明 头像 联系人头像 姓名 联系人姓名 角色 联系人角色 手机号 脱敏显示,点击可拨打 班组 所属班组 - 界面布局:
- 顶部:搜索框
- 中部:按班组分组的联系人列表
- 班组标题(灰色背景)
- 联系人卡片(左头像 + 中姓名角色 + 右手机号图标)
- 操作按钮:
按钮 权限 说明 拨打电话 — 点击手机号直接拨打
交互流程要求
-
页面加载流程:页面加载时获取联系人数据→按班组分组→渲染分组列表
-
查询/筛选交互流程:输入搜索关键词→实时过滤联系人(按姓名/手机号匹配)→无匹配结果显示"未找到联系人"
-
表单填写与提交流程:无表单提交操作
-
弹窗/弹层交互流程:无弹窗
-
行内操作流程:点击手机号图标→调用wx.makePhoneCall拨打电话;滚动列表浏览不同班组的联系人
-
异常与错误处理:联系人加载失败显示重试;拨号失败提示"拨号失败";离线时显示缓存数据
-
联动/级联交互:搜索关键词与列表过滤联动,输入即过滤
-
权限控制交互表现:所有登录用户均可访问;只能查看本公司/班组人员
-
H1 防重复请求(强制):搜索输入做防抖处理(300ms)避免频繁过滤;联系人列表加载请求pending期间不重复发;拨打电话按钮点击后短暂disabled防止连击
-
H2 超时配置(强制):联系人列表GET请求超时15s;>3s显示加载骨架屏;超时后提示"加载超时,请重试"+重试按钮
-
H6 批量限制(建议):本页面无批量操作
-
H8 反馈(建议):联系人加载成功静默渲染;加载失败wx.showToast({icon:'none', title:'联系人加载失败'}); 拨号失败wx.showToast({icon:'none', title:'拨号失败,请重试'})
组件规范
| 元素 | 组件 | 配置参数 |
|---|---|---|
| 搜索框 | uni-search-bar |
placeholder="搜索姓名/手机号",@confirm="search" |
| 班组分组 | uni-section |
:title="groupName",type="line" |
| 联系人列表 | uni-list + uni-list-item |
clickable=true,showArrow=false |
| 头像 | image |
mode="aspectFill",40px圆形 |
| 手机号图标 | uni-icons |
type="phone",size="22",color="#007AFF" |
| 拨打电话 | button |
@click="makePhoneCall",open-type="contact" |
校验规则
| 字段 | 规则 | 错误提示 |
|---|---|---|
| 搜索关键词 | 最少2个字符才触发搜索 | "请输入至少2个字符" |
| 手机号 | 脱敏显示中间4位 | — |
| 联系人列表 | 加载失败允许重试 | "加载失败,请重试" |
响应式布局
- 适配机型:iPhone SE(375px)~ iPad mini(768px),联系人列表宽度自适应
- 横竖屏适配策略:竖屏垂直列表;横屏可双列展示联系人卡片
- 手势交互规范:联系人项可点击区域≥44px;拨打电话图标≥44px;搜索框≥44px
- 安全区域:底部适配底部安全区
页面7:版本更新提示弹窗
- 页面路径:弹窗组件(非独立页面)
- 页面元素:
- 新版本号
- 更新内容说明
- 更新/取消按钮(小版本)
- 强制更新按钮(大版本)
- 界面布局:
- 居中弹窗
- 顶部:版本号
- 中部:更新说明
- 底部:操作按钮
交互流程要求
-
页面加载流程:应用启动时调用后台接口获取最新版本号+最低兼容版本→对比当前版本→小版本更新弹窗提示→大版本更新强制弹窗
-
查询/筛选交互流程:无筛选操作
-
表单填写与提交流程:无表单提交操作
-
弹窗/弹层交互流程:小版本更新→弹窗显示更新内容+更新/取消按钮,用户可关闭;大版本更新→弹窗仅显示更新按钮,不可关闭
-
行内操作流程:点击更新→跳转微信小程序更新页面;点击取消→关闭弹窗继续使用(小版本)
-
异常与错误处理:版本检查接口失败静默处理,不影响正常使用;SDK依赖校验失败提示"应用需要更新"
-
联动/级联交互:版本号与更新内容联动展示
-
权限控制交互表现:所有用户均可见更新提示
-
H1 防重复请求(强制):更新按钮点击后loading态+disabled防止重复下载;版本检查请求pending期间不重复发送;使用requestTask管理版本检查接口
-
H2 超时配置(强制):版本检查GET接口超时15s;>3s显示wx.showLoading("检查更新中..."); 接口超时或失败静默处理不影响正常使用
-
H3 操作确认(强制):小版本更新弹窗需明确展示更新内容+更新/取消选项;大版本更新弹窗仅显示更新按钮不可关闭,强制用户更新
-
H8 反馈(建议):版本检查成功且有新版本正常展示弹窗;已是最新版本无需提示;SDK校验失败wx.showToast({icon:'none', title:'应用需要更新'})
组件规范
| 元素 | 组件 | 配置参数 |
|---|---|---|
| 弹窗容器 | uni-popup |
type="center",:mask-click="false"(大版本)/ :mask-click="true"(小版本) |
| 版本号 | text |
font-size="18px",font-weight="bold" |
| 更新说明 | scroll-view |
scroll-y=true,max-height="300rpx" |
| 更新按钮 | button |
type="primary",@click="updateApp" |
| 取消按钮 | button |
type="default",@click="closePopup"(仅小版本显示) |
校验规则
| 字段 | 规则 | 错误提示 |
|---|---|---|
| 版本号 | 必须为有效版本格式(x.y.z) | — |
| 更新内容 | 不能为空 | — |
| 最低兼容版本 | 必须为有效版本格式 | — |
响应式布局
- 适配机型:iPhone SE(375px)~ iPad mini(768px),弹窗宽度max-width=300px居中
- 横竖屏适配策略:竖屏居中弹窗;横屏弹窗宽度适当增大
- 手势交互规范:更新按钮≥44px;取消按钮≥44px;更新说明区域可滚动
- 安全区域:弹窗内容不受安全区影响
需求追溯
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|---|---|---|---|---|
| MP-C-01 | 快捷登录 | 02-小程序端 §1 | 登录成功→加载权限集→渲染工作台 | 权限管理(角色分配) |
| MP-C-02 | 个人信息 | 02-小程序端 §1 | 修改手机号→更新sys_user | 通讯录 |
| MP-C-03 | 消息通知 | 02-小程序端 §1 | 点击消息→跳转业务详情 | 各业务模块(推送触发) |
| MP-C-04 | 数据补录申请 | 02-小程序端 §1 | 提交→触发补录审核→主管审批 | 各模块补录审核 |
| MP-C-05 | 版本更新提示 | 02-小程序端 §1 | 小版本→提示更新;大版本→强制更新 | 超管系统配置(版本管理) |
| MP-C-06 | 通讯录 | 02-小程序端 §1 | 点击拨打→调起手机拨号 | 组织架构(班组/人员) |
业务规则
-
登录规则(03-业务流转逻辑-小程序端 §1):
- 首次登录:微信授权获取openid → 绑定手机号 → 系统匹配物业公司+人员信息
- 匹配成功:创建账号,进入工作台
- 匹配失败:提示"未找到关联信息,请联系管理员",无法使用
- 再次登录:读取本地token → 有效则直接进入 → 无效则openid静默登录
-
权限加载规则(01-模块划分.md §5.3):
- 登录后获取角色及权限集(四级粒度)
- 根据权限动态渲染:可见菜单项、页面内可见功能点、功能点可用动作、数据范围(行级隔离)
-
Token管理(06-项目技术要求.md §4.1):
- 小程序端存本地Storage,2小时过期
- Token失效自动使用openid静默登录,刷新token
-
版本更新规则(03-业务流转逻辑-小程序端 §10):
- 启动时调用后台接口获取最新版本号 + 最低兼容版本
- 版本一致:正常使用
- 小版本更新(兼容):提示"发现新版本,是否更新?",用户可取消
- 大版本更新(不兼容):强制更新,引导前往微信更新小程序
- SDK依赖校验:启动时校验蓝牙SDK、微信SDK等关键依赖版本
-
消息通知规则(01-模块划分.md §7):
- 通知场景:新工单、催单、审批、完工、异常上报等
- 通知方式:小程序推送
- 点击消息跳转对应业务详情
-
数据补录规则(06-项目技术要求.md §4.5):
- 补录数据必须标记
is_supplement=true - 补录申请需主管审核(Web+小程序均可)
- 补录日志单独记录
- 补录数据必须标记
状态流转
登录状态流转
未登录 ──[微信授权]──▶ 获取openid ──[绑定手机号]──▶ 匹配人员信息
│
┌───匹配成功───┐ ┌───匹配失败───┐
│ │ │ │
创建账号 提示联系管理员
进入工作台 无法使用
补录申请状态流转
草稿 ──[提交]──▶ 待审核 ──[主管通过]──▶ 已通过(数据补录生效)
└──[主管驳回]──▶ 已驳回(通知申请人)