Merge remote-tracking branch 'origin/main'

# Conflicts:
#	api/commonRequest.js
This commit is contained in:
lSun 2025-10-18 17:19:09 +08:00
commit 0b4272f9d4
4 changed files with 1315 additions and 834 deletions

View File

@ -1,5 +1,7 @@
let table, layer, form;
let fontSize = '14', fontFamily = 'Alibaba PuHuiTi R', fontColor = '#fff';
let fontSize = "14",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
layui.use(["layer", "table", "form"], function () {
layer = layui.layer;
@ -11,18 +13,105 @@ layui.use(["layer", "table", "form"], function () {
getSafetyAlert();
});
function getEnvironmental() {
let yList = [32, 58, 64, 164, 99];
let xData = ['学前', '小学', '初中', '高中', 'qq'];
initEnvironmental(yList, xData)
initData();
function initData() {
const url = commonUrl + "screen/proSafety/selectOverallEfficiencyData";
let encryptStr = encryptCBC(
JSON.stringify({
startTime: "2025-10-10",
endTime: "2025-10-17",
})
);
ajaxRequest(
url,
"get",
{
startTime: "2025-10-10",
endTime: "2025-10-17",
},
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 "缩减成本":
$("#reduceCost").text(data[key]);
break;
case "天气":
weather = data[key];
initEnvironmental(weather);
break;
case "安全预警":
safetyAlert = data[key];
initSafetyAlert(safetyAlert);
break;
}
}
},
function (xhr) {
// error(xhr);
}
);
}
function initEnvironmental(yList, xData) {
function getEnvironmental() {
let yList = [32, 58, 64, 164, 99];
let xData = ["学前", "小学", "初中", "高中", "qq"];
initEnvironmental(yList, xData);
}
function initEnvironmental(data) {
const xData = data.map((item) => item.weather);
const yList = data.map((item) => item.day);
let barWidth = 60;
let colors = []
let colors = [];
for (let i = 0; i < xData.length; i++) {
colors.push({
type: 'linear',
type: "linear",
x: 0,
x2: 1,
y: 0,
@ -30,55 +119,60 @@ function initEnvironmental(yList, xData) {
colorStops: [
{
offset: 0,
color: '#1CFFF4' // 最左边
}, {
color: "#1CFFF4", // 最左边
},
{
offset: 0.5,
color: '#1CFFF4' // 左边的右边 颜色
}, {
color: "#1CFFF4", // 左边的右边 颜色
},
{
offset: 0.5,
color: '#1CFFF4' // 右边的左边 颜色
}, {
color: "#1CFFF4", // 右边的左边 颜色
},
{
offset: 1,
color: '#1CFFF4'
}]
})
color: "#1CFFF4",
},
],
});
}
const myChart = echarts.init(document.getElementById("environmental"));
const option = {
//提示框
tooltip: {
trigger: 'axis',
trigger: "axis",
formatter: "{b} : {c}",
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
},
/**区域位置*/
grid: {
left: '8%',
right: '3%',
top: '30%',
bottom: '30%',
left: "8%",
right: "3%",
top: "30%",
bottom: "30%",
},
//X轴
xAxis: {
data: xData,
type: 'category',
type: "category",
axisLine: {
show: false,
lineStyle: {
color: 'rgba(255,255,255,1)',
shadowColor: 'rgba(255,255,255,1)',
shadowOffsetX: '20',
color: "rgba(255,255,255,1)",
shadowColor: "rgba(255,255,255,1)",
shadowOffsetX: "20",
},
symbol: ['none', 'arrow'],
symbolOffset: [0, 25]
symbol: ["none", "arrow"],
symbolOffset: [0, 25],
},
splitLine: {
show: false,
},
axisTick: {
show: false
show: false,
},
axisLabel: {
margin: 30,
@ -94,72 +188,72 @@ function initEnvironmental(yList, xData) {
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#075858'
type: "dashed",
color: "#075858",
},
},
axisLabel: {
color: '#FFFFFF',
color: "#FFFFFF",
margin: 8,
fontSize: 15
}
fontSize: 15,
},
},
series: [
{
type: 'bar',
type: "bar",
barWidth: barWidth,
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
}
}
},
},
},
label: {
show: false,
position: [barWidth / 2, -(barWidth + 20)],
color: '#ffffff',
color: "#ffffff",
fontSize: 14,
fontStyle: 'bold',
align: 'center',
fontStyle: "bold",
align: "center",
},
data: yList
data: yList,
},
{
z: 2,
type: 'pictorialBar',
type: "pictorialBar",
data: yList,
symbol: 'diamond',
symbolOffset: [0, '50%'],
symbol: "diamond",
symbolOffset: [0, "50%"],
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
},
}
},
},
},
{
z: 3,
type: 'pictorialBar',
symbolPosition: 'end',
type: "pictorialBar",
symbolPosition: "end",
data: yList,
symbol: 'diamond',
symbolOffset: [0, '-50%'],
symbol: "diamond",
symbolOffset: [0, "-50%"],
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
borderWidth: 0,
color: function (params) {
return colors[params.dataIndex % 7].colorStops[0].color;
return colors[params.dataIndex % 7].colorStops[0]
.color;
},
},
}
},
},
],
}
};
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();
@ -168,16 +262,18 @@ function initEnvironmental(yList, xData) {
function getSafetyAlert() {
let yList = [32, 58, 64, 164, 99];
let xData = ['学前', '小学', '初中', '高中', 'qq'];
initSafetyAlert(yList, xData)
let xData = ["学前", "小学", "初中", "高中", "qq"];
initSafetyAlert(yList, xData);
}
function initSafetyAlert(yList, xData) {
function initSafetyAlert(data) {
const xData = data.map((item) => item.name);
const yList = data.map((item) => item.num);
let barWidth = 60;
let colors = []
let colors = [];
for (let i = 0; i < xData.length; i++) {
colors.push({
type: 'linear',
type: "linear",
x: 0,
x2: 1,
y: 0,
@ -185,55 +281,60 @@ function initSafetyAlert(yList, xData) {
colorStops: [
{
offset: 0,
color: '#1CFFF4' // 最左边
}, {
color: "#1CFFF4", // 最左边
},
{
offset: 0.5,
color: '#1CFFF4' // 左边的右边 颜色
}, {
color: "#1CFFF4", // 左边的右边 颜色
},
{
offset: 0.5,
color: '#1CFFF4' // 右边的左边 颜色
}, {
color: "#1CFFF4", // 右边的左边 颜色
},
{
offset: 1,
color: '#1CFFF4'
}]
})
color: "#1CFFF4",
},
],
});
}
const myChart = echarts.init(document.getElementById("safetyAlert"));
const option = {
//提示框
tooltip: {
trigger: 'axis',
trigger: "axis",
formatter: "{b} : {c}",
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
},
/**区域位置*/
grid: {
left: '8%',
right: '3%',
top: '30%',
bottom: '30%',
left: "8%",
right: "3%",
top: "30%",
bottom: "30%",
},
//X轴
xAxis: {
data: xData,
type: 'category',
type: "category",
axisLine: {
show: false,
lineStyle: {
color: 'rgba(255,255,255,1)',
shadowColor: 'rgba(255,255,255,1)',
shadowOffsetX: '20',
color: "rgba(255,255,255,1)",
shadowColor: "rgba(255,255,255,1)",
shadowOffsetX: "20",
},
symbol: ['none', 'arrow'],
symbolOffset: [0, 25]
symbol: ["none", "arrow"],
symbolOffset: [0, 25],
},
splitLine: {
show: false,
},
axisTick: {
show: false
show: false,
},
axisLabel: {
margin: 30,
@ -249,72 +350,72 @@ function initSafetyAlert(yList, xData) {
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#075858'
type: "dashed",
color: "#075858",
},
},
axisLabel: {
color: '#FFFFFF',
color: "#FFFFFF",
margin: 8,
fontSize: 15
}
fontSize: 15,
},
},
series: [
{
type: 'bar',
type: "bar",
barWidth: barWidth,
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
}
}
},
},
},
label: {
show: false,
position: [barWidth / 2, -(barWidth + 20)],
color: '#ffffff',
color: "#ffffff",
fontSize: 14,
fontStyle: 'bold',
align: 'center',
fontStyle: "bold",
align: "center",
},
data: yList
data: yList,
},
{
z: 2,
type: 'pictorialBar',
type: "pictorialBar",
data: yList,
symbol: 'diamond',
symbolOffset: [0, '50%'],
symbol: "diamond",
symbolOffset: [0, "50%"],
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
color: function (params) {
return colors[params.dataIndex % 7];
},
}
},
},
},
{
z: 3,
type: 'pictorialBar',
symbolPosition: 'end',
type: "pictorialBar",
symbolPosition: "end",
data: yList,
symbol: 'diamond',
symbolOffset: [0, '-50%'],
symbol: "diamond",
symbolOffset: [0, "-50%"],
symbolSize: [barWidth, barWidth * 0.5],
itemStyle: {
normal: {
borderWidth: 0,
color: function (params) {
return colors[params.dataIndex % 7].colorStops[0].color;
return colors[params.dataIndex % 7].colorStops[0]
.color;
},
},
}
},
},
],
}
};
myChart.setOption(option);
window.addEventListener("resize", function () {
myChart.resize();

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
@ -63,7 +64,7 @@
.progress {
height: 100%;
width: 35%;
width: 50%;
background: url("../../img/dataAnalysisOctober/progress.png") no-repeat 0 0 / 100% 100%;
background-position: center center !important;
display: flex;
@ -72,7 +73,7 @@
.cost {
height: 100%;
width: 35%;
width: 50%;
margin-left: 1%;
background: url("../../img/dataAnalysisOctober/cost.png") no-repeat 0 0 / 100% 100%;
background-position: center center !important;
@ -181,6 +182,7 @@
}
</style>
</head>
<body>
<div id="proQuality">
<div style="height: 6%;width: 100%;">
@ -209,7 +211,8 @@
<div class="builder"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">计划施工</div>
<div class="equipment-card-value">100<span style="font-size: 12px; margin-left: 2px;"></span>
<div class="equipment-card-value" id="planWorkDay"><span
style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
@ -219,7 +222,8 @@
<div class="builder"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">有效施工</div>
<div class="equipment-card-value">80<span style="font-size: 12px; margin-left: 2px;"></span>
<div class="equipment-card-value" id="effectiveWorkDay"><span
style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
@ -237,7 +241,8 @@
<div class="total-rate"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">总验收项</div>
<div class="equipment-card-value">18<span style="font-size: 12px; margin-left: 2px;"></span>
<div class="equipment-card-value" id="totalItems"><span
style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
@ -248,7 +253,8 @@
<div class="accepted-items-rate"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">已验收项</div>
<div class="equipment-card-value">18<span style="font-size: 12px; margin-left: 2px;"></span>
<div class="equipment-card-value" id="acceptedItems"><span
style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
@ -259,7 +265,8 @@
<div class="acceptance-items-rate"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">验收率</div>
<div class="equipment-card-value">88<span style="font-size: 12px; margin-left: 2px;">%</span>
<div class="equipment-card-value" id="acceptanceItemsRate"><span
style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
@ -270,7 +277,8 @@
<div class="first-rate"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">主设备试验调试一次通过率</div>
<div class="equipment-card-value">18<span style="font-size: 12px; margin-left: 2px;">%</span>
<div class="equipment-card-value" id="firstRate"><span
style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
@ -280,7 +288,7 @@
</div>
<div class="safety-alert">
<div style="height: 90%;width: 15%;margin-top: 3%;">
<!-- <div style="height: 90%;width: 15%;margin-top: 3%;">
<div style="height: 80%;width: 100%;">
<div class="equipment-card" style="flex-direction: column">
<div class="safety"></div>
@ -292,7 +300,7 @@
</div>
</div>
</div>
</div> -->
<div style="height: 100%;width: 85%">
<div id="safetyAlert"></div>
</div>
@ -303,7 +311,8 @@
<div style="height: 100%;width: 30%;">
<div class="equipment-card">
<div class="equipment-card-content" style="text-align: center;margin-top: 20%;">
<div class="equipment-card-value" style="font-size: 22px;margin-bottom: 10px;">2<span style="font-size: 12px; margin-left: 2px;">%</span></div>
<div class="equipment-card-value" style="font-size: 22px;margin-bottom: 10px;"
id="currentProgress"><span style="font-size: 12px; margin-left: 2px;"></span></div>
<div class="equipment-card-label">当前进度</div>
</div>
</div>
@ -311,7 +320,8 @@
<div style="height: 100%;width: 30%;">
<div class="equipment-card">
<div class="equipment-card-content" style="text-align: center;margin-top: 20%;">
<div class="equipment-card-value" style="font-size: 22px;margin-bottom: 10px;">2<span style="font-size: 12px; margin-left: 2px;">%</span></div>
<div class="equipment-card-value" style="font-size: 22px;margin-bottom: 10px;"
id="planProgress"><span style="font-size: 12px; margin-left: 2px;"></span></div>
<div class="equipment-card-label">计划进度</div>
</div>
</div>
@ -319,7 +329,9 @@
<div style="height: 100%;width: 30%;">
<div class="equipment-card">
<div class="equipment-card-content" style="text-align: center;margin-top: 20%;">
<div class="equipment-card-value" style="font-size: 22px;margin-bottom: 10px;"><span style="font-size: 12px;color: #fff;font-weight: 100">延期</span>2<span style="font-size: 12px; margin-left: 2px;">%</span></div>
<div class="equipment-card-value" style="font-size: 22px;margin-bottom: 10px;"><span
style="font-size: 12px;color: #fff;font-weight: 100" id="delayProgress"></span><span
style="font-size: 12px; margin-left: 2px;">%</span></div>
<div class="equipment-card-label">进度偏差</div>
</div>
</div>
@ -331,7 +343,9 @@
<div class="equipment-card">
<div class="equipment-card-content" style="text-align: center;margin-top: 10%;">
<div class="equipment-card-label">计划成本</div>
<div class="equipment-card-value" style="font-size: 22px;margin-top: 15px;">3000<span style="font-size: 12px; margin-left: 2px;">万元</span></div>
<div class="equipment-card-value" style="font-size: 22px;margin-top: 15px;" id="planCost">
<span style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
</div>
@ -339,7 +353,9 @@
<div class="equipment-card">
<div class="equipment-card-content" style="text-align: center;margin-top: 10%;">
<div class="equipment-card-label">实际成本</div>
<div class="equipment-card-value" style="font-size: 22px;margin-top: 15px;">2980<span style="font-size: 12px; margin-left: 2px;">万元</span></div>
<div class="equipment-card-value" style="font-size: 22px;margin-top: 15px;" id="actualCost">
<span style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
</div>
@ -347,17 +363,20 @@
<div class="equipment-card">
<div class="equipment-card-content" style="text-align: center;margin-top: 10%;">
<div class="equipment-card-label">缩减成本</div>
<div class="equipment-card-value" style="font-size: 22px;margin-top: 15px;">2<span style="font-size: 12px; margin-left: 2px;">%</span></div>
<div class="equipment-card-value" style="font-size: 22px;margin-top: 15px;" id="reduceCost">
<span style="font-size: 12px; margin-left: 2px;"></span>
</div>
</div>
</div>
</div>
</div>
<div class="factor"></div>
<!-- <div class="factor"></div> -->
</div>
</div>
</body>
<script src="../../js/pages/dataAnalysisOctober/overallEfficiency.js" type="text/javascript"></script>
</html>

View File

@ -36,6 +36,7 @@
background: url("../../img/dataAnalysisOctober/electricityStatistics.png") no-repeat 0 0 / 100% 100%;
background-position: center center !important;
}
.center-box {
margin-top: 1%;
width: 100%;
@ -43,6 +44,7 @@
background: url("../../img/dataAnalysisOctober/projectCost.png") no-repeat 0 0 / 100% 100%;
background-position: center center !important;
}
.bottom-box {
margin-top: 1%;
width: 100%;
@ -134,6 +136,7 @@
width: 100%;
height: 50%;
}
.chart-title {
position: absolute;
top: 40%;
@ -142,12 +145,14 @@
font-size: 14px;
left: 5%;
}
.big-number {
font-size: 22px;
color: #79FFFF;
font-weight: bold;
line-height: 20px;
}
#civilEngineering {
width: 100%;
height: 100%;
@ -228,7 +233,7 @@
<div class="chart-title">
<div>今日风险数量</div>
<div class="big-number">60</div>
<div class="big-number"></div>
<div></div>
</div>
</div>
@ -250,7 +255,7 @@
<div class="bottom-box-box-left">
<div id="totalRisk"></div>
<div class="chart-title" style="top: 95%; left: 3%;">
<div>今日风险数量</div>
<div>项目风险数量</div>
<div class="big-number">60</div>
<div></div>
</div>
@ -259,8 +264,9 @@
<div class="equipment-card">
<div class="accountTerminatedRisk"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">已消号风险</div>
<div class="equipment-card-value">18<span style="font-size: 12px; margin-left: 2px;"></span>
<div class="equipment-card-label">已销号风险</div>
<div class="equipment-card-value" id="accountTerminatedRisk"><span
style="font-size: 12px; margin-left: 2px;">台</span>
</div>
</div>
</div>
@ -270,7 +276,8 @@
<div class="risk"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">剩余风险</div>
<div class="equipment-card-value">18<span style="font-size: 12px; margin-left: 2px;"></span>
<div class="equipment-card-value" id="remainingRisk"><span
style="font-size: 12px; margin-left: 2px;">台</span>
</div>
</div>
</div>
@ -280,7 +287,8 @@
<div class="risk"></div>
<div class="equipment-card-content">
<div class="equipment-card-label">剩余二级及以上风险</div>
<div class="equipment-card-value">18<span style="font-size: 12px; margin-left: 2px;"></span>
<div class="equipment-card-value" id="remainingSecondaryRisk"><span
style="font-size: 12px; margin-left: 2px;">台</span>
</div>
</div>
</div>