冲突标红
This commit is contained in:
@@ -57,6 +57,7 @@ export default {
|
|||||||
const name = (item.remark || item.taskName || item.productName || item.name || `任务${idx+1}`) + (item.productName ? `-${item.productName}` : '');
|
const name = (item.remark || item.taskName || item.productName || item.name || `任务${idx+1}`) + (item.productName ? `-${item.productName}` : '');
|
||||||
const start = item.startDate || item.start_time || item.start || item.start_date;
|
const start = item.startDate || item.start_time || item.start || item.start_date;
|
||||||
const end = item.endDate || item.end_time || item.end || item.end_date;
|
const end = item.endDate || item.end_time || item.end || item.end_date;
|
||||||
|
console.log(item.lineId, item.orderId, idx, '颜色取值依据')
|
||||||
return {
|
return {
|
||||||
name,
|
name,
|
||||||
value: [start, end],
|
value: [start, end],
|
||||||
@@ -72,6 +73,26 @@ export default {
|
|||||||
endDate: end
|
endDate: end
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
// 先全部用 getColor 分配基础色
|
||||||
|
taskData.forEach((item, idx) => {
|
||||||
|
item._color = getColor(item.lineId, item.orderId, idx);
|
||||||
|
});
|
||||||
|
// 检查冲突(同产线时间重叠),有冲突的都标红
|
||||||
|
for (let i = 0; i < taskData.length; i++) {
|
||||||
|
for (let j = i + 1; j < taskData.length; j++) {
|
||||||
|
if (
|
||||||
|
taskData[i].lineId &&
|
||||||
|
taskData[i].lineId === taskData[j].lineId &&
|
||||||
|
new Date(taskData[i].value[0]) < new Date(taskData[j].value[1]) &&
|
||||||
|
new Date(taskData[i].value[1]) > new Date(taskData[j].value[0])
|
||||||
|
) {
|
||||||
|
taskData[i]._color = '#F56C6C';
|
||||||
|
taskData[j]._color = '#F56C6C';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 颜色映射
|
||||||
|
const colorMap = taskData.map(d => d._color);
|
||||||
// Y轴任务名
|
// Y轴任务名
|
||||||
const yData = taskData.map(d => d.name);
|
const yData = taskData.map(d => d.name);
|
||||||
// X轴时间范围
|
// X轴时间范围
|
||||||
@@ -93,10 +114,12 @@ export default {
|
|||||||
tooltip: {
|
tooltip: {
|
||||||
confine: true,
|
confine: true,
|
||||||
formatter: params => {
|
formatter: params => {
|
||||||
const d = Array.isArray(params.data) ? params.data[3] : params.data;
|
// 用 params.data[2] 作为索引查找 taskData
|
||||||
return `任务:${d.name}` +
|
const idx = params.data && params.data[2];
|
||||||
`<br/>开始:${d.startDate}` +
|
const d = (typeof idx === 'number' && taskData[idx]) ? taskData[idx] : {};
|
||||||
`<br/>结束:${d.endDate}` +
|
return `任务:${d.name || ''}` +
|
||||||
|
`<br/>开始:${d.startDate || ''}` +
|
||||||
|
`<br/>结束:${d.endDate || ''}` +
|
||||||
`<br/>日产能:${d.capacity != null ? d.capacity : d.capacity || ''}` +
|
`<br/>日产能:${d.capacity != null ? d.capacity : d.capacity || ''}` +
|
||||||
`<br/>总产能:${d.totalCapacity != null ? d.totalCapacity : d.total_capacity || ''}` +
|
`<br/>总产能:${d.totalCapacity != null ? d.totalCapacity : d.total_capacity || ''}` +
|
||||||
`<br/>目标生产:${d.planQuantity != null ? d.planQuantity : d.plan_quantity || ''}` +
|
`<br/>目标生产:${d.planQuantity != null ? d.planQuantity : d.plan_quantity || ''}` +
|
||||||
@@ -128,16 +151,9 @@ export default {
|
|||||||
const start = api.coord([api.value(0), categoryIndex]);
|
const start = api.coord([api.value(0), categoryIndex]);
|
||||||
const end = api.coord([api.value(1), categoryIndex]);
|
const end = api.coord([api.value(1), categoryIndex]);
|
||||||
const barHeight = 18;
|
const barHeight = 18;
|
||||||
const d = Array.isArray(params.data) ? params.data[3] : params.data;
|
// 颜色从 colorMap 查
|
||||||
// 调试:输出d
|
const idx = params.dataIndex;
|
||||||
// console.log('renderItem d:', d);
|
let fillColor = colorMap[idx] || '#409EFF';
|
||||||
let fillColor = api.style().fill;
|
|
||||||
if (d && d.itemStyle && d.itemStyle.color) {
|
|
||||||
fillColor = d.itemStyle.color;
|
|
||||||
} else if (d && d.name && d.name.indexOf('预览') !== -1) {
|
|
||||||
// 兜底:只要是预览条,强制绿色或红色
|
|
||||||
fillColor = '#67C23A';
|
|
||||||
}
|
|
||||||
return {
|
return {
|
||||||
type: 'rect',
|
type: 'rect',
|
||||||
shape: {
|
shape: {
|
||||||
@@ -148,7 +164,6 @@ export default {
|
|||||||
r: 6
|
r: 6
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
...api.style(),
|
|
||||||
fill: fillColor
|
fill: fillColor
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -157,7 +172,7 @@ export default {
|
|||||||
x: [0, 1],
|
x: [0, 1],
|
||||||
y: 2
|
y: 2
|
||||||
},
|
},
|
||||||
data: taskData.map((d, i) => [d.value[0], d.value[1], i, d]),
|
data: taskData.map((d, i) => [d.value[0], d.value[1], i]),
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
borderRadius: 6
|
borderRadius: 6
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ export default {
|
|||||||
{ required: true, message: "仓库/库区名称不能为空", trigger: "blur" }
|
{ required: true, message: "仓库/库区名称不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
warehouseType: [
|
warehouseType: [
|
||||||
{ required: true, message: "类型:0=仓库,1=库区,2=库位,…不能为空", trigger: "change" }
|
{ required: true, message: "类型不能为空", trigger: "change" }
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user