From d09de4d09deaf01def07e2937aad6133bfbce316 Mon Sep 17 00:00:00 2001
From: cwchen <1048842385@qq.com>
Date: Wed, 23 Jul 2025 18:08:05 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=86=E6=9E=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
js/pages/newDataAnalysis/environDetection.js | 346 ++++++++++++++++++
.../newDataAnalysis/environDetectionData.js | 221 +++++++++++
js/pages/newDataAnalysis/newDataAnalysis.js | 2 +-
.../workerEfficiencyAnalysis.js | 50 ++-
.../workerEfficiencyAnalysisData.js | 8 +-
pages/newDataAnalysis/environDetection.html | 62 ++++
.../workerEfficiencyAnalysis.html | 2 -
7 files changed, 682 insertions(+), 9 deletions(-)
create mode 100644 js/pages/newDataAnalysis/environDetection.js
create mode 100644 js/pages/newDataAnalysis/environDetectionData.js
create mode 100644 pages/newDataAnalysis/environDetection.html
diff --git a/js/pages/newDataAnalysis/environDetection.js b/js/pages/newDataAnalysis/environDetection.js
new file mode 100644
index 0000000..557ad94
--- /dev/null
+++ b/js/pages/newDataAnalysis/environDetection.js
@@ -0,0 +1,346 @@
+let table, layer, form;
+let myChart = null, myChart2 = null;
+layui.use(['layer', 'table', 'form'], function () {
+ layer = layui.layer;
+ table = layui.table;
+ form = layui.form;
+ let bidCode = parent.parent.$('#bidPro').val()
+ let filterList = dataList.filter(item => {
+ return item.bidCode === bidCode;
+ });
+ initTable(filterList[0].list || []);
+ initEcharts(filterList[0].list[0]);
+});
+
+
+function initTable(data) {
+ table.render({
+ elem: '#demo2',
+ id: 'demo2',
+ skin: 'line',
+ page: true,
+ height: 'full-140',
+ headers: {
+ "decrypt": "decrypt",
+ "Authorization": token
+ },
+ data: data,
+ cols: [[
+ { type: 'numbers', title: '序号', width: '10%' }, // 添加序号列
+ { field: 'userName', title: '工人', align: 'center', width: '10%' },
+ { field: 'teamName', title: '班组', align: 'center', width: '10%' },
+ { field: 'postName', title: '工种', align: 'center', width: '10%' },
+ { field: 'attDay', title: '出勤天数', align: 'center', width: '10%' },
+ {
+ field: 'workTime', title: '工作时长', align: 'center', width: '10%',
+ templet: function (d) {
+ return d.workTime + '小时';
+ }
+ },
+ {
+ field: 'completeWorkload', title: '完成工作量', align: 'center', width: '10%',
+ templet: function (d) {
+ return d.completeWorkload + d.completeWorkloadUnit;
+ }
+ },
+ {
+ field: 'unitTimeOutput', title: '单位时间产量', align: 'center', width: '10%',
+ templet: function (d) {
+ return d.unitTimeOutput + d.unitTimeOutputUnit;
+ }
+ },
+ {
+ field: 'unitTimeOutput', title: '单位时间标准产量', align: 'center', width: '10%',
+ templet: function (d) {
+ return d.standardTimeOutput + d.unitTimeOutputUnit;
+ }
+ },
+ {
+ field: 'rateLevel', title: '效率评级', align: 'center', width: '10%',
+ templet: function (d) {
+ let color = '';
+ if (d.rateLevel === '高效') {
+ color = 'green';
+ } else if (d.rateLevel === '达标') {
+ color = 'yellow';
+ } else if (d.rateLevel === '低效') {
+ color = 'red';
+ }
+ return '
' + d.rateLevel + '
';
+ }
+
+ }
+ ]],
+ initComplete: function () {
+ // 在表格渲染完成后,重新渲染序号列
+ var that = this.elem.next();
+ var tool = that.children('.layui-table-box').children('.layui-table-fixed').children('.layui-table-body').children('.layui-table');
+ tool.find("tr").each(function (index, item) {
+ $(this).find('td[data-field="LAY_TABLE_INDEX"]').text(index + 1);
+ });
+ },
+ done: function (res, curr, count, origin) {
+ // console.log(res);
+ }
+ })
+ table.on('rowDouble(demo2)', function (obj) {
+ initEcharts(obj.data);
+ });
+}
+
+function query(type) {
+ let userName = $('#userName').val();
+ let bidCode = parent.parent.$('#bidPro').val()
+ let filterList = dataList.filter(item => {
+ return item.bidCode === bidCode;
+ });
+ let list = filterList[0].list || []
+ let data = [];
+ if (userName) {
+ data = list.filter(item => {
+ return item.userName.indexOf(userName) > -1;
+ });
+ } else {
+ data = list;
+ }
+ initTable(data);
+ if(data && data.length > 0){
+ initEcharts(data[0]);
+ }
+}
+
+// 初始化 echarts
+function initEcharts(data) {
+ if (myChart && myChart2) {
+ myChart.dispose();
+ myChart2.dispose();
+ }
+ myChart = echarts.init(document.getElementById("oneEcharts"));
+ myChart2 = echarts.init(document.getElementById("twoEcharts"));
+ initEchartsOne(data);
+}
+
+function initEchartsOne(obj) {
+ const data = [obj.unitTimeOutput];
+ const data2 = [obj.standardTimeOutput];
+ const colorArr1 = ["rgba(11, 83, 128)", "rgba(2, 143, 224)", "#2a7fcc"];
+ const colorArr2 = ["rgb(12, 109, 122)", "rgba(1, 241, 228)", "#5ce1d6"];
+ var color1 = {
+ type: "linear",
+ x: 0,
+ x2: 1,
+ y: 0,
+ y2: 0,
+ colorStops: [
+ {
+ offset: 0,
+ color: colorArr1[0],
+ },
+ {
+ offset: 0.5,
+ color: colorArr1[0],
+ },
+ {
+ offset: 0.5,
+ color: colorArr1[1],
+ },
+ {
+ offset: 1,
+ color: colorArr1[1],
+ },
+ ],
+ };
+ var color2 = {
+ type: "linear",
+ x: 0,
+ x2: 1,
+ y: 0,
+ y2: 0,
+ colorStops: [
+ {
+ offset: 0,
+ color: colorArr2[0],
+ },
+ {
+ offset: 0.5,
+ color: colorArr2[0],
+ },
+ {
+ offset: 0.5,
+ color: colorArr2[1],
+ },
+ {
+ offset: 1,
+ color: colorArr2[1],
+ },
+ ],
+ };
+ var barWidth = 18;
+ const option = {
+ backgroundColor: 'transparent',
+ legend: {
+ top: '3%',
+ right: '3%',
+ textStyle: {
+ fontSize: '12px',
+ color: '#FFF',
+ }
+ },
+ tooltip: {
+ trigger: 'axis',
+ formatter: function (params) {
+ var str = params[0].name + ":";
+ params.filter(function (item) {
+ if (item.componentSubType == "bar") {
+ str += "
" + item.seriesName + ":" + item.value + obj.unitTimeOutputUnit;
+ }
+ });
+ return str;
+ },
+ },
+ //图表大小位置限制
+ grid: {
+ x: '10%',
+ x2: '5%',
+ y: '15%',
+ y2: '15%',
+ },
+ xAxis: {
+ data: [obj.userName],
+ //坐标轴
+ axisLine: {
+ show: true,
+ lineStyle: {
+ width: 1,
+ color: '#214776'
+ },
+ textStyle: {
+ color: '#fff',
+ fontSize: '10'
+ }
+ },
+ type: 'category',
+ axisLabel: {
+ textStyle: {
+ color: '#C5DFFB',
+ fontWeight: 500,
+ fontSize: '14'
+ }
+ },
+ axisTick: {
+ textStyle: {
+ color: '#fff',
+ fontSize: '16'
+ },
+ show: false,
+ },
+ axisLine: {
+ //坐标轴轴线相关设置。数学上的x轴
+ show: true,
+ lineStyle: {
+ type: 'dashed',//线的类型 虚线
+ color: '#DEDEDE',
+ },
+ },
+ },
+ yAxis: {
+ name: '效率对标分析',
+ nameTextStyle: {
+ color: '#DEDEDE',
+ fontSize: 12,
+ padding: 10,
+ },
+ min: 0,//最小
+ max: obj.max,//最大
+ interval: obj.interval,//相差
+ type: 'value',
+ splitLine: {
+ show: true,
+ lineStyle: {
+ type: 'dashed',//线的类型 虚线0
+ opacity: 0.2//透明度
+ },
+ },
+ axisTick: {
+ show: false
+ },
+ axisLine: {
+ show: false,
+ },
+ //坐标值标注
+ axisLabel: {
+ show: true,
+ textStyle: {
+ color: '#C5DFFB',
+ }
+ },
+ },
+ series: [
+ {
+ z: 1,
+ name: '单位时间产量',
+ type: "bar",
+ barWidth: barWidth,
+ barGap: "0%",
+ data: data,
+ itemStyle: {
+ normal: {
+ color: color1,
+ }
+ },
+ },
+ {
+ z: 3,
+ name: '单位时间产量',
+ type: "pictorialBar",
+ symbolPosition: "end",
+ data: data,
+ symbol: "diamond",
+ symbolOffset: ["-75%", "-60%"],
+ symbolSize: [18, 12],
+ itemStyle: {
+ normal: {
+ borderWidth: 2,
+ color: colorArr1[2]
+ },
+ },
+ },
+ {
+ z: 1,
+ name: '单位时间标准产量',
+ type: "bar",
+ barWidth: barWidth,
+ barGap: "50%",
+ data: data2,
+ itemStyle: {
+ normal: {
+ color: color2,
+ }
+ },
+ },
+ {
+ z: 3,
+ name: '单位时间标准产量',
+ type: "pictorialBar",
+ symbolPosition: "end",
+ data: data2,
+ symbol: "diamond",
+ symbolOffset: ["75%", "-60%"],
+ symbolSize: [18, 12],
+ itemStyle: {
+ normal: {
+ borderWidth: 2,
+ color: colorArr2[2]
+ },
+ },
+ tooltip: {
+ show: false,
+ },
+ },
+ ],
+ }
+ myChart.setOption(option, true);
+ window.addEventListener("resize", function () {
+ myChart.resize();
+ });
+}
\ No newline at end of file
diff --git a/js/pages/newDataAnalysis/environDetectionData.js b/js/pages/newDataAnalysis/environDetectionData.js
new file mode 100644
index 0000000..de7c86d
--- /dev/null
+++ b/js/pages/newDataAnalysis/environDetectionData.js
@@ -0,0 +1,221 @@
+
+/** 工人效率分析数据*/
+// 1512P017007Y01-凌云变 1612P021000T01-红枫变
+let dataList = [{
+ bidCode: '1512P017007Y01',
+ list: [{
+ userName: '宋跃进',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '低效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1,
+ nameList:['技能不足','工具故障'],
+ },
+ {
+ userName: '刘振',
+ teamName: '变电土建-朱润生3班',
+ postName: '导线压线工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.1,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '黄照飞',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '王玉华',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '黄丹',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '赵光伟',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '刘磊',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '化苏碧',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '曹先应',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '陆乃怀',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '袁加纯',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '张友顺',
+ teamName: '变电土建-朱润生3班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ }
+ ]
+},
+{
+ bidCode: '1612P021000T01',
+ list: [{
+ userName: '袁加纯',
+ teamName: '变电土建-宋鹏2班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ },
+ {
+ userName: '李仲恒',
+ teamName: '变电土建-宋鹏2班',
+ postName: '组塔工',
+ attDay: 22,
+ workTime: 176,
+ completeWorkload: 15,
+ completeWorkloadUnit:'座',
+ unitTimeOutput: 0.085,
+ unitTimeOutputUnit: '座/小时',
+ rateLevel: '高效',
+ standardTimeOutput:0.1,
+ max:0.2,
+ interval:0.1
+ }]
+}];
\ No newline at end of file
diff --git a/js/pages/newDataAnalysis/newDataAnalysis.js b/js/pages/newDataAnalysis/newDataAnalysis.js
index d6de7d4..2f48703 100644
--- a/js/pages/newDataAnalysis/newDataAnalysis.js
+++ b/js/pages/newDataAnalysis/newDataAnalysis.js
@@ -40,7 +40,7 @@ function changeData(that, type) {
}else if(type == 6){ // 工人效率分析
src = 'workerEfficiencyAnalysis.html';
}else if(type == 7){ // 环境监测分析
- src = '';
+ src = 'environDetection.html';
}else if(type == 8){ // 项目管理分析
src = '';
}else if(type == 9){ // 整体效能分析
diff --git a/js/pages/newDataAnalysis/workerEfficiencyAnalysis.js b/js/pages/newDataAnalysis/workerEfficiencyAnalysis.js
index fa9c8ff..265cb2b 100644
--- a/js/pages/newDataAnalysis/workerEfficiencyAnalysis.js
+++ b/js/pages/newDataAnalysis/workerEfficiencyAnalysis.js
@@ -19,7 +19,7 @@ function initTable(data) {
id: 'demo2',
skin: 'line',
page: true,
- height: 'full-120',
+ height: 'full-140',
headers: {
"decrypt": "decrypt",
"Authorization": token
@@ -104,7 +104,7 @@ function query(type) {
data = list;
}
initTable(data);
- if(data && data.length > 0){
+ if (data && data.length > 0) {
initEcharts(data[0]);
}
}
@@ -118,6 +118,9 @@ function initEcharts(data) {
myChart = echarts.init(document.getElementById("oneEcharts"));
myChart2 = echarts.init(document.getElementById("twoEcharts"));
initEchartsOne(data);
+ if (data.unitTimeOutput < data.standardTimeOutput) {
+ initEchartsTwo(data);
+ }
}
function initEchartsOne(obj) {
@@ -343,4 +346,47 @@ function initEchartsOne(obj) {
window.addEventListener("resize", function () {
myChart.resize();
});
+}
+
+/* 变化趋势 */
+function initEchartsTwo(data) {
+ let nameList = ['技能不足','工具故障'];
+ let valueList = [{name:'技能不足',value:1},{name:'工具故障',value:3}];
+ const option = {
+ grid: {
+ top: 0,
+ bottom: 0,
+ left: 0,
+ right: 0,
+ },
+ title: {
+ text: "",
+ x: "center",
+ },
+ tooltip: {
+ trigger: "item",
+ formatter: "{a}
{b} : {c} ({d}%)",
+ },
+ legend: {
+ show: false,
+ data: nameList,
+ },
+ series: [
+ {
+ name: "效率低下分析",
+ type: "pie",
+ radius: "65%",
+ center: ["50%", "50%"],
+ label: {
+ show: true,
+ formatter: "{b} {d}%",
+ },
+ data: valueList,
+ },
+ ],
+ };
+ myChart2.setOption(option, true);
+ window.addEventListener("resize", function () {
+ myChart2.resize();
+ });
}
\ No newline at end of file
diff --git a/js/pages/newDataAnalysis/workerEfficiencyAnalysisData.js b/js/pages/newDataAnalysis/workerEfficiencyAnalysisData.js
index a4c688f..c4aa2fe 100644
--- a/js/pages/newDataAnalysis/workerEfficiencyAnalysisData.js
+++ b/js/pages/newDataAnalysis/workerEfficiencyAnalysisData.js
@@ -13,7 +13,7 @@ let dataList = [{
completeWorkloadUnit:'座',
unitTimeOutput: 0.085,
unitTimeOutputUnit: '座/小时',
- rateLevel: '高效',
+ rateLevel: '低效',
standardTimeOutput:0.1,
max:0.2,
interval:0.1
@@ -27,9 +27,9 @@ let dataList = [{
workTime: 176,
completeWorkload: 15,
completeWorkloadUnit:'座',
- unitTimeOutput: 0.085,
+ unitTimeOutput: 0.1,
unitTimeOutputUnit: '座/小时',
- rateLevel: '高效',
+ rateLevel: '达标',
standardTimeOutput:0.1,
max:0.2,
interval:0.1
@@ -42,7 +42,7 @@ let dataList = [{
workTime: 176,
completeWorkload: 15,
completeWorkloadUnit:'座',
- unitTimeOutput: 0.085,
+ unitTimeOutput: 0.11,
unitTimeOutputUnit: '座/小时',
rateLevel: '高效',
standardTimeOutput:0.1,
diff --git a/pages/newDataAnalysis/environDetection.html b/pages/newDataAnalysis/environDetection.html
new file mode 100644
index 0000000..4167e0c
--- /dev/null
+++ b/pages/newDataAnalysis/environDetection.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 环境检测
+
+
+
+
+
+
+
+
+
diff --git a/pages/newDataAnalysis/workerEfficiencyAnalysis.html b/pages/newDataAnalysis/workerEfficiencyAnalysis.html
index 9ebb2b4..9038ed6 100644
--- a/pages/newDataAnalysis/workerEfficiencyAnalysis.html
+++ b/pages/newDataAnalysis/workerEfficiencyAnalysis.html
@@ -9,7 +9,6 @@
-
@@ -19,7 +18,6 @@
-
工人效率分析