types.ts 1.72 KB
// REQ-USR-004: 前端跨 task 共享类型契约(对齐 docs/05 § REQ-USR-004 / spec § 4)

/** 登录用户(对齐 Result<{ token, user }> 的 user 字段) */
export interface AuthUser {
  id: number;
  sUserName: string;
  sUserType: string;
  sLanguage: string;
}

/** POST /api/usr/login 请求体 */
export interface LoginPayload {
  sUserName: string;
  password: string;
  companyId: number;
}

/** POST /api/usr/login 成功响应(已拆 Result.data) */
export interface LoginResult {
  token: string;
  user: AuthUser;
}

/** GET /api/usr/companies 列表项(登录「版本」下拉,D8;sVersion 可空) */
export interface CompanyOption {
  id: number;
  sCompanyName: string;
  sVersion: string | null;
}

// === REQ-USR-003 用户列表查询契约(FE-03) ===

/**
 * 用户列表行 VO(已在 api 层把 docs/05 中文键 `员工名`/`部门` 归一为 ASCII
 * `employeeName`/`departmentName`,组件/列定义统一用 ASCII 键,D-PLAN-2 / spec D9)。
 */
export interface UserVO {
  id: number;
  sUserName: string;
  employeeName: string | null;
  sUserNo: string | null;
  departmentName: string | null;
  sUserType: string;
  sLanguage: string;
  iIsVoid: number;
  tLastLoginDate: string | null;
  sCreator: string;
  tCreateDate: string;
}

/** 统一分页返回体(docs/04 § 1.4 / § 3.2) */
export interface PageResult<T> {
  records: T[];
  total: number;
  pageNum: number;
  pageSize: number;
}

/**
 * GET /api/usr/users 查询参数(提交给后端的 query)。
 * `queryValue` 为空字符串时由 listUsers 省略(空为全部,BR3)。
 */
export interface UserListQuery {
  queryField?: string;
  matchType?: string;
  queryValue?: string;
  pageNum: number;
  pageSize: number;
}