| 本篇完成什么 以一张泵图片和一个手机监视表单为例,区分素材身份、表单资源和测点绑定,验证重命名、迁移、失联与登录过期。 |
设计器里图片正常,复制工程到另一台服务器就丢图;手机显示同样的温度,却没有权限控制;图库删除了一张图,老工程还能打开。这些行为取决于素材存储、引用方式和服务端授权,不能只凭“共用点表”解释。
本文基于本项目 React 图库和 uni-app 表单客户端的本次源码核对。两者属于扩展产品,当前工作副本行为不等于所有已发布现场包都具备相同功能。官方 Mimic 图元、图库图片和移动表单组件也有不同格式。
1. 一台泵涉及三种身份
| 身份 | 示例 | 说明 |
|---|---|---|
| 素材 | pump-blue.svg 的资源 ID/地址 | 决定显示什么图 |
| 页面组件 | form-pump-a | 决定布局、文字和交互 |
| 业务测点 | 运行 4102、故障 4103 | 决定显示什么状态 |
图片本身没有现场数值。拖入泵图标后,还需把状态、颜色或文字属性绑定到相应通道,并验证类型、单位和质量。图元不同状态的外观,应由明确规则控制,不能把默认绿色当成设备运行。
示例绑定说明可写成:运行状态来自 4102,故障来自 4103,故障优先于运行动画;任一关键输入无效时显示未知。它是业务映射说明,具体字段应由目标设计器生成,不能随便复制到另一种工程格式。
2. 图库的地址与文件名不是同一件事
本次 React PlgGallery 使用独立资源身份,并将素材元数据和内容保存在宿主的Gallery/gallery.db,不只是wwwroot下的一批图片。管理页经 Remote 插件加载,管理 API 与素材读取有不同入口。
| 功能 | 本次实现入口/行为 |
|---|---|
| 分类管理页 | /gallery/categories |
| 素材管理页 | /gallery/resource |
| 素材读取 | /api/gallery/assets/{tagName}/{fileName} |
| 默认旧地址兼容 | /resource/gallery/{tagName}/{fileName} |
| 删除素材 | 移入回收站,原工程地址仍可读 |
| 重命名 | 保留历史地址别名,不自动改所有离线工程 |
地址兼容有适用范围。历史自定义前缀仍需保留映射或配置代理,不能认为任意旧 URL 都会自动生效。引用扫描也只覆盖受支持的本地文件范围,查不到引用不证明没有离线工程使用。
管理和 Bootstrap 使用配置级权限;本次素材流保留原有匿名读取策略用于既有引用。因此图库素材不应默认当作私密文件仓库。需要敏感资源权限时,必须单独设计和验证读取授权,不能只隐藏管理菜单。
3. 移动表单中的图片要说明引用方式
常见方式包括外部资源 URL、服务器素材地址,以及支持时嵌入工程的图片内容。三者迁移和离线行为不同。
| 方式 | 迁移检查 |
|---|---|
| 服务端资源引用 | 新环境资源是否存在,路径与身份能否解析 |
| 外部 URL | 网络、HTTPS、授权、地址有效性 |
| 工程内嵌 | 工程大小、格式、保存完整性和客户端支持 |
不能把开发机绝对路径写进手机工程,也不能让手机用localhost访问服务器——手机的 localhost 指向手机自身。部署子路径时,API 与素材 URL 应按实际站点根路径解析,避免重复或丢失虚拟目录。
复制工程验收应在一个没有旧缓存的环境打开。只在设计器预览过图片,不能证明保存后文件、迁移副本与移动运行态都能渲染。
4. 手机读取同一业务测点,仍有独立会话
移动页可以查询同一 SCADA 通道,不应在手机重新配置一套寄存器地址。实时值、历史、事件和表单接口仍需连接正确实例并检查服务端权限。
前端按账号隐藏操作只是体验控制。实际查询与命令必须由服务端检查对象范围和控制权;不能因为桌面管理员已登录,就认为手机匿名访问也应有同等权限。
网络断开时,缓存的上一次值应标明时间与离线状态,不冒充实时。重新联网后应重新验证会话和数据。除非产品明确实现了可靠离线命令队列及有效期仲裁,否则不能承诺离线点按的控制会在恢复后安全自动补发。
5. 图片失败和数据失败分开显示
图片 404、403 或临时 503 与通道失联不同。页面应让人员知道是图没加载,还是设备状态未知,而不是用默认泵图和默认零值掩盖两种错误。
图片请求与页面切换还有时序问题:选图 A 尚未下载时又选 B,迟到的 A 不应覆盖 B;组件销毁后应取消或忽略旧响应。保存/导出时需按设计处理尚未完成的素材,避免把半份资源写进工程。
6. 用一份工程覆盖这些测试
| 测试 | 验收结果 |
|---|---|
| 保存后重新打开表单 | 素材和绑定保持正确 |
| 复制到独立目录/环境 | 资源依赖明确,不依赖开发机缓存 |
| 重命名与回收图库素材 | 按实际版本检查旧引用及新选图列表 |
| 图片临时失败后重试 | 有失败提示,重试不串图 |
| 只读账号访问与直接请求控制 | 可见范围正确,控制被服务端限制 |
| 登录过期 | 明确重新认证,不把登录页当成功数据 |
| 断网恢复 | 陈旧值有标记,不意外补发旧操作 |
| 窄屏及触控 | 关键数值、状态、按钮和图例可辨认 |
本项目有 H5 API 与 UI 冒烟,以及图片迁移相关测试。H5 测试通过不代表 Android/iOS 原生包、真机网络与触控都已验收,应分别记录实际测试范围。
7. 备份要包含素材事实源
对本次图库实现,备份静态 JS 不包含素材数据库;应按一致性要求备份整个持久化目录。工程内嵌资源则应验证导出的工程副本。地图、图库、视频和表单可能分别有自己的存储,不能以一个“资源目录”概括所有模块。
迁移完成后,抽查一张旧引用图片、一张新图片、一个历史表单和一个普通账号。这样才能证明资源、数据和权限一起完成迁移。
相关:大屏数据绑定、扩展安装与回滚。
Rapid SCADA 中文网站:rapidscada.com.cn。