let myChart = echarts.init(document.getElementById("pro-total-echarts"));
let timeOut3 = null;
let myChart6 = echarts.init(document.getElementById("week-echarts"));
let myChart4 = echarts.init(document.getElementById("plan-trend-echarts"));
let myChart3 = echarts.init(
document.getElementById("duty-total-progress-echarts")
);
let myChart7 = echarts.init(
document.getElementById("duty-detail-progress-echarts")
);
let myChart8 = echarts.init(document.getElementById("person-echarts"));
let myChart9 = echarts.init(
document.getElementById("no-execute-day-plan-echarts")
);
/*工程统计数量 echarts*/
function initEchartsOne(totalNum, num, num2, num3) {
let fontSize = "16",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
let tableData = [
{
value: num,
name: "今日有作业",
},
{
value: num2,
name: "今日未作业",
},
{
value: num3,
name: "停工工程",
},
];
let option = {
grid: {
left: "0",
right: "0",
top: "-20%",
bottom: "0",
containLabel: true,
},
legend: {
show: true,
top: "50%",
icon: "circle",
itemGap: 20,
itemHeight: 15,
textStyle: {
fontSize: 16,
color: fontColor,
fontFamily: fontFamily,
},
formatter: (params) => {
if (params === "今日有作业") {
return params + ": " + tableData[0].value;
} else if (params === "今日未作业") {
return params + ": " + tableData[1].value;
} else if (params === "停工工程") {
return params + ": " + tableData[2].value;
}
},
},
color: ["#66FFFF", "#36F097", "#FD9F6B"],
xAxis: {
show: false,
type: "value",
boundaryGap: [0, 0],
},
yAxis: [
{
type: "category",
data: [""],
axisLine: { show: false },
axisTick: [
{
show: false,
},
],
},
],
series: [
{
type: "bar",
name: tableData[0].name,
stack: "总量",
barWidth: 20,
label: {
show: true,
position: "insideLeft",
color: "#fff",
formatter: "{c}%",
},
showBackground: true,
backgroundStyle: {
color: "#66FFFF",
borderRadius: 0,
},
itemStyle: {
barBorderRadius: 0,
},
data: [((num * 100) / totalNum).toFixed(2)],
},
{
type: "bar",
name: tableData[1].name,
stack: "总量",
barWidth: 20,
label: {
show: true,
color: "#fff",
position: "inside",
formatter: "{c}%",
},
showBackground: true,
backgroundStyle: {
color: "#36F097",
barBorderRadius: 0,
},
itemStyle: {
color: "#36F097",
barBorderRadius: 0,
},
silent: true,
data: [((num2 * 100) / totalNum).toFixed(2)],
},
{
type: "bar",
name: tableData[2].name,
stack: "总量",
barWidth: 20,
label: {
show: true,
color: "#fff",
position: "insideRight",
formatter: "{c}%",
},
showBackground: true,
backgroundStyle: {
color: "#FD9F6B",
barBorderRadius: 0,
},
itemStyle: {
color: "#FD9F6B",
barBorderRadius: 0,
},
silent: true,
data: [((num3 * 100) / totalNum).toFixed(2)],
},
],
};
myChart.setOption(option, true);
window.addEventListener("resize", function () {
myChart.resize();
});
}
/* 周计划 echarts */
function initEchartsFive(twoNum, threeNum, fourNum, fiveNum) {
let fontSize = "16",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
function getParametricEquation(
startRatio,
endRatio,
isSelected,
isHovered,
k,
height,
i
) {
// 计算
let midRatio = (startRatio + endRatio) / 2;
let startRadian = startRatio * Math.PI * 2;
let endRadian = endRatio * Math.PI * 2;
let midRadian = midRatio * Math.PI * 2;
// 如果只有一个扇形,则不实现选中效果。
if (startRatio === 0 && endRatio === 1) {
isSelected = false;
}
// 通过扇形内径/外径的值,换算出辅助参数 k(默认值 1/3)
k = typeof k !== "undefined" ? k : 1 / 3;
// 计算选中效果分别在 x 轴、y 轴方向上的位移(未选中,则位移均为 0)
let offsetX = isSelected ? Math.cos(midRadian) * 0.1 : 0;
let offsetY = isSelected ? Math.sin(midRadian) * 0.1 : 0;
let offsetZ = i == 1 ? 2 : 0;
// 计算高亮效果的放大比例(未高亮,则比例为 1)
let hoverRate = isHovered ? 1.05 : 1;
// 返回曲面参数方程
return {
u: {
min: -Math.PI,
max: Math.PI * 3,
step: Math.PI / 32,
},
v: {
min: 0,
max: Math.PI * 2,
step: Math.PI / 20,
},
x: function (u, v) {
if (u < startRadian) {
return (
offsetX + Math.cos(startRadian) * (1 + Math.cos(v) * k) * hoverRate
);
}
if (u > endRadian) {
return (
offsetX + Math.cos(endRadian) * (1 + Math.cos(v) * k) * hoverRate
);
}
return offsetX + Math.cos(u) * (1 + Math.cos(v) * k) * hoverRate;
},
y: function (u, v) {
if (u < startRadian) {
return (
offsetY + Math.sin(startRadian) * (1 + Math.cos(v) * k) * hoverRate
);
}
if (u > endRadian) {
return (
offsetY + Math.sin(endRadian) * (1 + Math.cos(v) * k) * hoverRate
);
}
return offsetY + Math.sin(u) * (1 + Math.cos(v) * k) * hoverRate;
},
z: function (u, v) {
if (u < -Math.PI * 0.5) {
return Math.sin(u);
}
if (u > Math.PI * 2.5) {
return Math.sin(u);
}
return Math.sin(v) > 0 ? 1 * height : -1;
},
};
}
// 生成模拟 3D 饼图的配置项
function getPie3D(pieData, internalDiameterRatio) {
let series = [];
let sumValue = 0;
let startValue = 0;
let endValue = 0;
let legendData = [];
let k =
typeof internalDiameterRatio !== "undefined"
? (1 - internalDiameterRatio) / (1 + internalDiameterRatio)
: 1 / 3;
// 为每一个饼图数据,生成一个 series-surface 配置
for (let i = 0; i < pieData.length; i++) {
sumValue += pieData[i].value;
let seriesItem = {
name:
typeof pieData[i].name === "undefined"
? `series${i}`
: pieData[i].name,
type: "surface",
parametric: true,
wireframe: {
show: false,
},
pieData: pieData[i],
pieStatus: {
selected: false,
hovered: false,
k: k,
},
};
if (typeof pieData[i].itemStyle != "undefined") {
let itemStyle = {};
typeof pieData[i].itemStyle.color != "undefined"
? (itemStyle.color = pieData[i].itemStyle.color)
: null;
typeof pieData[i].itemStyle.opacity != "undefined"
? (itemStyle.opacity = pieData[i].itemStyle.opacity)
: null;
seriesItem.itemStyle = itemStyle;
}
series.push(seriesItem);
}
// 使用上一次遍历时,计算出的数据和 sumValue,调用 getParametricEquation 函数,
// 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。
for (let i = 0; i < series.length; i++) {
endValue = startValue + series[i].pieData.value;
series[i].pieData.startRatio = startValue / sumValue;
series[i].pieData.endRatio = endValue / sumValue;
series[i].parametricEquation = getParametricEquation(
series[i].pieData.startRatio,
series[i].pieData.endRatio,
false,
false,
k,
// 调整扇形高度
i === 0 ? 10 : 10,
i,
series[i].pieData.value
);
startValue = endValue;
legendData.push(series[i].name);
}
return series;
}
// 传入数据生成 option
const optionsData = [
{
name: "二级",
value: !twoNum ? 0 : parseInt(twoNum),
itemStyle: {
// opacity: 0.5,
color: "#FF5D5D",
},
},
{
name: "三级",
value: !threeNum ? 0 : parseInt(threeNum),
itemStyle: {
// opacity: 0.5,
color: "#F9770F",
},
},
{
name: "四级",
value: !fourNum ? 0 : parseInt(fourNum),
itemStyle: {
// opacity: 0.5,
color: "#FFE922",
},
},
{
name: "五级",
value: !fiveNum ? 0 : parseInt(fiveNum),
itemStyle: {
// opacity: 0.5,
color: "#32F474",
},
},
];
const series = getPie3D(optionsData, 0); // 可做为调整内环大小 0为实心圆饼图,大于0 小于1 为圆环
series.push({
name: "pie2d",
type: "pie",
label: {
opacity: 1,
fontSize: 14,
lineHeight: 20,
textStyle: {
fontSize: 14,
color: "#fff",
},
},
labelLine: {
length: 30,
length2: 30,
},
startAngle: -30, //起始角度,支持范围[0, 360]。
clockwise: false, //饼图的扇区是否是顺时针排布。上述这两项配置主要是为了对齐3d的样式
radius: ["40%", "60%"],
center: ["50%", "50%"],
data: optionsData,
itemStyle: {
opacity: 0,
},
});
// 准备待返回的配置项,把准备好的 legendData、series 传入。
let option = {
legend: {
show: false,
tooltip: {
show: true,
},
orient: "vertical",
data: ["二级", "三级", "四级", "五级"],
top: "center",
itemGap: 14,
itemHeight: 10,
itemWidth: 20,
right: "2%",
textStyle: {
color: "#fff",
fontSize: 14,
},
},
animation: true,
tooltip: {
formatter: (params) => {
if (
params.seriesName !== "mouseoutSeries" &&
params.seriesName !== "pie2d"
) {
return `${
params.seriesName
}
${option.series[params.seriesIndex].pieData.value + "条"}`;
}
},
backgroundColor: "rgba(0, 0, 0, 0.63)", //设置背景颜色
textStyle: {
color: fontColor,
fontFamily: fontFamily,
},
borderColor: "rgba(255,255,255, .5)",
},
title: {
x: "center",
top: "20",
textStyle: {
color: "#fff",
fontSize: 22,
},
},
backgroundColor: "transparent",
labelLine: {
show: true,
lineStyle: {
color: "#7BC0CB",
},
normal: {
show: true,
length: 10,
length2: 10,
},
},
label: {
show: true,
position: "outside",
formatter: "{b} \n{d}%",
textStyle: {
color: "#fff",
fontSize: "14px",
fontFamily: fontFamily,
},
},
xAxis3D: {
min: -1,
max: 1,
},
yAxis3D: {
min: -1,
max: 1,
},
zAxis3D: {
min: -1,
max: 1,
},
grid3D: {
show: false,
boxHeight: 2,
//top: '30%',
left: "4%",
bottom: "50%",
// environment: "rgba(255,255,255,0)",
viewControl: {
distance: 320,
alpha: 30,
beta: 20,
autoRotate: true, // 自动旋转
},
},
series: series,
};
myChart6.setOption(option);
myChart6.on("click", function (params) {
// 获取被点击项的名称和数值
var name = params.seriesName;
// 在控制台输出被点击项的信息
console.log(params);
console.log(params.name);
console.log(name);
if (name != "pie2d") {
openWeek(name);
} else {
openWeek(params.name);
}
});
window.addEventListener("resize", function () {
myChart6.resize();
});
}
/* 计划趋势 echarts */
function initEchartsThree(nameList, valueList, valueList2) {
let fontSize = "16",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
const backgroundColor = "transparent";
const color = [
"#FF5D5D",
"#32F474",
"#FFE922",
"#32F474",
"#3DD1F9",
"#FFAD05",
]; //2个以上的series就需要用到color数组
const legend = {
orient: "horizontal",
icon: "circle", //图例形状
padding: 0,
top: 5,
right: 40,
itemWidth: 14, //小圆点宽度
itemHeight: 14, // 小圆点高度
itemGap: 21, // 图例每项之间的间隔。[ default: 10 ]横向布局时为水平间隔,纵向布局时为纵向间隔。
textStyle: {
fontSize: 14,
color: "#ffffff",
fontFamily: fontFamily,
},
};
const tooltip = {
show: true,
trigger: "axis",
axisPointer: {
type: "shadow",
},
backgroundColor: "rgba(0, 0, 0, 0.63)", //设置背景颜色
textStyle: {
color: fontColor,
fontFamily: fontFamily,
},
borderColor: "rgba(255,255,255, .5)",
};
let seriesData = [
{ name: "二级", data: valueList },
{ name: "三级", data: valueList2 },
];
const commonConfigFn = (index) => {
return {
type: "line",
smooth: true,
symbol: "emptyCircle", //空心小圆点。线条小圆点形状
symbolSize: 8, //小圆点大小
itemStyle: {
//还是小圆点设置
},
lineStyle: {
width: 4, //线条设置
},
label: {
normal: {
show: true,
position: [0, -10],
formatter: "{c}",
textStyle: {
color: fontColor,
fontSize: "14px",
fontFamily: fontFamily,
},
},
},
areaStyle: {
//填充线条下面的面积区域颜色。(areaStyle只是锦上添花)
opacity: 0.2,
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: color[index], // 上处的颜色
},
{
offset: 1,
color: "transparent", // 下处的颜色
},
],
global: false, // 缺省为 false
},
},
};
};
seriesData = seriesData.map((item, index) => ({
...item,
...commonConfigFn(index),
}));
let option = {
backgroundColor,
color,
tooltip,
legend,
grid: {
left: "1%",
right: "1%",
top: "15%",
bottom: "2%",
containLabel: true,
},
xAxis: {
show: true, //显示x轴+x轴label文字
type: "category",
boundaryGap: true, //从Y轴出发,这个false很好的
axisLine: {
show: true, //显示x坐标轴轴线
lineStyle: {
color: "#063374",
type: "dashed",
},
},
axisTick: {
show: false, //不显示x坐标1cm刻度
},
axisLabel: {
color: fontColor, //x轴label文字颜色
fontSize: "12px",
},
splitLine: {
show: false, //不显示grid竖向分割线
},
data: nameList,
},
yAxis: {
type: "value",
axisLabel: {
color: fontColor,
},
axisLine: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
color: "#063374",
type: "dashed",
},
},
},
series: seriesData,
};
myChart4.setOption(option, true);
window.addEventListener("resize", function () {
myChart4.resize();
});
}
//日计划
function initEchartsByUser(nameList, dataList) {
clearInterval(timeOut3);
let xAxisList = [];
let data = [];
xAxisList = nameList;
data = dataList;
let fontSize = "16";
let option = {
backgroundColor: "transparent",
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow",
},
backgroundColor: "rgba(0, 0, 0, 0.63)", //设置背景颜色
textStyle: {
color: "#fff",
fontFamily: "Alibaba PuHuiTi R",
},
borderColor: "rgba(255,255,255, .5)",
},
grid: {
left: "2%",
right: "0%",
bottom: "3%",
top: "8%",
containLabel: true,
},
calculable: true,
legend: {
show: false,
icon: "rect",
// orient: 'horizontal',
itemWidth: 15,
itemHeight: 15,
textStyle: {
fontSize: 16, //字体大小
color: "#fff", //字体颜色
fontFamily: "Alibaba PuHuiTi R",
},
right: "3%", //距离右侧
},
dataZoom: [
{
type: "inside",
zoomOnMouseWheel: false,
moveOnMouseMove: true,
moveOnMouseWheel: true,
startValue: 0,
endValue: 6,
},
],
xAxis: [
{
type: "category",
axisLabel: {
interval: 0, // 解决x轴名称过长问题
textStyle: {
color: "#fff",
fontSize: 16,
fontFamily: "Alibaba PuHuiTi R",
},
},
axisLine: {
show: false,
lineStyle: {
//y轴网格线设置
color: "#2c2c2c",
width: 1,
},
},
data: xAxisList,
triggerEvent: true,
},
],
yAxis: [
{
type: "value",
// name: "单位/个",
nameGap: 8,
nameTextStyle: {
color: "#8fd5f3",
},
axisTick: {
show: false,
},
axisLine: {
show: false,
lineStyle: {
//y轴网格线设置
color: "#063374",
width: 1,
},
},
splitLine: {
//保留网格线
show: true,
lineStyle: {
//y轴网格线设置
color: "#063374",
width: 1,
type: "dashed",
},
},
axisLabel: {
show: true,
textStyle: {
fontSize: 16,
color: "#fff", //字体颜色
fontFamily: "Alibaba PuHuiTi R",
},
},
},
],
series: [
{
// name: nameList.length > 4 ? '地市' : '风险等级',
type: "bar",
z: 1,
barWidth: 8,
barGap: "100%",
label: {
show: true,
position: "top",
textStyle: {
color: "#fff",
},
},
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0,
color: "#1158E2",
},
// {
// offset: 0.7,
// color: barData.color[1]
// },
{
offset: 1,
color: "#74CAFF",
},
]),
},
},
data: data,
},
],
};
myChart9.setOption(option, true);
if (xAxisList.length > 4) {
autoMove();
myChart9.on("mousemove", stop);
myChart9.on("globalout", goMove);
}
// 自动滚动
function autoMove() {
if (xAxisList != null && xAxisList.length > 0) {
clearInterval(timeOut3);
//自动滚动
timeOut3 = setInterval(() => {
if (option.dataZoom[0].endValue === xAxisList.length) {
option.dataZoom[0].endValue = 6;
option.dataZoom[0].startValue = 0;
} else {
option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1;
option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1;
}
myChart9.setOption(option, true);
}, 4000);
}
}
//停止滚动
function stop() {
clearInterval(timeOut3);
}
//继续滚动
function goMove() {
autoMove();
}
// echarts移入事件
myChart9.getZr().on("mousemove", (param) => {
let pointInPixel = [param.offsetX, param.offsetY];
if (myChart9.containPixel("grid", pointInPixel)) {
myChart9.getZr().setCursorStyle("pointer");
} else {
myChart9.getZr().setCursorStyle("default");
}
});
// echarts点击事件
myChart9.getZr().off("click");
myChart9.getZr().on("click", function (params) {
let pointInPixel = [params.offsetX, params.offsetY];
let name;
if (myChart9.containPixel("grid", pointInPixel)) {
let xIndex = myChart9.convertFromPixel(
{ seriesIndex: 0 },
pointInPixel
)[0];
let handleIndex = Number(xIndex);
let op = myChart9.getOption();
name = op.xAxis[0].data[handleIndex];
}
console.log(name);
openClass(classDataType, name, '');
});
window.addEventListener("resize", function () {
myChart9.resize();
});
}
// 日计划 核实情况
function initEchartsEight(value) {
let fontSize = "16",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
var demoData = [
{
name: "",
value: value,
},
];
option = {
title: [
{
text: "核实情况",
bottom: -5,
x: "center",
textStyle: {
fontWeight: "normal",
fontSize: 14,
color: "#fff",
},
},
{
text: "未执行计划",
bottom: 57,
x: "center",
textStyle: {
fontWeight: "normal",
fontSize: 14,
color: "#E19146",
},
},
],
backgroundColor: "transparent",
series: (function () {
var result = [];
demoData.forEach(function (item) {
result.push(
{
name: "背景圈",
type: "gauge",
radius: "120%",
center: ["50%", "60%"],
startAngle: 220,
endAngle: -40,
axisLine: {
// 坐标轴线
lineStyle: {
// 属性lineStyle控制线条样式
color: [
[
1,
new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0,
color: "RGBa(49, 68, 118,1)",
},
{
offset: 1,
color: "rgba(49, 68, 118,1)",
},
]),
],
],
width: 25,
},
},
splitLine: {
//分隔线样式
show: false,
},
axisLabel: {
//刻度标签
show: false,
},
pointer: {
show: false,
},
axisTick: {
//刻度样式
show: false,
},
detail: {
offsetCenter: [0, "0%"],
textStyle: {
fontSize: 24,
color: "#fff",
},
formatter: function () {
return "未执行计划";
},
},
},
{
name: "刻度",
type: "gauge",
radius: "75%",
center: ["50%", "60%"],
min: 0,
max: 100,
splitNumber: 4, //刻度数量
startAngle: 220,
endAngle: -40,
axisLine: {
show: true,
lineStyle: {
width: 1,
color: [[1, "rgba(0,0,0,0)"]],
},
}, //仪表盘轴线
axisLabel: {
show: true,
color: "aqua",
distance: 24,
}, //刻度标签。
axisTick: {
show: true,
splitNumber: 20, //刻度的段落数
lineStyle: {
color: "#fff",
width: 1,
},
length: -12,
}, //刻度样式
splitLine: {
show: true,
length: -18,
lineStyle: {
color: "#fff",
},
}, //分隔线样式
detail: {
show: false,
},
pointer: {
show: false,
},
},
// 最外层含中间数据
{
name: item.name,
type: "gauge",
radius: "120%",
center: ["50%", "60%"],
startAngle: 220,
endAngle: -45,
min: 0,
max: 100,
axisLine: {
show: true,
lineStyle: {
width: 25,
color: [
[
item.value / 100,
new echarts.graphic.LinearGradient(0, 1, 1, 0, [
{
offset: 0,
color: "rgba(34,132,206,1)",
},
{
offset: 1,
color: "rgba(0,255,255,1)",
},
]),
],
[1, "rgba(255,255,255,.0)"],
],
},
},
axisTick: {
show: 0,
},
splitLine: {
show: 0,
},
axisLabel: {
show: 0,
},
pointer: {
show: false,
},
detail: {
show: true,
offsetCenter: [0, "16%"],
formatter: function (params) {
if (item.value) {
return item.value.toFixed(2) * 100 + "%";
}
return "0.0%";
},
textStyle: {
fontSize: 15,
color: "rgba(0,255,255,1)",
},
},
itemStyle: {
color: "rgba(255, 36, 74,.3)",
},
data: [
{
value: item.value,
},
],
}
);
});
return result;
})(),
};
myChart9.setOption(option, true);
window.addEventListener("resize", function () {
myChart9.resize();
});
}
/* 值班进度-1 */
function initEchartsFour(num, totalNum) {
let fontSize = "16",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
let rate =
num === 0 || totalNum === 0
? 0
: ((parseInt(num) * 100) / parseInt(totalNum)).toFixed(2);
let option = {
backgroundColor: "transparent",
grid: {
top: "2%",
left: "10%",
right: "5%",
bottom: "2%",
},
tooltip: {
show: true,
trigger: "axis",
axisPointer: {
type: "shadow",
},
backgroundColor: "rgba(0, 0, 0, 0.63)", //设置背景颜色
textStyle: {
color: fontColor,
fontFamily: fontFamily,
},
borderColor: "rgba(255,255,255, .5)",
formatter: function (item) {
return item[0].seriesName + ": " + num + "(" + rate + "%" + ")";
},
},
yAxis: {
show: false,
data: ["值班进度"],
axisLine: {
lineStyle: {
color: "#0a4980",
},
},
axisLabel: {
textStyle: {
color: "#ADD6FF",
fontSize: 12,
},
},
},
xAxis: [
{
show: false,
type: "value",
splitLine: {
show: false,
},
axisLine: {
show: true,
lineStyle: {
color: "#0a4980",
},
},
axisLabel: {
show: true,
fontSize: 12,
textStyle: {
color: "#ADD6FF",
},
},
},
],
series: [
{
name: "值班进度",
type: "bar",
barWidth: 18,
itemStyle: {
normal: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 1,
y2: 0,
colorStops: [
{
offset: 0,
color: "rgb(5,27,56)", // 0% 处的颜色
},
{
offset: 1,
color: "rgb(26 167 246)", // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
},
},
data: [num],
z: 0,
zlevel: 0,
label: {
show: true,
position: "insideRight",
distance: 0,
formatter: function (data) {
return num + "(" + rate + "%" + ")";
},
textStyle: {
color: "#fff",
fontSize: fontSize,
fontFamily: fontFamily,
},
},
},
{
name: "值班进度",
type: "bar",
barGap: "-125%",
data: [totalNum],
barWidth: 27,
label: {
show: true,
position: "right",
textStyle: {
color: "#fff",
fontSize: fontSize,
fontFamily: fontFamily,
},
},
itemStyle: {
normal: {
color: "transparent",
barBorderColor: "rgb(148,217,249)",
barBorderWidth: 1,
},
},
z: 2,
},
],
};
myChart3.setOption(option, true);
window.addEventListener("resize", function () {
myChart3.resize();
});
myChart3.on("click", function (params) {
// 在控制台输出被点击项的信息
console.log(params.seriesIndex);
if (params.seriesIndex == 0) {
gotoPage(1, "");
}
if (params.seriesIndex == 1) {
gotoPage(0, "");
} else {
gotoPage("", "");
}
});
}
/* 值班进度-2 */
function initEchartsSix(userList, taskList, xsList, wzList) {
let fontSize = "14",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
let option = {
backgroundColor: "transparent",
tooltip: {
show: true,
trigger: "axis",
axisPointer: {
type: "shadow",
},
backgroundColor: "rgba(0, 0, 0, 0.63)", //设置背景颜色
textStyle: {
color: fontColor,
fontFamily: fontFamily,
},
borderColor: "rgba(255,255,255, .5)",
},
legend: {
icon: "circle",
data: ["任务总数", "已巡视数", "发现违章"],
right: 20,
textStyle: {
color: "#fff",
fontSize: fontSize,
fontFamily: fontFamily,
},
itemWidth: 15,
itemHeight: 15,
itemGap: 35,
},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: [
{
type: "category",
data: userList,
axisLine: {
show: true,
lineStyle: {
color: "#063374",
width: 1,
type: "solid",
},
},
axisTick: {
show: false,
},
axisLabel: {
show: true,
interval: 0, // 强制显示所有标签
textStyle: {
color: "#fff",
fontFamily: fontFamily,
fontSize: fontSize,
},
},
},
],
yAxis: [
{
type: "value",
axisTick: {
show: false,
},
axisLine: {
show: false,
lineStyle: {
color: "#fff",
width: 1,
type: "solid",
},
},
splitLine: {
lineStyle: {
color: "#063374",
type: "dashed",
},
},
},
],
series: [
{
name: "任务总数",
type: "bar",
data: taskList,
barWidth: 10, //柱子宽度
barGap: 1, //柱子之间间距
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#59A5FF",
},
{
offset: 1,
color: "#36EBCA",
},
]),
opacity: 1,
},
},
label: {
normal: {
show: true,
position: "top",
formatter: "{c}",
textStyle: {
color: fontColor,
fontSize: "14px",
fontFamily: fontFamily,
},
},
},
},
{
name: "已巡视数",
type: "bar",
data: xsList,
barWidth: 10,
barGap: 1,
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#FFFB99",
},
{
offset: 1,
color: "#A4FFFA",
},
]),
opacity: 1,
},
},
label: {
normal: {
show: true,
position: "top",
formatter: "{c}",
textStyle: {
color: fontColor,
fontSize: "14px",
fontFamily: fontFamily,
},
},
},
},
{
name: "发现违章",
type: "bar",
data: wzList,
barWidth: 10,
barGap: 1,
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: "#CEFFC6",
},
{
offset: 1,
color: "#18FFE3",
},
]),
opacity: 1,
},
},
label: {
normal: {
show: true,
position: "top",
formatter: "{c}",
textStyle: {
color: fontColor,
fontSize: "14px",
fontFamily: fontFamily,
},
},
},
},
],
};
myChart7.setOption(option, true);
window.addEventListener("resize", function () {
myChart7.resize();
});
myChart7.on("click", function (params) {
// 在控制台输出被点击项的信息
if (params.seriesIndex == 0) {
gotoPage("", params.name);
} else if (params.seriesIndex == 1) {
gotoPage("1", params.name);
} else if (params.seriesIndex == 2) {
gitoWzPage("", params.name);
}
});
}
/* 人员统计 */
function initEchartsSeven(list) {
let fontSize = "14",
fontFamily = "Alibaba PuHuiTi R",
fontColor = "#fff";
let data = [];
if (list && list.length > 0) {
$.each(list, function (index, item) {
data.push({
value: item.num,
name: item.personTypeName,
code: item.personType,
});
});
} else {
data = [
{ value: 0, name: "班组负责人", code: "0900101" },
{ value: 0, name: "班组安全员", code: "0900102" },
{ value: 0, name: "班组技术员", code: "0900103" },
{ value: 0, name: "副班长", code: "0900104" },
{ value: 0, name: "特种作业人员", code: "0900106" },
{ value: 0, name: "一般作业人员", code: "0900107" },
{ value: 0, name: "其他技术人员", code: "0900108" },
];
}
let option = {
backgroundColor: "transparent",
tooltip: {
// trigger: 'item',
// formatter: "{b} : {c} ({d}%)"
show: true,
trigger: "item",
axisPointer: {
type: "shadow",
},
backgroundColor: "rgba(0, 0, 0, 0.63)", //设置背景颜色
textStyle: {
color: fontColor,
fontFamily: fontFamily,
},
borderColor: "rgba(255,255,255, .5)",
formatter: "{b} : {c} ({d}%)",
},
visualMap: {
show: false,
min: 500,
max: 600,
inRange: {
//colorLightness: [0, 1]
},
},
series: [
{
name: "人员统计",
type: "pie",
radius: "70%",
center: ["50%", "50%"],
color: [
"#20FF51",
"#00E0FF",
"#e5d11f",
"#6988F8",
"#0E5FFF",
"#2DE1FD",
"#8221F1",
],
data: data.sort(function (a, b) {
return b.value - a.value;
}),
roseType: "radius",
label: {
normal: {
formatter: ["{c|{c}}", "{b|{b}}"].join("\n"),
rich: {
c: {
color: "rgb(241,246,104)",
fontSize: 16,
fontWeight: "bold",
lineHeight: 5,
},
b: {
color: "rgb(98,137,169)",
fontSize: 13,
height: 40,
color: fontColor,
},
},
},
},
labelLine: {
normal: {
lineStyle: {
color: "rgb(98,137,169)",
},
smooth: 0.2,
length: 10,
length2: 20,
},
},
itemStyle: {
normal: {
shadowColor: "rgba(0, 0, 0, 0.8)",
shadowBlur: 50,
},
},
},
],
};
myChart8.setOption(option, true);
window.addEventListener("resize", function () {
myChart8.resize();
});
myChart8.on("click", function (params) {
// 在控制台输出被点击项的信息
const name = params.data.code;
openPersonnelStatistics(name,'');
});
}