- 新增 auth 模块:jumpToken 代理交换、用户信息获取、JWT 签发 - 三级权限:full(所有权限/数智中心/BI-Leader)、department(BI-Leader-Dep)、personal - 添加 managerId 到车辆数据模型,支持个人级别按 userId 精确过滤 - auth 中间件保护所有 /api/* 端点(跳过 /api/health 和 /api/auth/*) - 所有路由集成 filterByPermission 权限过滤 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
152 lines
3.3 KiB
TypeScript
152 lines
3.3 KiB
TypeScript
export interface VehicleRow {
|
|
id: string;
|
|
车牌号: string;
|
|
vin: string;
|
|
车辆品牌: string;
|
|
车辆型号: string;
|
|
车辆颜色: string;
|
|
租赁公司: string;
|
|
车辆归属状态Label: string | null;
|
|
车辆型号Label: string | null;
|
|
库存区域: string | null;
|
|
车辆租赁状态: string | null;
|
|
车辆租赁状态Label: string | null;
|
|
是否营运: number;
|
|
省: string | null;
|
|
市: string | null;
|
|
纬度: number | null;
|
|
经度: number | null;
|
|
车辆品牌Label: string | null;
|
|
合同ID: number | null;
|
|
合同编码: string | null;
|
|
客户名称: string | null;
|
|
合同归属公司: string | null;
|
|
合同归属部门: string | null;
|
|
主体: string | null;
|
|
项目名称: string | null;
|
|
客户经理: string | null;
|
|
经理ID: string | null;
|
|
}
|
|
|
|
export interface Vehicle {
|
|
id: string;
|
|
plateNumber: string;
|
|
vin: string;
|
|
type: string;
|
|
model: string;
|
|
color: string;
|
|
location: string;
|
|
region: string;
|
|
province: string | null;
|
|
city: string | null;
|
|
status: 'Operating' | 'Inventory' | 'Pending' | 'Abnormal';
|
|
ownership: string;
|
|
rentCompany: string;
|
|
contractNo: string | null;
|
|
customerName: string | null;
|
|
orgName: string | null;
|
|
departmentName: string | null;
|
|
subjectOrg: string | null;
|
|
projectName: string | null;
|
|
customerManager: string | null;
|
|
managerId: string | null;
|
|
brandLabel: string | null;
|
|
}
|
|
|
|
export interface SummaryData {
|
|
totalAssets: number;
|
|
operating: {
|
|
total: number;
|
|
self: number;
|
|
leased: number;
|
|
public: number;
|
|
hanging: number;
|
|
};
|
|
inventory: {
|
|
total: number;
|
|
inStock: number;
|
|
abnormal: number;
|
|
};
|
|
pendingDelivery: number;
|
|
weeklyNew: number;
|
|
weeklyRemoved: number;
|
|
weeklyDelivered: number;
|
|
weeklyReturned: number;
|
|
weeklyReplaced: number;
|
|
}
|
|
|
|
export interface TypeSummary {
|
|
type: string;
|
|
totalAssets: number;
|
|
totalInventory: number;
|
|
totalOperating: number;
|
|
inventoryRegions: Record<string, number>;
|
|
pending: number;
|
|
weeklyDelivered: number;
|
|
weeklyReturned: number;
|
|
weeklyReplaced: number;
|
|
models: ModelSummary[];
|
|
}
|
|
|
|
export interface ModelSummary {
|
|
model: string;
|
|
total: number;
|
|
inventory: number;
|
|
inventoryRegions: Record<string, number>;
|
|
pending: number;
|
|
operating: number;
|
|
weeklyDelivered: number;
|
|
weeklyReturned: number;
|
|
weeklyReplaced: number;
|
|
batches: BatchSummary[];
|
|
}
|
|
|
|
export interface BatchSummary {
|
|
batch: string;
|
|
total: number;
|
|
inventory: number;
|
|
inventoryRegions: Record<string, number>;
|
|
pending: number;
|
|
operating: number;
|
|
weeklyDelivered: number;
|
|
weeklyReturned: number;
|
|
weeklyReplaced: number;
|
|
}
|
|
|
|
export interface BatchGroup {
|
|
batch: string;
|
|
total: number;
|
|
inventory: number;
|
|
inventoryRegions: Record<string, number>;
|
|
pending: number;
|
|
operating: number;
|
|
weeklyDelivered: number;
|
|
weeklyReturned: number;
|
|
weeklyReplaced: number;
|
|
models: {
|
|
model: string;
|
|
type: string;
|
|
total: number;
|
|
inventory: number;
|
|
inventoryRegions: Record<string, number>;
|
|
pending: number;
|
|
operating: number;
|
|
weeklyDelivered: number;
|
|
weeklyReturned: number;
|
|
weeklyReplaced: number;
|
|
}[];
|
|
}
|
|
|
|
export interface InventoryTypeSummary {
|
|
type: string;
|
|
totalAssets: number;
|
|
totalInventory: number;
|
|
models: {
|
|
model: string;
|
|
totalAssets: number;
|
|
totalInventory: number;
|
|
regions: Record<string, number>;
|
|
}[];
|
|
regionSubtotals: Record<string, number>;
|
|
}
|