fix: 部门出勤/闲置下钻改为基于当日里程区分
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- 后端/list新增attendance参数(active/idle),查询当日里程表区分 出勤(mileage>0)和闲置(mileage=0),仅对Operating车辆生效 - 前端部门Tab出勤/闲置点击改用attendance:'active'/'idle'替代 原来错误的category:'Operating'/'Inventory' - 修复department='公务车'过滤:匹配departmentName为null的车辆 - 前端API层新增attendance参数传递 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -858,9 +858,22 @@ const VEHICLE_TYPE_FILTERS: Record<string, (v: Vehicle) => boolean> = {
|
||||
// GET /api/vehicles/list — flat list with optional filters
|
||||
app.get('/list', async (c) => {
|
||||
const vehicles = await getVehicles();
|
||||
const { batch, model, location, status, category, vehicleType, manager, customer, isColdChain, isTrailer, department } = c.req.query();
|
||||
const { batch, model, location, status, category, vehicleType, manager, customer, isColdChain, isTrailer, department, attendance } = c.req.query();
|
||||
|
||||
let filtered = vehicles;
|
||||
|
||||
// attendance filter: active = today mileage > 0, idle = today mileage = 0 (only for Operating vehicles)
|
||||
if (attendance === 'active' || attendance === 'idle') {
|
||||
const [todayRows] = await pool.query<any[]>(`SELECT plateNumber, dayMileage FROM ln_vehicle_day_mileage WHERE dates = CURDATE()`);
|
||||
const todayMap = new Map<string, number>();
|
||||
for (const row of todayRows as any[]) todayMap.set(row.plateNumber, Number(row.dayMileage));
|
||||
filtered = filtered.filter((v) => v.status === 'Operating');
|
||||
if (attendance === 'active') {
|
||||
filtered = filtered.filter((v) => (todayMap.get(v.plateNumber) || 0) > 0);
|
||||
} else {
|
||||
filtered = filtered.filter((v) => (todayMap.get(v.plateNumber) || 0) === 0);
|
||||
}
|
||||
}
|
||||
if (vehicleType) {
|
||||
if (VEHICLE_TYPE_FILTERS[vehicleType]) {
|
||||
filtered = filtered.filter(VEHICLE_TYPE_FILTERS[vehicleType]);
|
||||
@@ -904,7 +917,7 @@ app.get('/list', async (c) => {
|
||||
filtered = filtered.filter((v) => customer === '未分配客户' ? !v.customerName : v.customerName === customer);
|
||||
}
|
||||
if (department) {
|
||||
filtered = filtered.filter((v) => v.departmentName === department);
|
||||
filtered = filtered.filter((v) => department === '公务车' ? !v.departmentName : v.departmentName === department);
|
||||
}
|
||||
if (isColdChain !== undefined) {
|
||||
const wantCold = isColdChain === 'true';
|
||||
|
||||
Reference in New Issue
Block a user