Vue3 + Vite + view-ui-plus 前端源码,含流程工作台、实例详情、 任务处理、管理端(定义/实例/映射/回调)等页面。 保留远程 .gitea/workflows/build.yml CI 配置。
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { Method } from "alova";
|
||||
import { alovaInstance } from "@/utils/alova/alova-iview";
|
||||
import type { SchoolTreeNode } from "@/types/svc";
|
||||
|
||||
/**
|
||||
* 基础平台接口(Notice baseApi 平移):用户信息与已授权模块列表(菜单渲染数据源)。
|
||||
* 模块清单在 UserBase 按本应用 appKey 配置(app_module),按登录人过滤下发。
|
||||
*/
|
||||
const BASE = "/api/base";
|
||||
|
||||
function get<T = any>(url: string, params?: Record<string, any>): Method<T> {
|
||||
return new Method<T>("GET", alovaInstance, url, { params });
|
||||
}
|
||||
|
||||
class BaseApi {
|
||||
/** 当前登录用户信息 */
|
||||
getUserInfo() {
|
||||
return get<SchoolTreeNode>(`${BASE}/GetUserInfo`);
|
||||
}
|
||||
/** 当前用户已授权的模块列表(左侧菜单数据源) */
|
||||
getUserMod() {
|
||||
return get<SchoolTreeNode[]>(`${BASE}/GetUserMod`);
|
||||
}
|
||||
}
|
||||
|
||||
export const baseApi = new BaseApi();
|
||||
@@ -0,0 +1,142 @@
|
||||
import { Method } from "alova";
|
||||
import { alovaInstance } from "@/utils/alova/alova-iview";
|
||||
|
||||
/**
|
||||
* 流程中心用户面/管理面接口(/api/flow/**)。
|
||||
* 响应 {code,msg,data} 由 alova 实例统一解包(code!=0 抛错提示)。
|
||||
*/
|
||||
const ROOT = "/api/flow";
|
||||
|
||||
function get<T = any>(url: string, params?: Record<string, any>): Method<T> {
|
||||
return new Method<T>("GET", alovaInstance, url, { params });
|
||||
}
|
||||
|
||||
function post<T = any>(url: string, body?: any): Method<T> {
|
||||
return new Method<T>("POST", alovaInstance, url, { body: body ?? {} });
|
||||
}
|
||||
|
||||
/** 状态枚举(后端 FlwEnums 口径) */
|
||||
export const INSTANCE_STATUS: Record<number, string> = {
|
||||
10: "审批中",
|
||||
20: "已完成",
|
||||
30: "已拒绝",
|
||||
40: "已撤回",
|
||||
};
|
||||
|
||||
export const TASK_STATUS: Record<number, string> = {
|
||||
0: "待办",
|
||||
1: "同意",
|
||||
2: "拒绝",
|
||||
3: "失效",
|
||||
};
|
||||
|
||||
class FlowApi {
|
||||
// ==================== 用户面 ====================
|
||||
/** 我的待办 */
|
||||
todo(params: { page?: number; size?: number }) {
|
||||
return get(`${ROOT}/todo`, params);
|
||||
}
|
||||
/** 我的已办 */
|
||||
done(params: { page?: number; size?: number }) {
|
||||
return get(`${ROOT}/done`, params);
|
||||
}
|
||||
/** 我提交的办件 */
|
||||
my(params: { status?: number; page?: number; size?: number }) {
|
||||
return get(`${ROOT}/my`, params);
|
||||
}
|
||||
/** 办件详情(提交人/办理人/本校管理员可见) */
|
||||
detail(instanceId: number | string) {
|
||||
return get(`${ROOT}/instance/${instanceId}`);
|
||||
}
|
||||
/** 任务定位办件详情(办理页 /task/:taskId 数据源) */
|
||||
taskDetail(taskId: number | string) {
|
||||
return get(`${ROOT}/task/${taskId}/detail`);
|
||||
}
|
||||
/** 同意 */
|
||||
approve(taskId: number | string, opinion?: string) {
|
||||
return post(`${ROOT}/task/${taskId}/approve`, { opinion: opinion || null });
|
||||
}
|
||||
/** 拒绝(opinion 必填) */
|
||||
reject(taskId: number | string, opinion: string) {
|
||||
return post(`${ROOT}/task/${taskId}/reject`, { opinion });
|
||||
}
|
||||
/** 撤回(提交人;仅尚无任务被办理时) */
|
||||
withdraw(instanceId: number | string) {
|
||||
return post(`${ROOT}/instance/${instanceId}/withdraw`);
|
||||
}
|
||||
/** 催办(提交人/管理员) */
|
||||
urge(instanceId: number | string) {
|
||||
return post(`${ROOT}/instance/${instanceId}/urge`);
|
||||
}
|
||||
|
||||
// ==================== 用户面:流程示意图 ====================
|
||||
/** 流程示意图(flowGuid=最高已发布版;instanceId=办件 def 快照版;mode=dept|user|缺省 auto) */
|
||||
diagram(params: { flowGuid?: string; instanceId?: number | string; mode?: string }) {
|
||||
return get(`${ROOT}/diagram`, params);
|
||||
}
|
||||
|
||||
// ==================== 管理面:流程定义 ====================
|
||||
defList() {
|
||||
return get(`${ROOT}/admin/def/list`);
|
||||
}
|
||||
defGet(id: number | string) {
|
||||
return get(`${ROOT}/admin/def/get`, { id });
|
||||
}
|
||||
defSave(body: { id?: number; code: string; name: string; contentJson: string }) {
|
||||
return post(`${ROOT}/admin/def/save`, body);
|
||||
}
|
||||
defPublish(id: number | string) {
|
||||
return post(`${ROOT}/admin/def/publish/${id}`);
|
||||
}
|
||||
defOffline(id: number | string) {
|
||||
return post(`${ROOT}/admin/def/offline/${id}`);
|
||||
}
|
||||
defVersions(flowGuid: string) {
|
||||
return get(`${ROOT}/admin/def/versions`, { flowGuid });
|
||||
}
|
||||
/** 流程定义示意图(管理面:defId 任意版本,草稿可预览) */
|
||||
adminDefDiagram(params: { id: number | string; mode?: string }) {
|
||||
return get(`${ROOT}/admin/def/diagram`, params);
|
||||
}
|
||||
|
||||
// ==================== 管理面:办理人映射 ====================
|
||||
mapList(deptKey?: string) {
|
||||
return get(`${ROOT}/admin/map/list`, deptKey ? { deptKey } : undefined);
|
||||
}
|
||||
mapSave(body: { deptKey: string; deptName?: string; userId: number; userName?: string }) {
|
||||
return post(`${ROOT}/admin/map/save`, body);
|
||||
}
|
||||
mapDisable(id: number | string) {
|
||||
return post(`${ROOT}/admin/map/disable/${id}`);
|
||||
}
|
||||
mapLookupUser(userId: number) {
|
||||
return get(`${ROOT}/admin/map/lookupUser`, { userId });
|
||||
}
|
||||
|
||||
// ==================== 管理面:回调注册/日志/死信 ====================
|
||||
regList() {
|
||||
return get(`${ROOT}/admin/callback/regList`);
|
||||
}
|
||||
regStatus(id: number | string, enabled: boolean) {
|
||||
return post(`${ROOT}/admin/callback/regStatus/${id}?enabled=${enabled}`);
|
||||
}
|
||||
regResetSecret(id: number | string) {
|
||||
return post(`${ROOT}/admin/callback/resetSecret/${id}`);
|
||||
}
|
||||
callbackLogs(params: { status?: number; event?: string; instanceId?: number; page?: number; size?: number }) {
|
||||
return get(`${ROOT}/admin/callback/logs`, params);
|
||||
}
|
||||
callbackDead(params: { page?: number; size?: number }) {
|
||||
return get(`${ROOT}/admin/callback/dead`, params);
|
||||
}
|
||||
callbackRepush(ids: number[]) {
|
||||
return post(`${ROOT}/admin/callback/repush`, ids);
|
||||
}
|
||||
|
||||
// ==================== 管理面:办件查询 ====================
|
||||
adminInstances(params: { status?: number; keyword?: string; page?: number; size?: number }) {
|
||||
return get(`${ROOT}/admin/instance/page`, params);
|
||||
}
|
||||
}
|
||||
|
||||
export const flowApi = new FlowApi();
|
||||
Reference in New Issue
Block a user