dingdanquanliucheng/frontend/mini-manager/app.js
taiyi 0981617a2e 为前端全部 63 个文件添加中文注释
覆盖四个前端应用:
- web-admin:App.vue、mockApi.js、router.js 等基础设施 + 19 个页面/组件
- web-sales:App.vue、mockApi.js、store.js 等基础设施 + 11 个页面/组件
- mini-driver:小程序框架 + 5 个页面
- mini-manager:小程序框架 + 8 个页面

注释内容:
- 每个文件模块级职责说明
- 每个函数 JSDoc 注释(作用、参数、返回值)
- 路由配置逐项标注用途和权限
- Vue 模板复杂逻辑行内注释

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 07:51:43 +08:00

117 lines
3.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* mini-manager 微信小程序应用入口
* 职责:初始化管理层小程序全局状态、网络请求封装、登录校验和订单状态映射。
* 提供全局 Token 管理、请求拦截401 自动跳转登录)和状态栏高度适配。
*/
const { apiBaseUrl } = require("./config");
App({
/** 全局共享数据 */
globalData: {
appName: "mini-manager",
apiBaseUrl,
authToken: "",
managerUser: null,
statusBarHeight: 0,
navBarHeight: 0,
},
/**
* 小程序启动时执行的初始化逻辑
* 获取系统信息适配状态栏高度,从本地缓存恢复登录 Token 和用户信息
*/
onLaunch() {
const sysInfo = wx.getSystemInfoSync();
this.globalData.statusBarHeight = sysInfo.statusBarHeight || 20;
this.globalData.navBarHeight = 44;
const token = wx.getStorageSync("manager_token");
const user = wx.getStorageSync("manager_user");
if (token) {
this.globalData.authToken = token;
}
if (user) {
this.globalData.managerUser = user;
}
},
/**
* 封装的网络请求方法,自动拼接基础 URL 和 Authorization 头
* @param {Object} options - 请求配置对象
* @param {string} options.url - 请求路径(不含基础 URL
* @param {string} [options.method] - HTTP 方法GET/POST 等)
* @param {Object} [options.data] - 请求体数据
* @param {Object} [options.header] - 额外请求头
* @returns {Promise<Object>} 解析后的响应数据
*/
request(options) {
const token = this.globalData.authToken;
return new Promise((resolve, reject) => {
wx.request({
...options,
url: `${this.globalData.apiBaseUrl}${options.url}`,
header: {
"Content-Type": "application/json",
...(token ? { Authorization: `Bearer ${token}` } : {}),
...(options.header || {}),
},
success: (response) => {
const result = response.data || {};
if (response.statusCode === 401) {
// Token 过期或无效,清除登录状态并跳转到登录页
this.globalData.authToken = "";
this.globalData.managerUser = null;
wx.removeStorageSync("manager_token");
wx.removeStorageSync("manager_user");
wx.redirectTo({ url: "/pages/login" });
reject(new Error("登录已过期,请重新登录"));
return;
}
if (response.statusCode >= 400 || result.code !== 0) {
reject(new Error(result.message || `请求失败:${response.statusCode}`));
return;
}
resolve(result.data);
},
fail: (err) => {
reject(new Error("网络请求失败,请检查网络"));
},
});
});
},
/**
* 检查当前是否已登录,未登录则跳转到登录页
* @returns {boolean} 是否已登录
*/
checkLogin() {
if (!this.globalData.authToken) {
wx.redirectTo({ url: "/pages/login" });
return false;
}
return true;
},
/**
* 将订单状态码映射为中文显示文本
* @param {string} status - 订单状态码
* @returns {string} 对应的中文状态名称
*/
mapOrderStatus(status) {
const statusMap = {
pending_approve: "待审批",
cancel_pending: "待取消审批",
cancel_fulfillment_pending: "履约取消审批中",
approved: "已审批",
rejected: "已驳回",
pending_factory: "待发厂",
pending_driver: "待司机接单",
accepted: "已接单",
picked_up: "已揽货",
delivered: "已送达",
canceled: "已取消",
};
return statusMap[status] || status || "-";
}
});