// @/utils/alova-iview.ts import { createBschAlova } from "./alova-core"; import { Message } from "view-ui-plus"; import conf from "@/assets/config/host.config"; import { describeFlowError } from "@/utils/flowError"; /* 全局 loading 遮罩实例 */ let spinInstance: any = null; /* 主动关闭 loading */ function closeLoading() { if (spinInstance) { Message.destroy(); spinInstance = null; } } const baseUrl = conf.serviceHost; /* 创建带 View Design UI 的 Alova 实例 */ export const alovaInstance = createBschAlova(baseUrl, { injectHeaders(method) { // currentRole: encodeURI(JSON.stringify({ userId, roleId, schId: schoolId })), if (localStorage.getItem("currentRole") != null) { method.config.headers["currentRole"] = localStorage.getItem("currentRole") as string; } }, /* 2. 加载动画 – View Design Spin */ onLoadingStart() { spinInstance = Message.loading("加载中..."); }, onLoadingEnd: closeLoading, /* 全局兜底提示(F05):只有带 bizCode 的业务信封原文才回显, HTTP 状态文本/异常形态/无凭据文本一律换成不误导的通用话术(堆栈/SQL/令牌不进页面) */ onBizError(msg: string, err?: unknown) { const text = describeFlowError(err ?? msg); if (!!text) Message.error(text); }, onHttpError(msg: string, err?: unknown) { Message.error({ title: "请求未完成", content: describeFlowError(err ?? msg) }); }, });