<template>
	<div class="political-outlook">
		<div class="content">
			<!-- v-show="topDangerList.length > 0" -->
			<div class="top-statistics" v-show="topDangerList.length > 0">
				<div class="statistics-item" v-for="(item,index) in topDangerList" :key="index">
					<span class="title">{{item.alarmTypeName}}</span>
					<span class="statistics-item-content">今日报警次数：0</span>
					<span class="statistics-item-content">本月报警次数：0</span>
					<span class="statistics-item-content">历史报警次数：0</span>
				</div>
				<!-- <div class="statistics-item">
					<span class="title">烟雾检测</span>
					<span class="statistics-item-content">今日报警次数：1</span>
					<span class="statistics-item-content">本月报警次数：1</span>
					<span class="statistics-item-content">历史报警次数：1</span>
				</div>
				<div class="statistics-item">
					<span class="title">人员聚集</span>
					<span class="statistics-item-content">今日报警次数：1</span>
					<span class="statistics-item-content">本月报警次数：1</span>
					<span class="statistics-item-content">历史报警次数：1</span>
				</div>
				<div class="statistics-item">
					<span class="title">违规吸烟</span>
					<span class="statistics-item-content">今日报警次数：1</span>
					<span class="statistics-item-content">本月报警次数：1</span>
					<span class="statistics-item-content">历史报警次数：1</span>
				</div>
				<div class="statistics-item">
					<span class="title">安全帽检测</span>
					<span class="statistics-item-content">今日报警次数：1</span>
					<span class="statistics-item-content">本月报警次数：1</span>
					<span class="statistics-item-content">历史报警次数：1</span>
				</div>
				<div class="statistics-item">
					<span class="title">工作服检测</span>
					<span class="statistics-item-content">今日报警次数：1</span>
					<span class="statistics-item-content">本月报警次数：1</span>
					<span class="statistics-item-content">历史报警次数：1</span>
				</div>
				<div class="statistics-item">
					<span class="title">明烟明火预警</span>
					<span class="statistics-item-content">今日报警次数：1</span>
					<span class="statistics-item-content">本月报警次数：1</span>
					<span class="statistics-item-content">历史报警次数：1</span>
				</div>
				<div class="statistics-item">
					<span class="title">明火预警检测</span>
					<span class="statistics-item-content">今日报警次数：1</span>
					<span class="statistics-item-content">本月报警次数：1</span>
					<span class="statistics-item-content">历史报警次数：1</span>
				</div> -->
			</div>
			<div style="position: relative; height: 180px;">
				<div class="notoDta" v-if="topDangerList.length == 0">
						<img src="@/assets/images/noData.png" alt="" />
						<p>暂无数据</p>
					</div>
			</div>
			
			<div class="table-one">
				<div class="tabList">
					<div>序号</div>
					<div>抓拍图片</div>
					<div>设备名称</div>
					<div>不安全行为类型</div>
					<div>警告时间</div>
					<div>操作</div>
				</div>
				<el-scrollbar class="listBox" ref="refScrollbar">
					<div v-for="(item, index) in partyMemberList" class="listStyle" :key="item.id">
						<div>{{index + 1}}</div>
						<div class="list-img">
							<el-image
								fit="contain"
								class="el-img"
								:src="BASEURL + '/image/' + item.imageUrl"
								:preview-src-list="[BASEURL + '/image/' + item.imageUrl]"
							>
							<template #error>
										<el-image :src="noDataImage" :preview-src-list="[noDataImage]" fit="contain" class="el-no-img" alt="" />
								</template>
							</el-image>
							<!-- <img :src="item.fieldAcquisitionUrl" alt="" srcset=""> -->
						</div>
						<div>{{item.hardwareName}}</div>
						<div>{{item.alarmType == 1?'烟感报警':item.alarmType == 2?'明火报警':item.alarmType == 3?'人员到底报警':item.alarmType == 4?'未带安全帽报警':item.alarmType == 5?'区域入侵报警':item.alarmType == 6?'越界入侵报警':'人员聚集报警'}}</div>
						<div>{{item.createTime}}</div>
						<div style="color: #1FADC5;" @click="openDetailDialog(item)">查看详情</div>
					</div>
					<div class="notoDta" v-if="partyMemberList.length == 0">
						<img src="@/assets/images/noData.png" alt="" />
						<p>暂无数据</p>
					</div>
				</el-scrollbar>
			</div>
		</div>
		<div class="list-detail" v-if="showDialog" @click="handleDetailClick">
			<div class="dialog-content">
				<div class="dialog-icon"><img src="@/assets/images/titleIcon.png" /></div>
				<div class="dialog-title"><i>抓拍详情</i></div>
				<div class="dialog-detail">
					<div class="detail-text">
						<div class="text-box">
							<div class="type">告警类型</div>
							<div class="text">{{ detailData.alarmType ? getWarnName(detailData.alarmType) : "" }}</div>
						</div>
						<div class="text-box" style="margin-top: 5%">
							<div class="type">设备名称</div>
							<div class="text">{{ detailData.hardwareName || "" }}</div>
						</div>
						<div class="text-box" style="margin-top: 5%">
							<div class="type">记录时间</div>
							<div class="text">{{ detailData.createTime }}</div>
						</div>
					</div>
				</div>
				<div class="big-pic">
					<img :src="BASEURL + '/image/' + detailData.imageUrl" />
				</div>
				<div class="close-icon" @click="closeDialog">
					<el-icon><Close /></el-icon>
				</div>
			</div>
		</div>
	</div>
</template>

<script lang="ts" setup>
import { ref, onMounted } from "vue";
import { GlobalStore } from "@/stores";
import { getCompanyDataList, getMemberInfoList } from "@/api/modules/labor";
import type { TabsPaneContext } from 'element-plus'
import { getAlarmTypeOption } from "@/api/modules/aIEarlyWarn";
import noDataImage from "@/assets/images/vehicleManagement/car.png";
import { getAlarmRecordApi, getAlarmTypeCountApi } from "@/api/modules/agjtCommandApi";
const store = GlobalStore();
const props = defineProps(["tip"]);
const BASEURL = import.meta.env.VITE_API_URL;
let showDialog = ref(false as any);
const enterpriseListData = ref([] as any);
const topDangerList = ref([] as any)
let pageNo = ref(1 as any);
let moreScroll = ref(true as any);
const refScrollbar = ref(null as any); // 绑定到滚动的盒子上
const detailData = ref({}  as any);
const partyMemberList = ref({} as any);
let aiAlarmTypeEnum = ref([] as any);
// 获取顶部数据
const getQualityStatisticsNumDataFn = async () => {
	let data = {
		projectSn: store.sn,
		isStatsByWeek: 1
	};
	const res: any = await getAlarmTypeCountApi(data);
	if (res.code == 200) {
		console.log("安全隐患顶部数据",res)
		topDangerList.value = res.result.alarmList || []
	}
};
//获取告警类型枚举
const getWarnTypeOption = async () => {
	const res: any = await getAlarmTypeOption({ projectSn: store.sn });
	// console.log("获取告警类型", res.result);
	let warnType = res.result.map((item: any) => {
		return {
			id: Number(item.data),
			value: item.name
		};
	});
	aiAlarmTypeEnum.value = warnType;
	console.log("获取告警类型**", aiAlarmTypeEnum.value);
};
// 返回对应的枚举名称
function getWarnName(warnType: any) {
	let enumObj = aiAlarmTypeEnum.value.find((item: any) => item.id === warnType);
	return enumObj ? enumObj.value : "";
}
// 打开详情弹窗
function openDetailDialog(item: any) {
	// console.log(item, "当前行数据");
	detailData.value = item;
	showDialog.value = true;
}
// 关闭详情弹窗
function closeDialog() {
	showDialog.value = false;
	detailData.value = {};
}
function handleDetailClick(event: any) {
	// console.log("点击", event.target.className);
	if (event.target.className == "list-detail") {
		closeDialog();
	}
}
//获取企业列表
const getCompanyList = async () => {
	let data = {
		projectSn: store.sn,
		enterpriseName: "",
		userEnterpriseId: store.userInfo?.userEnterpriseId
	};
	const res: any = await getCompanyDataList(data);
	if (res.code == 200) {
		enterpriseListData.value = res.result;
	}
};
//获取数据
const getMemberCountList = async (tip:any) => {
	let requestData:any = {
		projectSn: store.sn,
		pageNo: tip == 'search'?1:pageNo.value,
		pageSize: 100
	}
	const res: any = await getAlarmRecordApi(requestData);
	console.log("获取人员信息列表", res);
	if(tip == 'more'){
		partyMemberList.value = partyMemberList.value.concat(res.result.records);
	} else {
		partyMemberList.value = res.result.records;
	}
	// 为图片拼接IP
	// partyMemberList.value.map((item:any) => {
	// 	item.fieldAcquisitionUrl = BASEURL + '/image/' + item.fieldAcquisitionUrl
	// })
	if (res.result.pages == pageNo.value) {
		moreScroll.value = false;
	} else {
		pageNo.value = pageNo.value + 1;
	}
};

onMounted(async () => {
	await getCompanyList();
	await getMemberCountList('search');
	await getQualityStatisticsNumDataFn();
	getWarnTypeOption();
	refScrollbar.value.wrapRef.addEventListener("scroll", (e: any) => {
		// console.log("滚动容器", e);
		const scrollTop = e.target.scrollTop;
		const scrollHeight = e.target.scrollHeight;
		const clientHeight = e.target.clientHeight;
		// console.log("滚动容器", scrollTop, scrollHeight, clientHeight);
		// 向上加载更多
		if (scrollTop >= scrollHeight - clientHeight - 1) {
			// console.log("加载更多");
			if (moreScroll.value) {
				getMemberCountList("more");
			}
		}
	});
});
</script>

<style lang="scss" scoped>
@mixin flex {
	display: flex;
	align-items: center;
}
.list-detail {
	position: absolute;
	width: 100%;
	height: 100%;
	top: 0%;
	left: 0%;
	background: rgba(7, 28, 49, 0.5);
	z-index: 20;
	.dialog-content {
		position: absolute;
		box-sizing: border-box;
		padding: 1%;
		left: 38%;
		top: 30%;
		width: 25%;
		height: 45%;
		background: url("@/assets/images/aIEarlyWarning/dialogBg.png") no-repeat;
		background-size: 100% 100%;
		z-index: 21;
		.dialog-icon {
			position: absolute;
			left: 3%;
			top: 3%;
			width: 7%;
			height: 7%;
			img {
				width: 100%;
				height: 100%;
			}
		}
		.pic-icon {
			position: absolute;
			left: 3%;
			top: 40%;
			width: 7%;
			height: 7%;
			img {
				width: 100%;
				height: 100%;
			}
		}
		.close-icon {
			position: absolute;
			right: 3%;
			top: 3%;
			cursor: pointer;
			color: #ffffff;
			font-size: 18px;
		}
		.dialog-title {
			color: #ffffff;
			font-weight: bold;
			margin-left: 8%;
			font-size: 18px;
			font-family: "OPPOSans-Bold";
		}
		.dialog-detail {
			width: 100%;
			height: 25%;
			margin-top: 5%;
			.detail-text {
				width: 95%;
				height: 100%;
				.text-box {
					height: 25%;
					display: flex;
					align-items: center;
					background: url("@/assets/images/aIEarlyWarning/contentBg.png") no-repeat;
					background-size: 100% 100%;
					.type {
						width: 20%;
						margin-left: 3%;
						color: #a1accb;
						font-size: 12px;
					}
					.text {
						font-size: 12px;
						color: #ffffff;
					}
				}
			}
		}
		.pic-title {
			color: #ffffff;
			font-weight: bold;
			font-size: 18px;
			font-family: "OPPOSans-Bold";
			margin-top: 5%;
			margin-left: 8%;
		}
		.big-pic {
			width: 100%;
			height: 50%;
			margin-top: 10%;
			img {
				width: 100%;
				height: 100%;
			}
		}
	}
}
.political-outlook {
	height: 97%;
	margin: 0 60px;
	.content {
		height: 95%;
		width: 100%;
		margin-top: 10px;
		// background: url("@/assets/images/cardImg.png") no-repeat;
		background-size: 100% 100%;
		padding: 20px 15px;
		.top-statistics{
			width: 90%;
			display: grid;
			grid-template-columns: repeat(4, 1fr);
			grid-gap: 20px;
			color: white;
			margin: 0 auto;
			.statistics-item{
				width: 200px;
				// height: 95px;
				display: flex;
				flex-direction: column;
				position: relative;
				.title{
					position: absolute;
					top: 4%;
					left: 4%;
				}
				&-content{
					display: inline-block;
					width: 100%;
					height: auto;
					text-indent: 1.5em;
				}
				&-content:nth-child(2){
					margin-top: 15%;
				}
				&-content:nth-child(3){
					margin-top: 2%;
				}
				&-content:nth-child(4){
					margin-top: 2%;
				}
				// &-content:nth-child(3){
				// 	margin-top: 8%;
				// }
			}
			.statistics-item:nth-child(1){
				background: url("@/assets/images/commandScreen/bg6.png") no-repeat;
				background-size: 100% 100%;
			}
			.statistics-item:nth-child(2){
				background: url("@/assets/images/commandScreen/bg2.png") no-repeat;
				background-size: 100% 100%;
			}
			.statistics-item:nth-child(3){
				background: url("@/assets/images/commandScreen/bg7.png") no-repeat;
				background-size: 100% 100%;
			}
			.statistics-item:nth-child(4){
				background: url("@/assets/images/commandScreen/bg8.png") no-repeat;
				background-size: 100% 100%;
			}
			.statistics-item:nth-child(5){
				background: url("@/assets/images/commandScreen/bg1.png") no-repeat;
				background-size: 100% 100%;
			}
			.statistics-item:nth-child(6){
				background: url("@/assets/images/commandScreen/bg5.png") no-repeat;
				background-size: 100% 100%;
			}
			.statistics-item:nth-child(7){
				background: url("@/assets/images/commandScreen/bg4.png") no-repeat;
				background-size: 100% 100%;
			}
			.statistics-item:nth-child(8){
				background: url("@/assets/images/commandScreen/bg3.png") no-repeat;
				background-size: 100% 100%;
			}
		}
		.top-search {
			@include flex;
			justify-content: center;
			margin-bottom: 15px;
			margin-top: 20px;
			.search-item {
				@include flex;
				margin-right: 20px;
				span {
					color: white;
					margin-right: 10px;
				}
			}
		}
		.table-one{
			height: 50%;
			.tabList {
				display: flex;
				// width: 100%;
				height: 10%;
				background: url("@/assets/images/vehicleManagement/ListTitleImg.png") no-repeat;
				background-size: 100% 100%;
				// position: absolute;
				left: 75.5%;
				top: 75%;
				color: #ccc;
				font-size: calc(100vw * 14 / 1920);
				line-height: 30px;
				align-items: center;
				margin-top: 2%;
				div {
					text-align: center;
					width: 17%;
				}
			}
			.listBox {
				height: 90%;
				.listStyle {
					display: flex;
					align-items: center;
					text-align: center;
					color: #fff;
					font-size: 12px;
					margin-bottom: 5px;
					.list-img {
						.el-img {
							width: 30px;
							height: 30px;
							img {
								display: flex;
								align-items: center;
								width: 100%;
								height: 100%;
							}
						}
						.el-no-img{
							width: 30px;
							height: 30px;
							}
					}
					div {
						width: 17%;
						white-space: nowrap; //单行
						overflow: hidden;
						text-overflow: ellipsis;
					}
				}
				.listStyle:hover {
					background: #091f3f;
				}
			}
		}
		:deep(){
			.el-tabs__item{
				color: white;
			}
			.el-tabs__item.is-active{
				color: var(--el-color-primary)
			}
		}
	}
}
.notoDta {
	top: 35%;
	width: 20%;
	left: 40%;
	position: absolute;
	text-align: center;
	img {
		width: 40%;
		margin: 5% 30%;
	}
	p {
		color: #fff;
		font-size: calc(100vw * 14 / 1920);
		margin: -6% 37%;
	}
}
// element 组件样式
:deep() {
	.el-date-editor .el-range-input,
	.el-range-separator {
		color: #fff;
	}
	.el-input__wrapper {
		background: #112d59;
	}
	.el-input__inner {
		color: #fff;
	}
	.el-button {
		background-color: #2758c0;
		color: white;
		border-color: transparent;
	}
}
// ::v-deep .el-select .el-input .el-select__caret {
// 	color: #fff;
// }
</style>
