Files
form-center-front/src/api/module/base.ts
T
chenxing d8f1a1fbfa
build / build (push) Successful in 3m8s
feat(t10-admin): 管理员体系前端——应用设置双 tab+单表单管理员+选人组件移植
- AppSettings.vue 应用设置页(基础/字典两 tab);修复 P86:Tabs 写 :value 而受控 prop 是 modelValue,致 ?tab=dicts 深链静默失效,改后深链实拍生效
- UserCheckModal.vue 自 notice 移植(view-ui-plus+ztree,sources 注入式数据源);public/libs 收录 jquery+ztree 本地件(index.html 引用)
- api/module/admin.ts + mock/adminapi.ts + types/admin.ts;AdminListPanel/FormAdminModal 组件
- routes/menuNav/menuRoute/modulePerms 适配管理员菜单与权限位;tree-icon 图标资源
2026-10-15 20:25:39 +08:00

48 lines
2.1 KiB
TypeScript
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.
import { alovaInstance } from "@/utils/alova/alova-iview";
import type { IModule } from "@/types/Basics";
import type { SchoolTreeNode } from "@/types/admin";
/**
* 基础平台接口(notice/front 的 api/module 形态 + flow-center base.ts 同构):
* 用户信息与已授权模块列表(左导航数据源)。
*
* 模块行在 UserBase 按本应用(app_code=form-center)配置,path 须逐字对上
* router/routes.ts(手册 §2.2 表 v1.5 五行版)。数据范围升级位不再挂在模块行上:
* T10 起由后端管理员两表(school_admin / form_admin)承载,前端只在 /admin/app 的角色设置 tab 维护它。
*
* 写法与 Notice 的一处差异:Notice 用 `new Method<T>(...)`,而 alova 3.5 的 Method 第一个
* 泛型位是 AlovaGenerics(不是响应类型),strict vue-tsc 下报 TS2344;本端改用实例方法
* `alovaInstance.Get<T>()` 拿同一个 Method 对象、走同一套拦截器与信封解包,行为等价。
*/
const BASE = "/api/base";
class BaseApi {
/** 当前登录用户信息 */
getUserInfo() {
return alovaInstance.Get(`${BASE}/GetUserInfo`);
}
/**
* 当前用户已授权的模块树(左侧菜单数据源)。
*
* @param appCode 可选目标应用(快应用上下文 /app/{appCode}/ 要的是<b>那个应用</b>的树,
* 参数名按执行手册 §5 P2 定稿 appCode)。UserBase 侧 H4 未上线时后端
* 返回空树并打 warn——前端据此显示空导航,<b>不得回落本应用树</b>(P3 裁决)。
*/
getUserMod(appCode?: string) {
return alovaInstance.Get<IModule[]>(`${BASE}/GetUserMod`, {
params: appCode ? { appCode } : undefined
});
}
/**
* 本校组织树(教师版)——选人弹窗 UserCheckModal 的 loader,形态同 notice。
* 没有 schId 入参:域只从会话推导,因此候选天然限在本校树里(跨校的人在接口层就给不出来)。
*/
getSchoolAll() {
return alovaInstance.Get<SchoolTreeNode[]>(`${BASE}/GetSchoolAll`);
}
}
export const baseApi = new BaseApi();