Files
xingrin/frontend/types/subdomain.types.ts
2025-12-12 18:04:57 +08:00

72 lines
2.5 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 { ColumnDef } from "@tanstack/react-table"
import { PaginationParams, PaginationInfo } from "./common.types"
import type { Organization } from "./organization.types"
import type { BatchCreateResponse } from "./api-response.types"
import type { Port } from "./ip-address.types"
// 子域名相关类型定义(由原 domain.types.ts 重命名而来)
// 基础子域名类型(与前端驼峰命名规范一致)
// 注意:后端返回 snake_case但响应拦截器会自动转换为 camelCase
export interface Subdomain {
id: number
name: string
discoveredAt: string // 发现时间
}
// 获取子域名列表请求参数
export interface GetSubdomainsParams extends PaginationParams {
organizationId: number
}
// 获取子域名列表响应(字段 domains 保持与后端一致)
export interface GetSubdomainsResponse {
domains: Subdomain[]
total: number
page: number
pageSize: number // [OK] 使用驼峰命名
totalPages: number // [OK] 使用驼峰命名
}
// 获取所有子域名请求参数
// 后端固定按更新时间降序排列,不支持自定义排序
export interface GetAllSubdomainsParams {
page?: number
pageSize?: number
search?: string
}
// 获取所有子域名响应(字段 domains 保持与后端一致)
export interface GetAllSubdomainsResponse {
domains: Subdomain[]
total: number
page: number
pageSize: number
totalPages: number
}
// 获取单个子域名详情响应(后端直接返回对象)
export type GetSubdomainByIDResponse = Subdomain
// 子域名数据表格组件属性类型定义
export interface SubdomainDataTableProps {
data: Subdomain[] // 子域名数据数组
columns: ColumnDef<Subdomain>[] // 列定义数组
onAddNew?: () => void // 添加新子域名的回调函数
onBulkDelete?: () => void // 批量删除回调函数
onSelectionChange?: (selectedRows: Subdomain[]) => void // 选中行变化回调
searchPlaceholder?: string // 搜索框占位符
searchColumn?: string // 搜索的列名
// 添加分页相关属性
pagination?: {
pageIndex: number
pageSize: number
}
setPagination?: (pagination: { pageIndex: number; pageSize: number }) => void
paginationInfo?: PaginationInfo
onPaginationChange?: (pagination: { pageIndex: number; pageSize: number }) => void
}
// 子域名批量创建响应(复用通用类型)
export type BatchCreateSubdomainsResponse = BatchCreateResponse