邮轮穿舱件管理系统-小程序端函数参考文档
文档概述
本文档详细记录了邮轮穿舱件管理系统小程序端的核心函数、方法参数、返回值类型和异常处理机制。系统基于微信小程序平台开发,采用UniApp框架,主要功能包括任务管理、用户认证、数据统计等。
系统架构概览
flowchart TD
A[小程序入口] --> B[App.js]
B --> C[页面模块]
B --> D[工具模块]
B --> E[API模块]
C --> C1[首页]
C --> C2[登录页]
C --> C3[任务管理页]
C --> C4[个人中心]
D --> D1[事件总线]
D --> D2[加密工具]
D --> D3[通用工具]
E --> E1[请求封装]
E --> E2[接口配置]
核心模块函数参考
1. 应用入口模块 (App.js)
文件引用: app.js
1.1 应用生命周期函数
onLaunch()
- 功能: 应用初始化函数
- 参数: 无
- 返回值: void
- 异常处理: 捕获微信更新管理器异常
- 核心逻辑:
- 初始化微信更新管理器
- 设置应用更新监听器
- 初始化WebSocket连接
onLaunch() {
const updateManager = wx.getUpdateManager();
updateManager.onCheckForUpdate((res) => {
// 检查更新回调
});
updateManager.onUpdateReady(() => {
// 更新准备就绪回调
wx.showModal({...});
});
this.connect();
}
1.2 全局数据管理函数
setUnreadNum(unreadNum)
- 功能: 设置全局未读消息数量
- 参数:
unreadNum: number - 未读消息数量
- 返回值: void
- 事件触发: 发送'unread-num-change'事件
setUnreadNum(unreadNum) {
this.globalData.unreadNum = unreadNum;
this.eventBus.emit('unread-num-change', unreadNum);
}
1.3 WebSocket管理函数
connect()
- 功能: 初始化WebSocket连接
- 参数: 无
- 返回值: void
- 当前状态: 暂未实现具体连接逻辑
2. 首页模块 (pages/home/index.js)
文件引用: pages/home/index.js
2.1 页面生命周期函数
onLoad()
- 功能: 页面加载初始化
- 参数: 无
- 返回值: void
- 调用链: 调用
initPage()
onShow()
- 功能: 页面显示时刷新数据
- 参数: 无
- 返回值: void
- 调用链: 调用
loadStatsData()
2.2 数据加载函数
initPage()
- 功能: 页面初始化总控函数
- 参数: 无
- 返回值: Promise
- 异常处理: 捕获所有初始化异常,显示错误提示
- 核心逻辑:
- 设置加载状态
- 并行加载统计数据和文章列表
- 统一异常处理
async initPage() {
this.setData({ loading: true });
try {
await Promise.all([
this.loadStatsData(),
this.loadArticleList()
]);
} catch (error) {
console.error('页面初始化失败:', error);
this.showMessage('页面加载失败,请重试', 'error');
} finally {
this.setData({ loading: false });
}
}
loadStatsData()
- 功能: 加载统计数据
- 参数: 无
- 返回值: Promise
- 异常处理:
- 401错误:用户未登录状态处理
- 其他错误:显示错误提示并回退默认数据
- 业务逻辑:
- 先验证用户登录状态
- 请求统计数据接口
- 接口失败时使用Mock数据
loadArticleList()
- 功能: 加载文章列表
- 参数: 无
- 返回值: Promise
- 数据源: 使用Mock数据,保留API接口调用代码
2.3 事件处理函数
onNavigationClick(event)
- 功能: 导航菜单点击处理
- 参数:
event: Object - 微信事件对象
- 返回值: void
- 异常处理: 页面跳转失败时显示提示
onArticleClick(event)
- 功能: 文章项点击处理
- 参数:
event: Object - 微信事件对象
- 返回值: void
- 跳转目标: 文章详情页面
showMessage(content, theme)
- 功能: 统一消息提示函数
- 参数:
content: string - 提示内容theme: string - 主题类型,默认'info'
- 返回值: void
- 依赖: TDesign Message组件
3. 登录模块 (pages/login/login.js)
文件引用: pages/login/login.js
3.1 表单处理函数
changeSubmit()
- 功能: 动态更新提交按钮状态
- 参数: 无
- 返回值: void
- 触发条件: 账号、密码输入和协议勾选状态变化
onCheckChange(e)
- 功能: 用户协议选择变更处理
- 参数:
e: Object - 事件对象,包含detail.value
- 返回值: void
onAccountChange(e) / onPasswordChange(e)
- 功能: 账号密码输入变更处理
- 参数:
e: Object - 事件对象,包含detail.value
- 返回值: void
3.2 登录认证函数
passwordLogin()
- 功能: 密码登录处理
- 参数: 无
- 返回值: Promise
- 认证流程:
- 调用
wx.login()获取code - 发送账号密码和code到后端验证
- 成功则存储token并跳转
- 调用
- 异常处理: 网络错误和认证失败分别处理
async passwordLogin() {
try {
const loginRes = await wx.login();
if (!loginRes.code) {
// 微信授权失败处理
return;
}
const res = await request('/wechat/loginWithUsrPwd', 'post', {
username: this.data.passwordInfo.account,
password: this.data.passwordInfo.password,
code: loginRes.code
});
if (res) {
await wx.setStorageSync('access_token', res.access_token);
wx.switchTab({ url: '/pages/my/index' });
}
} catch (error) {
// 错误处理
}
}
wechatLogin()
- 功能: 微信一键登录处理
- 参数: 无
- 返回值: Promise
- 特点: 无需用户信息授权,仅使用code自动注册登录
4. 任务管理模块 (pages/taskPage/index.js)
文件引用: pages/taskPage/index.js
4.1 数据加载函数
loadUserInfo()
- 功能: 加载用户信息
- 参数: 无
- 返回值: Promise
- 调用链: 成功加载后调用
loadUserScopes()
loadUserScopes(userId)
- 功能: 加载用户权限范围
- 参数:
userId: number - 用户ID
- 返回值: Promise
- 数据处理: 将权限代码转换为可读文本
loadTaskList()
- 功能: 加载工单列表
- 参数: 无
- 返回值: Promise
- 数据处理:
- 添加状态文本映射
- 格式化时间显示
- 保存原始数据用于筛选
4.2 工具函数
getStatusText(status)
- 功能: 状态代码转文本
- 参数:
status: string - 状态代码
- 返回值: string - 状态文本
- 映射关系:
- 'open' → '待处理'
- 'running' → '进行中'
- 'closed' → '已完成'
- 'issue' → '有问题'
getTypeText(type)
- 功能: 类型代码转文本
- 参数:
type: string - 类型代码
- 返回值: string - 类型文本
- 映射关系:
- 'inspect' → '检查任务'
- 'maintenance' → '维修任务'
formatTime(timeString)
- 功能: 时间格式化
- 参数:
timeString: string - ISO时间字符串
- 返回值: string - 格式化后的时间字符串
- 格式: "YYYY-MM-DD HH:mm"
4.3 筛选功能函数
applyFilter()
- 功能: 应用任务筛选
- 参数: 无
- 返回值: void
- 筛选逻辑:
- 'all': 显示所有任务
- 'assigned': 仅显示分配给当前用户的任务
- 数据兼容: 支持多种ticket_tos字段格式处理
onFilterChange(e)
- 功能: 筛选条件变更处理
- 参数:
e: Object - 事件对象
- 返回值: void
5. API请求模块 (api/request.js)
文件引用: api/request.js
5.1 核心请求函数
request(url, method, data)
- 功能: 统一网络请求封装
- 参数:
url: string - 请求路径method: string - HTTP方法,默认'GET'data: Object - 请求数据,默认空对象
- 返回值: Promise
- 特性:
- 自动添加Bearer Token认证
- 支持Mock延迟模拟
- 统一错误处理机制
function request(url, method = 'GET', data = {}) {
const header = {
'content-type': 'application/json',
};
// Token处理
const tokenString = wx.getStorageSync('access_token');
if (tokenString) {
header.Authorization = `Bearer ${tokenString}`;
}
return new Promise((resolve, reject) => {
wx.request({
url: baseUrl + url,
method,
data,
header,
success(res) {
if (res.statusCode === 200 || res.statusCode === 201) {
resolve(res.data);
} else {
reject({
statusCode: res.statusCode,
message: res.data?.detail || '请求失败',
data: res.data
});
}
},
fail(err) {
reject(err);
}
});
});
}
6. 工具模块
6.1 事件总线 (utils/eventBus.js)
文件引用: utils/eventBus.js
createBus()
- 功能: 创建事件总线实例
- 参数: 无
- 返回值: Object - 事件总线对象
- 方法:
on(event, callback): 事件监听off(event, callback): 事件取消监听emit(event, ...args): 事件触发
6.2 加密工具 (utils/crypto.js)
文件引用: utils/crypto.js
md5(str)
- 功能: MD5加密函数(基础实现)
- 参数:
str: string - 需要加密的字符串
- 返回值: string - 加密后的MD5字符串
- 备注: 当前为基础实现,生产环境建议使用专业加密库
系统依赖关系图
flowchart TD
App[App.js] -->|导入| EventBus[eventBus.js]
App -->|导入| Config[config/index.js]
Home[首页] -->|导入| Request[request.js]
Home -->|导入| TDesign[tdesign-miniprogram]
Login[登录页] -->|导入| Request
Login -->|导入| Crypto[crypto.js]
TaskPage[任务页] -->|导入| Request
Request -->|依赖| Config
subgraph 工具模块
EventBus
Crypto
Util[util.js]
end
subgraph 第三方依赖
TDesign
WeChatSDK[微信SDK]
end
异常处理机制索引
1. 网络请求异常
- 状态码异常: 非200/201状态码统一封装为reject
- 网络异常: wx.request的fail回调直接reject
- Token处理: 自动从存储获取,缺失不影响基础请求
2. 用户认证异常
- 401状态: 识别为未登录状态,显示登录提示
- 授权拒绝: 微信登录授权被拒的专门处理
- Token过期: 通过401状态码触发重新登录
3. 页面跳转异常
- 路径不存在: 捕获跳转失败,显示功能暂未开放提示
- 参数错误: 通过try-catch包装导航操作
4. 数据加载异常
- 接口失败: 显示错误提示并使用Mock数据降级
- 数据格式异常: 类型检查和默认值处理
- 并行加载: Promise.all的统一异常捕获
性能优化建议
- 请求优化: 使用Promise.all进行并行数据加载
- 数据缓存: 合理使用本地存储减少重复请求
- 组件懒加载: 大型组件按需加载
- 图片优化: 使用合适的图片格式和压缩
- 内存管理: 及时清理事件监听器和定时器
参考文件列表
- app.js - 应用入口文件
- pages/home/index.js - 首页模块
- pages/login/login.js - 登录模块
- pages/taskPage/index.js - 任务管理模块
- api/request.js - API请求封装
- utils/eventBus.js - 事件总线工具
- utils/crypto.js - 加密工具函数
- config/index.js - 配置文件
本文档详细记录了系统的核心函数实现,为后续开发维护提供了完整的技术参考。