jjsp_web/bns/js/dutyTask/violation/vioStatistics.js

330 lines
10 KiB
JavaScript
Raw Normal View History

2024-12-06 18:32:24 +08:00
let form, layer, laydate;
let user = getUser();
let myChart12 = echarts.init(document.getElementById('echarts-one'));
layui.use(['form', 'layer', 'laydate'], function () {
layer = layui.layer;
form = layui.form;
laydate = layui.laydate;
laydate.render({
elem: '#ID-laydate-rangeLinked',
range: ['#startDay', '#endDay'],
rangeLinked: true,
btns: ['confirm']
});
$('#startDay').val(getNowTime());
$('#endDay').val(getNowTime());
form.render();
getVioStatistics();
});
// 查询
function query() {
myChart12.dispose();
myChart12 = echarts.init(document.getElementById('echarts-one'));
getVioStatistics();
}
function getVioStatistics() {
let param = {
startTime: $('#startDay').val(),
endTime: $('#endDay').val(),
currentUserId: user.userId + '',
isSup: user.isSup,
currentUserOrgId: user.orgId
};
$.ajax({
headers: {
"encrypt": sm3(JSON.stringify(param))
},
url: dataUrl + 'proteam/pot/superStatistics/getVioStatistics?token=' + token,
data: param,
type: 'POST',
async: true,
success: function (result) {
if (result.code === 200) {
initEchartsOne(result.data);
} else if (result.code === 401) {
logout(1)
}
}, error: function () {
}
});
}
// 导出
function exportExcel() {
let startTime = $("#startDay").val(),
endTime = $("#endDay").val(),
currentUserId = user.userId + '',
isSup = user.isSup,
currentUserOrgId = user.orgId;
let loadingMsg = layer.msg("数据导出中,请稍候...", { icon: 16, scrollbar: false, time: 0, });
let url = dataUrl + "proteam/pot/superStatistics/exportExcel?startTime=" + startTime + "&endTime=" + endTime + "&currentUserId=" + currentUserId + "&isSup=" + isSup + "&currentUserOrgId=" + currentUserOrgId + "&token=" + token;
let xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob"; // 转换流
xhr.setRequestHeader("encrypt",
sm3(JSON.stringify({
startTime: startTime,
endTime: endTime,
currentUserId: currentUserId,
isSup: isSup,
currentUserOrgId: currentUserOrgId
})));
2024-12-13 18:24:28 +08:00
xhr.setRequestHeader('encryption','encryption');
xhr.setRequestHeader('token',token);
2024-12-06 18:32:24 +08:00
xhr.onload = function () {
layer.close(loadingMsg);
if (this.status === 200) {
let blob = this.response;
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = startTime + '至' + endTime + "违章统计" + ".xlsx"; // 文件名
} else {
layer.msg("服务异常,请稍后重试", { icon: 16, scrollbar: false, time: 2000 });
}
a.click();
window.URL.revokeObjectURL(url);
};
xhr.send();
}
/*按违章等级统计-echarts*/
function initEchartsOne(list) {
let myData5 = []; // 地市
let fwrs = []; // 站班会数量
let xdrs = []; // 违章数量
let zhl = []; // 违章率
$.each(list, function (index, item) {
myData5.push(item.orgName);
fwrs.push(item.classNum);
xdrs.push(item.vioNum);
zhl.push(item.vioRate);
})
let option = {
backgroundColor: "transparent",
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
textStyle: {
color: "#fff",
},
backgroundColor: "rgba(0, 58, 99, 0.8)", //设置背景颜色
borderColor: "rgba(0, 58, 99, 0.8)",
confine: true,
formatter: `{b}<br>{a}{c}个<br>{a1}{c1}个<br>{a2}{c2}%`,
},
legend: {
itemWidth: 12,
itemHeight: 8,
itemGap: 20,
right: "2%",
top: "3%",
x: "center",
textStyle: {
fontSize: 14,
color: "#000",
},
data: ["站班会数量", "违章数量", "违章占比"],
selectedMode: false,
},
grid: {
top: "8%",
left: "2%",
right: "2%",
bottom: "2%",
containLabel: true,
},
xAxis: {
type: "category",
data: myData5,
axisLabel: {
color: "#000",
interval: 0,
fontSize: 12,
},
axisLine: {
show: true,
lineStyle: {
color: "rgba(127, 214, 255, .4)",
},
},
splitLine: {
show: false,
},
axisTick: {
show: false,
},
},
yAxis: [
{
type: "value",
name: "数量 / 个",
splitNumber: 5,
nameTextStyle: {
color: "#000",
fontSize: 12,
align: "center",
// padding: [0, 20, 5, 0],
},
axisLabel: {
formatter: "{value}",
color: "rgba(95, 187, 235, 1)",
textStyle: {
fontSize: 14,
color: "#000",
lineHeight: 16,
},
},
axisTick: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(28, 130, 197, .3)",
type: "dashed",
},
},
},
{
name: "违章占比 / %",
splitNumber: 5,
max: 100,
type: "value",
nameTextStyle: {
color: "#000",
fontSize: 12,
align: "center",
// padding: [0, 0, 5, 0],
},
axisLabel: {
show: true,
fontSize: 12,
color: "#000",
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: false,
},
},
],
series: [
{
name: "站班会数量",
type: "bar",
data: fwrs,
barWidth: "15px",
barGap: "50%",
itemStyle: {
normal: {
borderColor: "#3681FF",
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(15, 51, 82, 1)",
},
{
offset: 1,
color: "rgba(0, 168, 255, 1)",
},
]),
},
},
label: {
show: true,
position: "top",
fontSize: 12,
color: "#000",
offset: [0, -5],
formatter: "{c}",
},
},
{
name: "违章数量",
type: "bar",
data: xdrs,
barWidth: "15px",
barGap: "50%",
itemStyle: {
normal: {
borderColor: "rgba(54, 234, 255, 1)",
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "rgba(15, 51, 82, 1)",
},
{
offset: 1,
color: "rgba(21, 219, 203, 1)",
},
]),
},
},
label: {
show: true,
position: "top",
fontSize: 12,
color: "#000",
offset: [0, -5],
formatter: "{c}",
},
},
{
name: "违章占比",
type: "line",
yAxisIndex: 1,
showSymbol: true,
symbolSize: 8,
smooth: true,
symbol: "circle",
lineStyle: {
normal: {
color: "#02D6B0",
},
},
itemStyle: {
color: "#02D6B0",
borderColor: "#fff",
borderWidth: 1,
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(0, 255, 246, 0.5)",
},
{
offset: 1,
color: "rgba(0, 255, 246, 0)",
},
],
false
),
},
},
data: zhl, // 折线图的数据
},
],
};
myChart12.setOption(option, true);
window.addEventListener("resize", function () {
myChart12.resize();
});
}