509f5e163c
运单详情「打卡详情」时间轴按节点关联异常处置:存在未了结异常时显示「异常」标签 与「跟进」链接,全部处理完成时显示「已处理异常」与「详情」链接。异常跟节点走, 节点未打卡也可能有异常。 异常来源改用异常处置表而非打卡行的 exception_flag —— 后者由打卡接口写入且未随 异常上报维护,实测有异常的节点该值仍为 0,原「异常」标签从未显示过。 「已处理」的口径与后端打卡门禁一致(已完成、已撤销都放行),故「处理中」仍算 未处理。 异常节点字段补入各处异常信息:运单详情「异常上报」表格、编辑弹窗、跟进/详情 弹窗,统一放在异常类型之前;表格内空节点显示「-」而不是留白(存量异常无节点)。 过程节点列显示配置中的中文名而非原始 key(库里混存 key 与中文名两种格式)。 删除打卡详情中在途节点的「在途」标签 —— 节点名已表明是在途。
133 lines
5.6 KiB
JavaScript
133 lines
5.6 KiB
JavaScript
// 一级 value 与二级 value 都用中文原文:库里 exception_type 存的是大类中文名、
|
|
// exception_reason 存子类中文名(小程序上报即如此),此处必须与之一致,
|
|
// 否则按异常类型做精确匹配的查询会一行都查不到。
|
|
export const exceptionCategoryOptions = [
|
|
{
|
|
label: '交通异常',
|
|
value: '交通异常',
|
|
children: [
|
|
{ label: '道路拥堵', value: '道路拥堵' },
|
|
{ label: '交通事故', value: '交通事故' },
|
|
{ label: '道路封闭', value: '道路封闭' },
|
|
{ label: '天气影响', value: '天气影响' },
|
|
{ label: '其他', value: '交通异常-其他' },
|
|
],
|
|
},
|
|
{
|
|
label: '车辆异常',
|
|
value: '车辆异常',
|
|
children: [
|
|
{ label: '车辆故障维修', value: '车辆故障维修' },
|
|
{ label: '车辆事故', value: '车辆事故' },
|
|
{ label: '爆胎', value: '爆胎' },
|
|
{ label: '设备异常', value: '设备异常' },
|
|
{ label: '缺油缺电', value: '缺油缺电' },
|
|
{ label: '其他', value: '车辆异常-其他' },
|
|
],
|
|
},
|
|
{
|
|
label: '货物异常',
|
|
value: '货物异常',
|
|
children: [
|
|
{ label: '货损', value: '货损' },
|
|
{ label: '货差', value: '货差' },
|
|
{ label: '货物丢失', value: '货物丢失' },
|
|
{ label: '包装异常', value: '包装异常' },
|
|
{ label: '其他', value: '货物异常-其他' },
|
|
],
|
|
},
|
|
{
|
|
label: '其他异常',
|
|
value: '其他异常',
|
|
children: [
|
|
{ label: '变更路线地址', value: '变更路线地址' },
|
|
{ label: '其他', value: '其他异常-其他' },
|
|
],
|
|
},
|
|
];
|
|
|
|
/** 一级类型的中文名列表,供编辑表单的级联选择使用 */
|
|
export const exceptionTypeOptions = exceptionCategoryOptions.map(item => ({
|
|
label: item.label,
|
|
value: item.value,
|
|
}));
|
|
|
|
/** 按一级类型取二级选项 */
|
|
export const exceptionReasonOptions = typeValue =>
|
|
exceptionCategoryOptions.find(item => item.value === typeValue)?.children || [];
|
|
|
|
export const disposalStatusOptions = [
|
|
{ label: '待处理', value: 'pending' },
|
|
{ label: '处理中', value: 'processing' },
|
|
{ label: '已完成', value: 'completed' },
|
|
];
|
|
|
|
export const searchFields = [
|
|
{ label: '运单号', prop: 'waybillNo', type: 'input' },
|
|
{ label: '车辆', prop: 'vehicleNo', type: 'input' },
|
|
{ label: '上报人', prop: 'reporterName', type: 'input' },
|
|
{ label: '上报时间', prop: 'reportTimeRange', type: 'daterange' },
|
|
{ label: '项目', prop: 'projectName', type: 'input' },
|
|
{ label: '承运商', prop: 'carrierName', type: 'input' },
|
|
{ label: '异常类型', prop: 'exceptionType', type: 'select', options: exceptionCategoryOptions },
|
|
{ label: '状态', prop: 'disposalStatus', type: 'select', options: disposalStatusOptions },
|
|
];
|
|
|
|
export const tableColumns = [
|
|
{ label: '运单号', prop: 'waybillNo', minWidth: 160, link: true },
|
|
{ label: '项目', prop: 'projectName', minWidth: 160 },
|
|
{ label: '车辆', prop: 'vehicleNo', minWidth: 150, link: true },
|
|
{ label: '上报人', prop: 'reporterName', minWidth: 120 },
|
|
{ label: '上报时间', prop: 'reportTime', minWidth: 170 },
|
|
{ label: '异常类型', prop: 'exceptionTypeName', minWidth: 160 },
|
|
{ label: '上报说明', prop: 'reportDescription', minWidth: 180 },
|
|
{ label: '异常节点', prop: 'nodeName', minWidth: 120 },
|
|
{ label: '承运商', prop: 'carrierName', minWidth: 160 },
|
|
{ label: '最新跟进说明', prop: 'latestFollowContent', minWidth: 200 },
|
|
{ label: '状态', prop: 'disposalStatusName', minWidth: 120 },
|
|
];
|
|
|
|
// 详情/跟进弹窗的只读信息,按来源分两块:
|
|
// 「运单信息」是上报时从运单复制的字段,「异常信息」是司机上报的内容。
|
|
// 与编辑弹窗的分区口径一致,改动时两处要一起改。
|
|
export const detailWaybillFields = [
|
|
{ label: '运单号', prop: 'waybillNo' },
|
|
{ label: '配载单号/总单号', prop: 'loadingOrMasterNo' },
|
|
{ label: '车牌号', prop: 'vehicleNo' },
|
|
{ label: '项目', prop: 'projectName' },
|
|
{ label: '承运商', prop: 'carrierName' },
|
|
];
|
|
|
|
export const detailExceptionFields = [
|
|
{ label: '上报人', prop: 'reporterName' },
|
|
{ label: '上报时间', prop: 'reportTime' },
|
|
{ label: '异常节点', prop: 'nodeName' },
|
|
{ label: '异常类型', prop: 'exceptionTypeName' },
|
|
{ label: '异常原因', prop: 'exceptionReason' },
|
|
{ label: '上报说明', prop: 'reportDescription', span: 2 },
|
|
];
|
|
|
|
export const followColumns = [
|
|
{ label: '跟进说明', prop: 'followContent', minWidth: 260 },
|
|
{ label: '跟进人', prop: 'followUserName', minWidth: 130 },
|
|
{ label: '跟进时间', prop: 'followTime', minWidth: 170 },
|
|
];
|
|
|
|
// 编辑表单只开放上报四件套。车牌、项目、承运商、配载单号由上报时从运单回填,
|
|
// 允许手改会让记录与运单脱钩;处置状态由跟进与完成流转,不在此处。
|
|
export const editFormFields = [
|
|
{ label: '异常类型', prop: 'exceptionType', type: 'select', required: true },
|
|
{ label: '异常原因', prop: 'exceptionReason', type: 'select' },
|
|
{ label: '上报说明', prop: 'reportDescription', type: 'textarea', required: true, span: 2 },
|
|
];
|
|
|
|
// 编辑弹窗顶部的运单信息,只读展示,帮助运管员确认改的是哪一单。
|
|
// 上报人与上报时间属上报行为,放在「异常信息」里,不在此处重复。
|
|
export const editWaybillFields = [
|
|
{ label: '运单号', prop: 'waybillNo' },
|
|
{ label: '配载单号/总单号', prop: 'loadingOrMasterNo' },
|
|
{ label: '车牌号', prop: 'vehicleNo' },
|
|
{ label: '项目', prop: 'projectName' },
|
|
{ label: '承运商', prop: 'carrierName' },
|
|
];
|