types.ts 1.57 KB
export interface ApiResponse<T> {
  code: number
  message: string
  data: T
  timestamp: number
}

export interface UserInfo {
  iIncrement: number
  sUserNo: string
  sUserName: string
  sUserType: string
  sLanguage: string
}

export interface LoginRequest {
  sUserName: string
  sPassword: string
  sVersion: 'standard'
}

export interface LoginResponse {
  accessToken: string
  expiresIn: number
  user: UserInfo
}

export interface UserListItem {
  iIncrement: number
  sUserName: string
  sStaffName: string | null
  sUserNo: string
  sDepartment: string | null
  sUserType: string
  sLanguage: string
  bDeleted: boolean
  tLastLoginDate: string | null
  sCreatedBy: string | null
  tCreateDate: string | null
}

export interface UserListPage {
  total: number
  list: UserListItem[]
  pageNum: number
  pageSize: number
}

export type QueryField = 'username' | 'userno' | 'staff' | 'department' | 'usertype' | 'language' | 'deleted'
export type MatchType = 'contains' | 'equals' | 'startsWith' | 'endsWith'

export interface UserQuery {
  pageNum: number
  pageSize: number
  queryField?: QueryField
  matchType?: MatchType
  queryValue?: string
}

export interface UserCreate {
  sUserNo: string
  sUserName: string
  iStaffId?: number | null
  sUserType: string
  sLanguage: string
  bCanModifyDocs?: boolean
  permissionCategoryIds?: number[]
}

export interface UserUpdate {
  iStaffId?: number | null
  sUserType: string
  sLanguage: string
  bCanModifyDocs?: boolean
  permissionCategoryIds?: number[]
}

export interface ErrorPayload {
  cooldownSeconds?: number
  [key: string]: unknown
}