任务编号 | +产品名称 | +计划数量 | +已完成 | +进度 | +状态 | +负责人 | +操作 | +
---|---|---|---|---|---|---|---|
T20230601 | +智能手机A | +5000 | +4250 | ++ 85% + | + +进行中 | +张三 | ++ + | +
T20230602 | +平板电脑B | +2000 | +2000 | ++ 100% + | + +已完成 | +李四 | ++ + | +
T20230603 | +智能手表C | +3500 | +1800 | ++ 51% + | + +进行中 | +王五 | ++ + | +
T20230604 | +蓝牙耳机D | +10000 | +6800 | ++ 68% + | + +进行中 | +赵六 | ++ + | +
T20230605 | +智能音箱E | +1500 | +1500 | ++ 100% + | + +已完成 | +钱七 | ++ + | +
{b}: {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 'left', + data: ['运行中', '维护中', '空闲中', '故障中'] + }, + series: [ + { + name: '设备状态', + type: 'pie', + radius: '55%', + center: ['50%', '60%'], + data: [ + {value: 35, name: '运行中'}, + {value: 10, name: '维护中'}, + {value: 15, name: '空闲中'}, + {value: 5, name: '故障中'} + ], + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + }); + + // 质量趋势图表 + const qualityChart = echarts.init(document.getElementById('quality-trend')); + qualityChart.setOption({ + title: { + text: '近30天质量合格率', + left: 'center', + textStyle: { + color: '#333', + fontSize: 14 + } + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + } + }, + xAxis: { + type: 'category', + data: Array.from({length: 30}, (_, i) => `${i+1}日`), + axisLabel: { + interval: 5 + } + }, + yAxis: { + type: 'value', + min: 90, + max: 100, + axisLabel: { + formatter: '{value}%' + } + }, + series: [ + { + name: '合格率', + type: 'line', + data: Array.from({length: 30}, () => 95 + Math.random() * 5) + } + ] + }); + + // 产能分析图表 + const capacityChart = echarts.init(document.getElementById('capacity-analysis')); + capacityChart.setOption({ + title: { + text: '各产品线产能分析', + left: 'center', + textStyle: { + color: '#333', + fontSize: 14 + } + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + legend: { + data: ['计划产能', '实际产能', '产能利用率'], + top: '10%', + left: 'center' + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + xAxis: { + type: 'category', + data: ['产品线A', '产品线B', '产品线C', '产品线D', '产品线E'] + }, + yAxis: [ + { + type: 'value', + name: '产能(件/天)', + min: 0, + max: 6000, + interval: 1000 + }, + { + type: 'value', + name: '利用率(%)', + min: 0, + max: 100, + interval: 20 + } + ], + series: [ + { + name: '计划产能', + type: 'bar', + data: [4000, 3500, 5000, 2500, 3000] + }, + { + name: '实际产能', + type: 'bar', + data: [3800, 3200, 4500, 2300, 2800] + }, + { + name: '产能利用率', + type: 'line', + yAxisIndex: 1, + data: [95, 91, 90, 92, 93] + } + ] + }); + + // 监听窗口大小变化,调整图表 + window.addEventListener('resize', function() { + progressChart.resize(); + statusChart.resize(); + qualityChart.resize(); + capacityChart.resize(); + }); + + // 刷新按钮事件 + document.getElementById('refresh-btn').addEventListener('click', function() { + // 显示加载状态 + this.innerHTML = ' 刷新中...'; + this.disabled = true; + + // 模拟数据刷新 + setTimeout(() => { + // 更新图表数据 + progressChart.setOption({ + series: [ + { + data: progressChart.getOption().series[0].data.map(val => val * (0.95 + Math.random() * 0.1)) + }, + { + data: progressChart.getOption().series[1].data.map(val => val * (0.95 + Math.random() * 0.1)) + } + ] + }); + + statusChart.setOption({ + series: [ + { + data: [ + {value: Math.floor(Math.random() * 10 + 30), name: '运行中'}, + {value: Math.floor(Math.random() * 5 + 8), name: '维护中'}, + {value: Math.floor(Math.random() * 5 + 10), name: '空闲中'}, + {value: Math.floor(Math.random() * 3 + 3), name: '故障中'} + ] + } + ] + }); + + qualityChart.setOption({ + series: [ + { + data: Array.from({length: 30}, () => 95 + Math.random() * 5) + } + ] + }); + + capacityChart.setOption({ + series: [ + { + data: capacityChart.getOption().series[0].data.map(val => val * (0.95 + Math.random() * 0.1)) + }, + { + data: capacityChart.getOption().series[1].data.map(val => val * (0.95 + Math.random() * 0.1)) + }, + { + data: capacityChart.getOption().series[2].data.map(val => val * (0.9 + Math.random() * 0.2)) + } + ] + }); + + // 恢复按钮状态 + this.innerHTML = ' 刷新数据'; + this.disabled = false; + }, 1000); + }); + });