hb_zhgd_screen/js/pages/dataAnalysisOctober/overallEfficiency.js

497 lines
14 KiB
JavaScript
Raw Normal View History

2025-10-21 13:46:32 +08:00
let table, layer, form, laydate;
2025-10-18 16:58:04 +08:00
let fontSize = "14",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
2025-10-17 14:57:09 +08:00
2025-10-21 13:46:32 +08:00
layui.use(["layer", "table", "form", "laydate"], function () {
2025-10-17 14:57:09 +08:00
layer = layui.layer;
table = layui.table;
form = layui.form;
2025-10-21 13:46:32 +08:00
laydate = layui.laydate;
laydate.render({
elem: "#ID-laydate-rangeLinked",
range: ["#ID-laydate-start-date-1", "#ID-laydate-end-date-1"],
rangeLinked: true, // 开启日期范围选择时的区间联动标注模式 --- 2.8+ 新增
});
2025-10-27 19:10:17 +08:00
$("#ID-laydate-start-date-1").val(getOneMonthAgo())
2025-10-21 13:46:32 +08:00
$("#ID-laydate-end-date-1").val(getNowTime())
2025-10-17 14:57:09 +08:00
2025-10-21 13:46:32 +08:00
let startTime = "";
let endTime = "";
if ($("#ID-laydate-start-date-1").val() != "") {
startTime = $("#ID-laydate-start-date-1").val();
endTime = $("#ID-laydate-end-date-1").val();
} else {
startTime = "";
endTime = "";
}
initData( startTime, endTime);
2025-10-17 14:57:09 +08:00
});
2025-10-21 13:46:32 +08:00
function query() {
let startTime = "";
let endTime = "";
if ($("#ID-laydate-start-date-1").val() != "") {
startTime = $("#ID-laydate-start-date-1").val();
endTime = $("#ID-laydate-end-date-1").val();
} else {
startTime = "";
endTime = "";
}
initData(startTime, endTime);
}
2025-10-18 16:58:04 +08:00
2025-10-21 13:46:32 +08:00
function initData(startTime, endTime) {
2025-10-18 16:58:04 +08:00
const url = commonUrl + "screen/proSafety/selectOverallEfficiencyData";
ajaxRequest(
url,
"get",
{
2025-10-21 13:46:32 +08:00
startTime: startTime,
endTime: endTime,
2025-10-18 16:58:04 +08:00
},
true,
function () {},
function (result) {
console.log(result, "数据");
const data = result.data;
let weather = "";
let safetyAlert = "";
for (const key in data) {
switch (key) {
case "计划施工天数":
$("#planWorkDay").text(data[key] + "天");
break;
case "有效施工天数":
$("#effectiveWorkDay").text(data[key] + "天");
break;
case "总验收项":
$("#totalItems").text(data[key] + "个");
break;
case "已验收项":
$("#acceptedItems").text(data[key] + "个");
break;
case "验收率":
$("#acceptanceItemsRate").text(data[key] + "%");
break;
case "主设备试验调试一次通过率":
$("#firstRate").text(data[key] + "%");
break;
case "当前进度":
$("#currentProgress").text(data[key]);
break;
case "计划进度":
$("#planProgress").text(data[key]);
break;
case "进度偏差":
$("#delayProgress").text(data[key]);
break;
case "计划成本":
$("#planCost").text(data[key] + "万元");
break;
case "实际成本":
$("#actualCost").text(data[key] + "万元");
break;
case "缩减成本":
2025-10-18 17:01:25 +08:00
$("#reduceCost").text(data[key]);
2025-10-18 16:58:04 +08:00
break;
case "天气":
weather = data[key];
initEnvironmental(weather);
break;
case "安全预警":
safetyAlert = data[key];
initSafetyAlert(safetyAlert);
break;
}
}
},
function (xhr) {
// error(xhr);
}
);
}
2025-10-17 14:57:09 +08:00
function getEnvironmental() {
let yList = [32, 58, 64, 164, 99];
2025-10-18 16:58:04 +08:00
let xData = ["学前", "小学", "初中", "高中", "qq"];
initEnvironmental(yList, xData);
2025-10-17 14:57:09 +08:00
}
2025-10-18 16:58:04 +08:00
function initEnvironmental(data) {
const xData = data.map((item) => item.weather);
const yList = data.map((item) => item.day);
2025-10-17 14:57:09 +08:00
let barWidth = 60;
2025-10-18 16:58:04 +08:00
let colors = [];
2025-10-17 14:57:09 +08:00
for (let i = 0; i < xData.length; i++) {
colors.push({
2025-10-18 16:58:04 +08:00
type: "linear",
2025-10-17 14:57:09 +08:00
x: 0,
x2: 1,
y: 0,
y2: 0,
colorStops: [
{
offset: 0,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4", // 最左边
},
{
2025-10-17 14:57:09 +08:00
offset: 0.5,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4", // 左边的右边 颜色
},
{
2025-10-17 14:57:09 +08:00
offset: 0.5,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4", // 右边的左边 颜色
},
{
2025-10-17 14:57:09 +08:00
offset: 1,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4",
},
],
});
2025-10-17 14:57:09 +08:00
}
const myChart = echarts.init(document.getElementById("environmental"));
const option = {
//提示框
tooltip: {
2025-10-18 16:58:04 +08:00
trigger: "axis",
2025-10-17 14:57:09 +08:00
formatter: "{b} : {c}",
2025-10-18 16:58:04 +08:00
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
2025-10-17 14:57:09 +08:00
},
/**区域位置*/
grid: {
2025-10-18 16:58:04 +08:00
left: "8%",
right: "3%",
top: "30%",
bottom: "30%",
2025-10-17 14:57:09 +08:00
},
//X轴
xAxis: {
data: xData,
2025-10-18 16:58:04 +08:00
type: "category",
2025-10-17 14:57:09 +08:00
axisLine: {
show: false,
lineStyle: {
2025-10-18 16:58:04 +08:00
color: "rgba(255,255,255,1)",
shadowColor: "rgba(255,255,255,1)",
shadowOffsetX: "20",
2025-10-17 14:57:09 +08:00
},
2025-10-18 16:58:04 +08:00
symbol: ["none", "arrow"],
symbolOffset: [0, 25],
2025-10-17 14:57:09 +08:00
},
splitLine: {
show: false,
},
axisTick: {
2025-10-18 16:58:04 +08:00
show: false,
2025-10-17 14:57:09 +08:00
},
axisLabel: {
margin: 30,
fontSize: 15,
},
},
yAxis: {
show: true,
splitNumber: 4,
axisLine: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
2025-10-18 16:58:04 +08:00
type: "dashed",
color: "#075858",
2025-10-17 14:57:09 +08:00
},
},
axisLabel: {
2025-10-18 16:58:04 +08:00
color: "#FFFFFF",
2025-10-17 14:57:09 +08:00
margin: 8,
2025-10-18 16:58:04 +08:00
fontSize: 15,
},
2025-10-17 14:57:09 +08:00
},
2025-10-21 13:38:20 +08:00
"dataZoom": [{
"show": true,
"height": 12,
"xAxisIndex": [
0
],
bottom:'8%',
"start": 10,
"end": 90,
handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
handleSize: '110%',
handleStyle:{
color:"#d3dee5",
},
textStyle:{
color:"#fff"},
borderColor:"#90979c"
}, {
"type": "inside",
"show": true,
"height": 15,
"start": 1,
"end": 35
}],
2025-10-17 14:57:09 +08:00
series: [
{
2025-10-18 16:58:04 +08:00
type: "bar",
2025-10-17 14:57:09 +08:00
barWidth: barWidth,
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
2025-10-18 16:58:04 +08:00
},
},
2025-10-17 14:57:09 +08:00
},
label: {
show: false,
position: [barWidth / 2, -(barWidth + 20)],
2025-10-18 16:58:04 +08:00
color: "#ffffff",
2025-10-17 14:57:09 +08:00
fontSize: 14,
2025-10-18 16:58:04 +08:00
fontStyle: "bold",
align: "center",
2025-10-17 14:57:09 +08:00
},
2025-10-18 16:58:04 +08:00
data: yList,
2025-10-17 14:57:09 +08:00
},
{
z: 2,
2025-10-18 16:58:04 +08:00
type: "pictorialBar",
2025-10-17 14:57:09 +08:00
data: yList,
2025-10-18 16:58:04 +08:00
symbol: "diamond",
symbolOffset: [0, "50%"],
2025-10-17 14:57:09 +08:00
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
},
2025-10-18 16:58:04 +08:00
},
2025-10-17 14:57:09 +08:00
},
},
{
z: 3,
2025-10-18 16:58:04 +08:00
type: "pictorialBar",
symbolPosition: "end",
2025-10-17 14:57:09 +08:00
data: yList,
2025-10-18 16:58:04 +08:00
symbol: "diamond",
symbolOffset: [0, "-50%"],
2025-10-17 14:57:09 +08:00
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
borderWidth: 0,
color: function (params) {
2025-10-18 16:58:04 +08:00
return colors[params.dataIndex % 7].colorStops[0]
.color;
2025-10-17 14:57:09 +08:00
},
2025-10-18 16:58:04 +08:00
},
2025-10-17 14:57:09 +08:00
},
},
],
2025-10-18 16:58:04 +08:00
};
2025-10-17 14:57:09 +08:00
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
}
function getSafetyAlert() {
let yList = [32, 58, 64, 164, 99];
2025-10-18 16:58:04 +08:00
let xData = ["学前", "小学", "初中", "高中", "qq"];
initSafetyAlert(yList, xData);
2025-10-17 14:57:09 +08:00
}
2025-10-18 16:58:04 +08:00
function initSafetyAlert(data) {
const xData = data.map((item) => item.name);
const yList = data.map((item) => item.num);
2025-10-17 14:57:09 +08:00
let barWidth = 60;
2025-10-18 16:58:04 +08:00
let colors = [];
2025-10-17 14:57:09 +08:00
for (let i = 0; i < xData.length; i++) {
colors.push({
2025-10-18 16:58:04 +08:00
type: "linear",
2025-10-17 14:57:09 +08:00
x: 0,
x2: 1,
y: 0,
y2: 0,
colorStops: [
{
offset: 0,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4", // 最左边
},
{
2025-10-17 14:57:09 +08:00
offset: 0.5,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4", // 左边的右边 颜色
},
{
2025-10-17 14:57:09 +08:00
offset: 0.5,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4", // 右边的左边 颜色
},
{
2025-10-17 14:57:09 +08:00
offset: 1,
2025-10-18 16:58:04 +08:00
color: "#1CFFF4",
},
],
});
2025-10-17 14:57:09 +08:00
}
const myChart = echarts.init(document.getElementById("safetyAlert"));
const option = {
//提示框
tooltip: {
2025-10-18 16:58:04 +08:00
trigger: "axis",
2025-10-17 14:57:09 +08:00
formatter: "{b} : {c}",
2025-10-18 16:58:04 +08:00
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
2025-10-17 14:57:09 +08:00
},
/**区域位置*/
grid: {
2025-10-21 13:46:32 +08:00
left: "4%",
2025-10-18 16:58:04 +08:00
right: "3%",
top: "30%",
bottom: "30%",
2025-10-17 14:57:09 +08:00
},
//X轴
xAxis: {
data: xData,
2025-10-18 16:58:04 +08:00
type: "category",
2025-10-17 14:57:09 +08:00
axisLine: {
show: false,
lineStyle: {
2025-10-18 16:58:04 +08:00
color: "rgba(255,255,255,1)",
shadowColor: "rgba(255,255,255,1)",
shadowOffsetX: "20",
2025-10-17 14:57:09 +08:00
},
2025-10-18 16:58:04 +08:00
symbol: ["none", "arrow"],
symbolOffset: [0, 25],
2025-10-17 14:57:09 +08:00
},
splitLine: {
show: false,
},
axisTick: {
2025-10-18 16:58:04 +08:00
show: false,
2025-10-17 14:57:09 +08:00
},
axisLabel: {
margin: 30,
fontSize: 15,
},
},
yAxis: {
show: true,
splitNumber: 4,
axisLine: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
2025-10-18 16:58:04 +08:00
type: "dashed",
color: "#075858",
2025-10-17 14:57:09 +08:00
},
},
axisLabel: {
2025-10-18 16:58:04 +08:00
color: "#FFFFFF",
2025-10-17 14:57:09 +08:00
margin: 8,
2025-10-18 16:58:04 +08:00
fontSize: 15,
},
2025-10-17 14:57:09 +08:00
},
2025-10-21 13:38:20 +08:00
"dataZoom": [{
"show": true,
"height": 12,
"xAxisIndex": [
0
],
bottom:'8%',
"start": 10,
"end": 90,
handleIcon: 'path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z',
handleSize: '110%',
handleStyle:{
color:"#d3dee5",
},
textStyle:{
color:"#fff"},
borderColor:"#90979c"
}, {
"type": "inside",
"show": true,
"height": 15,
"start": 1,
"end": 35
}],
2025-10-17 14:57:09 +08:00
series: [
{
2025-10-18 16:58:04 +08:00
type: "bar",
2025-10-17 14:57:09 +08:00
barWidth: barWidth,
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
2025-10-18 16:58:04 +08:00
},
},
2025-10-17 14:57:09 +08:00
},
label: {
show: false,
position: [barWidth / 2, -(barWidth + 20)],
2025-10-18 16:58:04 +08:00
color: "#ffffff",
2025-10-17 14:57:09 +08:00
fontSize: 14,
2025-10-18 16:58:04 +08:00
fontStyle: "bold",
align: "center",
2025-10-17 14:57:09 +08:00
},
2025-10-18 16:58:04 +08:00
data: yList,
2025-10-17 14:57:09 +08:00
},
{
z: 2,
2025-10-18 16:58:04 +08:00
type: "pictorialBar",
2025-10-17 14:57:09 +08:00
data: yList,
2025-10-18 16:58:04 +08:00
symbol: "diamond",
symbolOffset: [0, "50%"],
2025-10-17 14:57:09 +08:00
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
},
2025-10-18 16:58:04 +08:00
},
2025-10-17 14:57:09 +08:00
},
},
{
z: 3,
2025-10-18 16:58:04 +08:00
type: "pictorialBar",
symbolPosition: "end",
2025-10-17 14:57:09 +08:00
data: yList,
2025-10-18 16:58:04 +08:00
symbol: "diamond",
symbolOffset: [0, "-50%"],
2025-10-17 14:57:09 +08:00
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
borderWidth: 0,
color: function (params) {
2025-10-18 16:58:04 +08:00
return colors[params.dataIndex % 7].colorStops[0]
.color;
2025-10-17 14:57:09 +08:00
},
2025-10-18 16:58:04 +08:00
},
2025-10-17 14:57:09 +08:00
},
},
],
2025-10-18 16:58:04 +08:00
};
2025-10-17 14:57:09 +08:00
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
});
}