anxiao_web/pages/index/js/carousel.js

867 lines
27 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { layuiObj,boroughGradeArr } from "./index.js";
var inschool_echart = null;
var outschool_echart = null;
var postschool_echart=null;
var roomschool_echart=null;
var carschool_echart=null;
var alarmschool_echart=null;
var systemgradechart=null;
//告警
function drawSystemGradeChart(){
var option= {
color: ['#e7b755', '#a16afe'],
grid: { // 图表位置
top: '40px',
left: '50px',
right: '25px',
bottom: '60px'
},
legend: {
data: ['预警', '告警'],
icon: 'circle',
top: '10px',
right: '20px',
textStyle: {
color: '#fff', // 文字颜色
fontFamily: 'myRegular'
},
itemWidth: 12,
itemHeight: 12
},
xAxis: {
type: 'category',
boundaryGap: false, // 不留白,从原点开始
data: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'],
axisLine: { // 坐标轴
lineStyle: { // 坐标轴样式
color: '#4d76b2',
fontFamily: 'myRegular'
}
},
axisLabel: {
textStyle: {
color: '#fff', //更改坐标轴文字颜色
fontFamily: 'myRegular'
}
},
splitLine: { // 网格线
show: false,
},
axisTick: { // 刻度
show: false // 控制刻度的显示与隐藏
},
},
yAxis: {
type: 'value',
interval: 100 /5, // 强制设置坐标轴分割间隔
splitNumber: 5, // 坐标轴的分割段数
max: 100,
axisLabel: {
textStyle: {
color: '#fff', //更改坐标轴文字颜色
}
},
axisLine: { // 坐标轴
show: false,
lineStyle: { // 坐标轴样式
color: '#ebebf7'
}
},
splitLine: { // 网格线
show: true, // 显示隐藏 true false
lineStyle: { // 坐标轴样式
color: '#4d76b2'
}
},
axisTick: { // 刻度
show: false // 控制刻度的显示与隐藏
},
},
series: [
{
name: '预警',
data: [75, 78, 89, 66, 78, 85, 83, 84, 86, 89, 91, 90, 95, 98, 87, 74, 87, 77, 85, 79, 87, 82, 86, 74, 75, 76, 70, 80, 85, 80, 74],
type: 'line',
smooth: true,
symbol: 'none' // 点点样式
},
{
name: '告警',
data: [10, 8, 3, 4, 11, 16, 7, 7, 8, 9, 6, 2, 15, 7, 12, 15, 4, 3, 0, 0, 0, 12, 3, 8, 6, 0, 2, 10, 10, 11, 4],
type: 'line',
smooth: true,
symbol: 'none' // 点点样式
}
]
}
systemgradechart=echarts.init(document.getElementById('systemgradechart'));
//使用制定的配置项和数据显示图表
systemgradechart.setOption(option);
}
//校内
function drawInschoolChart(data,schoolInfo){
var option={
color: ['#02b4fe', '#e7b554', '#6877f8', '#77a871', '#ee6666', '#73c0de',],
tooltip: {
trigger: 'item'
},
legend: {
top: '7%',
right: '40px',
icon: 'circle',
width: '260px',
orient: 'vertical', // 排列方式 horizontal水平 vertical垂直
itemHeight: 10, // 控制小圆点的大小
itemWidth: 12,
itemGap: 20,
textStyle: {
color: '#fff', // 文字颜色
lineHeight: 16,
fontFamily: 'myRegular'
},
formatter: (name) => {
let total = 0 // 总数,用来计算百分比
let number = 0 // 数字
let pec = 0 // 百分比
for (let i = 0; i < data.length; i++) {
total += data[i].value
}
for (let i = 0; i < data.length; i++) {
if (data[i].name == name) {
number = data[i].value
pec = (number / total * 100).toFixed(2)
}
}
return [
`${name}`,
`${number} (${pec})%`,
].join("\n");
}
},
title: { // 用title显示环中间固定的文字
text: `170`, // \n 换行
subtext: '校园数量', // 子标题
top: '30%',
left: '24%',
textAlign: 'center', // 字体居中对齐
textStyle: {
color: '#fff',
fontSize: 30,
lineHeight: 20,
fontWeight: 'normal',
},
subtextStyle: { // 子标题样式
color: '#fff',
fontSize: 14,
fontFamily: 'myRegular'
}
},
series: [
{
type: 'pie',
radius: ['60%', '80%'],
center: ['25%', '45%'], // 环形图中心点
label: {
show: false,
},
data: data
}
]
}
inschool_echart=echarts.init(document.getElementById('inschool_echart'));
//使用制定的配置项和数据显示图表
inschool_echart.setOption(option);
updateInschoolInfo(schoolInfo)
}
//校内数据更新轮播
function updateInschoolInfo(schoolInfo){
var sealzone_number=0;
var collision_number=0;
var alarmpush_number=0;
var ipclinked_number=0;
var schoolbox_number=0;
var kitchensystem_number=0;
for(let i=0;i<schoolInfo.length;i++){
if(schoolInfo[i]["sealzone"]==0){
console.log(schoolInfo[i])
}
schoolInfo[i]["sealzone"]>0?sealzone_number++:sealzone_number;
schoolInfo[i]["collision"]>0?collision_number++:collision_number;
schoolInfo[i]["alarmpush"]>0?alarmpush_number++:alarmpush_number;
schoolInfo[i]["ipclinked"]>0?ipclinked_number++:ipclinked_number;
schoolInfo[i]["schoolbox"]>0?schoolbox_number++:schoolbox_number;
schoolInfo[i]["kitchensystem"]>0?kitchensystem_number++:kitchensystem_number;
}
$(".sealzone_number").html(sealzone_number);
$(".collision_number").html(collision_number);
$(".alarmpush_number").html(alarmpush_number);
$(".ipclinked_number").html(ipclinked_number);
$(".schoolbox_number").html(schoolbox_number);
$(".kitchensystem_number").html(kitchensystem_number);
}
//校外
function drawOutSchoolChart(){
var data=[
{ value: 54, name: '省部重点人员预警' },
{ value: 100, name: '涉校黑名单预警' },
{ value: 300, name: '异常行为预警' },
{ value: 200, name: '电子围栏预警' },
];
var option={
color: ['#02b4fe', '#e7b554', '#6877f8', '#77a871', '#ee6666', '#73c0de',],
tooltip: {
trigger: 'item'
},
legend: {
top: '7%',
right: '40px',
icon: 'circle',
width: '260px',
orient: 'vertical', // 排列方式 horizontal水平 vertical垂直
itemHeight: 10, // 控制小圆点的大小
itemWidth: 12,
itemGap: 20,
textStyle: {
color: '#fff', // 文字颜色
lineHeight: 16,
fontFamily: 'myRegular'
},
formatter: (name) => {
let total = 0 // 总数,用来计算百分比
let number = 0 // 数字
let pec = 0 // 百分比
for (let i = 0; i < data.length; i++) {
total += data[i].value
}
for (let i = 0; i < data.length; i++) {
if (data[i].name == name) {
number = data[i].value
pec = (number / total * 100).toFixed(2)
}
}
return [
`${name}`,
`${number} (${pec})%`,
].join("\n");
}
},
title: { // 用title显示环中间固定的文字
text: `654`, // \n 换行
subtext: '校园周边预警', // 子标题
top: '30%',
left: '24%',
textAlign: 'center', // 字体居中对齐
textStyle: {
color: '#fff',
fontSize: 30,
lineHeight: 20,
fontWeight: 'normal',
},
subtextStyle: { // 子标题样式
color: '#fff',
fontSize: 14,
fontFamily: 'myRegular'
}
},
series: [
{
type: 'pie',
radius: ['60%', '80%'],
center: ['25%', '45%'], // 环形图中心点
label: {
show: false,
},
data: data
}
]
}
outschool_echart=echarts.init(document.getElementById('schoolTypeProp'));
//使用制定的配置项和数据显示图表
outschool_echart.setOption(option);
}
//校岗
function drawPostSchoolChart(data,schoolInfo){
var total=0;
for(var i=0;i<data.length;i++){
total+=data[i]["value"];
}
var option={
color: ['#02b4fe', '#e7b554', '#6877f8', '#77a871', '#ee6666', '#73c0de',],
tooltip: {
trigger: 'item'
},
legend: {
top: '7%',
right: '40px',
icon: 'circle',
width: '260px',
orient: 'vertical', // 排列方式 horizontal水平 vertical垂直
itemHeight: 10, // 控制小圆点的大小
itemWidth: 12,
itemGap: 20,
textStyle: {
color: '#fff', // 文字颜色
lineHeight: 16,
fontFamily: 'myRegular'
},
formatter: (name) => {
let total = 0 // 总数,用来计算百分比
let number = 0 // 数字
let pec = 0 // 百分比
for (let i = 0; i < data.length; i++) {
total += data[i].value
}
for (let i = 0; i < data.length; i++) {
if (data[i].name == name) {
number = data[i].value
pec = (number / total * 100).toFixed(2)
}
}
return [
`${name}`,
`${number} (${pec})%`,
].join("\n");
}
},
title: { // 用title显示环中间固定的文字
text:total, // \n 换行
subtext: '校岗人员', // 子标题
top: '30%',
left: '24%',
textAlign: 'center', // 字体居中对齐
textStyle: {
color: '#fff',
fontSize: 30,
lineHeight: 20,
fontWeight: 'normal',
},
subtextStyle: { // 子标题样式
color: '#fff',
fontSize: 14,
fontFamily: 'myRegular'
}
},
series: [
{
type: 'pie',
radius: ['60%', '80%'],
center: ['25%', '45%'], // 环形图中心点
label: {
show: false,
},
data: data
}
]
}
postschool_echart=echarts.init(document.getElementById('postschool_echart'));
//使用制定的配置项和数据显示图表
postschool_echart.setOption(option);
updatePostSchoolInfo(schoolInfo);
}
//校岗数据更新轮播
function updatePostSchoolInfo(schoolInfo){
var police_percent_number=0;
var guarder_percent_number=0;
var staff_percent_number=0;
var protector_percent_number=0;
for(var i=0;i<schoolInfo.length;i++){
police_percent_number+=schoolInfo[i]["police_percent"];//警
guarder_percent_number+=schoolInfo[i]["guarder_percent"];//保安
staff_percent_number+=schoolInfo[i]["staff_percent"];//行政值班
protector_percent_number+=schoolInfo[i]["protector_percent"];
}
$(".police_percent_number").html(police_percent_number);
$(".guarder_percent_number").html(guarder_percent_number);
$(".staff_percent_number").html(staff_percent_number);
$(".protector_percent_number").html(protector_percent_number);
}
//校餐
function drawRoomSchoolChart(){
var data=[
{ value: 50, name: '未戴口罩' },
{ value: 30, name: '未戴帽子' },
{ value: 8, name: '陌生人闯入' },
];
var option={
color: ['#02b4fe', '#e7b554', '#6877f8', '#77a871', '#ee6666', '#73c0de',],
tooltip: {
trigger: 'item'
},
legend: {
top: '12%',
right: '40px',
icon: 'circle',
width: '260px',
orient: 'vertical', // 排列方式 horizontal水平 vertical垂直
itemHeight: 10, // 控制小圆点的大小
itemWidth: 12,
itemGap: 20,
textStyle: {
color: '#fff', // 文字颜色
lineHeight: 16,
fontFamily: 'myRegular'
},
formatter: (name) => {
let total = 0 // 总数,用来计算百分比
let number = 0 // 数字
let pec = 0 // 百分比
for (let i = 0; i < data.length; i++) {
total += data[i].value
}
for (let i = 0; i < data.length; i++) {
if (data[i].name == name) {
number = data[i].value
pec = (number / total * 100).toFixed(2)
}
}
return [
`${name}`,
`${number} (${pec})%`,
].join("\n");
}
},
title: { // 用title显示环中间固定的文字
text: `88`, // \n 换行
subtext: '预警总数', // 子标题
top: '30%',
left: '24%',
textAlign: 'center', // 字体居中对齐
textStyle: {
color: '#fff',
fontSize: 30,
lineHeight: 20,
fontWeight: 'normal',
},
subtextStyle: { // 子标题样式
color: '#fff',
fontSize: 14,
fontFamily: 'myRegular'
}
},
series: [
{
type: 'pie',
radius: ['60%', '80%'],
center: ['25%', '45%'], // 环形图中心点
label: {
show: false,
},
data: data
}
]
}
roomschool_echart=echarts.init(document.getElementById('roomschool_echart'));
//使用制定的配置项和数据显示图表
roomschool_echart.setOption(option);
}
//校车
function drawCarSchoolChart(data,schoolInfo){
var option={
color: ['#02b4fe', '#e7b554', '#6877f8', '#77a871', '#ee6666', '#73c0de',],
tooltip: {
trigger: 'item'
},
legend: {
top: '12%',
right: '40px',
icon: 'circle',
width: '260px',
orient: 'vertical', // 排列方式 horizontal水平 vertical垂直
itemHeight: 10, // 控制小圆点的大小
itemWidth: 12,
itemGap: 20,
textStyle: {
color: '#fff', // 文字颜色
lineHeight: 16,
fontFamily: 'myRegular'
},
formatter: (name) => {
let total = 0 // 总数,用来计算百分比
let number = 0 // 数字
let pec = 0 // 百分比
for (let i = 0; i < data.length; i++) {
total += data[i].value
}
for (let i = 0; i < data.length; i++) {
if (data[i].name == name) {
number = data[i].value
pec = (number / total * 100).toFixed(2)
}
}
return [
`${name}`,
`${number} (${pec})%`,
].join("\n");
}
},
title: { // 用title显示环中间固定的文字
text: `88`, // \n 换行
subtext: '预警总数', // 子标题
top: '30%',
left: '24%',
textAlign: 'center', // 字体居中对齐
textStyle: {
color: '#fff',
fontSize: 30,
lineHeight: 20,
fontWeight: 'normal',
},
subtextStyle: { // 子标题样式
color: '#fff',
fontSize: 14,
fontFamily: 'myRegular'
}
},
series: [
{
type: 'pie',
radius: ['60%', '80%'],
center: ['25%', '45%'], // 环形图中心点
label: {
show: false,
},
data: data
}
]
}
carschool_echart=echarts.init(document.getElementById('carschool_echart'));
//使用制定的配置项和数据显示图表
carschool_echart.setOption(option);
updateCarSchoolInfo(schoolInfo)
}
function updateCarSchoolInfo(schoolInfo){
var schoolbus_number=0;
var busdrivers_number=0;
var busteachers_number=0;
for(var i=0;i<schoolInfo.length;i++){
schoolbus_number+=schoolInfo[i]["schoolbus"];//校车总数
busdrivers_number+=schoolInfo[i]["busdrivers"];//校车司机数
busteachers_number+=schoolInfo[i]["busteachers"];//随车教职工数
}
$(".schoolbus_number").html(schoolbus_number);
$(".busdrivers_number").html(busdrivers_number);
$(".busteachers_number").html(busteachers_number);
}
//告警
function drawAlarmSchoolChart(){
var data=[
{ value: 50, name: '一键报警' },
{ value: 10, name: '人员报警' },
{ value: 3, name: '隐患排除' },
{ value: 2, name: '演练' },
];
var option={
color: ['#02b4fe', '#e7b554', '#6877f8', '#77a871', '#ee6666', '#73c0de',],
tooltip: {
trigger: 'item'
},
legend: {
top: '12%',
right: '40px',
icon: 'circle',
width: '260px',
orient: 'vertical', // 排列方式 horizontal水平 vertical垂直
itemHeight: 10, // 控制小圆点的大小
itemWidth: 12,
itemGap: 20,
textStyle: {
color: '#fff', // 文字颜色
lineHeight: 16,
fontFamily: 'myRegular'
},
formatter: (name) => {
let total = 0 // 总数,用来计算百分比
let number = 0 // 数字
let pec = 0 // 百分比
for (let i = 0; i < data.length; i++) {
total += data[i].value
}
for (let i = 0; i < data.length; i++) {
if (data[i].name == name) {
number = data[i].value
pec = (number / total * 100).toFixed(2)
}
}
return [
`${name}`,
`${number} (${pec})%`,
].join("\n");
}
},
title: { // 用title显示环中间固定的文字
text: `65`, // \n 换行
subtext: '告警总数', // 子标题
top: '30%',
left: '24%',
textAlign: 'center', // 字体居中对齐
textStyle: {
color: '#fff',
fontSize: 30,
lineHeight: 20,
fontWeight: 'normal',
},
subtextStyle: { // 子标题样式
color: '#fff',
fontSize: 14,
fontFamily: 'myRegular'
}
},
series: [
{
type: 'pie',
radius: ['60%', '80%'],
center: ['25%', '45%'], // 环形图中心点
label: {
show: false,
},
data: data
}
]
}
alarmschool_echart=echarts.init(document.getElementById('alarmschool_echart'));
//使用制定的配置项和数据显示图表
alarmschool_echart.setOption(option);
}
function initCarschool(){
drawOutSchoolChart();
drawRoomSchoolChart();
drawAlarmSchoolChart();
drawSystemGradeChart();
brigadeSchoolChart();
brigadePostSchoolChart();
brigadeCarSchoolChart();
}
function brigadeSchoolChart(){
var inschoolData=[
{ value: 0, name:'中学'},
{ value: 0, name:'小学'},
{ value: 0, name:'幼儿园'},
];
var schoolInfoArr=[];
boroughGradeArr.forEach(item=>{
var schoolInfo=item.schoolInfo;
for(var i=0;i<schoolInfo.length;i++){
var type=schoolInfo[i]["type"];
for(var j=0;j<inschoolData.length;j++){
if(type==inschoolData[j]["name"]){
inschoolData[j]["value"]++;
}
}
schoolInfoArr.push(schoolInfo[i]);
}
})
drawInschoolChart(inschoolData,schoolInfoArr);
}
function boroughSchoolChart(borough){
var inschoolData=[
{ value: 0, name: '中学' },
{ value: 0, name: '小学' },
{ value: 0, name: '幼儿园' },
];
var schoolInfoArr=[];
boroughGradeArr.forEach(item=>{
if(borough==item.borough){
var schoolInfo=item.schoolInfo;
for(var i=0;i<schoolInfo.length;i++){
var type=schoolInfo[i]["type"];
for(var j=0;j<inschoolData.length;j++){
if(type==inschoolData[j]["name"]){
inschoolData[j]["value"]++;
}
}
schoolInfoArr.push(schoolInfo[i]);
}
}
})
drawInschoolChart(inschoolData,schoolInfoArr);
}
function brigadePostSchoolChart(){
var inschoolData=[
{ value: 0, name: '护校警力'},
{ value: 0, name: '专职保安'},
{ value: 0, name: '行政值班' },
{ value: 200, name: '校内志愿者'},
];
var schoolInfoArr=[];
boroughGradeArr.forEach(item=>{
var schoolInfo=item.schoolInfo;
for(var i=0;i<schoolInfo.length;i++){
var policesshould=schoolInfo[i]["policesshould"];
var guardershould=schoolInfo[i]["guardershould"];
var staffshould=schoolInfo[i]["staffshould"];
inschoolData[0]["value"]+=policesshould;
inschoolData[1]["value"]+=guardershould;
inschoolData[2]["value"]+=staffshould;
schoolInfoArr.push(schoolInfo[i]);
}
})
drawPostSchoolChart(inschoolData,schoolInfoArr);
}
function boroughPostSchoolChart(borough){
var inschoolData=[
{ value: 0, name: '护校警力'},
{ value: 0, name: '专职保安'},
{ value: 0, name: '行政值班' },
{ value: 2, name: '校内志愿者',title:'schoolvolunteer' },
];
var schoolInfoArr=[];
boroughGradeArr.forEach(item=>{
if(borough==item.borough){
var schoolInfo=item.schoolInfo;
for(var i=0;i<schoolInfo.length;i++){
var policesshould=schoolInfo[i]["policesshould"];
var guardershould=schoolInfo[i]["guardershould"];
var staffshould=schoolInfo[i]["staffshould"];
inschoolData[0]["value"]+=policesshould;
inschoolData[1]["value"]+=guardershould;
inschoolData[2]["value"]+=staffshould;
schoolInfoArr.push(schoolInfo[i]);
}
}
})
drawPostSchoolChart(inschoolData,schoolInfoArr);
}
function brigadeCarSchoolChart(){
var inschoolData=[
{ value: 50, name: '超速' },
{ value: 30, name: '越界' },
{ value: 8, name: '疲劳驾驶' },
];
var schoolInfoArr=[];
boroughGradeArr.forEach(item=>{
var schoolInfo=item.schoolInfo;
for(var i=0;i<schoolInfo.length;i++){
schoolInfoArr.push(schoolInfo[i]);
}
})
drawCarSchoolChart(inschoolData,schoolInfoArr);
}
function boroughCarSchoolChart(borough){
var inschoolData=[
{ value: 50, name: '超速' },
{ value: 30, name: '越界' },
{ value: 8, name: '疲劳驾驶' },
];
var schoolInfoArr=[];
boroughGradeArr.forEach(item=>{
if(borough==item.borough){
var schoolInfo=item.schoolInfo;
for(var i=0;i<schoolInfo.length;i++){
schoolInfoArr.push(schoolInfo[i]);
}
}
})
drawCarSchoolChart(inschoolData,schoolInfoArr);
}
$(".mainContentR_t_box>ul>li").on('click',function(){
var index=$(this).attr("index");
updateReload(index)
})
function updateReload(index){
updateBackground(index);
if(layuiObj["ins"].timer){
clearInterval(layuiObj["ins"].timer);
}
reload(index);
}
function reload(index){
$("#carousel .layui-this").removeClass();
var options=layuiObj["ins"].config;
options["index"]=parseInt(index);
options["anim"]='default';
layuiObj["ins"].reload(options);
}
function updateBackground(index){
resizeChart();
var index=parseInt(index)+1;
$(".mainContentR_t_box>ul>li").removeClass();
$(".mainContentR_t_box>ul>li>img").remove();
$(".mainContentR_t_box>ul>li:nth-child("+index+")").addClass("bg").addClass("selectColor")
$(".mainContentR_t_box>ul>li:nth-child("+index+")").append("<img src='./pages/index/image/pointer.png'>");
updateMainContentR_t_title(index);
}
function updateMainContentR_t_title(index){
var text="---"
switch(index){
case 1:
text+="校内";
break;
case 2:
text+="校外";
break;
case 3:
text+="校岗";
break;
case 4:
text+="校餐";
break;
case 5:
text+="校车";
break;
case 6:
text+="告警";
break;
default:
break;
}
$(".mainContentR_t_title").html(text);
}
function resizeChart(){
setTimeout(()=>{
if(inschool_echart!=null) inschool_echart.resize();
if(outschool_echart!=null) outschool_echart.resize();
if(postschool_echart!=null) postschool_echart.resize();
if(roomschool_echart!=null) roomschool_echart.resize();
if(carschool_echart!=null) carschool_echart.resize();
if(alarmschool_echart!=null) alarmschool_echart.resize();
})
}
//多图时自适应
window.addEventListener("resize", function () {
if(systemgradechart!=null){
systemgradechart.resize();
}
});
export {
initCarschool,
updateBackground,
boroughSchoolChart,
brigadeSchoolChart,
brigadePostSchoolChart,
boroughPostSchoolChart,
brigadeCarSchoolChart,
boroughCarSchoolChart
}