All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 新增tab导航(总览/按部门/按区域/按客户)+ 移动端底部导航 - 新增recharts柱状图(区域分布)和饼图(客户分布) - 新增库存统计模块(按区域/按车型,筛选面板) - 对接ln_vehicle_day_mileage表实现出勤率和日均里程 - 区域运营支持区域→城市→车型三级下钻 - 修复ownership取字段错误(改用truck_rent_status) - 修复部门统计闲置定义(当日无行驶里程) - 修复区域图表"其他"重复问题(后端Top N合并) - 修复城市名空值降级(resolveCity取province) - 修复下钻数据不一致(统一category/vehicleType参数) - 扩展/list端点支持大区过滤和未分配匹配 - 所有筛选改为searchable datalist Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
192 lines
3.8 KiB
TypeScript
192 lines
3.8 KiB
TypeScript
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 BatchSummary {
|
|
batch: string;
|
|
total: number;
|
|
inventory: number;
|
|
inventoryRegions: Record<string, number>;
|
|
pending: number;
|
|
operating: number;
|
|
weeklyDelivered: number;
|
|
weeklyReturned: number;
|
|
weeklyReplaced: number;
|
|
}
|
|
|
|
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 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 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>;
|
|
}
|
|
|
|
export interface VehicleListItem {
|
|
id: number;
|
|
plateNumber: string;
|
|
vin: string;
|
|
type: string;
|
|
model: string;
|
|
location: string;
|
|
province: string | null;
|
|
city: string | null;
|
|
status: string;
|
|
ownership: string;
|
|
contractNo: string | null;
|
|
customerName: string | null;
|
|
subjectOrg: string | null;
|
|
departmentName: string | null;
|
|
customerManager: string | null;
|
|
brandLabel: string | null;
|
|
orgName: string | null;
|
|
}
|
|
|
|
export interface RegionalInventoryStats {
|
|
region: string;
|
|
city: string;
|
|
brand: string;
|
|
type: string;
|
|
model: string;
|
|
batch: string;
|
|
quantity: number;
|
|
}
|
|
|
|
export interface ManagerStats {
|
|
manager: string;
|
|
department: string;
|
|
t4_5: number;
|
|
t4_5c: number;
|
|
t18: number;
|
|
t49: number;
|
|
trailer: number;
|
|
other: number;
|
|
total: number;
|
|
}
|
|
|
|
export interface DeptGroup {
|
|
department: string;
|
|
totalAssets: number;
|
|
operatingCount: number;
|
|
idleCount: number;
|
|
attendanceRate: number;
|
|
avgMileage: number;
|
|
managers: ManagerStats[];
|
|
}
|
|
|
|
export interface RegionTypeBreakdown {
|
|
type: string;
|
|
total: number;
|
|
operating: number;
|
|
inventory: number;
|
|
customers: string[];
|
|
}
|
|
|
|
export interface RegionCityGroup {
|
|
city: string;
|
|
totalAssets: number;
|
|
operatingCount: number;
|
|
pendingCount: number;
|
|
customers: string[];
|
|
typeBreakdown: RegionTypeBreakdown[];
|
|
}
|
|
|
|
export interface RegionGroup {
|
|
region: string;
|
|
totalAssets: number;
|
|
operatingCount: number;
|
|
pendingCount: number;
|
|
customers: string[];
|
|
typeBreakdown: RegionTypeBreakdown[];
|
|
cities: RegionCityGroup[];
|
|
}
|
|
|
|
export interface CustomerStats {
|
|
customer: string;
|
|
manager: string;
|
|
brand: string;
|
|
department: string;
|
|
region: string;
|
|
city: string;
|
|
t4_5: number;
|
|
t4_5c: number;
|
|
t18: number;
|
|
t49: number;
|
|
trailer: number;
|
|
other: number;
|
|
total: number;
|
|
}
|