# fault-dispatch-mini **Repository Path**: jinzhoumu/fault-dispatch-mini ## Basic Information - **Project Name**: fault-dispatch-mini - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-09-03 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 墨玉派单系统小程序 (Fault Dispatch Mini Program) 一款面向网络运维工程师的微信小程序应用,用于管理故障工单的全流程处理。该系统支持工单接单、故障处理、物料更换、现场拍照等核心功能,帮助运维人员高效完成故障排查和修复工作。 --- ## 📋 目录 - [技术栈](#技术栈) - [项目结构](#项目结构) - [核心功能](#核心功能) - [API 接口](#api-接口) - [数据模型](#数据模型) - [权限配置](#权限配置) - [开发说明](#开发说明) - [待办事项](#待办事项) - [版本信息](#版本信息) --- ## 🛠 技术栈 | 类别 | 技术选型 | |------|----------| | **开发框架** | 微信小程序原生框架 | | **编程语言** | TypeScript | | **样式语言** | Less | | **UI 组件库** | TDesign Miniprogram (v1.15.1) | | **渲染引擎** | Skyline 渲染器 | | **组件模型** | Glass-easel | | **后端通信** | wx.request (RESTful API) | | **文件存储** | MinIO (图片存储) | --- ## 📁 项目结构 ``` fault-dispatch-mini/ ├── miniprogram/ # 小程序主目录 │ ├── pages/ # 页面目录 │ │ ├── index/ # 首页(用户信息) │ │ ├── work-orders/ # 工单列表页 │ │ ├── work-order-detail/ # 工单详情页(处理/查看) │ │ ├── materials/ # 物料列表页 │ │ ├── profile/ # 个人中心 │ │ └── logs/ # 日志页面 │ ├── utils/ # 工具模块 │ │ ├── api.ts # API 请求封装 │ │ ├── config.ts # 应用配置 │ │ ├── util.ts # 通用工具函数 │ │ ├── mock.ts # 模拟数据 │ │ └── icons.ts # 图标配置 │ ├── app.ts # 应用入口 │ ├── app.json # 应用配置 │ └── app.less # 全局样式 ├── typings/ # TypeScript 类型定义 │ └── types/ │ └── wx/ # 微信 API 类型 ├── package.json # 项目依赖 ├── project.config.json # 微信开发者工具配置 └── tsconfig.json # TypeScript 配置 ``` --- ## ⚡ 核心功能 ### 1. 工单管理 #### 工单列表 (`work-orders` 页面) - **三栏筛选**:待接工单 / 已接工单 / 完成工单 - **双模式展示**: - 详细模式:显示监控点、区域、IP、在线状态、持续时长、设备编码、项目、乡镇、经纬度等完整信息 - 简洁模式:仅显示监控点名称、状态、工单号、乡镇 - **工单操作**: - 待接工单:点击弹出接单确认对话框 - 已接工单:点击进入处理详情页(可编辑) - 完成工单:点击进入查看详情页(只读) - **刷新功能**:下拉刷新重新加载数据 - **状态标识**: - 在线状态:绿色(在线)、红色(离线/设备异常)、橙色(其他) - 工单状态:红色(待接单)、橙色(处理中)、绿色(已完成) #### 工单详情 (`work-order-detail` 页面) - **只读模式**(已完成工单): - 展示工单基础信息 - 展示故障原因 - 展示更换物料清单 - 展示现场图片(支持预览) - **编辑模式**(处理中工单): - **故障原因选择**:预设选项(设备断电、光纤中断、硬件故障等)+ 自定义输入 - **经纬度定位**:调用 `wx.getLocation` 获取 GCJ02 坐标 - **硬件更换**: - 开关控制是否需要更换硬件 - 从物料库选择更换物料及数量 - 现场拍照(最多 3 张) - **提交验证**:故障原因、经纬度为必填项,硬件更换时图片为必填项 ### 2. 物料管理 (`materials` 页面) - 查看当前用户所属区域的物料库存 - 分页加载,支持下拉加载更多 - 显示物料名称、类别、单位、库存数量 ### 3. 个人中心 (`profile` 页面) - 展示当前登录用户信息(UID、头像、昵称、手机号) - 底部导航切换 ### 4. 底部导航栏 - 工单(列表页) - 物料(物料库) - 我的(个人中心) --- ## 🔌 API 接口 所有 API 请求均通过 `utils/api.ts` 封装,统一使用 `wx.request` 发起。 ### 接口列表 | 接口 | 方法 | 说明 | |------|------|------| | `/user/work-orders` | GET | 获取用户工单列表(按状态筛选) | | `/user/accept` | POST | 工程师接单 | | `/user/area-materials` | GET | 获取区域物料列表 | | `/work-order/complete` | POST | 完成工单(multipart/form-data) | ### 请求配置 - **开发环境**:`http://127.0.0.1:8080` - **生产环境**:`http://124.221.197.231:8080` - **超时时间**:15 秒(普通请求),30 秒(图片上传) - **用户 ID**:当前硬编码为 `123456789`(TODO: 接入登录后动态获取) - **图片存储**:MinIO (`http://124.221.197.231:9000/fault-dispatch/`) --- ## 📊 数据模型 ### 工单项 (WorkOrderItem) ```typescript interface WorkOrderItem { id: number; orderNo: string; // 工单编号 monitoringPointName: string; // 监控点名称 onlineStatus: string; // 在线状态(在线/离线/设备异常) orderStatus: number; // 工单状态(1=待接单,2=处理中,3=已完成) areaId: string; areaName?: string; // 区域名称 township: string; // 乡镇 createdAt: string; ipAddress?: string; // IP 地址 statusDuration?: string; // 持续时长 deviceCode?: string; // 设备编码 project?: string; // 项目名称 assigneeUid?: string; // 接单人 UID assigneeName?: string; // 接单人姓名 longitude?: number | null; // 经度 latitude?: number | null; // 纬度 // 已完成工单额外字段 completedAt?: string; // 完成时间 cause?: string; // 故障原因 material?: { material: string; num: number; unit: string }[]; images?: string[]; // 图片 URL 列表 } ``` ### 物料项 (MaterialItem) ```typescript interface MaterialItem { id: string; materialName: string; // 物料名称 materialCategory: string; // 物料类别 materialUnit: string; // 单位 num: number; // 库存数量 } ``` --- ## 🔐 权限配置 小程序已配置位置权限,用于采集故障工单的经纬度定位信息: ```json "permission": { "scope.userLocation": { "desc": "用于采集故障工单的经纬度定位信息" } } ``` --- ## 💻 开发说明 ### 环境要求 - 微信开发者工具 >= 2.32.3 - Node.js(用于 npm 依赖安装) ### 安装依赖 ```bash npm install ``` ### 配置修改 编辑 `miniprogram/utils/config.ts` 修改以下配置: ```typescript const config = { baseUrl: 'http://127.0.0.1:8080', // 后端地址 timeout: 15000, // 请求超时 userId: '123456789', // 用户 ID(待接入登录) minioBase: 'http://124.221.197.231:9000/fault-dispatch/', // 图片地址前缀 }; ``` ### 编译设置 项目已启用以下编译插件(`project.config.json`): - TypeScript 编译 - Less 编译 - ES6 语法支持 - Skyline 渲染器 --- ## 📝 待办事项 (TODO) 1. **用户登录**:当前用户 ID 硬编码,需接入微信登录获取真实用户信息 2. **环境判断**:开发/生产环境判断目前为硬编码,需改为环境变量或构建配置 3. **物料库存更新**:物料更换后需同步更新库存 4. **工单状态同步**:接单/完成后需实时刷新列表 5. **错误处理优化**:部分接口错误提示不够友好 --- ## 📌 版本信息 - **小程序基础库版本**:2.32.3 - **TDesign 版本**:1.15.1 - **miniprogram-api-typings**:2.8.3-1 --- ## 👤 联系方式 项目维护者:金旭 联系电话:19316995736 --- *文档生成时间:2026-09-03* [输入链接说明](http://)