You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中.some()返回结果异常,如何修正调度状态类判断逻辑?

问题修复:卡车调度状态判断函数逻辑错误

问题根源

  1. 逻辑运算符误用:第二个if条件的判断逻辑存在错误,原代码中x.status === abp.enums.dispatchStatus.created || abp.enums.dispatchStatus.sent 等价于 (x.status === 0) || 1——因为abp.enums.dispatchStatus.sent的值是1,属于JavaScript中的真值,所以这个条件永远为true,不管卡车实际状态是什么,都会直接返回schedule-dispatch-status-lgreen,导致后面的判断分支完全无法执行。
  2. 枚举键名拼写不一致:枚举里定义的取消状态是美式拼写canceled,但函数里判断的是英式拼写cancelled,这会导致取消状态无法被正确识别。

修复后的代码

function getScheduleTruckDispatchStatusClass(truck) {
    if (truck.dispatches === undefined || truck.dispatches === 0) {
        return 'schedule-dispatch-status-inactive';
    }
    // 修正逻辑:每个状态都要和x.status做单独比较
    if (truck.dispatches.some(x => x.status === abp.enums.dispatchStatus.created || x.status === abp.enums.dispatchStatus.sent)) {
        return 'schedule-dispatch-status-lgreen';
    }
    if (truck.dispatches.some(x => x.status === abp.enums.dispatchStatus.acknowledged || x.status === abp.enums.dispatchStatus.loaded)) {
        return 'schedule-dispatch-status-dgreen';
    }
    if (truck.dispatches.some(x => x.status === abp.enums.dispatchStatus.completed)) {
        return 'schedule-dispatch-status-active';
    }
    // 修正拼写:与枚举键名保持一致
    if (truck.dispatches.some(x => x.status === abp.enums.dispatchStatus.canceled)){
        return 'schedule-dispatch-status-hidden';
    }
    return '';
}

额外优化建议

可以把状态与类名的映射做成配置对象,让代码更易维护,后续新增状态时无需修改判断逻辑:

const statusClassMap = [
    { statuses: [abp.enums.dispatchStatus.created, abp.enums.dispatchStatus.sent], class: 'schedule-dispatch-status-lgreen' },
    { statuses: [abp.enums.dispatchStatus.acknowledged, abp.enums.dispatchStatus.loaded], class: 'schedule-dispatch-status-dgreen' },
    { statuses: [abp.enums.dispatchStatus.completed], class: 'schedule-dispatch-status-active' },
    { statuses: [abp.enums.dispatchStatus.canceled], class: 'schedule-dispatch-status-hidden' },
];

function getScheduleTruckDispatchStatusClass(truck) {
    if (truck.dispatches === undefined || truck.dispatches === 0) {
        return 'schedule-dispatch-status-inactive';
    }
    for (const mapItem of statusClassMap) {
        if (truck.dispatches.some(x => mapItem.statuses.includes(x.status))) {
            return mapItem.class;
        }
    }
    return '';
}

内容的提问来源于stack exchange,提问作者Eugene Sukh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:24:59